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