Title: [152406] branches/dfgFourthTier/Source/_javascript_Core
- Revision
- 152406
- Author
- fpi...@apple.com
- Date
- 2013-07-04 13:28:12 -0700 (Thu, 04 Jul 2013)
Log Message
Unreviewed, add a helpful comment for why DCE is needed in the FTL.
I believe I've now twice down the experiment of disabling DCE in the FTL,
only to realize that this can't work, and that DCE is needed. I'd kind of
like to not make that mistake again.
* dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):
Modified Paths
Diff
Modified: branches/dfgFourthTier/Source/_javascript_Core/ChangeLog (152405 => 152406)
--- branches/dfgFourthTier/Source/_javascript_Core/ChangeLog 2013-07-04 19:53:19 UTC (rev 152405)
+++ branches/dfgFourthTier/Source/_javascript_Core/ChangeLog 2013-07-04 20:28:12 UTC (rev 152406)
@@ -1,3 +1,14 @@
+2013-07-04 Filip Pizlo <fpi...@apple.com>
+
+ Unreviewed, add a helpful comment for why DCE is needed in the FTL.
+
+ I believe I've now twice down the experiment of disabling DCE in the FTL,
+ only to realize that this can't work, and that DCE is needed. I'd kind of
+ like to not make that mistake again.
+
+ * dfg/DFGPlan.cpp:
+ (JSC::DFG::Plan::compileInThreadImpl):
+
2013-07-02 Filip Pizlo <fpi...@apple.com>
fourthTier: DFG::Node::m_opInfo2 should also be a uintptr_t
Modified: branches/dfgFourthTier/Source/_javascript_Core/dfg/DFGPlan.cpp (152405 => 152406)
--- branches/dfgFourthTier/Source/_javascript_Core/dfg/DFGPlan.cpp 2013-07-04 19:53:19 UTC (rev 152405)
+++ branches/dfgFourthTier/Source/_javascript_Core/dfg/DFGPlan.cpp 2013-07-04 20:28:12 UTC (rev 152406)
@@ -179,6 +179,14 @@
performStoreElimination(dfg);
performCPSRethreading(dfg);
+
+ // Note that DCE is necessary even in the FTL, because only we know what is
+ // live-in-bytecode. The FTL uses this information to determine when OSR exit
+ // values should be wired to LValues, versus being wired to ExitValue::dead().
+ // This is distinct from what ZombieHint gives us: ZombieHint says that the
+ // value in the given bytecode local is always dead; the reference counts that
+ // DCE produces tell us that the value is live for a while but eventually
+ // dies, and it tells us exactly when the death point is.
performDCE(dfg);
#if ENABLE(FTL_JIT)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes