Title: [160407] trunk/Source/_javascript_Core
- Revision
- 160407
- Author
- fpi...@apple.com
- Date
- 2013-12-10 18:10:46 -0800 (Tue, 10 Dec 2013)
Log Message
Simplify CSE's treatment of NodeRelevantToOSR
https://bugs.webkit.org/show_bug.cgi?id=125538
Reviewed by Oliver Hunt.
Make the NodeRelevantToOSR thing obvious: if there is any MovHint on a node then the
node is relevant to OSR.
* dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::run):
(JSC::DFG::CSEPhase::performNodeCSE):
(JSC::DFG::CSEPhase::performBlockCSE):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (160406 => 160407)
--- trunk/Source/_javascript_Core/ChangeLog 2013-12-11 02:08:32 UTC (rev 160406)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-12-11 02:10:46 UTC (rev 160407)
@@ -1,5 +1,20 @@
2013-12-10 Filip Pizlo <fpi...@apple.com>
+ Simplify CSE's treatment of NodeRelevantToOSR
+ https://bugs.webkit.org/show_bug.cgi?id=125538
+
+ Reviewed by Oliver Hunt.
+
+ Make the NodeRelevantToOSR thing obvious: if there is any MovHint on a node then the
+ node is relevant to OSR.
+
+ * dfg/DFGCSEPhase.cpp:
+ (JSC::DFG::CSEPhase::run):
+ (JSC::DFG::CSEPhase::performNodeCSE):
+ (JSC::DFG::CSEPhase::performBlockCSE):
+
+2013-12-10 Filip Pizlo <fpi...@apple.com>
+
Get rid of forward exit in GetByVal on Uint32Array
https://bugs.webkit.org/show_bug.cgi?id=125543
Modified: trunk/Source/_javascript_Core/dfg/DFGCSEPhase.cpp (160406 => 160407)
--- trunk/Source/_javascript_Core/dfg/DFGCSEPhase.cpp 2013-12-11 02:08:32 UTC (rev 160406)
+++ trunk/Source/_javascript_Core/dfg/DFGCSEPhase.cpp 2013-12-11 02:10:46 UTC (rev 160407)
@@ -55,6 +55,47 @@
m_graph.clearReplacements();
+ for (BlockIndex blockIndex = m_graph.numBlocks(); blockIndex--;) {
+ BasicBlock* block = m_graph.block(blockIndex);
+ if (!block)
+ continue;
+
+ // All Phis need to already be marked as relevant to OSR.
+ if (!ASSERT_DISABLED) {
+ for (unsigned i = 0; i < block->phis.size(); ++i)
+ ASSERT(block->phis[i]->flags() & NodeRelevantToOSR);
+ }
+
+ for (unsigned i = block->size(); i--;) {
+ Node* node = block->at(i);
+
+ switch (node->op()) {
+ case SetLocal:
+ case GetLocal: // FIXME: The GetLocal case is only necessary until we do https://bugs.webkit.org/show_bug.cgi?id=106707.
+ node->mergeFlags(NodeRelevantToOSR);
+ break;
+ default:
+ node->clearFlags(NodeRelevantToOSR);
+ break;
+ }
+ }
+ }
+
+ for (BlockIndex blockIndex = m_graph.numBlocks(); blockIndex--;) {
+ BasicBlock* block = m_graph.block(blockIndex);
+ if (!block)
+ continue;
+
+ for (unsigned i = block->size(); i--;) {
+ Node* node = block->at(i);
+ if (!node->containsMovHint())
+ continue;
+
+ ASSERT(node->op() != ZombieHint);
+ node->child1()->mergeFlags(NodeRelevantToOSR);
+ }
+ }
+
if (m_graph.m_form == SSA) {
Vector<BasicBlock*> depthFirst;
m_graph.getBlocksInDepthFirstOrder(depthFirst);
@@ -1022,11 +1063,6 @@
if (cseMode == NormalCSE)
m_graph.performSubstitution(node);
- if (node->containsMovHint()) {
- ASSERT(node->op() != ZombieHint);
- node->child1()->mergeFlags(NodeRelevantToOSR);
- }
-
switch (node->op()) {
case Identity:
@@ -1374,28 +1410,6 @@
for (unsigned i = 0; i < LastNodeType; ++i)
m_lastSeen[i] = UINT_MAX;
- // All Phis need to already be marked as relevant to OSR.
- if (!ASSERT_DISABLED) {
- for (unsigned i = 0; i < block->phis.size(); ++i)
- ASSERT(block->phis[i]->flags() & NodeRelevantToOSR);
- }
-
- // Make all of my SetLocal and GetLocal nodes relevant to OSR, and do some other
- // necessary bookkeeping.
- for (unsigned i = 0; i < block->size(); ++i) {
- Node* node = block->at(i);
-
- switch (node->op()) {
- case SetLocal:
- case GetLocal: // FIXME: The GetLocal case is only necessary until we do https://bugs.webkit.org/show_bug.cgi?id=106707.
- node->mergeFlags(NodeRelevantToOSR);
- break;
- default:
- node->clearFlags(NodeRelevantToOSR);
- break;
- }
- }
-
for (m_indexInBlock = 0; m_indexInBlock < block->size(); ++m_indexInBlock) {
m_currentNode = block->at(m_indexInBlock);
performNodeCSE(m_currentNode);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes