// Copyright 2020 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: --opt --allow-natives-syntax --no-always-optfunctionfoo(n){try{letv=0n;for(leti=0;i<n;++i){v=3n+v;v=i;}}catch(e){return1;}return0;}%PrepareFunctionForOptimization(foo);assertEquals(foo(1),0);assertEquals(foo(1),0);%OptimizeFunctionOnNextCall(foo);assertEquals(foo(1),0);assertOptimized(foo);%PrepareFunctionForOptimization(foo);assertEquals(foo(2),1);assertUnoptimized(foo);// Check that we learned something and do not loop deoptimizations.%OptimizeFunctionOnNextCall(foo);assertEquals(foo(1),0);assertOptimized(foo);assertEquals(foo(2),1);assertOptimized(foo);