From 9638b64f167d2447d118664c1e1276501e4a1ecc Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Tue, 23 Jun 2015 18:16:46 +0100 Subject: [PATCH] Remove bogus DCHECK. Spotted by running libcore tests with libartd.so. The FindClass call will throw the exception if the element type is void. Change-Id: Ic5df7eb6c9934b8e70f7bfdcfe533e5c1ad5c518 --- runtime/class_linker-inl.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/runtime/class_linker-inl.h b/runtime/class_linker-inl.h index df6703cc7..21b63c61a 100644 --- a/runtime/class_linker-inl.h +++ b/runtime/class_linker-inl.h @@ -41,7 +41,6 @@ inline mirror::Class* ClassLinker::FindArrayClass(Thread* self, mirror::Class** return array_class; } } - DCHECK(!(*element_class)->IsPrimitiveVoid()); std::string descriptor = "["; std::string temp; descriptor += (*element_class)->GetDescriptor(&temp); @@ -49,10 +48,15 @@ inline mirror::Class* ClassLinker::FindArrayClass(Thread* self, mirror::Class** Handle class_loader(hs.NewHandle((*element_class)->GetClassLoader())); HandleWrapper h_element_class(hs.NewHandleWrapper(element_class)); mirror::Class* array_class = FindClass(self, descriptor.c_str(), class_loader); - // Benign races in storing array class and incrementing index. - size_t victim_index = find_array_class_cache_next_victim_; - find_array_class_cache_[victim_index] = GcRoot(array_class); - find_array_class_cache_next_victim_ = (victim_index + 1) % kFindArrayCacheSize; + if (array_class != nullptr) { + // Benign races in storing array class and incrementing index. + size_t victim_index = find_array_class_cache_next_victim_; + find_array_class_cache_[victim_index] = GcRoot(array_class); + find_array_class_cache_next_victim_ = (victim_index + 1) % kFindArrayCacheSize; + } else { + // We should have a NoClassDefFoundError. + self->AssertPendingException(); + } return array_class; } -- 2.11.0