1039 1040 1041 void java_lang_Class::print_signature(oop java_class, outputStream* st) { 1042 assert(java_lang_Class::is_instance(java_class), "must be a Class object"); 1043 Symbol* name = NULL; 1044 bool is_instance = false; 1045 bool is_value = false; 1046 if (is_primitive(java_class)) { 1047 name = vmSymbols::type_signature(primitive_type(java_class)); 1048 } else { 1049 Klass* k = as_Klass(java_class); 1050 is_instance = k->is_instance_klass(); 1051 is_value = k->is_value(); 1052 name = k->name(); 1053 } 1054 if (name == NULL) { 1055 st->print("<null>"); 1056 return; 1057 } 1058 if (is_instance) { 1059 if (is_value) { 1060 st->print("Q"); 1061 } else { 1062 st->print("L"); 1063 } 1064 } 1065 st->write((char*) name->base(), (int) name->utf8_length()); 1066 if (is_instance) st->print(";"); 1067 } 1068 1069 Symbol* java_lang_Class::as_signature(oop java_class, bool intern_if_not_found, TRAPS) { 1070 assert(java_lang_Class::is_instance(java_class), "must be a Class object"); 1071 Symbol* name; 1072 if (is_primitive(java_class)) { 1073 name = vmSymbols::type_signature(primitive_type(java_class)); 1074 // Because this can create a new symbol, the caller has to decrement 1075 // the refcount, so make adjustment here and below for symbols returned 1076 // that are not created or incremented due to a successful lookup. 1077 name->increment_refcount(); 1078 } else { 1079 Klass* k = as_Klass(java_class); 1080 if (!k->is_instance_klass()) { 1081 name = k->name(); 1082 name->increment_refcount(); 1083 } else { 1084 ResourceMark rm; | 1039 1040 1041 void java_lang_Class::print_signature(oop java_class, outputStream* st) { 1042 assert(java_lang_Class::is_instance(java_class), "must be a Class object"); 1043 Symbol* name = NULL; 1044 bool is_instance = false; 1045 bool is_value = false; 1046 if (is_primitive(java_class)) { 1047 name = vmSymbols::type_signature(primitive_type(java_class)); 1048 } else { 1049 Klass* k = as_Klass(java_class); 1050 is_instance = k->is_instance_klass(); 1051 is_value = k->is_value(); 1052 name = k->name(); 1053 } 1054 if (name == NULL) { 1055 st->print("<null>"); 1056 return; 1057 } 1058 if (is_instance) { 1059 st->print("L"); 1060 } 1061 st->write((char*) name->base(), (int) name->utf8_length()); 1062 if (is_instance) st->print(";"); 1063 } 1064 1065 Symbol* java_lang_Class::as_signature(oop java_class, bool intern_if_not_found, TRAPS) { 1066 assert(java_lang_Class::is_instance(java_class), "must be a Class object"); 1067 Symbol* name; 1068 if (is_primitive(java_class)) { 1069 name = vmSymbols::type_signature(primitive_type(java_class)); 1070 // Because this can create a new symbol, the caller has to decrement 1071 // the refcount, so make adjustment here and below for symbols returned 1072 // that are not created or incremented due to a successful lookup. 1073 name->increment_refcount(); 1074 } else { 1075 Klass* k = as_Klass(java_class); 1076 if (!k->is_instance_klass()) { 1077 name = k->name(); 1078 name->increment_refcount(); 1079 } else { 1080 ResourceMark rm; |