1286 } 1287 1288 void Universe::print_on(outputStream* st, bool extended) { 1289 st->print_cr("Heap"); 1290 if (!extended) { 1291 heap()->print_on(st); 1292 } else { 1293 heap()->print_extended_on(st); 1294 } 1295 } 1296 1297 void Universe::print_heap_at_SIGBREAK() { 1298 if (PrintHeapAtSIGBREAK) { 1299 MutexLocker hl(Heap_lock); 1300 print_on(tty); 1301 tty->cr(); 1302 tty->flush(); 1303 } 1304 } 1305 1306 void Universe::print_heap_before_gc(outputStream* st) { 1307 st->print_cr("{Heap before GC invocations=%u (full %u):", 1308 heap()->total_collections(), 1309 heap()->total_full_collections()); 1310 if (!PrintHeapAtGCExtended) { 1311 heap()->print_on(st); 1312 } else { 1313 heap()->print_extended_on(st); 1314 } 1315 } 1316 1317 void Universe::print_heap_after_gc(outputStream* st) { 1318 st->print_cr("Heap after GC invocations=%u (full %u):", 1319 heap()->total_collections(), 1320 heap()->total_full_collections()); 1321 if (!PrintHeapAtGCExtended) { 1322 heap()->print_on(st); 1323 } else { 1324 heap()->print_extended_on(st); 1325 } 1326 st->print_cr("}"); 1327 } 1328 1329 void Universe::verify(bool allow_dirty, bool silent, VerifyOption option) { 1330 if (SharedSkipVerify) { 1331 return; 1332 } 1333 1334 // The use of _verify_in_progress is a temporary work around for 1335 // 6320749. Don't bother with a creating a class to set and clear 1336 // it since it is only used in this method and the control flow is 1337 // straight forward. 1338 _verify_in_progress = true; 1339 1340 COMPILER2_PRESENT( 1341 assert(!DerivedPointerTable::is_active(), | 1286 } 1287 1288 void Universe::print_on(outputStream* st, bool extended) { 1289 st->print_cr("Heap"); 1290 if (!extended) { 1291 heap()->print_on(st); 1292 } else { 1293 heap()->print_extended_on(st); 1294 } 1295 } 1296 1297 void Universe::print_heap_at_SIGBREAK() { 1298 if (PrintHeapAtSIGBREAK) { 1299 MutexLocker hl(Heap_lock); 1300 print_on(tty); 1301 tty->cr(); 1302 tty->flush(); 1303 } 1304 } 1305 1306 void Universe::print_heap_before_gc(outputStream* st, bool ignore_extended) { 1307 st->print_cr("{Heap before GC invocations=%u (full %u):", 1308 heap()->total_collections(), 1309 heap()->total_full_collections()); 1310 if (!PrintHeapAtGCExtended || ignore_extended) { 1311 heap()->print_on(st); 1312 } else { 1313 heap()->print_extended_on(st); 1314 } 1315 } 1316 1317 void Universe::print_heap_after_gc(outputStream* st, bool ignore_extended) { 1318 st->print_cr("Heap after GC invocations=%u (full %u):", 1319 heap()->total_collections(), 1320 heap()->total_full_collections()); 1321 if (!PrintHeapAtGCExtended || ignore_extended) { 1322 heap()->print_on(st); 1323 } else { 1324 heap()->print_extended_on(st); 1325 } 1326 st->print_cr("}"); 1327 } 1328 1329 void Universe::verify(bool allow_dirty, bool silent, VerifyOption option) { 1330 if (SharedSkipVerify) { 1331 return; 1332 } 1333 1334 // The use of _verify_in_progress is a temporary work around for 1335 // 6320749. Don't bother with a creating a class to set and clear 1336 // it since it is only used in this method and the control flow is 1337 // straight forward. 1338 _verify_in_progress = true; 1339 1340 COMPILER2_PRESENT( 1341 assert(!DerivedPointerTable::is_active(), |