704 return result;
705
706 } else if (ik->is_hidden()) {
707 char* result = convert_hidden_name_to_java(name());
708 return result;
709 }
710 } else if (is_objArray_klass() && ObjArrayKlass::cast(this)->bottom_klass()->is_hidden()) {
711 char* result = convert_hidden_name_to_java(name());
712 return result;
713 }
714 if (name() == NULL) return "<unknown>";
715 return name()->as_klass_external_name();
716 }
717
718 const char* Klass::signature_name() const {
719 if (name() == NULL) return "<unknown>";
720 if (is_objArray_klass() && ObjArrayKlass::cast(this)->bottom_klass()->is_hidden()) {
721 size_t name_len = name()->utf8_length();
722 char* result = NEW_RESOURCE_ARRAY(char, name_len + 1);
723 name()->as_C_string(result, (int)name_len + 1);
724 for (int index = (int)name_len; index > 0; index--) {
725 if (result[index] == '+') {
726 result[index] = JVM_SIGNATURE_DOT;
727 break;
728 }
729 }
730 return result;
731 }
732 return name()->as_C_string();
733 }
734
735 const char* Klass::external_kind() const {
736 if (is_interface()) return "interface";
737 if (is_abstract()) return "abstract class";
738 return "class";
739 }
740
741 // Unless overridden, modifier_flags is 0.
742 jint Klass::compute_modifier_flags(TRAPS) const {
743 return 0;
744 }
745
746 int Klass::atomic_incr_biased_lock_revocation_count() {
|
704 return result;
705
706 } else if (ik->is_hidden()) {
707 char* result = convert_hidden_name_to_java(name());
708 return result;
709 }
710 } else if (is_objArray_klass() && ObjArrayKlass::cast(this)->bottom_klass()->is_hidden()) {
711 char* result = convert_hidden_name_to_java(name());
712 return result;
713 }
714 if (name() == NULL) return "<unknown>";
715 return name()->as_klass_external_name();
716 }
717
718 const char* Klass::signature_name() const {
719 if (name() == NULL) return "<unknown>";
720 if (is_objArray_klass() && ObjArrayKlass::cast(this)->bottom_klass()->is_hidden()) {
721 size_t name_len = name()->utf8_length();
722 char* result = NEW_RESOURCE_ARRAY(char, name_len + 1);
723 name()->as_C_string(result, (int)name_len + 1);
724 // the signature name of an array of hidden class is of the form "[L<N>;/<S>"
725 // <N> is the binary name of the original class file in internal form
726 // <S> is the suffix
727 assert(result[name_len-1] == JVM_SIGNATURE_ENDCLASS, "unexpected signature endclass character");
728 for (int index = (int)name_len-2; index > 0; index--) {
729 result[index+1] = result[index]; // shift the suffix to the right
730 if (result[index] == '+') {
731 // Replace the last '+' with a ';' followed with '/'.
732 result[index] = JVM_SIGNATURE_ENDCLASS;
733 result[index+1] = JVM_SIGNATURE_SLASH;
734 break;
735 }
736 }
737 return result;
738 }
739 return name()->as_C_string();
740 }
741
742 const char* Klass::external_kind() const {
743 if (is_interface()) return "interface";
744 if (is_abstract()) return "abstract class";
745 return "class";
746 }
747
748 // Unless overridden, modifier_flags is 0.
749 jint Klass::compute_modifier_flags(TRAPS) const {
750 return 0;
751 }
752
753 int Klass::atomic_incr_biased_lock_revocation_count() {
|