Skip to content

TClass::Init() does two lookups where one is enough #7123

Open
@Axel-Naumann

Description

@Axel-Naumann

Explain what you would like to see improved

TCling::CheckClassInfo() should return (by parameter) the found decl, such that TClass::Init() can use it to construct the TClingClassInfo and that doesn't need to repeat the lookup.

To Reproduce

One:

#0  cling::LookupHelper::findScope (this=0x5555555f7be0, className=..., diagOnOff=cling::LookupHelper::NoDiagnostics, 
    resultType=0x7fffffffaae0, instantiateTemplate=false)
    at /home/axel/build/root/master/src/interpreter/cling/lib/Interpreter/LookupHelper.cpp:525
#1  0x00007ffff2d8cc59 in TCling::CheckClassInfo (this=0x5555555f1e00, name=0x555555f70749 "TSysEvtHandler", autoload=true, 
    isClassOrNamespaceOnly=false) at /home/axel/build/root/master/src/core/metacling/src/TCling.cxx:4136
#2  0x00007ffff7d0e211 in TClass::Init (this=0x555555f70730, name=0x7ffff7af4b40 "TSysEvtHandler", cversion=0, 
    typeinfo=0x7ffff7f38f38 <typeinfo for TSysEvtHandler>, isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22, givenInfo=0x0, silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:1494
#3  0x00007ffff7d0d5b7 in TClass::TClass (this=0x555555f70730, name=0x7ffff7af4b40 "TSysEvtHandler", cversion=0, info=..., 
    isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22, silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:1318
#4  0x00007ffff7fa9dee in TQClass::TQClass (this=0x555555f70710, name=0x7ffff7af4b40 "TSysEvtHandler", cversion=0, info=..., 
    isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22) at include/TQClass.h:47
#5  0x00007ffff7fa9eaa in ROOT::Internal::TQObjectInitBehavior::CreateClass (this=0x5555555bff80, 
    cname=0x7ffff7af4b40 "TSysEvtHandler", id=0, info=..., isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22) at include/TQClass.h:70
#6  0x00007ffff7d3c467 in ROOT::TGenericClassInfo::GetClass (
    this=0x7ffff7f7ce60 <ROOT::GenerateInitInstanceLocal(TSysEvtHandler const*)::instance>)
    at /home/axel/build/root/master/src/core/meta/src/TGenericClassInfo.cxx:250
#7  0x00007ffff7dcf596 in TSysEvtHandler::Dictionary () at core/G__Core.cxx:14387
#8  0x00007ffff7d1db76 in TClass::LoadClassDefault (requestedname=0x7fffffffb399 "TSysEvtHandler")
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:5769
#9  0x00007ffff7d1da90 in TClass::LoadClass (requestedname=0x7fffffffb399 "TSysEvtHandler", silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:5740
#10 0x00007ffff7bdd915 in TROOT::LoadClass (this=0x7ffff7f53460 <ROOT::Internal::GetROOT1()::alloc>, 
    requestedname=0x7fffffffb399 "TSysEvtHandler", silent=false) at /home/axel/build/root/master/src/core/base/src/TROOT.cxx:2119
#11 0x00007ffff7d14d58 in TClass::GetClass (info=0x555556980ba0, load=true, silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:3323
#12 0x00007ffff7d07144 in TBaseClass::GetClassPointer (this=0x555556980c70, load=true)
    at /home/axel/build/root/master/src/core/meta/src/TBaseClass.cxx:66
#13 0x00007ffff7c4b6eb in TQObject::CollectClassSignalLists (this=0x555555d8eac0, list=..., cls=0x55555608c200)
    at /home/axel/build/root/master/src/core/base/src/TQObject.cxx:461
#14 0x00007ffff7faf3ef in TQObject::EmitVA<>(char const*, int) (this=0x555555d8eac0, signal_name=0x7ffff7fa0db3 "Added()")
    at /home/axel/build/root/master/src/core/base/inc/TQObject.h:109
#15 0x00007ffff7fae61a in TQObject::Emit (this=0x555555d8eac0, signal=0x7ffff7fa0db3 "Added()")
    at /home/axel/build/root/master/src/core/base/inc/TQObject.h:173
#16 0x00007ffff7faec35 in TSysEvtHandler::Added (this=0x555555d8eab0)
    at /home/axel/build/root/master/src/core/base/inc/TSysEvtHandler.h:50
#17 0x00007ffff7c680da in TSignalHandler::Add (this=0x555555d8eab0)
    at /home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx:172
#18 0x00007ffff7faadb5 in TRint::TRint (this=0x5555555d5780, appClassName=0x5555555549b8 "Rint", argc=0x7fffffffd75c, 
    argv=0x7fffffffd878, options=0x0, numOptions=0, noLogo=false) at /home/axel/build/root/master/src/core/rint/src/TRint.cxx:211
#19 0x0000555555555cab in main (argc=1, argv=0x7fffffffd878) at /home/axel/build/root/master/src/main/src/rmain.cxx:27

Two:

#0  cling::LookupHelper::findScope (this=0x5555555f7be0, className=..., diagOnOff=cling::LookupHelper::NoDiagnostics, 
    resultType=0x7fffffffad88, instantiateTemplate=false)
    at /home/axel/build/root/master/src/interpreter/cling/lib/Interpreter/LookupHelper.cpp:525
#1  0x00007ffff2eef9e9 in TClingClassInfo::TClingClassInfo (this=0x5555569808f0, interp=0x5555555802a0, 
    name=0x7fffffffae70 "TSysEvtHandler", intantiateTemplate=false)
    at /home/axel/build/root/master/src/core/metacling/src/TClingClassInfo.cxx:88
#2  0x00007ffff2d8c4a3 in TCling::SetClassInfo (this=0x5555555f1e00, cl=0x555555f70730, reload=false)
    at /home/axel/build/root/master/src/core/metacling/src/TCling.cxx:3984
#3  0x00007ffff7d0e250 in TClass::Init (this=0x555555f70730, name=0x7ffff7af4b40 "TSysEvtHandler", cversion=0, 
    typeinfo=0x7ffff7f38f38 <typeinfo for TSysEvtHandler>, isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22, givenInfo=0x0, silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:1495
#4  0x00007ffff7d0d5b7 in TClass::TClass (this=0x555555f70730, name=0x7ffff7af4b40 "TSysEvtHandler", cversion=0, info=..., 
    isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22, silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:1318
#5  0x00007ffff7fa9dee in TQClass::TQClass (this=0x555555f70710, name=0x7ffff7af4b40 "TSysEvtHandler", cversion=0, info=..., 
    isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22) at include/TQClass.h:47
#6  0x00007ffff7fa9eaa in ROOT::Internal::TQObjectInitBehavior::CreateClass (this=0x5555555bff80, 
    cname=0x7ffff7af4b40 "TSysEvtHandler", id=0, info=..., isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22) at include/TQClass.h:70
#7  0x00007ffff7d3c467 in ROOT::TGenericClassInfo::GetClass (
    this=0x7ffff7f7ce60 <ROOT::GenerateInitInstanceLocal(TSysEvtHandler const*)::instance>)
    at /home/axel/build/root/master/src/core/meta/src/TGenericClassInfo.cxx:250
#8  0x00007ffff7dcf596 in TSysEvtHandler::Dictionary () at core/G__Core.cxx:14387
#9  0x00007ffff7d1db76 in TClass::LoadClassDefault (requestedname=0x7fffffffb399 "TSysEvtHandler")
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:5769
#10 0x00007ffff7d1da90 in TClass::LoadClass (requestedname=0x7fffffffb399 "TSysEvtHandler", silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:5740
#11 0x00007ffff7bdd915 in TROOT::LoadClass (this=0x7ffff7f53460 <ROOT::Internal::GetROOT1()::alloc>, 
    requestedname=0x7fffffffb399 "TSysEvtHandler", silent=false) at /home/axel/build/root/master/src/core/base/src/TROOT.cxx:2119
#12 0x00007ffff7d14d58 in TClass::GetClass (info=0x555556980ba0, load=true, silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:3323
#13 0x00007ffff7d07144 in TBaseClass::GetClassPointer (this=0x555556980c70, load=true)
    at /home/axel/build/root/master/src/core/meta/src/TBaseClass.cxx:66
#14 0x00007ffff7c4b6eb in TQObject::CollectClassSignalLists (this=0x555555d8eac0, list=..., cls=0x55555608c200)
    at /home/axel/build/root/master/src/core/base/src/TQObject.cxx:461
#15 0x00007ffff7faf3ef in TQObject::EmitVA<>(char const*, int) (this=0x555555d8eac0, signal_name=0x7ffff7fa0db3 "Added()")
    at /home/axel/build/root/master/src/core/base/inc/TQObject.h:109
#16 0x00007ffff7fae61a in TQObject::Emit (this=0x555555d8eac0, signal=0x7ffff7fa0db3 "Added()")
    at /home/axel/build/root/master/src/core/base/inc/TQObject.h:173
#17 0x00007ffff7faec35 in TSysEvtHandler::Added (this=0x555555d8eab0)
    at /home/axel/build/root/master/src/core/base/inc/TSysEvtHandler.h:50
#18 0x00007ffff7c680da in TSignalHandler::Add (this=0x555555d8eab0)
    at /home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx:172
#19 0x00007ffff7faadb5 in TRint::TRint (this=0x5555555d5780, appClassName=0x5555555549b8 "Rint", argc=0x7fffffffd75c, 
    argv=0x7fffffffd878, options=0x0, numOptions=0, noLogo=false) at /home/axel/build/root/master/src/core/rint/src/TRint.cxx:211
#20 0x0000555555555cab in main (argc=1, argv=0x7fffffffd878) at /home/axel/build/root/master/src/main/src/rmain.cxx:27

Metadata

Metadata

Type

No type

Projects

Status

Stuck - need help

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions