static void DumpLIR(GenericPrinter& out, LNode* ins) { out.printf(" "); out.printf("%d ", ins->id()); ins->dump(out); out.printf(" <|@\n"); }
void LNode::printOperands(GenericPrinter& out) { for (size_t i = 0, e = numOperands(); i < e; i++) { out.printf(" (%s)", getOperand(i)->toString()); if (i != numOperands() - 1) out.printf(","); } }
static void DumpDefinition(GenericPrinter& out, MDefinition* def) { out.printf(" "); out.printf("%u %u ", def->id(), unsigned(def->useCount())); def->printName(out); out.printf(" "); def->printOpcode(out); out.printf(" <|@\n"); }
void MBasicBlock::dumpStack(GenericPrinter& out) { #ifdef DEBUG out.printf(" %-3s %-16s %-6s %-10s\n", "#", "name", "copyOf", "first/next"); out.printf("-------------------------------------------\n"); for (uint32_t i = 0; i < stackPosition_; i++) { out.printf(" %-3d", i); out.printf(" %-16p\n", (void*)slots_[i]); } #endif }
void LBlock::dump(GenericPrinter& out) { out.printf("block%u:\n", mir()->id()); for (size_t i = 0; i < numPhis(); ++i) { getPhi(i)->dump(out); out.printf("\n"); } for (LInstructionIterator iter = begin(); iter != end(); iter++) { iter->dump(out); out.printf("\n"); } }
void LMoveGroup::printOperands(GenericPrinter& out) { for (size_t i = 0; i < numMoves(); i++) { const LMove& move = getMove(i); out.printf(" [%s -> %s", move.from().toString().get(), move.to().toString().get()); #ifdef DEBUG out.printf(", %s", TypeChars[move.type()]); #endif out.printf("]"); if (i != numMoves() - 1) out.printf(","); } }
void LMoveGroup::printOperands(GenericPrinter& out) { for (size_t i = 0; i < numMoves(); i++) { const LMove& move = getMove(i); // Use two printfs, as LAllocation::toString is not reentrant. out.printf(" [%s", move.from().toString()); out.printf(" -> %s", move.to().toString()); #ifdef DEBUG out.printf(", %s", TypeChars[move.type()]); #endif out.printf("]"); if (i != numMoves() - 1) out.printf(","); } }
void LIRGraph::dump(GenericPrinter& out) { for (size_t i = 0; i < numBlocks(); i++) { getBlock(i)->dump(out); out.printf("\n"); } }
static void QuoteString(GenericPrinter& out, const CharT* s, size_t length) { const CharT* end = s + length; for (const CharT* t = s; t < end; s = ++t) { // This quote implementation is probably correct, // but uses \u even when not strictly necessary. char16_t c = *t; if (c == '"' || c == '\\') { out.printf("\\"); out.printf("%c", char(c)); } else if (c < ' ' || c >= 127 || !isprint(c)) { out.printf("\\u%04x", c); } else { out.printf("%c", char(c)); } } }
void MIRGraph::dump(GenericPrinter& out) { #ifdef DEBUG for (MBasicBlockIterator iter(begin()); iter != end(); iter++) { iter->dump(out); out.printf("\n"); } #endif }
void LNode::printName(GenericPrinter& out, Opcode op) { static const char * const names[] = { #define LIROP(x) #x, LIR_OPCODE_LIST(LIROP) #undef LIROP }; const char* name = names[op]; size_t len = strlen(name); for (size_t i = 0; i < len; i++) out.printf("%c", tolower(name[i])); }
void MBasicBlock::dump(GenericPrinter& out) { #ifdef DEBUG out.printf("block%u:%s%s%s\n", id(), isLoopHeader() ? " (loop header)" : "", unreachable() ? " (unreachable)" : "", isMarked() ? " (marked)" : ""); if (MResumePoint* resume = entryResumePoint()) resume->dump(out); for (MPhiIterator iter(phisBegin()); iter != phisEnd(); iter++) iter->dump(out); for (MInstructionIterator iter(begin()); iter != end(); iter++) iter->dump(out); #endif }
void C1Spewer::spewRanges(GenericPrinter& out, BacktrackingAllocator* regalloc, LNode* ins) { for (size_t k = 0; k < ins->numDefs(); k++) { uint32_t id = ins->getDef(k)->virtualRegister(); VirtualRegister* vreg = ®alloc->vregs[id]; for (LiveRange::RegisterLinkIterator iter = vreg->rangesBegin(); iter; iter++) { LiveRange* range = LiveRange::get(*iter); out.printf("%d object \"", id); out.printf("%s", range->bundle()->allocation().toString().get()); out.printf("\" %d -1", id); out.printf(" [%u, %u[", range->from().bits(), range->to().bits()); for (UsePositionIterator usePos(range->usesBegin()); usePos; usePos++) out.printf(" %u M", usePos->pos.bits()); out.printf(" \"\"\n"); } } }
void LCovSource::exportInto(GenericPrinter& out) const { // Only write if everything got recorded. if (!hasFilename_ || !hasTopLevelScript_) return; outSF_.exportInto(out); outFN_.exportInto(out); outFNDA_.exportInto(out); out.printf("FNF:%d\n", numFunctionsFound_); out.printf("FNH:%d\n", numFunctionsHit_); outBRDA_.exportInto(out); out.printf("BRF:%d\n", numBranchesFound_); out.printf("BRH:%d\n", numBranchesHit_); outDA_.exportInto(out); out.printf("LF:%d\n", numLinesInstrumented_); out.printf("LH:%d\n", numLinesHit_); out.put("end_of_record\n"); }
void LNode::dump(GenericPrinter& out) { if (numDefs() != 0) { out.printf("{"); for (size_t i = 0; i < numDefs(); i++) { out.printf("%s", getDef(i)->toString()); if (i != numDefs() - 1) out.printf(", "); } out.printf("} <- "); } printName(out); printOperands(out); if (numTemps()) { out.printf(" t=("); for (size_t i = 0; i < numTemps(); i++) { out.printf("%s", getTemp(i)->toString()); if (i != numTemps() - 1) out.printf(", "); } out.printf(")"); } if (numSuccessors()) { out.printf(" s=("); for (size_t i = 0; i < numSuccessors(); i++) { out.printf("block%u", getSuccessor(i)->id()); if (i != numSuccessors() - 1) out.printf(", "); } out.printf(")"); } }
void C1Spewer::spewPass(GenericPrinter& out, MBasicBlock* block) { out.printf(" begin_block\n"); out.printf(" name \"B%d\"\n", block->id()); out.printf(" from_bci -1\n"); out.printf(" to_bci -1\n"); out.printf(" predecessors"); for (uint32_t i = 0; i < block->numPredecessors(); i++) { MBasicBlock* pred = block->getPredecessor(i); out.printf(" \"B%d\"", pred->id()); } out.printf("\n"); out.printf(" successors"); if (block->hasLastIns()) { for (uint32_t i = 0; i < block->numSuccessors(); i++) { MBasicBlock* successor = block->getSuccessor(i); out.printf(" \"B%d\"", successor->id()); } } out.printf("\n"); out.printf(" xhandlers\n"); out.printf(" flags\n"); if (block->lir() && block->lir()->begin() != block->lir()->end()) { out.printf(" first_lir_id %d\n", block->lir()->firstId()); out.printf(" last_lir_id %d\n", block->lir()->lastId()); } out.printf(" begin_states\n"); if (block->entryResumePoint()) { out.printf(" begin_locals\n"); out.printf(" size %d\n", (int)block->numEntrySlots()); out.printf(" method \"None\"\n"); for (uint32_t i = 0; i < block->numEntrySlots(); i++) { MDefinition* ins = block->getEntrySlot(i); out.printf(" "); out.printf("%d ", i); if (ins->isUnused()) out.printf("unused"); else ins->printName(out); out.printf("\n"); } out.printf(" end_locals\n"); } out.printf(" end_states\n"); out.printf(" begin_HIR\n"); for (MPhiIterator phi(block->phisBegin()); phi != block->phisEnd(); phi++) DumpDefinition(out, *phi); for (MInstructionIterator i(block->begin()); i != block->end(); i++) DumpDefinition(out, *i); out.printf(" end_HIR\n"); if (block->lir()) { out.printf(" begin_LIR\n"); for (size_t i = 0; i < block->lir()->numPhis(); i++) DumpLIR(out, block->lir()->getPhi(i)); for (LInstructionIterator i(block->lir()->begin()); i != block->lir()->end(); i++) DumpLIR(out, *i); out.printf(" end_LIR\n"); } out.printf(" end_block\n"); }