370 Commits

Author SHA1 Message Date
Y. Srinivas Ramakrishna
d86311b13c 7039089: G1: changeset for 7037276 broke heap verification, and related cleanups
In G1 heap verification, we no longer scan perm to G1-collected heap refs as part of process_strong_roots() but rather in a separate explicit oop iteration over the perm gen. This preserves the original perm card-marks. Added a new assertion in younger_refs_iterate() to catch a simple subcase where the user may have forgotten a prior save_marks() call, as happened in the case of G1's attempt to iterate perm to G1 refs when verifying the heap before exit. The assert was deliberately weakened for ParNew+CMS and will be fixed for that combination in a future CR. Also made some (non-G1) cleanups related to code and comments obsoleted by the migration of Symbols to the native heap.

Reviewed-by: iveresov, jmasa, tonyp
2011-04-26 21:17:24 -07:00
Jon Masamitsu
6663052a88 6946417: G1: Java VisualVM does not support G1 properly
Added counters for jstat

Reviewed-by: tonyp, jwilhelm, stefank, ysr, johnc
2011-04-21 10:23:44 -07:00
Y. Srinivas Ramakrishna
b4d40650b2 7037276: Unnecessary double traversal of dirty card windows
Short-circuited an unnecessary double traversal of dirty card windows when iterating younger refs. Also renamed some cardtable methods for more clarity.

Reviewed-by: jmasa, stefank, poonam
2011-04-20 19:19:30 -07:00
Antonios Printezis
12d1d9acc1 7011855: G1: non-product flag to artificially grow the heap
It introduces non-product cmd line parameter G1DummyRegionsPerGC which indicates how many "dummy" regions to allocate at the end of each GC. This allows the G1 heap to grow artificially and makes concurrent marking cycles more frequent irrespective of what the application that is running is doing. The dummy regions will be found totally empty during cleanup so this parameter can also be used to stress the concurrent cleanup operation.

Reviewed-by: brutisso, johnc
2011-04-19 15:46:59 -04:00
John Cuthbertson
f603d437be 7036021: G1: build failure on win64 and linux with hs21 in jdk6 build environment
Missing parentheses around a casted expression and some missing casts were causing build failures with the jdk6 build tools.

Reviewed-by: kvn, brutisso
2011-04-15 10:10:50 -07:00
Y. Srinivas Ramakrishna
91657bd273 7036482: clear argument is redundant and unused in cardtable methods
Removed the unused clear argument to various cardtbale methods and unused mod_oop_in_space_iterate method. Unrelated to synopsis, added  a pair of clarifying parens in AllocationStats constructor.

Reviewed-by: brutisso, jcoomes
2011-04-14 12:10:15 -07:00
Jon Masamitsu
b147ec205b Merge 2011-04-08 14:53:16 -07:00
Jon Masamitsu
b6e631d446 Merge 2011-04-08 14:19:50 -07:00
John Coomes
f9b80cdc1c 6841742: par compact - remove unused/unsupported options
Ignore UseParallel{OldGCDensePrefix,OldGCCompacting,DensePrefixUpdate}

Reviewed-by: jwilhelm, brutisso
2011-04-07 17:16:20 -07:00
John Cuthbertson
a08e1ce906 7009266: G1: assert(obj->is_oop_or_null(true )) failed: Error
A referent object that is only weakly reachable at the start of concurrent marking but is re-attached to the strongly reachable object graph during marking may not be marked as live. This can cause the reference object to be processed prematurely and leave dangling pointers to the referent object. Implement a read barrier for the java.lang.ref.Reference::referent field by intrinsifying the Reference.get() method, and intercepting accesses though JNI, reflection, and Unsafe, so that when a non-null referent object is read it is also logged in an SATB buffer.

Reviewed-by: kvn, iveresov, never, tonyp, dholmes
2011-04-07 09:53:20 -07:00
Jon Masamitsu
b02fa2a90f Merge 2011-04-06 16:02:53 -07:00
Erik Trimble
c9e484d473 7010070: Update all 2010 Oracle-changed OpenJDK files to have the proper copyright dates - second pass
Update the copyright to be 2010 on all changed files in OpenJDK

