comparison src/share/vm/interpreter/linkResolver.cpp @ 3324:acf5e660c71a

6728025: LinkResolver is missing some ResourceMarks Reviewed-by: dholmes, coleenp, ysr, kamg
author jcoomes
date Thu, 05 May 2011 07:51:05 -0700
parents ed69575596ac
children ba550512d3b2
comparison
equal deleted inserted replaced
3323:75af3e8de182 3324:acf5e660c71a
325 Symbol* method_name, Symbol* method_signature, 325 Symbol* method_name, Symbol* method_signature,
326 KlassHandle current_klass, bool check_access, TRAPS) { 326 KlassHandle current_klass, bool check_access, TRAPS) {
327 327
328 // 1. check if klass is not interface 328 // 1. check if klass is not interface
329 if (resolved_klass->is_interface()) { 329 if (resolved_klass->is_interface()) {
330 ResourceMark rm(THREAD);
330 char buf[200]; 331 char buf[200];
331 jio_snprintf(buf, sizeof(buf), "Found interface %s, but class was expected", Klass::cast(resolved_klass())->external_name()); 332 jio_snprintf(buf, sizeof(buf), "Found interface %s, but class was expected", Klass::cast(resolved_klass())->external_name());
332 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); 333 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
333 } 334 }
334 335
411 KlassHandle current_klass, 412 KlassHandle current_klass,
412 bool check_access, TRAPS) { 413 bool check_access, TRAPS) {
413 414
414 // check if klass is interface 415 // check if klass is interface
415 if (!resolved_klass->is_interface()) { 416 if (!resolved_klass->is_interface()) {
417 ResourceMark rm(THREAD);
416 char buf[200]; 418 char buf[200];
417 jio_snprintf(buf, sizeof(buf), "Found class %s, but interface was expected", Klass::cast(resolved_klass())->external_name()); 419 jio_snprintf(buf, sizeof(buf), "Found class %s, but interface was expected", Klass::cast(resolved_klass())->external_name());
418 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); 420 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
419 } 421 }
420 422
532 KlassHandle ref_klass(THREAD, pool->pool_holder()); 534 KlassHandle ref_klass(THREAD, pool->pool_holder());
533 check_field_accessability(ref_klass, resolved_klass, sel_klass, fd, CHECK); 535 check_field_accessability(ref_klass, resolved_klass, sel_klass, fd, CHECK);
534 536
535 // check for errors 537 // check for errors
536 if (is_static != fd.is_static()) { 538 if (is_static != fd.is_static()) {
539 ResourceMark rm(THREAD);
537 char msg[200]; 540 char msg[200];
538 jio_snprintf(msg, sizeof(msg), "Expected %s field %s.%s", is_static ? "static" : "non-static", Klass::cast(resolved_klass())->external_name(), fd.name()->as_C_string()); 541 jio_snprintf(msg, sizeof(msg), "Expected %s field %s.%s", is_static ? "static" : "non-static", Klass::cast(resolved_klass())->external_name(), fd.name()->as_C_string());
539 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), msg); 542 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), msg);
540 } 543 }
541 544
629 resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, CHECK); 632 resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, CHECK);
630 assert(resolved_method->name() != vmSymbols::class_initializer_name(), "should have been checked in verifier"); 633 assert(resolved_method->name() != vmSymbols::class_initializer_name(), "should have been checked in verifier");
631 634
632 // check if static 635 // check if static
633 if (!resolved_method->is_static()) { 636 if (!resolved_method->is_static()) {
637 ResourceMark rm(THREAD);
634 char buf[200]; 638 char buf[200];
635 jio_snprintf(buf, sizeof(buf), "Expected static method %s", methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 639 jio_snprintf(buf, sizeof(buf), "Expected static method %s", methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
636 resolved_method->name(), 640 resolved_method->name(),
637 resolved_method->signature())); 641 resolved_method->signature()));
638 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); 642 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
669 return; 673 return;
670 } 674 }
671 675
672 // check if not static 676 // check if not static
673 if (resolved_method->is_static()) { 677 if (resolved_method->is_static()) {
678 ResourceMark rm(THREAD);
674 char buf[200]; 679 char buf[200];
675 jio_snprintf(buf, sizeof(buf), 680 jio_snprintf(buf, sizeof(buf),
676 "Expecting non-static method %s", 681 "Expecting non-static method %s",
677 methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 682 methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
678 resolved_method->name(), 683 resolved_method->name(),
715 } 720 }
716 } 721 }
717 722
718 // check if not static 723 // check if not static
719 if (sel_method->is_static()) { 724 if (sel_method->is_static()) {
725 ResourceMark rm(THREAD);
720 char buf[200]; 726 char buf[200];
721 jio_snprintf(buf, sizeof(buf), "Expecting non-static method %s", methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 727 jio_snprintf(buf, sizeof(buf), "Expecting non-static method %s", methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
722 resolved_method->name(), 728 resolved_method->name(),
723 resolved_method->signature())); 729 resolved_method->signature()));
724 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); 730 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
755 assert(resolved_method->name() != vmSymbols::object_initializer_name(), "should have been checked in verifier"); 761 assert(resolved_method->name() != vmSymbols::object_initializer_name(), "should have been checked in verifier");
756 assert(resolved_method->name() != vmSymbols::class_initializer_name (), "should have been checked in verifier"); 762 assert(resolved_method->name() != vmSymbols::class_initializer_name (), "should have been checked in verifier");
757 763
758 // check if not static 764 // check if not static
759 if (resolved_method->is_static()) { 765 if (resolved_method->is_static()) {
766 ResourceMark rm(THREAD);
760 char buf[200]; 767 char buf[200];
761 jio_snprintf(buf, sizeof(buf), "Expecting non-static method %s", methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 768 jio_snprintf(buf, sizeof(buf), "Expecting non-static method %s", methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
762 resolved_method->name(), 769 resolved_method->name(),
763 resolved_method->signature())); 770 resolved_method->signature()));
764 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); 771 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
871 THROW(vmSymbols::java_lang_NullPointerException()); 878 THROW(vmSymbols::java_lang_NullPointerException());
872 } 879 }
873 880
874 // check if receiver klass implements the resolved interface 881 // check if receiver klass implements the resolved interface
875 if (!recv_klass->is_subtype_of(resolved_klass())) { 882 if (!recv_klass->is_subtype_of(resolved_klass())) {
883 ResourceMark rm(THREAD);
876 char buf[200]; 884 char buf[200];
877 jio_snprintf(buf, sizeof(buf), "Class %s does not implement the requested interface %s", 885 jio_snprintf(buf, sizeof(buf), "Class %s does not implement the requested interface %s",
878 (Klass::cast(recv_klass()))->external_name(), 886 (Klass::cast(recv_klass()))->external_name(),
879 (Klass::cast(resolved_klass()))->external_name()); 887 (Klass::cast(resolved_klass()))->external_name());
880 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); 888 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);