Reviewers: fschneider,
Description:
Support fast case for-in in Crankshaft.
Only JSObject enumerables with enum cache (fast case properties, no
interceptors, no enumerable properties on the prototype) are supported.
HLoadKeyedGeneric with keys produced by for-in enumeration are recognized
and
rewritten into direct property load by index. For this enum-cache was
extended
to store property indices in a separate array (see handles.cc).
New hydrogen instructions:
- HForInPrepareMap: checks for-in fast case preconditions and returns map
that
contains enum-cache;
- HForInCacheArray: extracts enum-cache array from the map;
- HCheckMapValue: map check with HValue map instead of immediate;
- HLoadFieldByIndex: load fast property by it's index, positive indexes
denote
in-object properties, negative - out of object properties;
Changed hydrogen instructions:
- HLoadKeyedFastElement: added hole check suppression for loads from
internal
FixedArrays that are knows to have no holes inside.
[email protected]
BUG=
TEST=
Please review this at https://chromiumcodereview.appspot.com/9425045/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/ast.h
M src/full-codegen.h
M src/handles.cc
M src/hydrogen-instructions.h
M src/hydrogen-instructions.cc
M src/hydrogen.h
M src/hydrogen.cc
M src/ia32/full-codegen-ia32.cc
M src/ia32/lithium-codegen-ia32.cc
M src/ia32/lithium-ia32.h
M src/ia32/lithium-ia32.cc
M src/ia32/macro-assembler-ia32.h
M src/ia32/macro-assembler-ia32.cc
M src/objects.h
M src/objects.cc
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev