X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/2d39b0e377c0896910ee49ae70082ba665faf986..ed1e77d3adeb83d26fd1dfb16dd84cabdcefd250:/tests/stress/poly-chain-setter.js diff --git a/tests/stress/poly-chain-setter.js b/tests/stress/poly-chain-setter.js new file mode 100644 index 0000000..491fe5f --- /dev/null +++ b/tests/stress/poly-chain-setter.js @@ -0,0 +1,32 @@ +function Cons() { +} +Cons.prototype.__defineSetter__("f", function(value) { + counter++; + this._f = value; +}); +Cons.prototype.__defineGetter__("f", function() { return this._f; }); + +function foo(o, v) { + o.f = v; + return o.f; +} + +noInline(foo); + +var counter = 0; + +function test(o, value, expectedCount) { + var result = foo(o, value); + if (result != value) + throw new Error("Bad result: " + result); + if (counter != expectedCount) + throw new Error("Bad counter value: " + counter); +} + +for (var i = 0; i < 100000; ++i) { + test(new Cons(), i, counter + 1); + + var o = new Cons(); + o.g = 54; + test(o, i, counter + 1); +}