hotspot/src/share/vm/classfile/javaClasses.cpp
changeset 14490 5bb45ed999ee
parent 14477 95e66ea71f71
parent 14488 ab48109f7d1b
child 14583 d70ee55535f4
equal deleted inserted replaced
14479:7df3acc815a7 14490:5bb45ed999ee
   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) {