| // 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 testMax1(b) { |
| const max = Math.max(-1, b ? -0 : 1); |
| return Object.is(max, -0); |
| } |
| %PrepareFunctionForOptimization(testMax1); |
| assertTrue(testMax1(true)); |
| assertTrue(testMax1(true)); |
| %OptimizeFunctionOnNextCall(testMax1); |
| assertTrue(testMax1(true)); |
| |
| function testMax2(b) { |
| const max = Math.max(b ? -0 : 1, -1); |
| return Object.is(max, -0); |
| } |
| %PrepareFunctionForOptimization(testMax2); |
| assertTrue(testMax2(true)); |
| assertTrue(testMax2(true)); |
| %OptimizeFunctionOnNextCall(testMax2); |
| assertTrue(testMax2(true)); |
| |
| function testMin1(b) { |
| const min = Math.min(1, b ? -0 : -1); |
| return Object.is(min, -0); |
| } |
| %PrepareFunctionForOptimization(testMin1); |
| assertTrue(testMin1(true)); |
| assertTrue(testMin1(true)); |
| %OptimizeFunctionOnNextCall(testMin1); |
| assertTrue(testMin1(true)); |
| |
| function testMin2(b) { |
| const min = Math.min(b ? -0 : -1, 1); |
| return Object.is(min, -0); |
| } |
| %PrepareFunctionForOptimization(testMin2); |
| assertTrue(testMin2(true)); |
| assertTrue(testMin2(true)); |
| %OptimizeFunctionOnNextCall(testMin2); |
| assertTrue(testMin2(true)); |