summaryrefslogtreecommitdiff
path: root/src/tracing
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-02-16 23:51:02 +0100
committerAnna Henningsen <anna@addaleax.net>2019-02-19 19:52:09 +0100
commit1c71c0cb9a24dd3e3fa1fb2eb191df62746f9031 (patch)
tree3d028ce1d13926c2dd591c2a27a60e623c57ccdd /src/tracing
parent5f8ccecaa2e44c4a04db95ccd278a7078c14dd77 (diff)
downloadandroid-node-v8-1c71c0cb9a24dd3e3fa1fb2eb191df62746f9031.tar.gz
android-node-v8-1c71c0cb9a24dd3e3fa1fb2eb191df62746f9031.tar.bz2
android-node-v8-1c71c0cb9a24dd3e3fa1fb2eb191df62746f9031.zip
tracing: use ‘real’ atomics
Use actual atomic operations instead of things that are named as if they were atomics, but aren’t. Refs: https://github.com/nodejs/node/issues/26100 PR-URL: https://github.com/nodejs/node/pull/26156 Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Yang Guo <yangguo@chromium.org> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Eugene Ostroukhov <eostroukhov@google.com>
Diffstat (limited to 'src/tracing')
-rw-r--r--src/tracing/trace_event.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/tracing/trace_event.h b/src/tracing/trace_event.h
index d5d4befb14..590cb592fc 100644
--- a/src/tracing/trace_event.h
+++ b/src/tracing/trace_event.h
@@ -8,6 +8,7 @@
#include "node_platform.h"
#include "v8-platform.h"
#include "trace_event_common.h"
+#include <atomic>
// This header file defines implementation details of how the trace macros in
// trace_event_common.h collect and store trace events. Anything not
@@ -128,9 +129,10 @@ enum CategoryGroupEnabledFlags {
#define TRACE_EVENT_API_ADD_METADATA_EVENT node::tracing::AddMetadataEvent
// Defines atomic operations used internally by the tracing system.
-#define TRACE_EVENT_API_ATOMIC_WORD intptr_t
-#define TRACE_EVENT_API_ATOMIC_LOAD(var) (var)
-#define TRACE_EVENT_API_ATOMIC_STORE(var, value) (var) = (value)
+#define TRACE_EVENT_API_ATOMIC_WORD std::atomic<intptr_t>
+#define TRACE_EVENT_API_ATOMIC_WORD_VALUE intptr_t
+#define TRACE_EVENT_API_ATOMIC_LOAD(var) (var).load()
+#define TRACE_EVENT_API_ATOMIC_STORE(var, value) (var).store(value)
////////////////////////////////////////////////////////////////////////////////
@@ -157,12 +159,12 @@ enum CategoryGroupEnabledFlags {
category_group_enabled = \
TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(category_group); \
TRACE_EVENT_API_ATOMIC_STORE( \
- atomic, reinterpret_cast<TRACE_EVENT_API_ATOMIC_WORD>( \
+ atomic, reinterpret_cast<TRACE_EVENT_API_ATOMIC_WORD_VALUE>( \
category_group_enabled)); \
}
#define INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group) \
- static TRACE_EVENT_API_ATOMIC_WORD INTERNAL_TRACE_EVENT_UID(atomic) = 0; \
+ static TRACE_EVENT_API_ATOMIC_WORD INTERNAL_TRACE_EVENT_UID(atomic) {0}; \
const uint8_t* INTERNAL_TRACE_EVENT_UID(category_group_enabled); \
INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO_CUSTOM_VARIABLES( \
category_group, INTERNAL_TRACE_EVENT_UID(atomic), \