Index: src/execution.cc |
diff --git a/src/execution.cc b/src/execution.cc |
index facd3add5fe6b52aa5e7504caff784afdf421e98..9dfef372bc3db56213264f5d1f64be3fa4e76903 100644 |
--- a/src/execution.cc |
+++ b/src/execution.cc |
@@ -210,18 +210,19 @@ |
DCHECK(catcher.HasCaught()); |
DCHECK(isolate->has_pending_exception()); |
DCHECK(isolate->external_caught_exception()); |
- if (isolate->pending_exception() == |
- isolate->heap()->termination_exception()) { |
- is_termination = true; |
- } else { |
- if (exception_out != NULL) { |
+ if (exception_out != NULL) { |
+ if (isolate->pending_exception() == |
+ isolate->heap()->termination_exception()) { |
+ is_termination = true; |
+ } else { |
*exception_out = v8::Utils::OpenHandle(*catcher.Exception()); |
} |
} |
- isolate->OptionalRescheduleException(false); |
+ isolate->OptionalRescheduleException(true); |
} |
DCHECK(!isolate->has_pending_exception()); |
+ DCHECK(!isolate->external_caught_exception()); |
} |
if (is_termination) isolate->TerminateExecution(); |
return maybe_result; |