• Clemens Hammacher's avatar
    [Liftoff] Fix moving stack values · 14faced4
    Clemens Hammacher authored
    On x64 the {kScratchRegister} cannot be held in a {LiftoffRegister},
    since it is not a valid cache register. Also, the code unnecessarily
    checked whether there is an unused cache register, but then didn't use
    it. Simplify the logic to always use the scratch register, just
    distinguish between 4-byte and 8-byte moves.
    On ia32 we did not move 64-bit values correctly if we didn't have
    unused registers and needed to move via the stack.
    
    R=titzer@chromium.org
    
    Bug: v8:6600, chromium:917588, chromium:917450
    Change-Id: I0bbe946c6ac8fca62f85711ae47afdac9c02ae6b
    Reviewed-on: https://chromium-review.googlesource.com/c/1391755Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
    Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#58521}
    14faced4
liftoff-assembler-x64.h 50.6 KB