Title: [209929] trunk/Source/_javascript_Core
- Revision
- 209929
- Author
- mark....@apple.com
- Date
- 2016-12-16 11:28:58 -0800 (Fri, 16 Dec 2016)
Log Message
Add predecessor info to dumps from JSC_dumpBytecodeLivenessResults=true.
https://bugs.webkit.org/show_bug.cgi?id=165958
Reviewed by Saam Barati.
Also:
1. refactored the code to use a common lambda function to dump FastBitVectors.
2. list successors by their block index instead of pointers.
* bytecode/BytecodeLivenessAnalysis.cpp:
(JSC::BytecodeLivenessAnalysis::dumpResults):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (209928 => 209929)
--- trunk/Source/_javascript_Core/ChangeLog 2016-12-16 19:24:06 UTC (rev 209928)
+++ trunk/Source/_javascript_Core/ChangeLog 2016-12-16 19:28:58 UTC (rev 209929)
@@ -1,3 +1,17 @@
+2016-12-16 Mark Lam <mark....@apple.com>
+
+ Add predecessor info to dumps from JSC_dumpBytecodeLivenessResults=true.
+ https://bugs.webkit.org/show_bug.cgi?id=165958
+
+ Reviewed by Saam Barati.
+
+ Also:
+ 1. refactored the code to use a common lambda function to dump FastBitVectors.
+ 2. list successors by their block index instead of pointers.
+
+ * bytecode/BytecodeLivenessAnalysis.cpp:
+ (JSC::BytecodeLivenessAnalysis::dumpResults):
+
2016-12-16 Saam Barati <sbar...@apple.com>
WebAssembly: WasmB3IRGenerator should throw exceptions instead of crash
Modified: trunk/Source/_javascript_Core/bytecode/BytecodeLivenessAnalysis.cpp (209928 => 209929)
--- trunk/Source/_javascript_Core/bytecode/BytecodeLivenessAnalysis.cpp 2016-12-16 19:24:06 UTC (rev 209928)
+++ trunk/Source/_javascript_Core/bytecode/BytecodeLivenessAnalysis.cpp 2016-12-16 19:28:58 UTC (rev 209929)
@@ -142,14 +142,43 @@
Interpreter* interpreter = codeBlock->vm()->interpreter;
Instruction* instructionsBegin = codeBlock->instructions().begin();
unsigned i = 0;
+
+ unsigned numberOfBlocks = m_graph.size();
+ Vector<FastBitVector> predecessors(numberOfBlocks);
+ for (BytecodeBasicBlock* block : m_graph)
+ predecessors[block->index()].resize(numberOfBlocks);
for (BytecodeBasicBlock* block : m_graph) {
+ for (unsigned j = 0; j < block->successors().size(); j++) {
+ unsigned blockIndex = block->index();
+ unsigned successorIndex = block->successors()[j]->index();
+ predecessors[successorIndex][blockIndex] = true;
+ }
+ }
+
+ auto dumpBitVector = [] (FastBitVector& bits) {
+ for (unsigned j = 0; j < bits.numBits(); j++) {
+ if (bits[j])
+ dataLogF(" %u", j);
+ }
+ };
+
+ for (BytecodeBasicBlock* block : m_graph) {
dataLogF("\nBytecode basic block %u: %p (offset: %u, length: %u)\n", i++, block, block->leaderOffset(), block->totalLength());
- dataLogF("Successors: ");
+
+ dataLogF("Predecessors:");
+ dumpBitVector(predecessors[block->index()]);
+ dataLogF("\n");
+
+ dataLogF("Successors:");
+ FastBitVector successors;
+ successors.resize(numberOfBlocks);
for (unsigned j = 0; j < block->successors().size(); j++) {
BytecodeBasicBlock* successor = block->successors()[j];
- dataLogF("%p ", successor);
+ successors[successor->index()] = true;
}
+ dumpBitVector(successors); // Dump in sorted order.
dataLogF("\n");
+
if (block->isEntryBlock()) {
dataLogF("Entry block %p\n", block);
continue;
@@ -161,12 +190,9 @@
for (unsigned bytecodeOffset = block->leaderOffset(); bytecodeOffset < block->leaderOffset() + block->totalLength();) {
const Instruction* currentInstruction = &instructionsBegin[bytecodeOffset];
- dataLogF("Live variables: ");
+ dataLogF("Live variables:");
FastBitVector liveBefore = getLivenessInfoAtBytecodeOffset(bytecodeOffset);
- for (unsigned j = 0; j < liveBefore.numBits(); j++) {
- if (liveBefore[j])
- dataLogF("%u ", j);
- }
+ dumpBitVector(liveBefore);
dataLogF("\n");
codeBlock->dumpBytecode(WTF::dataFile(), codeBlock->globalObject()->globalExec(), instructionsBegin, currentInstruction);
@@ -175,12 +201,9 @@
bytecodeOffset += opcodeLength;
}
- dataLogF("Live variables: ");
+ dataLogF("Live variables:");
FastBitVector liveAfter = block->out();
- for (unsigned j = 0; j < liveAfter.numBits(); j++) {
- if (liveAfter[j])
- dataLogF("%u ", j);
- }
+ dumpBitVector(liveAfter);
dataLogF("\n");
}
}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes