Ignore:
Timestamp:
Jun 27, 2012, 4:16:10 PM (13 years ago)
Author:
[email protected]
Message:

DFG disassembly should be easier to read
https://bugs.webkit.org/show_bug.cgi?id=90106

Reviewed by Mark Hahnenberg.

Did a few things:

  • Options::showDFGDisassembly now shows OSR exit disassembly as well.


  • Phi node dumping doesn't attempt to do line wrapping since it just made the dump harder to read.


  • DFG graph disassembly view shows a few additional node types that turn out to be essential for understanding OSR exits.


Put together, these changes reinforce the philosophy that anything needed for computing
OSR exit is just as important as the machine code itself. Of course, we still don't take
that philosophy to its full extreme - for example Phantom nodes are not dumped. We may
revisit that in the future.

  • assembler/LinkBuffer.cpp:

(JSC::LinkBuffer::finalizeCodeWithDisassembly):

  • assembler/LinkBuffer.h:

(JSC):

  • dfg/DFGDisassembler.cpp:

(JSC::DFG::Disassembler::dump):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dumpBlockHeader):

  • dfg/DFGNode.h:

(JSC::DFG::Node::willHaveCodeGenOrOSR):

  • dfg/DFGOSRExitCompiler.cpp:
  • jit/JIT.cpp:

(JSC::JIT::privateCompile):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGDisassembler.cpp

    r120834 r121382  
    4444    m_graph.m_dominators.computeIfNecessary(m_graph);
    4545   
    46     dataLog("Generated JIT code for DFG CodeBlock %p:\n", m_graph.m_codeBlock);
     46    dataLog("Generated JIT code for DFG CodeBlock %p, instruction count = %u:\n", m_graph.m_codeBlock, m_graph.m_codeBlock->instructionCount());
    4747    dataLog("    Code at [%p, %p):\n", linkBuffer.debugAddress(), static_cast<char*>(linkBuffer.debugAddress()) + linkBuffer.debugSize());
    4848   
     
    6060        NodeIndex lastNodeIndexForDisassembly = block->at(0);
    6161        for (size_t i = 0; i < block->size(); ++i) {
    62             if (!m_graph[block->at(i)].willHaveCodeGen())
     62            if (!m_graph[block->at(i)].willHaveCodeGenOrOSR())
    6363                continue;
    6464            MacroAssembler::Label currentLabel;
Note: See TracChangeset for help on using the changeset viewer.