Mercurial > hg > truffle
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); |