Home | History | Annotate | Download | only in mjsunit
      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();
     56