RefBase: update sp and wp to allow constinit
A constexpr ctor is useful for static initialization. We also modernize the unit test for static variable best practices. Test: atest libutils_binder_test Change-Id: If42c0939fb1a2dcb8eb101ed0e10051f67e2150d
This commit is contained in:
parent
7cf49320ba
commit
071880f5cb
3 changed files with 6 additions and 6 deletions
|
@ -300,8 +300,8 @@ private:
|
|||
std::atomic<int>* mDeleteCount;
|
||||
};
|
||||
|
||||
static sp<Bar> buffer;
|
||||
static std::atomic<bool> bufferFull(false);
|
||||
[[clang::no_destroy]] static constinit sp<Bar> buffer;
|
||||
static constinit std::atomic<bool> bufferFull(false);
|
||||
|
||||
// Wait until bufferFull has value val.
|
||||
static inline void waitFor(bool val) {
|
||||
|
@ -380,8 +380,8 @@ TEST(RefBase, RacingDestructors) {
|
|||
} // Otherwise this is slow and probably pointless on a uniprocessor.
|
||||
}
|
||||
|
||||
static wp<Bar> wpBuffer;
|
||||
static std::atomic<bool> wpBufferFull(false);
|
||||
[[clang::no_destroy]] static constinit wp<Bar> wpBuffer;
|
||||
static constinit std::atomic<bool> wpBufferFull(false);
|
||||
|
||||
// Wait until wpBufferFull has value val.
|
||||
static inline void wpWaitFor(bool val) {
|
||||
|
|
|
@ -404,7 +404,7 @@ class wp
|
|||
public:
|
||||
typedef typename RefBase::weakref_type weakref_type;
|
||||
|
||||
inline wp() : m_ptr(nullptr), m_refs(nullptr) { }
|
||||
inline constexpr wp() : m_ptr(nullptr), m_refs(nullptr) { }
|
||||
|
||||
// if nullptr, returns nullptr
|
||||
//
|
||||
|
|
|
@ -30,7 +30,7 @@ template<typename T> class wp;
|
|||
template<typename T>
|
||||
class sp {
|
||||
public:
|
||||
inline sp() : m_ptr(nullptr) { }
|
||||
inline constexpr sp() : m_ptr(nullptr) { }
|
||||
|
||||
// The old way of using sp<> was like this. This is bad because it relies
|
||||
// on implicit conversion to sp<>, which we would like to remove (if an
|
||||
|
|
Loading…
Reference in a new issue