v8/src/x64
vitalyr@chromium.org 3202df6c69 Copy-on-write arrays.
Object model changes
----------------------------------------
New fixed_cow_array_map is used for the elements array of a JSObject
to mark it as COW. The JSObject's map and other fields are not
affected. The JSObject's map still has the "fast elements" bit set. It
means we can do only the receiver map check in keyed loads and the
receiver and the elements map checks in keyed stores. So introducing
COW arrays doesn't hurt performance of these operations. But note that
the elements map check is necessary in all mutating operations because
the "has fast elements" bit now means "has fast elements for reading".
EnsureWritableFastElements can be used in runtime functions to perform
the necessary lazy copying.

Generated code changes
----------------------------------------
Generic keyed load is updated to only do the receiver map check (this
could have been done earlier). FastCloneShallowArrayStub now has two
modes: clone elements and use COW elements. AssertFastElements macro
is added to check the elements when necessary. The custom call IC
generators for Array.prototype.{push,pop} are updated to avoid going
to the slow case (and patching the IC) when calling the builtin should
work.

COW enablement
----------------------------------------
Currently we only put shallow and simple literal arrays in the COW
mode. This is done by the parser.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5275 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-16 16:06:46 +00:00
..
assembler-x64-inl.h Generalize virtually dispatched scavenger to virtually dispatched specialized visitors. 2010-08-11 14:30:14 +00:00
assembler-x64.cc Allow compiling with strict aliasing enabled on GCC 4.4. 2010-08-11 10:52:34 +00:00
assembler-x64.h Port faster callbacks invocation to x64. 2010-07-28 09:36:53 +00:00
builtins-x64.cc Change lazy compilation stub to a builtin. 2010-08-11 13:48:58 +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 Copy-on-write arrays. 2010-08-16 16:06:46 +00:00
codegen-x64.h ARM: backend opt for ToBoolean: JIT code generation for ToBool 2010-08-16 07:52:49 +00:00
cpu-x64.cc Allow build-time selection between ia32 and x86_64 in the GYP/Xcode Mac 2010-05-17 15:41:35 +00:00
debug-x64.cc LiveEdit: implement stack manipulations for x64 2010-08-13 13:54:28 +00:00
disasm-x64.cc X64: Fix order of operands on movq(reg, xmm). 2010-07-27 12:02:21 +00:00
frames-x64.cc Allow build-time selection between ia32 and x86_64 in the GYP/Xcode Mac 2010-05-17 15:41:35 +00:00
frames-x64.h X64: Added register holding Smi::FromInt(1). 2010-07-02 14:09:35 +00:00
full-codegen-x64.cc Copy-on-write arrays. 2010-08-16 16:06:46 +00:00
ic-x64.cc Copy-on-write arrays. 2010-08-16 16:06:46 +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
macro-assembler-x64.cc Copy-on-write arrays. 2010-08-16 16:06:46 +00:00
macro-assembler-x64.h Copy-on-write arrays. 2010-08-16 16:06:46 +00:00
regexp-macro-assembler-x64.cc Move serialized scope info from Code object to SharedFunctionInfo. 2010-07-13 13:06:33 +00:00
regexp-macro-assembler-x64.h RegExp: Remove use of 16-bit immediates on ia32/x64. 2010-05-11 07:29:10 +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 Don't pass the "at start" parameter to native RegExp 2010-01-26 11:08:42 +00:00
stub-cache-x64.cc Copy-on-write arrays. 2010-08-16 16:06:46 +00:00
virtual-frame-x64.cc 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
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