Fix a few more places where we don't check for termination

Bug: chromium:1376663, chromium:1393272
Change-Id: Ie6ee25fb87f9959166b1696e36f07218d2959098
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4105981
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#84835}
This commit is contained in:
Camillo Bruni 2022-12-14 10:59:58 +01:00 committed by V8 LUCI CQ
parent 88b7fdae83
commit 8b283d0c7e
3 changed files with 21 additions and 0 deletions

View File

@ -1329,6 +1329,7 @@ void Shell::DoHostImportModuleDynamically(void* import_data) {
static_cast<DynamicImportData*>(import_data); static_cast<DynamicImportData*>(import_data);
Isolate* isolate(import_data_->isolate); Isolate* isolate(import_data_->isolate);
if (isolate->IsExecutionTerminating()) return;
HandleScope handle_scope(isolate); HandleScope handle_scope(isolate);
Local<Context> realm = import_data_->context.Get(isolate); Local<Context> realm = import_data_->context.Get(isolate);

View File

@ -326,6 +326,7 @@ void InspectorIsolateData::MessageHandler(v8::Local<v8::Message> message,
// static // static
void InspectorIsolateData::PromiseRejectHandler(v8::PromiseRejectMessage data) { void InspectorIsolateData::PromiseRejectHandler(v8::PromiseRejectMessage data) {
v8::Isolate* isolate = data.GetPromise()->GetIsolate(); v8::Isolate* isolate = data.GetPromise()->GetIsolate();
if (isolate->IsExecutionTerminating()) return;
v8::Local<v8::Context> context = isolate->GetEnteredOrMicrotaskContext(); v8::Local<v8::Context> context = isolate->GetEnteredOrMicrotaskContext();
if (context.IsEmpty()) return; if (context.IsEmpty()) return;
v8::Local<v8::Promise> promise = data.GetPromise(); v8::Local<v8::Promise> promise = data.GetPromise();

View File

@ -0,0 +1,19 @@
// Copyright 2022 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --allow-natives-syntax --turbofan
function __f_0() {
onmessage = function(e) {
import("./does_not_exist.js").then();
while(true) {
}
}
}
function __f_1() {
}
let sab = new SharedArrayBuffer();
let w1 = new Worker(__f_0, {type: 'function'});
w1.postMessage({sab: sab});
let w2 = new Worker(__f_1, {type: 'function'});