< prev index next >

src/hotspot/share/classfile/javaClasses.hpp

Print this page




 220   static bool is_instance(oop obj);
 221   static inline bool is_instance_inlined(oop obj);
 222 
 223   // Debugging
 224   static void print(oop java_string, outputStream* st);
 225   friend class JavaClasses;
 226   friend class StringTable;
 227 };
 228 
 229 
 230 // Interface to java.lang.Class objects
 231 
 232 #define CLASS_INJECTED_FIELDS(macro)                                       \
 233   macro(java_lang_Class, klass,                  intptr_signature,  false) \
 234   macro(java_lang_Class, array_klass,            intptr_signature,  false) \
 235   macro(java_lang_Class, oop_size,               int_signature,     false) \
 236   macro(java_lang_Class, static_oop_field_count, int_signature,     false) \
 237   macro(java_lang_Class, protection_domain,      object_signature,  false) \
 238   macro(java_lang_Class, signers,                object_signature,  false) \
 239   macro(java_lang_Class, source_file,            object_signature,  false) \

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

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

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


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


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


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




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




 220   static bool is_instance(oop obj);
 221   static inline bool is_instance_inlined(oop obj);
 222 
 223   // Debugging
 224   static void print(oop java_string, outputStream* st);
 225   friend class JavaClasses;
 226   friend class StringTable;
 227 };
 228 
 229 
 230 // Interface to java.lang.Class objects
 231 
 232 #define CLASS_INJECTED_FIELDS(macro)                                       \
 233   macro(java_lang_Class, klass,                  intptr_signature,  false) \
 234   macro(java_lang_Class, array_klass,            intptr_signature,  false) \
 235   macro(java_lang_Class, oop_size,               int_signature,     false) \
 236   macro(java_lang_Class, static_oop_field_count, int_signature,     false) \
 237   macro(java_lang_Class, protection_domain,      object_signature,  false) \
 238   macro(java_lang_Class, signers,                object_signature,  false) \
 239   macro(java_lang_Class, source_file,            object_signature,  false) \
 240   macro(java_lang_Class, classData,              object_signature,  false)
 241 
 242 class java_lang_Class : AllStatic {
 243   friend class VMStructs;
 244   friend class JVMCIVMStructs;
 245 
 246  private:
 247   // The fake offsets are added by the class loader when java.lang.Class is loaded
 248 
 249   static int _klass_offset;
 250   static int _array_klass_offset;
 251 
 252   static int _oop_size_offset;
 253   static int _static_oop_field_count_offset;
 254 
 255   static int _protection_domain_offset;
 256   static int _init_lock_offset;
 257   static int _signers_offset;
 258   static int _class_loader_offset;
 259   static int _module_offset;
 260   static int _component_mirror_offset;
 261   static int _name_offset;
 262   static int _source_file_offset;
 263   static int _classData_offset;
 264 
 265   static bool offsets_computed;
 266   static int classRedefinedCount_offset;
 267 
 268   static GrowableArray<Klass*>* _fixup_mirror_list;
 269   static GrowableArray<Klass*>* _fixup_module_field_list;
 270 
 271   static void set_init_lock(oop java_class, oop init_lock);
 272   static void set_protection_domain(oop java_class, oop protection_domain);
 273   static void set_class_loader(oop java_class, oop class_loader);
 274   static void set_component_mirror(oop java_class, oop comp_mirror);
 275   static void initialize_mirror_fields(Klass* k, Handle mirror, Handle protection_domain,
 276                                        Handle classData, TRAPS);
 277   static void set_mirror_module_field(Klass* K, Handle mirror, Handle module, TRAPS);
 278  public:
 279   static void allocate_fixup_lists();
 280   static void compute_offsets();
 281 
 282   // Instance creation
 283   static void create_mirror(Klass* k, Handle class_loader, Handle module,
 284                             Handle protection_domain, Handle classData, TRAPS);
 285   static void fixup_mirror(Klass* k, TRAPS);
 286   static oop  create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS);
 287   static void update_archived_primitive_mirror_native_pointers(oop archived_mirror) NOT_CDS_JAVA_HEAP_RETURN;
 288   static void update_archived_mirror_native_pointers(oop archived_mirror) NOT_CDS_JAVA_HEAP_RETURN;
 289 
 290   // Archiving
 291   static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
 292   static void archive_basic_type_mirrors(TRAPS) NOT_CDS_JAVA_HEAP_RETURN;
 293   static oop  archive_mirror(Klass* k, TRAPS) NOT_CDS_JAVA_HEAP_RETURN_(NULL);
 294   static oop  process_archived_mirror(Klass* k, oop mirror, oop archived_mirror, Thread *THREAD)
 295                                       NOT_CDS_JAVA_HEAP_RETURN_(NULL);
 296   static bool restore_archived_mirror(Klass *k, Handle class_loader, Handle module,
 297                                       Handle protection_domain,
 298                                       TRAPS) NOT_CDS_JAVA_HEAP_RETURN_(false);
 299 
 300   static void fixup_module_field(Klass* k, Handle module);
 301 
 302   // Conversion
 303   static Klass* as_Klass(oop java_class);
 304   static Klass* as_Klass_raw(oop java_class);


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


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


< prev index next >