67 Commits

Author SHA1 Message Date
Marcus Larsson
ae0190f121 8051837: Remove temporary G1UseParallelRSetUpdating and G1UseParallelRSetScanning flags
Reviewed-by: stefank, tschatzl
2014-08-07 09:35:08 +02:00
David Chase
305ec3bd3f 8037816: Fix for 8036122 breaks build with Xcode5/clang
Repaired or selectively disabled offending formats; future-proofed with additional checking

Reviewed-by: kvn, jrose, stefank
2014-05-09 16:50:54 -04:00
Bengt Rutisson
5d967f0aea 8040722: G1: Clean up usages of heap_region_containing
Reviewed-by: tschatzl, jmasa
2014-04-17 15:57:02 +02:00
Stefan Karlsson
a97ce35fab 8039957: Replace the last few %p usages with PTR_FORMAT in the GC code
Reviewed-by: jwilhelm, sjohanss, jmasa
2014-04-15 20:46:23 +02:00
Stefan Karlsson
6583b826bb 8039244: Don't use UINT32_FORMAT and INT32_FORMAT when printing uints and ints in the GC code
Reviewed-by: brutisso, tschatzl
2014-04-04 09:46:10 +02:00
Vladimir Kempik
0ab60ab172 8016302: Change type of the number of GC workers to unsigned int (2)
Reviewed-by: tschatzl, jwilhelm
2014-04-03 17:49:31 +04:00
Thomas Schatzl
2a8616c9d6 8035654: Add times for evacuation failure handling in "Other" time
Detailed breakdown of time spent in the evacuation failure handling phases to make the "Other" time roughly correspond to the sum of its parts.

Reviewed-by: jwilhelm, jmasa
2014-03-17 10:13:42 +01:00
Stefan Karlsson
a26a6715b0 8033764: Remove the usage of StarTask from BufferingOopClosure
Reviewed-by: mgerdin, brutisso, tschatzl
2014-02-10 12:51:51 +01:00
Jesper Wilhelmsson
81ba2e32c0 8025856: Fix typos in the GC code
Fix about 440 typos in comments in the VM code

Reviewed-by: mgerdin, tschatzl, coleenp, kmo, jcoomes
2014-01-23 14:47:23 +01:00
Jesper Wilhelmsson
9705a6e3f9 8026853: Prepare GC code for collector policy regression fix
Cleanup related to the NewSize and MaxNewSize bugs

Reviewed-by: tschatzl, jcoomes, ehelin
2013-10-21 18:56:20 +02:00
Thomas Schatzl
f144f37f49 8025441: G1: assert "assert(thread < _num_vtimes) failed: just checking" fails when G1ConcRefinementThreads > ParallelGCThreads
The initialization for the remembered set summary data structures used the wrong thread count, i.e. number of worker threads instead of number of refinement threads.

Reviewed-by: brutisso
2013-09-30 12:43:59 +02:00
Mikael Gerdin
b8363e6615 8025305: Cleanup CardTableModRefBS usage in G1
Move some G1 specific code from CardTableModRefBS to G1SATBCardTableModRefBS.

Reviewed-by: brutisso, tschatzl, ehelin
2013-09-24 14:46:29 +02:00
Thomas Schatzl
bd9ffce267 8014078: G1: improve remembered set summary information by providing per region type information
Add memory consumption breakdown on a per region type in the G1 remembered set summary statistics. This simplifies remembered set memory consumption analysis.

Reviewed-by: brutisso
2013-09-26 12:49:45 +02:00
John Cuthbertson
f63547bf71 7145569: G1: optimize nmethods scanning
Add a list of nmethods to the RSet for a region that contain references into the region. Skip scanning the code cache during root scanning and scan the nmethod lists during RSet scanning instead.

Reviewed-by: tschatzl, brutisso, mgerdin, twisti, kvn
2013-08-15 10:52:18 +02:00
John Cuthbertson
c3d6abc4e1 8015244: G1: Verification after a full GC is incorrectly placed
In a full GC, move the verification after the GC to after RSet rebuilding. Verify RSet entries during a full GC under control of a flag.

Reviewed-by: tschatzl, brutisso
2013-06-04 10:04:06 -07:00
Thomas Schatzl
54964edefa 8013895: G1: G1SummarizeRSetStats output on Linux needs improvemen
Fixed the output of G1SummarizeRSetStats: too small datatype for the number of concurrently processed cards, added concurrent remembered set thread time retrieval for Linux and Windows (BSD uses os::elapsedTime() now), and other cleanup. The information presented during VM operation is now relative to the previous output, not always cumulative if G1SummarizeRSetStatsPeriod > 0. At VM exit, the code prints a cumulative summary.

Reviewed-by: johnc, jwilhelm
2013-05-28 09:32:06 +02:00
John Cuthbertson
c38f8fc543 7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
Refactor G1's hot card cache and card counts table into their own files. Simplify the card counts table, including removing the encoding of the card index in each entry. The card counts table now has a 1:1 correspondence with the cards spanned by heap. Space for the card counts table is reserved from virtual memory (rather than C heap) during JVM startup and is committed/expanded when the heap is expanded. Changes were also reviewed-by Vitaly Davidovich.

Reviewed-by: tschatzl, jmasa
2013-05-09 11:16:39 -07:00
John Cuthbertson
eafc00bc25 8011724: G1: Stack allocate instances of HeapRegionRemSetIterator
Stack allocate instances of HeapRegionRemSetIterator during RSet scanning.

Reviewed-by: brutisso, jwilhelm
2013-04-18 10:09:23 -07:00
Jon Masamitsu
5c58d27aac 6964458: Reimplement class meta-data storage to use native memory
Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes

Co-authored-by: Stefan Karlsson <stefan.karlsson@oracle.com>
Co-authored-by: Mikael Gerdin <mikael.gerdin@oracle.com>
Co-authored-by: Tom Rodriguez <tom.rodriguez@oracle.com>
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
2012-09-01 13:25:18 -04:00
Bengt Rutisson
68bbfe24e7 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
Also reviewed by vitalyd@gmail.com. Introduced the WorkerDataArray class. Fixed some minor logging bugs.

Reviewed-by: johnc, mgerdin
2012-08-23 10:21:12 +02:00
Antonios Printezis
a6580a7e63 7114678: G1: various small fixes, code cleanup, and refactoring
Various cleanups as a prelude to introducing iterators for HeapRegions.

Reviewed-by: johnc, brutisso
2012-07-19 15:15:54 -07:00
Jon Masamitsu
00502cdd51 Merge 2012-07-16 13:00:26 -07:00
Bengt Rutisson
3571ee23dc 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
Also reviewed by: vitalyd@gmail.com. Move the timing out of G1CollectorPolicy into the G1GCPhaseTimes class

Reviewed-by: johnc
2012-07-11 22:47:38 +02:00
Zhengyu Gu
a39b17624a 6995781: Native Memory Tracking (Phase 1)
7151532: DCmd for hotspot native memory tracking

Implementation of native memory tracking phase 1, which tracks VM native memory usage, and related DCmd

Reviewed-by: acorn, coleenp, fparain
2012-06-28 17:03:16 -04:00
John Cuthbertson
179d6df8c0 7133038: G1: Some small profile based optimizations
Some minor profile based optimizations. Reduce the number of branches and branch mispredicts by removing some virtual calls, through closure specalization, and refactoring some conditional statements.

Reviewed-by: brutisso, tonyp
2012-01-26 14:14:55 -08:00
Jon Masamitsu
0ebc10bb13 7121618: Change type of number of GC workers to unsigned int
Change variables representing the number of GC workers to uint from int and size_t.  Change the parameter in work(int i) to work(uint worker_id).

Reviewed-by: brutisso, tonyp
2011-12-14 13:34:57 -08:00
John Cuthbertson
a3311881b5 7112743: G1: Reduce overhead of marking closure during evacuation pauses
Parallelize the serial code that was used to mark objects reachable from survivor objects in the collection set. Some minor improvments in the timers used to track the freeing of the collection set along with some tweaks to PrintGCDetails.

Reviewed-by: tonyp, brutisso
2011-11-17 12:40:15 -08:00
Jon Masamitsu
15070123fa 6593758: RFE: Enhance GC ergonomics to dynamically choose ParallelGCThreads
Select number of GC threads dynamically based on heap usage and number of Java threads

Reviewed-by: johnc, ysr, jcoomes
2011-08-09 10:16:01 -07:00
Antonios Printezis
3cd36270b7 7097002: G1: remove a lot of unused / redundant code from the G1CollectorPolicy class
Major cleanup of the G1CollectorPolicy class. It removes a lot of unused fields and methods and also consolidates replicated information (mainly various ways of counting the number of CSet regions) into one copy.

Reviewed-by: johnc, brutisso
2011-11-18 12:52:27 -05:00
Bengt Rutisson
b47310ebf8 7106751: G1: gc/gctests/nativeGC03 crashes VM with SIGSEGV
_cset_rs_update_cl[] was indexed with values beyond what it is set up to handle.

Reviewed-by: ysr, jmasa, johnc
2011-11-02 08:04:23 +01:00
John Cuthbertson
72c2cfef4f 7096030: G1: PrintGCDetails enhancements
7102445: G1: Unnecessary Resource allocations during RSet scanning

Add a new per-worker thread line in the PrintGCDetails output. GC Worker Other is the difference between the elapsed time for the parallel phase of the evacuation pause and the sum of the times of the sub-phases (external root scanning, mark stack scanning, RSet updating, RSet scanning, object copying, and termination) for that worker. During RSet scanning, stack allocate DirtyCardToOopClosure objects; allocating these in a resource area was causing abnormally high GC Worker Other times while the worker thread freed ResourceArea chunks.

Reviewed-by: tonyp, jwilhelm, brutisso
2011-10-23 23:06:06 -07:00
John Cuthbertson
02e9894454 7097053: G1: assert(da ? referent->is_oop() : referent->is_oop_or_null()) failed: referenceProcessor.cpp:1054
During remembered set scanning, the reference processor could discover a reference object whose referent was in the process of being copied and so may not be completely initialized. Do not perform reference discovery during remembered set scanning.

Reviewed-by: tonyp, ysr
2011-10-03 12:49:53 -07:00
John Cuthbertson
1b62d10b4b 6484982: G1: process references during evacuation pauses
G1 now uses two reference processors - one is used by concurrent marking and the other is used by STW GCs (both full and incremental evacuation pauses). In an evacuation pause, the reference processor is embedded into the closures used to scan objects. Doing so causes causes reference objects to be 'discovered' by the reference processor. At the end of the evacuation pause, these discovered reference objects are processed - preserving (and copying) referent objects (and their reachable graphs) as appropriate.

Reviewed-by: ysr, jwilhelm, brutisso, stefank, tonyp
2011-09-22 10:57:37 -07:00
Antonios Printezis
408e0b1bc1 7046182: G1: remove unnecessary iterations over the collection set
Remove two unnecessary iterations over the collection set which are supposed to prepare the RSet's of the CSet regions for parallel iterations (we'll make sure this is done incrementally). I'll piggyback on this CR the removal of the G1_REM_SET_LOGGING code.

Reviewed-by: brutisso, johnc
2011-06-21 15:23:07 -04:00
Antonios Printezis
6d6d8a571c 7045662: G1: OopsInHeapRegionClosure::set_region() should not be virtual
Make the method non-virtual, remove five unused closures, and fix a couple of copyright typos.

Reviewed-by: stefank, johnc, poonam
2011-06-08 21:48:38 -04:00
Antonios Printezis
10f6cc7fc3 7035144: G1: nightly failure: Non-dirty cards in region that should be dirty (failures still exist...)
We should only undirty cards after we decide that they are not on a young region, not before. The fix also includes improvements to the verify_dirty_region() method which print out which cards were not found dirty.

Reviewed-by: johnc, brutisso
2011-04-29 14:59:04 -04:00
Bengt Rutisson
edb9e105eb 7023747: G1: too strict assert in RefineRecordRefsIntoCSCardTableEntryClosure::do_card_ptr in g1RemSet.cpp
Made sure that the assert looks at ParallelGCThreads.

Reviewed-by: stefank, tonyp, jwilhelm, johnc
2011-03-03 11:35:50 +01:00
Antonios Printezis
3ff554aec1 7014923: G1: code cleanup
Some G1 code cleanup.

Reviewed-by: johnc, jcoomes, jwilhelm
2011-03-04 17:13:19 -05:00
John Cuthbertson
3373070e7f 6923430: G1: assert(res != 0,"This should have worked.")
7007446: G1: expand the heap with a single step, not one region at a time

Changed G1CollectedHeap::expand() to expand the committed space by calling VirtualSpace::expand_by() once rather than for every region in the expansion amount. This allows the success or failure of the expansion to be determined before creating any heap regions. Introduced a develop flag G1ExitOnExpansionFailure (false by default) that, when true, will exit the VM if the expansion of the committed space fails. Finally G1CollectedHeap::expand() returns a status back to it's caller so that the caller knows whether to attempt the allocation.

