Skip to content
  • fpizlo@apple.com's avatar
    DFG should be able to inline string equality comparisons · ee10e452
    fpizlo@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=114224
    
    Source/JavaScriptCore: 
    
    Reviewed by Oliver Hunt.
            
    Inline 8-bit string equality, go to slow path for 16-bit strings. 2x speed-up for string equality
    comparisons on 8-bit strings. 20-50% speed-up on JSRegress/HashMap tests. 30% speed-up on
    string-fasta. 2% speed-up on SunSpider overall. Some small speed-ups elsewhere.
    
    This is a gnarly change but we have loads of test coverage already between the HashMap tests and
    preexisting DFG string equality tests (which appear to have been designed to test OSR exits, but
    also give us good overall coverage on string equality behavior).
    
    * dfg/DFGFixupPhase.cpp:
    (JSC::DFG::FixupPhase::fixupNode):
    * dfg/DFGOperations.cpp:
    * dfg/DFGOperations.h:
    * dfg/DFGSpeculativeJIT.cpp:
    (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
    (JSC::DFG::SpeculativeJIT::compare):
    (JSC::DFG::SpeculativeJIT::compileStrictEq):
    (JSC::DFG::SpeculativeJIT::compileStringEquality):
    (DFG):
    * dfg/DFGSpeculativeJIT.h:
    (SpeculativeJIT):
    
    LayoutTests: 
    
    Reviewed by Oliver Hunt.
    
    * fast/js/regress/script-tests/string-equality.js: Added.
    (foo):
    * fast/js/regress/string-equality-expected.txt: Added.
    * fast/js/regress/string-equality.html: Added.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@147965 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    ee10e452