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

Reply via email to