Index: src/tracing/trace-event.h |
diff --git a/src/tracing/trace-event.h b/src/tracing/trace-event.h |
index 2b3bf9bf92cca8fc5524ee1e644057d43795a0f1..d17f78589ff07de789280be6d612ee2fcb72ed0b 100644 |
--- a/src/tracing/trace-event.h |
+++ b/src/tracing/trace-event.h |
@@ -10,7 +10,6 @@ |
#include "base/trace_event/common/trace_event_common.h" |
#include "include/v8-platform.h" |
#include "src/base/atomicops.h" |
-#include "src/base/macros.h" |
// This header file defines implementation details of how the trace macros in |
// trace_event_common.h collect and store trace events. Anything not |
@@ -42,11 +41,6 @@ |
// By default, pointers are mangled with the Process ID in TRACE_EVENT_ASYNC |
// macros. Use this macro to prevent Process ID mangling. |
#define TRACE_ID_DONT_MANGLE(id) v8::internal::tracing::TraceID::DontMangle(id) |
- |
-// By default, trace IDs are eventually converted to a single 64-bit number. Use |
-// this macro to add a scope string. |
-#define TRACE_ID_WITH_SCOPE(scope, id) \ |
- trace_event_internal::TraceID::WithScope(scope, id) |
// Sets the current sample state to the given category and name (both must be |
// constant strings). These states are intended for a sampling profiler. |
@@ -112,7 +106,6 @@ |
// char phase, |
// const uint8_t* category_group_enabled, |
// const char* name, |
-// const char* scope, |
// uint64_t id, |
// uint64_t bind_id, |
// int num_args, |
@@ -188,26 +181,26 @@ |
if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \ |
v8::internal::tracing::AddTraceEvent( \ |
phase, INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ |
- v8::internal::tracing::kGlobalScope, v8::internal::tracing::kNoId, \ |
- v8::internal::tracing::kNoId, flags, ##__VA_ARGS__); \ |
+ v8::internal::tracing::kNoId, v8::internal::tracing::kNoId, flags, \ |
+ ##__VA_ARGS__); \ |
} \ |
} while (0) |
// Implementation detail: internal macro to create static category and add begin |
// event if the category is enabled. Also adds the end event when the scope |
// ends. |
-#define INTERNAL_TRACE_EVENT_ADD_SCOPED(category_group, name, ...) \ |
- INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \ |
- v8::internal::tracing::ScopedTracer INTERNAL_TRACE_EVENT_UID(tracer); \ |
- if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \ |
- uint64_t h = v8::internal::tracing::AddTraceEvent( \ |
- TRACE_EVENT_PHASE_COMPLETE, \ |
- INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ |
- v8::internal::tracing::kGlobalScope, v8::internal::tracing::kNoId, \ |
- v8::internal::tracing::kNoId, TRACE_EVENT_FLAG_NONE, ##__VA_ARGS__); \ |
- INTERNAL_TRACE_EVENT_UID(tracer) \ |
- .Initialize(INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ |
- h); \ |
+#define INTERNAL_TRACE_EVENT_ADD_SCOPED(category_group, name, ...) \ |
+ INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \ |
+ v8::internal::tracing::ScopedTracer INTERNAL_TRACE_EVENT_UID(tracer); \ |
+ if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \ |
+ uint64_t h = v8::internal::tracing::AddTraceEvent( \ |
+ TRACE_EVENT_PHASE_COMPLETE, \ |
+ INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ |
+ v8::internal::tracing::kNoId, v8::internal::tracing::kNoId, \ |
+ TRACE_EVENT_FLAG_NONE, ##__VA_ARGS__); \ |
+ INTERNAL_TRACE_EVENT_UID(tracer) \ |
+ .Initialize(INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ |
+ h); \ |
} |
#define INTERNAL_TRACE_EVENT_ADD_SCOPED_WITH_FLOW(category_group, name, \ |
@@ -221,8 +214,8 @@ |
uint64_t h = v8::internal::tracing::AddTraceEvent( \ |
TRACE_EVENT_PHASE_COMPLETE, \ |
INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ |
- v8::internal::tracing::kGlobalScope, v8::internal::tracing::kNoId, \ |
- trace_event_bind_id.raw_id(), trace_event_flags, ##__VA_ARGS__); \ |
+ v8::internal::tracing::kNoId, trace_event_bind_id.data(), \ |
+ trace_event_flags, ##__VA_ARGS__); \ |
INTERNAL_TRACE_EVENT_UID(tracer) \ |
.Initialize(INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ |
h); \ |
@@ -240,8 +233,8 @@ |
&trace_event_flags); \ |
v8::internal::tracing::AddTraceEvent( \ |
phase, INTERNAL_TRACE_EVENT_UID(category_group_enabled), name, \ |
- trace_event_trace_id.scope(), trace_event_trace_id.raw_id(), \ |
- v8::internal::tracing::kNoId, trace_event_flags, ##__VA_ARGS__); \ |
+ trace_event_trace_id.data(), v8::internal::tracing::kNoId, \ |
+ trace_event_flags, ##__VA_ARGS__); \ |
} \ |
} while (0) |
@@ -261,27 +254,6 @@ |
phase, category_group, name, id, thread_id, timestamp, flags, ...) \ |
UNIMPLEMENTED() |
-// 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: \ |
- INTERNAL_TRACE_EVENT_UID(ScopedContext)(uint64_t cid) : cid_(cid) { \ |
- TRACE_EVENT_ENTER_CONTEXT(category_group, name, cid_); \ |
- } \ |
- ~INTERNAL_TRACE_EVENT_UID(ScopedContext)() { \ |
- TRACE_EVENT_LEAVE_CONTEXT(category_group, name, cid_); \ |
- } \ |
- \ |
- private: \ |
- /* Local class friendly DISALLOW_COPY_AND_ASSIGN */ \ |
- INTERNAL_TRACE_EVENT_UID(ScopedContext) \ |
- (const INTERNAL_TRACE_EVENT_UID(ScopedContext)&) {} \ |
- void operator=(const INTERNAL_TRACE_EVENT_UID(ScopedContext)&) {} \ |
- uint64_t cid_; \ |
- }; \ |
- INTERNAL_TRACE_EVENT_UID(ScopedContext) \ |
- INTERNAL_TRACE_EVENT_UID(scoped_context)(context.raw_id()); |
- |
namespace v8 { |
namespace internal { |
namespace tracing { |
@@ -289,7 +261,6 @@ |
// Specify these values when the corresponding argument of AddTraceEvent is not |
// used. |
const int kZeroNumArgs = 0; |
-const decltype(nullptr) kGlobalScope = nullptr; |
const uint64_t kNoId = 0; |
class TraceEventHelper { |
@@ -302,108 +273,70 @@ |
// collide when the same pointer is used on different processes. |
class TraceID { |
public: |
- class WithScope { |
- public: |
- WithScope(const char* scope, uint64_t raw_id) |
- : scope_(scope), raw_id_(raw_id) {} |
- uint64_t raw_id() const { return raw_id_; } |
- const char* scope() const { return scope_; } |
- |
- private: |
- const char* scope_ = nullptr; |
- uint64_t raw_id_; |
- }; |
- |
class DontMangle { |
public: |
- explicit DontMangle(const void* raw_id) |
- : raw_id_(static_cast<uint64_t>(reinterpret_cast<uintptr_t>(raw_id))) {} |
- explicit DontMangle(uint64_t raw_id) : raw_id_(raw_id) {} |
- explicit DontMangle(unsigned int raw_id) : raw_id_(raw_id) {} |
- explicit DontMangle(uint16_t raw_id) : raw_id_(raw_id) {} |
- explicit DontMangle(unsigned char raw_id) : raw_id_(raw_id) {} |
- explicit DontMangle(int64_t raw_id) |
- : raw_id_(static_cast<uint64_t>(raw_id)) {} |
- explicit DontMangle(int raw_id) : raw_id_(static_cast<uint64_t>(raw_id)) {} |
- explicit DontMangle(int16_t raw_id) |
- : raw_id_(static_cast<uint64_t>(raw_id)) {} |
- explicit DontMangle(signed char raw_id) |
- : raw_id_(static_cast<uint64_t>(raw_id)) {} |
- explicit DontMangle(WithScope scoped_id) |
- : scope_(scoped_id.scope()), raw_id_(scoped_id.raw_id()) {} |
- const char* scope() const { return scope_; } |
- uint64_t raw_id() const { return raw_id_; } |
+ explicit DontMangle(const void* id) |
+ : data_(static_cast<uint64_t>(reinterpret_cast<uintptr_t>(id))) {} |
+ explicit DontMangle(uint64_t id) : data_(id) {} |
+ explicit DontMangle(unsigned int id) : data_(id) {} |
+ explicit DontMangle(uint16_t id) : data_(id) {} |
+ explicit DontMangle(unsigned char id) : data_(id) {} |
+ explicit DontMangle(int64_t id) : data_(static_cast<uint64_t>(id)) {} |
+ explicit DontMangle(int id) : data_(static_cast<uint64_t>(id)) {} |
+ explicit DontMangle(int16_t id) : data_(static_cast<uint64_t>(id)) {} |
+ explicit DontMangle(signed char id) : data_(static_cast<uint64_t>(id)) {} |
+ uint64_t data() const { return data_; } |
private: |
- const char* scope_ = nullptr; |
- uint64_t raw_id_; |
+ uint64_t data_; |
}; |
class ForceMangle { |
public: |
- explicit ForceMangle(uint64_t raw_id) : raw_id_(raw_id) {} |
- explicit ForceMangle(unsigned int raw_id) : raw_id_(raw_id) {} |
- explicit ForceMangle(uint16_t raw_id) : raw_id_(raw_id) {} |
- explicit ForceMangle(unsigned char raw_id) : raw_id_(raw_id) {} |
- explicit ForceMangle(int64_t raw_id) |
- : raw_id_(static_cast<uint64_t>(raw_id)) {} |
- explicit ForceMangle(int raw_id) : raw_id_(static_cast<uint64_t>(raw_id)) {} |
- explicit ForceMangle(int16_t raw_id) |
- : raw_id_(static_cast<uint64_t>(raw_id)) {} |
- explicit ForceMangle(signed char raw_id) |
- : raw_id_(static_cast<uint64_t>(raw_id)) {} |
- uint64_t raw_id() const { return raw_id_; } |
+ explicit ForceMangle(uint64_t id) : data_(id) {} |
+ explicit ForceMangle(unsigned int id) : data_(id) {} |
+ explicit ForceMangle(uint16_t id) : data_(id) {} |
+ explicit ForceMangle(unsigned char id) : data_(id) {} |
+ explicit ForceMangle(int64_t id) : data_(static_cast<uint64_t>(id)) {} |
+ explicit ForceMangle(int id) : data_(static_cast<uint64_t>(id)) {} |
+ explicit ForceMangle(int16_t id) : data_(static_cast<uint64_t>(id)) {} |
+ explicit ForceMangle(signed char id) : data_(static_cast<uint64_t>(id)) {} |
+ uint64_t data() const { return data_; } |
private: |
- uint64_t raw_id_; |
+ uint64_t data_; |
}; |
- TraceID(const void* raw_id, unsigned int* flags) |
- : raw_id_(static_cast<uint64_t>(reinterpret_cast<uintptr_t>(raw_id))) { |
+ TraceID(const void* id, unsigned int* flags) |
+ : data_(static_cast<uint64_t>(reinterpret_cast<uintptr_t>(id))) { |
*flags |= TRACE_EVENT_FLAG_MANGLE_ID; |
} |
- TraceID(ForceMangle raw_id, unsigned int* flags) : raw_id_(raw_id.raw_id()) { |
+ TraceID(ForceMangle id, unsigned int* flags) : data_(id.data()) { |
*flags |= TRACE_EVENT_FLAG_MANGLE_ID; |
} |
- TraceID(DontMangle maybe_scoped_id, unsigned int* flags) |
- : scope_(maybe_scoped_id.scope()), raw_id_(maybe_scoped_id.raw_id()) {} |
- TraceID(uint64_t raw_id, unsigned int* flags) : raw_id_(raw_id) { |
+ TraceID(DontMangle id, unsigned int* flags) : data_(id.data()) {} |
+ TraceID(uint64_t id, unsigned int* flags) : data_(id) { (void)flags; } |
+ TraceID(unsigned int id, unsigned int* flags) : data_(id) { (void)flags; } |
+ TraceID(uint16_t id, unsigned int* flags) : data_(id) { (void)flags; } |
+ TraceID(unsigned char id, unsigned int* flags) : data_(id) { (void)flags; } |
+ TraceID(int64_t id, unsigned int* flags) : data_(static_cast<uint64_t>(id)) { |
(void)flags; |
} |
- TraceID(unsigned int raw_id, unsigned int* flags) : raw_id_(raw_id) { |
+ TraceID(int id, unsigned int* flags) : data_(static_cast<uint64_t>(id)) { |
(void)flags; |
} |
- TraceID(uint16_t raw_id, unsigned int* flags) : raw_id_(raw_id) { |
+ TraceID(int16_t id, unsigned int* flags) : data_(static_cast<uint64_t>(id)) { |
(void)flags; |
} |
- TraceID(unsigned char raw_id, unsigned int* flags) : raw_id_(raw_id) { |
+ TraceID(signed char id, unsigned int* flags) |
+ : data_(static_cast<uint64_t>(id)) { |
(void)flags; |
} |
- TraceID(int64_t raw_id, unsigned int* flags) |
- : raw_id_(static_cast<uint64_t>(raw_id)) { |
- (void)flags; |
- } |
- TraceID(int raw_id, unsigned int* flags) |
- : raw_id_(static_cast<uint64_t>(raw_id)) { |
- (void)flags; |
- } |
- TraceID(int16_t raw_id, unsigned int* flags) |
- : raw_id_(static_cast<uint64_t>(raw_id)) { |
- (void)flags; |
- } |
- TraceID(signed char raw_id, unsigned int* flags) |
- : raw_id_(static_cast<uint64_t>(raw_id)) { |
- (void)flags; |
- } |
- TraceID(WithScope scoped_id, unsigned int* flags) |
- : scope_(scoped_id.scope()), raw_id_(scoped_id.raw_id()) {} |
- |
- uint64_t raw_id() const { return raw_id_; } |
- const char* scope() const { return scope_; } |
+ |
+ uint64_t data() const { return data_; } |
private: |
- const char* scope_ = nullptr; |
- uint64_t raw_id_; |
+ uint64_t data_; |
}; |
// Simple union to store various types as uint64_t. |
@@ -474,33 +407,34 @@ |
static V8_INLINE uint64_t AddTraceEvent(char phase, |
const uint8_t* category_group_enabled, |
- const char* name, const char* scope, |
- uint64_t id, uint64_t bind_id, |
- unsigned int flags) { |
+ const char* name, uint64_t id, |
+ uint64_t bind_id, unsigned int flags) { |
return TRACE_EVENT_API_ADD_TRACE_EVENT(phase, category_group_enabled, name, |
- scope, id, bind_id, kZeroNumArgs, NULL, |
- NULL, NULL, flags); |
+ id, bind_id, kZeroNumArgs, NULL, NULL, |
+ NULL, flags); |
} |
template <class ARG1_TYPE> |
-static V8_INLINE uint64_t AddTraceEvent( |
- char phase, const uint8_t* category_group_enabled, const char* name, |
- const char* scope, uint64_t id, uint64_t bind_id, unsigned int flags, |
- const char* arg1_name, const ARG1_TYPE& arg1_val) { |
+static V8_INLINE uint64_t AddTraceEvent(char phase, |
+ const uint8_t* category_group_enabled, |
+ const char* name, uint64_t id, |
+ uint64_t bind_id, unsigned int flags, |
+ const char* arg1_name, |
+ const ARG1_TYPE& arg1_val) { |
const int num_args = 1; |
uint8_t arg_types[1]; |
uint64_t arg_values[1]; |
SetTraceValue(arg1_val, &arg_types[0], &arg_values[0]); |
- return TRACE_EVENT_API_ADD_TRACE_EVENT( |
- phase, category_group_enabled, name, scope, id, bind_id, num_args, |
- &arg1_name, arg_types, arg_values, flags); |
+ return TRACE_EVENT_API_ADD_TRACE_EVENT(phase, category_group_enabled, name, |
+ id, bind_id, num_args, &arg1_name, |
+ arg_types, arg_values, flags); |
} |
template <class ARG1_TYPE, class ARG2_TYPE> |
static V8_INLINE uint64_t AddTraceEvent( |
char phase, const uint8_t* category_group_enabled, const char* name, |
- const char* scope, uint64_t id, uint64_t bind_id, unsigned int flags, |
- const char* arg1_name, const ARG1_TYPE& arg1_val, const char* arg2_name, |
+ uint64_t id, uint64_t bind_id, unsigned int flags, const char* arg1_name, |
+ const ARG1_TYPE& arg1_val, const char* arg2_name, |
const ARG2_TYPE& arg2_val) { |
const int num_args = 2; |
const char* arg_names[2] = {arg1_name, arg2_name}; |
@@ -508,9 +442,9 @@ |
uint64_t arg_values[2]; |
SetTraceValue(arg1_val, &arg_types[0], &arg_values[0]); |
SetTraceValue(arg2_val, &arg_types[1], &arg_values[1]); |
- return TRACE_EVENT_API_ADD_TRACE_EVENT( |
- phase, category_group_enabled, name, scope, id, bind_id, num_args, |
- arg_names, arg_types, arg_values, flags); |
+ return TRACE_EVENT_API_ADD_TRACE_EVENT(phase, category_group_enabled, name, |
+ id, bind_id, num_args, arg_names, |
+ arg_types, arg_values, flags); |
} |
// Used by TRACE_EVENTx macros. Do not use directly. |