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
2151 const char* descriptor,
2175 klass = LookupClass(self, descriptor, ComputeModifiedUtf8Hash(descriptor),
2208 // Search a collection of DexFiles for a descriptor
2209 ClassPathEntry FindInClassPath(const char* descriptor,
2212 const DexFile::ClassDef* dex_class_def = dex_file->FindClassDef(descriptor, hash);
2222 const char* descriptor,
2229 ClassPathEntry pair = FindInClassPath(descriptor, hash, boot_class_path_);
2231 mirror::Class* klass = LookupClass(self, descriptor, hash, nullptr);
2233 *result = EnsureResolved(self, descriptor, klass);
2236 descriptor,
2243 CHECK(self->IsExceptionPending()) << descriptor;
2262 bool recursive_result = FindClassInPathClassLoader(soa, self, descriptor, hash, h_parent, result);
2305 LOG(WARNING) << "Null DexFile::mCookie for " << descriptor;
2313 const DexFile::ClassDef* dex_class_def = cp_dex_file->FindClassDef(descriptor, hash);
2316 descriptor,
2322 CHECK(self->IsExceptionPending()) << descriptor;
2342 const char* descriptor,
2344 DCHECK_NE(*descriptor, '\0') << "descriptor is empty string";
2347 if (descriptor[1] == '\0') {
2350 return FindPrimitiveClass(descriptor[0]);
2352 const size_t hash = ComputeModifiedUtf8Hash(descriptor);
2354 mirror::Class* klass = LookupClass(self, descriptor, hash, class_loader.Get());
2356 return EnsureResolved(self, descriptor, klass);
2359 if (descriptor[0] == '[') {
2360 return CreateArrayClass(self, descriptor, hash, class_loader);
2363 ClassPathEntry pair = FindInClassPath(descriptor, hash, boot_class_path_);
2366 descriptor,
2382 if (FindClassInPathClassLoader(soa, self, descriptor, hash, class_loader, &cp_klass)) {
2404 std::string class_name_string(DescriptorToDot(descriptor));
2436 const char* descriptor,
2447 if (strcmp(descriptor, "Ljava/lang/Object;") == 0) {
2449 } else if (strcmp(descriptor, "Ljava/lang/Class;") == 0) {
2451 } else if (strcmp(descriptor, "Ljava/lang/String;") == 0) {
2453 } else if (strcmp(descriptor, "Ljava/lang/ref/Reference;") == 0) {
2455 } else if (strcmp(descriptor, "Ljava/lang/DexCache;") == 0) {
2481 if (strcmp(descriptor, "Ljava/lang/String;") == 0) {
2490 mirror::Class* existing = InsertClass(descriptor, klass.Get(), hash);
2494 return EnsureResolved(self, descriptor, existing);
2528 if (!LinkClass(self, descriptor, klass, interfaces, &h_new_class)) {
2536 CHECK(h_new_class.Get() != nullptr) << descriptor;
2537 CHECK(h_new_class->IsResolved()) << descriptor;
2591 const char* descriptor = dex_file.GetFieldTypeDescriptor(field_id);
2592 char c = descriptor[0];
2615 LOG(FATAL) << "Unknown descriptor: " << c;
2910 const char* descriptor = dex_file.GetClassDescriptor(dex_class_def);
2911 CHECK(descriptor != nullptr);
3346 const char* descriptor = Primitive::Descriptor(type);
3347 mirror::Class* existing = InsertClass(descriptor, h_class.Get(),
3348 ComputeModifiedUtf8Hash(descriptor));
3354 // array itself). "descriptor" looks like "[C" or "[[[[B" or
3357 // If "descriptor" refers to an array of primitives, look up the
3366 mirror::Class* ClassLinker::CreateArrayClass(Thread* self, const char* descriptor, size_t hash,
3369 CHECK_EQ('[', descriptor[0]);
3371 MutableHandle<mirror::Class> component_type(hs.NewHandle(FindClass(self, descriptor + 1,
3376 const size_t component_hash = ComputeModifiedUtf8Hash(descriptor + 1);
3377 component_type.Assign(LookupClass(self, descriptor + 1, component_hash, class_loader.Get()));
3407 mirror::Class* new_class = LookupClass(self, descriptor, hash, component_type->GetClassLoader());
3424 if (strcmp(descriptor, "[Ljava/lang/Class;") == 0) {
3426 } else if (strcmp(descriptor, "[Ljava/lang/Object;") == 0) {
3428 } else if (strcmp(descriptor, GetClassRootDescriptor(kJavaLangStringArrayClass)) == 0) {
3430 } else if (strcmp(descriptor, "[C") == 0) {
3432 } else if (strcmp(descriptor, "[I") == 0) {
3434 } else if (strcmp(descriptor, "[J") == 0) {
3498 mirror::Class* existing = InsertClass(descriptor, new_class.Get(), hash);
3540 mirror::Class* ClassLinker::InsertClass(const char* descriptor, mirror::Class* klass, size_t hash) {
3548 LOG(INFO) << "Loaded class " << descriptor << source;
3553 mirror::Class* existing = class_table->Lookup(descriptor, hash);
3563 existing = LookupClassFromBootImage(descriptor);
3590 bool ClassLinker::RemoveClass(const char* descriptor, mirror::ClassLoader* class_loader) {
3593 return class_table != nullptr && class_table->Remove(descriptor);
3597 const char* descriptor,
3604 mirror::Class* result = class_table->Lookup(descriptor, hash);
3614 mirror::Class* result = LookupClassFromBootImage(descriptor);
3616 result = InsertClass(descriptor, result, hash);
3668 const char* descriptor = klass->GetDescriptor(&temp);
3669 size_t hash = ComputeModifiedUtf8Hash(descriptor);
3670 mirror::Class* existing = class_table->Lookup(descriptor, hash);
3707 mirror::Class* ClassLinker::LookupClassFromBootImage(const char* descriptor) {
3715 // Try binary searching the type index by descriptor.
3716 const DexFile::TypeId* type_id = dex_file->FindTypeId(descriptor);
3729 // Look up classes by hash and descriptor and put all matching ones in the result array.
3732 LookupClassesVisitor(const char* descriptor, size_t hash, std::vector<mirror::Class*>* result)
3733 : descriptor_(descriptor),
3752 void ClassLinker::LookupClasses(const char* descriptor, std::vector<mirror::Class*>& result) {
3759 const size_t hash = ComputeModifiedUtf8Hash(descriptor);
3760 mirror::Class* klass = boot_class_table_.Lookup(descriptor, hash);
3764 LookupClassesVisitor visitor(descriptor, hash, &result);
4147 std::string descriptor(GetDescriptorForProxy(klass.Get()));
4148 const size_t hash = ComputeModifiedUtf8Hash(descriptor.c_str());
4157 mirror::Class* existing = InsertClass(descriptor.c_str(), klass.Get(), hash);
4225 if (!LinkClass(self, descriptor.c_str(), klass, h_interfaces, &new_class)) {
5057 const char* descriptor,
5120 mirror::Class* existing = table->UpdateClass(descriptor, h_new_class.Get(),
5121 ComputeModifiedUtf8Hash(descriptor));
5131 mirror::Class* const image_class = LookupClassFromBootImage(descriptor);
5133 CHECK_EQ(klass.Get(), existing) << descriptor;
7342 const char* descriptor = dex_file.StringByTypeIdx(type_idx);
7343 resolved = FindClass(self, descriptor, class_loader);
7351 << "Expected pending exception for failed resolution of: " << descriptor;
7358 ThrowNoClassDefFoundError("Failed resolution of: %s", descriptor);
7862 const char* descriptor = class_roots_descriptors[class_root];
7863 CHECK(descriptor != nullptr);
7864 return descriptor;
8141 const char* descriptor = dex_file->GetTypeDescriptor(type_id);
8142 ret.insert(descriptor);