Thanks for documenting this all so well! On Apr 13, 2017 9:33 AM, "'Jakob Gruber' via v8-dev" < [email protected]> wrote:
> If you don't care about changes to the way TFS builtins are created you > can stop reading now. > > TLDR: The TFS macro changed to take explicit argument names: TFS(name, > kArgs....). The TFC macro was added for builtins that require a custom > descriptor. CSA builtin documentation is now available at > https://github.com/v8/v8/wiki/CodeStubAssembler-Builtins. > > Background: > --- > > There have been quite a few changes to src/builtins in recent months. A > quick summary to get everyone on the same page: > > * builtins.cc was split up into src/builtins/builtins-*.cc. > * CSA builtins were refactored to use subclasses of CodeStubAssembler with > TF_BUILTIN() as a convenience macro. > * CSA builtins were moved to src/builtins/builtins-*-gen.cc as part of the > effort of removing the code to generate builtins from the final binary. > * CSA::CallBuiltin(id, context, args...) was added as a more convenient > way to call builtins. > * Builtin declarations were moved from src/builtins/builtins.h to a > dedicated header file src/builtins/builtins-definitions.h. > * The TFJ macro (for declaring CSA builtins with JS-linkage) was changed > to include the list of arguments to allow referencing arguments by name > instead of a magic number. > * You can now use the BIND and VARIABLE macro in CSA to assign debug > source information to basic blocks and variables. This is particularly > helpful when trying to locate verifier errors. > > What changed: > --- > > I landed a change on Friday that makes similar changes to the TFS macro, > which now takes a list of named arguments. Old style: > > // Explicit definition of InterfaceDescriptor in > src/interface-descriptors.h > TFS(Name, InterfaceDescriptor, ReturnSize) > > New style: > > // Interface descriptor is auto-generated. > TFS(Name, Arg1, Arg2, ..., ArgN) > > A new TFC macro was added for stub-linkage builtins that still require a > custom descriptor (e.g. because they have untagged arguments or require > passing arguments in specific registers). > > Some documentation is available on our public wiki at > https://github.com/v8/v8/wiki/CodeStubAssembler-Builtins. > > Why: > --- > > It's a common pattern to call TFS builtins from other builtins. I'm > expecting this to become more frequent as we focus on reducing the size of > our CSA builtins and change inlined code to stub calls. > > Stub calls have been tedious to set up, requiring the TFS builtin > definition (builtins.h/builtins-*.cc), a new interface descriptor > (interface-descriptors.h) and a new CodeFactory accessor > (code-factory.{h,cc}). > > With this change landed, stub calls become much more convenient and only > require the TFS builtin definition and a CallBuiltin(id, context, args...) > call. > > -- > -- > 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]. > For more options, visit https://groups.google.com/d/optout. > -- -- 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]. For more options, visit https://groups.google.com/d/optout.
