v8/src/ia32
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-ia32-inl.h Generalize virtually dispatched scavenger to virtually dispatched specialized visitors. 2010-08-11 14:30:14 +00:00
assembler-ia32.cc IA32: Avoid going into stubs or runtime code for bitops even if the 2010-08-09 13:12:02 +00:00
assembler-ia32.h IA32: Avoid going into stubs or runtime code for bitops even if the 2010-08-09 13:12:02 +00:00
builtins-ia32.cc Change lazy compilation stub to a builtin. 2010-08-11 13:48:58 +00:00
codegen-ia32-inl.h Remove complicated Math.sin and Math.cos optimizations that do not buy 2009-12-21 13:30:10 +00:00
codegen-ia32.cc Copy-on-write arrays. 2010-08-16 16:06:46 +00:00
codegen-ia32.h ARM: backend opt for ToBoolean: JIT code generation for ToBool 2010-08-16 07:52:49 +00:00
cpu-ia32.cc Allow build-time selection between ia32 and x86_64 in the GYP/Xcode Mac 2010-05-17 15:41:35 +00:00
debug-ia32.cc LiveEdit: implement stack manipulations for x64 2010-08-13 13:54:28 +00:00
disasm-ia32.cc Add rcr to disassembler. 2010-08-16 11:18:42 +00:00
frames-ia32.cc Allow build-time selection between ia32 and x86_64 in the GYP/Xcode Mac 2010-05-17 15:41:35 +00:00
frames-ia32.h Reverting 3174. Aka reapplying 3150, 3151 and 3159. Aka api accessor 2009-11-04 08:51:48 +00:00
full-codegen-ia32.cc Copy-on-write arrays. 2010-08-16 16:06:46 +00:00
ic-ia32.cc Copy-on-write arrays. 2010-08-16 16:06:46 +00:00
jump-target-ia32.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-ia32.cc Copy-on-write arrays. 2010-08-16 16:06:46 +00:00
macro-assembler-ia32.h Copy-on-write arrays. 2010-08-16 16:06:46 +00:00
regexp-macro-assembler-ia32.cc Move serialized scope info from Code object to SharedFunctionInfo. 2010-07-13 13:06:33 +00:00
regexp-macro-assembler-ia32.h RegExp: Remove use of 16-bit immediates on ia32/x64. 2010-05-11 07:29:10 +00:00
register-allocator-ia32-inl.h Avoid more static variables in inline functions. 2009-07-17 08:22:07 +00:00
register-allocator-ia32.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-ia32.h Change the register allocator so that it no longer tracks references 2009-05-27 07:53:47 +00:00
simulator-ia32.cc Move backend specific files to separate directories. 2009-04-23 12:06:38 +00:00
simulator-ia32.h Don't pass the "at start" parameter to native RegExp 2010-01-26 11:08:42 +00:00
stub-cache-ia32.cc Copy-on-write arrays. 2010-08-16 16:06:46 +00:00
virtual-frame-ia32.cc Inline in-object property stores on ia32 when in loop and not in top-level code. 2010-07-21 06:59:34 +00:00
virtual-frame-ia32.h Fix fuzzer-found error where left and right were the same register in bitops. 2010-08-10 12:30:14 +00:00