Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merged: [wasm-simd][liftoff][arm64] Check offset fits in str immediate
When filling stack slots, the start offset can be too large to fit into the immediate of a str instruction (which is used to handle remainders after stp). For example, a function with 32 i64 params will require 256 bytes reserved for the params, so the offset starts at 256 + 16 (instance) = 272. This does not fit into a int9, so we hit an UNREACHABLE case when emitting str. The fix here checks that start can fit in an unscaled immediate, and if it doesn't fallback to the general case. We could use the Str from macro-asesmbler, but that uses another instruction, so we are not saving anything. A check for IsImmLSUnscaled(-start-12) is sufficient because 12 is the largest possible value for remainder. So if -start-12 fits, everything else will fit. [email protected] (cherry picked from commit c92e74f) Bug: v8:10645 Change-Id: Ibde69e667693e9c2c267469181db79c91e4aa765 No-Try: true No-Presubmit: true No-Tree-Checks: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2274084 Reviewed-by: Zhi An Ng <[email protected]> Commit-Queue: Zhi An Ng <[email protected]> Cr-Commit-Position: refs/branch-heads/8.5@{v8#14} Cr-Branched-From: a7f8bc4-refs/heads/8.5.210@{#1} Cr-Branched-From: dd58472-refs/heads/master@{#68510}
- Loading branch information