// 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); |