diff --git a/ReactCommon/cxxreact/JSCExecutor.cpp b/ReactCommon/cxxreact/JSCExecutor.cpp index 17881da87d9..6e57f5a4280 100644 --- a/ReactCommon/cxxreact/JSCExecutor.cpp +++ b/ReactCommon/cxxreact/JSCExecutor.cpp @@ -379,12 +379,27 @@ void JSCExecutor::loadApplicationScript( { String jsSourceURL(m_context, sourceURL.c_str()); - auto bcSourceCode = JSCreateCompiledSourceCode(fd, jsSourceURL); - if (!bcSourceCode) { + JSCompiledSourceError jsError; + auto bcSourceCode = JSCreateCompiledSourceCode(fd, jsSourceURL, &jsError); + + if (jsError == JSCompiledSourceErrorOnRead || + jsError == JSCompiledSourceErrorNotCompiled) { // Not bytecode, fall through. return JSExecutor::loadApplicationScript(fd, sourceURL); + } else if (jsError == JSCompiledSourceErrorVersionMismatch) { + throw std::runtime_error("Compiled Source Version Mismatch"); } + folly::throwOnFail( + jsError == JSCompiledSourceErrorNone, + "Unhandled Compiled Source Error" + ); + + folly::throwOnFail( + bcSourceCode != nullptr, + "Unexpected error opening compiled bundle" + ); + ReactMarker::logMarker("RUN_JS_BUNDLE_START"); evaluateSourceCode(m_context, bcSourceCode, jsSourceURL);