• kozyatinskiy's avatar
    [debugger] tuned StepNext and StepOut at return position · e27d18c9
    kozyatinskiy authored
    Proposed behaviour:
    - StepNext at return position go into next function call (no changes with current behavior, but implemented in v8::Debug instead of hack on inspector side);
    - StepOut at return position go into next non-current function call.
    
    We need this to have better stepping in cases with native functions, blackboxed functions and/or different embedder calls (e.g. event listeners).
    
    New behavior could be illustrated with two examples (for more see stepping-with-natives-and-frameworks test):
    - let's assume that we've blackboxed callAll function, this function just takes its arguments and call one after another:
    var foo = () => 1;
    callAll(foo, foo, () => 2);
    If we break inside of first call of function foo. Then on..
    ..StepNext - we're able to reach second call of function foo,
    ..StepOut - we're able to reach () => 2 call.
    
    - let's consider case with native function:
    [1,2,3].map(x => x * 2)
    If we break inside of first callback call, then with StepNext we can iterate through all calls of callback, with StepOut we go to next statement after .map call.
    
    Implementation details:
    - when we request break we schedule step-in function call for any step action at return position and for step-in at any position,
    - when we request StepOut at return position - we mark current function as needed-to-be-ignored inside of PrepareStepIn(function) call,
    - when we request StepOut at not return position - we set break at return position and ask debugger to just repeat last step action on next stepping-related break.
    
    Design doc: https://docs.google.com/document/d/1ihXHOIhP_q-fJCA0e2EiXz_Zr3B08KMjaPifcaqZ60Q/edit
    
    BUG=v8:6118,chromium:583193
    R=dgozman@chromium.org,yangguo@chromium.org
    
    Review-Url: https://codereview.chromium.org/2758483002
    Cr-Commit-Position: refs/heads/master@{#44028}
    e27d18c9
Name
Last commit
Last update
..
benchmarks Loading commit data...
cctest Loading commit data...
common Loading commit data...
debugger Loading commit data...
fuzzer Loading commit data...
inspector Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mozilla Loading commit data...
preparser Loading commit data...
promises-aplus Loading commit data...
simdjs Loading commit data...
test262 Loading commit data...
unittests Loading commit data...
webkit Loading commit data...
BUILD.gn Loading commit data...
bot_default.gyp Loading commit data...
bot_default.isolate Loading commit data...
default.gyp Loading commit data...
default.isolate Loading commit data...
optimize_for_size.gyp Loading commit data...
optimize_for_size.isolate Loading commit data...
perf.gyp Loading commit data...
perf.isolate Loading commit data...