// 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: --allow-natives-syntax function foo(a) { var y = 0x7fffffff; // 2^31 - 1 // Widen the static type of y (this condition never holds). if (a == NaN) y = NaN; // The next condition holds only in the warmup run. It leads to Smi // (SignedSmall) feedback being collected for the addition below. if (a) y = -1; const z = (y + 1)|0; return z < 0; } %PrepareFunctionForOptimization(foo); assertFalse(foo(true)); %OptimizeFunctionOnNextCall(foo); assertTrue(foo(false));