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