175 Commits

Author SHA1 Message Date
Claes Redestad
8d30377d50 8068037: Remove dead code in G1CollectedHeap
Reviewed-by: stefank, tschatzl
2015-01-08 14:13:03 +01:00
Thomas Schatzl
afb458ef0e 8048179: Early reclaim of large objects that are referenced by a few objects
Push the remembered sets of large objects with few referenced into the dirty card queue at the beginning of the evacuation so that they may end up with zero remembered set entries at the end of the collection, and are potentially reclaimed. Also improve timing measurements of the early reclaim mechanism, and shorten flag names.

Reviewed-by: brutisso, jmasa, dfazunen
2015-01-07 15:15:37 +01:00
Thomas Schatzl
52a4823950 8068018: Clean up friends of G1CollectedHeap
Remove unnecessary friend class declaration in the G1CollectedHeap class.

Reviewed-by: jwilhelm, jmasa
2014-12-23 15:48:32 +01:00
Thomas Schatzl
d530b1da99 8068036: assert(is_available(index)) failed in G1 cset
Some verification code iterated over the heap using the region mapping array. This is not allowed. Changed to use the regular iteration method with closure.

Reviewed-by: jwilhelm, brutisso
2014-12-22 16:49:24 +01:00
Thomas Schatzl
1be86b3412 8060025: Object copy time regressions after JDK-8031323 and JDK-8057536
Evaluate and improve object copy time by micro-optimizations and splitting out slow and fast paths aggressively.

Co-authored-by: Tony Printezis <tprintezis@twitter.com>
Reviewed-by: kbarrett, mgerdin, jmasa
2014-12-19 09:21:06 +01:00
Mikael Gerdin
cc786b287d 8067655: Clean up G1 remembered set oop iteration
Pass on the static type G1ParPushHeapRSClosure to allow oop_iterate devirtualization

Reviewed-by: jmasa, kbarrett
2014-12-08 18:57:33 +01:00
Marcus Larsson
89dca54c74 8062943: REDO - Parallelize clearing the next mark bitmap
Reviewed-by: kbarrett, tschatzl
2014-11-25 11:59:55 +01:00
Stefan Johansson
6306dce831 8061234: ResourceContext.requestAccurateUpdate() is unreliable
Changing copy_allocation_context_stats to return if there are more stats available after the copy.

Reviewed-by: rriggs, jcoomes
2014-10-30 10:51:06 +01:00
Kim Barrett
8f8d87ece5 8061748: Remove check_ct_logs_at_safepoint()
Remove unused function and related closure class

Reviewed-by: jwilhelm, mgerdin
2014-10-23 16:19:32 -04:00
Thomas Schatzl
60f3ade82b 8059758: Footprint regressions with JDK-8038423
Changes in JDK-8038423 always initialize (zero out) virtual memory used for auxiliary data structures. This causes a footprint regression for G1 in startup benchmarks. This is because they do not touch that memory at all, so the operating system does not actually commit these pages. The fix is to, if the initialization value of the data structures matches the default value of just committed memory (=0), do not do anything.

Reviewed-by: jwilhelm, brutisso
2014-10-09 11:40:11 +02:00
Marcus Larsson
6d1c35615a 8058298: Separate heap region iterator claim values from the data structures iterated over
Reviewed-by: tschatzl, brutisso
2014-10-07 14:54:53 +02:00
Antonios Printezis
da5afa76ab 8058495: G1: normalize names for isHumongous() and friends
Reviewed-by: tschatzl, brutisso
2014-09-23 11:43:24 +02:00
John Coomes
fd0e5093ca 8057824: methods to copy allocation context statistics
Reviewed-by: mikael, jmasa, tschatzl
2014-09-10 13:01:13 -07:00
John Coomes
40155ae18d 8057818: collect allocation context statistics at gc pauses
Reviewed-by: mikael, jmasa
2014-09-10 13:01:13 -07:00
Stefan Johansson
3e6d46d28b 8057658: Enable G1 FullGC extensions
Refactored the G1 FullGC code to enable it to be extended.

Reviewed-by: mgerdin, brutisso
2014-09-09 00:05:25 +02:00
Stefan Johansson
f8137659f5 8057536: Refactor G1 to allow context specific allocations
Splitting out a g1 allocator class to simply specialized allocators which can associate each allocation with a given context.

Reviewed-by: mgerdin, brutisso
2014-09-05 09:49:19 +02:00
Mikael Gerdin
10379e7e82 8048268: G1 Code Root Migration performs poorly
Replace G1CodeRootSet with a Hashtable based implementation, merge Code Root Migration phase into Code Root Scanning

Reviewed-by: jmasa, brutisso, tschatzl
2014-08-29 13:12:21 +02:00
Thomas Schatzl
9086b5795f 8054819: Rename HeapRegionSeq to HeapRegionManager
Reviewed-by: jwilhelm, jmasa
2014-08-26 09:36:53 +02:00
Stefan Karlsson
2bf343ea50 8055416: Several vm/gc/heap/summary "After GC" events emitted for the same GC ID
Reviewed-by: brutisso, ehelin
2014-08-25 09:10:13 +02:00
Thomas Schatzl
100e51a339 8038423: G1: Decommit memory within heap
Allow G1 to decommit memory of arbitrary regions within the heap and their associated auxiliary data structures card table, BOT, hot card cache, and mark bitmaps.

Reviewed-by: mgerdin, brutisso, jwilhelm
2014-08-19 14:09:10 +02:00
Poonam Bajaj
2617d54723 8044406: JVM crash with JDK8 (build 1.8.0-b132) with G1 GC
Fill the last card that has been allocated into with a dummy object

Reviewed-by: tschatzl, mgerdin
2014-08-18 19:30:24 -07:00
Thomas Schatzl
2ee5ee89d4 8054818: Refactor HeapRegionSeq to manage heap region and auxiliary data
Let HeapRegionSeq manage the heap region and auxiliary data to decrease the amount of responsibilities of G1CollectedHeap, and encapsulate this work from other code.

Reviewed-by: jwilhelm, jmasa, mgerdin, brutisso
2014-08-18 16:10:44 +02:00
Thomas Schatzl
94d0494b27 8054341: Remove some obsolete code in G1CollectedHeap class
Remove dead code.

Reviewed-by: stefank, brutisso
2014-08-07 22:28:53 +02:00
Thomas Schatzl
f161bd6d16 8027959: Early reclamation of large objects in G1
Try to reclaim humongous objects at every young collection after doing a conservative estimate of its liveness.

Reviewed-by: brutisso, mgerdin
2014-07-23 09:03:32 +02:00
Thomas Schatzl
bc56e061ec 8048112: G1 Full GC needs to support the case when the very first region is not available
Refactor preparation for compaction during Full GC so that it lazily initializes the first compaction point. This also avoids problems later when the first region may not be committed. Also reviewed by K. Barrett.

Reviewed-by: brutisso
2014-07-21 10:00:31 +02:00
Stefan Karlsson
1b001a2afd 8049421: G1 Class Unloading after completing a concurrent mark cycle
Co-authored-by: Mikael Gerdin <mikael.gerdin@oracle.com>
Reviewed-by: tschatzl, ehelin, brutisso, coleenp, roland, iveresov
2014-07-07 10:12:40 +02:00
Stefan Karlsson
ef1e9b3c80 8049420: Backout 8048248 to correct attribution
Reviewed-by: ehelin, brutisso
2014-07-07 12:37:11 +02:00
Stefan Karlsson
8c3aced316 8048248: G1 Class Unloading after completing a concurrent mark cycle
Reviewed-by: tschatzl, ehelin, brutisso, coleenp, roland, iveresov
2014-07-07 10:12:40 +02:00
Thomas Schatzl
0bd028231f 8035400: Move G1ParScanThreadState into its own files
Extract the G1ParScanThreadState class from G1CollectedHeap.?pp into its own files.

Reviewed-by: brutisso, mgerdin
2014-06-26 15:45:07 +02:00
Per Lidén
5e1811cd0e 8044796: G1: Enable G1CollectedHeap::stop()
Reviewed-by: brutisso, sjohanss
2014-06-13 13:46:06 +02:00
Goetz Lindenmaier
6e6f0720a9 8042195: Introduce umbrella header orderAccess.inline.hpp
Reviewed-by: dholmes, kvn, stefank, twisti
2014-04-29 15:17:27 +02:00
Bengt Rutisson
9968a23667 7132678: G1: verify that the marking bitmaps have no marks for objects over TAMS
Co-authored-by: Tony Printezis <tony.printezis@oracle.com>
Reviewed-by: jmasa, tschatzl, ehelin
2014-04-29 09:33:20 +02: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
Thomas Schatzl
0f9e30ad06 8028710: G1 does not retire allocation buffers after reference processing work
G1 does not retire allocation buffers after reference processing work when -XX:+ParallelRefProcEnabled is enabled. This causes wrong calculation of PLAB sizes, as the amount of space wasted is not updated correctly.

