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