On Wed, Jun 10, 2020 at 2:00 PM Yang Guo <[email protected]> wrote:

> V8 has the ability to serialize function bindings to native modules, e.g.
> described here
> <https://docs.google.com/document/d/1YEIBdH7ocJfm6PWISKw03szNAgnstA2B3e8PZr_-Gp4/edit#heading=h.677lbnx3xmo2>.
> I'm not sure whether React Native uses it. Maybe +Jakob Gruber
> <[email protected]> has some insights from past interaction?
>

No sorry, no further insights.


>
> Cheers,
>
> Yang
>
> On Wed, Jun 10, 2020 at 1:29 PM 王梓童 <[email protected]> wrote:
>
>> Hi, I am trying to use V8 snapshot to reduce my React-Native app's
>> startup time. Unfortunately, when I create an Isolate and a context, then
>> run a .js file, I just get the error "__fbBatchedBridgeConfig is not set,
>> cannot invoke native modules". It seems the context needs some native
>> modules. I wonder is it possible to use V8 snapshot on a React Native app?
>> I would appreciate it for your reply.
>>
>> Here is my code:
>> v8::StartupData CreateSnapshotDataBlob(const char* embedded_source) {
>>     // Create a new isolate and a new context from scratch, optionally run
>>     // a script to embed, and serialize to create a snapshot blob.
>>     v8::StartupData result = {nullptr, 0};
>>     {
>>         v8::Isolate* isolate = v8::Isolate::Allocate();
>>         v8::SnapshotCreator snapshot_creator(isolate);
>>         {
>>             v8::HandleScope scope(isolate);
>>             v8::Local<v8::Context> context = v8::Context::New(isolate);
>>
>>             if (embedded_source != nullptr &&
>>                     !RunExtraCode(isolate, context, embedded_source,
>> "<embedded>")) {
>>                 return result;
>>             }
>>             snapshot_creator.SetDefaultContext(context);
>>         }
>>         result = snapshot_creator.CreateBlob(
>>
>>  v8::SnapshotCreator::FunctionCodeHandling::kClear);
>>     }
>>
>>     return result;
>> }
>>
>> bool RunExtraCode(v8::Isolate* isolate, v8::Local<v8::Context> context,
>> const char* utf8_source, const char* name) {
>>     v8::Context::Scope context_scope(context);
>>     v8::TryCatch try_catch(isolate);
>>     v8::Local<v8::String> source_string;
>>     if (!v8::String::NewFromUtf8(isolate, utf8_source,
>> v8::NewStringType::kNormal).ToLocal(&source_string)) {
>>         return false;
>>     }
>>     v8::Local<v8::String> resource_name =
>> v8::String::NewFromUtf8(isolate, name,
>> v8::NewStringType::kNormal).ToLocalChecked();
>>     v8::ScriptOrigin origin(resource_name);
>>     v8::ScriptCompiler::Source source(source_string, origin);
>>     v8::Local<v8::Script> compileScript;
>>     if (!v8::ScriptCompiler::Compile(context,
>> &source).ToLocal(&compileScript)) {
>>         return false;
>>     }
>>
>>     if (compileScript->Run(context).IsEmpty()) {
>>         // this line will be executed, and the exception is
>> "__fbBatchedBridgeConfig is not set, cannot invoke native modules". It
>> seems the context need some native modules"
>>         std::string exception = *v8::String::Utf8Value(isolate,
>> try_catch.Exception());
>>         return false;
>>     }
>>     std::cout << !try_catch.HasCaught() << std::endl;
>>     return true;
>> }
>>
>> --
>> --
>> v8-dev mailing list
>> [email protected]
>> http://groups.google.com/group/v8-dev
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "v8-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/v8-dev/CABaRidW6PGK8%2B_19_TApbi_PAKZDOeH0p961EU0a-Ya8b%3D2vjA%40mail.gmail.com
>> <https://groups.google.com/d/msgid/v8-dev/CABaRidW6PGK8%2B_19_TApbi_PAKZDOeH0p961EU0a-Ya8b%3D2vjA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-dev/CAH3p7oMWj4vnJQ-O7CZ4z1GHAjhJGNUfJuOpW_W2VtJi-Bd%2BEA%40mail.gmail.com.

Reply via email to