Unreviewed, rolling out r213856.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 13 Mar 2017 19:36:27 +0000 (19:36 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 13 Mar 2017 19:36:27 +0000 (19:36 +0000)
https://bugs.webkit.org/show_bug.cgi?id=169562

Breaks JSC stress test stress/super-property-access.js.ftl-
eager failing (Requested by mlam|g on #webkit).

Reverted changeset:

"FTL should not flush strict arguments unless it really needs
to"
https://bugs.webkit.org/show_bug.cgi?id=169519
http://trac.webkit.org/changeset/213856

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

JSTests/ChangeLog
JSTests/microbenchmarks/strict-arguments-no-escape.js [deleted file]
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/dfg/DFGPreciseLocalClobberize.h

index 5bbc211..becefe3 100644 (file)
@@ -1,3 +1,18 @@
+2017-03-13  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r213856.
+        https://bugs.webkit.org/show_bug.cgi?id=169562
+
+        Breaks JSC stress test stress/super-property-access.js.ftl-
+        eager failing (Requested by mlam|g on #webkit).
+
+        Reverted changeset:
+
+        "FTL should not flush strict arguments unless it really needs
+        to"
+        https://bugs.webkit.org/show_bug.cgi?id=169519
+        http://trac.webkit.org/changeset/213856
+
 2017-03-11  Filip Pizlo  <fpizlo@apple.com>
 
         FTL should not flush strict arguments unless it really needs to
diff --git a/JSTests/microbenchmarks/strict-arguments-no-escape.js b/JSTests/microbenchmarks/strict-arguments-no-escape.js
deleted file mode 100644 (file)
index 1f939bf..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-"use strict";
-
-function foo()
-{
-}
-
-noInline(foo);
-
-function bar(o)
-{
-    foo();
-    return o.f.f.f.f.f;
-}
-
-function baz()
-{
-    for (var i = 0; i < 100; ++i) {
-        if (bar({f: {f: {f: {f: {f: 42}}}}}) != 42)
-            throw "Error: bad result: " + result;
-    }
-}
-
-noInline(baz);
-
-for (var i = 0; i < 20000; ++i)
-    baz();
index 6e7b28f..d5adeb9 100644 (file)
@@ -1,3 +1,18 @@
+2017-03-13  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r213856.
+        https://bugs.webkit.org/show_bug.cgi?id=169562
+
+        Breaks JSC stress test stress/super-property-access.js.ftl-
+        eager failing (Requested by mlam|g on #webkit).
+
+        Reverted changeset:
+
+        "FTL should not flush strict arguments unless it really needs
+        to"
+        https://bugs.webkit.org/show_bug.cgi?id=169519
+        http://trac.webkit.org/changeset/213856
+
 2017-03-13  Yusuke Suzuki  <utatane.tea@gmail.com>
 
         [JSC][Linux] Allow profilers to demangle C++ names
index 6697974..baf0ad9 100644 (file)
@@ -197,11 +197,9 @@ private:
 
             
         default: {
-            // All of the outermost arguments, except this, are read in sloppy mode.
-            if (!m_graph.m_codeBlock->isStrictMode()) {
-                for (unsigned i = m_graph.m_codeBlock->numParameters(); i-- > 1;)
-                    m_read(virtualRegisterForArgument(i));
-            }
+            // All of the outermost arguments, except this, are definitely read.
+            for (unsigned i = m_graph.m_codeBlock->numParameters(); i-- > 1;)
+                m_read(virtualRegisterForArgument(i));
         
             // The stack header is read.
             for (unsigned i = 0; i < CallFrameSlot::thisArgument; ++i)
@@ -209,10 +207,8 @@ private:
         
             // Read all of the inline arguments and call frame headers that we didn't already capture.
             for (InlineCallFrame* inlineCallFrame = m_node->origin.semantic.inlineCallFrame; inlineCallFrame; inlineCallFrame = inlineCallFrame->getCallerInlineFrameSkippingTailCalls()) {
-                if (!inlineCallFrame->isStrictMode()) {
-                    for (unsigned i = inlineCallFrame->arguments.size(); i-- > 1;)
-                        m_read(VirtualRegister(inlineCallFrame->stackOffset + virtualRegisterForArgument(i).offset()));
-                }
+                for (unsigned i = inlineCallFrame->arguments.size(); i-- > 1;)
+                    m_read(VirtualRegister(inlineCallFrame->stackOffset + virtualRegisterForArgument(i).offset()));
                 if (inlineCallFrame->isClosureCall)
                     m_read(VirtualRegister(inlineCallFrame->stackOffset + CallFrameSlot::callee));
                 if (inlineCallFrame->isVarargs())