| // Copyright 2017 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. |
| var proxy = new Proxy([], { |
| w.length = 1; // shorten the array so the backstore pointer is relocated |
| gc(); // force gc to move the array's elements backstore |
| return Object.defineProperty.apply(this, arguments); |
| class MyArray extends Array { |
| // custom constructor which returns a proxy object |
| static get[Symbol.species](){ |
| var w = new MyArray(100); |
| var result = Array.prototype.concat.call(w); |
| assertEquals(undefined, result[0]); |
| assertEquals(0.1, result[1]); |
| for (var i = 2; i < 200; i++) { |
| assertEquals(undefined, result[i]); |