Upstream version 11.40.277.0
[platform/framework/web/crosswalk.git] / src / v8 / test / mjsunit / own-symbols.js
1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 //
5 // Flags: --allow-natives-syntax
6
7 var s = %CreatePrivateOwnSymbol("s");
8 var s1 = %CreatePrivateOwnSymbol("s1");
9
10 function TestSimple() {
11   var p = {}
12   p[s] = "moo";
13
14   var o = Object.create(p);
15
16   assertEquals(undefined, o[s]);
17   assertEquals("moo", p[s]);
18
19   o[s] = "bow-wow";
20   assertEquals("bow-wow", o[s]);
21   assertEquals("moo", p[s]);
22 }
23
24 TestSimple();
25
26
27 function TestICs() {
28   var p = {}
29   p[s] = "moo";
30
31
32   var o = Object.create(p);
33   o[s1] = "bow-wow";
34   function checkNonOwn(o) {
35     assertEquals(undefined, o[s]);
36     assertEquals("bow-wow", o[s1]);
37   }
38
39   checkNonOwn(o);
40
41   // Test monomorphic/optimized.
42   for (var i = 0; i < 1000; i++) {
43     checkNonOwn(o);
44   }
45
46   // Test non-monomorphic.
47   for (var i = 0; i < 1000; i++) {
48     var oNew = Object.create(p);
49     oNew["s" + i] = i;
50     oNew[s1] = "bow-wow";
51     checkNonOwn(oNew);
52   }
53 }
54
55 TestICs();