示例#1
0
 void performBlockCFA(BasicBlock* block)
 {
     if (!block)
         return;
     if (!block->cfaShouldRevisit)
         return;
     if (m_verbose)
         dataLog("   Block ", *block, ":\n");
     m_state.beginBasicBlock(block);
     if (m_verbose) {
         dataLog("      head vars: ", block->valuesAtHead, "\n");
         if (m_graph.m_form == SSA)
             dataLog("      head regs: ", mapDump(block->ssa->valuesAtHead), "\n");
     }
     for (unsigned i = 0; i < block->size(); ++i) {
         if (m_verbose) {
             Node* node = block->at(i);
             dataLogF("      %s @%u: ", Graph::opName(node->op()), node->index());
             
             if (!safeToExecute(m_state, m_graph, node))
                 dataLog("(UNSAFE) ");
             
             dataLog(m_state.variables(), " ", m_interpreter);
             
             dataLogF("\n");
         }
         if (!m_interpreter.execute(i)) {
             if (m_verbose)
                 dataLogF("         Expect OSR exit.\n");
             break;
         }
     }
     if (m_verbose) {
         dataLogF("      tail regs: ");
         m_interpreter.dump(WTF::dataFile());
         dataLogF("\n");
     }
     m_changed |= m_state.endBasicBlock();
     
     if (m_verbose) {
         dataLog("      tail vars: ", block->valuesAtTail, "\n");
         if (m_graph.m_form == SSA)
             dataLog("      head regs: ", mapDump(block->ssa->valuesAtTail), "\n");
     }
 }
void AvailabilityMap::dump(PrintStream& out) const
{
    out.print("{locals = ", m_locals, "; heap = ", mapDump(m_heap), "}");
}