hotspot/src/share/vm/classfile/javaClasses.cpp
changeset 31046 d01ad7a0ecb0
parent 31038 2fd2fdc6a70a
child 31587 e48945b7849c
equal deleted inserted replaced
31045:31769e6e8293 31046:d01ad7a0ecb0
   565         }
   565         }
   566       }
   566       }
   567     }
   567     }
   568   }
   568   }
   569   create_mirror(k, Handle(NULL), Handle(NULL), CHECK);
   569   create_mirror(k, Handle(NULL), Handle(NULL), CHECK);
   570 
       
   571   if (UseSharedSpaces && k->oop_is_instance()) {
       
   572     // Create resolved_references array in the fresh mirror.
       
   573     instanceKlassHandle ik(k());
       
   574     ik->constants()->restore_unshareable_info(CHECK);
       
   575   }
       
   576 }
   570 }
   577 
   571 
   578 void java_lang_Class::initialize_mirror_fields(KlassHandle k,
   572 void java_lang_Class::initialize_mirror_fields(KlassHandle k,
   579                                                Handle mirror,
   573                                                Handle mirror,
   580                                                Handle protection_domain,
   574                                                Handle protection_domain,
   928   }
   922   }
   929 
   923 
   930   the_class_mirror->int_field_put(classRedefinedCount_offset, value);
   924   the_class_mirror->int_field_put(classRedefinedCount_offset, value);
   931 }
   925 }
   932 
   926 
   933 objArrayOop java_lang_Class::resolved_references(oop java_class) {
       
   934   assert(java_lang_Class::is_instance(java_class), "");
       
   935   assert(resolvedReferences_offset > 0, "must be set");
       
   936   return objArrayOop(java_class->obj_field(resolvedReferences_offset));
       
   937 }
       
   938 
       
   939 void java_lang_Class::set_resolved_references(oop java_class, objArrayOop a) {
       
   940   assert(java_lang_Class::is_instance(java_class), "");
       
   941   assert(resolvedReferences_offset > 0, "must be set");
       
   942   java_class->obj_field_put(resolvedReferences_offset, a);
       
   943 }
       
   944 
   927 
   945 // Note: JDK1.1 and before had a privateInfo_offset field which was used for the
   928 // Note: JDK1.1 and before had a privateInfo_offset field which was used for the
   946 //       platform thread structure, and a eetop offset which was used for thread
   929 //       platform thread structure, and a eetop offset which was used for thread
   947 //       local storage (and unused by the HotSpot VM). In JDK1.2 the two structures
   930 //       local storage (and unused by the HotSpot VM). In JDK1.2 the two structures
   948 //       merged, so in the HotSpot VM we just use the eetop field for the thread
   931 //       merged, so in the HotSpot VM we just use the eetop field for the thread
  3196   } else {
  3179   } else {
  3197     return oopDesc::load_decode_heap_oop((oop*)addr) != NULL;
  3180     return oopDesc::load_decode_heap_oop((oop*)addr) != NULL;
  3198   }
  3181   }
  3199 }
  3182 }
  3200 
  3183 
  3201 int java_lang_Class::resolvedReferences_offset;
       
  3202 int java_lang_Class::_klass_offset;
  3184 int java_lang_Class::_klass_offset;
  3203 int java_lang_Class::_array_klass_offset;
  3185 int java_lang_Class::_array_klass_offset;
  3204 int java_lang_Class::_oop_size_offset;
  3186 int java_lang_Class::_oop_size_offset;
  3205 int java_lang_Class::_static_oop_field_count_offset;
  3187 int java_lang_Class::_static_oop_field_count_offset;
  3206 int java_lang_Class::_class_loader_offset;
  3188 int java_lang_Class::_class_loader_offset;
  3352 // are not available to determine the offset_of_static_fields.
  3334 // are not available to determine the offset_of_static_fields.
  3353 void JavaClasses::compute_hard_coded_offsets() {
  3335 void JavaClasses::compute_hard_coded_offsets() {
  3354   const int x = heapOopSize;
  3336   const int x = heapOopSize;
  3355   const int header = instanceOopDesc::base_offset_in_bytes();
  3337   const int header = instanceOopDesc::base_offset_in_bytes();
  3356 
  3338 
  3357   // Class
       
  3358   java_lang_Class::resolvedReferences_offset = java_lang_Class::hc_resolvedReferences_offset * x + header;
       
  3359 
       
  3360   // Throwable Class
  3339   // Throwable Class
  3361   java_lang_Throwable::backtrace_offset  = java_lang_Throwable::hc_backtrace_offset  * x + header;
  3340   java_lang_Throwable::backtrace_offset  = java_lang_Throwable::hc_backtrace_offset  * x + header;
  3362   java_lang_Throwable::detailMessage_offset = java_lang_Throwable::hc_detailMessage_offset * x + header;
  3341   java_lang_Throwable::detailMessage_offset = java_lang_Throwable::hc_detailMessage_offset * x + header;
  3363   java_lang_Throwable::cause_offset      = java_lang_Throwable::hc_cause_offset      * x + header;
  3342   java_lang_Throwable::cause_offset      = java_lang_Throwable::hc_cause_offset      * x + header;
  3364   java_lang_Throwable::stackTrace_offset = java_lang_Throwable::hc_stackTrace_offset * x + header;
  3343   java_lang_Throwable::stackTrace_offset = java_lang_Throwable::hc_stackTrace_offset * x + header;
  3553     CHECK_OFFSET("java/lang/String", java_lang_String, hash, "I");
  3532     CHECK_OFFSET("java/lang/String", java_lang_String, hash, "I");
  3554   }
  3533   }
  3555 
  3534 
  3556   // java.lang.Class
  3535   // java.lang.Class
  3557 
  3536 
  3558   CHECK_OFFSET("java/lang/Class", java_lang_Class, resolvedReferences, "[Ljava/lang/Object;");
  3537   // Fake fields
       
  3538   // CHECK_OFFSET("java/lang/Class", java_lang_Class, klass); // %%% this needs to be checked
       
  3539   // CHECK_OFFSET("java/lang/Class", java_lang_Class, array_klass); // %%% this needs to be checked
  3559 
  3540 
  3560   // java.lang.Throwable
  3541   // java.lang.Throwable
  3561 
  3542 
  3562   CHECK_OFFSET("java/lang/Throwable", java_lang_Throwable, backtrace, "Ljava/lang/Object;");
  3543   CHECK_OFFSET("java/lang/Throwable", java_lang_Throwable, backtrace, "Ljava/lang/Object;");
  3563   CHECK_OFFSET("java/lang/Throwable", java_lang_Throwable, detailMessage, "Ljava/lang/String;");
  3544   CHECK_OFFSET("java/lang/Throwable", java_lang_Throwable, detailMessage, "Ljava/lang/String;");