DescriptionMIPS: 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=
Committed: https://code.google.com/p/v8/source/detail?r=10865
Patch Set 1 #Patch Set 2 : rebased on r10833. #Patch Set 3 : rebased on r10858. #
Messages
Total messages: 5 (0 generated)
|