1. 20 Sep, 2018 1 commit
  2. 13 Sep, 2018 1 commit
  3. 30 May, 2018 1 commit
    • Alexey Kozyatinskiy's avatar
      [inspector] reworked async stack instrumentation for async functions · b6c9086c
      Alexey Kozyatinskiy authored
      New intstrumentation consists of:
      - kAsyncFunctionSuspended when async function is suspended on await
        (called on each await),
      - kAsyncFunctionFinished when async function is finished.
      
      Old instrumentation was based on reusing async function promise.
      Using this promise produces couple side effects:
      - for any promise instrumentation we first need to check if it is
        special case for async function promise or not - it requires
        expensive reading from promise object.
      - we capture stack for async functions even if it does not contain
        awaits.
      - we do not properly cancel async task created for async function.
      
      New intsrumntation resolved all these problems as well as provide
      clear mapping between async task and generator which we can use later
      to fetch scope information for async functions on pause.
      
      R=dgozman@chromium.org,yangguo@chromium.org
      
      Bug: v8:7078
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: Ifdcec947d91e6e3d4d5f9029bc080a19b8e23d41
      Reviewed-on: https://chromium-review.googlesource.com/1043096Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53445}
      b6c9086c
  4. 14 Mar, 2018 1 commit
  5. 14 Dec, 2017 1 commit
  6. 22 Nov, 2017 3 commits
    • Alexey Kozyatinskiy's avatar
      Reland [inspector] introduced stackTraceId and externalAsyncTask API · 885a5669
      Alexey Kozyatinskiy authored
      Sometimes we need to capture stack trace on one debugger and use it
      later as a parent stack on another debugger (e.g. worker.postMessage).
      
      This CL includes following addition to our protocol and v8-inspector.h:
        - added Runtime.StackTraceId, this id represents stack trace captured
          on debugger with given id,
        - protocol client can fetch Runtime.StackTrace by
          Runtime.StacKTraceId using Debugger.getStackTrace method,
        - externalParent field is added to Debugger.paused event, it may
          contain external parent stack trace,
        - V8Inspector::storeCurrentStackTrace captures current stack trace
          and returns V8StackTraceId for embedder this id can be used as
          argument for V8Inspector::externalAsyncTaskStarted and
          V8Inspector::externalAsyncTaskFinished method. Any async stack
          trace captured between these calls will get passed external stack
          trace as external parent. These methods are designed to be called
          on different debuggers. If async task is scheduled and started on
          one debugger user should continue to use asyncTask* API,
        - Debugger.enable methods returns unique debuggerId.
      
      TBR=dgozman@chromium.org,jgruber@chromium.org
      
      Bug: chromium:778796
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I2c1a2b2e30ed69ccb61d10f08686f4edb09f50e4
      Reviewed-on: https://chromium-review.googlesource.com/786274
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49591}
      885a5669
    • Clemens Hammacher's avatar
      Revert "[inspector] introduced stackTraceId and externalAsyncTask API" · 4379533c
      Clemens Hammacher authored
      This reverts commit 3a41b697.
      
      Reason for revert: Break msvc: https://build.chromium.org/p/client.v8/builders/V8%20Win64%20-%20msvc/builds/250
      
      Original change's description:
      > [inspector] introduced stackTraceId and externalAsyncTask API
      > 
      > Sometimes we need to capture stack trace on one debugger and use it
      > later as a parent stack on another debugger (e.g. worker.postMessage).
      > 
      > This CL includes following addition to our protocol and v8-inspector.h:
      >   - added Runtime.StackTraceId, this id represents stack trace captured
      >     on debugger with given id,
      >   - protocol client can fetch Runtime.StackTrace by
      >     Runtime.StacKTraceId using Debugger.getStackTrace method,
      >   - externalParent field is added to Debugger.paused event, it may
      >     contain external parent stack trace,
      >   - V8Inspector::storeCurrentStackTrace captures current stack trace
      >     and returns V8StackTraceId for embedder this id can be used as
      >     argument for V8Inspector::externalAsyncTaskStarted and
      >     V8Inspector::externalAsyncTaskFinished method. Any async stack
      >     trace captured between these calls will get passed external stack
      >     trace as external parent. These methods are designed to be called
      >     on different debuggers. If async task is scheduled and started on
      >     one debugger user should continue to use asyncTask* API,
      >   - Debugger.enable methods returns unique debuggerId.
      > 
      > Bug: chromium:778796
      > Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      > Change-Id: I16aba0d04bfcea90f3e187e635a0588c92354539
      > Reviewed-on: https://chromium-review.googlesource.com/754183
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
      > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#49582}
      
      TBR=dgozman@chromium.org,pfeldman@chromium.org,yangguo@chromium.org,kozyatinskiy@chromium.org,jgruber@chromium.org
      
      Change-Id: I9b52354fa0841e5148596cf594317f2e5fe508ea
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:778796
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/786152Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49584}
      4379533c
    • Alexey Kozyatinskiy's avatar
      [inspector] introduced stackTraceId and externalAsyncTask API · 3a41b697
      Alexey Kozyatinskiy authored
      Sometimes we need to capture stack trace on one debugger and use it
      later as a parent stack on another debugger (e.g. worker.postMessage).
      
      This CL includes following addition to our protocol and v8-inspector.h:
        - added Runtime.StackTraceId, this id represents stack trace captured
          on debugger with given id,
        - protocol client can fetch Runtime.StackTrace by
          Runtime.StacKTraceId using Debugger.getStackTrace method,
        - externalParent field is added to Debugger.paused event, it may
          contain external parent stack trace,
        - V8Inspector::storeCurrentStackTrace captures current stack trace
          and returns V8StackTraceId for embedder this id can be used as
          argument for V8Inspector::externalAsyncTaskStarted and
          V8Inspector::externalAsyncTaskFinished method. Any async stack
          trace captured between these calls will get passed external stack
          trace as external parent. These methods are designed to be called
          on different debuggers. If async task is scheduled and started on
          one debugger user should continue to use asyncTask* API,
        - Debugger.enable methods returns unique debuggerId.
      
      Bug: chromium:778796
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I16aba0d04bfcea90f3e187e635a0588c92354539
      Reviewed-on: https://chromium-review.googlesource.com/754183Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49582}
      3a41b697
  7. 07 Oct, 2017 1 commit
    • Alexey Kozyatinskiy's avatar
      [inspector] provisional breakpoints for anonymous script · 83198829
      Alexey Kozyatinskiy authored
      Use case: anonymous script with sourceMappingUrl. User can set
      breakpoint in source with sourceUrl from sourceMap, we persist this
      breakpoint in DevTools and on page reload breakpoint should be restored
      correctly.
      
      Debugger.setBreakpointByUrl method provides capabilities to set
      provisional breakpoints and looks like best candidate for new "scriptHash"
      argument.
      
      I considered other options such as replacing scriptId with something
      more persistent like "script-hash:script-with-this-hash-number" but it
      looks more complicated and doesn't provide clear advantages.
      
      One pager: http://bit.ly/2wkRHnt
      
      R=pfeldman@chromium.org
      
      Bug: chromium:459499
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: I0e2833fceffe6b04afac01d1a4522d6874b6067a
      Reviewed-on: https://chromium-review.googlesource.com/683597
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48357}
      83198829
  8. 06 Oct, 2017 1 commit
  9. 08 Sep, 2017 1 commit
  10. 25 Aug, 2017 1 commit
  11. 10 Aug, 2017 1 commit
  12. 28 Jul, 2017 1 commit
    • Alexey Kozyatinskiy's avatar
      [inspector] move SetScriptSource call to native · 6b0bf165
      Alexey Kozyatinskiy authored
      To avoid using debugging context and debugger-script.js on inspector side we can move SetScriptSource call to v8::internal::Debug. Theoretically we can move live edit implementation to native completely but since it will be reimplemented it looks redundant.
      
      R=yangguo@chromium.org,jgruber@chromium.org
      
      Bug: chromium:652939
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Id09492c2d2a93efbde429c9cc1bc181d5fdda19b
      Reviewed-on: https://chromium-review.googlesource.com/590736
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46985}
      6b0bf165
  13. 07 Jun, 2017 1 commit
    • Alexey Kozyatinskiy's avatar
      [inspector] fixed getPossibleBreakpoints · 9fef8fd2
      Alexey Kozyatinskiy authored
      BytecodeArrayBreakIterator doesn't iterate through locations in position() order. SkipToPosition is looking for closest break_index to passed one. So we should iterate through all breakable locations in function to get all of them.
      
      R=jgruber@chromium.org
      
      Bug: v8:6469
      Change-Id: Ida0b849e9df40458a13e0a0f7af6a00349088228
      Reviewed-on: https://chromium-review.googlesource.com/527135Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#45765}
      9fef8fd2
  14. 05 Jun, 2017 1 commit
  15. 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
  16. 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
  17. 25 May, 2017 1 commit
  18. 19 May, 2017 1 commit
  19. 18 May, 2017 1 commit
  20. 20 Apr, 2017 1 commit
  21. 18 Apr, 2017 1 commit
  22. 29 Mar, 2017 5 commits
  23. 24 Mar, 2017 4 commits
  24. 22 Mar, 2017 2 commits
    • kozyatinskiy's avatar
      [inspector] follow up for e27d18c9 · 69ad35ac
      kozyatinskiy authored
      - renamed inspector-test methods,
      - tuned comment in debug.h
      
      BUG=v8:6118
      TBR=dgozman@chromium.org
      
      Review-Url: https://codereview.chromium.org/2766283002
      Cr-Commit-Position: refs/heads/master@{#44043}
      69ad35ac
    • 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
  25. 14 Mar, 2017 1 commit
  26. 07 Mar, 2017 1 commit
  27. 06 Mar, 2017 1 commit
  28. 03 Mar, 2017 1 commit
    • clemensh's avatar
      [wasm] Fix importing wasm functions which are being debugged · eb36a7db
      clemensh authored
      If the imported wasm function is being debugged (i.e. redirects to the
      interpreter), call it via the JS_TO_WASM stub, such that we can disable
      the breakpoint later by patching the exported function.
      
      This also contains a drive-by fix in wasm-translation.cc (for the case
      that all known positions are bigger than the requested one).
      
      R=titzer@chromium.org, kozyatinskiy@chromium.org
      BUG=v8:5971, v8:5822
      
      Review-Url: https://codereview.chromium.org/2720813002
      Cr-Commit-Position: refs/heads/master@{#43583}
      eb36a7db
  29. 28 Feb, 2017 1 commit
  30. 27 Feb, 2017 1 commit