1. 20 Sep, 2018 1 commit
  2. 31 Jul, 2018 1 commit
  3. 27 Jul, 2018 1 commit
    • Peter Marshall's avatar
      [cpu-profiler] Use instruction start as the key for the CodeMap · ba752ea4
      Peter Marshall authored
      Previously we used the start address of the AbstractCode object. This
      doesn't make sense for off-heap builtins, where the code isn't contained
      in the object itself. It also hides other potential problems - sometimes
      the sample.pc is inside the AbstractCode object header - this is
      never valid.
      
      There were a few changes necessary to make this happen:
        - Change the interface of CodeMoveEvent. Now 'to' and 'from' are both
          AbstractCode objects, which is nice because many users were taking
          'to' and adding the header offset to it to try and find the
          instruction start address. This isn't valid for off-heap builtins.
        - Fix a bug in CodeMap::MoveCode where we didn't update the CodeEntry
          object to reflect the new instruction_start.
        - Rename the 'start' field in all of the CodeEventRecord sub-classes
          to make it clear that this is the address of the first instruction.
        - Fix the confusion in RecordTickSample between 'tos' and 'pc' which
          caused pc_offset to be calculated incorrectly.
      
      Bug: v8:7983
      Change-Id: I3e9dddf74e4b2e96a5f031d216ef7008d6f184d1
      Reviewed-on: https://chromium-review.googlesource.com/1148457
      Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#54749}
      ba752ea4
  4. 16 Jul, 2018 1 commit
  5. 03 Jul, 2018 1 commit
  6. 22 Jun, 2018 1 commit
  7. 24 May, 2018 1 commit
    • Peter Marshall's avatar
      [cpu-profiler] Only store deopt inline frames for functions that need it · 0bfcbdd4
      Peter Marshall authored
      We store deopt inline frames for all functions when we receive the code
      creation event. We only ever use this information for code which is
      deoptimized. Given that we receive code deopt events, we can just store
      this information when the code is deoptimized.
      
      At the time of the code deopt event, we also know the associated
      deopt_id. That means we don't need to store a map of deopt_ids to
      vectors of frames, because we will only ever access the frames for the
      deopt_id that is already set.
      
      This means we store way less data, particularly for long-running
      processes which see fewer deopts. This saves 10MiB peak memory on the
      node server example.
      
      Bug: v8:7719
      Change-Id: If6cf5ec413848e4c9f3c1e2106366ae2adae6fb1
      Reviewed-on: https://chromium-review.googlesource.com/1050289
      Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      Reviewed-by: 's avatarAlexei Filippov <alph@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53330}
      0bfcbdd4
  8. 23 May, 2018 3 commits
    • Alexei Filippov's avatar
      [cpu-profiler] Reuse free slots in code_entries_ · 3e1126bf
      Alexei Filippov authored
      The patch makes it manage a free list of released code_entries_ slots,
      and reuse the slots as needed.
      
      BUG=v8:7719
      
      Change-Id: I07df1ce983fe00e0ca3d1a1ea20e1a141aabad99
      Reviewed-on: https://chromium-review.googlesource.com/1062769Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Commit-Queue: Alexei Filippov <alph@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53314}
      3e1126bf
    • Alexei Filippov's avatar
      [cpu-profiler] Prefix wasm resource names with "wasm " · 1143a6c7
      Alexei Filippov authored
      BUG=chromium:844150
      
      Change-Id: I0f7e10fb9778b3de76591ad4819be45c8c50c8d4
      Reviewed-on: https://chromium-review.googlesource.com/1064815Reviewed-by: 's avatarStephan Herhut <herhut@chromium.org>
      Commit-Queue: Alexei Filippov <alph@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53313}
      1143a6c7
    • Peter Marshall's avatar
      [cpu-profiler] Add a new profiling mode with a more detailed call tree. · ecae80cd
      Peter Marshall authored
      The current profiling mode (called kLeafNodeLineNumbers in this CL)
      produces a tree, with each node representing a stack frame that is seen
      in one or more samples taken during profiling. These nodes refer to a
      particular function in a stack trace, but not to a particular line or
      callsite within that function.
      
      This CL adds a new more (called kCallerLineNumbers) which produces a
      different profile tree, where each stack trace seen during profiling,
      including the line number, has a unique path in the tree.
      
      The profile tree was previously keyed on CodeEntry*. Now it is keyed on
      the pair of CodeEntry* and line_number, meaning it has distinct nodes
      for those combinations which exist, and each distinct stack trace that
      was sampled is represented in the tree.
      
      For optimized code where we have inline frames, there are no line
      numbers for the inline frames in the stack trace, causing duplicate
      branches in the tree with kNoLineNumberInfo as the reported line number.
      This will be addressed in follow-ups.
      
      Bug: v8:7018
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
      Change-Id: I512e221508f5b50ec028306d212263b514a9fb24
      Reviewed-on: https://chromium-review.googlesource.com/1013493
      Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53298}
      ecae80cd
  9. 22 May, 2018 1 commit
  10. 18 May, 2018 1 commit
    • Peter Marshall's avatar
      [cpu-profiler] Move bailout reason into rare_info struct · 29ea4d1e
      Peter Marshall authored
      This was set very regularly in FillFunctionInfo, but it was almost
      always set to kNoReason, because the associated SFI had no bailout
      reason. Given that having a bailout reason is the rare case, we
      just assume an empty bailout reason, and use the rare_data_ struct
      to store the string pointer if we do need it.
      
      This saves another pointer of space on the CodeEntry object (approx
      1.4 MiB on the node server example).
      
      Bug: v8:7719
      Change-Id: I8e2272b572285ddf353ba0b303e6da095b7d5272
      Reviewed-on: https://chromium-review.googlesource.com/1064370
      Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      Reviewed-by: 's avatarAlexei Filippov <alph@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53244}
      29ea4d1e
  11. 16 May, 2018 1 commit
    • Alexei Filippov's avatar
      [cpu-profiler] Eagerly delete not used CodeEntry'es · c6c28f7a
      Alexei Filippov authored
      Currently ProfilerListener holds all the CodeEntries it ever
      created during the profiling session. It is not capable of removing
      entries corresponding to the code objects discarded by GC as there's
      no such code event.
      
      However it is sometimes possible to tell if a code object was GCed.
      Hook up to the CodeMap code entry removal and if the entry has never
      been hit by a sample we can safely delete it.
      
      As a bonus the CodeEntryInfo size has been reduced on x64, which also
      saves 8 x <number of code entries> bytes.
      
      BUG=v8:7719
      
      Change-Id: I988bc5b59f3fba07157a9f472cbcf68596fcd969
      Reviewed-on: https://chromium-review.googlesource.com/1054346Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Commit-Queue: Alexei Filippov <alph@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53222}
      c6c28f7a
  12. 11 May, 2018 1 commit
  13. 07 May, 2018 2 commits
  14. 04 May, 2018 2 commits
  15. 23 Apr, 2018 1 commit
  16. 14 Apr, 2018 1 commit
    • Jakob Kummerow's avatar
      [ubsan] Change Address typedef to uintptr_t · 2459046c
      Jakob Kummerow authored
      The "Address" type is V8's general-purpose type for manipulating memory
      addresses. Per the C++ spec, pointer arithmetic and pointer comparisons
      are undefined behavior except within the same array; since we generally
      don't operate within a C++ array, our general-purpose type shouldn't be
      a pointer type.
      
      Bug: v8:3770
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: Ib96016c24a0f18bcdba916dabd83e3f24a1b5779
      Reviewed-on: https://chromium-review.googlesource.com/988657
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52601}
      2459046c
  17. 12 Apr, 2018 1 commit
    • Peter Marshall's avatar
      [cpu-profiler] Fix bugs and add tests for JITLineInfoTable · 4feb5ce7
      Peter Marshall authored
      Looking up line numbers with the JITLineInfoTable would sometimes give
      wrong answers. Fix these bugs and add a cctest for this data structure.
      
      Also do some cleanup while we're here like inlining the (empty)
      constructor and destructor and removing the empty() method which is
      only used unnecessarily anyway, to make the contract of
      GetSourceLineNumber a bit clearer.
      
      Also rename the data structure to SourcePositionTable, because it
      doesn't just provide info for JIT code, but also bytecode, and 'Info'
      is pretty ambiguous.
      
      Bug: v8:7018
      Change-Id: I126581c844d85df6b2b3f80f2f5acbce01c16ba1
      Reviewed-on: https://chromium-review.googlesource.com/1006795Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52571}
      4feb5ce7
  18. 16 Mar, 2018 1 commit
  19. 06 Feb, 2018 1 commit
  20. 05 Feb, 2018 1 commit
  21. 02 Feb, 2018 2 commits
  22. 29 Dec, 2017 1 commit
  23. 18 Oct, 2017 1 commit
  24. 13 Oct, 2017 1 commit
  25. 11 Oct, 2017 1 commit
  26. 07 Sep, 2017 1 commit
  27. 29 Aug, 2017 1 commit
  28. 29 Jun, 2017 1 commit
  29. 23 Feb, 2017 1 commit
  30. 27 Jan, 2017 1 commit
  31. 20 Dec, 2016 1 commit
  32. 19 Dec, 2016 2 commits
  33. 07 Dec, 2016 1 commit
  34. 02 Dec, 2016 1 commit