1. 04 Apr, 2018 2 commits
  2. 08 Feb, 2018 1 commit
  3. 18 Jul, 2017 1 commit
  4. 14 Jul, 2017 1 commit
    • Alexey Kozyatinskiy's avatar
      [inspector] improve return position of explicit return in non-async function · 08965860
      Alexey Kozyatinskiy authored
      Goal of this CL: explicit return from non-async function has position after
      return expression as return position (will unblock [1]).
      
      BytecodeArrayBuilder has SetStatementPosition and SetExpressionPosition methods.
      If one of these methods is called then next generated bytecode will get passed
      position. It's general treatment for most cases.
      Unfortunately it doesn't work for Returns:
      - debugger requires source positions exactly on kReturn bytecode in stepping
        implementation,
      - BytecodeGenerator::BuildReturn and BytecodeGenerator::BuildAsyncReturn
        generates more then one bytecode and general solution will put return position
        on first generated bytecode,
      - it's not easy to split BuildReturn function into two parts to allow something
        like following in BytecodeGenerator::VisitReturnStatement since generated
        bytecodes are actually controlled by execution_control().
      ..->BuildReturnPrologue();
      ..->SetReturnPosition(stmt);
      ..->Return();
      
      In this CL we pass ReturnStatement through ExecutionControl and use it for
      position when we emit return bytecode right here.
      
      So this CL only will improve return position for returns inside of non-async
      functions, I'll address async functions later.
      
      [1] https://chromium-review.googlesource.com/c/543161/
      
      Change-Id: Iede512c120b00c209990bf50c20e7d23dc0d65db
      Reviewed-on: https://chromium-review.googlesource.com/560738
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46687}
      08965860
  5. 13 Jul, 2017 1 commit
  6. 10 Jul, 2017 1 commit
    • Alexey Kozyatinskiy's avatar
      Reland "[parser] moved load property position after dot" · 61ea3243
      Alexey Kozyatinskiy authored
      This is a reland of 5b44ba0e
      Original change's description:
      > (Reland) [parser] moved load property position after dot
      > 
      > Currently LdaNamedProperty bytecode for expressions like a.b has position before dot. This CL moves this location after dot.
      > It's important for later removing of Nop bytecodes in expressions like a.b() where a is local variable, property call and property load should have the same position.
      > 
      > R=jgruber@chromium.org
      > TBR=marja@chromium.org
      > 
      > Bug: v8:6425
      > Change-Id: I05c21ca5e018da9c432c6bc963c7a96799336d1c
      > Reviewed-on: https://chromium-review.googlesource.com/562879
      > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#46484}
      
      TBR=marja@chromium.org,jgruber@chromium.org
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      
      Bug: v8:6425
      Change-Id: I5eba5fe43ad31c5c781ffcc8c604cd9c98baa57e
      Reviewed-on: https://chromium-review.googlesource.com/565907Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46542}
      61ea3243
  7. 08 Jul, 2017 1 commit
  8. 07 Jul, 2017 1 commit
  9. 30 Jun, 2017 1 commit
  10. 23 Jun, 2017 2 commits
  11. 30 May, 2017 1 commit
    • Aleksey Kozyatinskiy's avatar
      [inspector] moved var initialization break location before init expression (reland) · fb6a094d
      Aleksey Kozyatinskiy authored
      This CL improves break locations for expressions like 'var a = <expr>'. Without CL we use <expr> position as break location for initialization statement, with this CL we use position of first character after '=' as position.
      Benefits (see test for details):
       - only one break in expressions which includes mix of property lookup and calls, e.g. var p = Promise.resolve().then(x => x * 2),
       - removed redundant break location for expressions like: let { x, y } = { x: 1, y: 2}.
       
      TBR=dgozman@chromium.org,rmcilroy@chromium.org,machenbach@chromium.org,marja@chromium.org,kozyatinskiy@chromium.org,devtools-reviews@chromium.org,v8-reviews@googlegroups.com
      # Not skipping CQ checks because original CL landed > 1 day ago.
      Bug: v8:5909
      
      Change-Id: Ie84fa79afeed09e28cf8478ba610a0cfbfdfc294
      Reviewed-on: https://chromium-review.googlesource.com/518116
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#45598}
      fb6a094d
  12. 29 May, 2017 1 commit
    • Michael Achenbach's avatar
      Revert "[inspector] moved var initialization break location before init expression" · ee1db48c
      Michael Achenbach authored
      This reverts commit 7a9cc704.
      
      Reason for revert: Changes layout tests:
      https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/15882
      
      This is about:
      inspector/sources/debugger/source-frame-inline-breakpoint-decorations.html
      
      Original change's description:
      > [inspector] moved var initialization break location before init expression
      > 
      > This CL improves break locations for expressions like 'var a = <expr>'. Without CL we use <expr> position as break location for initialization statement, with this CL we use position of first character after '=' as position.
      > Benefits (see test for details):
      > - only one break in expressions which includes mix of property lookup and calls, e.g. var p = Promise.resolve().then(x => x * 2),
      > - removed redundant break location for expressions like: let { x, y } = { x: 1, y: 2}.
      > 
      > Bug: v8:5909
      > Change-Id: I039d911903a2826c9859710a63ab0462c992e11b
      > Reviewed-on: https://chromium-review.googlesource.com/513926
      > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Reviewed-by: Marja Hölttä <marja@chromium.org>
      > Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#45530}
      
      TBR=dgozman@chromium.org,marja@chromium.org,kozyatinskiy@chromium.org
      # Not skipping CQ checks because original CL landed > 1 day ago.
      Bug: v8:5909
      
      Change-Id: Ibf84401e8050d3c84db219d983de2c6bba0f697f
      Reviewed-on: https://chromium-review.googlesource.com/518102Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#45547}
      ee1db48c
  13. 25 May, 2017 1 commit
  14. 24 May, 2017 1 commit
    • kozyatinskiy's avatar
      [inspector] removed call break location from for-of loop · fb78710c
      kozyatinskiy authored
      There are two break locations at the same source location by desugaring:
      - call iterator.next,
      - before variable assignment.
      
      Additionally location for for..of loops is moved from before "of" to before each variable expression.
      
      We should not report first implicit call to avoid user confusion. User still able to go into .next function with both scenarios:
      - when this call is reached by stepOver or stepInto from previous line,
      - when this call is reached because of breakpoint at current line.
      
      BUG=v8:6425
      R=dgozman@chromium.org,jgruber@chromium.org
      
      Review-Url: https://codereview.chromium.org/2893313002
      Cr-Commit-Position: refs/heads/master@{#45509}
      fb78710c
  15. 28 Apr, 2017 1 commit
  16. 22 Mar, 2017 1 commit
    • 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
  17. 22 Feb, 2017 1 commit
  18. 04 Feb, 2017 1 commit
  19. 02 Feb, 2017 1 commit
  20. 27 Jan, 2017 1 commit
    • yangguo's avatar
      [liveedit] reimplement frame restarting. · 3f47c63d
      yangguo authored
      Previously, when restarting a frame, we would rewrite all frames
      between the debugger activation and the frame to restart to squash
      them, and replace the return address with that of a builtin to
      leave that rewritten frame, and restart the function by calling it.
      
      We now simply remember the frame to drop to, and upon returning
      from the debugger, we check whether to drop the frame, load the
      new FP, and restart the function.
      
      R=jgruber@chromium.org, mstarzinger@chromium.org
      BUG=v8:5587
      
      Review-Url: https://codereview.chromium.org/2636913002
      Cr-Commit-Position: refs/heads/master@{#42725}
      3f47c63d
  21. 26 Jan, 2017 1 commit
  22. 14 Dec, 2016 1 commit
  23. 29 Nov, 2016 3 commits
  24. 28 Nov, 2016 1 commit
  25. 23 Nov, 2016 1 commit
  26. 22 Nov, 2016 1 commit
  27. 21 Nov, 2016 2 commits
    • yangguo's avatar
      [debugger] step-next across yield should not leave the generator. · 416e423f
      yangguo authored
      Stepping in a generator now behaves similar to stepping inside an
      async function. Stepping in or next at a yield expression will result in
      a break inside the same generator when we return to the generator.
      Behavior of step-out does not change.
      
      R=jgruber@chromium.org, neis@chromium.org
      BUG=chromium:496865
      
      Review-Url: https://codereview.chromium.org/2519853002
      Cr-Commit-Position: refs/heads/master@{#41132}
      416e423f
    • jgruber's avatar
      [debug-wrapper] Adapt tests, breakpoint.actual_location · 1834ab72
      jgruber authored
      Adapted various tests to restrictions of inspector protocol:
      
      * osr-typing-debug-change: Don't set function variable value.
      * debug-evaluate-locals: Add variable introduced by eval, run typeof
        inside evaluate().
      * regress-419663: Don't set duplicate breakpoints.
      * regress-crbug-465298: Compare against function name instead of value.
      * regress-crbug-621361: Make evaluate return string results.
      * debug-script: Various counts were off due to new way tests are called.
                      Added new inspector script type.
      
      Breakpoints now contain the actual break position, and remote object
      reconstruction has been extended a bit.
      
      BUG=v8:5530
      
      Review-Url: https://codereview.chromium.org/2505363002
      Cr-Commit-Position: refs/heads/master@{#41129}
      1834ab72
  28. 17 Nov, 2016 1 commit
  29. 16 Nov, 2016 1 commit
    • jgruber's avatar
      [debug-wrapper] Further extend the debug wrapper · b06c4ce5
      jgruber authored
      This CL further extends the debug wrapper, migrates around 60 tests, and
      removes a few tests that use functionality we will not support anymore.
      
      In more detail:
      
      * Removed tests that use:
        * enable/disable individual breakpoints
        * invocationText()
        * the ScriptCollected event
        * showBreakPoints
        * evalFromScript (and similar)
        * mirror.constructedBy and mirror.referencedBy
        * event_data.promise()
      * Some frame.evaluate uses were adapted since due to differences between
        remote objects (inspector) and mirrors. For instance, exceptions are
        currently not recreated exactly, since the inspector protocol does not
        give us the stack and message separately. Other objects (such as
        'this' in debug-evaluate-receiver-before-super) need to be explicitly
        converted to a string before the test works correctly.
      * Ensure that inspector stores the script before sending ScriptParsed and
        ScriptFailedToParse events in order to be able to use the script from
        within those events.
      * Better remote object reconstruction (e.g. for undefined and arrays).
      * New functionality in wrapper:
        * debuggerFlags().breakPointsActive.setValue()
        * scripts()
        * execState.setVariableValue()
        * execState.scopeObject().value()
        * execState.scopeObject().property()
        * execState.frame().allScopes()
        * eventData.exception()
        * eventData.script()
        * setBreakPointsActive()
      
      BUG=v8:5530
      
      Review-Url: https://codereview.chromium.org/2497973002
      Cr-Commit-Position: refs/heads/master@{#41019}
      b06c4ce5
  30. 10 Nov, 2016 1 commit
  31. 08 Nov, 2016 3 commits
  32. 07 Nov, 2016 2 commits