• 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
..
bugs/harmony Loading commit data...
debug Loading commit data...
protocol Loading commit data...
regress Loading commit data...
wrapper Loading commit data...
debugger.gyp Loading commit data...
debugger.isolate Loading commit data...
debugger.status Loading commit data...
test-api.js Loading commit data...
testcfg.py Loading commit data...