diff --git a/core/base/src/TColor.cxx b/core/base/src/TColor.cxx
index 49c183210bf04838ae121fe3448ada28cbfe429b..21077daa8ce84b99290e5cfd3799f4bd8dc3107a 100644
--- a/core/base/src/TColor.cxx
+++ b/core/base/src/TColor.cxx
@@ -1058,7 +1058,10 @@ TColor::TColor(Float_t r, Float_t g, Float_t b, Float_t a): TNamed("","")
 TColor::~TColor()
 {
    gROOT->GetListOfColors()->Remove(this);
-   if (gROOT->GetListOfColors()->GetEntries() == 0) {fgPalette.Set(0); fgPalette=0;}
+   if (gROOT->GetListOfColors()->IsEmpty()) {
+      fgPalette.Set(0);
+      fgPalette=0;
+   }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/core/base/src/TUrl.cxx b/core/base/src/TUrl.cxx
index 71b6e5be9d70cd1e5fef95f13bc9694f5b53f590..c2268472595de1139bab6a954e3c716f643fe171 100644
--- a/core/base/src/TUrl.cxx
+++ b/core/base/src/TUrl.cxx
@@ -623,14 +623,14 @@ void TUrl::ParseOptions() const
       return;
 
    TObjArray *objOptions = urloptions.Tokenize("&");
-   for (Int_t n = 0; n < objOptions->GetEntries(); n++) {
+   for (Int_t n = 0; n < objOptions->GetEntriesFast(); n++) {
       TString loption = ((TObjString *) objOptions->At(n))->GetName();
       TObjArray *objTags = loption.Tokenize("=");
       if (!fOptionsMap) {
          fOptionsMap = new TMap;
          fOptionsMap->SetOwnerKeyValue();
       }
-      if (objTags->GetEntries() == 2) {
+      if (objTags->GetEntriesFast() == 2) {
          TString key = ((TObjString *) objTags->At(0))->GetName();
          TString value = ((TObjString *) objTags->At(1))->GetName();
          fOptionsMap->Add(new TObjString(key), new TObjString(value));
diff --git a/core/meta/src/TClass.cxx b/core/meta/src/TClass.cxx
index f48a539d30d7ae9a16d69465eb0364f6aff1164b..4c41e296e74a66a3d90362e32ba386c70577bc51 100644
--- a/core/meta/src/TClass.cxx
+++ b/core/meta/src/TClass.cxx
@@ -6281,7 +6281,7 @@ void TClass::SetUnloaded()
       (*fEnums).Unload();
    }
 
-   if (fState <= kForwardDeclared && fStreamerInfo->GetEntries() != 0) {
+   if (fState <= kForwardDeclared && !fStreamerInfo->IsEmpty()) {
       fState = kEmulated;
    }
 
diff --git a/core/meta/src/TSchemaRuleSet.cxx b/core/meta/src/TSchemaRuleSet.cxx
index 26ede7ad40559f4e2ca3e57fa90470aa36f95a0f..c06ba106d16d9db4ec86955b4903e8275556c78d 100644
--- a/core/meta/src/TSchemaRuleSet.cxx
+++ b/core/meta/src/TSchemaRuleSet.cxx
@@ -113,7 +113,7 @@ Bool_t TSchemaRuleSet::AddRule( TSchemaRule* rule, EConsistencyCheck checkConsis
    bool streamerInfosTest;
    {
      R__LOCKGUARD(gInterpreterMutex);
-     streamerInfosTest = (fClass->GetStreamerInfos()==0 || fClass->GetStreamerInfos()->GetEntries()==0);
+     streamerInfosTest = (fClass->GetStreamerInfos()==0 || fClass->GetStreamerInfos()->IsEmpty());
    }
    if( rule->GetTarget()  && !(fClass->TestBit(TClass::kIsEmulation) && streamerInfosTest) ) {
       TObjArrayIter titer( rule->GetTarget() );
@@ -495,7 +495,7 @@ Bool_t TSchemaRuleSet::TMatches::HasRuleWithSource( const TString& name, Bool_t
       if( rule->HasSource( name ) ) {
          if (needingAlloc) {
             const TObjArray *targets = rule->GetTarget();
-            if (targets && (targets->GetEntries() > 1 || targets->GetEntries()==0) ) {
+            if (targets && (targets->GetEntriesFast() > 1 || targets->IsEmpty()) ) {
                return kTRUE;
             }
             if (targets && name != targets->UncheckedAt(0)->GetName() ) {
@@ -525,11 +525,11 @@ Bool_t TSchemaRuleSet::TMatches::HasRuleWithTarget( const TString& name, Bool_t
       if( rule->HasTarget( name ) ) {
          if (willset) {
             const TObjArray *targets = rule->GetTarget();
-            if (targets && (targets->GetEntries() > 1 || targets->GetEntries()==0) ) {
+            if (targets && (targets->GetEntriesFast() > 1 || targets->IsEmpty()) ) {
                return kTRUE;
             }
             const TObjArray *sources = rule->GetSource();
-            if (sources && (sources->GetEntries() > 1 || sources->GetEntries()==0) ) {
+            if (sources && (sources->GetEntriesFast() > 1 || sources->IsEmpty()) ) {
                return kTRUE;
             }
             if (sources && name != sources->UncheckedAt(0)->GetName() ) {
diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx
index c7fd3c78707da488ce80ef29082c444d8456d27b..af2b8a2ba55bad009f8cdb5dcf0bd3f9051d39cb 100644
--- a/core/metacling/src/TCling.cxx
+++ b/core/metacling/src/TCling.cxx
@@ -6172,7 +6172,7 @@ UInt_t TCling::AutoParseImplRecurse(const char *cls, bool topLevel)
          clang::DeclContext* previousScopeAsContext = fInterpreter->getCI()->getASTContext().getTranslationUnitDecl();
          if (TClassEdit::IsStdClass(cls + offset))
             previousScopeAsContext = fInterpreter->getSema().getStdNamespace();
-         auto nTokens = tokens->GetEntries();
+         auto nTokens = tokens->GetEntriesFast();
          for (Int_t tk = 0; tk < nTokens; ++tk) {
             auto scopeObj = tokens->UncheckedAt(tk);
             auto scopeName = ((TObjString*) scopeObj)->String().Data();
diff --git a/io/io/inc/TStreamerInfo.h b/io/io/inc/TStreamerInfo.h
index 7d0c7ca950bea2d36ef481a6d5db26acb70df7c3..73dff23b18eca49478b3409d7d26a55b58e9749e 100644
--- a/io/io/inc/TStreamerInfo.h
+++ b/io/io/inc/TStreamerInfo.h
@@ -219,7 +219,7 @@ public:
    TStreamerInfoActions::TActionSequence *GetWriteObjectWiseActions() { return fWriteObjectWise; }
    TStreamerInfoActions::TActionSequence *GetWriteTextActions() { return fWriteText; }
    Int_t               GetNdata()   const {return fNdata;}
-   Int_t               GetNelement() const { return fElements->GetEntries(); }
+   Int_t               GetNelement() const { return fElements->GetEntriesFast(); }
    Int_t               GetNumber()  const {return fNumber;}
    Int_t               GetLength(Int_t id) const {return fComp[id].fLength;}
    ULong_t             GetMethod(Int_t id) const {return fComp[id].fMethod;}
diff --git a/io/io/src/TArchiveFile.cxx b/io/io/src/TArchiveFile.cxx
index 5848640f8828ca87cd50cae01f08562ba36c1211..ece2b54b9e6dfc1523363fb694234bf70b27468f 100644
--- a/io/io/src/TArchiveFile.cxx
+++ b/io/io/src/TArchiveFile.cxx
@@ -159,7 +159,7 @@ Bool_t TArchiveFile::ParseUrl(const char *url, TString &archive, TString &member
    // FIXME: hard coded for "zip" archive format
    TString urloptions = u.GetOptions();
    TObjArray *objOptions = urloptions.Tokenize("&");
-   for (Int_t n = 0; n < objOptions->GetEntries(); n++) {
+   for (Int_t n = 0; n < objOptions->GetEntriesFast(); n++) {
 
       TString loption = ((TObjString*)objOptions->At(n))->GetName();
       TObjArray *objTags = loption.Tokenize("=");
diff --git a/io/io/src/TStreamerInfo.cxx b/io/io/src/TStreamerInfo.cxx
index 28ddfac0e001736c99923667e218b6f3302e8408..820fb4abb24bee88df0b46697695aa2d18cd0849 100644
--- a/io/io/src/TStreamerInfo.cxx
+++ b/io/io/src/TStreamerInfo.cxx
@@ -730,7 +730,7 @@ void TStreamerInfo::BuildCheck(TFile *file /* = 0 */, Bool_t load /* = kTRUE */)
 
       // Case of a custom collection (the user provided a CollectionProxy
       // for a class that is not an STL collection).
-      if (GetElements()->GetEntries() == 1) {
+      if (GetElements()->GetEntriesFast() == 1) {
          TObject *element = GetElements()->UncheckedAt(0);
          Bool_t isstl = element && strcmp("This",element->GetName())==0;
          if (isstl) {
@@ -791,7 +791,7 @@ void TStreamerInfo::BuildCheck(TFile *file /* = 0 */, Bool_t load /* = kTRUE */)
       const TObjArray *array = fClass->GetStreamerInfos();
       TStreamerInfo* info = 0;
 
-      if (fClass->TestBit(TClass::kIsEmulation) && array->GetEntries()==0) {
+      if (fClass->TestBit(TClass::kIsEmulation) && array->IsEmpty()) {
          // We have an emulated class that has no TStreamerInfo, this
          // means it was created to insert a (default) rule.  Consequently
          // the error message about the missing dictionary was not printed.
@@ -802,7 +802,7 @@ void TStreamerInfo::BuildCheck(TFile *file /* = 0 */, Bool_t load /* = kTRUE */)
 
       // Case of a custom collection (the user provided a CollectionProxy
       // for a class that is not an STL collection).
-      if (GetElements()->GetEntries() == 1) {
+      if (GetElements()->GetEntriesFast() == 1) {
          TObject *element = GetElements()->UncheckedAt(0);
          Bool_t isstl = element && strcmp("This",element->GetName())==0;
          if (isstl && !fClass->GetCollectionProxy()) {
@@ -1256,7 +1256,7 @@ void TStreamerInfo::BuildEmulated(TFile *file)
    fClassVersion = -1;
    fCheckSum = 2001;
    TObjArray *elements = GetElements();
-   Int_t ndata = elements ? elements->GetEntries() : 0;
+   Int_t ndata = elements ? elements->GetEntriesFast() : 0;
    for (Int_t i=0;i < ndata;i++) {
       TStreamerElement *element = (TStreamerElement*)elements->UncheckedAt(i);
       if (!element) break;
@@ -1575,14 +1575,14 @@ namespace {
             return nullptr;
          }
          TVirtualStreamerInfo *info = current->GetValueClass()->GetStreamerInfo();
-         if (info->GetElements()->GetEntries() != 2) {
+         if (info->GetElements()->GetEntriesFast() != 2) {
             return oldClass;
          }
          TStreamerElement *f = (TStreamerElement*) info->GetElements()->At(0);
          TStreamerElement *s = (TStreamerElement*) info->GetElements()->At(1);
 
          info = old->GetValueClass()->GetStreamerInfo();
-         assert(info->GetElements()->GetEntries() == 2);
+         assert(info->GetElements()->GetEntriesFast() == 2);
          TStreamerElement *of = (TStreamerElement*) info->GetElements()->At(0);
          TStreamerElement *os = (TStreamerElement*) info->GetElements()->At(1);
 
@@ -1747,7 +1747,7 @@ void TStreamerInfo::BuildOld()
 
    int nBaze = 0;
 
-   if ((fElements->GetEntries() == 1) && !strcmp(fElements->At(0)->GetName(), "This")) {
+   if ((fElements->GetEntriesFast() == 1) && !strcmp(fElements->At(0)->GetName(), "This")) {
       if (fClass->GetCollectionProxy())  {
          element = (TStreamerElement*)next();
          element->SetNewType( element->GetType() );
@@ -2774,7 +2774,7 @@ TObject *TStreamerInfo::Clone(const char *newname) const
    TStreamerInfo *newinfo = (TStreamerInfo*)TNamed::Clone(newname);
    if (newname && newname[0] && fName != newname) {
       TObjArray *newelems = newinfo->GetElements();
-      Int_t ndata = newelems->GetEntries();
+      Int_t ndata = newelems->GetEntriesFast();
       for(Int_t i = 0; i < ndata; ++i) {
          TObject *element = newelems->UncheckedAt(i);
          if (element->IsA() == TStreamerLoop::Class()) {
@@ -3155,7 +3155,7 @@ void TStreamerInfo::ForceWriteInfo(TFile* file, Bool_t force)
    if (fClass==0) {
       // Build or BuildCheck has not been called yet.
       // Let's use another means of checking.
-      if (fElements && fElements->GetEntries()==1 && strcmp("This",fElements->UncheckedAt(0)->GetName())==0) {
+      if (fElements && fElements->GetEntriesFast()==1 && strcmp("This",fElements->UncheckedAt(0)->GetName())==0) {
          // We are an STL collection.
          return;
       }
@@ -3585,7 +3585,7 @@ void TStreamerInfo::GenerateDeclaration(FILE *fp, FILE *sfp, const TList *subCla
       return;
    }
 
-   Bool_t needGenericTemplate = fElements==0 || fElements->GetEntries() == 0;
+   Bool_t needGenericTemplate = fElements==0 || fElements->IsEmpty();
    Bool_t isTemplate = kFALSE;
    const char *clname = GetName();
    TString template_protoname;
@@ -3951,7 +3951,7 @@ Int_t TStreamerInfo::GenerateHeaderFile(const char *dirname, const TList *subCla
          }
       }
    }
-   Bool_t needGenericTemplate = isTemplate && (fElements==0 || fElements->GetEntries()==0);
+   Bool_t needGenericTemplate = isTemplate && (fElements==0 || fElements->IsEmpty());
 
    if (gDebug) printf("generating code for class %s\n",GetName());
 
@@ -4518,7 +4518,7 @@ void TStreamerInfo::InsertArtificialElements(std::vector<const ROOT::TSchemaRule
          newel->SetReadRawFunc( rule->GetReadRawFunctionPointer() );
          toAdd.push_back(newel);
       } else {
-         toAdd.reserve(rule->GetTarget()->GetEntries());
+         toAdd.reserve(rule->GetTarget()->GetEntriesFast());
          TObjString * objstr = (TObjString*)(rule->GetTarget()->At(0));
          if (objstr) {
             TString newName = objstr->String();
@@ -4536,7 +4536,7 @@ void TStreamerInfo::InsertArtificialElements(std::vector<const ROOT::TSchemaRule
                // This would be a completely new member (so it would need to be cached)
                // TOBEDONE
             }
-            for(Int_t other = 1; other < rule->GetTarget()->GetEntries(); ++other) {
+            for(Int_t other = 1; other < rule->GetTarget()->GetEntriesFast(); ++other) {
                objstr = (TObjString*)(rule->GetTarget()->At(other));
                if (objstr) {
                   newName = objstr->String();
diff --git a/io/io/src/TStreamerInfoActions.cxx b/io/io/src/TStreamerInfoActions.cxx
index 429a0da185374d659e85b96748ca9557128ad8ed..5681883825cfca0378b3121d709bde81d6c5edfc 100644
--- a/io/io/src/TStreamerInfoActions.cxx
+++ b/io/io/src/TStreamerInfoActions.cxx
@@ -3003,7 +3003,7 @@ void TStreamerInfo::Compile()
    assert(fComp == 0 && fCompFull == 0 && fCompOpt == 0);
 
 
-   Int_t ndata = fElements->GetEntries();
+   Int_t ndata = fElements->GetEntriesFast();
 
 
    if (fReadObjectWise) fReadObjectWise->fActions.clear();
@@ -3894,7 +3894,7 @@ TStreamerInfoActions::TActionSequence *TStreamerInfoActions::TActionSequence::Cr
 
    TStreamerInfo *sinfo = static_cast<TStreamerInfo*>(info);
 
-   UInt_t ndata = info->GetElements()->GetEntries();
+   UInt_t ndata = info->GetElements()->GetEntriesFast();
    TStreamerInfoActions::TActionSequence *sequence = new TStreamerInfoActions::TActionSequence(info,ndata);
    if (IsDefaultVector(proxy))
    {
@@ -4009,7 +4009,7 @@ TStreamerInfoActions::TActionSequence *TStreamerInfoActions::TActionSequence::Cr
          return new TStreamerInfoActions::TActionSequence(0,0);
       }
 
-      UInt_t ndata = info->GetElements()->GetEntries();
+      UInt_t ndata = info->GetElements()->GetEntriesFast();
       TStreamerInfo *sinfo = static_cast<TStreamerInfo*>(info);
       TStreamerInfoActions::TActionSequence *sequence = new TStreamerInfoActions::TActionSequence(info,ndata);
 
diff --git a/tree/tree/src/TBranch.cxx b/tree/tree/src/TBranch.cxx
index 5fed8a7ee3c7021db8c57cb0f38e792f24c61939..5f14ce12cbfcca339648232f5d1131b05e4fcf51 100644
--- a/tree/tree/src/TBranch.cxx
+++ b/tree/tree/src/TBranch.cxx
@@ -1159,7 +1159,7 @@ Int_t TBranch::FlushBaskets()
 Int_t TBranch::FlushOneBasket(UInt_t ibasket)
 {
    Int_t nbytes = 0;
-   if (fDirectory && fBaskets.GetEntries()) {
+   if (fDirectory && fBaskets.GetEntriesFast()) {
       TBasket *basket = (TBasket*)fBaskets.UncheckedAt(ibasket);
 
       if (basket) {
diff --git a/tree/tree/src/TBranchElement.cxx b/tree/tree/src/TBranchElement.cxx
index 2f255fd0751c439a31bc44b5fda50b836e5a9077..e6331d1e9ac88931cbb7f807cb5f95698b719516 100644
--- a/tree/tree/src/TBranchElement.cxx
+++ b/tree/tree/src/TBranchElement.cxx
@@ -1141,10 +1141,12 @@ void TBranchElement::BuildTitle(const char* name)
 {
    TString branchname;
 
-   Int_t nbranches = fBranches.GetEntries();
+   Int_t nbranches = fBranches.GetEntriesFast();
 
    for (Int_t i = 0; i < nbranches; ++i) {
       TBranchElement* bre = (TBranchElement*) fBranches.At(i);
+      if (!bre)
+         continue;
       if (fType == 3) {
          bre->SetType(31);
       } else if (fType == 4) {
@@ -3233,7 +3235,7 @@ void TBranchElement::InitializeOffsets()
          {
             Int_t streamerType = subBranchElement->GetType();
             if (streamerType > TStreamerInfo::kObject
-                && subBranch->GetListOfBranches()->GetEntries()==0
+                && subBranch->GetListOfBranches()->GetEntriesFast()==0
                 && CanSelfReference(subBranchElement->GetClass()))
             {
                subBranch->SetBit(kBranchAny);
diff --git a/tree/tree/src/TTreeCache.cxx b/tree/tree/src/TTreeCache.cxx
index 4545e3dfbd773718d472fe3588b5998dce8b46aa..fae1b3156f35dcbf027fbcb274109959fc347400 100644
--- a/tree/tree/src/TTreeCache.cxx
+++ b/tree/tree/src/TTreeCache.cxx
@@ -314,7 +314,7 @@ TTreeCache::TTreeCache(TTree *tree, Int_t buffersize)
      fBrNames(new TList), fTree(tree), fPrefillType(GetConfiguredPrefillType())
 {
    fEntryNext = fEntryMin + fgLearnEntries;
-   Int_t nleaves = tree->GetListOfLeaves()->GetEntries();
+   Int_t nleaves = tree->GetListOfLeaves()->GetEntriesFast();
    fBranches = new TObjArray(nleaves);
 }
 
diff --git a/tree/tree/src/TTreeCloner.cxx b/tree/tree/src/TTreeCloner.cxx
index 98618b8ad7c6c357b704d000f9df146710d040c6..60f6ec7259e9bfa399de440b99436a1c12dab0e4 100644
--- a/tree/tree/src/TTreeCloner.cxx
+++ b/tree/tree/src/TTreeCloner.cxx
@@ -134,8 +134,8 @@ TTreeCloner::TTreeCloner(TTree *from, TTree *to, TDirectory *newdirectory, Optio
    fToDirectory(newdirectory),
    fToFile(fToDirectory ? fToDirectory->GetFile() : nullptr),
    fMethod(method),
-   fFromBranches( from ? from->GetListOfLeaves()->GetEntries()+1 : 0),
-   fToBranches( to ? to->GetListOfLeaves()->GetEntries()+1 : 0),
+   fFromBranches( from ? from->GetListOfLeaves()->GetEntriesFast()+1 : 0),
+   fToBranches( to ? to->GetListOfLeaves()->GetEntriesFast()+1 : 0),
    fMaxBaskets(CollectBranches()),
    fBasketBranchNum(new UInt_t[fMaxBaskets]),
    fBasketNum(new UInt_t[fMaxBaskets]),
@@ -264,7 +264,7 @@ void TTreeCloner::CloseOutWriteBaskets()
    if (IsInPlace())
       return;
 
-   for(Int_t i=0; i<fToBranches.GetEntries(); ++i) {
+   for(Int_t i=0; i<fToBranches.GetEntriesFast(); ++i) {
       TBranch *to = (TBranch*)fToBranches.UncheckedAt(i);
       to->FlushOneBasket(to->GetWriteBasket());
    }
@@ -286,8 +286,8 @@ UInt_t TTreeCloner::CollectBranches(TBranch *from, TBranch *to) {
       numBaskets += CollectBranches(fromclones->fBranchCount, toclones->fBranchCount);
 
    } else if (from->InheritsFrom(TBranchElement::Class())) {
-      Int_t nb = from->GetListOfLeaves()->GetEntries();
-      Int_t fnb = to->GetListOfLeaves()->GetEntries();
+      Int_t nb = from->GetListOfLeaves()->GetEntriesFast();
+      Int_t fnb = to->GetListOfLeaves()->GetEntriesFast();
       if (nb != fnb && (nb == 0 || fnb == 0)) {
          // We might be in the case where one branch is split
          // while the other is not split.  We must reject this match.
@@ -314,8 +314,8 @@ UInt_t TTreeCloner::CollectBranches(TBranch *from, TBranch *to) {
       if (fromelem->fMaximum > toelem->fMaximum) toelem->fMaximum = fromelem->fMaximum;
    } else {
 
-      Int_t nb = from->GetListOfLeaves()->GetEntries();
-      Int_t fnb = to->GetListOfLeaves()->GetEntries();
+      Int_t nb = from->GetListOfLeaves()->GetEntriesFast();
+      Int_t fnb = to->GetListOfLeaves()->GetEntriesFast();
       if (nb != fnb) {
          fWarningMsg.Form("The export branch and the import branch (%s) do not have the same number of leaves (%d vs %d)",
                           from->GetName(), fnb, nb);
@@ -366,8 +366,8 @@ UInt_t TTreeCloner::CollectBranches(TObjArray *from, TObjArray *to)
 {
    // Since this is called from the constructor, this can not be a virtual function
 
-   Int_t fnb = from->GetEntries();
-   Int_t tnb = to->GetEntries();
+   Int_t fnb = from->GetEntriesFast();
+   Int_t tnb = to->GetEntriesFast();
    if (!fnb || !tnb) {
       return 0;
    }
@@ -450,7 +450,7 @@ UInt_t TTreeCloner::CollectBranches()
 
 void TTreeCloner::CollectBaskets()
 {
-   UInt_t len = fFromBranches.GetEntries();
+   UInt_t len = fFromBranches.GetEntriesFast();
 
    for(UInt_t i=0,bi=0; i<len; ++i) {
       TBranch *from = (TBranch*)fFromBranches.UncheckedAt(i);
@@ -516,11 +516,11 @@ void TTreeCloner::CopyMemoryBaskets()
       return;
 
    TBasket *basket = 0;
-   for(Int_t i=0; i<fToBranches.GetEntries(); ++i) {
+   for(Int_t i=0; i<fToBranches.GetEntriesFast(); ++i) {
       TBranch *from = (TBranch*)fFromBranches.UncheckedAt( i );
       TBranch *to   = (TBranch*)fToBranches.UncheckedAt( i );
 
-      basket = from->GetListOfBaskets()->GetEntries() ? from->GetBasket(from->GetWriteBasket()) : 0;
+      basket = (!from->GetListOfBaskets()->IsEmpty()) ? from->GetBasket(from->GetWriteBasket()) : 0;
       if (basket) {
          basket = (TBasket*)basket->Clone();
          basket->SetBranch(to);