Commit graph

60 commits

Author SHA1 Message Date
Keith McGuigan
272d7eaffc 7012505: BreakpointWithFullGC.sh fails with Internal Error (src/share/vm/oops/methodOop.cpp:220)
Rebuild breakpoint cache at gc_epilogue instead of during oops_do

Reviewed-by: dcubed, ysr, coleenp
2011-01-19 13:51:53 -08:00
John Cuthbertson
a484211e0b Merge 2011-01-13 17:19:21 -08:00
Y. Srinivas Ramakrishna
597a0cd214 7011940: iCMS: SIGSEGV in SweepClosure::do_already_free_chunk(FreeChunk*)+0x360
Revert a (relaxed version of the) bounds-check that was incorrectly removed in the fix for 7008136.

Reviewed-by: jmasa, johnc
2011-01-13 11:33:56 -08:00
Keith McGuigan
ae65c6240f 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
Make JvmtiGCMark safe to run non-safepoint and instrument CMS

Reviewed-by: ysr, dcubed
2011-01-10 17:14:53 -05:00
Y. Srinivas Ramakrishna
d921d72f20 7008136: CMS: assert((HeapWord*)nextChunk <= _limit) failed: sweep invariant
The recorded _sweep_limit may not necessarily remain a block boundary as the old generation expands during a concurrent cycle. Terminal actions inside the sweep closure need to be aware of this as they cross over the limit.

Reviewed-by: johnc, minqi
2011-01-06 23:50:02 -08:00
Y. Srinivas Ramakrishna
544b475fc5 7001033: assert(gch->gc_cause() == GCCause::_scavenge_alot || !gch->incremental_collection_failed())
7002546: regression on SpecJbb2005 on 7b118 comparing to 7b117 on small heaps

Relaxed assertion checking related to incremental_collection_failed flag to allow for ExplicitGCInvokesConcurrent behaviour where we do not want a failing scavenge to bail to a stop-world collection. Parameterized incremental_collection_will_fail() so we can selectively use, or not use, as appropriate, the statistical prediction at specific use sites. This essentially reverts the scavenge bail-out logic to what it was prior to some recent changes that had inadvertently started using the statistical prediction which can be noisy in the presence of bursty loads. Added some associated verbose non-product debugging messages.

Reviewed-by: johnc, tonyp
2010-12-07 21:55:53 -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
Y. Srinivas Ramakrishna
cbc7f8756a 6896603: CMS/GCH: collection_attempt_is_safe() ergo should use more recent data
Deprecated HandlePromotionFailure, removing the ability to turn off that feature, did away with one epoch look-ahead when deciding if a scavenge is likely to fail, relying on current data.

Reviewed-by: jmasa, johnc, poonam
2010-10-23 23:03:49 -07:00
Y. Srinivas Ramakrishna
cf2163334f 6692906: CMS: parallel concurrent marking may be prone to hanging or stalling mutators for periods of time
Inserted missing yield(check)s in closures used during the work-stealing phase of parallel concurrent marking, a missing synchronous yield-request in the cms perm gen allocation path, and a terminator-terminator for the offer_termination invocation that monitors the yield status of the concurrent marking task. Elaborated some documentation comments and made some task queue termination loop flags configurable at start-up to aid debugging in the field.

Reviewed-by: jmasa, johnc, poonam
2010-09-29 16:17:02 -07:00
John Coomes
1cdd538ea5 6423256: GC stacks should use a better data structure
6942771: SEGV in ParScanThreadState::take_from_overflow_stack

Reviewed-by: apetrusenko, ysr, pbk
2010-09-28 15:56:15 -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
Y. Srinivas Ramakrishna
f53d569221 6983930: CMS: Various small cleanups ca September 2010
Fixed comment/documentation typos; converted some guarantee()s to assert()s.

