< prev index next >

src/share/vm/classfile/javaClasses.cpp

Print this page




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()),


< prev index next >