v8/src/a64
svenpanne@chromium.org c45043881c Speed up A64 simulator by removing useless memcpy.
The addresses involved should always be aligned, so we can simply use
a cast, just like the ARM simulator. Even if the alignment assumption
did not hold and the platform we are running on couldn't handle
unaligned access, some #ifdefs would be much more preferable. The
affected member functions were the top 2 in a profile (18% and 15%),
so basically every hack is allowed here to speed things up. :-)

Removed some dead code for literals on the way. If we need to
resurrect it, we should do it without double(!) memcpys.

Generally, I still don't understand why we need the Instr/Instruction
distinction or simply wrap Instr within Instruction, this seems to
be much simpler and cleaner, but this would involve heavier changes.

The overall speedup of this CL is roughly 37%, see the numbers below
for a reduced Octane suite and the check targets:

------------------------------------------------------------
With memcpy:
------------------------------------------------------------

make -j32 a64.release.quickcheck => 03:29
make -j32 a64.release.check      => 11:30
Reduced Octane suite             => 05:16
Richards: 35.1
DeltaBlue: 64.1
RayTrace: 130
Splay: 66.1
SplayLatency: 619
NavierStokes: 58.7
PdfJS: 89.6
Mandreel: 58.5
MandreelLatency: 242
CodeLoad: 5103
Box2D: 124
----
Score (version 9): 144

------------------------------------------------------------
With casts:
------------------------------------------------------------
make -j32 a64.release.quickcheck => 02:14
make -j32 a64.release.check      => 07:21
Reduced Octane suite             => 03:21
Richards: 53.3
DeltaBlue: 103
RayTrace: 205
Splay: 95.9
SplayLatency: 859
NavierStokes: 103
PdfJS: 136
Mandreel: 94.8
MandreelLatency: 386
CodeLoad: 6493
Box2D: 179
----
Score (version 9): 219