Reviewed-by: jmasa
2010-09-10 17:07:55 -07:00
Y. Srinivas Ramakrishna
fc61f2721e 6977970: CMS: concurrentMarkSweepGeneration.cpp:7947 assert(addr <= _limit) failed: sweep invariant
Allow for the possibility (when the heap is expanding) that the sweep might skip over and past, rather than necessarily step on, the sweep limit determined at the beginning of a concurrent marking cycle.

Reviewed-by: jmasa, tonyp
2010-08-18 11:39:21 -07:00
Y. Srinivas Ramakrishna
77f845359a 6948538: CMS: BOT walkers can fall into object allocation and initialization cracks
GC workers now recognize an intermediate transient state of blocks which are allocated but have not yet completed initialization. blk_start() calls do not attempt to determine the size of a block in the transient state, rather waiting for the block to become initialized so that it is safe to query its size. Audited and ensured the order of initialization of object fields (klass, free bit and size) to respect block state transition protocol. Also included some new assertion checking code enabled in debug mode.

Reviewed-by: chrisphi, johnc, poonam
2010-08-16 15:58:42 -07:00
Kevin Walls
75c23332be Merge 2010-07-31 15:10:59 +01:00
Kevin Walls
5fb46fd5a8 6581734: CMS Old Gen's collection usage is zero after GC which is incorrect
Management code enabled for use by a concurrent collector.

Reviewed-by: mchung, ysr
2010-07-30 22:43:50 +01:00
John Coomes
daf491a814 6962947: shared TaskQueue statistics
Reviewed-by: tonyp, ysr
2010-07-16 21:33:21 -07:00
John R Rose
d6a9b93b5a Merge 2010-06-02 22:45:42 -07: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
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
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
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
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
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
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
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
Jon Masamitsu
bedf908436 6898857: [Regression] -XX:NewRatio with -XX:+UseConcMarkSweepGC causes fatal error
Use CollectorPolicy information instead of MaxNewSize

Reviewed-by: ysr, jcoomes
2009-11-10 11:32:48 -08:00
John R Rose
eb73cf4739 6885169: merge of 4957990 and 6863023 causes conflict on do_nmethods
After mechanically merging changes, some by-hand adjustments are needed.

Reviewed-by: ysr
2009-09-23 23:57:44 -07:00
John R Rose
40d52710f6 Merge 2009-09-23 23:56:15 -07:00
John R Rose
e261aecad8 6863023: need non-perm oops in code cache for JSR 292
Make a special root-list for those few nmethods which might contain non-perm oops.

Reviewed-by: twisti, kvn, never, jmasa, ysr
2009-09-15 21:53:47 -07:00
Y. Srinivas Ramakrishna
c6763b5bad 4957990: Perm heap bloat in JVM
Treat ProfileData in MDO's as a source of weak, not strong, roots. Fixes the bug for stop-world collection -- the case of concurrent collection will be fixed separately.

Reviewed-by: jcoomes, jmasa, kvn, never
2009-09-02 00:04:29 -07:00
Jon Masamitsu
20a43bad21 6798898: CMS: bugs related to class unloading
Override should_remember_klasses() and remember_klass() as needed.

Reviewed-by: ysr, jcoomes
2009-08-24 10:36:31 -07:00
Y. Srinivas Ramakrishna
9611174798 6848641: CMSCollector::_roots_scanning_options should be initialized
The field is now initialized in the constructor.

Reviewed-by: iveresov, jmasa, johnc
2009-06-07 00:27:41 -07:00
Y. Srinivas Ramakrishna
137a679446 6819891: ParNew: Fix work queue overflow code to deal correctly with +UseCompressedOops
When using compressed oops, rather than chaining the overflowed grey objects' pre-images through their klass words, we use GC-worker thread-local overflow stacks.

Reviewed-by: jcoomes, jmasa
2009-03-28 15:47:29 -07:00
Erik Trimble
8d6035660e Merge 2009-03-12 18:16:36 -07:00
Xiomara Jayasena
2be2e027b0 6814575: Update copyright year
Update copyright for files that have been modified in 2009, up to 03/09

