From 52d39441d07c8c0c99e84644f69406aa8578d7b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olivier=20Fl=C3=BCckiger?= Date: Mon, 21 Oct 2024 13:29:28 +0200 Subject: [PATCH] deps: V8: cherry-pick f915fa4c9f41 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original commit message: [osr] Ensure trying to osr does not skip loop interrupts Fixed: 374013413 Change-Id: I52d7b4e165e0abd0bd517a81d2e8ef3f1f802bfb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5946288 Commit-Queue: Darius Mercadier Auto-Submit: Olivier Flückiger Reviewed-by: Darius Mercadier Cr-Commit-Position: refs/heads/main@{#96708} Refs: https://github.com/v8/v8/commit/f915fa4c9f4162dd9258535eee03b1b0484bf38e PR-URL: https://github.com/nodejs/node/pull/55014 Reviewed-By: Matteo Collina Reviewed-By: Yagiz Nizipli --- common.gypi | 2 +- deps/v8/src/codegen/compiler.cc | 9 ++++++++- .../v8/test/debugger/regress/regress-374013413.js | 15 +++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 deps/v8/test/debugger/regress/regress-374013413.js diff --git a/common.gypi b/common.gypi index 6d2e0389f1a..dc1c77158df 100644 --- a/common.gypi +++ b/common.gypi @@ -37,7 +37,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.9', + 'v8_embedder_string': '-node.10', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/src/codegen/compiler.cc b/deps/v8/src/codegen/compiler.cc index 4215cee6ae7..929b74ce2f4 100644 --- a/deps/v8/src/codegen/compiler.cc +++ b/deps/v8/src/codegen/compiler.cc @@ -1338,7 +1338,14 @@ MaybeHandle GetOrCompileOptimized( } // Do not optimize when debugger needs to hook into every call. - if (isolate->debug()->needs_check_on_function_call()) return {}; + if (isolate->debug()->needs_check_on_function_call()) { + // Reset the OSR urgency to avoid triggering this compilation request on + // every iteration and thereby skipping other interrupts. + if (IsOSR(osr_offset)) { + function->feedback_vector()->reset_osr_urgency(); + } + return {}; + } // Do not optimize if we need to be able to set break points. if (shared->HasBreakInfo(isolate)) return {}; diff --git a/deps/v8/test/debugger/regress/regress-374013413.js b/deps/v8/test/debugger/regress/regress-374013413.js new file mode 100644 index 00000000000..d414dfdffa8 --- /dev/null +++ b/deps/v8/test/debugger/regress/regress-374013413.js @@ -0,0 +1,15 @@ +// Copyright 2024 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: --enable-inspector + +var Debug = debug.Debug; +Debug.sendMessageForMethodChecked('Runtime.enable', {}); +const {msgid, msg} = Debug.createMessage('Runtime.evaluate', { + expression: 'while(true) {}', + throwOnSideEffect: true, + timeout: 1000, +}) +Debug.sendMessage(msg); +Debug.takeReplyChecked(msgid).toString();