• Dmitry Gozman's avatar
    [inspector] Simplify async stepping · fe3d51e1
    Dmitry Gozman authored
    Currently, debugger pauses on async call schedule and then waits for Debugger.pauseOnAsyncCall
    with parentStackTraceId to actually schedule the pause.
    
    This CL combines these two steps:
    - For local async tasks, it just stores m_taskWithScheduledBreak at the time of schedule,
      to be able to pause once this task is run.
    - For external async tasks, it plumbs "should_pause" boolean in V8StackTraceId from
      the point of schedule to the point of execution, and schedules a pause once
      externalAsyncTaskStarted is called with "should_pause" set to true.
    
    This approach greatly simplifies the implementation, and reduced frontend to a single
    "breakOnAsyncCall: true" parameter in Debugger.stepInto.
    
    Drive-by: introduce hasScheduledBreakOnNextFunctionCall() to make
    SetBreakOnNextFunctionCall management more robust.
    
    Note: artificial pauses at async call schedule time are gone from test expectations -
    we now only pause when user actually wants to pause, which makes protocol much simpler.
    
    See also design doc linked in the bug.
    
    BUG=chromium:1000475
    
    Change-Id: I2d16f79c599fe196b2aaeca8223c63437a2954a9
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1783724
    Commit-Queue: Dmitry Gozman <dgozman@chromium.org>
    Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
    Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#63737}
    fe3d51e1
step-into-external-async-task-expected.txt 372 Bytes