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