Reviewed-by: brutisso, tonyp
2011-02-02 10:41:20 -08:00
Stefan Karlsson
8006fe8f75 6989984: Use standard include model for Hospot
Replaced MakeDeps and the includeDB files with more standardized solutions.

Reviewed-by: coleenp, kvn, kamg
2010-11-23 13:22:55 -08:00
John Cuthbertson
e5344b854c 6978187: G1: assert(ParallelGCThreads> 1 || n_yielded() == _hrrs->occupied()) strikes again
An evacuation failure while copying the roots caused an object, A, to be forwarded to itself. During the subsequent RSet updating a reference to A was processed causing the reference to be added to the RSet of A's heap region. As a result of adding to the remembered set we ran into the issue described in 6930581 - the sparse table expanded and the RSet scanning code walked the cards in one instance of RHashTable (_cur) while the occupied() counts the cards in the expanded table (_next).

Reviewed-by: tonyp, iveresov
2010-11-16 14:07:33 -08:00
John Cuthbertson
02bad20969 6971296: G1: simplify G1RemSet class hierarchy
Remove G1RemSet base class and StupidG1RemSet class; rename HRInto_G1RemSet to just G1RemSet.

Reviewed-by: ysr, tonyp
2010-10-12 09:36:48 -07:00
Jon Masamitsu
28e56b8970 6984287: Regularize how GC parallel workers are specified
Associate number of GC workers with the workgang as opposed to the task.

Reviewed-by: johnc, ysr
2010-09-20 14:38:38 -07:00
John Cuthbertson
f8eed77f36 6930581: G1: assert(ParallelGCThreads > 1 || n_yielded() == _hrrs->occupied(),"Should have yielded all the .
During RSet updating, when ParallelGCThreads is zero, references that point into the collection set are added directly the referenced region's RSet. This can cause the sparse table in the RSet to expand. RSet scanning and the "occupied" routine will then operate on different instances of the sparse table causing the assert to trip. This may also cause some cards added post expansion to be missed during RSet scanning. When ParallelGCThreads is non-zero such references are recorded on the "references to be scanned" queue and the card containing the reference is recorded in a dirty card queue for use in the event of an evacuation failure. Employ the parallel code in the serial case to avoid expanding the RSets of regions in the collection set.

Reviewed-by: iveresov, ysr, tonyp
2010-08-06 10:17:21 -07:00
John Cuthbertson
3a2b2b4fd8 6814437: G1: remove the _new_refs array
The per-worker _new_refs array is used to hold references that point into the collection set. It is populated during RSet updating and subsequently processed. In the event of an evacuation failure it processed again to recreate the RSets of regions in the collection set. Remove the per-worker _new_refs array by processing the references directly. Use a DirtyCardQueue to hold the cards containing the references so that the RSets of regions in the collection set can be recreated when handling an evacuation failure.

Reviewed-by: iveresov, jmasa, tonyp
2010-08-02 12:51:43 -07:00
John Cuthbertson
5c3da1ee7e 6956639: G1: assert(cached_ptr != card_ptr) failed: shouldn't be, concurrentG1Refine.cpp:307
During concurrent refinment, filter cards in young regions after it has been determined that the region has been allocated from and the young type of the region has been set.

Reviewed-by: iveresov, tonyp, jcoomes
2010-07-19 11:06:34 -07:00
Antonios Printezis
3e2cf1a294 6946048: G1: improvements to +PrintGCDetails output
Small improvements to G1's PrintGCDetails output. It also includes minor formatting details.

Reviewed-by: ysr, johnc
2010-04-22 15:20:16 -04:00
Erik Trimble
ba7c173659 6941466: Oracle rebranding changes for Hotspot repositories
Change all the Sun copyrights to Oracle copyright

Reviewed-by: ohair
2010-05-27 19:08:38 -07:00
Antonios Printezis
b5c83abcd4 6928059: G1: command line parameter renaming
Rename G1 parameters to make them more consistent.

Reviewed-by: jmasa, johnc
2010-02-23 23:13:23 -05:00
Igor Veresov
52b92d5593 6923991: G1: improve scalability of RSet scanning
Implemented block-based work stealing. Moved copying during the rset scanning phase to the main copying phase. Made the size of rset table depend on the region size.

Reviewed-by: apetrusenko, tonyp
2010-02-11 15:52:19 -08:00