229 friend class VMStructs; 230 friend class JVMCIVMStructs; 231 232 private: 233 // The fake offsets are added by the class loader when java.lang.Class is loaded 234 235 static int _klass_offset; 236 static int _array_klass_offset; 237 238 static int _oop_size_offset; 239 static int _static_oop_field_count_offset; 240 241 static int _protection_domain_offset; 242 static int _init_lock_offset; 243 static int _signers_offset; 244 static int _class_loader_offset; 245 static int _module_offset; 246 static int _component_mirror_offset; 247 static int _name_offset; 248 static int _source_file_offset; 249 250 static bool offsets_computed; 251 static int classRedefinedCount_offset; 252 253 static GrowableArray<Klass*>* _fixup_mirror_list; 254 static GrowableArray<Klass*>* _fixup_module_field_list; 255 256 static void set_init_lock(oop java_class, oop init_lock); 257 static void set_protection_domain(oop java_class, oop protection_domain); 258 static void set_class_loader(oop java_class, oop class_loader); 259 static void set_component_mirror(oop java_class, oop comp_mirror); 260 static void initialize_mirror_fields(Klass* k, Handle mirror, Handle protection_domain, TRAPS); 261 static void set_mirror_module_field(Klass* K, Handle mirror, Handle module, TRAPS); 262 public: 263 static void allocate_fixup_lists(); 264 static void compute_offsets(); 265 266 // Instance creation 267 static void create_mirror(Klass* k, Handle class_loader, Handle module, 268 Handle protection_domain, TRAPS); 269 static void fixup_mirror(Klass* k, TRAPS); 270 static oop create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS); 271 272 // Archiving 273 static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; 274 static void archive_basic_type_mirrors(TRAPS) NOT_CDS_JAVA_HEAP_RETURN; 275 static oop archive_mirror(Klass* k, TRAPS) NOT_CDS_JAVA_HEAP_RETURN_(NULL); 276 static oop process_archived_mirror(Klass* k, oop mirror, oop archived_mirror, Thread *THREAD) 277 NOT_CDS_JAVA_HEAP_RETURN_(NULL); 278 static bool restore_archived_mirror(Klass *k, Handle class_loader, Handle module, 279 Handle protection_domain, 280 TRAPS) NOT_CDS_JAVA_HEAP_RETURN_(false); 281 282 static void fixup_module_field(Klass* k, Handle module); 283 284 // Conversion 285 static Klass* as_Klass(oop java_class); 286 static Klass* as_Klass_raw(oop java_class); 287 static void set_klass(oop java_class, Klass* klass); 288 static BasicType as_BasicType(oop java_class, Klass** reference_klass = NULL); 289 static Symbol* as_signature(oop java_class, bool intern_if_not_found, TRAPS); 290 static void print_signature(oop java_class, outputStream *st); 298 // JVM_NewArray support 299 static Klass* array_klass_acquire(oop java_class); 300 static void release_set_array_klass(oop java_class, Klass* klass); 301 // compiler support for class operations 302 static int klass_offset_in_bytes() { return _klass_offset; } 303 static int array_klass_offset_in_bytes() { return _array_klass_offset; } 304 // Support for classRedefinedCount field 305 static int classRedefinedCount(oop the_class_mirror); 306 static void set_classRedefinedCount(oop the_class_mirror, int value); 307 308 // Support for embedded per-class oops 309 static oop protection_domain(oop java_class); 310 static oop init_lock(oop java_class); 311 static oop component_mirror(oop java_class); 312 static objArrayOop signers(oop java_class); 313 static void set_signers(oop java_class, objArrayOop signers); 314 315 static oop class_loader(oop java_class); 316 static void set_module(oop java_class, oop module); 317 static oop module(oop java_class); 318 319 static oop name(Handle java_class, TRAPS); 320 321 static oop source_file(oop java_class); 322 static void set_source_file(oop java_class, oop source_file); 323 324 static int oop_size(oop java_class); 325 static int oop_size_raw(oop java_class); 326 static void set_oop_size(HeapWord* java_class, int size); 327 static int static_oop_field_count(oop java_class); 328 static int static_oop_field_count_raw(oop java_class); 329 static void set_static_oop_field_count(oop java_class, int size); 330 331 static GrowableArray<Klass*>* fixup_mirror_list() { 332 return _fixup_mirror_list; 333 } 334 static void set_fixup_mirror_list(GrowableArray<Klass*>* v) { 335 _fixup_mirror_list = v; 336 } 337 | 229 friend class VMStructs; 230 friend class JVMCIVMStructs; 231 232 private: 233 // The fake offsets are added by the class loader when java.lang.Class is loaded 234 235 static int _klass_offset; 236 static int _array_klass_offset; 237 238 static int _oop_size_offset; 239 static int _static_oop_field_count_offset; 240 241 static int _protection_domain_offset; 242 static int _init_lock_offset; 243 static int _signers_offset; 244 static int _class_loader_offset; 245 static int _module_offset; 246 static int _component_mirror_offset; 247 static int _name_offset; 248 static int _source_file_offset; 249 static int _box_mirror_offset; 250 static int _value_mirror_offset; 251 252 static bool offsets_computed; 253 static int classRedefinedCount_offset; 254 255 static GrowableArray<Klass*>* _fixup_mirror_list; 256 static GrowableArray<Klass*>* _fixup_module_field_list; 257 258 static void set_init_lock(oop java_class, oop init_lock); 259 static void set_protection_domain(oop java_class, oop protection_domain); 260 static void set_class_loader(oop java_class, oop class_loader); 261 static void set_component_mirror(oop java_class, oop comp_mirror); 262 static void initialize_mirror_fields(Klass* k, Handle mirror, Handle protection_domain, TRAPS); 263 static void set_mirror_module_field(Klass* K, Handle mirror, Handle module, TRAPS); 264 public: 265 static void allocate_fixup_lists(); 266 static void compute_offsets(); 267 268 // Instance creation 269 static void create_mirror(Klass* k, Handle class_loader, Handle module, 270 Handle protection_domain, TRAPS); 271 static void fixup_mirror(Klass* k, TRAPS); 272 static oop create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS); 273 static oop create_value_mirror(Klass* k, Handle mirror, TRAPS); 274 275 // Archiving 276 static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN; 277 static void archive_basic_type_mirrors(TRAPS) NOT_CDS_JAVA_HEAP_RETURN; 278 static oop archive_mirror(Klass* k, TRAPS) NOT_CDS_JAVA_HEAP_RETURN_(NULL); 279 static oop process_archived_mirror(Klass* k, oop mirror, oop archived_mirror, Thread *THREAD) 280 NOT_CDS_JAVA_HEAP_RETURN_(NULL); 281 static bool restore_archived_mirror(Klass *k, Handle class_loader, Handle module, 282 Handle protection_domain, 283 TRAPS) NOT_CDS_JAVA_HEAP_RETURN_(false); 284 285 static void fixup_module_field(Klass* k, Handle module); 286 287 // Conversion 288 static Klass* as_Klass(oop java_class); 289 static Klass* as_Klass_raw(oop java_class); 290 static void set_klass(oop java_class, Klass* klass); 291 static BasicType as_BasicType(oop java_class, Klass** reference_klass = NULL); 292 static Symbol* as_signature(oop java_class, bool intern_if_not_found, TRAPS); 293 static void print_signature(oop java_class, outputStream *st); 301 // JVM_NewArray support 302 static Klass* array_klass_acquire(oop java_class); 303 static void release_set_array_klass(oop java_class, Klass* klass); 304 // compiler support for class operations 305 static int klass_offset_in_bytes() { return _klass_offset; } 306 static int array_klass_offset_in_bytes() { return _array_klass_offset; } 307 // Support for classRedefinedCount field 308 static int classRedefinedCount(oop the_class_mirror); 309 static void set_classRedefinedCount(oop the_class_mirror, int value); 310 311 // Support for embedded per-class oops 312 static oop protection_domain(oop java_class); 313 static oop init_lock(oop java_class); 314 static oop component_mirror(oop java_class); 315 static objArrayOop signers(oop java_class); 316 static void set_signers(oop java_class, objArrayOop signers); 317 318 static oop class_loader(oop java_class); 319 static void set_module(oop java_class, oop module); 320 static oop module(oop java_class); 321 322 static void set_box_mirror(oop java_class, oop mirror); 323 static oop box_mirror(oop java_class); 324 static void set_value_mirror(oop java_class, oop mirror); 325 static oop value_mirror(oop java_class); 326 327 static oop name(Handle java_class, TRAPS); 328 329 static oop source_file(oop java_class); 330 static void set_source_file(oop java_class, oop source_file); 331 332 static int oop_size(oop java_class); 333 static int oop_size_raw(oop java_class); 334 static void set_oop_size(HeapWord* java_class, int size); 335 static int static_oop_field_count(oop java_class); 336 static int static_oop_field_count_raw(oop java_class); 337 static void set_static_oop_field_count(oop java_class, int size); 338 339 static GrowableArray<Klass*>* fixup_mirror_list() { 340 return _fixup_mirror_list; 341 } 342 static void set_fixup_mirror_list(GrowableArray<Klass*>* v) { 343 _fixup_mirror_list = v; 344 } 345 |