On 2014/06/23 17:49:06, jbramley wrote:
On 2014/06/23 17:37:06, loislo wrote:
> +alph
Oops, sorry!
I should probably explain a bit too.
- The smis moved into 'scratch' at the start can be loaded with a
single instruction. There's no need to use ldr for these. (This
should also be true on ARM, actually.)
- ARM64 has a funny stack interface because the architectural stack
pointer (csp) has inconvenient alignment restrictions. As a result,
every 'Push' has an overhead.
- PushMultipleTimes is a direct replacement for the 'push' loop.
- masm->StackPointer() abstracts jssp. (It's irrelevant in this
case, but in some places masm->StackPointer() could return csp.
This change is just for consistency.)
- AssertStackConsistency() makes sure that we haven't done something
silly. In particular, it makes sure that jssp >= csp at all times.
This helps to enforce ABI requirements about accesses below the
stack pointer.
- The ARM64 MacroAssembler uses ip0 and ip1 as scratch registers, but
we have a mechanism for claiming them for other purposes. This
ensures that they are used safely, so we don't have to worry about
the MacroAssembler clobbering our temporary values.
- You can store xzr directly; there's no need to move it to x1 first.
- The ARM64 back-end generally uses 'Br' to branch to a register. I
don't really know why 'Jump(Register)' exists.
lgtm.
https://codereview.chromium.org/349973007/
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.