1. 09 Feb, 2017 6 commits
  2. 08 Feb, 2017 1 commit
    • yangguo's avatar
      Link type feedback vectors to the shared function info. · c78d7fa1
      yangguo authored
      Previously, both type feedback vector and the shared function info
      of a function points to the matching type feedback metadata. This
      makes finding the shared function info of a type feedback vector
      difficult.
      
      Instead, we now point the type feeback vector to the shared function
      info, and find the metadata through the shared function info.
      
      Also remove the obsolete empty type feedback vector.
      
      R=hpayer@chromium.org, mvstanton@chromium.org
      BUG=v8:5808
      
      Review-Url: https://codereview.chromium.org/2672363002
      Cr-Commit-Position: refs/heads/master@{#43026}
      c78d7fa1
  3. 07 Feb, 2017 8 commits
  4. 06 Feb, 2017 1 commit
    • mvstanton's avatar
      [TypeFeedbackVector] Root feedback vectors at function literal site. · aea3ce3d
      mvstanton authored
      TypeFeedbackVectors are strongly rooted by a closure. However, in modern
      JavaScript closures are created and abandoned more freely. An important
      closure may not be present in the root-set at time of garbage collection,
      even though we've cached optimized code and use it regularly. For
      example, consider leaf functions in an event dispatching system. They may
      well be "hot," but tragically non-present when we collect the heap.
      
      Until now, we've relied on a weak root to cache the feedback vector in
      this case. Since there is no way to signal intent or relative importance,
      this weak root is as susceptible to clearing as any other weak root at
      garbage collection time.
      
      Meanwhile, the feedback vector has become more important. All of our
      ICs store their data there. Literal and regex boilerplates are stored there.
      If we lose the vector, then we not only lose optimized code built from
      it, we also lose the very feedback which allowed us to create that optimized
      code. Therefore it's vital to express that dependency through the root
      set.
      
      This CL does this by creating a strong link to a feedback
      vector at the instantiation site of the function closure.
      This instantiation site is in the code and feedback vector
      of the outer closure.
      
      BUG=v8:5456
      
      Review-Url: https://codereview.chromium.org/2674593003
      Cr-Commit-Position: refs/heads/master@{#42953}
      aea3ce3d
  5. 04 Feb, 2017 1 commit
  6. 03 Feb, 2017 2 commits
  7. 02 Feb, 2017 3 commits
  8. 01 Feb, 2017 1 commit
  9. 30 Jan, 2017 3 commits
  10. 27 Jan, 2017 3 commits
    • bjaideep's avatar
      PPC/s390: [liveedit] reimplement frame restarting. · 9515f7ed
      bjaideep authored
      Port 3f47c63d
      
      Original Commit Message:
      
          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=yangguo@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
      BUG=v8:5587
      LOG=N
      
      Review-Url: https://codereview.chromium.org/2663453004
      Cr-Commit-Position: refs/heads/master@{#42748}
      9515f7ed
    • 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
    • clemensh's avatar
      [inspector] Expose GetPossibleBreakpoints for wasm · c6663ef1
      clemensh authored
      and add an inspector test for it. Also test that a breakpoint can be
      set on each reported position, and that it is also hit during
      execution.
      This CL also fixes two little things which were uncovered by the new
      test.
      
      R=yangguo@chromium.org, titzer@chromium.org, kozyatinskiy@chromium.org
      BUG=v8:5822
      
      Review-Url: https://codereview.chromium.org/2655653003
      Cr-Commit-Position: refs/heads/master@{#42722}
      c6663ef1
  11. 26 Jan, 2017 2 commits
  12. 25 Jan, 2017 3 commits
    • kozyatinskiy's avatar
      [debug] remove StepFrame · bc7eb04d
      kozyatinskiy authored
      This action was used by inspector for blackboxing and isn't needed with new blackboxing implementation inside V8.
      
      BUG=none
      R=yangguo@chromium.org,clemensh@chromium.org
      TBR=bmeurer@chromium.org
      
      Review-Url: https://codereview.chromium.org/2650943011
      Cr-Commit-Position: refs/heads/master@{#42670}
      bc7eb04d
    • kozyatinskiy's avatar
      [inspector] ignores debugger; in blackboxed code · c8691efb
      kozyatinskiy authored
      Current state and proposed changes for blackboxing: https://docs.google.com/document/d/1hnzaXPAN8_QC5ENxIgxgMNDbXLraM_OXT73rAyijTF8/edit?usp=sharing
      
      BUG=v8:5842,chromium:583193
      R=yangguo@chromium.org,dgozman@chromium.org,alph@chromium.org
      
      Review-Url: https://codereview.chromium.org/2648353006
      Cr-Commit-Position: refs/heads/master@{#42668}
      c8691efb
    • kozyatinskiy's avatar
      [inspector] change target promise for kDebugWillHandle & kDebugDidHandle · cb545a8c
      kozyatinskiy authored
      - kDebugPromiseCreated(task, parent_task)
      This event occurs when promise is created (PromiseHookType::Init). V8Debugger uses this event to maintain task -> parent task map.
      
      - kDebugEnqueueAsyncFunction(task)
      This event occurs when first internal promise for async function is created. V8Debugger collects stack trace at this point.
      
      - kDebugEnqueuePromiseResolve(task),
      This event occurs when Promise fulfills with resolved status. V8Debugger collects stack trace at this point.
      
      - kDebugEnqueuePromiseReject(task),
      This event occurs when Promise fulfills with rejected status. V8Debugger collects stack trace at this point.
      
      - kDebugPromiseCollected,
      This event occurs when Promise is collected and no other chained callbacks can be added. V8Debugger removes information about async task for this promise.
      
      - kDebugWillHandle,
      This event occurs when chained promise function (either resolve or reject handler) is called. V8Debugger installs parent promise's stack (based on task -> parent_task map) as current if available or current promise's scheduled stack otherwise.
      
      - kDebugDidHandle,
      This event occurs after chained promise function has finished. V8Debugger restores asynchronous call chain to previous one.
      
      With this change all instrumentation calls are related to current promise (before WillHandle and DidHandle were related to next async task).
      
      Before V8Debugger supported only the following:
      - asyncTaskScheduled(task1)
      - asyncTaskStarted(task1)
      - asyncTaskFinished(task1)
      
      Now V8Debugger supports the following:
      - asyncTaskScheduled(parent_task)
      ..
      - asyncTaskCreated(task, parent_task),
      - asyncTaskStarted(task), uses parent_task scheduled stack
      - asyncTaskScheduled(task)
      - asyncTaskFinished(task)
      
      Additionally: WillHandle and DidHandle were migrated to PromiseHook API.
      
      More details: https://docs.google.com/document/d/1u19N45f1gSF7M39mGsycJEK3IPyJgIXCBnWyiPeuJFE
      
      BUG=v8:5738
      R=dgozman@chromium.org,gsathya@chromium.org,yangguo@chromium.org
      
      Review-Url: https://codereview.chromium.org/2650803003
      Cr-Commit-Position: refs/heads/master@{#42644}
      cb545a8c
  13. 24 Jan, 2017 3 commits
    • rmcilroy's avatar
      Revert "[Parse] ParseInfo owns the parsing Zone." · 7524e523
      rmcilroy authored
      Speculative reason for issue 684481.
      
      BUG=chromium:684481
      TBR=marja@chromium.org,mstarzinger@chromium.org,ahaas@chromium.org,verwaest@chromium.org,
      
      Original issue's description:
      > [Parse] ParseInfo owns the parsing Zone.
      >
      > Moves ownership of the parsing Zone to ParseInfo with a shared_ptr. This is
      > in preperation for enabling background compilation jobs for inner functions
      > share the AST in the outer-function's parse zone memory (read-only), with the
      > and zone being released when all compilation jobs have completed.
      >
      > BUG=v8:5203, v8:5215
      > Review-Url: https://codereview.chromium.org/2632123006
      > Cr-Commit-Position: refs/heads/master@{#42562}
      > Committed: https://chromium.googlesource.com/v8/v8/+/4b0101d369af121a6daf5e5c731cb939c026d526
      
      Review-Url: https://codereview.chromium.org/2648383005
      Cr-Commit-Position: refs/heads/master@{#42633}
      7524e523
    • clemensh's avatar
      [wasm] Implement stepping in wasm code · 3dea55b4
      clemensh authored
      Implement stepping by remembering the current step action in the wasm
      interpreter handle in WasmDebugInfo, and using it when continuing
      execution in the interpreter.
      The control flow is as follows: After module compilation, the user sets
      a breakpoint in wasm. The respective function is redirected to the
      interpreter and the breakpoint is set on the interpreter. When it is
      hit, we notify all debug event listeners, which might prepare stepping.
      When returning from these listeners, before continuing execution, we
      check whether stepping was requested and continue execution in the
      interpreter accordingly.
      
      Stepping from Wasm to JS and vice versa will be implemented and tested
      in a follow-up CL. Testing this requires breakpoints and stepping in
      Wasm to be exposed via the inspector interface, such that we can write
      an inspector test. This mixed JS-Wasm-execution is hard to set up in a
      cctest.
      
      R=titzer@chromium.org, yangguo@chromium.org
      BUG=
      
      Review-Url: https://codereview.chromium.org/2649533002
      Cr-Commit-Position: refs/heads/master@{#42624}
      3dea55b4
    • kozyatinskiy's avatar
      [inspector] implemented blackboxing inside v8 · ac50c79a
      kozyatinskiy authored
      V8 has internal mechanism to ignore steps and breaks inside internal scripts, in this CL it's reused for blackboxing implementation.
      Advantages:
      - much faster blackboxing implementation (before we at least wrap and collect current call stack for each step),
      - get rid of StepFrame action and potential pause in blackboxed code after N StepFrame steps,
      - simplification of debugger agent logic.
      Disadvtanges:
      - currently when user was paused in blackboxed code (e.g. on breakpoint) and then makes step action, debugger ignores blackboxed state of the script and allows to use step actions as usual - this behavior is regressed, we still able to support it on frontend side.
      
      Current state and proposed changes for blackboxing: https://docs.google.com/document/d/1hnzaXPAN8_QC5ENxIgxgMNDbXLraM_OXT73rAyijTF8/edit?usp=sharing
      
      BUG=v8:5842
      R=yangguo@chromium.org,dgozman@chromium.org,alph@chromium.org
      
      Review-Url: https://codereview.chromium.org/2633803002
      Cr-Commit-Position: refs/heads/master@{#42614}
      ac50c79a
  14. 23 Jan, 2017 2 commits
  15. 20 Jan, 2017 1 commit