v8/src/x64
kmillikin@chromium.org 437914da90 Change the algorithm and generated code for parallel moves on IA32.
Instead of spilling and then immediately restoring eax to resolve
memory to memory moves, the gap move resolver now tracks registers
that are known to be free and uses one if available.  If not it spills
but restores lazily when the spilled value is needed or at the end of
the algorithm.

Instead of using esi for resolving cycles and assuming it is free to
overwrite because it can be rematerialized, the gap move resolver now
resolves cycles using swaps, possibly using a free register as above.

The algorithm is also changed to be simpler: a recursive depth-first
traversal of the move dependence graph.  It uses a list of moves to be
performed (because it mutates the moves themselves), but does not use
any auxiliary structure other than the control stack.  It does not
build up a separate list of scheduled moves to be interpreted by the
code generate, but emits code on the fly.

Review URL: http://codereview.chromium.org/6263005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-17 11:25:36 +00:00
..
assembler-x64-inl.h Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
assembler-x64.cc X64 Crankshaft: Ported lots of boilerplate code. 2011-01-13 10:04:02 +00:00
assembler-x64.h X64: Fix allocated register name table. 2011-01-14 14:03:05 +00:00
builtins-x64.cc Use the macro assembler Set instead of explicit xor for clearing registers. 2011-01-03 11:39:22 +00:00
code-stubs-x64.cc Add partially-implemented TypeRecordingBinaryOpStub to x64 platform. 2011-01-05 12:28:47 +00:00
code-stubs-x64.h Add partially-implemented TypeRecordingBinaryOpStub to x64 platform. 2011-01-05 12:28:47 +00:00
codegen-x64-inl.h Remove complicated Math.sin and Math.cos optimizations that do not buy 2009-12-21 13:30:10 +00:00
codegen-x64.cc Use a separate marker value to allocate the arguments object on deoptimzation. 2011-01-06 15:53:56 +00:00
codegen-x64.h Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
cpu-x64.cc Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
debug-x64.cc Cleanup of x64 code. Rearrange functions in ic-x64.cc to match order in ic-ia32.cc. Remove unused declarations, and move a constant to assembler-x64.h. 2011-01-04 09:50:35 +00:00
deoptimizer-x64.cc Fix the xcode build by not including x64 specific code when generating 2011-01-13 14:10:26 +00:00
disasm-x64.cc Add generated code to calculate Math.log and to search Transcendental cache for logs. Implemented on all platforms. 2010-12-02 11:20:44 +00:00
frames-x64.cc Enhance SafeStackFrameIterator to avoid triggering assertions in debug mode. 2010-09-16 08:23:34 +00:00
frames-x64.h Update V8 to version 3.0 (re-land r5920). 2010-12-07 11:31:57 +00:00
full-codegen-x64.cc Small change to stack checks in unoptimized code. 2011-01-06 13:48:12 +00:00
ic-x64.cc Cleanup of x64 code. Rearrange functions in ic-x64.cc to match order in ic-ia32.cc. Remove unused declarations, and move a constant to assembler-x64.h. 2011-01-04 09:50:35 +00:00
jump-target-x64.cc Allow build-time selection between ia32 and x86_64 in the GYP/Xcode Mac 2010-05-17 15:41:35 +00:00
lithium-codegen-x64.cc Change the algorithm and generated code for parallel moves on IA32. 2011-01-17 11:25:36 +00:00
lithium-codegen-x64.h Make closures optimizable by Crankshaft compiler. 2011-01-17 08:11:03 +00:00
lithium-x64.cc Make closures optimizable by Crankshaft compiler. 2011-01-17 08:11:03 +00:00
lithium-x64.h Make closures optimizable by Crankshaft compiler. 2011-01-17 08:11:03 +00:00
macro-assembler-x64.cc Add implementations of some more x64 lithium methods. 2011-01-14 10:27:25 +00:00
macro-assembler-x64.h Use the macro assembler Set instead of explicit xor for clearing registers. 2011-01-03 11:39:22 +00:00
regexp-macro-assembler-x64.cc Use the macro assembler Set instead of explicit xor for clearing registers. 2011-01-03 11:39:22 +00:00
regexp-macro-assembler-x64.h Limit end-anchored regexps to testing end of string where possible. 2010-10-19 14:00:01 +00:00
register-allocator-x64-inl.h X64: Added register holding Smi::FromInt(1). 2010-07-02 14:09:35 +00:00
register-allocator-x64.cc Allow build-time selection between ia32 and x86_64 in the GYP/Xcode Mac 2010-05-17 15:41:35 +00:00
register-allocator-x64.h X64: Added register holding Smi::FromInt(1). 2010-07-02 14:09:35 +00:00
simulator-x64.cc Added empty files in the x64 directory. 2009-05-04 07:16:10 +00:00
simulator-x64.h Clean up definitions in simulator. 2010-10-25 16:40:41 +00:00
stub-cache-x64.cc Reorder the functions in stub-cache-x64.cc, so they are in the same order as in stub-cache-ia32.cc. 2011-01-04 09:02:53 +00:00
virtual-frame-x64.cc Move ComputeCallInitialize from the codegen.cc to stub-cache.cc. 2010-11-11 10:33:51 +00:00
virtual-frame-x64.h Remove VirtualFrame::CallStoreIC(void) and CallCommonStoreIC from virtual-frame-x64.cc. Make implementations of CallStoreIC(key, is_contextual) and CallKeyedStoreIC() the same on x64 and ia32. Make ia32 and x64 implementations more alike by moving some functions and changing comments. 2010-07-21 15:16:01 +00:00