117 Commits

Author SHA1 Message Date
Lois Foltan
7bf953d005 7195622: CheckUnhandledOops has limited usefulness now
Enable CHECK_UNHANDLED_OOPS in fastdebug builds across all supported platforms.

Reviewed-by: coleenp, hseigel, dholmes, stefank, twisti, ihse, rdurbin
2013-09-26 10:25:02 -04:00
Thomas Schatzl
87a98b7267 8021823: G1: Concurrent marking crashes with -XX:ObjectAlignmentInBytes>=32 in 64bit VMs
Correctly calculate the initialization value for the shift between object start and bitmap bit in the G1 mark bitmaps.

Reviewed-by: tonyp
2013-09-11 10:19:16 +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
Staffan Larsen
718f3252f6 8005849: JEP 167: Event-Based JVM Tracing
Co-authored-by: Karen Kinnear <karen.kinnear@oracle.com>
Co-authored-by: Bengt Rutisson <bengt.rutisson@oracle.com>
Co-authored-by: Calvin Cheung <calvin.cheung@oracle.com>
Co-authored-by: Erik Gahlin <erik.gahlin@oracle.com>
Co-authored-by: Erik Helin <erik.helin@oracle.com>
Co-authored-by: Jesper Wilhelmsson <jesper.wilhelmsson@oracle.com>
Co-authored-by: Keith McGuigan <keith.mcguigan@oracle.com>
Co-authored-by: Mattias Tobiasson <mattias.tobiasson@oracle.com>
Co-authored-by: Markus Gronlund <markus.gronlund@oracle.com>
Co-authored-by: Mikael Auno <mikael.auno@oracle.com>
Co-authored-by: Nils Eliasson <nils.eliasson@oracle.com>
Co-authored-by: Nils Loodin <nils.loodin@oracle.com>
Co-authored-by: Rickard Backman <rickard.backman@oracle.com>
Co-authored-by: Stefan Karlsson <stefan.karlsson@oracle.com>
Co-authored-by: Yekaterina Kantserova <yekaterina.kantserova@oracle.com>
Reviewed-by: acorn, coleenp, sla
2013-06-10 11:30:51 +02:00
Thomas Schatzl
5ebe77bb6b 8014240: G1: Add remembered set size information to output of G1PrintRegionLivenessInfo
Improve the output of G1PrintRegionLivenessInfo by adding a per-region remembered set size information column

Reviewed-by: jwilhelm, johnc
2013-05-16 13:02:33 +02:00
Stefan Karlsson
f0ae855b07 8013132: Add a flag to turn off the output of the verbose verification code
Reviewed-by: johnc, brutisso
2013-04-24 20:13:37 +02:00
Stefan Karlsson
e96efdaa1a 8011872: Include Bit Map addresses in the hs_err files
Reviewed-by: brutisso, jmasa
2013-04-10 14:26:49 +02:00
John Cuthbertson
a8087d1cb6 8008301: G1: guarantee(satb_mq_set.completed_buffers_num() == 0) failure
If the marking stack overflows while the marking tasks are draining the SATB buffers, remark will exit with some SATB buffers left unprocessed. Relax the guarantee to allow for overflow.

Reviewed-by: jmasa, brutisso
2013-03-19 09:38:37 -07:00
John Cuthbertson
9164834d73 8009940: G1: assert(_finger == _heap_end) failed, concurrentMark.cpp:809
Skip reference processing if the global marking stack overflows during remark. Refactor and rename set_phase(); move code that sets the concurrency level into its own routine. Do not call set_phase() from within parallel reference processing; use the concurrency level routine instead. The marking state should only set reset by CMTask[0] during the concurrent phase of the marking cycle; if an overflow occurs at any stage during the remark, the marking state will be reset after reference processing.

Reviewed-by: brutisso, jmasa
2013-03-19 00:57:39 -07:00
John Cuthbertson
d41c0fce7f 8009536: G1: Apache Lucene hang during reference processing
In CMTask::do_marking_step(), Skip offering termination and entering the first and second synchronization barriers if called from a serial context, i.e. the VM thread.

Reviewed-by: brutisso, tschatzl
2013-03-18 11:05:27 -07:00
Stefan Karlsson
35177d7db2 Merge 2013-03-15 08:57:55 +01:00
Joseph Provino
e1f180f82e 8006498: #if <symbol> is wrong in the code
ASSERT and other symbols used incorrectly with #if are supposed to be defined or not.

