26
26
#define SHARE_UTILITIES_SYSTEMMEMORYBARRIER_HPP
27
27
28
28
#include " logging/log.hpp"
29
+ #include " runtime/globals.hpp"
30
+ #include " runtime/globals_extension.hpp"
29
31
#include " utilities/globalDefinitions.hpp"
30
32
31
33
#if defined(LINUX)
@@ -38,7 +40,7 @@ typedef WindowsSystemMemoryBarrier SystemMemoryBarrierDefault;
38
40
class NoSystemMemoryBarrier {
39
41
public:
40
42
static bool initialize () {
41
- log_error (os)(" SystemMemoryBarrier not supported on this platform" );
43
+ log_info (os)(" SystemMemoryBarrier not supported on this platform" );
42
44
return false ;
43
45
}
44
46
static void emit () {
@@ -51,8 +53,17 @@ typedef NoSystemMemoryBarrier SystemMemoryBarrierDefault;
51
53
template <typename SystemMemoryBarrierImpl>
52
54
class SystemMemoryBarrierType : public AllStatic {
53
55
public:
54
- static bool initialize () { return SystemMemoryBarrierImpl::initialize (); }
55
- static void emit () { SystemMemoryBarrierImpl::emit (); }
56
+ static void initialize () {
57
+ if (UseSystemMemoryBarrier) {
58
+ if (!SystemMemoryBarrierImpl::initialize ()) {
59
+ if (!FLAG_IS_DEFAULT (UseSystemMemoryBarrier)) {
60
+ warning (" UseSystemMemoryBarrier specified, but not supported on this OS version. Use -Xlog:os=info for details." );
61
+ }
62
+ FLAG_SET_ERGO (UseSystemMemoryBarrier, false );
63
+ }
64
+ }
65
+ }
66
+ static void emit () { SystemMemoryBarrierImpl::emit (); }
56
67
};
57
68
58
69
typedef SystemMemoryBarrierType<SystemMemoryBarrierDefault> SystemMemoryBarrier;
0 commit comments