246 it->push(&_the_empty_method_array); 247 it->push(&_the_array_interfaces_array); 248 249 _finalizer_register_cache->metaspace_pointers_do(it); 250 _loader_addClass_cache->metaspace_pointers_do(it); 251 _throw_illegal_access_error_cache->metaspace_pointers_do(it); 252 _throw_no_such_method_error_cache->metaspace_pointers_do(it); 253 _do_stack_walk_cache->metaspace_pointers_do(it); 254 } 255 256 // Serialize metadata and pointers to primitive type mirrors in and out of CDS archive 257 void Universe::serialize(SerializeClosure* f) { 258 259 #if INCLUDE_CDS_JAVA_HEAP 260 { 261 oop mirror_oop; 262 for (int i = T_BOOLEAN; i < T_VOID+1; i++) { 263 if (f->reading()) { 264 f->do_oop(&mirror_oop); // read from archive 265 assert(oopDesc::is_oop_or_null(mirror_oop), "is oop"); 266 _mirrors[i] = OopHandle(vm_global(), mirror_oop); 267 } else { 268 mirror_oop = _mirrors[i].resolve(); 269 f->do_oop(&mirror_oop); // write to archive 270 } 271 if (mirror_oop != NULL) { // may be null if archived heap is disabled 272 java_lang_Class::update_archived_primitive_mirror_native_pointers(mirror_oop); 273 } 274 } 275 } 276 #endif 277 278 for (int i = 0; i < T_LONG+1; i++) { 279 f->do_ptr((void**)&_typeArrayKlassObjs[i]); 280 } 281 282 f->do_ptr((void**)&_objectArrayKlassObj); 283 f->do_ptr((void**)&_the_array_interfaces_array); 284 f->do_ptr((void**)&_the_empty_int_array); 285 f->do_ptr((void**)&_the_empty_short_array); 286 f->do_ptr((void**)&_the_empty_method_array); | 246 it->push(&_the_empty_method_array); 247 it->push(&_the_array_interfaces_array); 248 249 _finalizer_register_cache->metaspace_pointers_do(it); 250 _loader_addClass_cache->metaspace_pointers_do(it); 251 _throw_illegal_access_error_cache->metaspace_pointers_do(it); 252 _throw_no_such_method_error_cache->metaspace_pointers_do(it); 253 _do_stack_walk_cache->metaspace_pointers_do(it); 254 } 255 256 // Serialize metadata and pointers to primitive type mirrors in and out of CDS archive 257 void Universe::serialize(SerializeClosure* f) { 258 259 #if INCLUDE_CDS_JAVA_HEAP 260 { 261 oop mirror_oop; 262 for (int i = T_BOOLEAN; i < T_VOID+1; i++) { 263 if (f->reading()) { 264 f->do_oop(&mirror_oop); // read from archive 265 assert(oopDesc::is_oop_or_null(mirror_oop), "is oop"); 266 // Only create an OopHandle for non-null mirrors 267 if (mirror_oop != NULL) { 268 _mirrors[i] = OopHandle(vm_global(), mirror_oop); 269 } 270 } else { 271 mirror_oop = _mirrors[i].resolve(); 272 f->do_oop(&mirror_oop); // write to archive 273 } 274 if (mirror_oop != NULL) { // may be null if archived heap is disabled 275 java_lang_Class::update_archived_primitive_mirror_native_pointers(mirror_oop); 276 } 277 } 278 } 279 #endif 280 281 for (int i = 0; i < T_LONG+1; i++) { 282 f->do_ptr((void**)&_typeArrayKlassObjs[i]); 283 } 284 285 f->do_ptr((void**)&_objectArrayKlassObj); 286 f->do_ptr((void**)&_the_array_interfaces_array); 287 f->do_ptr((void**)&_the_empty_int_array); 288 f->do_ptr((void**)&_the_empty_short_array); 289 f->do_ptr((void**)&_the_empty_method_array); |