CINT stub suppression

Dictionary With Symbol-Based Function Calls

This is an experimental feature of the CINT dictionaries that allows CINT to call a function given the function's symbol, instead of a generated and compiled call wrapper. Since the wrappers do not have to be written, the dictionaries' source code is reduced in a significant way (close to 50%). This will also allow us, in the future, to store all the information about a function in a plain ROOT file instead of having it inside source code_/_object files.

This new feature has to be activated when configuring ROOT. There are two ways to set it up: a test and a permanent mode. The former is useful because you can switch from the old wrapper-calling method to the new direct call feature at run time, giving you the chance of trying out the new feature without asking you for a complete re-compilation.

Setting up the test mode

The first step for this, is to choose the option with ./configure

bash-2.05b$ ./configure --no-stubs-test

After that, the wrappers are enable by default. If you really want to disable them, you can switch off the variable Cint.EnableWrappers in the file $ROOTSYS/etc/system.rootrc.

i.e. put this in the file $ROOTSYS/etc/system.rootrc :

Cint.EnableWrappers: 0

Note: You can also change it after starting your session, but this can lead to dangerous situations (for instance, you create certain objects using the wrappers but you try to destroy them using the direct calls). If you want use it nonetheless, you just have to use this function from the interpreter:

gInterpreter->EnableWrappers(bool)

Setting up the permanent mode

For this, you only need to choose the rigth option with ./configure

bash-2.05b$ ./configure --no-stubs

No wrappers will be generated after that. Please let us know if everything is working as expected for you.

Additional notes

Unfortunately, there are some issues with reflex and cintex when enabling this new feature. We will deal when them as soon as possible but in the meantime you will have to disable them if you want to try the wrapper-less calls. Do it when configuring root:

bash-2.05b$ ./configure --no-stubs --disable-reflex --disable-cintex

bash-2.05b$ ./configure --no-stubs-test --disable-reflex --disable-cintex