void DebugInfo::recordPerfMap(TCRange range, const Func* func, bool exit, bool inPrologue) { if (!m_perfMap) return; if (RuntimeOption::EvalProfileBC) return; std::string name = lookupFunction(func, exit, inPrologue, true); fprintf(m_perfMap, "%lx %x %s\n", reinterpret_cast<uintptr_t>(range.begin()), range.size(), name.c_str()); fflush(m_perfMap); }
void DebugInfo::recordBCInstr(TCRange range, uint32_t op) { static const char* opcodeName[] = { #define O(name, imm, push, pop, flags) \ #name, OPCODES #undef O }; static const char* astubOpcodeName[] = { "OpAstubStart", #define O(name, imm, push, pop, flags) \ #name "-Astub", OPCODES #undef O }; static const char* highOpcodeName[] = { "OpHighStart", #define O(name) \ #name, HIGH_OPCODES #undef O }; if (RuntimeOption::EvalProfileBC) { if (!m_perfMap) return; const char* name; if (op < Op_count) { name = opcodeName[op]; } else if (op < OpAstubCount) { name = astubOpcodeName[op - OpAstubStart]; } else { name = highOpcodeName[op - OpHighStart]; } fprintf(m_perfMap, "%lx %x %s\n", uintptr_t(range.begin()), range.size(), name); } }