Skip to content
Snippets Groups Projects
Commit a0dbc28e authored by Axel Naumann's avatar Axel Naumann
Browse files

[metacling] Remember which classes were DeepAutoLoad-ed in this AutoLoad:

ROOT-10895 suffers from trying to autoload 220 classes, but causing >80k calls to
DeepAutoLoadImpl(). Within one call to AutoLoad(), no new information can arrive that
would allow later recursions of DeepAutoLoadImpl() to now autoload a class successfully.
So whether autoloading a class successfully or not, any class on which DeepAutoLoadImpl()
was called does not need to be re-visited within the same AutoLoad() call.

To achieve that, remember the class names that have been visited already, bringing the
count to (non-early-return) DeepAutoLoadImpl() to the actual number of classes that
we should try to autoload.

And a perf-opt: do not determine type names if the type is fundamental.

And I'm not a big fan of deep code nesting.
parent 733d892e
Branches
Tags
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment