Index: src/compiler-dispatcher/compiler-dispatcher.cc |
diff --git a/src/compiler-dispatcher/compiler-dispatcher.cc b/src/compiler-dispatcher/compiler-dispatcher.cc |
index 47c04b8b44a39792173dd26443179bf137f9745e..782a6ed855ea78a03f7e9829ef6f33b966e515fa 100644 |
--- a/src/compiler-dispatcher/compiler-dispatcher.cc |
+++ b/src/compiler-dispatcher/compiler-dispatcher.cc |
@@ -22,7 +22,6 @@ enum class ExceptionHandling { kSwallow, kThrow }; |
bool DoNextStepOnMainThread(Isolate* isolate, CompilerDispatcherJob* job, |
ExceptionHandling exception_handling) { |
DCHECK(ThreadId::Current().Equals(isolate->thread_id())); |
- v8::TryCatch try_catch(reinterpret_cast<v8::Isolate*>(isolate)); |
jochen (gone - plz use gerrit)
2017/01/04 08:23:22
turns out that we only create a pending exception,
|
switch (job->status()) { |
case CompileJobStatus::kInitial: |
job->PrepareToParseOnMainThread(); |
@@ -53,10 +52,13 @@ bool DoNextStepOnMainThread(Isolate* isolate, CompilerDispatcherJob* job, |
break; |
} |
- if (exception_handling == ExceptionHandling::kThrow && |
- try_catch.HasCaught()) { |
- DCHECK(job->status() == CompileJobStatus::kFailed); |
- try_catch.ReThrow(); |
+ if (job->status() == CompileJobStatus::kFailed) { |
+ DCHECK(isolate->has_pending_exception()); |
+ if (exception_handling == ExceptionHandling::kSwallow) { |
+ isolate->clear_pending_exception(); |
+ } |
+ } else { |
+ DCHECK(!isolate->has_pending_exception()); |
} |
vogelheim
2017/01/04 10:08:49
nitpick: Hmm... How about:
DCHECK_EQ(job->status(
jochen (gone - plz use gerrit)
2017/01/04 10:23:18
will do in a follow-up
|
return job->status() != CompileJobStatus::kFailed; |
} |