src/share/vm/classfile/javaClasses.cpp

changeset 4142
d8ce2825b193
parent 4047
aed758eda82a
child 4178
bdb5f8c9978b
equal deleted inserted replaced
4122:1b582b1bf7cb 4142:d8ce2825b193
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) {

mercurial