Title: [185566] trunk
Revision
185566
Author
[email protected]
Date
2015-06-15 14:26:08 -0700 (Mon, 15 Jun 2015)

Log Message

JIT bug - fails when inspector closed, works when open
https://bugs.webkit.org/show_bug.cgi?id=145243

Reviewed by Oliver Hunt.

Source/_javascript_Core:

We need to provide the Arguments object as the base when creating the HeapLocation for
GetFromArguments and PutToArguments.  Otherwise we endup creating a HeapLocation for
any arguments object, not the one we need.

* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):

LayoutTests:

New regression test.

* js/regress-145243-expected.txt: Added.
* js/regress-145243.html: Added.
* js/script-tests/regress-145243.js: Added.
(bar):
(foo):
(test):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (185565 => 185566)


--- trunk/LayoutTests/ChangeLog	2015-06-15 19:47:47 UTC (rev 185565)
+++ trunk/LayoutTests/ChangeLog	2015-06-15 21:26:08 UTC (rev 185566)
@@ -1,3 +1,19 @@
+2015-06-15  Michael Saboff  <[email protected]>
+
+        JIT bug - fails when inspector closed, works when open
+        https://bugs.webkit.org/show_bug.cgi?id=145243
+
+        Reviewed by Oliver Hunt.
+
+        New regression test.
+
+        * js/regress-145243-expected.txt: Added.
+        * js/regress-145243.html: Added.
+        * js/script-tests/regress-145243.js: Added.
+        (bar):
+        (foo):
+        (test):
+
 2015-06-15  Joseph Pecoraro  <[email protected]>
 
         Unreviewed, gardening for Windows.

Added: trunk/LayoutTests/js/regress-145243-expected.txt (0 => 185566)


--- trunk/LayoutTests/js/regress-145243-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/js/regress-145243-expected.txt	2015-06-15 21:26:08 UTC (rev 185566)
@@ -0,0 +1,10 @@
+Verify that we don't use our caller's arguments object in an inlined function.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS Correctly accessed inlined callee's own arguments
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/js/regress-145243.html (0 => 185566)


--- trunk/LayoutTests/js/regress-145243.html	                        (rev 0)
+++ trunk/LayoutTests/js/regress-145243.html	2015-06-15 21:26:08 UTC (rev 185566)
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<script src=""
+<script src=""
+</body>
+</html>

Added: trunk/LayoutTests/js/script-tests/regress-145243.js (0 => 185566)


--- trunk/LayoutTests/js/script-tests/regress-145243.js	                        (rev 0)
+++ trunk/LayoutTests/js/script-tests/regress-145243.js	2015-06-15 21:26:08 UTC (rev 185566)
@@ -0,0 +1,29 @@
+description("Verify that we don't use our caller's arguments object in an inlined function.");
+
+function bar(x) {
+    var t = arguments;
+    var a = x;
+    return a;
+}
+
+function foo(x) {
+    var t = arguments;
+    var a = x;
+    return bar(1);
+}
+
+noInline(foo);
+
+function test() {
+    for (var i = 0; i < 10000; ++i) {
+        var result = foo(42);
+        if (result != 1) {
+            testFailed("Expected 1, but got " + result);
+            return false;
+        }
+    }
+    return true;
+}
+
+if (test())
+   testPassed("Correctly accessed inlined callee's own arguments");

Modified: trunk/Source/_javascript_Core/ChangeLog (185565 => 185566)


--- trunk/Source/_javascript_Core/ChangeLog	2015-06-15 19:47:47 UTC (rev 185565)
+++ trunk/Source/_javascript_Core/ChangeLog	2015-06-15 21:26:08 UTC (rev 185566)
@@ -1,3 +1,17 @@
+2015-06-15  Michael Saboff  <[email protected]>
+
+        JIT bug - fails when inspector closed, works when open
+        https://bugs.webkit.org/show_bug.cgi?id=145243
+
+        Reviewed by Oliver Hunt.
+
+        We need to provide the Arguments object as the base when creating the HeapLocation for
+        GetFromArguments and PutToArguments.  Otherwise we endup creating a HeapLocation for
+        any arguments object, not the one we need.
+
+        * dfg/DFGClobberize.h:
+        (JSC::DFG::clobberize):
+
 2015-06-13  Joseph Pecoraro  <[email protected]>
 
         Web Inspector: console.table() with a list of objects no longer works

Modified: trunk/Source/_javascript_Core/dfg/DFGClobberize.h (185565 => 185566)


--- trunk/Source/_javascript_Core/dfg/DFGClobberize.h	2015-06-15 19:47:47 UTC (rev 185565)
+++ trunk/Source/_javascript_Core/dfg/DFGClobberize.h	2015-06-15 21:26:08 UTC (rev 185566)
@@ -820,14 +820,14 @@
     case GetFromArguments: {
         AbstractHeap heap(DirectArgumentsProperties, node->capturedArgumentsOffset().offset());
         read(heap);
-        def(HeapLocation(DirectArgumentsLoc, heap), LazyNode(node));
+        def(HeapLocation(DirectArgumentsLoc, heap, node->child1()), LazyNode(node));
         return;
     }
         
     case PutToArguments: {
         AbstractHeap heap(DirectArgumentsProperties, node->capturedArgumentsOffset().offset());
         write(heap);
-        def(HeapLocation(DirectArgumentsLoc, heap), LazyNode(node->child2().node()));
+        def(HeapLocation(DirectArgumentsLoc, heap, node->child1()), LazyNode(node->child2().node()));
         return;
     }
         
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to