diff options
author | Ivan Dubrov <idubrov@guidewire.com> | 2015-03-31 18:14:18 -0700 |
---|---|---|
committer | Ivan Dubrov <idubrov@guidewire.com> | 2015-03-31 18:16:53 -0700 |
commit | 53c3f53814ae54b4450fc68f01f1972631eaf9e8 (patch) | |
tree | 4474eab37dec71cbdc2b368ee48d0376c7b9ab2a /hotspot/.hg/patches/gc-java8.patch | |
parent | b620f801f5a0382da772f73af23da315667357a4 (diff) | |
download | dcevm-53c3f53814ae54b4450fc68f01f1972631eaf9e8.tar.gz dcevm-53c3f53814ae54b4450fc68f01f1972631eaf9e8.zip |
jdk8u40-b25 updates
Diffstat (limited to 'hotspot/.hg/patches/gc-java8.patch')
-rw-r--r-- | hotspot/.hg/patches/gc-java8.patch | 122 |
1 files changed, 64 insertions, 58 deletions
diff --git a/hotspot/.hg/patches/gc-java8.patch b/hotspot/.hg/patches/gc-java8.patch index b190c7d8..f4c471a3 100644 --- a/hotspot/.hg/patches/gc-java8.patch +++ b/hotspot/.hg/patches/gc-java8.patch @@ -1,8 +1,11 @@ +# HG changeset patch +# Parent 8f44f8a7e50563e6c9a82fb0ed6c7bce4925bd3b Change MarkAndSweep garbage collector to allow changing instances during redefinition. -diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ---- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp -+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp -@@ -161,6 +161,12 @@ + +diff -r 8f44f8a7e505 src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp +--- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp Tue Mar 31 18:01:20 2015 -0700 ++++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp Tue Mar 31 18:05:19 2015 -0700 +@@ -163,6 +163,12 @@ } } @@ -15,7 +18,7 @@ diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeL // Like CompactibleSpace forward() but always calls cross_threshold() to // update the block offset table. Removed initialize_threshold call because // CFLS does not use a block offset array for contiguous spaces. -@@ -2098,7 +2104,7 @@ +@@ -2097,7 +2103,7 @@ // Support for compaction void CompactibleFreeListSpace::prepare_for_compaction(CompactPoint* cp) { @@ -24,7 +27,7 @@ diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeL // prepare_for_compaction() uses the space between live objects // so that later phase can skip dead space quickly. So verification // of the free lists doesn't work after. -@@ -2119,7 +2125,7 @@ +@@ -2118,7 +2124,7 @@ } void CompactibleFreeListSpace::compact() { @@ -33,9 +36,9 @@ diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeL } // fragmentation_metric = 1 - [sum of (fbs**2) / (sum of fbs)**2] -diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp ---- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp -+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp +diff -r 8f44f8a7e505 src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp +--- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp Tue Mar 31 18:01:20 2015 -0700 ++++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp Tue Mar 31 18:05:19 2015 -0700 @@ -150,6 +150,7 @@ // Support for compacting cms @@ -44,19 +47,19 @@ diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeL HeapWord* forward(oop q, size_t size, CompactPoint* cp, HeapWord* compact_top); // Initialization helpers. -diff --git a/src/share/vm/gc_implementation/shared/markSweep.cpp b/src/share/vm/gc_implementation/shared/markSweep.cpp ---- a/src/share/vm/gc_implementation/shared/markSweep.cpp -+++ b/src/share/vm/gc_implementation/shared/markSweep.cpp -@@ -46,6 +46,8 @@ +diff -r 8f44f8a7e505 src/share/vm/gc_implementation/shared/markSweep.cpp +--- a/src/share/vm/gc_implementation/shared/markSweep.cpp Tue Mar 31 18:01:20 2015 -0700 ++++ b/src/share/vm/gc_implementation/shared/markSweep.cpp Tue Mar 31 18:05:19 2015 -0700 +@@ -48,6 +48,8 @@ STWGCTimer* MarkSweep::_gc_timer = NULL; SerialOldTracer* MarkSweep::_gc_tracer = NULL; +GrowableArray<HeapWord*>* MarkSweep::_rescued_oops = NULL; + MarkSweep::FollowRootClosure MarkSweep::follow_root_closure; - CodeBlobToOopClosure MarkSweep::follow_code_root_closure(&MarkSweep::follow_root_closure, /*do_marking=*/ true); -@@ -171,3 +173,100 @@ + void MarkSweep::FollowRootClosure::do_oop(oop* p) { follow_root(p); } +@@ -165,3 +167,100 @@ } #endif @@ -157,10 +160,10 @@ diff --git a/src/share/vm/gc_implementation/shared/markSweep.cpp b/src/share/vm/ + } + } +} -diff --git a/src/share/vm/gc_implementation/shared/markSweep.hpp b/src/share/vm/gc_implementation/shared/markSweep.hpp ---- a/src/share/vm/gc_implementation/shared/markSweep.hpp -+++ b/src/share/vm/gc_implementation/shared/markSweep.hpp -@@ -107,8 +107,12 @@ +diff -r 8f44f8a7e505 src/share/vm/gc_implementation/shared/markSweep.hpp +--- a/src/share/vm/gc_implementation/shared/markSweep.hpp Tue Mar 31 18:01:20 2015 -0700 ++++ b/src/share/vm/gc_implementation/shared/markSweep.hpp Tue Mar 31 18:05:19 2015 -0700 +@@ -96,8 +96,12 @@ friend class AdjustPointerClosure; friend class KeepAliveClosure; friend class VM_MarkSweep; @@ -173,7 +176,7 @@ diff --git a/src/share/vm/gc_implementation/shared/markSweep.hpp b/src/share/vm/ // // Vars // -@@ -169,6 +173,9 @@ +@@ -157,6 +161,9 @@ static inline void push_objarray(oop obj, size_t index); @@ -183,17 +186,17 @@ diff --git a/src/share/vm/gc_implementation/shared/markSweep.hpp b/src/share/vm/ static void follow_stack(); // Empty marking stack. static void follow_klass(Klass* klass); -diff --git a/src/share/vm/memory/genMarkSweep.cpp b/src/share/vm/memory/genMarkSweep.cpp ---- a/src/share/vm/memory/genMarkSweep.cpp -+++ b/src/share/vm/memory/genMarkSweep.cpp -@@ -334,11 +334,16 @@ +diff -r 8f44f8a7e505 src/share/vm/memory/genMarkSweep.cpp +--- a/src/share/vm/memory/genMarkSweep.cpp Tue Mar 31 18:01:20 2015 -0700 ++++ b/src/share/vm/memory/genMarkSweep.cpp Tue Mar 31 18:05:19 2015 -0700 +@@ -327,11 +327,16 @@ // in the same order in phase2, phase3 and phase4. We don't quite do that // here (perm_gen first rather than last), so we tell the validate code // to use a higher index (saved from phase2) when verifying perm_gen. + assert(_rescued_oops == NULL, "must be empty before processing"); GenCollectedHeap* gch = GenCollectedHeap::heap(); - GCTraceTime tm("phase 4", PrintGC && Verbose, true, _gc_timer); + GCTraceTime tm("phase 4", PrintGC && Verbose, true, _gc_timer, _gc_tracer->gc_id()); trace("4"); + MarkSweep::copy_rescued_objects_back(); @@ -203,10 +206,10 @@ diff --git a/src/share/vm/memory/genMarkSweep.cpp b/src/share/vm/memory/genMarkS + + MarkSweep::copy_rescued_objects_back(); } -diff --git a/src/share/vm/memory/space.cpp b/src/share/vm/memory/space.cpp ---- a/src/share/vm/memory/space.cpp -+++ b/src/share/vm/memory/space.cpp -@@ -379,9 +379,8 @@ +diff -r 8f44f8a7e505 src/share/vm/memory/space.cpp +--- a/src/share/vm/memory/space.cpp Tue Mar 31 18:01:20 2015 -0700 ++++ b/src/share/vm/memory/space.cpp Tue Mar 31 18:05:19 2015 -0700 +@@ -377,9 +377,8 @@ _compaction_top = bottom(); } @@ -218,7 +221,7 @@ diff --git a/src/share/vm/memory/space.cpp b/src/share/vm/memory/space.cpp // First check if we should switch compaction space assert(this == cp->space, "'this' should be current compaction space."); size_t compaction_max_size = pointer_delta(end(), compact_top); -@@ -401,8 +400,15 @@ +@@ -399,8 +398,15 @@ compaction_max_size = pointer_delta(cp->space->end(), compact_top); } @@ -235,7 +238,7 @@ diff --git a/src/share/vm/memory/space.cpp b/src/share/vm/memory/space.cpp q->forward_to(oop(compact_top)); assert(q->is_gc_marked(), "encoding the pointer should preserve the mark"); } else { -@@ -423,6 +429,58 @@ +@@ -421,6 +427,58 @@ return compact_top; } @@ -294,7 +297,7 @@ diff --git a/src/share/vm/memory/space.cpp b/src/share/vm/memory/space.cpp bool CompactibleSpace::insert_deadspace(size_t& allowed_deadspace_words, HeapWord* q, size_t deadlength) { -@@ -444,12 +502,17 @@ +@@ -442,12 +500,17 @@ #define adjust_obj_size(s) s void CompactibleSpace::prepare_for_compaction(CompactPoint* cp) { @@ -314,7 +317,7 @@ diff --git a/src/share/vm/memory/space.cpp b/src/share/vm/memory/space.cpp } void Space::adjust_pointers() { -@@ -487,6 +550,111 @@ +@@ -485,6 +548,111 @@ assert(q == t, "just checking"); } @@ -426,7 +429,7 @@ diff --git a/src/share/vm/memory/space.cpp b/src/share/vm/memory/space.cpp void CompactibleSpace::adjust_pointers() { // Check first is there is any work to do. if (used() == 0) { -@@ -497,7 +665,12 @@ +@@ -495,7 +663,12 @@ } void CompactibleSpace::compact() { @@ -440,10 +443,10 @@ diff --git a/src/share/vm/memory/space.cpp b/src/share/vm/memory/space.cpp } void Space::print_short() const { print_short_on(tty); } -diff --git a/src/share/vm/memory/space.hpp b/src/share/vm/memory/space.hpp ---- a/src/share/vm/memory/space.hpp -+++ b/src/share/vm/memory/space.hpp -@@ -450,6 +450,9 @@ +diff -r 8f44f8a7e505 src/share/vm/memory/space.hpp +--- a/src/share/vm/memory/space.hpp Tue Mar 31 18:01:20 2015 -0700 ++++ b/src/share/vm/memory/space.hpp Tue Mar 31 18:05:19 2015 -0700 +@@ -392,6 +392,9 @@ // indicates when the next such action should be taken. virtual void prepare_for_compaction(CompactPoint* cp); // MarkSweep support phase3 @@ -453,7 +456,7 @@ diff --git a/src/share/vm/memory/space.hpp b/src/share/vm/memory/space.hpp virtual void adjust_pointers(); // MarkSweep support phase4 virtual void compact(); -@@ -479,6 +482,15 @@ +@@ -421,6 +424,15 @@ // accordingly". virtual HeapWord* forward(oop q, size_t size, CompactPoint* cp, HeapWord* compact_top); @@ -469,16 +472,19 @@ diff --git a/src/share/vm/memory/space.hpp b/src/share/vm/memory/space.hpp // Return a size with adjusments as required of the space. virtual size_t adjust_object_size_v(size_t size) const { return size; } -@@ -509,7 +521,7 @@ - size_t word_len); - }; +diff -r 8f44f8a7e505 src/share/vm/memory/space.inline.hpp +--- a/src/share/vm/memory/space.inline.hpp Tue Mar 31 18:01:20 2015 -0700 ++++ b/src/share/vm/memory/space.inline.hpp Tue Mar 31 18:05:19 2015 -0700 +@@ -35,7 +35,7 @@ + return block_start_const(p); + } -#define SCAN_AND_FORWARD(cp,scan_limit,block_is_obj,block_size) { \ +#define SCAN_AND_FORWARD(cp,scan_limit,block_is_obj,block_size,redefinition_run) { \ /* Compute the new addresses for the live objects and store it in the mark \ * Used by universe::mark_sweep_phase2() \ */ \ -@@ -567,7 +579,17 @@ +@@ -93,7 +93,17 @@ /* prefetch beyond q */ \ Prefetch::write(q, interval); \ size_t size = block_size(q); \ @@ -496,7 +502,7 @@ diff --git a/src/share/vm/memory/space.hpp b/src/share/vm/memory/space.hpp q += size; \ end_of_live = q; \ } else { \ -@@ -616,6 +638,8 @@ +@@ -142,6 +152,8 @@ } \ } \ \ @@ -505,7 +511,7 @@ diff --git a/src/share/vm/memory/space.hpp b/src/share/vm/memory/space.hpp assert(q == t, "just checking"); \ if (liveRange != NULL) { \ liveRange->set_end(q); \ -@@ -662,13 +686,8 @@ +@@ -188,13 +200,8 @@ q += size; \ } \ \ @@ -521,7 +527,7 @@ diff --git a/src/share/vm/memory/space.hpp b/src/share/vm/memory/space.hpp } \ \ const intx interval = PrefetchScanIntervalInBytes; \ -@@ -696,7 +715,7 @@ +@@ -222,7 +229,7 @@ assert(q == t, "just checking"); \ } @@ -530,7 +536,7 @@ diff --git a/src/share/vm/memory/space.hpp b/src/share/vm/memory/space.hpp /* Copy all live objects to their new location \ * Used by MarkSweep::mark_sweep_phase4() */ \ \ -@@ -721,13 +740,9 @@ +@@ -247,13 +254,9 @@ } \ ) /* debug_only */ \ \ @@ -546,7 +552,7 @@ diff --git a/src/share/vm/memory/space.hpp b/src/share/vm/memory/space.hpp \ const intx scan_interval = PrefetchScanIntervalInBytes; \ const intx copy_interval = PrefetchCopyIntervalInBytes; \ -@@ -745,11 +760,34 @@ +@@ -271,11 +274,34 @@ size_t size = obj_size(q); \ HeapWord* compaction_top = (HeapWord*)oop(q)->forwardee(); \ \ @@ -582,22 +588,22 @@ diff --git a/src/share/vm/memory/space.hpp b/src/share/vm/memory/space.hpp Copy::aligned_conjoint_words(q, compaction_top, size); \ oop(compaction_top)->init_mark(); \ assert(oop(compaction_top)->klass() != NULL, "should have a class"); \ -diff --git a/src/share/vm/memory/universe.cpp b/src/share/vm/memory/universe.cpp ---- a/src/share/vm/memory/universe.cpp -+++ b/src/share/vm/memory/universe.cpp -@@ -78,6 +78,8 @@ - #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp" - #endif // INCLUDE_ALL_GCS +diff -r 8f44f8a7e505 src/share/vm/memory/universe.cpp +--- a/src/share/vm/memory/universe.cpp Tue Mar 31 18:01:20 2015 -0700 ++++ b/src/share/vm/memory/universe.cpp Tue Mar 31 18:05:19 2015 -0700 +@@ -84,6 +84,8 @@ + + PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC +bool Universe::_is_redefining_gc_run = false; + // Known objects Klass* Universe::_boolArrayKlassObj = NULL; Klass* Universe::_byteArrayKlassObj = NULL; -diff --git a/src/share/vm/memory/universe.hpp b/src/share/vm/memory/universe.hpp ---- a/src/share/vm/memory/universe.hpp -+++ b/src/share/vm/memory/universe.hpp -@@ -248,7 +248,13 @@ +diff -r 8f44f8a7e505 src/share/vm/memory/universe.hpp +--- a/src/share/vm/memory/universe.hpp Tue Mar 31 18:01:20 2015 -0700 ++++ b/src/share/vm/memory/universe.hpp Tue Mar 31 18:05:19 2015 -0700 +@@ -251,7 +251,13 @@ static void compute_verify_oop_data(); |