Skip to content
Snippets Groups Projects
  • Mike Pennisi's avatar
    4dc81d37
    Add tests for tail-call optimization · 4dc81d37
    Mike Pennisi authored
    ECMAScript 2015 introduced tail call optimization for function calls
    occuring in a number of positions in the grammar. Assert expected
    behavior by triggering a large (but configurable) number of recursive
    function calls in these positions. Compliant runtimes will execute such
    programs without error; non-compliant runtimes are expected to fail
    these tests by throwing an error or crashing when system resources are
    exhausted.
    4dc81d37
    History
    Add tests for tail-call optimization
    Mike Pennisi authored
    ECMAScript 2015 introduced tail call optimization for function calls
    occuring in a number of positions in the grammar. Assert expected
    behavior by triggering a large (but configurable) number of recursive
    function calls in these positions. Compliant runtimes will execute such
    programs without error; non-compliant runtimes are expected to fail
    these tests by throwing an error or crashing when system resources are
    exhausted.
tco-body.js 551 B
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: Statement within statement is a candidate for tail-call optimization.
id: static-semantics-hasproductionintailposition
flags: [onlyStrict]
features: [tail-call-optimization]
includes: [tco-helper.js]
---*/

var callCount = 0;
(function f(n) {
  if (n === 0) {
    callCount += 1
    return;
  }
  do {
    return f(n - 1);
  } while (false)
}($MAX_ITERATIONS));
assert.sameValue(callCount, 1);