Go to file
adamk@chromium.org bf42ded40d This patch implements optimized objectInfo structure which manages the set of observers associated with an object and the changeRecord types which they accept.
Observation in the normal case (Object.observe, default accept types, one observer) now allocates fewer objects and unobservation no longer needs to scan and splice an InternalArray -- making the combined speed of observe/unobserve about 200% faster.

This patch implements the following optimizations:

-objectInfo is initially created without any connected objects or arrays. The first observer is referenced directly by objectInfo, and when a second observer is added, changeObservers converts to a mapping of callbackPriority->observer, which allows for constant time registration/de-registration.

-observer.accept and objectInfo.performing are conceptually the same data-structure. This is now directly represented as an abstract "TypeMap" which can later be optimized to be a smi in common cases, (e.g:   https://codereview.chromium.org/19269007/).

-objectInfo observers are only represented by an object with an accept typeMap if the set of accept types is non-default

R=rossberg@chromium.org

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

Patch from Rafael Weinstein <rafaelw@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16343 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-26 21:37:21 +00:00
benchmarks More fixes for V8 benchmark version 7. 2012-03-15 17:13:50 +00:00
build Avoid -O3 in nacl as it does not play well with -W. 2013-08-20 08:12:19 +00:00
include Add RemovePrototype to FunctionTemplate 2013-08-26 17:40:03 +00:00
preparser Factor out toolset definitions in a separate gypi file 2013-07-10 11:15:16 +00:00
samples Only depend on icudata on windows. 2013-07-11 11:01:00 +00:00
src This patch implements optimized objectInfo structure which manages the set of observers associated with an object and the changeRecord types which they accept. 2013-08-26 21:37:21 +00:00
test This patch implements optimized objectInfo structure which manages the set of observers associated with an object and the changeRecord types which they accept. 2013-08-26 21:37:21 +00:00
tools Revert "Snapshot i18n Javascript code" and "Fix mjsunit/debug-script after r16298". 2013-08-26 17:00:58 +00:00
.gitignore Add "benchmarks" test suite 2013-08-05 14:54:09 +00:00
AUTHORS Fix a crash when generating forward jumps to labels at very high assembly offsets 2013-08-01 08:13:08 +00:00
ChangeLog Prepare push to trunk. Now working on version 3.21.5. 2013-08-26 17:11:27 +00:00
DEPS Update V8's dependencies: 2013-07-31 13:41:12 +00:00
LICENSE Update LICENSE file 2012-01-03 16:38:42 +00:00
LICENSE.strongtalk Add LICENSE.v8, LICENSE.strongtalk and LICENSE.valgrind to the v8 2011-02-03 07:10:06 +00:00
LICENSE.v8 Add LICENSE.v8, LICENSE.strongtalk and LICENSE.valgrind to the v8 2011-02-03 07:10:06 +00:00
LICENSE.valgrind Add LICENSE.v8, LICENSE.strongtalk and LICENSE.valgrind to the v8 2011-02-03 07:10:06 +00:00
Makefile Generate grokdump constants with 'make grokdump' now. 2013-08-02 09:02:02 +00:00
Makefile.android Enable building for android on x86_64 machines. 2013-07-17 08:37:48 +00:00
Makefile.nacl Fix gyp_v8 to work with use_system_icu=1 2013-07-15 15:41:21 +00:00
OWNERS Add myself to OWNERS. 2013-06-27 11:37:47 +00:00
PRESUBMIT.py Add gate keeper logic to presubmit commit check. 2013-07-31 09:16:31 +00:00