Go to file
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
benchmarks Update the V8 benchmark suite with the following fixes: 2010-06-28 12:28:37 +00:00
include Remove temporary support for two indexed property query APIs. 2010-08-16 11:53:52 +00:00
samples Add stack traces to mjsunit tests. 2010-05-14 10:00:24 +00:00
src Copy-on-write arrays. 2010-08-16 16:06:46 +00:00
test Make the Integer32 type info only cover the signed 32 bit integers. 2010-08-16 15:08:32 +00:00
tools Initial implementation of oom_dump utility. 2010-08-16 12:36:02 +00:00
.gitignore Add '.cpplint-cache' to ignore lists for SVN and Git. This change also sets 'ignore' property on '.', although this change isn't visible in Rietveld. 2009-12-11 09:01:38 +00:00
AUTHORS Add v8::Value::IsRegExp method. 2010-08-10 09:53:56 +00:00
ChangeLog Prepare push of version 2.3.8 to trunk. Now working on version 2.3.9. 2010-08-16 15:49:02 +00:00
LICENSE Get rid of duplicate LICENSE entry for the Valgrind 2009-09-27 09:33:11 +00:00
SConstruct Allow compiling with strict aliasing enabled on GCC 4.4. 2010-08-11 10:52:34 +00:00