Unreviewed, merge the arguments fix in r118138 to get bots green.
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 24 May 2012 06:58:52 +0000 (06:58 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 24 May 2012 06:58:52 +0000 (06:58 +0000)
* dfg/DFGArgumentsSimplificationPhase.cpp:
(JSC::DFG::ArgumentsSimplificationPhase::observeBadArgumentsUse):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@118327 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/dfg/DFGArgumentsSimplificationPhase.cpp

index c1b021f..5b1d633 100644 (file)
@@ -1,3 +1,10 @@
+2012-05-23  Filip Pizlo  <fpizlo@apple.com>
+
+        Unreviewed, merge the arguments fix in r118138 to get bots green.
+
+        * dfg/DFGArgumentsSimplificationPhase.cpp:
+        (JSC::DFG::ArgumentsSimplificationPhase::observeBadArgumentsUse):
+
 2012-05-20  Filip Pizlo  <fpizlo@apple.com>
 
         DFG CFA should record if a node can OSR exit
index c17b333..5ab515b 100644 (file)
@@ -603,20 +603,30 @@ private:
             return;
         
         Node& child = m_graph[edge];
-        if (child.op() != GetLocal)
-            return;
-        
-        if (child.local() == m_graph.uncheckedArgumentsRegisterFor(child.codeOrigin)) {
+        switch (child.op()) {
+        case CreateArguments: {
             m_createsArguments.add(child.codeOrigin.inlineCallFrame);
-            return;
+            break;
+        }
+            
+        case GetLocal: {
+            if (child.local() == m_graph.uncheckedArgumentsRegisterFor(child.codeOrigin)) {
+                m_createsArguments.add(child.codeOrigin.inlineCallFrame);
+                break;
+            }
+            
+            VariableAccessData* variableAccessData = child.variableAccessData();
+            if (variableAccessData->isCaptured())
+                break;
+            
+            ArgumentsAliasingData& data = m_argumentsAliasing.find(variableAccessData)->second;
+            data.escapes = true;
+            break;
+        }
+            
+        default:
+            break;
         }
-        
-        VariableAccessData* variableAccessData = child.variableAccessData();
-        if (variableAccessData->isCaptured())
-            return;
-        
-        ArgumentsAliasingData& data = m_argumentsAliasing.find(variableAccessData)->second;
-        data.escapes = true;
     }
     
     void observeBadArgumentsUses(Node& node)