Reviewed-by: katleman, tbell, ohair
2009-03-09 13:28:46 -07:00
Christian Thalinger
05d1de7727 6810672: Comment typos
I have collected some typos I have found while looking at the code.

Reviewed-by: kvn, never
2009-02-27 13:27:09 -08:00
Y. Srinivas Ramakrishna
f031c45430 6786503: Overflow list performance can be improved
Avoid overflow list walk in CMS & ParNew when it is unnecessary. Fix a couple of correctness issues, including a C-heap leak, in ParNew at the intersection of promotion failure, work queue overflow and object array chunking. Add stress testing option and related assertion checking.

Reviewed-by: jmasa
2009-01-26 12:47:21 -08:00
Jon Masamitsu
c2ff9781c7 6692899: CMS: many vm.parallel_class_loading tests fail with assert "missing Printezis mark"
The CMS concurrent precleaning and concurrent marking phases should work around classes that are undergoing redefinition.

Reviewed-by: ysr, dcubed
2009-01-11 16:58:24 -08:00
Jon Masamitsu
3474623106 6689653: JMapPerm fails with UseConcMarkSweepIncGC and compressed oops off
Added safe_object_iterate() for use by JMapPerm.

Reviewed-by: tonyp
2009-01-06 07:05:05 -08:00
Y. Srinivas Ramakrishna
16aa57cb4b 6778647: snap(), snap_policy() should be renamed setup(), setup_policy()
Renamed Reference{Policy,Pocessor} methods from snap{,_policy}() to setup{,_policy}()

Reviewed-by: apetrusenko
2008-12-01 23:25:24 -08:00
Y. Srinivas Ramakrishna
7d7cf3f8af 6684579: SoftReference processing can be made more efficient
For current soft-ref clearing policies, we can decide at marking time if a soft-reference will definitely not be cleared, postponing the decision of whether it will definitely be cleared to the final reference processing phase. This can be especially beneficial in the case of concurrent collectors where the marking is usually concurrent but reference processing is usually not.

Reviewed-by: jmasa
2008-11-20 16:56:09 -08:00
Y. Srinivas Ramakrishna
db6bef2c70 6722113: CMS: Incorrect overflow handling during precleaning of Reference lists
When we encounter marking stack overflow during precleaning of Reference lists, we were using the overflow list mechanism, which can cause problems on account of mutating the mark word of the header because of conflicts with mutator accesses and updates of that field. Instead we should use the usual mechanism for overflow handling in concurrent phases, namely dirtying of the card on which the overflowed object lies. Since precleaning effectively does a form of discovered list processing, albeit with discovery enabled, we needed to adjust some code to be correct in the face of interleaved processing and discovery.

Reviewed-by: apetrusenko, jcoomes
2008-11-20 12:27:41 -08:00
Y. Srinivas Ramakrishna
d9929c525b Merge 2008-08-27 11:20:46 -07:00
Y. Srinivas Ramakrishna
aa6165d767 6722116: CMS: Incorrect overflow handling when using parallel concurrent marking
Fixed CMSConcMarkingTask::reset() to store the restart address upon a marking stack overflow and to use it as the base, suitably aligned, for restarting the scan in CMSConcMarkingTask::do_scan_and_mark().

Reviewed-by: jcoomes, tonyp
2008-08-26 14:54:48 -07:00
Antonios Printezis
615777b6da Merge 2008-08-21 23:36:31 -04:00
Y. Srinivas Ramakrishna
57dabb4fcb 6722112: CMS: Incorrect encoding of overflown object arrays during concurrent precleaning
When an object array overflows during precleaning, we should have been marking the entire array dirty, not just its first card.

Reviewed-by: jmasa, poonam, tonyp
2008-08-14 17:58:35 -07:00
Jon Masamitsu
74b3de5c3b 6730514: assertion failure in mangling code when expanding by 0 bytes
An expansion by 0 bytes was not anticipated when the assertion was composed.

Reviewed-by: jjh, jcoomes, apetrusenko
2008-07-30 11:54:00 -07:00