Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 34.2k
Backport V8 fixes for WASM on ARM64#39337
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
Conversation
Original commit message: Reland "[liftoff][arm64] Use 64 bit offset reg in mem op" This is a reland of f645d0b857bc669271adcbe95cf25e1554347dd4 The issue was that converting an i64 to an i32 didn't clear the upper bits on arm64. This was not necessary before because we did the zero extension as part of the load operand, but this is required now that we use the full register. Original change's description: > [liftoff][arm64] Use 64 bit offset reg in mem op > > Accessing the Wasm memory with a 64 bit offset was truncated to 32 bit, > which is fine if we check bounds first, but not if we rely on the > trap handler to catch the OOB. > > [email protected] > > Bug: v8:11587 > Change-Id: I82a3a2906e55d9d640c30e770a5c93532e3a442c > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2808942 > Reviewed-by: Clemens Backes <[email protected]> > Commit-Queue: Thibaud Michaud <[email protected]> > Cr-Commit-Position: refs/heads/master@{#73829} Bug: v8:11587 Change-Id: Ibc182475745c6f697a0ba6d75c260b74ddf8fe52 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2810846 Reviewed-by: Clemens Backes <[email protected]> Commit-Queue: Thibaud Michaud <[email protected]> Cr-Commit-Position: refs/heads/master@{#73853} Refs: v8/v8@cb4faa9
Original commit message: [liftoff] Handle constant memory indexes specially This adds detection for constant memory indexes which can statically be proven to be in-bounds (because the effective offset is within the minimum memory size). In these cases, we can skip the bounds check and the out-of-line code for the trap-handler. This often saves 1-2% of code size. [email protected] Bug: v8:11802 Change-Id: I0ee094e6f1f5d132af1d6a8a7c539a4af6c3cb5e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2919827 Commit-Queue: Clemens Backes <[email protected]> Reviewed-by: Andreas Haas <[email protected]> Cr-Commit-Position: refs/heads/master@{#74825} Refs: v8/v8@53784bd
Original commit message: [wasm][liftoff] Always zero-extend 32 bit offsets The upper 32 bits of the 64 bit offset register are not guaranteed to be cleared, so a zero-extension is needed. We already do the zero-extension in the case of explicit bounds checking, but this should also be done if the trap handler is enabled. [email protected][email protected] Bug: v8:11809 Change-Id: I21e2535c701041d11fa06c176fa683d82db0a3f1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2917612 Commit-Queue: Thibaud Michaud <[email protected]> Reviewed-by: Clemens Backes <[email protected]> Cr-Commit-Position: refs/heads/master@{#74881} Refs: v8/v8@2b77ca2
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@56fe020Fixes: nodejs#39327
nodejs-github-bot commented Jul 10, 2021 • edited by targos
Loading Uh oh!
There was an error while loading. Please reload this page.
edited by targos
Uh oh!
There was an error while loading. Please reload this page.
mcollina left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
targos commented Jul 10, 2021
It breaks on IBM platforms. We'll need to find the corresponding change for them |
targos commented Jul 10, 2021
@nodejs/platform-aix @nodejs/platform-ppc |
Original commit message: PPC/s390: [wasm][liftoff] Always zero-extend 32 bit offsets Port 2b77ca200c56667c68895e49c96c10ff77834f09 Original Commit Message: The upper 32 bits of the 64 bit offset register are not guaranteed to be cleared, so a zero-extension is needed. We already do the zero-extension in the case of explicit bounds checking, but this should also be done if the trap handler is enabled. [email protected], [email protected], [email protected], [email protected] BUG= LOG=N Change-Id: Ife3ae4f93b85fe1b2c76fe4b98fa408b5b51ed71 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2929661 Reviewed-by: Junliang Yan <[email protected]> Commit-Queue: Milad Fa <[email protected]> Cr-Commit-Position: refs/heads/master@{#74886} Refs: v8/v8@3805a69
Original commit message: [riscv64] Fix build failed Port 2b77ca200c56667c68895e49c96c10ff77834f09 Change-Id: Ie953a1d54f5529423ae35d1b1cd3ca25e8101c6e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2931577 Auto-Submit: Yahan Lu <[email protected]> Commit-Queue: Brice Dobry <[email protected]> Reviewed-by: Brice Dobry <[email protected]> Cr-Commit-Position: refs/heads/master@{#74937} Refs: v8/v8@359d44d
Original commit message: [mips][wasm][liftoff] Fix compile failed Port 2b77ca200c56667c68895e49c96c10ff77834f09 Bug: v8:11809 Change-Id: Idbbbc10d1339d6c8463686b6e701fb601a217cab Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2931557 Reviewed-by: Zhao Jiazhong <[email protected]> Commit-Queue: Zhao Jiazhong <[email protected]> Auto-Submit: Liu yu <[email protected]> Cr-Commit-Position: refs/heads/master@{#74934} Refs: v8/v8@5c76da8
targos commented Jul 10, 2021
I think I found the missing commits |
nodejs-github-bot commented Jul 10, 2021 • edited by targos
Loading Uh oh!
There was an error while loading. Please reload this page.
edited by targos
Uh oh!
There was an error while loading. Please reload this page.
nodejs-github-bot commented Jul 10, 2021
nodejs-github-bot commented Jul 11, 2021
nodejs-github-bot commented Jul 12, 2021
nodejs-github-bot commented Jul 12, 2021
targos commented Jul 12, 2021
Landed in dbe564f...de85b1e |
Original commit message: Reland "[liftoff][arm64] Use 64 bit offset reg in mem op" This is a reland of f645d0b857bc669271adcbe95cf25e1554347dd4 The issue was that converting an i64 to an i32 didn't clear the upper bits on arm64. This was not necessary before because we did the zero extension as part of the load operand, but this is required now that we use the full register. Original change's description: > [liftoff][arm64] Use 64 bit offset reg in mem op > > Accessing the Wasm memory with a 64 bit offset was truncated to 32 bit, > which is fine if we check bounds first, but not if we rely on the > trap handler to catch the OOB. > > [email protected] > > Bug: v8:11587 > Change-Id: I82a3a2906e55d9d640c30e770a5c93532e3a442c > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2808942 > Reviewed-by: Clemens Backes <[email protected]> > Commit-Queue: Thibaud Michaud <[email protected]> > Cr-Commit-Position: refs/heads/master@{#73829} Bug: v8:11587 Change-Id: Ibc182475745c6f697a0ba6d75c260b74ddf8fe52 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2810846 Reviewed-by: Clemens Backes <[email protected]> Commit-Queue: Thibaud Michaud <[email protected]> Cr-Commit-Position: refs/heads/master@{#73853} Refs: v8/v8@cb4faa9 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [liftoff] Handle constant memory indexes specially This adds detection for constant memory indexes which can statically be proven to be in-bounds (because the effective offset is within the minimum memory size). In these cases, we can skip the bounds check and the out-of-line code for the trap-handler. This often saves 1-2% of code size. [email protected] Bug: v8:11802 Change-Id: I0ee094e6f1f5d132af1d6a8a7c539a4af6c3cb5e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2919827 Commit-Queue: Clemens Backes <[email protected]> Reviewed-by: Andreas Haas <[email protected]> Cr-Commit-Position: refs/heads/master@{#74825} Refs: v8/v8@53784bd PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [wasm][liftoff] Always zero-extend 32 bit offsets The upper 32 bits of the 64 bit offset register are not guaranteed to be cleared, so a zero-extension is needed. We already do the zero-extension in the case of explicit bounds checking, but this should also be done if the trap handler is enabled. [email protected][email protected] Bug: v8:11809 Change-Id: I21e2535c701041d11fa06c176fa683d82db0a3f1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2917612 Commit-Queue: Thibaud Michaud <[email protected]> Reviewed-by: Clemens Backes <[email protected]> Cr-Commit-Position: refs/heads/master@{#74881} Refs: v8/v8@2b77ca2 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
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@56fe020Fixes: #39327 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [wasm][liftoff] Always zero-extend 32 bit offsets The upper 32 bits of the 64 bit offset register are not guaranteed to be cleared, so a zero-extension is needed. We already do the zero-extension in the case of explicit bounds checking, but this should also be done if the trap handler is enabled. [email protected][email protected] Bug: v8:11809 Change-Id: I21e2535c701041d11fa06c176fa683d82db0a3f1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2917612 Commit-Queue: Thibaud Michaud <[email protected]> Reviewed-by: Clemens Backes <[email protected]> Cr-Commit-Position: refs/heads/master@{#74881} Refs: v8/v8@2b77ca2 PR-URL: nodejs#39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
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@56fe020Fixes: nodejs#39327 PR-URL: nodejs#39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: PPC/s390: [wasm][liftoff] Always zero-extend 32 bit offsets Port 2b77ca200c56667c68895e49c96c10ff77834f09 Original Commit Message: The upper 32 bits of the 64 bit offset register are not guaranteed to be cleared, so a zero-extension is needed. We already do the zero-extension in the case of explicit bounds checking, but this should also be done if the trap handler is enabled. [email protected], [email protected], [email protected], [email protected] BUG= LOG=N Change-Id: Ife3ae4f93b85fe1b2c76fe4b98fa408b5b51ed71 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2929661 Reviewed-by: Junliang Yan <[email protected]> Commit-Queue: Milad Fa <[email protected]> Cr-Commit-Position: refs/heads/master@{#74886} Refs: v8/v8@3805a69 PR-URL: nodejs#39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [riscv64] Fix build failed Port 2b77ca200c56667c68895e49c96c10ff77834f09 Change-Id: Ie953a1d54f5529423ae35d1b1cd3ca25e8101c6e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2931577 Auto-Submit: Yahan Lu <[email protected]> Commit-Queue: Brice Dobry <[email protected]> Reviewed-by: Brice Dobry <[email protected]> Cr-Commit-Position: refs/heads/master@{#74937} Refs: v8/v8@359d44d PR-URL: nodejs#39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [mips][wasm][liftoff] Fix compile failed Port 2b77ca200c56667c68895e49c96c10ff77834f09 Bug: v8:11809 Change-Id: Idbbbc10d1339d6c8463686b6e701fb601a217cab Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2931557 Reviewed-by: Zhao Jiazhong <[email protected]> Commit-Queue: Zhao Jiazhong <[email protected]> Auto-Submit: Liu yu <[email protected]> Cr-Commit-Position: refs/heads/master@{#74934} Refs: v8/v8@5c76da8 PR-URL: nodejs#39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [liftoff] Handle constant memory indexes specially This adds detection for constant memory indexes which can statically be proven to be in-bounds (because the effective offset is within the minimum memory size). In these cases, we can skip the bounds check and the out-of-line code for the trap-handler. This often saves 1-2% of code size. [email protected] Bug: v8:11802 Change-Id: I0ee094e6f1f5d132af1d6a8a7c539a4af6c3cb5e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2919827 Commit-Queue: Clemens Backes <[email protected]> Reviewed-by: Andreas Haas <[email protected]> Cr-Commit-Position: refs/heads/master@{#74825} Refs: v8/v8@53784bd PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [wasm][liftoff] Always zero-extend 32 bit offsets The upper 32 bits of the 64 bit offset register are not guaranteed to be cleared, so a zero-extension is needed. We already do the zero-extension in the case of explicit bounds checking, but this should also be done if the trap handler is enabled. [email protected][email protected] Bug: v8:11809 Change-Id: I21e2535c701041d11fa06c176fa683d82db0a3f1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2917612 Commit-Queue: Thibaud Michaud <[email protected]> Reviewed-by: Clemens Backes <[email protected]> Cr-Commit-Position: refs/heads/master@{#74881} Refs: v8/v8@2b77ca2 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
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@56fe020Fixes: #39327 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: PPC/s390: [wasm][liftoff] Always zero-extend 32 bit offsets Port 2b77ca200c56667c68895e49c96c10ff77834f09 Original Commit Message: The upper 32 bits of the 64 bit offset register are not guaranteed to be cleared, so a zero-extension is needed. We already do the zero-extension in the case of explicit bounds checking, but this should also be done if the trap handler is enabled. [email protected], [email protected], [email protected], [email protected] BUG= LOG=N Change-Id: Ife3ae4f93b85fe1b2c76fe4b98fa408b5b51ed71 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2929661 Reviewed-by: Junliang Yan <[email protected]> Commit-Queue: Milad Fa <[email protected]> Cr-Commit-Position: refs/heads/master@{#74886} Refs: v8/v8@3805a69 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [riscv64] Fix build failed Port 2b77ca200c56667c68895e49c96c10ff77834f09 Change-Id: Ie953a1d54f5529423ae35d1b1cd3ca25e8101c6e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2931577 Auto-Submit: Yahan Lu <[email protected]> Commit-Queue: Brice Dobry <[email protected]> Reviewed-by: Brice Dobry <[email protected]> Cr-Commit-Position: refs/heads/master@{#74937} Refs: v8/v8@359d44d PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [mips][wasm][liftoff] Fix compile failed Port 2b77ca200c56667c68895e49c96c10ff77834f09 Bug: v8:11809 Change-Id: Idbbbc10d1339d6c8463686b6e701fb601a217cab Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2931557 Reviewed-by: Zhao Jiazhong <[email protected]> Commit-Queue: Zhao Jiazhong <[email protected]> Auto-Submit: Liu yu <[email protected]> Cr-Commit-Position: refs/heads/master@{#74934} Refs: v8/v8@5c76da8 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [liftoff] Handle constant memory indexes specially This adds detection for constant memory indexes which can statically be proven to be in-bounds (because the effective offset is within the minimum memory size). In these cases, we can skip the bounds check and the out-of-line code for the trap-handler. This often saves 1-2% of code size. [email protected] Bug: v8:11802 Change-Id: I0ee094e6f1f5d132af1d6a8a7c539a4af6c3cb5e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2919827 Commit-Queue: Clemens Backes <[email protected]> Reviewed-by: Andreas Haas <[email protected]> Cr-Commit-Position: refs/heads/master@{#74825} Refs: v8/v8@53784bd PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [wasm][liftoff] Always zero-extend 32 bit offsets The upper 32 bits of the 64 bit offset register are not guaranteed to be cleared, so a zero-extension is needed. We already do the zero-extension in the case of explicit bounds checking, but this should also be done if the trap handler is enabled. [email protected][email protected] Bug: v8:11809 Change-Id: I21e2535c701041d11fa06c176fa683d82db0a3f1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2917612 Commit-Queue: Thibaud Michaud <[email protected]> Reviewed-by: Clemens Backes <[email protected]> Cr-Commit-Position: refs/heads/master@{#74881} Refs: v8/v8@2b77ca2 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
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@56fe020Fixes: #39327 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: PPC/s390: [wasm][liftoff] Always zero-extend 32 bit offsets Port 2b77ca200c56667c68895e49c96c10ff77834f09 Original Commit Message: The upper 32 bits of the 64 bit offset register are not guaranteed to be cleared, so a zero-extension is needed. We already do the zero-extension in the case of explicit bounds checking, but this should also be done if the trap handler is enabled. [email protected], [email protected], [email protected], [email protected] BUG= LOG=N Change-Id: Ife3ae4f93b85fe1b2c76fe4b98fa408b5b51ed71 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2929661 Reviewed-by: Junliang Yan <[email protected]> Commit-Queue: Milad Fa <[email protected]> Cr-Commit-Position: refs/heads/master@{#74886} Refs: v8/v8@3805a69 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [riscv64] Fix build failed Port 2b77ca200c56667c68895e49c96c10ff77834f09 Change-Id: Ie953a1d54f5529423ae35d1b1cd3ca25e8101c6e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2931577 Auto-Submit: Yahan Lu <[email protected]> Commit-Queue: Brice Dobry <[email protected]> Reviewed-by: Brice Dobry <[email protected]> Cr-Commit-Position: refs/heads/master@{#74937} Refs: v8/v8@359d44d PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [mips][wasm][liftoff] Fix compile failed Port 2b77ca200c56667c68895e49c96c10ff77834f09 Bug: v8:11809 Change-Id: Idbbbc10d1339d6c8463686b6e701fb601a217cab Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2931557 Reviewed-by: Zhao Jiazhong <[email protected]> Commit-Queue: Zhao Jiazhong <[email protected]> Auto-Submit: Liu yu <[email protected]> Cr-Commit-Position: refs/heads/master@{#74934} Refs: v8/v8@5c76da8 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [liftoff] Handle constant memory indexes specially This adds detection for constant memory indexes which can statically be proven to be in-bounds (because the effective offset is within the minimum memory size). In these cases, we can skip the bounds check and the out-of-line code for the trap-handler. This often saves 1-2% of code size. [email protected] Bug: v8:11802 Change-Id: I0ee094e6f1f5d132af1d6a8a7c539a4af6c3cb5e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2919827 Commit-Queue: Clemens Backes <[email protected]> Reviewed-by: Andreas Haas <[email protected]> Cr-Commit-Position: refs/heads/master@{#74825} Refs: v8/v8@53784bd PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [wasm][liftoff] Always zero-extend 32 bit offsets The upper 32 bits of the 64 bit offset register are not guaranteed to be cleared, so a zero-extension is needed. We already do the zero-extension in the case of explicit bounds checking, but this should also be done if the trap handler is enabled. [email protected][email protected] Bug: v8:11809 Change-Id: I21e2535c701041d11fa06c176fa683d82db0a3f1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2917612 Commit-Queue: Thibaud Michaud <[email protected]> Reviewed-by: Clemens Backes <[email protected]> Cr-Commit-Position: refs/heads/master@{#74881} Refs: v8/v8@2b77ca2 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
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@56fe020Fixes: #39327 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: PPC/s390: [wasm][liftoff] Always zero-extend 32 bit offsets Port 2b77ca200c56667c68895e49c96c10ff77834f09 Original Commit Message: The upper 32 bits of the 64 bit offset register are not guaranteed to be cleared, so a zero-extension is needed. We already do the zero-extension in the case of explicit bounds checking, but this should also be done if the trap handler is enabled. [email protected], [email protected], [email protected], [email protected] BUG= LOG=N Change-Id: Ife3ae4f93b85fe1b2c76fe4b98fa408b5b51ed71 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2929661 Reviewed-by: Junliang Yan <[email protected]> Commit-Queue: Milad Fa <[email protected]> Cr-Commit-Position: refs/heads/master@{#74886} Refs: v8/v8@3805a69 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [riscv64] Fix build failed Port 2b77ca200c56667c68895e49c96c10ff77834f09 Change-Id: Ie953a1d54f5529423ae35d1b1cd3ca25e8101c6e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2931577 Auto-Submit: Yahan Lu <[email protected]> Commit-Queue: Brice Dobry <[email protected]> Reviewed-by: Brice Dobry <[email protected]> Cr-Commit-Position: refs/heads/master@{#74937} Refs: v8/v8@359d44d PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [mips][wasm][liftoff] Fix compile failed Port 2b77ca200c56667c68895e49c96c10ff77834f09 Bug: v8:11809 Change-Id: Idbbbc10d1339d6c8463686b6e701fb601a217cab Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2931557 Reviewed-by: Zhao Jiazhong <[email protected]> Commit-Queue: Zhao Jiazhong <[email protected]> Auto-Submit: Liu yu <[email protected]> Cr-Commit-Position: refs/heads/master@{#74934} Refs: v8/v8@5c76da8 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [liftoff] Handle constant memory indexes specially This adds detection for constant memory indexes which can statically be proven to be in-bounds (because the effective offset is within the minimum memory size). In these cases, we can skip the bounds check and the out-of-line code for the trap-handler. This often saves 1-2% of code size. [email protected] Bug: v8:11802 Change-Id: I0ee094e6f1f5d132af1d6a8a7c539a4af6c3cb5e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2919827 Commit-Queue: Clemens Backes <[email protected]> Reviewed-by: Andreas Haas <[email protected]> Cr-Commit-Position: refs/heads/master@{#74825} Refs: v8/v8@53784bd PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [wasm][liftoff] Always zero-extend 32 bit offsets The upper 32 bits of the 64 bit offset register are not guaranteed to be cleared, so a zero-extension is needed. We already do the zero-extension in the case of explicit bounds checking, but this should also be done if the trap handler is enabled. [email protected][email protected] Bug: v8:11809 Change-Id: I21e2535c701041d11fa06c176fa683d82db0a3f1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2917612 Commit-Queue: Thibaud Michaud <[email protected]> Reviewed-by: Clemens Backes <[email protected]> Cr-Commit-Position: refs/heads/master@{#74881} Refs: v8/v8@2b77ca2 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
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@56fe020Fixes: #39327 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: PPC/s390: [wasm][liftoff] Always zero-extend 32 bit offsets Port 2b77ca200c56667c68895e49c96c10ff77834f09 Original Commit Message: The upper 32 bits of the 64 bit offset register are not guaranteed to be cleared, so a zero-extension is needed. We already do the zero-extension in the case of explicit bounds checking, but this should also be done if the trap handler is enabled. [email protected], [email protected], [email protected], [email protected] BUG= LOG=N Change-Id: Ife3ae4f93b85fe1b2c76fe4b98fa408b5b51ed71 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2929661 Reviewed-by: Junliang Yan <[email protected]> Commit-Queue: Milad Fa <[email protected]> Cr-Commit-Position: refs/heads/master@{#74886} Refs: v8/v8@3805a69 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [riscv64] Fix build failed Port 2b77ca200c56667c68895e49c96c10ff77834f09 Change-Id: Ie953a1d54f5529423ae35d1b1cd3ca25e8101c6e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2931577 Auto-Submit: Yahan Lu <[email protected]> Commit-Queue: Brice Dobry <[email protected]> Reviewed-by: Brice Dobry <[email protected]> Cr-Commit-Position: refs/heads/master@{#74937} Refs: v8/v8@359d44d PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Original commit message: [mips][wasm][liftoff] Fix compile failed Port 2b77ca200c56667c68895e49c96c10ff77834f09 Bug: v8:11809 Change-Id: Idbbbc10d1339d6c8463686b6e701fb601a217cab Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2931557 Reviewed-by: Zhao Jiazhong <[email protected]> Commit-Queue: Zhao Jiazhong <[email protected]> Auto-Submit: Liu yu <[email protected]> Cr-Commit-Position: refs/heads/master@{#74934} Refs: v8/v8@5c76da8 PR-URL: #39337 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Fixes#39327