956 Commits

Author SHA1 Message Date
John Cuthbertson
006def0451 7147724: G1: hang in SurrogateLockerThread::manipulatePLL
Attempting to initiate a marking cycle when allocating a humongous object can, if a marking cycle is successfully initiated by another thread, result in the allocating thread spinning until the marking cycle is complete. Eliminate a deadlock between the main ConcurrentMarkThread, the SurrogateLocker thread, the VM thread, and a mutator thread waiting on the SecondaryFreeList_lock (while free regions are going to become available) by not manipulating the pending list lock during the prologue and epilogue of the cleanup pause.

Reviewed-by: brutisso, jcoomes, tonyp
2012-03-12 14:59:00 -07:00
Nils Loodin
8950ee8d8e 7154517: Build error in hotspot-gc without precompiled headers
Reviewed-by: jcoomes, brutisso
2012-03-16 16:14:04 +01:00
Bengt Rutisson
4a2a6ebe99 7152954: G1: Native memory leak during full GCs
Add destructor to TruncatedSeq and call delete when necessary

Reviewed-by: johnc, tonyp
2012-03-13 21:12:53 +01:00
John Cuthbertson
4bcab49b68 7147806: G1: Crash in vm bootstrap when running with -XX:+UseG1GC -XX:-UsePerfData
Update generation and collector counters only if UsePerfData is enabled.

Reviewed-by: iveresov, tonyp
2012-03-02 10:36:16 -08:00
John Coomes
5f0143a774 6330863: vm/gc/InfiniteList.java fails intermittently due to timeout
In some cases, allocate from the old gen before doing a full gc

Reviewed-by: stefank, jmasa
2012-02-16 13:13:53 -08:00
John Coomes
6827f384c9 7146343: PS invoke methods should indicate the type of gc done
Reviewed-by: stefank, jmasa
2012-02-16 13:12:25 -08:00
Antonios Printezis
be06406cb8 7132029: G1: mixed GC phase lasts for longer than it should
Revamp of the mechanism that chooses old regions for inclusion in the CSet. It simplifies the code and introduces min and max bounds on the number of old regions added to the CSet at each mixed GC to avoid pathological cases. It also ensures that when we do a mixed GC we'll always find old regions to add to the CSet (i.e., it eliminates the case where a mixed GC will collect no old regions which can happen today).

Reviewed-by: johnc, brutisso
2012-02-15 13:06:53 -05:00
John Cuthbertson
fa9d6d7682 7129514: time warp warnings after 7117303
Replace calls to os::javaTimeMillis() that are used to update the milliseconds since the last GC to an equivalent that uses a monotonically non-decreasing time source.

Reviewed-by: ysr, jmasa
2012-01-18 09:50:16 -08:00
Antonios Printezis
6a31970946 7129892: G1: explicit marking cycle initiation might fail to initiate a marking cycle
If we try to schedule an initial-mark GC in order to explicit start a conc mark cycle and it gets pre-empted by antoher GC, we should retry the attempt as long as it's appropriate for the GC cause.

Reviewed-by: brutisso, johnc
2012-02-14 08:21:08 -05:00
Igor Veresov
47d1b9ee33 7144296: PS: Optimize nmethods processing
Prunes scavenge roots in code list every young GC, promote objects directly pointed by the code immediately

Reviewed-by: johnc, jcoomes
2012-02-10 17:40:20 -08:00
John Coomes
abcd88ab09 Merge 2012-02-03 12:20:11 -08:00
John Coomes
140e8ff0d9 Merge 2012-02-03 12:08:55 -08:00
Tom Rodriguez
5a41427b37 7141200: log some interesting information in ring buffers for crashes
Reviewed-by: kvn, jrose, kevinw, brutisso, twisti, jmasa
2012-02-01 07:59:01 -08:00
Keith McGuigan
1e318cc920 Merge 2012-01-27 10:42:36 -05:00
Stefan Karlsson
4ad03aebbb 7134655: Crash in reference processing when doing single-threaded remarking
Temporarily disabled multi-threaded reference discovery when entering a single-threaded remark phase.

