1.1 --- a/jitcraft/Stack.cpp Fri Jul 20 00:03:10 2012 -0700
1.2 +++ b/jitcraft/Stack.cpp Mon Jul 23 01:19:44 2012 -0700
1.3 @@ -95,6 +95,29 @@
1.4 }
1.5
1.6 bool
1.7 +Stack::pushModuleFrame(Handle<Module> module, InvokeArgs &args)
1.8 +{
1.9 + size_t nbytes = SizeForCodeFrame(module->code());
1.10 + if (reinterpret_cast<char *>(top_.sp) + nbytes >= end_) {
1.11 + assert(false);
1.12 + return false;
1.13 + }
1.14 +
1.15 + args.args_ = top_.sp;
1.16 + args.nargs_ = 0;
1.17 + args.stack_ = this;
1.18 +
1.19 + Frame *frame = reinterpret_cast<Frame *>(top_.sp);
1.20 + new (frame) Frame(top_.fp, top_.pc, NULL, module->code(), zone_->heap().lifoPosition());
1.21 +
1.22 + top_.pc = frame->code()->start();
1.23 + top_.sp = frame->stackBase();
1.24 + top_.fp = frame;
1.25 +
1.26 + return true;
1.27 +}
1.28 +
1.29 +bool
1.30 Stack::pushNativeFrame(Handle<Native> native, NativeArgs &args, unsigned argc)
1.31 {
1.32 size_t nbytes = sizeof(intptr_t) * argc + sizeof(Frame);