| //===- NameSpec.cpp -------------------------------------------------------===// |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| //===----------------------------------------------------------------------===// |
| #include "mcld/Script/NameSpec.h" |
| #include "mcld/Support/GCFactory.h" |
| #include <llvm/Support/ManagedStatic.h> |
| typedef GCFactory<NameSpec, MCLD_SYMBOLS_PER_INPUT> NameSpecFactory; |
| static llvm::ManagedStatic<NameSpecFactory> g_NameSpecFactory; |
| //===----------------------------------------------------------------------===// |
| //===----------------------------------------------------------------------===// |
| NameSpec::NameSpec(const std::string& pName, bool pAsNeeded) |
| : InputToken(InputToken::NameSpec, pName, pAsNeeded) { |
| NameSpec* NameSpec::create(const std::string& pName, bool pAsNeeded) { |
| NameSpec* result = g_NameSpecFactory->allocate(); |
| new (result) NameSpec(pName, pAsNeeded); |
| void NameSpec::destroy(NameSpec*& pNameSpec) { |
| g_NameSpecFactory->destroy(pNameSpec); |
| g_NameSpecFactory->deallocate(pNameSpec); |
| g_NameSpecFactory->clear(); |