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