• vegorov@chromium.org's avatar
    MIPS: Support fast case for-in in Crankshaft. · b4a0a4dd
    vegorov@chromium.org authored
    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=
    
    Review URL: https://chromiumcodereview.appspot.com/9453009
    Patch from Daniel Kalmar <kalmard@homejinni.com>.
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10865 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    b4a0a4dd
Name
Last commit
Last update
benchmarks Loading commit data...
build Loading commit data...
include Loading commit data...
preparser Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
tools Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
ChangeLog Loading commit data...
LICENSE Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
Makefile Loading commit data...
SConstruct Loading commit data...