273 Commits

Author SHA1 Message Date
John Cuthbertson
cab4072f8d 7095243: Disambiguate ReferenceProcessor::_discoveredSoftRefs
Add a new, separate, pointer to the base of the array of discovered reference lists and use this new pointer in places where we iterate over the entire array.

Reviewed-by: ysr, brutisso
2011-10-17 09:57:41 -07:00
Antonios Printezis
81bdd2ccc6 7088680: G1: Cleanup in the G1CollectorPolicy class
Removed unused fields and methods, removed the G1CollectoryPolicy_BestRegionsFirst class and folded its functionality into the G1CollectorPolicy class.

Reviewed-by: ysr, brutisso, jcoomes
2011-10-14 11:12:24 -04:00
Antonios Printezis
d1c6787aa1 7098085: G1: partially-young GCs not initiated under certain circumstances
Reviewed-by: ysr, brutisso
2011-10-13 13:54:29 -04:00
Y. Srinivas Ramakrishna
8fbb0e0f4a Merge 2011-10-10 08:40:34 -07:00
Y. Srinivas Ramakrishna
a7dc867057 7095236: G1: _markedRegions never contains NULL regions
Removed the code for skipping over NULL regions in _markedRegions, replacing it with an assertion that a NULL region is never encountered; removed dead methods, remove() and remove_region(), and inlined a simplified addRegion() directly into fillCache().

Reviewed-by: brutisso, tonyp
2011-10-06 18:56:47 -07:00
Antonios Printezis
78662d3b17 Merge 2011-10-06 13:28:09 -04:00
John Cuthbertson
6513930e7a 7095194: G1: HeapRegion::GrainBytes, GrainWords, and CardsPerRegion should be size_t
Declare GrainBytes, GrainWords, and CardsPerRegion as size_t.

Reviewed-by: jcoomes, tonyp, jmasa
2011-10-05 08:44:10 -07:00
Bengt Rutisson
cfe349b1e0 7005808: G1: re-enable ReduceInitialCardMarks for G1
Remove the extra guard to allow G1 to use ReduceInitialCardMarks

Reviewed-by: jmasa, tonyp, johnc, ysr
2011-09-28 08:21:30 +02:00
Kurt Miller
95c56a472b 7089790: integrate bsd-port changes
Co-authored-by: Greg Lewis <glewis@eyesbeyond.com>
Co-authored-by: Jung-uk Kim <jkim@freebsd.org>
Co-authored-by: Christos Zoulas <christos@zoulas.com>
Co-authored-by: Landon Fuller <landonf@plausible.coop>
Co-authored-by: The FreeBSD Foundation <board@freebsdfoundation.org>
Co-authored-by: Michael Franz <mvfranz@gmail.com>
Co-authored-by: Roger Hoover <rhoover@apple.com>
Co-authored-by: Alexander Strange <astrange@apple.com>
Reviewed-by: kvn, twisti, jrose
2011-09-25 16:03:29 -07:00
Antonios Printezis
7d850203b9 7089625: G1: policy for how many old regions to add to the CSet (when young gen is fixed) is broken
When refactoring the code for a previous fix, a condition was not correctly negated which prevents the G1 policy from adding the correct number of old regions to the CSet when the young gen size is fixed. The changeset also fixes a small syntactical issue in g1ErgoVerbose.hpp which is causing compiler warnings.

Reviewed-by: brutisso, ysr
2011-09-13 12:40:14 -04:00
Antonios Printezis
75685a273a 7097048: G1: extend the G1 SA changes to print per-heap space information
Reviewed-by: brutisso, johnc
2011-10-03 19:04:14 -04: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
bbfe9c6e25 7086533: G1: assert(!_g1->is_obj_dead(obj)): We should not be preserving dead objs: g1CollectedHeap.cpp:3835
Some objects may not be marked in the event of an evacuation failure in a partially young GC, during a marking cycle. Avoid this situation by not allowing partially young GCs during a marking cycle.