Reviewed-by: brutisso
2014-04-16 11:05:37 +02:00
Thomas Schatzl
aa00878260 8027553: Change the in_cset_fast_test functionality to use the G1BiasedArray abstraction
Instead of using a manually managed array for the in_cset_fast_test array, use a G1BiasedArray instance.

Reviewed-by: brutisso, mgerdin
2014-04-16 10:55:26 +02:00
Per Lidén
a3425b64f0 8037112: gc/g1/TestHumongousAllocInitialMark.java caused SIGSEGV
Reviewed-by: brutisso, mgerdin
2014-04-11 11:00:12 +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
Goetz Lindenmaier
f67a3b7e04 8038498: Fix includes and C inlining after 8035330
Change 8035330: Remove G1ParScanPartialArrayClosure and G1ParScanHeapEvacClosure broke the debug build on AIX. The method do_oop_partial_array() is added in a header, but requires the inline function par_write_ref() through several inlined calls. In some cpp files, like arguments.cpp, par_write_ref() is not defined as the corresponding inline header and is not included. The AIX debug VM does not start because of the missing symbol. This change solves this by cleaning up include dependencies.

Reviewed-by: tschatzl, stefank
2014-04-02 09:17:38 +02:00
Jesper Wilhelmsson
1e1ad7f132 8036025: Sort the freelist in order to shrink the heap
The free list is being maintained in a sorted fashion and old and humongous regions are allocated from the bottom of the heap while young regions are allocated at the top.

Co-authored-by: Staffan Friberg <staffan.friberg@oracle.com>
Reviewed-by: tschatzl, mgerdin
2014-02-28 15:27:09 +01:00
Thomas Schatzl
483ea400a5 8035330: Remove G1ParScanPartialArrayClosure and G1ParScanHeapEvacClosure
Mentioned closures are actually wrapped methods. This adds confusion to readers, and in this case also increases code size as G1ParScanHeapEvacClosure is part of the oop_oop_iterate() methods. Move them into G1ParScanThreadState as methods.

Reviewed-by: stefank
2014-03-17 10:07:51 +01:00
Thomas Schatzl
80188ce0b2 8035398: Add card redirty time in "Other" time in G1
Show the time taken by card redirtying during GC in a new "Redirty Cards" line.

Reviewed-by: jwilhelm, brutisso
2014-03-17 10:13:27 +01:00
Thomas Schatzl
d3e28ca682 8027295: Free CSet takes ~50% of young pause time
Improve fast card cache iteration and avoid taking locks when freeing the collection set.

Reviewed-by: brutisso
2014-03-17 10:13:18 +01:00
Thomas Schatzl
329e55e7b0 8035406: Improve data structure for Code Cache remembered sets
Change the code cache remembered sets data structure from a GrowableArray to a chunked list of nmethods. This makes the data structure more amenable to parallelization, and decreases freeing time.

Reviewed-by: mgerdin, brutisso
2014-03-17 10:12:21 +01:00
Bengt Rutisson
c88e3def4d 8034079: G1: Refactor the HeapRegionSet hierarchy
Reviewed-by: tschatzl, pliden
2014-03-14 10:15:46 +01:00
Thomas Schatzl
7de1730b10 8034948: Back out JDK-6976350 since it does not fix any issue
Revert JDK-6976350 because it does not improve PLAB fragmentation. To the contrary, it tends to increase the amount of wasted space with many threads.

Reviewed-by: brutisso
2014-02-24 10:45:15 +01:00
Thomas Schatzl
2ae60596ed 8035329: Move G1ParCopyClosure::copy_to_survivor_space into G1ParScanThreadState
Move G1ParCopyClosure::copy_to_survivor_space to decrease code size.

Reviewed-by: stefank, jmasa
2014-02-24 09:41:04 +01:00
Thomas Schatzl
dbc8581147 8035326: Assume non-NULL references in G1CollectedHeap::in_cset_fast_test
Remove the assumption that G1CollectedHeap::in_cset_fast_test needs to check for NULL references. Most of the time this is not required, making the code doing this check multiple times.

Reviewed-by: stefank, mgerdin, jmasa
2014-02-24 09:40:49 +01:00
Stefan Karlsson
2a866afcdb 8034761: Remove the do_code_roots parameter from process_strong_roots
Reviewed-by: tschatzl, mgerdin, jmasa
2014-02-13 17:44:39 +01:00
Bengt Rutisson
9b29efeb63 8030177: G1: Enable TLAB resizing
Reviewed-by: tschatzl, stefank, jmasa
2014-01-27 13:14:53 +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