Title: [144401] trunk/Source/_javascript_Core
- Revision
- 144401
- Author
- [email protected]
- Date
- 2013-02-28 17:32:03 -0800 (Thu, 28 Feb 2013)
Log Message
DFG CFA should not do liveness pruning
https://bugs.webkit.org/show_bug.cgi?id=111119
Reviewed by Mark Hahnenberg.
It adds complexity and probably buys nothing. Moreover, I'm transitioning to having
liveness only available at the bitter end of compilation, so this will stop working
after https://bugs.webkit.org/show_bug.cgi?id=109389 anyway.
* dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::initialize):
(JSC::DFG::AbstractState::mergeStateAtTail):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (144400 => 144401)
--- trunk/Source/_javascript_Core/ChangeLog 2013-03-01 01:24:47 UTC (rev 144400)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-03-01 01:32:03 UTC (rev 144401)
@@ -1,5 +1,20 @@
2013-02-28 Filip Pizlo <[email protected]>
+ DFG CFA should not do liveness pruning
+ https://bugs.webkit.org/show_bug.cgi?id=111119
+
+ Reviewed by Mark Hahnenberg.
+
+ It adds complexity and probably buys nothing. Moreover, I'm transitioning to having
+ liveness only available at the bitter end of compilation, so this will stop working
+ after https://bugs.webkit.org/show_bug.cgi?id=109389 anyway.
+
+ * dfg/DFGAbstractState.cpp:
+ (JSC::DFG::AbstractState::initialize):
+ (JSC::DFG::AbstractState::mergeStateAtTail):
+
+2013-02-28 Filip Pizlo <[email protected]>
+
Don't try to emit profiling if you don't have the DFG JIT.
Rubber stamped by Mark Hahnenberg.
Modified: trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp (144400 => 144401)
--- trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp 2013-03-01 01:24:47 UTC (rev 144400)
+++ trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp 2013-03-01 01:32:03 UTC (rev 144401)
@@ -89,13 +89,6 @@
for (size_t i = 0; i < root->valuesAtHead.numberOfArguments(); ++i) {
Node* node = root->variablesAtHead.argument(i);
ASSERT(node->op() == SetArgument);
- if (!node->shouldGenerate()) {
- // The argument is dead. We don't do any checks for such arguments, and so
- // for the purpose of the analysis, they contain no value.
- root->valuesAtHead.argument(i).clear();
- continue;
- }
-
if (!node->variableAccessData()->shouldUnboxIfPossible()) {
root->valuesAtHead.argument(i).makeTop();
continue;
@@ -1616,20 +1609,6 @@
dataLogF(" from last access due to captured variable.\n");
#endif
} else {
- if (!node->shouldGenerate()) {
- // If the node at tail is a GetLocal that is dead, then skip it to get to the Phi.
- // The Phi may be live.
- if (node->op() != GetLocal)
- return false;
-
- node = node->child1().node();
- ASSERT(node->op() == Phi);
- if (!node->shouldGenerate())
- return false;
- }
-
- ASSERT(node->shouldGenerate());
-
#if DFG_ENABLE(DEBUG_PROPAGATION_VERBOSE)
dataLogF(" It's live, node @%u.\n", node->index());
#endif
@@ -1649,6 +1628,18 @@
break;
case GetLocal:
+ // If the GetLocal is dead, then we transfer from head to tail.
+ // FIXME: We can get rid of this case after https://bugs.webkit.org/show_bug.cgi?id=109389
+ if (!node->shouldGenerate()) {
+ // The block transfers the value from head to tail.
+ source = inVariable;
+#if DFG_ENABLE(DEBUG_PROPAGATION_VERBOSE)
+ dataLogF(" Transfering ");
+ source.dump(WTF::dataFile());
+ dataLogF(" from head to tail (dead GetLocal case).\n");
+#endif
+ break;
+ }
// The block refines the value with additional speculations.
source = forNode(node);
#if DFG_ENABLE(DEBUG_PROPAGATION_VERBOSE)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes