< prev index next >

src/hotspot/share/classfile/javaClasses.hpp

Print this page




 246   friend class VMStructs;
 247   friend class JVMCIVMStructs;
 248 
 249  private:
 250   // The fake offsets are added by the class loader when java.lang.Class is loaded
 251 
 252   static int _klass_offset;
 253   static int _array_klass_offset;
 254 
 255   static int _oop_size_offset;
 256   static int _static_oop_field_count_offset;
 257 
 258   static int _protection_domain_offset;
 259   static int _init_lock_offset;
 260   static int _signers_offset;
 261   static int _class_loader_offset;
 262   static int _module_offset;
 263   static int _component_mirror_offset;
 264   static int _name_offset;
 265   static int _source_file_offset;

 266 
 267   static bool offsets_computed;
 268   static int classRedefinedCount_offset;
 269 
 270   static GrowableArray<Klass*>* _fixup_mirror_list;
 271   static GrowableArray<Klass*>* _fixup_module_field_list;
 272 
 273   static void set_init_lock(oop java_class, oop init_lock);
 274   static void set_protection_domain(oop java_class, oop protection_domain);
 275   static void set_class_loader(oop java_class, oop class_loader);
 276   static void set_component_mirror(oop java_class, oop comp_mirror);
 277   static void initialize_mirror_fields(Klass* k, Handle mirror, Handle protection_domain, TRAPS);

 278   static void set_mirror_module_field(Klass* K, Handle mirror, Handle module, TRAPS);
 279  public:
 280   static void allocate_fixup_lists();
 281   static void compute_offsets();
 282 
 283   // Instance creation
 284   static void create_mirror(Klass* k, Handle class_loader, Handle module,
 285                             Handle protection_domain, TRAPS);
 286   static void fixup_mirror(Klass* k, TRAPS);
 287   static oop  create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS);
 288   static void update_archived_primitive_mirror_native_pointers(oop archived_mirror) NOT_CDS_JAVA_HEAP_RETURN;
 289   static void update_archived_mirror_native_pointers(oop archived_mirror) NOT_CDS_JAVA_HEAP_RETURN;
 290 
 291   // Archiving
 292   static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
 293   static void archive_basic_type_mirrors(TRAPS) NOT_CDS_JAVA_HEAP_RETURN;
 294   static oop  archive_mirror(Klass* k, TRAPS) NOT_CDS_JAVA_HEAP_RETURN_(NULL);
 295   static oop  process_archived_mirror(Klass* k, oop mirror, oop archived_mirror, Thread *THREAD)
 296                                       NOT_CDS_JAVA_HEAP_RETURN_(NULL);
 297   static bool restore_archived_mirror(Klass *k, Handle class_loader, Handle module,
 298                                       Handle protection_domain,
 299                                       TRAPS) NOT_CDS_JAVA_HEAP_RETURN_(false);
 300 
 301   static void fixup_module_field(Klass* k, Handle module);
 302 
 303   // Conversion
 304   static Klass* as_Klass(oop java_class);
 305   static Klass* as_Klass_raw(oop java_class);


 313 
 314   static bool is_primitive(oop java_class);
 315   static BasicType primitive_type(oop java_class);
 316   static oop primitive_mirror(BasicType t);
 317   // JVM_NewArray support
 318   static Klass* array_klass_acquire(oop java_class);
 319   static void release_set_array_klass(oop java_class, Klass* klass);
 320   // compiler support for class operations
 321   static int klass_offset_in_bytes()                { return _klass_offset; }
 322   static int array_klass_offset_in_bytes()          { return _array_klass_offset; }
 323   // Support for classRedefinedCount field
 324   static int classRedefinedCount(oop the_class_mirror);
 325   static void set_classRedefinedCount(oop the_class_mirror, int value);
 326 
 327   // Support for embedded per-class oops
 328   static oop  protection_domain(oop java_class);
 329   static oop  init_lock(oop java_class);
 330   static oop  component_mirror(oop java_class);
 331   static objArrayOop  signers(oop java_class);
 332   static void set_signers(oop java_class, objArrayOop signers);


 333 
 334   static oop class_loader(oop java_class);
 335   static void set_module(oop java_class, oop module);
 336   static oop module(oop java_class);
 337 
 338   static oop name(Handle java_class, TRAPS);
 339 
 340   static oop source_file(oop java_class);
 341   static void set_source_file(oop java_class, oop source_file);
 342 
 343   static int oop_size(oop java_class);
 344   static int oop_size_raw(oop java_class);
 345   static void set_oop_size(HeapWord* java_class, int size);
 346   static int static_oop_field_count(oop java_class);
 347   static int static_oop_field_count_raw(oop java_class);
 348   static void set_static_oop_field_count(oop java_class, int size);
 349 
 350   static GrowableArray<Klass*>* fixup_mirror_list() {
 351     return _fixup_mirror_list;
 352   }


1134 
1135   // Testers
1136   static bool is_subclass(Klass* klass) {
1137     return klass->is_subclass_of(SystemDictionary::MemberName_klass());
1138   }
1139   static bool is_instance(oop obj);
1140 
1141   static bool is_method(oop obj);
1142 
1143   // Relevant integer codes (keep these in synch. with MethodHandleNatives.Constants):
1144   enum {
1145     MN_IS_METHOD            = 0x00010000, // method (not constructor)
1146     MN_IS_CONSTRUCTOR       = 0x00020000, // constructor
1147     MN_IS_FIELD             = 0x00040000, // field
1148     MN_IS_TYPE              = 0x00080000, // nested type
1149     MN_CALLER_SENSITIVE     = 0x00100000, // @CallerSensitive annotation detected
1150     MN_REFERENCE_KIND_SHIFT = 24, // refKind
1151     MN_REFERENCE_KIND_MASK  = 0x0F000000 >> MN_REFERENCE_KIND_SHIFT,
1152     // The SEARCH_* bits are not for MN.flags but for the matchFlags argument of MHN.getMembers:
1153     MN_SEARCH_SUPERCLASSES  = 0x00100000, // walk super classes
1154     MN_SEARCH_INTERFACES    = 0x00200000  // walk implemented interfaces




1155   };
1156 
1157   // Accessors for code generation:
1158   static int clazz_offset_in_bytes()            { return _clazz_offset; }
1159   static int type_offset_in_bytes()             { return _type_offset; }
1160   static int name_offset_in_bytes()             { return _name_offset; }
1161   static int flags_offset_in_bytes()            { return _flags_offset; }
1162   static int method_offset_in_bytes()           { return _method_offset; }
1163   static int vmindex_offset_in_bytes()          { return _vmindex_offset; }
1164 };
1165 
1166 
1167 // Interface to java.lang.invoke.MethodType objects
1168 
1169 class java_lang_invoke_MethodType: AllStatic {
1170   friend class JavaClasses;
1171 
1172  private:
1173   static int _rtype_offset;
1174   static int _ptypes_offset;




 246   friend class VMStructs;
 247   friend class JVMCIVMStructs;
 248 
 249  private:
 250   // The fake offsets are added by the class loader when java.lang.Class is loaded
 251 
 252   static int _klass_offset;
 253   static int _array_klass_offset;
 254 
 255   static int _oop_size_offset;
 256   static int _static_oop_field_count_offset;
 257 
 258   static int _protection_domain_offset;
 259   static int _init_lock_offset;
 260   static int _signers_offset;
 261   static int _class_loader_offset;
 262   static int _module_offset;
 263   static int _component_mirror_offset;
 264   static int _name_offset;
 265   static int _source_file_offset;
 266   static int _classData_offset;
 267 
 268   static bool offsets_computed;
 269   static int classRedefinedCount_offset;
 270 
 271   static GrowableArray<Klass*>* _fixup_mirror_list;
 272   static GrowableArray<Klass*>* _fixup_module_field_list;
 273 
 274   static void set_init_lock(oop java_class, oop init_lock);
 275   static void set_protection_domain(oop java_class, oop protection_domain);
 276   static void set_class_loader(oop java_class, oop class_loader);
 277   static void set_component_mirror(oop java_class, oop comp_mirror);
 278   static void initialize_mirror_fields(Klass* k, Handle mirror, Handle protection_domain,
 279                                        Handle classData, TRAPS);
 280   static void set_mirror_module_field(Klass* K, Handle mirror, Handle module, TRAPS);
 281  public:
 282   static void allocate_fixup_lists();
 283   static void compute_offsets();
 284 
 285   // Instance creation
 286   static void create_mirror(Klass* k, Handle class_loader, Handle module,
 287                             Handle protection_domain, Handle classData, TRAPS);
 288   static void fixup_mirror(Klass* k, TRAPS);
 289   static oop  create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS);
 290   static void update_archived_primitive_mirror_native_pointers(oop archived_mirror) NOT_CDS_JAVA_HEAP_RETURN;
 291   static void update_archived_mirror_native_pointers(oop archived_mirror) NOT_CDS_JAVA_HEAP_RETURN;
 292 
 293   // Archiving
 294   static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
 295   static void archive_basic_type_mirrors(TRAPS) NOT_CDS_JAVA_HEAP_RETURN;
 296   static oop  archive_mirror(Klass* k, TRAPS) NOT_CDS_JAVA_HEAP_RETURN_(NULL);
 297   static oop  process_archived_mirror(Klass* k, oop mirror, oop archived_mirror, Thread *THREAD)
 298                                       NOT_CDS_JAVA_HEAP_RETURN_(NULL);
 299   static bool restore_archived_mirror(Klass *k, Handle class_loader, Handle module,
 300                                       Handle protection_domain,
 301                                       TRAPS) NOT_CDS_JAVA_HEAP_RETURN_(false);
 302 
 303   static void fixup_module_field(Klass* k, Handle module);
 304 
 305   // Conversion
 306   static Klass* as_Klass(oop java_class);
 307   static Klass* as_Klass_raw(oop java_class);


 315 
 316   static bool is_primitive(oop java_class);
 317   static BasicType primitive_type(oop java_class);
 318   static oop primitive_mirror(BasicType t);
 319   // JVM_NewArray support
 320   static Klass* array_klass_acquire(oop java_class);
 321   static void release_set_array_klass(oop java_class, Klass* klass);
 322   // compiler support for class operations
 323   static int klass_offset_in_bytes()                { return _klass_offset; }
 324   static int array_klass_offset_in_bytes()          { return _array_klass_offset; }
 325   // Support for classRedefinedCount field
 326   static int classRedefinedCount(oop the_class_mirror);
 327   static void set_classRedefinedCount(oop the_class_mirror, int value);
 328 
 329   // Support for embedded per-class oops
 330   static oop  protection_domain(oop java_class);
 331   static oop  init_lock(oop java_class);
 332   static oop  component_mirror(oop java_class);
 333   static objArrayOop  signers(oop java_class);
 334   static void set_signers(oop java_class, objArrayOop signers);
 335   static oop  class_data(oop java_class);
 336   static void set_class_data(oop java_class, oop classData);
 337 
 338   static oop class_loader(oop java_class);
 339   static void set_module(oop java_class, oop module);
 340   static oop module(oop java_class);
 341 
 342   static oop name(Handle java_class, TRAPS);
 343 
 344   static oop source_file(oop java_class);
 345   static void set_source_file(oop java_class, oop source_file);
 346 
 347   static int oop_size(oop java_class);
 348   static int oop_size_raw(oop java_class);
 349   static void set_oop_size(HeapWord* java_class, int size);
 350   static int static_oop_field_count(oop java_class);
 351   static int static_oop_field_count_raw(oop java_class);
 352   static void set_static_oop_field_count(oop java_class, int size);
 353 
 354   static GrowableArray<Klass*>* fixup_mirror_list() {
 355     return _fixup_mirror_list;
 356   }


1138 
1139   // Testers
1140   static bool is_subclass(Klass* klass) {
1141     return klass->is_subclass_of(SystemDictionary::MemberName_klass());
1142   }
1143   static bool is_instance(oop obj);
1144 
1145   static bool is_method(oop obj);
1146 
1147   // Relevant integer codes (keep these in synch. with MethodHandleNatives.Constants):
1148   enum {
1149     MN_IS_METHOD             = 0x00010000, // method (not constructor)
1150     MN_IS_CONSTRUCTOR        = 0x00020000, // constructor
1151     MN_IS_FIELD              = 0x00040000, // field
1152     MN_IS_TYPE               = 0x00080000, // nested type
1153     MN_CALLER_SENSITIVE      = 0x00100000, // @CallerSensitive annotation detected
1154     MN_REFERENCE_KIND_SHIFT  = 24, // refKind
1155     MN_REFERENCE_KIND_MASK   = 0x0F000000 >> MN_REFERENCE_KIND_SHIFT,
1156     // The SEARCH_* bits are not for MN.flags but for the matchFlags argument of MHN.getMembers:
1157     MN_SEARCH_SUPERCLASSES   = 0x00100000, // walk super classes
1158     MN_SEARCH_INTERFACES     = 0x00200000, // walk implemented interfaces
1159     MN_NESTMATE_CLASS        = 0x00000001,
1160     MN_HIDDEN_CLASS          = 0x00000002,
1161     MN_STRONG_LOADER_LINK    = 0x00000004,
1162     MN_ACCESS_VM_ANNOTATIONS = 0x00000008
1163   };
1164 
1165   // Accessors for code generation:
1166   static int clazz_offset_in_bytes()            { return _clazz_offset; }
1167   static int type_offset_in_bytes()             { return _type_offset; }
1168   static int name_offset_in_bytes()             { return _name_offset; }
1169   static int flags_offset_in_bytes()            { return _flags_offset; }
1170   static int method_offset_in_bytes()           { return _method_offset; }
1171   static int vmindex_offset_in_bytes()          { return _vmindex_offset; }
1172 };
1173 
1174 
1175 // Interface to java.lang.invoke.MethodType objects
1176 
1177 class java_lang_invoke_MethodType: AllStatic {
1178   friend class JavaClasses;
1179 
1180  private:
1181   static int _rtype_offset;
1182   static int _ptypes_offset;


< prev index next >