From 9e72d379a6bc42f3da3e5817ea9e9cb8429c678f Mon Sep 17 00:00:00 2001 From: Vivian Wang Date: Tue, 3 Feb 2026 16:46:02 +0800 Subject: [PATCH] deps: V8: backport 6a0a25abaed3 Original commit message: [riscv] Fix sp handling in MacroAssembler::LeaveFrame Keep sp <= fp to ensure that data right above fp doesn't get clobbered by an inopportune signal and its handler. Such clobbering can happen in e.g. Node.js when JIT-compiled code is interrupted by a SIGCHLD handler. Bug: None Change-Id: Ief0836032ada7942e89f081f7605f61632c4d414 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7540554 Reviewed-by: Ji Qiu Commit-Queue: Yahan Lu (LuYahan) Reviewed-by: Rezvan Mahdavi Hezaveh Cr-Commit-Position: refs/heads/main@{#105069} Refs: https://github.com/v8/v8/commit/6a0a25abaed397f83eb0d92e4b33a5e18204f8bc Co-authored-by: kxxt --- common.gypi | 2 +- deps/v8/AUTHORS | 1 + deps/v8/src/codegen/riscv/macro-assembler-riscv.cc | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/common.gypi b/common.gypi index 5adfd888711ae4..c5a7dc9cacf8b9 100644 --- a/common.gypi +++ b/common.gypi @@ -38,7 +38,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.40', + 'v8_embedder_string': '-node.41', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 280e33e6841cc1..b7e6fac8f83658 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -294,6 +294,7 @@ Vadim Gorbachev Varun Varada Victor Costan Victor Polevoy +Vivian Wang Vlad Burlik Vladimir Kempik Vladimir Krivosheev diff --git a/deps/v8/src/codegen/riscv/macro-assembler-riscv.cc b/deps/v8/src/codegen/riscv/macro-assembler-riscv.cc index 12379ec0ff6fd2..203b2bcd61c7dc 100644 --- a/deps/v8/src/codegen/riscv/macro-assembler-riscv.cc +++ b/deps/v8/src/codegen/riscv/macro-assembler-riscv.cc @@ -6709,9 +6709,10 @@ void MacroAssembler::EnterFrame(StackFrame::Type type) { void MacroAssembler::LeaveFrame(StackFrame::Type type) { ASM_CODE_COMMENT(this); - addi(sp, fp, 2 * kSystemPointerSize); + Move(sp, fp); LoadWord(ra, MemOperand(fp, 1 * kSystemPointerSize)); LoadWord(fp, MemOperand(fp, 0 * kSystemPointerSize)); + AddWord(sp, sp, 2 * kSystemPointerSize); } void MacroAssembler::EnterExitFrame(Register scratch, int stack_space,