Title: [181498] trunk/Source/_javascript_Core
Revision
181498
Author
[email protected]
Date
2015-03-14 10:45:43 -0700 (Sat, 14 Mar 2015)

Log Message

Unreviewed, rolling out r181487.
https://bugs.webkit.org/show_bug.cgi?id=142695

Caused Speedometer/Full.html to fail (Requested by smfr on
#webkit).

Reverted changeset:

"DFG::PutStackSinkingPhase should eliminate GetStacks that
have an obviously known source"
https://bugs.webkit.org/show_bug.cgi?id=141624
http://trac.webkit.org/changeset/181487

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (181497 => 181498)


--- trunk/Source/_javascript_Core/ChangeLog	2015-03-14 16:29:20 UTC (rev 181497)
+++ trunk/Source/_javascript_Core/ChangeLog	2015-03-14 17:45:43 UTC (rev 181498)
@@ -1,3 +1,18 @@
+2015-03-14  Commit Queue  <[email protected]>
+
+        Unreviewed, rolling out r181487.
+        https://bugs.webkit.org/show_bug.cgi?id=142695
+
+        Caused Speedometer/Full.html to fail (Requested by smfr on
+        #webkit).
+
+        Reverted changeset:
+
+        "DFG::PutStackSinkingPhase should eliminate GetStacks that
+        have an obviously known source"
+        https://bugs.webkit.org/show_bug.cgi?id=141624
+        http://trac.webkit.org/changeset/181487
+
 2015-03-14  Michael Saboff  <[email protected]>
 
         ES6: Add binary and octal literal support

Modified: trunk/Source/_javascript_Core/dfg/DFGPutStackSinkingPhase.cpp (181497 => 181498)


--- trunk/Source/_javascript_Core/dfg/DFGPutStackSinkingPhase.cpp	2015-03-14 16:29:20 UTC (rev 181497)
+++ trunk/Source/_javascript_Core/dfg/DFGPutStackSinkingPhase.cpp	2015-03-14 17:45:43 UTC (rev 181498)
@@ -221,12 +221,6 @@
                         continue;
                     }
                     
-                    if (node->op() == GetStack) {
-                        // A GetStack doesn't affect anything, since we know which local we are reading
-                        // from.
-                        continue;
-                    }
-                    
                     auto escapeHandler = [&] (VirtualRegister operand) {
                         if (operand.isHeader())
                             return;
@@ -396,28 +390,6 @@
                     deferred.operand(node->unlinkedLocal()) = ConflictingFlush;
                     break;
                 }
-                    
-                case GetStack: {
-                    StackAccessData* data = ""
-                    FlushFormat format = deferred.operand(data->local);
-                    if (!isConcrete(format)) {
-                        // This means there is no deferral. No deferral means that the most
-                        // authoritative value for this stack slot is what is stored in the stack. So,
-                        // keep the GetStack.
-                        break;
-                    }
-                    
-                    // We have a concrete deferral, which means a PutStack that hasn't executed yet. It
-                    // would have stored a value with a certain format. That format must match our
-                    // format. But more importantly, we can simply use the value that the PutStack would
-                    // have stored and get rid of the GetStack.
-                    DFG_ASSERT(m_graph, node, format == data->format);
-                    
-                    Node* incoming = mapping.operand(data->local);
-                    node->convertToIdentity();
-                    node->child1() = incoming->defaultEdge();
-                    break;
-                }
                 
                 default: {
                     auto escapeHandler = [&] (VirtualRegister operand) {
@@ -446,6 +418,16 @@
                     preciseLocalClobberize(
                         m_graph, node, escapeHandler, escapeHandler,
                         [&] (VirtualRegister, Node*) { });
+                    
+                    // If we're a GetStack, then we also create a mapping.
+                    // FIXME: We should be able to just eliminate such GetLocals, when we know
+                    // what their incoming value will be.
+                    // https://bugs.webkit.org/show_bug.cgi?id=141624
+                    if (node->op() == GetStack) {
+                        StackAccessData* data = ""
+                        VirtualRegister operand = data->local;
+                        mapping.operand(operand) = node;
+                    }
                     break;
                 } }
             }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to