LinkBuffer::CodeRef LinkBuffer::finalizeCodeWithDisassembly(const char* format, ...) { CodeRef result = finalizeCodeWithoutDisassembly(); if (m_alreadyDisassembled) return result; StringPrintStream out; out.printf("Generated JIT code for "); va_list argList; va_start(argList, format); out.vprintf(format, argList); va_end(argList); out.printf(":\n"); out.printf(" Code at [%p, %p):\n", result.code().executableAddress(), static_cast<char*>(result.code().executableAddress()) + result.size()); CString header = out.toCString(); if (Options::asyncDisassembly()) { disassembleAsynchronously(header, result, m_size, " "); return result; } dataLog(header); disassemble(result.code(), m_size, " ", WTF::dataFile()); return result; }
LinkBuffer::CodeRef LinkBuffer::finalizeCodeWithDisassembly(const char* format, ...) { ASSERT(Options::showDisassembly() || Options::showDFGDisassembly()); CodeRef result = finalizeCodeWithoutDisassembly(); dataLogF("Generated JIT code for "); va_list argList; va_start(argList, format); WTF::dataLogFV(format, argList); va_end(argList); dataLogF(":\n"); dataLogF(" Code at [%p, %p):\n", result.code().executableAddress(), static_cast<char*>(result.code().executableAddress()) + result.size()); disassemble(result.code(), m_size, " ", WTF::dataFile()); return result; }
LinkBuffer::CodeRef LinkBuffer::finalizeCodeWithDisassembly(const char* format, ...) { CodeRef result = finalizeCodeWithoutDisassembly(); #if ENABLE(DISASSEMBLER) dataLogF("Generated JIT code for "); va_list argList; va_start(argList, format); WTF::dataLogFV(format, argList); va_end(argList); dataLogF(":\n"); dataLogF(" Code at [%p, %p):\n", result.code().executableAddress(), static_cast<char*>(result.code().executableAddress()) + result.size()); disassemble(result.code(), m_size, " ", WTF::dataFile()); #else UNUSED_PARAM(format); #endif // ENABLE(DISASSEMBLER) return result; }