Skip to content
  • fpizlo@apple.com's avatar
    DFG should handle polymorphic array modes by eagerly transforming arrays into... · e07b17b1
    fpizlo@apple.com authored
    DFG should handle polymorphic array modes by eagerly transforming arrays into the most general applicable form
    https://bugs.webkit.org/show_bug.cgi?id=99269
    
    Reviewed by Geoffrey Garen.
    
    This kills off a bunch of code for "polymorphic" array modes in the DFG. It should
    also be a performance win for code that uses a lot of array storage arrays.
    
    * dfg/DFGAbstractState.cpp:
    (JSC::DFG::AbstractState::execute):
    * dfg/DFGArrayMode.cpp:
    (JSC::DFG::fromObserved):
    (JSC::DFG::modeAlreadyChecked):
    (JSC::DFG::modeToString):
    * dfg/DFGArrayMode.h:
    (DFG):
    (JSC::DFG::modeUsesButterfly):
    (JSC::DFG::modeIsJSArray):
    (JSC::DFG::mayStoreToTail):
    (JSC::DFG::mayStoreToHole):
    (JSC::DFG::canCSEStorage):
    (JSC::DFG::modeSupportsLength):
    (JSC::DFG::benefitsFromStructureCheck):
    * dfg/DFGFixupPhase.cpp:
    (JSC::DFG::FixupPhase::checkArray):
    (JSC::DFG::FixupPhase::blessArrayOperation):
    * dfg/DFGGraph.h:
    (JSC::DFG::Graph::byValIsPure):
    * dfg/DFGSpeculativeJIT.cpp:
    (JSC::DFG::SpeculativeJIT::jumpSlowForUnwantedArrayMode):
    (JSC::DFG::SpeculativeJIT::checkArray):
    (JSC::DFG::SpeculativeJIT::arrayify):
    (DFG):
    (JSC::DFG::SpeculativeJIT::compileGetArrayLength):
    * dfg/DFGSpeculativeJIT.h:
    (JSC::DFG::SpeculativeJIT::putByValWillNeedExtraRegister):
    (SpeculativeJIT):
    * dfg/DFGSpeculativeJIT32_64.cpp:
    (JSC::DFG::SpeculativeJIT::compile):
    * dfg/DFGSpeculativeJIT64.cpp:
    (JSC::DFG::SpeculativeJIT::compile):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@131289 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    e07b17b1