Lines Matching refs:Descriptor
113 static bool HasInitWithString(Thread* self, ClassLinker* class_linker, const char* descriptor)
119 mirror::Class* exception_class = class_linker->FindClass(self, descriptor, class_loader);
144 const char* descriptor = obj->AsClass()->GetDescriptor(&temp);
146 if (HasInitWithString(self, class_linker, descriptor)) {
147 self->ThrowNewException(descriptor, PrettyDescriptor(c).c_str());
149 self->ThrowNewException(descriptor, nullptr);
333 void ClassLinker::CheckSystemClass(Thread* self, Handle<mirror::Class> c1, const char* descriptor) {
334 mirror::Class* c2 = FindSystemClass(self, descriptor);
336 LOG(FATAL) << "Could not find class " << descriptor;
343 LOG(FATAL) << "InitWithoutImage: Class mismatch for " << descriptor
529 SetClassRoot(kPrimitiveChar, char_class.Get()); // needs descriptor
2153 const char* descriptor,
2177 klass = LookupClass(self, descriptor, ComputeModifiedUtf8Hash(descriptor),
2210 // Search a collection of DexFiles for a descriptor
2211 ClassPathEntry FindInClassPath(const char* descriptor,
2214 const DexFile::ClassDef* dex_class_def = dex_file->FindClassDef(descriptor, hash);
2224 const char* descriptor,
2231 ClassPathEntry pair = FindInClassPath(descriptor, hash, boot_class_path_);
2233 mirror::Class* klass = LookupClass(self, descriptor, hash, nullptr);
2235 *result = EnsureResolved(self, descriptor, klass);
2238 descriptor,
2245 CHECK(self->IsExceptionPending()) << descriptor;
2264 bool recursive_result = FindClassInPathClassLoader(soa, self, descriptor, hash, h_parent, result);
2307 LOG(WARNING) << "Null DexFile::mCookie for " << descriptor;
2315 const DexFile::ClassDef* dex_class_def = cp_dex_file->FindClassDef(descriptor, hash);
2318 descriptor,
2324 CHECK(self->IsExceptionPending()) << descriptor;
2344 const char* descriptor,
2346 DCHECK_NE(*descriptor, '\0') << "descriptor is empty string";
2349 if (descriptor[1] == '\0') {
2352 return FindPrimitiveClass(descriptor[0]);
2354 const size_t hash = ComputeModifiedUtf8Hash(descriptor);
2356 mirror::Class* klass = LookupClass(self, descriptor, hash, class_loader.Get());
2358 return EnsureResolved(self, descriptor, klass);
2361 if (descriptor[0] == '[') {
2362 return CreateArrayClass(self, descriptor, hash, class_loader);
2365 ClassPathEntry pair = FindInClassPath(descriptor, hash, boot_class_path_);
2368 descriptor,
2384 if (FindClassInPathClassLoader(soa, self, descriptor, hash, class_loader, &cp_klass)) {
2406 std::string class_name_string(DescriptorToDot(descriptor));
2438 const char* descriptor,
2449 if (strcmp(descriptor, "Ljava/lang/Object;") == 0) {
2451 } else if (strcmp(descriptor, "Ljava/lang/Class;") == 0) {
2453 } else if (strcmp(descriptor, "Ljava/lang/String;") == 0) {
2455 } else if (strcmp(descriptor, "Ljava/lang/ref/Reference;") == 0) {
2457 } else if (strcmp(descriptor, "Ljava/lang/DexCache;") == 0) {
2483 if (strcmp(descriptor, "Ljava/lang/String;") == 0) {
2492 mirror::Class* existing = InsertClass(descriptor, klass.Get(), hash);
2496 return EnsureResolved(self, descriptor, existing);
2530 if (!LinkClass(self, descriptor, klass, interfaces, &h_new_class)) {
2538 CHECK(h_new_class.Get() != nullptr) << descriptor;
2539 CHECK(h_new_class->IsResolved()) << descriptor;
2593 const char* descriptor = dex_file.GetFieldTypeDescriptor(field_id);
2594 char c = descriptor[0];
2617 LOG(FATAL) << "Unknown descriptor: " << c;
2912 const char* descriptor = dex_file.GetClassDescriptor(dex_class_def);
2913 CHECK(descriptor != nullptr);
3348 const char* descriptor = Primitive::Descriptor(type);
3349 mirror::Class* existing = InsertClass(descriptor, h_class.Get(),
3350 ComputeModifiedUtf8Hash(descriptor));
3356 // array itself). "descriptor" looks like "[C" or "[[[[B" or
3359 // If "descriptor" refers to an array of primitives, look up the
3368 mirror::Class* ClassLinker::CreateArrayClass(Thread* self, const char* descriptor, size_t hash,
3371 CHECK_EQ('[', descriptor[0]);
3373 MutableHandle<mirror::Class> component_type(hs.NewHandle(FindClass(self, descriptor + 1,
3378 const size_t component_hash = ComputeModifiedUtf8Hash(descriptor + 1);
3379 component_type.Assign(LookupClass(self, descriptor + 1, component_hash, class_loader.Get()));
3409 mirror::Class* new_class = LookupClass(self, descriptor, hash, component_type->GetClassLoader());
3426 if (strcmp(descriptor, "[Ljava/lang/Class;") == 0) {
3428 } else if (strcmp(descriptor, "[Ljava/lang/Object;") == 0) {
3430 } else if (strcmp(descriptor, GetClassRootDescriptor(kJavaLangStringArrayClass)) == 0) {
3432 } else if (strcmp(descriptor, "[C") == 0) {
3434 } else if (strcmp(descriptor, "[I") == 0) {
3436 } else if (strcmp(descriptor, "[J") == 0) {
3497 mirror::Class* existing = InsertClass(descriptor, new_class.Get(), hash);
3539 mirror::Class* ClassLinker::InsertClass(const char* descriptor, mirror::Class* klass, size_t hash) {
3547 LOG(INFO) << "Loaded class " << descriptor << source;
3552 mirror::Class* existing = class_table->Lookup(descriptor, hash);
3562 existing = LookupClassFromBootImage(descriptor);
3589 bool ClassLinker::RemoveClass(const char* descriptor, mirror::ClassLoader* class_loader) {
3592 return class_table != nullptr && class_table->Remove(descriptor);
3596 const char* descriptor,
3603 mirror::Class* result = class_table->Lookup(descriptor, hash);
3613 mirror::Class* result = LookupClassFromBootImage(descriptor);
3615 result = InsertClass(descriptor, result, hash);
3667 const char* descriptor = klass->GetDescriptor(&temp);
3668 size_t hash = ComputeModifiedUtf8Hash(descriptor);
3669 mirror::Class* existing = class_table->Lookup(descriptor, hash);
3706 mirror::Class* ClassLinker::LookupClassFromBootImage(const char* descriptor) {
3714 // Try binary searching the type index by descriptor.
3715 const DexFile::TypeId* type_id = dex_file->FindTypeId(descriptor);
3728 // Look up classes by hash and descriptor and put all matching ones in the result array.
3731 descriptor, size_t hash, std::vector<mirror::Class*>* result)
3732 : descriptor_(descriptor),
3751 void ClassLinker::LookupClasses(const char* descriptor, std::vector<mirror::Class*>& result) {
3758 const size_t hash = ComputeModifiedUtf8Hash(descriptor);
3759 mirror::Class* klass = boot_class_table_.Lookup(descriptor, hash);
3763 LookupClassesVisitor visitor(descriptor, hash, &result);
4146 std::string descriptor(GetDescriptorForProxy(klass.Get()));
4147 const size_t hash = ComputeModifiedUtf8Hash(descriptor.c_str());
4156 mirror::Class* existing = InsertClass(descriptor.c_str(), klass.Get(), hash);
4224 if (!LinkClass(self, descriptor.c_str(), klass, h_interfaces, &new_class)) {
5072 const char* descriptor,
5169 mirror::Class* existing = table->UpdateClass(descriptor, h_new_class.Get(),
5170 descriptor));
5180 mirror::Class* const image_class = LookupClassFromBootImage(descriptor);
5182 CHECK_EQ(klass.Get(), existing) << descriptor;
7444 const char* descriptor = dex_file.StringByTypeIdx(type_idx);
7445 resolved = FindClass(self, descriptor, class_loader);
7453 << "Expected pending exception for failed resolution of: " << descriptor;
7460 ThrowNoClassDefFoundError("Failed resolution of: %s", descriptor);
7964 const char* descriptor = class_roots_descriptors[class_root];
7965 CHECK(descriptor != nullptr);
7966 return descriptor;
8243 const char* descriptor = dex_file->GetTypeDescriptor(type_id);
8244 ret.insert(descriptor);