Reviewed-by: brutisso, tonyp, jmasa, jcoomes
2012-01-27 14:14:50 +01:00
Paul Hohensee
09e21afaaa 7082553: Interpret Thread.setPriority(Thread.MAX_PRIORITY) to mean FX60 on Solaris 10 and 11
Add CriticalPriority == MaxPriority+1 and enable scheduling class as well as thread priority to change on Solaris.

Reviewed-by: dholmes, dcubed
2012-01-26 20:06:06 -05:00
John Cuthbertson
179d6df8c0 7133038: G1: Some small profile based optimizations
Some minor profile based optimizations. Reduce the number of branches and branch mispredicts by removing some virtual calls, through closure specalization, and refactoring some conditional statements.

Reviewed-by: brutisso, tonyp
2012-01-26 14:14:55 -08: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
Bengt Rutisson
4e395f3ddd 7132311: G1: assert((s == klass->oop_size(this)) || (Universe::heap()->is_gc_active() && ((is_typeArray()..
Move the check for when to call collect() to before we do a humongous object allocation

Reviewed-by: stefank, tonyp
2012-01-23 20:36:16 +01:00
Bengt Rutisson
7946306583 7131791: G1: Asserts in nightly testing due to 6976060
Create a handle and fake an object to make sure that we don't loose the memory we just allocated

Reviewed-by: tonyp, stefank
2012-01-20 18:01:32 +01:00
Antonios Printezis
c90c187756 7078465: G1: Don't use the undefined value (-1) for the G1 old memory pool max size
Reviewed-by: johnc, brutisso
2012-01-19 09:13:58 -05:00
John Cuthbertson
43a30ad483 7129271: G1: Interference from multiple threads in PrintGC/PrintGCDetails output
During an initial mark pause, signal the Concurrent Mark thread after the pause output from PrintGC/PrintGCDetails is complete.

Reviewed-by: tonyp, brutisso
2012-01-17 10:21:43 -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
c11ba93098 6976060: G1: humongous object allocations should initiate marking cycles when necessary
Reviewed-by: tonyp, johnc
2012-01-16 22:10:05 +01: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
Bengt Rutisson
2bf3afe882 7128532: G1: Change default value of G1DefaultMaxNewGenPercent to 80
Reviewed-by: tonyp, jmasa
2012-01-10 20:02:41 +01:00
Antonios Printezis
30bfc8f549 7125281: G1: heap expansion code is replicated
Reviewed-by: brutisso, johnc
2012-01-09 23:50:41 -05:00
Antonios Printezis
90cdae9775 7121623: G1: always be able to reliably calculate the length of a forwarded chunked array
Store the "next chunk start index" in the length field of the to-space object, instead of the from-space object, so that we can always reliably read the size of all from-space objects.

Reviewed-by: johnc, ysr, jmasa
2012-01-07 00:43:59 -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
Antonios Printezis
3c0eb44a7c 7113006: G1: excessive ergo output when an evac failure happens
Introduce a flag that is set when a heap expansion attempt during a GC fails so that we do not consantly attempt to expand the heap when it's going to fail anyway. This not only prevents the excessive ergo output (which is generated when a region allocation fails) but also avoids excessive and ultimately unsuccessful expansion attempts.

Reviewed-by: jmasa, johnc
2012-01-05 05:54:01 -05: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
Aleksey Ignatenko
c7ec06ba8e 7124829: NUMA: memory leak on Linux with large pages
In os::free_memory() use mmap with the same attributes as for the heap space

Reviewed-by: kvn
2011-12-27 16:43:49 -08:00
Bengt Rutisson
056282a67b 7113021: G1: automatically enable young gen size auto-tuning when -Xms==-Xmx
Use a percentage of -Xms as min and another percentage of -Xmx as max for the young gen size

Reviewed-by: tonyp, johnc
2011-12-21 22:13:31 +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
Antonios Printezis
1de50427de 7119027: G1: use atomics to update RS length / predict time of inc CSet
Make sure that the updates to the RS length and inc CSet predicted time are updated in an MT-safe way.

Reviewed-by: brutisso, iveresov
2011-12-21 07:53:53 -05:00
Antonios Printezis
9427bd6eec 7123165: G1: output during parallel verification can get messed up
Serialize the worker threads that are generating output during parallel heap verification to make sure the output is consistent.

Reviewed-by: brutisso, johnc, jmasa
2011-12-20 12:59:28 -05:00
John Cuthbertson
870bea622a 7117303: VM uses non-monotonic time source and complains that it is non-monotonic
Replaces calls to os::javaTimeMillis(), which does not (and cannot) guarantee monotonicity, in GC code to an equivalent expression that uses os::javaTimeNanos(). os::javaTimeNanos is guaranteed monotonically non-decreasing if the underlying platform provides a monotonic time source. Changes in OS files are to make use of the newly defined constants in globalDefinitions.hpp.

Reviewed-by: dholmes, ysr
2011-12-19 10:02:05 -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
Antonios Printezis
8b05b38909 7113012: G1: rename not-fully-young GCs as "mixed"
Renamed partially-young GCs as mixed and fully-young GCs as young. Change all external output that includes those terms (GC log and GC ergo log) as well as any comments, fields, methods, etc. The changeset also includes very minor code tidying up (added some curly brackets).

Reviewed-by: johnc, brutisso
2011-12-16 02:14:27 -05:00
John Cuthbertson
4976ad0ccf 7119908: G1: Cache CSet start region for each worker for subsequent reuse
Cache workers' calculated starting heap region, used for parallel iteration over the collcection set, for subsequent reuse.

Reviewed-by: tonyp, brutisso
2011-12-14 17:43:55 -08:00
Stefan Karlsson
a3943834e1 7121373: Clean up CollectedHeap::is_in
Fixed G1CollectedHeap::is_in, added tests, cleaned up comments and made Space::is_in pure virtual.

Reviewed-by: brutisso, tonyp, jcoomes
2011-12-14 12:15:26 +01:00
Jon Masamitsu
714e978aac 7119584: UseParallelGC barrier task can be overwritten
Provoke a GC for a metadata allocation failure.

Reviewed-by: johnc, iveresov
2011-12-09 19:28:34 -08:00
Antonios Printezis
4799ed65a4 7118202: G1: eden size unnecessarily drops to a minimum
An integer underflow can cause the RSet lengths to be massively overpredicted which forces the eden size to the minimum.

Reviewed-by: brutisso, johnc
2011-12-07 12:54:51 -05:00
Stefan Karlsson
fcdf022370 7112034: Parallel CMS fails to properly mark reference objects
Enabled reference processing when work stealing during concurrent marking

Reviewed-by: jmasa, brutisso
2011-11-28 10:19:26 +01:00
John Cuthbertson
a71320f229 7114095: G1: assert(obj == oopDesc::load_decode_heap_oop(p)) failed: p should still be pointing to obj
As a result of  the changes for 4965777, the G1 reference field scanning closure could be applied to the discovered field of a reference object twice. The failing assert is too strong if the result of the first application of the closure is stolen, and the referenced object, evacuated by another worker thread.

Reviewed-by: ysr, tonyp
2011-12-02 12:39:23 -08:00
Jon Masamitsu
71ed60ac69 7112997: Remove obsolete code ResetObjectsClosure and VerifyUpdateClosure
Remove obsolete code.

Reviewed-by: brutisso, ysr, jcoomes
2011-11-22 14:59:34 -08:00
Jon Masamitsu
404bb0d0ac 7106024: CMS: Removed unused code for precleaning in remark phase
Remove dead code.

Reviewed-by: stefank, ysr
2011-11-22 14:18:39 -08:00