Index: test/webkit/dfg-peephole-compare-final-object-to-final-object-or-other-when-both-proven-final-object.js |
diff --git a/test/webkit/concat-while-having-a-bad-time.js b/test/webkit/dfg-peephole-compare-final-object-to-final-object-or-other-when-both-proven-final-object.js |
similarity index 70% |
copy from test/webkit/concat-while-having-a-bad-time.js |
copy to test/webkit/dfg-peephole-compare-final-object-to-final-object-or-other-when-both-proven-final-object.js |
index dfda1e08a0b36194b787a44ee12a9693acd8aeaf..f8a67946a2124262a6602a082d65a5e1e72925c0 100644 |
--- a/test/webkit/concat-while-having-a-bad-time.js |
+++ b/test/webkit/dfg-peephole-compare-final-object-to-final-object-or-other-when-both-proven-final-object.js |
@@ -22,10 +22,25 @@ |
// 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." |
+"Tests that the peephole CompareEq optimization for the case where one side is predicted final object and the other side is predicted either final object or other (i.e. null or undefined) doesn't assert when both sides are also proven final object." |
); |
-Object.defineProperty(Array.prototype, 0, { writable: false }); |
-shouldBe("[42].concat()", "[42]"); |
+function foo(a, b) { |
+ var result = []; |
+ result.push(a.f); |
+ result.push(b.f); |
+ if (a == b) |
+ result.push(true); |
+ else |
+ result.push(false); |
+ return result; |
+} |
+for (var i = 0; i < 100; ++i) { |
+ if (i%2) { |
+ var o = {f:42}; |
+ shouldBe("foo(o, o)", "[42, 42, true]"); |
+ } else |
+ shouldThrow("foo({f:42}, null)"); |
+} |