1 // Copyright 2020 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef V8_LOGGING_TRACING_FLAGS_H_ 6 #define V8_LOGGING_TRACING_FLAGS_H_ 7 8 #include <atomic> 9 10 #include "src/base/macros.h" 11 12 namespace v8 { 13 namespace internal { 14 15 // This struct contains a set of flags that can be modified from multiple 16 // threads at runtime unlike the normal FLAG_-like flags which are not modified 17 // after V8 instance is initialized. 18 19 struct TracingFlags { 20 static V8_EXPORT_PRIVATE std::atomic_uint runtime_stats; 21 static V8_EXPORT_PRIVATE std::atomic_uint gc; 22 static V8_EXPORT_PRIVATE std::atomic_uint gc_stats; 23 static V8_EXPORT_PRIVATE std::atomic_uint ic_stats; 24 static V8_EXPORT_PRIVATE std::atomic_uint zone_stats; 25 26 #ifdef V8_RUNTIME_CALL_STATS is_runtime_stats_enabledTracingFlags27 static bool is_runtime_stats_enabled() { 28 return runtime_stats.load(std::memory_order_relaxed) != 0; 29 } 30 #endif 31 is_gc_enabledTracingFlags32 static bool is_gc_enabled() { 33 return gc.load(std::memory_order_relaxed) != 0; 34 } 35 is_gc_stats_enabledTracingFlags36 static bool is_gc_stats_enabled() { 37 return gc_stats.load(std::memory_order_relaxed) != 0; 38 } 39 is_ic_stats_enabledTracingFlags40 static bool is_ic_stats_enabled() { 41 return ic_stats.load(std::memory_order_relaxed) != 0; 42 } 43 is_zone_stats_enabledTracingFlags44 static bool is_zone_stats_enabled() { 45 return zone_stats.load(std::memory_order_relaxed) != 0; 46 } 47 }; 48 49 } // namespace internal 50 } // namespace v8 51 52 #endif // V8_LOGGING_TRACING_FLAGS_H_ 53