# HG changeset patch # User iignatyev # Date 1482532087 0 # Node ID 4c896ebfaaa20be0ab787c3f691bbd9c4be14c33 # Parent 3f60d402df95d85a7419c0d9935d8a5184482959# Parent 8c70a25642c4ba6b4e1ac1713ea583d77267dd84 Merge diff -r 3f60d402df95 -r 4c896ebfaaa2 hotspot/src/share/vm/classfile/classLoaderData.cpp --- a/hotspot/src/share/vm/classfile/classLoaderData.cpp Wed Dec 21 15:01:01 2016 +0300 +++ b/hotspot/src/share/vm/classfile/classLoaderData.cpp Fri Dec 23 22:28:07 2016 +0000 @@ -94,7 +94,7 @@ _metaspace(NULL), _unloading(false), _klasses(NULL), _modules(NULL), _packages(NULL), _claimed(0), _jmethod_ids(NULL), _handles(NULL), _deallocate_list(NULL), - _next(NULL), _dependencies(dependencies), _shared_class_loader_id(-1), + _next(NULL), _dependencies(dependencies), _metaspace_lock(new Mutex(Monitor::leaf+1, "Metaspace allocation lock", true, Monitor::_safepoint_check_never)) { TRACE_INIT_ID(this); diff -r 3f60d402df95 -r 4c896ebfaaa2 hotspot/src/share/vm/classfile/classLoaderData.hpp --- a/hotspot/src/share/vm/classfile/classLoaderData.hpp Wed Dec 21 15:01:01 2016 +0300 +++ b/hotspot/src/share/vm/classfile/classLoaderData.hpp Fri Dec 23 22:28:07 2016 +0000 @@ -204,9 +204,6 @@ // Support for walking class loader data objects ClassLoaderData* _next; /// Next loader_datas created - // CDS - int _shared_class_loader_id; - // ReadOnly and ReadWrite metaspaces (static because only on the null // class loader for now). static Metaspace* _ro_metaspace; @@ -338,15 +335,6 @@ Metaspace* rw_metaspace(); void initialize_shared_metaspaces(); - int shared_class_loader_id() const { - return _shared_class_loader_id; - } - void set_shared_class_loader_id(int id) { - assert(id >= 0, "sanity"); - assert(_shared_class_loader_id <0, "cannot be assigned more than once"); - _shared_class_loader_id = id; - } - TRACE_DEFINE_TRACE_ID_METHODS; }; diff -r 3f60d402df95 -r 4c896ebfaaa2 hotspot/src/share/vm/classfile/systemDictionaryShared.hpp --- a/hotspot/src/share/vm/classfile/systemDictionaryShared.hpp Wed Dec 21 15:01:01 2016 +0300 +++ b/hotspot/src/share/vm/classfile/systemDictionaryShared.hpp Fri Dec 23 22:28:07 2016 +0000 @@ -29,7 +29,6 @@ #include "classfile/dictionary.hpp" class ClassFileStream; -class SerializeClosure; class SystemDictionaryShared: public SystemDictionary { public: @@ -79,8 +78,6 @@ return NULL; } - static void serialize(SerializeClosure* soc) {} - // The (non-application) CDS implementation supports only classes in the boot // class loader, which ensures that the verification constraints are the same // during archive creation time and runtime. Thus we can do the constraint checks diff -r 3f60d402df95 -r 4c896ebfaaa2 hotspot/src/share/vm/memory/metaspaceShared.cpp --- a/hotspot/src/share/vm/memory/metaspaceShared.cpp Wed Dec 21 15:01:01 2016 +0300 +++ b/hotspot/src/share/vm/memory/metaspaceShared.cpp Fri Dec 23 22:28:07 2016 +0000 @@ -145,10 +145,6 @@ StringTable::serialize(soc, string_space, space_size); soc->do_tag(--tag); - // Dump/restore the misc information for system dictionary - SystemDictionaryShared::serialize(soc); - soc->do_tag(--tag); - soc->do_tag(666); } diff -r 3f60d402df95 -r 4c896ebfaaa2 hotspot/test/ProblemList.txt --- a/hotspot/test/ProblemList.txt Wed Dec 21 15:01:01 2016 +0300 +++ b/hotspot/test/ProblemList.txt Fri Dec 23 22:28:07 2016 +0000 @@ -55,7 +55,6 @@ gc/g1/humongousObjects/objectGraphTest/TestObjectGraphAfterGC.java 8156755 generic-all gc/survivorAlignment/TestPromotionToSurvivor.java 8129886 generic-all -gc/stress/TestStressG1Humongous.java 8171045 generic-all ############################################################################# diff -r 3f60d402df95 -r 4c896ebfaaa2 hotspot/test/gc/stress/TestStressG1Humongous.java --- a/hotspot/test/gc/stress/TestStressG1Humongous.java Wed Dec 21 15:01:01 2016 +0300 +++ b/hotspot/test/gc/stress/TestStressG1Humongous.java Fri Dec 23 22:28:07 2016 +0000 @@ -28,14 +28,9 @@ * @summary Stress G1 by humongous allocations in situation near OOM * @requires vm.gc.G1 * @requires !vm.flightRecorder - * @run main/othervm/timeout=200 -Xlog:gc=debug -Xmx1g -XX:+UseG1GC -XX:G1HeapRegionSize=4m - * -Dtimeout=120 -Dthreads=3 -Dhumongoussize=1.1 -Dregionsize=4 TestStressG1Humongous - * @run main/othervm/timeout=200 -Xlog:gc=debug -Xmx1g -XX:+UseG1GC -XX:G1HeapRegionSize=16m - * -Dtimeout=120 -Dthreads=5 -Dhumongoussize=2.1 -Dregionsize=16 TestStressG1Humongous - * @run main/othervm/timeout=200 -Xlog:gc=debug -Xmx1g -XX:+UseG1GC -XX:G1HeapRegionSize=32m - * -Dtimeout=120 -Dthreads=4 -Dhumongoussize=0.6 -Dregionsize=32 TestStressG1Humongous - * @run main/othervm/timeout=700 -Xlog:gc=debug -Xmx1g -XX:+UseG1GC -XX:G1HeapRegionSize=1m - * -Dtimeout=600 -Dthreads=7 -Dhumongoussize=0.6 -Dregionsize=1 TestStressG1Humongous + * @library /test/lib + * @modules java.base/jdk.internal.misc + * @run driver/timeout=1300 TestStressG1Humongous */ import java.util.ArrayList; @@ -44,8 +39,45 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicInteger; -public class TestStressG1Humongous { +import jdk.test.lib.Platform; +import jdk.test.lib.Utils; +import jdk.test.lib.process.ProcessTools; +import jdk.test.lib.process.OutputAnalyzer; + +public class TestStressG1Humongous{ + + public static void main(String[] args) throws Exception { + // Limit heap size on 32-bit platforms + int heapSize = Platform.is32bit() ? 512 : 1024; + // Heap size, region size, threads, humongous size, timeout + run(heapSize, 4, 3, 1.1, 120); + run(heapSize, 16, 5, 2.1, 120); + run(heapSize, 32, 4, 0.6, 120); + run(heapSize, 1, 7, 0.6, 600); + } + private static void run(int heapSize, int regionSize, int threads, double humongousSize, int timeout) + throws Exception { + ArrayList options = new ArrayList<>(); + Collections.addAll(options, Utils.getTestJavaOpts()); + Collections.addAll(options, + "-Xlog:gc=debug", + "-Xmx" + heapSize + "m", + "-XX:+UseG1GC", + "-XX:G1HeapRegionSize=" + regionSize + "m", + "-Dtimeout=" + timeout, + "-Dthreads=" + threads, + "-Dhumongoussize=" + humongousSize, + "-Dregionsize=" + regionSize, + TestStressG1HumongousImpl.class.getName() + ); + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(options.toArray(new String[options.size()])); + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + output.shouldHaveExitValue(0); + } +} + +class TestStressG1HumongousImpl { // Timeout in seconds private static final int TIMEOUT = Integer.getInteger("timeout", 60); private static final int THREAD_COUNT = Integer.getInteger("threads", 2); @@ -60,10 +92,10 @@ public static final List GARBAGE = Collections.synchronizedList(new ArrayList<>()); public static void main(String[] args) throws InterruptedException { - new TestStressG1Humongous().run(); + new TestStressG1HumongousImpl().run(); } - public TestStressG1Humongous() { + public TestStressG1HumongousImpl() { isRunning = true; threads = new Thread[THREAD_COUNT]; alocatedObjectsCount = new AtomicInteger(0);