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.

Reply via email to