R=ulan@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19929 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-14 10:36:13 +00:00
..
assembler-a64-inl.h Reland "Pass a Code object to Assembler::(set_)target_address_at for use by ool constant pool." 2014-03-12 15:23:54 +00:00
assembler-a64.cc A64: Remove an invalid assertion about the position of the reloc_info_writer. 2014-03-13 10:28:53 +00:00
assembler-a64.h A64: Fix Fmov with signalling NaN literals. 2014-03-13 09:45:02 +00:00
builtins-a64.cc A64: Implement and use FillFields 2014-03-13 13:18:48 +00:00
code-stubs-a64.cc Turn StringLengthStub (used by string wrappers only) into a hydrogen stub. 2014-03-13 10:57:07 +00:00
code-stubs-a64.h A64: Rename k<Y>RegSize to k<Y>RegSizeInBits, and k<Y>RegSizeInBytes to k<Y>RegSize. 2014-03-12 15:18:40 +00:00
codegen-a64.cc A64: Rename k<Y>RegSize to k<Y>RegSizeInBits, and k<Y>RegSizeInBytes to k<Y>RegSize. 2014-03-12 15:18:40 +00:00
codegen-a64.h A64: Fix int32 use in Lithium string functions 2014-02-20 10:08:04 +00:00
constants-a64.h A64: Fix a few simulation inaccuracies. 2014-03-14 10:23:55 +00:00
cpu-a64.cc Merge experimental/a64 to bleeding_edge. 2014-02-12 09:19:30 +00:00
cpu-a64.h Merge experimental/a64 to bleeding_edge. 2014-02-12 09:19:30 +00:00
debug-a64.cc A64: Rename k<Y>RegSize to k<Y>RegSizeInBits, and k<Y>RegSizeInBytes to k<Y>RegSize. 2014-03-12 15:18:40 +00:00
decoder-a64-inl.h A64: Make the Decoder a template 2014-02-26 12:01:05 +00:00
decoder-a64.cc A64: Make the Decoder a template 2014-02-26 12:01:05 +00:00
decoder-a64.h A64: Hardwire the decoder and the simulator 2014-02-26 14:50:58 +00:00
deoptimizer-a64.cc A64: Rename k<Y>RegSize to k<Y>RegSizeInBits, and k<Y>RegSizeInBytes to k<Y>RegSize. 2014-03-12 15:18:40 +00:00
disasm-a64.cc A64: Rename k<Y>RegSize to k<Y>RegSizeInBits, and k<Y>RegSizeInBytes to k<Y>RegSize. 2014-03-12 15:18:40 +00:00
disasm-a64.h Merge experimental/a64 to bleeding_edge. 2014-02-12 09:19:30 +00:00
frames-a64.cc Merge experimental/a64 to bleeding_edge. 2014-02-12 09:19:30 +00:00
frames-a64.h Reland "Pass a Code object to Assembler::(set_)target_address_at for use by ool constant pool." 2014-03-12 15:23:54 +00:00
full-codegen-a64.cc Continued fix for 351257. Reusing the feedback vector is too complex. 2014-03-14 09:28:37 +00:00
ic-a64.cc A64: Tidy up a couple of TODOs. 2014-03-11 15:50:01 +00:00
instructions-a64.cc A64: Rename k<Y>RegSize to k<Y>RegSizeInBits, and k<Y>RegSizeInBytes to k<Y>RegSize. 2014-03-12 15:18:40 +00:00
instructions-a64.h Speed up A64 simulator by removing useless memcpy. 2014-03-14 10:36:13 +00:00
instrument-a64.cc Merge experimental/a64 to bleeding_edge. 2014-02-12 09:19:30 +00:00
instrument-a64.h Merge experimental/a64 to bleeding_edge. 2014-02-12 09:19:30 +00:00
lithium-a64.cc A64: Relax the register constraints for LSeqStringGetChar. 2014-03-13 14:56:57 +00:00
lithium-a64.h A64: Implement and use FillFields 2014-03-13 13:18:48 +00:00
lithium-codegen-a64.cc Fix for issue 351261. 2014-03-14 10:22:55 +00:00
lithium-codegen-a64.h Fix lazy deopt after tagged binary ops 2014-03-12 09:59:36 +00:00
lithium-gap-resolver-a64.cc A64: Prevent repeated restoring of root in gap resolver 2014-02-14 09:12:39 +00:00
lithium-gap-resolver-a64.h Merge experimental/a64 to bleeding_edge. 2014-02-12 09:19:30 +00:00
macro-assembler-a64-inl.h A64: Fix Fmov with signalling NaN literals. 2014-03-13 09:45:02 +00:00
macro-assembler-a64.cc A64: Remove temporary sxtw instructions 2014-03-13 15:53:08 +00:00
macro-assembler-a64.h A64: Implement and use FillFields 2014-03-13 13:18:48 +00:00
OWNERS Add to OWNERS for arm and a64 2014-02-12 13:33:54 +00:00
regexp-macro-assembler-a64.cc A64: Rename k<Y>RegSize to k<Y>RegSizeInBits, and k<Y>RegSizeInBytes to k<Y>RegSize. 2014-03-12 15:18:40 +00:00
regexp-macro-assembler-a64.h A64: Rename k<Y>RegSize to k<Y>RegSizeInBits, and k<Y>RegSizeInBytes to k<Y>RegSize. 2014-03-12 15:18:40 +00:00
simulator-a64.cc A64: Fix a few simulation inaccuracies. 2014-03-14 10:23:55 +00:00
simulator-a64.h A64: Fix a few simulation inaccuracies. 2014-03-14 10:23:55 +00:00
stub-cache-a64.cc Turn StringLengthStub (used by string wrappers only) into a hydrogen stub. 2014-03-13 10:57:07 +00:00
utils-a64.cc Merge experimental/a64 to bleeding_edge. 2014-02-12 09:19:30 +00:00
utils-a64.h A64: Fix a few simulation inaccuracies. 2014-03-14 10:23:55 +00:00