Mercurial > hg > truffle
comparison src/share/vm/oops/instanceKlass.cpp @ 6983:070d523b96a7
8001471: Klass::cast() does nothing
Summary: Remove function Klass::cast() and calls to it.
Reviewed-by: dholmes, coleenp
author | hseigel |
---|---|
date | Mon, 12 Nov 2012 16:15:05 -0500 |
parents | 4735d2c84362 |
children | 80e866b1d053 |
comparison
equal
deleted
inserted
replaced
6981:8c413497f434 | 6983:070d523b96a7 |
---|---|
725 this_oop->set_init_thread(self); | 725 this_oop->set_init_thread(self); |
726 } | 726 } |
727 | 727 |
728 // Step 7 | 728 // Step 7 |
729 Klass* super_klass = this_oop->super(); | 729 Klass* super_klass = this_oop->super(); |
730 if (super_klass != NULL && !this_oop->is_interface() && Klass::cast(super_klass)->should_be_initialized()) { | 730 if (super_klass != NULL && !this_oop->is_interface() && super_klass->should_be_initialized()) { |
731 Klass::cast(super_klass)->initialize(THREAD); | 731 super_klass->initialize(THREAD); |
732 | 732 |
733 if (HAS_PENDING_EXCEPTION) { | 733 if (HAS_PENDING_EXCEPTION) { |
734 Handle e(THREAD, PENDING_EXCEPTION); | 734 Handle e(THREAD, PENDING_EXCEPTION); |
735 CLEAR_PENDING_EXCEPTION; | 735 CLEAR_PENDING_EXCEPTION; |
736 { | 736 { |
922 return secondaries; | 922 return secondaries; |
923 } | 923 } |
924 } | 924 } |
925 | 925 |
926 bool InstanceKlass::compute_is_subtype_of(Klass* k) { | 926 bool InstanceKlass::compute_is_subtype_of(Klass* k) { |
927 if (Klass::cast(k)->is_interface()) { | 927 if (k->is_interface()) { |
928 return implements_interface(k); | 928 return implements_interface(k); |
929 } else { | 929 } else { |
930 return Klass::compute_is_subtype_of(k); | 930 return Klass::compute_is_subtype_of(k); |
931 } | 931 } |
932 } | 932 } |
933 | 933 |
934 bool InstanceKlass::implements_interface(Klass* k) const { | 934 bool InstanceKlass::implements_interface(Klass* k) const { |
935 if (this == k) return true; | 935 if (this == k) return true; |
936 assert(Klass::cast(k)->is_interface(), "should be an interface class"); | 936 assert(k->is_interface(), "should be an interface class"); |
937 for (int i = 0; i < transitive_interfaces()->length(); i++) { | 937 for (int i = 0; i < transitive_interfaces()->length(); i++) { |
938 if (transitive_interfaces()->at(i) == k) { | 938 if (transitive_interfaces()->at(i) == k) { |
939 return true; | 939 return true; |
940 } | 940 } |
941 } | 941 } |
1098 | 1098 |
1099 Klass* InstanceKlass::find_interface_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const { | 1099 Klass* InstanceKlass::find_interface_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const { |
1100 const int n = local_interfaces()->length(); | 1100 const int n = local_interfaces()->length(); |
1101 for (int i = 0; i < n; i++) { | 1101 for (int i = 0; i < n; i++) { |
1102 Klass* intf1 = local_interfaces()->at(i); | 1102 Klass* intf1 = local_interfaces()->at(i); |
1103 assert(Klass::cast(intf1)->is_interface(), "just checking type"); | 1103 assert(intf1->is_interface(), "just checking type"); |
1104 // search for field in current interface | 1104 // search for field in current interface |
1105 if (InstanceKlass::cast(intf1)->find_local_field(name, sig, fd)) { | 1105 if (InstanceKlass::cast(intf1)->find_local_field(name, sig, fd)) { |
1106 assert(fd->is_static(), "interface field must be static"); | 1106 assert(fd->is_static(), "interface field must be static"); |
1107 return intf1; | 1107 return intf1; |
1108 } | 1108 } |
1169 Klass* klass = const_cast<InstanceKlass*>(this); | 1169 Klass* klass = const_cast<InstanceKlass*>(this); |
1170 while (klass != NULL) { | 1170 while (klass != NULL) { |
1171 if (InstanceKlass::cast(klass)->find_local_field_from_offset(offset, is_static, fd)) { | 1171 if (InstanceKlass::cast(klass)->find_local_field_from_offset(offset, is_static, fd)) { |
1172 return true; | 1172 return true; |
1173 } | 1173 } |
1174 klass = Klass::cast(klass)->super(); | 1174 klass = klass->super(); |
1175 } | 1175 } |
1176 return false; | 1176 return false; |
1177 } | 1177 } |
1178 | 1178 |
1179 | 1179 |
2357 | 2357 |
2358 // different verisons of is_same_class_package | 2358 // different verisons of is_same_class_package |
2359 bool InstanceKlass::is_same_class_package(Klass* class2) { | 2359 bool InstanceKlass::is_same_class_package(Klass* class2) { |
2360 Klass* class1 = this; | 2360 Klass* class1 = this; |
2361 oop classloader1 = InstanceKlass::cast(class1)->class_loader(); | 2361 oop classloader1 = InstanceKlass::cast(class1)->class_loader(); |
2362 Symbol* classname1 = Klass::cast(class1)->name(); | 2362 Symbol* classname1 = class1->name(); |
2363 | 2363 |
2364 if (Klass::cast(class2)->oop_is_objArray()) { | 2364 if (class2->oop_is_objArray()) { |
2365 class2 = ObjArrayKlass::cast(class2)->bottom_klass(); | 2365 class2 = ObjArrayKlass::cast(class2)->bottom_klass(); |
2366 } | 2366 } |
2367 oop classloader2; | 2367 oop classloader2; |
2368 if (Klass::cast(class2)->oop_is_instance()) { | 2368 if (class2->oop_is_instance()) { |
2369 classloader2 = InstanceKlass::cast(class2)->class_loader(); | 2369 classloader2 = InstanceKlass::cast(class2)->class_loader(); |
2370 } else { | 2370 } else { |
2371 assert(Klass::cast(class2)->oop_is_typeArray(), "should be type array"); | 2371 assert(class2->oop_is_typeArray(), "should be type array"); |
2372 classloader2 = NULL; | 2372 classloader2 = NULL; |
2373 } | 2373 } |
2374 Symbol* classname2 = Klass::cast(class2)->name(); | 2374 Symbol* classname2 = class2->name(); |
2375 | 2375 |
2376 return InstanceKlass::is_same_class_package(classloader1, classname1, | 2376 return InstanceKlass::is_same_class_package(classloader1, classname1, |
2377 classloader2, classname2); | 2377 classloader2, classname2); |
2378 } | 2378 } |
2379 | 2379 |
2380 bool InstanceKlass::is_same_class_package(oop classloader2, Symbol* classname2) { | 2380 bool InstanceKlass::is_same_class_package(oop classloader2, Symbol* classname2) { |
2381 Klass* class1 = this; | 2381 Klass* class1 = this; |
2382 oop classloader1 = InstanceKlass::cast(class1)->class_loader(); | 2382 oop classloader1 = InstanceKlass::cast(class1)->class_loader(); |
2383 Symbol* classname1 = Klass::cast(class1)->name(); | 2383 Symbol* classname1 = class1->name(); |
2384 | 2384 |
2385 return InstanceKlass::is_same_class_package(classloader1, classname1, | 2385 return InstanceKlass::is_same_class_package(classloader1, classname1, |
2386 classloader2, classname2); | 2386 classloader2, classname2); |
2387 } | 2387 } |
2388 | 2388 |
2469 | 2469 |
2470 // tell if two classes have the same enclosing class (at package level) | 2470 // tell if two classes have the same enclosing class (at package level) |
2471 bool InstanceKlass::is_same_package_member_impl(instanceKlassHandle class1, | 2471 bool InstanceKlass::is_same_package_member_impl(instanceKlassHandle class1, |
2472 Klass* class2_oop, TRAPS) { | 2472 Klass* class2_oop, TRAPS) { |
2473 if (class2_oop == class1()) return true; | 2473 if (class2_oop == class1()) return true; |
2474 if (!Klass::cast(class2_oop)->oop_is_instance()) return false; | 2474 if (!class2_oop->oop_is_instance()) return false; |
2475 instanceKlassHandle class2(THREAD, class2_oop); | 2475 instanceKlassHandle class2(THREAD, class2_oop); |
2476 | 2476 |
2477 // must be in same package before we try anything else | 2477 // must be in same package before we try anything else |
2478 if (!class1->is_same_class_package(class2->class_loader(), class2->name())) | 2478 if (!class1->is_same_class_package(class2->class_loader(), class2->name())) |
2479 return false; | 2479 return false; |
3002 // Verify implementor fields | 3002 // Verify implementor fields |
3003 Klass* im = implementor(); | 3003 Klass* im = implementor(); |
3004 if (im != NULL) { | 3004 if (im != NULL) { |
3005 guarantee(is_interface(), "only interfaces should have implementor set"); | 3005 guarantee(is_interface(), "only interfaces should have implementor set"); |
3006 guarantee(im->is_klass(), "should be klass"); | 3006 guarantee(im->is_klass(), "should be klass"); |
3007 guarantee(!Klass::cast(im)->is_interface() || im == this, | 3007 guarantee(!im->is_interface() || im == this, |
3008 "implementors cannot be interfaces"); | 3008 "implementors cannot be interfaces"); |
3009 } | 3009 } |
3010 | 3010 |
3011 // Verify local interfaces | 3011 // Verify local interfaces |
3012 if (local_interfaces()) { | 3012 if (local_interfaces()) { |
3013 Array<Klass*>* local_interfaces = this->local_interfaces(); | 3013 Array<Klass*>* local_interfaces = this->local_interfaces(); |
3014 for (int j = 0; j < local_interfaces->length(); j++) { | 3014 for (int j = 0; j < local_interfaces->length(); j++) { |
3015 Klass* e = local_interfaces->at(j); | 3015 Klass* e = local_interfaces->at(j); |
3016 guarantee(e->is_klass() && Klass::cast(e)->is_interface(), "invalid local interface"); | 3016 guarantee(e->is_klass() && e->is_interface(), "invalid local interface"); |
3017 } | 3017 } |
3018 } | 3018 } |
3019 | 3019 |
3020 // Verify transitive interfaces | 3020 // Verify transitive interfaces |
3021 if (transitive_interfaces() != NULL) { | 3021 if (transitive_interfaces() != NULL) { |
3022 Array<Klass*>* transitive_interfaces = this->transitive_interfaces(); | 3022 Array<Klass*>* transitive_interfaces = this->transitive_interfaces(); |
3023 for (int j = 0; j < transitive_interfaces->length(); j++) { | 3023 for (int j = 0; j < transitive_interfaces->length(); j++) { |
3024 Klass* e = transitive_interfaces->at(j); | 3024 Klass* e = transitive_interfaces->at(j); |
3025 guarantee(e->is_klass() && Klass::cast(e)->is_interface(), "invalid transitive interface"); | 3025 guarantee(e->is_klass() && e->is_interface(), "invalid transitive interface"); |
3026 } | 3026 } |
3027 } | 3027 } |
3028 | 3028 |
3029 // Verify methods | 3029 // Verify methods |
3030 if (methods() != NULL) { | 3030 if (methods() != NULL) { |