546 Commits

Author SHA1 Message Date
Vladimir Kozlov
cc18a50e59 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
Added new product ObjectAlignmentInBytes flag to control object alignment.

Reviewed-by: twisti, ysr, iveresov
2010-05-27 18:01:56 -07:00
John Cuthbertson
9936975b96 6941378: G1: change default value of G1UseFixedWindowMMUTracker to true
Rather than changing the default value of the G1UseFixedWindowMMUTracker, the flag and associated guarantee have been removed.

Reviewed-by: jcoomes, tonyp, ysr
2010-05-24 17:11:22 -07:00
John Coomes
8a34049f04 Merge 2010-05-20 08:32:11 -07:00
John Coomes
04b4d79094 6951319: enable solaris builds using Sun Studio 12 update 1
Reviewed-by: kamg, ysr, dholmes, johnc
2010-05-18 11:02:18 -07:00
Y. Srinivas Ramakrishna
f8643be266 6948539: CMS+UseCompressedOops: placement of cms_free bit interferes with promoted object link
When using compressed oops, use compressed promoted pointers in b63:b31 of the mark word, so as not to interfere with the CMS "freeness bit" at b7. Updated mark-word layout documentation.

Reviewed-by: minqi, poonam, jmasa, coleenp
2010-05-17 00:47:28 -07:00
Andrey Petrusenko
0d3978019b 6921317: (partial) G1: assert(top() == bottom() || zfs == Allocated,"Region must be empty, or we must be setting it to
Extended the failing assertion with the new message format to get more data.

Reviewed-by: tonyp
2010-05-14 10:28:46 -07:00
Erik Trimble
10da52364f Merge 2010-05-13 17:10:32 -07:00
Erik Trimble
8878667a36 Merge 2010-05-13 14:35:14 -07:00
Phil Race
db63a9aa55 6931180: Migration to recent versions of MS Platform SDK
6951582: Build problems on win64

Changes to enable building JDK7 with Microsoft Visual Studio 2010

Reviewed-by: ohair, art, ccheung, dcubed
2010-05-11 14:35:43 -07:00
Y. Srinivas Ramakrishna
4715f32101 6951188: CMS: move PromotionInfo into its own file
Moved PromotionInfo and friends into new files promotionInfo.{h,c}pp from their previous compactibleFreeListSpace.{h,c}pp home.

Reviewed-by: apetrusenko
2010-05-10 12:31:52 -07:00
Y. Srinivas Ramakrishna
d14cf2e13c 6919638: CMS: ExplicitGCInvokesConcurrent misinteracts with gc locker
GC-locker induced concurrent full gc should be asynchronous; policy now controlled by a separate flag, which defaults to false.

Reviewed-by: jmasa
2010-05-03 20:19:05 -07:00
Y. Srinivas Ramakrishna
762f60d343 6948537: CMS: BOT walkers observe out-of-thin-air zeros on sun4v sparc/CMT
On sun4v/CMT avoid use of memset() in BOT updates so as to prevent concurrent BOT readers from seeing the phantom zeros arising from memset()'s use of BIS.

Reviewed-by: jmasa, johnc, minqi, poonam, tonyp
2010-05-03 10:24:51 -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
Antonios Printezis
a6d2266193 6949307: G1: raise a vm error, do not core dump, if target pause time and target interval are inconsistent
First, change the guarantee to raising a vm error. Second, set the interval dynamically, and based on the pause time target, if it is not set explicitly.

Reviewed-by: ysr, johnc
2010-05-07 13:14:41 -04:00
John Cuthbertson
b1867e0dd5 6819061: G1: eliminate serial Other times that are proportional to the collection set length
6871109: G1: remove the concept of the scan only prefix

Removed scan only regions and associated code. The young portion of the collection set is now constructed incrementally - when a young region is retired as the current allocation region it is added to the collection set.

Reviewed-by: apetrusenko, iveresov, tonyp
2010-04-22 10:02:38 -07:00
Kevin Walls
db6aad1e4e Merge 2010-04-19 05:40:21 -07:00
Kevin Walls
d132f8e1c6 6897143: Stress test crashes during HeapInspection using ParallelGC
Ensure_parsability() must be called even if GC_locker prevents GC.

Reviewed-by: ysr, chrisphi
2010-04-16 17:36:37 +01:00
Andrey Petrusenko
99cdb36eca 6942253: G1: replace G1ParallelGCAllocBufferSize with YoungPLABSize and OldPLABSize
Replaces the G1-specific parameter with the existing ones that are used by the other GCs (YoungPLABSize and OldPLABSize)

Reviewed-by: tonyp, johnc
2010-04-16 08:48:16 -07:00
Antonios Printezis
89dcd228da 6939027: G1: assertion failure during the concurrent phase of cleanup
The outgoing region map is not maintained properly and it's causing an assert failure. Given that we don't actually use it, I'm removing it. I'm piggy-backing a small change on this which removes a message that it's printed before a Full GC when DisableExplicitGC is set.

Reviewed-by: apetrusenko, ysr
2010-04-15 18:45:30 -04:00
John Cuthbertson
6110c052aa 6943926: G1: Integer overflow during heap region verification
The expression that calculates the live bytes for a heap region can overflow for a suitably large humongous region/object. Cache the object size in a suitably sized local variable so that the expression is converted to a wider type.

Reviewed-by: tonyp, jmasa, iveresov, apetrusenko
2010-04-15 15:52:55 -07:00
Antonios Printezis
9b4fc8fc23 6937142: G1: improvements to debugging output (S-M)
Various fixes to the G1 debugging output.

Reviewed-by: johnc, iveresov
2010-03-30 15:43:03 -04:00
Jon Masamitsu
f5197d0d36 6858496: Clear all SoftReferences before an out-of-memory due to GC overhead limit
Ensure a full GC that clears SoftReferences before throwing an out-of-memory

Reviewed-by: ysr, jcoomes
2010-04-13 13:52:10 -07:00
John Cuthbertson
b98560aa10 6940894: G1: assert(new_obj != 0 || ... "should be forwarded") for compaction tests
Humongous regions may contain multiple objects as a result of being retained as to-space from a previous GC and then re-used as to-space after being tagged as humongous. These changes include a check that causes retained to-space regions that are now tagged as humongous to be disregarded and a new to-space region allocated.

Reviewed-by: tonyp, iveresov
2010-04-07 11:43:53 -07:00
Antonios Printezis
719e7f0926 6909756: G1: guarantee(G1CollectedHeap::heap()->mark_in_progress(),"Precondition.")
Make sure that two marking cycles do not overlap, i.e., a new one can only start after the concurrent marking thread finishes all its work. In the fix I piggy-back a couple of minor extra fixes: some general code reformatting for consistency (only around the code I modified), the removal of a field (G1CollectorPolicy::_should_initiate_conc_mark) which doesn't seem to be used at all (it's only set but never read), as well as moving the "is GC locker active" test earlier into the G1 pause / Full GC and using a more appropriate method for it.

Reviewed-by: johnc, jmasa, jcoomes, ysr
2010-04-06 10:59:45 -04:00
Antonios Printezis
2e3363d109 6940310: G1: MT-unsafe calls to CM::region_stack_push() / CM::region_stack_pop()
Calling the methods region_stack_push() and region_stack_pop() concurrent is not MT-safe. The assumption is that we will only call region_stack_push() during a GC pause and region_stack_pop() during marking. Unfortunately, we also call region_stack_push() during marking which seems to be introducing subtle marking failures. This change introduces lock-based methods for pushing / popping to be called during marking.

Reviewed-by: iveresov, johnc
2010-04-05 12:19:22 -04:00
Antonios Printezis
9545c0521e 6677708: G1: re-enable parallel RSet updating and scanning
Enable parallel RSet updating and scanning.

Reviewed-by: iveresov, jmasa
2010-04-02 12:10:08 -04:00
Antonios Printezis
972acdab81 6937160: G1: should observe GCTimeRatio
Remove the G1GCPercent parameter, that specifies the desired GC overhead percentage in G1, and observe the GCTimeRatio parameter instead.

Reviewed-by: jmasa, johnc
2010-03-30 15:36:55 -04:00
Antonios Printezis
35f23f97b0 6935821: G1: threads created during marking do not active their SATB queues
Newly-created threads always had the active field of their SATB queue initialized to false, even if they were created during marking. As a result, updates from threads created during a marking cycle were never enqueued and never processed. The fix includes remaining a method from active() to is_active() for readability and naming consistency.

Reviewed-by: ysr, johnc
2010-03-18 12:14:59 -04:00
John Coomes
aa951c36cb 6935839: excessive marking stack growth during full gcs
Process one item at a time from the objarray stack/queue

Reviewed-by: apetrusenko, tonyp
2010-03-18 13:31:51 -07:00
Andrey Petrusenko
2fa0d00635 6921710: G1: assert(new_finger >= _finger && new_finger < _region_limit,"invariant")
If CM task was aborted while scanning the last object of the specified region and the size of that object is equal to bitmap's granularity then the next offset would be equal or over the region limit which is exactly what the assertion states.

Reviewed-by: ysr, tonyp, jmasa
2010-03-18 01:48:28 -07:00
John Cuthbertson
e9f77f7ec1 6755988: G1: assert(new_obj != 0 || ... "should be forwarded")
A TLAB became large enough to be considered a humongous object allowing multiple objects to be allocated in a humongous region, which violates a basic assumption about humongous regions. The changes ensure that TLABs cannot be regarded as humongous.

Reviewed-by: iveresov, tonyp
2010-03-11 11:44:43 -08:00
John Coomes
4f82340476 4396719: Mark Sweep stack overflow on deeply nested Object arrays
Use an explicit stack for object arrays and process them in chunks.

Reviewed-by: iveresov, apetrusenko
2010-03-03 14:48:26 -08:00
Jon Masamitsu
5fdec09798 6910182: CMS: assert(_cursor[j] == _survivor_plab_array[j].end(),"Ctl pt invariant")
Calculation of the slicing of survivor spaces for MT was incorrect.

