| // Copyright 2019 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 --opt |
| |
| { |
| function test(a, b, c) { |
| let x = BigInt.asUintN(64, a + b); |
| console.log(x); |
| try { |
| return BigInt.asUintN(64, x + c); |
| } catch(_) { |
| return x; |
| } |
| } |
| |
| %PrepareFunctionForOptimization(test); |
| test(3n, 4n, 5n); |
| test(6n, 7n, 8n); |
| test(9n, 2n, 1n); |
| %OptimizeFunctionOnNextCall(test); |
| test(1n, 2n, 3n); |
| test(3n, 2n, 1n); |
| |
| assertEquals(6n, test(1n, 3n, 2n)); |
| assertEquals(5n, test(2n, 3n, 2)); |
| } |