56 lines
1.0 KiB
JavaScript
56 lines
1.0 KiB
JavaScript
|
// Copyright 2014 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.
|
||
|
//
|
||
|
// Flags: --allow-natives-syntax
|
||
|
|
||
|
var s = %CreatePrivateOwnSymbol("s");
|
||
|
var s1 = %CreatePrivateOwnSymbol("s1");
|
||
|
|
||
|
function TestSimple() {
|
||
|
var p = {}
|
||
|
p[s] = "moo";
|
||
|
|
||
|
var o = Object.create(p);
|
||
|
|
||
|
assertEquals(undefined, o[s]);
|
||
|
assertEquals("moo", p[s]);
|
||
|
|
||
|
o[s] = "bow-wow";
|
||
|
assertEquals("bow-wow", o[s]);
|
||
|
assertEquals("moo", p[s]);
|
||
|
}
|
||
|
|
||
|
TestSimple();
|
||
|
|
||
|
|
||
|
function TestICs() {
|
||
|
var p = {}
|
||
|
p[s] = "moo";
|
||
|
|
||
|
|
||
|
var o = Object.create(p);
|
||
|
o[s1] = "bow-wow";
|
||
|
function checkNonOwn(o) {
|
||
|
assertEquals(undefined, o[s]);
|
||
|
assertEquals("bow-wow", o[s1]);
|
||
|
}
|
||
|
|
||
|
checkNonOwn(o);
|
||
|
|
||
|
// Test monomorphic/optimized.
|
||
|
for (var i = 0; i < 1000; i++) {
|
||
|
checkNonOwn(o);
|
||
|
}
|
||
|
|
||
|
// Test non-monomorphic.
|
||
|
for (var i = 0; i < 1000; i++) {
|
||
|
var oNew = Object.create(p);
|
||
|
oNew["s" + i] = i;
|
||
|
oNew[s1] = "bow-wow";
|
||
|
checkNonOwn(oNew);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
TestICs();
|