Index: src/compiler-dispatcher/compiler-dispatcher-job.cc |
diff --git a/src/compiler-dispatcher/compiler-dispatcher-job.cc b/src/compiler-dispatcher/compiler-dispatcher-job.cc |
index a7f83c279dfdb9a3f466b997afcd536de9dec95a..526aba0307993c22dec1673124e81af36328c5b3 100644 |
--- a/src/compiler-dispatcher/compiler-dispatcher-job.cc |
+++ b/src/compiler-dispatcher/compiler-dispatcher-job.cc |
@@ -170,6 +170,12 @@ void CompilerDispatcherJob::InternalizeParsingResult() { |
status() == CompileJobStatus::kFailed); |
HandleScope scope(isolate_); |
+ |
+ // Create a canonical handle scope before internalizing parsed values if |
+ // compiling bytecode. This is required for off-thread bytecode generation. |
+ std::unique_ptr<CanonicalHandleScope> canonical; |
+ if (FLAG_ignition) canonical.reset(new CanonicalHandleScope(isolate_)); |
+ |
Handle<SharedFunctionInfo> shared(function_->shared(), isolate_); |
Handle<Script> script(Script::cast(shared->script()), isolate_); |