Title: [161695] branches/jsCStack/Source/_javascript_Core
Revision
161695
Author
[email protected]
Date
2014-01-10 16:29:37 -0800 (Fri, 10 Jan 2014)

Log Message

Unreviewed, add a test for the case where LLVM finds a constant folding
opportunity that the DFG missed, and it involves a large constant, and then we
exit with the large constant folded into a stackmap for an OSR exit.
        
We fixed this incidentally as part of http://trac.webkit.org/changeset/161543, but
it only showed up as part of new tests specific to add/sub recovery and as a
Octane/gbemu *slow-down* because gbemu had such a constant. It seems like we
should have an explicit test for this since it's a really gross bug to have in a
rather critical code path.

* tests/stress/exit-after-llvm-folds-large-int-constant.js: Added.
(foo):

Modified Paths

Added Paths

Diff

Modified: branches/jsCStack/Source/_javascript_Core/ChangeLog (161694 => 161695)


--- branches/jsCStack/Source/_javascript_Core/ChangeLog	2014-01-11 00:19:53 UTC (rev 161694)
+++ branches/jsCStack/Source/_javascript_Core/ChangeLog	2014-01-11 00:29:37 UTC (rev 161695)
@@ -1,5 +1,20 @@
 2014-01-10  Filip Pizlo  <[email protected]>
 
+        Unreviewed, add a test for the case where LLVM finds a constant folding
+        opportunity that the DFG missed, and it involves a large constant, and then we
+        exit with the large constant folded into a stackmap for an OSR exit.
+        
+        We fixed this incidentally as part of http://trac.webkit.org/changeset/161543, but
+        it only showed up as part of new tests specific to add/sub recovery and as a
+        Octane/gbemu *slow-down* because gbemu had such a constant. It seems like we
+        should have an explicit test for this since it's a really gross bug to have in a
+        rather critical code path.
+
+        * tests/stress/exit-after-llvm-folds-large-int-constant.js: Added.
+        (foo):
+
+2014-01-10  Filip Pizlo  <[email protected]>
+
         DFG should insert Phantoms when it uses conversion nodes
         https://bugs.webkit.org/show_bug.cgi?id=126777
 

Added: branches/jsCStack/Source/_javascript_Core/tests/stress/exit-after-llvm-folds-large-int-constant.js (0 => 161695)


--- branches/jsCStack/Source/_javascript_Core/tests/stress/exit-after-llvm-folds-large-int-constant.js	                        (rev 0)
+++ branches/jsCStack/Source/_javascript_Core/tests/stress/exit-after-llvm-folds-large-int-constant.js	2014-01-11 00:29:37 UTC (rev 161695)
@@ -0,0 +1,18 @@
+function foo(o, io) {
+    var i = io.f;
+    if (i != 92160)
+        o.g = 42;
+    return o.f.f + i;
+}
+
+noInline(foo);
+
+for (var i = 0; i < 100000; ++i) {
+    var result = foo({f:{f:42}}, {f:92160});
+    if (result != 92202)
+        throw "Error: bad result: " + result;
+}
+
+var result = foo({f:{g:20, f:21}}, {f:92160});
+if (result != 92181)
+    throw "Error: bad result: " + result;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to