• 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
..
assembler-mips-inl.h Loading commit data...
assembler-mips.cc Loading commit data...
assembler-mips.h Loading commit data...
builtins-mips.cc Loading commit data...
code-stubs-mips.cc Loading commit data...
code-stubs-mips.h Loading commit data...
codegen-mips.cc Loading commit data...
codegen-mips.h Loading commit data...
constants-mips.cc Loading commit data...
constants-mips.h Loading commit data...
cpu-mips.cc Loading commit data...
debug-mips.cc Loading commit data...
deoptimizer-mips.cc Loading commit data...
disasm-mips.cc Loading commit data...
frames-mips.cc Loading commit data...
frames-mips.h Loading commit data...
full-codegen-mips.cc Loading commit data...
ic-mips.cc Loading commit data...
lithium-codegen-mips.cc Loading commit data...
lithium-codegen-mips.h Loading commit data...
lithium-gap-resolver-mips.cc Loading commit data...
lithium-gap-resolver-mips.h Loading commit data...
lithium-mips.cc Loading commit data...
lithium-mips.h Loading commit data...
macro-assembler-mips.cc Loading commit data...
macro-assembler-mips.h Loading commit data...
regexp-macro-assembler-mips.cc Loading commit data...
regexp-macro-assembler-mips.h Loading commit data...
simulator-mips.cc Loading commit data...
simulator-mips.h Loading commit data...
stub-cache-mips.cc Loading commit data...