Reviewers: Vyacheslav Egorov, danno, Paul Lind, kisg,
Description:
MIPS: Support fast case for-in in Crankshaft.
Port r10794 (654fe910).
Original commit message:
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.
BUG=
TEST=
Please review this at http://codereview.chromium.org/9453009/
Affected files:
M src/mips/full-codegen-mips.cc
M src/mips/lithium-codegen-mips.cc
M src/mips/lithium-mips.h
M src/mips/lithium-mips.cc
M src/mips/macro-assembler-mips.h
M src/mips/macro-assembler-mips.cc
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev