From 5c2c5ccd07b428ccd891ab1abbb1578a8281d722 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Fri, 4 May 2018 02:07:27 -0700 Subject: [PATCH] Remove atomic static shim. (#1020) This was only useful for pre-VS2015 and was only being used in one place. --- .../main/native/include/wpi/atomic_static.h | 49 ------------------- .../src/main/native/include/wpi/jni_util.h | 9 +--- 2 files changed, 1 insertion(+), 57 deletions(-) delete mode 100644 wpiutil/src/main/native/include/wpi/atomic_static.h diff --git a/wpiutil/src/main/native/include/wpi/atomic_static.h b/wpiutil/src/main/native/include/wpi/atomic_static.h deleted file mode 100644 index 5547f75e9c..0000000000 --- a/wpiutil/src/main/native/include/wpi/atomic_static.h +++ /dev/null @@ -1,49 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* Copyright (c) 2015-2018 FIRST. All Rights Reserved. */ -/* Open Source Software - may be modified and shared by FRC teams. The code */ -/* must be accompanied by the FIRST BSD license file in the root directory of */ -/* the project. */ -/*----------------------------------------------------------------------------*/ - -#ifndef WPIUTIL_SUPPORT_ATOMIC_STATIC_H_ -#define WPIUTIL_SUPPORT_ATOMIC_STATIC_H_ - -#if !defined(_MSC_VER) || (_MSC_VER >= 1900) - -// Just use a local static. This is thread-safe per -// http://preshing.com/20130930/double-checked-locking-is-fixed-in-cpp11/ - -// Per https://msdn.microsoft.com/en-us/library/Hh567368.aspx "Magic Statics" -// are supported in Visual Studio 2015 but not in earlier versions. -#define ATOMIC_STATIC(cls, inst) static cls inst -#define ATOMIC_STATIC_DECL(cls) -#define ATOMIC_STATIC_INIT(cls) - -#else -// From http://preshing.com/20130930/double-checked-locking-is-fixed-in-cpp11/ -#include -#include - -#define ATOMIC_STATIC(cls, inst) \ - cls* inst##tmp = m_instance.load(std::memory_order_acquire); \ - if (inst##tmp == nullptr) { \ - std::lock_guard lock(m_instance_mutex); \ - inst##tmp = m_instance.load(std::memory_order_relaxed); \ - if (inst##tmp == nullptr) { \ - inst##tmp = new cls; \ - m_instance.store(inst##tmp, std::memory_order_release); \ - } \ - } \ - cls& inst = *inst##tmp - -#define ATOMIC_STATIC_DECL(cls) \ - static std::atomic m_instance; \ - static std::mutex m_instance_mutex; - -#define ATOMIC_STATIC_INIT(cls) \ - std::atomic cls::m_instance; \ - std::mutex cls::m_instance_mutex; - -#endif - -#endif // WPIUTIL_SUPPORT_ATOMIC_STATIC_H_ diff --git a/wpiutil/src/main/native/include/wpi/jni_util.h b/wpiutil/src/main/native/include/wpi/jni_util.h index 286eff685d..2effd1d932 100644 --- a/wpiutil/src/main/native/include/wpi/jni_util.h +++ b/wpiutil/src/main/native/include/wpi/jni_util.h @@ -22,7 +22,6 @@ #include "wpi/SmallString.h" #include "wpi/SmallVector.h" #include "wpi/StringRef.h" -#include "wpi/atomic_static.h" #include "wpi/deprecated.h" #include "wpi/mutex.h" #include "wpi/raw_ostream.h" @@ -441,9 +440,6 @@ inline jobjectArray MakeJStringArray(JNIEnv* env, ArrayRef arr) { // static JavaVM* GetJVM(); // static const char* GetName(); // void CallJava(JNIEnv *env, jobject func, jmethodID mid); -// -// When creating this, ATOMIC_STATIC_INIT() needs to be performed on the -// templated class as well. template class JCallbackThread : public SafeThread { public: @@ -522,12 +518,9 @@ template class JSingletonCallbackManager : public JCallbackManager { public: static JSingletonCallbackManager& GetInstance() { - ATOMIC_STATIC(JSingletonCallbackManager, instance); + static JSingletonCallbackManager instance; return instance; } - - private: - ATOMIC_STATIC_DECL(JSingletonCallbackManager) }; inline std::string GetJavaStackTrace(JNIEnv* env, std::string* func,