Re: So Nexus 6 still 32-bit
64-bit ARM refashions quite a lot of the architecture so as to achieve advantages quite distinct from just having a larger address space. Including:
• approximately twice as many integer registers (28 general purpose versus 13);
• more, and wider, classical floating point registers;
• double precision SIMD; and
• better synchronisation primitives.
There are also some performance-oriented subtractions. ARM used to be famous for making every instruction conditional and allowing each to include a barrel roll. Both of those things are gone in favour of a shorter pipeline.
Also, AES, SHA1 and SHA256 are now implemented in hardware.
There's also the nature of both Objective-C and Java: they're both objects-on-the-heap languages with object types like Integer or NSNumber that are often used just to wrap primitive types like int.
Apple uses 64-bit support to implement tagged pointers: pointers that aren't correctly aligned, i.e. are identifiably not actual valid pointers, actually directly contain the data. So e.g. a 64-bit pointer to an NSNumber that contains a 32-bit value is actually the value itself in the pointer plus some meta content. Nothing is put on the heap. That tagged pointer then effectively gives life on the stack to objects without affecting the semantics of objects on the heap. Which, besides anything else, is good for avoiding page faults. I assume ART will or does do something similar.
So the 64-bit pointers provide benefits unrelated to simply being able to point to a wider area, potentially for both of the main platforms.