Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (203922 => 203923)
--- trunk/Source/_javascript_Core/ChangeLog 2016-07-29 22:01:03 UTC (rev 203922)
+++ trunk/Source/_javascript_Core/ChangeLog 2016-07-29 22:04:02 UTC (rev 203923)
@@ -1,3 +1,36 @@
+2016-07-29 Michael Saboff <[email protected]>
+
+ Refactor DFG::Node::hasLocal() to accessesStack()
+ https://bugs.webkit.org/show_bug.cgi?id=160357
+
+ Reviewed by Filip Pizlo.
+
+ Refactoring in preparation for using register arguments for _javascript_ calls.
+
+ Renamed Node::hasLocal() to Node::accessesStack() and changed all uses accordingly.
+ Also changed uses of Node::hasVariableAccessData() to accessesStack() where that
+ use guards stack operation logic associated with the Node's VariableAccessData.
+
+ The hasVariableAccessData() check now implies no more than the node has a
+ VariableAccessData and nothing about its use of that data to coordinate stack
+ accesses.
+
+ * dfg/DFGGraph.cpp:
+ (JSC::DFG::Graph::dump):
+ (JSC::DFG::Graph::methodOfGettingAValueProfileFor):
+ * dfg/DFGLiveCatchVariablePreservationPhase.cpp:
+ (JSC::DFG::LiveCatchVariablePreservationPhase::handleBlock):
+ * dfg/DFGMaximalFlushInsertionPhase.cpp:
+ (JSC::DFG::MaximalFlushInsertionPhase::treatRegularBlock):
+ (JSC::DFG::MaximalFlushInsertionPhase::treatRootBlock):
+ * dfg/DFGNode.h:
+ (JSC::DFG::Node::containsMovHint):
+ (JSC::DFG::Node::accessesStack):
+ (JSC::DFG::Node::hasLocal): Deleted.
+ * dfg/DFGPredictionInjectionPhase.cpp:
+ (JSC::DFG::PredictionInjectionPhase::run):
+ * dfg/DFGValidate.cpp:
+
2016-07-29 Benjamin Poulain <[email protected]>
[JSC] Use the same data structures for DFG and Air Liveness Analysis
Modified: trunk/Source/_javascript_Core/dfg/DFGGraph.cpp (203922 => 203923)
--- trunk/Source/_javascript_Core/dfg/DFGGraph.cpp 2016-07-29 22:01:03 UTC (rev 203922)
+++ trunk/Source/_javascript_Core/dfg/DFGGraph.cpp 2016-07-29 22:04:02 UTC (rev 203923)
@@ -273,7 +273,7 @@
for (unsigned i = 0; i < data.variants.size(); ++i)
out.print(comma, inContext(data.variants[i], context));
}
- ASSERT(node->hasVariableAccessData(*this) == node->hasLocal(*this));
+ ASSERT(node->hasVariableAccessData(*this) == node->accessesStack(*this));
if (node->hasVariableAccessData(*this)) {
VariableAccessData* variableAccessData = node->tryGetVariableAccessData();
if (variableAccessData) {
@@ -370,7 +370,7 @@
out.print(comma, "WasHoisted");
out.print(")");
- if (node->hasVariableAccessData(*this) && node->tryGetVariableAccessData())
+ if (node->accessesStack(*this) && node->tryGetVariableAccessData())
out.print(" predicting ", SpeculationDump(node->tryGetVariableAccessData()->prediction()));
else if (node->hasHeapPrediction())
out.print(" predicting ", SpeculationDump(node->getHeapPrediction()));
@@ -1530,7 +1530,7 @@
while (node) {
CodeBlock* profiledBlock = baselineCodeBlockFor(node->origin.semantic);
- if (node->hasLocal(*this)) {
+ if (node->accessesStack(*this)) {
ValueProfile* result = [&] () -> ValueProfile* {
if (!node->local().isArgument())
return nullptr;
Modified: trunk/Source/_javascript_Core/dfg/DFGLiveCatchVariablePreservationPhase.cpp (203922 => 203923)
--- trunk/Source/_javascript_Core/dfg/DFGLiveCatchVariablePreservationPhase.cpp 2016-07-29 22:01:03 UTC (rev 203922)
+++ trunk/Source/_javascript_Core/dfg/DFGLiveCatchVariablePreservationPhase.cpp 2016-07-29 22:04:02 UTC (rev 203923)
@@ -122,7 +122,7 @@
}
}
- if (node->hasVariableAccessData(m_graph))
+ if (node->accessesStack(m_graph))
currentBlockAccessData.operand(node->local()) = node->variableAccessData();
}
}
Modified: trunk/Source/_javascript_Core/dfg/DFGMaximalFlushInsertionPhase.cpp (203922 => 203923)
--- trunk/Source/_javascript_Core/dfg/DFGMaximalFlushInsertionPhase.cpp 2016-07-29 22:01:03 UTC (rev 203922)
+++ trunk/Source/_javascript_Core/dfg/DFGMaximalFlushInsertionPhase.cpp 2016-07-29 22:04:02 UTC (rev 203923)
@@ -78,7 +78,7 @@
Flush, node->origin, OpInfo(flushAccessData));
}
- if (node->hasVariableAccessData(m_graph))
+ if (node->accessesStack(m_graph))
currentBlockAccessData.operand(node->local()) = node->variableAccessData();
}
}
@@ -110,7 +110,7 @@
Operands<Node*> initialAccessNodes(block->variablesAtTail.numberOfArguments(), block->variablesAtTail.numberOfLocals(), nullptr);
for (unsigned i = 0; i < block->size(); i++) {
Node* node = block->at(i);
- if (!node->hasVariableAccessData(m_graph))
+ if (!node->accessesStack(m_graph))
continue;
VirtualRegister operand = node->local();
Modified: trunk/Source/_javascript_Core/dfg/DFGNode.h (203922 => 203923)
--- trunk/Source/_javascript_Core/dfg/DFGNode.h 2016-07-29 22:01:03 UTC (rev 203922)
+++ trunk/Source/_javascript_Core/dfg/DFGNode.h 2016-07-29 22:04:02 UTC (rev 203923)
@@ -807,7 +807,7 @@
}
bool hasVariableAccessData(Graph&);
- bool hasLocal(Graph& graph)
+ bool accessesStack(Graph& graph)
{
return hasVariableAccessData(graph);
}
Modified: trunk/Source/_javascript_Core/dfg/DFGPredictionInjectionPhase.cpp (203922 => 203923)
--- trunk/Source/_javascript_Core/dfg/DFGPredictionInjectionPhase.cpp 2016-07-29 22:01:03 UTC (rev 203922)
+++ trunk/Source/_javascript_Core/dfg/DFGPredictionInjectionPhase.cpp 2016-07-29 22:04:02 UTC (rev 203923)
@@ -74,7 +74,7 @@
Node* node = block->variablesAtHead.operand(operand);
if (!node)
continue;
- ASSERT(node->hasLocal(m_graph));
+ ASSERT(node->accessesStack(m_graph));
node->variableAccessData()->predict(
speculationFromValue(m_graph.m_plan.mustHandleValues[i]));
}
Modified: trunk/Source/_javascript_Core/dfg/DFGValidate.cpp (203922 => 203923)
--- trunk/Source/_javascript_Core/dfg/DFGValidate.cpp 2016-07-29 22:01:03 UTC (rev 203922)
+++ trunk/Source/_javascript_Core/dfg/DFGValidate.cpp 2016-07-29 22:04:02 UTC (rev 203923)
@@ -482,17 +482,17 @@
block->variablesAtHead.numberOfLocals());
for (size_t i = 0; i < block->variablesAtHead.numberOfArguments(); ++i) {
- VALIDATE((virtualRegisterForArgument(i), block), !block->variablesAtHead.argument(i) || block->variablesAtHead.argument(i)->hasVariableAccessData(m_graph));
+ VALIDATE((virtualRegisterForArgument(i), block), !block->variablesAtHead.argument(i) || block->variablesAtHead.argument(i)->accessesStack(m_graph));
if (m_graph.m_form == ThreadedCPS)
- VALIDATE((virtualRegisterForArgument(i), block), !block->variablesAtTail.argument(i) || block->variablesAtTail.argument(i)->hasVariableAccessData(m_graph));
+ VALIDATE((virtualRegisterForArgument(i), block), !block->variablesAtTail.argument(i) || block->variablesAtTail.argument(i)->accessesStack(m_graph));
getLocalPositions.argument(i) = notSet;
setLocalPositions.argument(i) = notSet;
}
for (size_t i = 0; i < block->variablesAtHead.numberOfLocals(); ++i) {
- VALIDATE((virtualRegisterForLocal(i), block), !block->variablesAtHead.local(i) || block->variablesAtHead.local(i)->hasVariableAccessData(m_graph));
+ VALIDATE((virtualRegisterForLocal(i), block), !block->variablesAtHead.local(i) || block->variablesAtHead.local(i)->accessesStack(m_graph));
if (m_graph.m_form == ThreadedCPS)
- VALIDATE((virtualRegisterForLocal(i), block), !block->variablesAtTail.local(i) || block->variablesAtTail.local(i)->hasVariableAccessData(m_graph));
+ VALIDATE((virtualRegisterForLocal(i), block), !block->variablesAtTail.local(i) || block->variablesAtTail.local(i)->accessesStack(m_graph));
getLocalPositions.local(i) = notSet;
setLocalPositions.local(i) = notSet;