Chromium Code Reviews| 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; |
| } |