35 lines
863 B
JavaScript
35 lines
863 B
JavaScript
|
// 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
|
||
|
|
||
|
function largeAllocToTriggerGC() {
|
||
|
for (let i = 0; i < 16; i++) {
|
||
|
let ab = new ArrayBuffer(1024 * 1024 * 10);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function foo() {
|
||
|
eval('function bar(a) {}' +
|
||
|
'(function() {' +
|
||
|
' for (let c = 0; c < 505; c++) {' +
|
||
|
' while (Promise >= 0xDEADBEEF) {' +
|
||
|
' Array.prototype.slice.call(bar, bar, bar);' +
|
||
|
' }' +
|
||
|
' for (let i = 0; i < 413; i++) {' +
|
||
|
' }' +
|
||
|
' }' +
|
||
|
'})();' +
|
||
|
'largeAllocToTriggerGC();');
|
||
|
}
|
||
|
|
||
|
|
||
|
foo();
|
||
|
foo();
|
||
|
foo();
|
||
|
// Don't prepare until here to allow function to be flushed.
|
||
|
%PrepareFunctionForOptimization(foo);
|
||
|
%OptimizeFunctionOnNextCall(foo);
|
||
|
foo();
|