| // Copyright 2019 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 p = new Proxy({a: 1, b: 2}, { |
| ownKeys() { return ['a', 'b']; } |
| }); |
| |
| // clone and return a |
| function f(a) { |
| var y = {...a} |
| return y; |
| } |
| |
| // Call with different maps to force it into megamorphic state |
| f({a: 1, b: 2}); |
| f({a1: 1, b1: 3}); |
| f({a2: 1, b2: 3}); |
| f({a3: 1, b3: 4}); |
| f({a4: 1, b4: 5}); |
| |
| // Test that y was initialized correctly in the slow path |
| var clone = f(p); |
| assertEquals(clone.a, 1); |
| assertEquals(clone.b, 2); |