rematerialize-on-deopt.js 646 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
// 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));
}