Skip to content
  • fpizlo@apple.com's avatar
    JSC profiler should not count executions of op_call_put_result because doing so changes DFG codegen · bb1c9483
    fpizlo@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=104102
    
    Reviewed by Oliver Hunt.
    
    Source/JavaScriptCore: 
    
    This removes op_call_put_result from profiling, since profiling it has an effect on
    codegen. This fix enables all of SunSpider, V8, and Kraken to be profiled with the
    new profiler.
            
    To make this all fit together, the profiler now also reports in its output the exact
    bytecode opcode name for each instruction (in addition to the stringified dump of that
    bytecode), so that tools that grok the output can take note of op_call_put_result and
    work around the fact that it has no counts.
    
    * dfg/DFGByteCodeParser.cpp:
    (JSC::DFG::ByteCodeParser::parseBlock):
    (JSC::DFG::ByteCodeParser::parseCodeBlock):
    * dfg/DFGDriver.cpp:
    (JSC::DFG::compile):
    * jit/JIT.cpp:
    (JSC::JIT::privateCompileMainPass):
    * profiler/ProfilerBytecode.cpp:
    (JSC::Profiler::Bytecode::toJS):
    * profiler/ProfilerBytecode.h:
    (JSC::Profiler::Bytecode::Bytecode):
    (JSC::Profiler::Bytecode::opcodeID):
    (Bytecode):
    * profiler/ProfilerDatabase.cpp:
    (JSC::Profiler::Database::ensureBytecodesFor):
    * runtime/CommonIdentifiers.h:
    
    Tools: 
    
    Modify the profiler to not output counts for op_call_put_result, since there
    won't be any. Also fix a few weird bugs, like providing better error reporting
    when you type something incorrectly and not reporting counts for slow paths
    in the old JIT since those counts are actually not what you think they are
    (we don't actually count slow path executions separately).
    
    * Scripts/display-profiler-output:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@136720 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    bb1c9483