Index: test/webkit/number-cell-reuse.js |
diff --git a/test/webkit/concat-while-having-a-bad-time.js b/test/webkit/number-cell-reuse.js |
similarity index 53% |
copy from test/webkit/concat-while-having-a-bad-time.js |
copy to test/webkit/number-cell-reuse.js |
index dfda1e08a0b36194b787a44ee12a9693acd8aeaf..5b1002f0079fcf6d0d93be43f9f9ef1efcd99cfc 100644 |
--- a/test/webkit/concat-while-having-a-bad-time.js |
+++ b/test/webkit/number-cell-reuse.js |
@@ -22,10 +22,65 @@ |
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
description( |
-"Tests the behavior of Array.prototype.concat while the array is having a bad time due to one of the elements we are concatenating." |
+"This test checks corner cases of the number cell reuse code. In particular, it checks for known cases where code generation for number cell reuse caused assertions to fail." |
); |
-Object.defineProperty(Array.prototype, 0, { writable: false }); |
-shouldBe("[42].concat()", "[42]"); |
+function leftConstantRightSimple(a) |
+{ |
+ return 0.1 * (a * a); |
+} |
+shouldBe("leftConstantRightSimple(2)", "0.4"); |
+function leftConstantRightComplex(a) |
+{ |
+ return 0.1 * (a * a + a); |
+} |
+ |
+shouldBe("leftConstantRightComplex(1)", "0.2"); |
+ |
+function leftSimpleRightConstant(a) |
+{ |
+ return (a * a) * 0.1; |
+} |
+ |
+shouldBe("leftSimpleRightConstant(2)", "0.4"); |
+ |
+function leftComplexRightConstant(a) |
+{ |
+ return (a * a + a) * 0.1; |
+} |
+ |
+shouldBe("leftComplexRightConstant(1)", "0.2"); |
+ |
+function leftThisRightSimple(a) |
+{ |
+ return this * (a * a); |
+} |
+ |
+shouldBeNaN("leftThisRightSimple(2)"); |
+shouldBe("leftThisRightSimple.call(2, 2)", "8"); |
+ |
+function leftThisRightComplex(a) |
+{ |
+ return this * (a * a + a); |
+} |
+ |
+shouldBeNaN("leftThisRightComplex(2)"); |
+shouldBe("leftThisRightComplex.call(2, 2)", "12"); |
+ |
+function leftSimpleRightThis(a) |
+{ |
+ return (a * a) * this; |
+} |
+ |
+shouldBeNaN("leftSimpleRightThis(2)"); |
+shouldBe("leftSimpleRightThis.call(2, 2)", "8"); |
+ |
+function leftComplexRightThis(a) |
+{ |
+ return (a * a + a) * this; |
+} |
+ |
+shouldBeNaN("leftComplexRightThis(2)"); |
+shouldBe("leftComplexRightThis.call(2, 2)", "12"); |