Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(653)

Side by Side Diff: src/log.cc

Issue 1708573003: [WIP]Create a V8 sampler library and tracing controller. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/log.h ('k') | src/profiler/cpu-profiler.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/log.h" 5 #include "src/log.h"
6 6
7 #include <cstdarg> 7 #include <cstdarg>
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "include/v8-sampler.h"
10 #include "src/bailout-reason.h" 11 #include "src/bailout-reason.h"
11 #include "src/base/platform/platform.h" 12 #include "src/base/platform/platform.h"
12 #include "src/bootstrapper.h" 13 #include "src/bootstrapper.h"
13 #include "src/code-stubs.h" 14 #include "src/code-stubs.h"
14 #include "src/deoptimizer.h" 15 #include "src/deoptimizer.h"
15 #include "src/global-handles.h" 16 #include "src/global-handles.h"
16 #include "src/log-inl.h" 17 #include "src/log-inl.h"
17 #include "src/log-utils.h" 18 #include "src/log-utils.h"
18 #include "src/macro-assembler.h" 19 #include "src/macro-assembler.h"
19 #include "src/profiler/cpu-profiler.h" 20 #include "src/profiler/cpu-profiler.h"
20 #include "src/runtime-profiler.h" 21 #include "src/runtime-profiler.h"
21 #include "src/string-stream.h" 22 #include "src/string-stream.h"
22 #include "src/vm-state-inl.h" 23 #include "src/vm-state-inl.h"
24 #include <iostream>
23 25
24 namespace v8 { 26 namespace v8 {
25 namespace internal { 27 namespace internal {
26 28
27 29
28 #define DECLARE_EVENT(ignore1, name) name, 30 #define DECLARE_EVENT(ignore1, name) name,
29 static const char* const kLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = { 31 static const char* const kLogEventsNames[Logger::NUMBER_OF_LOG_EVENTS] = {
30 LOG_EVENTS_AND_TAGS_LIST(DECLARE_EVENT) 32 LOG_EVENTS_AND_TAGS_LIST(DECLARE_EVENT)
31 }; 33 };
32 #undef DECLARE_EVENT 34 #undef DECLARE_EVENT
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 669
668 // Tells whether we are currently recording tick samples. 670 // Tells whether we are currently recording tick samples.
669 bool paused_; 671 bool paused_;
670 }; 672 };
671 673
672 674
673 // 675 //
674 // Ticker used to provide ticks to the profiler and the sliding state 676 // Ticker used to provide ticks to the profiler and the sliding state
675 // window. 677 // window.
676 // 678 //
677 class Ticker: public Sampler { 679 class Ticker: public V8Sampler {
678 public: 680 public:
679 Ticker(Isolate* isolate, int interval): 681 Ticker(Isolate* isolate):
680 Sampler(isolate, interval), 682 V8Sampler(reinterpret_cast<v8::Isolate*>(isolate)),
681 profiler_(NULL) {} 683 profiler_(NULL) {}
682 684
683 ~Ticker() { if (IsActive()) Stop(); } 685 ~Ticker() { if (IsActive()) Stop(); }
684 686
685 virtual void Tick(TickSample* sample) { 687 virtual void Tick(TickSample* sample) {
686 if (profiler_) profiler_->Insert(sample); 688 if (profiler_) profiler_->Insert(sample);
687 } 689 }
688 690
689 void SetProfiler(Profiler* profiler) { 691 void SetProfiler(Profiler* profiler) {
690 DCHECK(profiler_ == NULL); 692 DCHECK(profiler_ == NULL);
(...skipping 1142 matching lines...) Expand 10 before | Expand all | Expand 10 after
1833 if (FLAG_perf_basic_prof) { 1835 if (FLAG_perf_basic_prof) {
1834 perf_basic_logger_ = new PerfBasicLogger(); 1836 perf_basic_logger_ = new PerfBasicLogger();
1835 addCodeEventListener(perf_basic_logger_); 1837 addCodeEventListener(perf_basic_logger_);
1836 } 1838 }
1837 1839
1838 if (FLAG_ll_prof) { 1840 if (FLAG_ll_prof) {
1839 ll_logger_ = new LowLevelLogger(log_file_name.str().c_str()); 1841 ll_logger_ = new LowLevelLogger(log_file_name.str().c_str());
1840 addCodeEventListener(ll_logger_); 1842 addCodeEventListener(ll_logger_);
1841 } 1843 }
1842 1844
1843 ticker_ = new Ticker(isolate, kSamplingIntervalMs); 1845 ticker_ = new Ticker(isolate);
1844 1846
1845 if (Log::InitLogAtStart()) { 1847 if (Log::InitLogAtStart()) {
1846 is_logging_ = true; 1848 is_logging_ = true;
1847 } 1849 }
1848 1850
1849 if (FLAG_log_internal_timer_events || FLAG_prof_cpp) timer_.Start(); 1851 if (FLAG_log_internal_timer_events || FLAG_prof_cpp) timer_.Start();
1850 1852
1851 if (FLAG_prof_cpp) { 1853 if (FLAG_prof_cpp) {
1852 profiler_ = new Profiler(isolate); 1854 profiler_ = new Profiler(isolate);
1853 is_logging_ = true; 1855 is_logging_ = true;
(...skipping 17 matching lines...) Expand all
1871 addCodeEventListener(jit_logger_); 1873 addCodeEventListener(jit_logger_);
1872 if (options & kJitCodeEventEnumExisting) { 1874 if (options & kJitCodeEventEnumExisting) {
1873 HandleScope scope(isolate_); 1875 HandleScope scope(isolate_);
1874 LogCodeObjects(); 1876 LogCodeObjects();
1875 LogCompiledFunctions(); 1877 LogCompiledFunctions();
1876 } 1878 }
1877 } 1879 }
1878 } 1880 }
1879 1881
1880 1882
1881 Sampler* Logger::sampler() { 1883 // Sampler* Logger::sampler() {
1884 V8Sampler* Logger::sampler() {
1882 return ticker_; 1885 return ticker_;
1883 } 1886 }
1884 1887
1885 1888
1886 FILE* Logger::TearDown() { 1889 FILE* Logger::TearDown() {
1887 if (!is_initialized_) return NULL; 1890 if (!is_initialized_) return NULL;
1888 is_initialized_ = false; 1891 is_initialized_ = false;
1889 1892
1890 // Stop the profiler before closing the file. 1893 // Stop the profiler before closing the file.
1891 if (profiler_ != NULL) { 1894 if (profiler_ != NULL) {
(...skipping 21 matching lines...) Expand all
1913 removeCodeEventListener(jit_logger_); 1916 removeCodeEventListener(jit_logger_);
1914 delete jit_logger_; 1917 delete jit_logger_;
1915 jit_logger_ = NULL; 1918 jit_logger_ = NULL;
1916 } 1919 }
1917 1920
1918 return log_->Close(); 1921 return log_->Close();
1919 } 1922 }
1920 1923
1921 } // namespace internal 1924 } // namespace internal
1922 } // namespace v8 1925 } // namespace v8
OLDNEW
« no previous file with comments | « src/log.h ('k') | src/profiler/cpu-profiler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698