Skip to content

Commit 2657c30

Browse files
committed
deps: V8: cherry-pick 56fe020eec0c
Original commit message: [wasm][arm64] Always zero-extend 32 bit offsets, for realz We've already been zero-extending 32-bit offset registers since https://chromium-review.googlesource.com/c/v8/v8/+/2917612, but that patch only covered the case where offset_imm == 0. When there is a non-zero offset, we need the same fix. Bug: chromium:1224882,v8:11809 Change-Id: I1908f735929798f411346807fc4f3c79d8e04362 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2998582 Commit-Queue: Jakob Kummerow <[email protected]> Reviewed-by: Clemens Backes <[email protected]> Cr-Commit-Position: refs/heads/master@{#75500} Refs: v8/v8@56fe020 Fixes: #39327 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 5c5a93e commit 2657c30

File tree

3 files changed

+21
-9
lines changed

3 files changed

+21
-9
lines changed

Diff for: common.gypi

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
# Reset this number to 0 on major V8 upgrades.
3838
# Increment by one for each non-official patch applied to deps/v8.
39-
'v8_embedder_string': '-node.16',
39+
'v8_embedder_string': '-node.17',
4040

4141
##### V8 defaults for Node.js #####
4242

Diff for: deps/v8/src/wasm/baseline/arm64/liftoff-assembler-arm64.h

+9-3
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,16 @@ inline MemOperand GetMemOp(LiftoffAssembler* assm,
133133
return i64_offset ? MemOperand(addr.X(), offset.X())
134134
: MemOperand(addr.X(), offset.W(), UXTW);
135135
}
136-
Register tmp = temps->AcquireX();
137136
DCHECK_GE(kMaxUInt32, offset_imm);
138-
assm->Add(tmp, offset.X(), offset_imm);
139-
return MemOperand(addr.X(), tmp);
137+
if (i64_offset) {
138+
Register tmp = temps->AcquireX();
139+
assm->Add(tmp, offset.X(), offset_imm);
140+
return MemOperand(addr.X(), tmp);
141+
} else {
142+
Register tmp = temps->AcquireW();
143+
assm->Add(tmp, offset.W(), offset_imm);
144+
return MemOperand(addr.X(), tmp, UXTW);
145+
}
140146
}
141147
return MemOperand(addr.X(), offset_imm);
142148
}

Diff for: deps/v8/test/mjsunit/regress/wasm/regress-11809.js

+11-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44
//
5-
// Flags: --enable-testing-opcode-in-wasm --nowasm-tier-up --wasm-tier-mask-for-testing=2
5+
// Flags: --enable-testing-opcode-in-wasm --nowasm-tier-up
6+
// Flags: --wasm-tier-mask-for-testing=2
67

78
load("test/mjsunit/wasm/wasm-module-builder.js");
89

9-
var instance = (function () {
10+
function InstanceMaker(offset) {
1011
var builder = new WasmModuleBuilder();
1112
builder.addMemory(1, 1, false /* exported */);
1213

@@ -24,7 +25,7 @@ var instance = (function () {
2425
var two = builder.addFunction("two", kSig_v_i);
2526
var three = builder.addFunction("three", sig_three).addBody([]);
2627

27-
zero.addBody([kExprLocalGet, 0, kExprI32LoadMem, 0, 0]);
28+
zero.addBody([kExprLocalGet, 0, kExprI32LoadMem, 0, offset]);
2829

2930
one.addBody([
3031
kExprLocalGet, 7,
@@ -53,6 +54,11 @@ var instance = (function () {
5354
]).exportFunc();
5455

5556
return builder.instantiate({});
56-
})();
57+
}
5758

58-
instance.exports.two()
59+
var instance = InstanceMaker(0);
60+
instance.exports.two();
61+
62+
// Regression test for crbug.com/1224882.
63+
var instance_with_offset = InstanceMaker(4);
64+
instance_with_offset.exports.two();

0 commit comments

Comments
 (0)