[Liftoff] Fix stack pointer corruption
During a C call, a previous value of the stack pointer is stored in a platform specific callee saved register. Loading the out argument of the C call might overwrite the value in that register, if the destination register collides with the platform specific register. Hence, do first use that register to restore the previous stack pointer, and only then load the out argument. Similarly, when pushing arguments to the stack, do first push all values and then set the platform specific register in order to avoid overwriting an argument value held in that register. Drive-by: Fix offset computations for parameters pushed to the stack for c calls. R=titzer@chromium.org Bug: chromium:820802,chromium:820896,chromium:820807,v8:6600 Change-Id: If4567467b7912454f0bd2cad5927233c98894b03 Reviewed-on: https://chromium-review.googlesource.com/959064Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#51916}
Showing
Please
register
or
sign in
to comment