Index: src/isolate.cc |
diff --git a/src/isolate.cc b/src/isolate.cc |
index 3b1db444aaac972bb57c29a9db792d6330be158f..cc8c8b6739f2fd6b9739dbc98e699e693d5bcc62 100644 |
--- a/src/isolate.cc |
+++ b/src/isolate.cc |
@@ -3169,6 +3169,24 @@ |
return GetCurrentStackPosition() - gap < stack_guard->real_climit(); |
} |
+ |
+SaveContext::SaveContext(Isolate* isolate) |
+ : isolate_(isolate), prev_(isolate->save_context()) { |
+ if (isolate->context() != NULL) { |
+ context_ = Handle<Context>(isolate->context()); |
+ } |
+ isolate->set_save_context(this); |
+ |
+ c_entry_fp_ = isolate->c_entry_fp(isolate->thread_local_top()); |
+} |
+ |
+ |
+SaveContext::~SaveContext() { |
+ isolate_->set_context(context_.is_null() ? NULL : *context_); |
+ isolate_->set_save_context(prev_); |
+} |
+ |
+ |
#ifdef DEBUG |
AssertNoContextChange::AssertNoContextChange(Isolate* isolate) |
: isolate_(isolate), context_(isolate->context(), isolate) {} |