680 // the containing regions as 'archive'. For use at JVM init time, when the
681 // caller may mmap archived heap data at the specified range(s).
682 // Verify that the MemRegions specified in the argument array are within the
683 // reserved heap.
684 bool check_archive_addresses(MemRegion* range, size_t count);
685
686 // Commit the appropriate G1 regions containing the specified MemRegions
687 // and mark them as 'archive' regions. The regions in the array must be
688 // non-overlapping and in order of ascending address.
689 bool alloc_archive_regions(MemRegion* range, size_t count, bool open);
690
691 // Insert any required filler objects in the G1 regions around the specified
692 // ranges to make the regions parseable. This must be called after
693 // alloc_archive_regions, and after class loading has occurred.
694 void fill_archive_regions(MemRegion* range, size_t count);
695
696 // For each of the specified MemRegions, uncommit the containing G1 regions
697 // which had been allocated by alloc_archive_regions. This should be called
698 // rather than fill_archive_regions at JVM init time if the archive file
699 // mapping failed, with the same non-overlapping and sorted MemRegion array.
700 void dealloc_archive_regions(MemRegion* range, size_t count);
701
702 oop materialize_archived_object(oop obj);
703
704 private:
705
706 // Shrink the garbage-first heap by at most the given size (in bytes!).
707 // (Rounds down to a HeapRegion boundary.)
708 void shrink(size_t expand_bytes);
709 void shrink_helper(size_t expand_bytes);
710
711 #if TASKQUEUE_STATS
712 static void print_taskqueue_stats_hdr(outputStream* const st);
713 void print_taskqueue_stats() const;
714 void reset_taskqueue_stats();
715 #endif // TASKQUEUE_STATS
716
717 // Schedule the VM operation that will do an evacuation pause to
718 // satisfy an allocation request of word_size. *succeeded will
719 // return whether the VM operation was successful (it did do an
720 // evacuation pause) or not (another thread beat us to it or the GC
|
680 // the containing regions as 'archive'. For use at JVM init time, when the
681 // caller may mmap archived heap data at the specified range(s).
682 // Verify that the MemRegions specified in the argument array are within the
683 // reserved heap.
684 bool check_archive_addresses(MemRegion* range, size_t count);
685
686 // Commit the appropriate G1 regions containing the specified MemRegions
687 // and mark them as 'archive' regions. The regions in the array must be
688 // non-overlapping and in order of ascending address.
689 bool alloc_archive_regions(MemRegion* range, size_t count, bool open);
690
691 // Insert any required filler objects in the G1 regions around the specified
692 // ranges to make the regions parseable. This must be called after
693 // alloc_archive_regions, and after class loading has occurred.
694 void fill_archive_regions(MemRegion* range, size_t count);
695
696 // For each of the specified MemRegions, uncommit the containing G1 regions
697 // which had been allocated by alloc_archive_regions. This should be called
698 // rather than fill_archive_regions at JVM init time if the archive file
699 // mapping failed, with the same non-overlapping and sorted MemRegion array.
700 void dealloc_archive_regions(MemRegion* range, size_t count, bool is_open);
701
702 oop materialize_archived_object(oop obj);
703
704 private:
705
706 // Shrink the garbage-first heap by at most the given size (in bytes!).
707 // (Rounds down to a HeapRegion boundary.)
708 void shrink(size_t expand_bytes);
709 void shrink_helper(size_t expand_bytes);
710
711 #if TASKQUEUE_STATS
712 static void print_taskqueue_stats_hdr(outputStream* const st);
713 void print_taskqueue_stats() const;
714 void reset_taskqueue_stats();
715 #endif // TASKQUEUE_STATS
716
717 // Schedule the VM operation that will do an evacuation pause to
718 // satisfy an allocation request of word_size. *succeeded will
719 // return whether the VM operation was successful (it did do an
720 // evacuation pause) or not (another thread beat us to it or the GC
|