comparison src/share/vm/interpreter/linkResolver.cpp @ 6940:18fb7da42534

8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass Summary: Change types of above methods and field to InstanceKlass and remove unneeded casts from the source files. Reviewed-by: dholmes, coleenp, zgu Contributed-by: harold.seigel@oracle.com
author coleenp
date Tue, 06 Nov 2012 15:09:37 -0500
parents 4735d2c84362
children 070d523b96a7
comparison
equal deleted inserted replaced
6939:c284cf4781f0 6940:18fb7da42534
131 // assert(CompilationPolicy::can_be_compiled(selected_method), "cannot compile"); 131 // assert(CompilationPolicy::can_be_compiled(selected_method), "cannot compile");
132 if (THREAD->is_Compiler_thread()) { 132 if (THREAD->is_Compiler_thread()) {
133 // don't force compilation, resolve was on behalf of compiler 133 // don't force compilation, resolve was on behalf of compiler
134 return; 134 return;
135 } 135 }
136 if (InstanceKlass::cast(selected_method->method_holder())->is_not_initialized()) { 136 if (selected_method->method_holder()->is_not_initialized()) {
137 // 'is_not_initialized' means not only '!is_initialized', but also that 137 // 'is_not_initialized' means not only '!is_initialized', but also that
138 // initialization has not been started yet ('!being_initialized') 138 // initialization has not been started yet ('!being_initialized')
139 // Do not force compilation of methods in uninitialized classes. 139 // Do not force compilation of methods in uninitialized classes.
140 // Note that doing this would throw an assert later, 140 // Note that doing this would throw an assert later,
141 // in CompileBroker::compile_method. 141 // in CompileBroker::compile_method.
464 resolved_method, 464 resolved_method,
465 CHECK); 465 CHECK);
466 466
467 // check loader constraints 467 // check loader constraints
468 Handle loader (THREAD, InstanceKlass::cast(current_klass())->class_loader()); 468 Handle loader (THREAD, InstanceKlass::cast(current_klass())->class_loader());
469 Handle class_loader (THREAD, InstanceKlass::cast(resolved_method->method_holder())->class_loader()); 469 Handle class_loader (THREAD, resolved_method->method_holder()->class_loader());
470 { 470 {
471 ResourceMark rm(THREAD); 471 ResourceMark rm(THREAD);
472 char* failed_type_name = 472 char* failed_type_name =
473 SystemDictionary::check_signature_loaders(method_signature, loader, 473 SystemDictionary::check_signature_loaders(method_signature, loader,
474 class_loader, true, CHECK); 474 class_loader, true, CHECK);
526 } 526 }
527 527
528 if (check_access) { 528 if (check_access) {
529 HandleMark hm(THREAD); 529 HandleMark hm(THREAD);
530 Handle loader (THREAD, InstanceKlass::cast(current_klass())->class_loader()); 530 Handle loader (THREAD, InstanceKlass::cast(current_klass())->class_loader());
531 Handle class_loader (THREAD, InstanceKlass::cast(resolved_method->method_holder())->class_loader()); 531 Handle class_loader (THREAD, resolved_method->method_holder()->class_loader());
532 { 532 {
533 ResourceMark rm(THREAD); 533 ResourceMark rm(THREAD);
534 char* failed_type_name = 534 char* failed_type_name =
535 SystemDictionary::check_signature_loaders(method_signature, loader, 535 SystemDictionary::check_signature_loaders(method_signature, loader,
536 class_loader, true, CHECK); 536 class_loader, true, CHECK);
908 THROW(vmSymbols::java_lang_NullPointerException()); 908 THROW(vmSymbols::java_lang_NullPointerException());
909 } 909 }
910 910
911 // Virtual methods cannot be resolved before its klass has been linked, for otherwise the Method*'s 911 // Virtual methods cannot be resolved before its klass has been linked, for otherwise the Method*'s
912 // has not been rewritten, and the vtable initialized. 912 // has not been rewritten, and the vtable initialized.
913 assert(InstanceKlass::cast(resolved_method->method_holder())->is_linked(), "must be linked"); 913 assert(resolved_method->method_holder()->is_linked(), "must be linked");
914 914
915 // Virtual methods cannot be resolved before its klass has been linked, for otherwise the Method*'s 915 // Virtual methods cannot be resolved before its klass has been linked, for otherwise the Method*'s
916 // has not been rewritten, and the vtable initialized. Make sure to do this after the nullcheck, since 916 // has not been rewritten, and the vtable initialized. Make sure to do this after the nullcheck, since
917 // a missing receiver might result in a bogus lookup. 917 // a missing receiver might result in a bogus lookup.
918 assert(InstanceKlass::cast(resolved_method->method_holder())->is_linked(), "must be linked"); 918 assert(resolved_method->method_holder()->is_linked(), "must be linked");
919 919
920 // do lookup based on receiver klass using the vtable index 920 // do lookup based on receiver klass using the vtable index
921 if (resolved_method->method_holder()->is_interface()) { // miranda method 921 if (resolved_method->method_holder()->is_interface()) { // miranda method
922 vtable_index = vtable_index_of_miranda_method(resolved_klass, 922 vtable_index = vtable_index_of_miranda_method(resolved_klass,
923 resolved_method->name(), 923 resolved_method->name(),