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
+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
+++ /dev/null
-"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();
+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
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)
// 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())