diff --git a/React/Base/RCTBridge+Private.h b/React/Base/RCTBridge+Private.h index a4c329983..e3f015624 100644 --- a/React/Base/RCTBridge+Private.h +++ b/React/Base/RCTBridge+Private.h @@ -7,6 +7,8 @@ * of patent rights can be found in the PATENTS file in the same directory. */ +#import + #import @class RCTModuleData; @@ -14,6 +16,8 @@ RCT_EXTERN NSArray *RCTGetModuleClasses(void); +RCT_EXTERN __attribute__((weak)) void RCTFBQuickPerformanceLoggerConfigureHooks(JSGlobalContextRef ctx); + #if RCT_DEBUG RCT_EXTERN void RCTVerifyAllModulesExported(NSArray *extraModules); #endif diff --git a/React/Base/RCTBridge.m b/React/Base/RCTBridge.m index 190b2762a..5fa260caf 100644 --- a/React/Base/RCTBridge.m +++ b/React/Base/RCTBridge.m @@ -32,6 +32,8 @@ NSArray *RCTGetModuleClasses(void) return RCTModuleClasses; } +void RCTFBQuickPerformanceLoggerConfigureHooks(__unused JSGlobalContextRef ctx) { } + /** * Register the given class as a bridge module. All modules must be registered * prior to the first bridge initialization. diff --git a/React/CxxBridge/RCTCxxBridge.mm b/React/CxxBridge/RCTCxxBridge.mm index e4a634498..c8d19c14e 100644 --- a/React/CxxBridge/RCTCxxBridge.mm +++ b/React/CxxBridge/RCTCxxBridge.mm @@ -244,7 +244,7 @@ struct RCTInstanceCallback : public InstanceCallback { { if (self == [RCTCxxBridge class]) { ReactMarker::logMarker = [](const std::string&) {}; - PerfLogging::installNativeHooks = [](JSGlobalContextRef){}; + PerfLogging::installNativeHooks = RCTFBQuickPerformanceLoggerConfigureHooks; JSNativeHooks::loggingHook = nativeLoggingHook; JSNativeHooks::nowHook = nativePerformanceNow; } diff --git a/React/Executors/RCTJSCExecutor.mm b/React/Executors/RCTJSCExecutor.mm index b83262d87..5ce5fb2f0 100644 --- a/React/Executors/RCTJSCExecutor.mm +++ b/React/Executors/RCTJSCExecutor.mm @@ -40,9 +40,6 @@ RCT_EXTERN NSString *const RCTFBJSValueClassKey = @"_RCTFBJSValueClassKey"; static NSString *const RCTJSCProfilerEnabledDefaultsKey = @"RCTJSCProfilerEnabled"; -__attribute__((weak)) void RCTFBQuickPerformanceLoggerConfigureHooks(JSContext *context); -void RCTFBQuickPerformanceLoggerConfigureHooks(JSContext *context) { } - struct __attribute__((packed)) ModuleData { uint32_t offset; uint32_t size; @@ -344,7 +341,7 @@ static NSThread *newJavaScriptThread(void) threadDictionary[RCTFBJSValueClassKey] = JSC_JSValue(contextRef); } - RCTFBQuickPerformanceLoggerConfigureHooks(context); + RCTFBQuickPerformanceLoggerConfigureHooks(context.JSGlobalContextRef); __weak RCTJSCExecutor *weakSelf = self; context[@"nativeRequireModuleConfig"] = ^NSArray *(NSString *moduleName) { diff --git a/ReactCommon/cxxreact/JSCExecutor.cpp b/ReactCommon/cxxreact/JSCExecutor.cpp index d44145769..4dd5139b3 100644 --- a/ReactCommon/cxxreact/JSCExecutor.cpp +++ b/ReactCommon/cxxreact/JSCExecutor.cpp @@ -279,9 +279,10 @@ void JSCExecutor::initOnJSVMThread() throw(JSException) { #ifdef WITH_JSC_EXTRA_TRACING addNativeProfilingHooks(m_context); addNativeTracingLegacyHooks(m_context); - PerfLogging::installNativeHooks(m_context); #endif + PerfLogging::installNativeHooks(m_context); + #if defined(__APPLE__) || defined(WITH_JSC_EXTRA_TRACING) if (JSC_JSSamplingProfilerEnabled(m_context)) { initSamplingProfilerOnMainJSCThread(m_context);