Skip to content

Commit 83a2a3c

Browse files
committed
Implement synchronization with static vars on class instead of static getter/setter
1 parent 6599883 commit 83a2a3c

File tree

5 files changed

+24
-20
lines changed

5 files changed

+24
-20
lines changed

packages/react-native/React/CxxBridge/RCTCxxBridge.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ static void registerPerformanceLoggerHooks(RCTPerformanceLogger *performanceLogg
167167
const ReactMarker::ReactMarkerId markerId, const char *tag) {
168168
mapReactMarkerToPerformanceLogger(markerId, weakPerformanceLogger, tag);
169169
};
170-
ReactMarker::setLogTaggedMarkerImpl(newMarker);
170+
ReactMarker::LogTaggedMarkerWrapper::setLogTaggedMarkerImpl(newMarker);
171171
}
172172

173173
@interface RCTCxxBridge () <RCTModuleDataCallInvokerProvider>

packages/react-native/ReactCommon/cxxreact/ReactMarker.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ namespace ReactMarker {
1717
#endif
1818

1919
LogTaggedMarker logTaggedMarkerBridgelessImpl = nullptr;
20+
LogTaggedMarker LogTaggedMarkerWrapper::logTaggedMarkerImpl = nullptr;
21+
std::shared_mutex LogTaggedMarkerWrapper::logTaggedMarkerImplMutex;
2022

2123
#if __clang__
2224
#pragma clang diagnostic pop
@@ -27,7 +29,7 @@ void logMarker(const ReactMarkerId markerId) {
2729
}
2830

2931
void logTaggedMarker(const ReactMarkerId markerId, const char* tag) {
30-
logTaggedMarkerImpl(markerId, tag);
32+
LogTaggedMarkerWrapper::getLogTaggedMarkerImpl()(markerId, tag);
3133
}
3234

3335
void logMarkerBridgeless(const ReactMarkerId markerId) {

packages/react-native/ReactCommon/cxxreact/ReactMarker.h

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -52,20 +52,23 @@ typedef void (*LogTaggedMarkerBridgeless)(const ReactMarkerId, const char* tag);
5252
#define RN_EXPORT __attribute__((visibility("default")))
5353
#endif
5454

55-
namespace {
56-
std::shared_mutex logTaggedMarkerImplMutex;
57-
LogTaggedMarker logTaggedMarkerImpl = nullptr;
58-
}
59-
60-
extern RN_EXPORT inline LogTaggedMarker getLogTaggedMarkerImpl(void) {
61-
std::shared_lock lock(logTaggedMarkerImplMutex);
62-
return logTaggedMarkerImpl;
63-
}
64-
65-
extern RN_EXPORT inline void setLogTaggedMarkerImpl(LogTaggedMarker marker) {
66-
std::unique_lock lock(logTaggedMarkerImplMutex);
67-
logTaggedMarkerImpl = marker;
68-
}
55+
class RN_EXPORT LogTaggedMarkerWrapper {
56+
public:
57+
static inline LogTaggedMarker getLogTaggedMarkerImpl(void) {
58+
std::shared_lock lock(logTaggedMarkerImplMutex);
59+
return logTaggedMarkerImpl;
60+
}
61+
62+
static inline void setLogTaggedMarkerImpl(LogTaggedMarker marker) {
63+
std::unique_lock lock(logTaggedMarkerImplMutex);
64+
logTaggedMarkerImpl = marker;
65+
}
66+
67+
private:
68+
LogTaggedMarkerWrapper() = delete;
69+
static std::shared_mutex logTaggedMarkerImplMutex;
70+
static LogTaggedMarker logTaggedMarkerImpl;
71+
};
6972

7073
extern RN_EXPORT LogTaggedMarker logTaggedMarkerBridgelessImpl;
7174

packages/react-native/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,7 @@ void JSIExecutor::initializeRuntime() {
139139
if (runtimeInstaller_) {
140140
runtimeInstaller_(*runtime_);
141141
}
142-
143-
bool hasLogger(ReactMarker::getLogTaggedMarkerImpl());
142+
bool hasLogger(ReactMarker::LogTaggedMarkerWrapper::getLogTaggedMarkerImpl());
144143
if (hasLogger) {
145144
ReactMarker::logMarker(ReactMarker::CREATE_REACT_CONTEXT_STOP);
146145
}
@@ -151,7 +150,7 @@ void JSIExecutor::loadBundle(
151150
std::string sourceURL) {
152151
SystraceSection s("JSIExecutor::loadBundle");
153152

154-
bool hasLogger(ReactMarker::getLogTaggedMarkerImpl());
153+
bool hasLogger(ReactMarker::LogTaggedMarkerWrapper::getLogTaggedMarkerImpl());
155154
std::string scriptName = simpleBasename(sourceURL);
156155
if (hasLogger) {
157156
ReactMarker::logTaggedMarker(

packages/react-native/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ void JSINativeModules::reset() {
6767
std::optional<Object> JSINativeModules::createModule(
6868
Runtime& rt,
6969
const std::string& name) {
70-
bool hasLogger(ReactMarker::getLogTaggedMarkerImpl());
70+
bool hasLogger(ReactMarker::LogTaggedMarkerWrapper::getLogTaggedMarkerImpl());
7171
if (hasLogger) {
7272
ReactMarker::logTaggedMarker(
7373
ReactMarker::NATIVE_MODULE_SETUP_START, name.c_str());

0 commit comments

Comments
 (0)