Reviewed-by: ohair
2011-04-05 14:12:31 -07:00
John Coomes
fe899cc10d 6962931: move interned strings out of the perm gen
Reviewed-by: never, coleenp, ysr, jwilhelm
2011-03-22 13:36:33 -07:00
John Coomes
0317c7c485 Merge 2011-03-18 09:03:43 -07:00
Y. Srinivas Ramakrishna
b4b287e7ac 6668573: CMS: reference processing crash if ParallelCMSThreads > ParallelGCThreads
Use _max_num_q = max(discovery_degree, processing_degree), and let balance_queues() redistribute from discovery_degree to processing_degree of queues. This should also allow a more dynamic and flexible parallelism policy in the future.

Reviewed-by: jmasa, johnc
2011-03-17 10:32:46 -07:00
Jesper Wilhelmsson
413f247a65 Merge 2011-03-15 09:07:49 -07:00
Y. Srinivas Ramakrishna
a3de65241c 6987703: iCMS: Intermittent hang with gc/gctests/CallGC/CallGC01 and +ExplicitGCInvokesConcurrent
Count enable_icms() and disable_icms() events so as to prevent inteference between concurrent calls, which can cause the iCMS thread to be left stranded in icms_wait() with an unserviced request and no young allocations to unwedge it.

Reviewed-by: jcoomes, poonam
2011-03-14 21:52:24 -07:00
Jesper Wilhelmsson
aad948f0e8 6820066: Check that -XX:ParGCArrayScanChunk has a value larger than zero
Check that -XX:ParGCArrayScanChunk has a value larger than zero.

Reviewed-by: johnc, jmasa, ysr
2011-03-11 16:35:18 +01:00
Vladimir Kozlov
d7802369bc Merge 2011-03-03 23:31:45 -08:00
Bengt Rutisson
edb9e105eb 7023747: G1: too strict assert in RefineRecordRefsIntoCSCardTableEntryClosure::do_card_ptr in g1RemSet.cpp
Made sure that the assert looks at ParallelGCThreads.

Reviewed-by: stefank, tonyp, jwilhelm, johnc
2011-03-03 11:35:50 +01:00
Bengt Rutisson
a35c7dbfeb 7022943: G1: improve logging to avoid interleaved numbers
Introduced buffered loggging to make sure that log lines are logged one line at a time

Reviewed-by: stefank, johnc, dsamersoff
2011-03-03 22:58:46 +01:00
Antonios Printezis
3ff554aec1 7014923: G1: code cleanup
Some G1 code cleanup.

Reviewed-by: johnc, jcoomes, jwilhelm
2011-03-04 17:13:19 -05:00
Igor Veresov
90a153aa38 6627983: G1: Bad oop deference during marking
Bulk zeroing reduction didn't work with G1, because arraycopy would call pre-barriers on uninitialized oops. The solution is to have version of arraycopy stubs that don't have pre-barriers. Also refactored arraycopy stubs generation on SPARC to be more readable and reduced the number of stubs necessary in some cases.

Reviewed-by: jrose, kvn, never
2011-03-01 14:56:48 -08:00
John Cuthbertson
9babe64b0a 7022200: G1: optimized build broken
Make the G1 specific version of is_in_closed_subset() available in all builds.

Reviewed-by: tonyp, jcoomes
2011-02-28 09:10:52 -08:00
Vladimir Kozlov
0ea15ed320 Merge 2011-02-23 11:18:16 -08:00
John Cuthbertson
154f0709bd 7020042: G1: Partially remove fix for 6994628
Disable reference discovery and processing during concurrent marking by disabling fix for 6994628.

Reviewed-by: tonyp, ysr
2011-02-18 10:07:34 -08:00
Antonios Printezis
f418b77aa6 7027766: G1: introduce flag to dump the liveness information per region at the end of marking
Repurpose the existing flag G1PrintRegionLivenessInfo to print out the liveness distribution across the regions in the heap at the end of marking.

