hotspot/src/share/vm/classfile/javaClasses.cpp
changeset 13952 e3cf184080bc
parent 13738 d67be49a5beb
child 14078 2b2b8833c422
equal deleted inserted replaced
13918:b01a48301e67 13952:e3cf184080bc
   538 
   538 
   539     // It might also have a component mirror.  This mirror must already exist.
   539     // It might also have a component mirror.  This mirror must already exist.
   540     if (k->oop_is_array()) {
   540     if (k->oop_is_array()) {
   541       Handle comp_mirror;
   541       Handle comp_mirror;
   542       if (k->oop_is_typeArray()) {
   542       if (k->oop_is_typeArray()) {
   543         BasicType type = typeArrayKlass::cast(k())->element_type();
   543         BasicType type = TypeArrayKlass::cast(k())->element_type();
   544         comp_mirror = Universe::java_mirror(type);
   544         comp_mirror = Universe::java_mirror(type);
   545       } else {
   545       } else {
   546         assert(k->oop_is_objArray(), "Must be");
   546         assert(k->oop_is_objArray(), "Must be");
   547         Klass* element_klass = objArrayKlass::cast(k())->element_klass();
   547         Klass* element_klass = ObjArrayKlass::cast(k())->element_klass();
   548         assert(element_klass != NULL, "Must have an element klass");
   548         assert(element_klass != NULL, "Must have an element klass");
   549           comp_mirror = Klass::cast(element_klass)->java_mirror();
   549           comp_mirror = Klass::cast(element_klass)->java_mirror();
   550       }
   550       }
   551       assert(comp_mirror.not_null(), "must have a mirror");
   551       assert(comp_mirror.not_null(), "must have a mirror");
   552 
   552 
   553         // Two-way link between the array klass and its component mirror:
   553         // Two-way link between the array klass and its component mirror:
   554       arrayKlass::cast(k())->set_component_mirror(comp_mirror());
   554       ArrayKlass::cast(k())->set_component_mirror(comp_mirror());
   555       set_array_klass(comp_mirror(), k());
   555       set_array_klass(comp_mirror(), k());
   556     } else {
   556     } else {
   557       assert(k->oop_is_instance(), "Must be");
   557       assert(k->oop_is_instance(), "Must be");
   558       // Initialize static fields
   558       // Initialize static fields
   559       InstanceKlass::cast(k())->do_local_static_fields(&initialize_static_field, CHECK_NULL);
   559       InstanceKlass::cast(k())->do_local_static_fields(&initialize_static_field, CHECK_NULL);
   702   bool is_primitive = (java_class->metadata_field(_klass_offset) == NULL);
   702   bool is_primitive = (java_class->metadata_field(_klass_offset) == NULL);
   703 
   703 
   704 #ifdef ASSERT
   704 #ifdef ASSERT
   705   if (is_primitive) {
   705   if (is_primitive) {
   706     Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset));
   706     Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset));
   707     assert(k == NULL || is_java_primitive(arrayKlass::cast(k)->element_type()),
   707     assert(k == NULL || is_java_primitive(ArrayKlass::cast(k)->element_type()),
   708         "Should be either the T_VOID primitive or a java primitive");
   708         "Should be either the T_VOID primitive or a java primitive");
   709   }
   709   }
   710 #endif
   710 #endif
   711 
   711 
   712   return is_primitive;
   712   return is_primitive;
   717   assert(java_lang_Class::is_primitive(java_class), "just checking");
   717   assert(java_lang_Class::is_primitive(java_class), "just checking");
   718   Klass* ak = ((Klass*)java_class->metadata_field(_array_klass_offset));
   718   Klass* ak = ((Klass*)java_class->metadata_field(_array_klass_offset));
   719   BasicType type = T_VOID;
   719   BasicType type = T_VOID;
   720   if (ak != NULL) {
   720   if (ak != NULL) {
   721     // Note: create_basic_type_mirror above initializes ak to a non-null value.
   721     // Note: create_basic_type_mirror above initializes ak to a non-null value.
   722     type = arrayKlass::cast(ak)->element_type();
   722     type = ArrayKlass::cast(ak)->element_type();
   723   } else {
   723   } else {
   724     assert(java_class == Universe::void_mirror(), "only valid non-array primitive");
   724     assert(java_class == Universe::void_mirror(), "only valid non-array primitive");
   725   }
   725   }
   726   assert(Universe::java_mirror(type) == java_class, "must be consistent");
   726   assert(Universe::java_mirror(type) == java_class, "must be consistent");
   727   return type;
   727   return type;
   844 }
   844 }
   845 
   845 
   846 
   846 
   847 typeArrayOop java_lang_Thread::name(oop java_thread) {
   847 typeArrayOop java_lang_Thread::name(oop java_thread) {
   848   oop name = java_thread->obj_field(_name_offset);
   848   oop name = java_thread->obj_field(_name_offset);
   849   assert(name == NULL || (name->is_typeArray() && typeArrayKlass::cast(name->klass())->element_type() == T_CHAR), "just checking");
   849   assert(name == NULL || (name->is_typeArray() && TypeArrayKlass::cast(name->klass())->element_type() == T_CHAR), "just checking");
   850   return typeArrayOop(name);
   850   return typeArrayOop(name);
   851 }
   851 }
   852 
   852 
   853 
   853 
   854 void java_lang_Thread::set_name(oop java_thread, typeArrayOop name) {
   854 void java_lang_Thread::set_name(oop java_thread, typeArrayOop name) {