7e5cac2cf3
Termination exceptions tear down V8 to the bottom-most V8 call. If there is a v8::TryCatch scope around that call, it returns true for HasTerminated() and HasCaught(). However, Isolate::IsExecutionTerminating() returns false and we can call into V8 from still inside the v8::TryCatch scope. Changes that this patch introduces: - You need to leave the v8::TryCatch scope around the bottom-most call to reset the termination state, in order to resume. - Explicitly check for termination exception and reporting it through the DevTools protocol after Runtime.evaluate and Debugger.evaluateOnCallFrame. Bug: v8:8455 Change-Id: I1f36f7a365985469813c2619bf16f18ee69aa4b8 Reviewed-on: https://chromium-review.googlesource.com/c/1337582 Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Dmitry Gozman <dgozman@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#57963}
61 lines
910 B
Plaintext
61 lines
910 B
Plaintext
Tests Runtime.terminateExecution on pause
|
|
|
|
Running test: testTerminateOnDebugger
|
|
|
|
Running test: testTerminateAtBreakpoint
|
|
{
|
|
error : {
|
|
code : -32000
|
|
message : Execution was terminated
|
|
}
|
|
id : <messageId>
|
|
}
|
|
|
|
Running test: testTerminateRuntimeEvaluate
|
|
{
|
|
id : <messageId>
|
|
result : {
|
|
}
|
|
}
|
|
{
|
|
error : {
|
|
code : -32000
|
|
message : Execution was terminated
|
|
}
|
|
id : <messageId>
|
|
}
|
|
{
|
|
description : 42
|
|
type : number
|
|
value : 42
|
|
}
|
|
|
|
Running test: testTerminateRuntimeEvaluateOnCallFrame
|
|
{
|
|
id : <messageId>
|
|
result : {
|
|
result : {
|
|
description : 1
|
|
type : number
|
|
value : 1
|
|
}
|
|
}
|
|
}
|
|
{
|
|
id : <messageId>
|
|
result : {
|
|
}
|
|
}
|
|
{
|
|
error : {
|
|
code : -32000
|
|
message : Execution was terminated
|
|
}
|
|
id : <messageId>
|
|
}
|
|
{
|
|
description : 43
|
|
type : number
|
|
value : 43
|
|
}
|