Reviewed-by: dholmes, mikael
2013-03-06 13:46:55 -05:00
Tao Mao
4bec822d40 8008079: G1: Add nextObject routine to CMBitMapRO and replace nextWord
Update the task local finger to the start of the next object when marking aborts, in order to avoid the redundant scanning of all 0's when the marking task restarts, if otherwise updating to the next word. In addition, reuse the routine nextObject() in routine iterate().

Reviewed-by: johnc, ysr
2013-03-05 15:36:56 -08:00
John Cuthbertson
251a9ff39c 8007772: G1: assert(!hr->isHumongous() || mr.start() == hr->bottom()) failed: the start of HeapRegion and MemRegion should be consistent for humongous regions
In do_marking_step(), we should always give up current region after scanning the object, if the region is humongous.

Reviewed-by: brutisso, jwilhelm, tamao
2013-02-11 15:24:48 -08:00
Tao Mao
63fd60257c 7052429: G1: Avoid unnecessary scanning of humongous regions during concurrent marking
Skip unnecessary scanning of bitmap for unmarked humongous objects/regions.

Reviewed-by: jwilhelm, johnc
2013-02-06 14:50:37 -08:00
John Cuthbertson
c2bb152e6c 8005032: G1: Cleanup serial reference processing closures in concurrent marking
Reuse the parallel reference processing oop closures during serial reference processing.

Reviewed-by: brutisso
2013-02-05 09:13:05 -08:00
John Cuthbertson
7d2ccf3a21 8005875: G1: Kitchensink fails with ParallelGCThreads=0
Check that the concurrent marking worker gang exists in ConcurrentMark::print_worker_threads_on(). Changes were also reviewed by Vitaly Davidovich <vitalyd@gmail.com>.

Reviewed-by: brutisso
2013-01-31 10:45:09 -08:00
John Cuthbertson
d701ede8bb 8006894: G1: Number of marking threads missing from PrintFlagsFinal output
Set ConcGCThreads to the calculated number of marking threads.

Reviewed-by: jmasa, ysr
2013-02-01 13:17:04 -08:00
John Cuthbertson
15bae865ac 8004816: G1: Kitchensink failures after marking stack changes
Reset the marking state, including the mark stack overflow flag, in the event of a marking stack overflow during serial reference processing.

Reviewed-by: jmasa
2013-01-03 16:28:22 -08:00
John Cuthbertson
aac13806ea 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
Set the value of MarkStackSize to a value based on the number of parallel marking threads with a reasonable minimum. Expand the marking stack if we have to restart marking due to an overflow up to a reasonable maximum. Allocate the underlying space for the marking stack from virtual memory.

Reviewed-by: jmasa, brutisso
2012-10-01 09:28:13 -07:00
John Cuthbertson
9abdcd4a3c 8000831: Heap verification output incorrect/incomplete
Restore non-silent output of heap verification.

Reviewed-by: ysr, brutisso, jmasa
2012-10-15 10:02:42 -07:00
Kaushik Srenevasan
fd15ca5e44 7127708: G1: change task num types from int to uint in concurrent mark
Change the type of various task num fields, parameters etc to unsigned and rename them to be more consistent with the other collectors. Code changes were also reviewed by Vitaly Davidovich.

Reviewed-by: johnc
2012-10-06 01:17:44 -07:00
John Cuthbertson
157b8fa41b 7200261: G1: Liveness counting inconsistencies during marking verification
The clipping code in the routine that sets the bits for a range of cards, in the liveness accounting verification code was incorrect. It set all the bits in the card bitmap from the given starting index which would lead to spurious marking verification failures.

Reviewed-by: brutisso, jwilhelm, jmasa
2012-09-27 15:44:01 -07:00
Hal Mo
18582cee62 7197906: BlockOffsetArray::power_to_cards_back() needs to handle > 32 bit shifts
Reviewed-by: brutisso, johnc, ysr
2012-09-13 21:20:26 +02: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
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
377a04fe57 7143490: G1: Remove HeapRegion::_top_at_conc_mark_count
Removed the HeapRegion::_top_at_conc_mark_count field. It is no longer needed as a result of the changes for 6888336 and 7127706. Refactored the closures that finalize and verify the liveness counting data so that common functionality was placed into a base class.

Reviewed-by: brutisso, tonyp
2012-04-25 10:23:12 -07:00
Antonios Printezis
0afaaf8d36 7145441: G1: collection set chooser-related cleanup
Cleanup of the CSet chooser class: standardize on uints for region num and indexes (instead of int, jint, etc.), make the method / field naming style more consistent, remove a lot of dead code.

Reviewed-by: johnc, brutisso
2012-04-18 13:39:55 -04:00
Antonios Printezis
01ea4199c7 7157073: G1: type change size_t -> uint for region counts / indexes
Change the type of fields / variables / etc. that represent region counts and indeces from size_t to uint.

