Commit 5a554043 authored by oliver@apple.com's avatar oliver@apple.com

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):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153266 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent d83bc44d
2013-07-04 Filip Pizlo <fpizlo@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 <fpizlo@apple.com>
fourthTier: DFG::Node::m_opInfo2 should also be a uintptr_t
......
......@@ -179,6 +179,14 @@ Plan::CompilationPath Plan::compileInThreadImpl(LongLivedState& longLivedState)
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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment