| // Copyright 2013 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 |
| |
| function Cb(a, trigger) { |
| var f, g; |
| for(f = a.length; f--;) { |
| g = a.charCodeAt(f); |
| // This will fail after OSR if Runtime_StringCharCodeAt is modified |
| // to iterates optimized frames and visit safepoint pointers. |
| if (g == "C".charCodeAt(0)) { |
| %OptimizeOsr(); |
| %PrepareFunctionForOptimization(Cb); |
| } |
| } |
| return g; |
| } |
| |
| var s1 = "long string to make cons string 1"; |
| var s2 = "long string to make cons string 2"; |
| %PrepareFunctionForOptimization(Cb); |
| Cb(s1 + s2); |
| %PrepareFunctionForOptimization(Cb); |
| Cb(s1); |
| var s3 = "string for triggering osr in Cb"; |
| %PrepareFunctionForOptimization(Cb); |
| Cb(s3 + s3); |
| %PrepareFunctionForOptimization(Cb); |
| Cb(s1 + s2); |