Diff
Modified: tags/Safari-606.1.21/Source/_javascript_Core/ChangeLog (232827 => 232828)
--- tags/Safari-606.1.21/Source/_javascript_Core/ChangeLog 2018-06-14 04:14:50 UTC (rev 232827)
+++ tags/Safari-606.1.21/Source/_javascript_Core/ChangeLog 2018-06-14 04:56:42 UTC (rev 232828)
@@ -1,3 +1,7 @@
+2018-06-13 Kocsen Chung <kocsen_ch...@apple.com>
+
+ Revert r232741. rdar://problem/41108295
+
2018-06-12 Saam Barati <sbar...@apple.com>
Remove JSVirtualMachine shrinkFootprint when clients move to shrinkFootprintWhenIdle
Modified: tags/Safari-606.1.21/Source/_javascript_Core/b3/B3Validate.cpp (232827 => 232828)
--- tags/Safari-606.1.21/Source/_javascript_Core/b3/B3Validate.cpp 2018-06-14 04:14:50 UTC (rev 232827)
+++ tags/Safari-606.1.21/Source/_javascript_Core/b3/B3Validate.cpp 2018-06-14 04:56:42 UTC (rev 232828)
@@ -536,14 +536,6 @@
for (Variable* variable : m_procedure.variables())
VALIDATE(variable->type() != Void, ("At ", *variable));
-
- for (BasicBlock* block : m_procedure) {
- // We expect the predecessor list to be de-duplicated.
- HashSet<BasicBlock*> predecessors;
- for (BasicBlock* predecessor : block->predecessors())
- predecessors.add(predecessor);
- VALIDATE(block->numPredecessors() == predecessors.size(), ("At ", *block));
- }
}
private:
Modified: tags/Safari-606.1.21/Source/_javascript_Core/b3/air/AirValidate.cpp (232827 => 232828)
--- tags/Safari-606.1.21/Source/_javascript_Core/b3/air/AirValidate.cpp 2018-06-14 04:14:50 UTC (rev 232827)
+++ tags/Safari-606.1.21/Source/_javascript_Core/b3/air/AirValidate.cpp 2018-06-14 04:56:42 UTC (rev 232828)
@@ -112,14 +112,6 @@
for (BasicBlock* successor : block->successorBlocks())
VALIDATE(validBlocks.contains(successor), ("In ", *block));
}
-
- for (BasicBlock* block : m_code) {
- // We expect the predecessor list to be de-duplicated.
- HashSet<BasicBlock*> predecessors;
- for (BasicBlock* predecessor : block->predecessors())
- predecessors.add(predecessor);
- VALIDATE(block->numPredecessors() == predecessors.size(), ("At ", *block));
- }
}
private:
Modified: tags/Safari-606.1.21/Source/_javascript_Core/b3/testb3.cpp (232827 => 232828)
--- tags/Safari-606.1.21/Source/_javascript_Core/b3/testb3.cpp 2018-06-14 04:14:50 UTC (rev 232827)
+++ tags/Safari-606.1.21/Source/_javascript_Core/b3/testb3.cpp 2018-06-14 04:56:42 UTC (rev 232828)
@@ -10830,49 +10830,6 @@
CHECK(compileAndRun<int32_t>(proc, numerator, denominator) == chillMod(numerator, denominator));
}
-void testLoopWithMultipleHeaderEdges()
-{
- Procedure proc;
- BasicBlock* root = proc.addBlock();
- BasicBlock* innerHeader = proc.addBlock();
- BasicBlock* innerEnd = proc.addBlock();
- BasicBlock* outerHeader = proc.addBlock();
- BasicBlock* outerEnd = proc.addBlock();
- BasicBlock* end = proc.addBlock();
-
- auto* ne42 = outerHeader->appendNew<Value>(
- proc, NotEqual, Origin(),
- root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0),
- root->appendNew<ConstPtrValue>(proc, Origin(), 42));
- outerHeader->appendNewControlValue(
- proc, Branch, Origin(),
- ne42,
- FrequentedBlock(innerHeader), FrequentedBlock(outerEnd));
- outerEnd->appendNewControlValue(
- proc, Branch, Origin(),
- root->appendNew<Value>(
- proc, Trunc, Origin(),
- root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0)),
- FrequentedBlock(outerHeader), FrequentedBlock(end));
-
- SwitchValue* switchValue = innerHeader->appendNew<SwitchValue>(
- proc, Origin(), root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR1));
- switchValue->setFallThrough(FrequentedBlock(innerEnd));
- for (unsigned i = 0; i < 20; ++i) {
- switchValue->appendCase(SwitchCase(i, FrequentedBlock(innerHeader)));
- }
-
- root->appendNewControlValue(proc, Jump, Origin(), FrequentedBlock(outerHeader));
-
- innerEnd->appendNewControlValue(proc, Jump, Origin(), FrequentedBlock(outerEnd));
- end->appendNewControlValue(
- proc, Return, Origin(),
- end->appendNew<Const32Value>(proc, Origin(), 5678));
-
- auto code = compileProc(proc); // This shouldn't crash in computing NaturalLoops.
- CHECK(invoke<int32_t>(*code, 0, 12345) == 5678);
-}
-
void testSwitch(unsigned degree, unsigned gap = 1)
{
Procedure proc;
@@ -17846,8 +17803,6 @@
RUN(testShuffleDoesntTrashCalleeSaves());
RUN(testDemotePatchpointTerminal());
- RUN(testLoopWithMultipleHeaderEdges());
-
if (isX86()) {
RUN(testBranchBitAndImmFusion(Identity, Int64, 1, Air::BranchTest32, Air::Arg::Tmp));
RUN(testBranchBitAndImmFusion(Identity, Int64, 0xff, Air::BranchTest32, Air::Arg::Tmp));
Modified: tags/Safari-606.1.21/Source/_javascript_Core/dfg/DFGGraph.cpp (232827 => 232828)
--- tags/Safari-606.1.21/Source/_javascript_Core/dfg/DFGGraph.cpp 2018-06-14 04:14:50 UTC (rev 232827)
+++ tags/Safari-606.1.21/Source/_javascript_Core/dfg/DFGGraph.cpp 2018-06-14 04:56:42 UTC (rev 232828)
@@ -656,8 +656,7 @@
worklist.append(successor);
}
- if (!successor->predecessors.contains(block))
- successor->predecessors.append(block);
+ successor->predecessors.append(block);
}
void Graph::determineReachability()
Modified: tags/Safari-606.1.21/Source/_javascript_Core/dfg/DFGValidate.cpp (232827 => 232828)
--- tags/Safari-606.1.21/Source/_javascript_Core/dfg/DFGValidate.cpp 2018-06-14 04:14:50 UTC (rev 232827)
+++ tags/Safari-606.1.21/Source/_javascript_Core/dfg/DFGValidate.cpp 2018-06-14 04:56:42 UTC (rev 232828)
@@ -415,14 +415,6 @@
});
}
}
-
- for (BasicBlock* block : m_graph.blocksInNaturalOrder()) {
- // We expect the predecessor list to be de-duplicated.
- HashSet<BasicBlock*> predecessors;
- for (BasicBlock* predecessor : block->predecessors)
- predecessors.add(predecessor);
- VALIDATE((block), predecessors.size() == block->predecessors.size());
- }
}
private:
Modified: tags/Safari-606.1.21/Source/WTF/ChangeLog (232827 => 232828)
--- tags/Safari-606.1.21/Source/WTF/ChangeLog 2018-06-14 04:14:50 UTC (rev 232827)
+++ tags/Safari-606.1.21/Source/WTF/ChangeLog 2018-06-14 04:56:42 UTC (rev 232828)
@@ -1,3 +1,7 @@
+2018-06-13 Kocsen Chung <kocsen_ch...@apple.com>
+
+ Revert r232741. rdar://problem/41108295
+
2018-06-11 Saam Barati <sbar...@apple.com>
The NaturalLoops algorithm only works when the list of blocks in a loop is de-duplicated
Modified: tags/Safari-606.1.21/Source/WTF/wtf/NaturalLoops.h (232827 => 232828)
--- tags/Safari-606.1.21/Source/WTF/wtf/NaturalLoops.h 2018-06-14 04:14:50 UTC (rev 232827)
+++ tags/Safari-606.1.21/Source/WTF/wtf/NaturalLoops.h 2018-06-14 04:56:42 UTC (rev 232828)
@@ -94,11 +94,7 @@
template<typename>
friend class NaturalLoops;
- void addBlock(typename Graph::Node block)
- {
- ASSERT(!m_body.contains(block)); // The NaturalLoops algorithm relies on blocks being unique in this vector.
- m_body.append(block);
- }
+ void addBlock(typename Graph::Node block) { m_body.append(block); }
Graph* m_graph;
typename Graph::Node m_header;
@@ -134,20 +130,18 @@
m_loops.shrink(0);
for (unsigned blockIndex = graph.numNodes(); blockIndex--;) {
- typename Graph::Node header = graph.node(blockIndex);
- if (!header)
+ typename Graph::Node block = graph.node(blockIndex);
+ if (!block)
continue;
- for (unsigned i = graph.predecessors(header).size(); i--;) {
- typename Graph::Node footer = graph.predecessors(header)[i];
- if (!dominators.dominates(header, footer))
+ for (unsigned i = graph.successors(block).size(); i--;) {
+ typename Graph::Node successor = graph.successors(block)[i];
+ if (!dominators.dominates(successor, block))
continue;
- // At this point, we've proven 'header' is actually a loop header and
- // that 'footer' is a loop footer.
bool found = false;
for (unsigned j = m_loops.size(); j--;) {
- if (m_loops[j].header() == header) {
- m_loops[j].addBlock(footer);
+ if (m_loops[j].header() == successor) {
+ m_loops[j].addBlock(block);
found = true;
break;
}
@@ -154,8 +148,8 @@
}
if (found)
continue;
- NaturalLoop<Graph> loop(graph, header, m_loops.size());
- loop.addBlock(footer);
+ NaturalLoop<Graph> loop(graph, successor, m_loops.size());
+ loop.addBlock(block);
m_loops.append(loop);
}
}