1cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===- SectionData.cpp ----------------------------------------------------===// 2cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// 3cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// The MCLinker Project 4cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// 5cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// This file is distributed under the University of Illinois Open Source 6cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// License. See LICENSE.TXT for details. 7cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// 8cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===----------------------------------------------------------------------===// 937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LD/SectionData.h" 1022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao 1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LD/LDSection.h" 1237b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Support/GCFactory.h" 1322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao 1422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <llvm/Support/ManagedStatic.h> 15cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 1637b74a387bb3993387029859c2d9d051c41c724eStephen Hinesnamespace mcld { 17cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 1822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaotypedef GCFactory<SectionData, MCLD_SECTIONS_PER_INPUT> SectDataFactory; 1922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao 2022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaostatic llvm::ManagedStatic<SectDataFactory> g_SectDataFactory; 2122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao 22cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===----------------------------------------------------------------------===// 23cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// SectionData 24cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===----------------------------------------------------------------------===// 2537b74a387bb3993387029859c2d9d051c41c724eStephen HinesSectionData::SectionData() : m_pSection(NULL) { 2622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao} 2722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao 2837b74a387bb3993387029859c2d9d051c41c724eStephen HinesSectionData::SectionData(LDSection& pSection) : m_pSection(&pSection) { 29cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao} 3022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao 3137b74a387bb3993387029859c2d9d051c41c724eStephen HinesSectionData* SectionData::Create(LDSection& pSection) { 3222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao SectionData* result = g_SectDataFactory->allocate(); 3322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao new (result) SectionData(pSection); 3422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao return result; 3522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao} 3622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao 3737b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid SectionData::Destroy(SectionData*& pSection) { 3822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao pSection->~SectionData(); 3922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao g_SectDataFactory->deallocate(pSection); 4022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao pSection = NULL; 4122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao} 4222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao 4337b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid SectionData::Clear() { 44d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao g_SectDataFactory->clear(); 45d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao} 46d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao 4737b74a387bb3993387029859c2d9d051c41c724eStephen Hines} // namespace mcld 48