diff options
author | Francis Ricci <francisjricci@gmail.com> | 2017-09-29 20:04:29 +0000 |
---|---|---|
committer | Francis Ricci <francisjricci@gmail.com> | 2017-09-29 20:04:29 +0000 |
commit | 74c93de659bc37d9ab5abe6bf0186bd57e72699e (patch) | |
tree | 14efc7feb2b97fcb60f0f5bab345dff93e55b32e | |
parent | 615a3bbdad3dce0b2594825abb74dfdd3f6e7536 (diff) | |
download | bcm5719-llvm-74c93de659bc37d9ab5abe6bf0186bd57e72699e.tar.gz bcm5719-llvm-74c93de659bc37d9ab5abe6bf0186bd57e72699e.zip |
Revert "Move LoadedModule list to a NoCtor vector and initialize on demand."
I think this may have introduced a failure on
llvm-clang-lld-x86_64-debian-fast
This reverts commit r314533
llvm-svn: 314552
7 files changed, 10 insertions, 15 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common.h b/compiler-rt/lib/sanitizer_common/sanitizer_common.h index 11ee5902462..47b02b149d3 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_common.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_common.h @@ -727,7 +727,7 @@ class LoadedModule { // filling this information. class ListOfModules { public: - ListOfModules() : initialized(false) {} + ListOfModules() : modules_(kInitialCapacity) {} ~ListOfModules() { clear(); } void init(); const LoadedModule *begin() const { return modules_.begin(); } @@ -745,15 +745,10 @@ class ListOfModules { for (auto &module : modules_) module.clear(); modules_.clear(); } - void clearOrInit() { - initialized ? clear() : modules_.Initialize(kInitialCapacity); - initialized = true; - } - InternalMmapVectorNoCtor<LoadedModule> modules_; + InternalMmapVector<LoadedModule> modules_; // We rarely have more than 16K loaded modules. static const uptr kInitialCapacity = 1 << 14; - bool initialized; }; // Callback type for iterating over a set of memory ranges. diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc index 0f420875d43..da715dc6cdb 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc @@ -424,7 +424,7 @@ typedef ElfW(Phdr) Elf_Phdr; # endif struct DlIteratePhdrData { - InternalMmapVectorNoCtor<LoadedModule> *modules; + InternalMmapVector<LoadedModule> *modules; bool first; }; @@ -473,13 +473,13 @@ static bool requiresProcmaps() { #endif } -static void procmapsInit(InternalMmapVectorNoCtor<LoadedModule> *modules) { +static void procmapsInit(InternalMmapVector<LoadedModule> *modules) { MemoryMappingLayout memory_mapping(false); memory_mapping.DumpListOfModules(modules); } void ListOfModules::init() { - clearOrInit(); + clear(); if (requiresProcmaps()) { procmapsInit(&modules_); } else { diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc b/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc index cd63cb42f63..1570ae277de 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc @@ -411,7 +411,7 @@ void GetThreadStackAndTls(bool main, uptr *stk_addr, uptr *stk_size, } void ListOfModules::init() { - clearOrInit(); + clear(); MemoryMappingLayout memory_mapping(false); memory_mapping.DumpListOfModules(&modules_); } diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_procmaps.h b/compiler-rt/lib/sanitizer_common/sanitizer_procmaps.h index d462ad8414d..96d0b2f9de7 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_procmaps.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_procmaps.h @@ -76,7 +76,7 @@ class MemoryMappingLayout { static void CacheMemoryMappings(); // Adds all mapped objects into a vector. - void DumpListOfModules(InternalMmapVectorNoCtor<LoadedModule> *modules); + void DumpListOfModules(InternalMmapVector<LoadedModule> *modules); private: void LoadFromCache(); diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_common.cc b/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_common.cc index b9298d4cce2..30663e8c675 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_common.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_common.cc @@ -120,7 +120,7 @@ void MemoryMappingLayout::LoadFromCache() { } void MemoryMappingLayout::DumpListOfModules( - InternalMmapVectorNoCtor<LoadedModule> *modules) { + InternalMmapVector<LoadedModule> *modules) { Reset(); InternalScopedString module_name(kMaxPathLength); MemoryMappedSegment segment(module_name.data(), module_name.size()); diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_mac.cc b/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_mac.cc index 3b98ff09578..786876f0454 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_mac.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_mac.cc @@ -353,7 +353,7 @@ bool MemoryMappingLayout::Next(MemoryMappedSegment *segment) { } void MemoryMappingLayout::DumpListOfModules( - InternalMmapVectorNoCtor<LoadedModule> *modules) { + InternalMmapVector<LoadedModule> *modules) { Reset(); InternalScopedString module_name(kMaxPathLength); MemoryMappedSegment segment(module_name.data(), kMaxPathLength); diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_win.cc b/compiler-rt/lib/sanitizer_common/sanitizer_win.cc index 84065aa0e87..a144db28c33 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_win.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_win.cc @@ -524,7 +524,7 @@ static uptr GetPreferredBase(const char *modname) { } void ListOfModules::init() { - clearOrInit(); + clear(); HANDLE cur_process = GetCurrentProcess(); // Query the list of modules. Start by assuming there are no more than 256 |