| Index: test/mjsunit/regress/regress-transition-elements-heap-verification.js
|
| diff --git a/test/mjsunit/regress/regress-transition-elements-heap-verification.js b/test/mjsunit/regress/regress-transition-elements-heap-verification.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8a5ba9585f02d40988b3293611ecc143e2c9fd5d
|
| --- /dev/null
|
| +++ b/test/mjsunit/regress/regress-transition-elements-heap-verification.js
|
| @@ -0,0 +1,83 @@
|
| +// Copyright 2014 the V8 project authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// Flags: --expose-gc --allow-natives-syntax --verify-heap --stress-compaction
|
| +
|
| +%SetAllocationTimeout(1000000, 1000000);
|
| +
|
| +function classOf(object) {
|
| + var string = Object.prototype.toString.call(object);
|
| + return string.substring(8, string.length - 1);
|
| +}
|
| +
|
| +function PrettyPrint() { }
|
| +
|
| +function fail() { }
|
| +
|
| +function deepEquals(a, b) {
|
| + if (a === b) return true;
|
| + var objectClass = classOf(a);
|
| + var objectClassB = classOf(b);
|
| + if (objectClass !== objectClassB) return false;
|
| +}
|
| +
|
| +function assertEquals(expected, found, name_opt) {
|
| + deepEquals(found, expected);
|
| + fail(PrettyPrint());
|
| +}
|
| +
|
| +function assertTrue(value, name_opt) { assertEquals(true, value, name_opt); }
|
| +
|
| +var __v_3 = {};
|
| +
|
| +assertEquals(true, true);
|
| +
|
| +Object.prototype.__defineGetter__(0, function() { } );
|
| +var __v_9 = { };
|
| +
|
| +function __f_11(obj) {
|
| + if (%HasFastObjectElements(obj)) return __v_9.dummy2;
|
| + assertTrue(true);
|
| +}
|
| +
|
| +function __f_10(expected, obj) {
|
| + assertEquals(true, __f_11(obj));
|
| +}
|
| +
|
| +var __sequence = undefined + 1;
|
| +
|
| +function __f_12() {
|
| + this.__sequence = this.__sequence + 1;
|
| + return eval("/* " + this.__sequence + " */ [-5, 3, 9];");
|
| +}
|
| +
|
| +function __f_15() {
|
| + var __v_8 = __f_12();
|
| + __v_8[0] = 0;
|
| + __f_10(__v_9.dummy1, __v_3);
|
| + return __v_8;
|
| +}
|
| +
|
| +function __f_9() {
|
| + var __v_8 = __f_15();
|
| + __v_8[0] = 1.5;
|
| + __f_10("", __v_8);
|
| + return __v_8;
|
| +}
|
| +
|
| +function __f_8(array, value, kind) {
|
| + array[1] = value;
|
| + __f_10("", array);
|
| + assertEquals(true, array[1]);
|
| +}
|
| +
|
| +gc();
|
| +%SetAllocationTimeout(100000, 150);
|
| +
|
| +function __f_14() {
|
| + __f_8(__f_15(), 1.5);
|
| + __f_8(__f_9(), "x");
|
| +}
|
| +
|
| +__f_14();
|
|
|