summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralph <alph@chromium.org>2016-02-25 15:43:00 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-25 23:44:22 +0000
commitbc1343daeb77b33031de79f2c104f1efaf560c99 (patch)
treea0dc8c88d02b3f595926f9a25b67c52b72610552
parentc0bf279f397c7d121d0448cf9761a05bbdd2a51a (diff)
downloadchromium_src-bc1343daeb77b33031de79f2c104f1efaf560c99.zip
chromium_src-bc1343daeb77b33031de79f2c104f1efaf560c99.tar.gz
chromium_src-bc1343daeb77b33031de79f2c104f1efaf560c99.tar.bz2
Change sampler code events phase from instant to meta.
This is according to the specification. BUG=406277 Review URL: https://codereview.chromium.org/1221873002 Cr-Commit-Position: refs/heads/master@{#377708}
-rw-r--r--base/trace_event/common/trace_event_common.h5
-rw-r--r--base/trace_event/memory_dump_manager.cc6
-rw-r--r--base/trace_event/trace_event.h35
-rw-r--r--base/trace_event/trace_event_unittest.cc5
-rw-r--r--base/trace_event/trace_log.cc13
-rw-r--r--base/trace_event/trace_log.h1
-rw-r--r--content/browser/tracing/tracing_controller_impl.cc8
-rw-r--r--content/renderer/devtools/v8_sampling_profiler.cc18
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: