| Index: test/webkit/fast/js/object-bad-time.js
|
| diff --git a/test/webkit/dfg-array-pop-side-effects.js b/test/webkit/fast/js/object-bad-time.js
|
| similarity index 64%
|
| copy from test/webkit/dfg-array-pop-side-effects.js
|
| copy to test/webkit/fast/js/object-bad-time.js
|
| index 8d4d5f319a57a3015a3f454a9b06a865ab25dc94..2fdb2d17cedad3d7f914ed1b4f70c632888cd5f4 100644
|
| --- a/test/webkit/dfg-array-pop-side-effects.js
|
| +++ b/test/webkit/fast/js/object-bad-time.js
|
| @@ -22,41 +22,37 @@
|
| // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| description(
|
| -"Tests that ArrayPop is known to the DFG to be a side effect."
|
| +"Tests that defining a setter on the prototype of an object used for indexed storage works even if it is done after objects with indexed storage are allocated."
|
| );
|
|
|
| -function foo(a, b) {
|
| - var result = a.f;
|
| - result += b.pop();
|
| - result += a.g;
|
| - return result;
|
| +function Cons() {
|
| }
|
|
|
| var ouches = 0;
|
| -for (var i = 0; i < 200; ++i) {
|
| - var a = {f:1, g:2};
|
| - var b = [];
|
| - var expected;
|
| - if (i < 150) {
|
| - // Ensure that we always transition the array's structure to one that indicates
|
| - // that we have array storage.
|
| - b.__defineGetter__("0", function() {
|
| - testFailed("Should never get here");
|
| - });
|
| - b.length = 0;
|
| - b[0] = 42;
|
| - expected = "45";
|
| - } else {
|
| - b.__defineGetter__("0", function() {
|
| - debug("Ouch!");
|
| - ouches++;
|
| - delete a.g;
|
| - a.h = 43;
|
| - return 5;
|
| - });
|
| - expected = "0/0";
|
| +
|
| +function foo(haveABadTime) {
|
| + var result = new Cons();
|
| + result.length = 5;
|
| + for (var i = 0; i < result.length; ++i) {
|
| + if (i == haveABadTime) {
|
| + debug("Henceforth I will have a bad time.");
|
| + Cons.prototype.__defineSetter__("3", function() { debug("Ouch!"); ouches++; });
|
| + }
|
| + result[i] = i;
|
| }
|
| - shouldBe("foo(a, b)", expected);
|
| + return result;
|
| +}
|
| +
|
| +var expected = "\"0,1,2,3,4\"";
|
| +
|
| +for (var i = 0; i < 1000; ++i) {
|
| + var haveABadTime;
|
| + if (i == 950) {
|
| + haveABadTime = 2;
|
| + expected = "\"0,1,2,,4\"";
|
| + } else
|
| + haveABadTime = -1;
|
| + shouldBe("\"" + Array.prototype.join.apply(foo(haveABadTime), [","]) + "\"", expected);
|
| }
|
|
|
| shouldBe("ouches", "50");
|
|
|