Skip to content
  • fpizlo@apple.com's avatar
    Remove CachedTranscendentalFunction because caching math functions is an ugly idea · b3336c7b
    fpizlo@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=123574
    
    Source/JavaScriptCore: 
    
    Reviewed by Mark Hahnenberg.
            
    This is performance-neutral because I also make Math.cos/sin intrinsic. This means that
    we gain the "overhead" of actually computing sin and cos but we lose the overhead of
    going through the native call thunks.
            
    Caching transcendental functions is a really ugly idea. It works for SunSpider because
    that benchmark makes very predictable calls into Math.sin. But I don't believe that this
    is representative of any kind of reality, and so for sensible uses of Math.sin/cos all
    that this was doing was adding more call overhead and some hashing overhead.
    
    * JavaScriptCore.xcodeproj/project.pbxproj:
    * dfg/DFGAbstractInterpreterInlines.h:
    (JSC::DFG::::executeEffects):
    * dfg/DFGBackwardsPropagationPhase.cpp:
    (JSC::DFG::BackwardsPropagationPhase::propagate):
    * dfg/DFGByteCodeParser.cpp:
    (JSC::DFG::ByteCodeParser::handleIntrinsic):
    * dfg/DFGCSEPhase.cpp:
    (JSC::DFG::CSEPhase::performNodeCSE):
    * dfg/DFGClobberize.h:
    (JSC::DFG::clobberize):
    * dfg/DFGFixupPhase.cpp:
    (JSC::DFG::FixupPhase::fixupNode):
    * dfg/DFGNodeType.h:
    * dfg/DFGPredictionPropagationPhase.cpp:
    (JSC::DFG::PredictionPropagationPhase::propagate):
    (JSC::DFG::PredictionPropagationPhase::doDoubleVoting):
    * dfg/DFGSafeToExecute.h:
    (JSC::DFG::safeToExecute):
    * dfg/DFGSpeculativeJIT.h:
    (JSC::DFG::SpeculativeJIT::callOperation):
    * dfg/DFGSpeculativeJIT32_64.cpp:
    (JSC::DFG::SpeculativeJIT::compile):
    * dfg/DFGSpeculativeJIT64.cpp:
    (JSC::DFG::SpeculativeJIT::compile):
    * jit/JITOperations.h:
    * runtime/CachedTranscendentalFunction.h: Removed.
    * runtime/DateInstanceCache.h:
    * runtime/Intrinsic.h:
    * runtime/MathObject.cpp:
    (JSC::MathObject::finishCreation):
    (JSC::mathProtoFuncCos):
    (JSC::mathProtoFuncSin):
    * runtime/VM.h:
    
    Tools: 
    
    Reviewed by Mark Hahnenberg.
    
    Make it easier to see that a test doesn't have an -expected file.
    
    * Scripts/run-jsc-stress-tests:
    
    LayoutTests: 
    
    Reviewed by Mark Hahnenberg.
    
    * js/dfg-cos-constant-expected.txt: Added.
    * js/dfg-cos-constant.html: Added.
    * js/dfg-sin-constant-expected.txt: Added.
    * js/dfg-sin-constant.html: Added.
    * js/script-tests/dfg-cos-constant.js: Added.
    (foo):
    * js/script-tests/dfg-sin-constant.js: Added.
    (foo):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158384 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    b3336c7b