Cleanup for debugging IR under gdb

update block range on each IR instruction
add CodeGenerator::print()
Esse commit está contido em:
aravind
2013-04-16 15:27:13 -07:00
commit de Sara Golemon
commit 1fddbbebc9
2 arquivos alterados com 12 adições e 0 exclusões
@@ -5039,6 +5039,8 @@ void CodeGenerator::cgBlock(Block* block, vector<TransBCMapping>* bcMap) {
auto* addr = cgInst(inst);
if (m_state.asmInfo && addr) {
m_state.asmInfo->instRanges[inst] = TcaRange(addr, m_as.code.frontier);
m_state.asmInfo->asmRanges[block] =
TcaRange(m_state.asmInfo->asmRanges[block].start(), m_as.code.frontier);
}
}
}
@@ -5077,6 +5079,9 @@ void cgTrace(Trace* trace, Asm& amain, Asm& astubs, Transl::TranslatorX64* tx64,
last->getOpcode() == Jmp_ && last->getTaken() == nextThisAs;
CodeGenerator cg(trace, *as, astubs, tx64, state);
if (state.asmInfo) {
state.asmInfo->asmRanges[block] = TcaRange(asmStart, as->code.frontier);
}
cg.cgBlock(block, bcMap);
Block* next = block->getNext();
if (next && next != nextThisAs) {
@@ -5094,6 +5099,10 @@ void cgTrace(Trace* trace, Asm& amain, Asm& astubs, Transl::TranslatorX64* tx64,
}
}
void CodeGenerator::print() const {
m_curTrace->print(std::cout, m_state.asmInfo);
}
// select instructions for the trace and its exits
void genCodeForTrace(Trace* trace,
CodeGenerator::Asm& as,
+3
Ver Arquivo
@@ -319,6 +319,9 @@ private:
asm_label(m_as, done);
}
// This is for printing partially-generated traces when debugging
void print() const;
private:
Asm& m_as; // current "main" assembler
Asm& m_astubs; // assembler for stubs and other cold code.