1. 17 Mar, 2015 1 commit
  2. 27 Feb, 2015 1 commit
  3. 20 Feb, 2015 1 commit
    • loislo's avatar
      CpuProfiler: eliminate cpu-profiler dependency from heap-inl.h · 8ba89cce
      loislo authored
      We accessed to cpu_profiler for tracking SharedFunctionInfo objects movements and used their addresses for generating function_id. Actually we could replace the manually generated shared_id by the pair script_id + position. In this case we can drop SharedFunctionInfo events support from cpu_profiler and remove the dependency.
      
      BTW GetCallUid was used as an unique identifier of the function on the front-end side. Actually it is a hash which might not be unique. So I renamed GetCallUid with GetHash and implemented GetFunctionId method.
      
      BUG=452067
      LOG=n
      
      Review URL: https://codereview.chromium.org/941973002
      
      Cr-Commit-Position: refs/heads/master@{#26775}
      8ba89cce
  4. 12 Feb, 2015 3 commits
    • loislo's avatar
      CPUProfiler: Push deopt reason further to ProfileNode. · d23ab23b
      loislo authored
      1) create beefy RelocInfo table when cpu profiler is active, so if a function
      was optimized when profiler was active RelocInfo would get separate DeoptInfo
      for the each deopt case.
      
      2) push DeoptInfo from CodeEntry to ProfileNode.
      When deopt happens we put the info collected on #1 into CodeEntry and record stack sample.
      On the sampling thread we grab the deopt data and append it to the corresponding ProfileNode deopts list.
      
      Sample profile dump.
      [Top down]:
          0  (root) 0 #1
          1     29 #2
          1      test 29 #3
          2        opt_function 29 #4
          2          opt_function 29 #5
                         deopted at 118 with reason 'not a heap number'
                         deopted at 137 with reason 'division by zero'
      
      BUG=452067
      LOG=n
      
      Committed: https://crrev.com/ce8701b247d3c6604f24f17a90c02d17b4417f54
      Cr-Commit-Position: refs/heads/master@{#26615}
      
      Review URL: https://codereview.chromium.org/919953002
      
      Cr-Commit-Position: refs/heads/master@{#26630}
      d23ab23b
    • loislo's avatar
      Revert of CPUProfiler: Push deopt reason further to ProfileNode. (patchset #1... · cb6ea146
      loislo authored
      Revert of CPUProfiler: Push deopt reason further to ProfileNode. (patchset #1 id:1 of https://codereview.chromium.org/919953002/)
      
      Reason for revert:
      static initializers broke the build
      
      Original issue's description:
      > CPUProfiler: Push deopt reason further to ProfileNode.
      >
      > 1) create beefy RelocInfo table when cpu profiler is active, so if a function
      > was optimized when profiler was active RelocInfo would get separate DeoptInfo
      > for the each deopt case.
      >
      > 2) push DeoptInfo from CodeEntry to ProfileNode.
      > When deopt happens we put the info collected on #1 into CodeEntry and record stack sample.
      > On the sampling thread we grab the deopt data and append it to the corresponding ProfileNode deopts list.
      >
      > Sample profile dump.
      > [Top down]:
      >     0  (root) 0 #1
      >     1     29 #2
      >     5      test 29 #3
      >     3        opt_function 29 #4
      >                  deopted at 52 with reason 'not a heap number'
      >                  deopted at 71 with reason 'division by zero'
      >
      > BUG=452067
      > LOG=n
      >
      > Committed: https://crrev.com/ce8701b247d3c6604f24f17a90c02d17b4417f54
      > Cr-Commit-Position: refs/heads/master@{#26615}
      
      TBR=jarin@chromium.org,svenpanne@chromium.org,yurys@chromium.org,alph@chromium.org
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=452067
      
      Review URL: https://codereview.chromium.org/915173005
      
      Cr-Commit-Position: refs/heads/master@{#26616}
      cb6ea146
    • loislo's avatar
      CPUProfiler: Push deopt reason further to ProfileNode. · ce8701b2
      loislo authored
      1) create beefy RelocInfo table when cpu profiler is active, so if a function
      was optimized when profiler was active RelocInfo would get separate DeoptInfo
      for the each deopt case.
      
      2) push DeoptInfo from CodeEntry to ProfileNode.
      When deopt happens we put the info collected on #1 into CodeEntry and record stack sample.
      On the sampling thread we grab the deopt data and append it to the corresponding ProfileNode deopts list.
      
      Sample profile dump.
      [Top down]:
          0  (root) 0 #1
          1     29 #2
          5      test 29 #3
          3        opt_function 29 #4
                       deopted at 52 with reason 'not a heap number'
                       deopted at 71 with reason 'division by zero'
      
      BUG=452067
      LOG=n
      
      Review URL: https://codereview.chromium.org/919953002
      
      Cr-Commit-Position: refs/heads/master@{#26615}
      ce8701b2
  5. 10 Feb, 2015 1 commit
    • loislo's avatar
      Propagate DeoptInfo to cpu-profiler · 86cae163
      loislo authored
      1) Deoptimizer::Reason was replaced with Deoptimizer::DeoptInfo
      because it also has raw position. Also the old name clashes with DeoptReason enum.
      
      2) c_entry_fp assignment call was added to EntryGenerator::Generate
      So we can calculate sp and have a chance to record the stack for the deopting function.
      btw it makes the test stable.
      
      3) new kind of CodeEvents was added to cpu-profiler
      
      4) GetDeoptInfo method was extracted from PrintDeoptLocation.
      So it could be reused in cpu profiler.
      
      BUG=452067
      LOG=n
      
      Review URL: https://codereview.chromium.org/910773002
      
      Cr-Commit-Position: refs/heads/master@{#26545}
      86cae163
  6. 03 Jun, 2014 1 commit
  7. 22 May, 2014 1 commit
  8. 29 Apr, 2014 1 commit
  9. 23 Aug, 2013 1 commit
  10. 30 Jul, 2013 1 commit
    • yurys@chromium.org's avatar
      Simplify sampling rate calculation · 6ba502fa
      yurys@chromium.org authored
      Sampling rate is now calculated as total number of samples divided by profiling time in ms. Before the patch the sampling rate was updated once per 100ms which doesn't have any obvious advantage over the simpler method.
      
      Also we are going to get rid of the profile node self and total time calculation in the v8 CPU profiler and only expose profiling start/end time for CpuProfile and number of ticks on each ProfileNode and let clients do all the math should they need it.
      
      BUG=None
      R=bmeurer@chromium.org, loislo@chromium.org
      
      Review URL: https://codereview.chromium.org/21105003
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15944 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      6ba502fa
  11. 07 Jul, 2013 1 commit
    • loislo@chromium.org's avatar
      CPUProfiler: Improve line numbers support in profiler. · 5571dc42
      loislo@chromium.org authored
      1) report line number even if a script has no resource_name (evals);
        a) do that for already compiled functions in log.cc;
        b) do that for fresh evals in compiler.cc;
      
      2) Implement the test for LineNumbers and make it fast and stable, otherwise we have to wait for tick samples;
        a) move processor_->Join() call into new Processor::StopSynchronously method;
        b) Process all the CodeEvents even if we are stopping Processor thread;
        c) make getters for generator and processor;
      
      3) Fix the test for Jit that didn't expect line numbers;
      
      4) Minor refactoring:
        a) in ProcessTicks;
        b) rename enqueue_order_ to last_code_event_id_ for better readability;
        c) rename dequeue_order_ to last_processed_code_event_id_ and make it a member for better readability;
      
      BUG=
      TEST=test-profile-generator/LineNumber
      R=jkummerow@chromium.org, yurys@chromium.org
      
      Review URL: https://codereview.chromium.org/18058008
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15530 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      5571dc42
  12. 02 Jul, 2013 2 commits
  13. 01 Jul, 2013 4 commits
  14. 30 Nov, 2012 1 commit
  15. 16 Nov, 2012 1 commit
  16. 17 Oct, 2012 1 commit
  17. 02 Oct, 2012 1 commit
  18. 14 Sep, 2011 1 commit
  19. 13 Jul, 2011 1 commit
  20. 22 Jun, 2011 1 commit
  21. 30 Mar, 2011 1 commit
  22. 10 Mar, 2011 4 commits
  23. 22 Feb, 2011 1 commit
    • mikhail.naganov@gmail.com's avatar
      Fix CPU profiling for Crankshaft. · 56788625
      mikhail.naganov@gmail.com authored
      The main issue was due to multiple recompilations of functions.  Now
      code objects are grouped by function using SFI object address.
      JSFunction objects are no longer tracked, instead we track SFI object
      moves. To pick a correct code version, we now sample return addresses
      instead of JSFunction addresses.
      
      tools/{linux|mac|windows}-tickprocessor scripts differentiate
      between code optimization states for the same function
      (using * and ~ prefixes introduced earlier).
      
      DevTools CPU profiler treats all variants of function code as
      a single function.
      
      ll_prof treats each optimized variant as a separate entry, because
      it can disassemble each one of them.
      
      tickprocessor.py not updated -- it is deprecated and will be removed.
      
      BUG=v8/1087,b/3178160
      TEST=all existing tests pass, including Chromium layout tests
      
      Review URL: http://codereview.chromium.org/6551011
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6902 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      56788625
  24. 20 Sep, 2010 1 commit
    • mikhail.naganov@gmail.com's avatar
      Show RegExp calls in the profile. · c1903ce3
      mikhail.naganov@gmail.com authored
      It turns out they were filtered out. But when I unfiltered them, I
      discovered another issue: when DevTools run, regexp literals get
      recompiled each time they called (looks like this is concerned with
      switching to full compiler), so I ended up having multiple entries for
      the same regexp. To fix this, I changed the way of how code entries
      equivalence is considered.
      
      BUG=crbug/55999
      TEST=cctest/test-profile-generator/ProfileNodeFindOrAddChildForSameFunction
      (the test isn't for the whole issue, but rather for equivalence testing)
      
      Review URL: http://codereview.chromium.org/3426008
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5492 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      c1903ce3
  25. 22 May, 2010 1 commit
  26. 18 May, 2010 1 commit
    • mikhail.naganov@gmail.com's avatar
      CPU profiler: add secure profiles by filtering out functions using security tokens. · 3d7ce8ac
      mikhail.naganov@gmail.com authored
      As several pages can run in a single V8 instance, it is possible to
      have functions from different security contexts intermixed in a single
      CPU profile.  To avoid exposing function names from one page to
      another, filtering is introduced.
      
      The basic idea is that instead of capturing return addresses from
      stack, we're now capturing JSFunction addresses (as we anyway work
      only with JS stack frames.)  Each JSFunction can reach out for
      context's security token. When providing a profile to a page, the
      profile is filtered using the security token of caller page. Any
      functions with different security tokens are filtered out (yes, we
      only do fast path check for now) and their ticks are attributed to
      their parents.
      
      Review URL: http://codereview.chromium.org/2083005
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4673 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      3d7ce8ac
  27. 15 Apr, 2010 1 commit
  28. 14 Apr, 2010 1 commit
  29. 12 Apr, 2010 1 commit
  30. 07 Apr, 2010 1 commit
  31. 06 Apr, 2010 1 commit