proxies-ownkeys-clone.js 597 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
// 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);