Vector<JITDisassembler::DumpedOp> JITDisassembler::dumpVectorForInstructions(LinkBuffer& linkBuffer, const char* prefix, Vector<MacroAssembler::Label>& labels, MacroAssembler::Label endLabel) { StringPrintStream out; Vector<DumpedOp> result; for (unsigned i = 0; i < labels.size();) { if (!labels[i].isSet()) { i++; continue; } out.reset(); result.append(DumpedOp()); result.last().index = i; out.print(prefix); m_codeBlock->dumpBytecode(out, i); for (unsigned nextIndex = i + 1; ; nextIndex++) { if (nextIndex >= labels.size()) { dumpDisassembly(out, linkBuffer, labels[i], endLabel); result.last().disassembly = out.toCString(); return result; } if (labels[nextIndex].isSet()) { dumpDisassembly(out, linkBuffer, labels[i], labels[nextIndex]); result.last().disassembly = out.toCString(); i = nextIndex; break; } } } return result; }
void Disassembler::append(Vector<Disassembler::DumpedOp>& result, StringPrintStream& out, CodeOrigin& previousOrigin) { result.append(DumpedOp(previousOrigin, out.toCString())); previousOrigin = CodeOrigin(); out.reset(); }