Index: src/compiler.h |
diff --git a/src/compiler.h b/src/compiler.h |
index 7599c13a0c48f98e2c545a049be02b2fba3c05a8..8100056676f2470e1df920d2051ce6819147798a 100644 |
--- a/src/compiler.h |
+++ b/src/compiler.h |
@@ -77,6 +77,7 @@ class CompilationInfo { |
Scope* global_scope() const { return global_scope_; } |
Handle<Code> code() const { return code_; } |
Handle<JSFunction> closure() const { return closure_; } |
+ Handle<Object> closure_code_object() const { return closure_code_object_; } |
Handle<SharedFunctionInfo> shared_info() const { return shared_info_; } |
Handle<Script> script() const { return script_; } |
HydrogenCodeStub* code_stub() const {return code_stub_; } |
@@ -91,6 +92,7 @@ class CompilationInfo { |
int num_heap_slots() const; |
Code::Flags flags() const; |
+ void CreateCodeObject(); |
void MarkAsEval() { |
ASSERT(!is_lazy()); |
flags_ |= IsEval::encode(true); |
@@ -405,6 +407,9 @@ class CompilationInfo { |
Handle<SharedFunctionInfo> shared_info_; |
Handle<Script> script_; |
+ // Placeholder for self calls |
+ Handle<Object> closure_code_object_; |
+ |
// Fields possibly needed for eager compilation, NULL by default. |
v8::Extension* extension_; |
ScriptDataImpl* pre_parse_data_; |
@@ -438,7 +443,7 @@ class CompilationInfo { |
template<typename T> |
void SaveHandle(Handle<T> *object) { |
if (!object->is_null()) { |
- Handle<T> handle(*(*object)); |
+ Handle<T> handle(*(*object), isolate()); |
*object = handle; |
} |
} |