Title: [153266] trunk/Source/_javascript_Core
Revision
153266
Author
[email protected]
Date
2013-07-24 21:04:23 -0700 (Wed, 24 Jul 2013)

Log Message

fourthTier: 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: trunk/Source/_javascript_Core/ChangeLog (153265 => 153266)


--- trunk/Source/_javascript_Core/ChangeLog	2013-07-25 04:04:21 UTC (rev 153265)
+++ trunk/Source/_javascript_Core/ChangeLog	2013-07-25 04:04:23 UTC (rev 153266)
@@ -1,3 +1,14 @@
+2013-07-04  Filip Pizlo  <[email protected]>
+
+        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  <[email protected]>
 
         fourthTier: DFG::Node::m_opInfo2 should also be a uintptr_t

Modified: trunk/Source/_javascript_Core/dfg/DFGPlan.cpp (153265 => 153266)


--- trunk/Source/_javascript_Core/dfg/DFGPlan.cpp	2013-07-25 04:04:21 UTC (rev 153265)
+++ trunk/Source/_javascript_Core/dfg/DFGPlan.cpp	2013-07-25 04:04:23 UTC (rev 153266)
@@ -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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to