Title: [119301] trunk/Source/_javascript_Core
Revision
119301
Author
[email protected]
Date
2012-06-01 16:54:36 -0700 (Fri, 01 Jun 2012)

Log Message

DFG CFA should mark basic blocks as having constants if local accesses yield constants
https://bugs.webkit.org/show_bug.cgi?id=88153

Reviewed by Gavin Barraclough.

* dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::execute):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (119300 => 119301)


--- trunk/Source/_javascript_Core/ChangeLog	2012-06-01 23:47:28 UTC (rev 119300)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-06-01 23:54:36 UTC (rev 119301)
@@ -1,5 +1,15 @@
 2012-06-01  Filip Pizlo  <[email protected]>
 
+        DFG CFA should mark basic blocks as having constants if local accesses yield constants
+        https://bugs.webkit.org/show_bug.cgi?id=88153
+
+        Reviewed by Gavin Barraclough.
+
+        * dfg/DFGAbstractState.cpp:
+        (JSC::DFG::AbstractState::execute):
+
+2012-06-01  Filip Pizlo  <[email protected]>
+
         DFG arguments simplification phase uses a node.codeOrigin after appending a node
         https://bugs.webkit.org/show_bug.cgi?id=88151
 

Modified: trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp (119300 => 119301)


--- trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp	2012-06-01 23:47:28 UTC (rev 119300)
+++ trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp	2012-06-01 23:54:36 UTC (rev 119301)
@@ -239,22 +239,23 @@
         VariableAccessData* variableAccessData = node.variableAccessData();
         bool canExit = false;
         canExit |= variableAccessData->prediction() == PredictNone;
-        if (variableAccessData->isCaptured())
-            forNode(nodeIndex) = m_variables.operand(variableAccessData->local());
-        else {
-            AbstractValue value = m_variables.operand(variableAccessData->local());
+        AbstractValue value = m_variables.operand(variableAccessData->local());
+        if (!variableAccessData->isCaptured()) {
             if (value.isClear())
                 canExit |= true;
-            if (value.value())
-                m_foundConstants = true;
-            forNode(nodeIndex) = value;
         }
+        if (value.value())
+            m_foundConstants = true;
+        forNode(nodeIndex) = value;
         node.setCanExit(canExit);
         break;
     }
         
     case GetLocalUnlinked: {
-        forNode(nodeIndex) = m_variables.operand(node.unlinkedLocal());
+        AbstractValue value = m_variables.operand(node.unlinkedLocal());
+        if (value.value())
+            m_foundConstants = true;
+        forNode(nodeIndex) = value;
         node.setCanExit(false);
         break;
     }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to