• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===- RegionFactory.cpp --------------------------------------------------===//
2 //
3 //                     The MCLinker Project
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 #include "mcld/Support/RegionFactory.h"
10 #include "mcld/Support/MemoryArea.h"
11 
12 using namespace mcld;
13 
14 //==========================
15 // RegionFactory
RegionFactory(size_t pNum)16 RegionFactory::RegionFactory(size_t pNum)
17   : GCFactory<MemoryRegion, 0>(pNum) {
18 }
19 
~RegionFactory()20 RegionFactory::~RegionFactory()
21 {
22 }
23 
produce(MemoryArea::Space * pSpace,const sys::fs::detail::Address pVMAStart,size_t pSize)24 MemoryRegion* RegionFactory::produce(MemoryArea::Space* pSpace,
25                                      const sys::fs::detail::Address pVMAStart,
26                                      size_t pSize)
27 {
28   MemoryRegion* result = Alloc::allocate();
29   new (result) MemoryRegion(pSpace, pVMAStart, pSize);
30   return result;
31 }
32 
destruct(MemoryRegion * pRegion)33 void RegionFactory::destruct(MemoryRegion* pRegion)
34 {
35   pRegion->drift();
36   destroy(pRegion);
37   deallocate(pRegion);
38 }
39 
40