887bacacb0
This change addresses inconsistencies wrt. to stepping into generator functions and breaking on the implicit initial yield. The new behavior is the following: 1. Stepping into a generator function doesn't trigger "generator stepping", but rather pauses right before the initial yield (assuming there a no non-simple parameters in between). 2. When paused on the initial yield and stepping into or over, we also don't turn on "generator stepping" immediately, but rather return to the caller and only enter "generator stepping" on SuspendGenerator bytecodes that correspond to `yield`s or `await`s in the source code. This matches the stepping behavior of regular functions more closely and seems like a good compromise. Fixed: chromium:901814 Change-Id: Ifc6c174011df1afea183e2c6ec21de27d72b17a7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2949099 Commit-Queue: Yang Guo <yangguo@chromium.org> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#75066}
33 lines
623 B
Plaintext
33 lines
623 B
Plaintext
Async generator stepping
|
|
|
|
Running test: testStepOverFromInitialYield
|
|
Setting breakpoint on implicit initial yield
|
|
Calling callGenerator()
|
|
|
|
async function* generator#() {
|
|
var a = 42;
|
|
|
|
Stepping over while paused on the initial yield
|
|
function callGenerator() {
|
|
return generator();#
|
|
}
|
|
|
|
|
|
Running test: testStepIntoInitialYield
|
|
Setting breakpoint on call to generator()
|
|
Calling callGenerator()
|
|
function callGenerator() {
|
|
#return generator();
|
|
}
|
|
|
|
Stepping into the generator()
|
|
|
|
async function* generator#() {
|
|
var a = 42;
|
|
|
|
Stepping into while paused on the initial yield
|
|
function callGenerator() {
|
|
return generator();#
|
|
}
|
|
|