1176 //assert(false, "Shouldn't need to do full collections");
1177 }
1178
1179 HeapWord* ShenandoahHeap::block_start(const void* addr) const {
1180 ShenandoahHeapRegion* r = heap_region_containing(addr);
1181 if (r != NULL) {
1182 return r->block_start(addr);
1183 }
1184 return NULL;
1185 }
1186
1187 bool ShenandoahHeap::block_is_obj(const HeapWord* addr) const {
1188 ShenandoahHeapRegion* r = heap_region_containing(addr);
1189 return r->block_is_obj(addr);
1190 }
1191
1192 bool ShenandoahHeap::print_location(outputStream* st, void* addr) const {
1193 return BlockLocationPrinter<ShenandoahHeap>::print_location(st, addr);
1194 }
1195
1196 jlong ShenandoahHeap::millis_since_last_gc() {
1197 double v = heuristics()->time_since_last_gc() * 1000;
1198 assert(0 <= v && v <= max_jlong, "value should fit: %f", v);
1199 return (jlong)v;
1200 }
1201
1202 void ShenandoahHeap::prepare_for_verify() {
1203 if (SafepointSynchronize::is_at_safepoint() && UseTLAB) {
1204 labs_make_parsable();
1205 }
1206 }
1207
1208 void ShenandoahHeap::gc_threads_do(ThreadClosure* tcl) const {
1209 workers()->threads_do(tcl);
1210 if (_safepoint_workers != NULL) {
1211 _safepoint_workers->threads_do(tcl);
1212 }
1213 if (ShenandoahStringDedup::is_enabled()) {
1214 ShenandoahStringDedup::threads_do(tcl);
1215 }
1216 }
1217
1218 void ShenandoahHeap::print_tracing_info() const {
1219 LogTarget(Info, gc, stats) lt;
1220 if (lt.is_enabled()) {
1221 ResourceMark rm;
|
1176 //assert(false, "Shouldn't need to do full collections");
1177 }
1178
1179 HeapWord* ShenandoahHeap::block_start(const void* addr) const {
1180 ShenandoahHeapRegion* r = heap_region_containing(addr);
1181 if (r != NULL) {
1182 return r->block_start(addr);
1183 }
1184 return NULL;
1185 }
1186
1187 bool ShenandoahHeap::block_is_obj(const HeapWord* addr) const {
1188 ShenandoahHeapRegion* r = heap_region_containing(addr);
1189 return r->block_is_obj(addr);
1190 }
1191
1192 bool ShenandoahHeap::print_location(outputStream* st, void* addr) const {
1193 return BlockLocationPrinter<ShenandoahHeap>::print_location(st, addr);
1194 }
1195
1196 void ShenandoahHeap::prepare_for_verify() {
1197 if (SafepointSynchronize::is_at_safepoint() && UseTLAB) {
1198 labs_make_parsable();
1199 }
1200 }
1201
1202 void ShenandoahHeap::gc_threads_do(ThreadClosure* tcl) const {
1203 workers()->threads_do(tcl);
1204 if (_safepoint_workers != NULL) {
1205 _safepoint_workers->threads_do(tcl);
1206 }
1207 if (ShenandoahStringDedup::is_enabled()) {
1208 ShenandoahStringDedup::threads_do(tcl);
1209 }
1210 }
1211
1212 void ShenandoahHeap::print_tracing_info() const {
1213 LogTarget(Info, gc, stats) lt;
1214 if (lt.is_enabled()) {
1215 ResourceMark rm;
|