| // Copyright 2018 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 f(a) { |
| return a.charAt(1) == ""; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(false, f("aaa")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(false, f("aaa")); |
| })(); |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) < ""; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(false, f("aaa")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(false, f("aaa")); |
| })(); |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) <= ""; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(false, f("aaa")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(false, f("aaa")); |
| })(); |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) > ""; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(true, f("aaa")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(true, f("aaa")); |
| })(); |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) >= ""; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(true, f("aaa")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(true, f("aaa")); |
| })(); |
| |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) == a.charAt(2); |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(false, f("aab")); |
| assertEquals(true, f("aaa")); |
| assertEquals(false, f("acb")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(false, f("aab")); |
| assertEquals(true, f("aaa")); |
| assertEquals(false, f("acb")); |
| })(); |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) < a.charAt(2); |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(true, f("aab")); |
| assertEquals(false, f("aaa")); |
| assertEquals(false, f("acb")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(true, f("aab")); |
| assertEquals(false, f("aaa")); |
| assertEquals(false, f("acb")); |
| })(); |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) <= a.charAt(2); |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(true, f("aab")); |
| assertEquals(true, f("aaa")); |
| assertEquals(false, f("acb")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(true, f("aab")); |
| assertEquals(true, f("aaa")); |
| assertEquals(false, f("acb")); |
| })(); |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) > a.charAt(2); |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(false, f("aab")); |
| assertEquals(false, f("aaa")); |
| assertEquals(true, f("acb")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(false, f("aab")); |
| assertEquals(false, f("aaa")); |
| assertEquals(true, f("acb")); |
| })(); |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) >= a.charAt(2); |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(false, f("aab")); |
| assertEquals(true, f("aaa")); |
| assertEquals(true, f("acb")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(false, f("aab")); |
| assertEquals(true, f("aaa")); |
| assertEquals(true, f("acb")); |
| })(); |
| |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) == "b"; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(false, f("aaa")); |
| assertEquals(true, f("bbb")); |
| assertEquals(false, f("ccc")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(false, f("aaa")); |
| assertEquals(true, f("bbb")); |
| assertEquals(false, f("ccc")); |
| })(); |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) == "bb"; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(false, f("aaa")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(false, f("aaa")); |
| })(); |
| |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) < "b"; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(true, f("aaa")); |
| assertEquals(false, f("bbb")); |
| assertEquals(false, f("ccc")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(true, f("aaa")); |
| assertEquals(false, f("bbb")); |
| assertEquals(false, f("ccc")); |
| })(); |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) < "bb"; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(true, f("aaa")); |
| assertEquals(true, f("bbb")); |
| assertEquals(false, f("ccc")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(true, f("aaa")); |
| assertEquals(true, f("bbb")); |
| assertEquals(false, f("ccc")); |
| })(); |
| |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) <= "b"; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(true, f("aaa")); |
| assertEquals(true, f("bbb")); |
| assertEquals(false, f("ccc")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(true, f("aaa")); |
| assertEquals(true, f("bbb")); |
| assertEquals(false, f("ccc")); |
| })(); |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) <= "bb"; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(true, f("aaa")); |
| assertEquals(true, f("bbb")); |
| assertEquals(false, f("ccc")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(true, f("aaa")); |
| assertEquals(true, f("bbb")); |
| assertEquals(false, f("ccc")); |
| })(); |
| |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) > "b"; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(false, f("aaa")); |
| assertEquals(false, f("bbb")); |
| assertEquals(true, f("ccc")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(false, f("aaa")); |
| assertEquals(false, f("bbb")); |
| assertEquals(true, f("ccc")); |
| })(); |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) > "bb"; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(false, f("aaa")); |
| assertEquals(false, f("bbb")); |
| assertEquals(true, f("ccc")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(false, f("aaa")); |
| assertEquals(false, f("bbb")); |
| assertEquals(true, f("ccc")); |
| })(); |
| |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) >= "b"; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(false, f("aaa")); |
| assertEquals(true, f("bbb")); |
| assertEquals(true, f("ccc")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(false, f("aaa")); |
| assertEquals(true, f("bbb")); |
| assertEquals(true, f("ccc")); |
| })(); |
| |
| (()=> { |
| function f(a) { |
| return a.charAt(1) >= "bb"; |
| } |
| %PrepareFunctionForOptimization(f); |
| assertEquals(false, f("aaa")); |
| assertEquals(false, f("bbb")); |
| assertEquals(true, f("ccc")); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(false, f("aaa")); |
| assertEquals(false, f("bbb")); |
| assertEquals(true, f("ccc")); |
| })(); |