Title: [144991] trunk/Source/_javascript_Core
- Revision
- 144991
- Author
- [email protected]
- Date
- 2013-03-06 15:14:02 -0800 (Wed, 06 Mar 2013)
Log Message
Unreviewed, roll out http://trac.webkit.org/changeset/144989
I think we want the assertion that I removed.
* dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::merge):
(JSC::DFG::AbstractState::mergeVariableBetweenBlocks):
* dfg/DFGAbstractState.h:
(AbstractState):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (144990 => 144991)
--- trunk/Source/_javascript_Core/ChangeLog 2013-03-06 23:08:35 UTC (rev 144990)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-03-06 23:14:02 UTC (rev 144991)
@@ -1,5 +1,17 @@
2013-03-06 Filip Pizlo <[email protected]>
+ Unreviewed, roll out http://trac.webkit.org/changeset/144989
+
+ I think we want the assertion that I removed.
+
+ * dfg/DFGAbstractState.cpp:
+ (JSC::DFG::AbstractState::merge):
+ (JSC::DFG::AbstractState::mergeVariableBetweenBlocks):
+ * dfg/DFGAbstractState.h:
+ (AbstractState):
+
+2013-03-06 Filip Pizlo <[email protected]>
+
DFG::AbstractState::merge() is still more complicated than it needs to be
https://bugs.webkit.org/show_bug.cgi?id=111619
Modified: trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp (144990 => 144991)
--- trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp 2013-03-06 23:08:35 UTC (rev 144990)
+++ trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp 2013-03-06 23:14:02 UTC (rev 144991)
@@ -1697,17 +1697,13 @@
bool changed = false;
for (size_t argument = 0; argument < from->variablesAtTail.numberOfArguments(); ++argument) {
- changed |= mergeVariableBetweenBlocks(
- to->valuesAtHead.argument(argument),
- from->valuesAtTail.argument(argument),
- to->variablesAtHead.argument(argument));
+ AbstractValue& destination = to->valuesAtHead.argument(argument);
+ changed |= mergeVariableBetweenBlocks(destination, from->valuesAtTail.argument(argument), to->variablesAtHead.argument(argument), from->variablesAtTail.argument(argument));
}
for (size_t local = 0; local < from->variablesAtTail.numberOfLocals(); ++local) {
- changed |= mergeVariableBetweenBlocks(
- to->valuesAtHead.local(local),
- from->valuesAtTail.local(local),
- to->variablesAtHead.local(local));
+ AbstractValue& destination = to->valuesAtHead.local(local);
+ changed |= mergeVariableBetweenBlocks(destination, from->valuesAtTail.local(local), to->variablesAtHead.local(local), from->variablesAtTail.local(local));
}
if (!to->cfaHasVisited)
@@ -1761,12 +1757,15 @@
}
}
-inline bool AbstractState::mergeVariableBetweenBlocks(AbstractValue& destination, AbstractValue& source, Node* destinationNode)
+inline bool AbstractState::mergeVariableBetweenBlocks(AbstractValue& destination, AbstractValue& source, Node* destinationNode, Node* sourceNode)
{
- // This is the only liveness pruning that we do. We can always rely on the liveness at head to be preserved.
if (!destinationNode)
return false;
+ ASSERT_UNUSED(sourceNode, sourceNode);
+
+ // FIXME: We could do some sparse conditional propagation here!
+
return destination.merge(source);
}
Modified: trunk/Source/_javascript_Core/dfg/DFGAbstractState.h (144990 => 144991)
--- trunk/Source/_javascript_Core/dfg/DFGAbstractState.h 2013-03-06 23:08:35 UTC (rev 144990)
+++ trunk/Source/_javascript_Core/dfg/DFGAbstractState.h 2013-03-06 23:14:02 UTC (rev 144991)
@@ -234,7 +234,7 @@
bool mergeStateAtTail(AbstractValue& destination, AbstractValue& inVariable, Node*);
- static bool mergeVariableBetweenBlocks(AbstractValue& destination, AbstractValue& source, Node* destinationNode);
+ static bool mergeVariableBetweenBlocks(AbstractValue& destination, AbstractValue& source, Node* destinationNode, Node* sourceNode);
enum BooleanResult {
UnknownBooleanResult,
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes