Index: test/webkit/dfg-cfa-prove-put-by-id-simple-when-storing-to-specialized-function.js |
diff --git a/test/webkit/concat-while-having-a-bad-time.js b/test/webkit/dfg-cfa-prove-put-by-id-simple-when-storing-to-specialized-function.js |
similarity index 70% |
copy from test/webkit/concat-while-having-a-bad-time.js |
copy to test/webkit/dfg-cfa-prove-put-by-id-simple-when-storing-to-specialized-function.js |
index dfda1e08a0b36194b787a44ee12a9693acd8aeaf..6953ffa466e7981e031c1a3e87cb08b81eb48e2b 100644 |
--- a/test/webkit/concat-while-having-a-bad-time.js |
+++ b/test/webkit/dfg-cfa-prove-put-by-id-simple-when-storing-to-specialized-function.js |
@@ -22,10 +22,34 @@ |
// 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." |
+"Checks that the DFG CFA does the right things if it proves that a put_by_id is a simple replace when storing to a specialized function property." |
); |
-Object.defineProperty(Array.prototype, 0, { writable: false }); |
-shouldBe("[42].concat()", "[42]"); |
+function foo(o, v) { |
+ o.f = v; |
+} |
+// Warm up foo's put_by_id to make it look polymorphic. |
+for (var i = 0; i < 100; ++i) |
+ foo(i % 2 ? {a: 1} : {b: 2}); |
+ |
+function bar(f) { |
+ foo(this, f); |
+ return this.f(); |
+} |
+ |
+function baz() { |
+ debug("baz!"); |
+ return "baz"; |
+} |
+ |
+for (var i = 0; i < 100; ++i) |
+ shouldBe("bar.call({f:baz}, baz)", "\"baz\""); |
+ |
+function fuzz() { |
+ debug("fuzz!"); |
+ return "fuzz"; |
+} |
+ |
+shouldBe("bar.call({f:baz}, fuzz)", "\"fuzz\""); |