Title: [161574] trunk/Source/_javascript_Core
Revision
161574
Author
[email protected]
Date
2014-01-09 12:41:06 -0800 (Thu, 09 Jan 2014)

Log Message

AI for CreateArguments should pass through non-SpecEmpty input values
https://bugs.webkit.org/show_bug.cgi?id=126709

Reviewed by Mark Hahnenberg.

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* tests/stress/use-arguments-as-object-pointer.js: Added.
(foo):

Modified Paths

Added Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (161573 => 161574)


--- trunk/Source/_javascript_Core/ChangeLog	2014-01-09 20:30:33 UTC (rev 161573)
+++ trunk/Source/_javascript_Core/ChangeLog	2014-01-09 20:41:06 UTC (rev 161574)
@@ -1,3 +1,15 @@
+2014-01-09  Filip Pizlo  <[email protected]>
+
+        AI for CreateArguments should pass through non-SpecEmpty input values
+        https://bugs.webkit.org/show_bug.cgi?id=126709
+
+        Reviewed by Mark Hahnenberg.
+
+        * dfg/DFGAbstractInterpreterInlines.h:
+        (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
+        * tests/stress/use-arguments-as-object-pointer.js: Added.
+        (foo):
+
 2014-01-09  Mark Hahnenberg  <[email protected]>
 
         Constructors for Objective-C classes do not work properly with instanceof

Modified: trunk/Source/_javascript_Core/dfg/DFGAbstractInterpreterInlines.h (161573 => 161574)


--- trunk/Source/_javascript_Core/dfg/DFGAbstractInterpreterInlines.h	2014-01-09 20:30:33 UTC (rev 161573)
+++ trunk/Source/_javascript_Core/dfg/DFGAbstractInterpreterInlines.h	2014-01-09 20:41:06 UTC (rev 161574)
@@ -1327,7 +1327,9 @@
         break;
     
     case CreateArguments:
-        forNode(node).setType(SpecArguments);
+        forNode(node) = forNode(node->child1());
+        forNode(node).filter(~SpecEmpty);
+        forNode(node).merge(SpecArguments);
         break;
         
     case TearOffActivation:

Added: trunk/Source/_javascript_Core/tests/stress/use-arguments-as-object-pointer.js (0 => 161574)


--- trunk/Source/_javascript_Core/tests/stress/use-arguments-as-object-pointer.js	                        (rev 0)
+++ trunk/Source/_javascript_Core/tests/stress/use-arguments-as-object-pointer.js	2014-01-09 20:41:06 UTC (rev 161574)
@@ -0,0 +1,13 @@
+function foo() {
+    arguments = {f:42};
+    return arguments.f;
+}
+
+noInline(foo);
+
+for (var i = 0; i < 100000; ++i) {
+    var result = foo();
+    if (result != 42)
+        throw "Error: bad result: " + result;
+}
+
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to