Reviewed-by: iveresov, jwilhelm
2011-04-04 14:23:17 -04:00
Antonios Printezis
cec5c20656 7033292: G1: nightly failure: Non-dirty cards in region that should be dirty
The epochs on the card cache array are initialized to 0 and our initial epoch also starts at 0. So, until the first GC, it might be possible to successfully "claim" a card which was in fact never initialized.

Reviewed-by: johnc, iveresov, ysr
2011-04-04 13:18:35 -04:00
Antonios Printezis
3e9fe24ddd 7023069: G1: Introduce symmetric locking in the slow allocation path
7023151: G1: refactor the code that operates on _cur_alloc_region to be re-used for allocs by the GC threads
7018286: G1: humongous allocation attempts should take the GC locker into account

First, this change replaces the asymmetric locking scheme in the G1 slow alloc path by a summetric one. Second, it factors out the code that operates on _cur_alloc_region so that it can be re-used for allocations by the GC threads in the future.

Reviewed-by: stefank, brutisso, johnc
2011-03-30 10:26:59 -04:00
Antonios Printezis
349d820dd1 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
What the synopsis says.

Reviewed-by: jwilhelm, iveresov, johnc
2011-03-29 22:36:16 -04:00
John Cuthbertson
c2275649b7 7026932: G1: No need to abort VM when card count cache expansion fails
Manage allocation/freeing of the card cache counts and epochs arrays directly so that an allocation failure while attempting to expand these arrays does not abort the JVM. Failure to expand these arrays is not fatal.

Reviewed-by: iveresov, tonyp
2011-03-28 10:58:54 -07:00
Bengt Rutisson
4fd9f5071f 6948149: G1: Imbalance in termination times
Changed default value of WorkStealingYieldsBeforeSleep from 1000 to 5000. Added more information to G1 pause logging.

Reviewed-by: jwilhelm, tonyp, jmasa
2011-03-23 14:12:51 +01:00
Vladimir Kozlov
ddd4d3ad73 Merge 2011-02-14 14:36:29 -08:00
Vladimir Kozlov
287139e5a5 7014874: Incorrect COOPs modes on solaris-{sparcv9,amd64} with ParallelGC
Align old gen size down to keep specified heap size.

Reviewed-by: ysr
2011-02-08 16:12:16 -08:00
Stefan Karlsson
0c395c7799 7014851: Remove unused parallel compaction code
Removed.

Reviewed-by: jcoomes, brutisso
2011-02-08 12:33:19 +01:00
Y. Srinivas Ramakrishna
7eccb460db 6912621: iCMS: Error: assert(_markBitMap.isMarked(addr + 1),"Missing Printezis bit?")
Fix block_size_if_printezis_bits() so it does not expect the bits, only uses them when available. Fix block_size_no_stall() so it does not stall when the bits are missing such cases, letting the caller deal with zero size returns. Constant pool cache oops do not need to be unparsable or conc_unsafe after their klass pointer is installed. Some cosmetic clean-ups and some assertion checking for conc-usafety which, in the presence of class file redefinition, has no a-priori time boundedness, so all GCs must be able to safely deal with putatively conc-unsafe objects in a stop-world pause.

Reviewed-by: jmasa, johnc
2011-02-07 22:19:57 -08:00
Yasumasa Suenaga
60418bbde3 7015169: GC Cause not always set
Sometimes the gc cause was not always set. This caused JStat to print the wrong information.

Reviewed-by: tonyp, ysr
2011-02-03 20:49:09 -08:00
Paul Hohensee
5b37c4faec 7016998: gcutil class LinearLeastSquareFit doesn't initialize some of its fields
Initialize _sum_x_squared, _intercept and _slope in constructor.

