Index: src/isolate.h |
diff --git a/src/isolate.h b/src/isolate.h |
index b1e2b07835e2a781988ccd3ac5d0c6a1c78712fe..57ae8adca1b1b0132adb1c78922e5f5e82b24a1a 100644 |
--- a/src/isolate.h |
+++ b/src/isolate.h |
@@ -246,8 +246,9 @@ class ThreadLocalTop BASE_EMBEDDED { |
ThreadId thread_id_; |
MaybeObject* pending_exception_; |
bool has_pending_message_; |
+ bool rethrowing_message_; |
Object* pending_message_obj_; |
- Script* pending_message_script_; |
+ Object* pending_message_script_; |
int pending_message_start_pos_; |
int pending_message_end_pos_; |
// Use a separate value for scheduled exceptions to preserve the |
@@ -582,7 +583,7 @@ class Isolate { |
void clear_pending_message() { |
thread_local_top_.has_pending_message_ = false; |
thread_local_top_.pending_message_obj_ = heap_.the_hole_value(); |
- thread_local_top_.pending_message_script_ = NULL; |
+ thread_local_top_.pending_message_script_ = heap_.the_hole_value(); |
} |
v8::TryCatch* try_catch_handler() { |
return thread_local_top_.TryCatchHandler(); |
@@ -760,6 +761,9 @@ class Isolate { |
// originally. |
Failure* ReThrow(MaybeObject* exception); |
void ScheduleThrow(Object* exception); |
+ // Re-set pending message, script and positions reported to the TryCatch |
+ // back to the TLS for re-use when rethrowing. |
+ void RestorePendingMessageFromTryCatch(v8::TryCatch* handler); |
void ReportPendingMessages(); |
// Return pending location if any or unfilled structure. |
MessageLocation GetMessageLocation(); |