Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / v8 / test / mjsunit / keyed-named-access.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 k = "x";
8 var o1 = {x: 10};
9 var o2 = {x: 11, y: 20};
10 var o3 = {x: 12, y: 20, z: 100};
11
12 function f(o) {
13   var result = 0;
14   for (var i = 0; i < 100; i++) {
15     result += o[k];
16   }
17   return result;
18 }
19
20 f(o1);
21 f(o1);
22 f(o1);
23 %OptimizeFunctionOnNextCall(f);
24 assertEquals(1000, f(o1));
25
26 f(o2);
27 f(o2);
28 f(o2);
29 %OptimizeFunctionOnNextCall(f);
30 assertEquals(1100, f(o2));
31
32 f(o3);
33 f(o3);
34 f(o3);
35 %OptimizeFunctionOnNextCall(f);
36 assertEquals(1200, f(o3));
37
38 (function CountOperationDeoptimizationGetter() {
39   var global = {};
40   global.__defineGetter__("A", function () { return "x"; });
41
42   function h() {
43     return "A";
44   }
45
46   function g(a, b, c) {
47     try {
48       return a + b.toString() + c;
49     } catch (e) { }
50   }
51
52   function test(o)  {
53    return g(1, o[h()]--, 10);
54   }
55
56   test(global);
57   test(global);
58   %OptimizeFunctionOnNextCall(test);
59   print(test(global));
60 })();
61
62
63 (function CountOperationDeoptimizationPoint() {
64   function test()  {
65    this[0, ""]--;
66   }
67
68   test();
69   test();
70   %OptimizeFunctionOnNextCall(test);
71   test();
72 })();