| // 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 dummy = {foo: "true"}; |
| |
| var a = {y:0.5}; |
| a.y = 357; |
| var b = a.y; |
| |
| var d; |
| function f( ) { |
| d = 357; |
| return {foo: b}; |
| } |
| %PrepareFunctionForOptimization(f); |
| f(); |
| f(); |
| %OptimizeFunctionOnNextCall(f); |
| var x = f(); |
| |
| // With the bug, x is now an invalid object; the code below |
| // triggers a crash. |
| |
| function g(obj) { |
| return obj.foo.length; |
| } |
| |
| %PrepareFunctionForOptimization(g); |
| g(dummy); |
| g(dummy); |
| %OptimizeFunctionOnNextCall(g); |
| g(x); |