Reviewed-by: ysr
2010-03-03 08:10:41 -08:00
Antonios Printezis
1eb12e87a7 6928065: G1: use existing command line parameters to set the young generation size
See synopsis

Reviewed-by: johnc, jmasa
2010-02-24 14:56:20 -05:00
Jon Masamitsu
f254745228 6928081: G1: rename parameters common with CMS
Rename marking stack sizing flags to be common between G1 and CMS

Reviewed-by: ysr, tonyp
2010-02-24 07:00:33 -08:00
Antonios Printezis
77b2dfce1d 6928073: G1: use existing command line parameters for marking cycle initiation
Replace the combination of the G1SteadyStateUsed / G1SteadyStateUsedDelta parameteres to decide the marking initiation threshold and instead use InitiatingHeapOccupancyPercent.

Reviewed-by: ysr, johnc
2010-02-23 23:14:34 -05: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
Antonios Printezis
a88853347f 6802453: G1: hr()->is_in_reserved(from),"Precondition."
The operations of re-using a RSet component and expanding the same RSet component were not mutually exlusive, and this could lead to RSets getting corrupted and entries being dropped.

Reviewed-by: iveresov, johnc
2010-02-08 14:23:01 -05:00
John Cuthbertson
7f9ba03c32 6914402: G1: assert(!is_young_card(cached_ptr),"shouldn't get a card in young region")
Invalid assert. Filter cards evicted from the card count cache instead.

Reviewed-by: apetrusenko, tonyp
2010-02-02 18:39:50 -08:00
Y. Srinivas Ramakrishna
c61ab190cf 6904516: More object array barrier fixes, following up on 6906727
Fixed missing pre-barrier calls for G1, modified C1 to call pre- and correct post-barrier interfaces, deleted obsolete interface, (temporarily) disabled redundant deferred barrier in BacktraceBuilder.

Reviewed-by: coleenp, jmasa, kvn, never
2010-02-01 17:29:01 -08:00
Y. Srinivas Ramakrishna
342a620a7f 6920090: G1: Disable ReduceInitialCardMarks at least until 6920109 is fixed
G1 now answers "no" to the query can_elide_initializing_store_barrier() in the product build. A debug flag allows alternate behaviour in debug builds.

Reviewed-by: iveresov, tonyp
2010-01-26 16:52:29 -08:00
Jon Masamitsu
b2ed547ec0 6895236: CMS: cmsOopClosures.inline.hpp:43 assert(..., "Should remember klasses in this context")
Adjust assertion checking for ExplicitGCInvokesConcurrentAndUnloadsClasses as a reason for class unloading

Reviewed-by: ysr
2010-01-21 11:33:32 -08:00
John Cuthbertson
29a13dc105 6915005: G1: Hang in PtrQueueSet::completed_buffers_list_length with gcl001
When enqueuing a completed PtrQueue buffer, cache a local pointer to the buffer and clear the field in the PtrQueue prior to unlocking the mutex referenced by the _lock field and pass the cached local value to the enqueuing routine. This will prevent the same completed buffer being enqueued multiple times, which causes the hang.

Reviewed-by: ysr
2010-01-13 15:45:47 -08:00
Y. Srinivas Ramakrishna
331512606a 6896647: card marks can be deferred too long
Deferred card marks are now flushed during the gc prologue. Parallel[Scavege,OldGC] and SerialGC no longer defer card marks generated by COMPILER2 as a result of ReduceInitialCardMarks. For these cases, introduced a diagnostic option to defer the card marks, only for the purposes of testing and diagnostics. CMS and G1 continue to defer card marks. Potential performance concern related to single-threaded flushing of deferred card marks in the gc prologue will be addressed in the future.

Reviewed-by: never, johnc
2010-01-13 15:26:39 -08:00
Jon Masamitsu
69342d1472 6912018: CMS: guarantee(head() != 0,"The head of the list cannot be NULL")
Block too small to split was not correctly putback to free lists.

Reviewed-by: ysr
2010-01-07 08:14:45 -08:00
Y. Srinivas Ramakrishna
272a6d47bb 6631166: CMS: better heuristics when combatting fragmentation
Autonomic per-worker free block cache sizing, tunable coalition policies, fixes to per-size block statistics, retuned gain and bandwidth of some feedback loop filters to allow quicker reactivity to abrupt changes in ambient demand, and other heuristics to reduce fragmentation of the CMS old gen. Also tightened some assertions, including those related to locking.

Reviewed-by: jmasa
2009-12-23 09:23:54 -08:00
Igor Veresov
1383dc414b 6862387: tune concurrent refinement further
Reworked the concurrent refinement: threads activation, feedback-based threshold adjustment, other miscellaneous fixes.

Reviewed-by: apetrusenko, tonyp
2009-12-16 15:12:51 -08:00
Jon Masamitsu
1bed5a3ded Merge 2009-12-11 09:30:48 -08:00
Jon Masamitsu
c5b5e2e3a7 Merge 2009-12-11 08:39:30 -08:00