1. 05 Jun, 2018 2 commits
  2. 04 Jun, 2018 2 commits
  3. 03 Jun, 2018 1 commit
  4. 01 Jun, 2018 3 commits
    • Alexey Kozyatinskiy's avatar
      Reland "[inspector] added Runtime.installBinding method" · 5cb11a17
      Alexey Kozyatinskiy authored
      This is a reland of 49c4ac77
      
      Original change's description:
      > [inspector] added Runtime.installBinding method
      >
      > A lot of different clients use console.debug as a message channel from
      > page to protocol client. console.debug is a little slow and not
      > designed for this use case.
      >
      > This CL introduces new method: Runtime.installBinding. This method
      > installs binding function by given name on global object on each
      > inspected context including any context created later.
      > Binding function takes exactly one string argument. Each time when
      > binding function is called, Runtime.bindingCalled notification is
      > triggered and includes passed payload.
      >
      > Binding function survives page reload and reinstalled right after
      > console object is setup. So installed binding can be used inside
      > script added by Page.addScriptToEvaluateOnNewDocument so client may do
      > something like:
      > Runtime.installBinding({name: 'send'});
      > Page.addScriptToEvaluateOnNewDocument({source: 'console.debug = send'});
      > .. navigate page ..
      >
      > In microbenchmark this function is ~4.6 times faster then
      > console.debug.
      >
      > R=lushnikov@chromium.org,pfeldman@chromium.org
      >
      > Bug: none
      > Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      > Change-Id: I3e0e231dde9d45116709d248f6e9e7ec7037e8e3
      > Reviewed-on: https://chromium-review.googlesource.com/1077662
      > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#53462}
      
      TBR=dgozman@chromium.org
      
      Bug: none
      Change-Id: I58d053581a86f15338dea621498058b7b75c7c85
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      Reviewed-on: https://chromium-review.googlesource.com/1081833Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53479}
      5cb11a17
    • Sergiy Byelozyorov's avatar
      Revert "[inspector] added Runtime.installBinding method" · 7bd8b1c0
      Sergiy Byelozyorov authored
      This reverts commit 49c4ac77.
      
      Reason for revert: breaks linux_chromium_rel_ng when rolling into Chromium: https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_rel_ng/107377
      
      Original change's description:
      > [inspector] added Runtime.installBinding method
      > 
      > A lot of different clients use console.debug as a message channel from
      > page to protocol client. console.debug is a little slow and not
      > designed for this use case.
      > 
      > This CL introduces new method: Runtime.installBinding. This method
      > installs binding function by given name on global object on each
      > inspected context including any context created later.
      > Binding function takes exactly one string argument. Each time when
      > binding function is called, Runtime.bindingCalled notification is
      > triggered and includes passed payload.
      > 
      > Binding function survives page reload and reinstalled right after
      > console object is setup. So installed binding can be used inside
      > script added by Page.addScriptToEvaluateOnNewDocument so client may do
      > something like:
      > Runtime.installBinding({name: 'send'});
      > Page.addScriptToEvaluateOnNewDocument({source: 'console.debug = send'});
      > .. navigate page ..
      > 
      > In microbenchmark this function is ~4.6 times faster then
      > console.debug.
      > 
      > R=​lushnikov@chromium.org,pfeldman@chromium.org
      > 
      > Bug: none
      > Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      > Change-Id: I3e0e231dde9d45116709d248f6e9e7ec7037e8e3
      > Reviewed-on: https://chromium-review.googlesource.com/1077662
      > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#53462}
      
      TBR=dgozman@chromium.org,lushnikov@chromium.org,pfeldman@chromium.org,kozyatinskiy@chromium.org
      
      Change-Id: I1ebafd42db01d8a6435d58386f2c667b92db12f1
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: none
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      Reviewed-on: https://chromium-review.googlesource.com/1082311Reviewed-by: 's avatarSergiy Byelozyorov <sergiyb@chromium.org>
      Commit-Queue: Sergiy Byelozyorov <sergiyb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53470}
      7bd8b1c0
    • Hidy Han's avatar
      Expose Runtime.setAsyncCallStackDepth API for async stack collection. · f69527ee
      Hidy Han authored
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: I4a29336a585bb690f915c876b3b07eb2601d027b
      Reviewed-on: https://chromium-review.googlesource.com/1080225
      Commit-Queue: Hidy Han <hidyhan@chromium.org>
      Reviewed-by: 's avatarPavel Feldman <pfeldman@chromium.org>
      Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53466}
      f69527ee
  5. 31 May, 2018 5 commits
    • Alexey Kozyatinskiy's avatar
      [inspector] added Runtime.installBinding method · 49c4ac77
      Alexey Kozyatinskiy authored
      A lot of different clients use console.debug as a message channel from
      page to protocol client. console.debug is a little slow and not
      designed for this use case.
      
      This CL introduces new method: Runtime.installBinding. This method
      installs binding function by given name on global object on each
      inspected context including any context created later.
      Binding function takes exactly one string argument. Each time when
      binding function is called, Runtime.bindingCalled notification is
      triggered and includes passed payload.
      
      Binding function survives page reload and reinstalled right after
      console object is setup. So installed binding can be used inside
      script added by Page.addScriptToEvaluateOnNewDocument so client may do
      something like:
      Runtime.installBinding({name: 'send'});
      Page.addScriptToEvaluateOnNewDocument({source: 'console.debug = send'});
      .. navigate page ..
      
      In microbenchmark this function is ~4.6 times faster then
      console.debug.
      
      R=lushnikov@chromium.org,pfeldman@chromium.org
      
      Bug: none
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: I3e0e231dde9d45116709d248f6e9e7ec7037e8e3
      Reviewed-on: https://chromium-review.googlesource.com/1077662
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53462}
      49c4ac77
    • Sergiy Byelozyorov's avatar
      Revert "[inspector] RemoteObject.description should be empty for primitive type" · bbfe7f32
      Sergiy Byelozyorov authored
      This reverts commit 003159e7.
      
      Reason for revert: breaks roll into Chromium: https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_headless_rel/3140
      
      Original change's description:
      > [inspector] RemoteObject.description should be empty for primitive type
      > 
      > We currently report description field for numbers. On client side user
      > can calculate description as remoteObject.unserializableValue ||
      > (remoteObject.value + ''). Let's report description only for objects to
      > simplify value -> remoteObject logic a bit.
      > 
      > R=​dgozman@chromium.org
      > TBR=jgruber@chromium.org
      > 
      > Bug: chromium:595206
      > Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      > Change-Id: I91356a44aa3024e20c8f966869abf4a41b88e4bc
      > Reviewed-on: https://chromium-review.googlesource.com/737485
      > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Reviewed-by: Pavel Feldman <pfeldman@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#53453}
      
      TBR=dgozman@chromium.org,pfeldman@chromium.org,kozyatinskiy@chromium.org
      
      Change-Id: Ifc184e1ac158d9ea7034922a7250444448fac49f
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:595206
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      Reviewed-on: https://chromium-review.googlesource.com/1081207Reviewed-by: 's avatarSergiy Byelozyorov <sergiyb@chromium.org>
      Commit-Queue: Sergiy Byelozyorov <sergiyb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53461}
      bbfe7f32
    • Alexey Kozyatinskiy's avatar
      [inspector] removed last usage of debugger context on inspector side · d920bf37
      Alexey Kozyatinskiy authored
      This is another step to remove a huge amount of legacy code from v8.
      
      R=dgozman@chromium.org
      
      Bug: v8:5530
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: I634bda41c53a49dc4912291eb52f02847f56f4f3
      Reviewed-on: https://chromium-review.googlesource.com/1080398Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53459}
      d920bf37
    • Alexey Kozyatinskiy's avatar
      [inspector] RemoteObject.description should be empty for primitive type · 003159e7
      Alexey Kozyatinskiy authored
      We currently report description field for numbers. On client side user
      can calculate description as remoteObject.unserializableValue ||
      (remoteObject.value + ''). Let's report description only for objects to
      simplify value -> remoteObject logic a bit.
      
      R=dgozman@chromium.org
      TBR=jgruber@chromium.org
      
      Bug: chromium:595206
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: I91356a44aa3024e20c8f966869abf4a41b88e4bc
      Reviewed-on: https://chromium-review.googlesource.com/737485
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarPavel Feldman <pfeldman@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53453}
      003159e7
    • Alexey Kozyatinskiy's avatar
      [inspector] nice stepOut from async function · 47b650e2
      Alexey Kozyatinskiy authored
      If async function A awaited async function B, stepOut from function B
      should go to function A.
      
      Bug: v8:7753
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: Iedc1d8b85a52aa60519e56b319325436fc2168c9
      Reviewed-on: https://chromium-review.googlesource.com/1054618
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53451}
      47b650e2
  6. 30 May, 2018 3 commits
    • Alexey Kozyatinskiy's avatar
      [inspector] reenable some inspector tests · 85bb3ed2
      Alexey Kozyatinskiy authored
      TBR=dgozman@chromium.org
      
      Bug: v8:6170,v8:6171
      Change-Id: I1f3eb7fbe1c2a9347428ce9742f22826035be52d
      Reviewed-on: https://chromium-review.googlesource.com/1080046Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53450}
      85bb3ed2
    • 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
    • Alexey Kozyatinskiy's avatar
      [inspector] use interrupt for pause only as last resort · 6d87d957
      Alexey Kozyatinskiy authored
      With this CL we use interrupt for pause in two cases:
      - when we process Debugger.pause on interruption,
      - when we would like to break as soon as possible after OOM.
      In all other cases, e.g. for async step into we use break
      on function call by calling StepIn debugger action.
      
      In mentioned cases we should not actually use interrupt as well:
      - Debugger.pause in this case scheduled using interrupt and we
        may just break right now without requesting another interrupt,
        unfortunately blink side is not ready,
      - we should use more reliable way to break right after near OOM
        callback, otherwise we can get this callback, increase limit,
        request break on next interrupt, before interrupt get another
        huge memory allocation and crash.
      
      There are couple advantages:
      - we get much better break locations for async stepping
        (see inspector tests expectations),
      - we can remove DEBUG_BREAK interruption
        (it should speedup blackboxing with async tasks, see
        removed todo in debug.cc for details)
      - it is required preparation step for async step out,
        (see https://chromium-review.googlesource.com/c/v8/v8/+/1054618)
      
      Bug: v8:7753
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: Iabd7627dbffa9a0eab1736064caf589d02591926
      Reviewed-on: https://chromium-review.googlesource.com/1054155
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53439}
      6d87d957
  7. 24 May, 2018 1 commit
    • Jaroslav Sevcik's avatar
      [generators] Store parameters in the generator object. · ea7499f5
      Jaroslav Sevcik authored
      Currently, we context allocate all parameters for generators.
      
      With this CL, we keep arguments on stack (unless they escape to inner
      closure) and copy them between the stack and the generator's register
      file on suspend/resume. This will save context allocation in most cases.
      
      Note: There is an asymmetry between suspend and resume.
      - Suspend copies arguments and registers to the generator.
      - Resume copies only the registers from the generator, the arguments
        are copied by the ResumeGenerator trampoline.
      
      Bug: v8:5164
      Change-Id: I6333898c60abf461b1ab1b5c6d3dc7188fa95649
      Reviewed-on: https://chromium-review.googlesource.com/1063712
      Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53327}
      ea7499f5
  8. 17 May, 2018 1 commit
  9. 09 May, 2018 1 commit
  10. 08 May, 2018 2 commits
  11. 03 May, 2018 1 commit
  12. 26 Apr, 2018 3 commits
  13. 25 Apr, 2018 2 commits
  14. 23 Apr, 2018 2 commits
  15. 19 Apr, 2018 2 commits
  16. 14 Apr, 2018 1 commit
  17. 13 Apr, 2018 2 commits
  18. 11 Apr, 2018 1 commit
  19. 05 Apr, 2018 1 commit
    • Alexey Kozyatinskiy's avatar
      Reland "[debug] introduced runtime side effect check" · 71018812
      Alexey Kozyatinskiy authored
      This is a reland of 7a2c3713
      
      Original change's description:
      > [debug] introduced runtime side effect check
      > 
      > This CL demonstrates minimum valuable addition to existing debug evaluate
      > without side effects mechanism.
      > With this CL user can evaluate expressions like:
      > [a,b] // create any kind of temporary array literals
      > [a,b].reduce((x,y) => x + y, 0); // use reduce method
      > [1,2,3].fill(2); // change temporary arrays
      > 
      > The core idea: any change of the object created during evaluation without
      > side effects is side effect free. As soon as we try to store this temporary
      > object to object existed before evaluation we will terminate execution.
      > 
      > Implementation:
      > - track all objects allocated during evaluation and mark them as temporary,
      > - patch all bytecodes which change objects.
      > 
      > A little more details (including performance analysis): [1].
      > 
      > [1] https://docs.google.com/document/d/10qqAtZADspPnpYa6SEdYRxrddfKIZJIzbLtGpsZQkRo/edit#
      > 
      > Bug: v8:7588
      > Change-Id: I69f7b96e1ebd7ad0022219e8213211c7be72a111
      > Reviewed-on: https://chromium-review.googlesource.com/972615
      > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52370}
      
      Bug: v8:7588
      Change-Id: Ibc92bf19155f2ddaedae39b0c576b994e84afcf8
      Reviewed-on: https://chromium-review.googlesource.com/996760Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52373}
      71018812
  20. 04 Apr, 2018 3 commits
    • Aleksey Kozyatinskiy's avatar
      Revert "[debug] introduced runtime side effect check" · 539a2443
      Aleksey Kozyatinskiy authored
      This reverts commit 7a2c3713.
      
      Reason for revert: msan is broken
      
      Original change's description:
      > [debug] introduced runtime side effect check
      > 
      > This CL demonstrates minimum valuable addition to existing debug evaluate
      > without side effects mechanism.
      > With this CL user can evaluate expressions like:
      > [a,b] // create any kind of temporary array literals
      > [a,b].reduce((x,y) => x + y, 0); // use reduce method
      > [1,2,3].fill(2); // change temporary arrays
      > 
      > The core idea: any change of the object created during evaluation without
      > side effects is side effect free. As soon as we try to store this temporary
      > object to object existed before evaluation we will terminate execution.
      > 
      > Implementation:
      > - track all objects allocated during evaluation and mark them as temporary,
      > - patch all bytecodes which change objects.
      > 
      > A little more details (including performance analysis): [1].
      > 
      > [1] https://docs.google.com/document/d/10qqAtZADspPnpYa6SEdYRxrddfKIZJIzbLtGpsZQkRo/edit#
      > 
      > Bug: v8:7588
      > Change-Id: I69f7b96e1ebd7ad0022219e8213211c7be72a111
      > Reviewed-on: https://chromium-review.googlesource.com/972615
      > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52370}
      
      TBR=ulan@chromium.org,rmcilroy@chromium.org,yangguo@chromium.org,kozyatinskiy@chromium.org,leszeks@chromium.org
      
      Change-Id: Ied1739c6308b13a4981189e0999f5912316cf456
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7588
      Reviewed-on: https://chromium-review.googlesource.com/996135Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52371}
      539a2443
    • Alexey Kozyatinskiy's avatar
      [debug] introduced runtime side effect check · 7a2c3713
      Alexey Kozyatinskiy authored
      This CL demonstrates minimum valuable addition to existing debug evaluate
      without side effects mechanism.
      With this CL user can evaluate expressions like:
      [a,b] // create any kind of temporary array literals
      [a,b].reduce((x,y) => x + y, 0); // use reduce method
      [1,2,3].fill(2); // change temporary arrays
      
      The core idea: any change of the object created during evaluation without
      side effects is side effect free. As soon as we try to store this temporary
      object to object existed before evaluation we will terminate execution.
      
      Implementation:
      - track all objects allocated during evaluation and mark them as temporary,
      - patch all bytecodes which change objects.
      
      A little more details (including performance analysis): [1].
      
      [1] https://docs.google.com/document/d/10qqAtZADspPnpYa6SEdYRxrddfKIZJIzbLtGpsZQkRo/edit#
      
      Bug: v8:7588
      Change-Id: I69f7b96e1ebd7ad0022219e8213211c7be72a111
      Reviewed-on: https://chromium-review.googlesource.com/972615
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52370}
      7a2c3713
    • Andrey Lushnikov's avatar
      DevTools: Runtime.callFunctionOn should allow evals · 16378186
      Andrey Lushnikov authored
      This patch teaches Runtime.callFunctionOn to run evals inside its
      task. This is aligned with how Runtime.evaluate works.
      
      R=kozy
      
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: I3189beebc9020703d2b2e23a7c828a2394d43910
      Reviewed-on: https://chromium-review.googlesource.com/994070
      Commit-Queue: Andrey Lushnikov <lushnikov@chromium.org>
      Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52339}
      16378186
  21. 28 Mar, 2018 1 commit