OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Flags: --allow-natives-syntax --nostress-opt --track-field-types | 5 // Flags: --allow-natives-syntax --nostress-opt --track-field-types |
6 | 6 |
7 (function() { | 7 (function() { |
8 var o = { text: "Hello World!" }; | 8 var o = { text: "Hello World!" }; |
9 function A() { | 9 function A() { |
10 this.a = o; | 10 this.a = o; |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 var f1 = new Narf(1); | 140 var f1 = new Narf(1); |
141 var f2 = new Narf(2); | 141 var f2 = new Narf(2); |
142 var f3 = new Narf(3); | 142 var f3 = new Narf(3); |
143 function baz(f, y) { f.y = y; } | 143 function baz(f, y) { f.y = y; } |
144 baz(f1, {y: 9}); | 144 baz(f1, {y: 9}); |
145 baz(f2, {y: 9}); | 145 baz(f2, {y: 9}); |
146 %OptimizeFunctionOnNextCall(baz); | 146 %OptimizeFunctionOnNextCall(baz); |
147 baz(f3, {a: -1}); | 147 baz(f3, {a: -1}); |
148 assertUnoptimized(baz); | 148 assertUnoptimized(baz); |
149 })(); | 149 })(); |
| 150 |
| 151 (function() { |
| 152 function Foo(x) { this.x = x; this.a = x; } |
| 153 function Bar(x) { this.x = x; this.b = x; } |
| 154 function readA(o) { return o.x.a; } |
| 155 var f = new Foo({a:1}); |
| 156 var b = new Bar({a:2}); |
| 157 assertEquals(readA(f), 1); |
| 158 assertEquals(readA(b), 2); |
| 159 assertEquals(readA(f), 1); |
| 160 assertEquals(readA(b), 2); |
| 161 %OptimizeFunctionOnNextCall(readA); |
| 162 assertEquals(readA(f), 1); |
| 163 assertEquals(readA(b), 2); |
| 164 assertOptimized(readA); |
| 165 f.a.y = 0; |
| 166 assertUnoptimized(readA); |
| 167 })(); |
OLD | NEW |