| Index: test/webkit/duplicate-param-gc-crash.js
|
| diff --git a/test/webkit/concat-while-having-a-bad-time.js b/test/webkit/duplicate-param-gc-crash.js
|
| similarity index 59%
|
| copy from test/webkit/concat-while-having-a-bad-time.js
|
| copy to test/webkit/duplicate-param-gc-crash.js
|
| index dfda1e08a0b36194b787a44ee12a9693acd8aeaf..3436a94497a0b3c4dd96ef7548bb40a35550595e 100644
|
| --- a/test/webkit/concat-while-having-a-bad-time.js
|
| +++ b/test/webkit/duplicate-param-gc-crash.js
|
| @@ -22,10 +22,49 @@
|
| // 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 to ensure that activations are built correctly in the face of duplicate parameter names and do not cause crashes.'
|
| );
|
|
|
| -Object.defineProperty(Array.prototype, 0, { writable: false });
|
| -shouldBe("[42].concat()", "[42]");
|
| +function gc()
|
| +{
|
| + if (this.GCController)
|
| + GCController.collect();
|
| + else
|
| + for (var i = 0; i < 10000; ++i) // Allocate a sufficient number of objects to force a GC.
|
| + ({});
|
| +}
|
|
|
| +function eatRegisters(param)
|
| +{
|
| + if (param > 10)
|
| + return;
|
| + eatRegisters(param + 1);
|
| +}
|
|
|
| +function test1(a, b, b, b, b, b, b) {
|
| + return function() {
|
| + return a[0];
|
| + }
|
| +}
|
| +
|
| +var test1Closure = test1(["success"]);
|
| +
|
| +var extra = test1("success");
|
| +eatRegisters(0);
|
| +gc();
|
| +
|
| +shouldBe('test1Closure()', '"success"');
|
| +
|
| +function test2(a, a, a, a, a, a, b) {
|
| + return function() {
|
| + return b[0];
|
| + }
|
| +}
|
| +
|
| +var test2Closure = test2("success", "success", "success", "success", "success", "success", ["success"]);
|
| +extra = test2("success", "success", "success", "success", "success", "success", ["success"]);
|
| +
|
| +eatRegisters(0);
|
| +gc();
|
| +
|
| +shouldBe('test2Closure()', '"success"');
|
|
|