jitcraft/Modules.cpp
changeset 14 0784ac5cc347
parent 0 c455ebb9a5dc
child 36 fbc7363dc96f
     1.1 --- a/jitcraft/Modules.cpp	Sat Jun 30 20:20:39 2012 -0700
     1.2 +++ b/jitcraft/Modules.cpp	Sat Jun 30 22:31:14 2012 -0700
     1.3 @@ -16,16 +16,24 @@
     1.4   * JITCraft. If not, see http://www.gnu.org/licenses/.
     1.5   */
     1.6  #include "Modules.h"
     1.7 +#include "Zone.h"
     1.8 +#include "Heap.h"
     1.9 +#include "Heap-inl.h"
    1.10  
    1.11  using namespace jc;
    1.12  
    1.13 -Module::Module(Code **functions, unsigned nfunctions)
    1.14 -  : functions_(functions),
    1.15 -    nfunctions_(nfunctions)
    1.16 +Module *
    1.17 +Module::New(Zone *zone, unsigned nfunctions)
    1.18  {
    1.19 +    // :TODO: use locals.
    1.20 +    Module *module = Module::cast(zone->allocate(MapKind_Module, sizeof(Module), Heap::Tenure_Old));
    1.21 +    if (!module)
    1.22 +        return NULL;
    1.23 +
    1.24 +    FixedArray *functions = FixedArray::New(zone, nfunctions, Heap::Tenure_Old);
    1.25 +    if (!functions)
    1.26 +        return NULL;
    1.27 +
    1.28 +    module->functions_ = functions;
    1.29 +    return module;
    1.30  }
    1.31 -
    1.32 -Module::~Module()
    1.33 -{
    1.34 -    delete [] functions_;
    1.35 -}