Title: [197181] trunk/Source/_javascript_Core
Revision
197181
Author
benja...@webkit.org
Date
2016-02-26 10:51:08 -0800 (Fri, 26 Feb 2016)

Log Message

[JSC] Add the test for r197155
https://bugs.webkit.org/show_bug.cgi?id=154715

Reviewed by Mark Lam.

Silly me. I forgot the test in the latest patch update.

* tests/stress/class-syntax-tdz-osr-entry-in-loop.js: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (197180 => 197181)


--- trunk/Source/_javascript_Core/ChangeLog	2016-02-26 18:44:17 UTC (rev 197180)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-02-26 18:51:08 UTC (rev 197181)
@@ -1,3 +1,14 @@
+2016-02-26  Benjamin Poulain  <benja...@webkit.org>
+
+        [JSC] Add the test for r197155
+        https://bugs.webkit.org/show_bug.cgi?id=154715
+
+        Reviewed by Mark Lam.
+
+        Silly me. I forgot the test in the latest patch update.
+
+        * tests/stress/class-syntax-tdz-osr-entry-in-loop.js: Added.
+
 2016-02-26  Yusuke Suzuki  <utatane....@gmail.com>
 
         [DFG] Drop unnecessary proved type branch in ToPrimitive

Added: trunk/Source/_javascript_Core/tests/stress/class-syntax-tdz-osr-entry-in-loop.js (0 => 197181)


--- trunk/Source/_javascript_Core/tests/stress/class-syntax-tdz-osr-entry-in-loop.js	                        (rev 0)
+++ trunk/Source/_javascript_Core/tests/stress/class-syntax-tdz-osr-entry-in-loop.js	2016-02-26 18:51:08 UTC (rev 197181)
@@ -0,0 +1,58 @@
+
+class A {
+    constructor() { }
+}
+
+class B extends A {
+    constructor(iterationCount) {
+        let values = [];
+
+        for (let i = 2; i < iterationCount; ++i) {
+            // Let's keep the loop busy.
+            let divided = false;
+            for (let j = i - 1; j > 1; --j) {
+                if (!(i % j)) {
+                    divided = true;
+                    break;
+                }
+            }
+            if (!divided)
+                values.push(i);
+
+            if (!(i % (iterationCount - 2)))
+                print(this);
+            else if (values.length == iterationCount)
+                super(values);
+        }
+    }
+}
+
+noInline(B);
+
+// Small warm up with small iteration count. Try to get to DFG.
+for (var i = 0; i < 30; ++i) {
+    var exception = null;
+    try {
+        new B(10);
+    } catch (e) {
+        exception = e;
+        if (!(e instanceof ReferenceError))
+            throw "Exception thrown in iteration " + i + " was not a reference error";
+    }
+    if (!exception)
+        throw "Exception not thrown for an unitialized this at iteration " + i;
+}
+
+// Now try to go to FTL in the constructor.
+for (var i = 0; i < 2; ++i) {
+    var exception = null;
+    try {
+        new B(7e3);
+    } catch (e) {
+        exception = e;
+        if (!(e instanceof ReferenceError))
+            throw "Exception thrown in iteration " + i + " was not a reference error";
+    }
+    if (!exception)
+        throw "Exception not thrown for an unitialized this at iteration " + i;
+}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to