Reviewed-by: iveresov, brutisso, jmasa, jwilhelm
2012-04-18 07:21:15 -04:00
Bengt Rutisson
f695b75d78 4988100: oop_verify_old_oop appears to be dead
Removed oop_verify_old_oop and allow_dirty. Also reviewed by: alexlamsl@gmail.com

Reviewed-by: jmasa, jwilhelm
2012-04-16 08:57:18 +02:00
Bengt Rutisson
bb59715dae 7160728: Introduce an extra logging level for G1 logging
Added log levels "fine", "finer" and "finest". Let PrintGC map to "fine" and PrintGCDetails map to "finer". Separated out the per worker information in the G1 logging to the "finest" level.

Reviewed-by: stefank, jwilhelm, tonyp, johnc
2012-04-13 01:59:38 +02:00
Antonios Printezis
29afa9bf4b 7127697: G1: remove dead code after recent concurrent mark changes
Removed lots of dead code after some recent conc mark changes.

Reviewed-by: brutisso, johnc
2012-04-05 13:57:23 -04:00
Antonios Printezis
802519ea53 7127706: G1: re-enable survivors during the initial-mark pause
Re-enable survivors during the initial-mark pause. Afterwards, the concurrent marking threads have to scan them and mark everything reachable from them. The next GC will have to wait for the survivors to be scanned.

Reviewed-by: brutisso, johnc
2012-01-25 12:58:23 -05:00
John Cuthbertson
0fa6fc2279 6484965: G1: piggy-back liveness accounting phase on marking
Remove the separate counting phase of concurrent marking by tracking the amount of marked bytes and the cards spanned by marked objects in marking task/worker thread local data structures, which are updated as individual objects are marked.

Reviewed-by: brutisso, tonyp
2012-01-12 00:06:47 -08:00
Antonios Printezis
c9eb103b7f 7097586: G1: improve the per-space output when using jmap -heap
Extend the jmap -heap output for G1 to include some more G1-specific information.

Reviewed-by: brutisso, johnc, poonam
2012-01-18 10:30:12 -05:00
Bengt Rutisson
af0211c200 7130334: G1: Change comments and error messages that refer to CMS in g1/concurrentMark.cpp/hpp
Removed references to CMS in the concurrentMark.cpp/hpp files.

Reviewed-by: tonyp, jmasa, johnc
2012-01-16 11:21:21 +01:00
John Cuthbertson
dac656c955 7121547: G1: High number mispredicted branches while iterating over the marking bitmap
There is a high number of mispredicted branches associated with calling BitMap::iteratate() from within CMBitMapRO::iterate(). Implement a version of CMBitMapRO::iterate() directly using inline-able routines.

Reviewed-by: tonyp, iveresov
2012-01-13 13:27:48 -08:00
Antonios Printezis
1d3b26e52b 6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
This change simplifies the interaction between GC and concurrent marking. By disabling survivor spaces during the initial-mark pause we don't need to propagate marks of objects we copy during each GC (since we never need to copy an explicitly marked object).

Reviewed-by: johnc, brutisso
2012-01-10 18:58:13 -05:00
John Cuthbertson
39d61f89a2 7121496: G1: do the per-region evacuation failure handling work in parallel
Parallelize the removal of self forwarding pointers etc. by wrapping in a HeapRegion closure, which is then wrapped inside an AbstractGangTask.

Reviewed-by: tonyp, iveresov
2011-12-23 11:14:18 -08:00
Stefan Karlsson
24e4bf6a80 7125516: G1: ~ConcurrentMark() frees incorrectly
Replaced the code with a ShouldNotReachHere

Reviewed-by: tonyp, jmasa
2011-12-29 07:37:23 +01: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
2768349b41 7120038: G1: ParallelGCThreads==0 is broken
Running G1 with ParallelGCThreads==0 results in various crashes and asserts. Most of these are caused by unguarded references to the worker threads array or an incorrect number of active workers.

Reviewed-by: jmasa, tonyp
2011-12-16 11:40:00 -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
John Cuthbertson
a03f061ca2 7111795: G1: Various cleanups identified during walk through of changes for 6484965
Various cleanups and formatting changes identified during a code walk through of the changes for 6484965 ("G1: piggy-back liveness accounting phase on marking").

Reviewed-by: brutisso, tonyp
2011-11-18 12:27:10 -08:00
Antonios Printezis
83958f54fb 7092309: G1: introduce old region set
Keep track of all the old regions in the heap with a heap region set.

Reviewed-by: brutisso, johnc
2011-11-07 22:11:12 -05: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