Reviewers: Jakob, Michael Starzinger,
Message:
PTAL.
Michael: please have a look at transition array zapping and trimming (clear
non-live transitions).
Description:
Separating transitions from descriptors.
In this design maps contain descriptor arrays, which in turn can contain
transition arrays. If transitions are needed when no descriptor array is
present, a descriptor array without real descriptors is inserted just so it
can
point at the transition array.
The transition array does not contain details about the field it
transitions to.
In order to weed out transitions to FIELDs from CONSTANT_FUNCTION (what
used to
be MAP_TRANSITION vs CONSTANT_TRANSITION), the transition needs to be
followed
and the details need to be looked up in the target map. CALLBACKS
transitions
are still easy to recognize since the transition targets are stored as an
AccessorPair containing the maps, rather than the maps directly.
Currently AccessorPairs containing a transition and an accessor are shared
between the descriptor array and the transition array. This simplifies
lookup
since we only have to look in one of both arrays. This will change in
subsequent
revisions, when descriptor arrays will become shared between multiple maps,
since transitions cannot be shared.
Please review this at https://chromiumcodereview.appspot.com/10697015/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/SConscript
M src/arm/lithium-codegen-arm.cc
M src/ast.cc
M src/bootstrapper.cc
M src/factory.cc
M src/handles.cc
M src/hydrogen-instructions.cc
M src/hydrogen.cc
M src/ia32/lithium-codegen-ia32.cc
M src/ic.cc
M src/mark-compact.h
M src/mark-compact.cc
M src/mips/lithium-codegen-mips.cc
M src/mirror-debugger.js
M src/objects-debug.cc
M src/objects-inl.h
M src/objects-printer.cc
M src/objects.h
M src/objects.cc
M src/profile-generator.cc
M src/property-details.h
M src/property.h
M src/property.cc
M src/runtime.cc
A src/transitions-inl.h
A src/transitions.h
A src/transitions.cc
M src/v8globals.h
M src/x64/lithium-codegen-x64.cc
M test/cctest/test-debug.cc
M test/cctest/test-heap.cc
M tools/grokdump.py
M tools/gyp/v8.gyp
M tools/linux-tick-processor
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev