# HG changeset patch # User coleenp # Date 1495564928 0 # Node ID d530e842c5123d15f73c2680f8c66f06ce1c3fbc # Parent 40abcea5a9d5d12960b86e77ae3bdfa992cad4ee# Parent 01c282163d38c6ded06327aa74e922f03d826311 Merge diff -r 40abcea5a9d5 -r d530e842c512 hotspot/.hgtags --- a/hotspot/.hgtags Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/.hgtags Tue May 23 18:42:08 2017 +0000 @@ -579,3 +579,4 @@ 1ca7ed1b17b5776930d641d1379834f3140a74e4 jdk-9+167 fbb9c802649585d19f6d7e81b4a519d44806225a jdk-9+168 16d692be099c5c38eb48cc9aca78b0c900910d5b jdk-9+169 +38a240fd58a287acb1963920b92ed4d9c2fd39e3 jdk-9+170 diff -r 40abcea5a9d5 -r d530e842c512 hotspot/make/templates/gpl-cp-header --- a/hotspot/make/templates/gpl-cp-header Tue May 23 11:58:32 2017 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -Copyright (c) %YEARS%, Oracle and/or its affiliates. All rights reserved. -DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - -This code is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License version 2 only, as -published by the Free Software Foundation. Oracle designates this -particular file as subject to the "Classpath" exception as provided -by Oracle in the LICENSE file that accompanied this code. - -This code is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -version 2 for more details (a copy is included in the LICENSE file that -accompanied this code). - -You should have received a copy of the GNU General Public License version -2 along with this work; if not, write to the Free Software Foundation, -Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - -Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -or visit www.oracle.com if you need additional information or have any -questions. diff -r 40abcea5a9d5 -r d530e842c512 hotspot/make/templates/gpl-header --- a/hotspot/make/templates/gpl-header Tue May 23 11:58:32 2017 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -Copyright (c) %YEARS%, Oracle and/or its affiliates. All rights reserved. -DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - -This code is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License version 2 only, as -published by the Free Software Foundation. - -This code is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -version 2 for more details (a copy is included in the LICENSE file that -accompanied this code). - -You should have received a copy of the GNU General Public License version -2 along with this work; if not, write to the Free Software Foundation, -Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - -Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -or visit www.oracle.com if you need additional information or have any -questions. diff -r 40abcea5a9d5 -r d530e842c512 hotspot/src/cpu/aarch64/vm/templateTable_aarch64.cpp diff -r 40abcea5a9d5 -r d530e842c512 hotspot/src/share/vm/classfile/stringTable.cpp --- a/hotspot/src/share/vm/classfile/stringTable.cpp Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/src/share/vm/classfile/stringTable.cpp Tue May 23 18:42:08 2017 +0000 @@ -315,7 +315,11 @@ } void StringTable::unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int* processed, int* removed) { - buckets_unlink_or_oops_do(is_alive, f, 0, the_table()->table_size(), processed, removed); + BucketUnlinkContext context; + buckets_unlink_or_oops_do(is_alive, f, 0, the_table()->table_size(), &context); + _the_table->bulk_free_entries(&context); + *processed = context._num_processed; + *removed = context._num_removed; } void StringTable::possibly_parallel_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int* processed, int* removed) { @@ -324,6 +328,7 @@ assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint"); const int limit = the_table()->table_size(); + BucketUnlinkContext context; for (;;) { // Grab next set of buckets to scan int start_idx = Atomic::add(ClaimChunkSize, &_parallel_claimed_idx) - ClaimChunkSize; @@ -333,8 +338,11 @@ } int end_idx = MIN2(limit, start_idx + ClaimChunkSize); - buckets_unlink_or_oops_do(is_alive, f, start_idx, end_idx, processed, removed); + buckets_unlink_or_oops_do(is_alive, f, start_idx, end_idx, &context); } + _the_table->bulk_free_entries(&context); + *processed = context._num_processed; + *removed = context._num_removed; } void StringTable::buckets_oops_do(OopClosure* f, int start_idx, int end_idx) { @@ -360,7 +368,7 @@ } } -void StringTable::buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, int* processed, int* removed) { +void StringTable::buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, BucketUnlinkContext* context) { const int limit = the_table()->table_size(); assert(0 <= start_idx && start_idx <= limit, @@ -384,10 +392,9 @@ p = entry->next_addr(); } else { *p = entry->next(); - the_table()->free_entry(entry); - (*removed)++; + context->free_entry(entry); } - (*processed)++; + context->_num_processed++; entry = *p; } } diff -r 40abcea5a9d5 -r d530e842c512 hotspot/src/share/vm/classfile/stringTable.hpp --- a/hotspot/src/share/vm/classfile/stringTable.hpp Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/src/share/vm/classfile/stringTable.hpp Tue May 23 18:42:08 2017 +0000 @@ -61,9 +61,13 @@ // Apply the give oop closure to the entries to the buckets // in the range [start_idx, end_idx). static void buckets_oops_do(OopClosure* f, int start_idx, int end_idx); + + typedef StringTable::BucketUnlinkContext BucketUnlinkContext; // Unlink or apply the give oop closure to the entries to the buckets - // in the range [start_idx, end_idx). - static void buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, int* processed, int* removed); + // in the range [start_idx, end_idx). Unlinked bucket entries are collected in the given + // context to be freed later. + // This allows multiple threads to work on the table at once. + static void buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, BucketUnlinkContext* context); // Hashing algorithm, used as the hash value used by the // StringTable for bucket selection and comparison (stored in the diff -r 40abcea5a9d5 -r d530e842c512 hotspot/src/share/vm/classfile/symbolTable.cpp --- a/hotspot/src/share/vm/classfile/symbolTable.cpp Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/src/share/vm/classfile/symbolTable.cpp Tue May 23 18:42:08 2017 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -98,7 +98,7 @@ int SymbolTable::_symbols_counted = 0; volatile int SymbolTable::_parallel_claimed_idx = 0; -void SymbolTable::buckets_unlink(int start_idx, int end_idx, int* processed, int* removed) { +void SymbolTable::buckets_unlink(int start_idx, int end_idx, BucketUnlinkContext* context) { for (int i = start_idx; i < end_idx; ++i) { HashtableEntry** p = the_table()->bucket_addr(i); HashtableEntry* entry = the_table()->bucket(i); @@ -111,15 +111,14 @@ break; } Symbol* s = entry->literal(); - (*processed)++; + context->_num_processed++; assert(s != NULL, "just checking"); // If reference count is zero, remove. if (s->refcount() == 0) { assert(!entry->is_shared(), "shared entries should be kept live"); delete s; - (*removed)++; *p = entry->next(); - the_table()->free_entry(entry); + context->free_entry(entry); } else { p = entry->next_addr(); } @@ -132,17 +131,20 @@ // Remove unreferenced symbols from the symbol table // This is done late during GC. void SymbolTable::unlink(int* processed, int* removed) { - size_t memory_total = 0; - buckets_unlink(0, the_table()->table_size(), processed, removed); - _symbols_removed += *removed; - _symbols_counted += *processed; + BucketUnlinkContext context; + buckets_unlink(0, the_table()->table_size(), &context); + _the_table->bulk_free_entries(&context); + *processed = context._num_processed; + *removed = context._num_removed; + + _symbols_removed = context._num_removed; + _symbols_counted = context._num_processed; } void SymbolTable::possibly_parallel_unlink(int* processed, int* removed) { const int limit = the_table()->table_size(); - size_t memory_total = 0; - + BucketUnlinkContext context; for (;;) { // Grab next set of buckets to scan int start_idx = Atomic::add(ClaimChunkSize, &_parallel_claimed_idx) - ClaimChunkSize; @@ -152,10 +154,15 @@ } int end_idx = MIN2(limit, start_idx + ClaimChunkSize); - buckets_unlink(start_idx, end_idx, processed, removed); + buckets_unlink(start_idx, end_idx, &context); } - Atomic::add(*processed, &_symbols_counted); - Atomic::add(*removed, &_symbols_removed); + + _the_table->bulk_free_entries(&context); + *processed = context._num_processed; + *removed = context._num_removed; + + Atomic::add(context._num_processed, &_symbols_counted); + Atomic::add(context._num_removed, &_symbols_removed); } // Create a new table and using alternate hash code, populate the new table diff -r 40abcea5a9d5 -r d530e842c512 hotspot/src/share/vm/classfile/symbolTable.hpp --- a/hotspot/src/share/vm/classfile/symbolTable.hpp Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/src/share/vm/classfile/symbolTable.hpp Tue May 23 18:42:08 2017 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -154,8 +154,11 @@ static volatile int _parallel_claimed_idx; - // Release any dead symbols - static void buckets_unlink(int start_idx, int end_idx, int* processed, int* removed); + typedef SymbolTable::BucketUnlinkContext BucketUnlinkContext; + // Release any dead symbols. Unlinked bucket entries are collected in the given + // context to be freed later. + // This allows multiple threads to work on the table at once. + static void buckets_unlink(int start_idx, int end_idx, BucketUnlinkContext* context); public: enum { symbol_alloc_batch_size = 8, diff -r 40abcea5a9d5 -r d530e842c512 hotspot/src/share/vm/runtime/vmStructs.cpp --- a/hotspot/src/share/vm/runtime/vmStructs.cpp Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/src/share/vm/runtime/vmStructs.cpp Tue May 23 18:42:08 2017 +0000 @@ -676,7 +676,7 @@ \ nonstatic_field(BasicHashtable, _table_size, int) \ nonstatic_field(BasicHashtable, _buckets, HashtableBucket*) \ - nonstatic_field(BasicHashtable, _free_list, BasicHashtableEntry*) \ + volatile_nonstatic_field(BasicHashtable, _free_list, BasicHashtableEntry*) \ nonstatic_field(BasicHashtable, _first_free_entry, char*) \ nonstatic_field(BasicHashtable, _end_block, char*) \ nonstatic_field(BasicHashtable, _entry_size, int) \ diff -r 40abcea5a9d5 -r d530e842c512 hotspot/src/share/vm/utilities/hashtable.cpp --- a/hotspot/src/share/vm/utilities/hashtable.cpp Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/src/share/vm/utilities/hashtable.cpp Tue May 23 18:42:08 2017 +0000 @@ -159,6 +159,35 @@ } } +template void BasicHashtable::BucketUnlinkContext::free_entry(BasicHashtableEntry* entry) { + entry->set_next(_removed_head); + _removed_head = entry; + if (_removed_tail == NULL) { + _removed_tail = entry; + } + _num_removed++; +} + +template void BasicHashtable::bulk_free_entries(BucketUnlinkContext* context) { + if (context->_num_removed == 0) { + assert(context->_removed_head == NULL && context->_removed_tail == NULL, + "Zero entries in the unlink context, but elements linked from " PTR_FORMAT " to " PTR_FORMAT, + p2i(context->_removed_head), p2i(context->_removed_tail)); + return; + } + + // MT-safe add of the list of BasicHashTableEntrys from the context to the free list. + BasicHashtableEntry* current = _free_list; + while (true) { + context->_removed_tail->set_next(current); + BasicHashtableEntry* old = (BasicHashtableEntry*)Atomic::cmpxchg_ptr(context->_removed_head, &_free_list, current); + if (old == current) { + break; + } + current = old; + } + Atomic::add(-context->_num_removed, &_number_of_entries); +} // Copy the table to the shared space. @@ -192,7 +221,6 @@ } } - template int RehashableHashtable::literal_size(Symbol *symbol) { return symbol->size() * HeapWordSize; } diff -r 40abcea5a9d5 -r d530e842c512 hotspot/src/share/vm/utilities/hashtable.hpp --- a/hotspot/src/share/vm/utilities/hashtable.hpp Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/src/share/vm/utilities/hashtable.hpp Tue May 23 18:42:08 2017 +0000 @@ -162,11 +162,11 @@ // Instance variables int _table_size; HashtableBucket* _buckets; - BasicHashtableEntry* _free_list; + BasicHashtableEntry* volatile _free_list; char* _first_free_entry; char* _end_block; int _entry_size; - int _number_of_entries; + volatile int _number_of_entries; protected: @@ -211,6 +211,24 @@ // Free the buckets in this hashtable void free_buckets(); + // Helper data structure containing context for the bucket entry unlink process, + // storing the unlinked buckets in a linked list. + // Also avoids the need to pass around these four members as parameters everywhere. + struct BucketUnlinkContext { + int _num_processed; + int _num_removed; + // Head and tail pointers for the linked list of removed entries. + BasicHashtableEntry* _removed_head; + BasicHashtableEntry* _removed_tail; + + BucketUnlinkContext() : _num_processed(0), _num_removed(0), _removed_head(NULL), _removed_tail(NULL) { + } + + void free_entry(BasicHashtableEntry* entry); + }; + // Add of bucket entries linked together in the given context to the global free list. This method + // is mt-safe wrt. to other calls of this method. + void bulk_free_entries(BucketUnlinkContext* context); public: int table_size() { return _table_size; } void set_entry(int index, BasicHashtableEntry* entry); diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/gc/arguments/TestDynMaxHeapFreeRatio.java --- a/hotspot/test/gc/arguments/TestDynMaxHeapFreeRatio.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/gc/arguments/TestDynMaxHeapFreeRatio.java Tue May 23 18:42:08 2017 +0000 @@ -24,7 +24,7 @@ import static jdk.test.lib.Asserts.assertEQ; import static jdk.test.lib.Asserts.assertFalse; import static jdk.test.lib.Asserts.assertTrue; -import jdk.test.lib.DynamicVMOption; +import jdk.test.lib.management.DynamicVMOption; /** * @test TestDynMaxHeapFreeRatio diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/gc/arguments/TestDynMinHeapFreeRatio.java --- a/hotspot/test/gc/arguments/TestDynMinHeapFreeRatio.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/gc/arguments/TestDynMinHeapFreeRatio.java Tue May 23 18:42:08 2017 +0000 @@ -38,7 +38,7 @@ import static jdk.test.lib.Asserts.assertEQ; import static jdk.test.lib.Asserts.assertFalse; import static jdk.test.lib.Asserts.assertTrue; -import jdk.test.lib.DynamicVMOption; +import jdk.test.lib.management.DynamicVMOption; public class TestDynMinHeapFreeRatio { diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/gc/metaspace/TestMetaspacePerfCounters.java --- a/hotspot/test/gc/metaspace/TestMetaspacePerfCounters.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/gc/metaspace/TestMetaspacePerfCounters.java Tue May 23 18:42:08 2017 +0000 @@ -26,7 +26,7 @@ import java.util.ArrayList; import jdk.test.lib.ByteCodeLoader; -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.test.lib.Platform; import sun.management.ManagementFactoryHelper; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/gc/parallel/TestDynShrinkHeap.java --- a/hotspot/test/gc/parallel/TestDynShrinkHeap.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/gc/parallel/TestDynShrinkHeap.java Tue May 23 18:42:08 2017 +0000 @@ -31,7 +31,7 @@ * @library /test/lib / * @run main/othervm -XX:+UseAdaptiveSizePolicyWithSystemGC -XX:+UseParallelGC -XX:MinHeapFreeRatio=0 -XX:MaxHeapFreeRatio=100 -Xmx1g -verbose:gc TestDynShrinkHeap */ -import jdk.test.lib.DynamicVMOption; +import jdk.test.lib.management.DynamicVMOption; import java.lang.management.ManagementFactory; import java.lang.management.MemoryUsage; import java.util.ArrayList; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/BadObjectClass/BootstrapRedefine.java --- a/hotspot/test/runtime/BadObjectClass/BootstrapRedefine.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/BadObjectClass/BootstrapRedefine.java Tue May 23 18:42:08 2017 +0000 @@ -31,7 +31,7 @@ * @run main BootstrapRedefine */ -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.test.lib.process.ProcessTools; import jdk.test.lib.process.OutputAnalyzer; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/CommandLine/OptionsValidation/TestJcmdOutput.java --- a/hotspot/test/runtime/CommandLine/OptionsValidation/TestJcmdOutput.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/CommandLine/OptionsValidation/TestJcmdOutput.java Tue May 23 18:42:08 2017 +0000 @@ -34,7 +34,7 @@ */ import jdk.test.lib.Asserts; -import jdk.test.lib.DynamicVMOption; +import jdk.test.lib.management.DynamicVMOption; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; import jdk.test.lib.dcmd.PidJcmdExecutor; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/CommandLine/OptionsValidation/common/optionsvalidation/JVMOption.java --- a/hotspot/test/runtime/CommandLine/OptionsValidation/common/optionsvalidation/JVMOption.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/CommandLine/OptionsValidation/common/optionsvalidation/JVMOption.java Tue May 23 18:42:08 2017 +0000 @@ -29,7 +29,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import jdk.test.lib.DynamicVMOption; +import jdk.test.lib.management.DynamicVMOption; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; import jdk.test.lib.dcmd.CommandExecutor; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/CommandLine/VMOptionsFile/TestVMOptionsFile.java --- a/hotspot/test/runtime/CommandLine/VMOptionsFile/TestVMOptionsFile.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/CommandLine/VMOptionsFile/TestVMOptionsFile.java Tue May 23 18:42:08 2017 +0000 @@ -51,7 +51,7 @@ import java.util.Properties; import java.util.Set; import jdk.test.lib.Asserts; -import jdk.test.lib.DynamicVMOption; +import jdk.test.lib.management.DynamicVMOption; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/RedefineTests/ModifyAnonymous.java --- a/hotspot/test/runtime/RedefineTests/ModifyAnonymous.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/RedefineTests/ModifyAnonymous.java Tue May 23 18:42:08 2017 +0000 @@ -34,15 +34,14 @@ import java.io.FileNotFoundException; import java.io.PrintWriter; -import java.lang.NoSuchFieldException; -import java.lang.NoSuchMethodException; import java.lang.RuntimeException; import java.lang.instrument.ClassDefinition; import java.lang.instrument.ClassFileTransformer; import java.lang.instrument.IllegalClassFormatException; import java.lang.instrument.Instrumentation; import java.security.ProtectionDomain; -import jdk.test.lib.*; + +import jdk.test.lib.compiler.InMemoryJavaCompiler; public class ModifyAnonymous { diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/Unsafe/DefineClass.java --- a/hotspot/test/runtime/Unsafe/DefineClass.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/Unsafe/DefineClass.java Tue May 23 18:42:08 2017 +0000 @@ -32,8 +32,8 @@ */ import java.security.ProtectionDomain; -import java.io.InputStream; -import jdk.test.lib.InMemoryJavaCompiler; + +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.internal.misc.Unsafe; import static jdk.test.lib.Asserts.*; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/Unsafe/NestedUnsafe.java --- a/hotspot/test/runtime/Unsafe/NestedUnsafe.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/Unsafe/NestedUnsafe.java Tue May 23 18:42:08 2017 +0000 @@ -31,12 +31,9 @@ * @run main NestedUnsafe */ -import java.security.ProtectionDomain; -import java.io.InputStream; import java.lang.*; -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.internal.misc.Unsafe; -import static jdk.test.lib.Asserts.*; // package p; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/defineAnonClass/NestedUnsafe.java --- a/hotspot/test/runtime/defineAnonClass/NestedUnsafe.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/defineAnonClass/NestedUnsafe.java Tue May 23 18:42:08 2017 +0000 @@ -34,11 +34,10 @@ package p; -import java.security.ProtectionDomain; -import java.io.InputStream; import java.lang.*; -import jdk.test.lib.*; + import jdk.internal.misc.Unsafe; +import jdk.test.lib.compiler.InMemoryJavaCompiler; // Test that an anonymous class in package 'p' cannot define its own anonymous class diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/defineAnonClass/NestedUnsafe2.java --- a/hotspot/test/runtime/defineAnonClass/NestedUnsafe2.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/defineAnonClass/NestedUnsafe2.java Tue May 23 18:42:08 2017 +0000 @@ -34,11 +34,10 @@ package p; -import java.security.ProtectionDomain; -import java.io.InputStream; import java.lang.*; -import jdk.test.lib.*; + import jdk.internal.misc.Unsafe; +import jdk.test.lib.compiler.InMemoryJavaCompiler; // Test that an anonymous class that gets put in its host's package cannot define diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/getSysPackage/GetSysPkgTest.java --- a/hotspot/test/runtime/getSysPackage/GetSysPkgTest.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/getSysPackage/GetSysPkgTest.java Tue May 23 18:42:08 2017 +0000 @@ -33,7 +33,7 @@ import java.io.File; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.test.lib.process.ProcessTools; import jdk.test.lib.process.OutputAnalyzer; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/modules/ModuleStress/ModuleStress.java --- a/hotspot/test/runtime/modules/ModuleStress/ModuleStress.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/modules/ModuleStress/ModuleStress.java Tue May 23 18:42:08 2017 +0000 @@ -38,8 +38,7 @@ import jdk.test.lib.process.ProcessTools; import jdk.test.lib.process.OutputAnalyzer; -import jdk.test.lib.InMemoryJavaCompiler; -import java.io.File; +import jdk.test.lib.compiler.InMemoryJavaCompiler; public class ModuleStress { diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/modules/PatchModule/PatchModule2Dirs.java --- a/hotspot/test/runtime/modules/PatchModule/PatchModule2Dirs.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/modules/PatchModule/PatchModule2Dirs.java Tue May 23 18:42:08 2017 +0000 @@ -30,10 +30,9 @@ * @run main PatchModule2Dirs */ -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; -import java.io.File; public class PatchModule2Dirs { diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/modules/PatchModule/PatchModuleCDS.java --- a/hotspot/test/runtime/modules/PatchModule/PatchModuleCDS.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/modules/PatchModule/PatchModuleCDS.java Tue May 23 18:42:08 2017 +0000 @@ -31,8 +31,7 @@ * @run main PatchModuleCDS */ -import java.io.File; -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/modules/PatchModule/PatchModuleClassList.java --- a/hotspot/test/runtime/modules/PatchModule/PatchModuleClassList.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/modules/PatchModule/PatchModuleClassList.java Tue May 23 18:42:08 2017 +0000 @@ -33,7 +33,7 @@ import java.nio.file.Files; import java.nio.file.Paths; -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/modules/PatchModule/PatchModuleJavaBase.java --- a/hotspot/test/runtime/modules/PatchModule/PatchModuleJavaBase.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/modules/PatchModule/PatchModuleJavaBase.java Tue May 23 18:42:08 2017 +0000 @@ -31,7 +31,7 @@ * @run main PatchModuleJavaBase */ -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/modules/PatchModule/PatchModuleTest.java --- a/hotspot/test/runtime/modules/PatchModule/PatchModuleTest.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/modules/PatchModule/PatchModuleTest.java Tue May 23 18:42:08 2017 +0000 @@ -31,7 +31,7 @@ * @run main PatchModuleTest */ -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/modules/PatchModule/PatchModuleTestJar.java --- a/hotspot/test/runtime/modules/PatchModule/PatchModuleTestJar.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/modules/PatchModule/PatchModuleTestJar.java Tue May 23 18:42:08 2017 +0000 @@ -31,7 +31,7 @@ * @run main PatchModuleTestJar */ -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/modules/PatchModule/PatchModuleTestJarDir.java --- a/hotspot/test/runtime/modules/PatchModule/PatchModuleTestJarDir.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/modules/PatchModule/PatchModuleTestJarDir.java Tue May 23 18:42:08 2017 +0000 @@ -32,8 +32,8 @@ */ import java.io.File; -import java.nio.file.Files; -import jdk.test.lib.InMemoryJavaCompiler; + +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/modules/PatchModule/PatchModuleTraceCL.java --- a/hotspot/test/runtime/modules/PatchModule/PatchModuleTraceCL.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/modules/PatchModule/PatchModuleTraceCL.java Tue May 23 18:42:08 2017 +0000 @@ -32,8 +32,7 @@ * @run main PatchModuleTraceCL */ -import java.io.File; -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/modules/Visibility/PatchModuleVisibility.java --- a/hotspot/test/runtime/modules/Visibility/PatchModuleVisibility.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/modules/Visibility/PatchModuleVisibility.java Tue May 23 18:42:08 2017 +0000 @@ -36,7 +36,7 @@ import java.nio.file.Files; import java.nio.file.Paths; -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/modules/Visibility/XbootcpNoVisibility.java --- a/hotspot/test/runtime/modules/Visibility/XbootcpNoVisibility.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/modules/Visibility/XbootcpNoVisibility.java Tue May 23 18:42:08 2017 +0000 @@ -31,7 +31,7 @@ * @run main/othervm XbootcpNoVisibility */ -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.test.lib.process.ProcessTools; import jdk.test.lib.process.OutputAnalyzer; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/modules/Visibility/XbootcpVisibility.java --- a/hotspot/test/runtime/modules/Visibility/XbootcpVisibility.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/modules/Visibility/XbootcpVisibility.java Tue May 23 18:42:08 2017 +0000 @@ -36,7 +36,7 @@ import java.nio.file.Files; import java.nio.file.Paths; -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; diff -r 40abcea5a9d5 -r d530e842c512 hotspot/test/runtime/noClassDefFoundMsg/NoClassDefFoundMsg.java --- a/hotspot/test/runtime/noClassDefFoundMsg/NoClassDefFoundMsg.java Tue May 23 11:58:32 2017 -0400 +++ b/hotspot/test/runtime/noClassDefFoundMsg/NoClassDefFoundMsg.java Tue May 23 18:42:08 2017 +0000 @@ -31,7 +31,7 @@ * @run main/native NoClassDefFoundMsg */ -import jdk.test.lib.InMemoryJavaCompiler; +import jdk.test.lib.compiler.InMemoryJavaCompiler; import jdk.internal.misc.Unsafe; public class NoClassDefFoundMsg {