Reviewed-by: tonyp, ysr, brutisso
2011-09-28 10:36:31 -07:00
Antonios Printezis
55c503aea2 7075646: G1: fix inconsistencies in the monitoring data
Fixed a few inconsistencies in the monitoring data, in particular when reported from jstat.

Reviewed-by: jmasa, brutisso, johnc
2011-09-23 16:07:49 -04: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
70bb8e788e 7092238: G1: Uninitialized field gc_efficiency in G1PrintRegionLivenessInfo output
Reviewed-by: jcoomes, johnc
2011-09-22 07:18:51 -04:00
John Cuthbertson
08bdb35a29 7092245: G1: Wrong format specifier in G1PrintRegionLivenessInfo header output
Cast HeapRegion::GrainBytes to size_t in output statement.

Reviewed-by: ysr, brutisso, pbk, tonyp
2011-09-21 15:24:07 -07:00
Antonios Printezis
0f7ff53cce 7091032: G1: assert failure when NewRatio is used
The desired min / max heap sizes are miscalculated at initialization when NewRatio is used. The changeset also includes an additional small change to turn a print statement into a warning.

Reviewed-by: johnc, jmasa, ysr, brutisso
2011-09-21 13:36:37 -04:00
John Cuthbertson
2f83b52706 7068215: G1: Print reference processing time during remark
Displays the elapsed time taken to perform reference processing during remark as part of the PrintGCDetails output.

Reviewed-by: ysr
2011-09-21 10:04:45 -07:00
John Cuthbertson
3ae9021b59 7092412: G1: Some roots not marked during an initial mark that gets an evacuation failure
As a result of the changes for 7080389, an evacuation failure during an initial mark pause may result in some root objects not being marked. Pass whether the caller is a root scanning closure into the evacuation failure handling code so that the thread that successfully forwards an object to itself also marks the object.

Reviewed-by: ysr, brutisso, tonyp
2011-09-20 15:39:17 -07:00
Antonios Printezis
95832db2e5 7059019: G1: add G1 support to the SA
Extend the SA to recognize the G1CollectedHeap and implement any code that's needed by our serviceability tools (jmap, jinfo, jstack, etc.) that depend on the SA.

Reviewed-by: never, poonam, johnc
2011-09-20 09:59:59 -04:00
Antonios Printezis
1a9d9b84f8 7087717: G1: make the G1PrintRegionLivenessInfo parameter diagnostic
Reviewed-by: brutisso, ysr
2011-09-09 05:20:58 -04:00
Bengt Rutisson
0be11c915c 6929868: G1: introduce min / max young gen size bounds
Make G1 handle young gen size command line flags more consistently

Reviewed-by: tonyp, jwilhelm
2011-09-08 16:29:41 +02:00
Antonios Printezis
d96de580b6 7084509: G1: fix inconsistencies and mistakes in the young list target length calculations
Fixed inconsistencies and mistakes in the young list target length calculations so that a) the calculated target length is optimal (before, it was not), b) other parameters like max survivor size and max gc locker eden expansion are always consistent with the calculated target length (before, they were not always), and c) the resulting target length was always bound by desired min and max values (before, it was not).

Reviewed-by: brutisso, johnc
2011-09-08 05:16:49 -04:00
Y. Srinivas Ramakrishna
ec13301b32 Merge 2011-09-07 15:00:13 -07:00
Antonios Printezis
24eb07061e 7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
It introduces ergonomic decision logging in G1 for the following heuristics: heap sizing, collection set construction, concurrent cycle initiation, and partially-young GC start/end. The code has a bit of refactoring in a few places to make the decision logging possible. It also replaces alternative ad-hoc logging that we have under different parameters and switches (G1_DEBUG, G1PolicyVerbose).

Reviewed-by: johnc, ysr
2011-09-07 12:21:23 -04:00
Stefan Karlsson
5b6ba4e611 7085906: Replace the permgen allocated sentinelRef with a self-looped end
Remove the sentinelRef and let the last Reference in a discovered chain point back to itself.

Reviewed-by: ysr, jmasa
2011-09-01 16:18:17 +02:00
John Cuthbertson
6c8c4fb321 7066841: remove MacroAssembler::br_on_reg_cond() on sparc
Remove the macro assembler routine br_on_reg_cond() and replace the remaining calls to that routine with an equivalent.

Reviewed-by: kvn, iveresov
2011-08-31 10:16:02 -07:00
John Cuthbertson
1bec3a1bd3 7080389: G1: refactor marking code in evacuation pause copy closures
Refactor code marking code in the evacuation pause copy closures so that an evacuated object is only marked by the thread that successfully copies it.

Reviewed-by: stefank, brutisso, tonyp
2011-08-29 10:13:06 -07:00
Y. Srinivas Ramakrishna
4df87be52f Merge 2011-08-22 23:57:10 -07:00
Y. Srinivas Ramakrishna
3af2ea16d6 6810861: G1: support -XX:+{PrintClassHistogram,HeapDump}{Before,After}FullGC
Call {pre,post}_full_gc_dump() before and after a STW full gc of G1CollectedHeap. Also adjusted the prefix message, including the addition of missing whitespace.

Reviewed-by: brutisso, tonyp
2011-08-22 12:30:06 -07:00
Antonios Printezis
2cbacf440a 7081064: G1: remove develop params G1FixedSurvivorSpaceSize, G1FixedTenuringThreshold, and G1FixedEdenSize
Remove three develop parameters we don't use.

Reviewed-by: brutisso, jwilhelm
2011-08-22 10:16:33 -04:00
Bengt Rutisson
6fdb1414fa 6814390: G1: remove the concept of non-generational G1
Removed the possibility to turn off generational mode for G1.

Reviewed-by: johnc, ysr, tonyp
2011-08-19 09:30:59 +02:00
David Katleman
079c89189f 7044486: open jdk repos have files with incorrect copyright headers, which can end up in src bundles
Reviewed-by: ohair, trims
2011-05-25 13:31:51 -07:00
Antonios Printezis
f482091133 7039627: G1: avoid BOT updates for survivor allocations and dirty survivor regions incrementally
Refactor the allocation code during GC to use the G1AllocRegion abstraction. Use separate subclasses of G1AllocRegion for survivor and old regions. Avoid BOT updates and dirty survivor cards incrementally for the former.

Reviewed-by: brutisso, johnc, ysr
2011-08-12 11:31:06 -04:00
John Cuthbertson
f7d3d2b63e 7069863: G1: SIGSEGV running SPECjbb2011 and -UseBiasedLocking
Align the reserved size of the heap and perm to the heap region size to get a preferred heap base that is aligned to the region size, and call the correct heap reservation constructor. Also add a check in the heap reservation code that the reserved space starts at the requested address (if any).

Reviewed-by: kvn, ysr
2011-08-02 12:13:13 -07:00
John Cuthbertson
144fb9dc25 7068240: G1: Long "parallel other time" and "ext root scanning" when running specific benchmark
In root processing, move the scanning of the reference processor's discovered lists to before RSet updating and scanning. When scanning the reference processor's discovered lists, use a buffering closure so that the time spent copying any reference object is correctly attributed. Also removed a couple of unused and irrelevant timers.

Reviewed-by: ysr, jmasa
2011-08-01 10:04:28 -07:00
Antonios Printezis
4597e4c7a8 7049999: G1: Make the G1PrintHeapRegions output consistent and complete
Extend and make more consistent the output from the G1PrintHeapRegions flag.

Reviewed-by: johnc, jmasa
2011-06-24 12:38:49 -04: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
7ceee7642b 7055073: G1: code cleanup in the concurrentMark.* files
Only cosmetic changes to make the concurrentMark.* more consistent, code-style-wise, with the rest of the codebase.

Reviewed-by: johnc, ysr
2011-06-20 22:03:13 -04:00
Antonios Printezis
937d6ded89 6994322: Remove the is_tlab and is_noref / is_large_noref parameters from the CollectedHeap
Remove two unused parameters from the mem_allocate() method and update its uses accordingly.

Reviewed-by: stefank, johnc
2011-06-16 15:51:57 -04:00
John Cuthbertson
43d9e95a42 7045751: G1: +ExplicitGCInvokesConcurrent causes excessive single region evacuation pauses
When ExplicitGCInvokesConcurrent is enabled, do not perform an evacuation pause if a marking cycle is already in progress and block the requesting thread until the marking cycle completes.

Reviewed-by: tonyp, ysr
2011-06-15 10:18:04 -07:00
John Cuthbertson
b94d0b830c 7004681: G1: Extend marking verification to Full GCs
Perform a heap verification after the first phase of G1's full GC using objects' mark words to determine liveness. The third parameter of the heap verification routines, which was used in G1 to determine which marking bitmap to use in liveness calculations, has been changed from a boolean to an enum with values defined for using the mark word, and the 'prev' and 'next' bitmaps.

Reviewed-by: tonyp, ysr
2011-06-14 11:01:10 -07:00
Antonios Printezis
015e872efe 7046558: G1: concurrent marking optimizations
Some optimizations to improve the concurrent marking phase: specialize the main oop closure, make sure a few methods in the fast path are properly inlined, a few more bits and pieces, and some cosmetic fixes.

Reviewed-by: stefank, johnc
2011-06-14 10:33:43 -04:00
Antonios Printezis
9332c44d84 7045330: G1: Simplify/fix the HeapRegionSeq class
7042285: G1: native memory leak during humongous object allocation
6804436: G1: heap region indices should be size_t

A series of fixes and improvements to the HeapRegionSeq class: a) replace the _regions growable array with a standard C array, b) avoid de-allocating / re-allocating HeapRegion instances when the heap shrinks / grows (fix for 7042285), c) introduce fast method to map address to HeapRegion via a "biased" array pointer, d) embed the _hrs object in G1CollectedHeap, instead of pointing to it via an indirection, e) assume that all the regions added to the HeapRegionSeq instance are contiguous, f) replace int's with size_t's for indexes (and expand that to HeapRegion as part of 6804436), g) remove unnecessary / unused methods, h) rename a couple of fields (_alloc_search_start and _seq_bottom), i) fix iterate_from() not to always start from index 0 irrespective of the region passed to it, j) add a verification method to check the HeapRegionSeq assumptions, k) always call the wrappers for _hrs.iterate(), _hrs_length(), and _hrs.at() from G1CollectedHeap, not those methods directly, and l) unify the code that expands the sequence (by either re-using or creating a new HeapRegion) and make it robust wrt to a HeapRegion allocation failing.

Reviewed-by: stefank, johnc, brutisso
2011-06-10 13:16:40 -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
507bff762b 7032531: G1: enhance GC logging to include more accurate eden / survivor size transitions
This changeset extends the logging information generated by +PrintGCDetails to also print out separate size transitions for the eden, survivors, and old regions.

Reviewed-by: ysr, brutisso
2011-06-08 15:31:51 -04:00
John Cuthbertson
95548aa291 7041440: G1: assert(obj->is_oop_or_null(true )) failed: Error #
During an evacuation pause clear the region fields of any concurrent marking task whose local finger points into the collection set as the values in the region fields will become stale. Clearing these fields causes the concurrent mark task to claim a new region when marking restarts after the pause.

Reviewed-by: tonyp, iveresov
2011-05-17 00:56:01 -07:00
Jon Masamitsu
6819e3739e 7041789: 30% perf regression with c2/arm following 7017732
Implement a more accurate is_scavengable()

Reviewed-by: stefank, jcoomes, ysr
2011-05-03 10:30:34 -07:00
Frederic Parain
b38843c8d9 7036199: Adding a notification to the implementation of GarbageCollectorMXBeans
Add a notification to the GarbageCollectorMXBeans

Reviewed-by: acorn, mchung
2011-05-12 10:30:11 -07:00