559 comp_mirror = Universe::java_mirror(type); |
559 comp_mirror = Universe::java_mirror(type); |
560 } else { |
560 } else { |
561 assert(k->oop_is_objArray(), "Must be"); |
561 assert(k->oop_is_objArray(), "Must be"); |
562 Klass* element_klass = ObjArrayKlass::cast(k())->element_klass(); |
562 Klass* element_klass = ObjArrayKlass::cast(k())->element_klass(); |
563 assert(element_klass != NULL, "Must have an element klass"); |
563 assert(element_klass != NULL, "Must have an element klass"); |
564 comp_mirror = Klass::cast(element_klass)->java_mirror(); |
564 comp_mirror = element_klass->java_mirror(); |
565 } |
565 } |
566 assert(comp_mirror.not_null(), "must have a mirror"); |
566 assert(comp_mirror.not_null(), "must have a mirror"); |
567 |
567 |
568 // Two-way link between the array klass and its component mirror: |
568 // Two-way link between the array klass and its component mirror: |
569 ArrayKlass::cast(k())->set_component_mirror(comp_mirror()); |
569 ArrayKlass::cast(k())->set_component_mirror(comp_mirror()); |
642 bool is_instance = false; |
642 bool is_instance = false; |
643 if (is_primitive(java_class)) { |
643 if (is_primitive(java_class)) { |
644 name = vmSymbols::type_signature(primitive_type(java_class)); |
644 name = vmSymbols::type_signature(primitive_type(java_class)); |
645 } else { |
645 } else { |
646 Klass* k = as_Klass(java_class); |
646 Klass* k = as_Klass(java_class); |
647 is_instance = Klass::cast(k)->oop_is_instance(); |
647 is_instance = k->oop_is_instance(); |
648 name = Klass::cast(k)->name(); |
648 name = k->name(); |
649 } |
649 } |
650 if (name == NULL) { |
650 if (name == NULL) { |
651 st->print("<null>"); |
651 st->print("<null>"); |
652 return; |
652 return; |
653 } |
653 } |
665 // the refcount, so make adjustment here and below for symbols returned |
665 // the refcount, so make adjustment here and below for symbols returned |
666 // that are not created or incremented due to a successful lookup. |
666 // that are not created or incremented due to a successful lookup. |
667 name->increment_refcount(); |
667 name->increment_refcount(); |
668 } else { |
668 } else { |
669 Klass* k = as_Klass(java_class); |
669 Klass* k = as_Klass(java_class); |
670 if (!Klass::cast(k)->oop_is_instance()) { |
670 if (!k->oop_is_instance()) { |
671 name = Klass::cast(k)->name(); |
671 name = k->name(); |
672 name->increment_refcount(); |
672 name->increment_refcount(); |
673 } else { |
673 } else { |
674 ResourceMark rm; |
674 ResourceMark rm; |
675 const char* sigstr = Klass::cast(k)->signature_name(); |
675 const char* sigstr = k->signature_name(); |
676 int siglen = (int) strlen(sigstr); |
676 int siglen = (int) strlen(sigstr); |
677 if (!intern_if_not_found) { |
677 if (!intern_if_not_found) { |
678 name = SymbolTable::probe(sigstr, siglen); |
678 name = SymbolTable::probe(sigstr, siglen); |
679 } else { |
679 } else { |
680 name = SymbolTable::new_symbol(sigstr, siglen, THREAD); |
680 name = SymbolTable::new_symbol(sigstr, siglen, THREAD); |
685 } |
685 } |
686 |
686 |
687 |
687 |
688 Klass* java_lang_Class::array_klass(oop java_class) { |
688 Klass* java_lang_Class::array_klass(oop java_class) { |
689 Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset)); |
689 Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset)); |
690 assert(k == NULL || k->is_klass() && Klass::cast(k)->oop_is_array(), "should be array klass"); |
690 assert(k == NULL || k->is_klass() && k->oop_is_array(), "should be array klass"); |
691 return k; |
691 return k; |
692 } |
692 } |
693 |
693 |
694 |
694 |
695 void java_lang_Class::set_array_klass(oop java_class, Klass* klass) { |
695 void java_lang_Class::set_array_klass(oop java_class, Klass* klass) { |
696 assert(klass->is_klass() && Klass::cast(klass)->oop_is_array(), "should be array klass"); |
696 assert(klass->is_klass() && klass->oop_is_array(), "should be array klass"); |
697 java_class->metadata_field_put(_array_klass_offset, klass); |
697 java_class->metadata_field_put(_array_klass_offset, klass); |
698 } |
698 } |
699 |
699 |
700 |
700 |
701 Method* java_lang_Class::resolved_constructor(oop java_class) { |
701 Method* java_lang_Class::resolved_constructor(oop java_class) { |