1*4440fb50SKudo Chien #include "ReanimatedRuntime.h" 2*4440fb50SKudo Chien 3*4440fb50SKudo Chien #include <cxxreact/MessageQueueThread.h> 4*4440fb50SKudo Chien #include <jsi/jsi.h> 5*4440fb50SKudo Chien 6*4440fb50SKudo Chien #include <memory> 7*4440fb50SKudo Chien #include <utility> 8*4440fb50SKudo Chien 9*4440fb50SKudo Chien #if JS_RUNTIME_HERMES 10*4440fb50SKudo Chien #include "ReanimatedHermesRuntime.h" 11*4440fb50SKudo Chien #elif JS_RUNTIME_V8 12*4440fb50SKudo Chien #include <v8runtime/V8RuntimeFactory.h> 13*4440fb50SKudo Chien #else 14*4440fb50SKudo Chien #if REACT_NATIVE_MINOR_VERSION >= 71 15*4440fb50SKudo Chien #include <jsc/JSCRuntime.h> 16*4440fb50SKudo Chien #else 17*4440fb50SKudo Chien #include <jsi/JSCRuntime.h> 18*4440fb50SKudo Chien #endif // REACT_NATIVE_MINOR_VERSION 19*4440fb50SKudo Chien #endif // JS_RUNTIME 20*4440fb50SKudo Chien 21*4440fb50SKudo Chien namespace reanimated { 22*4440fb50SKudo Chien 23*4440fb50SKudo Chien using namespace facebook; 24*4440fb50SKudo Chien using namespace react; 25*4440fb50SKudo Chien make(jsi::Runtime * rnRuntime,std::shared_ptr<MessageQueueThread> jsQueue)26*4440fb50SKudo Chienstd::shared_ptr<jsi::Runtime> ReanimatedRuntime::make( 27*4440fb50SKudo Chien jsi::Runtime *rnRuntime, 28*4440fb50SKudo Chien std::shared_ptr<MessageQueueThread> jsQueue) { 29*4440fb50SKudo Chien #if JS_RUNTIME_HERMES 30*4440fb50SKudo Chien std::unique_ptr<facebook::hermes::HermesRuntime> runtime = 31*4440fb50SKudo Chien facebook::hermes::makeHermesRuntime(); 32*4440fb50SKudo Chien 33*4440fb50SKudo Chien // We don't call `jsQueue->quitSynchronous()` here, since it will be done 34*4440fb50SKudo Chien // later in ReanimatedHermesRuntime 35*4440fb50SKudo Chien 36*4440fb50SKudo Chien return std::make_shared<ReanimatedHermesRuntime>(std::move(runtime), jsQueue); 37*4440fb50SKudo Chien #elif JS_RUNTIME_V8 38*4440fb50SKudo Chien // This is required by iOS, because there is an assertion in the destructor 39*4440fb50SKudo Chien // that the thread was indeed `quit` before. 40*4440fb50SKudo Chien jsQueue->quitSynchronous(); 41*4440fb50SKudo Chien 42*4440fb50SKudo Chien auto config = std::make_unique<rnv8::V8RuntimeConfig>(); 43*4440fb50SKudo Chien config->enableInspector = false; 44*4440fb50SKudo Chien config->appName = "reanimated"; 45*4440fb50SKudo Chien return rnv8::createSharedV8Runtime(rnRuntime, std::move(config)); 46*4440fb50SKudo Chien #else 47*4440fb50SKudo Chien // This is required by iOS, because there is an assertion in the destructor 48*4440fb50SKudo Chien // that the thread was indeed `quit` before 49*4440fb50SKudo Chien jsQueue->quitSynchronous(); 50*4440fb50SKudo Chien 51*4440fb50SKudo Chien return facebook::jsc::makeJSCRuntime(); 52*4440fb50SKudo Chien #endif 53*4440fb50SKudo Chien } 54*4440fb50SKudo Chien 55*4440fb50SKudo Chien } // namespace reanimated 56