Skip to content
  • fpizlo@apple.com's avatar
    op_is_foo should be optimized · 1d21689e
    fpizlo@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=83666
    
    Reviewed by Gavin Barraclough.
            
    This implements inlining of op_is_undefined, op_is_string, op_is_number,
    and op_is_boolean in LLInt and the baseline JIT. op_is_object and
    op_is_function are not inlined because they are quite a bit more complex.
            
    This also implements all of the op_is_foo opcodes in the DFG, but it does
    not do any type profiling based optimizations, yet.
    
    * assembler/MacroAssemblerARMv7.h:
    (JSC::MacroAssemblerARMv7::compare8):
    (MacroAssemblerARMv7):
    * assembler/MacroAssemblerX86Common.h:
    (JSC::MacroAssemblerX86Common::compare8):
    (MacroAssemblerX86Common):
    * assembler/MacroAssemblerX86_64.h:
    (MacroAssemblerX86_64):
    (JSC::MacroAssemblerX86_64::testPtr):
    * dfg/DFGAbstractState.cpp:
    (JSC::DFG::AbstractState::execute):
    * dfg/DFGByteCodeParser.cpp:
    (JSC::DFG::ByteCodeParser::parseBlock):
    * dfg/DFGCCallHelpers.h:
    (JSC::DFG::CCallHelpers::setupArguments):
    (CCallHelpers):
    * dfg/DFGCSEPhase.cpp:
    (JSC::DFG::CSEPhase::performNodeCSE):
    * dfg/DFGCapabilities.h:
    (JSC::DFG::canCompileOpcode):
    * dfg/DFGNodeType.h:
    (DFG):
    * dfg/DFGOperations.cpp:
    * dfg/DFGOperations.h:
    * dfg/DFGPredictionPropagationPhase.cpp:
    (JSC::DFG::PredictionPropagationPhase::propagate):
    * dfg/DFGSpeculativeJIT.h:
    (JSC::DFG::SpeculativeJIT::callOperation):
    (JSC::DFG::SpeculativeJIT::appendCallSetResult):
    * dfg/DFGSpeculativeJIT32_64.cpp:
    (JSC::DFG::SpeculativeJIT::compile):
    * dfg/DFGSpeculativeJIT64.cpp:
    (JSC::DFG::SpeculativeJIT::compile):
    * jit/JIT.cpp:
    (JSC::JIT::privateCompileMainPass):
    * jit/JIT.h:
    (JIT):
    * jit/JITOpcodes.cpp:
    (JSC::JIT::emit_op_is_undefined):
    (JSC):
    (JSC::JIT::emit_op_is_boolean):
    (JSC::JIT::emit_op_is_number):
    (JSC::JIT::emit_op_is_string):
    * jit/JITOpcodes32_64.cpp:
    (JSC::JIT::emit_op_is_undefined):
    (JSC):
    (JSC::JIT::emit_op_is_boolean):
    (JSC::JIT::emit_op_is_number):
    (JSC::JIT::emit_op_is_string):
    * jit/JITStubs.cpp:
    (JSC):
    * llint/LLIntSlowPaths.cpp:
    (LLInt):
    * llint/LLIntSlowPaths.h:
    (LLInt):
    * llint/LowLevelInterpreter.asm:
    * llint/LowLevelInterpreter32_64.asm:
    * llint/LowLevelInterpreter64.asm:
    * offlineasm/armv7.rb:
    * offlineasm/instructions.rb:
    * offlineasm/x86.rb:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@113930 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    1d21689e