diff options
-rw-r--r-- | base/trace_event/common/trace_event_common.h | 5 | ||||
-rw-r--r-- | base/trace_event/memory_dump_manager.cc | 6 | ||||
-rw-r--r-- | base/trace_event/trace_event.h | 35 | ||||
-rw-r--r-- | base/trace_event/trace_event_unittest.cc | 5 | ||||
-rw-r--r-- | base/trace_event/trace_log.cc | 13 | ||||
-rw-r--r-- | base/trace_event/trace_log.h | 1 | ||||
-rw-r--r-- | content/browser/tracing/tracing_controller_impl.cc | 8 | ||||
-rw-r--r-- | content/renderer/devtools/v8_sampling_profiler.cc | 18 |
8 files changed, 60 insertions, 31 deletions
diff --git a/base/trace_event/common/trace_event_common.h b/base/trace_event/common/trace_event_common.h index 8d13fc2..26e5a4f 100644 --- a/base/trace_event/common/trace_event_common.h +++ b/base/trace_event/common/trace_event_common.h @@ -926,6 +926,11 @@ name, id, TRACE_EVENT_FLAG_COPY, arg1_name, \ arg1_val, arg2_name, arg2_val) +// TRACE_EVENT_METADATA* events are information related to other +// injected events, not events in their own right. +#define TRACE_EVENT_METADATA1(category_group, name, arg1_name, arg1_val) \ + INTERNAL_TRACE_EVENT_METADATA_ADD(category_group, name, arg1_name, arg1_val) + // Records a clock sync event. #define TRACE_EVENT_CLOCK_SYNC_RECEIVER(sync_id) \ INTERNAL_TRACE_EVENT_ADD( \ diff --git a/base/trace_event/memory_dump_manager.cc b/base/trace_event/memory_dump_manager.cc index c24a659..42a64fe 100644 --- a/base/trace_event/memory_dump_manager.cc +++ b/base/trace_event/memory_dump_manager.cc @@ -591,10 +591,12 @@ void MemoryDumpManager::OnTraceLogEnabled() { stack_frame_deduplicator = new StackFrameDeduplicator; type_name_deduplicator = new TypeNameDeduplicator; TRACE_EVENT_API_ADD_METADATA_EVENT( - "stackFrames", "stackFrames", + TraceLog::GetCategoryGroupEnabled("__metadata"), "stackFrames", + "stackFrames", scoped_refptr<ConvertableToTraceFormat>(stack_frame_deduplicator)); TRACE_EVENT_API_ADD_METADATA_EVENT( - "typeNames", "typeNames", + TraceLog::GetCategoryGroupEnabled("__metadata"), "typeNames", + "typeNames", scoped_refptr<ConvertableToTraceFormat>(type_name_deduplicator)); } diff --git a/base/trace_event/trace_event.h b/base/trace_event/trace_event.h index ed49fe4..30ec8d6 100644 --- a/base/trace_event/trace_event.h +++ b/base/trace_event/trace_event.h @@ -7,7 +7,7 @@ // This header file defines implementation details of how the trace macros in // trace_event_common.h collect and store trace events. Anything not -// implementation-specific should go in trace_macros_common.h instead of here. +// implementation-specific should go in trace_event_common.h instead of here. #include <stddef.h> #include <stdint.h> @@ -187,9 +187,10 @@ // Adds a metadata event to the trace log. The |AppendValueAsTraceFormat| method // on the convertable value will be called at flush time. // TRACE_EVENT_API_ADD_METADATA_EVENT( -// const char* event_name, -// const char* arg_name, -// scoped_refptr<ConvertableToTraceFormat> arg_value) +// const unsigned char* category_group_enabled, +// const char* event_name, +// const char* arg_name, +// scoped_refptr<ConvertableToTraceFormat> arg_value) #define TRACE_EVENT_API_ADD_METADATA_EVENT \ trace_event_internal::AddMetadataEvent @@ -347,8 +348,20 @@ TRACE_EVENT_API_CLASS_EXPORT extern \ } \ } while (0) -// Implementation detail: internal macro to enter and leave a context based on -// the current scope. +// Implementation detail: internal macro to create static category and add +// metadata event if the category is enabled. +#define INTERNAL_TRACE_EVENT_METADATA_ADD(category_group, name, ...) \ + do { \ + INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \ + if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \ + TRACE_EVENT_API_ADD_METADATA_EVENT( \ + INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ + ##__VA_ARGS__); \ + } \ + } while (0) + +// Implementation detail: internal macro to enter and leave a +// context based on the current scope. #define INTERNAL_TRACE_EVENT_SCOPED_CONTEXT(category_group, name, context) \ struct INTERNAL_TRACE_EVENT_UID(ScopedContext) { \ public: \ @@ -838,6 +851,7 @@ static inline base::trace_event::TraceEventHandle AddTraceEvent( } static inline void AddMetadataEvent( + const unsigned char* category_group_enabled, const char* event_name, const char* arg_name, scoped_refptr<base::trace_event::ConvertableToTraceFormat> arg_value) { @@ -846,7 +860,7 @@ static inline void AddMetadataEvent( convertable_values[1] = {arg_value}; unsigned char arg_types[1] = {TRACE_VALUE_TYPE_CONVERTABLE}; base::trace_event::TraceLog::GetInstance()->AddMetadataEvent( - event_name, + category_group_enabled, event_name, 1, // num_args arg_names, arg_types, nullptr, // arg_values @@ -854,7 +868,8 @@ static inline void AddMetadataEvent( } template <class ARG1_TYPE> -static void AddMetadataEvent(const char* event_name, +static void AddMetadataEvent(const unsigned char* category_group_enabled, + const char* event_name, const char* arg_name, const ARG1_TYPE& arg_val) { const int num_args = 1; @@ -864,8 +879,8 @@ static void AddMetadataEvent(const char* event_name, SetTraceValue(arg_val, &arg_types[0], &arg_values[0]); base::trace_event::TraceLog::GetInstance()->AddMetadataEvent( - event_name, num_args, arg_names, arg_types, arg_values, nullptr, - TRACE_EVENT_FLAG_NONE); + category_group_enabled, event_name, num_args, arg_names, arg_types, + arg_values, nullptr, TRACE_EVENT_FLAG_NONE); } // Used by TRACE_EVENTx macros. Do not use directly. diff --git a/base/trace_event/trace_event_unittest.cc b/base/trace_event/trace_event_unittest.cc index f3dc16d..eea84b9 100644 --- a/base/trace_event/trace_event_unittest.cc +++ b/base/trace_event/trace_event_unittest.cc @@ -1251,8 +1251,9 @@ TEST_F(TraceEventTestFixture, AddMetadataEvent) { new Convertable(&num_calls); BeginTrace(); - TRACE_EVENT_API_ADD_METADATA_EVENT("metadata_event_name", "metadata_arg_name", - convertable); + TRACE_EVENT_API_ADD_METADATA_EVENT( + TraceLog::GetCategoryGroupEnabled("__metadata"), "metadata_event_name", + "metadata_arg_name", convertable); // |AppendAsTraceFormat| should only be called on flush, not when the event // is added. diff --git a/base/trace_event/trace_log.cc b/base/trace_event/trace_log.cc index 1ad5ddb..f0c3a40 100644 --- a/base/trace_event/trace_log.cc +++ b/base/trace_event/trace_log.cc @@ -1331,6 +1331,7 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( } void TraceLog::AddMetadataEvent( + const unsigned char* category_group_enabled, const char* name, int num_args, const char** arg_names, @@ -1339,14 +1340,16 @@ void TraceLog::AddMetadataEvent( const scoped_refptr<ConvertableToTraceFormat>* convertable_values, unsigned int flags) { scoped_ptr<TraceEvent> trace_event(new TraceEvent); + int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); + ThreadTicks thread_now = ThreadNow(); + TimeTicks now = OffsetNow(); AutoLock lock(lock_); trace_event->Initialize( - 0, // thread_id - TimeTicks(), ThreadTicks(), TRACE_EVENT_PHASE_METADATA, - &g_category_group_enabled[g_category_metadata], name, + thread_id, now, thread_now, TRACE_EVENT_PHASE_METADATA, + category_group_enabled, name, trace_event_internal::kGlobalScope, // scope - trace_event_internal::kNoId, // id - trace_event_internal::kNoId, // bind_id + trace_event_internal::kNoId, // id + trace_event_internal::kNoId, // bind_id num_args, arg_names, arg_types, arg_values, convertable_values, flags); metadata_events_.push_back(std::move(trace_event)); } diff --git a/base/trace_event/trace_log.h b/base/trace_event/trace_log.h index 7d2d748..7a5777d 100644 --- a/base/trace_event/trace_log.h +++ b/base/trace_event/trace_log.h @@ -251,6 +251,7 @@ class BASE_EXPORT TraceLog : public MemoryDumpProvider { // Adds a metadata event that will be written when the trace log is flushed. void AddMetadataEvent( + const unsigned char* category_group_enabled, const char* name, int num_args, const char** arg_names, diff --git a/content/browser/tracing/tracing_controller_impl.cc b/content/browser/tracing/tracing_controller_impl.cc index efbec2c..c3d0e09 100644 --- a/content/browser/tracing/tracing_controller_impl.cc +++ b/content/browser/tracing/tracing_controller_impl.cc @@ -289,10 +289,12 @@ bool TracingControllerImpl::StartTracing( void TracingControllerImpl::OnAllTracingAgentsStarted() { DCHECK_CURRENTLY_ON(BrowserThread::UI); - TRACE_EVENT_API_ADD_METADATA_EVENT("IsTimeTicksHighResolution", "value", - base::TimeTicks::IsHighResolution()); TRACE_EVENT_API_ADD_METADATA_EVENT( - "TraceConfig", "value", + TraceLog::GetCategoryGroupEnabled("__metadata"), + "IsTimeTicksHighResolution", "value", + base::TimeTicks::IsHighResolution()); + TRACE_EVENT_API_ADD_METADATA_EVENT( + TraceLog::GetCategoryGroupEnabled("__metadata"), "TraceConfig", "value", start_tracing_trace_config_->AsConvertableToTraceFormat()); // Notify all child processes. diff --git a/content/renderer/devtools/v8_sampling_profiler.cc b/content/renderer/devtools/v8_sampling_profiler.cc index dfd2187..d5b167b 100644 --- a/content/renderer/devtools/v8_sampling_profiler.cc +++ b/content/renderer/devtools/v8_sampling_profiler.cc @@ -332,23 +332,23 @@ void Sampler::HandleJitCodeEvent(const v8::JitCodeEvent* event) { return; switch (event->type) { case v8::JitCodeEvent::CODE_ADDED: - TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("v8.cpu_profile"), - "JitCodeAdded", TRACE_EVENT_SCOPE_THREAD, "data", - JitCodeEventToTraceFormat(event)); + TRACE_EVENT_METADATA1(TRACE_DISABLED_BY_DEFAULT("v8.cpu_profile"), + "JitCodeAdded", "data", + JitCodeEventToTraceFormat(event)); base::subtle::NoBarrier_AtomicIncrement( &sampler->code_added_events_count_, 1); break; case v8::JitCodeEvent::CODE_MOVED: - TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("v8.cpu_profile"), - "JitCodeMoved", TRACE_EVENT_SCOPE_THREAD, "data", - JitCodeEventToTraceFormat(event)); + TRACE_EVENT_METADATA1(TRACE_DISABLED_BY_DEFAULT("v8.cpu_profile"), + "JitCodeMoved", "data", + JitCodeEventToTraceFormat(event)); break; case v8::JitCodeEvent::CODE_REMOVED: - TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("v8.cpu_profile"), - "JitCodeRemoved", TRACE_EVENT_SCOPE_THREAD, "data", - JitCodeEventToTraceFormat(event)); + TRACE_EVENT_METADATA1(TRACE_DISABLED_BY_DEFAULT("v8.cpu_profile"), + "JitCodeRemoved", "data", + JitCodeEventToTraceFormat(event)); break; case v8::JitCodeEvent::CODE_ADD_LINE_POS_INFO: |