Hi Fabio, Thank you very much for your complete reply! It has helped me a lot. 😊
On Friday, September 29, 2017 at 9:08:53 PM UTC+3, Fabio Kaminski wrote: > > > I've been wondering whether I could prepare a Context with all the > object and function templates of my library, save it in a binary file (like > V8 does with the startup snapshot) and then load it on demand, in order to > gain access to my library's code in the currently executing context. Is > that even possible? > > You can create a snapshot with native code.. the problem is that you will > need to change the v8 source, so you will end up with a fork of v8, and > will have to > manuallly change it every time you want to sync with upstream. > > See the code the v8 itself generates for methods in javascript > > See the src/builtin dir for implementations.. > > Note the differences in wrapping: > > TF_BUILTIN -> Uses the TurboFan backend directly, and you are basically > writing a portable assembly > in C++ code, that TurboFan will translate to machine code according to the > host machine > > Also the trick there is to use 'CodeStubAssembler' which will give you > access to the TurboFan frontend > > For instance in builtins-array-gen.cc the 'ArrayBuiltinCodeStubAssembler' > class used in TF_BUILTIN(builtin_method, ArrayBuiltinCodeStubAssembler) > inherits from 'CodeStubAssembler' > > Then you have 'BUILTIN(builtin_method)' which is implemented in C++ > > Once you create your methods you will need to change > 'src/builtins/builtins-definitions.h' > and add a reference to the created methods there with 'CPP(Method)' for > C++ code or 'TFS(Method) / TFJ(Method)' for > methods created using the turbofan frontend. > > Once you create your builtins, and add it to definitions, you will need to > change src/bootstrap.cc > and add them to the references and possibly to the runtime global object > if you want.. > > Note that if you do that, anywhere you use this custom v8 of yours this > custom runtime will be available... > > Thats the only way im aware, that you can embed native code in the snapshot > -- -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
