33 lines
1002 B
JavaScript
33 lines
1002 B
JavaScript
|
// Copyright 2021 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 --max-optimized-bytecode-size=300000
|
||
|
|
||
|
const args = new Array(35000).fill('arg');
|
||
|
|
||
|
// Regression test for ReduceJSCreateAsyncFunctionObject.
|
||
|
function outer_async() {
|
||
|
async function g(replace_me) {}
|
||
|
%PrepareFunctionForOptimization(g);
|
||
|
%OptimizeFunctionOnNextCall(g);
|
||
|
new Promise(g);
|
||
|
}
|
||
|
|
||
|
const outer_async_many_args = outer_async.toLocaleString().replace('replace_me', args);
|
||
|
eval(outer_async_many_args);
|
||
|
outer_async();
|
||
|
|
||
|
// Regression test for ReduceJSCreateBoundFunction.
|
||
|
function outer_bind(arg) {
|
||
|
function b() { return 42; };
|
||
|
return b.bind(null, replace_me);
|
||
|
}
|
||
|
|
||
|
const outer_bind_many_args = outer_bind.toLocaleString().replace('replace_me', args);
|
||
|
eval(outer_bind_many_args);
|
||
|
%PrepareFunctionForOptimization(outer_bind);
|
||
|
outer_bind();
|
||
|
%OptimizeFunctionOnNextCall(outer_bind);
|
||
|
outer_bind();
|