Reviewed-by: bobv, coleenp
2011-02-03 16:06:01 -05:00
John Cuthbertson
3373070e7f 6923430: G1: assert(res != 0,"This should have worked.")
7007446: G1: expand the heap with a single step, not one region at a time

Changed G1CollectedHeap::expand() to expand the committed space by calling VirtualSpace::expand_by() once rather than for every region in the expansion amount. This allows the success or failure of the expansion to be determined before creating any heap regions. Introduced a develop flag G1ExitOnExpansionFailure (false by default) that, when true, will exit the VM if the expansion of the committed space fails. Finally G1CollectedHeap::expand() returns a status back to it's caller so that the caller knows whether to attempt the allocation.

Reviewed-by: brutisso, tonyp
2011-02-02 10:41:20 -08:00
Y. Srinivas Ramakrishna
1046ee088f 6999988: CMS: Increased fragmentation leading to promotion failure after CR#6631166 got implemented
Fix calculation of _desired, in free list statistics, which was missing an intended set of parentheses.

Reviewed-by: poonam, jmasa
2011-02-01 10:02:01 -08:00
Antonios Printezis
d18d952e56 7014679: G1: deadlock during concurrent cleanup
There's a potential deadlock between the concurrent cleanup thread and the GC workers that are trying to allocate and waiting for more free regions to be made available.

Reviewed-by: iveresov, jcoomes
2011-01-31 16:28:40 -05:00
Coleen Phillimore
7b4f8073f0 6990754: Use native memory and reference counting to implement SymbolTable
Move symbols from permgen into C heap and reference count them

Reviewed-by: never, acorn, jmasa, stefank
2011-01-27 16:11:27 -08:00
John Cuthbertson
58ac605fea Merge 2011-01-26 09:57:42 -08:00
Antonios Printezis
ded092cb70 7014261: G1: RSet-related failures
A race between the concurrent cleanup thread and the VM thread while it is processing the "expanded sparse table list" causes both threads to try to free the same sparse table entry and either causes one of the threads to fail or leaves the entry in an inconsistent state. The solution is purge all entries on the expanded list that correspond go regions that are being cleaned up.

Reviewed-by: brutisso, johnc
2011-01-25 17:58:19 -05:00
John Cuthbertson
ecdb5848eb 6608385: G1: need to support parallel reference processing
Implement support for ParallelRefProcEnabled in the reference processing that takes place at the end of G1 concurrent marking.

Reviewed-by: tonyp, ysr
2011-01-25 10:56:22 -08:00
Antonios Printezis
14f4450d25 7013718: G1: small fixes for two assert/guarantee failures
Two small fixes to deal with a guarantee failure (the marking thread should join the SuspendibleThreadSet before calling a method that does pause prediction work so that said method is never called during a pause) and an assert failure (an assert is too strong).

Reviewed-by: iveresov, johnc
2011-01-21 11:30:22 -05:00
John Cuthbertson
d31ff8a886 Merge 2011-01-20 13:57:12 -08:00
Antonios Printezis
8bce4a6620 6977804: G1: remove the zero-filling thread
This changeset removes the zero-filling thread from G1 and collapses the two free region lists we had before (the "free" and "unclean" lists) into one. The new free list uses the new heap region sets / lists abstractions that we'll ultimately use it to keep track of all regions in the heap. A heap region set was also introduced for the humongous regions. Finally, this change increases the concurrency between the thread that completes freeing regions (after a cleanup pause) and the rest of the system (before we'd have to wait for said thread to complete before allocating a new region). The changest also includes a lot of refactoring and code simplification.

Reviewed-by: jcoomes, johnc
2011-01-19 19:30:42 -05:00
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
Antonios Printezis
05b7df20dd 7011379: G1: overly long concurrent marking cycles
This changeset introduces filtering of SATB buffers at the point when they are about to be enqueued. If this filtering clears enough entries on each buffer, the buffer can then be re-used and not enqueued. This cuts down the number of SATB buffers that need to be processed by the concurrent marking threads.

Reviewed-by: johnc, ysr
2011-01-19 09:35:17 -05:00