1048 // updating references in the compacted region. 1049 static inline double reclaimed_ratio(const RegionData* const candidate, 1050 HeapWord* const bottom, 1051 HeapWord* const top, 1052 HeapWord* const new_top); 1053 1054 // Compute the dense prefix for the designated space. 1055 static HeapWord* compute_dense_prefix(const SpaceId id, 1056 bool maximum_compaction); 1057 1058 // Return true if dead space crosses onto the specified Region; bit must be 1059 // the bit index corresponding to the first word of the Region. 1060 static inline bool dead_space_crosses_boundary(const RegionData* region, 1061 idx_t bit); 1062 1063 // Summary phase utility routine to fill dead space (if any) at the dense 1064 // prefix boundary. Should only be called if the the dense prefix is 1065 // non-empty. 1066 static void fill_dense_prefix_end(SpaceId id); 1067 1068 // Clear the summary data source_region field for the specified addresses. 1069 static void clear_source_region(HeapWord* beg_addr, HeapWord* end_addr); 1070 1071 static void summarize_spaces_quick(); 1072 static void summarize_space(SpaceId id, bool maximum_compaction); 1073 static void summary_phase(ParCompactionManager* cm, bool maximum_compaction); 1074 1075 // Adjust addresses in roots. Does not adjust addresses in heap. 1076 static void adjust_roots(ParCompactionManager* cm); 1077 1078 DEBUG_ONLY(static void write_block_fill_histogram();) 1079 1080 // Move objects to new locations. 1081 static void compact_perm(ParCompactionManager* cm); 1082 static void compact(); 1083 1084 // Add available regions to the stack and draining tasks to the task queue. 1085 static void enqueue_region_draining_tasks(GCTaskQueue* q, 1086 uint parallel_gc_threads); 1087 1088 // Add dense prefix update tasks to the task queue. 1089 static void enqueue_dense_prefix_tasks(GCTaskQueue* q, 1090 uint parallel_gc_threads); | 1048 // updating references in the compacted region. 1049 static inline double reclaimed_ratio(const RegionData* const candidate, 1050 HeapWord* const bottom, 1051 HeapWord* const top, 1052 HeapWord* const new_top); 1053 1054 // Compute the dense prefix for the designated space. 1055 static HeapWord* compute_dense_prefix(const SpaceId id, 1056 bool maximum_compaction); 1057 1058 // Return true if dead space crosses onto the specified Region; bit must be 1059 // the bit index corresponding to the first word of the Region. 1060 static inline bool dead_space_crosses_boundary(const RegionData* region, 1061 idx_t bit); 1062 1063 // Summary phase utility routine to fill dead space (if any) at the dense 1064 // prefix boundary. Should only be called if the the dense prefix is 1065 // non-empty. 1066 static void fill_dense_prefix_end(SpaceId id); 1067 1068 static void summarize_spaces_quick(); 1069 static void summarize_space(SpaceId id, bool maximum_compaction); 1070 static void summary_phase(ParCompactionManager* cm, bool maximum_compaction); 1071 1072 // Adjust addresses in roots. Does not adjust addresses in heap. 1073 static void adjust_roots(ParCompactionManager* cm); 1074 1075 DEBUG_ONLY(static void write_block_fill_histogram();) 1076 1077 // Move objects to new locations. 1078 static void compact_perm(ParCompactionManager* cm); 1079 static void compact(); 1080 1081 // Add available regions to the stack and draining tasks to the task queue. 1082 static void enqueue_region_draining_tasks(GCTaskQueue* q, 1083 uint parallel_gc_threads); 1084 1085 // Add dense prefix update tasks to the task queue. 1086 static void enqueue_dense_prefix_tasks(GCTaskQueue* q, 1087 uint parallel_gc_threads); |