1119 void ShenandoahHeap::collect(GCCause::Cause cause) { 1120 control_thread()->request_gc(cause); 1121 } 1122 1123 void ShenandoahHeap::do_full_collection(bool clear_all_soft_refs) { 1124 //assert(false, "Shouldn't need to do full collections"); 1125 } 1126 1127 CollectorPolicy* ShenandoahHeap::collector_policy() const { 1128 return _shenandoah_policy; 1129 } 1130 1131 HeapWord* ShenandoahHeap::block_start(const void* addr) const { 1132 Space* sp = heap_region_containing(addr); 1133 if (sp != NULL) { 1134 return sp->block_start(addr); 1135 } 1136 return NULL; 1137 } 1138 1139 size_t ShenandoahHeap::block_size(const HeapWord* addr) const { 1140 Space* sp = heap_region_containing(addr); 1141 assert(sp != NULL, "block_size of address outside of heap"); 1142 return sp->block_size(addr); 1143 } 1144 1145 bool ShenandoahHeap::block_is_obj(const HeapWord* addr) const { 1146 Space* sp = heap_region_containing(addr); 1147 return sp->block_is_obj(addr); 1148 } 1149 1150 jlong ShenandoahHeap::millis_since_last_gc() { 1151 double v = heuristics()->time_since_last_gc() * 1000; 1152 assert(0 <= v && v <= max_jlong, "value should fit: %f", v); 1153 return (jlong)v; 1154 } 1155 1156 void ShenandoahHeap::prepare_for_verify() { 1157 if (SafepointSynchronize::is_at_safepoint() || ! UseTLAB) { 1158 make_parsable(false); 1159 } 1160 } 1161 1162 void ShenandoahHeap::print_gc_threads_on(outputStream* st) const { 1163 workers()->print_worker_threads_on(st); 1164 if (ShenandoahStringDedup::is_enabled()) { | 1119 void ShenandoahHeap::collect(GCCause::Cause cause) { 1120 control_thread()->request_gc(cause); 1121 } 1122 1123 void ShenandoahHeap::do_full_collection(bool clear_all_soft_refs) { 1124 //assert(false, "Shouldn't need to do full collections"); 1125 } 1126 1127 CollectorPolicy* ShenandoahHeap::collector_policy() const { 1128 return _shenandoah_policy; 1129 } 1130 1131 HeapWord* ShenandoahHeap::block_start(const void* addr) const { 1132 Space* sp = heap_region_containing(addr); 1133 if (sp != NULL) { 1134 return sp->block_start(addr); 1135 } 1136 return NULL; 1137 } 1138 1139 bool ShenandoahHeap::block_is_obj(const HeapWord* addr) const { 1140 Space* sp = heap_region_containing(addr); 1141 return sp->block_is_obj(addr); 1142 } 1143 1144 jlong ShenandoahHeap::millis_since_last_gc() { 1145 double v = heuristics()->time_since_last_gc() * 1000; 1146 assert(0 <= v && v <= max_jlong, "value should fit: %f", v); 1147 return (jlong)v; 1148 } 1149 1150 void ShenandoahHeap::prepare_for_verify() { 1151 if (SafepointSynchronize::is_at_safepoint() || ! UseTLAB) { 1152 make_parsable(false); 1153 } 1154 } 1155 1156 void ShenandoahHeap::print_gc_threads_on(outputStream* st) const { 1157 workers()->print_worker_threads_on(st); 1158 if (ShenandoahStringDedup::is_enabled()) { |