Reland r21101: "ARM64: use jssp for stack slots"
authorjacob.bramley <jacob.bramley@arm.com>
Wed, 24 Jun 2015 06:47:27 +0000 (23:47 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 24 Jun 2015 06:47:42 +0000 (06:47 +0000)
commit48d726cd6f6ad176d54b546b7d1ca717e5478b46
tree2075112305bcfe66b6c8cb90efaae9cadfdde0b4
parentc019d7f498ce6fbac6659924e20ddb6c59aebeb8
Reland r21101: "ARM64: use jssp for stack slots"

The original implementation assumed that LPushArguments and
LInvoke/Call* could be assumed to be exclusively sequential. However,
this isn't always the case. For example, GenerateCallFunction pushes
some arguments and then selects between HInvokeFunction and
HCallFunction.

This fixed implementation resets a pushed_arguments_ counter based on
the argument_count() of the preceeding basic block, then tracks it
per-instruction as before (except that now we maintain a count rather
than a boolean flag).

At the same time, since we now track exactly how many arguments have
been pushed onto the stack, I was able to adjust the offset accordingly
and use jssp for stack slots even when arguments have been pushed.

BUG=

Review URL: https://codereview.chromium.org/1038363002

Cr-Commit-Position: refs/heads/master@{#29249}
src/arm64/lithium-codegen-arm64.cc
src/arm64/lithium-codegen-arm64.h