Chromium Code Reviews| Index: src/isolate.cc |
| =================================================================== |
| --- src/isolate.cc (revision 12718) |
| +++ src/isolate.cc (working copy) |
| @@ -942,6 +942,19 @@ |
| } |
| +void Isolate::ResumeExecution() { |
| + if (has_pending_exception() |
| + && pending_exception() == heap_.termination_exception()) { |
|
Yang
2012/12/07 15:03:48
Please put the && at the end of the line and align
|
| + thread_local_top()->external_caught_exception_ = false; |
| + clear_pending_exception(); |
| + } |
| + if (has_scheduled_exception() |
| + && scheduled_exception() == heap_.termination_exception()) { |
|
Yang
2012/12/07 15:03:48
Ditto.
|
| + clear_scheduled_exception(); |
| + } |
| +} |
| + |
| + |
| Failure* Isolate::Throw(Object* exception, MessageLocation* location) { |
| DoThrow(exception, location); |
| return Failure::Exception(); |
| @@ -1764,12 +1777,14 @@ |
| } else if (thread_local_top_.pending_exception_ == |
| heap()->termination_exception()) { |
| try_catch_handler()->can_continue_ = false; |
| + try_catch_handler()->has_terminated_ = true; |
| try_catch_handler()->exception_ = heap()->null_value(); |
| } else { |
| // At this point all non-object (failure) exceptions have |
| // been dealt with so this shouldn't fail. |
| ASSERT(!pending_exception()->IsFailure()); |
| try_catch_handler()->can_continue_ = true; |
| + try_catch_handler()->has_terminated_ = false; |
| try_catch_handler()->exception_ = pending_exception(); |
| if (!thread_local_top_.pending_message_obj_->IsTheHole()) { |
| try_catch_handler()->message_ = thread_local_top_.pending_message_obj_; |