Index: src/api.cc |
diff --git a/src/api.cc b/src/api.cc |
index 6eb37893bf2d3bbfd3109cd6f4783dd2e52b6988..017652a0ac26f9656eeabe9f8419e5be205818a4 100644 |
--- a/src/api.cc |
+++ b/src/api.cc |
@@ -473,16 +473,7 @@ void V8::SetFlagsFromCommandLine(int* argc, char** argv, bool remove_flags) { |
v8::Handle<Value> ThrowException(v8::Handle<v8::Value> value) { |
- i::Isolate* isolate = i::Isolate::Current(); |
- ENTER_V8(isolate); |
- // If we're passed an empty handle, we throw an undefined exception |
- // to deal more gracefully with out of memory situations. |
- if (value.IsEmpty()) { |
- isolate->ScheduleThrow(isolate->heap()->undefined_value()); |
- } else { |
- isolate->ScheduleThrow(*Utils::OpenHandle(*value)); |
- } |
- return v8::Undefined(); |
+ return v8::Isolate::GetCurrent()->ThrowException(value); |
} |
@@ -1926,7 +1917,7 @@ v8::TryCatch::~TryCatch() { |
isolate_->RestorePendingMessageFromTryCatch(this); |
} |
isolate_->UnregisterTryCatchHandler(this); |
- v8::ThrowException(exc); |
+ reinterpret_cast<Isolate*>(isolate_)->ThrowException(exc); |
ASSERT(!isolate_->thread_local_top()->rethrowing_message_); |
} else { |
isolate_->UnregisterTryCatchHandler(this); |
@@ -6361,6 +6352,20 @@ v8::Local<v8::Context> Isolate::GetEnteredContext() { |
} |
+v8::Local<Value> Isolate::ThrowException(v8::Local<v8::Value> value) { |
+ i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); |
+ ENTER_V8(isolate); |
+ // If we're passed an empty handle, we throw an undefined exception |
+ // to deal more gracefully with out of memory situations. |
+ if (value.IsEmpty()) { |
+ isolate->ScheduleThrow(isolate->heap()->undefined_value()); |
+ } else { |
+ isolate->ScheduleThrow(*Utils::OpenHandle(*value)); |
+ } |
+ return v8::Undefined(); |
+} |
+ |
+ |
void Isolate::SetObjectGroupId(const Persistent<Value>& object, |
UniqueId id) { |
i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(this); |