527 ClassListParser::populate_cds_indy_info(pool, pool_index, &cii, CHECK);
528 GrowableArray<const char*>* indy_items = cii.items();
529 for (int i = 0; i < indy_items->length(); i++) {
530 w.stream()->print(" %s", indy_items->at(i));
531 }
532 w.stream()->cr();
533 }
534 }
535 }
536 }
537
538 bool ArchiveUtils::has_aot_initialized_mirror(InstanceKlass* src_ik) {
539 if (!ArchiveBuilder::current()->has_been_archived(src_ik)) {
540 return false;
541 }
542 return ArchiveBuilder::current()->get_buffered_addr(src_ik)->has_aot_initialized_mirror();
543 }
544
545 size_t HeapRootSegments::size_in_bytes(size_t seg_idx) {
546 assert(seg_idx < _count, "In range");
547 return objArrayOopDesc::object_size(size_in_elems(seg_idx)) * HeapWordSize;
548 }
549
550 int HeapRootSegments::size_in_elems(size_t seg_idx) {
551 assert(seg_idx < _count, "In range");
552 if (seg_idx != _count - 1) {
553 return _max_size_in_elems;
554 } else {
555 // Last slice, leftover
556 return _roots_count % _max_size_in_elems;
557 }
558 }
559
560 size_t HeapRootSegments::segment_offset(size_t seg_idx) {
561 assert(seg_idx < _count, "In range");
562 return _base_offset + seg_idx * _max_size_in_bytes;
563 }
564
565 ArchiveWorkers::ArchiveWorkers() :
566 _end_semaphore(0),
567 _num_workers(max_workers()),
|
527 ClassListParser::populate_cds_indy_info(pool, pool_index, &cii, CHECK);
528 GrowableArray<const char*>* indy_items = cii.items();
529 for (int i = 0; i < indy_items->length(); i++) {
530 w.stream()->print(" %s", indy_items->at(i));
531 }
532 w.stream()->cr();
533 }
534 }
535 }
536 }
537
538 bool ArchiveUtils::has_aot_initialized_mirror(InstanceKlass* src_ik) {
539 if (!ArchiveBuilder::current()->has_been_archived(src_ik)) {
540 return false;
541 }
542 return ArchiveBuilder::current()->get_buffered_addr(src_ik)->has_aot_initialized_mirror();
543 }
544
545 size_t HeapRootSegments::size_in_bytes(size_t seg_idx) {
546 assert(seg_idx < _count, "In range");
547 return refArrayOopDesc::object_size(size_in_elems(seg_idx)) * HeapWordSize;
548 }
549
550 int HeapRootSegments::size_in_elems(size_t seg_idx) {
551 assert(seg_idx < _count, "In range");
552 if (seg_idx != _count - 1) {
553 return _max_size_in_elems;
554 } else {
555 // Last slice, leftover
556 return _roots_count % _max_size_in_elems;
557 }
558 }
559
560 size_t HeapRootSegments::segment_offset(size_t seg_idx) {
561 assert(seg_idx < _count, "In range");
562 return _base_offset + seg_idx * _max_size_in_bytes;
563 }
564
565 ArchiveWorkers::ArchiveWorkers() :
566 _end_semaphore(0),
567 _num_workers(max_workers()),
|