diff --git a/common.gypi b/common.gypi index a4825c5429d761..c58aa7fd89305d 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.12', + 'v8_embedder_string': '-node.13', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/src/wasm/jump-table-assembler.cc b/deps/v8/src/wasm/jump-table-assembler.cc index 7953adb138e18b..47d21e29785be8 100644 --- a/deps/v8/src/wasm/jump-table-assembler.cc +++ b/deps/v8/src/wasm/jump-table-assembler.cc @@ -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); } @@ -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(inst[0] | relative_target, kRelaxedStore); + emit(inst[0] | (relative_target & kImm26Mask), kRelaxedStore); return true; } @@ -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); }