v8/test/inspector/debugger/pause-on-oom-wide.js
Santiago Aboy Solanes a447a44f31 [interpreter] Make IterationBody StackChecks implicit within JumpLoop
Since now the IterationBody StackChecks are implicit within JumpLoops,
we are able to eagerly deopt in them. If we do that, whenever we advance
to the next bytecode we don't have to advance to the next literal
bytecode, but instead "advance" in the sense of doing the JumpLoop.

Adding tests that test this advancing for wide and extra wide JumpLoops.

Also, marking JumpLoop as needing source positions since now it has
the ability of causing an interrupt.

Bug: v8:10149, v8:9960
Fixes: v8:10149
Change-Id: Ib0d9efdfb379e0dfbba7a7f67cba9262668813b0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2064226
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66809}
2020-03-20 13:22:41 +00:00

38 lines
1.0 KiB
JavaScript

// Copyright 2017 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: --max-old-space-size=16
let { session, contextGroup, Protocol } = InspectorTest.start('Check pause on OOM');
var script = `
var arr = [];
var stop = false;
function generateGarbage() {
while(!stop) {`
// Force the JumpLoop to be Wide.
for (i = 0; i < 37; ++i) {
script += `arr.push(new Array(1000));`
script += `if (stop) { break; }`
}
script += `
}
}
//# sourceURL=test.js"`
contextGroup.addScript(script, 10, 26);
Protocol.Debugger.onPaused((message) => {
InspectorTest.log(`reason: ${message.params.reason}`);
Protocol.Debugger.evaluateOnCallFrame({
callFrameId: message.params.callFrames[0].callFrameId,
expression: 'arr = []; stop = true;'
}).then(() => Protocol.Debugger.resume());
});
Protocol.Debugger.enable();
Protocol.Runtime.evaluate({ expression: 'generateGarbage()' })
.then(InspectorTest.completeTest);