Index: src/top.h |
=================================================================== |
--- src/top.h (revision 904) |
+++ src/top.h (working copy) |
@@ -46,6 +46,11 @@ |
// lookups. |
Context* context_; |
Object* pending_exception_; |
+ const char* pending_message_; |
+ Object* pending_message_obj_; |
+ Script* pending_message_script_; |
+ int pending_message_start_pos_; |
+ int pending_message_end_pos_; |
// Use a separate value for scheduled exceptions to preserve the |
// invariants that hold about pending_exception. We may want to |
// unify them later. |
@@ -120,6 +125,12 @@ |
static bool has_pending_exception() { |
return !thread_local_.pending_exception_->IsTheHole(); |
} |
+ static void clear_pending_message() { |
+ thread_local_.catcher_ = NULL; |
+ thread_local_.pending_message_ = NULL; |
+ thread_local_.pending_message_obj_ = Heap::the_hole_value(); |
+ thread_local_.pending_message_script_ = NULL; |
+ } |
static v8::TryCatch* try_catch_handler() { |
return thread_local_.try_catch_handler_; |
} |
@@ -146,6 +157,7 @@ |
static void setup_external_caught() { |
thread_local_.external_caught_exception_ = |
+ (!thread_local_.pending_exception_->IsTheHole()) && |
(thread_local_.catcher_ != NULL) && |
(Top::thread_local_.try_catch_handler_ == Top::thread_local_.catcher_); |
} |
@@ -207,13 +219,14 @@ |
// originally. |
static Failure* ReThrow(Object* exception, MessageLocation* location = NULL); |
static void ScheduleThrow(Object* exception); |
+ static void ReportPendingMessages(); |
// Promote a scheduled exception to pending. Asserts has_scheduled_exception. |
static Object* PromoteScheduledException(); |
static void DoThrow(Object* exception, |
MessageLocation* location, |
const char* message); |
- static bool ShouldReportException(bool* is_caught_externally); |
+ static bool IsUncaughtException(bool* is_caught_externally); |
static void ReportUncaughtException(Handle<Object> exception, |
MessageLocation* location, |
Handle<String> stack_trace); |