Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
deps: V8: cherry-pick aa0b288f87cc
Original commit message:

    PPC/S390: [wasm] Fix jump table offset when patching

    ... need to make sure patching of target occurs at the correct spot
    based on what `EmitFarJumpSlot` emits. Also mask the branch offset in
    PPC64 EmitJumpSlot to match `Assembler::b()`.

    Change-Id: I5a8079d0079d8ad427034761d42c90b64d5746dd
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7642190
    Reviewed-by: John <junyan1@ibm.com>
    Commit-Queue: Milad Farazmand <mfarazma@ibm.com>
    Reviewed-by: Clemens Backes <clemensb@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#105646}

Refs: v8/v8@aa0b288
  • Loading branch information
miladfarca authored and richardlau committed Mar 6, 2026
commit b7cffe025416845cf006a19b1e07b1d24fec7dd2
2 changes: 1 addition & 1 deletion common.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -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.12',
'v8_embedder_string': '-node.13',

##### V8 defaults for Node.js #####

Expand Down
9 changes: 6 additions & 3 deletions deps/v8/src/wasm/jump-table-assembler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,8 @@ void JumpTableAssembler::EmitFarJumpSlot(Address target) {
// static
void JumpTableAssembler::PatchFarJumpSlot(WritableJitAllocation& jit_allocation,
Address slot, Address target) {
Address target_addr = slot + 8;
// See {EmitFarJumpSlot} for the offset of the target.
Address target_addr = slot + kFarJumpTableSlotSize - kSystemPointerSize;
jit_allocation.WriteValue(target_addr, target, kRelaxedStore);
}

Expand Down Expand Up @@ -636,7 +637,7 @@ bool JumpTableAssembler::EmitJumpSlot(Address target) {

CHECK_EQ(0, relative_target & (kAAMask | kLKMask));
// The jump table is updated live, so the write has to be atomic.
emit<uint32_t>(inst[0] | relative_target, kRelaxedStore);
emit<uint32_t>(inst[0] | (relative_target & kImm26Mask), kRelaxedStore);
return true;
}

Expand Down Expand Up @@ -671,7 +672,9 @@ void JumpTableAssembler::EmitFarJumpSlot(Address target) {
// static
void JumpTableAssembler::PatchFarJumpSlot(WritableJitAllocation& jit_allocation,
Address slot, Address target) {
Address target_addr = slot + kFarJumpTableSlotSize - 8;
// See {EmitFarJumpSlot} for the offset of the target.
Address target_addr =
slot + kFarJumpTableSlotSize - (2 * kInstrSize) - kSystemPointerSize;
jit_allocation.WriteValue(target_addr, target, kRelaxedStore);
}

Expand Down
Loading