diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-02-16 23:51:02 +0100 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-02-19 19:52:09 +0100 |
commit | 1c71c0cb9a24dd3e3fa1fb2eb191df62746f9031 (patch) | |
tree | 3d028ce1d13926c2dd591c2a27a60e623c57ccdd /src/tracing | |
parent | 5f8ccecaa2e44c4a04db95ccd278a7078c14dd77 (diff) | |
download | node-new-1c71c0cb9a24dd3e3fa1fb2eb191df62746f9031.tar.gz |
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.h | 12 |
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), \ |