Skip to content

Commit

Permalink
Reduce repetitive logging in B3 disassembly
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=258317
rdar://111057998

Reviewed by Yusuke Suzuki.

When logging B3 disassembly, adds a check to see if the last Air
instruction had the same origin. If it did, we skip logging it
again, to reduce clutter when a B3 value lowers to multiple
consecutive Air instructions.

* Source/JavaScriptCore/ftl/FTLState.cpp:
(JSC::FTL::State::dumpDisassembly):
* Source/JavaScriptCore/wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::dumpDisassembly):
* Source/JavaScriptCore/wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::dumpDisassembly):
* Source/JavaScriptCore/wasm/WasmOSREntryPlan.cpp:
(JSC::Wasm::OSREntryPlan::dumpDisassembly):

Canonical link: https://commits.webkit.org/265338@main
  • Loading branch information
ddegazio committed Jun 20, 2023
1 parent 4ced9c8 commit 0449dbc
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 4 deletions.
6 changes: 5 additions & 1 deletion Source/JavaScriptCore/ftl/FTLState.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,8 +149,12 @@ void State::dumpDisassembly(PrintStream& out, const ScopedLambda<void(DFG::Node*
printedValues.add(value);
};

B3::Value* prevOrigin = nullptr;
auto forEachInst = scopedLambda<void(B3::Air::Inst&)>([&] (B3::Air::Inst& inst) {
printB3Value(inst.origin);
if (inst.origin != prevOrigin) {
printB3Value(inst.origin);
prevOrigin = inst.origin;
}
});

disassembler->dump(proc->code(), out, linkBuffer, airPrefix, asmPrefix, forEachInst);
Expand Down
4 changes: 3 additions & 1 deletion Source/JavaScriptCore/wasm/WasmBBQPlan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -124,13 +124,15 @@ bool BBQPlan::dumpDisassembly(CompilationContext& context, LinkBuffer& linkBuffe
const char* airPrefix = "Air ";
const char* asmPrefix = "asm ";

B3::Value* prevOrigin = nullptr;
auto forEachInst = scopedLambda<void(B3::Air::Inst&)>([&] (B3::Air::Inst& inst) {
if (inst.origin && context.procedure->code().shouldPreserveB3Origins()) {
if (inst.origin && inst.origin != prevOrigin && context.procedure->code().shouldPreserveB3Origins()) {
if (String string = inst.origin->compilerConstructionSite(); !string.isNull())
dataLogLn("\033[1;37m", string, "\033[0m");
dataLog(b3Prefix);
inst.origin->deepDump(context.procedure.get(), WTF::dataFile());
dataLogLn();
prevOrigin = inst.origin;
}
});

Expand Down
4 changes: 3 additions & 1 deletion Source/JavaScriptCore/wasm/WasmOMGPlan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,15 @@ void OMGPlan::dumpDisassembly(CompilationContext& context, LinkBuffer& linkBuffe
const char* airPrefix = "Air ";
const char* asmPrefix = "asm ";

B3::Value* prevOrigin = nullptr;
auto forEachInst = scopedLambda<void(B3::Air::Inst&)>([&] (B3::Air::Inst& inst) {
if (inst.origin && context.procedure->code().shouldPreserveB3Origins()) {
if (inst.origin && inst.origin != prevOrigin && context.procedure->code().shouldPreserveB3Origins()) {
if (String string = inst.origin->compilerConstructionSite(); !string.isNull())
dataLogLn("\033[1;37m", string, "\033[0m");
dataLog(b3Prefix);
inst.origin->deepDump(context.procedure.get(), WTF::dataFile());
dataLogLn();
prevOrigin = inst.origin;
}
});

Expand Down
4 changes: 3 additions & 1 deletion Source/JavaScriptCore/wasm/WasmOSREntryPlan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,13 +73,15 @@ void OSREntryPlan::dumpDisassembly(CompilationContext& context, LinkBuffer& link
const char* airPrefix = "Air ";
const char* asmPrefix = "asm ";

B3::Value* prevOrigin = nullptr;
auto forEachInst = scopedLambda<void(B3::Air::Inst&)>([&] (B3::Air::Inst& inst) {
if (inst.origin && context.procedure->code().shouldPreserveB3Origins()) {
if (inst.origin && inst.origin != prevOrigin && context.procedure->code().shouldPreserveB3Origins()) {
if (String string = inst.origin->compilerConstructionSite(); !string.isNull())
dataLogLn("\033[1;37m", string, "\033[0m");
dataLog(b3Prefix);
inst.origin->deepDump(context.procedure.get(), WTF::dataFile());
dataLogLn();
prevOrigin = inst.origin;
}
});

Expand Down

0 comments on commit 0449dbc

Please sign in to comment.