Changeset 190756 in webkit
- Timestamp:
- Oct 8, 2015 4:14:34 PM (9 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r190749 r190756 1 2015-10-08 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, rolling out r190749. 4 https://bugs.webkit.org/show_bug.cgi?id=149938 5 6 Caused 50+ layout test failures 7 https://build.webkit.org/results/Apple%20El%20Capitan%20Debug%20WK1%20(Tests)/r190749%20(213)/results.html 8 (Requested by litherum1 on #webkit). 9 10 Reverted changeset: 11 12 "DFG SSA should remove unreachable code" 13 https://bugs.webkit.org/show_bug.cgi?id=149931 14 http://trac.webkit.org/changeset/190749 15 1 16 2015-10-08 Filip Pizlo <fpizlo@apple.com> 2 17 -
trunk/Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp
r190749 r190756 31 31 #include "DFGAbstractInterpreterInlines.h" 32 32 #include "DFGArgumentsUtilities.h" 33 #include "DFGBasicBlock Inlines.h"33 #include "DFGBasicBlock.h" 34 34 #include "DFGGraph.h" 35 35 #include "DFGInPlaceAbstractState.h" … … 56 56 { 57 57 bool changed = false; 58 59 for (BasicBlock* block : m_graph.blocksInNaturalOrder()) { 58 59 for (BlockIndex blockIndex = 0; blockIndex < m_graph.numBlocks(); ++blockIndex) { 60 BasicBlock* block = m_graph.block(blockIndex); 61 if (!block) 62 continue; 60 63 if (block->cfaFoundConstants) 61 64 changed |= foldConstants(block); … … 64 67 if (changed && m_graph.m_form == SSA) { 65 68 // It's now possible that we have Upsilons pointed at JSConstants. Fix that. 66 for (BasicBlock* block : m_graph.blocksInNaturalOrder()) 69 for (BlockIndex blockIndex = m_graph.numBlocks(); blockIndex--;) { 70 BasicBlock* block = m_graph.block(blockIndex); 71 if (!block) 72 continue; 67 73 fixUpsilons(block); 68 }69 70 if (m_graph.m_form == SSA) {71 // It's now possible to simplify basic blocks by placing an Unreachable terminator right72 // after anything that invalidates AI.73 bool didClipBlock = false;74 for (BasicBlock* block : m_graph.blocksInNaturalOrder()) {75 m_state.beginBasicBlock(block);76 for (unsigned nodeIndex = 0; nodeIndex < block->size(); ++nodeIndex) {77 if (block->at(nodeIndex)->isTerminal()) {78 // It's possible that we have something after the terminal. It could be a79 // no-op Check node, for example. We don't want the logic below to turn that80 // node into Unreachable, since then we'd have two terminators.81 break;82 }83 if (!m_state.isValid()) {84 NodeOrigin origin = block->at(nodeIndex)->origin;85 for (unsigned killIndex = nodeIndex; killIndex < block->size(); ++killIndex)86 m_graph.m_allocator.free(block->at(killIndex));87 block->resize(nodeIndex);88 block->appendNode(m_graph, SpecNone, Unreachable, origin);89 didClipBlock = true;90 break;91 }92 m_interpreter.execute(nodeIndex);93 }94 }95 96 if (didClipBlock) {97 changed = true;98 m_graph.invalidateCFG();99 m_graph.resetReachability();100 m_graph.killUnreachableBlocks();101 74 } 102 75 } -
trunk/Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp
r190749 r190756 728 728 m_graph.computeRefCounts(); 729 729 m_graph.initializeNodeOwners(); 730 m_graph.m_dominators.computeIfNecessary(m_graph);731 730 performLivenessAnalysis(m_graph); 732 731 performOSRAvailabilityAnalysis(m_graph); -
trunk/Source/JavaScriptCore/dfg/DFGPutStackSinkingPhase.cpp
r190749 r190756 76 76 m_graph.dump(); 77 77 } 78 79 m_graph.m_dominators.computeIfNecessary(m_graph);80 78 81 79 SSACalculator ssaCalculator(m_graph);
Note: See TracChangeset
for help on using the changeset viewer.