diff -r 627b6b94e774 -r 0784ac5cc347 jitcraft/Modules.cpp --- a/jitcraft/Modules.cpp Sat Jun 30 20:20:39 2012 -0700 +++ b/jitcraft/Modules.cpp Sat Jun 30 22:31:14 2012 -0700 @@ -16,16 +16,24 @@ * JITCraft. If not, see http://www.gnu.org/licenses/. */ #include "Modules.h" +#include "Zone.h" +#include "Heap.h" +#include "Heap-inl.h" using namespace jc; -Module::Module(Code **functions, unsigned nfunctions) - : functions_(functions), - nfunctions_(nfunctions) +Module * +Module::New(Zone *zone, unsigned nfunctions) { + // :TODO: use locals. + Module *module = Module::cast(zone->allocate(MapKind_Module, sizeof(Module), Heap::Tenure_Old)); + if (!module) + return NULL; + + FixedArray *functions = FixedArray::New(zone, nfunctions, Heap::Tenure_Old); + if (!functions) + return NULL; + + module->functions_ = functions; + return module; } - -Module::~Module() -{ - delete [] functions_; -}