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.


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