• Clemens Backes's avatar
    [liftoff][arm64] Fix address computation for trap handling · c8d60d7e
    Clemens Backes authored
    This refactors the {GetMemOp} function once again:
    Instead of computing (mem_start + (offset_reg + offset_imm)), do compute
    ((mem_start + offset_imm) + offset_reg). This avoids an overflow in
    (offset_reg + offset_imm) when using 32-bit computations, which hides
    OOB memory accesses when relying on the trap handler.
    
    As a nice side-effect, this change makes the whole method a lot nicer to
    read.
    
    We also need to change {StoreTaggedPointer} now, which was relying on the
    inner working of {GetMemOp}. The new version makes the semantics more
    transparent at the cost of repeating some logic from (the previous version
    of) {GetMemOp}.
    
    R=jkummerow@chromium.org
    
    Bug: v8:11955, chromium:1227465, v8:11951
    Change-Id: Ia068ca7c4f7db89b81529edd3438b0e4eee7d23d
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3015566
    Commit-Queue: Clemens Backes <clemensb@chromium.org>
    Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#75693}
    c8d60d7e
Name
Last commit
Last update
..
arm Loading commit data...
arm64 Loading commit data...
ia32 Loading commit data...
mips Loading commit data...
mips64 Loading commit data...
ppc Loading commit data...
riscv64 Loading commit data...
s390 Loading commit data...
x64 Loading commit data...
DEPS Loading commit data...
liftoff-assembler-defs.h Loading commit data...
liftoff-assembler.cc Loading commit data...
liftoff-assembler.h Loading commit data...
liftoff-compiler.cc Loading commit data...
liftoff-compiler.h Loading commit data...
liftoff-register.h Loading commit data...