hotspot/src/share/vm/oops/instanceKlass.cpp
changeset 13738 d67be49a5beb
parent 13736 5b15a8f57979
child 13952 e3cf184080bc
equal deleted inserted replaced
13737:aa8c9eb6d900 13738:d67be49a5beb
   189 
   189 
   190   // Allocation
   190   // Allocation
   191   InstanceKlass* ik;
   191   InstanceKlass* ik;
   192   if (rt == REF_NONE) {
   192   if (rt == REF_NONE) {
   193     if (name == vmSymbols::java_lang_Class()) {
   193     if (name == vmSymbols::java_lang_Class()) {
   194       ik = new (loader_data, size, THREAD) instanceMirrorKlass(
   194       ik = new (loader_data, size, THREAD) InstanceMirrorKlass(
   195         vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt,
   195         vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt,
   196         access_flags, !host_klass.is_null());
   196         access_flags, !host_klass.is_null());
   197     } else if (name == vmSymbols::java_lang_ClassLoader() ||
   197     } else if (name == vmSymbols::java_lang_ClassLoader() ||
   198           (SystemDictionary::ClassLoader_klass_loaded() &&
   198           (SystemDictionary::ClassLoader_klass_loaded() &&
   199           super_klass != NULL &&
   199           super_klass != NULL &&
   200           super_klass->is_subtype_of(SystemDictionary::ClassLoader_klass()))) {
   200           super_klass->is_subtype_of(SystemDictionary::ClassLoader_klass()))) {
   201       ik = new (loader_data, size, THREAD) instanceClassLoaderKlass(
   201       ik = new (loader_data, size, THREAD) InstanceClassLoaderKlass(
   202         vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt,
   202         vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt,
   203         access_flags, !host_klass.is_null());
   203         access_flags, !host_klass.is_null());
   204     } else {
   204     } else {
   205       // normal class
   205       // normal class
   206       ik = new (loader_data, size, THREAD) InstanceKlass(
   206       ik = new (loader_data, size, THREAD) InstanceKlass(
   207         vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt,
   207         vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt,
   208         access_flags, !host_klass.is_null());
   208         access_flags, !host_klass.is_null());
   209     }
   209     }
   210   } else {
   210   } else {
   211     // reference klass
   211     // reference klass
   212     ik = new (loader_data, size, THREAD) instanceRefKlass(
   212     ik = new (loader_data, size, THREAD) InstanceRefKlass(
   213         vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt,
   213         vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt,
   214         access_flags, !host_klass.is_null());
   214         access_flags, !host_klass.is_null());
   215   }
   215   }
   216 
   216 
   217   return ik;
   217   return ik;
  2282     _source_debug_extension = sde;
  2282     _source_debug_extension = sde;
  2283   }
  2283   }
  2284 }
  2284 }
  2285 
  2285 
  2286 address InstanceKlass::static_field_addr(int offset) {
  2286 address InstanceKlass::static_field_addr(int offset) {
  2287   return (address)(offset + instanceMirrorKlass::offset_of_static_fields() + (intptr_t)java_mirror());
  2287   return (address)(offset + InstanceMirrorKlass::offset_of_static_fields() + (intptr_t)java_mirror());
  2288 }
  2288 }
  2289 
  2289 
  2290 
  2290 
  2291 const char* InstanceKlass::signature_name() const {
  2291 const char* InstanceKlass::signature_name() const {
  2292   const char* src = (const char*) (name()->as_C_string());
  2292   const char* src = (const char*) (name()->as_C_string());
  3071   }
  3071   }
  3072 }
  3072 }
  3073 
  3073 
  3074 
  3074 
  3075 void JNIid::verify(Klass* holder) {
  3075 void JNIid::verify(Klass* holder) {
  3076   int first_field_offset  = instanceMirrorKlass::offset_of_static_fields();
  3076   int first_field_offset  = InstanceMirrorKlass::offset_of_static_fields();
  3077   int end_field_offset;
  3077   int end_field_offset;
  3078   end_field_offset = first_field_offset + (InstanceKlass::cast(holder)->static_field_size() * wordSize);
  3078   end_field_offset = first_field_offset + (InstanceKlass::cast(holder)->static_field_size() * wordSize);
  3079 
  3079 
  3080   JNIid* current = this;
  3080   JNIid* current = this;
  3081   while (current != NULL) {
  3081   while (current != NULL) {