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) {