1.1 --- a/jitcraft/Stack.h Mon Jul 02 01:24:57 2012 -0700
1.2 +++ b/jitcraft/Stack.h Mon Jul 02 01:52:57 2012 -0700
1.3 @@ -21,6 +21,7 @@
1.4 #include <stddef.h>
1.5 #include "Utility.h"
1.6 #include "Code.h"
1.7 +#include "Functions.h"
1.8
1.9 namespace jc {
1.10
1.11 @@ -60,13 +61,15 @@
1.12
1.13 Frame *prev_;
1.14 bytecode *prevpc_;
1.15 + Function *fun_;
1.16 Code *code_;
1.17 Address lifoPosition_;
1.18
1.19 public:
1.20 - Frame(Frame *prev, bytecode *prevpc, Code *code, Address lifoPosition)
1.21 + Frame(Frame *prev, bytecode *prevpc, Function *fun, Code *code, Address lifoPosition)
1.22 : prev_(prev),
1.23 prevpc_(prevpc),
1.24 + fun_(fun),
1.25 code_(code),
1.26 lifoPosition_(lifoPosition)
1.27 {
1.28 @@ -78,6 +81,13 @@
1.29 LocalSlot *stackBase() {
1.30 return locals() + code_->nlocals();
1.31 }
1.32 + Function *fun() const {
1.33 + assert(fun_);
1.34 + return fun_;
1.35 + }
1.36 + Function *maybeFun() const {
1.37 + return fun_;
1.38 + }
1.39 Code *code() const {
1.40 return code_;
1.41 }
1.42 @@ -91,7 +101,7 @@
1.43 return lifoPosition_;
1.44 }
1.45 LocalSlot &arg(unsigned slot) {
1.46 - assert(slot < code()->nargs());
1.47 + assert(slot < fun()->nargs());
1.48 return *(reinterpret_cast<LocalSlot *>(this) - slot - 1);
1.49 }
1.50 };
1.51 @@ -112,7 +122,7 @@
1.52 bool initialize();
1.53
1.54 public:
1.55 - Frame *pushFrame(Frame *prev, Code *code);
1.56 + Frame *pushFrame(Frame *prev, Function *fun);
1.57 Frame *popFrame(Frame *frame);
1.58
1.59 Top *top() {