Index: src/isolate.cc |
diff --git a/src/isolate.cc b/src/isolate.cc |
index cbbfeb9d9e1fed44556ff2abd7b05deaf1bf7201..b2353aeffb84f8b781aa35360d0e3cca89702c35 100644 |
--- a/src/isolate.cc |
+++ b/src/isolate.cc |
@@ -3255,6 +3255,21 @@ bool StackLimitCheck::JsHasOverflowed(uintptr_t gap) const { |
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) {} |