1065 return name; 1066 } 1067 1068 // Returns the Java name for this Java mirror (Resource allocated) 1069 // See Klass::external_name(). 1070 // For primitive type Java mirrors, its type name is returned. 1071 const char* java_lang_Class::as_external_name(oop java_class) { 1072 assert(java_lang_Class::is_instance(java_class), "must be a Class object"); 1073 const char* name = NULL; 1074 if (is_primitive(java_class)) { 1075 name = type2name(primitive_type(java_class)); 1076 } else { 1077 name = as_Klass(java_class)->external_name(); 1078 } 1079 if (name == NULL) { 1080 name = "<null>"; 1081 } 1082 return name; 1083 } 1084 1085 Klass* java_lang_Class::array_klass(oop java_class) { 1086 Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset)); 1087 assert(k == NULL || k->is_klass() && k->is_array_klass(), "should be array klass"); 1088 return k; 1089 } 1090 1091 1092 void java_lang_Class::release_set_array_klass(oop java_class, Klass* klass) { 1093 assert(klass->is_klass() && klass->is_array_klass(), "should be array klass"); 1094 java_class->release_metadata_field_put(_array_klass_offset, klass); 1095 } 1096 1097 1098 bool java_lang_Class::is_primitive(oop java_class) { 1099 // should assert: 1100 //assert(java_lang_Class::is_instance(java_class), "must be a Class object"); 1101 bool is_primitive = (java_class->metadata_field(_klass_offset) == NULL); 1102 1103 #ifdef ASSERT 1104 if (is_primitive) { 1105 Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset)); 1106 assert(k == NULL || is_java_primitive(ArrayKlass::cast(k)->element_type()), | 1065 return name; 1066 } 1067 1068 // Returns the Java name for this Java mirror (Resource allocated) 1069 // See Klass::external_name(). 1070 // For primitive type Java mirrors, its type name is returned. 1071 const char* java_lang_Class::as_external_name(oop java_class) { 1072 assert(java_lang_Class::is_instance(java_class), "must be a Class object"); 1073 const char* name = NULL; 1074 if (is_primitive(java_class)) { 1075 name = type2name(primitive_type(java_class)); 1076 } else { 1077 name = as_Klass(java_class)->external_name(); 1078 } 1079 if (name == NULL) { 1080 name = "<null>"; 1081 } 1082 return name; 1083 } 1084 1085 Klass* java_lang_Class::array_klass_acquire(oop java_class) { 1086 Klass* k = ((Klass*)java_class->metadata_field_acquire(_array_klass_offset)); 1087 assert(k == NULL || k->is_klass() && k->is_array_klass(), "should be array klass"); 1088 return k; 1089 } 1090 1091 1092 void java_lang_Class::release_set_array_klass(oop java_class, Klass* klass) { 1093 assert(klass->is_klass() && klass->is_array_klass(), "should be array klass"); 1094 java_class->release_metadata_field_put(_array_klass_offset, klass); 1095 } 1096 1097 1098 bool java_lang_Class::is_primitive(oop java_class) { 1099 // should assert: 1100 //assert(java_lang_Class::is_instance(java_class), "must be a Class object"); 1101 bool is_primitive = (java_class->metadata_field(_klass_offset) == NULL); 1102 1103 #ifdef ASSERT 1104 if (is_primitive) { 1105 Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset)); 1106 assert(k == NULL || is_java_primitive(ArrayKlass::cast(k)->element_type()), |