a447a44f31
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}
38 lines
1.0 KiB
JavaScript
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);
|