diff --git a/React/Base/RCTBridge+Private.h b/React/Base/RCTBridge+Private.h index 08163f3cb..0e4ef5762 100644 --- a/React/Base/RCTBridge+Private.h +++ b/React/Base/RCTBridge+Private.h @@ -5,9 +5,6 @@ * LICENSE file in the root directory of this source tree. */ -#import -#import - #import @class RCTModuleData; @@ -15,8 +12,6 @@ RCT_EXTERN NSArray *RCTGetModuleClasses(void); -RCT_EXTERN __attribute__((weak)) void RCTFBQuickPerformanceLoggerConfigureHooks(JSGlobalContextRef ctx); - #if RCT_DEBUG RCT_EXTERN void RCTVerifyAllModulesExported(NSArray *extraModules); #endif @@ -141,15 +136,6 @@ RCT_EXTERN void RCTRegisterModule(Class); @end -@interface RCTBridge (JavaScriptCore) - -/** - * The raw JSGlobalContextRef used by the bridge. - */ -@property (nonatomic, readonly, assign) JSGlobalContextRef jsContextRef; - -@end - @interface RCTBridge (Inspector) @property (nonatomic, readonly, getter=isInspectable) BOOL inspectable; diff --git a/React/Base/RCTBridge.h b/React/Base/RCTBridge.h index 776a03bde..3af1a1976 100644 --- a/React/Base/RCTBridge.h +++ b/React/Base/RCTBridge.h @@ -169,11 +169,6 @@ RCT_EXTERN void RCTEnableJSINativeModule(BOOL enabled); */ - (BOOL)moduleIsInitialized:(Class)moduleClass; -/** - * Retrieve an extra module that gets bound to the JS context, if any. - */ -- (id)jsBoundExtraModuleForClass:(Class)moduleClass; - /** * All registered bridge module classes. */ diff --git a/React/Base/RCTBridge.m b/React/Base/RCTBridge.m index ba588876b..5171f2ae2 100644 --- a/React/Base/RCTBridge.m +++ b/React/Base/RCTBridge.m @@ -44,8 +44,6 @@ NSArray *RCTGetModuleClasses(void) return result; } -void RCTFBQuickPerformanceLoggerConfigureHooks(__unused JSGlobalContextRef ctx) { } - /** * Register the given class as a bridge module. All modules must be registered * prior to the first bridge initialization. @@ -272,11 +270,6 @@ RCT_NOT_IMPLEMENTED(- (instancetype)init) return [self.batchedBridge moduleIsInitialized:moduleClass]; } -- (id)jsBoundExtraModuleForClass:(Class)moduleClass -{ - return [self.batchedBridge jsBoundExtraModuleForClass:moduleClass]; -} - - (void)reload { #if RCT_ENABLE_INSPECTOR @@ -392,9 +385,4 @@ RCT_NOT_IMPLEMENTED(- (instancetype)init) [self.batchedBridge registerSegmentWithId:segmentId path:path]; } -- (JSGlobalContextRef)jsContextRef -{ - return [self.batchedBridge jsContextRef]; -} - @end diff --git a/React/Base/RCTJavaScriptExecutor.h b/React/Base/RCTJavaScriptExecutor.h index 45382ad74..d3739cb66 100644 --- a/React/Base/RCTJavaScriptExecutor.h +++ b/React/Base/RCTJavaScriptExecutor.h @@ -7,8 +7,6 @@ #import -#import - #import #import diff --git a/React/Base/RCTJavaScriptLoader.mm b/React/Base/RCTJavaScriptLoader.mm index 4e707f3ba..5f14bd22a 100755 --- a/React/Base/RCTJavaScriptLoader.mm +++ b/React/Base/RCTJavaScriptLoader.mm @@ -10,7 +10,6 @@ #import #import -#import #import "RCTBridge.h" #import "RCTConvert.h" @@ -20,6 +19,8 @@ NSString *const RCTJavaScriptLoaderErrorDomain = @"RCTJavaScriptLoaderErrorDomain"; +static const int32_t JSNoBytecodeFileFormatVersion = -1; + @interface RCTSource() { @public diff --git a/React/CxxBridge/RCTCxxBridge.mm b/React/CxxBridge/RCTCxxBridge.mm index 293e255ad..1d8d7fad9 100644 --- a/React/CxxBridge/RCTCxxBridge.mm +++ b/React/CxxBridge/RCTCxxBridge.mm @@ -29,15 +29,14 @@ #import #import #import -#import #import #import -#import #import -#import +#import +#import +#import #import "NSDataBigString.h" -#import "RCTJSCHelpers.h" #import "RCTMessageThread.h" #import "RCTObjcExecutor.h" @@ -57,6 +56,7 @@ static NSString *const RCTJSThreadName = @"com.facebook.react.JavaScript"; typedef void (^RCTPendingCall)(); +using namespace facebook::jsc; using namespace facebook::react; /** @@ -178,18 +178,6 @@ struct RCTInstanceCallback : public InstanceCallback { @synthesize performanceLogger = _performanceLogger; @synthesize valid = _valid; -+ (void)initialize -{ - if (self == [RCTCxxBridge class]) { - RCTPrepareJSCExecutor(); - } -} - -- (JSGlobalContextRef)jsContextRef -{ - return (JSGlobalContextRef)(_reactInstance ? _reactInstance->getJavaScriptContext() : nullptr); -} - - (std::shared_ptr)jsMessageThread { return _jsMessageThread; @@ -328,22 +316,13 @@ struct RCTInstanceCallback : public InstanceCallback { executorFactory = [cxxDelegate jsExecutorFactoryForBridge:self]; } if (!executorFactory) { - BOOL useCustomJSC = - [self.delegate respondsToSelector:@selector(shouldBridgeUseCustomJSC:)] && - [self.delegate shouldBridgeUseCustomJSC:self]; - // We use the name of the device and the app for debugging & metrics - NSString *deviceName = [[UIDevice currentDevice] name]; - NSString *appName = [[NSBundle mainBundle] bundleIdentifier]; - // The arg is a cache dir. It's not used with standard JSC. - executorFactory.reset(new JSCExecutorFactory(folly::dynamic::object - ("OwnerIdentity", "ReactNative") - ("AppIdentity", [(appName ?: @"unknown") UTF8String]) - ("DeviceIdentity", [(deviceName ?: @"unknown") UTF8String]) - ("UseCustomJSC", (bool)useCustomJSC) - #if RCT_PROFILE - ("StartSamplingProfilerOnInit", (bool)self.devSettings.startSamplingProfilerOnLaunch) - #endif - )); + executorFactory = std::make_shared( + makeJSCRuntime(), + [](const std::string &message, unsigned int logLevel) { + _RCTLogJavaScriptInternal( + static_cast(logLevel), + [NSString stringWithUTF8String:message.c_str()]); + }, nullptr); } } else { id objcExecutor = [self moduleForClass:self.executorClass]; @@ -461,18 +440,6 @@ struct RCTInstanceCallback : public InstanceCallback { return _moduleDataByName[RCTBridgeModuleNameForClass(moduleClass)].hasInstance; } -- (id)jsBoundExtraModuleForClass:(Class)moduleClass -{ - if ([self.delegate conformsToProtocol:@protocol(RCTCxxBridgeDelegate)]) { - id cxxDelegate = (id) self.delegate; - if ([cxxDelegate respondsToSelector:@selector(jsBoundExtraModuleForClass:)]) { - return [cxxDelegate jsBoundExtraModuleForClass:moduleClass]; - } - } - - return nil; -} - - (std::shared_ptr)_buildModuleRegistry { if (!self.valid) { @@ -534,8 +501,6 @@ struct RCTInstanceCallback : public InstanceCallback { std::make_unique("true")); } #endif - - [self installExtraJSBinding]; } RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @""); @@ -634,16 +599,6 @@ struct RCTInstanceCallback : public InstanceCallback { RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @""); } -- (void)installExtraJSBinding -{ - if ([self.delegate conformsToProtocol:@protocol(RCTCxxBridgeDelegate)]) { - id cxxDelegate = (id) self.delegate; - if ([cxxDelegate respondsToSelector:@selector(installExtraJSBinding:)]) { - [cxxDelegate installExtraJSBinding:self.jsContextRef]; - } - } -} - - (NSArray *)_initializeModules:(NSArray> *)modules withDispatchGroup:(dispatch_group_t)dispatchGroup lazilyDiscovered:(BOOL)lazilyDiscovered diff --git a/React/CxxBridge/RCTCxxBridgeDelegate.h b/React/CxxBridge/RCTCxxBridgeDelegate.h index fdceb3b72..cc75608b0 100644 --- a/React/CxxBridge/RCTCxxBridgeDelegate.h +++ b/React/CxxBridge/RCTCxxBridgeDelegate.h @@ -8,7 +8,6 @@ #include #import -#import namespace facebook { namespace react { @@ -26,21 +25,9 @@ class JSExecutorFactory; /** * In the RCTCxxBridge, if this method is implemented, return a * ExecutorFactory instance which can be used to create the executor. - * If not implemented, or returns an empty pointer, JSCExecutorFactory - * will be used. + * If not implemented, or returns an empty pointer, JSIExecutorFactory + * will be used with a JSCRuntime. */ - (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge; -@optional - -/** - * Experimental: Perform installation of extra JS binding on the given JS context, as appropriate. - */ -- (void)installExtraJSBinding:(JSGlobalContextRef)jsContextRef; - -/** - * Experimental: Get the instance of the extra module/class which gets bound via `installExtraJSBinding:` - */ -- (id)jsBoundExtraModuleForClass:(Class)moduleClass; - @end diff --git a/React/CxxBridge/RCTMessageThread.mm b/React/CxxBridge/RCTMessageThread.mm index 767c11cf4..5017bbb4e 100644 --- a/React/CxxBridge/RCTMessageThread.mm +++ b/React/CxxBridge/RCTMessageThread.mm @@ -12,7 +12,6 @@ #import #import -#include // A note about the implementation: This class is not used // generically. It's a thin wrapper around a run loop which diff --git a/React/CxxModule/RCTCxxUtils.h b/React/CxxModule/RCTCxxUtils.h index a558494e0..ac24636e9 100644 --- a/React/CxxModule/RCTCxxUtils.h +++ b/React/CxxModule/RCTCxxUtils.h @@ -5,12 +5,10 @@ * LICENSE file in the root directory of this source tree. */ +#include #include -#import - -#import -#import +#import @class RCTBridge; @class RCTModuleData; @@ -19,19 +17,10 @@ namespace facebook { namespace react { class Instance; +class NativeModule; std::vector> createNativeModules(NSArray *modules, RCTBridge *bridge, const std::shared_ptr &instance); -JSContext *contextForGlobalContextRef(JSGlobalContextRef contextRef); - -template<> -struct JSCValueEncoder { - static Value toJSCValue(JSGlobalContextRef ctx, id obj) { - JSValue *value = [JSC_JSValue(ctx) valueWithObject:obj inContext:contextForGlobalContextRef(ctx)]; - return {ctx, [value JSValueRef]}; - } -}; - NSError *tryAndReturnError(const std::function& func); NSString *deriveSourceURL(NSURL *url); diff --git a/React/CxxModule/RCTCxxUtils.mm b/React/CxxModule/RCTCxxUtils.mm index 8859d5563..72dfa60ce 100644 --- a/React/CxxModule/RCTCxxUtils.mm +++ b/React/CxxModule/RCTCxxUtils.mm @@ -11,7 +11,7 @@ #import #import #import -#import +#import #import "DispatchMessageQueueThread.h" #import "RCTCxxModule.h" @@ -20,6 +20,8 @@ namespace facebook { namespace react { +using facebook::jsi::JSError; + std::vector> createNativeModules(NSArray *modules, RCTBridge *bridge, const std::shared_ptr &instance) { std::vector> nativeModules; @@ -37,39 +39,14 @@ std::vector> createNativeModules(NSArray lock(s_mutex); - if (!s_contextCache) { - NSPointerFunctionsOptions keyOptions = NSPointerFunctionsOpaqueMemory | NSPointerFunctionsOpaquePersonality; - NSPointerFunctionsOptions valueOptions = NSPointerFunctionsWeakMemory | NSPointerFunctionsObjectPersonality; - s_contextCache = [[NSMapTable alloc] initWithKeyOptions:keyOptions valueOptions:valueOptions capacity:0]; - } - - JSContext *ctx = [s_contextCache objectForKey:(__bridge id)contextRef]; - if (!ctx) { - ctx = [JSC_JSContext(contextRef) contextWithJSGlobalContextRef:contextRef]; - [s_contextCache setObject:ctx forKey:(__bridge id)contextRef]; - } - return ctx; -} - static NSError *errorWithException(const std::exception &e) { NSString *msg = @(e.what()); NSMutableDictionary *errorInfo = [NSMutableDictionary dictionary]; - const JSException *jsException = dynamic_cast(&e); - if (jsException) { - errorInfo[RCTJSRawStackTraceKey] = @(jsException->getStack().c_str()); + const auto *jsError = dynamic_cast(&e); + if (jsError) { + errorInfo[RCTJSRawStackTraceKey] = @(jsError->getStack().c_str()); msg = [@"Unhandled JS Exception: " stringByAppendingString:msg]; } diff --git a/React/DevSupport/RCTDevMenu.m b/React/DevSupport/RCTDevMenu.m index 5c85837aa..48dda3f1f 100644 --- a/React/DevSupport/RCTDevMenu.m +++ b/React/DevSupport/RCTDevMenu.m @@ -269,12 +269,6 @@ RCT_EXPORT_MODULE() }]]; } - if (devSettings.isJSCSamplingProfilerAvailable) { - [items addObject:[RCTDevMenuItem buttonItemWithTitle:@"Start / Stop JS Sampling Profiler" handler:^{ - [devSettings toggleJSCSamplingProfiler]; - }]]; - } - [items addObject:[RCTDevMenuItem buttonItemWithTitleBlock:^NSString *{ return @"Toggle Inspector"; } handler:^{ diff --git a/React/DevSupport/RCTInspectorDevServerHelper.h b/React/DevSupport/RCTInspectorDevServerHelper.h index ac91707fb..c718dfd3b 100644 --- a/React/DevSupport/RCTInspectorDevServerHelper.h +++ b/React/DevSupport/RCTInspectorDevServerHelper.h @@ -4,7 +4,6 @@ // LICENSE file in the root directory of this source tree. #import -#import #import #import diff --git a/React/DevSupport/RCTInspectorDevServerHelper.mm b/React/DevSupport/RCTInspectorDevServerHelper.mm index 0a3c1bfc1..7aad19bc2 100644 --- a/React/DevSupport/RCTInspectorDevServerHelper.mm +++ b/React/DevSupport/RCTInspectorDevServerHelper.mm @@ -2,15 +2,12 @@ #if RCT_DEV -#import #import #import #import "RCTDefines.h" #import "RCTInspectorPackagerConnection.h" -using namespace facebook::react; - static NSString *const kDebuggerMsgDisable = @"{ \"id\":1,\"method\":\"Debugger.disable\" }"; static NSString *getServerHost(NSURL *bundleURL, NSNumber *port) diff --git a/React/Fabric/RCTSurfacePresenter.mm b/React/Fabric/RCTSurfacePresenter.mm index ea6637de8..2b102cbc0 100644 --- a/React/Fabric/RCTSurfacePresenter.mm +++ b/React/Fabric/RCTSurfacePresenter.mm @@ -307,12 +307,3 @@ using namespace facebook::react; } @end - -@implementation RCTBridge (RCTSurfacePresenter) - -- (RCTSurfacePresenter *)surfacePresenter -{ - return [self jsBoundExtraModuleForClass:[RCTSurfacePresenter class]]; -} - -@end diff --git a/React/Inspector/RCTInspector.mm b/React/Inspector/RCTInspector.mm index 0bb83db45..79c1431f0 100644 --- a/React/Inspector/RCTInspector.mm +++ b/React/Inspector/RCTInspector.mm @@ -3,7 +3,6 @@ #if RCT_DEV -#include #include #import "RCTDefines.h" diff --git a/React/Modules/RCTDevSettings.h b/React/Modules/RCTDevSettings.h index 8ca64e406..24c14a4cb 100644 --- a/React/Modules/RCTDevSettings.h +++ b/React/Modules/RCTDevSettings.h @@ -71,11 +71,6 @@ */ - (void)toggleElementInspector; -/** - * Toggle JSC's sampling profiler. - */ -- (void)toggleJSCSamplingProfiler; - /** * Enables starting of profiling sampler on launch */ diff --git a/React/Modules/RCTDevSettings.mm b/React/Modules/RCTDevSettings.mm index da2b29474..70454aebc 100644 --- a/React/Modules/RCTDevSettings.mm +++ b/React/Modules/RCTDevSettings.mm @@ -9,14 +9,9 @@ #import -#import - -#import - #import "RCTBridge+Private.h" #import "RCTBridgeModule.h" #import "RCTEventDispatcher.h" -#import "RCTJSCSamplingProfiler.h" #import "RCTLog.h" #import "RCTProfile.h" #import "RCTUtils.h" @@ -29,7 +24,6 @@ static NSString *const kRCTDevSettingIsDebuggingRemotely = @"isDebuggingRemotely static NSString *const kRCTDevSettingExecutorOverrideClass = @"executor-override"; static NSString *const kRCTDevSettingShakeToShowDevMenu = @"shakeToShow"; static NSString *const kRCTDevSettingIsPerfMonitorShown = @"RCTPerfMonitorKey"; -static NSString *const kRCTDevSettingStartSamplingProfilerOnLaunch = @"startSamplingProfilerOnLaunch"; static NSString *const kRCTDevSettingsUserDefaultsKey = @"RCTDevMenu"; @@ -40,7 +34,6 @@ static NSString *const kRCTDevSettingsUserDefaultsKey = @"RCTDevMenu"; #if RCT_ENABLE_INSPECTOR #import "RCTInspectorDevServerHelper.h" -#import #endif #if RCT_DEV @@ -112,7 +105,6 @@ static NSString *const kRCTDevSettingsUserDefaultsKey = @"RCTDevMenu"; BOOL _isJSLoaded; #if ENABLE_PACKAGER_CONNECTION RCTHandlerToken _reloadToken; - RCTHandlerToken _pokeSamplingProfilerToken; #endif } @@ -177,14 +169,6 @@ RCT_EXPORT_MODULE() } queue:dispatch_get_main_queue() forMethod:@"reload"]; - - _pokeSamplingProfilerToken = - [[RCTPackagerConnection sharedPackagerConnection] - addRequestHandler:^(NSDictionary *params, RCTPackagerClientResponder *responder) { - pokeSamplingProfiler(weakBridge, responder); - } - queue:dispatch_get_main_queue() - forMethod:@"pokeSamplingProfiler"]; #endif #if RCT_ENABLE_INSPECTOR @@ -201,32 +185,6 @@ RCT_EXPORT_MODULE() #endif } -#if ENABLE_PACKAGER_CONNECTION -static void pokeSamplingProfiler(RCTBridge *const bridge, RCTPackagerClientResponder *const responder) -{ - if (!bridge) { - [responder respondWithError:@"The bridge is nil. Try again."]; - return; - } - - JSGlobalContextRef globalContext = bridge.jsContextRef; - if (!JSC_JSSamplingProfilerEnabled(globalContext)) { - [responder respondWithError:@"The JSSamplingProfiler is disabled. See 'iOS specific setup' section here https://fburl.com/u4lw7xeq for some help"]; - return; - } - - // JSPokeSamplingProfiler() toggles the profiling process - JSValueRef jsResult = JSC_JSPokeSamplingProfiler(globalContext); - if (JSC_JSValueGetType(globalContext, jsResult) == kJSTypeNull) { - [responder respondWithResult:@"started"]; - } else { - JSContext *context = [JSC_JSContext(globalContext) contextWithJSGlobalContextRef:globalContext]; - NSString *results = [[JSC_JSValue(globalContext) valueWithJSValueRef:jsResult inContext:context] toObject]; - [responder respondWithResult:results]; - } -} -#endif - - (dispatch_queue_t)methodQueue { return dispatch_get_main_queue(); @@ -237,7 +195,6 @@ static void pokeSamplingProfiler(RCTBridge *const bridge, RCTPackagerClientRespo [_liveReloadUpdateTask cancel]; #if ENABLE_PACKAGER_CONNECTION [[RCTPackagerConnection sharedPackagerConnection] removeHandler:_reloadToken]; - [[RCTPackagerConnection sharedPackagerConnection] removeHandler:_pokeSamplingProfilerToken]; #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; } @@ -277,11 +234,6 @@ static void pokeSamplingProfiler(RCTBridge *const bridge, RCTPackagerClientRespo return (_liveReloadURL != nil); } -- (BOOL)isJSCSamplingProfilerAvailable -{ - return JSC_JSSamplingProfilerEnabled(_bridge.jsContextRef); -} - RCT_EXPORT_METHOD(reload) { [_bridge reload]; @@ -394,20 +346,6 @@ RCT_EXPORT_METHOD(toggleElementInspector) } } -- (void)toggleJSCSamplingProfiler -{ - JSGlobalContextRef globalContext = _bridge.jsContextRef; - // JSPokeSamplingProfiler() toggles the profiling process - JSValueRef jsResult = JSC_JSPokeSamplingProfiler(globalContext); - - if (JSC_JSValueGetType(globalContext, jsResult) != kJSTypeNull) { - JSContext *context = [JSC_JSContext(globalContext) contextWithJSGlobalContextRef:globalContext]; - NSString *results = [[JSC_JSValue(globalContext) valueWithJSValueRef:jsResult inContext:context] toObject]; - RCTJSCSamplingProfiler *profilerModule = [_bridge moduleForClass:[RCTJSCSamplingProfiler class]]; - [profilerModule operationCompletedWithResults:results]; - } -} - - (BOOL)isElementInspectorShown { return [[self settingForKey:kRCTDevSettingIsInspectorShown] boolValue]; @@ -423,16 +361,6 @@ RCT_EXPORT_METHOD(toggleElementInspector) return [[self settingForKey:kRCTDevSettingIsPerfMonitorShown] boolValue]; } -- (void)setStartSamplingProfilerOnLaunch:(BOOL)startSamplingProfilerOnLaunch -{ - [self _updateSettingWithValue:@(startSamplingProfilerOnLaunch) forKey:kRCTDevSettingStartSamplingProfilerOnLaunch]; -} - -- (BOOL)startSamplingProfilerOnLaunch -{ - return [[self settingForKey:kRCTDevSettingStartSamplingProfilerOnLaunch] boolValue]; -} - - (void)setExecutorClass:(Class)executorClass { _executorClass = executorClass; @@ -554,7 +482,6 @@ RCT_EXPORT_METHOD(toggleElementInspector) - (id)settingForKey:(NSString *)key { return nil; } - (void)reload {} - (void)toggleElementInspector {} -- (void)toggleJSCSamplingProfiler {} @end diff --git a/ReactCommon/cxxreact/BUCK b/ReactCommon/cxxreact/BUCK index d2fd1a1ff..8a4834b7f 100644 --- a/ReactCommon/cxxreact/BUCK +++ b/ReactCommon/cxxreact/BUCK @@ -1,5 +1,5 @@ load("@fbsource//tools/build_defs:glob_defs.bzl", "subdir_glob") -load("//tools/build_defs/oss:rn_defs.bzl", "ANDROID", "ANDROID_JSC_DEPS", "APPLE", "APPLE_JSC_DEPS", "get_android_inspector_flags", "get_apple_compiler_flags", "get_apple_inspector_flags", "get_debug_preprocessor_flags", "react_native_xplat_target", "rn_xplat_cxx_library") +load("//tools/build_defs/oss:rn_defs.bzl", "ANDROID", "APPLE", "get_android_inspector_flags", "get_apple_compiler_flags", "get_apple_inspector_flags", "get_debug_preprocessor_flags", "react_native_xplat_target", "rn_xplat_cxx_library") CXX_LIBRARY_COMPILER_FLAGS = [ "-std=c++14", @@ -121,14 +121,9 @@ rn_xplat_cxx_library( "-fexceptions", "-frtti", ], - fbandroid_deps = ANDROID_JSC_DEPS, fbandroid_preprocessor_flags = get_android_inspector_flags(), fbobjc_compiler_flags = get_apple_compiler_flags(), - fbobjc_deps = APPLE_JSC_DEPS, fbobjc_force_static = True, - fbobjc_frameworks = [ - "$SDKROOT/System/Library/Frameworks/JavaScriptCore.framework", - ], fbobjc_preprocessor_flags = get_debug_preprocessor_flags() + get_apple_inspector_flags(), force_static = True, macosx_tests_override = [], diff --git a/ReactCommon/jsiexecutor/BUCK b/ReactCommon/jsiexecutor/BUCK index e6e6334be..c979a1a68 100644 --- a/ReactCommon/jsiexecutor/BUCK +++ b/ReactCommon/jsiexecutor/BUCK @@ -1,4 +1,4 @@ -load("//tools/build_defs/oss:rn_defs.bzl", "cxx_library", "react_native_xplat_dep", "react_native_xplat_target") +load("//tools/build_defs/oss:rn_defs.bzl", "ANDROID", "APPLE", "cxx_library", "react_native_xplat_dep", "react_native_xplat_target") cxx_library( name = "jsiexecutor",