350 volatile unsigned int _old_marking_cycles_completed;
351
352 bool _concurrent_cycle_started;
353 bool _heap_summary_sent;
354
355 // This is a non-product method that is helpful for testing. It is
356 // called at the end of a GC and artificially expands the heap by
357 // allocating a number of dead regions. This way we can induce very
358 // frequent marking cycles and stress the cleanup / concurrent
359 // cleanup code more (as all the regions that will be allocated by
360 // this method will be found dead by the marking cycle).
361 void allocate_dummy_regions() PRODUCT_RETURN;
362
363 // Clear RSets after a compaction. It also resets the GC time stamps.
364 void clear_rsets_post_compaction();
365
366 // If the HR printer is active, dump the state of the regions in the
367 // heap after a compaction.
368 void print_hrm_post_compaction();
369
370 double verify(bool guard, const char* msg);
371 void verify_before_gc();
372 void verify_after_gc();
373
374 void log_gc_header();
375 void log_gc_footer(double pause_time_sec);
376
377 // These are macros so that, if the assert fires, we get the correct
378 // line number, file, etc.
379
380 #define heap_locking_asserts_err_msg(_extra_message_) \
381 err_msg("%s : Heap_lock locked: %s, at safepoint: %s, is VM thread: %s", \
382 (_extra_message_), \
383 BOOL_TO_STR(Heap_lock->owned_by_self()), \
384 BOOL_TO_STR(SafepointSynchronize::is_at_safepoint()), \
385 BOOL_TO_STR(Thread::current()->is_VM_thread()))
386
387 #define assert_heap_locked() \
388 do { \
389 assert(Heap_lock->owned_by_self(), \
|
350 volatile unsigned int _old_marking_cycles_completed;
351
352 bool _concurrent_cycle_started;
353 bool _heap_summary_sent;
354
355 // This is a non-product method that is helpful for testing. It is
356 // called at the end of a GC and artificially expands the heap by
357 // allocating a number of dead regions. This way we can induce very
358 // frequent marking cycles and stress the cleanup / concurrent
359 // cleanup code more (as all the regions that will be allocated by
360 // this method will be found dead by the marking cycle).
361 void allocate_dummy_regions() PRODUCT_RETURN;
362
363 // Clear RSets after a compaction. It also resets the GC time stamps.
364 void clear_rsets_post_compaction();
365
366 // If the HR printer is active, dump the state of the regions in the
367 // heap after a compaction.
368 void print_hrm_post_compaction();
369
370 // Create a memory mapper for auxiliary data structures of the given size and
371 // translation factor.
372 static G1RegionToSpaceMapper* create_aux_memory_mapper(const char* description,
373 size_t size,
374 size_t translation_factor);
375
376 double verify(bool guard, const char* msg);
377 void verify_before_gc();
378 void verify_after_gc();
379
380 void log_gc_header();
381 void log_gc_footer(double pause_time_sec);
382
383 // These are macros so that, if the assert fires, we get the correct
384 // line number, file, etc.
385
386 #define heap_locking_asserts_err_msg(_extra_message_) \
387 err_msg("%s : Heap_lock locked: %s, at safepoint: %s, is VM thread: %s", \
388 (_extra_message_), \
389 BOOL_TO_STR(Heap_lock->owned_by_self()), \
390 BOOL_TO_STR(SafepointSynchronize::is_at_safepoint()), \
391 BOOL_TO_STR(Thread::current()->is_VM_thread()))
392
393 #define assert_heap_locked() \
394 do { \
395 assert(Heap_lock->owned_by_self(), \
|