summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/own-symbols.js
blob: 588a032aa86c582380497f087649988910cd0750 (plain)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// 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();