Changeset 103218 in webkit for trunk/Source/JavaScriptCore/ChangeLog
- Timestamp:
- Dec 18, 2011, 10:36:05 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r103202 r103218 1 2011-12-18 Filip Pizlo <[email protected]> 2 3 DFG is too sloppy with register allocation 4 https://bugs.webkit.org/show_bug.cgi?id=74835 5 6 Reviewed by Gavin Barraclough. 7 8 Added assertions that at the end of a successfully generated basic block, 9 all use counts should be zero. This revealed a number of bugs: 10 11 - Array length optimizations were turning a must-generate node into one 12 that is not must-generate, but failing to change the ref count 13 accordingly. 14 15 - Indexed property storage optimizations were failing to deref their 16 children, or to deref the indexed property storage node itself. Also, 17 they used the Phantom node as a replacement. But the Phantom node is 18 must-generate, which was causing bizarre issues. So this introduces a 19 Nop node, which should be used in cases where you want a node that is 20 skipped and has no children. 21 22 This does not have any significant performance effect, but it should 23 relieve some register pressure. The main thing this patch adds, though, 24 are the assertions, which should make it easier to do register allocation 25 related changes in the future. 26 27 * dfg/DFGAbstractState.cpp: 28 (JSC::DFG::AbstractState::execute): 29 * dfg/DFGGenerationInfo.h: 30 (JSC::DFG::GenerationInfo::initConstant): 31 (JSC::DFG::GenerationInfo::initInteger): 32 (JSC::DFG::GenerationInfo::initJSValue): 33 (JSC::DFG::GenerationInfo::initCell): 34 (JSC::DFG::GenerationInfo::initBoolean): 35 (JSC::DFG::GenerationInfo::initDouble): 36 (JSC::DFG::GenerationInfo::initStorage): 37 (JSC::DFG::GenerationInfo::use): 38 * dfg/DFGGraph.h: 39 (JSC::DFG::Graph::clearAndDerefChild1): 40 (JSC::DFG::Graph::clearAndDerefChild2): 41 (JSC::DFG::Graph::clearAndDerefChild3): 42 * dfg/DFGNode.h: 43 (JSC::DFG::Node::deref): 44 * dfg/DFGPropagator.cpp: 45 (JSC::DFG::Propagator::propagateNodePredictions): 46 (JSC::DFG::Propagator::fixupNode): 47 * dfg/DFGSpeculativeJIT.cpp: 48 (JSC::DFG::SpeculativeJIT::compile): 49 * dfg/DFGSpeculativeJIT32_64.cpp: 50 (JSC::DFG::SpeculativeJIT::compile): 51 * dfg/DFGSpeculativeJIT64.cpp: 52 (JSC::DFG::SpeculativeJIT::compile): 53 1 54 2011-12-18 Benjamin Poulain <[email protected]> 2 55
Note:
See TracChangeset
for help on using the changeset viewer.