Merge
authorprr
Thu, 12 Jul 2018 11:09:23 -0700
changeset 51166 97f4558b287f
parent 51165 6d59a6d025e8 (current diff)
parent 51043 6c449bdee4fa (diff)
child 51167 d03b04e7569a
Merge
src/java.base/share/classes/sun/net/NetworkServer.java
src/java.base/share/classes/sun/net/URLCanonicalizer.java
src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/AltHashing.java
src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/SymbolTable.java
test/hotspot/jtreg/runtime/SharedArchiveFile/SASymbolTableTest.java
test/hotspot/jtreg/runtime/SharedArchiveFile/SASymbolTableTestAgent.java
test/hotspot/jtreg/serviceability/sa/ClhsdbSymbol.java
test/hotspot/jtreg/serviceability/sa/ClhsdbSymbolTable.java
test/hotspot/jtreg/vmTestbase/nsk/jvmti/AttachOnDemand/attach024/java.base/java/util/ServiceConfigurationError.java
test/jdk/java/lang/System/SetProperties.java
test/jdk/sun/tools/jhsdb/AlternateHashingTest.java
test/jdk/sun/tools/jhsdb/LingeredAppWithAltHashing.java
test/langtools/tools/javac/6558548/T6558548_6.out
test/langtools/tools/javac/8013179/T8013179.java
test/langtools/tools/javac/8013179/T8013179.out
test/langtools/tools/javac/StringsInSwitch/BadlyTypedLabel1_6.out
test/langtools/tools/javac/StringsInSwitch/BadlyTypedLabel2_6.out
test/langtools/tools/javac/StringsInSwitch/NonConstantLabel6.out
test/langtools/tools/javac/StringsInSwitch/OneCaseSwitches.out
test/langtools/tools/javac/StringsInSwitch/RSCL1_6.out
test/langtools/tools/javac/StringsInSwitch/RSCL2_6.out
test/langtools/tools/javac/TryWithResources/BadTwr6.out
test/langtools/tools/javac/TryWithResources/BadTwrSyntax6.out
test/langtools/tools/javac/TryWithResources/PlainTry6.out
test/langtools/tools/javac/TryWithResources/TwrOnNonResource6.out
test/langtools/tools/javac/annotations/repeatingAnnotations/WrongVersion6.out
test/langtools/tools/javac/annotations/typeAnnotations/failures/AnnotationVersion.out
test/langtools/tools/javac/defaultMethods/static/StaticInvokeQualified6.out
test/langtools/tools/javac/defaultMethods/static/StaticInvokeSimple6.out
test/langtools/tools/javac/literals/BadBinaryLiterals.6.out
test/langtools/tools/javac/literals/BadUnderscoreLiterals.6.out
test/langtools/tools/javac/types/CastObjectToPrimitiveTest.out
--- a/.hgtags	Tue Jul 03 16:09:25 2018 +0530
+++ b/.hgtags	Thu Jul 12 11:09:23 2018 -0700
@@ -490,9 +490,9 @@
 02934b0d661b82b7fe1052a04998d2091352e08d jdk-11+16
 64e4b1686141e57a681936a8283983341484676e jdk-11+17
 e1b3def126240d5433902f3cb0e91a4c27f6db50 jdk-11+18
-fb8b3f4672774e15654958295558a1af1b576919 jdk-11+19
-fb8b3f4672774e15654958295558a1af1b576919 jdk-11+19
 36ca515343e00b021dcfc902e986d26ec994a2e5 jdk-11+19
-c9cd3ec6a0ebaf373b6ff0071c396cc657f7c4bd jdk-12+0
-c9cd3ec6a0ebaf373b6ff0071c396cc657f7c4bd jdk-12+0
 95aad0c785e497f1bade3955c4e4a677b629fa9d jdk-12+0
+9816d7cc655e53ba081f938b656e31971b8f097a jdk-11+20
+14708e1acdc3974f4539027cbbcfa6d69f83cf51 jdk-11+21
+00b16d0457e43d23f6ca5ade6b243edce62750a0 jdk-12+1
+69b438908512d3dfef5852c6a843a5778333a309 jdk-12+2
--- a/make/Docs.gmk	Tue Jul 03 16:09:25 2018 +0530
+++ b/make/Docs.gmk	Thu Jul 12 11:09:23 2018 -0700
@@ -274,6 +274,8 @@
   $1_INDIRECT_EXPORTS := $$(call FindTransitiveIndirectDepsForModules, $$($1_MODULES))
   $1_ALL_MODULES := $$(sort $$($1_MODULES) $$($1_INDIRECT_EXPORTS))
 
+  $1_JAVA_ARGS := -Dextlink.spec.version=$$(VERSION_SPECIFICATION)
+
   ifeq ($$(ENABLE_FULL_DOCS), true)
     # Tell the ModuleGraph taglet to generate html links to soon-to-be-created
     # png files with module graphs.
@@ -327,9 +329,10 @@
   )
 
   ifeq ($$($1_JAVADOC_CMD), )
-    $1_JAVADOC_CMD := $$(JAVA) -Djava.awt.headless=true \
-        -Dextlink.spec.version=$$(VERSION_SPECIFICATION) $$($1_JAVA_ARGS) \
+    $1_JAVADOC_CMD := $$(JAVA) -Djava.awt.headless=true $$($1_JAVA_ARGS) \
         $$(NEW_JAVADOC)
+  else
+    $1_OPTIONS += $$(addprefix -J, $$($1_JAVA_ARGS)) 
   endif
 
   $1_VARDEPS := $$($1_JAVA_ARGS) $$($1_OPTIONS) $$(MODULES_SOURCE_PATH) \
@@ -463,7 +466,9 @@
 # Setup generation of the reference Java SE API documentation (javadoc + modulegraph)
 
 # The reference javadoc is just the same as javase, but using the BootJDK javadoc
-# and a stable set of javadoc options.
+# and a stable set of javadoc options.  Typically it is used for generating 
+# diffs between the reference javadoc and a javadoc bundle of a specific build
+# generated in the same way.
 
 $(eval $(call SetupApiDocsGeneration, REFERENCE_API, \
     MODULES := $(JAVASE_MODULES), \
@@ -497,10 +502,9 @@
 JDK_INDEX_TARGETS += $(COPY_GLOBAL_RESOURCES)
 
 # Copy the legal notices distributed with the docs bundle
-DOCS_LEGAL_NOTICES := jquery.md jszip.md pako.md
 $(eval $(call SetupCopyFiles, COPY_DOCS_LEGAL_NOTICES, \
     SRC := $(TOPDIR)/src/jdk.javadoc/share/legal, \
-    FILES := $(DOCS_LEGAL_NOTICES), \
+    FILES := $(wildcard $(TOPDIR)/src/jdk.javadoc/share/legal/*), \
     DEST := $(DOCS_OUTPUTDIR)/legal, \
 ))
 JDK_INDEX_TARGETS += $(COPY_DOCS_LEGAL_NOTICES)
--- a/make/Main.gmk	Tue Jul 03 16:09:25 2018 +0530
+++ b/make/Main.gmk	Thu Jul 12 11:09:23 2018 -0700
@@ -487,6 +487,14 @@
 	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNativeJdk.gmk \
 	    test-image-jdk-jtreg-native)
 
+build-test-hotspot-jtreg-graal:
+	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregGraalUnit.gmk \
+	     build-test-hotspot-jtreg-graal)
+
+test-image-hotspot-jtreg-graal:
+	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregGraalUnit.gmk \
+	     test-image-hotspot-jtreg-graal)
+
 run-test:
 	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test TEST="$(TEST)")
 
@@ -523,6 +531,7 @@
     test-image-hotspot-jtreg-native build-test-jdk-jtreg-native \
     test-image-jdk-jtreg-native build-test-lib build-test-failure-handler \
     test-failure-handler test-image-failure-handler test-image-hotspot-gtest \
+    test-image-hotspot-jtreg-graal build-test-hotspot-jtreg-graal \
     run-test exploded-run-test
 
 ################################################################################
@@ -853,10 +862,14 @@
 
   build-test-jdk-jtreg-native: buildtools-jdk java.base-libs
 
+  build-test-hotspot-jtreg-graal: exploded-image-optimize
+
   test-image-hotspot-jtreg-native: build-test-hotspot-jtreg-native
 
   test-image-jdk-jtreg-native: build-test-jdk-jtreg-native
 
+  test-image-hotspot-jtreg-graal: build-test-hotspot-jtreg-graal
+
   test-image-hotspot-gtest: hotspot
 
   test-hotspot-internal: exploded-image
@@ -993,6 +1006,10 @@
 # If not already set, set the JVM specific targets to build the test image
 JVM_TEST_IMAGE_TARGETS ?= test-image-hotspot-jtreg-native test-image-hotspot-gtest
 
+ifeq ($(INCLUDE_GRAAL), true)
+  JVM_TEST_IMAGE_TARGETS += test-image-hotspot-jtreg-graal
+endif
+
 # This target builds the test image
 test-image: prepare-test-image \
     test-image-jdk-jtreg-native test-image-failure-handler \
--- a/make/RunTests.gmk	Tue Jul 03 16:09:25 2018 +0530
+++ b/make/RunTests.gmk	Thu Jul 12 11:09:23 2018 -0700
@@ -535,6 +535,8 @@
     $1_JTREG_BASIC_OPTIONS += -cpa:$$(JIB_JAR)
   endif
 
+  $1_JTREG_BASIC_OPTIONS += -e:TEST_IMAGE_GRAAL_DIR=${TEST_IMAGE_DIR}/hotspot/jtreg/graal
+
   ifneq ($$(JTREG_FAILURE_HANDLER_OPTIONS), )
     $1_JTREG_LAUNCHER_OPTIONS += -Djava.library.path="$(JTREG_FAILURE_HANDLER_DIR)"
   endif
--- a/make/autoconf/hotspot.m4	Tue Jul 03 16:09:25 2018 +0530
+++ b/make/autoconf/hotspot.m4	Thu Jul 12 11:09:23 2018 -0700
@@ -201,8 +201,6 @@
     ENABLE_AOT="true"
   elif test "x$enable_aot" = "xno"; then
     ENABLE_AOT="false"
-    AC_MSG_CHECKING([if aot should be enabled])
-    AC_MSG_RESULT([no, forced])
   else
     AC_MSG_ERROR([Invalid value for --enable-aot: $enable_aot])
   fi
@@ -228,7 +226,7 @@
     else
       ENABLE_AOT="false"
       if test "x$enable_aot" = "xyes"; then
-        AC_MSG_ERROR([AOT is currently only supported on x86_64. Remove --enable-aot.])
+        AC_MSG_ERROR([AOT is currently only supported on x86_64 and aarch64. Remove --enable-aot.])
       fi
     fi
   fi
@@ -374,57 +372,106 @@
     fi
   fi
 
-  # Only enable jvmci on x86_64, sparcv9 and aarch64.
-  if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
-     test "x$OPENJDK_TARGET_CPU" = "xsparcv9" || \
-     test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
-    JVM_FEATURES_jvmci="jvmci"
+  AC_MSG_CHECKING([if jvmci module jdk.internal.vm.ci should be built])
+  # Check if jvmci is diabled
+  DISABLE_JVMCI=`$ECHO $DISABLED_JVM_FEATURES | $GREP jvmci`
+  if test "x$DISABLE_JVMCI" = "xjvmci"; then
+    AC_MSG_RESULT([no, forced])
+    JVM_FEATURES_jvmci=""
+    INCLUDE_JVMCI="false"
   else
-    JVM_FEATURES_jvmci=""
+    # Only enable jvmci on x86_64, sparcv9 and aarch64
+    if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
+       test "x$OPENJDK_TARGET_CPU" = "xsparcv9" || \
+       test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
+      AC_MSG_RESULT([yes])
+      JVM_FEATURES_jvmci="jvmci"
+      INCLUDE_JVMCI="true"
+    else
+      AC_MSG_RESULT([no])
+      JVM_FEATURES_jvmci=""
+      INCLUDE_JVMCI="false"
+      if HOTSPOT_CHECK_JVM_FEATURE(jvmci); then
+        AC_MSG_ERROR([JVMCI is currently not supported on this platform.])
+      fi
+    fi
   fi
 
-  AC_MSG_CHECKING([if jdk.internal.vm.compiler should be built])
-  if HOTSPOT_CHECK_JVM_FEATURE(graal); then
-    AC_MSG_RESULT([yes, forced])
-    if test "x$JVM_FEATURES_jvmci" != "xjvmci" ; then
-      AC_MSG_ERROR([Specified JVM feature 'graal' requires feature 'jvmci'])
-    fi
-    INCLUDE_GRAAL="true"
+  AC_SUBST(INCLUDE_JVMCI)
+
+  AC_MSG_CHECKING([if graal module jdk.internal.vm.compiler should be built])
+  # Check if graal is diabled
+  DISABLE_GRAAL=`$ECHO $DISABLED_JVM_FEATURES | $GREP graal`
+  if test "x$DISABLE_GRAAL" = "xgraal"; then
+    AC_MSG_RESULT([no, forced])
+    JVM_FEATURES_graal=""
+    INCLUDE_GRAAL="false"
   else
-    # By default enable graal build on x64 or where AOT is available.
-    # graal build requires jvmci.
-    if test "x$JVM_FEATURES_jvmci" = "xjvmci" && \
-        (test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
-         test "x$ENABLE_AOT" = "xtrue") ; then
-      AC_MSG_RESULT([yes])
+    if HOTSPOT_CHECK_JVM_FEATURE(graal); then
+      AC_MSG_RESULT([yes, forced])
+      if test "x$JVM_FEATURES_jvmci" != "xjvmci" ; then
+        AC_MSG_ERROR([Specified JVM feature 'graal' requires feature 'jvmci'])
+      fi
       JVM_FEATURES_graal="graal"
       INCLUDE_GRAAL="true"
     else
-      AC_MSG_RESULT([no])
-      JVM_FEATURES_graal=""
-      INCLUDE_GRAAL="false"
+      # By default enable graal build on x64 or where AOT is available.
+      # graal build requires jvmci.
+      if test "x$JVM_FEATURES_jvmci" = "xjvmci" && \
+          (test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
+           test "x$ENABLE_AOT" = "xtrue") ; then
+        AC_MSG_RESULT([yes])
+        JVM_FEATURES_graal="graal"
+        INCLUDE_GRAAL="true"
+      else
+        AC_MSG_RESULT([no])
+        JVM_FEATURES_graal=""
+        INCLUDE_GRAAL="false"
+      fi
     fi
   fi
 
   AC_SUBST(INCLUDE_GRAAL)
 
+  # Disable aot with '--with-jvm-features=-aot'
+  DISABLE_AOT=`$ECHO $DISABLED_JVM_FEATURES | $GREP aot`
+  if test "x$DISABLE_AOT" = "xaot"; then
+    ENABLE_AOT="false"
+  fi
+
   AC_MSG_CHECKING([if aot should be enabled])
   if test "x$ENABLE_AOT" = "xtrue"; then
-    if test "x$enable_aot" = "xyes"; then
-      AC_MSG_RESULT([yes, forced])
+    if test "x$JVM_FEATURES_graal" != "xgraal"; then
+      if test "x$enable_aot" = "xyes" || HOTSPOT_CHECK_JVM_FEATURE(aot); then
+        AC_MSG_RESULT([yes, forced])
+        AC_MSG_ERROR([Specified JVM feature 'aot' requires feature 'graal'])
+      else
+        AC_MSG_RESULT([no])
+      fi
+      JVM_FEATURES_aot=""
+      ENABLE_AOT="false"
     else
-      AC_MSG_RESULT([yes])
+      if test "x$enable_aot" = "xyes" || HOTSPOT_CHECK_JVM_FEATURE(aot); then
+        AC_MSG_RESULT([yes, forced])
+      else
+        AC_MSG_RESULT([yes])
+      fi
+      JVM_FEATURES_aot="aot"
     fi
-    JVM_FEATURES_aot="aot"
   else
-    if test "x$enable_aot" = "xno"; then
+    if test "x$enable_aot" = "xno" || "x$DISABLE_AOT" = "xaot"; then
       AC_MSG_RESULT([no, forced])
     else
       AC_MSG_RESULT([no])
     fi
     JVM_FEATURES_aot=""
+    if HOTSPOT_CHECK_JVM_FEATURE(aot); then
+      AC_MSG_ERROR([To enable aot, you must use --enable-aot])
+    fi
   fi
 
+  AC_SUBST(ENABLE_AOT)
+
   if test "x$OPENJDK_TARGET_CPU" = xarm ; then
     # Default to use link time optimizations on minimal on arm
     JVM_FEATURES_link_time_opt="link-time-opt"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/autoconf/lib-tests.m4	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,57 @@
+#
+# Copyright (c) 2018, 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.
+#
+
+###############################################################################
+#
+# Check for graalunit libs, needed for running graalunit tests.
+#
+AC_DEFUN_ONCE([LIB_TESTS_SETUP_GRAALUNIT],
+[
+  AC_ARG_WITH(graalunit-lib, [AS_HELP_STRING([--with-graalunit-lib],
+      [specify location of 3rd party libraries used by Graal unit tests])])
+
+  GRAALUNIT_LIB=
+  if test "x${with_graalunit_lib}" != x; then
+    AC_MSG_CHECKING([for graalunit libs])
+    if test "x${with_graalunit_lib}" = xno; then
+      AC_MSG_RESULT([disabled, graalunit tests can not be run])
+    elif test "x${with_graalunit_lib}" = xyes; then
+      AC_MSG_RESULT([not specified])
+      AC_MSG_ERROR([You must specify the path to 3rd party libraries used by Graal unit tests])
+    else
+      GRAALUNIT_LIB="${with_graalunit_lib}"
+      if test ! -d "${GRAALUNIT_LIB}"; then
+        AC_MSG_RESULT([no])
+        AC_MSG_ERROR([Could not find graalunit 3rd party libraries as specified. (${with_graalunit_lib})])
+      else
+        AC_MSG_RESULT([$GRAALUNIT_LIB])
+      fi
+    fi
+  fi
+
+  BASIC_FIXUP_PATH([GRAALUNIT_LIB])
+  AC_SUBST(GRAALUNIT_LIB)
+])
+
--- a/make/autoconf/libraries.m4	Tue Jul 03 16:09:25 2018 +0530
+++ b/make/autoconf/libraries.m4	Thu Jul 12 11:09:23 2018 -0700
@@ -32,6 +32,7 @@
 m4_include([lib-std.m4])
 m4_include([lib-x11.m4])
 m4_include([lib-fontconfig.m4])
+m4_include([lib-tests.m4])
 
 ################################################################################
 # Determine which libraries are needed for this configuration
@@ -101,6 +102,7 @@
   LIB_SETUP_BUNDLED_LIBS
   LIB_SETUP_MISC_LIBS
   LIB_SETUP_SOLARIS_STLPORT
+  LIB_TESTS_SETUP_GRAALUNIT
 
   if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
     GLOBAL_LIBS="-lc"
--- a/make/autoconf/spec.gmk.in	Tue Jul 03 16:09:25 2018 +0530
+++ b/make/autoconf/spec.gmk.in	Thu Jul 12 11:09:23 2018 -0700
@@ -347,6 +347,7 @@
 LIBFFI_CFLAGS:=@LIBFFI_CFLAGS@
 ENABLE_LIBFFI_BUNDLING:=@ENABLE_LIBFFI_BUNDLING@
 LIBFFI_LIB_FILE:=@LIBFFI_LIB_FILE@
+GRAALUNIT_LIB := @GRAALUNIT_LIB@
 
 PACKAGE_PATH=@PACKAGE_PATH@
 
@@ -813,6 +814,7 @@
 
 INCLUDE_SA=@INCLUDE_SA@
 INCLUDE_GRAAL=@INCLUDE_GRAAL@
+INCLUDE_JVMCI=@INCLUDE_JVMCI@
 
 OS_VERSION_MAJOR:=@OS_VERSION_MAJOR@
 OS_VERSION_MINOR:=@OS_VERSION_MINOR@
--- a/make/common/Modules.gmk	Tue Jul 03 16:09:25 2018 +0530
+++ b/make/common/Modules.gmk	Thu Jul 12 11:09:23 2018 -0700
@@ -205,7 +205,14 @@
 endif
 
 ################################################################################
-# Filter out Graal specific modules if Graal build is disabled
+# Filter out jvmci specific modules if jvmci is disabled
+
+ifeq ($(INCLUDE_JVMCI), false)
+  MODULES_FILTER += jdk.internal.vm.ci
+endif
+
+################################################################################
+# Filter out Graal specific modules if Graal is disabled
 
 ifeq ($(INCLUDE_GRAAL), false)
   MODULES_FILTER += jdk.internal.vm.compiler
--- a/make/conf/jib-profiles.js	Tue Jul 03 16:09:25 2018 +0530
+++ b/make/conf/jib-profiles.js	Thu Jul 12 11:09:23 2018 -0700
@@ -239,7 +239,7 @@
 
     // These are the base setttings for all the main build profiles.
     common.main_profile_base = {
-        dependencies: ["boot_jdk", "gnumake", "jtreg", "jib"],
+        dependencies: ["boot_jdk", "gnumake", "jtreg", "jib", "autoconf"],
         default_make_targets: ["product-bundles", "test-bundles"],
         configure_args: concat(["--enable-jtreg-failure-handler"],
             "--with-exclude-translations=de,es,fr,it,ko,pt_BR,sv,ca,tr,cs,sk,ja_JP_A,ja_JP_HA,ja_JP_HI,ja_JP_I",
@@ -378,7 +378,7 @@
         "linux-x64": {
             target_os: "linux",
             target_cpu: "x64",
-            dependencies: ["devkit", "autoconf", "graphviz", "pandoc"],
+            dependencies: ["devkit", "graphviz", "pandoc", "graalunit_lib"],
             configure_args: concat(common.configure_args_64bit,
                 "--enable-full-docs", "--with-zlib=system"),
             default_make_targets: ["docs-bundles"],
@@ -388,7 +388,7 @@
             target_os: "linux",
             target_cpu: "x86",
             build_cpu: "x64",
-            dependencies: ["devkit", "autoconf"],
+            dependencies: ["devkit"],
             configure_args: concat(common.configure_args_32bit,
                 "--with-jvm-variants=minimal,server", "--with-zlib=system"),
         },
@@ -396,7 +396,7 @@
         "macosx-x64": {
             target_os: "macosx",
             target_cpu: "x64",
-            dependencies: ["devkit", "autoconf"],
+            dependencies: ["devkit", "graalunit_lib"],
             configure_args: concat(common.configure_args_64bit, "--with-zlib=system",
                 "--with-macosx-version-max=10.9.0"),
         },
@@ -404,7 +404,7 @@
         "solaris-x64": {
             target_os: "solaris",
             target_cpu: "x64",
-            dependencies: ["devkit", "autoconf", "cups"],
+            dependencies: ["devkit", "cups"],
             configure_args: concat(common.configure_args_64bit,
                 "--with-zlib=system", "--enable-dtrace"),
         },
@@ -412,7 +412,7 @@
         "solaris-sparcv9": {
             target_os: "solaris",
             target_cpu: "sparcv9",
-            dependencies: ["devkit", "autoconf", "cups"],
+            dependencies: ["devkit", "cups"],
             configure_args: concat(common.configure_args_64bit,
                 "--with-zlib=system", "--enable-dtrace"),
         },
@@ -420,7 +420,7 @@
         "windows-x64": {
             target_os: "windows",
             target_cpu: "x64",
-            dependencies: ["devkit", "autoconf"],
+            dependencies: ["devkit", "graalunit_lib"],
             configure_args: concat(common.configure_args_64bit),
         },
 
@@ -428,7 +428,7 @@
             target_os: "windows",
             target_cpu: "x86",
             build_cpu: "x64",
-            dependencies: ["devkit", "autoconf"],
+            dependencies: ["devkit"],
             configure_args: concat(common.configure_args_32bit),
         },
 
@@ -436,7 +436,7 @@
             target_os: "linux",
             target_cpu: "aarch64",
             build_cpu: "x64",
-            dependencies: ["devkit", "autoconf", "build_devkit", "cups"],
+            dependencies: ["devkit", "build_devkit", "cups"],
             configure_args: [
                 "--openjdk-target=aarch64-linux-gnu", "--with-freetype=bundled",
                 "--disable-warnings-as-errors", "--with-cpu-port=aarch64",
@@ -447,7 +447,7 @@
             target_os: "linux",
             target_cpu: "aarch64",
             build_cpu: "x64",
-            dependencies: ["devkit", "autoconf", "build_devkit", "cups", "headless_stubs"],
+            dependencies: ["devkit", "build_devkit", "cups", "headless_stubs"],
             configure_args: [
                 "--with-cpu-port=arm64",
                 "--with-jvm-variants=server",
@@ -460,7 +460,7 @@
             target_os: "linux",
             target_cpu: "arm",
             build_cpu: "x64",
-            dependencies: ["devkit", "autoconf", "build_devkit", "cups"],
+            dependencies: ["devkit", "build_devkit", "cups"],
             configure_args: [
                 "--openjdk-target=arm-linux-gnueabihf", "--with-freetype=bundled",
                 "--with-abi-profile=arm-vfp-hflt", "--disable-warnings-as-errors"
@@ -471,7 +471,7 @@
             target_os: "linux",
             target_cpu: "arm",
             build_cpu: "x64",
-            dependencies: ["devkit", "autoconf", "build_devkit", "cups"],
+            dependencies: ["devkit", "build_devkit", "cups"],
             configure_args: [
                 "--with-jvm-variants=minimal1,client",
                 "--with-x=" + input.get("devkit", "install_path") + "/arm-linux-gnueabihf/libc/usr/X11R6-PI",
@@ -972,6 +972,14 @@
             configure_args: "",
         },
 
+        graalunit_lib: {
+            organization: common.organization,
+            ext: "zip",
+            revision: "619_Apr_12_2018",
+            module: "graalunit-lib",
+            configure_args: "--with-graalunit-lib=" + input.get("graalunit_lib", "install_path"),
+            environment_name: "GRAALUNIT_LIB"
+        },
     };
 
     // Need to add a value for the Visual Studio tools variable to make
--- a/make/data/publicsuffixlist/VERSION	Tue Jul 03 16:09:25 2018 +0530
+++ b/make/data/publicsuffixlist/VERSION	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
 Github: https://raw.githubusercontent.com/publicsuffix/list/2225db8d9f4a2a27ec697c883360632fa0c16261/public_suffix_list.dat
-Date: 2018-05-09
+Date: 2018-05-24
--- a/make/hotspot/lib/JvmFeatures.gmk	Tue Jul 03 16:09:25 2018 +0530
+++ b/make/hotspot/lib/JvmFeatures.gmk	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2018, 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
@@ -109,6 +109,7 @@
       classListParser.cpp \
       classLoaderExt.cpp \
       filemap.cpp \
+      heapShared.cpp \
       metaspaceShared.cpp \
       metaspaceShared_$(HOTSPOT_TARGET_CPU).cpp \
       metaspaceShared_$(HOTSPOT_TARGET_CPU_ARCH).cpp \
--- a/make/hotspot/symbols/symbols-unix	Tue Jul 03 16:09:25 2018 +0530
+++ b/make/hotspot/symbols/symbols-unix	Thu Jul 12 11:09:23 2018 -0700
@@ -136,6 +136,7 @@
 JVM_InitProperties
 JVM_InitStackTraceElement
 JVM_InitStackTraceElementArray
+JVM_InitializeFromArchive
 JVM_InternString
 JVM_Interrupt
 JVM_InvokeMethod
--- a/make/scripts/compare.sh	Tue Jul 03 16:09:25 2018 +0530
+++ b/make/scripts/compare.sh	Thu Jul 12 11:09:23 2018 -0700
@@ -1385,26 +1385,22 @@
         echo "  $OTHER_SPARKLE_DIR"
     fi
 
-    if [ -d "$OTHER/images" ]; then
-        OTHER_SEC_DIR="$OTHER/images"
-    else
-        OTHER_SEC_DIR="$OTHER/tmp"
-    fi
-    if [ -f "$THIS_SEC_DIR/sec-bin.zip" ]; then
+    THIS_SEC_DIR="$THIS/images"
+    OTHER_SEC_DIR="$OTHER/images"
+    if [ -f "$THIS_SEC_DIR/sec-bin.zip" ] && [ -f "$OTHER_SEC_DIR/sec-bin.zip" ]; then
         OTHER_SEC_BIN="$OTHER_SEC_DIR/sec-bin.zip"
-        THIS_SEC_DIR="$THIS/images"
         THIS_SEC_BIN="$THIS_SEC_DIR/sec-bin.zip"
-    fi
-    if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
-        if [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then
-            JGSS_WINDOWS_BIN="jgss-windows-x64-bin.zip"
-        else
-            JGSS_WINDOWS_BIN="jgss-windows-i586-bin.zip"
+        if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+            if [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then
+                JGSS_WINDOWS_BIN="jgss-windows-x64-bin.zip"
+            else
+                JGSS_WINDOWS_BIN="jgss-windows-i586-bin.zip"
+            fi
+            OTHER_SEC_WINDOWS_BIN="$OTHER_SEC_DIR/sec-windows-bin.zip"
+            OTHER_JGSS_WINDOWS_BIN="$OTHER_SEC_DIR/$JGSS_WINDOWS_BIN"
+            THIS_SEC_WINDOWS_BIN="$THIS_SEC_DIR/sec-windows-bin.zip"
+            THIS_JGSS_WINDOWS_BIN="$THIS_SEC_DIR/$JGSS_WINDOWS_BIN"
         fi
-        OTHER_SEC_WINDOWS_BIN="$OTHER_SEC_DIR/sec-windows-bin.zip"
-        OTHER_JGSS_WINDOWS_BIN="$OTHER_SEC_DIR/$JGSS_WINDOWS_BIN"
-        THIS_SEC_WINDOWS_BIN="$THIS_SEC_DIR/sec-windows-bin.zip"
-        THIS_JGSS_WINDOWS_BIN="$THIS_SEC_DIR/$JGSS_WINDOWS_BIN"
     fi
 
     if [ -d "$THIS/images/docs" ] && [ -d "$OTHER/images/docs" ]; then
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/test/JtregGraalUnit.gmk	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,144 @@
+#
+# Copyright (c) 2018, 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.
+#
+
+################################################################################
+# This file builds Graal component of the JTReg tests for Hotspot.
+# It also covers the test-image part, where the built files are copied to the
+# test image.
+################################################################################
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include SetupJavaCompilers.gmk
+
+TARGETS_BUILD :=
+TARGETS_IMAGE :=
+TARGETS_EXTRA_LIB :=
+
+ifeq ($(INCLUDE_GRAAL), true)
+  ifneq ($(GRAALUNIT_LIB), )
+    SRC_DIR := $(TOPDIR)/src/jdk.internal.vm.compiler/share/classes
+    TEST_DIR := $(TOPDIR)/test/hotspot/jtreg/compiler/graalunit
+    COMPILE_OUTPUTDIR := $(SUPPORT_OUTPUTDIR)/test/graalunit
+    LIB_OUTPUTDIR := $(TEST_IMAGE_DIR)/hotspot/jtreg/graal
+
+    ### Copy 3rd party libs
+    $(eval $(call SetupCopyFiles, COPY_GRAALUNIT_LIBS, \
+        FILES := $(wildcard $(GRAALUNIT_LIB)/*.jar), \
+        DEST := $(LIB_OUTPUTDIR), \
+    ))
+
+    TARGETS_EXTRA_LIB += $(COPY_GRAALUNIT_LIBS)
+
+    ### Compile and build graalunit tests
+    $(eval $(call SetupJavaCompilation, BUILD_VM_COMPILER_TESTS, \
+        SETUP := GENERATE_USINGJDKBYTECODE, \
+        SRC := \
+            $(SRC_DIR)/jdk.internal.vm.compiler.collections.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.api.directives.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.api.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.asm.aarch64.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.asm.amd64.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.asm.sparc.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.asm.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.core.amd64.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.core.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.debug.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.graph.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.hotspot.amd64.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.hotspot.lir.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.hotspot.sparc.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.hotspot.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.lir.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.loop.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.nodes.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.options.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.phases.common.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.replacements.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.test/src \
+            $(SRC_DIR)/org.graalvm.util.test/src \
+            $(SRC_DIR)/org.graalvm.compiler.jtt/src \
+            $(SRC_DIR)/org.graalvm.compiler.lir.jtt/src \
+            , \
+        BIN := $(COMPILE_OUTPUTDIR)/jdk.vm.compiler.tests, \
+        JAR := $(COMPILE_OUTPUTDIR)/jdk.vm.compiler.tests.jar, \
+        CLASSPATH := \
+            $(JDK_OUTPUTDIR)/modules/jdk.internal.vm.compiler \
+            $(JDK_OUTPUTDIR)/modules/jdk.internal.vm.ci \
+            $(LIB_OUTPUTDIR)/junit-4.12.jar \
+            $(LIB_OUTPUTDIR)/asm-5.0.4.jar \
+            $(LIB_OUTPUTDIR)/asm-tree-5.0.4.jar \
+            $(LIB_OUTPUTDIR)/java-allocation-instrumenter.jar \
+            $(LIB_OUTPUTDIR)/hamcrest-core-1.3.jar \
+            , \
+        ADD_JAVAC_FLAGS := \
+            -Xlint:none -processorpath \
+            $(BUILDTOOLS_OUTPUTDIR)/jdk.vm.compiler.replacements.verifier.jar \
+            --add-exports jdk.unsupported/sun.misc=ALL-UNNAMED \
+            , \
+    ))
+
+    TARGETS_BUILD += $(BUILD_VM_COMPILER_TESTS)
+
+
+    ### Compile and build mxtool
+    $(eval $(call SetupJavaCompilation, BUILD_MXTOOL, \
+        SETUP := GENERATE_USINGJDKBYTECODE, \
+        SRC := $(TEST_DIR)/com.oracle.mxtool.junit, \
+        BIN := $(COMPILE_OUTPUTDIR)/com.oracle.mxtool.junit, \
+        JAR := $(COMPILE_OUTPUTDIR)/com.oracle.mxtool.junit.jar, \
+        CLASSPATH := $(LIB_OUTPUTDIR)/junit-4.12.jar, \
+    ))
+
+    TARGETS_BUILD += $(BUILD_MXTOOL)
+
+
+    ################################################################################
+    # Targets for building test-image.
+    ################################################################################
+
+    # Copy to hotspot jtreg test image
+    $(eval $(call SetupCopyFiles, COPY_HOTSPOT_JTREG_GRAAL, \
+        SRC := $(COMPILE_OUTPUTDIR), \
+        DEST := $(LIB_OUTPUTDIR), \
+        FILES := jdk.vm.compiler.tests.jar com.oracle.mxtool.junit.jar, \
+    ))
+
+    TARGETS_IMAGE += $(COPY_HOTSPOT_JTREG_GRAAL)
+  else
+    $(info Skip building of Graal unit tests because 3rd party libraries directory is not specified)
+  endif
+endif
+
+$(TARGETS_BUILD): $(TARGETS_EXTRA_LIB)
+build-test-hotspot-jtreg-graal: $(TARGETS_BUILD)
+test-image-hotspot-jtreg-graal: $(TARGETS_IMAGE)
+
+all: build-test-hotspot-jtreg-graal
+test-image: test-image-hotspot-jtreg-graal
+
+.PHONY: default all build-test-hotspot-jtreg-graal test-image-hotspot-jtreg-graal test-image
--- a/make/test/JtregNativeHotspot.gmk	Tue Jul 03 16:09:25 2018 +0530
+++ b/make/test/JtregNativeHotspot.gmk	Thu Jul 12 11:09:23 2018 -0700
@@ -836,6 +836,10 @@
 
 ################################################################################
 
+ifeq ($(TOOLCHAIN_TYPE), solstudio)
+   BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libji06t001 += -erroff=E_END_OF_LOOP_CODE_NOT_REACHED
+endif
+
 # Platform specific setup
 ifneq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc)
   BUILD_HOTSPOT_JTREG_EXCLUDE += liboverflow.c exeThreadSignalMask.c
@@ -858,9 +862,13 @@
 
 BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exesigtest := -ljvm
 
+ifeq ($(OPENJDK_TARGET_OS), solaris)
+    BUILD_HOTSPOT_JTREG_EXCLUDE += libterminatedThread.c
+endif
+
 ifeq ($(OPENJDK_TARGET_OS), windows)
     BUILD_HOTSPOT_JTREG_EXECUTABLES_CFLAGS_exeFPRegs := -MT
-    BUILD_HOTSPOT_JTREG_EXCLUDE += exesigtest.c
+    BUILD_HOTSPOT_JTREG_EXCLUDE += exesigtest.c libterminatedThread.c
 
 else
     BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libbootclssearch_agent += -lpthread
@@ -1494,6 +1502,7 @@
     BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libvmdeath001 += -lpthread
     BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libgetphase001 += -lpthread
     BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libgetphase002 += -lpthread
+    BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libterminatedThread += -lpthread
 endif
 
 $(eval $(call SetupTestFilesCompilation, BUILD_HOTSPOT_JTREG_LIBRARIES, \
--- a/src/hotspot/cpu/aarch64/aarch64.ad	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/cpu/aarch64/aarch64.ad	Thu Jul 12 11:09:23 2018 -0700
@@ -1471,7 +1471,7 @@
   // Ctl+Mem to a StoreB node (which does the actual card mark).
   //
   // n.b. a StoreCM node will only appear in this configuration when
-  // using CMS. StoreCM differs from a normal card mark write (StoreB)
+  // using CMS or G1. StoreCM differs from a normal card mark write (StoreB)
   // because it implies a requirement to order visibility of the card
   // mark (StoreCM) relative to the object put (StoreP/N) using a
   // StoreStore memory barrier (arguably this ought to be represented
@@ -1481,16 +1481,12 @@
   // the sequence
   //
   //   dmb ishst
-  //   stlrb
-  //
-  // However, in the case of a volatile put if we can recognise this
-  // configuration and plant an stlr for the object write then we can
-  // omit the dmb and just plant an strb since visibility of the stlr
-  // is ordered before visibility of subsequent stores. StoreCM nodes
-  // also arise when using G1 or using CMS with conditional card
-  // marking. In these cases (as we shall see) we don't need to insert
-  // the dmb when translating StoreCM because there is already an
-  // intervening StoreLoad barrier between it and the StoreP/N.
+  //   strb
+  //
+  // However, when using G1 or CMS with conditional card marking (as
+  // we shall see) we don't need to insert the dmb when translating
+  // StoreCM because there is already an intervening StoreLoad barrier
+  // between it and the StoreP/N.
   //
   // It is also possible to perform the card mark conditionally on it
   // currently being unmarked in which case the volatile put graph
@@ -2868,50 +2864,17 @@
 {
   assert(storecm->Opcode()  == Op_StoreCM, "expecting a StoreCM");
 
-  // we only ever need to generate a dmb ishst between an object put
-  // and the associated card mark when we are using CMS without
-  // conditional card marking
-
-  if (!UseConcMarkSweepGC || UseCondCardMark) {
-    return true;
-  }
-
-  // if we are implementing volatile puts using barriers then the
-  // object put is an str so we must insert the dmb ishst
-
-  if (UseBarriersForVolatile) {
+  // we need to generate a dmb ishst between an object put and the
+  // associated card mark when we are using CMS without conditional
+  // card marking
+
+  if (UseConcMarkSweepGC && !UseCondCardMark) {
     return false;
   }
 
-  // we can omit the dmb ishst if this StoreCM is part of a volatile
-  // put because in thta case the put will be implemented by stlr
-  //
-  // we need to check for a normal subgraph feeding this StoreCM.
-  // that means the StoreCM must be fed Memory from a leading membar,
-  // either a MemBarRelease or its dependent MemBarCPUOrder, and the
-  // leading membar must be part of a normal subgraph
-
-  Node *x = storecm->in(StoreNode::Memory);
-
-  if (!x->is_Proj()) {
-    return false;
-  }
-
-  x = x->in(0);
-
-  if (!x->is_MemBar()) {
-    return false;
-  }
-
-  MemBarNode *leading = x->as_MemBar();
-
-  // reject invalid candidates
-  if (!leading_membar(leading)) {
-    return false;
-  }
-
-  // we can omit the StoreStore if it is the head of a normal subgraph
-  return (leading_to_normal(leading) != NULL);
+  // a storestore is unnecesary in all other cases
+
+  return true;
 }
 
 
--- a/src/hotspot/cpu/ppc/vm_version_ext_ppc.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/cpu/ppc/vm_version_ext_ppc.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -25,19 +25,30 @@
 #include "jvm.h"
 #include "memory/allocation.hpp"
 #include "memory/allocation.inline.hpp"
+#include "runtime/vm_version.hpp"
 #include "vm_version_ext_ppc.hpp"
 
 // VM_Version_Ext statics
 int   VM_Version_Ext::_no_of_threads = 0;
 int   VM_Version_Ext::_no_of_cores = 0;
 int   VM_Version_Ext::_no_of_sockets = 0;
+bool  VM_Version_Ext::_initialized = false;
 char  VM_Version_Ext::_cpu_name[CPU_TYPE_DESC_BUF_SIZE] = {0};
 char  VM_Version_Ext::_cpu_desc[CPU_DETAILED_DESC_BUF_SIZE] = {0};
 
 // get cpu information.
-bool VM_Version_Ext::initialize_cpu_information(void) {
-  // Not yet implemented.
-  return false;
+void VM_Version_Ext::initialize_cpu_information(void) {
+  // do nothing if cpu info has been initialized
+  if (_initialized) {
+    return;
+  }
+
+  _no_of_cores  = os::processor_count();
+  _no_of_threads = _no_of_cores;
+  _no_of_sockets = _no_of_cores;
+  snprintf(_cpu_name, CPU_TYPE_DESC_BUF_SIZE, "PowerPC POWER%lu", PowerArchitecturePPC64);
+  snprintf(_cpu_desc, CPU_DETAILED_DESC_BUF_SIZE, "PPC %s", features_string());
+  _initialized = true;
 }
 
 int VM_Version_Ext::number_of_threads(void) {
@@ -56,9 +67,7 @@
 }
 
 const char* VM_Version_Ext::cpu_name(void) {
-  if (!initialize_cpu_information()) {
-    return NULL;
-  }
+  initialize_cpu_information();
   char* tmp = NEW_C_HEAP_ARRAY_RETURN_NULL(char, CPU_TYPE_DESC_BUF_SIZE, mtTracing);
   if (NULL == tmp) {
     return NULL;
@@ -68,9 +77,7 @@
 }
 
 const char* VM_Version_Ext::cpu_description(void) {
-  if (!initialize_cpu_information()) {
-    return NULL;
-  }
+  initialize_cpu_information();
   char* tmp = NEW_C_HEAP_ARRAY_RETURN_NULL(char, CPU_DETAILED_DESC_BUF_SIZE, mtTracing);
   if (NULL == tmp) {
     return NULL;
--- a/src/hotspot/cpu/ppc/vm_version_ext_ppc.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/cpu/ppc/vm_version_ext_ppc.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -43,10 +43,11 @@
   static int               _no_of_threads;
   static int               _no_of_cores;
   static int               _no_of_sockets;
+  static bool              _initialized;
   static char              _cpu_name[CPU_TYPE_DESC_BUF_SIZE];
   static char              _cpu_desc[CPU_DETAILED_DESC_BUF_SIZE];
 
-  static bool initialize_cpu_information(void);
+  static void initialize_cpu_information(void);
 
  public:
 
--- a/src/hotspot/cpu/s390/s390.ad	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/cpu/s390/s390.ad	Thu Jul 12 11:09:23 2018 -0700
@@ -9839,7 +9839,7 @@
   match(Set index (PartialSubtypeCheck sub super));
   effect(KILL pcc, KILL scratch1, KILL scratch2);
   ins_cost(10 * DEFAULT_COST);
-  size(12);
+  // TODO: s390 port size(FIXED_SIZE);
   format %{ "  CALL   PartialSubtypeCheck\n" %}
   ins_encode %{
     AddressLiteral stub_address(StubRoutines::zarch::partial_subtype_check());
--- a/src/hotspot/cpu/s390/templateTable_s390.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/cpu/s390/templateTable_s390.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -3636,7 +3636,7 @@
 
   NearLabel subtype, no_such_interface;
 
-  __ check_klass_subtype(klass, interface, Z_tmp_2, Z_tmp_3, subtype);
+  __ check_klass_subtype(klass, interface, Z_tmp_2, flags/*scratch*/, subtype);
   // If we get here the typecheck failed
   __ z_bru(no_such_interface);
   __ bind(subtype);
@@ -3649,7 +3649,6 @@
   __ bind(notVFinal);
 
   // Get receiver klass into klass - also a null check.
-  __ restore_locals();
   __ load_klass(klass, receiver);
 
   __ lookup_interface_method(klass, interface, noreg, noreg, /*temp*/Z_ARG1,
@@ -3680,7 +3679,7 @@
   // interpreter entry point and a conditional jump to it in case of a null
   // method.
   __ compareU64_and_branch(method2, (intptr_t) 0,
-                            Assembler::bcondZero, no_such_method);
+                           Assembler::bcondZero, no_such_method);
 
   __ profile_arguments_type(Z_tmp_1, method2, Z_tmp_2, true);
 
@@ -3695,8 +3694,6 @@
   __ bind(no_such_method);
 
   // Throw exception.
-  __ restore_bcp();      // Bcp must be correct for exception handler   (was destroyed).
-  __ restore_locals();   // Make sure locals pointer is correct as well (was destroyed).
   // Pass arguments for generating a verbose error message.
   __ z_lgr(Z_tmp_1, method); // Prevent register clash.
   __ call_VM(noreg,
@@ -3709,8 +3706,6 @@
   __ bind(no_such_interface);
 
   // Throw exception.
-  __ restore_bcp();      // Bcp must be correct for exception handler   (was destroyed).
-  __ restore_locals();   // Make sure locals pointer is correct as well (was destroyed).
   // Pass arguments for generating a verbose error message.
   __ call_VM(noreg,
              CAST_FROM_FN_PTR(address,
--- a/src/hotspot/cpu/s390/vm_version_ext_s390.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/cpu/s390/vm_version_ext_s390.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -31,13 +31,23 @@
 int   VM_Version_Ext::_no_of_threads = 0;
 int   VM_Version_Ext::_no_of_cores = 0;
 int   VM_Version_Ext::_no_of_sockets = 0;
+bool  VM_Version_Ext::_initialized = false;
 char  VM_Version_Ext::_cpu_name[CPU_TYPE_DESC_BUF_SIZE] = {0};
 char  VM_Version_Ext::_cpu_desc[CPU_DETAILED_DESC_BUF_SIZE] = {0};
 
 // get cpu information.
-bool VM_Version_Ext::initialize_cpu_information(void) {
-  // Not yet implemented.
-  return false;
+void  VM_Version_Ext::initialize_cpu_information(void) {
+  // do nothing if cpu info has been initialized
+  if (_initialized) {
+    return;
+  }
+
+  _no_of_cores  = os::processor_count();
+  _no_of_threads = _no_of_cores;
+  _no_of_sockets = _no_of_cores;
+  snprintf(_cpu_name, CPU_TYPE_DESC_BUF_SIZE, "s390 %s", VM_Version::get_model_string());
+  snprintf(_cpu_desc, CPU_DETAILED_DESC_BUF_SIZE, "zArch %s", features_string());
+  _initialized = true;
 }
 
 int VM_Version_Ext::number_of_threads(void) {
@@ -56,9 +66,7 @@
 }
 
 const char* VM_Version_Ext::cpu_name(void) {
-  if (!initialize_cpu_information()) {
-    return NULL;
-  }
+  initialize_cpu_information();
   char* tmp = NEW_C_HEAP_ARRAY_RETURN_NULL(char, CPU_TYPE_DESC_BUF_SIZE, mtTracing);
   if (NULL == tmp) {
     return NULL;
@@ -68,9 +76,7 @@
 }
 
 const char* VM_Version_Ext::cpu_description(void) {
-  if (!initialize_cpu_information()) {
-    return NULL;
-  }
+  initialize_cpu_information();
   char* tmp = NEW_C_HEAP_ARRAY_RETURN_NULL(char, CPU_DETAILED_DESC_BUF_SIZE, mtTracing);
   if (NULL == tmp) {
     return NULL;
--- a/src/hotspot/cpu/s390/vm_version_ext_s390.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/cpu/s390/vm_version_ext_s390.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -43,10 +43,11 @@
   static int               _no_of_threads;
   static int               _no_of_cores;
   static int               _no_of_sockets;
+  static bool              _initialized;
   static char              _cpu_name[CPU_TYPE_DESC_BUF_SIZE];
   static char              _cpu_desc[CPU_DETAILED_DESC_BUF_SIZE];
 
-  static bool initialize_cpu_information(void);
+  static void initialize_cpu_information(void);
 
  public:
 
--- a/src/hotspot/cpu/s390/vm_version_s390.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/cpu/s390/vm_version_s390.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2016, 2017 SAP SE. All rights reserved.
+ * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018 SAP SE. 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
@@ -36,6 +36,7 @@
 # include <sys/sysinfo.h>
 
 bool VM_Version::_is_determine_features_test_running  = false;
+const char*   VM_Version::_model_string;
 
 unsigned long VM_Version::_features[_features_buffer_len]           = {0, 0, 0, 0};
 unsigned long VM_Version::_cipher_features[_features_buffer_len]    = {0, 0, 0, 0};
@@ -210,6 +211,10 @@
     FLAG_SET_DEFAULT(UseSHA512Intrinsics, false);
   }
 
+  if (!(UseSHA1Intrinsics || UseSHA256Intrinsics || UseSHA512Intrinsics)) {
+    FLAG_SET_DEFAULT(UseSHA, false);
+  }
+
   if (FLAG_IS_DEFAULT(UseMultiplyToLenIntrinsic)) {
     FLAG_SET_DEFAULT(UseMultiplyToLenIntrinsic, true);
   }
@@ -244,32 +249,40 @@
 void VM_Version::set_features_string() {
 
   unsigned int ambiguity = 0;
+  _model_string = z_name[0];
   if (is_z13()) {
     _features_string = "System z G7-z13  (LDISP_fast, ExtImm, PCrel Load/Store, CmpB, Cond Load/Store, Interlocked Update, TxM, VectorInstr)";
+    _model_string = z_name[7];
     ambiguity++;
   }
   if (is_ec12()) {
     _features_string = "System z G6-EC12 (LDISP_fast, ExtImm, PCrel Load/Store, CmpB, Cond Load/Store, Interlocked Update, TxM)";
+    _model_string = z_name[6];
     ambiguity++;
   }
   if (is_z196()) {
     _features_string = "System z G5-z196 (LDISP_fast, ExtImm, PCrel Load/Store, CmpB, Cond Load/Store, Interlocked Update)";
+    _model_string = z_name[5];
     ambiguity++;
   }
   if (is_z10()) {
     _features_string = "System z G4-z10  (LDISP_fast, ExtImm, PCrel Load/Store, CmpB)";
+    _model_string = z_name[4];
     ambiguity++;
   }
   if (is_z9()) {
     _features_string = "System z G3-z9   (LDISP_fast, ExtImm), out-of-support as of 2016-04-01";
+    _model_string = z_name[3];
     ambiguity++;
   }
   if (is_z990()) {
     _features_string = "System z G2-z990 (LDISP_fast), out-of-support as of 2014-07-01";
+    _model_string = z_name[2];
     ambiguity++;
   }
   if (is_z900()) {
     _features_string = "System z G1-z900 (LDISP), out-of-support as of 2014-07-01";
+    _model_string = z_name[1];
     ambiguity++;
   }
 
--- a/src/hotspot/cpu/s390/vm_version_s390.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/cpu/s390/vm_version_s390.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2016 SAP SE. All rights reserved.
+ * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018 SAP SE. 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
@@ -131,6 +131,7 @@
   static unsigned int  _Dcache_lineSize;
   static unsigned int  _Icache_lineSize;
   static bool          _is_determine_features_test_running;
+  static const char*   _model_string;
 
   static bool test_feature_bit(unsigned long* featureBuffer, int featureNum, unsigned int bufLen);
   static void set_features_string();
@@ -346,6 +347,7 @@
   static bool is_determine_features_test_running() { return _is_determine_features_test_running; }
 
   // CPU feature query functions
+  static const char* get_model_string()       { return _model_string; }
   static bool has_StoreFacilityListExtended() { return  (_features[0] & StoreFacilityListExtendedMask) == StoreFacilityListExtendedMask; }
   static bool has_Crypto()                    { return  (_features[0] & CryptoFacilityMask)            == CryptoFacilityMask; }
   static bool has_ETF2()                      { return  (_features[0] & ETF2Mask)                      == ETF2Mask; }
--- a/src/hotspot/cpu/x86/methodHandles_x86.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/cpu/x86/methodHandles_x86.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -440,8 +440,6 @@
         verify_ref_kind(_masm, JVM_REF_invokeInterface, member_reg, temp3);
       }
 
-      BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
-
       Register temp3_intf = temp3;
       __ load_heap_oop(temp3_intf, member_clazz);
       load_klass_from_Class(_masm, temp3_intf);
--- a/src/hotspot/os/aix/os_aix.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/os/aix/os_aix.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -576,7 +576,9 @@
       }
     }
     Arguments::set_java_home(buf);
-    set_boot_path('/', ':');
+    if (!set_boot_path('/', ':')) {
+      vm_exit_during_initialization("Failed setting boot class path.", NULL);
+    }
   }
 
   // Where to look for native libraries.
@@ -1208,22 +1210,6 @@
   ::abort();
 }
 
-// This method is a copy of JDK's sysGetLastErrorString
-// from src/solaris/hpi/src/system_md.c
-
-size_t os::lasterror(char *buf, size_t len) {
-  if (errno == 0) return 0;
-
-  const char *s = os::strerror(errno);
-  size_t n = ::strlen(s);
-  if (n >= len) {
-    n = len - 1;
-  }
-  ::strncpy(buf, s, n);
-  buf[n] = '\0';
-  return n;
-}
-
 intx os::current_thread_id() {
   return (intx)pthread_self();
 }
--- a/src/hotspot/os/bsd/os_bsd.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/os/bsd/os_bsd.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -372,7 +372,9 @@
       }
     }
     Arguments::set_java_home(buf);
-    set_boot_path('/', ':');
+    if (!set_boot_path('/', ':')) {
+      vm_exit_during_initialization("Failed setting boot class path.", NULL);
+    }
   }
 
   // Where to look for native libraries.
@@ -1081,22 +1083,6 @@
   ::abort();
 }
 
-// This method is a copy of JDK's sysGetLastErrorString
-// from src/solaris/hpi/src/system_md.c
-
-size_t os::lasterror(char *buf, size_t len) {
-  if (errno == 0)  return 0;
-
-  const char *s = os::strerror(errno);
-  size_t n = ::strlen(s);
-  if (n >= len) {
-    n = len - 1;
-  }
-  ::strncpy(buf, s, n);
-  buf[n] = '\0';
-  return n;
-}
-
 // Information of current thread in variety of formats
 pid_t os::Bsd::gettid() {
   int retval = -1;
--- a/src/hotspot/os/linux/os_linux.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/os/linux/os_linux.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -367,7 +367,9 @@
       }
     }
     Arguments::set_java_home(buf);
-    set_boot_path('/', ':');
+    if (!set_boot_path('/', ':')) {
+      vm_exit_during_initialization("Failed setting boot class path.", NULL);
+    }
   }
 
   // Where to look for native libraries.
@@ -1419,23 +1421,6 @@
   ::abort();
 }
 
-
-// This method is a copy of JDK's sysGetLastErrorString
-// from src/solaris/hpi/src/system_md.c
-
-size_t os::lasterror(char *buf, size_t len) {
-  if (errno == 0)  return 0;
-
-  const char *s = os::strerror(errno);
-  size_t n = ::strlen(s);
-  if (n >= len) {
-    n = len - 1;
-  }
-  ::strncpy(buf, s, n);
-  buf[n] = '\0';
-  return n;
-}
-
 // thread_id is kernel thread id (similar to Solaris LWP id)
 intx os::current_thread_id() { return os::Linux::gettid(); }
 int os::current_process_id() {
@@ -5572,14 +5557,18 @@
 
 static jlong slow_thread_cpu_time(Thread *thread, bool user_sys_cpu_time);
 
-static clockid_t thread_cpu_clockid(Thread* thread) {
-  pthread_t tid = thread->osthread()->pthread_id();
-  clockid_t clockid;
-
-  // Get thread clockid
-  int rc = os::Linux::pthread_getcpuclockid(tid, &clockid);
-  assert(rc == 0, "pthread_getcpuclockid is expected to return 0 code");
-  return clockid;
+static jlong fast_cpu_time(Thread *thread) {
+    clockid_t clockid;
+    int rc = os::Linux::pthread_getcpuclockid(thread->osthread()->pthread_id(),
+                                              &clockid);
+    if (rc == 0) {
+      return os::Linux::fast_thread_cpu_time(clockid);
+    } else {
+      // It's possible to encounter a terminated native thread that failed
+      // to detach itself from the VM - which should result in ESRCH.
+      assert_status(rc == ESRCH, rc, "pthread_getcpuclockid failed");
+      return -1;
+    }
 }
 
 // current_thread_cpu_time(bool) and thread_cpu_time(Thread*, bool)
@@ -5601,7 +5590,7 @@
 jlong os::thread_cpu_time(Thread* thread) {
   // consistent with what current_thread_cpu_time() returns
   if (os::Linux::supports_fast_thread_cpu_time()) {
-    return os::Linux::fast_thread_cpu_time(thread_cpu_clockid(thread));
+    return fast_cpu_time(thread);
   } else {
     return slow_thread_cpu_time(thread, true /* user + sys */);
   }
@@ -5617,7 +5606,7 @@
 
 jlong os::thread_cpu_time(Thread *thread, bool user_sys_cpu_time) {
   if (user_sys_cpu_time && os::Linux::supports_fast_thread_cpu_time()) {
-    return os::Linux::fast_thread_cpu_time(thread_cpu_clockid(thread));
+    return fast_cpu_time(thread);
   } else {
     return slow_thread_cpu_time(thread, user_sys_cpu_time);
   }
--- a/src/hotspot/os/posix/os_posix.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/os/posix/os_posix.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -150,6 +150,19 @@
   return errno;
 }
 
+size_t os::lasterror(char *buf, size_t len) {
+  if (errno == 0)  return 0;
+
+  const char *s = os::strerror(errno);
+  size_t n = ::strlen(s);
+  if (n >= len) {
+    n = len - 1;
+  }
+  ::strncpy(buf, s, n);
+  buf[n] = '\0';
+  return n;
+}
+
 bool os::is_debugger_attached() {
   // not implemented
   return false;
--- a/src/hotspot/os/solaris/os_solaris.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/os/solaris/os_solaris.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -580,7 +580,9 @@
       }
     }
     Arguments::set_java_home(buf);
-    set_boot_path('/', ':');
+    if (!set_boot_path('/', ':')) {
+      vm_exit_during_initialization("Failed setting boot class path.", NULL);
+    }
   }
 
   // Where to look for native libraries.
@@ -2010,23 +2012,6 @@
   // no suffix required
 }
 
-// This method is a copy of JDK's sysGetLastErrorString
-// from src/solaris/hpi/src/system_md.c
-
-size_t os::lasterror(char *buf, size_t len) {
-  if (errno == 0)  return 0;
-
-  const char *s = os::strerror(errno);
-  size_t n = ::strlen(s);
-  if (n >= len) {
-    n = len - 1;
-  }
-  ::strncpy(buf, s, n);
-  buf[n] = '\0';
-  return n;
-}
-
-
 // sun.misc.Signal
 
 extern "C" {
--- a/src/hotspot/os/windows/os_windows.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/os/windows/os_windows.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -230,7 +230,7 @@
     FREE_C_HEAP_ARRAY(char, dll_path);
 
     if (!set_boot_path('\\', ';')) {
-      return;
+      vm_exit_during_initialization("Failed setting boot class path.", NULL);
     }
   }
 
--- a/src/hotspot/os_cpu/linux_x86/gc/z/zBackingFile_linux_x86.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/os_cpu/linux_x86/gc/z/zBackingFile_linux_x86.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -28,7 +28,6 @@
 #include "gc/z/zErrno.hpp"
 #include "gc/z/zLargePages.inline.hpp"
 #include "logging/log.hpp"
-#include "runtime/init.hpp"
 #include "runtime/os.hpp"
 #include "utilities/align.hpp"
 #include "utilities/debug.hpp"
@@ -47,10 +46,6 @@
 // Sysfs file for transparent huge page on tmpfs
 #define ZFILENAME_SHMEM_ENABLED          "/sys/kernel/mm/transparent_hugepage/shmem_enabled"
 
-// Default mount points
-#define ZMOUNTPOINT_TMPFS                "/dev/shm"
-#define ZMOUNTPOINT_HUGETLBFS            "/hugepages"
-
 // Java heap filename
 #define ZFILENAME_HEAP                   "java_heap"
 
@@ -79,13 +74,30 @@
 #define HUGETLBFS_MAGIC                  0x958458f6
 #endif
 
+// Preferred tmpfs mount points, ordered by priority
+static const char* z_preferred_tmpfs_mountpoints[] = {
+  "/dev/shm",
+  "/run/shm",
+  NULL
+};
+
+// Preferred hugetlbfs mount points, ordered by priority
+static const char* z_preferred_hugetlbfs_mountpoints[] = {
+  "/dev/hugepages",
+  "/hugepages",
+  NULL
+};
+
 static int z_memfd_create(const char *name, unsigned int flags) {
   return syscall(__NR_memfd_create, name, flags);
 }
 
+bool ZBackingFile::_hugetlbfs_mmap_retry = true;
+
 ZBackingFile::ZBackingFile() :
     _fd(-1),
     _filesystem(0),
+    _available(0),
     _initialized(false) {
 
   // Create backing file
@@ -94,39 +106,47 @@
     return;
   }
 
-  // Get filesystem type
+  // Get filesystem statistics
   struct statfs statfs_buf;
   if (fstatfs(_fd, &statfs_buf) == -1) {
     ZErrno err;
-    log_error(gc, init)("Failed to determine filesystem type for backing file (%s)", err.to_string());
+    log_error(gc, init)("Failed to determine filesystem type for backing file (%s)",
+                        err.to_string());
     return;
   }
+
   _filesystem = statfs_buf.f_type;
+  _available = statfs_buf.f_bavail * statfs_buf.f_bsize;
 
   // Make sure we're on a supported filesystem
   if (!is_tmpfs() && !is_hugetlbfs()) {
-    log_error(gc, init)("Backing file must be located on a %s or a %s filesystem", ZFILESYSTEM_TMPFS, ZFILESYSTEM_HUGETLBFS);
+    log_error(gc, init)("Backing file must be located on a %s or a %s filesystem",
+                        ZFILESYSTEM_TMPFS, ZFILESYSTEM_HUGETLBFS);
     return;
   }
 
   // Make sure the filesystem type matches requested large page type
   if (ZLargePages::is_transparent() && !is_tmpfs()) {
-    log_error(gc, init)("-XX:+UseTransparentHugePages can only be enable when using a %s filesystem", ZFILESYSTEM_TMPFS);
+    log_error(gc, init)("-XX:+UseTransparentHugePages can only be enable when using a %s filesystem",
+                        ZFILESYSTEM_TMPFS);
     return;
   }
 
   if (ZLargePages::is_transparent() && !tmpfs_supports_transparent_huge_pages()) {
-    log_error(gc, init)("-XX:+UseTransparentHugePages on a %s filesystem not supported by kernel", ZFILESYSTEM_TMPFS);
+    log_error(gc, init)("-XX:+UseTransparentHugePages on a %s filesystem not supported by kernel",
+                        ZFILESYSTEM_TMPFS);
     return;
   }
 
   if (ZLargePages::is_explicit() && !is_hugetlbfs()) {
-    log_error(gc, init)("-XX:+UseLargePages (without -XX:+UseTransparentHugePages) can only be enabled when using a %s filesystem", ZFILESYSTEM_HUGETLBFS);
+    log_error(gc, init)("-XX:+UseLargePages (without -XX:+UseTransparentHugePages) can only be enabled when using a %s filesystem",
+                        ZFILESYSTEM_HUGETLBFS);
     return;
   }
 
   if (!ZLargePages::is_explicit() && is_hugetlbfs()) {
-    log_error(gc, init)("-XX:+UseLargePages must be enabled when using a %s filesystem", ZFILESYSTEM_HUGETLBFS);
+    log_error(gc, init)("-XX:+UseLargePages must be enabled when using a %s filesystem",
+                        ZFILESYSTEM_HUGETLBFS);
     return;
   }
 
@@ -149,17 +169,21 @@
     return -1;
   }
 
-  log_debug(gc, init)("Heap backed by file /memfd:%s", filename);
+  log_info(gc, init)("Heap backed by file: /memfd:%s", filename);
 
   return fd;
 }
 
 int ZBackingFile::create_file_fd(const char* name) const {
-  const char* const filesystem = ZLargePages::is_explicit() ? ZFILESYSTEM_HUGETLBFS : ZFILESYSTEM_TMPFS;
-  const char* const mountpoint = ZLargePages::is_explicit() ? ZMOUNTPOINT_HUGETLBFS : ZMOUNTPOINT_TMPFS;
+  const char* const filesystem = ZLargePages::is_explicit()
+                                 ? ZFILESYSTEM_HUGETLBFS
+                                 : ZFILESYSTEM_TMPFS;
+  const char** const preferred_mountpoints = ZLargePages::is_explicit()
+                                             ? z_preferred_hugetlbfs_mountpoints
+                                             : z_preferred_tmpfs_mountpoints;
 
   // Find mountpoint
-  ZBackingPath path(filesystem, mountpoint);
+  ZBackingPath path(filesystem, preferred_mountpoints);
   if (path.get() == NULL) {
     log_error(gc, init)("Use -XX:ZPath to specify the path to a %s filesystem", filesystem);
     return -1;
@@ -181,7 +205,7 @@
       return -1;
     }
 
-    log_debug(gc, init)("Heap backed by file %s/#" UINT64_FORMAT, path.get(), (uint64_t)stat_buf.st_ino);
+    log_info(gc, init)("Heap backed by file: %s/#" UINT64_FORMAT, path.get(), (uint64_t)stat_buf.st_ino);
 
     return fd_anon;
   }
@@ -207,7 +231,7 @@
     return -1;
   }
 
-  log_debug(gc, init)("Heap backed by file %s", filename);
+  log_info(gc, init)("Heap backed by file: %s", filename);
 
   return fd;
 }
@@ -238,6 +262,10 @@
   return _fd;
 }
 
+size_t ZBackingFile::available() const {
+  return _available;
+}
+
 bool ZBackingFile::is_tmpfs() const {
   return _filesystem == TMPFS_MAGIC;
 }
@@ -292,12 +320,12 @@
   return true;
 }
 
-bool ZBackingFile::expand_tmpfs(size_t offset, size_t length) const {
+bool ZBackingFile::try_expand_tmpfs(size_t offset, size_t length) const {
   assert(is_tmpfs(), "Wrong filesystem");
   return try_expand_tmpfs(offset, length, os::vm_page_size());
 }
 
-bool ZBackingFile::expand_hugetlbfs(size_t offset, size_t length) const {
+bool ZBackingFile::try_expand_hugetlbfs(size_t offset, size_t length) const {
   assert(is_hugetlbfs(), "Wrong filesystem");
 
   // Prior to kernel 4.3, hugetlbfs did not support posix_fallocate().
@@ -320,11 +348,11 @@
   // process being returned to the huge page pool and made available for new
   // allocations.
   void* addr = MAP_FAILED;
-  const int max_attempts = 3;
+  const int max_attempts = 5;
   for (int attempt = 1; attempt <= max_attempts; attempt++) {
     addr = mmap(0, length, PROT_READ|PROT_WRITE, MAP_SHARED, _fd, offset);
-    if (addr != MAP_FAILED || is_init_completed()) {
-      // Mapping was successful or initialization phase has completed
+    if (addr != MAP_FAILED || !_hugetlbfs_mmap_retry) {
+      // Mapping was successful or mmap retry is disabled
       break;
     }
 
@@ -337,6 +365,11 @@
     sleep(1);
   }
 
+  // Disable mmap retry from now on
+  if (_hugetlbfs_mmap_retry) {
+    _hugetlbfs_mmap_retry = false;
+  }
+
   if (addr == MAP_FAILED) {
     // Not enough huge pages left
     ZErrno err;
@@ -355,6 +388,39 @@
   return true;
 }
 
-bool ZBackingFile::expand(size_t offset, size_t length) const {
-  return is_hugetlbfs() ? expand_hugetlbfs(offset, length) : expand_tmpfs(offset, length);
+bool ZBackingFile::try_expand_tmpfs_or_hugetlbfs(size_t offset, size_t length, size_t alignment) const {
+  assert(is_aligned(offset, alignment), "Invalid offset");
+  assert(is_aligned(length, alignment), "Invalid length");
+
+  log_debug(gc)("Expanding heap from " SIZE_FORMAT "M to " SIZE_FORMAT "M", offset / M, (offset + length) / M);
+
+  return is_hugetlbfs() ? try_expand_hugetlbfs(offset, length) : try_expand_tmpfs(offset, length);
 }
+
+size_t ZBackingFile::try_expand(size_t offset, size_t length, size_t alignment) const {
+  size_t start = offset;
+  size_t end = offset + length;
+
+  // Try to expand
+  if (try_expand_tmpfs_or_hugetlbfs(start, length, alignment)) {
+    // Success
+    return end;
+  }
+
+  // Failed, try to expand as much as possible
+  for (;;) {
+    length = align_down((end - start) / 2, alignment);
+    if (length < alignment) {
+      // Done, don't expand more
+      return start;
+    }
+
+    if (try_expand_tmpfs_or_hugetlbfs(start, length, alignment)) {
+      // Success, try expand more
+      start += length;
+    } else {
+      // Failed, try expand less
+      end -= length;
+    }
+  }
+}
--- a/src/hotspot/os_cpu/linux_x86/gc/z/zBackingFile_linux_x86.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/os_cpu/linux_x86/gc/z/zBackingFile_linux_x86.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -28,8 +28,11 @@
 
 class ZBackingFile {
 private:
+  static bool _hugetlbfs_mmap_retry;
+
   int      _fd;
   uint64_t _filesystem;
+  size_t   _available;
   bool     _initialized;
 
   int create_mem_fd(const char* name) const;
@@ -42,9 +45,9 @@
 
   bool try_split_and_expand_tmpfs(size_t offset, size_t length, size_t alignment) const;
   bool try_expand_tmpfs(size_t offset, size_t length, size_t alignment) const;
-  bool expand_tmpfs(size_t offset, size_t length) const;
-
-  bool expand_hugetlbfs(size_t offset, size_t length) const;
+  bool try_expand_tmpfs(size_t offset, size_t length) const;
+  bool try_expand_hugetlbfs(size_t offset, size_t length) const;
+  bool try_expand_tmpfs_or_hugetlbfs(size_t offset, size_t length, size_t alignment) const;
 
 public:
   ZBackingFile();
@@ -52,7 +55,9 @@
   bool is_initialized() const;
 
   int fd() const;
-  bool expand(size_t offset, size_t length) const;
+  size_t available() const;
+
+  size_t try_expand(size_t offset, size_t length, size_t alignment) const;
 };
 
 #endif // OS_CPU_LINUX_X86_ZBACKINGFILE_LINUX_X86_HPP
--- a/src/hotspot/os_cpu/linux_x86/gc/z/zBackingPath_linux_x86.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/os_cpu/linux_x86/gc/z/zBackingPath_linux_x86.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -33,13 +33,13 @@
 // Mount information, see proc(5) for more details.
 #define PROC_SELF_MOUNTINFO        "/proc/self/mountinfo"
 
-ZBackingPath::ZBackingPath(const char* filesystem, const char* preferred_path) {
+ZBackingPath::ZBackingPath(const char* filesystem, const char** preferred_mountpoints) {
   if (ZPath != NULL) {
     // Use specified path
     _path = strdup(ZPath);
   } else {
     // Find suitable path
-    _path = find_mountpoint(filesystem, preferred_path);
+    _path = find_mountpoint(filesystem, preferred_mountpoints);
   }
 }
 
@@ -52,8 +52,8 @@
   char* line_mountpoint = NULL;
   char* line_filesystem = NULL;
 
-  // Parse line and return a newly allocated string containing the mountpoint if
-  // the line contains a matching filesystem and the mountpoint is accessible by
+  // Parse line and return a newly allocated string containing the mount point if
+  // the line contains a matching filesystem and the mount point is accessible by
   // the current user.
   if (sscanf(line, "%*u %*u %*u:%*u %*s %ms %*[^-]- %ms", &line_mountpoint, &line_filesystem) != 2 ||
       strcmp(line_filesystem, filesystem) != 0 ||
@@ -68,7 +68,7 @@
   return line_mountpoint;
 }
 
-void ZBackingPath::get_mountpoints(ZArray<char*>* mountpoints, const char* filesystem) const {
+void ZBackingPath::get_mountpoints(const char* filesystem, ZArray<char*>* mountpoints) const {
   FILE* fd = fopen(PROC_SELF_MOUNTINFO, "r");
   if (fd == NULL) {
     ZErrno err;
@@ -98,37 +98,45 @@
   mountpoints->clear();
 }
 
-char* ZBackingPath::find_mountpoint(const char* filesystem, const char* preferred_mountpoint) const {
+char* ZBackingPath::find_preferred_mountpoint(const char* filesystem,
+                                              ZArray<char*>* mountpoints,
+                                              const char** preferred_mountpoints) const {
+  // Find preferred mount point
+  ZArrayIterator<char*> iter1(mountpoints);
+  for (char* mountpoint; iter1.next(&mountpoint);) {
+    for (const char** preferred = preferred_mountpoints; *preferred != NULL; preferred++) {
+      if (!strcmp(mountpoint, *preferred)) {
+        // Preferred mount point found
+        return strdup(mountpoint);
+      }
+    }
+  }
+
+  // Preferred mount point not found
+  log_error(gc, init)("More than one %s filesystem found:", filesystem);
+  ZArrayIterator<char*> iter2(mountpoints);
+  for (char* mountpoint; iter2.next(&mountpoint);) {
+    log_error(gc, init)("  %s", mountpoint);
+  }
+
+  return NULL;
+}
+
+char* ZBackingPath::find_mountpoint(const char* filesystem, const char** preferred_mountpoints) const {
   char* path = NULL;
   ZArray<char*> mountpoints;
 
-  get_mountpoints(&mountpoints, filesystem);
+  get_mountpoints(filesystem, &mountpoints);
 
   if (mountpoints.size() == 0) {
-    // No filesystem found
+    // No mount point found
     log_error(gc, init)("Failed to find an accessible %s filesystem", filesystem);
   } else if (mountpoints.size() == 1) {
-    // One filesystem found
+    // One mount point found
     path = strdup(mountpoints.at(0));
-  } else if (mountpoints.size() > 1) {
-    // More than one filesystem found
-    ZArrayIterator<char*> iter(&mountpoints);
-    for (char* mountpoint; iter.next(&mountpoint);) {
-      if (!strcmp(mountpoint, preferred_mountpoint)) {
-        // Preferred mount point found
-        path = strdup(mountpoint);
-        break;
-      }
-    }
-
-    if (path == NULL) {
-      // Preferred mount point not found
-      log_error(gc, init)("More than one %s filesystem found:", filesystem);
-      ZArrayIterator<char*> iter2(&mountpoints);
-      for (char* mountpoint; iter2.next(&mountpoint);) {
-        log_error(gc, init)("  %s", mountpoint);
-      }
-    }
+  } else {
+    // More than one mount point found
+    path = find_preferred_mountpoint(filesystem, &mountpoints, preferred_mountpoints);
   }
 
   free_mountpoints(&mountpoints);
--- a/src/hotspot/os_cpu/linux_x86/gc/z/zBackingPath_linux_x86.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/os_cpu/linux_x86/gc/z/zBackingPath_linux_x86.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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
@@ -31,13 +31,19 @@
 private:
   char* _path;
 
-  char* get_mountpoint(const char* line, const char* filesystem) const;
-  void get_mountpoints(ZArray<char*>* mountpoints, const char* filesystem) const;
+  char* get_mountpoint(const char* line,
+                       const char* filesystem) const;
+  void get_mountpoints(const char* filesystem,
+                       ZArray<char*>* mountpoints) const;
   void free_mountpoints(ZArray<char*>* mountpoints) const;
-  char* find_mountpoint(const char* filesystem, const char* preferred_mountpoint) const;
+  char* find_preferred_mountpoint(const char* filesystem,
+                                  ZArray<char*>* mountpoints,
+                                  const char** preferred_mountpoints) const;
+  char* find_mountpoint(const char* filesystem,
+                        const char** preferred_mountpoints) const;
 
 public:
-  ZBackingPath(const char* filesystem, const char* preferred_path);
+  ZBackingPath(const char* filesystem, const char** preferred_mountpoints);
   ~ZBackingPath();
 
   const char* get() const;
--- a/src/hotspot/os_cpu/linux_x86/gc/z/zPhysicalMemoryBacking_linux_x86.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/os_cpu/linux_x86/gc/z/zPhysicalMemoryBacking_linux_x86.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -52,8 +52,15 @@
     _file(),
     _granule_size(granule_size) {
 
-  // Check and warn if max map count seems too low
+  if (!_file.is_initialized()) {
+    return;
+  }
+
+  // Check and warn if max map count is too low
   check_max_map_count(max_capacity, granule_size);
+
+  // Check and warn if available space on filesystem is too low
+  check_available_space_on_filesystem(max_capacity);
 }
 
 void ZPhysicalMemoryBacking::check_max_map_count(size_t max_capacity, size_t granule_size) const {
@@ -61,7 +68,7 @@
   FILE* const file = fopen(filename, "r");
   if (file == NULL) {
     // Failed to open file, skip check
-    log_debug(gc)("Failed to open %s", filename);
+    log_debug(gc, init)("Failed to open %s", filename);
     return;
   }
 
@@ -70,7 +77,7 @@
   fclose(file);
   if (result != 1) {
     // Failed to read file, skip check
-    log_debug(gc)("Failed to read %s", filename);
+    log_debug(gc, init)("Failed to read %s", filename);
     return;
   }
 
@@ -81,15 +88,43 @@
   // We speculate that we need another 20% to allow for non-ZGC subsystems to map memory.
   const size_t required_max_map_count = (max_capacity / granule_size) * 3 * 1.2;
   if (actual_max_map_count < required_max_map_count) {
-    log_warning(gc)("The system limit on number of memory mappings "
-                    "per process might be too low for the given");
-    log_warning(gc)("Java heap size (" SIZE_FORMAT "M). Please "
-                    "adjust %s to allow for at least", max_capacity / M, filename);
-    log_warning(gc)(SIZE_FORMAT " mappings (current limit is " SIZE_FORMAT "). "
-                    "Continuing execution with the current limit could",
-                    required_max_map_count, actual_max_map_count);
-    log_warning(gc)("lead to a fatal error down the line, due to failed "
-                    "attempts to map memory.");
+    log_warning(gc, init)("***** WARNING! INCORRECT SYSTEM CONFIGURATION DETECTED! *****");
+    log_warning(gc, init)("The system limit on number of memory mappings per process might be too low "
+                          "for the given");
+    log_warning(gc, init)("max Java heap size (" SIZE_FORMAT "M). Please adjust %s to allow for at",
+                          max_capacity / M, filename);
+    log_warning(gc, init)("least " SIZE_FORMAT " mappings (current limit is " SIZE_FORMAT "). Continuing "
+                          "execution with the current", required_max_map_count, actual_max_map_count);
+    log_warning(gc, init)("limit could lead to a fatal error, due to failure to map memory.");
+  }
+}
+
+void ZPhysicalMemoryBacking::check_available_space_on_filesystem(size_t max_capacity) const {
+  // Note that the available space on a tmpfs or a hugetlbfs filesystem
+  // will be zero if no size limit was specified when it was mounted.
+  const size_t available = _file.available();
+  if (available == 0) {
+    // No size limit set, skip check
+    log_info(gc, init)("Available space on backing filesystem: N/A");
+    return;
+  }
+
+  log_info(gc, init)("Available space on backing filesystem: " SIZE_FORMAT "M",
+                     available / M);
+
+  // Warn if the filesystem doesn't currently have enough space available to hold
+  // the max heap size. The max heap size will be capped if we later hit this limit
+  // when trying to expand the heap.
+  if (available < max_capacity) {
+    log_warning(gc, init)("***** WARNING! INCORRECT SYSTEM CONFIGURATION DETECTED! *****");
+    log_warning(gc, init)("Not enough space available on the backing filesystem to hold the current "
+                          "max Java heap");
+    log_warning(gc, init)("size (" SIZE_FORMAT "M). Please adjust the size of the backing filesystem "
+                          "accordingly (available", max_capacity / M);
+    log_warning(gc, init)("space is currently " SIZE_FORMAT "M). Continuing execution with the current "
+                          "filesystem size could", available / M);
+    log_warning(gc, init)("lead to a premature OutOfMemoryError being thrown, due to failure to map "
+                          "memory.");
   }
 }
 
@@ -97,18 +132,16 @@
   return _file.is_initialized();
 }
 
-bool ZPhysicalMemoryBacking::expand(size_t from, size_t to) {
-  const size_t size = to - from;
+size_t ZPhysicalMemoryBacking::try_expand(size_t old_capacity, size_t new_capacity) {
+  assert(old_capacity < new_capacity, "Invalid old/new capacity");
 
-  // Expand
-  if (!_file.expand(from, size)) {
-    return false;
+  const size_t capacity = _file.try_expand(old_capacity, new_capacity - old_capacity, _granule_size);
+  if (capacity > old_capacity) {
+    // Add expanded capacity to free list
+    _manager.free(old_capacity, capacity - old_capacity);
   }
 
-  // Add expanded space to free list
-  _manager.free(from, size);
-
-  return true;
+  return capacity;
 }
 
 ZPhysicalMemory ZPhysicalMemoryBacking::alloc(size_t size) {
--- a/src/hotspot/os_cpu/linux_x86/gc/z/zPhysicalMemoryBacking_linux_x86.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/os_cpu/linux_x86/gc/z/zPhysicalMemoryBacking_linux_x86.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -37,6 +37,7 @@
   const size_t   _granule_size;
 
   void check_max_map_count(size_t max_capacity, size_t granule_size) const;
+  void check_available_space_on_filesystem(size_t max_capacity) const;
   void map_failed(ZErrno err) const;
 
   void advise_view(uintptr_t addr, size_t size) const;
@@ -49,7 +50,8 @@
 
   bool is_initialized() const;
 
-  bool expand(size_t from, size_t to);
+  size_t try_expand(size_t old_capacity, size_t new_capacity);
+
   ZPhysicalMemory alloc(size_t size);
   void free(ZPhysicalMemory pmem);
 
--- a/src/hotspot/share/aot/aotCompiledMethod.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/aot/aotCompiledMethod.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -272,6 +272,7 @@
           if (md != _method) f(md);
         }
       } else if (iter.type() == relocInfo::virtual_call_type) {
+        ResourceMark rm;
         // Check compiledIC holders associated with this nmethod
         CompiledIC *ic = CompiledIC_at(&iter);
         if (ic->is_icholder_call()) {
@@ -444,6 +445,7 @@
     return;
   }
 
+  ResourceMark rm;
   RelocIterator iter(this);
   while (iter.next()) {
     iter.reloc()->clear_inline_cache();
--- a/src/hotspot/share/ci/ciEnv.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/ci/ciEnv.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -938,9 +938,9 @@
       _inc_decompile_count_on_failure = false;
       record_failure("call site target change");
     } else if (Dependencies::is_klass_type(result)) {
-      record_failure("invalid non-klass dependency");
+      record_failure("concurrent class loading");
     } else {
-      record_failure("concurrent class loading");
+      record_failure("invalid non-klass dependency");
     }
   }
 }
--- a/src/hotspot/share/ci/ciStreams.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/ci/ciStreams.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, 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
@@ -255,8 +255,7 @@
 // constant.
 constantTag ciBytecodeStream::get_constant_pool_tag(int index) const {
   VM_ENTRY_MARK;
-  BasicType bt = _method->get_Method()->constants()->basic_type_for_constant_at(index);
-  return constantTag::ofBasicType(bt);
+  return _method->get_Method()->constants()->constant_tag_at(index);
 }
 
 // ------------------------------------------------------------------
--- a/src/hotspot/share/classfile/classLoader.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/classfile/classLoader.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -298,8 +298,6 @@
   char *copy = NEW_C_HEAP_ARRAY(char, strlen(zip_name)+1, mtClass);
   strcpy(copy, zip_name);
   _zip_name = copy;
-  _is_boot_append = is_boot_append;
-  _multi_versioned = _unknown;
 }
 
 ClassPathZipEntry::~ClassPathZipEntry() {
@@ -338,95 +336,11 @@
   return buffer;
 }
 
-#if INCLUDE_CDS
-u1* ClassPathZipEntry::open_versioned_entry(const char* name, jint* filesize, TRAPS) {
-  u1* buffer = NULL;
-  if (DumpSharedSpaces && !_is_boot_append) {
-    // We presume default is multi-release enabled
-    const char* multi_ver = Arguments::get_property("jdk.util.jar.enableMultiRelease");
-    const char* verstr = Arguments::get_property("jdk.util.jar.version");
-    bool is_multi_ver = (multi_ver == NULL ||
-                         strcmp(multi_ver, "true") == 0 ||
-                         strcmp(multi_ver, "force")  == 0) &&
-                         is_multiple_versioned(THREAD);
-    // command line version setting
-    int version = 0;
-    const int base_version = 8; // JDK8
-    int cur_ver = JDK_Version::current().major_version();
-    if (verstr != NULL) {
-      version = atoi(verstr);
-      if (version < base_version || version > cur_ver) {
-        // If the specified version is lower than the base version, the base
-        // entry will be used; if the version is higher than the current
-        // jdk version, the highest versioned entry will be used.
-        if (version < base_version) {
-          is_multi_ver = false;
-        }
-        // print out warning, do not use assertion here since it will continue to look
-        // for proper version.
-        warning("JDK%d is not supported in multiple version jars", version);
-      }
-    }
-
-    if (is_multi_ver) {
-      int n;
-      const char* version_entry = "META-INF/versions/";
-      // 10 is the max length of a decimal 32-bit non-negative number
-      // 2 includes the '/' and trailing zero
-      size_t entry_name_len = strlen(version_entry) + 10 + strlen(name) + 2;
-      char* entry_name = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, entry_name_len);
-      if (version > 0) {
-        n = jio_snprintf(entry_name, entry_name_len, "%s%d/%s", version_entry, version, name);
-        entry_name[n] = '\0';
-        buffer = open_entry((const char*)entry_name, filesize, false, CHECK_NULL);
-        if (buffer == NULL) {
-          warning("Could not find %s in %s, try to find highest version instead", entry_name, _zip_name);
-        }
-      }
-      if (buffer == NULL) {
-        for (int i = cur_ver; i >= base_version; i--) {
-          n = jio_snprintf(entry_name, entry_name_len, "%s%d/%s", version_entry, i, name);
-          entry_name[n] = '\0';
-          buffer = open_entry((const char*)entry_name, filesize, false, CHECK_NULL);
-          if (buffer != NULL) {
-            break;
-          }
-        }
-      }
-      FREE_RESOURCE_ARRAY(char, entry_name, entry_name_len);
-    }
-  }
-  return buffer;
-}
-
-bool ClassPathZipEntry::is_multiple_versioned(TRAPS) {
-  assert(DumpSharedSpaces, "called only at dump time");
-  if (_multi_versioned != _unknown) {
-    return (_multi_versioned == _yes) ? true : false;
-  }
-  jint size;
-  char* buffer = (char*)open_entry("META-INF/MANIFEST.MF", &size, true, CHECK_false);
-  if (buffer != NULL) {
-    char* p = buffer;
-    for ( ; *p; ++p) *p = tolower(*p);
-    if (strstr(buffer, "multi-release: true") != NULL) {
-      _multi_versioned = _yes;
-      return true;
-    }
-  }
-  _multi_versioned = _no;
-  return false;
-}
-#endif // INCLUDE_CDS
-
 ClassFileStream* ClassPathZipEntry::open_stream(const char* name, TRAPS) {
   jint filesize;
-  u1* buffer = open_versioned_entry(name, &filesize, CHECK_NULL);
+  u1* buffer = open_entry(name, &filesize, false, CHECK_NULL);
   if (buffer == NULL) {
-    buffer = open_entry(name, &filesize, false, CHECK_NULL);
-    if (buffer == NULL) {
-      return NULL;
-    }
+    return NULL;
   }
   if (UsePerfData) {
     ClassLoader::perf_sys_classfile_bytes_read()->inc(filesize);
@@ -635,6 +549,7 @@
 
 void ClassLoader::setup_bootstrap_search_path() {
   const char* sys_class_path = Arguments::get_sysclasspath();
+  assert(sys_class_path != NULL, "System boot class path must not be NULL");
   if (PrintSharedArchiveAndExit) {
     // Don't print sys_class_path - this is the bootcp of this current VM process, not necessarily
     // the same as the bootcp of the shared archive.
--- a/src/hotspot/share/classfile/classLoader.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/classfile/classLoader.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -94,17 +94,9 @@
 } jzentry;
 
 class ClassPathZipEntry: public ClassPathEntry {
- enum {
-   _unknown = 0,
-   _yes     = 1,
-   _no      = 2
- };
  private:
   jzfile* _zip;              // The zip archive
   const char*   _zip_name;   // Name of zip archive
-  bool _is_boot_append;      // entry coming from -Xbootclasspath/a
-  u1 _multi_versioned;       // indicates if the jar file has multi-versioned entries.
-                             // It can have value of "_unknown", "_yes", or "_no"
  public:
   bool is_modules_image() const { return false; }
   bool is_jar_file() const { return true;  }
@@ -113,10 +105,8 @@
   ClassPathZipEntry(jzfile* zip, const char* zip_name, bool is_boot_append);
   virtual ~ClassPathZipEntry();
   u1* open_entry(const char* name, jint* filesize, bool nul_terminate, TRAPS);
-  u1* open_versioned_entry(const char* name, jint* filesize, TRAPS) NOT_CDS_RETURN_(NULL);
   ClassFileStream* open_stream(const char* name, TRAPS);
   void contents_do(void f(const char* name, void* context), void* context);
-  bool is_multiple_versioned(TRAPS) NOT_CDS_RETURN_(false);
   // Debugging
   NOT_PRODUCT(void compile_the_world(Handle loader, TRAPS);)
 };
--- a/src/hotspot/share/classfile/javaClasses.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/classfile/javaClasses.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1051,8 +1051,9 @@
       ResetMirrorField reset(archived_mirror_h);
       InstanceKlass::cast(k)->do_nonstatic_fields(&reset);
 
-      log_trace(cds, mirror)("Archived %s mirror object from " PTR_FORMAT " ==> " PTR_FORMAT,
-                             type2name((BasicType)t), p2i(Universe::_mirrors[t]), p2i(archived_m));
+      log_trace(cds, heap, mirror)(
+        "Archived %s mirror object from " PTR_FORMAT " ==> " PTR_FORMAT,
+        type2name((BasicType)t), p2i(Universe::_mirrors[t]), p2i(archived_m));
 
       Universe::_mirrors[t] = archived_m;
     }
@@ -1133,8 +1134,9 @@
   k->set_has_raw_archived_mirror();
 
   ResourceMark rm;
-  log_trace(cds, mirror)("Archived %s mirror object from " PTR_FORMAT " ==> " PTR_FORMAT,
-                         k->external_name(), p2i(mirror), p2i(archived_mirror));
+  log_trace(cds, heap, mirror)(
+    "Archived %s mirror object from " PTR_FORMAT " ==> " PTR_FORMAT,
+    k->external_name(), p2i(mirror), p2i(archived_mirror));
 
   return archived_mirror;
 }
@@ -1186,8 +1188,9 @@
   // klass. Updated the field in the archived mirror to point to the relocated
   // klass in the archive.
   Klass *reloc_k = MetaspaceShared::get_relocated_klass(as_Klass(mirror));
-  log_debug(cds, mirror)("Relocate mirror metadata field at _klass_offset from " PTR_FORMAT " ==> " PTR_FORMAT,
-                         p2i(as_Klass(mirror)), p2i(reloc_k));
+  log_debug(cds, heap, mirror)(
+    "Relocate mirror metadata field at _klass_offset from " PTR_FORMAT " ==> " PTR_FORMAT,
+    p2i(as_Klass(mirror)), p2i(reloc_k));
   archived_mirror->metadata_field_put(_klass_offset, reloc_k);
 
   // The field at _array_klass_offset is pointing to the original one dimension
@@ -1195,8 +1198,9 @@
   Klass *arr = array_klass_acquire(mirror);
   if (arr != NULL) {
     Klass *reloc_arr = MetaspaceShared::get_relocated_klass(arr);
-    log_debug(cds, mirror)("Relocate mirror metadata field at _array_klass_offset from " PTR_FORMAT " ==> " PTR_FORMAT,
-                           p2i(arr), p2i(reloc_arr));
+    log_debug(cds, heap, mirror)(
+      "Relocate mirror metadata field at _array_klass_offset from " PTR_FORMAT " ==> " PTR_FORMAT,
+      p2i(arr), p2i(reloc_arr));
     archived_mirror->metadata_field_put(_array_klass_offset, reloc_arr);
   }
   return archived_mirror;
@@ -1247,7 +1251,8 @@
   set_mirror_module_field(k, mirror, module, THREAD);
 
   ResourceMark rm;
-  log_trace(cds, mirror)("Restored %s archived mirror " PTR_FORMAT, k->external_name(), p2i(mirror()));
+  log_trace(cds, heap, mirror)(
+    "Restored %s archived mirror " PTR_FORMAT, k->external_name(), p2i(mirror()));
 
   return true;
 }
@@ -4273,6 +4278,9 @@
 int java_util_concurrent_locks_AbstractOwnableSynchronizer::_owner_offset;
 int reflect_ConstantPool::_oop_offset;
 int reflect_UnsafeStaticFieldAccessorImpl::_base_offset;
+int jdk_internal_module_ArchivedModuleGraph::_archivedSystemModules_offset;
+int jdk_internal_module_ArchivedModuleGraph::_archivedModuleFinder_offset;
+int jdk_internal_module_ArchivedModuleGraph::_archivedMainModule_offset;
 
 #define STACKTRACEELEMENT_FIELDS_DO(macro) \
   macro(declaringClassObject_offset,  k, "declaringClassObject", class_signature, false); \
@@ -4435,6 +4443,23 @@
   return (hardcoded_offset * heapOopSize) + instanceOopDesc::base_offset_in_bytes();
 }
 
+#define MODULEBOOTSTRAP_FIELDS_DO(macro) \
+  macro(_archivedSystemModules_offset,      k, "archivedSystemModules", systemModules_signature, true); \
+  macro(_archivedModuleFinder_offset,       k, "archivedModuleFinder",  moduleFinder_signature,  true); \
+  macro(_archivedMainModule_offset,         k, "archivedMainModule",    string_signature,        true)
+
+void jdk_internal_module_ArchivedModuleGraph::compute_offsets() {
+  InstanceKlass* k = SystemDictionary::ArchivedModuleGraph_klass();
+  assert(k != NULL, "must be loaded");
+  MODULEBOOTSTRAP_FIELDS_DO(FIELD_COMPUTE_OFFSET);
+}
+
+#if INCLUDE_CDS
+void jdk_internal_module_ArchivedModuleGraph::serialize(SerializeClosure* f) {
+  MODULEBOOTSTRAP_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
+}
+#endif
+
 // Compute hard-coded offsets
 // Invoked before SystemDictionary::initialize, so pre-loaded classes
 // are not available to determine the offset_of_static_fields.
@@ -4493,6 +4518,8 @@
   java_lang_LiveStackFrameInfo::compute_offsets();
   java_util_concurrent_locks_AbstractOwnableSynchronizer::compute_offsets();
 
+  jdk_internal_module_ArchivedModuleGraph::compute_offsets();
+
   // generated interpreter code wants to know about the offsets we just computed:
   AbstractAssembler::update_delayed_values();
 }
--- a/src/hotspot/share/classfile/javaClasses.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/classfile/javaClasses.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1491,6 +1491,19 @@
   static void serialize(SerializeClosure* f) NOT_CDS_RETURN;
 };
 
+class jdk_internal_module_ArchivedModuleGraph: AllStatic {
+ private:
+  static int _archivedSystemModules_offset;
+  static int _archivedModuleFinder_offset;
+  static int _archivedMainModule_offset;
+ public:
+  static int  archivedSystemModules_offset()      { return _archivedSystemModules_offset; }
+  static int  archivedModuleFinder_offset()       { return _archivedModuleFinder_offset; }
+  static int  archivedMainModule_offset()         { return _archivedMainModule_offset; }
+  static void compute_offsets();
+  static void serialize(SerializeClosure* f) NOT_CDS_RETURN;
+};
+
 // Use to declare fields that need to be injected into Java classes
 // for the JVM to use.  The name_index and signature_index are
 // declared in vmSymbols.  The may_be_java flag is used to declare
--- a/src/hotspot/share/classfile/stringTable.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/classfile/stringTable.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -785,6 +785,10 @@
 oop StringTable::create_archived_string(oop s, Thread* THREAD) {
   assert(DumpSharedSpaces, "this function is only used with -Xshare:dump");
 
+  if (MetaspaceShared::is_archive_object(s)) {
+    return s;
+  }
+
   oop new_s = NULL;
   typeArrayOop v = java_lang_String::value_no_keepalive(s);
   typeArrayOop new_v =
--- a/src/hotspot/share/classfile/systemDictionary.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/classfile/systemDictionary.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -187,6 +187,7 @@
   do_klass(jdk_internal_loader_ClassLoaders_AppClassLoader_klass,      jdk_internal_loader_ClassLoaders_AppClassLoader,       Pre ) \
   do_klass(jdk_internal_loader_ClassLoaders_PlatformClassLoader_klass, jdk_internal_loader_ClassLoaders_PlatformClassLoader,  Pre ) \
   do_klass(CodeSource_klass,                            java_security_CodeSource,                  Pre                 ) \
+  do_klass(ArchivedModuleGraph_klass,                   jdk_internal_module_ArchivedModuleGraph,   Pre                 ) \
                                                                                                                          \
   do_klass(StackTraceElement_klass,                     java_lang_StackTraceElement,               Opt                 ) \
                                                                                                                          \
--- a/src/hotspot/share/classfile/vmSymbols.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/classfile/vmSymbols.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -124,6 +124,7 @@
   template(getBootClassPathEntryForClass_name,        "getBootClassPathEntryForClass")            \
   template(jdk_internal_vm_PostVMInitHook,            "jdk/internal/vm/PostVMInitHook")           \
   template(sun_net_www_ParseUtil,                     "sun/net/www/ParseUtil")                    \
+  template(jdk_internal_module_ArchivedModuleGraph,   "jdk/internal/module/ArchivedModuleGraph")  \
                                                                                                   \
   template(jdk_internal_loader_ClassLoaders_AppClassLoader,      "jdk/internal/loader/ClassLoaders$AppClassLoader")      \
   template(jdk_internal_loader_ClassLoaders_PlatformClassLoader, "jdk/internal/loader/ClassLoaders$PlatformClassLoader") \
@@ -652,6 +653,8 @@
   template(url_void_signature,                     "(Ljava/net/URL;)V")                                           \
   template(toFileURL_name,                         "toFileURL")                                                   \
   template(toFileURL_signature,                    "(Ljava/lang/String;)Ljava/net/URL;")                          \
+  template(moduleFinder_signature,                 "Ljava/lang/module/ModuleFinder;")                             \
+  template(systemModules_signature,                "Ljdk/internal/module/SystemModules;")                         \
                                                                                                                   \
   /*end*/
 
--- a/src/hotspot/share/code/compiledMethod.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/code/compiledMethod.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -325,6 +325,7 @@
 // Clear ICStubs of all compiled ICs
 void CompiledMethod::clear_ic_stubs() {
   assert_locked_or_safepoint(CompiledIC_lock);
+  ResourceMark rm;
   RelocIterator iter(this);
   while(iter.next()) {
     if (iter.type() == relocInfo::virtual_call_type) {
@@ -547,6 +548,7 @@
 bool CompiledMethod::cleanup_inline_caches_impl(bool parallel, bool unloading_occurred, bool clean_all) {
   assert_locked_or_safepoint(CompiledIC_lock);
   bool postponed = false;
+  ResourceMark rm;
 
   // Find all calls in an nmethod and clear the ones that point to non-entrant,
   // zombie and unloaded nmethods.
--- a/src/hotspot/share/compiler/compileBroker.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/compiler/compileBroker.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -530,7 +530,6 @@
 
 void CompileBroker::print_compile_queues(outputStream* st) {
   st->print_cr("Current compiles: ");
-  MutexLocker locker(MethodCompileQueue_lock);
 
   char buf[2000];
   int buflen = sizeof(buf);
@@ -546,7 +545,7 @@
 }
 
 void CompileQueue::print(outputStream* st) {
-  assert(MethodCompileQueue_lock->owned_by_self(), "must own lock");
+  assert_locked_or_safepoint(MethodCompileQueue_lock);
   st->print_cr("%s:", name());
   CompileTask* task = _first;
   if (task == NULL) {
@@ -1638,12 +1637,6 @@
  * out to be a problem.
  */
 void CompileBroker::shutdown_compiler_runtime(AbstractCompiler* comp, CompilerThread* thread) {
-  // Free buffer blob, if allocated
-  if (thread->get_buffer_blob() != NULL) {
-    MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
-    CodeCache::free(thread->get_buffer_blob());
-  }
-
   if (comp->should_perform_shutdown()) {
     // There are two reasons for shutting down the compiler
     // 1) compiler runtime initialization failed
--- a/src/hotspot/share/compiler/compilerDefinitions.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/compiler/compilerDefinitions.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -253,17 +253,18 @@
     if (FLAG_IS_DEFAULT(OnStackReplacePercentage)) {
       FLAG_SET_DEFAULT(OnStackReplacePercentage, 933);
     }
+    // JVMCI needs values not less than defaults
     if (FLAG_IS_DEFAULT(ReservedCodeCacheSize)) {
-      FLAG_SET_DEFAULT(ReservedCodeCacheSize, 64*M);
+      FLAG_SET_DEFAULT(ReservedCodeCacheSize, MAX2(64*M, ReservedCodeCacheSize));
     }
     if (FLAG_IS_DEFAULT(InitialCodeCacheSize)) {
-      FLAG_SET_DEFAULT(InitialCodeCacheSize, 16*M);
+      FLAG_SET_DEFAULT(InitialCodeCacheSize, MAX2(16*M, InitialCodeCacheSize));
     }
     if (FLAG_IS_DEFAULT(MetaspaceSize)) {
-      FLAG_SET_DEFAULT(MetaspaceSize, 12*M);
+      FLAG_SET_DEFAULT(MetaspaceSize, MAX2(12*M, MetaspaceSize));
     }
     if (FLAG_IS_DEFAULT(NewSizeThreadIncrease)) {
-      FLAG_SET_DEFAULT(NewSizeThreadIncrease, 4*K);
+      FLAG_SET_DEFAULT(NewSizeThreadIncrease, MAX2(4*K, NewSizeThreadIncrease));
     }
     if (TieredStopAtLevel != CompLevel_full_optimization) {
       // Currently JVMCI compiler can only work at the full optimization level
--- a/src/hotspot/share/gc/epsilon/epsilonHeap.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/epsilon/epsilonHeap.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -121,6 +121,11 @@
     safe_object_iterate(cl);
   }
 
+  // Object pinning support: every object is implicitly pinned
+  virtual bool supports_object_pinning() const           { return true; }
+  virtual oop pin_object(JavaThread* thread, oop obj)    { return obj; }
+  virtual void unpin_object(JavaThread* thread, oop obj) { }
+
   // No support for block parsing.
   virtual HeapWord* block_start(const void* addr) const { return NULL;  }
   virtual size_t block_size(const HeapWord* addr) const { return 0;     }
--- a/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1024,11 +1024,17 @@
 
     uint _num_regions_selected_for_rebuild;  // The number of regions actually selected for rebuild.
 
-    void update_remset_before_rebuild(HeapRegion * hr) {
+    void update_remset_before_rebuild(HeapRegion* hr) {
       G1RemSetTrackingPolicy* tracking_policy = _g1h->g1_policy()->remset_tracker();
 
-      size_t const live_bytes = _cm->liveness(hr->hrm_index()) * HeapWordSize;
-      bool selected_for_rebuild = tracking_policy->update_before_rebuild(hr, live_bytes);
+      bool selected_for_rebuild;
+      if (hr->is_humongous()) {
+        bool const is_live = _cm->liveness(hr->humongous_start_region()->hrm_index()) > 0;
+        selected_for_rebuild = tracking_policy->update_humongous_before_rebuild(hr, is_live);
+      } else {
+        size_t const live_bytes = _cm->liveness(hr->hrm_index());
+        selected_for_rebuild = tracking_policy->update_before_rebuild(hr, live_bytes);
+      }
       if (selected_for_rebuild) {
         _num_regions_selected_for_rebuild++;
       }
--- a/src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -29,10 +29,6 @@
 #include "gc/g1/heapRegionRemSet.hpp"
 #include "runtime/safepoint.hpp"
 
-bool G1RemSetTrackingPolicy::is_interesting_humongous_region(HeapRegion* r) const {
-  return r->is_humongous() && oop(r->humongous_start_region()->bottom())->is_typeArray();
-}
-
 bool G1RemSetTrackingPolicy::needs_scan_for_rebuild(HeapRegion* r) const {
   // All non-free, non-young, non-closed archive regions need to be scanned for references;
   // At every gc we gather references to other regions in young, and closed archive
@@ -64,51 +60,81 @@
   /* nothing to do */
 }
 
+static void print_before_rebuild(HeapRegion* r, bool selected_for_rebuild, size_t total_live_bytes, size_t live_bytes) {
+  log_trace(gc, remset, tracking)("Before rebuild region %u "
+                                  "(ntams: " PTR_FORMAT ") "
+                                  "total_live_bytes " SIZE_FORMAT " "
+                                  "selected %s "
+                                  "(live_bytes " SIZE_FORMAT " "
+                                  "next_marked " SIZE_FORMAT " "
+                                  "marked " SIZE_FORMAT " "
+                                  "type %s)",
+                                  r->hrm_index(),
+                                  p2i(r->next_top_at_mark_start()),
+                                  total_live_bytes,
+                                  BOOL_TO_STR(selected_for_rebuild),
+                                  live_bytes,
+                                  r->next_marked_bytes(),
+                                  r->marked_bytes(),
+                                  r->get_type_str());
+}
+
+bool G1RemSetTrackingPolicy::update_humongous_before_rebuild(HeapRegion* r, bool is_live) {
+  assert(SafepointSynchronize::is_at_safepoint(), "should be at safepoint");
+  assert(r->is_humongous(), "Region %u should be humongous", r->hrm_index());
+
+  if (r->is_archive()) {
+    return false;
+  }
+
+  assert(!r->rem_set()->is_updating(), "Remembered set of region %u is updating before rebuild", r->hrm_index());
+
+  bool selected_for_rebuild = false;
+  // For humongous regions, to be of interest for rebuilding the remembered set the following must apply:
+  // - We always try to update the remembered sets of humongous regions containing
+  // type arrays as they might have been reset after full gc.
+  if (is_live && oop(r->humongous_start_region()->bottom())->is_typeArray() && !r->rem_set()->is_tracked()) {
+    r->rem_set()->set_state_updating();
+    selected_for_rebuild = true;
+  }
+
+  size_t const live_bytes = is_live ? HeapRegion::GrainBytes : 0;
+  print_before_rebuild(r, selected_for_rebuild, live_bytes, live_bytes);
+
+  return selected_for_rebuild;
+}
+
 bool G1RemSetTrackingPolicy::update_before_rebuild(HeapRegion* r, size_t live_bytes) {
   assert(SafepointSynchronize::is_at_safepoint(), "should be at safepoint");
-
-  bool selected_for_rebuild = false;
+  assert(!r->is_humongous(), "Region %u is humongous", r->hrm_index());
 
   // Only consider updating the remembered set for old gen regions - excluding archive regions
   // which never move (but are "Old" regions).
-  if (r->is_old_or_humongous() && !r->is_archive()) {
-    size_t between_ntams_and_top = (r->top() - r->next_top_at_mark_start()) * HeapWordSize;
-    size_t total_live_bytes = live_bytes + between_ntams_and_top;
-    // Completely free regions after rebuild are of no interest wrt rebuilding the
-    // remembered set.
-    assert(!r->rem_set()->is_updating(), "Remembered set of region %u is updating before rebuild", r->hrm_index());
-    // To be of interest for rebuilding the remembered set the following must apply:
-    // - They must contain some live data in them.
-    // - We always try to update the remembered sets of humongous regions containing
-    // type arrays if they are empty as they might have been reset after full gc.
-    // - Only need to rebuild non-complete remembered sets.
-    // - Otherwise only add those old gen regions which occupancy is low enough that there
-    // is a chance that we will ever evacuate them in the mixed gcs.
-    if ((total_live_bytes > 0) &&
-        (is_interesting_humongous_region(r) || CollectionSetChooser::region_occupancy_low_enough_for_evac(total_live_bytes)) &&
-        !r->rem_set()->is_tracked()) {
+  if (!r->is_old() || r->is_archive()) {
+    return false;
+  }
+
+  assert(!r->rem_set()->is_updating(), "Remembered set of region %u is updating before rebuild", r->hrm_index());
+
+  size_t between_ntams_and_top = (r->top() - r->next_top_at_mark_start()) * HeapWordSize;
+  size_t total_live_bytes = live_bytes + between_ntams_and_top;
 
-      r->rem_set()->set_state_updating();
-      selected_for_rebuild = true;
-    }
-    log_trace(gc, remset, tracking)("Before rebuild region %u "
-                                    "(ntams: " PTR_FORMAT ") "
-                                    "total_live_bytes " SIZE_FORMAT " "
-                                    "selected %s "
-                                    "(live_bytes " SIZE_FORMAT " "
-                                    "next_marked " SIZE_FORMAT " "
-                                    "marked " SIZE_FORMAT " "
-                                    "type %s)",
-                                    r->hrm_index(),
-                                    p2i(r->next_top_at_mark_start()),
-                                    total_live_bytes,
-                                    BOOL_TO_STR(selected_for_rebuild),
-                                    live_bytes,
-                                    r->next_marked_bytes(),
-                                    r->marked_bytes(),
-                                    r->get_type_str());
+  bool selected_for_rebuild = false;
+  // For old regions, to be of interest for rebuilding the remembered set the following must apply:
+  // - They must contain some live data in them.
+  // - Only need to rebuild non-complete remembered sets.
+  // - Otherwise only add those old gen regions which occupancy is low enough that there
+  // is a chance that we will ever evacuate them in the mixed gcs.
+  if ((total_live_bytes > 0) &&
+      CollectionSetChooser::region_occupancy_low_enough_for_evac(total_live_bytes) &&
+      !r->rem_set()->is_tracked()) {
+
+    r->rem_set()->set_state_updating();
+    selected_for_rebuild = true;
   }
 
+  print_before_rebuild(r, selected_for_rebuild, total_live_bytes, live_bytes);
+
   return selected_for_rebuild;
 }
 
@@ -149,4 +175,3 @@
                                     r->rem_set()->mem_size());
   }
 }
-
--- a/src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -33,10 +33,6 @@
 // the remembered set, ie. when it should be tracked, and if/when the remembered
 // set is complete.
 class G1RemSetTrackingPolicy : public CHeapObj<mtGC> {
-private:
-  // Is the given region an interesting humongous region to start remembered set tracking
-  // for?
-  bool is_interesting_humongous_region(HeapRegion* r) const;
 public:
   // Do we need to scan the given region to get all outgoing references for remembered
   // set rebuild?
@@ -45,6 +41,9 @@
   // called at any time. The caller makes sure that the changes to the remembered
   // set state are visible to other threads.
   void update_at_allocate(HeapRegion* r);
+  // Update remembered set tracking state for humongous regions before we are going to
+  // rebuild remembered sets. Called at safepoint in the remark pause.
+  bool update_humongous_before_rebuild(HeapRegion* r, bool is_live);
   // Update remembered set tracking state before we are going to rebuild remembered
   // sets. Called at safepoint in the remark pause.
   bool update_before_rebuild(HeapRegion* r, size_t live_bytes);
--- a/src/hotspot/share/gc/shared/barrierSet.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/shared/barrierSet.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -199,7 +199,7 @@
 
     template <typename T>
     static T atomic_cmpxchg_in_heap_at(T new_value, oop base, ptrdiff_t offset, T compare_value) {
-      return Raw::oop_atomic_cmpxchg_at(new_value, base, offset, compare_value);
+      return Raw::atomic_cmpxchg_at(new_value, base, offset, compare_value);
     }
 
     template <typename T>
--- a/src/hotspot/share/gc/shared/oopStorage.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/shared/oopStorage.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -45,47 +45,47 @@
 #include "utilities/ostream.hpp"
 #include "utilities/spinYield.hpp"
 
-OopStorage::AllocateEntry::AllocateEntry() : _prev(NULL), _next(NULL) {}
+OopStorage::AllocationListEntry::AllocationListEntry() : _prev(NULL), _next(NULL) {}
 
-OopStorage::AllocateEntry::~AllocateEntry() {
+OopStorage::AllocationListEntry::~AllocationListEntry() {
   assert(_prev == NULL, "deleting attached block");
   assert(_next == NULL, "deleting attached block");
 }
 
-OopStorage::AllocateList::AllocateList() : _head(NULL), _tail(NULL) {}
+OopStorage::AllocationList::AllocationList() : _head(NULL), _tail(NULL) {}
 
-OopStorage::AllocateList::~AllocateList() {
+OopStorage::AllocationList::~AllocationList() {
   // ~OopStorage() empties its lists before destroying them.
   assert(_head == NULL, "deleting non-empty block list");
   assert(_tail == NULL, "deleting non-empty block list");
 }
 
-void OopStorage::AllocateList::push_front(const Block& block) {
+void OopStorage::AllocationList::push_front(const Block& block) {
   const Block* old = _head;
   if (old == NULL) {
     assert(_tail == NULL, "invariant");
     _head = _tail = &block;
   } else {
-    block.allocate_entry()._next = old;
-    old->allocate_entry()._prev = &block;
+    block.allocation_list_entry()._next = old;
+    old->allocation_list_entry()._prev = &block;
     _head = &block;
   }
 }
 
-void OopStorage::AllocateList::push_back(const Block& block) {
+void OopStorage::AllocationList::push_back(const Block& block) {
   const Block* old = _tail;
   if (old == NULL) {
     assert(_head == NULL, "invariant");
     _head = _tail = &block;
   } else {
-    old->allocate_entry()._next = &block;
-    block.allocate_entry()._prev = old;
+    old->allocation_list_entry()._next = &block;
+    block.allocation_list_entry()._prev = old;
     _tail = &block;
   }
 }
 
-void OopStorage::AllocateList::unlink(const Block& block) {
-  const AllocateEntry& block_entry = block.allocate_entry();
+void OopStorage::AllocationList::unlink(const Block& block) {
+  const AllocationListEntry& block_entry = block.allocation_list_entry();
   const Block* prev_blk = block_entry._prev;
   const Block* next_blk = block_entry._next;
   block_entry._prev = NULL;
@@ -96,15 +96,15 @@
     _head = _tail = NULL;
   } else if (prev_blk == NULL) {
     assert(_head == &block, "invariant");
-    next_blk->allocate_entry()._prev = NULL;
+    next_blk->allocation_list_entry()._prev = NULL;
     _head = next_blk;
   } else if (next_blk == NULL) {
     assert(_tail == &block, "invariant");
-    prev_blk->allocate_entry()._next = NULL;
+    prev_blk->allocation_list_entry()._next = NULL;
     _tail = prev_blk;
   } else {
-    next_blk->allocate_entry()._prev = prev_blk;
-    prev_blk->allocate_entry()._next = next_blk;
+    next_blk->allocation_list_entry()._prev = prev_blk;
+    prev_blk->allocation_list_entry()._next = next_blk;
   }
 }
 
@@ -210,7 +210,7 @@
   _owner(owner),
   _memory(memory),
   _active_index(0),
-  _allocate_entry(),
+  _allocation_list_entry(),
   _deferred_updates_next(NULL),
   _release_refcount(0)
 {
@@ -367,65 +367,65 @@
 //////////////////////////////////////////////////////////////////////////////
 // Allocation
 //
-// Allocation involves the _allocate_list, which contains a subset of the
+// Allocation involves the _allocation_list, which contains a subset of the
 // blocks owned by a storage object.  This is a doubly-linked list, linked
 // through dedicated fields in the blocks.  Full blocks are removed from this
 // list, though they are still present in the _active_array.  Empty blocks are
-// kept at the end of the _allocate_list, to make it easy for empty block
+// kept at the end of the _allocation_list, to make it easy for empty block
 // deletion to find them.
 //
 // allocate(), and delete_empty_blocks_concurrent() lock the
-// _allocate_mutex while performing any list and array modifications.
+// _allocation_mutex while performing any list and array modifications.
 //
 // allocate() and release() update a block's _allocated_bitmask using CAS
 // loops.  This prevents loss of updates even though release() performs
 // its updates without any locking.
 //
-// allocate() obtains the entry from the first block in the _allocate_list,
+// allocate() obtains the entry from the first block in the _allocation_list,
 // and updates that block's _allocated_bitmask to indicate the entry is in
 // use.  If this makes the block full (all entries in use), the block is
-// removed from the _allocate_list so it won't be considered by future
+// removed from the _allocation_list so it won't be considered by future
 // allocations until some entries in it are released.
 //
 // release() is performed lock-free. release() first looks up the block for
 // the entry, using address alignment to find the enclosing block (thereby
 // avoiding iteration over the _active_array).  Once the block has been
 // determined, its _allocated_bitmask needs to be updated, and its position in
-// the _allocate_list may need to be updated.  There are two cases:
+// the _allocation_list may need to be updated.  There are two cases:
 //
 // (a) If the block is neither full nor would become empty with the release of
 // the entry, only its _allocated_bitmask needs to be updated.  But if the CAS
 // update fails, the applicable case may change for the retry.
 //
-// (b) Otherwise, the _allocate_list also needs to be modified.  This requires
-// locking the _allocate_mutex.  To keep the release() operation lock-free,
-// rather than updating the _allocate_list itself, it instead performs a
+// (b) Otherwise, the _allocation_list also needs to be modified.  This requires
+// locking the _allocation_mutex.  To keep the release() operation lock-free,
+// rather than updating the _allocation_list itself, it instead performs a
 // lock-free push of the block onto the _deferred_updates list.  Entries on
 // that list are processed by allocate() and delete_empty_blocks_XXX(), while
 // they already hold the necessary lock.  That processing makes the block's
 // list state consistent with its current _allocated_bitmask.  The block is
-// added to the _allocate_list if not already present and the bitmask is not
-// full.  The block is moved to the end of the _allocated_list if the bitmask
+// added to the _allocation_list if not already present and the bitmask is not
+// full.  The block is moved to the end of the _allocation_list if the bitmask
 // is empty, for ease of empty block deletion processing.
 
 oop* OopStorage::allocate() {
-  MutexLockerEx ml(_allocate_mutex, Mutex::_no_safepoint_check_flag);
+  MutexLockerEx ml(_allocation_mutex, Mutex::_no_safepoint_check_flag);
   // Do some deferred update processing every time we allocate.
-  // Continue processing deferred updates if _allocate_list is empty,
+  // Continue processing deferred updates if _allocation_list is empty,
   // in the hope that we'll get a block from that, rather than
   // allocating a new block.
-  while (reduce_deferred_updates() && (_allocate_list.head() == NULL)) {}
+  while (reduce_deferred_updates() && (_allocation_list.head() == NULL)) {}
 
-  // Use the first block in _allocate_list for the allocation.
-  Block* block = _allocate_list.head();
+  // Use the first block in _allocation_list for the allocation.
+  Block* block = _allocation_list.head();
   if (block == NULL) {
     // No available blocks; make a new one, and add to storage.
     {
-      MutexUnlockerEx mul(_allocate_mutex, Mutex::_no_safepoint_check_flag);
+      MutexUnlockerEx mul(_allocation_mutex, Mutex::_no_safepoint_check_flag);
       block = Block::new_block(this);
     }
     if (block == NULL) {
-      while (_allocate_list.head() == NULL) {
+      while (_allocation_list.head() == NULL) {
         if (!reduce_deferred_updates()) {
           // Failed to make new block, no other thread made a block
           // available while the mutex was released, and didn't get
@@ -448,13 +448,13 @@
           return NULL;
         }
       }
-      // Add to end of _allocate_list.  The mutex release allowed
-      // other threads to add blocks to the _allocate_list.  We prefer
+      // Add to end of _allocation_list.  The mutex release allowed
+      // other threads to add blocks to the _allocation_list.  We prefer
       // to allocate from non-empty blocks, to allow empty blocks to
       // be deleted.
-      _allocate_list.push_back(*block);
+      _allocation_list.push_back(*block);
     }
-    block = _allocate_list.head();
+    block = _allocation_list.head();
   }
   // Allocate from first block.
   assert(block != NULL, "invariant");
@@ -471,7 +471,7 @@
     // Transitioning from not full to full.
     // Remove full blocks from consideration by future allocates.
     log_debug(oopstorage, blocks)("%s: block full " PTR_FORMAT, name(), p2i(block));
-    _allocate_list.unlink(*block);
+    _allocation_list.unlink(*block);
   }
   log_info(oopstorage, ref)("%s: allocated " PTR_FORMAT, name(), p2i(result));
   return result;
@@ -482,7 +482,7 @@
 // Return true if the array was successfully expanded, false to
 // indicate allocation failure.
 bool OopStorage::expand_active_array() {
-  assert_lock_strong(_allocate_mutex);
+  assert_lock_strong(_allocation_mutex);
   ActiveArray* old_array = _active_array;
   size_t new_size = 2 * old_array->size();
   log_info(oopstorage, blocks)("%s: expand active array " SIZE_FORMAT,
@@ -632,7 +632,7 @@
   // (updated bitmask is empty or old bitmask was full), atomically push
   // this block onto the deferred updates list.  Some future call to
   // reduce_deferred_updates will make any needed changes related to this
-  // block and _allocate_list.  This deferral avoids list updates and the
+  // block and _allocation_list.  This deferral avoids list updates and the
   // associated locking here.
   if ((releasing == old_allocated) || is_full_bitmask(old_allocated)) {
     // Log transitions.  Both transitions are possible in a single update.
@@ -663,7 +663,7 @@
 
 // Process one available deferred update.  Returns true if one was processed.
 bool OopStorage::reduce_deferred_updates() {
-  assert_locked_or_safepoint(_allocate_mutex);
+  assert_locked_or_safepoint(_allocation_mutex);
   // Atomically pop a block off the list, if any available.
   // No ABA issue because this is only called by one thread at a time.
   // The atomicity is wrto pushes by release().
@@ -687,20 +687,20 @@
   uintx allocated = block->allocated_bitmask();
 
   // Make membership in list consistent with bitmask state.
-  if ((_allocate_list.ctail() != NULL) &&
-      ((_allocate_list.ctail() == block) ||
-       (_allocate_list.next(*block) != NULL))) {
-    // Block is in the allocate list.
+  if ((_allocation_list.ctail() != NULL) &&
+      ((_allocation_list.ctail() == block) ||
+       (_allocation_list.next(*block) != NULL))) {
+    // Block is in the _allocation_list.
     assert(!is_full_bitmask(allocated), "invariant");
   } else if (!is_full_bitmask(allocated)) {
-    // Block is not in the allocate list, but now should be.
-    _allocate_list.push_front(*block);
+    // Block is not in the _allocation_list, but now should be.
+    _allocation_list.push_front(*block);
   } // Else block is full and not in list, which is correct.
 
   // Move empty block to end of list, for possible deletion.
   if (is_empty_bitmask(allocated)) {
-    _allocate_list.unlink(*block);
-    _allocate_list.push_back(*block);
+    _allocation_list.unlink(*block);
+    _allocation_list.push_back(*block);
   }
 
   log_debug(oopstorage, blocks)("%s: processed deferred update " PTR_FORMAT,
@@ -759,24 +759,24 @@
 const size_t initial_active_array_size = 8;
 
 OopStorage::OopStorage(const char* name,
-                       Mutex* allocate_mutex,
+                       Mutex* allocation_mutex,
                        Mutex* active_mutex) :
   _name(dup_name(name)),
   _active_array(ActiveArray::create(initial_active_array_size)),
-  _allocate_list(),
+  _allocation_list(),
   _deferred_updates(NULL),
-  _allocate_mutex(allocate_mutex),
+  _allocation_mutex(allocation_mutex),
   _active_mutex(active_mutex),
   _allocation_count(0),
   _concurrent_iteration_active(false)
 {
   _active_array->increment_refcount();
-  assert(_active_mutex->rank() < _allocate_mutex->rank(),
-         "%s: active_mutex must have lower rank than allocate_mutex", _name);
+  assert(_active_mutex->rank() < _allocation_mutex->rank(),
+         "%s: active_mutex must have lower rank than allocation_mutex", _name);
   assert(_active_mutex->_safepoint_check_required != Mutex::_safepoint_check_always,
          "%s: active mutex requires safepoint check", _name);
-  assert(_allocate_mutex->_safepoint_check_required != Mutex::_safepoint_check_always,
-         "%s: allocate mutex requires safepoint check", _name);
+  assert(_allocation_mutex->_safepoint_check_required != Mutex::_safepoint_check_always,
+         "%s: allocation mutex requires safepoint check", _name);
 }
 
 void OopStorage::delete_empty_block(const Block& block) {
@@ -791,8 +791,8 @@
     _deferred_updates = block->deferred_updates_next();
     block->set_deferred_updates_next(NULL);
   }
-  while ((block = _allocate_list.head()) != NULL) {
-    _allocate_list.unlink(*block);
+  while ((block = _allocation_list.head()) != NULL) {
+    _allocation_list.unlink(*block);
   }
   bool unreferenced = _active_array->decrement_refcount();
   assert(unreferenced, "deleting storage while _active_array is referenced");
@@ -811,18 +811,18 @@
   while (reduce_deferred_updates()) {}
   // Don't interfere with a concurrent iteration.
   if (_concurrent_iteration_active) return;
-  // Delete empty (and otherwise deletable) blocks from end of _allocate_list.
-  for (Block* block = _allocate_list.tail();
+  // Delete empty (and otherwise deletable) blocks from end of _allocation_list.
+  for (Block* block = _allocation_list.tail();
        (block != NULL) && block->is_deletable();
-       block = _allocate_list.tail()) {
+       block = _allocation_list.tail()) {
     _active_array->remove(block);
-    _allocate_list.unlink(*block);
+    _allocation_list.unlink(*block);
     delete_empty_block(*block);
   }
 }
 
 void OopStorage::delete_empty_blocks_concurrent() {
-  MutexLockerEx ml(_allocate_mutex, Mutex::_no_safepoint_check_flag);
+  MutexLockerEx ml(_allocation_mutex, Mutex::_no_safepoint_check_flag);
   // Other threads could be adding to the empty block count while we
   // release the mutex across the block deletions.  Set an upper bound
   // on how many blocks we'll try to release, so other threads can't
@@ -834,7 +834,7 @@
     // lock.  But limit number processed to limit lock duration.
     reduce_deferred_updates();
 
-    Block* block = _allocate_list.tail();
+    Block* block = _allocation_list.tail();
     if ((block == NULL) || !block->is_deletable()) {
       // No block to delete, so done.  There could be more pending
       // deferred updates that could give us more work to do; deal with
@@ -848,10 +848,10 @@
       if (_concurrent_iteration_active) return;
       _active_array->remove(block);
     }
-    // Remove block from _allocate_list and delete it.
-    _allocate_list.unlink(*block);
+    // Remove block from _allocation_list and delete it.
+    _allocation_list.unlink(*block);
     // Release mutex while deleting block.
-    MutexUnlockerEx ul(_allocate_mutex, Mutex::_no_safepoint_check_flag);
+    MutexUnlockerEx ul(_allocation_mutex, Mutex::_no_safepoint_check_flag);
     delete_empty_block(*block);
   }
 }
@@ -860,7 +860,7 @@
   const Block* block = find_block_or_null(ptr);
   if (block != NULL) {
     // Prevent block deletion and _active_array modification.
-    MutexLockerEx ml(_allocate_mutex, Mutex::_no_safepoint_check_flag);
+    MutexLockerEx ml(_allocation_mutex, Mutex::_no_safepoint_check_flag);
     // Block could be a false positive, so get index carefully.
     size_t index = Block::active_index_safe(block);
     if ((index < _active_array->block_count()) &&
--- a/src/hotspot/share/gc/shared/oopStorage.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/shared/oopStorage.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -73,7 +73,7 @@
 
 class OopStorage : public CHeapObj<mtGC> {
 public:
-  OopStorage(const char* name, Mutex* allocate_mutex, Mutex* active_mutex);
+  OopStorage(const char* name, Mutex* allocation_mutex, Mutex* active_mutex);
   ~OopStorage();
 
   // These count and usage accessors are racy unless at a safepoint.
@@ -94,12 +94,12 @@
     ALLOCATED_ENTRY
   };
 
-  // Locks _allocate_mutex.
+  // Locks _allocation_mutex.
   // precondition: ptr != NULL.
   EntryStatus allocation_status(const oop* ptr) const;
 
   // Allocates and returns a new entry.  Returns NULL if memory allocation
-  // failed.  Locks _allocate_mutex.
+  // failed.  Locks _allocation_mutex.
   // postcondition: *result == NULL.
   oop* allocate();
 
@@ -152,7 +152,7 @@
 
   // Block cleanup functions are for the exclusive use of the GC.
   // Both stop deleting if there is an in-progress concurrent iteration.
-  // Concurrent deletion locks both the allocate_mutex and the active_mutex.
+  // Concurrent deletion locks both the _allocation_mutex and the _active_mutex.
   void delete_empty_blocks_safepoint();
   void delete_empty_blocks_concurrent();
 
@@ -172,20 +172,20 @@
 NOT_AIX( private: )
   class Block;                  // Fixed-size array of oops, plus bookkeeping.
   class ActiveArray;            // Array of Blocks, plus bookkeeping.
-  class AllocateEntry;          // Provides AllocateList links in a Block.
+  class AllocationListEntry;    // Provides AllocationList links in a Block.
 
   // Doubly-linked list of Blocks.
-  class AllocateList {
+  class AllocationList {
     const Block* _head;
     const Block* _tail;
 
     // Noncopyable.
-    AllocateList(const AllocateList&);
-    AllocateList& operator=(const AllocateList&);
+    AllocationList(const AllocationList&);
+    AllocationList& operator=(const AllocationList&);
 
   public:
-    AllocateList();
-    ~AllocateList();
+    AllocationList();
+    ~AllocationList();
 
     Block* head();
     Block* tail();
@@ -219,10 +219,10 @@
 private:
   const char* _name;
   ActiveArray* _active_array;
-  AllocateList _allocate_list;
+  AllocationList _allocation_list;
   Block* volatile _deferred_updates;
 
-  Mutex* _allocate_mutex;
+  Mutex* _allocation_mutex;
   Mutex* _active_mutex;
 
   // Volatile for racy unlocked accesses.
--- a/src/hotspot/share/gc/shared/oopStorage.inline.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/shared/oopStorage.inline.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -107,10 +107,10 @@
   return *block_ptr(index);
 }
 
-// A Block has an embedded AllocateEntry to provide the links between
-// Blocks in a AllocateList.
-class OopStorage::AllocateEntry {
-  friend class OopStorage::AllocateList;
+// A Block has an embedded AllocationListEntry to provide the links between
+// Blocks in an AllocationList.
+class OopStorage::AllocationListEntry {
+  friend class OopStorage::AllocationList;
 
   // Members are mutable, and we deal exclusively with pointers to
   // const, to make const blocks easier to use; a block being const
@@ -119,18 +119,18 @@
   mutable const Block* _next;
 
   // Noncopyable.
-  AllocateEntry(const AllocateEntry&);
-  AllocateEntry& operator=(const AllocateEntry&);
+  AllocationListEntry(const AllocationListEntry&);
+  AllocationListEntry& operator=(const AllocationListEntry&);
 
 public:
-  AllocateEntry();
-  ~AllocateEntry();
+  AllocationListEntry();
+  ~AllocationListEntry();
 };
 
 // Fixed-sized array of oops, plus bookkeeping data.
 // All blocks are in the storage's _active_array, at the block's _active_index.
-// Non-full blocks are in the storage's _allocate_list, linked through the
-// block's _allocate_entry.  Empty blocks are at the end of that list.
+// Non-full blocks are in the storage's _allocation_list, linked through the
+// block's _allocation_list_entry.  Empty blocks are at the end of that list.
 class OopStorage::Block /* No base class, to avoid messing up alignment. */ {
   // _data must be the first non-static data member, for alignment.
   oop _data[BitsPerWord];
@@ -140,7 +140,7 @@
   const OopStorage* _owner;
   void* _memory;              // Unaligned storage containing block.
   size_t _active_index;
-  AllocateEntry _allocate_entry;
+  AllocationListEntry _allocation_list_entry;
   Block* volatile _deferred_updates_next;
   volatile uintx _release_refcount;
 
@@ -158,7 +158,7 @@
   Block& operator=(const Block&);
 
 public:
-  const AllocateEntry& allocate_entry() const;
+  const AllocationListEntry& allocation_list_entry() const;
 
   static size_t allocation_size();
   static size_t allocation_alignment_shift();
@@ -197,36 +197,36 @@
   template<typename F> bool iterate(F f) const;
 }; // class Block
 
-inline OopStorage::Block* OopStorage::AllocateList::head() {
+inline OopStorage::Block* OopStorage::AllocationList::head() {
   return const_cast<Block*>(_head);
 }
 
-inline OopStorage::Block* OopStorage::AllocateList::tail() {
+inline OopStorage::Block* OopStorage::AllocationList::tail() {
   return const_cast<Block*>(_tail);
 }
 
-inline const OopStorage::Block* OopStorage::AllocateList::chead() const {
+inline const OopStorage::Block* OopStorage::AllocationList::chead() const {
   return _head;
 }
 
-inline const OopStorage::Block* OopStorage::AllocateList::ctail() const {
+inline const OopStorage::Block* OopStorage::AllocationList::ctail() const {
   return _tail;
 }
 
-inline OopStorage::Block* OopStorage::AllocateList::prev(Block& block) {
-  return const_cast<Block*>(block.allocate_entry()._prev);
+inline OopStorage::Block* OopStorage::AllocationList::prev(Block& block) {
+  return const_cast<Block*>(block.allocation_list_entry()._prev);
 }
 
-inline OopStorage::Block* OopStorage::AllocateList::next(Block& block) {
-  return const_cast<Block*>(block.allocate_entry()._next);
+inline OopStorage::Block* OopStorage::AllocationList::next(Block& block) {
+  return const_cast<Block*>(block.allocation_list_entry()._next);
 }
 
-inline const OopStorage::Block* OopStorage::AllocateList::prev(const Block& block) const {
-  return block.allocate_entry()._prev;
+inline const OopStorage::Block* OopStorage::AllocationList::prev(const Block& block) const {
+  return block.allocation_list_entry()._prev;
 }
 
-inline const OopStorage::Block* OopStorage::AllocateList::next(const Block& block) const {
-  return block.allocate_entry()._next;
+inline const OopStorage::Block* OopStorage::AllocationList::next(const Block& block) const {
+  return block.allocation_list_entry()._next;
 }
 
 template<typename Closure>
@@ -298,8 +298,8 @@
 
 // Inline Block accesses for use in iteration loops.
 
-inline const OopStorage::AllocateEntry& OopStorage::Block::allocate_entry() const {
-  return _allocate_entry;
+inline const OopStorage::AllocationListEntry& OopStorage::Block::allocation_list_entry() const {
+  return _allocation_list_entry;
 }
 
 inline void OopStorage::Block::check_index(unsigned index) const {
--- a/src/hotspot/share/gc/shared/oopStorageParState.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/shared/oopStorageParState.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -52,7 +52,7 @@
 // interfering with with each other.
 //
 // Both allocate() and delete_empty_blocks_concurrent() lock the
-// _allocate_mutex while performing their respective list and array
+// _allocation_mutex while performing their respective list and array
 // manipulations, preventing them from interfering with each other.
 //
 // When allocate() creates a new block, it is added to the end of the
--- a/src/hotspot/share/gc/shared/referenceProcessor.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/shared/referenceProcessor.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1033,7 +1033,7 @@
   // The last ref must have its discovered field pointing to itself.
   oop next_discovered = (current_head != NULL) ? current_head : obj;
 
-  oop retest = RawAccess<>::oop_atomic_cmpxchg(next_discovered, discovered_addr, oop(NULL));
+  oop retest = HeapAccess<AS_NO_KEEPALIVE>::oop_atomic_cmpxchg(next_discovered, discovered_addr, oop(NULL));
 
   if (retest == NULL) {
     // This thread just won the right to enqueue the object.
--- a/src/hotspot/share/gc/shared/referenceProcessorPhaseTimes.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/shared/referenceProcessorPhaseTimes.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -80,8 +80,7 @@
 STATIC_ASSERT((REF_PHANTOM + 1) == ARRAY_SIZE(ReferenceTypeNames));
 
 static const char* phase_enum_2_phase_string(ReferenceProcessor::RefProcPhases phase) {
-  assert(phase >= ReferenceProcessor::RefPhase1 && phase <= ReferenceProcessor::RefPhaseMax,
-         "Invalid reference processing phase (%d)", phase);
+  ASSERT_PHASE(phase);
   return PhaseNames[phase];
 }
 
--- a/src/hotspot/share/gc/shared/space.inline.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/shared/space.inline.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -25,6 +25,7 @@
 #ifndef SHARE_VM_GC_SHARED_SPACE_INLINE_HPP
 #define SHARE_VM_GC_SHARED_SPACE_INLINE_HPP
 
+#include "gc/shared/blockOffsetTable.inline.hpp"
 #include "gc/shared/collectedHeap.hpp"
 #include "gc/shared/generation.hpp"
 #include "gc/shared/space.hpp"
--- a/src/hotspot/share/gc/shared/taskqueue.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/shared/taskqueue.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -61,10 +61,11 @@
 public:
   inline TaskQueueStats()       { reset(); }
 
-  inline void record_push()     { ++_stats[push]; }
-  inline void record_pop()      { ++_stats[pop]; }
-  inline void record_pop_slow() { record_pop(); ++_stats[pop_slow]; }
-  inline void record_steal(bool success);
+  inline void record_push()          { ++_stats[push]; }
+  inline void record_pop()           { ++_stats[pop]; }
+  inline void record_pop_slow()      { record_pop(); ++_stats[pop_slow]; }
+  inline void record_steal_attempt() { ++_stats[steal_attempt]; }
+  inline void record_steal()         { ++_stats[steal]; }
   inline void record_overflow(size_t new_length);
 
   TaskQueueStats & operator +=(const TaskQueueStats & addend);
@@ -87,11 +88,6 @@
   static const char * const _names[last_stat_id];
 };
 
-void TaskQueueStats::record_steal(bool success) {
-  ++_stats[steal_attempt];
-  if (success) ++_stats[steal];
-}
-
 void TaskQueueStats::record_overflow(size_t new_len) {
   ++_stats[overflow];
   if (new_len > _stats[overflow_max_len]) _stats[overflow_max_len] = new_len;
@@ -364,18 +360,19 @@
 
 template<class T, MEMFLAGS F>
 class GenericTaskQueueSet: public TaskQueueSetSuperImpl<F> {
+public:
+  typedef typename T::element_type E;
+
 private:
   uint _n;
   T** _queues;
 
+  bool steal_best_of_2(uint queue_num, int* seed, E& t);
+
 public:
-  typedef typename T::element_type E;
-
   GenericTaskQueueSet(int n);
   ~GenericTaskQueueSet();
 
-  bool steal_best_of_2(uint queue_num, int* seed, E& t);
-
   void register_queue(uint i, T* q);
 
   T* queue(uint n);
--- a/src/hotspot/share/gc/shared/taskqueue.inline.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/shared/taskqueue.inline.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -252,12 +252,12 @@
 template<class T, MEMFLAGS F> bool
 GenericTaskQueueSet<T, F>::steal(uint queue_num, int* seed, E& t) {
   for (uint i = 0; i < 2 * _n; i++) {
+    TASKQUEUE_STATS_ONLY(queue(queue_num)->stats.record_steal_attempt());
     if (steal_best_of_2(queue_num, seed, t)) {
-      TASKQUEUE_STATS_ONLY(queue(queue_num)->stats.record_steal(true));
+      TASKQUEUE_STATS_ONLY(queue(queue_num)->stats.record_steal());
       return true;
     }
   }
-  TASKQUEUE_STATS_ONLY(queue(queue_num)->stats.record_steal(false));
   return false;
 }
 
--- a/src/hotspot/share/gc/z/zDirector.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/z/zDirector.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -81,7 +81,7 @@
   // Perform GC if heap usage passes 10/20/30% and no other GC has been
   // performed yet. This allows us to get some early samples of the GC
   // duration, which is needed by the other rules.
-  const size_t max_capacity = ZHeap::heap()->max_capacity();
+  const size_t max_capacity = ZHeap::heap()->current_max_capacity();
   const size_t used = ZHeap::heap()->used();
   const double used_threshold_percent = (ZStatCycle::ncycles() + 1) * 0.1;
   const size_t used_threshold = max_capacity * used_threshold_percent;
@@ -107,7 +107,7 @@
   // Calculate amount of free memory available to Java threads. Note that
   // the heap reserve is not available to Java threads and is therefore not
   // considered part of the free memory.
-  const size_t max_capacity = ZHeap::heap()->max_capacity();
+  const size_t max_capacity = ZHeap::heap()->current_max_capacity();
   const size_t max_reserve = ZHeap::heap()->max_reserve();
   const size_t used = ZHeap::heap()->used();
   const size_t free_with_reserve = max_capacity - used;
@@ -155,7 +155,7 @@
   // passed since the previous GC. This helps avoid superfluous GCs when running
   // applications with very low allocation rate.
   const size_t used_after_last_gc = ZStatHeap::used_at_relocate_end();
-  const size_t used_increase_threshold = ZHeap::heap()->max_capacity() * 0.10; // 10%
+  const size_t used_increase_threshold = ZHeap::heap()->current_max_capacity() * 0.10; // 10%
   const size_t used_threshold = used_after_last_gc + used_increase_threshold;
   const size_t used = ZHeap::heap()->used();
   const double time_since_last_gc = ZStatCycle::time_since_last();
--- a/src/hotspot/share/gc/z/zHash.inline.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/z/zHash.inline.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -21,6 +21,38 @@
  * questions.
  */
 
+/*
+ * This file is available under and governed by the GNU General Public
+ * License version 2 only, as published by the Free Software Foundation.
+ * However, the following notice accompanied the original version of this
+ * file:
+ *
+ *  (C) 2009 by Remo Dentato (rdentato@gmail.com)
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice,
+ *       this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright notice,
+ *       this list of conditions and the following disclaimer in the documentation
+ *       and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * http://opensource.org/licenses/bsd-license.php
+ */
+
 #ifndef SHARE_GC_Z_ZHASH_INLINE_HPP
 #define SHARE_GC_Z_ZHASH_INLINE_HPP
 
--- a/src/hotspot/share/gc/z/zHeap.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/z/zHeap.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -107,6 +107,10 @@
   return _page_allocator.max_capacity();
 }
 
+size_t ZHeap::current_max_capacity() const {
+  return _page_allocator.current_max_capacity();
+}
+
 size_t ZHeap::capacity() const {
   return _page_allocator.capacity();
 }
--- a/src/hotspot/share/gc/z/zHeap.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/z/zHeap.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -79,6 +79,7 @@
   // Heap metrics
   size_t min_capacity() const;
   size_t max_capacity() const;
+  size_t current_max_capacity() const;
   size_t capacity() const;
   size_t max_reserve() const;
   size_t used_high() const;
--- a/src/hotspot/share/gc/z/zPageAllocator.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/z/zPageAllocator.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -84,11 +84,12 @@
 ZPage* const ZPageAllocator::gc_marker = (ZPage*)-1;
 
 ZPageAllocator::ZPageAllocator(size_t min_capacity, size_t max_capacity, size_t max_reserve) :
+    _lock(),
     _virtual(),
     _physical(max_capacity, ZPageSizeMin),
     _cache(),
-    _pre_mapped(_virtual, _physical, min_capacity),
     _max_reserve(max_reserve),
+    _pre_mapped(_virtual, _physical, try_ensure_unused_for_pre_mapped(min_capacity)),
     _used_high(0),
     _used_low(0),
     _used(0),
@@ -107,6 +108,10 @@
   return _physical.max_capacity();
 }
 
+size_t ZPageAllocator::current_max_capacity() const {
+  return _physical.current_max_capacity();
+}
+
 size_t ZPageAllocator::capacity() const {
   return _physical.capacity();
 }
@@ -169,18 +174,43 @@
   }
 }
 
-size_t ZPageAllocator::available(ZAllocationFlags flags) const {
-  size_t available = max_capacity() - used();
-  assert(_physical.available() + _pre_mapped.available() + _cache.available()  == available, "Should be equal");
+size_t ZPageAllocator::max_available(bool no_reserve) const {
+  size_t available = current_max_capacity() - used();
 
-  if (flags.no_reserve()) {
-    // The memory reserve should not be considered free
+  if (no_reserve) {
+    // The reserve should not be considered available
     available -= MIN2(available, max_reserve());
   }
 
   return available;
 }
 
+size_t ZPageAllocator::try_ensure_unused(size_t size, bool no_reserve) {
+  // Ensure that we always have space available for the reserve. This
+  // is needed to avoid losing the reserve because of failure to map
+  // more memory before reaching max capacity.
+  _physical.try_ensure_unused_capacity(size + max_reserve());
+
+  size_t unused = _physical.unused_capacity();
+
+  if (no_reserve) {
+    // The reserve should not be considered unused
+    unused -= MIN2(unused, max_reserve());
+  }
+
+  return MIN2(size, unused);
+}
+
+size_t ZPageAllocator::try_ensure_unused_for_pre_mapped(size_t size) {
+  // This function is called during construction, where the
+  // physical memory manager might have failed to initialied.
+  if (!_physical.is_initialized()) {
+    return 0;
+  }
+
+  return try_ensure_unused(size, true /* no_reserve */);
+}
+
 ZPage* ZPageAllocator::create_page(uint8_t type, size_t size) {
   // Allocate physical memory
   const ZPhysicalMemory pmem = _physical.alloc(size);
@@ -259,8 +289,8 @@
 }
 
 ZPage* ZPageAllocator::alloc_page_common_inner(uint8_t type, size_t size, ZAllocationFlags flags) {
-  const size_t available_total = available(flags);
-  if (available_total < size) {
+  const size_t max = max_available(flags.no_reserve());
+  if (max < size) {
     // Not enough free memory
     return NULL;
   }
@@ -281,11 +311,11 @@
   // subsequent allocations can use the physical memory.
   flush_pre_mapped();
 
-  // Check if physical memory is available
-  const size_t available_physical = _physical.available();
-  if (available_physical < size) {
+  // Try ensure that physical memory is available
+  const size_t unused = try_ensure_unused(size, flags.no_reserve());
+  if (unused < size) {
     // Flush cache to free up more physical memory
-    flush_cache(size - available_physical);
+    flush_cache(size - unused);
   }
 
   // Create new page and allocate physical memory
@@ -303,7 +333,7 @@
   increase_used(size, flags.relocation());
 
   // Send trace event
-  ZTracer::tracer()->report_page_alloc(size, used(), available(flags), _cache.available(), flags);
+  ZTracer::tracer()->report_page_alloc(size, used(), max_available(flags.no_reserve()), _cache.available(), flags);
 
   return page;
 }
--- a/src/hotspot/share/gc/z/zPageAllocator.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/z/zPageAllocator.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -43,8 +43,8 @@
   ZVirtualMemoryManager    _virtual;
   ZPhysicalMemoryManager   _physical;
   ZPageCache               _cache;
+  const size_t             _max_reserve;
   ZPreMappedMemory         _pre_mapped;
-  const size_t             _max_reserve;
   size_t                   _used_high;
   size_t                   _used_low;
   size_t                   _used;
@@ -58,7 +58,9 @@
   void increase_used(size_t size, bool relocation);
   void decrease_used(size_t size, bool reclaimed);
 
-  size_t available(ZAllocationFlags flags) const;
+  size_t max_available(bool no_reserve) const;
+  size_t try_ensure_unused(size_t size, bool no_reserve);
+  size_t try_ensure_unused_for_pre_mapped(size_t size);
 
   ZPage* create_page(uint8_t type, size_t size);
   void map_page(ZPage* page);
@@ -83,6 +85,7 @@
   bool is_initialized() const;
 
   size_t max_capacity() const;
+  size_t current_max_capacity() const;
   size_t capacity() const;
   size_t max_reserve() const;
   size_t used_high() const;
--- a/src/hotspot/share/gc/z/zPhysicalMemory.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/z/zPhysicalMemory.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -27,6 +27,7 @@
 #include "memory/allocation.inline.hpp"
 #include "services/memTracker.hpp"
 #include "utilities/debug.hpp"
+#include "utilities/globalDefinitions.hpp"
 
 ZPhysicalMemory::ZPhysicalMemory() :
     _nsegments(0),
@@ -93,6 +94,7 @@
 ZPhysicalMemoryManager::ZPhysicalMemoryManager(size_t max_capacity, size_t granule_size) :
     _backing(max_capacity, granule_size),
     _max_capacity(max_capacity),
+    _current_max_capacity(max_capacity),
     _capacity(0),
     _used(0) {}
 
@@ -100,31 +102,34 @@
   return _backing.is_initialized();
 }
 
-bool ZPhysicalMemoryManager::ensure_available(size_t size) {
-  const size_t unused_capacity = _capacity - _used;
-  if (unused_capacity >= size) {
-    // Enough unused capacity available
-    return true;
+void ZPhysicalMemoryManager::try_ensure_unused_capacity(size_t size) {
+  const size_t unused = unused_capacity();
+  if (unused >= size) {
+    // Don't try to expand, enough unused capacity available
+    return;
+  }
+
+  const size_t current_max = current_max_capacity();
+  if (_capacity == current_max) {
+    // Don't try to expand, current max capacity reached
+    return;
   }
 
-  const size_t expand_with = size - unused_capacity;
-  const size_t new_capacity = _capacity + expand_with;
-  if (new_capacity > _max_capacity) {
-    // Can not expand beyond max capacity
-    return false;
-  }
+  // Try to expand
+  const size_t old_capacity = capacity();
+  const size_t new_capacity = MIN2(old_capacity + size - unused, current_max);
+  _capacity = _backing.try_expand(old_capacity, new_capacity);
 
-  // Expand
-  if (!_backing.expand(_capacity, new_capacity)) {
-    log_error(gc)("Failed to expand Java heap with " SIZE_FORMAT "%s",
-                  byte_size_in_proper_unit(expand_with),
-                  proper_unit_for_byte_size(expand_with));
-    return false;
+  if (_capacity != new_capacity) {
+    // Failed, or partly failed, to expand
+    log_error(gc, init)("Not enough space available on the backing filesystem to hold the current max");
+    log_error(gc, init)("Java heap size (" SIZE_FORMAT "M). Forcefully lowering max Java heap size to "
+                        SIZE_FORMAT "M (%.0lf%%).", current_max / M, _capacity / M,
+                        percent_of(_capacity, current_max));
+
+    // Adjust current max capacity to avoid further expand attempts
+    _current_max_capacity = _capacity;
   }
-
-  _capacity = new_capacity;
-
-  return true;
 }
 
 void ZPhysicalMemoryManager::nmt_commit(ZPhysicalMemory pmem, uintptr_t offset) {
@@ -144,7 +149,7 @@
 }
 
 ZPhysicalMemory ZPhysicalMemoryManager::alloc(size_t size) {
-  if (!ensure_available(size)) {
+  if (unused_capacity() < size) {
     // Not enough memory available
     return ZPhysicalMemory();
   }
--- a/src/hotspot/share/gc/z/zPhysicalMemory.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/z/zPhysicalMemory.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -70,11 +70,10 @@
 private:
   ZPhysicalMemoryBacking _backing;
   const size_t           _max_capacity;
+  size_t                 _current_max_capacity;
   size_t                 _capacity;
   size_t                 _used;
 
-  bool ensure_available(size_t size);
-
   void nmt_commit(ZPhysicalMemory pmem, uintptr_t offset);
   void nmt_uncommit(ZPhysicalMemory pmem, uintptr_t offset);
 
@@ -84,9 +83,11 @@
   bool is_initialized() const;
 
   size_t max_capacity() const;
+  size_t current_max_capacity() const;
   size_t capacity() const;
-  size_t used() const;
-  size_t available() const;
+  size_t unused_capacity() const;
+
+  void try_ensure_unused_capacity(size_t size);
 
   ZPhysicalMemory alloc(size_t size);
   void free(ZPhysicalMemory pmem);
--- a/src/hotspot/share/gc/z/zPhysicalMemory.inline.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/z/zPhysicalMemory.inline.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -71,16 +71,16 @@
   return _max_capacity;
 }
 
+inline size_t ZPhysicalMemoryManager::current_max_capacity() const {
+  return _current_max_capacity;
+}
+
 inline size_t ZPhysicalMemoryManager::capacity() const {
   return _capacity;
 }
 
-inline size_t ZPhysicalMemoryManager::used() const {
-  return _used;
-}
-
-inline size_t ZPhysicalMemoryManager::available() const {
-  return _max_capacity - _used;
+inline size_t ZPhysicalMemoryManager::unused_capacity() const {
+  return _capacity - _used;
 }
 
 #endif // SHARE_GC_Z_ZPHYSICALMEMORY_INLINE_HPP
--- a/src/hotspot/share/gc/z/zPreMappedMemory.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/gc/z/zPreMappedMemory.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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
@@ -42,22 +42,26 @@
   log_info(gc, init)("Pre-touching: %s", AlwaysPreTouch ? "Enabled" : "Disabled");
   log_info(gc, init)("Pre-mapping: " SIZE_FORMAT "M", size / M);
 
-  _pmem = pmm.alloc(size);
-  if (_pmem.is_null()) {
-    // Out of memory
-    return;
-  }
+  if (size > 0) {
+    _pmem = pmm.alloc(size);
+    if (_pmem.is_null()) {
+      // Out of memory
+      log_error(gc, init)("Failed to pre-map Java heap (Cannot allocate physical memory)");
+      return;
+    }
 
-  _vmem = vmm.alloc(size, true /* alloc_from_front */);
-  if (_vmem.is_null()) {
-    // Out of address space
-    pmm.free(_pmem);
-    return;
+    _vmem = vmm.alloc(size, true /* alloc_from_front */);
+    if (_vmem.is_null()) {
+      // Out of address space
+      log_error(gc, init)("Failed to pre-map Java heap (Cannot allocate virtual memory)");
+      pmm.free(_pmem);
+      return;
+    }
+
+    // Map physical memory
+    pmm.map(_pmem, _vmem.start());
   }
 
-  // Map physical memory
-  pmm.map(_pmem, _vmem.start());
-
   _initialized = true;
 }
 
--- a/src/hotspot/share/include/jvm.h	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/include/jvm.h	Thu Jul 12 11:09:23 2018 -0700
@@ -171,6 +171,8 @@
 JNIEXPORT jobjectArray JNICALL
 JVM_GetVmArguments(JNIEnv *env);
 
+JNIEXPORT void JNICALL
+JVM_InitializeFromArchive(JNIEnv* env, jclass cls);
 
 /*
  * java.lang.Throwable
--- a/src/hotspot/share/interpreter/linkResolver.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/interpreter/linkResolver.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1221,17 +1221,14 @@
       // check if the method is not <init>
       resolved_method->name() != vmSymbols::object_initializer_name()) {
 
-     // check if this is an old-style super call and do a new lookup if so
-     // a) check if ACC_SUPER flag is set for the current class
     Klass* current_klass = link_info.current_klass();
-    if ((current_klass->is_super() || !AllowNonVirtualCalls) &&
-        // b) check if the class of the resolved_klass is a superclass
-        // (not supertype in order to exclude interface classes) of the current class.
-        // This check is not performed for super.invoke for interface methods
-        // in super interfaces.
-        current_klass->is_subclass_of(resolved_klass) &&
-        current_klass != resolved_klass
-        ) {
+
+    // Check if the class of the resolved_klass is a superclass
+    // (not supertype in order to exclude interface classes) of the current class.
+    // This check is not performed for super.invoke for interface methods
+    // in super interfaces.
+    if (current_klass->is_subclass_of(resolved_klass) &&
+        current_klass != resolved_klass) {
       // Lookup super method
       Klass* super_klass = current_klass->super();
       sel_method = lookup_instance_method_in_klasses(super_klass,
--- a/src/hotspot/share/jfr/jfr.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/jfr/jfr.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -26,10 +26,10 @@
 #include "jfr/jfr.hpp"
 #include "jfr/leakprofiler/leakProfiler.hpp"
 #include "jfr/periodic/sampling/jfrThreadSampler.hpp"
-#include "jfr/recorder/service/jfrOptionSet.hpp"
 #include "jfr/recorder/jfrRecorder.hpp"
 #include "jfr/recorder/checkpoint/jfrCheckpointManager.hpp"
 #include "jfr/recorder/repository/jfrEmergencyDump.hpp"
+#include "jfr/recorder/service/jfrOptionSet.hpp"
 #include "jfr/support/jfrThreadLocal.hpp"
 #include "runtime/java.hpp"
 
@@ -64,9 +64,7 @@
 }
 
 void Jfr::on_thread_exit(JavaThread* thread) {
-  if (JfrRecorder::is_recording()) {
-    JfrThreadLocal::on_exit(thread);
-  }
+  JfrThreadLocal::on_exit(thread);
 }
 
 void Jfr::on_thread_destruct(Thread* thread) {
--- a/src/hotspot/share/jfr/leakprofiler/utilities/saveRestore.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/jfr/leakprofiler/utilities/saveRestore.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -74,7 +74,6 @@
 
 CLDClaimContext::~CLDClaimContext() {
   if (_cld != NULL) {
-    assert(!_cld->claimed(), "invariant");
     _cld->claim();
     assert(_cld->claimed(), "invariant");
   }
--- a/src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -60,22 +60,32 @@
 #include "gc/g1/g1YCTypes.hpp"
 #endif
 
-class JfrCheckpointThreadCountClosure : public ThreadClosure {
-private:
-  u4 _total_threads;
-public:
-  JfrCheckpointThreadCountClosure() : _total_threads(0) {}
-  u4 total_threads() { return _total_threads; }
-  void do_thread(Thread *t) { _total_threads++; }
-};
-
 // Requires a ResourceMark for get_thread_name/as_utf8
 class JfrCheckpointThreadClosure : public ThreadClosure {
  private:
   JfrCheckpointWriter& _writer;
-  Thread* _curthread;
+  JfrCheckpointContext _ctx;
+  const intptr_t _count_position;
+  Thread* const _curthread;
+  u4 _count;
+
  public:
-  JfrCheckpointThreadClosure(JfrCheckpointWriter& writer) : _writer(writer), _curthread(Thread::current()) {}
+  JfrCheckpointThreadClosure(JfrCheckpointWriter& writer) : _writer(writer),
+                                                            _ctx(writer.context()),
+                                                            _count_position(writer.reserve(sizeof(u4))),
+                                                            _curthread(Thread::current()),
+                                                            _count(0) {
+  }
+
+  ~JfrCheckpointThreadClosure() {
+    if (_count == 0) {
+      // restore
+      _writer.set_context(_ctx);
+      return;
+    }
+    _writer.write_count(_count, _count_position);
+  }
+
   void do_thread(Thread* t);
 };
 
@@ -83,10 +93,16 @@
 void JfrCheckpointThreadClosure::do_thread(Thread* t) {
   assert(t != NULL, "invariant");
   assert_locked_or_safepoint(Threads_lock);
-  _writer.write_key(t->jfr_thread_local()->thread_id());
+  const JfrThreadLocal* const tl = t->jfr_thread_local();
+  assert(tl != NULL, "invariant");
+  if (tl->is_dead()) {
+    return;
+  }
+  ++_count;
+  _writer.write_key(tl->thread_id());
   _writer.write(t->name());
   const OSThread* const os_thread = t->osthread();
-  _writer.write<traceid>(os_thread != NULL ? os_thread->thread_id() : (u8)0);
+  _writer.write<traceid>(os_thread != NULL ? os_thread->thread_id() : 0);
   if (t->is_Java_thread()) {
     JavaThread* const jt = (JavaThread*)t;
     _writer.write(jt->name());
@@ -97,17 +113,12 @@
     return;
   }
   _writer.write((const char*)NULL); // java name
-  _writer.write<traceid>((traceid)0); // java thread id
-  _writer.write<traceid>((traceid)0); // java thread group
+  _writer.write((traceid)0); // java thread id
+  _writer.write((traceid)0); // java thread group
 }
 
 void JfrThreadConstantSet::serialize(JfrCheckpointWriter& writer) {
   assert(SafepointSynchronize::is_at_safepoint(), "invariant");
-  JfrCheckpointThreadCountClosure tcc;
-  Threads::threads_do(&tcc);
-  const u4 total_threads = tcc.total_threads();
-  // THREADS
-  writer.write_count(total_threads);
   JfrCheckpointThreadClosure tc(writer);
   Threads::threads_do(&tc);
 }
@@ -334,7 +345,7 @@
   writer.write_count(1);
   writer.write_key(_thread->jfr_thread_local()->thread_id());
   writer.write(thread_name);
-  writer.write((u8)_thread->osthread()->thread_id());
+  writer.write((traceid)_thread->osthread()->thread_id());
   writer.write(thread_name);
   writer.write(java_lang_thread_id);
   writer.write(thread_group_id);
--- a/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -148,9 +148,8 @@
 }
 
 void JfrTypeManager::write_type_set() {
-  assert(!SafepointSynchronize::is_at_safepoint(), "invariant");
   // can safepoint here because of Module_lock
-  MutexLockerEx lock(Module_lock);
+  MutexLockerEx lock(SafepointSynchronize::is_at_safepoint() ? NULL : Module_lock);
   JfrCheckpointWriter writer(true, true, Thread::current());
   TypeSet set;
   set.serialize(writer);
--- a/src/hotspot/share/jfr/support/jfrThreadLocal.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/jfr/support/jfrThreadLocal.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -23,8 +23,9 @@
  */
 
 #include "precompiled.hpp"
+#include "jfr/jni/jfrJavaSupport.hpp"
 #include "jfr/periodic/jfrThreadCPULoadEvent.hpp"
-#include "jfr/jni/jfrJavaSupport.hpp"
+#include "jfr/recorder/jfrRecorder.hpp"
 #include "jfr/recorder/checkpoint/jfrCheckpointManager.hpp"
 #include "jfr/recorder/checkpoint/types/traceid/jfrTraceId.inline.hpp"
 #include "jfr/recorder/service/jfrOptionSet.hpp"
@@ -51,7 +52,8 @@
   _wallclock_time(os::javaTimeNanos()),
   _stack_trace_hash(0),
   _stackdepth(0),
-  _entering_suspend_flag(0) {}
+  _entering_suspend_flag(0),
+  _dead(false) {}
 
 u8 JfrThreadLocal::add_data_lost(u8 value) {
   _data_lost += value;
@@ -71,9 +73,17 @@
   return _thread_cp;
 }
 
+void JfrThreadLocal::set_dead() {
+  assert(!is_dead(), "invariant");
+  _dead = true;
+}
+
 void JfrThreadLocal::on_exit(JavaThread* thread) {
-  JfrCheckpointManager::write_thread_checkpoint(thread);
-  JfrThreadCPULoadEvent::send_event_for_thread(thread);
+  if (JfrRecorder::is_recording()) {
+    JfrCheckpointManager::write_thread_checkpoint(thread);
+    JfrThreadCPULoadEvent::send_event_for_thread(thread);
+  }
+  thread->jfr_thread_local()->set_dead();
 }
 
 void JfrThreadLocal::on_destruct(Thread* thread) {
--- a/src/hotspot/share/jfr/support/jfrThreadLocal.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/jfr/support/jfrThreadLocal.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -50,11 +50,14 @@
   unsigned int _stack_trace_hash;
   mutable u4 _stackdepth;
   volatile jint _entering_suspend_flag;
+  bool _dead;
 
   JfrBuffer* install_native_buffer() const;
   JfrBuffer* install_java_buffer() const;
   JfrStackFrame* install_stackframes() const;
 
+  void set_dead();
+
  public:
   JfrThreadLocal();
 
@@ -202,6 +205,10 @@
     _trace_id = id;
   }
 
+  bool is_dead() const {
+    return _dead;
+  }
+
   bool has_thread_checkpoint() const;
   void set_thread_checkpoint(const JfrCheckpointBlobHandle& handle);
   const JfrCheckpointBlobHandle& thread_checkpoint() const;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/memory/heapShared.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,506 @@
+/*
+ * Copyright (c) 2018, 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.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "classfile/javaClasses.inline.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "logging/log.hpp"
+#include "logging/logMessage.hpp"
+#include "logging/logStream.hpp"
+#include "memory/heapShared.hpp"
+#include "memory/iterator.inline.hpp"
+#include "memory/metadataFactory.hpp"
+#include "memory/metaspaceClosure.hpp"
+#include "memory/metaspaceShared.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/compressedOops.inline.hpp"
+#include "oops/oop.inline.hpp"
+
+#if INCLUDE_CDS_JAVA_HEAP
+KlassSubGraphInfo* HeapShared::_subgraph_info_list = NULL;
+int HeapShared::_num_archived_subgraph_info_records = 0;
+Array<ArchivedKlassSubGraphInfoRecord>* HeapShared::_archived_subgraph_info_records = NULL;
+
+// Currently there is only one class mirror (ArchivedModuleGraph) with archived
+// sub-graphs.
+KlassSubGraphInfo* HeapShared::find_subgraph_info(Klass* k) {
+  KlassSubGraphInfo* info = _subgraph_info_list;
+  while (info != NULL) {
+    if (info->klass() == k) {
+      return info;
+    }
+    info = info->next();
+  }
+  return NULL;
+}
+
+// Get the subgraph_info for Klass k. A new subgraph_info is created if
+// there is no existing one for k. The subgraph_info records the relocated
+// Klass* of the original k.
+KlassSubGraphInfo* HeapShared::get_subgraph_info(Klass* k) {
+  Klass* relocated_k = MetaspaceShared::get_relocated_klass(k);
+  KlassSubGraphInfo* info = find_subgraph_info(relocated_k);
+  if (info != NULL) {
+    return info;
+  }
+
+  info = new KlassSubGraphInfo(relocated_k, _subgraph_info_list);
+  _subgraph_info_list = info;
+  return info;
+}
+
+int HeapShared::num_of_subgraph_infos() {
+  int num = 0;
+  KlassSubGraphInfo* info = _subgraph_info_list;
+  while (info != NULL) {
+    num ++;
+    info = info->next();
+  }
+  return num;
+}
+
+// Add an entry field to the current KlassSubGraphInfo.
+void KlassSubGraphInfo::add_subgraph_entry_field(int static_field_offset, oop v) {
+  assert(DumpSharedSpaces, "dump time only");
+  if (_subgraph_entry_fields == NULL) {
+    _subgraph_entry_fields =
+      new(ResourceObj::C_HEAP, mtClass) GrowableArray<juint>(10, true);
+  }
+  _subgraph_entry_fields->append((juint)static_field_offset);
+  _subgraph_entry_fields->append(CompressedOops::encode(v));
+}
+
+// Add the Klass* for an object in the current KlassSubGraphInfo's subgraphs.
+// Only objects of boot classes can be included in sub-graph.
+void KlassSubGraphInfo::add_subgraph_object_klass(Klass* orig_k, Klass *relocated_k) {
+  assert(DumpSharedSpaces, "dump time only");
+  assert(relocated_k == MetaspaceShared::get_relocated_klass(orig_k),
+         "must be the relocated Klass in the shared space");
+
+  if (_subgraph_object_klasses == NULL) {
+    _subgraph_object_klasses =
+      new(ResourceObj::C_HEAP, mtClass) GrowableArray<Klass*>(50, true);
+  }
+
+  assert(relocated_k->is_shared(), "must be a shared class");
+  if (relocated_k->is_instance_klass()) {
+    assert(InstanceKlass::cast(relocated_k)->is_shared_boot_class(),
+          "must be boot class");
+    // SystemDictionary::xxx_klass() are not updated, need to check
+    // the original Klass*
+    if (orig_k == SystemDictionary::String_klass() ||
+        orig_k == SystemDictionary::Object_klass()) {
+      // Initialized early during VM initialization. No need to be added
+      // to the sub-graph object class list.
+      return;
+    }
+  } else if (relocated_k->is_objArray_klass()) {
+    Klass* abk = ObjArrayKlass::cast(relocated_k)->bottom_klass();
+    if (abk->is_instance_klass()) {
+      assert(InstanceKlass::cast(abk)->is_shared_boot_class(),
+            "must be boot class");
+    }
+    if (relocated_k == Universe::objectArrayKlassObj()) {
+      // Initialized early during Universe::genesis. No need to be added
+      // to the list.
+      return;
+    }
+  } else {
+    assert(relocated_k->is_typeArray_klass(), "must be");
+    // Primitive type arrays are created early during Universe::genesis.
+    return;
+  }
+
+  _subgraph_object_klasses->append_if_missing(relocated_k);
+}
+
+// Initialize an archived subgraph_info_record from the given KlassSubGraphInfo.
+void ArchivedKlassSubGraphInfoRecord::init(KlassSubGraphInfo* info) {
+  _k = info->klass();
+  _next = NULL;
+  _entry_field_records = NULL;
+  _subgraph_klasses = NULL;
+
+  // populate the entry fields
+  GrowableArray<juint>* entry_fields = info->subgraph_entry_fields();
+  if (entry_fields != NULL) {
+    int num_entry_fields = entry_fields->length();
+    assert(num_entry_fields % 2 == 0, "sanity");
+    _entry_field_records =
+      MetaspaceShared::new_ro_array<juint>(num_entry_fields);
+    for (int i = 0 ; i < num_entry_fields; i++) {
+      _entry_field_records->at_put(i, entry_fields->at(i));
+    }
+  }
+
+  // the Klasses of the objects in the sub-graphs
+  GrowableArray<Klass*>* subgraph_klasses = info->subgraph_object_klasses();
+  if (subgraph_klasses != NULL) {
+    int num_subgraphs_klasses = subgraph_klasses->length();
+    _subgraph_klasses =
+      MetaspaceShared::new_ro_array<Klass*>(num_subgraphs_klasses);
+    for (int i = 0; i < num_subgraphs_klasses; i++) {
+      Klass* subgraph_k = subgraph_klasses->at(i);
+      if (log_is_enabled(Info, cds, heap)) {
+        ResourceMark rm;
+        log_info(cds, heap)(
+          "Archived object klass (%d): %s in %s sub-graphs",
+          i, subgraph_k->external_name(), _k->external_name());
+      }
+      _subgraph_klasses->at_put(i, subgraph_k);
+    }
+  }
+}
+
+// Build the records of archived subgraph infos, which include:
+// - Entry points to all subgraphs from the containing class mirror. The entry
+//   points are static fields in the mirror. For each entry point, the field
+//   offset and value are recorded in the sub-graph info. The value are stored
+//   back to the corresponding field at runtime.
+// - A list of klasses that need to be loaded/initialized before archived
+//   java object sub-graph can be accessed at runtime.
+//
+// The records are saved in the archive file and reloaded at runtime. Currently
+// there is only one class mirror (ArchivedModuleGraph) with archived sub-graphs.
+//
+// Layout of the archived subgraph info records:
+//
+// records_size | num_records | records*
+// ArchivedKlassSubGraphInfoRecord | entry_fields | subgraph_object_klasses
+size_t HeapShared::build_archived_subgraph_info_records(int num_records) {
+  // remember the start address
+  char* start_p = MetaspaceShared::read_only_space_top();
+
+  // now populate the archived subgraph infos, which will be saved in the
+  // archive file
+  _archived_subgraph_info_records =
+    MetaspaceShared::new_ro_array<ArchivedKlassSubGraphInfoRecord>(num_records);
+  KlassSubGraphInfo* info = _subgraph_info_list;
+  int i = 0;
+  while (info != NULL) {
+    assert(i < _archived_subgraph_info_records->length(), "sanity");
+    ArchivedKlassSubGraphInfoRecord* record =
+      _archived_subgraph_info_records->adr_at(i);
+    record->init(info);
+    info = info->next();
+    i ++;
+  }
+
+  // _subgraph_info_list is no longer needed
+  delete _subgraph_info_list;
+  _subgraph_info_list = NULL;
+
+  char* end_p = MetaspaceShared::read_only_space_top();
+  size_t records_size = end_p - start_p;
+  return records_size;
+}
+
+// Write the subgraph info records in the shared _ro region
+void HeapShared::write_archived_subgraph_infos() {
+  assert(DumpSharedSpaces, "dump time only");
+
+  Array<intptr_t>* records_header = MetaspaceShared::new_ro_array<intptr_t>(3);
+
+  _num_archived_subgraph_info_records = num_of_subgraph_infos();
+  size_t records_size = build_archived_subgraph_info_records(
+                             _num_archived_subgraph_info_records);
+
+  // Now write the header information:
+  // records_size, num_records, _archived_subgraph_info_records
+  assert(records_header != NULL, "sanity");
+  intptr_t* p = (intptr_t*)(records_header->data());
+  *p = (intptr_t)records_size;
+  p ++;
+  *p = (intptr_t)_num_archived_subgraph_info_records;
+  p ++;
+  *p = (intptr_t)_archived_subgraph_info_records;
+}
+
+char* HeapShared::read_archived_subgraph_infos(char* buffer) {
+  Array<intptr_t>* records_header = (Array<intptr_t>*)buffer;
+  intptr_t* p = (intptr_t*)(records_header->data());
+  size_t records_size = (size_t)(*p);
+  p ++;
+  _num_archived_subgraph_info_records = *p;
+  p ++;
+  _archived_subgraph_info_records =
+    (Array<ArchivedKlassSubGraphInfoRecord>*)(*p);
+
+  buffer = (char*)_archived_subgraph_info_records + records_size;
+  return buffer;
+}
+
+void HeapShared::initialize_from_archived_subgraph(Klass* k) {
+  if (!MetaspaceShared::open_archive_heap_region_mapped()) {
+    return; // nothing to do
+  }
+
+  if (_num_archived_subgraph_info_records == 0) {
+    return; // no subgraph info records
+  }
+
+  // Initialize from archived data. Currently only ArchivedModuleGraph
+  // has archived object subgraphs, which is used during VM initialization
+  // time when bootstraping the system modules. No lock is needed.
+  Thread* THREAD = Thread::current();
+  for (int i = 0; i < _archived_subgraph_info_records->length(); i++) {
+    ArchivedKlassSubGraphInfoRecord* record = _archived_subgraph_info_records->adr_at(i);
+    if (record->klass() == k) {
+      int i;
+      // Found the archived subgraph info record for the requesting klass.
+      // Load/link/initialize the klasses of the objects in the subgraph.
+      // NULL class loader is used.
+      Array<Klass*>* klasses = record->subgraph_klasses();
+      if (klasses != NULL) {
+        for (i = 0; i < klasses->length(); i++) {
+          Klass* obj_k = klasses->at(i);
+          Klass* resolved_k = SystemDictionary::resolve_or_null(
+                                                (obj_k)->name(), THREAD);
+          if (resolved_k != obj_k) {
+            return;
+          }
+          if ((obj_k)->is_instance_klass()) {
+            InstanceKlass* ik = InstanceKlass::cast(obj_k);
+            ik->initialize(THREAD);
+          } else if ((obj_k)->is_objArray_klass()) {
+            ObjArrayKlass* oak = ObjArrayKlass::cast(obj_k);
+            oak->initialize(THREAD);
+          }
+        }
+      }
+
+      if (HAS_PENDING_EXCEPTION) {
+        CLEAR_PENDING_EXCEPTION;
+        // None of the field value will be set if there was an exception.
+        // The java code will not see any of the archived objects in the
+        // subgraphs referenced from k in this case.
+        return;
+      }
+
+      // Load the subgraph entry fields from the record and store them back to
+      // the corresponding fields within the mirror.
+      oop m = k->java_mirror();
+      Array<juint>* entry_field_records = record->entry_field_records();
+      if (entry_field_records != NULL) {
+        int efr_len = entry_field_records->length();
+        assert(efr_len % 2 == 0, "sanity");
+        for (i = 0; i < efr_len;) {
+          int field_offset = entry_field_records->at(i);
+          // The object refereced by the field becomes 'known' by GC from this
+          // point. All objects in the subgraph reachable from the object are
+          // also 'known' by GC.
+          oop v = MetaspaceShared::materialize_archived_object(
+            CompressedOops::decode(entry_field_records->at(i+1)));
+          m->obj_field_put(field_offset, v);
+          i += 2;
+        }
+      }
+
+      // Done. Java code can see the archived sub-graphs referenced from k's
+      // mirror after this point.
+      return;
+    }
+  }
+}
+
+class WalkOopAndArchiveClosure: public BasicOopIterateClosure {
+  int _level;
+  KlassSubGraphInfo* _subgraph_info;
+  oop _orig_referencing_obj;
+  oop _archived_referencing_obj;
+ public:
+  WalkOopAndArchiveClosure(int level, KlassSubGraphInfo* subgraph_info,
+           oop orig, oop archived) : _level(level),
+                                     _subgraph_info(subgraph_info),
+                                     _orig_referencing_obj(orig),
+                                     _archived_referencing_obj(archived) {}
+  void do_oop(narrowOop *p) { WalkOopAndArchiveClosure::do_oop_work(p); }
+  void do_oop(      oop *p) { WalkOopAndArchiveClosure::do_oop_work(p); }
+
+ protected:
+  template <class T> void do_oop_work(T *p) {
+    oop obj = RawAccess<>::oop_load(p);
+    if (!CompressedOops::is_null(obj)) {
+      // A java.lang.Class instance can not be included in an archived
+      // object sub-graph.
+      if (java_lang_Class::is_instance(obj)) {
+        tty->print("Unknown java.lang.Class object is in the archived sub-graph\n");
+        vm_exit(1);
+      }
+
+      LogTarget(Debug, cds, heap) log;
+      LogStream ls(log);
+      outputStream* out = &ls;
+      {
+        ResourceMark rm;
+        log.print("(%d) %s <--- referenced from:  %s",
+                  _level, obj->klass()->external_name(),
+                  CompressedOops::is_null(_orig_referencing_obj) ?
+                         "" : _orig_referencing_obj->klass()->external_name());
+        obj->print_on(out);
+      }
+
+      if (MetaspaceShared::is_archive_object(obj)) {
+        // The current oop is an archived oop, nothing needs to be done
+        log.print("--- object is already archived ---");
+        return;
+      }
+
+      size_t field_delta = pointer_delta(
+        p, _orig_referencing_obj, sizeof(char));
+      T* new_p = (T*)(address(_archived_referencing_obj) + field_delta);
+      oop archived = MetaspaceShared::find_archived_heap_object(obj);
+      if (archived != NULL) {
+        // There is an archived copy existing, update reference to point
+        // to the archived copy
+        RawAccess<IS_NOT_NULL>::oop_store(new_p, archived);
+        log.print(
+          "--- found existing archived copy, store archived " PTR_FORMAT " in " PTR_FORMAT,
+          p2i(archived), p2i(new_p));
+        return;
+      }
+
+      int l = _level + 1;
+      Thread* THREAD = Thread::current();
+      // Archive the current oop before iterating through its references
+      archived = MetaspaceShared::archive_heap_object(obj, THREAD);
+      assert(MetaspaceShared::is_archive_object(archived), "must be archived");
+      log.print("=== archiving oop " PTR_FORMAT " ==> " PTR_FORMAT,
+                 p2i(obj), p2i(archived));
+
+      // Following the references in the current oop and archive any
+      // encountered objects during the process
+      WalkOopAndArchiveClosure walker(l, _subgraph_info, obj, archived);
+      obj->oop_iterate(&walker);
+
+      // Update the reference in the archived copy of the referencing object
+      RawAccess<IS_NOT_NULL>::oop_store(new_p, archived);
+      log.print("=== store archived " PTR_FORMAT " in " PTR_FORMAT,
+                p2i(archived), p2i(new_p));
+
+      // Add the klass to the list of classes that need to be loaded before
+      // module system initialization
+      Klass *orig_k = obj->klass();
+      Klass *relocated_k = archived->klass();
+      _subgraph_info->add_subgraph_object_klass(orig_k, relocated_k);
+    }
+  }
+};
+
+//
+// Start from the given static field in a java mirror and archive the
+// complete sub-graph of java heap objects that are reached directly
+// or indirectly from the starting object by following references.
+// Currently, only ArchivedModuleGraph class instance (mirror) has archived
+// object subgraphs. Sub-graph archiving restrictions (current):
+//
+// - All classes of objects in the archived sub-graph (including the
+//   entry class) must be boot class only.
+// - No java.lang.Class instance (java mirror) can be included inside
+//   an archived sub-graph. Mirror can only be the sub-graph entry object.
+//
+// The Java heap object sub-graph archiving process (see
+// WalkOopAndArchiveClosure):
+//
+// 1) Java object sub-graph archiving starts from a given static field
+// within a Class instance (java mirror). If the static field is a
+// refererence field and points to a non-null java object, proceed to
+// the next step.
+//
+// 2) Archives the referenced java object. If an archived copy of the
+// current object already exists, updates the pointer in the archived
+// copy of the referencing object to point to the current archived object.
+// Otherwise, proceed to the next step.
+//
+// 3) Follows all references within the current java object and recursively
+// archive the sub-graph of objects starting from each reference.
+//
+// 4) Updates the pointer in the archived copy of referencing object to
+//    point to the current archived object.
+//
+// 5) The Klass of the current java object is added to the list of Klasses
+// for loading and initialzing before any object in the archived graph can
+// be accessed at runtime.
+//
+void HeapShared::archive_reachable_objects_from_static_field(Klass *k,
+                                                             int field_offset,
+                                                             BasicType field_type,
+                                                             TRAPS) {
+  assert(DumpSharedSpaces, "dump time only");
+  assert(k->is_instance_klass(), "sanity");
+  assert(InstanceKlass::cast(k)->is_shared_boot_class(),
+         "must be boot class");
+
+  oop m = k->java_mirror();
+  oop archived_m = MetaspaceShared::find_archived_heap_object(m);
+  if (CompressedOops::is_null(archived_m)) {
+    return;
+  }
+
+  if (field_type == T_OBJECT) {
+    // obtain k's subGraph Info
+    KlassSubGraphInfo* subgraph_info = get_subgraph_info(k);
+
+    // get the object referenced by the field
+    oop f = m->obj_field(field_offset);
+    if (!CompressedOops::is_null(f)) {
+      LogTarget(Debug, cds, heap) log;
+      LogStream ls(log);
+      outputStream* out = &ls;
+      log.print("Start from: ");
+      f->print_on(out);
+
+      // get the archived copy of the field referenced object
+      oop af = MetaspaceShared::archive_heap_object(f, THREAD);
+      if (!MetaspaceShared::is_archive_object(f)) {
+        WalkOopAndArchiveClosure walker(1, subgraph_info, f, af);
+        f->oop_iterate(&walker);
+      }
+
+      // The field value is not preserved in the archived mirror.
+      // Record the field as a new subGraph entry point. The recorded
+      // information is restored from the archive at runtime.
+      subgraph_info->add_subgraph_entry_field(field_offset, af);
+      Klass *relocated_k = af->klass();
+      Klass *orig_k = f->klass();
+      subgraph_info->add_subgraph_object_klass(orig_k, relocated_k);
+    } else {
+      // The field contains null, we still need to record the entry point,
+      // so it can be restored at runtime.
+      subgraph_info->add_subgraph_entry_field(field_offset, NULL);
+    }
+  } else {
+    ShouldNotReachHere();
+  }
+}
+
+#define do_module_object_graph(archive_object_graph_do) \
+  archive_object_graph_do(SystemDictionary::ArchivedModuleGraph_klass(), jdk_internal_module_ArchivedModuleGraph::archivedSystemModules_offset(), T_OBJECT, CHECK); \
+  archive_object_graph_do(SystemDictionary::ArchivedModuleGraph_klass(), jdk_internal_module_ArchivedModuleGraph::archivedModuleFinder_offset(), T_OBJECT, CHECK); \
+  archive_object_graph_do(SystemDictionary::ArchivedModuleGraph_klass(), jdk_internal_module_ArchivedModuleGraph::archivedMainModule_offset(), T_OBJECT, CHECK)
+
+void HeapShared::archive_module_graph_objects(Thread* THREAD) {
+  do_module_object_graph(archive_reachable_objects_from_static_field);
+}
+#endif // INCLUDE_CDS_JAVA_HEAP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/memory/heapShared.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 2018, 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.
+ *
+ */
+
+#ifndef SHARE_VM_MEMORY_HEAPSHARED_HPP
+#define SHARE_VM_MEMORY_HEAPSHARED_HPP
+
+#include "classfile/systemDictionary.hpp"
+#include "memory/universe.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "oops/oop.hpp"
+#include "oops/typeArrayKlass.hpp"
+#include "utilities/growableArray.hpp"
+
+#if INCLUDE_CDS_JAVA_HEAP
+// A dump time sub-graph info for Klass _k. It includes the entry points
+// (static fields in _k's mirror) of the archived sub-graphs reachable
+// from _k's mirror. It also contains a list of Klasses of the objects
+// within the sub-graphs.
+class KlassSubGraphInfo: public CHeapObj<mtClass> {
+ private:
+  KlassSubGraphInfo* _next;
+  // The class that contains the static field(s) as the entry point(s)
+  // of archived object sub-graph(s).
+  Klass* _k;
+  // A list of classes need to be loaded and initialized before the archived
+  // object sub-graphs can be accessed at runtime.
+  GrowableArray<Klass*>* _subgraph_object_klasses;
+  // A list of _k's static fields as the entry points of archived sub-graphs.
+  // For each entry field, it is a pair of field_offset and field_value.
+  GrowableArray<juint>*  _subgraph_entry_fields;
+
+ public:
+  KlassSubGraphInfo(Klass* k, KlassSubGraphInfo* next) :
+    _next(next), _k(k),  _subgraph_object_klasses(NULL),
+    _subgraph_entry_fields(NULL) {}
+  ~KlassSubGraphInfo() {
+    if (_subgraph_object_klasses != NULL) {
+      delete _subgraph_object_klasses;
+    }
+    if (_subgraph_entry_fields != NULL) {
+      delete _subgraph_entry_fields;
+    }
+  };
+
+  KlassSubGraphInfo* next() { return _next; }
+  Klass* klass()            { return _k; }
+  GrowableArray<Klass*>* subgraph_object_klasses() {
+    return _subgraph_object_klasses;
+  }
+  GrowableArray<juint>*  subgraph_entry_fields() {
+    return _subgraph_entry_fields;
+  }
+  void add_subgraph_entry_field(int static_field_offset, oop v);
+  void add_subgraph_object_klass(Klass *orig_k, Klass *relocated_k);
+};
+
+// An archived record of object sub-graphs reachable from static
+// fields within _k's mirror. The record is reloaded from the archive
+// at runtime.
+class ArchivedKlassSubGraphInfoRecord {
+ private:
+  ArchivedKlassSubGraphInfoRecord* _next;
+  Klass* _k;
+
+  // contains pairs of field offset and value for each subgraph entry field
+  Array<juint>* _entry_field_records;
+
+  // klasses of objects in archived sub-graphs referenced from the entry points
+  // (static fields) in the containing class
+  Array<Klass*>* _subgraph_klasses;
+ public:
+  ArchivedKlassSubGraphInfoRecord() :
+    _next(NULL), _k(NULL), _entry_field_records(NULL), _subgraph_klasses(NULL) {}
+  void init(KlassSubGraphInfo* info);
+  Klass* klass() { return _k; }
+  ArchivedKlassSubGraphInfoRecord* next() { return _next; }
+  void set_next(ArchivedKlassSubGraphInfoRecord* next) { _next = next; }
+  Array<juint>*  entry_field_records() { return _entry_field_records; }
+  Array<Klass*>* subgraph_klasses() { return _subgraph_klasses; }
+};
+#endif // INCLUDE_CDS_JAVA_HEAP
+
+class HeapShared: AllStatic {
+ private:
+#if INCLUDE_CDS_JAVA_HEAP
+  // This is a list of subgraph infos built at dump time while
+  // archiving object subgraphs.
+  static KlassSubGraphInfo* _subgraph_info_list;
+
+  // Contains a list of ArchivedKlassSubGraphInfoRecords that is stored
+  // in the archive file and reloaded at runtime.
+  static int _num_archived_subgraph_info_records;
+  static Array<ArchivedKlassSubGraphInfoRecord>* _archived_subgraph_info_records;
+
+  // Archive object sub-graph starting from the given static field
+  // in Klass k's mirror.
+  static void archive_reachable_objects_from_static_field(
+    Klass* k, int field_ofset, BasicType field_type, TRAPS);
+
+  static KlassSubGraphInfo* find_subgraph_info(Klass *k);
+  static KlassSubGraphInfo* get_subgraph_info(Klass *k);
+  static int num_of_subgraph_infos();
+
+  static size_t build_archived_subgraph_info_records(int num_records);
+#endif // INCLUDE_CDS_JAVA_HEAP
+ public:
+  static char* read_archived_subgraph_infos(char* buffer) NOT_CDS_JAVA_HEAP_RETURN_(buffer);
+  static void write_archived_subgraph_infos() NOT_CDS_JAVA_HEAP_RETURN;
+  static void initialize_from_archived_subgraph(Klass* k) NOT_CDS_JAVA_HEAP_RETURN;
+
+  static void archive_module_graph_objects(Thread* THREAD) NOT_CDS_JAVA_HEAP_RETURN;
+};
+#endif // SHARE_VM_MEMORY_HEAPSHARED_HPP
--- a/src/hotspot/share/memory/metaspaceShared.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/memory/metaspaceShared.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -39,6 +39,7 @@
 #include "logging/log.hpp"
 #include "logging/logMessage.hpp"
 #include "memory/filemap.hpp"
+#include "memory/heapShared.hpp"
 #include "memory/metaspace.hpp"
 #include "memory/metaspaceClosure.hpp"
 #include "memory/metaspaceShared.hpp"
@@ -207,6 +208,10 @@
   return _ro_region.allocate(num_bytes);
 }
 
+char* MetaspaceShared::read_only_space_top() {
+  return _ro_region.top();
+}
+
 void MetaspaceShared::initialize_runtime_shared_and_meta_spaces() {
   assert(UseSharedSpaces, "Must be called when UseSharedSpaces is enabled");
 
@@ -456,6 +461,7 @@
   java_lang_StackFrameInfo::serialize(soc);
   java_lang_LiveStackFrameInfo::serialize(soc);
   java_util_concurrent_locks_AbstractOwnableSynchronizer::serialize(soc);
+  jdk_internal_module_ArchivedModuleGraph::serialize(soc);
 }
 
 address MetaspaceShared::cds_i2i_entry_code_buffers(size_t total_size) {
@@ -1350,6 +1356,11 @@
   char* table_top = _ro_region.allocate(table_bytes, sizeof(intptr_t));
   SystemDictionary::copy_table(table_top, _ro_region.top());
 
+  // Write the archived object sub-graph infos. For each klass with sub-graphs,
+  // the info includes the static fields (sub-graph entry points) and Klasses
+  // of objects included in the sub-graph.
+  HeapShared::write_archived_subgraph_infos();
+
   // Write the other data to the output array.
   WriteClosure wc(&_ro_region);
   MetaspaceShared::serialize(&wc);
@@ -1861,6 +1872,8 @@
 
   MetaspaceShared::archive_klass_objects(THREAD);
 
+  HeapShared::archive_module_graph_objects(THREAD);
+
   G1CollectedHeap::heap()->end_archive_alloc_range(open_archive,
                                                    os::vm_allocation_granularity());
 }
@@ -1906,14 +1919,16 @@
     ArchivedObjectCache* cache = MetaspaceShared::archive_object_cache();
     cache->put(obj, archived_oop);
   }
-  log_debug(cds)("Archived heap object " PTR_FORMAT " ==> " PTR_FORMAT,
-                 p2i(obj), p2i(archived_oop));
+  log_debug(cds, heap)("Archived heap object " PTR_FORMAT " ==> " PTR_FORMAT,
+                       p2i(obj), p2i(archived_oop));
   return archived_oop;
 }
 
 oop MetaspaceShared::materialize_archived_object(oop obj) {
-  assert(obj != NULL, "sanity");
-  return G1CollectedHeap::heap()->materialize_archived_object(obj);
+  if (obj != NULL) {
+    return G1CollectedHeap::heap()->materialize_archived_object(obj);
+  }
+  return NULL;
 }
 
 void MetaspaceShared::archive_klass_objects(Thread* THREAD) {
@@ -2121,6 +2136,9 @@
   buffer += sizeof(intptr_t);
   buffer += len;
 
+  // The table of archived java heap object sub-graph infos
+  buffer = HeapShared::read_archived_subgraph_infos(buffer);
+
   // Verify various attributes of the archive, plus initialize the
   // shared string/symbol tables
   intptr_t* array = (intptr_t*)buffer;
--- a/src/hotspot/share/memory/metaspaceShared.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/memory/metaspaceShared.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -232,6 +232,8 @@
   static char* misc_code_space_alloc(size_t num_bytes);
   static char* read_only_space_alloc(size_t num_bytes);
 
+  static char* read_only_space_top();
+
   template <typename T>
   static Array<T>* new_ro_array(int length) {
 #if INCLUDE_CDS
--- a/src/hotspot/share/oops/constantPool.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/oops/constantPool.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -807,6 +807,17 @@
   }
 }
 
+constantTag ConstantPool::constant_tag_at(int which) {
+  constantTag tag = tag_at(which);
+  if (tag.is_dynamic_constant() ||
+      tag.is_dynamic_constant_in_error()) {
+    // have to look at the signature for this one
+    Symbol* constant_type = uncached_signature_ref_at(which);
+    return constantTag::ofBasicType(FieldType::basic_type(constant_type));
+  }
+  return tag;
+}
+
 BasicType ConstantPool::basic_type_for_constant_at(int which) {
   constantTag tag = tag_at(which);
   if (tag.is_dynamic_constant() ||
--- a/src/hotspot/share/oops/constantPool.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/oops/constantPool.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -719,6 +719,9 @@
   enum { _no_index_sentinel = -1, _possible_index_sentinel = -2 };
  public:
 
+  // Get the tag for a constant, which may involve a constant dynamic
+  constantTag constant_tag_at(int which);
+  // Get the basic type for a constant, which may involve a constant dynamic
   BasicType basic_type_for_constant_at(int which);
 
   // Resolve late bound constants.
--- a/src/hotspot/share/opto/gcm.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/opto/gcm.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -683,7 +683,7 @@
     Block* store_block = get_block_for_node(store);
     assert(store_block != NULL, "unused killing projections skipped above");
 
-    if (store->is_Phi() && store->in(0)->is_Loop()) {
+    if (store->is_Phi()) {
       // Loop-phis need to raise load before input. (Other phis are treated
       // as store below.)
       //
--- a/src/hotspot/share/opto/ifnode.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/opto/ifnode.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1490,7 +1490,8 @@
   // be skipped. For example, range check predicate has two checks
   // for lower and upper bounds.
   ProjNode* unc_proj = proj_out(1 - prev_dom->as_Proj()->_con)->as_Proj();
-  if (unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate) != NULL) {
+  if (unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate) != NULL ||
+      unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_profile_predicate) != NULL) {
     prev_dom = idom;
   }
 
--- a/src/hotspot/share/opto/loopPredicate.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/opto/loopPredicate.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1056,7 +1056,9 @@
           stack.push(in, 1);
           break;
         } else if (in->is_IfProj() &&
-                   in->as_Proj()->is_uncommon_trap_if_pattern(Deoptimization::Reason_none)) {
+                   in->as_Proj()->is_uncommon_trap_if_pattern(Deoptimization::Reason_none) &&
+                   (in->in(0)->Opcode() == Op_If ||
+                    in->in(0)->Opcode() == Op_RangeCheck)) {
           if (pf.to(in) * loop_trip_cnt >= 1) {
             stack.push(in, 1);
           }
@@ -1281,7 +1283,7 @@
     Node* n = skip_loop_predicates(entry);
     // Check if predicates were already added to the profile predicate
     // block
-    if (n != entry->in(0)->in(0)) {
+    if (n != entry->in(0)->in(0) || n->outcnt() != 1) {
       has_profile_predicates = true;
     }
     entry = n;
--- a/src/hotspot/share/opto/loopTransform.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/opto/loopTransform.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -861,7 +861,9 @@
 
   // Check for being too big
   if (body_size > (uint)_local_loop_unroll_limit) {
-    if ((UseSubwordForMaxVector || xors_in_loop >= 4) && body_size < (uint)LoopUnrollLimit * 4) return true;
+    if ((cl->is_subword_loop() || xors_in_loop >= 4) && body_size < (uint)LoopUnrollLimit * 4) {
+      return true;
+    }
     // Normal case: loop too big
     return false;
   }
--- a/src/hotspot/share/opto/loopnode.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/opto/loopnode.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -616,6 +616,11 @@
     }
 
     IfNode* check_iff = limit_check_proj->in(0)->as_If();
+
+    if (!is_dominator(get_ctrl(limit), check_iff->in(0))) {
+      return false;
+    }
+
     Node* cmp_limit;
     Node* bol;
 
@@ -4224,34 +4229,34 @@
   // which can inhibit range check elimination.
   if (least != early) {
     Node* ctrl_out = least->unique_ctrl_out();
-    if (ctrl_out && ctrl_out->is_CountedLoop() &&
+    if (ctrl_out && ctrl_out->is_Loop() &&
         least == ctrl_out->in(LoopNode::EntryControl)) {
+      // Move the node above predicates as far up as possible so a
+      // following pass of loop predication doesn't hoist a predicate
+      // that depends on it above that node.
       Node* new_ctrl = least;
-      // Move the node above predicates so a following pass of loop
-      // predication doesn't hoist a predicate that depends on it
-      // above that node.
-      if (find_predicate_insertion_point(new_ctrl, Deoptimization::Reason_loop_limit_check) != NULL) {
-        new_ctrl = new_ctrl->in(0)->in(0);
-        assert(is_dominator(early, new_ctrl), "least != early so we can move up the dominator tree");
-      }
-      if (find_predicate_insertion_point(new_ctrl, Deoptimization::Reason_profile_predicate) != NULL) {
+      for (;;) {
+        if (!new_ctrl->is_Proj()) {
+          break;
+        }
+        CallStaticJavaNode* call = new_ctrl->as_Proj()->is_uncommon_trap_if_pattern(Deoptimization::Reason_none);
+        if (call == NULL) {
+          break;
+        }
+        int req = call->uncommon_trap_request();
+        Deoptimization::DeoptReason trap_reason = Deoptimization::trap_request_reason(req);
+        if (trap_reason != Deoptimization::Reason_loop_limit_check &&
+            trap_reason != Deoptimization::Reason_predicate &&
+            trap_reason != Deoptimization::Reason_profile_predicate) {
+          break;
+        }
         Node* c = new_ctrl->in(0)->in(0);
-        assert(is_dominator(early, c), "least != early so we can move up the dominator tree");
+        if (is_dominator(c, early) && c != early) {
+          break;
+        }
         new_ctrl = c;
       }
-      if (find_predicate_insertion_point(new_ctrl, Deoptimization::Reason_predicate) != NULL) {
-        Node* c = new_ctrl->in(0)->in(0);
-        assert(is_dominator(early, c), "least != early so we can move up the dominator tree");
-        new_ctrl = c;
-      }
-      if (new_ctrl != ctrl_out) {
-        least = new_ctrl;
-      } else if (ctrl_out->is_CountedLoop() || ctrl_out->is_OuterStripMinedLoop()) {
-        Node* least_dom = idom(least);
-        if (get_loop(least_dom)->is_member(get_loop(least))) {
-          least = least_dom;
-        }
-      }
+      least = new_ctrl;
     }
   }
 
--- a/src/hotspot/share/opto/loopnode.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/opto/loopnode.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -75,7 +75,8 @@
          HasRangeChecks=8192,
          IsMultiversioned=16384,
          StripMined=32768,
-         ProfileTripFailed=65536};
+         SubwordLoop=65536,
+         ProfileTripFailed=131072};
   char _unswitch_count;
   enum { _unswitch_max=3 };
   char _postloop_flags;
@@ -99,6 +100,7 @@
   bool partial_peel_has_failed() const { return _loop_flags & PartialPeelFailed; }
   bool is_strip_mined() const { return _loop_flags & StripMined; }
   bool is_profile_trip_failed() const { return _loop_flags & ProfileTripFailed; }
+  bool is_subword_loop() const { return _loop_flags & SubwordLoop; }
 
   void mark_partial_peel_failed() { _loop_flags |= PartialPeelFailed; }
   void mark_has_reductions() { _loop_flags |= HasReductions; }
@@ -112,6 +114,7 @@
   void mark_strip_mined() { _loop_flags |= StripMined; }
   void clear_strip_mined() { _loop_flags &= ~StripMined; }
   void mark_profile_trip_failed() { _loop_flags |= ProfileTripFailed; }
+  void mark_subword_loop() { _loop_flags |= SubwordLoop; }
 
   int unswitch_max() { return _unswitch_max; }
   int unswitch_count() { return _unswitch_count; }
--- a/src/hotspot/share/opto/loopopts.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/opto/loopopts.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -257,6 +257,7 @@
   ProjNode* unc_proj = iff->as_If()->proj_out(1 - dp_proj->_con)->as_Proj();
   if (exclude_loop_predicate &&
       (unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate) != NULL ||
+       unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_profile_predicate) != NULL ||
        unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_range_check) != NULL)) {
     // If this is a range check (IfNode::is_range_check), do not
     // reorder because Compile::allow_range_check_smearing might have
--- a/src/hotspot/share/opto/memnode.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/opto/memnode.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -518,8 +518,7 @@
       if (ac->is_clonebasic()) {
         intptr_t offset;
         AllocateNode* alloc = AllocateNode::Ideal_allocation(ac->in(ArrayCopyNode::Dest), phase, offset);
-        assert(alloc != NULL && (!ReduceBulkZeroing || alloc->initialization()->is_complete_with_arraycopy()), "broken allocation");
-        if (alloc == ld_alloc) {
+        if (alloc != NULL && alloc == ld_alloc) {
           return ac;
         }
       }
--- a/src/hotspot/share/opto/superword.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/opto/superword.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -376,6 +376,7 @@
                 if (same_type) {
                   max_vector = cur_max_vector;
                   flag_small_bt = true;
+                  cl->mark_subword_loop();
                 }
               }
             }
--- a/src/hotspot/share/prims/jniCheck.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/prims/jniCheck.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1995,9 +1995,6 @@
   checked_jni_GetModule(JNIEnv *env,
                         jclass clazz))
     functionEnter(thr);
-    IN_VM(
-      jniCheck::validate_class(thr, clazz, false);
-    )
     jobject result = UNCHECKED()->GetModule(env,clazz);
     functionExit(thr);
     return result;
--- a/src/hotspot/share/prims/jvm.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/prims/jvm.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -39,6 +39,7 @@
 #include "interpreter/bytecode.hpp"
 #include "jfr/jfrEvents.hpp"
 #include "logging/log.hpp"
+#include "memory/heapShared.hpp"
 #include "memory/oopFactory.hpp"
 #include "memory/referenceType.hpp"
 #include "memory/resourceArea.hpp"
@@ -3598,6 +3599,13 @@
   return VM_Version::supports_cx8();
 JVM_END
 
+JVM_ENTRY(void, JVM_InitializeFromArchive(JNIEnv* env, jclass cls))
+  JVMWrapper("JVM_InitializeFromArchive");
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls));
+  assert(k->is_klass(), "just checking");
+  HeapShared::initialize_from_archived_subgraph(k);
+JVM_END
+
 // Returns an array of all live Thread objects (VM internal JavaThreads,
 // jvmti agent threads, and JNI attaching threads  are skipped)
 // See CR 6404306 regarding JNI attaching threads
--- a/src/hotspot/share/runtime/arguments.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/arguments.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -535,12 +535,7 @@
   { "IgnoreUnverifiableClassesDuringDump", JDK_Version::jdk(10),  JDK_Version::undefined(), JDK_Version::undefined() },
   { "CompilerThreadHintNoPreempt",  JDK_Version::jdk(11), JDK_Version::jdk(12), JDK_Version::jdk(13) },
   { "VMThreadHintNoPreempt",        JDK_Version::jdk(11), JDK_Version::jdk(12), JDK_Version::jdk(13) },
-  { "PrintSafepointStatistics",     JDK_Version::jdk(11), JDK_Version::jdk(12), JDK_Version::jdk(13) },
-  { "PrintSafepointStatisticsTimeout", JDK_Version::jdk(11), JDK_Version::jdk(12), JDK_Version::jdk(13) },
-  { "PrintSafepointStatisticsCount",JDK_Version::jdk(11), JDK_Version::jdk(12), JDK_Version::jdk(13) },
   { "AggressiveOpts",               JDK_Version::jdk(11), JDK_Version::jdk(12), JDK_Version::jdk(13) },
-  { "AllowNonVirtualCalls",         JDK_Version::jdk(11), JDK_Version::jdk(12), JDK_Version::jdk(13) },
-  { "UnlinkSymbolsALot",            JDK_Version::jdk(11), JDK_Version::jdk(12), JDK_Version::jdk(13) },
 
   // --- Deprecated alias flags (see also aliased_jvm_flags) - sorted by obsolete_in then expired_in:
   { "DefaultMaxRAMFraction",        JDK_Version::jdk(8),  JDK_Version::undefined(), JDK_Version::undefined() },
@@ -573,6 +568,11 @@
   { "NativeMonitorTimeout",          JDK_Version::undefined(), JDK_Version::jdk(11), JDK_Version::jdk(12) },
   { "NativeMonitorSpinLimit",        JDK_Version::undefined(), JDK_Version::jdk(11), JDK_Version::jdk(12) },
   { "NativeMonitorFlags",            JDK_Version::undefined(), JDK_Version::jdk(11), JDK_Version::jdk(12) },
+  { "UnlinkSymbolsALot",             JDK_Version::jdk(11),     JDK_Version::jdk(12), JDK_Version::jdk(13) },
+  { "AllowNonVirtualCalls",          JDK_Version::jdk(11),     JDK_Version::jdk(12), JDK_Version::jdk(13) },
+  { "PrintSafepointStatistics",      JDK_Version::jdk(11),     JDK_Version::jdk(12), JDK_Version::jdk(13) },
+  { "PrintSafepointStatisticsTimeout",JDK_Version::jdk(11),    JDK_Version::jdk(12), JDK_Version::jdk(13) },
+  { "PrintSafepointStatisticsCount", JDK_Version::jdk(11),     JDK_Version::jdk(12), JDK_Version::jdk(13) },
 
 #ifdef TEST_VERIFY_SPECIAL_JVM_FLAGS
   { "dep > obs",                    JDK_Version::jdk(9), JDK_Version::jdk(8), JDK_Version::undefined() },
--- a/src/hotspot/share/runtime/globals.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/globals.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -486,9 +486,6 @@
   notproduct(bool, ZombieALot, false,                                       \
           "Create zombies (non-entrant) at exit from the runtime system")   \
                                                                             \
-  product(bool, UnlinkSymbolsALot, false,                                   \
-          "Unlink unreferenced symbols from the symbol table at safepoints")\
-                                                                            \
   notproduct(bool, WalkStackALot, false,                                    \
           "Trace stack (no print) at every exit from the runtime system")   \
                                                                             \
@@ -1180,20 +1177,6 @@
           "null (+offset) will not raise a SIGSEGV, i.e.,"                  \
           "ImplicitNullChecks don't work (PPC64).")                         \
                                                                             \
-  product(bool, PrintSafepointStatistics, false,                            \
-          "(Deprecated) Print statistics about safepoint synchronization")  \
-                                                                            \
-  product(intx, PrintSafepointStatisticsCount, 300,                         \
-          "(Deprecated) Total number of safepoint statistics collected "    \
-          "before printing them out")                                       \
-          range(1, max_intx)                                                \
-                                                                            \
-  product(intx, PrintSafepointStatisticsTimeout,  -1,                       \
-          "(Deprecated) Print safepoint statistics only when safepoint takes "  \
-          "more than PrintSafepointSatisticsTimeout in millis")             \
-  LP64_ONLY(range(-1, max_intx/MICROUNITS))                                 \
-  NOT_LP64(range(-1, max_intx))                                             \
-                                                                            \
   diagnostic(bool, EnableThreadSMRExtraValidityChecks, true,                \
              "Enable Thread SMR extra validity checks")                     \
                                                                             \
@@ -2571,9 +2554,6 @@
            "Default survivor space alignment in bytes")                     \
            constraint(SurvivorAlignmentInBytesConstraintFunc,AfterErgo)     \
                                                                             \
-  product(bool , AllowNonVirtualCalls, false,                               \
-          "Obey the ACC_SUPER flag and allow invokenonvirtual calls")       \
-                                                                            \
   product(ccstr, DumpLoadedClassList, NULL,                                 \
           "Dump the names all loaded classes, that could be stored into "   \
           "the CDS archive, in the specified file")                         \
--- a/src/hotspot/share/runtime/handshake.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/handshake.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -297,12 +297,12 @@
 
 void HandshakeState::set_operation(JavaThread* target, HandshakeOperation* op) {
   _operation = op;
-  SafepointMechanism::arm_local_poll(target);
+  SafepointMechanism::arm_local_poll_release(target);
 }
 
 void HandshakeState::clear_handshake(JavaThread* target) {
   _operation = NULL;
-  SafepointMechanism::disarm_local_poll(target);
+  SafepointMechanism::disarm_local_poll_release(target);
 }
 
 void HandshakeState::process_self_inner(JavaThread* thread) {
--- a/src/hotspot/share/runtime/init.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/init.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -28,6 +28,8 @@
 #include "code/icBuffer.hpp"
 #include "gc/shared/collectedHeap.hpp"
 #include "interpreter/bytecodes.hpp"
+#include "logging/log.hpp"
+#include "logging/logTag.hpp"
 #include "memory/universe.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/flags/jvmFlag.hpp"
@@ -165,7 +167,7 @@
   if (!destructorsCalled) {
     destructorsCalled = true;
     perfMemory_exit();
-    if (PrintSafepointStatistics) {
+    if (log_is_enabled(Debug, safepoint, stats)) {
       // Print the collected safepoint statistics.
       SafepointSynchronize::print_stat_on_exit();
     }
--- a/src/hotspot/share/runtime/interfaceSupport.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/interfaceSupport.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -66,9 +66,6 @@
   if (ZombieALot) {
     InterfaceSupport::zombieAll();
   }
-  if (UnlinkSymbolsALot) {
-    InterfaceSupport::unlinkSymbols();
-  }
   // do verification AFTER potential deoptimization
   if (VerifyStack) {
     InterfaceSupport::verify_stack();
@@ -208,11 +205,6 @@
   zombieAllCounter++;
 }
 
-void InterfaceSupport::unlinkSymbols() {
-  VM_UnlinkSymbols op;
-  VMThread::execute(&op);
-}
-
 void InterfaceSupport::deoptimizeAll() {
   // This method is called by all threads when a thread make
   // transition to VM state (for example, runtime calls).
--- a/src/hotspot/share/runtime/interfaceSupport.inline.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/interfaceSupport.inline.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, 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
@@ -60,7 +60,6 @@
   static void walk_stack();
 
   static void zombieAll();
-  static void unlinkSymbols();
   static void deoptimizeAll();
   static void stress_derived_pointers();
   static void verify_stack();
--- a/src/hotspot/share/runtime/safepoint.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/safepoint.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -150,15 +150,23 @@
 static volatile int TryingToBlock = 0 ;    // proximate value -- for advisory use only
 static bool timeout_error_printed = false;
 
+
+// Statistic related statics
+julong SafepointSynchronize::_coalesced_vmop_count = 0;
+static jlong _safepoint_begin_time = 0;
+static float _ts_of_current_safepoint = 0.0f;
+static volatile int _nof_threads_hit_polling_page = 0;
+
 // Roll all threads forward to a safepoint and suspend them all
 void SafepointSynchronize::begin() {
   EventSafepointBegin begin_event;
   Thread* myThread = Thread::current();
   assert(myThread->is_VM_thread(), "Only VM thread may execute a safepoint");
 
-  if (PrintSafepointStatistics || PrintSafepointStatisticsTimeout > 0) {
+  if (log_is_enabled(Debug, safepoint, stats)) {
     _safepoint_begin_time = os::javaTimeNanos();
     _ts_of_current_safepoint = tty->time_stamp().seconds();
+    _nof_threads_hit_polling_page = 0;
   }
 
   Universe::heap()->safepoint_synchronize_begin();
@@ -190,14 +198,6 @@
   jlong safepoint_limit_time = 0;
   timeout_error_printed = false;
 
-  // PrintSafepointStatisticsTimeout can be specified separately. When
-  // specified, PrintSafepointStatistics will be set to true in
-  // deferred_initialize_stat method. The initialization has to be done
-  // early enough to avoid any races. See bug 6880029 for details.
-  if (PrintSafepointStatistics || PrintSafepointStatisticsTimeout > 0) {
-    deferred_initialize_stat();
-  }
-
   // Begin the process of bringing the system to a safepoint.
   // Java threads can be in several different states and are
   // stopped by different mechanisms:
@@ -243,9 +243,10 @@
     if (SafepointMechanism::uses_thread_local_poll()) {
       // Arming the per thread poll while having _state != _not_synchronized means safepointing
       log_trace(safepoint)("Setting thread local yield flag for threads");
+      OrderAccess::storestore(); // storestore, global state -> local state
       for (JavaThreadIteratorWithHandle jtiwh; JavaThread *cur = jtiwh.next(); ) {
         // Make sure the threads start polling, it is time to yield.
-        SafepointMechanism::arm_local_poll(cur); // release store, global state -> local state
+        SafepointMechanism::arm_local_poll(cur);
       }
     }
     OrderAccess::fence(); // storestore|storeload, global state -> local state
@@ -311,7 +312,7 @@
 
         if (iterations == 0) {
           initial_running = still_running;
-          if (PrintSafepointStatistics) {
+          if (log_is_enabled(Debug, safepoint, stats)) {
             begin_statistics(nof_threads, still_running);
           }
         }
@@ -402,7 +403,7 @@
     } // ThreadsListHandle destroyed here.
     assert(still_running == 0, "sanity check");
 
-    if (PrintSafepointStatistics) {
+    if (log_is_enabled(Debug, safepoint, stats)) {
       update_statistics_on_spin_end();
     }
     if (sync_event.should_commit()) {
@@ -435,7 +436,7 @@
     if (SafepointTimeout) {
       jlong current_time = os::javaTimeNanos();
       if (safepoint_limit_time < current_time) {
-        tty->print_cr("# SafepointSynchronize: Finished after "
+        log_warning(safepoint)("# SafepointSynchronize: Finished after "
                       INT64_FORMAT_W(6) " ms",
                       (int64_t)((current_time - safepoint_limit_time) / MICROUNITS +
                                 (jlong)SafepointTimeoutDelay));
@@ -469,7 +470,7 @@
   log_info(safepoint)("Entering safepoint region: %s", VMThread::vm_safepoint_description());
 
   RuntimeService::record_safepoint_synchronized();
-  if (PrintSafepointStatistics) {
+  if (log_is_enabled(Debug, safepoint, stats)) {
     update_statistics_on_sync_end(os::javaTimeNanos());
   }
 
@@ -482,7 +483,7 @@
     }
   }
 
-  if (PrintSafepointStatistics) {
+  if (log_is_enabled(Debug, safepoint, stats)) {
     // Record how much time spend on the above cleanup tasks
     update_statistics_on_cleanup_end(os::javaTimeNanos());
   }
@@ -505,7 +506,7 @@
   DEBUG_ONLY(Thread* myThread = Thread::current();)
   assert(myThread->is_VM_thread(), "Only VM thread can execute a safepoint");
 
-  if (PrintSafepointStatistics) {
+  if (log_is_enabled(Debug, safepoint, stats)) {
     end_statistics(os::javaTimeNanos());
   }
 
@@ -546,7 +547,7 @@
         for (; JavaThread *current = jtiwh.next(); ) {
           ThreadSafepointState* cur_state = current->safepoint_state();
           cur_state->restart(); // TSS _running
-          SafepointMechanism::disarm_local_poll(current); // release store, local state -> polling page
+          SafepointMechanism::disarm_local_poll(current);
         }
         log_info(safepoint)("Leaving safepoint region");
       } else {
@@ -951,8 +952,8 @@
     assert(SafepointSynchronize::is_synchronizing(), "polling encountered outside safepoint synchronization");
   }
 
-  if (PrintSafepointStatistics) {
-    inc_page_trap_count();
+  if (log_is_enabled(Debug, safepoint, stats)) {
+    Atomic::inc(&_nof_threads_hit_polling_page);
   }
 
   ThreadSafepointState* state = thread->safepoint_state();
@@ -966,29 +967,34 @@
     timeout_error_printed = true;
     // Print out the thread info which didn't reach the safepoint for debugging
     // purposes (useful when there are lots of threads in the debugger).
-    tty->cr();
-    tty->print_cr("# SafepointSynchronize::begin: Timeout detected:");
-    if (reason ==  _spinning_timeout) {
-      tty->print_cr("# SafepointSynchronize::begin: Timed out while spinning to reach a safepoint.");
-    } else if (reason == _blocking_timeout) {
-      tty->print_cr("# SafepointSynchronize::begin: Timed out while waiting for threads to stop.");
-    }
+    LogTarget(Warning, safepoint) lt;
+    if (lt.is_enabled()) {
+      ResourceMark rm;
+      LogStream ls(lt);
+
+      ls.cr();
+      ls.print_cr("# SafepointSynchronize::begin: Timeout detected:");
+      if (reason ==  _spinning_timeout) {
+        ls.print_cr("# SafepointSynchronize::begin: Timed out while spinning to reach a safepoint.");
+      } else if (reason == _blocking_timeout) {
+        ls.print_cr("# SafepointSynchronize::begin: Timed out while waiting for threads to stop.");
+      }
 
-    tty->print_cr("# SafepointSynchronize::begin: Threads which did not reach the safepoint:");
-    ThreadSafepointState *cur_state;
-    ResourceMark rm;
-    for (JavaThreadIteratorWithHandle jtiwh; JavaThread *cur_thread = jtiwh.next(); ) {
-      cur_state = cur_thread->safepoint_state();
+      ls.print_cr("# SafepointSynchronize::begin: Threads which did not reach the safepoint:");
+      ThreadSafepointState *cur_state;
+      for (JavaThreadIteratorWithHandle jtiwh; JavaThread *cur_thread = jtiwh.next(); ) {
+        cur_state = cur_thread->safepoint_state();
 
-      if (cur_thread->thread_state() != _thread_blocked &&
-        ((reason == _spinning_timeout && cur_state->is_running()) ||
-           (reason == _blocking_timeout && !cur_state->has_called_back()))) {
-        tty->print("# ");
-        cur_thread->print();
-        tty->cr();
+        if (cur_thread->thread_state() != _thread_blocked &&
+          ((reason == _spinning_timeout && cur_state->is_running()) ||
+             (reason == _blocking_timeout && !cur_state->has_called_back()))) {
+          ls.print("# ");
+          cur_thread->print_on(&ls);
+          ls.cr();
+        }
       }
+      ls.print_cr("# SafepointSynchronize::begin: (End of list)");
     }
-    tty->print_cr("# SafepointSynchronize::begin: (End of list)");
   }
 
   // To debug the long safepoint, specify both DieOnSafepointTimeout &
@@ -1238,67 +1244,42 @@
 //
 //                     Statistics & Instrumentations
 //
-SafepointSynchronize::SafepointStats*  SafepointSynchronize::_safepoint_stats = NULL;
-jlong  SafepointSynchronize::_safepoint_begin_time = 0;
-int    SafepointSynchronize::_cur_stat_index = 0;
-julong SafepointSynchronize::_safepoint_reasons[VM_Operation::VMOp_Terminating];
-julong SafepointSynchronize::_coalesced_vmop_count = 0;
-jlong  SafepointSynchronize::_max_sync_time = 0;
-jlong  SafepointSynchronize::_max_vmop_time = 0;
-float  SafepointSynchronize::_ts_of_current_safepoint = 0.0f;
+struct SafepointStats {
+    float  _time_stamp;                        // record when the current safepoint occurs in seconds
+    int    _vmop_type;                         // tyep of VM operation triggers the safepoint
+    int    _nof_total_threads;                 // total number of Java threads
+    int    _nof_initial_running_threads;       // total number of initially seen running threads
+    int    _nof_threads_wait_to_block;         // total number of threads waiting for to block
+    bool   _page_armed;                        // true if polling page is armed, false otherwise
+    int _nof_threads_hit_page_trap;            // total number of threads hitting the page trap
+    jlong  _time_to_spin;                      // total time in millis spent in spinning
+    jlong  _time_to_wait_to_block;             // total time in millis spent in waiting for to block
+    jlong  _time_to_do_cleanups;               // total time in millis spent in performing cleanups
+    jlong  _time_to_sync;                      // total time in millis spent in getting to _synchronized
+    jlong  _time_to_exec_vmop;                 // total time in millis spent in vm operation itself
+};
+
+static const int _statistics_header_count = 30;
+static int _cur_stat_index = 0;
+static SafepointStats safepoint_stats = {0};  // zero initialize
+static SafepointStats* spstat = &safepoint_stats;
+
+static julong _safepoint_reasons[VM_Operation::VMOp_Terminating];
+static jlong  _max_sync_time = 0;
+static jlong  _max_vmop_time = 0;
 
 static jlong  cleanup_end_time = 0;
-static bool   init_done = false;
-
-// Helper method to print the header.
-static void print_header() {
-  // The number of spaces is significant here, and should match the format
-  // specifiers in print_statistics().
-
-  tty->print("          vmop                            "
-             "[ threads:    total initially_running wait_to_block ]"
-             "[ time:    spin   block    sync cleanup    vmop ] ");
-
-  tty->print_cr("page_trap_count");
-}
-
-void SafepointSynchronize::deferred_initialize_stat() {
-  if (init_done) return;
-
-  // If PrintSafepointStatisticsTimeout is specified, the statistics data will
-  // be printed right away, in which case, _safepoint_stats will regress to
-  // a single element array. Otherwise, it is a circular ring buffer with default
-  // size of PrintSafepointStatisticsCount.
-  int stats_array_size;
-  if (PrintSafepointStatisticsTimeout > 0) {
-    stats_array_size = 1;
-    PrintSafepointStatistics = true;
-  } else {
-    stats_array_size = PrintSafepointStatisticsCount;
-  }
-  _safepoint_stats = (SafepointStats*)os::malloc(stats_array_size
-                                                 * sizeof(SafepointStats), mtInternal);
-  guarantee(_safepoint_stats != NULL,
-            "not enough memory for safepoint instrumentation data");
-
-  init_done = true;
-}
 
 void SafepointSynchronize::begin_statistics(int nof_threads, int nof_running) {
-  assert(init_done, "safepoint statistics array hasn't been initialized");
-  SafepointStats *spstat = &_safepoint_stats[_cur_stat_index];
 
   spstat->_time_stamp = _ts_of_current_safepoint;
 
   VM_Operation *op = VMThread::vm_operation();
-  spstat->_vmop_type = (op != NULL ? op->type() : -1);
-  if (op != NULL) {
-    _safepoint_reasons[spstat->_vmop_type]++;
-  }
+  spstat->_vmop_type = op != NULL ? op->type() : VM_Operation::VMOp_None;
+  _safepoint_reasons[spstat->_vmop_type]++;
 
   spstat->_nof_total_threads = nof_threads;
   spstat->_nof_initial_running_threads = nof_running;
-  spstat->_nof_threads_hit_page_trap = 0;
 
   // Records the start time of spinning. The real time spent on spinning
   // will be adjusted when spin is done. Same trick is applied for time
@@ -1311,8 +1292,6 @@
 }
 
 void SafepointSynchronize::update_statistics_on_spin_end() {
-  SafepointStats *spstat = &_safepoint_stats[_cur_stat_index];
-
   jlong cur_time = os::javaTimeNanos();
 
   spstat->_nof_threads_wait_to_block = _waiting_to_block;
@@ -1329,7 +1308,6 @@
 }
 
 void SafepointSynchronize::update_statistics_on_sync_end(jlong end_time) {
-  SafepointStats *spstat = &_safepoint_stats[_cur_stat_index];
 
   if (spstat->_nof_threads_wait_to_block != 0) {
     spstat->_time_to_wait_to_block = end_time -
@@ -1348,106 +1326,90 @@
 }
 
 void SafepointSynchronize::update_statistics_on_cleanup_end(jlong end_time) {
-  SafepointStats *spstat = &_safepoint_stats[_cur_stat_index];
 
   // Record how long spent in cleanup tasks.
   spstat->_time_to_do_cleanups = end_time - spstat->_time_to_do_cleanups;
-
   cleanup_end_time = end_time;
 }
 
 void SafepointSynchronize::end_statistics(jlong vmop_end_time) {
-  SafepointStats *spstat = &_safepoint_stats[_cur_stat_index];
 
   // Update the vm operation time.
   spstat->_time_to_exec_vmop = vmop_end_time -  cleanup_end_time;
   if (spstat->_time_to_exec_vmop > _max_vmop_time) {
     _max_vmop_time = spstat->_time_to_exec_vmop;
   }
-  // Only the sync time longer than the specified
-  // PrintSafepointStatisticsTimeout will be printed out right away.
-  // By default, it is -1 meaning all samples will be put into the list.
-  if ( PrintSafepointStatisticsTimeout > 0) {
-    if (spstat->_time_to_sync > (jlong)PrintSafepointStatisticsTimeout * MICROUNITS) {
-      print_statistics();
-    }
-  } else {
-    // The safepoint statistics will be printed out when the _safepoin_stats
-    // array fills up.
-    if (_cur_stat_index == PrintSafepointStatisticsCount - 1) {
-      print_statistics();
-      _cur_stat_index = 0;
-    } else {
-      _cur_stat_index++;
-    }
-  }
+
+  spstat->_nof_threads_hit_page_trap = _nof_threads_hit_polling_page;
+
+  print_statistics();
+}
+
+// Helper method to print the header.
+static void print_header(outputStream* st) {
+  // The number of spaces is significant here, and should match the format
+  // specifiers in print_statistics().
+
+  st->print("          vmop                            "
+            "[ threads:    total initially_running wait_to_block ]"
+            "[ time:    spin   block    sync cleanup    vmop ] ");
+
+  st->print_cr("page_trap_count");
 }
 
+// This prints a nice table.  To get the statistics to not shift due to the logging uptime
+// decorator, use the option as: -Xlog:safepoint+stats=debug:[outputfile]:none
 void SafepointSynchronize::print_statistics() {
-  for (int index = 0; index <= _cur_stat_index; index++) {
-    if (index % 30 == 0) {
-      print_header();
-    }
-    SafepointStats* sstats = &_safepoint_stats[index];
-    tty->print("%8.3f: ", sstats->_time_stamp);
-    tty->print("%-30s  [          "
-               INT32_FORMAT_W(8) " " INT32_FORMAT_W(17) " " INT32_FORMAT_W(13) " "
-               "]",
-               (sstats->_vmop_type == -1 ? "no vm operation" : VM_Operation::name(sstats->_vmop_type)),
-               sstats->_nof_total_threads,
-               sstats->_nof_initial_running_threads,
-               sstats->_nof_threads_wait_to_block);
-    // "/ MICROUNITS " is to convert the unit from nanos to millis.
-    tty->print("[       "
-               INT64_FORMAT_W(7) " " INT64_FORMAT_W(7) " "
-               INT64_FORMAT_W(7) " " INT64_FORMAT_W(7) " "
-               INT64_FORMAT_W(7) " ] ",
-               (int64_t)(sstats->_time_to_spin / MICROUNITS),
-               (int64_t)(sstats->_time_to_wait_to_block / MICROUNITS),
-               (int64_t)(sstats->_time_to_sync / MICROUNITS),
-               (int64_t)(sstats->_time_to_do_cleanups / MICROUNITS),
-               (int64_t)(sstats->_time_to_exec_vmop / MICROUNITS));
+  LogTarget(Debug, safepoint, stats) lt;
+  assert (lt.is_enabled(), "should only be called when printing statistics is enabled");
+  LogStream ls(lt);
+
+  // Print header every 30 entries
+  if ((_cur_stat_index % _statistics_header_count) == 0) {
+    print_header(&ls);
+    _cur_stat_index = 1;  // wrap
+  } else {
+    _cur_stat_index++;
+  }
 
-    tty->print_cr(INT32_FORMAT_W(15) " ", sstats->_nof_threads_hit_page_trap);
-  }
+  ls.print("%8.3f: ", spstat->_time_stamp);
+  ls.print("%-28s  [          "
+           INT32_FORMAT_W(8) " " INT32_FORMAT_W(17) " " INT32_FORMAT_W(13) " "
+           "]",
+           VM_Operation::name(spstat->_vmop_type),
+           spstat->_nof_total_threads,
+           spstat->_nof_initial_running_threads,
+           spstat->_nof_threads_wait_to_block);
+  // "/ MICROUNITS " is to convert the unit from nanos to millis.
+  ls.print("[       "
+           INT64_FORMAT_W(7) " " INT64_FORMAT_W(7) " "
+           INT64_FORMAT_W(7) " " INT64_FORMAT_W(7) " "
+           INT64_FORMAT_W(7) " ] ",
+           (int64_t)(spstat->_time_to_spin / MICROUNITS),
+           (int64_t)(spstat->_time_to_wait_to_block / MICROUNITS),
+           (int64_t)(spstat->_time_to_sync / MICROUNITS),
+           (int64_t)(spstat->_time_to_do_cleanups / MICROUNITS),
+           (int64_t)(spstat->_time_to_exec_vmop / MICROUNITS));
+
+  ls.print_cr(INT32_FORMAT_W(15) " ", spstat->_nof_threads_hit_page_trap);
 }
 
-// This method will be called when VM exits. It will first call
-// print_statistics to print out the rest of the sampling.  Then
-// it tries to summarize the sampling.
+// This method will be called when VM exits. This tries to summarize the sampling.
+// Current thread may already be deleted, so don't use ResourceMark.
 void SafepointSynchronize::print_stat_on_exit() {
-  if (_safepoint_stats == NULL) return;
-
-  SafepointStats *spstat = &_safepoint_stats[_cur_stat_index];
-
-  // During VM exit, end_statistics may not get called and in that
-  // case, if the sync time is less than PrintSafepointStatisticsTimeout,
-  // don't print it out.
-  // Approximate the vm op time.
-  _safepoint_stats[_cur_stat_index]._time_to_exec_vmop =
-    os::javaTimeNanos() - cleanup_end_time;
-
-  if ( PrintSafepointStatisticsTimeout < 0 ||
-       spstat->_time_to_sync > (jlong)PrintSafepointStatisticsTimeout * MICROUNITS) {
-    print_statistics();
-  }
-  tty->cr();
-
-  // Print out polling page sampling status.
-  tty->print_cr("Polling page always armed");
 
   for (int index = 0; index < VM_Operation::VMOp_Terminating; index++) {
     if (_safepoint_reasons[index] != 0) {
-      tty->print_cr("%-26s" UINT64_FORMAT_W(10), VM_Operation::name(index),
-                    _safepoint_reasons[index]);
+      log_debug(safepoint, stats)("%-28s" UINT64_FORMAT_W(10), VM_Operation::name(index),
+                _safepoint_reasons[index]);
     }
   }
 
-  tty->print_cr(UINT64_FORMAT_W(5) " VM operations coalesced during safepoint",
-                _coalesced_vmop_count);
-  tty->print_cr("Maximum sync time  " INT64_FORMAT_W(5) " ms",
-                (int64_t)(_max_sync_time / MICROUNITS));
-  tty->print_cr("Maximum vm operation time (except for Exit VM operation)  "
-                INT64_FORMAT_W(5) " ms",
-                (int64_t)(_max_vmop_time / MICROUNITS));
+  log_debug(safepoint, stats)("VM operations coalesced during safepoint " INT64_FORMAT,
+                              _coalesced_vmop_count);
+  log_debug(safepoint, stats)("Maximum sync time  " INT64_FORMAT" ms",
+                              (int64_t)(_max_sync_time / MICROUNITS));
+  log_debug(safepoint, stats)("Maximum vm operation time (except for Exit VM operation)  "
+                              INT64_FORMAT " ms",
+                              (int64_t)(_max_vmop_time / MICROUNITS));
 }
--- a/src/hotspot/share/runtime/safepoint.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/safepoint.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -89,20 +89,6 @@
     SAFEPOINT_CLEANUP_NUM_TASKS
   };
 
-  typedef struct {
-    float  _time_stamp;                        // record when the current safepoint occurs in seconds
-    int    _vmop_type;                         // type of VM operation triggers the safepoint
-    int    _nof_total_threads;                 // total number of Java threads
-    int    _nof_initial_running_threads;       // total number of initially seen running threads
-    int    _nof_threads_wait_to_block;         // total number of threads waiting for to block
-    int    _nof_threads_hit_page_trap;         // total number of threads hitting the page trap
-    jlong  _time_to_spin;                      // total time in millis spent in spinning
-    jlong  _time_to_wait_to_block;             // total time in millis spent in waiting for to block
-    jlong  _time_to_do_cleanups;               // total time in millis spent in performing cleanups
-    jlong  _time_to_sync;                      // total time in millis spent in getting to _synchronized
-    jlong  _time_to_exec_vmop;                 // total time in millis spent in vm operation itself
-  } SafepointStats;
-
  private:
   static volatile SynchronizeState _state;     // Threads might read this flag directly, without acquiring the Threads_lock
   static volatile int _waiting_to_block;       // number of threads we are waiting for to block
@@ -118,27 +104,16 @@
 public:
   static volatile int _safepoint_counter;
 private:
-  static long       _end_of_last_safepoint;     // Time of last safepoint in milliseconds
+  static long         _end_of_last_safepoint;     // Time of last safepoint in milliseconds
+  static julong       _coalesced_vmop_count;     // coalesced vmop count
 
   // Statistics
-  static jlong            _safepoint_begin_time;     // time when safepoint begins
-  static SafepointStats*  _safepoint_stats;          // array of SafepointStats struct
-  static int              _cur_stat_index;           // current index to the above array
-  static julong           _safepoint_reasons[];      // safepoint count for each VM op
-  static julong           _coalesced_vmop_count;     // coalesced vmop count
-  static jlong            _max_sync_time;            // maximum sync time in nanos
-  static jlong            _max_vmop_time;            // maximum vm operation time in nanos
-  static float            _ts_of_current_safepoint;  // time stamp of current safepoint in seconds
-
   static void begin_statistics(int nof_threads, int nof_running);
   static void update_statistics_on_spin_end();
   static void update_statistics_on_sync_end(jlong end_time);
   static void update_statistics_on_cleanup_end(jlong end_time);
   static void end_statistics(jlong end_time);
   static void print_statistics();
-  inline static void inc_page_trap_count() {
-    Atomic::inc(&_safepoint_stats[_cur_stat_index]._nof_threads_hit_page_trap);
-  }
 
   // For debug long safepoint
   static void print_safepoint_timeout(SafepointTimeoutReason timeout_reason);
@@ -192,7 +167,6 @@
   static bool is_cleanup_needed();
   static void do_cleanup_tasks();
 
-  static void deferred_initialize_stat();
   static void print_stat_on_exit();
   inline static void inc_vmop_coalesced_count() { _coalesced_vmop_count++; }
 
--- a/src/hotspot/share/runtime/safepointMechanism.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/safepointMechanism.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -79,9 +79,13 @@
   // Blocks a thread until safepoint is completed
   static inline void block_if_requested(JavaThread* thread);
 
+  // Caller is responsible for using a memory barrier if needed.
   static inline void arm_local_poll(JavaThread* thread);
   static inline void disarm_local_poll(JavaThread* thread);
 
+  static inline void arm_local_poll_release(JavaThread* thread);
+  static inline void disarm_local_poll_release(JavaThread* thread);
+
   // Setup the selected safepoint mechanism
   static void initialize();
   static void initialize_header(JavaThread* thread);
--- a/src/hotspot/share/runtime/safepointMechanism.inline.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/safepointMechanism.inline.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -87,4 +87,12 @@
   thread->set_polling_page(poll_disarmed_value());
 }
 
+void SafepointMechanism::arm_local_poll_release(JavaThread* thread) {
+  thread->set_polling_page_release(poll_armed_value());
+}
+
+void SafepointMechanism::disarm_local_poll_release(JavaThread* thread) {
+  thread->set_polling_page_release(poll_disarmed_value());
+}
+
 #endif // SHARE_VM_RUNTIME_SAFEPOINTMECHANISM_INLINE_HPP
--- a/src/hotspot/share/runtime/thread.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/thread.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -963,7 +963,7 @@
 
 // The flag: potential_vm_operation notifies if this particular safepoint state could potentially
 // invoke the vm-thread (e.g., an oop allocation). In that case, we also have to make sure that
-// no threads which allow_vm_block's are held
+// no locks which allow_vm_block's are held
 void Thread::check_for_valid_safepoint_state(bool potential_vm_operation) {
   // Check if current thread is allowed to block at a safepoint
   if (!(_allow_safepoint_count == 0)) {
@@ -3298,6 +3298,11 @@
 }
 
 CompilerThread::~CompilerThread() {
+  // Free buffer blob, if allocated
+  if (get_buffer_blob() != NULL) {
+    MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
+    CodeCache::free(get_buffer_blob());
+  }
   // Delete objects which were allocated on heap.
   delete _counters;
 }
--- a/src/hotspot/share/runtime/thread.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/thread.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1207,6 +1207,7 @@
   bool do_not_unlock_if_synchronized()             { return _do_not_unlock_if_synchronized; }
   void set_do_not_unlock_if_synchronized(bool val) { _do_not_unlock_if_synchronized = val; }
 
+  inline void set_polling_page_release(void* poll_value);
   inline void set_polling_page(void* poll_value);
   inline volatile void* get_polling_page();
 
--- a/src/hotspot/share/runtime/thread.inline.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/thread.inline.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -170,8 +170,13 @@
 
 // The release make sure this store is done after storing the handshake
 // operation or global state
+inline void JavaThread::set_polling_page_release(void* poll_value) {
+  OrderAccess::release_store(polling_page_addr(), poll_value);
+}
+
+// Caller is responsible for using a memory barrier if needed.
 inline void JavaThread::set_polling_page(void* poll_value) {
-  OrderAccess::release_store(polling_page_addr(), poll_value);
+  *polling_page_addr() = poll_value;
 }
 
 // The aqcquire make sure reading of polling page is done before
--- a/src/hotspot/share/runtime/vmThread.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/vmThread.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2018, 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
@@ -47,8 +47,8 @@
 #include "utilities/xmlstream.hpp"
 
 // Dummy VM operation to act as first element in our circular double-linked list
-class VM_Dummy: public VM_Operation {
-  VMOp_Type type() const { return VMOp_Dummy; }
+class VM_None: public VM_Operation {
+  VMOp_Type type() const { return VMOp_None; }
   void  doit() {};
 };
 
@@ -58,7 +58,7 @@
   for(int i = 0; i < nof_priorities; i++) {
     _queue_length[i] = 0;
     _queue_counter = 0;
-    _queue[i] = new VM_Dummy();
+    _queue[i] = new VM_None();
     _queue[i]->set_next(_queue[i]);
     _queue[i]->set_prev(_queue[i]);
   }
@@ -511,7 +511,7 @@
               _vm_queue->set_drain_list(next);
               evaluate_operation(_cur_vm_operation);
               _cur_vm_operation = next;
-              if (PrintSafepointStatistics) {
+              if (log_is_enabled(Debug, safepoint, stats)) {
                 SafepointSynchronize::inc_vmop_coalesced_count();
               }
             } while (_cur_vm_operation != NULL);
--- a/src/hotspot/share/runtime/vm_operations.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/vm_operations.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -192,12 +192,6 @@
 
 #endif // !PRODUCT
 
-void VM_UnlinkSymbols::doit() {
-  JavaThread *thread = (JavaThread *)calling_thread();
-  assert(thread->is_Java_thread(), "must be a Java thread");
-  SymbolTable::unlink();
-}
-
 void VM_Verify::doit() {
   Universe::heap()->prepare_for_verify();
   Universe::verify();
--- a/src/hotspot/share/runtime/vm_operations.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/runtime/vm_operations.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -40,7 +40,7 @@
 
 // Note: When new VM_XXX comes up, add 'XXX' to the template table.
 #define VM_OPS_DO(template)                       \
-  template(Dummy)                                 \
+  template(None)                                  \
   template(ThreadStop)                            \
   template(ThreadDump)                            \
   template(PrintThreads)                          \
@@ -52,7 +52,6 @@
   template(DeoptimizeFrame)                       \
   template(DeoptimizeAll)                         \
   template(ZombieAll)                             \
-  template(UnlinkSymbols)                         \
   template(Verify)                                \
   template(PrintJNI)                              \
   template(HeapDumper)                            \
@@ -353,14 +352,6 @@
 };
 #endif // PRODUCT
 
-class VM_UnlinkSymbols: public VM_Operation {
- public:
-  VM_UnlinkSymbols() {}
-  VMOp_Type type() const                         { return VMOp_UnlinkSymbols; }
-  void doit();
-  bool allow_nested_vm_operations() const        { return true; }
-};
-
 class VM_Verify: public VM_Operation {
  public:
   VMOp_Type type() const { return VMOp_Verify; }
--- a/src/hotspot/share/services/mallocSiteTable.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/services/mallocSiteTable.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -28,34 +28,10 @@
 #include "runtime/atomic.hpp"
 #include "services/mallocSiteTable.hpp"
 
-/*
- * Early os::malloc() calls come from initializations of static variables, long before entering any
- * VM code. Upon the arrival of the first os::malloc() call, malloc site hashtable has to be
- * initialized, along with the allocation site for the hashtable entries.
- * To ensure that malloc site hashtable can be initialized without triggering any additional os::malloc()
- * call, the hashtable bucket array and hashtable entry allocation site have to be static.
- * It is not a problem for hashtable bucket, since it is an array of pointer type, C runtime just
- * allocates a block memory and zero the memory for it.
- * But for hashtable entry allocation site object, things get tricky. C runtime not only allocates
- * memory for it, but also calls its constructor at some later time. If we initialize the allocation site
- * at the first os::malloc() call, the object will be reinitialized when its constructor is called
- * by C runtime.
- * To workaround above issue, we declare a static size_t array with the size of the CallsiteHashtableEntry,
- * the memory is used to instantiate CallsiteHashtableEntry for the hashtable entry allocation site.
- * Given it is a primitive type array, C runtime will do nothing other than assign the memory block for the variable,
- * which is exactly what we want.
- * The same trick is also applied to create NativeCallStack object for CallsiteHashtableEntry memory allocation.
- *
- * Note: C++ object usually aligns to particular alignment, depends on compiler implementation, we declare
- * the memory as size_t arrays, to ensure the memory is aligned to native machine word alignment.
- */
-
-// Reserve enough memory for NativeCallStack and MallocSiteHashtableEntry objects
-size_t MallocSiteTable::_hash_entry_allocation_stack[CALC_OBJ_SIZE_IN_TYPE(NativeCallStack, size_t)];
-size_t MallocSiteTable::_hash_entry_allocation_site[CALC_OBJ_SIZE_IN_TYPE(MallocSiteHashtableEntry, size_t)];
-
 // Malloc site hashtable buckets
 MallocSiteHashtableEntry*  MallocSiteTable::_table[MallocSiteTable::table_size];
+const NativeCallStack* MallocSiteTable::_hash_entry_allocation_stack = NULL;
+const MallocSiteHashtableEntry* MallocSiteTable::_hash_entry_allocation_site = NULL;
 
 // concurrent access counter
 volatile int MallocSiteTable::_access_count = 0;
@@ -73,9 +49,6 @@
  * time, it is in single-threaded mode from JVM perspective.
  */
 bool MallocSiteTable::initialize() {
-  assert(sizeof(_hash_entry_allocation_stack) >= sizeof(NativeCallStack), "Sanity Check");
-  assert(sizeof(_hash_entry_allocation_site) >= sizeof(MallocSiteHashtableEntry),
-    "Sanity Check");
   assert((size_t)table_size <= MAX_MALLOCSITE_TABLE_SIZE, "Hashtable overflow");
 
   // Fake the call stack for hashtable entry allocation
@@ -84,24 +57,32 @@
   // Create pseudo call stack for hashtable entry allocation
   address pc[3];
   if (NMT_TrackingStackDepth >= 3) {
-    pc[2] = (address)MallocSiteTable::allocation_at;
+    uintx *fp = (uintx*)MallocSiteTable::allocation_at;
+    // On ppc64, 'fp' is a pointer to a function descriptor which is a struct  of
+    // three native pointers where the first pointer is the real function address.
+    // See: http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html#FUNC-DES
+    pc[2] = (address)(fp PPC64_ONLY(BIG_ENDIAN_ONLY([0])));
   }
   if (NMT_TrackingStackDepth >= 2) {
-    pc[1] = (address)MallocSiteTable::lookup_or_add;
+    uintx *fp = (uintx*)MallocSiteTable::lookup_or_add;
+    pc[1] = (address)(fp PPC64_ONLY(BIG_ENDIAN_ONLY([0])));
   }
-  pc[0] = (address)MallocSiteTable::new_entry;
+  uintx *fp = (uintx*)MallocSiteTable::new_entry;
+  pc[0] = (address)(fp PPC64_ONLY(BIG_ENDIAN_ONLY([0])));
 
-  // Instantiate NativeCallStack object, have to use placement new operator. (see comments above)
-  NativeCallStack* stack = ::new ((void*)_hash_entry_allocation_stack)
-    NativeCallStack(pc, MIN2(((int)(sizeof(pc) / sizeof(address))), ((int)NMT_TrackingStackDepth)));
+  static const NativeCallStack stack(pc, MIN2(((int)(sizeof(pc) / sizeof(address))), ((int)NMT_TrackingStackDepth)));
+  static const MallocSiteHashtableEntry entry(stack, mtNMT);
 
-  // Instantiate hash entry for hashtable entry allocation callsite
-  MallocSiteHashtableEntry* entry = ::new ((void*)_hash_entry_allocation_site)
-    MallocSiteHashtableEntry(*stack, mtNMT);
+  assert(_hash_entry_allocation_stack == NULL &&
+         _hash_entry_allocation_site == NULL,
+         "Already initailized");
+
+  _hash_entry_allocation_stack = &stack;
+  _hash_entry_allocation_site = &entry;
 
   // Add the allocation site to hashtable.
-  int index = hash_to_index(stack->hash());
-  _table[index] = entry;
+  int index = hash_to_index(stack.hash());
+  _table[index] = const_cast<MallocSiteHashtableEntry*>(&entry);
 
   return true;
 }
@@ -204,6 +185,9 @@
     _table[index] = NULL;
     delete_linked_list(head);
   }
+
+  _hash_entry_allocation_stack = NULL;
+  _hash_entry_allocation_site = NULL;
 }
 
 void MallocSiteTable::delete_linked_list(MallocSiteHashtableEntry* head) {
@@ -211,7 +195,7 @@
   while (head != NULL) {
     p = head;
     head = (MallocSiteHashtableEntry*)head->next();
-    if (p != (MallocSiteHashtableEntry*)_hash_entry_allocation_site) {
+    if (p != hash_entry_allocation_site()) {
       delete p;
     }
   }
--- a/src/hotspot/share/services/mallocSiteTable.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/services/mallocSiteTable.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -42,7 +42,7 @@
 
  public:
   MallocSite() :
-    AllocationSite<MemoryCounter>(NativeCallStack::EMPTY_STACK), _flags(mtNone) {}
+    AllocationSite<MemoryCounter>(NativeCallStack::empty_stack()), _flags(mtNone) {}
 
   MallocSite(const NativeCallStack& stack, MEMFLAGS flags) :
     AllocationSite<MemoryCounter>(stack), _flags(flags) {}
@@ -247,7 +247,13 @@
   }
 
   static inline const NativeCallStack* hash_entry_allocation_stack() {
-    return (NativeCallStack*)_hash_entry_allocation_stack;
+    assert(_hash_entry_allocation_stack != NULL, "Must be set");
+    return _hash_entry_allocation_stack;
+  }
+
+  static inline const MallocSiteHashtableEntry* hash_entry_allocation_site() {
+    assert(_hash_entry_allocation_site != NULL, "Must be set");
+    return _hash_entry_allocation_site;
   }
 
  private:
@@ -256,15 +262,11 @@
 
   // The callsite hashtable. It has to be a static table,
   // since malloc call can come from C runtime linker.
-  static MallocSiteHashtableEntry*   _table[table_size];
+  static MallocSiteHashtableEntry*        _table[table_size];
+  static const NativeCallStack*           _hash_entry_allocation_stack;
+  static const MallocSiteHashtableEntry*  _hash_entry_allocation_site;
 
 
-  // Reserve enough memory for placing the objects
-
-  // The memory for hashtable entry allocation stack object
-  static size_t _hash_entry_allocation_stack[CALC_OBJ_SIZE_IN_TYPE(NativeCallStack, size_t)];
-  // The memory for hashtable entry allocation callsite object
-  static size_t _hash_entry_allocation_site[CALC_OBJ_SIZE_IN_TYPE(MallocSiteHashtableEntry, size_t)];
   NOT_PRODUCT(static int     _peak_count;)
 };
 
--- a/src/hotspot/share/services/memTracker.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/services/memTracker.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -68,10 +68,6 @@
     os::unsetenv(buf);
   }
 
-  // Construct NativeCallStack::EMPTY_STACK. It may get constructed twice,
-  // but it is benign, the results are the same.
-  ::new ((void*)&NativeCallStack::EMPTY_STACK) NativeCallStack(0, false);
-
   if (!MallocTracker::initialize(level) ||
       !VirtualMemoryTracker::initialize(level)) {
     level = NMT_off;
--- a/src/hotspot/share/services/memTracker.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/services/memTracker.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -31,8 +31,8 @@
 
 #if !INCLUDE_NMT
 
-#define CURRENT_PC   NativeCallStack::EMPTY_STACK
-#define CALLER_PC    NativeCallStack::EMPTY_STACK
+#define CURRENT_PC   NativeCallStack::empty_stack()
+#define CALLER_PC    NativeCallStack::empty_stack()
 
 class Tracker : public StackObj {
  public:
@@ -86,9 +86,9 @@
 extern volatile bool NMT_stack_walkable;
 
 #define CURRENT_PC ((MemTracker::tracking_level() == NMT_detail && NMT_stack_walkable) ? \
-                    NativeCallStack(0, true) : NativeCallStack::EMPTY_STACK)
+                    NativeCallStack(0, true) : NativeCallStack::empty_stack())
 #define CALLER_PC  ((MemTracker::tracking_level() == NMT_detail && NMT_stack_walkable) ?  \
-                    NativeCallStack(1, true) : NativeCallStack::EMPTY_STACK)
+                    NativeCallStack(1, true) : NativeCallStack::empty_stack())
 
 class MemBaseline;
 class Mutex;
--- a/src/hotspot/share/services/virtualMemoryTracker.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/services/virtualMemoryTracker.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -302,7 +302,7 @@
 
 
   ReservedMemoryRegion(address base, size_t size) :
-    VirtualMemoryRegion(base, size), _stack(NativeCallStack::EMPTY_STACK), _flag(mtNone) { }
+    VirtualMemoryRegion(base, size), _stack(NativeCallStack::empty_stack()), _flag(mtNone) { }
 
   // Copy constructor
   ReservedMemoryRegion(const ReservedMemoryRegion& rr) :
--- a/src/hotspot/share/utilities/concurrentHashTable.inline.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/utilities/concurrentHashTable.inline.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -263,8 +263,11 @@
       Prefetch::read(*pref->value(), 0);
       pref = pref->next();
     }
-    if (next->next() != NULL) {
-      Prefetch::read(*next->next()->value(), 0);
+    // Read next() Node* once.  May be racing with a thread moving the next
+    // pointers.
+    Node* next_pref = next->next();
+    if (next_pref != NULL) {
+      Prefetch::read(*next_pref->value(), 0);
     }
     if (eval_f(next->value())) {
       return true;
@@ -546,8 +549,9 @@
     lookup_f.equals(rem_n->value(), &is_dead);
     if (is_dead) {
       ndel[dels++] = rem_n;
-      bucket->release_assign_node_ptr(rem_n_prev, rem_n->next());
-      rem_n = rem_n->next();
+      Node* next_node = rem_n->next();
+      bucket->release_assign_node_ptr(rem_n_prev, next_node);
+      rem_n = next_node;
       if (dels == BULK_DELETE_LIMIT) {
         break;
       }
@@ -654,32 +658,33 @@
   while (aux != NULL) {
     bool dead_hash = false;
     size_t aux_hash = CONFIG::get_hash(*aux->value(), &dead_hash);
+    Node* aux_next = aux->next();
     if (dead_hash) {
       delete_me = aux;
       // This item is dead, move both list to next
       new_table->get_bucket(odd_index)->release_assign_node_ptr(odd,
-                                                                aux->next());
+                                                                aux_next);
       new_table->get_bucket(even_index)->release_assign_node_ptr(even,
-                                                                 aux->next());
+                                                                 aux_next);
     } else {
       size_t aux_index = bucket_idx_hash(new_table, aux_hash);
       if (aux_index == even_index) {
         // This is a even, so move odd to aux/even next
         new_table->get_bucket(odd_index)->release_assign_node_ptr(odd,
-                                                                  aux->next());
+                                                                  aux_next);
         // Keep in even list
         even = aux->next_ptr();
       } else if (aux_index == odd_index) {
         // This is a odd, so move odd to aux/odd next
         new_table->get_bucket(even_index)->release_assign_node_ptr(even,
-                                                                   aux->next());
+                                                                   aux_next);
         // Keep in odd list
         odd = aux->next_ptr();
       } else {
         fatal("aux_index does not match even or odd indices");
       }
     }
-    aux = aux->next();
+    aux = aux_next;
 
     // We can only move 1 pointer otherwise a reader might be moved to the wrong
     // chain. E.g. looking for even hash value but got moved to the odd bucket
@@ -976,8 +981,9 @@
   while (rem_n != NULL) {
     if (eval_f(rem_n->value())) {
       ndel[dels++] = rem_n;
-      bucket->release_assign_node_ptr(rem_n_prev, rem_n->next());
-      rem_n = rem_n->next();
+      Node* next_node = rem_n->next();
+      bucket->release_assign_node_ptr(rem_n_prev, next_node);
+      rem_n = next_node;
       if (dels == num_del) {
         break;
       }
--- a/src/hotspot/share/utilities/macros.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/utilities/macros.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -569,6 +569,14 @@
 #define NOT_AARCH64(code) code
 #endif
 
+#ifdef VM_LITTLE_ENDIAN
+#define LITTLE_ENDIAN_ONLY(code) code
+#define BIG_ENDIAN_ONLY(code)
+#else
+#define LITTLE_ENDIAN_ONLY(code)
+#define BIG_ENDIAN_ONLY(code) code
+#endif
+
 #define define_pd_global(type, name, value) const type pd_##name = value;
 
 // Helper macros for constructing file names for includes.
--- a/src/hotspot/share/utilities/nativeCallStack.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/utilities/nativeCallStack.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -28,8 +28,6 @@
 #include "utilities/globalDefinitions.hpp"
 #include "utilities/nativeCallStack.hpp"
 
-const NativeCallStack NativeCallStack::EMPTY_STACK(0, false);
-
 NativeCallStack::NativeCallStack(int toSkip, bool fillStack) :
   _hash_value(0) {
 
@@ -126,4 +124,3 @@
     }
   }
 }
-
--- a/src/hotspot/share/utilities/nativeCallStack.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/hotspot/share/utilities/nativeCallStack.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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
@@ -51,18 +51,21 @@
  * 2. The class is strict stack object, no heap or virtual memory can be allocated
  *    from it.
  */
+class MemTracker;
+
 class NativeCallStack : public StackObj {
- public:
-  static const NativeCallStack EMPTY_STACK;
-
- private:
+private:
   address       _stack[NMT_TrackingStackDepth];
   unsigned int  _hash_value;
 
- public:
+public:
   NativeCallStack(int toSkip = 0, bool fillStack = false);
   NativeCallStack(address* pc, int frameCount);
 
+  static inline const NativeCallStack& empty_stack() {
+    static const NativeCallStack EMPTY_STACK(0, false);
+    return EMPTY_STACK;
+  }
 
   // if it is an empty stack
   inline bool is_empty() const {
--- a/src/java.base/linux/classes/jdk/internal/platform/cgroupv1/SubSystem.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/linux/classes/jdk/internal/platform/cgroupv1/SubSystem.java	Thu Jul 12 11:09:23 2018 -0700
@@ -27,6 +27,7 @@
 
 import java.io.BufferedReader;
 import java.io.IOException;
+import java.math.BigInteger;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -100,11 +101,20 @@
 
     public static long getLongValue(SubSystem subsystem, String parm) {
         String strval = getStringValue(subsystem, parm);
+        long retval = 0;
 
         if (strval == null) return 0L;
 
-        long retval = Long.parseLong(strval);
-
+        try {
+            retval = Long.parseLong(strval);
+        } catch (NumberFormatException e) {
+            // For some properties (e.g. memory.limit_in_bytes) we may overflow the range of signed long.
+            // In this case, return Long.max
+            BigInteger b = new BigInteger(strval);
+            if (b.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0) {
+                return Long.MAX_VALUE;
+            }
+        }
         return retval;
     }
 
--- a/src/java.base/share/classes/java/io/FileSystem.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/java/io/FileSystem.java	Thu Jul 12 11:09:23 2018 -0700
@@ -231,8 +231,8 @@
 
     // Flags for enabling/disabling performance optimizations for file
     // name canonicalization
-    static boolean useCanonCaches      = true;
-    static boolean useCanonPrefixCache = true;
+    static boolean useCanonCaches;
+    static boolean useCanonPrefixCache;
 
     private static boolean getBooleanProperty(String prop, boolean defaultVal) {
         return Boolean.parseBoolean(System.getProperty(prop,
--- a/src/java.base/share/classes/java/lang/invoke/MethodHandles.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/java/lang/invoke/MethodHandles.java	Thu Jul 12 11:09:23 2018 -0700
@@ -71,6 +71,9 @@
  * <li>Combinator methods, which combine or transform pre-existing method handles into new ones.
  * <li>Other factory methods to create method handles that emulate other common JVM operations or control flow patterns.
  * </ul>
+ * A lookup, combinator, or factory method will fail and throw an
+ * {@code IllegalArgumentException} if the created method handle's type
+ * would have <a href="MethodHandle.html#maxarity">too many parameters</a>.
  *
  * @author John Rose, JSR 292 EG
  * @since 1.7
@@ -386,8 +389,9 @@
      * constant is not subject to security manager checks.
      * <li>If the looked-up method has a
      * <a href="MethodHandle.html#maxarity">very large arity</a>,
-     * the method handle creation may fail, due to the method handle
-     * type having too many parameters.
+     * the method handle creation may fail with an
+     * {@code IllegalArgumentException}, due to the method handle type having
+     * <a href="MethodHandle.html#maxarity">too many parameters.</a>
      * </ul>
      *
      * <h1><a id="access"></a>Access checking</h1>
--- a/src/java.base/share/classes/java/util/ArrayDeque.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/java/util/ArrayDeque.java	Thu Jul 12 11:09:23 2018 -0700
@@ -180,7 +180,7 @@
      * sufficient to hold 16 elements.
      */
     public ArrayDeque() {
-        elements = new Object[16];
+        elements = new Object[16 + 1];
     }
 
     /**
--- a/src/java.base/share/classes/java/util/HashMap.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/java/util/HashMap.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1263,9 +1263,7 @@
     @Override
     public V merge(K key, V value,
                    BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
-        if (value == null)
-            throw new NullPointerException();
-        if (remappingFunction == null)
+        if (value == null || remappingFunction == null)
             throw new NullPointerException();
         int hash = hash(key);
         Node<K,V>[] tab; Node<K,V> first; int n, i;
@@ -1308,8 +1306,7 @@
             else
                 removeNode(hash, key, null, false, true);
             return v;
-        }
-        if (value != null) {
+        } else {
             if (t != null)
                 t.putTreeVal(this, tab, hash, key, value);
             else {
@@ -1320,8 +1317,8 @@
             ++modCount;
             ++size;
             afterNodeInsertion(true);
+            return value;
         }
-        return value;
     }
 
     @Override
--- a/src/java.base/share/classes/java/util/zip/ZipOutputStream.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/java/util/zip/ZipOutputStream.java	Thu Jul 12 11:09:23 2018 -0700
@@ -582,7 +582,9 @@
                 uctime > UPPER_UNIXTIME_BOUND) {
                 elen += 36;         // NTFS time total 36 bytes
             } else {
-                elen += 9;          // headid(2) + sz(2) + flag(1) + mtime (4)
+                elen += 5;          // headid(2) + sz(2) + flag(1)
+                if (e.mtime != null)
+                    elen += 4;      // + mtime (4)
             }
         }
         writeShort(elen);
--- a/src/java.base/share/classes/jdk/internal/misc/VM.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/jdk/internal/misc/VM.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2018, 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
@@ -413,4 +413,15 @@
         initialize();
     }
     private static native void initialize();
+
+    /**
+     * Initialize archived static fields in the given Class using archived
+     * values from CDS dump time. Also initialize the classes of objects in
+     * the archived graph referenced by those fields.
+     *
+     * Those static fields remain as uninitialized if there is no mapped CDS
+     * java heap data or there is any error during initialization of the
+     * object class in the archived graph.
+     */
+    public static native void initializeFromArchive(Class<?> c);
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.base/share/classes/jdk/internal/module/ArchivedModuleGraph.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+package jdk.internal.module;
+
+import java.lang.module.ModuleFinder;
+import java.util.Objects;
+import jdk.internal.misc.VM;
+
+/**
+ * Used by ModuleBootstrap to obtain the archived system modules and finder.
+ */
+final class ArchivedModuleGraph {
+    private static String archivedMainModule;
+    private static SystemModules archivedSystemModules;
+    private static ModuleFinder archivedModuleFinder;
+
+    private final SystemModules systemModules;
+    private final ModuleFinder finder;
+
+    private ArchivedModuleGraph(SystemModules modules, ModuleFinder finder) {
+        this.systemModules = modules;
+        this.finder = finder;
+    }
+
+    SystemModules systemModules() {
+        return systemModules;
+    }
+
+    ModuleFinder finder() {
+        return finder;
+    }
+
+    // A factory method that ModuleBootstrap can use to obtain the
+    // ArchivedModuleGraph.
+    static ArchivedModuleGraph get(String mainModule) {
+        if (Objects.equals(mainModule, archivedMainModule)
+                && archivedSystemModules != null
+                && archivedModuleFinder != null) {
+            return new ArchivedModuleGraph(archivedSystemModules,
+                                           archivedModuleFinder);
+        } else {
+            return null;
+        }
+    }
+
+    // Used at CDS dump time
+    static void archive(String mainModule, SystemModules systemModules,
+                        ModuleFinder finder) {
+        if (archivedMainModule != null)
+            throw new UnsupportedOperationException();
+        archivedMainModule = mainModule;
+        archivedSystemModules = systemModules;
+        archivedModuleFinder = finder;
+    }
+
+    static {
+        VM.initializeFromArchive(ArchivedModuleGraph.class);
+    }
+}
--- a/src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java	Thu Jul 12 11:09:23 2018 -0700
@@ -54,6 +54,7 @@
 import jdk.internal.misc.JavaLangAccess;
 import jdk.internal.misc.JavaLangModuleAccess;
 import jdk.internal.misc.SharedSecrets;
+import jdk.internal.misc.VM;
 import jdk.internal.perf.PerfCounter;
 
 /**
@@ -172,23 +173,45 @@
         boolean haveModulePath = (appModulePath != null || upgradeModulePath != null);
         boolean needResolution = true;
 
-        if (!haveModulePath && addModules.isEmpty() && limitModules.isEmpty()) {
-            systemModules = SystemModuleFinders.systemModules(mainModule);
-            if (systemModules != null && !isPatched && (traceOutput == null)) {
-                needResolution = false;
+        // If the java heap was archived at CDS dump time and the environment
+        // at dump time matches the current environment then use the archived
+        // system modules and finder.
+        ArchivedModuleGraph archivedModuleGraph = ArchivedModuleGraph.get(mainModule);
+        if (archivedModuleGraph != null
+                && !haveModulePath
+                && addModules.isEmpty()
+                && limitModules.isEmpty()
+                && !isPatched) {
+            systemModules = archivedModuleGraph.systemModules();
+            systemModuleFinder = archivedModuleGraph.finder();
+            needResolution = (traceOutput != null);
+        } else {
+            boolean canArchive = false;
+            if (!haveModulePath && addModules.isEmpty() && limitModules.isEmpty()) {
+                systemModules = SystemModuleFinders.systemModules(mainModule);
+                if (systemModules != null && !isPatched) {
+                    needResolution = (traceOutput != null);
+                    canArchive = true;
+                }
             }
-        }
-        if (systemModules == null) {
-            // all system modules are observable
-            systemModules = SystemModuleFinders.allSystemModules();
-        }
-        if (systemModules != null) {
-            // images build
-            systemModuleFinder = SystemModuleFinders.of(systemModules);
-        } else {
-            // exploded build or testing
-            systemModules = new ExplodedSystemModules();
-            systemModuleFinder = SystemModuleFinders.ofSystem();
+            if (systemModules == null) {
+                // all system modules are observable
+                systemModules = SystemModuleFinders.allSystemModules();
+            }
+            if (systemModules != null) {
+                // images build
+                systemModuleFinder = SystemModuleFinders.of(systemModules);
+            } else {
+                // exploded build or testing
+                systemModules = new ExplodedSystemModules();
+                systemModuleFinder = SystemModuleFinders.ofSystem();
+            }
+
+            // Module graph can be archived at CDS dump time. Only allow the
+            // unnamed module case for now.
+            if (canArchive && (mainModule == null)) {
+                ArchivedModuleGraph.archive(mainModule, systemModules, systemModuleFinder);
+            }
         }
 
         Counters.add("jdk.module.boot.1.systemModulesTime", t1);
--- a/src/java.base/share/classes/sun/net/NetworkServer.java	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-/*
- * Copyright (c) 1995, 2011, 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.
- */
-package sun.net;
-
-import java.io.*;
-import java.net.Socket;
-import java.net.ServerSocket;
-
-/**
- * This is the base class for network servers.  To define a new type
- * of server define a new subclass of NetworkServer with a serviceRequest
- * method that services one request.  Start the server by executing:
- * <pre>
- *      new MyServerClass().startServer(port);
- * </pre>
- */
-public class NetworkServer implements Runnable, Cloneable {
-    /** Socket for communicating with client. */
-    public Socket clientSocket = null;
-    private Thread serverInstance;
-    private ServerSocket serverSocket;
-
-    /** Stream for printing to the client. */
-    public PrintStream clientOutput;
-
-    /** Buffered stream for reading replies from client. */
-    public InputStream clientInput;
-
-    /** Close an open connection to the client. */
-    public void close() throws IOException {
-        clientSocket.close();
-        clientSocket = null;
-        clientInput = null;
-        clientOutput = null;
-    }
-
-    /** Return client connection status */
-    public boolean clientIsOpen() {
-        return clientSocket != null;
-    }
-
-    public final void run() {
-        if (serverSocket != null) {
-            Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
-            // System.out.print("Server starts " + serverSocket + "\n");
-            while (true) {
-                try {
-                    Socket ns = serverSocket.accept();
-//                  System.out.print("New connection " + ns + "\n");
-                    NetworkServer n = (NetworkServer)clone();
-                    n.serverSocket = null;
-                    n.clientSocket = ns;
-                    new Thread(null, n, "NetworkServer", 0, false).start();
-                } catch(Exception e) {
-                    System.out.print("Server failure\n");
-                    e.printStackTrace();
-                    try {
-                        serverSocket.close();
-                    } catch(IOException e2) {}
-                    System.out.print("cs="+serverSocket+"\n");
-                    break;
-                }
-            }
-//          close();
-        } else {
-            try {
-                clientOutput = new PrintStream(
-                        new BufferedOutputStream(clientSocket.getOutputStream()),
-                                               false, "ISO8859_1");
-                clientInput = new BufferedInputStream(clientSocket.getInputStream());
-                serviceRequest();
-                // System.out.print("Service handler exits
-                // "+clientSocket+"\n");
-            } catch(Exception e) {
-                // System.out.print("Service handler failure\n");
-                // e.printStackTrace();
-            }
-            try {
-                close();
-            } catch(IOException e2) {}
-        }
-    }
-
-    /** Start a server on port <i>port</i>.  It will call serviceRequest()
-        for each new connection. */
-    public final void startServer(int port) throws IOException {
-        serverSocket = new ServerSocket(port, 50);
-        serverInstance = new Thread(null, this, "NetworkServer", 0, false);
-        serverInstance.start();
-    }
-
-    /** Service one request.  It is invoked with the clientInput and
-        clientOutput streams initialized.  This method handles one client
-        connection. When it is done, it can simply exit. The default
-        server just echoes it's input. It is invoked in it's own private
-        thread. */
-    public void serviceRequest() throws IOException {
-        byte buf[] = new byte[300];
-        int n;
-        clientOutput.print("Echo server " + getClass().getName() + "\n");
-        clientOutput.flush();
-        while ((n = clientInput.read(buf, 0, buf.length)) >= 0) {
-            clientOutput.write(buf, 0, n);
-        }
-    }
-
-    public static void main(String argv[]) {
-        try {
-            new NetworkServer ().startServer(8888);
-        } catch (IOException e) {
-            System.out.print("Server failed: "+e+"\n");
-        }
-    }
-
-    /**
-     * Clone this object;
-     */
-    public Object clone() {
-        try {
-            return super.clone();
-        } catch (CloneNotSupportedException e) {
-            // this shouldn't happen, since we are Cloneable
-            throw new InternalError(e);
-        }
-    }
-
-    public NetworkServer () {
-    }
-}
--- a/src/java.base/share/classes/sun/net/URLCanonicalizer.java	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 1996, 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.
- */
-
-package sun.net;
-
-/**
- * Helper class to map URL "abbreviations" to real URLs.
- * The default implementation supports the following mappings:
- * <pre>{@code
- *   ftp.mumble.bar/... => ftp://ftp.mumble.bar/...
- *   gopher.mumble.bar/... => gopher://gopher.mumble.bar/...
- *   other.name.dom/... => http://other.name.dom/...
- *   /foo/... => file:/foo/...
- * }</pre>
- *
- * Full URLs (those including a protocol name) are passed through unchanged.
- *
- * Subclassers can override or extend this behavior to support different
- * or additional canonicalization policies.
- *
- * @author      Steve Byrne
- */
-
-public class URLCanonicalizer {
-    /**
-     * Creates the default canonicalizer instance.
-     */
-    public URLCanonicalizer() { }
-
-    /**
-     * Given a possibly abbreviated URL (missing a protocol name, typically),
-     * this method's job is to transform that URL into a canonical form,
-     * by including a protocol name and additional syntax, if necessary.
-     *
-     * For a correctly formed URL, this method should just return its argument.
-     */
-    public String canonicalize(String simpleURL) {
-        String resultURL = simpleURL;
-        if (simpleURL.startsWith("ftp.")) {
-            resultURL = "ftp://" + simpleURL;
-        } else if (simpleURL.startsWith("gopher.")) {
-            resultURL = "gopher://" + simpleURL;
-        } else if (simpleURL.startsWith("/")) {
-            resultURL = "file:" + simpleURL;
-        } else if (!hasProtocolName(simpleURL)) {
-            if (isSimpleHostName(simpleURL)) {
-                simpleURL = "www." + simpleURL + ".com";
-            }
-            resultURL = "http://" + simpleURL;
-        }
-
-        return resultURL;
-    }
-
-    /**
-     * Given a possibly abbreviated URL, this predicate function returns
-     * true if it appears that the URL contains a protocol name
-     */
-    public boolean hasProtocolName(String url) {
-        int index = url.indexOf(':');
-        if (index <= 0) {       // treat ":foo" as not having a protocol spec
-            return false;
-        }
-
-        for (int i = 0; i < index; i++) {
-            char c = url.charAt(i);
-
-            // REMIND: this is a guess at legal characters in a protocol --
-            // need to be verified
-            if ((c >= 'A' && c <= 'Z')
-                || (c >= 'a' && c <= 'z')
-                || (c == '-')) {
-                continue;
-            }
-
-            // found an illegal character
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Returns true if the URL is just a single name, no periods or
-     * slashes, false otherwise
-     **/
-    protected boolean isSimpleHostName(String url) {
-
-        for (int i = 0; i < url.length(); i++) {
-            char c = url.charAt(i);
-
-            // REMIND: this is a guess at legal characters in a protocol --
-            // need to be verified
-            if ((c >= 'A' && c <= 'Z')
-                || (c >= 'a' && c <= 'z')
-                || (c >= '0' && c <= '9')
-                || (c == '-')) {
-                continue;
-            }
-
-            // found an illegal character
-            return false;
-        }
-
-        return true;
-    }
-}
--- a/src/java.base/share/classes/sun/security/rsa/RSAKeyFactory.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/sun/security/rsa/RSAKeyFactory.java	Thu Jul 12 11:09:23 2018 -0700
@@ -100,7 +100,7 @@
     private static void checkKeyAlgo(Key key, String expectedAlg)
             throws InvalidKeyException {
         String keyAlg = key.getAlgorithm();
-        if (!(keyAlg.equalsIgnoreCase(expectedAlg))) {
+        if (keyAlg == null || !(keyAlg.equalsIgnoreCase(expectedAlg))) {
             throw new InvalidKeyException("Expected a " + expectedAlg
                     + " key, but got " + keyAlg);
         }
@@ -123,8 +123,7 @@
             return (RSAKey)key;
         } else {
             try {
-                String keyAlgo = key.getAlgorithm();
-                KeyType type = KeyType.lookup(keyAlgo);
+                KeyType type = KeyType.lookup(key.getAlgorithm());
                 RSAKeyFactory kf = RSAKeyFactory.getInstance(type);
                 return (RSAKey) kf.engineTranslateKey(key);
             } catch (ProviderException e) {
@@ -268,8 +267,7 @@
                 throw new InvalidKeyException("Invalid key", e);
             }
         } else if ("X.509".equals(key.getFormat())) {
-            byte[] encoded = key.getEncoded();
-            RSAPublicKey translated = new RSAPublicKeyImpl(encoded);
+            RSAPublicKey translated = new RSAPublicKeyImpl(key.getEncoded());
             // ensure the key algorithm matches the current KeyFactory instance
             checkKeyAlgo(translated, type.keyAlgo());
             return translated;
@@ -313,8 +311,8 @@
                 throw new InvalidKeyException("Invalid key", e);
             }
         } else if ("PKCS#8".equals(key.getFormat())) {
-            byte[] encoded = key.getEncoded();
-            RSAPrivateKey translated = RSAPrivateCrtKeyImpl.newKey(encoded);
+            RSAPrivateKey translated =
+                RSAPrivateCrtKeyImpl.newKey(key.getEncoded());
             // ensure the key algorithm matches the current KeyFactory instance
             checkKeyAlgo(translated, type.keyAlgo());
             return translated;
--- a/src/java.base/share/classes/sun/security/rsa/RSAPrivateCrtKeyImpl.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/sun/security/rsa/RSAPrivateCrtKeyImpl.java	Thu Jul 12 11:09:23 2018 -0700
@@ -123,6 +123,10 @@
      * Construct a key from its encoding. Called from newKey above.
      */
     RSAPrivateCrtKeyImpl(byte[] encoded) throws InvalidKeyException {
+        if (encoded == null || encoded.length == 0) {
+            throw new InvalidKeyException("Missing key encoding");
+        }
+
         decode(encoded);
         RSAKeyFactory.checkRSAProviderKeyLengths(n.bitLength(), e);
         try {
--- a/src/java.base/share/classes/sun/security/rsa/RSAPublicKeyImpl.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/sun/security/rsa/RSAPublicKeyImpl.java	Thu Jul 12 11:09:23 2018 -0700
@@ -116,6 +116,9 @@
      * Construct a key from its encoding. Used by RSAKeyFactory.
      */
     RSAPublicKeyImpl(byte[] encoded) throws InvalidKeyException {
+        if (encoded == null || encoded.length == 0) {
+            throw new InvalidKeyException("Missing key encoding");
+        }
         decode(encoded); // this sets n and e value
         RSAKeyFactory.checkRSAProviderKeyLengths(n.bitLength(), e);
         checkExponentRange(n, e);
--- a/src/java.base/share/classes/sun/security/rsa/RSAUtil.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/sun/security/rsa/RSAUtil.java	Thu Jul 12 11:09:23 2018 -0700
@@ -52,7 +52,11 @@
         public String keyAlgo() {
             return algo;
         }
-        public static KeyType lookup(String name) {
+        public static KeyType lookup(String name)
+                throws InvalidKeyException, ProviderException {
+            if (name == null) {
+                throw new InvalidKeyException("Null key algorithm");
+            }
             for (KeyType kt : KeyType.values()) {
                 if (kt.keyAlgo().equalsIgnoreCase(name)) {
                     return kt;
@@ -133,21 +137,24 @@
             throws ProviderException {
         if (params == null) return null;
 
-        String algName = params.getAlgorithm();
-        KeyType type = KeyType.lookup(algName);
-        Class<? extends AlgorithmParameterSpec> specCls;
-        switch (type) {
-            case RSA:
-                throw new ProviderException("No params accepted for " +
-                    type.keyAlgo());
-            case PSS:
-                specCls = PSSParameterSpec.class;
-                break;
-            default:
-                throw new ProviderException("Unsupported RSA algorithm: " + algName);
-        }
         try {
+            String algName = params.getAlgorithm();
+            KeyType type = KeyType.lookup(algName);
+            Class<? extends AlgorithmParameterSpec> specCls;
+            switch (type) {
+                case RSA:
+                    throw new ProviderException("No params accepted for " +
+                        type.keyAlgo());
+                case PSS:
+                    specCls = PSSParameterSpec.class;
+                    break;
+                default:
+                    throw new ProviderException("Unsupported RSA algorithm: " + algName);
+            }
             return params.getParameterSpec(specCls);
+        } catch (ProviderException pe) {
+            // pass it up
+            throw pe;
         } catch (Exception e) {
             throw new ProviderException(e);
         }
--- a/src/java.base/share/classes/sun/security/ssl/SSLSessionImpl.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/sun/security/ssl/SSLSessionImpl.java	Thu Jul 12 11:09:23 2018 -0700
@@ -658,7 +658,7 @@
      */
     @Override
     public Principal getLocalPrincipal() {
-        return ((localCerts == null && localCerts.length != 0) ? null :
+        return ((localCerts == null || localCerts.length == 0) ? null :
                 localCerts[0].getSubjectX500Principal());
     }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.base/share/classes/sun/util/cldr/CLDRCalendarNameProviderImpl.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+package sun.util.cldr;
+
+import static sun.util.locale.provider.LocaleProviderAdapter.Type;
+
+import java.util.Locale;
+import java.util.Set;
+import sun.util.locale.provider.AvailableLanguageTags;
+import sun.util.locale.provider.CalendarNameProviderImpl;
+import sun.util.locale.provider.LocaleProviderAdapter;
+
+
+public class CLDRCalendarNameProviderImpl extends CalendarNameProviderImpl implements AvailableLanguageTags{
+
+    public CLDRCalendarNameProviderImpl(Type type, Set<String> langtags) {
+        super(type, langtags);
+    }
+
+    @Override
+    public boolean isSupportedLocale(Locale locale) {
+        if (Locale.ROOT.equals(locale)) {
+            return true;
+        }
+        String calendarType = null;
+        if (locale.hasExtensions()) {
+            calendarType = locale.getUnicodeLocaleType("ca");
+            locale = locale.stripExtensions();
+        }
+        if (calendarType != null) {
+            switch (calendarType) {
+                case "buddhist":
+                case "japanese":
+                case "gregory":
+                case "islamic":
+                case "roc":
+                    break;
+                default:
+                    // Unknown calendar type
+                    return false;
+            }
+        }
+        return LocaleProviderAdapter.forType(Type.CLDR).isSupportedProviderLocale(locale, langtags);
+    }
+}
--- a/src/java.base/share/classes/sun/util/cldr/CLDRLocaleProviderAdapter.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/sun/util/cldr/CLDRLocaleProviderAdapter.java	Thu Jul 12 11:09:23 2018 -0700
@@ -45,6 +45,7 @@
 import java.util.StringTokenizer;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.spi.CalendarDataProvider;
+import java.util.spi.CalendarNameProvider;
 import java.util.spi.TimeZoneNameProvider;
 import sun.util.locale.provider.JRELocaleProviderAdapter;
 import sun.util.locale.provider.LocaleDataMetaInfo;
@@ -133,6 +134,24 @@
     }
 
     @Override
+    public CalendarNameProvider getCalendarNameProvider() {
+        if (calendarNameProvider == null) {
+            CalendarNameProvider provider = AccessController.doPrivileged(
+                    (PrivilegedAction<CalendarNameProvider>) ()
+                    -> new CLDRCalendarNameProviderImpl(
+                            getAdapterType(),
+                            getLanguageTagSet("FormatData")));
+
+            synchronized (this) {
+                if (calendarNameProvider == null) {
+                    calendarNameProvider = provider;
+                }
+            }
+        }
+        return calendarNameProvider;
+    }
+
+    @Override
     public CollatorProvider getCollatorProvider() {
         return null;
     }
@@ -166,7 +185,7 @@
         return locs;
     }
 
-    private Locale applyAliases(Locale loc) {
+    private static Locale applyAliases(Locale loc) {
         if (langAliasesMap.isEmpty()) {
             langAliasesMap = baseMetaInfo.getLanguageAliasMap();
         }
@@ -264,19 +283,18 @@
     }
 
     /**
-     * This method returns equivalent CLDR supported locale for zh-HK,
-     * no, no-NO locales so that COMPAT locales do not precede
-     * those locales during ResourceBundle search path.
+     * This method returns equivalent CLDR supported locale
+     * for no, no-NO locales so that COMPAT locales do not precede
+     * those locales during ResourceBundle search path, also if an alias exists for a locale,
+     * it returns equivalent locale, e.g for zh_HK it returns zh_Hant-HK.
      */
     private static Locale getEquivalentLoc(Locale locale) {
         switch (locale.toString()) {
-            case "zh_HK":
-                return Locale.forLanguageTag("zh-Hant-HK");
             case "no":
             case "no_NO":
                 return Locale.forLanguageTag("nb");
         }
-        return locale;
+        return applyAliases(locale);
     }
 
     @Override
--- a/src/java.base/share/classes/sun/util/locale/provider/CalendarNameProviderImpl.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/sun/util/locale/provider/CalendarNameProviderImpl.java	Thu Jul 12 11:09:23 2018 -0700
@@ -42,8 +42,8 @@
  * @author Naoto Sato
  */
 public class CalendarNameProviderImpl extends CalendarNameProvider implements AvailableLanguageTags {
-    private final LocaleProviderAdapter.Type type;
-    private final Set<String> langtags;
+    protected final LocaleProviderAdapter.Type type;
+    protected final Set<String> langtags;
 
     public CalendarNameProviderImpl(LocaleProviderAdapter.Type type, Set<String> langtags) {
         this.type = type;
@@ -248,11 +248,8 @@
         if (langtags.contains(locale.toLanguageTag())) {
             return true;
         }
-        if (type == LocaleProviderAdapter.Type.JRE) {
-            String oldname = locale.toString().replace('_', '-');
-            return langtags.contains(oldname);
-        }
-        return false;
+        String oldname = locale.toString().replace('_', '-');
+        return langtags.contains(oldname);
     }
 
     @Override
--- a/src/java.base/share/classes/sun/util/locale/provider/JRELocaleProviderAdapter.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/classes/sun/util/locale/provider/JRELocaleProviderAdapter.java	Thu Jul 12 11:09:23 2018 -0700
@@ -131,7 +131,7 @@
     private volatile LocaleNameProvider localeNameProvider;
     protected volatile TimeZoneNameProvider timeZoneNameProvider;
     protected volatile CalendarDataProvider calendarDataProvider;
-    private volatile CalendarNameProvider calendarNameProvider;
+    protected volatile CalendarNameProvider calendarNameProvider;
 
     private volatile CalendarProvider calendarProvider;
     private volatile JavaTimeDateTimePatternProvider javaTimeDateTimePatternProvider;
--- a/src/java.base/share/legal/public_suffix.md	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/legal/public_suffix.md	Thu Jul 12 11:09:23 2018 -0700
@@ -1,7 +1,7 @@
 ## Mozilla Public Suffix List
 
 ### Public Suffix Notice
-<pre>
+```
 You are receiving a copy of the Mozilla Public Suffix List in the following
 file: <java-home>/lib/security/public_suffix_list.dat. The terms of the
 Oracle license do NOT apply to this file; it is licensed under the
@@ -11,17 +11,17 @@
 
 The Source Code of this file is available under the
 Mozilla Public License, v. 2.0 and is located at
-https://github.com/publicsuffix/list/blob/03089bfe4aa5b7a2e291f33e07a28d20f875cb83/public_suffix_list.dat
+https://raw.githubusercontent.com/publicsuffix/list/2225db8d9f4a2a27ec697c883360632fa0c16261/public_suffix_list.dat.
 If a copy of the MPL was not distributed with this file, you can obtain one
-at http://mozilla.org/MPL/2.0/.
+at https://mozilla.org/MPL/2.0/.
 
 Software distributed under the License is distributed on an "AS IS" basis,
 WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 for the specific language governing rights and limitations under the License. 
-</pre>
+```
 
 ### MPL v2.0
-<pre>
+```
 Mozilla Public License Version 2.0
 ==================================
 
@@ -381,7 +381,7 @@
 
   This Source Code Form is subject to the terms of the Mozilla Public
   License, v. 2.0. If a copy of the MPL was not distributed with this
-  file, You can obtain one at http://mozilla.org/MPL/2.0/.
+  file, You can obtain one at https://mozilla.org/MPL/2.0/.
 
 If it is not possible or desirable to put the notice in a particular
 file, then You may include the notice in a location (such as a LICENSE
@@ -396,4 +396,4 @@
   This Source Code Form is "Incompatible With Secondary Licenses", as
   defined by the Mozilla Public License, v. 2.0.
 
-</pre>
+```
--- a/src/java.base/share/native/libjava/VM.c	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/share/native/libjava/VM.c	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2018, 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
@@ -60,3 +60,9 @@
 Java_jdk_internal_misc_VM_getRuntimeArguments(JNIEnv *env, jclass cls) {
     return JVM_GetVmArguments(env);
 }
+
+JNIEXPORT void JNICALL
+Java_jdk_internal_misc_VM_initializeFromArchive(JNIEnv *env, jclass ignore,
+                                                jclass c) {
+    JVM_InitializeFromArchive(env, c);
+}
--- a/src/java.base/unix/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/unix/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2018, 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
@@ -273,6 +273,7 @@
 
         // invoke handler and set result
         CompletionHandler<Void,Object> handler = connectHandler;
+        connectHandler = null;
         Object att = connectAttachment;
         PendingFuture<Void,Object> future = connectFuture;
         if (handler == null) {
@@ -405,6 +406,7 @@
             this.readBuffer = null;
             this.readBuffers = null;
             this.readAttachment = null;
+            this.readHandler = null;
 
             // allow another read to be initiated
             enableReading();
@@ -600,6 +602,7 @@
             this.writeBuffer = null;
             this.writeBuffers = null;
             this.writeAttachment = null;
+            this.writeHandler = null;
 
             // allow another write to be initiated
             enableWriting();
--- a/src/java.base/unix/native/libjava/java_props_md.c	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/unix/native/libjava/java_props_md.c	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2018, 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
@@ -297,7 +297,23 @@
         if (strcmp(p, "EUC-JP") == 0) {
             *std_encoding = "EUC-JP-LINUX";
         }
-#else
+#endif
+
+#ifdef _AIX
+        if (strcmp(p, "big5") == 0) {
+            /* On AIX Traditional Chinese Big5 codeset is mapped to IBM-950 */
+            *std_encoding = "IBM-950";
+        } else if (strcmp(p, "IBM-943") == 0) {
+            /*
+             * On AIX, IBM-943 is mapped to IBM-943C in which symbol 'yen' and
+             * 'overline' are replaced with 'backslash' and 'tilde' from ASCII
+             * making first 96 code points same as ASCII.
+             */
+            *std_encoding = "IBM-943C";
+        }
+#endif
+
+#ifdef __solaris__
         if (strcmp(p,"eucJP") == 0) {
             /* For Solaris use customized vendor defined character
              * customized EUC-JP converter
--- a/src/java.base/windows/classes/sun/nio/fs/WindowsSecurity.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/windows/classes/sun/nio/fs/WindowsSecurity.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2018, 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
@@ -102,9 +102,8 @@
         final boolean stopImpersontating = impersontating;
         final boolean needToRevert = elevated;
 
-        return new Privilege() {
-            @Override
-            public void drop() {
+        return () -> {
+            try {
                 if (token != 0L) {
                     try {
                         if (stopImpersontating)
@@ -118,6 +117,8 @@
                         CloseHandle(token);
                     }
                 }
+            } finally {
+                LocalFree(pLuid);
             }
         };
     }
--- a/src/java.base/windows/native/libjava/io_util_md.c	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/windows/native/libjava/io_util_md.c	Thu Jul 12 11:09:23 2018 -0700
@@ -458,19 +458,20 @@
     return 0;
 }
 
-
-int
+jint
 handleSetLength(FD fd, jlong length) {
     HANDLE h = (HANDLE)fd;
-    long high = (long)(length >> 32);
-    DWORD ret;
+    FILE_END_OF_FILE_INFO eofInfo;
 
-    if (h == (HANDLE)(-1)) return -1;
-    ret = SetFilePointer(h, (long)(length), &high, FILE_BEGIN);
-    if (ret == 0xFFFFFFFF && GetLastError() != NO_ERROR) {
+    eofInfo.EndOfFile.QuadPart = length;
+
+    if (h == INVALID_HANDLE_VALUE) {
         return -1;
     }
-    if (SetEndOfFile(h) == FALSE) return -1;
+    if (!SetFileInformationByHandle(h, FileEndOfFileInfo, &eofInfo,
+            sizeof(FILE_END_OF_FILE_INFO))) {
+        return -1;
+    }
     return 0;
 }
 
--- a/src/java.base/windows/native/libjava/io_util_md.h	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/windows/native/libjava/io_util_md.h	Thu Jul 12 11:09:23 2018 -0700
@@ -43,7 +43,7 @@
 int currentDirLength(const WCHAR* path, int pathlen);
 int handleAvailable(FD fd, jlong *pbytes);
 int handleSync(FD fd);
-int handleSetLength(FD fd, jlong length);
+jint handleSetLength(FD fd, jlong length);
 jlong handleGetLength(FD fd);
 JNIEXPORT jint handleRead(FD fd, void *buf, jint len);
 jint handleWrite(FD fd, const void *buf, jint len);
--- a/src/java.base/windows/native/libnio/fs/WindowsNativeDispatcher.c	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.base/windows/native/libnio/fs/WindowsNativeDispatcher.c	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2018, 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
@@ -1043,8 +1043,11 @@
     if (pLuid == NULL) {
         JNU_ThrowInternalError(env, "Unable to allocate LUID structure");
     } else {
-        if (LookupPrivilegeValueW(NULL, lpName, pLuid) == 0)
+        if (LookupPrivilegeValueW(NULL, lpName, pLuid) == 0) {
+            LocalFree(pLuid);
             throwWindowsException(env, GetLastError());
+            return (jlong)0;
+        }
     }
     return ptr_to_jlong(pLuid);
 }
--- a/src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor7.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor7.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, 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
@@ -64,9 +64,12 @@
 
     /**
      * Constructor for concrete subclasses to call.
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected AbstractAnnotationValueVisitor7() {
-        super();
+        super(); // Superclass constructor deprecated too
     }
 }
--- a/src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor8.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor8.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, 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
@@ -65,6 +65,7 @@
     /**
      * Constructor for concrete subclasses to call.
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected AbstractAnnotationValueVisitor8() {
         super();
     }
--- a/src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor7.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor7.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, Oacle 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
@@ -67,9 +67,12 @@
 public abstract class AbstractElementVisitor7<R, P> extends AbstractElementVisitor6<R, P> {
     /**
      * Constructor for concrete subclasses to call.
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected AbstractElementVisitor7(){
-        super();
+        super(); // Superclass constructor deprecated too
     }
 }
--- a/src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor8.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor8.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, 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
@@ -68,6 +68,7 @@
     /**
      * Constructor for concrete subclasses to call.
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected AbstractElementVisitor8(){
         super();
     }
--- a/src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor7.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor7.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, 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
@@ -67,10 +67,13 @@
 public abstract class AbstractTypeVisitor7<R, P> extends AbstractTypeVisitor6<R, P> {
     /**
      * Constructor for concrete subclasses to call.
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected AbstractTypeVisitor7() {
-        super();
+        super();  // Superclass constructor deprecated too
     }
 
     /**
--- a/src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor8.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor8.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, 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
@@ -68,6 +68,7 @@
     /**
      * Constructor for concrete subclasses to call.
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected AbstractTypeVisitor8() {
         super();
     }
--- a/src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor7.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor7.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, 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
@@ -81,10 +81,13 @@
     /**
      * Constructor for concrete subclasses; uses {@code null} for the
      * default value.
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected ElementKindVisitor7() {
-        super(null);
+        super(null); // Superclass constructor deprecated too
     }
 
     /**
@@ -92,10 +95,13 @@
      * default value.
      *
      * @param defaultValue the value to assign to {@link #DEFAULT_VALUE}
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected ElementKindVisitor7(R defaultValue) {
-        super(defaultValue);
+        super(defaultValue); // Superclass constructor deprecated too
     }
 
     /**
--- a/src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor8.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor8.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, 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
@@ -82,6 +82,7 @@
      * Constructor for concrete subclasses; uses {@code null} for the
      * default value.
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected ElementKindVisitor8() {
         super(null);
     }
@@ -92,6 +93,7 @@
      *
      * @param defaultValue the value to assign to {@link #DEFAULT_VALUE}
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected ElementKindVisitor8(R defaultValue) {
         super(defaultValue);
     }
--- a/src/java.compiler/share/classes/javax/lang/model/util/ElementScanner7.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/ElementScanner7.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, 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
@@ -94,10 +94,13 @@
     /**
      * Constructor for concrete subclasses; uses {@code null} for the
      * default value.
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected ElementScanner7(){
-        super(null);
+        super(null); // Superclass constructor deprecated too
     }
 
     /**
@@ -105,10 +108,13 @@
      * default value.
      *
      * @param defaultValue the default value
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected ElementScanner7(R defaultValue){
-        super(defaultValue);
+        super(defaultValue); // Superclass constructor deprecated too
     }
 
     /**
--- a/src/java.compiler/share/classes/javax/lang/model/util/ElementScanner8.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/ElementScanner8.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, 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
@@ -95,6 +95,7 @@
      * Constructor for concrete subclasses; uses {@code null} for the
      * default value.
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected ElementScanner8(){
         super(null);
     }
@@ -105,6 +106,7 @@
      *
      * @param defaultValue the default value
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected ElementScanner8(R defaultValue){
         super(defaultValue);
     }
--- a/src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor7.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor7.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, 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
@@ -71,10 +71,13 @@
     /**
      * Constructor for concrete subclasses; uses {@code null} for the
      * default value.
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected SimpleAnnotationValueVisitor7() {
-        super(null);
+        super(null); // Superclass constructor deprecated too
     }
 
     /**
@@ -82,9 +85,12 @@
      * default value.
      *
      * @param defaultValue the value to assign to {@link #DEFAULT_VALUE}
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected SimpleAnnotationValueVisitor7(R defaultValue) {
-        super(defaultValue);
+        super(defaultValue); // Superclass constructor deprecated too
     }
 }
--- a/src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor8.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor8.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, 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
@@ -72,6 +72,7 @@
      * Constructor for concrete subclasses; uses {@code null} for the
      * default value.
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected SimpleAnnotationValueVisitor8() {
         super(null);
     }
@@ -82,6 +83,7 @@
      *
      * @param defaultValue the value to assign to {@link #DEFAULT_VALUE}
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected SimpleAnnotationValueVisitor8(R defaultValue) {
         super(defaultValue);
     }
--- a/src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor7.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor7.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, 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
@@ -77,10 +77,13 @@
     /**
      * Constructor for concrete subclasses; uses {@code null} for the
      * default value.
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected SimpleElementVisitor7(){
-        super(null);
+        super(null); // Superclass constructor deprecated too
     }
 
     /**
@@ -88,10 +91,13 @@
      * default value.
      *
      * @param defaultValue the value to assign to {@link #DEFAULT_VALUE}
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected SimpleElementVisitor7(R defaultValue){
-        super(defaultValue);
+        super(defaultValue); // Superclass constructor deprecated too
     }
 
     /**
--- a/src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor8.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor8.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, 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
@@ -77,6 +77,7 @@
      * Constructor for concrete subclasses; uses {@code null} for the
      * default value.
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected SimpleElementVisitor8(){
         super(null);
     }
@@ -87,6 +88,7 @@
      *
      * @param defaultValue the value to assign to {@link #DEFAULT_VALUE}
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected SimpleElementVisitor8(R defaultValue){
         super(defaultValue);
     }
--- a/src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor7.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor7.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, 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
@@ -77,10 +77,13 @@
     /**
      * Constructor for concrete subclasses; uses {@code null} for the
      * default value.
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected SimpleTypeVisitor7(){
-        super(null);
+        super(null); // Superclass constructor deprecated too
     }
 
     /**
@@ -88,10 +91,13 @@
      * default value.
      *
      * @param defaultValue the value to assign to {@link #DEFAULT_VALUE}
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected SimpleTypeVisitor7(R defaultValue){
-        super(defaultValue);
+        super(defaultValue); // Superclass constructor deprecated too
     }
 
     /**
--- a/src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor8.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor8.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, 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
@@ -78,6 +78,7 @@
      * Constructor for concrete subclasses; uses {@code null} for the
      * default value.
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected SimpleTypeVisitor8(){
         super(null);
     }
@@ -88,6 +89,7 @@
      *
      * @param defaultValue the value to assign to {@link #DEFAULT_VALUE}
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected SimpleTypeVisitor8(R defaultValue){
         super(defaultValue);
     }
--- a/src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor7.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor7.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, 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
@@ -78,10 +78,13 @@
     /**
      * Constructor for concrete subclasses to call; uses {@code null}
      * for the default value.
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected TypeKindVisitor7() {
-        super(null);
+        super(null); // Superclass constructor deprecated too
     }
 
     /**
@@ -89,10 +92,13 @@
      * for the default value.
      *
      * @param defaultValue the value to assign to {@link #DEFAULT_VALUE}
+     *
+     * @deprecated Release 7 is obsolete; update to a visitor for a newer
+     * release level.
      */
-    @SuppressWarnings("deprecation") // Superclass constructor deprecated
+    @Deprecated
     protected TypeKindVisitor7(R defaultValue) {
-        super(defaultValue);
+        super(defaultValue); // Superclass constructor deprecated too
     }
 
     /**
--- a/src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor8.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor8.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, 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
@@ -79,6 +79,7 @@
      * Constructor for concrete subclasses to call; uses {@code null}
      * for the default value.
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected TypeKindVisitor8() {
         super(null);
     }
@@ -89,6 +90,7 @@
      *
      * @param defaultValue the value to assign to {@link #DEFAULT_VALUE}
      */
+    @SuppressWarnings("deprecation") // Superclass constructor deprecated
     protected TypeKindVisitor8(R defaultValue) {
         super(defaultValue);
     }
--- a/src/java.desktop/macosx/classes/com/apple/laf/AquaTabbedPaneCopyFromBasicUI.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/macosx/classes/com/apple/laf/AquaTabbedPaneCopyFromBasicUI.java	Thu Jul 12 11:09:23 2018 -0700
@@ -3320,7 +3320,7 @@
             } else if (name == "indexForNullComponent") {
                 isRunsDirty = true;
                 updateHtmlViews((Integer) e.getNewValue(), true);
-            } else if (name == "font") {
+            } else if (name == "font" || SwingUtilities2.isScaleChanged(e)) {
                 calculatedBaseline = false;
             }
         }
--- a/src/java.desktop/share/classes/com/sun/awt/SecurityWarning.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/com/sun/awt/SecurityWarning.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2018, 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
@@ -45,7 +45,10 @@
  * for limited use outside of the core platform. This API may change
  * drastically between update release, and it may even be
  * removed or be moved to some other packages or classes.
+ *
+ * @deprecated This class is deprecated, no replacement.
  */
+@Deprecated(since = "11", forRemoval = true)
 public final class SecurityWarning {
 
     /**
--- a/src/java.desktop/share/classes/com/sun/media/sound/EventDispatcher.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/com/sun/media/sound/EventDispatcher.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2018, 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
@@ -308,7 +308,12 @@
      * called from auto-closing clips when their closed() method is called.
      */
     void autoClosingClipClosed(AutoClosingClip clip) {
-        // nothing to do -- is removed from arraylist above
+        synchronized(autoClosingClips) {
+            int index = getAutoClosingClipIndex(clip);
+            if (index != -1) {
+                autoClosingClips.remove(index);
+            }
+        }
     }
 
 
--- a/src/java.desktop/share/classes/com/sun/media/sound/JavaSoundAudioClip.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/com/sun/media/sound/JavaSoundAudioClip.java	Thu Jul 12 11:09:23 2018 -0700
@@ -173,29 +173,31 @@
         if (DEBUG || Printer.debug) Printer.debug("JavaSoundAudioClip.startImpl(loop="+loop+")");
         try {
             if (clip != null) {
-                if (!clip.isOpen()) {
-                    if (DEBUG || Printer.trace)Printer.trace("JavaSoundAudioClip: clip.open()");
-                    clip.open(loadedAudioFormat, loadedAudio, 0, loadedAudioByteLength);
-                } else {
-                    if (DEBUG || Printer.trace)Printer.trace("JavaSoundAudioClip: clip.flush()");
-                    clip.flush();
-                    if (loop != clipLooping) {
-                        // need to stop in case the looped status changed
-                        if (DEBUG || Printer.trace)Printer.trace("JavaSoundAudioClip: clip.stop()");
-                        clip.stop();
+                // We need to disable autoclosing mechanism otherwise the clip
+                // can be closed after "!clip.isOpen()" check, because of
+                // previous inactivity.
+                clip.setAutoClosing(false);
+                try {
+                    if (!clip.isOpen()) {
+                        clip.open(loadedAudioFormat, loadedAudio, 0,
+                                  loadedAudioByteLength);
+                    } else {
+                        clip.flush();
+                        if (loop != clipLooping) {
+                            // need to stop in case the looped status changed
+                            clip.stop();
+                        }
                     }
+                    clip.setFramePosition(0);
+                    if (loop) {
+                        clip.loop(Clip.LOOP_CONTINUOUSLY);
+                    } else {
+                        clip.start();
+                    }
+                    clipLooping = loop;
+                } finally {
+                    clip.setAutoClosing(true);
                 }
-                clip.setFramePosition(0);
-                if (loop) {
-                    if (DEBUG || Printer.trace)Printer.trace("JavaSoundAudioClip: clip.loop()");
-                    clip.loop(Clip.LOOP_CONTINUOUSLY);
-                } else {
-                    if (DEBUG || Printer.trace)Printer.trace("JavaSoundAudioClip: clip.start()");
-                    clip.start();
-                }
-                clipLooping = loop;
-                if (DEBUG || Printer.debug)Printer.debug("Clip should be playing/looping");
-
             } else if (datapusher != null ) {
                 datapusher.start(loop);
                 if (DEBUG || Printer.debug)Printer.debug("Stream should be playing/looping");
--- a/src/java.desktop/share/classes/java/awt/Component.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/java/awt/Component.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2018, 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
@@ -22,67 +22,98 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
+
 package java.awt;
 
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.util.Objects;
-import java.util.Vector;
-import java.util.Locale;
-import java.util.EventListener;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.Collections;
+import java.applet.Applet;
+import java.awt.dnd.DropTarget;
+import java.awt.event.ActionEvent;
+import java.awt.event.AdjustmentEvent;
+import java.awt.event.ComponentEvent;
+import java.awt.event.ComponentListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.HierarchyBoundsListener;
+import java.awt.event.HierarchyEvent;
+import java.awt.event.HierarchyListener;
+import java.awt.event.InputEvent;
+import java.awt.event.InputMethodEvent;
+import java.awt.event.InputMethodListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.awt.event.MouseWheelEvent;
+import java.awt.event.MouseWheelListener;
+import java.awt.event.PaintEvent;
+import java.awt.event.TextEvent;
+import java.awt.im.InputContext;
+import java.awt.im.InputMethodRequests;
+import java.awt.image.BufferStrategy;
+import java.awt.image.ColorModel;
+import java.awt.image.ImageObserver;
+import java.awt.image.ImageProducer;
+import java.awt.image.VolatileImage;
 import java.awt.peer.ComponentPeer;
 import java.awt.peer.ContainerPeer;
 import java.awt.peer.LightweightPeer;
-import java.awt.image.BufferStrategy;
-import java.awt.image.ImageObserver;
-import java.awt.image.ImageProducer;
-import java.awt.image.ColorModel;
-import java.awt.image.VolatileImage;
-import java.awt.event.*;
-import java.io.Serializable;
-import java.io.ObjectOutputStream;
-import java.io.ObjectInputStream;
-import java.io.IOException;
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
 import java.beans.Transient;
-import java.awt.im.InputContext;
-import java.awt.im.InputMethodRequests;
-import java.awt.dnd.DropTarget;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.io.Serializable;
+import java.security.AccessControlContext;
 import java.security.AccessController;
-import java.security.AccessControlContext;
-import javax.accessibility.*;
-import java.applet.Applet;
+import java.util.Collections;
+import java.util.EventListener;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.Vector;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleComponent;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleSelection;
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
 import javax.swing.JComponent;
 import javax.swing.JRootPane;
 
-import sun.awt.ComponentFactory;
-import sun.security.action.GetPropertyAction;
+import sun.awt.AWTAccessor;
 import sun.awt.AppContext;
-import sun.awt.AWTAccessor;
+import sun.awt.ComponentFactory;
 import sun.awt.ConstrainableGraphics;
+import sun.awt.EmbeddedFrame;
+import sun.awt.RequestFocusController;
 import sun.awt.SubRegionShowable;
 import sun.awt.SunToolkit;
-import sun.awt.EmbeddedFrame;
 import sun.awt.dnd.SunDropTargetEvent;
 import sun.awt.im.CompositionArea;
+import sun.awt.image.VSyncedBSManager;
 import sun.font.FontManager;
 import sun.font.FontManagerFactory;
 import sun.font.SunFontManager;
 import sun.java2d.SunGraphics2D;
+import sun.java2d.SunGraphicsEnvironment;
 import sun.java2d.pipe.Region;
-import sun.awt.image.VSyncedBSManager;
 import sun.java2d.pipe.hw.ExtendedBufferCapabilities;
-import static sun.java2d.pipe.hw.ExtendedBufferCapabilities.VSyncType.*;
-import sun.awt.RequestFocusController;
-import sun.java2d.SunGraphicsEnvironment;
+import sun.security.action.GetPropertyAction;
 import sun.swing.SwingAccessor;
 import sun.util.logging.PlatformLogger;
 
+import static sun.java2d.pipe.hw.ExtendedBufferCapabilities.VSyncType.VSYNC_DEFAULT;
+import static sun.java2d.pipe.hw.ExtendedBufferCapabilities.VSyncType.VSYNC_ON;
+
 /**
  * A <em>component</em> is an object having a graphical representation
  * that can be displayed on the screen and that can interact with the
@@ -1129,24 +1160,31 @@
         }
     }
 
-    boolean updateGraphicsData(GraphicsConfiguration gc) {
+    final boolean updateGraphicsData(GraphicsConfiguration gc) {
+        GraphicsConfiguration oldConfig = graphicsConfig;
+        // First, update own graphics configuration
+        boolean ret = updateSelfGraphicsData(gc);
+        // Second, update children graphics configurations
+        ret |= updateChildGraphicsData(gc);
+        // Third, fire PropertyChange if needed
+        if (oldConfig != gc) {
+            /*
+             * If component is moved from one screen to another screen or shown
+             * for the first time graphicsConfiguration property is fired to
+             * enable the component to recalculate any rendering data, if needed
+             */
+            firePropertyChange("graphicsConfiguration", oldConfig, gc);
+        }
+        return ret;
+    }
+
+    private boolean updateSelfGraphicsData(GraphicsConfiguration gc) {
         checkTreeLock();
-
         if (graphicsConfig == gc) {
             return false;
         }
-        GraphicsConfiguration oldConfig = graphicsConfig;
         graphicsConfig = gc;
 
-        /*
-         * If component is moved from one screen to another sceeen
-         * graphicsConfiguration property is fired to enable the component
-         * to recalculate any rendering data, if needed
-         */
-        if (oldConfig != null && gc != null) {
-            firePropertyChange("graphicsConfiguration", oldConfig, gc);
-        }
-
         ComponentPeer peer = this.peer;
         if (peer != null) {
             return peer.updateGraphicsData(gc);
@@ -1154,6 +1192,10 @@
         return false;
     }
 
+    boolean updateChildGraphicsData(GraphicsConfiguration gc) {
+        return false;
+    }
+
     /**
      * Checks that this component's {@code GraphicsDevice}
      * {@code idString} matches the string argument.
@@ -5945,7 +5987,8 @@
      * {@code InputMethodRequests} instance.
      * If listener {@code l} is {@code null},
      * no exception is thrown and no action is performed.
-     * <p>Refer to <a href="{@docRoot}/java/awt/doc-files/AWTThreadIssues.html#ListenersThreads"
+     * <p>Refer to
+     * <a href="{@docRoot}/java.desktop/java/awt/doc-files/AWTThreadIssues.html#ListenersThreads"
      * >AWT Threading Issues</a> for details on AWT's threading model.
      *
      * @param    l   the input method listener
--- a/src/java.desktop/share/classes/java/awt/Container.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/java/awt/Container.java	Thu Jul 12 11:09:23 2018 -0700
@@ -22,6 +22,7 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
+
 package java.awt;
 
 import java.awt.dnd.DropTarget;
@@ -1172,10 +1173,10 @@
     }
 
     @Override
-    boolean updateGraphicsData(GraphicsConfiguration gc) {
+    final boolean updateChildGraphicsData(GraphicsConfiguration gc) {
         checkTreeLock();
 
-        boolean ret = super.updateGraphicsData(gc);
+        boolean ret = false;
 
         for (Component comp : component) {
             if (comp != null) {
--- a/src/java.desktop/share/classes/java/awt/Shape.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/java/awt/Shape.java	Thu Jul 12 11:09:23 2018 -0700
@@ -90,7 +90,8 @@
      * representation.
      *
      * <p>
-     * Note that the <a href="{@docRoot}/java/awt/Shape.html#def_insideness">
+     * Note that the
+     * <a href="{@docRoot}/java.desktop/java/awt/Shape.html#def_insideness">
      * definition of insideness</a> can lead to situations where points
      * on the defining outline of the {@code shape} may not be considered
      * contained in the returned {@code bounds} object, but only in cases
@@ -135,7 +136,8 @@
      * store the dimensions.
      *
      * <p>
-     * Note that the <a href="{@docRoot}/java/awt/Shape.html#def_insideness">
+     * Note that the
+     * <a href="{@docRoot}/java.desktop/java/awt/Shape.html#def_insideness">
      * definition of insideness</a> can lead to situations where points
      * on the defining outline of the {@code shape} may not be considered
      * contained in the returned {@code bounds} object, but only in cases
@@ -169,7 +171,7 @@
     /**
      * Tests if the specified coordinates are inside the boundary of the
      * {@code Shape}, as described by the
-     * <a href="{@docRoot}/java/awt/Shape.html#def_insideness">
+     * <a href="{@docRoot}/java.desktop/java/awt/Shape.html#def_insideness">
      * definition of insideness</a>.
      * @param x the specified X coordinate to be tested
      * @param y the specified Y coordinate to be tested
@@ -183,7 +185,7 @@
     /**
      * Tests if a specified {@link Point2D} is inside the boundary
      * of the {@code Shape}, as described by the
-     * <a href="{@docRoot}/java/awt/Shape.html#def_insideness">
+     * <a href="{@docRoot}/java.desktop/java/awt/Shape.html#def_insideness">
      * definition of insideness</a>.
      * @param p the specified {@code Point2D} to be tested
      * @return {@code true} if the specified {@code Point2D} is
--- a/src/java.desktop/share/classes/javax/imageio/metadata/IIOMetadataNode.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/imageio/metadata/IIOMetadataNode.java	Thu Jul 12 11:09:23 2018 -0700
@@ -198,9 +198,7 @@
 
 /**
  * A class representing a node in a meta-data tree, which implements
- * the <a
- * href="../../../../api/org/w3c/dom/Element.html">
- * {@code org.w3c.dom.Element}</a> interface and additionally allows
+ * the {@link Element org.w3c.dom.Element} interface and additionally allows
  * for the storage of non-textual objects via the
  * {@code getUserObject} and {@code setUserObject} methods.
  *
--- a/src/java.desktop/share/classes/javax/swing/DefaultListCellRenderer.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/DefaultListCellRenderer.java	Thu Jul 12 11:09:23 2018 -0700
@@ -35,7 +35,7 @@
 
 import java.io.Serializable;
 import sun.swing.DefaultLookup;
-
+import sun.swing.SwingUtilities2;
 
 /**
  * Renders an item in a list.
@@ -259,9 +259,10 @@
     protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
         // Strings get interned...
         if (propertyName == "text"
-                || ((propertyName == "font" || propertyName == "foreground")
-                    && oldValue != newValue
-                    && getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey) != null)) {
+            || ((SwingUtilities2.isScaleChanged(propertyName, oldValue, newValue)
+                    || propertyName == "font" || propertyName == "foreground")
+                && oldValue != newValue
+                && getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey) != null)) {
 
             super.firePropertyChange(propertyName, oldValue, newValue);
         }
--- a/src/java.desktop/share/classes/javax/swing/JButton.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/JButton.java	Thu Jul 12 11:09:23 2018 -0700
@@ -151,7 +151,7 @@
      * @see UIDefaults#getUI
      */
     @BeanProperty(bound = false, expert = true, description
-            = "A string that specifies the name of the L&amp;F class.")
+            = "A string that specifies the name of the L&F class.")
     public String getUIClassID() {
         return uiClassID;
     }
--- a/src/java.desktop/share/classes/javax/swing/JCheckBox.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/JCheckBox.java	Thu Jul 12 11:09:23 2018 -0700
@@ -235,7 +235,7 @@
      * @see UIDefaults#getUI
      */
     @BeanProperty(bound = false, expert = true, description
-            = "A string that specifies the name of the L&amp;F class")
+            = "A string that specifies the name of the L&F class")
     public String getUIClassID() {
         return uiClassID;
     }
--- a/src/java.desktop/share/classes/javax/swing/JFileChooser.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/JFileChooser.java	Thu Jul 12 11:09:23 2018 -0700
@@ -861,7 +861,7 @@
      * @since 1.3
      */
     @BeanProperty(preferred = true, description
-            = "Sets whether the approve &amp; cancel buttons are shown.")
+            = "Sets whether the approve & cancel buttons are shown.")
     public void setControlButtonsAreShown(boolean b) {
         if(controlsShown == b) {
             return;
@@ -1838,7 +1838,7 @@
      * @see UIDefaults#getUI
      */
     @BeanProperty(bound = false, expert = true, description
-            = "A string that specifies the name of the L&amp;F class.")
+            = "A string that specifies the name of the L&F class.")
     public String getUIClassID() {
         return uiClassID;
     }
--- a/src/java.desktop/share/classes/javax/swing/JPanel.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/JPanel.java	Thu Jul 12 11:09:23 2018 -0700
@@ -127,7 +127,7 @@
     }
 
     /**
-     * Returns the look and feel (L&amp;amp;F) object that renders this component.
+     * Returns the look and feel (L&amp;F) object that renders this component.
      *
      * @return the PanelUI object that renders this component
      * @since 1.4
@@ -159,7 +159,7 @@
      * @see UIDefaults#getUI
      */
     @BeanProperty(bound = false, expert = true, description
-            = "A string that specifies the name of the L&amp;F class.")
+            = "A string that specifies the name of the L&F class.")
     public String getUIClassID() {
         return uiClassID;
     }
--- a/src/java.desktop/share/classes/javax/swing/JRadioButton.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/JRadioButton.java	Thu Jul 12 11:09:23 2018 -0700
@@ -201,7 +201,7 @@
      * @see UIDefaults#getUI
      */
     @BeanProperty(bound = false, expert = true, description
-            = "A string that specifies the name of the L&amp;F class.")
+            = "A string that specifies the name of the L&F class.")
     public String getUIClassID() {
         return uiClassID;
     }
--- a/src/java.desktop/share/classes/javax/swing/JSplitPane.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/JSplitPane.java	Thu Jul 12 11:09:23 2018 -0700
@@ -377,7 +377,7 @@
      * @return the <code>SplitPaneUI</code> object that renders this component
      */
     @BeanProperty(bound = false, expert = true, description
-            = "The L&amp;F object that renders this component.")
+            = "The L&F object that renders this component.")
     public SplitPaneUI getUI() {
         return (SplitPaneUI)ui;
     }
@@ -404,7 +404,7 @@
      * @see UIDefaults#getUI
      */
     @BeanProperty(bound = false, expert = true, description
-            = "A string that specifies the name of the L&amp;F class.")
+            = "A string that specifies the name of the L&F class.")
     public String getUIClassID() {
         return uiClassID;
     }
@@ -824,7 +824,7 @@
      *          <code>null</code>
      */
     @BeanProperty(bound = false, description
-            = "The minimum location of the divider from the L&amp;F.")
+            = "The minimum location of the divider from the L&F.")
     public int getMinimumDividerLocation() {
         SplitPaneUI         ui = getUI();
 
--- a/src/java.desktop/share/classes/javax/swing/JToggleButton.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/JToggleButton.java	Thu Jul 12 11:09:23 2018 -0700
@@ -195,7 +195,7 @@
      * @see UIDefaults#getUI
      */
     @BeanProperty(bound = false, description
-            = "A string that specifies the name of the L&amp;F class")
+            = "A string that specifies the name of the L&F class")
     public String getUIClassID() {
         return uiClassID;
     }
--- a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicButtonListener.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicButtonListener.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, 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
@@ -75,9 +75,8 @@
         else if(prop == AbstractButton.CONTENT_AREA_FILLED_CHANGED_PROPERTY) {
             checkOpacity((AbstractButton) e.getSource() );
         }
-        else if(prop == AbstractButton.TEXT_CHANGED_PROPERTY ||
-                "font" == prop || "foreground" == prop ||
-                "ancestor" == prop || "graphicsConfiguration" == prop) {
+        else if(prop == AbstractButton.TEXT_CHANGED_PROPERTY || "font" == prop
+                || "foreground" == prop || SwingUtilities2.isScaleChanged(e)) {
             AbstractButton b = (AbstractButton) e.getSource();
             BasicHTML.updateRenderer(b, b.getText());
         }
--- a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, 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
@@ -36,6 +36,7 @@
 import java.beans.PropertyChangeEvent;
 import sun.awt.AppContext;
 import sun.swing.DefaultLookup;
+import sun.swing.SwingUtilities2;
 import sun.swing.UIAction;
 
 /**
@@ -1809,6 +1810,10 @@
                     isMinimumSizeDirty = true;
                     isDisplaySizeDirty = true;
                     comboBox.validate();
+                } else if (SwingUtilities2.isScaleChanged(e)) {
+                    isMinimumSizeDirty = true;
+                    isDisplaySizeDirty = true;
+                    comboBox.validate();
                 }
                 else if ( propertyName == JComponent.TOOL_TIP_TEXT_KEY ) {
                     updateToolTipTextForChildren();
--- a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicLabelUI.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicLabelUI.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, 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
@@ -477,8 +477,8 @@
 
     public void propertyChange(PropertyChangeEvent e) {
         String name = e.getPropertyName();
-        if (name == "text" || "font" == name || "foreground" == name ||
-            "ancestor" == name || "graphicsConfiguration" == name) {
+        if (name == "text" || "font" == name || "foreground" == name
+                || SwingUtilities2.isScaleChanged(e)) {
             // remove the old html view client property if one
             // existed, and install a new one if the text installed
             // into the JLabel is html source.
--- a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicListUI.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicListUI.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, 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
@@ -2656,7 +2656,8 @@
                 updateLayoutStateNeeded |= cellRendererChanged;
                 redrawList();
             }
-            else if (propertyName == "font") {
+            else if (propertyName == "font"
+                    || SwingUtilities2.isScaleChanged(e)) {
                 updateLayoutStateNeeded |= fontChanged;
                 redrawList();
             }
--- a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, 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
@@ -1145,9 +1145,8 @@
             if (name == "labelFor" || name == "displayedMnemonic" ||
                 name == "accelerator") {
                 updateAcceleratorBinding();
-            } else if (name == "text" || "font" == name ||
-                       "foreground" == name ||
-                       "ancestor" == name || "graphicsConfiguration" == name) {
+            } else if (name == "text" || "font" == name || "foreground" == name
+                    || SwingUtilities2.isScaleChanged(e)) {
                 // remove the old html view client property if one
                 // existed, and install a new one if the text installed
                 // into the JLabel is html source.
--- a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSliderUI.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSliderUI.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, 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
@@ -35,6 +35,7 @@
 import javax.swing.event.*;
 import javax.swing.plaf.*;
 import sun.swing.DefaultLookup;
+import sun.swing.SwingUtilities2;
 import sun.swing.UIAction;
 
 
@@ -1829,6 +1830,7 @@
                     propertyName == "paintTicks" ||
                     propertyName == "paintTrack" ||
                     propertyName == "font" ||
+                    SwingUtilities2.isScaleChanged(e) ||
                     propertyName == "paintLabels" ||
                     propertyName == "Slider.paintThumbArrowShape") {
                 checkedLabelBaselines = false;
--- a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, 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
@@ -4008,7 +4008,7 @@
             } else if (name == "indexForNullComponent") {
                 isRunsDirty = true;
                 updateHtmlViews((Integer)e.getNewValue(), true);
-            } else if (name == "font") {
+            } else if (name == "font" || SwingUtilities2.isScaleChanged(e)) {
                 calculatedBaseline = false;
             }
         }
--- a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicToolTipUI.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicToolTipUI.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, 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
@@ -260,9 +260,8 @@
                                  PropertyChangeListener {
         public void propertyChange(PropertyChangeEvent e) {
             String name = e.getPropertyName();
-            if (name.equals("tiptext") || "font".equals(name) ||
-                "foreground".equals(name) ||
-                "ancestor" == name || "graphicsConfiguration" == name) {
+            if (name.equals("tiptext") || "foreground".equals(name)
+                || "font".equals(name) || SwingUtilities2.isScaleChanged(e)) {
                 // remove the old html view client property if one
                 // existed, and install a new one if the text installed
                 // into the JLabel is html source.
--- a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTreeUI.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTreeUI.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, 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
@@ -3843,7 +3843,8 @@
                 else if(changeName == JTree.SELECTION_MODEL_PROPERTY) {
                     setSelectionModel(tree.getSelectionModel());
                 }
-                else if(changeName == "font") {
+                else if(changeName == "font"
+                        || SwingUtilities2.isScaleChanged(event)) {
                     completeEditing();
                     if(treeState != null)
                         treeState.invalidateSizes();
--- a/src/java.desktop/share/classes/javax/swing/plaf/synth/SynthToolTipUI.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/plaf/synth/SynthToolTipUI.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2018, 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
@@ -35,6 +35,7 @@
 import javax.swing.plaf.ComponentUI;
 import javax.swing.text.View;
 
+import sun.swing.SwingUtilities2;
 
 /**
  * Provides the Synth L&amp;F UI delegate for
@@ -226,9 +227,8 @@
             updateStyle((JToolTip)e.getSource());
         }
         String name = e.getPropertyName();
-        if (name.equals("tiptext") || "font".equals(name) ||
-                "foreground".equals(name) ||
-                "ancestor" == name || "graphicsConfiguration" == name) {
+        if (name.equals("tiptext") || SwingUtilities2.isScaleChanged(e)
+                || "foreground".equals(name) || "font".equals(name)) {
             // remove the old html view client property if one
             // existed, and install a new one if the text installed
             // into the JLabel is html source.
--- a/src/java.desktop/share/classes/javax/swing/table/DefaultTableCellRenderer.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/table/DefaultTableCellRenderer.java	Thu Jul 12 11:09:23 2018 -0700
@@ -34,7 +34,7 @@
 
 import java.io.Serializable;
 import sun.swing.DefaultLookup;
-
+import sun.swing.SwingUtilities2;
 
 /**
  * The standard class for rendering (displaying) individual cells
@@ -345,11 +345,12 @@
     protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
         // Strings get interned...
         if (propertyName=="text"
-                || propertyName == "labelFor"
-                || propertyName == "displayedMnemonic"
-                || ((propertyName == "font" || propertyName == "foreground")
-                    && oldValue != newValue
-                    && getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey) != null)) {
+            || propertyName == "labelFor"
+            || propertyName == "displayedMnemonic"
+            || ((SwingUtilities2.isScaleChanged(propertyName, oldValue, newValue)
+                    || propertyName == "font" || propertyName == "foreground")
+                && oldValue != newValue
+                && getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey) != null)) {
 
             super.firePropertyChange(propertyName, oldValue, newValue);
         }
--- a/src/java.desktop/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java	Thu Jul 12 11:09:23 2018 -0700
@@ -43,6 +43,7 @@
 import javax.swing.UIManager;
 import javax.swing.border.EmptyBorder;
 import sun.swing.DefaultLookup;
+import sun.swing.SwingUtilities2;
 
 /**
  * Displays an entry in a tree.
@@ -690,9 +691,10 @@
     protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
         // Strings get interned...
         if (propertyName == "text"
-                || ((propertyName == "font" || propertyName == "foreground")
-                    && oldValue != newValue
-                    && getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey) != null)) {
+            || ((SwingUtilities2.isScaleChanged(propertyName, oldValue, newValue)
+                    || propertyName == "font" || propertyName == "foreground")
+                && oldValue != newValue
+                && getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey) != null)) {
 
             super.firePropertyChange(propertyName, oldValue, newValue);
         }
--- a/src/java.desktop/share/classes/sun/swing/SwingUtilities2.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/classes/sun/swing/SwingUtilities2.java	Thu Jul 12 11:09:23 2018 -0700
@@ -25,47 +25,94 @@
 
 package sun.swing;
 
-import java.lang.reflect.*;
-import java.awt.*;
-import static java.awt.RenderingHints.*;
-import java.awt.event.*;
-import java.awt.font.*;
+import java.awt.AWTEvent;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.EventQueue;
+import java.awt.FocusTraversalPolicy;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsEnvironment;
+import java.awt.Point;
+import java.awt.PrintGraphics;
+import java.awt.Rectangle;
+import java.awt.RenderingHints;
+import java.awt.Shape;
+import java.awt.Toolkit;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.font.FontRenderContext;
+import java.awt.font.GlyphVector;
+import java.awt.font.LineBreakMeasurer;
+import java.awt.font.TextAttribute;
+import java.awt.font.TextHitInfo;
+import java.awt.font.TextLayout;
+import java.awt.geom.AffineTransform;
 import java.awt.geom.Rectangle2D;
-import java.awt.geom.AffineTransform;
+import java.awt.print.PrinterGraphics;
+import java.beans.PropertyChangeEvent;
+import java.io.BufferedInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Modifier;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.BreakIterator;
+import java.text.CharacterIterator;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Future;
+import java.util.concurrent.FutureTask;
+
+import javax.swing.JComponent;
+import javax.swing.JList;
+import javax.swing.JTable;
+import javax.swing.ListCellRenderer;
+import javax.swing.ListSelectionModel;
+import javax.swing.SwingUtilities;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+import javax.swing.event.TreeModelEvent;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumnModel;
+import javax.swing.text.DefaultCaret;
+import javax.swing.text.DefaultHighlighter;
+import javax.swing.text.Highlighter;
+import javax.swing.text.JTextComponent;
+import javax.swing.tree.TreeModel;
+import javax.swing.tree.TreePath;
+
+import sun.awt.AWTAccessor;
+import sun.awt.AWTPermissions;
+import sun.awt.AppContext;
+import sun.awt.SunToolkit;
+import sun.font.FontDesignMetrics;
+import sun.font.FontUtilities;
+import sun.java2d.SunGraphicsEnvironment;
+import sun.print.ProxyPrintGraphics;
+
+import static java.awt.RenderingHints.KEY_TEXT_ANTIALIASING;
+import static java.awt.RenderingHints.KEY_TEXT_LCD_CONTRAST;
+import static java.awt.RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT;
+import static java.awt.RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT;
+import static java.awt.RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HBGR;
+import static java.awt.RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB;
+import static java.awt.RenderingHints.VALUE_TEXT_ANTIALIAS_OFF;
 import static java.awt.geom.AffineTransform.TYPE_FLIP;
 import static java.awt.geom.AffineTransform.TYPE_MASK_SCALE;
 import static java.awt.geom.AffineTransform.TYPE_TRANSLATION;
-import java.awt.print.PrinterGraphics;
-import java.text.BreakIterator;
-import java.text.CharacterIterator;
-import java.text.AttributedCharacterIterator;
-import java.text.AttributedString;
-
-import javax.swing.*;
-import javax.swing.event.TreeModelEvent;
-import javax.swing.text.Highlighter;
-import javax.swing.text.JTextComponent;
-import javax.swing.text.DefaultHighlighter;
-import javax.swing.text.DefaultCaret;
-import javax.swing.table.TableCellRenderer;
-import javax.swing.table.TableColumnModel;
-import javax.swing.tree.TreeModel;
-import javax.swing.tree.TreePath;
-
-import sun.java2d.pipe.Region;
-import sun.print.ProxyPrintGraphics;
-import sun.awt.*;
-import java.io.*;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.*;
-import sun.font.FontDesignMetrics;
-import sun.font.FontUtilities;
-import sun.java2d.SunGraphicsEnvironment;
-
-import java.util.concurrent.Callable;
-import java.util.concurrent.Future;
-import java.util.concurrent.FutureTask;
 
 /**
  * A collection of utility methods for Swing.
@@ -2256,4 +2303,40 @@
     public interface RepaintListener {
         void repaintPerformed(JComponent c, int x, int y, int w, int h);
     }
+
+    /**
+     * Returns whether or not the scale used by {@code GraphicsConfiguration}
+     * was changed.
+     *
+     * @param  ev a {@code PropertyChangeEvent}
+     * @return whether or not the scale was changed
+     * @since 11
+     */
+    public static boolean isScaleChanged(final PropertyChangeEvent ev) {
+        return isScaleChanged(ev.getPropertyName(), ev.getOldValue(),
+                              ev.getNewValue());
+    }
+
+    /**
+     * Returns whether or not the scale used by {@code GraphicsConfiguration}
+     * was changed.
+     *
+     * @param  name the name of the property
+     * @param  oldValue the old value of the property
+     * @param  newValue the new value of the property
+     * @return whether or not the scale was changed
+     * @since 11
+     */
+    public static boolean isScaleChanged(final String name,
+                                         final Object oldValue,
+                                         final Object newValue) {
+        if (oldValue == newValue || !"graphicsConfiguration".equals(name)) {
+            return false;
+        }
+        var newGC = (GraphicsConfiguration) oldValue;
+        var oldGC = (GraphicsConfiguration) newValue;
+        var newTx = newGC != null ? newGC.getDefaultTransform() : null;
+        var oldTx = oldGC != null ? oldGC.getDefaultTransform() : null;
+        return !Objects.equals(newTx, oldTx);
+    }
 }
--- a/src/java.desktop/share/legal/harfbuzz.md	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/legal/harfbuzz.md	Thu Jul 12 11:09:23 2018 -0700
@@ -1,4 +1,4 @@
-## Harfbuzz v1.8.1
+## Harfbuzz v1.8.2
 
 ### Harfbuzz License
 
--- a/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-blob.cc	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-blob.cc	Thu Jul 12 11:09:23 2018 -0700
@@ -489,10 +489,10 @@
 
 #if defined(_WIN32) || defined(__CYGWIN__)
 # include <windows.h>
-#endif
-
-#ifndef _O_BINARY
-# define _O_BINARY 0
+#else
+# ifndef _O_BINARY
+#  define _O_BINARY 0
+# endif
 #endif
 
 #ifndef MAP_NORESERVE
@@ -517,7 +517,7 @@
   UnmapViewOfFile (file->contents);
   CloseHandle (file->mapping);
 #else
-  free (file->contents);
+  assert (0); // If we don't have mmap we shouldn't reach here
 #endif
 
   free (file);
@@ -534,77 +534,103 @@
 hb_blob_t *
 hb_blob_create_from_file (const char *file_name)
 {
-  // Adopted from glib's gmappedfile.c with Matthias Clasen and
-  // Allison Lortie permission but changed a lot to suit our need.
-  bool writable = false;
-  hb_memory_mode_t mm = HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE;
+  /* Adopted from glib's gmappedfile.c with Matthias Clasen and
+     Allison Lortie permission but changed a lot to suit our need. */
+#if defined(HAVE_MMAP) && !defined(HB_NO_MMAP)
   hb_mapped_file_t *file = (hb_mapped_file_t *) calloc (1, sizeof (hb_mapped_file_t));
   if (unlikely (!file)) return hb_blob_get_empty ();
 
-#ifdef HAVE_MMAP
-  int fd = open (file_name, (writable ? O_RDWR : O_RDONLY) | _O_BINARY, 0);
-# define CLOSE close
+  int fd = open (file_name, O_RDONLY | _O_BINARY, 0);
   if (unlikely (fd == -1)) goto fail_without_close;
 
   struct stat st;
   if (unlikely (fstat (fd, &st) == -1)) goto fail;
 
-  // See https://github.com/GNOME/glib/blob/f9faac7/glib/gmappedfile.c#L139-L142
-  if (unlikely (st.st_size == 0 && S_ISREG (st.st_mode))) goto fail;
-
   file->length = (unsigned long) st.st_size;
-  file->contents = (char *) mmap (nullptr, file->length,
-                                  writable ? PROT_READ|PROT_WRITE : PROT_READ,
+  file->contents = (char *) mmap (nullptr, file->length, PROT_READ,
                                   MAP_PRIVATE | MAP_NORESERVE, fd, 0);
 
   if (unlikely (file->contents == MAP_FAILED)) goto fail;
 
-#elif defined(_WIN32) || defined(__CYGWIN__)
-  HANDLE fd = CreateFile (file_name,
-                          writable ? GENERIC_READ|GENERIC_WRITE : GENERIC_READ,
-                          FILE_SHARE_READ, nullptr, OPEN_EXISTING,
-                          FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, nullptr);
-# define CLOSE CloseHandle
+  close (fd);
+
+  return hb_blob_create (file->contents, file->length,
+                         HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE, (void *) file,
+                         (hb_destroy_func_t) _hb_mapped_file_destroy);
+
+fail:
+  close (fd);
+fail_without_close:
+  free (file);
+
+#elif (defined(_WIN32) || defined(__CYGWIN__)) && !defined(HB_NO_MMAP)
+  hb_mapped_file_t *file = (hb_mapped_file_t *) calloc (1, sizeof (hb_mapped_file_t));
+  if (unlikely (!file)) return hb_blob_get_empty ();
+
+  HANDLE fd = CreateFile (file_name, GENERIC_READ, FILE_SHARE_READ, nullptr,
+                          OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,
+                          nullptr);
 
   if (unlikely (fd == INVALID_HANDLE_VALUE)) goto fail_without_close;
 
   file->length = (unsigned long) GetFileSize (fd, nullptr);
-  file->mapping = CreateFileMapping (fd, nullptr,
-                                     writable ? PAGE_WRITECOPY : PAGE_READONLY,
-                                     0, 0, nullptr);
+  file->mapping = CreateFileMapping (fd, nullptr, PAGE_READONLY, 0, 0, nullptr);
   if (unlikely (file->mapping == nullptr)) goto fail;
 
-  file->contents = (char *) MapViewOfFile (file->mapping,
-                                           writable ? FILE_MAP_COPY : FILE_MAP_READ,
-                                           0, 0, 0);
+  file->contents = (char *) MapViewOfFile (file->mapping, FILE_MAP_READ, 0, 0, 0);
   if (unlikely (file->contents == nullptr)) goto fail;
 
-#else
-  mm = HB_MEMORY_MODE_WRITABLE;
-
-  FILE *fd = fopen (file_name, "rb");
-# define CLOSE fclose
-  if (unlikely (!fd)) goto fail_without_close;
+  CloseHandle (fd);
+  return hb_blob_create (file->contents, file->length,
+                         HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE, (void *) file,
+                         (hb_destroy_func_t) _hb_mapped_file_destroy);
 
-  fseek (fd, 0, SEEK_END);
-  file->length = ftell (fd);
-  rewind (fd);
-  file->contents = (char *) malloc (file->length);
-  if (unlikely (!file->contents)) goto fail;
-
-  if (unlikely (fread (file->contents, 1, file->length, fd) != file->length))
-    goto fail;
+fail:
+  CloseHandle (fd);
+fail_without_close:
+  free (file);
 
 #endif
 
-  CLOSE (fd);
-  return hb_blob_create (file->contents, file->length, mm, (void *) file,
-                         (hb_destroy_func_t) _hb_mapped_file_destroy);
+  /* The following tries to read a file without knowing its size beforehand
+     It's used as a fallback for systems without mmap or to read from pipes */
+  unsigned long len = 0, allocated = BUFSIZ * 16;
+  char *data = (char *) malloc (allocated);
+  if (unlikely (data == nullptr)) return hb_blob_get_empty ();
+
+  FILE *fp = fopen (file_name, "rb");
+  if (unlikely (fp == nullptr)) goto fread_fail_without_close;
 
-fail:
-  CLOSE (fd);
-#undef CLOSE
-fail_without_close:
-  free (file);
+  while (!feof (fp))
+  {
+    if (allocated - len < BUFSIZ)
+    {
+      allocated *= 2;
+      /* Don't allocate and go more than ~536MB, our mmap reader still
+         can cover files like that but lets limit our fallback reader */
+      if (unlikely (allocated > (2 << 28))) goto fread_fail;
+      char *new_data = (char *) realloc (data, allocated);
+      if (unlikely (new_data == nullptr)) goto fread_fail;
+      data = new_data;
+    }
+
+    unsigned long addition = fread (data + len, 1, allocated - len, fp);
+
+    int err = ferror (fp);
+#ifdef EINTR // armcc doesn't have it
+    if (unlikely (err == EINTR)) continue;
+#endif
+    if (unlikely (err)) goto fread_fail;
+
+    len += addition;
+  }
+
+  return hb_blob_create (data, len, HB_MEMORY_MODE_WRITABLE, data,
+                         (hb_destroy_func_t) free);
+
+fread_fail:
+  fclose (fp);
+fread_fail_without_close:
+  free (data);
   return hb_blob_get_empty ();
 }
--- a/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-open-file-private.hh	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-open-file-private.hh	Thu Jul 12 11:09:23 2018 -0700
@@ -286,6 +286,197 @@
   } u;
 };
 
+/*
+ * Mac Resource Fork
+ */
+
+struct ResourceRefItem
+{
+  inline bool sanitize (hb_sanitize_context_t *c) const
+  {
+    TRACE_SANITIZE (this);
+    // actual data sanitization is done on ResourceForkHeader sanitizer
+    return_trace (likely (c->check_struct (this)));
+  }
+
+  HBINT16       id;             /* Resource ID, is really should be signed? */
+  HBINT16       nameOffset;     /* Offset from beginning of resource name list
+                                 * to resource name, minus means there is no */
+  HBUINT8       attr;           /* Resource attributes */
+  HBUINT24      dataOffset;     /* Offset from beginning of resource data to
+                                 * data for this resource */
+  HBUINT32      reserved;       /* Reserved for handle to resource */
+  public:
+  DEFINE_SIZE_STATIC (12);
+};
+
+struct ResourceTypeItem
+{
+  inline bool sanitize (hb_sanitize_context_t *c) const
+  {
+    TRACE_SANITIZE (this);
+    // RefList sanitization is done on ResourceMap sanitizer
+    return_trace (likely (c->check_struct (this)));
+  }
+
+  inline unsigned int get_resource_count () const
+  {
+    return numRes + 1;
+  }
+
+  inline bool is_sfnt () const
+  {
+    return type == HB_TAG ('s','f','n','t');
+  }
+
+  inline const ResourceRefItem& get_ref_item (const void *base,
+                                              unsigned int i) const
+  {
+    return (base+refList)[i];
+  }
+
+  protected:
+  Tag           type;           /* Resource type */
+  HBUINT16      numRes;         /* Number of resource this type in map minus 1 */
+  OffsetTo<UnsizedArrayOf<ResourceRefItem> >
+                refList;        /* Offset from beginning of resource type list
+                                 * to reference list for this type */
+  public:
+  DEFINE_SIZE_STATIC (8);
+};
+
+struct ResourceMap
+{
+  inline bool sanitize (hb_sanitize_context_t *c) const
+  {
+    TRACE_SANITIZE (this);
+    if (unlikely (!c->check_struct (this)))
+      return_trace (false);
+    for (unsigned int i = 0; i < get_types_count (); ++i)
+    {
+      const ResourceTypeItem& type = get_type (i);
+      if (unlikely (!type.sanitize (c)))
+        return_trace (false);
+      for (unsigned int j = 0; j < type.get_resource_count (); ++j)
+        if (unlikely (!get_ref_item (type, j).sanitize (c)))
+          return_trace (false);
+    }
+    return_trace (true);
+  }
+
+  inline const ResourceTypeItem& get_type (unsigned int i) const
+  {
+    // Why offset from the second byte of the object? I'm not sure
+    return ((&reserved[2])+typeList)[i];
+  }
+
+  inline unsigned int get_types_count () const
+  {
+    return nTypes + 1;
+  }
+
+  inline const ResourceRefItem &get_ref_item (const ResourceTypeItem &type,
+                                              unsigned int i) const
+  {
+    return type.get_ref_item (&(this+typeList), i);
+  }
+
+  inline const PString& get_name (const ResourceRefItem &item,
+                                  unsigned int i) const
+  {
+    if (item.nameOffset == -1)
+      return Null (PString);
+
+    return StructAtOffset<PString> (this, nameList + item.nameOffset);
+  }
+
+  protected:
+  HBUINT8       reserved[16];   /* Reserved for copy of resource header */
+  LOffsetTo<ResourceMap>
+                reserved1;      /* Reserved for handle to next resource map */
+  HBUINT16      reserved2;      /* Reserved for file reference number */
+  HBUINT16      attr;           /* Resource fork attribute */
+  OffsetTo<UnsizedArrayOf<ResourceTypeItem> >
+                typeList;       /* Offset from beginning of map to
+                                 * resource type list */
+  HBUINT16      nameList;       /* Offset from beginning of map to
+                                 * resource name list */
+  HBUINT16      nTypes;         /* Number of types in the map minus 1 */
+  public:
+  DEFINE_SIZE_STATIC (30);
+};
+
+struct ResourceForkHeader
+{
+  inline unsigned int get_face_count () const
+  {
+    const ResourceMap &resource_map = this+map;
+    for (unsigned int i = 0; i < resource_map.get_types_count (); ++i)
+    {
+      const ResourceTypeItem& type = resource_map.get_type (i);
+      if (type.is_sfnt ())
+        return type.get_resource_count ();
+    }
+    return 0;
+  }
+
+  inline const LArrayOf<HBUINT8>& get_data (const ResourceTypeItem& type,
+                                            unsigned int idx) const
+  {
+    const ResourceMap &resource_map = this+map;
+    unsigned int offset = dataOffset;
+    offset += resource_map.get_ref_item (type, idx).dataOffset;
+    return StructAtOffset<LArrayOf<HBUINT8> > (this, offset);
+  }
+
+  inline const OpenTypeFontFace& get_face (unsigned int idx) const
+  {
+    const ResourceMap &resource_map = this+map;
+    for (unsigned int i = 0; i < resource_map.get_types_count (); ++i)
+    {
+      const ResourceTypeItem& type = resource_map.get_type (i);
+      if (type.is_sfnt () && idx < type.get_resource_count ())
+        return (OpenTypeFontFace&) get_data (type, idx).arrayZ;
+    }
+    return Null (OpenTypeFontFace);
+  }
+
+  inline bool sanitize (hb_sanitize_context_t *c) const
+  {
+    TRACE_SANITIZE (this);
+    if (unlikely (!c->check_struct (this)))
+      return_trace (false);
+
+    const ResourceMap &resource_map = this+map;
+    if (unlikely (!resource_map.sanitize (c)))
+      return_trace (false);
+
+    for (unsigned int i = 0; i < resource_map.get_types_count (); ++i)
+    {
+      const ResourceTypeItem& type = resource_map.get_type (i);
+      for (unsigned int j = 0; j < type.get_resource_count (); ++j)
+      {
+        const LArrayOf<HBUINT8>& data = get_data (type, j);
+        if (unlikely (!(data.sanitize (c) &&
+                        ((OpenTypeFontFace&) data.arrayZ).sanitize (c))))
+          return_trace (false);
+      }
+    }
+
+    return_trace (true);
+  }
+
+  protected:
+  HBUINT32      dataOffset;     /* Offset from beginning of resource fork
+                                 * to resource data */
+  LOffsetTo<ResourceMap>
+                map;            /* Offset from beginning of resource fork
+                                 * to resource map */
+  HBUINT32      dataLen;        /* Length of resource data */
+  HBUINT32      mapLen;         /* Length of resource map */
+  public:
+  DEFINE_SIZE_STATIC (16);
+};
 
 /*
  * OpenType Font File
@@ -299,6 +490,7 @@
     CFFTag              = HB_TAG ('O','T','T','O'), /* OpenType with Postscript outlines */
     TrueTypeTag = HB_TAG ( 0 , 1 , 0 , 0 ), /* OpenType with TrueType outlines */
     TTCTag              = HB_TAG ('t','t','c','f'), /* TrueType Collection */
+    DFontTag            = HB_TAG ( 0 , 0 , 1 , 0 ), /* DFont Mac Resource Fork */
     TrueTag             = HB_TAG ('t','r','u','e'), /* Obsolete Apple TrueType */
     Typ1Tag             = HB_TAG ('t','y','p','1')  /* Obsolete Apple Type1 font in SFNT container */
   };
@@ -313,6 +505,7 @@
     case Typ1Tag:
     case TrueTypeTag:   return 1;
     case TTCTag:        return u.ttcHeader.get_face_count ();
+//    case DFontTag:    return u.rfHeader.get_face_count ();
     default:            return 0;
     }
   }
@@ -327,6 +520,7 @@
     case Typ1Tag:
     case TrueTypeTag:   return u.fontFace;
     case TTCTag:        return u.ttcHeader.get_face (i);
+//    case DFontTag:    return u.rfHeader.get_face (i);
     default:            return Null(OpenTypeFontFace);
     }
   }
@@ -353,6 +547,7 @@
     case Typ1Tag:
     case TrueTypeTag:   return_trace (u.fontFace.sanitize (c));
     case TTCTag:        return_trace (u.ttcHeader.sanitize (c));
+//    case DFontTag:    return_trace (u.rfHeader.sanitize (c));
     default:            return_trace (true);
     }
   }
@@ -362,6 +557,7 @@
   Tag                   tag;            /* 4-byte identifier. */
   OpenTypeFontFace      fontFace;
   TTCHeader             ttcHeader;
+  ResourceForkHeader    rfHeader;
   } u;
   public:
   DEFINE_SIZE_UNION (4, tag);
--- a/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-open-type-private.hh	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-open-type-private.hh	Thu Jul 12 11:09:23 2018 -0700
@@ -1033,6 +1033,7 @@
   DEFINE_SIZE_ARRAY (sizeof (LenType), arrayZ);
 };
 template <typename Type> struct LArrayOf : ArrayOf<Type, HBUINT32> {};
+typedef ArrayOf<HBUINT8, HBUINT8> PString;
 
 /* Array of Offset's */
 template <typename Type, typename OffsetType=HBUINT16>
--- a/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-common-private.hh	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-common-private.hh	Thu Jul 12 11:09:23 2018 -0700
@@ -832,7 +832,12 @@
       c = &c_;
       coverage = 0;
       i = 0;
-      j = c->rangeRecord.len ? c_.rangeRecord[0].start : 0;
+      j = c->rangeRecord.len ? c->rangeRecord[0].start : 0;
+      if (unlikely (c->rangeRecord[0].start > c->rangeRecord[0].end))
+      {
+        /* Broken table. Skip. */
+        i = c->rangeRecord.len;
+      }
     }
     inline bool more (void) { return i < c->rangeRecord.len; }
     inline void next (void)
@@ -842,7 +847,14 @@
         i++;
         if (more ())
         {
+          hb_codepoint_t old = j;
           j = c->rangeRecord[i].start;
+          if (unlikely (j <= old))
+          {
+            /* Broken table. Skip. Important to avoid DoS. */
+           i = c->rangeRecord.len;
+           return;
+          }
           coverage = c->rangeRecord[i].value;
         }
         return;
@@ -855,7 +867,8 @@
 
     private:
     const struct CoverageFormat2 *c;
-    unsigned int i, j, coverage;
+    unsigned int i, coverage;
+    hb_codepoint_t j;
   };
   private:
 
--- a/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-gpos-table.hh	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-gpos-table.hh	Thu Jul 12 11:09:23 2018 -0700
@@ -1074,10 +1074,13 @@
       if (!skippy_iter.prev ()) return_trace (false);
       /* We only want to attach to the first of a MultipleSubst sequence.
        * https://github.com/harfbuzz/harfbuzz/issues/740
-       * Reject others. */
+       * Reject others...
+       * ...but stop if we find a mark in the MultipleSubst sequence:
+       * https://github.com/harfbuzz/harfbuzz/issues/1020 */
       if (!_hb_glyph_info_multiplied (&buffer->info[skippy_iter.idx]) ||
           0 == _hb_glyph_info_get_lig_comp (&buffer->info[skippy_iter.idx]) ||
           (skippy_iter.idx == 0 ||
+           _hb_glyph_info_is_mark (&buffer->info[skippy_iter.idx - 1]) ||
            _hb_glyph_info_get_lig_id (&buffer->info[skippy_iter.idx]) !=
            _hb_glyph_info_get_lig_id (&buffer->info[skippy_iter.idx - 1]) ||
            _hb_glyph_info_get_lig_comp (&buffer->info[skippy_iter.idx]) !=
--- a/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic.cc	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic.cc	Thu Jul 12 11:09:23 2018 -0700
@@ -668,8 +668,9 @@
    *
    * Reports suggest that in some scripts Uniscribe does this only if there
    * is *not* a Halant after last consonant already (eg. Kannada), while it
-   * does it unconditionally in other scripts (eg. Malayalam).  We don't
-   * currently know about other scripts, so we single out Malayalam for now.
+   * does it unconditionally in other scripts (eg. Malayalam, Bengali).  We
+   * don't currently know about other scripts, so we whitelist Malayalam and
+   * Bengali for now.
    *
    * Kannada test case:
    * U+0C9A,U+0CCD,U+0C9A,U+0CCD
@@ -679,10 +680,16 @@
    * Malayalam test case:
    * U+0D38,U+0D4D,U+0D31,U+0D4D,U+0D31,U+0D4D
    * With lohit-ttf-20121122/Lohit-Malayalam.ttf
+   *
+   * Bengali test case
+   * U+0998,U+09CD,U+09AF,U+09CD
+   * With Windows XP vrinda.ttf
+   * https://github.com/harfbuzz/harfbuzz/issues/1073
    */
   if (indic_plan->is_old_spec)
   {
-    bool disallow_double_halants = buffer->props.script != HB_SCRIPT_MALAYALAM;
+    bool disallow_double_halants = buffer->props.script != HB_SCRIPT_MALAYALAM &&
+                                   buffer->props.script != HB_SCRIPT_BENGALI;
     for (unsigned int i = base + 1; i < end; i++)
       if (info[i].indic_category() == OT_H)
       {
--- a/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-khmer.cc	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-khmer.cc	Thu Jul 12 11:09:23 2018 -0700
@@ -372,22 +372,25 @@
         break;
       }
 
-    /* Note!  syllable() is a one-byte field. */
-    for (unsigned int i = base; i < end; i++)
-      if (info[i].syllable() != 255)
-      {
-        unsigned int max = i;
-        unsigned int j = start + info[i].syllable();
-        while (j != i)
+    if (unlikely (end - start >= 127))
+      buffer->merge_clusters (start, end);
+    else
+      /* Note!  syllable() is a one-byte field. */
+      for (unsigned int i = base; i < end; i++)
+        if (info[i].syllable() != 255)
         {
-          max = MAX (max, j);
-          unsigned int next = start + info[j].syllable();
-          info[j].syllable() = 255; /* So we don't process j later again. */
-          j = next;
+          unsigned int max = i;
+          unsigned int j = start + info[i].syllable();
+          while (j != i)
+          {
+            max = MAX (max, j);
+            unsigned int next = start + info[j].syllable();
+            info[j].syllable() = 255; /* So we don't process j later again. */
+            j = next;
+          }
+          if (i != max)
+            buffer->merge_clusters (i, max + 1);
         }
-        if (i != max)
-          buffer->merge_clusters (i, max + 1);
-      }
 
     /* Put syllable back in. */
     for (unsigned int i = start; i < end; i++)
--- a/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-private.hh	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-private.hh	Thu Jul 12 11:09:23 2018 -0700
@@ -1228,13 +1228,14 @@
 /* fallback for round() */
 #if !defined (HAVE_ROUND) && !defined (HAVE_DECL_ROUND)
 static inline double
-round (double x)
+_hb_round (double x)
 {
   if (x >= 0)
     return floor (x + 0.5);
   else
     return ceil (x - 0.5);
 }
+#define round(x) _hb_round(x)
 #endif
 
 
--- a/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-version.h	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-version.h	Thu Jul 12 11:09:23 2018 -0700
@@ -38,9 +38,9 @@
 
 #define HB_VERSION_MAJOR 1
 #define HB_VERSION_MINOR 8
-#define HB_VERSION_MICRO 1
+#define HB_VERSION_MICRO 2
 
-#define HB_VERSION_STRING "1.8.1"
+#define HB_VERSION_STRING "1.8.2"
 
 #define HB_VERSION_ATLEAST(major,minor,micro) \
         ((major)*10000+(minor)*100+(micro) <= \
--- a/src/java.desktop/unix/native/common/awt/CUPSfuncs.c	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/unix/native/common/awt/CUPSfuncs.c	Thu Jul 12 11:09:23 2018 -0700
@@ -29,6 +29,16 @@
 #include <dlfcn.h>
 #include <cups/cups.h>
 #include <cups/ppd.h>
+/*
+ * CUPS #define's __attribute__(x) to be empty unless __GNUC__ is defined.
+ * However OpenJDK officially uses the SunStudio compiler on Solaris.
+ * We need to #undef this else it breaks use of this keyword used by JNIEXPORT.
+ * See: https://github.com/apple/cups/issues/5349
+ */
+#ifdef __SUNPRO_C
+#undef __attribute__
+#endif
+
 
 //#define CUPS_DEBUG
 
--- a/src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolder2.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolder2.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, 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
@@ -170,7 +170,7 @@
     }
 
     // Known Folder data
-    static class KnownFolderDefinition {
+    static final class KnownFolderDefinition {
         String guid;
         int category;
         String name;
@@ -187,7 +187,10 @@
         String ftidType;
         String path;
         String saveLocation;
-        static final List<KnownFolderDefinition> libraries = getLibraries();
+    }
+
+    static final class KnownLibraries {
+        static final List<KnownFolderDefinition> INSTANCE = getLibraries();
     }
 
     static class FolderDisposer implements sun.java2d.DisposerRecord {
@@ -625,7 +628,7 @@
         // this is a temp fix until java.io starts support Libraries
         if( path != null && path.startsWith("::{") &&
                 path.toLowerCase().endsWith(".library-ms")) {
-            for (KnownFolderDefinition kf : KnownFolderDefinition.libraries) {
+            for (KnownFolderDefinition kf : KnownLibraries.INSTANCE) {
                 if (path.toLowerCase().endsWith(
                         "\\" + kf.relativePath.toLowerCase()) &&
                         path.toUpperCase().startsWith(
--- a/src/java.desktop/windows/native/libawt/windows/ShellFolder2.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.desktop/windows/native/libawt/windows/ShellFolder2.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, 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
@@ -1398,7 +1398,7 @@
     DEFINE_FIELD_ID(field_defenitionFlags, cl, "defenitionFlags", "I");
     DEFINE_FIELD_ID(field_ftidType, cl, "ftidType", "Ljava/lang/String;");
 
-    jobjectArray result;
+    jobjectArray result = NULL;
     KNOWNFOLDERID* pFoldersIds = NULL;
     UINT count = 0;
     if (SUCCEEDED(pkfm->GetFolderIds(&pFoldersIds, &count))) {
--- a/src/java.net.http/share/classes/jdk/internal/net/http/AbstractAsyncSSLConnection.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/AbstractAsyncSSLConnection.java	Thu Jul 12 11:09:23 2018 -0700
@@ -27,6 +27,7 @@
 
 import java.net.InetSocketAddress;
 import java.util.Arrays;
+import java.util.ArrayDeque;
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import javax.net.ssl.SNIHostName;
@@ -89,11 +90,30 @@
 
     final SSLEngine getEngine() { return engine; }
 
+    private static boolean contains(String[] rr, String target) {
+        for (String s : rr)
+            if (target.equalsIgnoreCase(s))
+                return true;
+        return false;
+    }
+
     private static SSLParameters createSSLParameters(HttpClientImpl client,
                                                      ServerName serverName,
                                                      String[] alpn) {
         SSLParameters sslp = client.sslParameters();
         SSLParameters sslParameters = Utils.copySSLParameters(sslp);
+        // filter out unwanted protocols, if h2 only
+        if (alpn != null && alpn.length != 0 && !contains(alpn, "http/1.1")) {
+            ArrayDeque<String> l = new ArrayDeque<>();
+            for (String proto : sslParameters.getProtocols()) {
+                if (!proto.startsWith("SSL") && !proto.endsWith("v1.1") && !proto.endsWith("v1")) {
+                    l.add(proto);
+                }
+            }
+            String[] a1 = l.toArray(new String[0]);
+            sslParameters.setProtocols(a1);
+        }
+
         if (!disableHostnameVerification)
             sslParameters.setEndpointIdentificationAlgorithm("HTTPS");
         if (alpn != null) {
@@ -112,10 +132,12 @@
         return sslParameters;
     }
 
+
     private static SSLEngine createEngine(SSLContext context, String serverName, int port,
                                           SSLParameters sslParameters) {
         SSLEngine engine = context.createSSLEngine(serverName, port);
         engine.setUseClientMode(true);
+
         engine.setSSLParameters(sslParameters);
         return engine;
     }
--- a/src/java.net.http/share/classes/jdk/internal/net/http/Exchange.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/Exchange.java	Thu Jul 12 11:09:23 2018 -0700
@@ -316,7 +316,7 @@
                     proxyResponse.version, true);
             return MinimalFuture.completedFuture(syntheticResponse);
         } else if (t != null) {
-            if (debug.on()) debug.log("checkFor407: no response - %s", t);
+            if (debug.on()) debug.log("checkFor407: no response - %s", (Object)t);
             return MinimalFuture.failedFuture(t);
         } else {
             if (debug.on()) debug.log("checkFor407: all clear");
--- a/src/java.net.http/share/classes/jdk/internal/net/http/Http1AsyncReceiver.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/Http1AsyncReceiver.java	Thu Jul 12 11:09:23 2018 -0700
@@ -386,8 +386,11 @@
             // we have a flow List<ByteBuffer> upstream.
             Http1AsyncDelegateSubscription subscription =
                     new Http1AsyncDelegateSubscription(scheduler, cancel, onSubscriptionError);
-            pending.onSubscribe(subscription);
-            this.delegate = delegate = pending;
+            try {
+                pending.onSubscribe(subscription);
+            } finally {
+                this.delegate = delegate = pending;
+            }
             final Object captured = delegate;
             if (debug.on())
                 debug.log("delegate is now " + captured
@@ -485,10 +488,11 @@
                 error = ex;
             }
         }
-            final Throwable t = (recorded == null ? ex : recorded);
-            if (debug.on())
-                debug.log("recorded " + t + "\n\t delegate: " + delegate
-                          + "\t\t queue.isEmpty: " + queue.isEmpty(), ex);
+
+        final Throwable t = (recorded == null ? ex : recorded);
+        if (debug.on())
+            debug.log("recorded " + t + "\n\t delegate: " + delegate
+                      + "\t\t queue.isEmpty: " + queue.isEmpty(), ex);
         if (Log.errors()) {
             Log.logError("HTTP/1 read subscriber recorded error: {0} - {1}", describe(), t);
         }
--- a/src/java.net.http/share/classes/jdk/internal/net/http/Http1Exchange.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/Http1Exchange.java	Thu Jul 12 11:09:23 2018 -0700
@@ -257,6 +257,14 @@
                 .thenCompose(unused -> {
                     CompletableFuture<Void> cf = new MinimalFuture<>();
                     try {
+                        asyncReceiver.whenFinished.whenComplete((r,t) -> {
+                            if (t != null) {
+                                if (debug.on())
+                                    debug.log("asyncReceiver finished (failed=%s)", (Object)t);
+                                if (!headersSentCF.isDone())
+                                    headersSentCF.completeAsync(() -> this, executor);
+                            }
+                        });
                         connectFlows(connection);
 
                         if (debug.on()) debug.log("requestAction.headers");
@@ -282,7 +290,8 @@
 
     private void cancelIfFailed(Flow.Subscription s) {
         asyncReceiver.whenFinished.whenCompleteAsync((r,t) -> {
-            if (debug.on()) debug.log("asyncReceiver finished (failed=%s)", t);
+            if (debug.on())
+                debug.log("asyncReceiver finished (failed=%s)", (Object)t);
             if (t != null) {
                 s.cancel();
                 // Don't complete exceptionally here as 't'
--- a/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java	Thu Jul 12 11:09:23 2018 -0700
@@ -673,7 +673,11 @@
         client2.deleteConnection(this);
         List<Stream<?>> c = new LinkedList<>(streams.values());
         for (Stream<?> s : c) {
-            s.connectionClosing(t);
+            try {
+                s.connectionClosing(t);
+            } catch (Throwable e) {
+                Log.logError("Failed to close stream {0}: {1}", s.streamid, e);
+            }
         }
         connection.close();
     }
@@ -738,6 +742,9 @@
                 }
 
                 if (!(frame instanceof ResetFrame)) {
+                    if (frame instanceof DataFrame) {
+                        dropDataFrame((DataFrame)frame);
+                    }
                     if (isServerInitiatedStream(streamid)) {
                         if (streamid < nextPushStream) {
                             // trailing data on a cancelled push promise stream,
@@ -776,6 +783,27 @@
         }
     }
 
+    final void dropDataFrame(DataFrame df) {
+        if (closed) return;
+        if (debug.on()) {
+            debug.log("Dropping data frame for stream %d (%d payload bytes)",
+                    df.streamid(), df.payloadLength());
+        }
+        ensureWindowUpdated(df);
+    }
+
+    final void ensureWindowUpdated(DataFrame df) {
+        try {
+            if (closed) return;
+            int length = df.payloadLength();
+            if (length > 0) {
+                windowUpdater.update(length);
+            }
+        } catch(Throwable t) {
+            Log.logError("Unexpected exception while updating window: {0}", (Object)t);
+        }
+    }
+
     private <T> void handlePushPromise(Stream<T> parent, PushPromiseFrame pp)
         throws IOException
     {
@@ -984,7 +1012,6 @@
                      connection.channel().getLocalAddress(),
                      connection.address());
         SettingsFrame sf = new SettingsFrame(clientSettings);
-        int initialWindowSize = sf.getParameter(INITIAL_WINDOW_SIZE);
         ByteBuffer buf = framesEncoder.encodeConnectionPreface(PREFACE_BYTES, sf);
         Log.logFrames(sf, "OUT");
         // send preface bytes and SettingsFrame together
@@ -997,9 +1024,20 @@
         Log.logTrace("Settings Frame sent");
 
         // send a Window update for the receive buffer we are using
-        // minus the initial 64 K specified in protocol
-        final int len = windowUpdater.initialWindowSize - initialWindowSize;
-        if (len > 0) {
+        // minus the initial 64 K -1 specified in protocol:
+        // RFC 7540, Section 6.9.2:
+        // "[...] the connection flow-control window is set to the default
+        // initial window size until a WINDOW_UPDATE frame is received."
+        //
+        // Note that the default initial window size, not to be confused
+        // with the initial window size, is defined by RFC 7540 as
+        // 64K -1.
+        final int len = windowUpdater.initialWindowSize - DEFAULT_INITIAL_WINDOW_SIZE;
+        if (len != 0) {
+            if (Log.channel()) {
+                Log.logChannel("Sending initial connection window update frame: {0} ({1} - {2})",
+                        len, windowUpdater.initialWindowSize, DEFAULT_INITIAL_WINDOW_SIZE);
+            }
             windowUpdater.sendWindowUpdate(len);
         }
         // there will be an ACK to the windows update - which should
@@ -1132,6 +1170,7 @@
 
     private Stream<?> registerNewStream(OutgoingHeaders<Stream<?>> oh) {
         Stream<?> stream = oh.getAttachment();
+        assert stream.streamid == 0;
         int streamid = nextstreamid;
         nextstreamid += 2;
         stream.registerStream(streamid);
--- a/src/java.net.http/share/classes/jdk/internal/net/http/HttpClientImpl.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/HttpClientImpl.java	Thu Jul 12 11:09:23 2018 -0700
@@ -329,7 +329,18 @@
 
     private static SSLParameters getDefaultParams(SSLContext ctx) {
         SSLParameters params = ctx.getSupportedSSLParameters();
-        params.setProtocols(new String[]{"TLSv1.2"});
+        String[] protocols = params.getProtocols();
+        boolean found13 = false;
+        for (String proto : protocols) {
+            if (proto.equals("TLSv1.3")) {
+                found13 = true;
+                break;
+            }
+        }
+        if (found13)
+            params.setProtocols(new String[] {"TLSv1.3", "TLSv1.2"});
+        else
+            params.setProtocols(new String[] {"TLSv1.2"});
         return params;
     }
 
--- a/src/java.net.http/share/classes/jdk/internal/net/http/SocketTube.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/SocketTube.java	Thu Jul 12 11:09:23 2018 -0700
@@ -360,7 +360,6 @@
                 }
             } catch (Throwable t) {
                 signalError(t);
-                subscription.cancel();
             }
         }
 
@@ -424,6 +423,8 @@
             }
             completed = true;
             readPublisher.signalError(error);
+            Flow.Subscription subscription = this.subscription;
+            if (subscription != null) subscription.cancel();
         }
 
         // A repeatable WriteEvent which is paused after firing and can
@@ -468,7 +469,11 @@
 
             @Override
             public void cancel() {
+                if (cancelled) return;
                 if (debug.on()) debug.log("write: cancel");
+                if (Log.channel()) {
+                    Log.logChannel("Cancelling write subscription");
+                }
                 dropSubscription();
                 upstreamSubscription.cancel();
             }
@@ -503,9 +508,7 @@
                 } catch (Throwable t) {
                     if (debug.on())
                         debug.log("write: error while requesting more: " + t);
-                    cancelled = true;
                     signalError(t);
-                    subscription.cancel();
                 } finally {
                     debugState("leaving requestMore: ");
                 }
--- a/src/java.net.http/share/classes/jdk/internal/net/http/Stream.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/Stream.java	Thu Jul 12 11:09:23 2018 -0700
@@ -185,6 +185,7 @@
                 int size = Utils.remaining(dsts, Integer.MAX_VALUE);
                 if (size == 0 && finished) {
                     inputQ.remove();
+                    connection.ensureWindowUpdated(df); // must update connection window
                     Log.logTrace("responseSubscriber.onComplete");
                     if (debug.on()) debug.log("incoming: onComplete");
                     sched.stop();
@@ -197,7 +198,12 @@
                     inputQ.remove();
                     Log.logTrace("responseSubscriber.onNext {0}", size);
                     if (debug.on()) debug.log("incoming: onNext(%d)", size);
-                    subscriber.onNext(dsts);
+                    try {
+                        subscriber.onNext(dsts);
+                    } catch (Throwable t) {
+                        connection.dropDataFrame(df); // must update connection window
+                        throw t;
+                    }
                     if (consumed(df)) {
                         Log.logTrace("responseSubscriber.onComplete");
                         if (debug.on()) debug.log("incoming: onComplete");
@@ -215,6 +221,8 @@
             }
         } catch (Throwable throwable) {
             errorRef.compareAndSet(null, throwable);
+        } finally {
+            if (sched.isStopped()) drainInputQueue();
         }
 
         Throwable t = errorRef.get();
@@ -223,20 +231,35 @@
             try {
                 if (!onCompleteCalled) {
                     if (debug.on())
-                        debug.log("calling subscriber.onError: %s", (Object)t);
+                        debug.log("calling subscriber.onError: %s", (Object) t);
                     subscriber.onError(t);
                 } else {
                     if (debug.on())
-                        debug.log("already completed: dropping error %s", (Object)t);
+                        debug.log("already completed: dropping error %s", (Object) t);
                 }
             } catch (Throwable x) {
-                Log.logError("Subscriber::onError threw exception: {0}", (Object)t);
+                Log.logError("Subscriber::onError threw exception: {0}", (Object) t);
             } finally {
                 cancelImpl(t);
+                drainInputQueue();
             }
         }
     }
 
+    // must only be called from the scheduler schedule() loop.
+    // ensure that all received data frames are accounted for
+    // in the connection window flow control if the scheduler
+    // is stopped before all the data is consumed.
+    private void drainInputQueue() {
+        Http2Frame frame;
+        while ((frame = inputQ.poll()) != null) {
+            if (frame instanceof DataFrame) {
+                connection.dropDataFrame((DataFrame)frame);
+            }
+        }
+    }
+
+
     // Callback invoked after the Response BodySubscriber has consumed the
     // buffers contained in a DataFrame.
     // Returns true if END_STREAM is reached, false otherwise.
@@ -245,15 +268,19 @@
         // The entire DATA frame payload is included in flow control,
         // including the Pad Length and Padding fields if present
         int len = df.payloadLength();
+        boolean endStream = df.getFlag(DataFrame.END_STREAM);
+        if (len == 0) return endStream;
+
         connection.windowUpdater.update(len);
 
-        if (!df.getFlag(DataFrame.END_STREAM)) {
+        if (!endStream) {
             // Don't send window update on a stream which is
             // closed or half closed.
             windowUpdater.update(len);
-            return false; // more data coming
         }
-        return true; // end of stream
+
+        // true: end of stream; false: more data coming
+        return endStream;
     }
 
     boolean deRegister() {
@@ -500,8 +527,8 @@
     {
         int amount = frame.getUpdate();
         if (amount <= 0) {
-            Log.logTrace("Resetting stream: {0} %d, Window Update amount: %d\n",
-                         streamid, streamid, amount);
+            Log.logTrace("Resetting stream: {0}, Window Update amount: {1}",
+                         streamid, amount);
             connection.resetStream(streamid, ResetFrame.FLOW_CONTROL_ERROR);
         } else {
             assert streamid != 0;
@@ -1126,7 +1153,7 @@
                     connection.resetStream(streamid, ResetFrame.CANCEL);
                 }
             }
-        } catch (IOException ex) {
+        } catch (Throwable ex) {
             Log.logError(ex);
         }
     }
@@ -1289,6 +1316,18 @@
         int getStreamId() {
             return streamid;
         }
+
+        @Override
+        String dbgString() {
+            String dbg = dbgString;
+            if (dbg != null) return dbg;
+            if (streamid == 0) {
+                return connection.dbgString() + ":WindowUpdateSender(stream: ?)";
+            } else {
+                dbg = connection.dbgString() + ":WindowUpdateSender(stream: " + streamid + ")";
+                return dbgString = dbg;
+            }
+        }
     }
 
     /**
--- a/src/java.net.http/share/classes/jdk/internal/net/http/WindowUpdateSender.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/WindowUpdateSender.java	Thu Jul 12 11:09:23 2018 -0700
@@ -25,6 +25,7 @@
 
 package jdk.internal.net.http;
 
+import jdk.internal.net.http.common.FlowTube;
 import jdk.internal.net.http.common.Logger;
 import jdk.internal.net.http.frame.SettingsFrame;
 import jdk.internal.net.http.frame.WindowUpdateFrame;
@@ -66,8 +67,9 @@
     abstract int getStreamId();
 
     void update(int delta) {
-        if (debug.on()) debug.log("update: %d", delta);
-        if (received.addAndGet(delta) > limit) {
+        int rcv = received.addAndGet(delta);
+        if (debug.on()) debug.log("update: %d, received: %d, limit: %d", delta, rcv, limit);
+        if (rcv > limit) {
             synchronized (this) {
                 int tosend = received.get();
                 if( tosend > limit) {
@@ -83,8 +85,18 @@
         connection.sendUnorderedFrame(new WindowUpdateFrame(getStreamId(), delta));
     }
 
+    volatile String dbgString;
     String dbgString() {
-        return "WindowUpdateSender(stream: " + getStreamId() + ")";
+        String dbg = dbgString;
+        if (dbg != null) return dbg;
+        FlowTube tube = connection.connection.getConnectionFlow();
+        if (tube == null) {
+            return "WindowUpdateSender(stream: " + getStreamId() + ")";
+        } else {
+            int streamId = getStreamId();
+            dbg = connection.dbgString() + ":WindowUpdateSender(stream: " + streamId + ")";
+            return streamId == 0 ? dbg : (dbgString = dbg);
+        }
     }
 
 }
--- a/src/java.net.http/share/classes/jdk/internal/net/http/common/SSLFlowDelegate.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/common/SSLFlowDelegate.java	Thu Jul 12 11:09:23 2018 -0700
@@ -33,6 +33,9 @@
 import javax.net.ssl.SSLEngineResult.Status;
 import javax.net.ssl.SSLException;
 import java.io.IOException;
+import java.lang.ref.Reference;
+import java.lang.ref.ReferenceQueue;
+import java.lang.ref.WeakReference;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -93,6 +96,8 @@
     // When handshake is in progress trying to wrap may produce no bytes.
     private static final ByteBuffer NOTHING = ByteBuffer.allocate(0);
     private static final String monProp = Utils.getProperty("jdk.internal.httpclient.monitorFlowDelegate");
+    private static final boolean isMonitored =
+            monProp != null && (monProp.equals("") || monProp.equalsIgnoreCase("true"));
 
     final Executor exec;
     final Reader reader;
@@ -100,6 +105,7 @@
     final SSLEngine engine;
     final String tubeName; // hack
     final CompletableFuture<String> alpnCF; // completes on initial handshake
+    final Monitorable monitor = isMonitored ? this::monitor : null; // prevent GC until SSLFD is stopped
     volatile boolean close_notify_received;
     final CompletableFuture<Void> readerCF;
     final CompletableFuture<Void> writerCF;
@@ -152,8 +158,7 @@
         // Writer to the downWriter.
         connect(downReader, downWriter);
 
-        if (monProp != null && (monProp.equals("") || monProp.equalsIgnoreCase("true")))
-            Monitor.add(this::monitor);
+        if (isMonitored) Monitor.add(monitor);
     }
 
     /**
@@ -202,6 +207,7 @@
     public String monitor() {
         StringBuilder sb = new StringBuilder();
         sb.append("SSL: id ").append(id);
+        sb.append(" ").append(dbgString());
         sb.append(" HS state: " + states(handshakeState));
         sb.append(" Engine state: " + engine.getHandshakeStatus().toString());
         if (stateList != null) {
@@ -293,8 +299,10 @@
 
         @Override
         public String toString() {
-            return "READER: " + super.toString() + " readBuf: " + readBuf.toString()
-                    + " count: " + count.toString();
+            return "READER: " + super.toString() + ", readBuf: " + readBuf.toString()
+                    + ", count: " + count.toString() + ", scheduler: "
+                    + (scheduler.isStopped() ? "stopped" : "running")
+                    + ", status: " + lastUnwrapStatus;
         }
 
         private void reallocReadBuf() {
@@ -335,6 +343,7 @@
                 }
                 if (complete) {
                     this.completing = complete;
+                    minBytesRequired = 0;
                 }
             }
         }
@@ -395,13 +404,23 @@
                             // not enough data in the read buffer...
                             // no need to try to unwrap again unless we get more bytes
                             // than minBytesRequired = len in the read buffer.
-                            minBytesRequired = len;
                             synchronized (readBufferLock) {
+                                minBytesRequired = len;
                                 // more bytes could already have been added...
                                 assert readBuf.remaining() >= len;
                                 // check if we have received some data, and if so
                                 // we can just re-spin the loop
                                 if (readBuf.remaining() > len) continue;
+                                else if (this.completing) {
+                                    if (debug.on()) {
+                                        debugr.log("BUFFER_UNDERFLOW with EOF," +
+                                                " %d bytes non decrypted.", len);
+                                    }
+                                    // The channel won't send us any more data, and
+                                    // we are in underflow: we need to fail.
+                                    throw new IOException("BUFFER_UNDERFLOW with EOF, "
+                                            + len + " bytes non decrypted.");
+                                }
                             }
                             // request more data and return.
                             requestMore();
@@ -429,6 +448,7 @@
                     } catch (IOException ex) {
                         errorCommon(ex);
                         handleError(ex);
+                        return;
                     }
                     if (handshaking && !complete)
                         return;
@@ -452,12 +472,13 @@
             }
         }
 
+        private volatile Status lastUnwrapStatus;
         EngineResult unwrapBuffer(ByteBuffer src) throws IOException {
             ByteBuffer dst = getAppBuffer();
             int len = src.remaining();
             while (true) {
                 SSLEngineResult sslResult = engine.unwrap(src, dst);
-                switch (sslResult.getStatus()) {
+                switch (lastUnwrapStatus = sslResult.getStatus()) {
                     case BUFFER_OVERFLOW:
                         // may happen if app size buffer was changed, or if
                         // our 'adaptiveBufferSize' guess was too small for
@@ -507,7 +528,9 @@
     }
 
     public static class Monitor extends Thread {
-        final List<Monitorable> list;
+        final List<WeakReference<Monitorable>> list;
+        final List<FinalMonitorable> finalList;
+        final ReferenceQueue<Monitorable> queue = new ReferenceQueue<>();
         static Monitor themon;
 
         static {
@@ -515,19 +538,61 @@
             themon.start(); // uncomment to enable Monitor
         }
 
+        // An instance used to temporarily store the
+        // last observable state of a monitorable object.
+        // When Monitor.remove(o) is called, we replace
+        // 'o' with a FinalMonitorable whose reference
+        // will be enqueued after the last observable state
+        // has been printed.
+        final class FinalMonitorable implements Monitorable {
+            final String finalState;
+            FinalMonitorable(Monitorable o) {
+                finalState = o.getInfo();
+                finalList.add(this);
+            }
+            @Override
+            public String getInfo() {
+                finalList.remove(this);
+                return finalState;
+            }
+        }
+
         Monitor() {
             super("Monitor");
             setDaemon(true);
             list = Collections.synchronizedList(new LinkedList<>());
+            finalList = new ArrayList<>(); // access is synchronized on list above
         }
 
         void addTarget(Monitorable o) {
-            list.add(o);
+            list.add(new WeakReference<>(o, queue));
+        }
+        void removeTarget(Monitorable o) {
+            // It can take a long time for GC to clean up references.
+            // Calling Monitor.remove() early helps removing noise from the
+            // logs/
+            synchronized (list) {
+                Iterator<WeakReference<Monitorable>> it = list.iterator();
+                while (it.hasNext()) {
+                    Monitorable m = it.next().get();
+                    if (m == null) it.remove();
+                    if (o == m) {
+                        it.remove();
+                        break;
+                    }
+                }
+                FinalMonitorable m = new FinalMonitorable(o);
+                addTarget(m);
+                Reference.reachabilityFence(m);
+            }
         }
 
         public static void add(Monitorable o) {
             themon.addTarget(o);
         }
+        public static void remove(Monitorable o) {
+            themon.removeTarget(o);
+        }
 
         @Override
         public void run() {
@@ -536,7 +601,14 @@
                 while (true) {
                     Thread.sleep(20 * 1000);
                     synchronized (list) {
-                        for (Monitorable o : list) {
+                        Reference<? extends Monitorable> expired;
+                        while ((expired = queue.poll()) != null) list.remove(expired);
+                        for (WeakReference<Monitorable> ref : list) {
+                            Monitorable o = ref.get();
+                            if (o == null) continue;
+                            if (o instanceof FinalMonitorable) {
+                                ref.enqueue();
+                            }
                             System.out.println(o.getInfo());
                             System.out.println("-------------------------");
                         }
@@ -733,6 +805,7 @@
         // downstream. Otherwise, we send the writeBuffer downstream
         // and will allocate a new one next time.
         volatile ByteBuffer writeBuffer;
+        private volatile Status lastWrappedStatus;
         @SuppressWarnings("fallthrough")
         EngineResult wrapBuffers(ByteBuffer[] src) throws SSLException {
             long len = Utils.remaining(src);
@@ -747,7 +820,7 @@
             while (true) {
                 SSLEngineResult sslResult = engine.wrap(src, dst);
                 if (debugw.on()) debugw.log("SSLResult: " + sslResult);
-                switch (sslResult.getStatus()) {
+                switch (lastWrappedStatus = sslResult.getStatus()) {
                     case BUFFER_OVERFLOW:
                         // Shouldn't happen. We allocated buffer with packet size
                         // get it again if net buffer size was changed
@@ -815,8 +888,10 @@
 
         @Override
         public String toString() {
-            return "WRITER: " + super.toString() +
-                    " writeList size " + Integer.toString(writeList.size());
+            return "WRITER: " + super.toString()
+                    + ", writeList size: " + Integer.toString(writeList.size())
+                    + ", scheduler: " + (scheduler.isStopped() ? "stopped" : "running")
+                    + ", status: " + lastWrappedStatus;
                     //" writeList: " + writeList.toString();
         }
     }
@@ -839,6 +914,7 @@
         stopped = true;
         reader.stop();
         writer.stop();
+        if (isMonitored) Monitor.remove(monitor);
     }
 
     private Void stopOnError(Throwable currentlyUnused) {
@@ -953,6 +1029,10 @@
             case NEED_UNWRAP_AGAIN:
                 // do nothing else
                 // receiving-side data will trigger unwrap
+                if (caller == WRITER) {
+                    reader.schedule();
+                    return false;
+                }
                 break;
             default:
                 throw new InternalError("Unexpected handshake status:"
--- a/src/java.net.http/share/classes/jdk/internal/net/http/common/SSLTube.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/common/SSLTube.java	Thu Jul 12 11:09:23 2018 -0700
@@ -406,6 +406,21 @@
             }
         }
 
+        private void complete(DelegateWrapper subscriberImpl, Throwable t) {
+            try {
+                if (t == null) subscriberImpl.onComplete();
+                else subscriberImpl.onError(t);
+                if (debug.on()) {
+                    debug.log("subscriber completed %s"
+                            + ((t == null) ? "normally" : ("with error: " + t)));
+                }
+            } finally {
+                // Error or EOF while reading:
+                // cancel write side after completing read side
+                writeSubscription.cancel();
+            }
+        }
+
         private void onNewSubscription(DelegateWrapper subscriberImpl,
                                        Flow.Subscription subscription) {
             assert subscriberImpl != null;
@@ -432,13 +447,13 @@
                 if (debug.on())
                     debug.log("onNewSubscription: subscriberImpl:%s, invoking onError:%s",
                               subscriberImpl, failed);
-                subscriberImpl.onError(failed);
+                complete(subscriberImpl, failed);
             } else if (completed) {
                 if (debug.on())
                     debug.log("onNewSubscription: subscriberImpl:%s, invoking onCompleted",
                               subscriberImpl);
                 finished = true;
-                subscriberImpl.onComplete();
+                complete(subscriberImpl, null);
             }
         }
 
@@ -463,7 +478,7 @@
                 subscriberImpl = subscribed;
             }
             if (subscriberImpl != null) {
-                subscriberImpl.onError(failed);
+                complete(subscriberImpl, failed);
             } else {
                 if (debug.on())
                     debug.log("%s: delegate null, stored %s", this, failed);
@@ -485,14 +500,22 @@
             return !(hs == NOT_HANDSHAKING || hs == FINISHED);
         }
 
-        private boolean handshakeFailed() {
+        private String handshakeFailed() {
             // sslDelegate can be null if we reach here
             // during the initial handshake, as that happens
             // within the SSLFlowDelegate constructor.
             // In that case we will want to raise an exception.
-            return handshaking()
+            if (handshaking()
                     && (sslDelegate == null
-                    || !sslDelegate.closeNotifyReceived());
+                    || !sslDelegate.closeNotifyReceived())) {
+                return "Remote host terminated the handshake";
+            }
+            // The initial handshake may not have been started yet.
+            // In which case - if we are completed before the initial handshake
+            // is started, we consider this a handshake failure as well.
+            if ("SSL_NULL_WITH_NULL_NULL".equals(engine.getSession().getCipherSuite()))
+                return "Remote host closed the channel";
+            return null;
         }
 
         @Override
@@ -503,17 +526,18 @@
                 subscriberImpl = subscribed;
             }
 
-            if (handshakeFailed()) {
+            String handshakeFailed = handshakeFailed();
+            if (handshakeFailed != null) {
                 if (debug.on())
-                    debug.log("handshake: %s, inbound done: %s outbound done: %s",
+                    debug.log("handshake: %s, inbound done: %s, outbound done: %s: %s",
                               engine.getHandshakeStatus(),
                               engine.isInboundDone(),
-                              engine.isOutboundDone());
-                onErrorImpl(new SSLHandshakeException(
-                        "Remote host terminated the handshake"));
+                              engine.isOutboundDone(),
+                              handshakeFailed);
+                onErrorImpl(new SSLHandshakeException(handshakeFailed));
             } else if (subscriberImpl != null) {
                 onCompleteReceived = finished = true;
-                subscriberImpl.onComplete();
+                complete(subscriberImpl, null);
             } else {
                 onCompleteReceived = true;
             }
--- a/src/java.net.http/share/classes/jdk/internal/net/http/frame/SettingsFrame.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/frame/SettingsFrame.java	Thu Jul 12 11:09:23 2018 -0700
@@ -161,14 +161,19 @@
         }
     }
 
+    public static final int DEFAULT_INITIAL_WINDOW_SIZE = 64 * K -1;
+    public static final int DEFAULT_HEADER_TABLE_SIZE = 4 * K;
+    public static final int DEFAULT_MAX_CONCURRENT_STREAMS = 100;
+    public static final int DEFAULT_MAX_FRAME_SIZE = 16 * K;
+
     public static SettingsFrame getDefaultSettings() {
         SettingsFrame f = new SettingsFrame();
         // TODO: check these values
         f.setParameter(ENABLE_PUSH, 1);
-        f.setParameter(HEADER_TABLE_SIZE, 4 * K);
-        f.setParameter(MAX_CONCURRENT_STREAMS, 100);
-        f.setParameter(INITIAL_WINDOW_SIZE, 64 * K - 1);
-        f.setParameter(MAX_FRAME_SIZE, 16 * K);
+        f.setParameter(HEADER_TABLE_SIZE, DEFAULT_HEADER_TABLE_SIZE);
+        f.setParameter(MAX_CONCURRENT_STREAMS, DEFAULT_MAX_CONCURRENT_STREAMS);
+        f.setParameter(INITIAL_WINDOW_SIZE, DEFAULT_INITIAL_WINDOW_SIZE);
+        f.setParameter(MAX_FRAME_SIZE, DEFAULT_MAX_FRAME_SIZE);
         return f;
     }
 }
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
  */
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
@@ -84,7 +84,7 @@
  * @author G. Todd Miller
  * @author Morten Jorgensen
  * @author Santiago Pericas-Geertsen
- * @LastModified: Nov 2017
+ * @LastModified: July 2018
  */
 public class TransformerFactoryImpl
     extends SAXTransformerFactory implements SourceLoader, ErrorListener
@@ -1211,7 +1211,7 @@
                     return null;
                 }
                 catch (TransformerException e2) {
-                    new TransformerConfigurationException(e2);
+                    throw new TransformerConfigurationException(e2);
                 }
             }
             throw e1;
--- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/datatype/DurationImpl.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/datatype/DurationImpl.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
  */
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
@@ -98,6 +98,7 @@
  * @author Kohsuke Kawaguchi
  * @author Joseph Fialli
  * @see XMLGregorianCalendar#add(Duration)
+ * @LastModified: June 2018
  */
 class DurationImpl
         extends Duration
@@ -1603,9 +1604,10 @@
                     touched = true;
 
                     // compute the number of unit that needs to be borrowed.
-                    BigDecimal borrow =
-                        buf[i].abs().divide(
+                    // scale should be 0 in all cases
+                    BigDecimal borrow = buf[i].abs().divide(
                             FACTORS[i - 1],
+                            0,
                             RoundingMode.UP);
                     if (buf[i].signum() > 0) {
                         borrow = borrow.negate();
--- a/src/java.xml/share/classes/javax/xml/stream/XMLStreamReader.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/java.xml/share/classes/javax/xml/stream/XMLStreamReader.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2018, 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
@@ -197,7 +197,6 @@
    *  with  two separate events: START_ELEMENT, END_ELEMENT - This preserves
    *   parsing equivalency of empty element to {@code <tag></tag>}.
    *
-   * This method will throw an IllegalStateException if it is called after hasNext() returns false.
    * @see javax.xml.stream.events.XMLEvent
    * @return the integer code corresponding to the current parse event
    * @throws java.util.NoSuchElementException if this is called when hasNext() returns false
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java	Thu Jul 12 11:09:23 2018 -0700
@@ -131,6 +131,10 @@
         return tab.get(name);
     }
 
+    public boolean isSupported() {
+        return this.compareTo(MIN) >= 0;
+    }
+
     public Target requiredTarget() {
         if (this.compareTo(JDK12) >= 0) return Target.JDK1_12;
         if (this.compareTo(JDK11) >= 0) return Target.JDK1_11;
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1659,7 +1659,7 @@
         private TypeRelation isCastable = new TypeRelation() {
 
             public Boolean visitType(Type t, Type s) {
-                if (s.hasTag(ERROR))
+                if (s.hasTag(ERROR) || t.hasTag(NONE))
                     return true;
 
                 switch (t.getTag()) {
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java	Thu Jul 12 11:09:23 2018 -0700
@@ -586,8 +586,11 @@
     class RecoveryInfo extends ResultInfo {
 
         public RecoveryInfo(final DeferredAttr.DeferredAttrContext deferredAttrContext) {
-            super(KindSelector.VAL, Type.recoveryType,
-                  new Check.NestedCheckContext(chk.basicHandler) {
+            this(deferredAttrContext, Type.recoveryType);
+        }
+
+        public RecoveryInfo(final DeferredAttr.DeferredAttrContext deferredAttrContext, Type pt) {
+            super(KindSelector.VAL, pt, new Check.NestedCheckContext(chk.basicHandler) {
                 @Override
                 public DeferredAttr.DeferredAttrContext deferredAttrContext() {
                     return deferredAttrContext;
@@ -598,7 +601,9 @@
                 }
                 @Override
                 public void report(DiagnosticPosition pos, JCDiagnostic details) {
-                    chk.basicHandler.report(pos, details);
+                    if (pt == Type.recoveryType) {
+                        chk.basicHandler.report(pos, details);
+                    }
                 }
             });
         }
@@ -656,7 +661,7 @@
             }
             if (tree == breakTree &&
                     resultInfo.checkContext.deferredAttrContext().mode == AttrMode.CHECK) {
-                throw new BreakAttr(copyEnv(env));
+                breakTreeFound(copyEnv(env));
             }
             return result;
         } catch (CompletionFailure ex) {
@@ -668,6 +673,10 @@
         }
     }
 
+    protected void breakTreeFound(Env<AttrContext> env) {
+        throw new BreakAttr(env);
+    }
+
     Env<AttrContext> copyEnv(Env<AttrContext> env) {
         Env<AttrContext> newEnv =
                 env.dup(env.tree, env.info.dup(copyScope(env.info.scope)));
@@ -2506,8 +2515,7 @@
                 //lambda only allowed in assignment or method invocation/cast context
                 log.error(that.pos(), Errors.UnexpectedLambda);
             }
-            result = that.type = types.createErrorType(pt());
-            return;
+            resultInfo = recoveryInfo;
         }
         //create an environment for attribution of the lambda expression
         final Env<AttrContext> localEnv = lambdaEnv(that, env);
@@ -2595,6 +2603,10 @@
                 attribTree(that.getBody(), localEnv, bodyResultInfo);
             } else {
                 JCBlock body = (JCBlock)that.body;
+                if (body == breakTree &&
+                        resultInfo.checkContext.deferredAttrContext().mode == AttrMode.CHECK) {
+                    breakTreeFound(copyEnv(localEnv));
+                }
                 attribStats(body.stats, localEnv);
             }
 
@@ -4126,8 +4138,8 @@
                     typeargtypes,
                     noteWarner);
 
-            DeferredAttr.DeferredTypeMap checkDeferredMap =
-                deferredAttr.new DeferredTypeMap(DeferredAttr.AttrMode.CHECK, sym, env.info.pendingResolutionPhase);
+            DeferredAttr.DeferredTypeMap<Void> checkDeferredMap =
+                deferredAttr.new DeferredTypeMap<>(DeferredAttr.AttrMode.CHECK, sym, env.info.pendingResolutionPhase);
 
             argtypes = argtypes.map(checkDeferredMap);
 
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, 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
@@ -28,6 +28,8 @@
 import com.sun.source.tree.LambdaExpressionTree.BodyKind;
 import com.sun.source.tree.NewClassTree;
 import com.sun.tools.javac.code.*;
+import com.sun.tools.javac.code.Type.ErrorType;
+import com.sun.tools.javac.code.Type.MethodType;
 import com.sun.tools.javac.code.Type.StructuralTypeMapping;
 import com.sun.tools.javac.code.Types.TypeMapping;
 import com.sun.tools.javac.comp.ArgumentAttr.LocalCacheContext;
@@ -59,6 +61,7 @@
 import java.util.function.Function;
 
 import com.sun.source.tree.MemberReferenceTree;
+import com.sun.tools.javac.code.Type;
 import com.sun.tools.javac.tree.JCTree.JCMemberReference.OverloadKind;
 
 import static com.sun.tools.javac.code.TypeTag.*;
@@ -1002,7 +1005,7 @@
      * where T is computed by retrieving the type that has already been
      * computed for D during a previous deferred attribution round of the given kind.
      */
-    class DeferredTypeMap extends StructuralTypeMapping<Void> {
+    class DeferredTypeMap<T> extends StructuralTypeMapping<T> {
         DeferredAttrContext deferredAttrContext;
 
         protected DeferredTypeMap(AttrMode mode, Symbol msym, MethodResolutionPhase phase) {
@@ -1011,16 +1014,16 @@
         }
 
         @Override
-        public Type visitType(Type t, Void _unused) {
+        public Type visitType(Type t, T p) {
             if (!t.hasTag(DEFERRED)) {
-                return super.visitType(t, null);
+                return super.visitType(t, p);
             } else {
                 DeferredType dt = (DeferredType)t;
-                return typeOf(dt);
+                return typeOf(dt, p);
             }
         }
 
-        protected Type typeOf(DeferredType dt) {
+        protected Type typeOf(DeferredType dt, T p) {
             switch (deferredAttrContext.mode) {
                 case CHECK:
                     return dt.tree.type == null ? Type.noType : dt.tree.type;
@@ -1039,17 +1042,35 @@
      * attribution round (as before), or (ii) by synthesizing a new type R for D
      * (the latter step is useful in a recovery scenario).
      */
-    public class RecoveryDeferredTypeMap extends DeferredTypeMap {
+    public class RecoveryDeferredTypeMap extends DeferredTypeMap<Type> {
 
         public RecoveryDeferredTypeMap(AttrMode mode, Symbol msym, MethodResolutionPhase phase) {
             super(mode, msym, phase != null ? phase : MethodResolutionPhase.BOX);
         }
 
         @Override
-        protected Type typeOf(DeferredType dt) {
-            Type owntype = super.typeOf(dt);
+        protected Type typeOf(DeferredType dt, Type pt) {
+            Type owntype = super.typeOf(dt, pt);
             return owntype == Type.noType ?
-                        recover(dt) : owntype;
+                        recover(dt, pt) : owntype;
+        }
+
+        @Override
+        public Type visitMethodType(Type.MethodType t, Type pt) {
+            if (t.hasTag(METHOD) && deferredAttrContext.mode == AttrMode.CHECK) {
+                Type mtype = deferredAttrContext.msym.type;
+                mtype = mtype.hasTag(ERROR) ? ((ErrorType)mtype).getOriginalType() : null;
+                if (mtype != null && mtype.hasTag(METHOD)) {
+                    List<Type> argtypes1 = map(t.getParameterTypes(), mtype.getParameterTypes());
+                    Type restype1 = visit(t.getReturnType(), mtype.getReturnType());
+                    List<Type> thrown1 = map(t.getThrownTypes(), mtype.getThrownTypes());
+                    if (argtypes1 == t.getParameterTypes() &&
+                        restype1 == t.getReturnType() &&
+                        thrown1 == t.getThrownTypes()) return t;
+                    else return new MethodType(argtypes1, restype1, thrown1, t.tsym);
+                }
+            }
+            return super.visitMethodType(t, pt);
         }
 
         /**
@@ -1059,8 +1080,8 @@
          * representation. Remaining deferred types are attributed using
          * a default expected type (j.l.Object).
          */
-        private Type recover(DeferredType dt) {
-            dt.check(attr.new RecoveryInfo(deferredAttrContext) {
+        private Type recover(DeferredType dt, Type pt) {
+            dt.check(attr.new RecoveryInfo(deferredAttrContext, pt != null ? pt : Type.recoveryType) {
                 @Override
                 protected Type check(DiagnosticPosition pos, Type found) {
                     return chk.checkNonVoid(pos, super.check(pos, found));
@@ -1068,6 +1089,16 @@
             });
             return super.visit(dt);
         }
+
+        private List<Type> map(List<Type> ts, List<Type> pts) {
+            if (ts.nonEmpty()) {
+                List<Type> tail1 = map(ts.tail, pts != null ? pts.tail : null);
+                Type t = visit(ts.head, pts != null && pts.nonEmpty() ? pts.head : null);
+                if (tail1 != ts.tail || t != ts.head)
+                    return tail1.prepend(t);
+            }
+            return ts;
+        }
     }
 
     /**
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Infer.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Infer.java	Thu Jul 12 11:09:23 2018 -0700
@@ -602,7 +602,7 @@
         return mtype;
     }
     //where
-        class ImplicitArgType extends DeferredAttr.DeferredTypeMap {
+        class ImplicitArgType extends DeferredAttr.DeferredTypeMap<Void> {
 
             public ImplicitArgType(Symbol msym, Resolve.MethodResolutionPhase phase) {
                 (rs.deferredAttr).super(AttrMode.SPECULATIVE, msym, phase);
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Operators.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Operators.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -210,7 +210,7 @@
      * Report an operator lookup error.
      */
     private OperatorSymbol reportErrorIfNeeded(DiagnosticPosition pos, Tag tag, Type... args) {
-        if (Stream.of(args).noneMatch(Type::isErroneous)) {
+        if (Stream.of(args).noneMatch(t -> t.isErroneous() || t.hasTag(TypeTag.NONE))) {
             Name opName = operatorName(tag);
             JCDiagnostic.Error opError = (args.length) == 1 ?
                     Errors.OperatorCantBeApplied(opName, args[0]) :
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java	Thu Jul 12 11:09:23 2018 -0700
@@ -2560,8 +2560,8 @@
         }
 
         @Override
-        protected Type typeOf(DeferredType dt) {
-            Type res = super.typeOf(dt);
+        protected Type typeOf(DeferredType dt, Type pt) {
+            Type res = super.typeOf(dt, pt);
             if (!res.isErroneous()) {
                 switch (TreeInfo.skipParens(dt.tree).getTag()) {
                     case LAMBDA:
@@ -3992,7 +3992,12 @@
 
         @Override
         public Symbol access(Name name, TypeSymbol location) {
-            return types.createErrorType(name, location, syms.errSymbol.type).tsym;
+            Symbol sym = bestCandidate();
+            return types.createErrorType(name, location, sym != null ? sym.type : syms.errSymbol.type).tsym;
+        }
+
+        protected Symbol bestCandidate() {
+            return errCandidate().fst;
         }
 
         protected Pair<Symbol, JCDiagnostic> errCandidate() {
@@ -4123,6 +4128,16 @@
                 //conform to source order
                 return details;
             }
+
+        @Override
+        protected Symbol bestCandidate() {
+            Map<Symbol, JCDiagnostic> candidatesMap = mapCandidates();
+            Map<Symbol, JCDiagnostic> filteredCandidates = filterCandidates(candidatesMap);
+            if (filteredCandidates.size() == 1) {
+                return filteredCandidates.keySet().iterator().next();
+            }
+            return null;
+        }
     }
 
     /**
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java	Thu Jul 12 11:09:23 2018 -0700
@@ -49,22 +49,22 @@
     JDK1_4("1.4", 48, 0),
 
     /** JDK 5, codename Tiger. */
-    JDK1_5("1.5", 49, 0),
+    JDK1_5("5", 49, 0),
 
     /** JDK 6. */
-    JDK1_6("1.6", 50, 0),
+    JDK1_6("6", 50, 0),
 
     /** JDK 7. */
-    JDK1_7("1.7", 51, 0),
+    JDK1_7("7", 51, 0),
 
     /** JDK 8. */
-    JDK1_8("1.8", 52, 0),
+    JDK1_8("8", 52, 0),
 
     /** JDK 9. */
-    JDK1_9("1.9", 53, 0),
+    JDK1_9("9", 53, 0),
 
     /** JDK 10. */
-    JDK1_10("1.10", 54, 0),
+    JDK1_10("10", 54, 0),
 
     /** JDK 11. */
     JDK1_11("11", 55, 0),
@@ -95,14 +95,12 @@
         for (Target t : values()) {
             tab.put(t.name, t);
         }
-        tab.put("5", JDK1_5);
-        tab.put("6", JDK1_6);
-        tab.put("7", JDK1_7);
-        tab.put("8", JDK1_8);
-        tab.put("9", JDK1_9);
-        tab.put("10", JDK1_10);
-        tab.put("11", JDK1_11);
-        tab.put("12", JDK1_12);
+        tab.put("1.5", JDK1_5);
+        tab.put("1.6", JDK1_6);
+        tab.put("1.7", JDK1_7);
+        tab.put("1.8", JDK1_8);
+        tab.put("1.9", JDK1_9);
+        tab.put("1.10", JDK1_10);
     }
 
     public final String name;
@@ -120,6 +118,10 @@
         return tab.get(name);
     }
 
+    public boolean isSupported() {
+        return this.compareTo(MIN) >= 0;
+    }
+
     /** Return the character to be used in constructing synthetic
      *  identifiers, where not specified by the JLS.
      */
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java	Thu Jul 12 11:09:23 2018 -0700
@@ -41,6 +41,7 @@
 import java.util.Locale;
 import java.util.ServiceLoader;
 import java.util.Set;
+import java.util.StringJoiner;
 import java.util.TreeSet;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -295,6 +296,16 @@
             }
             super.process(helper, option, operand);
         }
+
+        @Override
+        protected void help(Log log) {
+            StringJoiner sj = new StringJoiner(", ");
+            for(Source source :  Source.values()) {
+                if (source.isSupported())
+                    sj.add(source.name);
+            }
+            super.help(log, log.localize(PrefixKind.JAVAC, descrKey, sj.toString()));
+        }
     },
 
     TARGET("-target", "opt.arg.release", "opt.target", STANDARD, BASIC) {
@@ -306,6 +317,16 @@
             }
             super.process(helper, option, operand);
         }
+
+        @Override
+        protected void help(Log log) {
+            StringJoiner sj = new StringJoiner(", ");
+            for(Target target :  Target.values()) {
+                if (target.isSupported())
+                    sj.add(target.name);
+            }
+            super.help(log, log.localize(PrefixKind.JAVAC, descrKey, sj.toString()));
+        }
     },
 
     RELEASE("--release", "opt.arg.release", "opt.release", STANDARD, BASIC) {
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, 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
@@ -674,7 +674,7 @@
                             scanNumber(pos, 10);
                         } else if (reader.bp == reader.buflen || reader.ch == EOI && reader.bp + 1 == reader.buflen) { // JLS 3.5
                             tk = TokenKind.EOF;
-                            pos = reader.buflen;
+                            pos = reader.realLength;
                         } else {
                             String arg;
 
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1516,6 +1516,7 @@
     ParensResult analyzeParens() {
         int depth = 0;
         boolean type = false;
+        ParensResult defaultResult = ParensResult.PARENS;
         outer: for (int lookahead = 0 ; ; lookahead++) {
             TokenKind tk = S.token(lookahead).kind;
             switch (tk) {
@@ -1568,7 +1569,7 @@
                         case LONG: case FLOAT: case DOUBLE: case BOOLEAN: case VOID:
                             return ParensResult.CAST;
                         default:
-                            return ParensResult.PARENS;
+                            return defaultResult;
                     }
                 case UNDERSCORE:
                 case ASSERT:
@@ -1580,6 +1581,8 @@
                     } else if (peekToken(lookahead, RPAREN, ARROW)) {
                         // Identifier, ')' '->' -> implicit lambda
                         return ParensResult.IMPLICIT_LAMBDA;
+                    } else if (depth == 0 && peekToken(lookahead, COMMA)) {
+                        defaultResult = ParensResult.IMPLICIT_LAMBDA;
                     }
                     type = false;
                     break;
@@ -1665,7 +1668,7 @@
                     break;
                 default:
                     //this includes EOF
-                    return ParensResult.PARENS;
+                    return defaultResult;
             }
         }
     }
@@ -3753,10 +3756,16 @@
                         return defs;
                     } else {
                         pos = token.pos;
-                        List<JCTree> err = isVoid
-                            ? List.of(toP(F.at(pos).MethodDef(mods, name, type, typarams,
-                                List.nil(), List.nil(), null, null)))
-                            : null;
+                        List<JCTree> err;
+                        if (isVoid || typarams.nonEmpty()) {
+                            JCMethodDecl m =
+                                    toP(F.at(pos).MethodDef(mods, name, type, typarams,
+                                                            List.nil(), List.nil(), null, null));
+                            attach(m, dc);
+                            err = List.of(m);
+                        } else {
+                            err = List.nil();
+                        }
                         return List.of(syntaxError(token.pos, err, Errors.Expected(LPAREN)));
                     }
                 }
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, 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
@@ -70,6 +70,7 @@
     /** A character buffer for saved chars.
      */
     protected char[] sbuf = new char[128];
+    protected int realLength;
     protected int sp;
 
     /**
@@ -89,6 +90,7 @@
     protected UnicodeReader(ScannerFactory sf, char[] input, int inputLength) {
         log = sf.log;
         names = sf.names;
+        realLength = inputLength;
         if (inputLength == input.length) {
             if (input.length > 0 && Character.isWhitespace(input[input.length - 1])) {
                 inputLength--;
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1179,7 +1179,9 @@
                         cs.reset();
                         cs.classfile = file;
                         cs.completer = initialCompleter;
-                        cs.owner.members().enter(cs); //XXX - OverwriteBetweenCompilations; syms.getClass is not sufficient anymore
+                        if (cs.owner.kind == PCK) {
+                            cs.owner.members().enter(cs); //XXX - OverwriteBetweenCompilations; syms.getClass is not sufficient anymore
+                        }
                     }
                     list = list.prepend(cs);
                 }
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java	Thu Jul 12 11:09:23 2018 -0700
@@ -123,7 +123,7 @@
                     enclosing != null &&
                     NestingKind.ANONYMOUS ==
                     // Use an anonymous class to determine anonymity!
-                    (new SimpleElementVisitor7<NestingKind, Void>() {
+                    (new SimpleElementVisitor9<NestingKind, Void>() {
                         @Override @DefinedBy(Api.LANGUAGE_MODEL)
                         public NestingKind visitType(TypeElement e, Void p) {
                             return e.getNestingKind();
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac.properties	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac.properties	Thu Jul 12 11:09:23 2018 -0700
@@ -80,11 +80,11 @@
 javac.opt.profile=\
     Check that API used is available in the specified profile
 javac.opt.target=\
-    Generate class files for specific VM version
+    Generate class files for specific VM version. Supported versions: {0}
 javac.opt.release=\
-    Compile for a specific VM version. Supported targets: {0}
+    Compile for a specific release. Supported releases: {0}
 javac.opt.source=\
-    Provide source compatibility with specified release
+    Provide source compatibility with specified release. Supported releases: {0}
 javac.opt.Werror=\
     Terminate compilation if warnings occur
 javac.opt.A=\
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CommandProcessor.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CommandProcessor.java	Thu Jul 12 11:09:23 2018 -0700
@@ -50,7 +50,6 @@
 import sun.jvm.hotspot.debugger.OopHandle;
 import sun.jvm.hotspot.classfile.ClassLoaderDataGraph;
 import sun.jvm.hotspot.memory.FileMapInfo;
-import sun.jvm.hotspot.memory.SymbolTable;
 import sun.jvm.hotspot.memory.SystemDictionary;
 import sun.jvm.hotspot.memory.Universe;
 import sun.jvm.hotspot.gc.shared.CollectedHeap;
@@ -628,35 +627,6 @@
                 }
             }
         },
-        new Command("symboltable", "symboltable name", false) {
-            public void doit(Tokens t) {
-                if (t.countTokens() != 1) {
-                    usage();
-                } else {
-                    out.println(SymbolTable.getTheTable().probe(t.nextToken()));
-                }
-            }
-        },
-        new Command("symboldump", "symboldump", false) {
-            public void doit(Tokens t) {
-                SymbolTable theTable = SymbolTable.getTheTable();
-                theTable.symbolsDo(new SymbolTable.SymbolVisitor() {
-                        public void visit(Symbol sym) {
-                            sym.printValueOn(out);
-                            out.println();
-                        }
-                    });
-                CompactHashTable sharedTable = theTable.getSharedTable();
-                if (sharedTable != null) {
-                    sharedTable.symbolsDo(new CompactHashTable.SymbolVisitor() {
-                            public void visit(Symbol sym) {
-                                sym.printValueOn(out);
-                                out.println();
-                            }
-                        });
-                }
-            }
-        },
         new Command("flags", "flags [ flag | -nd ]", false) {
             public void doit(Tokens t) {
                 int tokens = t.countTokens();
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/classfile/ClassLoaderData.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/classfile/ClassLoaderData.java	Thu Jul 12 11:09:23 2018 -0700
@@ -92,9 +92,9 @@
   public Klass getKlasses()    { return (Klass)klassesField.getValue(this);  }
 
   /** Lookup an already loaded class. If not found null is returned. */
-  public Klass find(Symbol className) {
+  public Klass find(String className) {
     for (Klass l = getKlasses(); l != null; l = l.getNextLinkKlass()) {
-        if (className.equals(l.getName())) {
+        if (l.getName().equals(className)) {
             return l;
         }
     }
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/classfile/ClassLoaderDataGraph.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/classfile/ClassLoaderDataGraph.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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
@@ -55,10 +55,8 @@
 
   /** Lookup an already loaded class in any class loader. */
   public Klass find(String className) {
-    Symbol sym = VM.getVM().getSymbolTable().probe(className);
-    if (sym == null) return null;
     for (ClassLoaderData cld = getClassLoaderGraphHead(); cld != null; cld = cld.next()) {
-        Klass k = cld.find(sym);
+        Klass k = cld.find(className);
         if (k != null) {
             return k;
         }
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/AltHashing.java	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 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
- * 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.
- *
- */
-
-package sun.jvm.hotspot.memory;
-
-public class AltHashing {
-    public static long murmur3_32(long seed, byte[] data) {
-      long h1 = seed;
-      int len = data.length;
-      int count = len;
-
-      int offset = 0;
-
-      // body
-      while (count >= 4) {
-          long k1 = (data[offset] & 0x0FF)
-              | (data[offset + 1] & 0x0FF) << 8
-              | (data[offset + 2] & 0x0FF) << 16
-              | data[offset + 3] << 24;
-
-          count -= 4;
-          offset += 4;
-
-          k1 *= 0xcc9e2d51;
-          k1 = Integer.rotateLeft((int)k1, 15);
-          k1 *= 0x1b873593;
-          k1 &= 0xFFFFFFFFL;
-
-          h1 ^= k1;
-          h1 = Integer.rotateLeft((int)h1, 13);
-          h1 = h1 * 5 + 0xe6546b64;
-          h1 &= 0xFFFFFFFFL;
-      }
-
-      //tail
-      if (count > 0) {
-          long k1 = 0;
-
-          switch (count) {
-              case 3:
-                  k1 ^= (data[offset + 2] & 0xff) << 16;
-                  // fall through
-              case 2:
-                  k1 ^= (data[offset + 1] & 0xff) << 8;
-                  // fall through
-              case 1:
-                  k1 ^= (data[offset] & 0xff);
-                  // fall through
-              default:
-                  k1 *= 0xcc9e2d51;
-                  k1 = Integer.rotateLeft((int)k1, 15);
-                  k1 *= 0x1b873593;
-                  k1 &= 0xFFFFFFFFL;
-                  h1 ^= k1;
-                  h1 &= 0xFFFFFFFFL;
-          }
-      }
-
-      // finalization
-      h1 ^= len;
-
-      // finalization mix force all bits of a hash block to avalanche
-      h1 ^= h1 >> 16;
-      h1 *= 0x85ebca6b;
-      h1 &= 0xFFFFFFFFL;
-      h1 ^= h1 >> 13;
-      h1 *= 0xc2b2ae35;
-      h1 &= 0xFFFFFFFFL;
-      h1 ^= h1 >> 16;
-
-      return h1 & 0xFFFFFFFFL;
-  }
-}
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/SymbolTable.java	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-/*
- * Copyright (c) 2001, 2018, 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.
- *
- */
-
-package sun.jvm.hotspot.memory;
-
-import java.io.*;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.oops.*;
-import sun.jvm.hotspot.types.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.utilities.*;
-
-public class SymbolTable extends sun.jvm.hotspot.utilities.Hashtable {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) {
-    Type type = db.lookupType("SymbolTable");
-    theTableField  = type.getAddressField("_the_table");
-    sharedTableField = type.getAddressField("_shared_table");
-    type = db.lookupType("RehashableSymbolHashtable");
-    seedField = type.getCIntegerField("_seed");
-  }
-
-  // Fields
-  private static AddressField theTableField;
-  private static AddressField sharedTableField;
-  private static CIntegerField seedField;
-
-  private CompactHashTable sharedTable;
-
-  // Accessors
-  public static SymbolTable getTheTable() {
-    Address tmp = theTableField.getValue();
-    SymbolTable table = (SymbolTable) VMObjectFactory.newObject(SymbolTable.class, tmp);
-    Address shared = sharedTableField.getStaticFieldAddress();
-    table.sharedTable = (CompactHashTable)VMObjectFactory.newObject(CompactHashTable.class, shared);
-    return table;
-  }
-
-  public CompactHashTable getSharedTable() {
-      return sharedTable;
-  }
-
-  public static long getSeed() {
-      return (long) seedField.getValue();
-  }
-
-  public static boolean useAlternateHashcode() {
-      if (getSeed() != 0) {
-          return true;
-      }
-      return false;
-  }
-
-  public SymbolTable(Address addr) {
-    super(addr);
-  }
-
-  /** Clone of VM's "temporary" probe routine, as the SA currently
-      does not support mutation so lookup() would have no effect
-      anyway. Returns null if the given string is not in the symbol
-      table. */
-  public Symbol probe(String name) {
-    try {
-      return probe(toModifiedUTF8Bytes(name));
-    } catch (IOException e) {
-      return null;
-    }
-  }
-
-  /** Clone of VM's "temporary" probe routine, as the SA currently
-      does not support mutation so lookup() would have no effect
-      anyway. Searches the regular symbol table and the shared symbol
-      table. Null is returned if the given name is not found in both
-      tables. */
-  public Symbol probe(byte[] name) {
-    long hashValue = hashSymbol(name);
-
-    // shared table does not use alternate hashing algorithm,
-    // it always uses the same original hash code.
-    Symbol s = sharedTable.probe(name, hashValue);
-    if (s != null) {
-      return s;
-    }
-
-    if (useAlternateHashcode()) {
-        hashValue = AltHashing.murmur3_32(getSeed(), name);
-    }
-
-    for (HashtableEntry e = (HashtableEntry) bucket(hashToIndex(hashValue)); e != null; e = (HashtableEntry) e.next()) {
-      if (e.hash() == hashValue) {
-         Symbol sym = Symbol.create(e.literalValue());
-         if (sym.equals(name)) {
-           return sym;
-         }
-      }
-    }
-
-    return null;
-  }
-
-  public interface SymbolVisitor {
-    public void visit(Symbol sym);
-  }
-
-  public void symbolsDo(SymbolVisitor visitor) {
-    int numBuckets = tableSize();
-    for (int i = 0; i < numBuckets; i++) {
-      for (HashtableEntry e = (HashtableEntry) bucket(i); e != null;
-           e = (HashtableEntry) e.next()) {
-        visitor.visit(Symbol.create(e.literalValue()));
-      }
-    }
-  }
-
-  private static byte[] toModifiedUTF8Bytes(String name) throws IOException {
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    DataOutputStream dos = new DataOutputStream(baos);
-    dos.writeUTF(name);
-    dos.flush();
-    byte[] buf = baos.toByteArray();
-    byte[] res = new byte[buf.length - 2];
-    // skip the length part
-    System.arraycopy(buf, 2, res, 0, res.length);
-    return res;
-  }
-}
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ArrayKlass.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ArrayKlass.java	Thu Jul 12 11:09:23 2018 -0700
@@ -72,27 +72,27 @@
   public Klass getLowerDimension()  { return (Klass) lowerDimension.getValue(this); }
 
   // constant class names - javaLangCloneable, javaIoSerializable, javaLangObject
-  // Initialized lazily to avoid initialization ordering dependencies between ArrayKlass and SymbolTable
-  private static Symbol javaLangCloneableName;
-  private static Symbol javaLangObjectName;
-  private static Symbol javaIoSerializableName;
-  private static Symbol javaLangCloneableName() {
+  // Initialized lazily to avoid initialization ordering dependencies between ArrayKlass and String
+  private static String javaLangCloneableName;
+  private static String javaLangObjectName;
+  private static String javaIoSerializableName;
+  private static String javaLangCloneableName() {
     if (javaLangCloneableName == null) {
-      javaLangCloneableName = VM.getVM().getSymbolTable().probe("java/lang/Cloneable");
+      javaLangCloneableName = "java/lang/Cloneable";
     }
     return javaLangCloneableName;
   }
 
-  private static Symbol javaLangObjectName() {
+  private static String javaLangObjectName() {
     if (javaLangObjectName == null) {
-      javaLangObjectName = VM.getVM().getSymbolTable().probe("java/lang/Object");
+      javaLangObjectName = "java/lang/Object";
     }
     return javaLangObjectName;
   }
 
-  private static Symbol javaIoSerializableName() {
+  private static String javaIoSerializableName() {
     if (javaIoSerializableName == null) {
-      javaIoSerializableName = VM.getVM().getSymbolTable().probe("java/io/Serializable");
+      javaIoSerializableName = "java/io/Serializable";
     }
     return javaIoSerializableName;
   }
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ConstantPool.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ConstantPool.java	Thu Jul 12 11:09:23 2018 -0700
@@ -355,7 +355,7 @@
     if (klass.isArrayKlass()) {
        klass = klass.getJavaSuper();
     }
-    return ((InstanceKlass)klass).findMethod(name, sig);
+    return ((InstanceKlass)klass).findMethod(name.asString(), sig.asString());
   }
 
   // returns null, if not resolved.
@@ -364,7 +364,7 @@
     if (klass == null) return null;
     Symbol name = getNameRefAt(which);
     Symbol sig  = getSignatureRefAt(which);
-    return klass.findField(name, sig);
+    return klass.findField(name.asString(), sig.asString());
   }
 
   public int getNameAndTypeRefIndexAt(int index) {
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Field.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Field.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, 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
@@ -47,7 +47,7 @@
     offset               = holder.getFieldOffset(fieldIndex);
     genericSignature     = holder.getFieldGenericSignature(fieldIndex);
 
-    Symbol name          = holder.getFieldName(fieldIndex);
+    name                 = holder.getFieldName(fieldIndex);
     id          = new NamedFieldIdentifier(name.asString());
 
     signature            = holder.getFieldSignature(fieldIndex);
@@ -57,6 +57,7 @@
     accessFlags = new AccessFlags(access);
   }
 
+  private Symbol          name;
   private long            offset;
   private FieldIdentifier id;
   private boolean         isVMField;
@@ -74,6 +75,8 @@
   /** Returns the identifier of the field */
   public FieldIdentifier getID() { return id; }
 
+  public Symbol getName() { return name; }
+
   /** Indicates whether this is a VM field */
   public boolean isVMField() { return isVMField; }
 
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, 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
@@ -729,12 +729,12 @@
   }
 
   /** Field access by name. */
-  public Field findLocalField(Symbol name, Symbol sig) {
+  public Field findLocalField(String name, String sig) {
     int length = getJavaFieldsCount();
     for (int i = 0; i < length; i++) {
       Symbol f_name = getFieldName(i);
       Symbol f_sig  = getFieldSignature(i);
-      if (name.equals(f_name) && sig.equals(f_sig)) {
+      if (f_name.equals(name) && f_sig.equals(sig)) {
         return newField(i);
       }
     }
@@ -743,14 +743,14 @@
   }
 
   /** Find field in direct superinterfaces. */
-  public Field findInterfaceField(Symbol name, Symbol sig) {
+  public Field findInterfaceField(String name, String sig) {
     KlassArray interfaces = getLocalInterfaces();
     int n = interfaces.length();
     for (int i = 0; i < n; i++) {
       InstanceKlass intf1 = (InstanceKlass) interfaces.getAt(i);
       if (Assert.ASSERTS_ENABLED) {
         Assert.that(intf1.isInterface(), "just checking type");
-      }
+     }
       // search for field in current interface
       Field f = intf1.findLocalField(name, sig);
       if (f != null) {
@@ -769,7 +769,7 @@
 
   /** Find field according to JVM spec 5.4.3.2, returns the klass in
       which the field is defined. */
-  public Field findField(Symbol name, Symbol sig) {
+  public Field findField(String name, String sig) {
     // search order according to newest JVM spec (5.4.3.2, p.167).
     // 1) search for field in current klass
     Field f = findLocalField(name, sig);
@@ -788,18 +788,6 @@
   }
 
   /** Find field according to JVM spec 5.4.3.2, returns the klass in
-      which the field is defined (convenience routine) */
-  public Field findField(String name, String sig) {
-    SymbolTable symbols = VM.getVM().getSymbolTable();
-    Symbol nameSym = symbols.probe(name);
-    Symbol sigSym  = symbols.probe(sig);
-    if (nameSym == null || sigSym == null) {
-      return null;
-    }
-    return findField(nameSym, sigSym);
-  }
-
-  /** Find field according to JVM spec 5.4.3.2, returns the klass in
       which the field is defined (retained only for backward
       compatibility with jdbx) */
   public Field findFieldDbg(String name, String sig) {
@@ -932,20 +920,8 @@
      return "L" + super.signature() + ";";
   }
 
-  /** Convenience routine taking Strings; lookup is done in
-      SymbolTable. */
+  /** Find method in vtable. */
   public Method findMethod(String name, String sig) {
-    SymbolTable syms = VM.getVM().getSymbolTable();
-    Symbol nameSym = syms.probe(name);
-    Symbol sigSym  = syms.probe(sig);
-    if (nameSym == null || sigSym == null) {
-      return null;
-    }
-    return findMethod(nameSym, sigSym);
-  }
-
-  /** Find method in vtable. */
-  public Method findMethod(Symbol name, Symbol sig) {
     return findMethod(getMethods(), name, sig);
   }
 
@@ -1055,56 +1031,16 @@
     throw new RuntimeException("Illegal field type at index " + index);
   }
 
-  private static Method findMethod(MethodArray methods, Symbol name, Symbol signature) {
-    int len = methods.length();
-    // methods are sorted, so do binary search
-    int l = 0;
-    int h = len - 1;
-    while (l <= h) {
-      int mid = (l + h) >> 1;
-      Method m = methods.at(mid);
-      long res = m.getName().fastCompare(name);
-      if (res == 0) {
-        // found matching name; do linear search to find matching signature
-        // first, quick check for common case
-        if (m.getSignature().equals(signature)) return m;
-        // search downwards through overloaded methods
-        int i;
-        for (i = mid - 1; i >= l; i--) {
-          Method m1 = methods.at(i);
-          if (!m1.getName().equals(name)) break;
-          if (m1.getSignature().equals(signature)) return m1;
-        }
-        // search upwards
-        for (i = mid + 1; i <= h; i++) {
-          Method m1 = methods.at(i);
-          if (!m1.getName().equals(name)) break;
-          if (m1.getSignature().equals(signature)) return m1;
-        }
-        // not found
-        if (Assert.ASSERTS_ENABLED) {
-          int index = linearSearch(methods, name, signature);
-          if (index != -1) {
-            throw new DebuggerException("binary search bug: should have found entry " + index);
-          }
-        }
-        return null;
-      } else if (res < 0) {
-        l = mid + 1;
-      } else {
-        h = mid - 1;
-      }
+  private static Method findMethod(MethodArray methods, String name, String signature) {
+    int index = linearSearch(methods, name, signature);
+    if (index != -1) {
+      return methods.at(index);
+    } else {
+      return null;
     }
-    if (Assert.ASSERTS_ENABLED) {
-      int index = linearSearch(methods, name, signature);
-      if (index != -1) {
-        throw new DebuggerException("binary search bug: should have found entry " + index);
-      }
-    }
-    return null;
   }
 
-  private static int linearSearch(MethodArray methods, Symbol name, Symbol signature) {
+  private static int linearSearch(MethodArray methods, String name, String signature) {
     int len = (int) methods.length();
     for (int index = 0; index < len; index++) {
       Method m = methods.at(index);
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Method.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Method.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, 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
@@ -93,18 +93,18 @@
 
 
   // constant method names - <init>, <clinit>
-  // Initialized lazily to avoid initialization ordering dependencies between Method and SymbolTable
-  private static Symbol objectInitializerName;
-  private static Symbol classInitializerName;
-  private static Symbol objectInitializerName() {
+  // Initialized lazily to avoid initialization ordering dependencies between ArrayKlass and String
+  private static String objectInitializerName;
+  private static String classInitializerName;
+  private static String objectInitializerName() {
     if (objectInitializerName == null) {
-      objectInitializerName = VM.getVM().getSymbolTable().probe("<init>");
+      objectInitializerName = "<init>";
     }
     return objectInitializerName;
   }
-  private static Symbol classInitializerName() {
+  private static String classInitializerName() {
     if (classInitializerName == null) {
-      classInitializerName = VM.getVM().getSymbolTable().probe("<clinit>");
+      classInitializerName = "<clinit>";
     }
     return classInitializerName;
   }
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Symbol.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Symbol.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, 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
@@ -106,6 +106,10 @@
     return true;
   }
 
+  public boolean equals(String string) {
+    return asString().equals(string);
+  }
+
   public byte[] asByteArray() {
     int length = (int) getLength();
     byte [] result = new byte [length];
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java	Thu Jul 12 11:09:23 2018 -0700
@@ -78,7 +78,6 @@
   private long         logAddressSize;
   private Universe     universe;
   private ObjectHeap   heap;
-  private SymbolTable  symbols;
   private SystemDictionary dict;
   private ClassLoaderDataGraph cldGraph;
   private Threads      threads;
@@ -647,13 +646,6 @@
     return heap;
   }
 
-  public SymbolTable getSymbolTable() {
-    if (symbols == null) {
-      symbols = SymbolTable.getTheTable();
-    }
-    return symbols;
-  }
-
   public SystemDictionary getSystemDictionary() {
     if (dict == null) {
       dict = new SystemDictionary();
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/AbstractHeapGraphWriter.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/AbstractHeapGraphWriter.java	Thu Jul 12 11:09:23 2018 -0700
@@ -43,10 +43,9 @@
 public abstract class AbstractHeapGraphWriter implements HeapGraphWriter {
     // the function iterates heap and calls Oop type specific writers
     protected void write() throws IOException {
-        SymbolTable symTbl = VM.getVM().getSymbolTable();
-        javaLangClass = symTbl.probe("java/lang/Class");
-        javaLangString = symTbl.probe("java/lang/String");
-        javaLangThread = symTbl.probe("java/lang/Thread");
+        javaLangClass = "java/lang/Class";
+        javaLangString = "java/lang/String";
+        javaLangThread = "java/lang/Thread";
         ObjectHeap heap = VM.getVM().getObjectHeap();
         try {
             heap.iterate(new DefaultHeapVisitor() {
@@ -458,7 +457,7 @@
         }
     }
 
-    protected Symbol javaLangClass;
-    protected Symbol javaLangString;
-    protected Symbol javaLangThread;
+    protected String javaLangClass;
+    protected String javaLangString;
+    protected String javaLangThread;
 }
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2018, 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
@@ -309,6 +309,9 @@
 
 public class HeapHprofBinWriter extends AbstractHeapGraphWriter {
 
+    // Record which Symbol names have been dumped already.
+    private HashSet<Symbol> names;
+
     private static final long HPROF_SEGMENTED_HEAP_DUMP_THRESHOLD = 2L * 0x40000000;
 
     // The approximate size of a heap segment. Used to calculate when to create
@@ -381,6 +384,7 @@
 
     public HeapHprofBinWriter() {
         this.KlassMap = new ArrayList<Klass>();
+        this.names = new HashSet<Symbol>();
     }
 
     public synchronized void write(String fileName) throws IOException {
@@ -391,7 +395,6 @@
         VM vm = VM.getVM();
         dbg = vm.getDebugger();
         objectHeap = vm.getObjectHeap();
-        symTbl = vm.getSymbolTable();
 
         OBJ_ID_SIZE = (int) vm.getOopSize();
 
@@ -745,6 +748,11 @@
         } else {
             lineNumber = m.getLineNumberFromBCI(bci);
         }
+        // First dump UTF8 if needed
+        writeSymbol(m.getName());                              // method's name
+        writeSymbol(m.getSignature());                         // method's signature
+        writeSymbol(m.getMethodHolder().getSourceFileName());  // source file name
+        // Then write FRAME descriptor
         writeHeader(HPROF_FRAME, 4 * (int)VM.getVM().getOopSize() + 2 * (int)INT_SIZE);
         writeObjectID(frameSN);                                  // frame serial number
         writeSymbolID(m.getName());                              // method's name
@@ -955,7 +963,7 @@
         out.writeShort((short) fields.size());
         for (Iterator itr = fields.iterator(); itr.hasNext();) {
             Field field = (Field) itr.next();
-            Symbol name = symTbl.probe(field.getID().getName());
+            Symbol name = field.getName();
             writeSymbolID(name);
             char typeCode = (char) field.getSignature().getByteAt(0);
             int kind = signatureToHprofKind(typeCode);
@@ -1049,27 +1057,44 @@
         out.writeInt(0);
     }
 
+    private void writeClassSymbols(Klass k) throws IOException {
+        writeSymbol(k.getName());
+        if (k instanceof InstanceKlass) {
+            InstanceKlass ik = (InstanceKlass) k;
+            List declaredFields = ik.getImmediateFields();
+            for (Iterator itr = declaredFields.iterator(); itr.hasNext();) {
+                Field field = (Field) itr.next();
+                writeSymbol(field.getName());
+            }
+        }
+    }
+
     private void writeSymbols() throws IOException {
+        // Write all the symbols that are used by the classes
+        ClassLoaderDataGraph cldGraph = VM.getVM().getClassLoaderDataGraph();
         try {
-            symTbl.symbolsDo(new SymbolTable.SymbolVisitor() {
-                    public void visit(Symbol sym) {
-                        try {
-                            writeSymbol(sym);
-                        } catch (IOException exp) {
-                            throw new RuntimeException(exp);
-                        }
-                    }
-                });
+             cldGraph.classesDo(new ClassLoaderDataGraph.ClassVisitor() {
+                            public void visit(Klass k) {
+                                try {
+                                    writeClassSymbols(k);
+                                } catch (IOException e) {
+                                    throw new RuntimeException(e);
+                                }
+                            }
+                        });
         } catch (RuntimeException re) {
             handleRuntimeException(re);
         }
     }
 
     private void writeSymbol(Symbol sym) throws IOException {
-        byte[] buf = sym.asString().getBytes("UTF-8");
-        writeHeader(HPROF_UTF8, buf.length + OBJ_ID_SIZE);
-        writeSymbolID(sym);
-        out.write(buf);
+        // If name is already written don't write it again.
+        if (names.add(sym)) {
+            byte[] buf = sym.asString().getBytes("UTF-8");
+            writeHeader(HPROF_UTF8, buf.length + OBJ_ID_SIZE);
+            writeSymbolID(sym);
+            out.write(buf);
+        }
     }
 
     private void writeClasses() throws IOException {
@@ -1118,6 +1143,7 @@
     }
 
     private void writeSymbolID(Symbol sym) throws IOException {
+        assert names.contains(sym);
         writeObjectID(getAddressValue(sym.getAddress()));
     }
 
@@ -1195,7 +1221,6 @@
     private FileOutputStream fos;
     private Debugger dbg;
     private ObjectHeap objectHeap;
-    private SymbolTable symTbl;
     private ArrayList<Klass> KlassMap;
 
     // oopSize of the debuggee
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/ObjectReader.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/ObjectReader.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2018, 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
@@ -135,39 +135,35 @@
       }
    }
 
-   protected Symbol javaLangString;
-   protected Symbol javaUtilHashtableEntry;
-   protected Symbol javaUtilHashtable;
-   protected Symbol javaUtilProperties;
+   protected String javaLangString;
+   protected String javaUtilHashtableEntry;
+   protected String javaUtilHashtable;
+   protected String javaUtilProperties;
 
-   protected Symbol getVMSymbol(String name) {
-      return VM.getVM().getSymbolTable().probe(name);
-   }
-
-   protected Symbol javaLangString() {
+   protected String javaLangString() {
       if (javaLangString == null) {
-         javaLangString = getVMSymbol("java/lang/String");
+         javaLangString = "java/lang/String";
       }
       return javaLangString;
    }
 
-   protected Symbol javaUtilHashtableEntry() {
+   protected String javaUtilHashtableEntry() {
       if (javaUtilHashtableEntry == null) {
-         javaUtilHashtableEntry = getVMSymbol("java/util/Hashtable$Entry");
+         javaUtilHashtableEntry = "java/util/Hashtable$Entry";
       }
       return javaUtilHashtableEntry;
    }
 
-   protected Symbol javaUtilHashtable() {
+   protected String javaUtilHashtable() {
       if (javaUtilHashtable == null) {
-         javaUtilHashtable = getVMSymbol("java/util/Hashtable");
+         javaUtilHashtable = "java/util/Hashtable";
       }
       return javaUtilHashtable;
    }
 
-   protected Symbol javaUtilProperties() {
+   protected String javaUtilProperties() {
       if (javaUtilProperties == null) {
-         javaUtilProperties = getVMSymbol("java/util/Properties");
+         javaUtilProperties = "java/util/Properties";
       }
       return javaUtilProperties;
    }
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaFactoryImpl.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaFactoryImpl.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2018, 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
@@ -127,31 +127,27 @@
    }
 
    // -- Internals only below this point
-   private Symbol javaLangString() {
+   private String javaLangString() {
       if (javaLangString == null) {
-         javaLangString = getSymbol("java/lang/String");
+         javaLangString = "java/lang/String";
       }
       return javaLangString;
    }
 
-   private Symbol javaLangThread() {
+   private String javaLangThread() {
       if (javaLangThread == null) {
-         javaLangThread = getSymbol("java/lang/Thread");
+         javaLangThread = "java/lang/Thread";
       }
       return javaLangThread;
    }
 
-   private Symbol javaLangClass() {
+   private String javaLangClass() {
       if (javaLangClass == null) {
-         javaLangClass = getSymbol("java/lang/Class");
+         javaLangClass = "java/lang/Class";
       }
       return javaLangClass;
    }
 
-   private Symbol getSymbol(String str) {
-      return VM.getVM().getSymbolTable().probe(str);
-   }
-
    private JSJavaObject newJavaInstance(Instance instance) {
       // look for well-known classes
       Symbol className = instance.getKlass().getName();
@@ -196,7 +192,7 @@
 
    // Map<Oop, SoftReference<JSJavaObject>>
    private Map om = new HashMap();
-   private Symbol javaLangString;
-   private Symbol javaLangThread;
-   private Symbol javaLangClass;
+   private String javaLangString;
+   private String javaLangThread;
+   private String javaLangClass;
 }
--- a/src/jdk.internal.vm.compiler/share/classes/module-info.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.internal.vm.compiler/share/classes/module-info.java	Thu Jul 12 11:09:23 2018 -0700
@@ -32,6 +32,7 @@
 
     uses org.graalvm.compiler.code.DisassemblerProvider;
     uses org.graalvm.compiler.core.match.MatchStatementSet;
+    uses org.graalvm.compiler.debug.DebugHandlersFactory;
     uses org.graalvm.compiler.debug.TTYStreamProvider;
     uses org.graalvm.compiler.hotspot.CompilerConfigurationFactory;
     uses org.graalvm.compiler.hotspot.HotSpotBackendFactory;
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.debug.test/src/org/graalvm/compiler/debug/test/CSVUtilTest.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.debug.test/src/org/graalvm/compiler/debug/test/CSVUtilTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -117,8 +117,8 @@
             CSVUtil.Escape.println(new PrintStream(outputStream), format, toObjectArray(args));
             // get the actual string
             String printedStream = new String(outputStream.toByteArray(), StandardCharsets.UTF_8);
-            // remove newline
-            assertEquals(expected, printedStream.substring(0, printedStream.length() - 1));
+            // add newline to the expected string
+            assertEquals(expected + System.lineSeparator(), printedStream);
         }
 
         private static Object[] toObjectArray(String args) {
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.debug.test/src/org/graalvm/compiler/debug/test/VersionsTest.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.debug.test/src/org/graalvm/compiler/debug/test/VersionsTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -27,6 +27,8 @@
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.nio.file.FileVisitResult;
 import java.nio.file.FileVisitor;
 import java.nio.file.Files;
@@ -80,15 +82,15 @@
     }
 
     @Test
-    public void emptyProperties() {
-        Path root = Paths.get("file:/");
+    public void emptyProperties() throws URISyntaxException {
+        Path root = Paths.get(new URI("file:/"));
         Versions v = new Versions(root);
         assertEmpty(v.withVersions(null));
     }
 
     @Test
-    public void emptyWithNullProperties() {
-        Path root = Paths.get("file:/");
+    public void emptyWithNullProperties() throws URISyntaxException {
+        Path root = Paths.get(new URI("file:/"));
         Versions v = new Versions(root);
         assertEmpty(v.withVersions(null));
     }
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CheckGraalIntrinsics.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CheckGraalIntrinsics.java	Thu Jul 12 11:09:23 2018 -0700
@@ -371,6 +371,7 @@
         if (isJDK11OrHigher()) {
             // Relevant for Java flight recorder
             add(toBeInvestigated,
+                            "java/util/Base64$Encoder.encodeBlock([BII[BIZ)V",
                             "jdk/jfr/internal/JVM.getEventWriter()Ljava/lang/Object;");
         }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/api/package-info.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2003, 2018, 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.
+ */
+
+/**
+ *  This package provides the javadoc implementation of relevant
+ *  public API defined in {@link javax.tools}, which provides an
+ *  API alternative to invoking javadoc via the command line.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+package jdk.javadoc.internal.api;
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesFrameWriter.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesFrameWriter.java	Thu Jul 12 11:09:23 2018 -0700
@@ -85,16 +85,13 @@
      * "allclasses-frame.html" file. Generate the file in the current or the
      * destination directory.
      *
-     * @param indexBuilder IndexBuilder object for all classes index.
+     * @param configuration the configuration for this javadoc run
      * @throws DocFileIOException
      */
     public static void generate(HtmlConfiguration configuration,
             IndexBuilder indexBuilder) throws DocFileIOException {
         if (configuration.frames) {
             generate(configuration, indexBuilder, DocPaths.ALLCLASSES_FRAME, true);
-            generate(configuration, indexBuilder, DocPaths.ALLCLASSES_NOFRAME, false);
-        } else {
-            generate(configuration, indexBuilder, DocPaths.ALLCLASSES, false);
         }
     }
 
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Contents.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Contents.java	Thu Jul 12 11:09:23 2018 -0700
@@ -118,7 +118,6 @@
     public final Content indexLabel;
     public final Content interfaceLabel;
     public final Content interfaces;
-    public final Content interfacesItalic;
     public final Content methodDetailLabel;
     public final Content methodLabel;
     public final Content methodSummary;
@@ -157,9 +156,10 @@
     public final Content properties;
     public final Content propertyLabel;
     public final Content propertyDetailsLabel;
-    public final Content propertySummary;
+    public final Content propertySummaryLabel;
     public final Content seeLabel;
     public final Content serializedForm;
+    public final Content servicesLabel;
     public final Content specifiedByLabel;
     public final Content subclassesLabel;
     public final Content subinterfacesLabel;
@@ -245,7 +245,6 @@
         indexLabel = getContent("doclet.Index");
         interfaceLabel = getContent("doclet.Interface");
         interfaces = getContent("doclet.Interfaces");
-        interfacesItalic = getContent("doclet.Interfaces_Italic");
         methodDetailLabel = getContent("doclet.Method_Detail");
         methodSummary = getContent("doclet.Method_Summary");
         methodLabel = getContent("doclet.Method");
@@ -284,9 +283,10 @@
         properties = getContent("doclet.Properties");
         propertyLabel = getContent("doclet.Property");
         propertyDetailsLabel = getContent("doclet.Property_Detail");
-        propertySummary = getContent("doclet.Property_Summary");
+        propertySummaryLabel = getContent("doclet.Property_Summary");
         seeLabel = getContent("doclet.See");
         serializedForm = getContent("doclet.Serialized_Form");
+        servicesLabel = getContent("doclet.Services");
         specifiedByLabel = getContent("doclet.Specified_By");
         subclassesLabel = getContent("doclet.Subclasses");
         subinterfacesLabel = getContent("doclet.Subinterfaces");
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HelpWriter.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HelpWriter.java	Thu Jul 12 11:09:23 2018 -0700
@@ -143,9 +143,13 @@
             htmlTree = (configuration.allowTag(HtmlTag.SECTION))
                     ? HtmlTree.SECTION(overviewHeading)
                     : HtmlTree.LI(HtmlStyle.blockList, overviewHeading);
-            Content overviewBody = contents.getContent("doclet.help.overview.body",
-                    links.createLink(DocPaths.overviewSummary(configuration.frames),
-                    resources.getText("doclet.Overview")));
+            String overviewKey = configuration.showModules
+                    ? "doclet.help.overview.modules.body"
+                    : "doclet.help.overview.packages.body";
+            Content overviewLink = links.createLink(
+                    DocPaths.overviewSummary(configuration.frames),
+                    resources.getText("doclet.Overview"));
+            Content overviewBody = contents.getContent(overviewKey, overviewLink);
             Content overviewPara = HtmlTree.P(overviewBody);
             htmlTree.addContent(overviewPara);
             if (configuration.allowTag(HtmlTag.SECTION)) {
@@ -155,6 +159,29 @@
             }
         }
 
+        // Module
+        if (configuration.showModules) {
+            Content moduleHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                    contents.moduleLabel);
+            htmlTree = (configuration.allowTag(HtmlTag.SECTION))
+                    ? HtmlTree.SECTION(moduleHead)
+                    : HtmlTree.LI(HtmlStyle.blockList, moduleHead);
+            Content moduleIntro = contents.getContent("doclet.help.module.intro");
+            Content modulePara = HtmlTree.P(moduleIntro);
+            htmlTree.addContent(modulePara);
+            HtmlTree ulModule = new HtmlTree(HtmlTag.UL);
+            ulModule.addContent(HtmlTree.LI(contents.packagesLabel));
+            ulModule.addContent(HtmlTree.LI(contents.modulesLabel));
+            ulModule.addContent(HtmlTree.LI(contents.servicesLabel));
+            htmlTree.addContent(ulModule);
+            if (configuration.allowTag(HtmlTag.SECTION)) {
+                ul.addContent(HtmlTree.LI(HtmlStyle.blockList, htmlTree));
+            } else {
+                ul.addContent(htmlTree);
+            }
+
+        }
+
         // Package
         Content packageHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
                 contents.packageLabel);
@@ -165,7 +192,7 @@
         Content packagePara = HtmlTree.P(packageIntro);
         htmlTree.addContent(packagePara);
         HtmlTree ulPackage = new HtmlTree(HtmlTag.UL);
-        ulPackage.addContent(HtmlTree.LI(contents.interfacesItalic));
+        ulPackage.addContent(HtmlTree.LI(contents.interfaces));
         ulPackage.addContent(HtmlTree.LI(contents.classes));
         ulPackage.addContent(HtmlTree.LI(contents.enums));
         ulPackage.addContent(HtmlTree.LI(contents.exceptions));
@@ -195,14 +222,18 @@
         ul1.addContent(HtmlTree.LI(contents.getContent("doclet.help.class_interface.declaration")));
         ul1.addContent(HtmlTree.LI(contents.getContent("doclet.help.class_interface.description")));
         htmlTree.addContent(ul1);
+        htmlTree.addContent(new HtmlTree(HtmlTag.BR));
         HtmlTree ul2 = new HtmlTree(HtmlTag.UL);
         ul2.addContent(HtmlTree.LI(contents.nestedClassSummary));
         ul2.addContent(HtmlTree.LI(contents.fieldSummaryLabel));
+        ul2.addContent(HtmlTree.LI(contents.propertySummaryLabel));
         ul2.addContent(HtmlTree.LI(contents.constructorSummaryLabel));
         ul2.addContent(HtmlTree.LI(contents.methodSummary));
         htmlTree.addContent(ul2);
+        htmlTree.addContent(new HtmlTree(HtmlTag.BR));
         HtmlTree ul3 = new HtmlTree(HtmlTag.UL);
         ul3.addContent(HtmlTree.LI(contents.fieldDetailsLabel));
+        ul3.addContent(HtmlTree.LI(contents.propertyDetailsLabel));
         ul3.addContent(HtmlTree.LI(contents.constructorDetailsLabel));
         ul3.addContent(HtmlTree.LI(contents.methodDetailLabel));
         htmlTree.addContent(ul3);
@@ -342,21 +373,6 @@
             }
         }
 
-        // Prev/Next
-        Content prevHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-                contents.getContent("doclet.help.prev_next.head"));
-        htmlTree = (configuration.allowTag(HtmlTag.SECTION))
-                ? HtmlTree.SECTION(prevHead)
-                : HtmlTree.LI(HtmlStyle.blockList, prevHead);
-        Content prevBody = contents.getContent("doclet.help.prev_next.body");
-        Content prevPara = HtmlTree.P(prevBody);
-        htmlTree.addContent(prevPara);
-        if (configuration.allowTag(HtmlTag.SECTION)) {
-            ul.addContent(HtmlTree.LI(HtmlStyle.blockList, htmlTree));
-        } else {
-            ul.addContent(htmlTree);
-        }
-
         // Frames
         if (configuration.frames) {
             Content frameHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
@@ -367,29 +383,12 @@
             Content framesBody = contents.getContent("doclet.help.frames.body");
             Content framePara = HtmlTree.P(framesBody);
             htmlTree.addContent(framePara);
-        }
 
-        if (configuration.allowTag(HtmlTag.SECTION)) {
-            ul.addContent(HtmlTree.LI(HtmlStyle.blockList, htmlTree));
-        } else {
-            ul.addContent(htmlTree);
-        }
-
-        // All Classes
-        Content allclassesHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-                contents.allClassesLabel);
-        htmlTree = (configuration.allowTag(HtmlTag.SECTION))
-                ? HtmlTree.SECTION(allclassesHead)
-                : HtmlTree.LI(HtmlStyle.blockList, allclassesHead);
-        Content allClassesBody = contents.getContent("doclet.help.all_classes.body",
-                links.createLink(DocPaths.AllClasses(configuration.frames),
-                resources.getText("doclet.All_Classes")));
-        Content allclassesPara = HtmlTree.P(allClassesBody);
-        htmlTree.addContent(allclassesPara);
-        if (configuration.allowTag(HtmlTag.SECTION)) {
-            ul.addContent(HtmlTree.LI(HtmlStyle.blockList, htmlTree));
-        } else {
-            ul.addContent(htmlTree);
+            if (configuration.allowTag(HtmlTag.SECTION)) {
+                ul.addContent(HtmlTree.LI(HtmlStyle.blockList, htmlTree));
+            } else {
+                ul.addContent(htmlTree);
+            }
         }
 
         // Serialized Form
@@ -425,9 +424,10 @@
         }
 
         Content divContent = HtmlTree.DIV(HtmlStyle.contentContainer, ul);
-        Content line30 = HtmlTree.SPAN(HtmlStyle.emphasizedPhrase,
+        divContent.addContent(new HtmlTree(HtmlTag.HR));
+        Content footnote = HtmlTree.SPAN(HtmlStyle.emphasizedPhrase,
                 contents.getContent("doclet.help.footnote"));
-        divContent.addContent(line30);
+        divContent.addContent(footnote);
         if (configuration.allowTag(HtmlTag.MAIN)) {
             mainTree.addContent(divContent);
             contentTree.addContent(mainTree);
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java	Thu Jul 12 11:09:23 2018 -0700
@@ -37,7 +37,6 @@
 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
-import jdk.javadoc.internal.doclets.formats.html.markup.Navigation;
 import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
 import jdk.javadoc.internal.doclets.toolkit.Content;
 import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
@@ -206,7 +205,7 @@
     @Override
     public void addSummaryLabel(Content memberTree) {
         Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
-                contents.propertySummary);
+                contents.propertySummaryLabel);
         memberTree.addContent(label);
     }
 
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Navigation.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Navigation.java	Thu Jul 12 11:09:23 2018 -0700
@@ -106,23 +106,17 @@
     }
 
     enum Position {
-        BOTTOM("allclasses_navbar_bottom", HtmlConstants.START_OF_BOTTOM_NAVBAR, HtmlConstants.END_OF_BOTTOM_NAVBAR),
-        TOP("allclasses_navbar_top", HtmlConstants.START_OF_TOP_NAVBAR, HtmlConstants.END_OF_TOP_NAVBAR);
+        BOTTOM(HtmlConstants.START_OF_BOTTOM_NAVBAR, HtmlConstants.END_OF_BOTTOM_NAVBAR),
+        TOP(HtmlConstants.START_OF_TOP_NAVBAR, HtmlConstants.END_OF_TOP_NAVBAR);
 
-        final String allClassesLinkId;
         final Content startOfNav;
         final Content endOfNav;
 
-        Position(String allClassesLinkId, Content startOfNav, Content endOfNav) {
-            this.allClassesLinkId = allClassesLinkId;
+        Position(Content startOfNav, Content endOfNav) {
             this.startOfNav = startOfNav;
             this.endOfNav = endOfNav;
         }
 
-        String allClassesLinkId() {
-            return allClassesLinkId;
-        }
-
         Content startOfNav() {
             return startOfNav;
         }
@@ -130,20 +124,6 @@
         Content endOfNav() {
             return endOfNav;
         }
-
-        Script allClassesLinkScript() {
-            return new Script("<!--\n"
-                    + "  allClassesLink = document.getElementById(")
-                    .appendStringLiteral(allClassesLinkId)
-                    .append(");\n"
-                            + "  if(window==top) {\n"
-                            + "    allClassesLink.style.display = \"block\";\n"
-                            + "  }\n"
-                            + "  else {\n"
-                            + "    allClassesLink.style.display = \"none\";\n"
-                            + "  }\n"
-                            + "  //-->\n");
-        }
     }
 
     /**
@@ -971,13 +951,6 @@
         tree.addContent(HtmlTree.LI(noFramesContent));
     }
 
-    private void addNavLinkClassIndex(Content tree) {
-        Content allClassesContent = links.createLink(pathToRoot.resolve(
-                DocPaths.AllClasses(configuration.frames)),
-                contents.allClassesLabel, "", "");
-        tree.addContent(HtmlTree.LI(allClassesContent));
-    }
-
     private void addSearch(Content tree) {
         String searchValueId = "search";
         String reset = "reset";
@@ -990,16 +963,6 @@
         tree.addContent(ulSearch);
     }
 
-    private void addAllClassesLinkScript(Content tree, boolean top) {
-        Content div = HtmlTree.DIV(top
-                ? Position.TOP.allClassesLinkScript().asContent()
-                : Position.BOTTOM.allClassesLinkScript().asContent());
-        Content div_noscript = HtmlTree.DIV(contents.noScriptMessage);
-        Content noScript = HtmlTree.NOSCRIPT(div_noscript);
-        div.addContent(noScript);
-        tree.addContent(div);
-    }
-
     private void addFixedNavScript(Content tree) {
         tree.addContent(FIXED_NAV_SCRIPT.asContent());
     }
@@ -1046,26 +1009,6 @@
             }
             HtmlTree subDiv = new HtmlTree(HtmlTag.DIV);
             subDiv.setStyle(HtmlStyle.subNav);
-            HtmlTree ulFrames = new HtmlTree(HtmlTag.UL);
-            ulFrames.setStyle(HtmlStyle.navList);
-            if (!configuration.nonavbar) {
-                if (configuration.frames) {
-                    addNavShowLists(ulFrames);
-                    addNavHideLists(ulFrames);
-                }
-            }
-            subDiv.addContent(ulFrames);
-            HtmlTree ulAllClasses = new HtmlTree(HtmlTag.UL);
-            ulAllClasses.setStyle(HtmlStyle.navList);
-            ulAllClasses.addAttr(HtmlAttr.ID, top
-                    ? Position.TOP.allClassesLinkId()
-                    : Position.BOTTOM.allClassesLinkId());
-            addNavLinkClassIndex(ulAllClasses);
-            subDiv.addContent(ulAllClasses);
-            if (top && configuration.createindex) {
-                addSearch(subDiv);
-            }
-            addAllClassesLinkScript(subDiv, top);
             HtmlTree div = new HtmlTree(HtmlTag.DIV);
             // Add the summary links if present.
             HtmlTree ulNavSummary = new HtmlTree(HtmlTag.UL);
@@ -1077,10 +1020,22 @@
             ulNavDetail.setStyle(HtmlStyle.subNavList);
             addDetailLinks(ulNavDetail);
             div.addContent(ulNavDetail);
+            HtmlTree ulFrames = new HtmlTree(HtmlTag.UL);
+            ulFrames.setStyle(HtmlStyle.navList);
+            if (!configuration.nonavbar) {
+                if (configuration.frames) {
+                    addNavShowLists(ulFrames);
+                    addNavHideLists(ulFrames);
+                }
+            }
+            div.addContent(ulFrames);
             subDiv.addContent(div);
-            subDiv.addContent(queue.poll());
+            if (top && configuration.createindex) {
+                addSearch(subDiv);
+            }
             if (top) {
                 fixedNavDiv.addContent(subDiv);
+                fixedNavDiv.addContent(queue.poll());
                 fixedNavDiv.addContent(Position.TOP.endOfNav());
                 tree.addContent(fixedNavDiv);
                 HtmlTree paddingDiv = HtmlTree.DIV(HtmlStyle.navPadding, Contents.SPACE);
@@ -1088,6 +1043,7 @@
                 addFixedNavScript(tree);
             } else {
                 tree.addContent(subDiv);
+                tree.addContent(queue.poll());
                 tree.addContent(Position.BOTTOM.endOfNav());
             }
             return tree;
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/package-info.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/package-info.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2018, 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
@@ -24,17 +24,18 @@
  */
 
 /**
- * This package contains classes that create and write HTML markup tags.
+ *  This package contains classes that create and write HTML markup tags.
  *
- * The primary low level classes are {@link HtmlTree} and subtypes
- * of {@code Content}. In addition, there are mid-level builders
- * like {@link TableHeader} and {@link Table} to help build more
- * complex HTML trees.
+ *  <p>The primary low level classes are
+ *  {@link jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree HtmlTree}
+ *  and other subtypes of {@code Content}. In addition, there are mid-level builders
+ *  like {@link jdk.javadoc.internal.doclets.formats.html.markup.TableHeader TableHeader}
+ *  and {@link jdk.javadoc.internal.doclets.formats.html.markup.Table Table}
+ *  to help build more complex HTML trees.
  *
  *  <p><b>This is NOT part of any supported API.
  *  If you write code that depends on this, you do so at your own risk.
  *  This code and its internal interfaces are subject to change or
  *  deletion without notice.</b>
  */
-
 package jdk.javadoc.internal.doclets.formats.html.markup;
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties	Thu Jul 12 11:09:23 2018 -0700
@@ -92,7 +92,7 @@
 doclet.Description_From_Interface=Description copied from interface:
 doclet.Description_From_Class=Description copied from class:
 doclet.No_Non_Deprecated_Classes_To_Document=No non-deprecated classes found to document.
-doclet.Interfaces_Italic=Interfaces (italic)
+doclet.Interfaces=Interfaces
 doclet.Enclosing_Class=Enclosing class:
 doclet.Enclosing_Interface=Enclosing interface:
 doclet.Window_Source_title=Source code
@@ -103,20 +103,26 @@
 doclet.help.intro=\
     This API (Application Programming Interface) document has pages corresponding to the items in \
     the navigation bar, described as follows.
-doclet.help.overview.body=\
+doclet.help.overview.modules.body=\
+    The {0} page is the front page of this API document and provides a list of all modules with a \
+    summary for each.  This page can also contain an overall description of the set of modules.
+doclet.help.overview.packages.body=\
     The {0} page is the front page of this API document and provides a list of all packages with a \
     summary for each.  This page can also contain an overall description of the set of packages.
 doclet.help.package.intro=\
     Each package has a page that contains a list of its classes and interfaces, with a summary for \
-    each. This page can contain six categories:
+    each. These pages may contain six categories:
+doclet.help.module.intro=\
+    Each module has a page that contains a list of its packages, dependencies on other modules, \
+    and services, with a summary for each. These page may contain three categories:
 doclet.help.class_interface.head=\
-    Class/Interface
+    Class or Interface
 doclet.help.class_interface.intro=\
     Each class, interface, nested class and nested interface has its own separate page. Each of \
     these pages has three sections consisting of a class/interface description, summary tables, \
     and detailed member descriptions:
 doclet.help.class_interface.inheritance_diagram=\
-    Class inheritance diagram
+    Class Inheritance Diagram
 doclet.help.class_interface.subclasses=\
     Direct Subclasses
 doclet.help.class_interface.subinterfaces=\
@@ -124,9 +130,9 @@
 doclet.help.class_interface.implementations=\
     All Known Implementing Classes
 doclet.help.class_interface.declaration=\
-    Class/interface declaration
+    Class or Interface Declaration
 doclet.help.class_interface.description=\
-    Class/interface description
+    Class or Interface Description
 doclet.help.class_interface.summary=\
     Each summary entry contains the first sentence from the detailed description for that item. \
     The summary entries are alphabetical, while the detailed descriptions are in the order they \
@@ -136,7 +142,7 @@
 doclet.help.use.body=\
     Each documented package, class and interface has its own Use page.  This page describes what \
     packages, classes, methods, constructors and fields use any part of the given class or \
-    package. Given a class or interface A, its Use page includes subclasses of A, fields declared \
+    package. Given a class or interface A, its "Use" page includes subclasses of A, fields declared \
     as A, methods that return A, and methods and constructors with parameters of type A.  \
     You can access this page by first going to the package, class or interface, then clicking on \
     the "Use" link in the navigation bar.
@@ -144,12 +150,12 @@
     Tree (Class Hierarchy)
 doclet.help.tree.intro=\
     There is a {0} page for all packages, plus a hierarchy for each package. Each hierarchy page \
-    contains a list of classes and a list of interfaces. The classes are organized by inheritance \
-    structure starting with {1}. The interfaces do not inherit from {1}.
+    contains a list of classes and a list of interfaces. Classes are organized by inheritance \
+    structure starting with {1}. Interfaces do not inherit from {1}.
 doclet.help.tree.overview=\
     When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
 doclet.help.tree.package=\
-    When viewing a particular package, class or interface page, clicking "Tree" displays the \
+    When viewing a particular package, class or interface page, clicking on "Tree" displays the \
     hierarchy for only that package.
 doclet.help.deprecated.body=\
     The {0} page lists all of the API that have been deprecated. A deprecated API is not \
@@ -158,18 +164,12 @@
 doclet.help.index.head=\
     Index
 doclet.help.index.body=\
-    The {0} contains an alphabetic list of all classes, interfaces, constructors, methods, \
-    and fields.
-doclet.help.prev_next.head=\
-    Prev/Next
-doclet.help.prev_next.body=\
-    These links take you to the next or previous class, interface, package, or related page.
+    The {0} contains an alphabetic index of all classes, interfaces, constructors, methods, \
+    and fields, as well as lists of all packages and all classes.
 doclet.help.frames.head=\
     Frames/No Frames
 doclet.help.frames.body=\
     These links show and hide the HTML frames.  All pages are available with or without frames.
-doclet.help.all_classes.body=\
-    The {0} link shows all classes and interfaces except non-static nested types.
 doclet.help.serial_form.body=\
     Each serializable or externalizable class has a description of its serialization fields and \
     methods. This information is of interest to re-implementors, not to developers using the API. \
@@ -179,19 +179,19 @@
 doclet.help.constants.body=\
     The {0} page lists the static final fields and their values.
 doclet.help.footnote=\
-    This help file applies to API documentation generated using the standard doclet.
+    This help file applies to API documentation generated by the standard doclet.
 doclet.help.enum.intro=\
     Each enum has its own separate page with the following sections:
 doclet.help.enum.declaration=\
-    Enum declaration
+    Enum Declaration
 doclet.help.enum.definition=\
-    Enum description
+    Enum Description
 doclet.help.annotation_type.intro=\
     Each annotation type has its own separate page with the following sections:
 doclet.help.annotation_type.declaration=\
-    Annotation Type declaration
+    Annotation Type Declaration
 doclet.help.annotation_type.description=\
-    Annotation Type description
+    Annotation Type Description
 
 doclet.ClassUse_Packages.that.use.0=Packages that use {0}
 doclet.ClassUse_Uses.of.0.in.1=Uses of {0} in {1}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/package-info.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+
+/**
+ *  The set of low-level file-formats, to be used in conjunction with
+ *  the {@link jdk.javadoc.internal.doclets.toolkit doclets.toolkit} API.
+ *
+ *  <p>Currently, only {@link jdk.javadoc.internal.doclets.formats.html HTML}
+ *  format is supported.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+package jdk.javadoc.internal.doclets.formats;
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/package-info.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/package-info.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, 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
@@ -24,10 +24,25 @@
  */
 
 /**
-    <p><b>This is NOT part of any supported API.
-    If you write code that depends on this, you do so at your own risk.
-    This code and its internal interfaces are subject to change or
-    deletion without notice.</b>
+ *  Doclets provide the user-selectable backends for processing the
+ *  documentation comnments in Java source code.
+ *
+ *  <p>Doclets are implementations of the {@link jdk.javadoc.doclet Doclet API}.</p>
+ *
+ *  <p>Currently, there is only one supported doclet, the
+ *  {@link jdk.javadoc.internal.doclets.formats.html.HtmlDoclet HtmlDoclet},
+ *  for writing API documentation in HTML. Nevertheless, in order to
+ *  separate the high-level code for the general content of each page
+ *  from the low-level details of how to write such content, the code is
+ *  organized in two sections: a format-neutral
+ *  {@link jdk.javadoc.internal.doclets.toolkit toolkit API},
+ *  and a specific {@link jdk.javadoc.internal.doclets.formats format},
+ *  such as {@link jdk.javadoc.internal.doclets.formats.html HTML format}.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
 */
 
 package jdk.javadoc.internal.doclets;
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/package-info.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/package-info.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, 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
@@ -24,17 +24,17 @@
  */
 
 /**
-    This doclet-independent package has a set of classes and
-    interfaces that are the building blocks for doclets. They
-    define the basic structure of doclets and make doclet
-    writing much easier because they provide the content generation
-    code to be shared among different doclets. Builders only provide
-    the structure and content of API documentation.
-    They will not provide any style markup.
-
-    <p><b>This is NOT part of any supported API.
-    If you write code that depends on this, you do so at your own risk.
-    This code and its internal interfaces are subject to change or
-    deletion without notice.</b>
-*/
+ *  This doclet-independent package has a set of classes and
+ *  interfaces that are the building blocks for doclets. They
+ *  define the basic structure of doclets and make doclet
+ *  writing much easier because they provide the content generation
+ *  code to be shared among different doclets. Builders only provide
+ *  the structure and content of API documentation.
+ *  They do not directly provide any style markup.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
 package jdk.javadoc.internal.doclets.toolkit.builders;
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets.properties	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets.properties	Thu Jul 12 11:09:23 2018 -0700
@@ -75,6 +75,7 @@
 doclet.See_Also=See Also:
 doclet.See=See:
 doclet.SerialData=Serial Data:
+doclet.Services=Services
 doclet.Since=Since:
 doclet.Throws=Throws:
 doclet.Version=Version:
@@ -117,7 +118,6 @@
 doclet.Exceptions=Exceptions
 doclet.Errors=Errors
 doclet.Classes=Classes
-doclet.Packages=Packages
 doclet.packages=packages
 doclet.modules=modules
 doclet.types=types
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css	Thu Jul 12 11:09:23 2018 -0700
@@ -191,6 +191,9 @@
     padding:0 0 5px 6px;
     text-transform:uppercase;
 }
+.subNav .navList {
+    padding-top:5px;
+}
 ul.navList, ul.subNavList {
     float:left;
     margin:0 25px 0 0;
@@ -220,6 +223,7 @@
 ul.subNavList li {
     list-style:none;
     float:left;
+    padding-top:10px;
 }
 .topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
     color:#FFFFFF;
@@ -784,6 +788,7 @@
     padding-left:20px;
     position:relative;
     right:-18px;
+    width:400px;
 }
 #reset {
     background-color: rgb(255,255,255);
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/package-info.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/package-info.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, 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
@@ -24,29 +24,28 @@
  */
 
 /**
-    This package has classes used to generate Javadoc tag documentation.
-    Doclets no longer have to implement its own version of standard tags
-    such as &#64;param and &#64;throws.  This is the single, doclet
-    implementation of each standard tag that is shared by all
-    doclets.  Each doclet must have a taglet writer that takes a taglet
-    as input and writes doclet-dependent output. The taglet itself will
-    do the tag processing. For example, suppose we are outputing
-    &#64;throws tags. The taglet would:
-    <ul>
-        <li> Retrieve the list of throws tags to be documented.
-        <li> Replace {&#64;inheritDoc} with the appropriate documentation.
-        <li> Add throws documentation for exceptions that are declared in
-             the signature of the method but
-             not documented with the throws tags.
-    </ul>
-    After doing the steps above, the taglet would pass the information to
-    the taglet writer for writing. The taglets are essentially builders for
-    tags.
-
-    <p><b>This is NOT part of any supported API.
-    If you write code that depends on this, you do so at your own risk.
-    This code and its internal interfaces are subject to change or
-    deletion without notice.</b>
-*/
-
+ *  This package has classes used to generate output for Javadoc tags.
+ *
+ *  <p>Doclets no longer have to implement their own version of standard tags
+ *  such as &#64;param and &#64;throws.  Individual taglets provide
+ *  common processing, independent of the output format.
+ *  Each doclet must have a taglet writer that takes a taglet
+ *  as input and writes doclet-dependent output. The taglet itself will
+ *  do the tag processing. For example, suppose we are outputing
+ *  &#64;throws tags. The taglet would:
+ *  <ul>
+ *      <li> Retrieve the list of throws tags to be documented.
+ *      <li> Replace {&#64;inheritDoc} with the appropriate documentation.
+ *      <li> Add throws documentation for exceptions that are declared in
+ *           the signature of the method but not documented with the throws tags.
+ *  </ul>
+ *  After doing the steps above, the taglet would pass the information to
+ *  the taglet writer for writing. The taglets are essentially builders for
+ *  tags.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
 package jdk.javadoc.internal.doclets.toolkit.taglets;
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/LinkInfo.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/LinkInfo.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, 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
@@ -33,14 +33,14 @@
 import jdk.javadoc.internal.doclets.toolkit.Content;
 
 /**
- * Encapsulates information about a link.
+ *  Encapsulates information about a link.
  *
  *  <p><b>This is NOT part of any supported API.
  *  If you write code that depends on this, you do so at your own risk.
  *  This code and its internal interfaces are subject to change or
  *  deletion without notice.</b>
  *
- * @author Jamie Ho
+ *  @author Jamie Ho
  */
 public abstract class LinkInfo {
 
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/LinkOutput.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/LinkOutput.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, 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
@@ -26,7 +26,7 @@
 package jdk.javadoc.internal.doclets.toolkit.util.links;
 
 /**
- * Stores output of a link.
+ *  Stores output of a link.
  *
  *  <p><b>This is NOT part of any supported API.
  *  If you write code that depends on this, you do so at your own risk.
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/package-info.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/package-info.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, 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
@@ -24,12 +24,11 @@
  */
 
 /**
-    Provides a factory for constructing links.
-
-    <p><b>This is NOT part of any supported API.
-    If you write code that depends on this, you do so at your own risk.
-    This code and its internal interfaces are subject to change or
-    deletion without notice.</b>
-*/
-
+ *  Provides a factory for constructing links.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
 package jdk.javadoc.internal.doclets.toolkit.util.links;
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/package-info.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/package-info.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, 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
@@ -24,13 +24,12 @@
  */
 
 /**
-    This package has utility classes that perform common services required
-    for API documentation generation.
-
-    <p><b>This is NOT part of any supported API.
-    If you write code that depends on this, you do so at your own risk.
-    This code and its internal interfaces are subject to change or
-    deletion without notice.</b>
-*/
-
+ *  This package has utility classes that perform common services required
+ *  for API documentation generation.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
 package jdk.javadoc.internal.doclets.toolkit.util;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/package-info.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/**
+ *  The implementation of the javadoc tool, and associated doclets.
+ *
+ *  <p>Internally, javadoc is composed of two primary parts:
+ *  the {@link jdk.javadoc.internal.tool tool}, and a series of
+ *  {@link jdk.javadoc.internal.doclets doclets}.
+ *
+ *  The tool provides a common infrastructure for command-line processing,
+ *  and for reading the documentation comments in Java source files,
+ *  while doclets provide a user-selectable backend for determining
+ *  how to process the documentation comments.
+ *
+ *  <p><em>Historical Note:</em> Prior to the introduction of the
+ *  {@link javax.lang.model Language Model API} in JDK 6, it was
+ *  not unusual to use the {@link com.sun.javadoc} API as a
+ *  modeling API. But the Language Model API, and associated
+ *  {@link javax.annotation.processing Annotation Processing API}
+ *  provided a better way to model programs, and in JDK 9,
+ *  javadoc itself was converted to using the Language Model API,
+ *  with the {@code com.sun.javadoc API} being deprecated for
+ *  eventual removal.
+ *  </p>
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+package jdk.javadoc.internal;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/package-info.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/**
+ *  Provides the front end for the javadoc tool.
+ *
+ *  <p>The main entry points are in {@link jdk.javadoc.internal.tool.Main}
+ *  which calls the (poorly-named) {@link jdk.javadoc.internal.tool.Start}
+ *  which provides the overall functionality of the tool.
+ *
+ *  <p>The classes provide a framework for processing command-line options
+ *  and determining the set of elements (modules, packages, types and members)
+ *  to be documented.
+ *
+ *  <p>The classes also provide the means to use the javac front end to read
+ *  source files, including the documentation comments.
+ *
+ *  <p>Finally, once the appropriate files have been read, the classes invoke
+ *  the selected doclet to process those files, typically to generate API
+ *  documentation.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+package jdk.javadoc.internal.tool;
--- a/src/jdk.jdwp.agent/unix/native/libdt_socket/socket_md.c	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.jdwp.agent/unix/native/libdt_socket/socket_md.c	Thu Jul 12 11:09:23 2018 -0700
@@ -145,9 +145,15 @@
 
 int dbgsysSocketClose(int fd) {
     int rv;
+
+    /* AIX recommends to repeat the close call on EINTR */
+#if defined(_AIX)
     do {
         rv = close(fd);
     } while (rv == -1 && errno == EINTR);
+#else
+    rv = close(fd);
+#endif
 
     return rv;
 }
--- a/src/jdk.jsobject/share/classes/netscape/javascript/JSObject.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.jsobject/share/classes/netscape/javascript/JSObject.java	Thu Jul 12 11:09:23 2018 -0700
@@ -151,7 +151,7 @@
      * JavaScript engine or if applet is {@code null}
      *
      * @deprecated  The Applet API is deprecated. See the
-     * <a href="{@docRoot}/java/applet/package-summary.html">
+     * <a href="{@docRoot}/java.desktop/java/applet/package-summary.html">
      * java.applet package documentation</a> for further information.
      */
 
--- a/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericGroupPrincipal.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericGroupPrincipal.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, 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
@@ -26,6 +26,7 @@
 package com.sun.security.auth;
 
 import java.security.Principal;
+import java.util.Objects;
 
 /**
  * This class implements the {@code Principal} interface
@@ -195,6 +196,6 @@
      * @return a hash code for this {@code UnixNumericGroupPrincipal}.
      */
     public int hashCode() {
-        return toString().hashCode();
+        return Objects.hash(name, isPrimaryGroup());
     }
 }
--- a/test/TestCommon.gmk	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/TestCommon.gmk	Thu Jul 12 11:09:23 2018 -0700
@@ -448,6 +448,9 @@
 ifneq ($(VS120COMNTOOLS), )
   JTREG_BASIC_OPTIONS += -e:VS120COMNTOOLS="$(shell $(GETMIXEDPATH) "$(patsubst %\,%,$(VS120COMNTOOLS))")"
 endif
+
+JTREG_BASIC_OPTIONS += -e:TEST_IMAGE_GRAAL_DIR=${TEST_IMAGE_DIR}/hotspot/jtreg/graal
+
 # Set other vm and test options
 JTREG_TEST_OPTIONS += $(JAVA_ARGS:%=-javaoptions:%) $(JAVA_VM_ARGS:%=-vmoption:%)
 ifneq ($(JIB_JAR), )
--- a/test/hotspot/gtest/gc/g1/test_heapRegion.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/gtest/gc/g1/test_heapRegion.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, 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
@@ -27,6 +27,9 @@
 #include "gc/g1/g1ConcurrentMarkBitMap.inline.hpp"
 #include "gc/g1/heapRegion.inline.hpp"
 #include "gc/shared/referenceProcessor.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
+#include "runtime/vm_operations.hpp"
+#include "runtime/vmThread.hpp"
 #include "unittest.hpp"
 
 class VerifyAndCountMarkClosure : public StackObj {
@@ -60,11 +63,12 @@
 #define MARK_OFFSET_2 ( 99 * MinObjAlignment)
 #define MARK_OFFSET_3 (337 * MinObjAlignment)
 
-TEST_OTHER_VM(HeapRegion, apply_to_marked_objects) {
-  if (!UseG1GC) {
-    return;
-  }
+class VM_HeapRegionApplyToMarkedObjectsTest : public VM_GTestExecuteAtSafepoint {
+public:
+  void doit();
+};
 
+void VM_HeapRegionApplyToMarkedObjectsTest::doit() {
   G1CollectedHeap* heap = G1CollectedHeap::heap();
 
   // Using region 0 for testing.
@@ -80,6 +84,8 @@
 
   VerifyAndCountMarkClosure cl(bitmap);
 
+  HeapWord* old_top = region->top();
+
   // When top is equal to bottom the closure should not be
   // applied to any object because apply_to_marked_objects
   // will stop at HeapRegion::scan_limit which is equal to top.
@@ -112,5 +118,19 @@
   region->apply_to_marked_objects(bitmap, &cl);
   EXPECT_EQ(4, cl.count());
   cl.reset();
+
+  region->set_top(old_top);
 }
 
+TEST_VM(HeapRegion, apply_to_marked_object) {
+  if (!UseG1GC) {
+    return;
+  }
+
+  // Run the test in our very own safepoint, because otherwise it
+  // modifies a region behind the back of a possibly using allocation
+  // or running GC.
+  VM_HeapRegionApplyToMarkedObjectsTest op;
+  ThreadInVMfromNative invm(JavaThread::current());
+  VMThread::execute(&op);
+}
--- a/test/hotspot/gtest/gc/shared/test_oopStorage.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/gtest/gc/shared/test_oopStorage.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -52,23 +52,23 @@
 class OopStorage::TestAccess : public AllStatic {
 public:
   typedef OopStorage::Block Block;
-  typedef OopStorage::AllocateList AllocateList;
+  typedef OopStorage::AllocationList AllocationList;
   typedef OopStorage::ActiveArray ActiveArray;
 
   static ActiveArray& active_array(const OopStorage& storage) {
     return *storage._active_array;
   }
 
-  static AllocateList& allocate_list(OopStorage& storage) {
-    return storage._allocate_list;
+  static AllocationList& allocation_list(OopStorage& storage) {
+    return storage._allocation_list;
   }
 
-  static const AllocateList& allocate_list(const OopStorage& storage) {
-    return storage._allocate_list;
+  static const AllocationList& allocation_list(const OopStorage& storage) {
+    return storage._allocation_list;
   }
 
-  static Mutex* allocate_mutex(const OopStorage& storage) {
-    return storage._allocate_mutex;
+  static Mutex* allocation_mutex(const OopStorage& storage) {
+    return storage._allocation_mutex;
   }
 
   static bool reduce_deferred_updates(OopStorage& storage) {
@@ -109,13 +109,13 @@
 // building with precompiled headers, or for consistency with that
 // workaround.  There really should be an opto namespace.
 typedef TestAccess::Block OopBlock;
-typedef TestAccess::AllocateList AllocateList;
+typedef TestAccess::AllocationList AllocationList;
 typedef TestAccess::ActiveArray ActiveArray;
 
 // Using EXPECT_EQ can't use NULL directly. Otherwise AIX build breaks.
 const OopBlock* const NULL_BLOCK = NULL;
 
-static size_t list_length(const AllocateList& list) {
+static size_t list_length(const AllocationList& list) {
   size_t result = 0;
   for (const OopBlock* block = list.chead();
        block != NULL;
@@ -125,7 +125,7 @@
   return result;
 }
 
-static void clear_list(AllocateList& list) {
+static void clear_list(AllocationList& list) {
   OopBlock* next;
   for (OopBlock* block = list.head(); block != NULL; block = next) {
     next = list.next(*block);
@@ -133,12 +133,12 @@
   }
 }
 
-static bool is_list_empty(const AllocateList& list) {
+static bool is_list_empty(const AllocationList& list) {
   return list.chead() == NULL;
 }
 
 static bool process_deferred_updates(OopStorage& storage) {
-  MutexLockerEx ml(TestAccess::allocate_mutex(storage), Mutex::_no_safepoint_check_flag);
+  MutexLockerEx ml(TestAccess::allocation_mutex(storage), Mutex::_no_safepoint_check_flag);
   bool result = false;
   while (TestAccess::reduce_deferred_updates(storage)) {
     result = true;
@@ -155,7 +155,7 @@
 }
 
 static size_t empty_block_count(const OopStorage& storage) {
-  const AllocateList& list = TestAccess::allocate_list(storage);
+  const AllocationList& list = TestAccess::allocation_list(storage);
   size_t count = 0;
   for (const OopBlock* block = list.ctail();
        (block != NULL) && block->is_empty();
@@ -183,7 +183,7 @@
   OopStorageTest();
   ~OopStorageTest();
 
-  Mutex _allocate_mutex;
+  Mutex _allocation_mutex;
   Mutex _active_mutex;
   OopStorage _storage;
 
@@ -195,19 +195,19 @@
 };
 
 OopStorageTest::OopStorageTest() :
-  _allocate_mutex(_allocate_rank,
-                  "test_OopStorage_allocate",
-                  false,
-                  Mutex::_safepoint_check_never),
+  _allocation_mutex(_allocate_rank,
+                    "test_OopStorage_allocation",
+                    false,
+                    Mutex::_safepoint_check_never),
   _active_mutex(_active_rank,
                 "test_OopStorage_active",
                 false,
                 Mutex::_safepoint_check_never),
-  _storage("Test Storage", &_allocate_mutex, &_active_mutex)
+  _storage("Test Storage", &_allocation_mutex, &_active_mutex)
 { }
 
 OopStorageTest::~OopStorageTest() {
-  clear_list(TestAccess::allocate_list(_storage));
+  clear_list(TestAccess::allocation_list(_storage));
 }
 
 class OopStorageTestWithAllocation : public OopStorageTest {
@@ -243,10 +243,10 @@
   OopStorage* _storage;
 };
 
-static bool is_allocate_list_sorted(const OopStorage& storage) {
-  // The allocate_list isn't strictly sorted.  Rather, all empty
+static bool is_allocation_list_sorted(const OopStorage& storage) {
+  // The allocation_list isn't strictly sorted.  Rather, all empty
   // blocks are segregated to the end of the list.
-  const AllocateList& list = TestAccess::allocate_list(storage);
+  const AllocationList& list = TestAccess::allocation_list(storage);
   const OopBlock* block = list.ctail();
   for ( ; (block != NULL) && block->is_empty(); block = list.prev(*block)) {}
   for ( ; block != NULL; block = list.prev(*block)) {
@@ -269,7 +269,7 @@
 
 TEST_VM_F(OopStorageTest, allocate_one) {
   EXPECT_EQ(0u, active_count(_storage));
-  EXPECT_TRUE(is_list_empty(TestAccess::allocate_list(_storage)));
+  EXPECT_TRUE(is_list_empty(TestAccess::allocation_list(_storage)));
 
   oop* ptr = _storage.allocate();
   EXPECT_TRUE(ptr != NULL);
@@ -277,11 +277,11 @@
 
   EXPECT_EQ(1u, active_count(_storage));
   EXPECT_EQ(1u, _storage.block_count());
-  EXPECT_EQ(1u, list_length(TestAccess::allocate_list(_storage)));
+  EXPECT_EQ(1u, list_length(TestAccess::allocation_list(_storage)));
 
   EXPECT_EQ(0u, empty_block_count(_storage));
 
-  const OopBlock* block = TestAccess::allocate_list(_storage).chead();
+  const OopBlock* block = TestAccess::allocation_list(_storage).chead();
   EXPECT_NE(block, (OopBlock*)NULL);
   EXPECT_EQ(block, active_head(_storage));
   EXPECT_FALSE(TestAccess::block_is_empty(*block));
@@ -293,11 +293,11 @@
 
   EXPECT_EQ(1u, active_count(_storage));
   EXPECT_EQ(1u, _storage.block_count());
-  EXPECT_EQ(1u, list_length(TestAccess::allocate_list(_storage)));
+  EXPECT_EQ(1u, list_length(TestAccess::allocation_list(_storage)));
 
   EXPECT_EQ(1u, empty_block_count(_storage));
 
-  const OopBlock* new_block = TestAccess::allocate_list(_storage).chead();
+  const OopBlock* new_block = TestAccess::allocation_list(_storage).chead();
   EXPECT_EQ(block, new_block);
   EXPECT_EQ(block, active_head(_storage));
   EXPECT_TRUE(TestAccess::block_is_empty(*block));
@@ -309,11 +309,11 @@
   static const size_t max_entries = 1000;
   oop* entries[max_entries];
 
-  AllocateList& allocate_list = TestAccess::allocate_list(_storage);
+  AllocationList& allocation_list = TestAccess::allocation_list(_storage);
 
   EXPECT_EQ(0u, active_count(_storage));
   EXPECT_EQ(0u, _storage.block_count());
-  EXPECT_TRUE(is_list_empty(allocate_list));
+  EXPECT_TRUE(is_list_empty(allocation_list));
 
   size_t allocated = 0;
   for ( ; allocated < max_entries; ++allocated) {
@@ -326,8 +326,8 @@
       if (TestAccess::block_is_full(block)) {
         break;
       } else {
-        EXPECT_FALSE(is_list_empty(allocate_list));
-        EXPECT_EQ(&block, allocate_list.chead());
+        EXPECT_FALSE(is_list_empty(allocation_list));
+        EXPECT_EQ(&block, allocation_list.chead());
       }
     }
     entries[allocated] = _storage.allocate();
@@ -336,7 +336,7 @@
   EXPECT_EQ(allocated, _storage.allocation_count());
   EXPECT_EQ(1u, active_count(_storage));
   EXPECT_EQ(1u, _storage.block_count());
-  EXPECT_TRUE(is_list_empty(allocate_list));
+  EXPECT_TRUE(is_list_empty(allocation_list));
   const OopBlock& block = *TestAccess::active_array(_storage).at(0);
   EXPECT_TRUE(TestAccess::block_is_full(block));
   EXPECT_EQ(allocated, TestAccess::block_allocation_count(block));
@@ -346,7 +346,7 @@
     size_t remaining = allocated - (i + 1);
     EXPECT_EQ(remaining, TestAccess::block_allocation_count(block));
     EXPECT_EQ(remaining, _storage.allocation_count());
-    EXPECT_FALSE(is_list_empty(allocate_list));
+    EXPECT_FALSE(is_list_empty(allocation_list));
   }
 }
 
@@ -354,7 +354,7 @@
   static const size_t max_entries = 1000;
   oop* entries[max_entries];
 
-  AllocateList& allocate_list = TestAccess::allocate_list(_storage);
+  AllocationList& allocation_list = TestAccess::allocation_list(_storage);
 
   EXPECT_EQ(0u, empty_block_count(_storage));
 
@@ -362,12 +362,12 @@
   ASSERT_TRUE(entries[0] != NULL);
   EXPECT_EQ(1u, active_count(_storage));
   EXPECT_EQ(1u, _storage.block_count());
-  EXPECT_EQ(1u, list_length(allocate_list));
+  EXPECT_EQ(1u, list_length(allocation_list));
   EXPECT_EQ(0u, empty_block_count(_storage));
 
   const OopBlock* block = TestAccess::active_array(_storage).at(0);
   EXPECT_EQ(1u, TestAccess::block_allocation_count(*block));
-  EXPECT_EQ(block, allocate_list.chead());
+  EXPECT_EQ(block, allocation_list.chead());
 
   for (size_t i = 1; i < max_entries; ++i) {
     entries[i] = _storage.allocate();
@@ -376,40 +376,40 @@
     EXPECT_EQ(0u, empty_block_count(_storage));
 
     if (block == NULL) {
-      ASSERT_FALSE(is_list_empty(allocate_list));
-      EXPECT_EQ(1u, list_length(allocate_list));
-      block = allocate_list.chead();
+      ASSERT_FALSE(is_list_empty(allocation_list));
+      EXPECT_EQ(1u, list_length(allocation_list));
+      block = allocation_list.chead();
       EXPECT_EQ(1u, TestAccess::block_allocation_count(*block));
       EXPECT_EQ(block, active_head(_storage));
     } else if (TestAccess::block_is_full(*block)) {
-      EXPECT_TRUE(is_list_empty(allocate_list));
+      EXPECT_TRUE(is_list_empty(allocation_list));
       block = NULL;
     } else {
-      EXPECT_FALSE(is_list_empty(allocate_list));
-      EXPECT_EQ(block, allocate_list.chead());
+      EXPECT_FALSE(is_list_empty(allocation_list));
+      EXPECT_EQ(block, allocation_list.chead());
       EXPECT_EQ(block, active_head(_storage));
     }
   }
 
   if (block != NULL) {
     EXPECT_NE(0u, TestAccess::block_allocation_count(*block));
-    EXPECT_FALSE(is_list_empty(allocate_list));
-    EXPECT_EQ(block, allocate_list.chead());
+    EXPECT_FALSE(is_list_empty(allocation_list));
+    EXPECT_EQ(block, allocation_list.chead());
     EXPECT_EQ(block, active_head(_storage));
   }
 
   for (size_t i = 0; i < max_entries; ++i) {
     release_entry(_storage, entries[i]);
-    EXPECT_TRUE(is_allocate_list_sorted(_storage));
+    EXPECT_TRUE(is_allocation_list_sorted(_storage));
     EXPECT_EQ(max_entries - (i + 1), total_allocation_count(_storage));
   }
 
-  EXPECT_EQ(active_count(_storage), list_length(allocate_list));
+  EXPECT_EQ(active_count(_storage), list_length(allocation_list));
   EXPECT_EQ(active_count(_storage), _storage.block_count());
   EXPECT_EQ(active_count(_storage), empty_block_count(_storage));
-  for (const OopBlock* block = allocate_list.chead();
+  for (const OopBlock* block = allocation_list.chead();
        block != NULL;
-       block = allocate_list.next(*block)) {
+       block = allocation_list.next(*block)) {
     EXPECT_TRUE(TestAccess::block_is_empty(*block));
   }
 }
@@ -420,10 +420,10 @@
 
   EXPECT_EQ(0u, empty_block_count(_storage));
 
-  AllocateList& allocate_list = TestAccess::allocate_list(_storage);
+  AllocationList& allocation_list = TestAccess::allocation_list(_storage);
 
   EXPECT_EQ(_max_entries, total_allocation_count(_storage));
-  EXPECT_GE(1u, list_length(allocate_list));
+  EXPECT_GE(1u, list_length(allocation_list));
 
   // Release all entries in "random" order.
   size_t released = 0;
@@ -433,14 +433,14 @@
       _entries[i] = NULL;
       ++released;
       EXPECT_EQ(_max_entries - released, total_allocation_count(_storage));
-      EXPECT_TRUE(is_allocate_list_sorted(_storage));
+      EXPECT_TRUE(is_allocation_list_sorted(_storage));
     }
   }
 
-  EXPECT_EQ(active_count(_storage), list_length(allocate_list));
+  EXPECT_EQ(active_count(_storage), list_length(allocation_list));
   EXPECT_EQ(active_count(_storage), _storage.block_count());
   EXPECT_EQ(0u, total_allocation_count(_storage));
-  EXPECT_EQ(list_length(allocate_list), empty_block_count(_storage));
+  EXPECT_EQ(list_length(allocation_list), empty_block_count(_storage));
 }
 
 TEST_VM_F(OopStorageTestWithAllocation, random_allocate_release) {
@@ -450,10 +450,10 @@
 
   EXPECT_EQ(0u, empty_block_count(_storage));
 
-  AllocateList& allocate_list = TestAccess::allocate_list(_storage);
+  AllocationList& allocation_list = TestAccess::allocation_list(_storage);
 
   EXPECT_EQ(_max_entries, total_allocation_count(_storage));
-  EXPECT_GE(1u, list_length(allocate_list));
+  EXPECT_GE(1u, list_length(allocation_list));
 
   // Release all entries in "random" order, "randomly" interspersed
   // with additional allocations.
@@ -466,20 +466,20 @@
       ++released;
       ++total_released;
       EXPECT_EQ(_max_entries - released, total_allocation_count(_storage));
-      EXPECT_TRUE(is_allocate_list_sorted(_storage));
+      EXPECT_TRUE(is_allocation_list_sorted(_storage));
       if (total_released % allocate_step == 0) {
         _entries[i] = _storage.allocate();
         --released;
         EXPECT_EQ(_max_entries - released, total_allocation_count(_storage));
-        EXPECT_TRUE(is_allocate_list_sorted(_storage));
+        EXPECT_TRUE(is_allocation_list_sorted(_storage));
       }
     }
   }
 
-  EXPECT_EQ(active_count(_storage), list_length(allocate_list));
+  EXPECT_EQ(active_count(_storage), list_length(allocation_list));
   EXPECT_EQ(active_count(_storage), _storage.block_count());
   EXPECT_EQ(0u, total_allocation_count(_storage));
-  EXPECT_EQ(list_length(allocate_list), empty_block_count(_storage));
+  EXPECT_EQ(list_length(allocation_list), empty_block_count(_storage));
 }
 
 template<bool sorted>
@@ -1200,10 +1200,10 @@
 const size_t OopStorageBlockCollectionTest::nvalues;
 const void* const OopStorageBlockCollectionTest::_pseudo_owner[] = {};
 
-class OopStorageAllocateListTest : public OopStorageBlockCollectionTest {};
+class OopStorageAllocationListTest : public OopStorageBlockCollectionTest {};
 
-TEST_F(OopStorageAllocateListTest, empty_list) {
-  AllocateList list;
+TEST_F(OopStorageAllocationListTest, empty_list) {
+  AllocationList list;
 
   EXPECT_TRUE(is_list_empty(list));
   EXPECT_EQ(NULL_BLOCK, list.head());
@@ -1211,8 +1211,8 @@
   EXPECT_EQ(NULL_BLOCK, list.ctail());
 }
 
-TEST_F(OopStorageAllocateListTest, push_back) {
-  AllocateList list;
+TEST_F(OopStorageAllocationListTest, push_back) {
+  AllocationList list;
 
   for (size_t i = 0; i < nvalues; ++i) {
     list.push_back(*values[i]);
@@ -1241,8 +1241,8 @@
   clear_list(list);
 }
 
-TEST_F(OopStorageAllocateListTest, push_front) {
-  AllocateList list;
+TEST_F(OopStorageAllocationListTest, push_front) {
+  AllocationList list;
 
   for (size_t i = 0; i < nvalues; ++i) {
     list.push_front(*values[i]);
@@ -1271,22 +1271,22 @@
   clear_list(list);
 }
 
-class OopStorageAllocateListTestWithList : public OopStorageAllocateListTest {
+class OopStorageAllocationListTestWithList : public OopStorageAllocationListTest {
 public:
-  OopStorageAllocateListTestWithList() : list() {
+  OopStorageAllocationListTestWithList() : list() {
     for (size_t i = 0; i < nvalues; ++i) {
       list.push_back(*values[i]);
     }
   }
 
-  ~OopStorageAllocateListTestWithList() {
+  ~OopStorageAllocationListTestWithList() {
     clear_list(list);
   }
 
-  AllocateList list;
+  AllocationList list;
 };
 
-TEST_F(OopStorageAllocateListTestWithList, unlink_front) {
+TEST_F(OopStorageAllocationListTestWithList, unlink_front) {
   EXPECT_EQ(list.chead(), values[0]);
   EXPECT_EQ(list.ctail(), values[nvalues - 1]);
 
@@ -1304,7 +1304,7 @@
   EXPECT_EQ(NULL_BLOCK, block);
 }
 
-TEST_F(OopStorageAllocateListTestWithList, unlink_back) {
+TEST_F(OopStorageAllocationListTestWithList, unlink_back) {
   EXPECT_EQ(list.chead(), values[0]);
 
   list.unlink(*values[nvalues - 1]);
@@ -1321,7 +1321,7 @@
   EXPECT_EQ(NULL_BLOCK, block);
 }
 
-TEST_F(OopStorageAllocateListTestWithList, unlink_middle) {
+TEST_F(OopStorageAllocationListTestWithList, unlink_middle) {
   EXPECT_EQ(list.chead(), values[0]);
 
   size_t index = nvalues / 2;
@@ -1344,8 +1344,8 @@
   EXPECT_EQ(NULL_BLOCK, block);
 }
 
-TEST_F(OopStorageAllocateListTest, single) {
-  AllocateList list;
+TEST_F(OopStorageAllocationListTest, single) {
+  AllocationList list;
 
   list.push_back(*values[0]);
   EXPECT_EQ(NULL_BLOCK, list.next(*values[0]));
--- a/test/hotspot/gtest/gc/z/test_zAddress.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/gtest/gc/z/test_zAddress.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,6 +1,24 @@
 /*
  * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
- * ORACLE PROPRIETARY/CONFIDENTIAL.  Use is subject to license terms.
+ * 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.
  */
 
 #include "precompiled.hpp"
--- a/test/hotspot/gtest/gc/z/test_zArray.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/gtest/gc/z/test_zArray.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,6 +1,24 @@
 /*
  * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
- * ORACLE PROPRIETARY/CONFIDENTIAL.  Use is subject to license terms.
+ * 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.
  */
 
 #include "precompiled.hpp"
--- a/test/hotspot/gtest/gc/z/test_zBitField.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/gtest/gc/z/test_zBitField.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,6 +1,24 @@
 /*
  * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
- * ORACLE PROPRIETARY/CONFIDENTIAL.  Use is subject to license terms.
+ * 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.
  */
 
 #include "precompiled.hpp"
--- a/test/hotspot/gtest/gc/z/test_zBitMap.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/gtest/gc/z/test_zBitMap.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,6 +1,24 @@
 /*
  * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
- * ORACLE PROPRIETARY/CONFIDENTIAL.  Use is subject to license terms.
+ * 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.
  */
 
 #include "precompiled.hpp"
--- a/test/hotspot/gtest/gc/z/test_zForwardingTable.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/gtest/gc/z/test_zForwardingTable.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,6 +1,24 @@
 /*
  * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
- * ORACLE PROPRIETARY/CONFIDENTIAL.  Use is subject to license terms.
+ * 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.
  */
 
 #include "precompiled.hpp"
--- a/test/hotspot/gtest/gc/z/test_zList.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/gtest/gc/z/test_zList.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,6 +1,24 @@
 /*
  * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
- * ORACLE PROPRIETARY/CONFIDENTIAL.  Use is subject to license terms.
+ * 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.
  */
 
 #include "precompiled.hpp"
--- a/test/hotspot/gtest/gc/z/test_zLiveMap.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/gtest/gc/z/test_zLiveMap.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,6 +1,24 @@
 /*
  * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
- * ORACLE PROPRIETARY/CONFIDENTIAL.  Use is subject to license terms.
+ * 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.
  */
 
 #include "precompiled.hpp"
--- a/test/hotspot/gtest/gc/z/test_zPhysicalMemory.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/gtest/gc/z/test_zPhysicalMemory.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,6 +1,24 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
- * ORACLE PROPRIETARY/CONFIDENTIAL.  Use is subject to license terms.
+ * Copyright (c) 2016, 2018, 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.
  */
 
 #include "precompiled.hpp"
@@ -37,6 +55,9 @@
 
   ZPhysicalMemoryManager pmem_manager(10 * SegmentSize, SegmentSize);
 
+  pmem_manager.try_ensure_unused_capacity(10 * SegmentSize);
+  EXPECT_EQ(pmem_manager.unused_capacity(), 10 * SegmentSize);
+
   ZPhysicalMemory pmem = pmem_manager.alloc(8 * SegmentSize);
   EXPECT_EQ(pmem.nsegments(), 1u) << "wrong number of segments";
 
--- a/test/hotspot/gtest/gc/z/test_zUtils.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/gtest/gc/z/test_zUtils.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,6 +1,24 @@
 /*
  * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
- * ORACLE PROPRIETARY/CONFIDENTIAL.  Use is subject to license terms.
+ * 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.
  */
 
 #include "precompiled.hpp"
--- a/test/hotspot/gtest/gc/z/test_zVirtualMemory.cpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/gtest/gc/z/test_zVirtualMemory.cpp	Thu Jul 12 11:09:23 2018 -0700
@@ -1,6 +1,24 @@
 /*
  * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
- * ORACLE PROPRIETARY/CONFIDENTIAL.  Use is subject to license terms.
+ * 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.
  */
 
 #include "precompiled.hpp"
--- a/test/hotspot/gtest/utilities/utilitiesHelper.inline.hpp	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/gtest/utilities/utilitiesHelper.inline.hpp	Thu Jul 12 11:09:23 2018 -0700
@@ -35,7 +35,7 @@
 public:
   Semaphore* _test_complete;
   VM_StopSafepoint(Semaphore* wait_for) : _test_complete(wait_for) {}
-  VMOp_Type type() const          { return VMOp_Dummy; }
+  VMOp_Type type() const          { return VMOp_None; }
   Mode evaluation_mode() const    { return _no_safepoint; }
   bool is_cheap_allocated() const { return false; }
   void doit()                     { _test_complete->wait(); }
--- a/test/hotspot/jtreg/Makefile	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/Makefile	Thu Jul 12 11:09:23 2018 -0700
@@ -4,9 +4,7 @@
 #
 # 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.
+# 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
--- a/test/hotspot/jtreg/ProblemList-graal.txt	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/ProblemList-graal.txt	Thu Jul 12 11:09:23 2018 -0700
@@ -95,6 +95,7 @@
 compiler/intrinsics/mathexact/sanity/MultiplyExactLongTest.java  8202124   generic-all
 compiler/intrinsics/mathexact/sanity/MultiplyExactIntTest.java   8202124   generic-all
 compiler/whitebox/DeoptimizeAllTest.java                         8202124   generic-all
+compiler/whitebox/DeoptimizeFramesTest.java                      8202124   generic-all
 compiler/whitebox/DeoptimizeMethodTest.java                      8202124   generic-all
 compiler/whitebox/ForceNMethodSweepTest.java                     8202124   generic-all
 compiler/whitebox/GetNMethodTest.java                            8202124   generic-all
@@ -121,10 +122,6 @@
 vmTestbase/nsk/jdi/ArrayType/newInstance/newinstance001/TestDescription.java                              8203174   generic-all
 vmTestbase/nsk/jdi/ArrayType/newInstance/newinstance002/TestDescription.java                              8203174   generic-all
 vmTestbase/nsk/jdi/ArrayType/newInstance/newinstance003/TestDescription.java                              8203174   generic-all
-vmTestbase/nsk/jdi/EventRequestManager/methodExitRequests/methexitreq002/TestDescription.java             8203174   generic-all
-vmTestbase/nsk/jdi/MonitorContendedEnteredRequest/MonitorContendedEnteredRequest001/TestDescription.java  8203174   generic-all
-vmTestbase/nsk/jdi/MonitorContendedEnteredRequest/MonitorContendedEnteredRequest002/TestDescription.java  8203174   generic-all
-vmTestbase/nsk/jdi/MonitorWaitedRequest/addClassExclusionFilter/TestDescription.java                      8203174   generic-all
 vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects001/referringObjects001.java          8203174   generic-all
 vmTestbase/nsk/jdi/ReferenceType/instances/instances002/instances002.java                                 8203174   generic-all
 vmTestbase/nsk/jdi/ReferenceType/instances/instances003/instances003.java                                 8203174   generic-all
@@ -153,8 +150,6 @@
 vmTestbase/nsk/jvmti/ForceEarlyReturn/ForceEarlyReturn001/TestDescription.java     8195674   generic-all
 vmTestbase/nsk/jvmti/ForceEarlyReturn/ForceEarlyReturn002/TestDescription.java     8195674   generic-all
 
-vmTestbase/nsk/jvmti/AttachOnDemand/attach024/TestDescription.java                 8195630   generic-all
-
 vmTestbase/nsk/jvmti/unit/FollowReferences/followref003/TestDescription.java       8202342   generic-all
 
 vmTestbase/nsk/jvmti/scenarios/hotswap/HS102/hs102t002/TestDescription.java        8204506   macosx-all
@@ -171,3 +166,21 @@
 compiler/stable/TestStableShort.java                             8204347   generic-all
 compiler/stable/TestStableUByte.java                             8204347   generic-all
 compiler/stable/TestStableUShort.java                            8204347   generic-all
+
+# Graal unit tests
+org.graalvm.compiler.core.test.CheckGraalInvariants                              8205081
+org.graalvm.compiler.core.test.inlining.PolymorphicInliningTest                  8205081
+org.graalvm.compiler.core.test.OptionsVerifierTest                               8205081
+org.graalvm.compiler.core.test.ProfilingInfoTest                                 8205081
+org.graalvm.compiler.hotspot.test.CompilationWrapperTest                         8205081
+org.graalvm.compiler.hotspot.test.HsErrLogTest                                   8205081
+org.graalvm.compiler.hotspot.test.OptionsInFileTest                              8205081
+org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest   8205081
+org.graalvm.compiler.replacements.test.classfile.RedefineIntrinsicTest           8205081
+
+org.graalvm.compiler.core.test.deopt.CompiledMethodTest          8202955
+org.graalvm.compiler.core.test.CountedLoopTest                   8199885
+org.graalvm.compiler.debug.test.DebugContextTest                 8203504
+org.graalvm.compiler.core.test.VerifyDebugUsageTest              8205078
+
+org.graalvm.compiler.hotspot.test.GraalOSRTest                   8206947
--- a/test/hotspot/jtreg/TEST.ROOT	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/TEST.ROOT	Thu Jul 12 11:09:23 2018 -0700
@@ -29,7 +29,7 @@
 # The list of keywords supported in this test suite
 keys=cte_test jcmd nmt regression gc stress metaspace headful intermittent
 
-groups=TEST.groups
+groups=TEST.groups TEST.quick-groups
 
 # Source files for classes that will be used at the beginning of each test suite run,
 # to determine additional characteristics of the system for use with the @requires tag.
--- a/test/hotspot/jtreg/TEST.groups	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/TEST.groups	Thu Jul 12 11:09:23 2018 -0700
@@ -76,7 +76,8 @@
 hotspot_not_fast_compiler = \
   :hotspot_compiler \
   -:tier1_compiler \
-  -:hotspot_slow_compiler
+  -:hotspot_slow_compiler \
+  -compiler/graalunit
 
 hotspot_slow_compiler = \
   compiler/codegen/aes \
@@ -328,846 +329,19 @@
 vmTestbase_nsk_monitoring = \
   vmTestbase/nsk/monitoring
 
-vmTestbase_nsk_monitoring_quick = \
-  vmTestbase/nsk/monitoring/MemoryNotificationInfo/MemoryNotificationInfo/info001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryNotificationInfo/from/from001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryNotificationInfo/getCount/getcount001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryNotificationInfo/getPoolName/getpoolname001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryNotificationInfo/getUsage/getusage001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsage/getusage001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsage/getusage002/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsage/getusage003/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsage/getusage004/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsage/getusage005/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThreshold/getthreshold001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThreshold/getthreshold002/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThreshold/getthreshold003/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThreshold/getthreshold004/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThreshold/getthreshold005/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThresholdCount/getcount001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThresholdCount/getcount002/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThresholdCount/getcount003/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThresholdCount/getcount004/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThresholdCount/getcount005/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getPeakUsage/getpeak001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getPeakUsage/getpeak002/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getPeakUsage/getpeak003/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getPeakUsage/getpeak004/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getPeakUsage/getpeak005/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsage/getusage001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsage/getusage002/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsage/getusage003/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsage/getusage004/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsage/getusage005/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThreshold/getthreshold001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThreshold/getthreshold002/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThreshold/getthreshold003/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThreshold/getthreshold004/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThreshold/getthreshold005/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThresholdCount/getcount001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThresholdCount/getcount002/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThresholdCount/getcount003/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThresholdCount/getcount004/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThresholdCount/getcount005/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdExceeded/isexceeded001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdExceeded/isexceeded002/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdExceeded/isexceeded003/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdExceeded/isexceeded004/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdExceeded/isexceeded005/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdSupported/issupported001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdSupported/issupported002/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdSupported/issupported003/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdSupported/issupported004/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdSupported/issupported005/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded002/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded003/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded004/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded005/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdSupported/issupported001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdSupported/issupported002/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdSupported/issupported003/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdSupported/issupported004/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdSupported/issupported005/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/resetPeakUsage/reset001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/resetPeakUsage/reset002/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/resetPeakUsage/reset003/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/resetPeakUsage/reset004/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/resetPeakUsage/reset005/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/setCollectionUsageThreshold/setthreshold001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/setCollectionUsageThreshold/setthreshold002/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/setCollectionUsageThreshold/setthreshold003/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/setCollectionUsageThreshold/setthreshold004/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/setCollectionUsageThreshold/setthreshold005/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/setUsageThreshold/setthreshold001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/setUsageThreshold/setthreshold002/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/setUsageThreshold/setthreshold003/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/setUsageThreshold/setthreshold004/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryPoolMBean/setUsageThreshold/setthreshold005/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryUsage/MemoryUsage/memoryusage001/TestDescription.java \
-  vmTestbase/nsk/monitoring/MemoryUsage/from/from001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadInfo/from_c/from_c001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadInfo/getLockName/getlockname001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadInfo/getLockOwnerName/getlockownername001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadInfo/isInNative/isinnative001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadInfo/isSuspended/issuspended001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadInfo/isSuspended/issuspended002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/findMonitorDeadlockedThreads/find001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/findMonitorDeadlockedThreads/find002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/findMonitorDeadlockedThreads/find003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/findMonitorDeadlockedThreads/find004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/findMonitorDeadlockedThreads/find005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/findMonitorDeadlockedThreads/find006/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isCurrentThreadCpuTimeSupported/curthcputime001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isCurrentThreadCpuTimeSupported/curthcputime002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isCurrentThreadCpuTimeSupported/curthcputime003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isCurrentThreadCpuTimeSupported/curthcputime004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isCurrentThreadCpuTimeSupported/curthcputime005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadContentionMonitoringSupported/thcontmonitor001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadContentionMonitoringSupported/thcontmonitor002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadContentionMonitoringSupported/thcontmonitor003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadContentionMonitoringSupported/thcontmonitor004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadContentionMonitoringSupported/thcontmonitor005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadCpuTimeSupported/thcputime001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadCpuTimeSupported/thcputime002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadCpuTimeSupported/thcputime003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadCpuTimeSupported/thcputime004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadCpuTimeSupported/thcputime005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/resetPeakThreadCount/reset001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/resetPeakThreadCount/reset002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/resetPeakThreadCount/reset003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/resetPeakThreadCount/reset004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/resetPeakThreadCount/reset005/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerLevel/getloggerlevel001/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerLevel/getloggerlevel002/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerLevel/getloggerlevel003/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerLevel/getloggerlevel004/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerLevel/getloggerlevel005/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/setLoggerLevel/setloggerlevel001/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/setLoggerLevel/setloggerlevel002/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/setLoggerLevel/setloggerlevel003/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/setLoggerLevel/setloggerlevel004/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/setLoggerLevel/setloggerlevel005/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getParentLoggerName/getparentloggername001/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getParentLoggerName/getparentloggername002/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getParentLoggerName/getparentloggername003/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getParentLoggerName/getparentloggername004/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getParentLoggerName/getparentloggername005/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerNames/getloggernames001/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerNames/getloggernames002/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerNames/getloggernames003/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerNames/getloggernames004/TestDescription.java \
-  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerNames/getloggernames005/TestDescription.java \
-  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionCount/getcollectioncount001/TestDescription.java \
-  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionCount/getcollectioncount002/TestDescription.java \
-  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionCount/getcollectioncount003/TestDescription.java \
-  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionCount/getcollectioncount004/TestDescription.java \
-  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionCount/getcollectioncount005/TestDescription.java \
-  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionTime/getcollectiontime001/TestDescription.java \
-  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionTime/getcollectiontime002/TestDescription.java \
-  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionTime/getcollectiontime003/TestDescription.java \
-  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionTime/getcollectiontime004/TestDescription.java \
-  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionTime/getcollectiontime005/TestDescription.java \
-  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean001/RuntimeMXBean001.java \
-  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean002/TestDescription.java \
-  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean003/TestDescription.java \
-  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean004/TestDescription.java \
-  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean005/TestDescription.java \
-  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean006/RuntimeMXBean006.java \
-  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean007/TestDescription.java \
-  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean008/TestDescription.java \
-  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean009/TestDescription.java \
-  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean010/TestDescription.java \
-  vmTestbase/nsk/monitoring/CompilationMXBean/comptimemon001/comptimemon001.java \
-  vmTestbase/nsk/monitoring/CompilationMXBean/comptimemon002/TestDescription.java \
-  vmTestbase/nsk/monitoring/CompilationMXBean/comptimemon003/TestDescription.java \
-  vmTestbase/nsk/monitoring/CompilationMXBean/comptimemon004/TestDescription.java \
-  vmTestbase/nsk/monitoring/CompilationMXBean/comptimemon005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/TimedWaitingThread/TimedWaitingThread001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/TimedWaitingThread/TimedWaitingThread002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/TimedWaitingThread/TimedWaitingThread003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/TimedWaitingThread/TimedWaitingThread004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/TimedWaitingThread/TimedWaitingThread005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/RunningThread/RunningThread001/RunningThread001.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/RunningThread/RunningThread002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/RunningThread/RunningThread003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/RunningThread/RunningThread004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/RunningThread/RunningThread005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SleepingThread/SleepingThread001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SleepingThread/SleepingThread002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SleepingThread/SleepingThread003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SleepingThread/SleepingThread004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SleepingThread/SleepingThread005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/WaitingThread/WaitingThread001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/WaitingThread/WaitingThread002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/WaitingThread/WaitingThread003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/WaitingThread/WaitingThread004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/WaitingThread/WaitingThread005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/BlockedThread/BlockedThread001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/BlockedThread/BlockedThread002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/BlockedThread/BlockedThread003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/BlockedThread/BlockedThread004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/BlockedThread/BlockedThread005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NativeBlockedThread/NativeBlockedThread001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NativeBlockedThread/NativeBlockedThread002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NativeBlockedThread/NativeBlockedThread003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NativeBlockedThread/NativeBlockedThread004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NativeBlockedThread/NativeBlockedThread005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NewThread/NewThread001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NewThread/NewThread002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NewThread/NewThread003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NewThread/NewThread004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NewThread/NewThread005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/FinishedThread/FinishedThread001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/FinishedThread/FinishedThread002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/FinishedThread/FinishedThread003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/FinishedThread/FinishedThread004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/FinishedThread/FinishedThread005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/LockingThreads/LockingThreads001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/LockingThreads/LockingThreads002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/LockingThreads/LockingThreads003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/LockingThreads/LockingThreads004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/LockingThreads/LockingThreads005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SynchronizerLockingThreads/SynchronizerLockingThreads001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SynchronizerLockingThreads/SynchronizerLockingThreads002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SynchronizerLockingThreads/SynchronizerLockingThreads003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SynchronizerLockingThreads/SynchronizerLockingThreads004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SynchronizerLockingThreads/SynchronizerLockingThreads005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/JavaDeadlock001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/JavaDeadlock002/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/JavaDeadlock003/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/JavaDeadlock004/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/JavaDeadlock005/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/NativeDeadlock001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/SynchronizerDeadlock001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/SynchronizedMethodDeadlock001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/MixedDeadlock001/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/baseBehaviorTest_directly/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/baseBehaviorTest_server_default/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/baseBehaviorTest_server_custom/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/baseBehaviorTest_proxy_default/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/baseBehaviorTest_proxy_custom/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/illegalArgumentsTest_directly/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/illegalArgumentsTest_server_default/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/illegalArgumentsTest_server_custom/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/illegalArgumentsTest_proxy_default/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/illegalArgumentsTest_proxy_custom/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/allocatedMemorySupportedTest_directly/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/allocatedMemorySupportedTest_server_default/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/allocatedMemorySupportedTest_server_custom/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/allocatedMemorySupportedTest_proxy_default/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/allocatedMemorySupportedTest_proxy_custom/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/baseBehaviorTest_directly/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/baseBehaviorTest_server_default/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/baseBehaviorTest_server_custom/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/baseBehaviorTest_proxy_default/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/baseBehaviorTest_proxy_custom/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_directly_array/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_server_default_array/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_server_custom_array/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_proxy_default_array/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_proxy_custom_array/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_directly_string/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_server_default_string/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_server_custom_string/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_proxy_default_string/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_proxy_custom_string/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_directly_array/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_server_default_array/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_server_custom_array/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_proxy_default_array/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_proxy_custom_array/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_directly_string/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_server_default_string/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_server_custom_string/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_proxy_default_string/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_proxy_custom_string/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/illegalArgumentsTest_directly/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/illegalArgumentsTest_server_default/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/illegalArgumentsTest_server_custom/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/illegalArgumentsTest_proxy_default/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/illegalArgumentsTest_proxy_custom/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/noAllocationTest_directly/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/noAllocationTest_server_default/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/noAllocationTest_server_custom/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/noAllocationTest_proxy_default/TestDescription.java \
-  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/noAllocationTest_proxy_custom/TestDescription.java
-
-
 # Tests for default method implementation
 vmTestbase_vm_defmeth = \
   vmTestbase/vm/runtime/defmeth
 
-
 # JDI tests
 vmTestbase_nsk_jdi = \
   vmTestbase/nsk/jdi
 
-
 # Stress tests for classes loading/unloading
 # NSK tests for functionality of the HS system dictionary
 vmTestbase_nsk_sysdict = \
   vmTestbase/nsk/sysdict/vm/stress
 
-
-vmTestbase_nsk_jdi_quick = \
-  vmTestbase/nsk/jdi/Argument/description/description001/TestDescription.java \
-  vmTestbase/nsk/jdi/Argument/isValid/isvalid001/TestDescription.java \
-  vmTestbase/nsk/jdi/Argument/isValid/isvalid002/TestDescription.java \
-  vmTestbase/nsk/jdi/Argument/isValid/isvalid003/TestDescription.java \
-  vmTestbase/nsk/jdi/Argument/isValid/isvalid004/TestDescription.java \
-  vmTestbase/nsk/jdi/Argument/isValid/isvalid005/TestDescription.java \
-  vmTestbase/nsk/jdi/Argument/name/name001/TestDescription.java \
-  vmTestbase/nsk/jdi/Argument/value/value001/TestDescription.java \
-  vmTestbase/nsk/jdi/Argument/value/value002/TestDescription.java \
-  vmTestbase/nsk/jdi/Argument/value/value003/TestDescription.java \
-  vmTestbase/nsk/jdi/Argument/setValue/setvalue001/TestDescription.java \
-  vmTestbase/nsk/jdi/Argument/setValue/setvalue002/TestDescription.java \
-  vmTestbase/nsk/jdi/Argument/mustSpecify/mustspecify001/TestDescription.java \
-  vmTestbase/nsk/jdi/AttachingConnector/attach/attach002/TestDescription.java \
-  vmTestbase/nsk/jdi/BooleanArgument/booleanValue/booleanvalue001/TestDescription.java \
-  vmTestbase/nsk/jdi/BooleanArgument/booleanValue/booleanvalue002/TestDescription.java \
-  vmTestbase/nsk/jdi/BooleanArgument/isValid/isvalid001/TestDescription.java \
-  vmTestbase/nsk/jdi/BooleanArgument/isValid/isvalid002/TestDescription.java \
-  vmTestbase/nsk/jdi/BooleanArgument/setValue/setvalue001/TestDescription.java \
-  vmTestbase/nsk/jdi/BooleanArgument/setValue/setvalue002/TestDescription.java \
-  vmTestbase/nsk/jdi/BooleanArgument/stringValueOf/stringvalueof001/TestDescription.java \
-  vmTestbase/nsk/jdi/BooleanArgument/stringValueOf/stringvalueof002/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses001/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses002/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses003/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses004/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses005/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassLoaderReference/visibleClasses/visibleclasses002/TestDescription.java \
-  vmTestbase/nsk/jdi/Connector/defaultArguments/defaultArguments001/TestDescription.java \
-  vmTestbase/nsk/jdi/Connector/defaultArguments/defaultArguments002/TestDescription.java \
-  vmTestbase/nsk/jdi/Connector/defaultArguments/defaultArguments003/TestDescription.java \
-  vmTestbase/nsk/jdi/Connector/description/description001/TestDescription.java \
-  vmTestbase/nsk/jdi/Connector/name/name001/TestDescription.java \
-  vmTestbase/nsk/jdi/Connector/transport/transport001/TestDescription.java \
-  vmTestbase/nsk/jdi/FloatValue/compareTo/compareto001/TestDescription.java \
-  vmTestbase/nsk/jdi/IntegerArgument/intValue/intvalue001/TestDescription.java \
-  vmTestbase/nsk/jdi/IntegerArgument/intValue/intvalue002/TestDescription.java \
-  vmTestbase/nsk/jdi/IntegerArgument/isValid/isvalid001/TestDescription.java \
-  vmTestbase/nsk/jdi/IntegerArgument/isValid/isvalid002/TestDescription.java \
-  vmTestbase/nsk/jdi/IntegerArgument/isValid/isvalid003/TestDescription.java \
-  vmTestbase/nsk/jdi/IntegerArgument/max/max001/TestDescription.java \
-  vmTestbase/nsk/jdi/IntegerArgument/min/min001/TestDescription.java \
-  vmTestbase/nsk/jdi/IntegerArgument/setValue/setvalue001/TestDescription.java \
-  vmTestbase/nsk/jdi/IntegerArgument/stringValueOf/stringvalueof001/TestDescription.java \
-  vmTestbase/nsk/jdi/IntegerValue/compareTo/compareto001/TestDescription.java \
-  vmTestbase/nsk/jdi/LaunchingConnector/launch/launch001/TestDescription.java \
-  vmTestbase/nsk/jdi/LaunchingConnector/launch/launch002/TestDescription.java \
-  vmTestbase/nsk/jdi/LaunchingConnector/launch/launch004/TestDescription.java \
-  vmTestbase/nsk/jdi/ListeningConnector/accept/accept001/TestDescription.java \
-  vmTestbase/nsk/jdi/ListeningConnector/accept/accept002/TestDescription.java \
-  vmTestbase/nsk/jdi/ListeningConnector/stopListening/stoplis001/TestDescription.java \
-  vmTestbase/nsk/jdi/ListeningConnector/supportsMultipleConnections/supportsmultipleconnections001/TestDescription.java \
-  vmTestbase/nsk/jdi/ListeningConnector/listennosuspend/listennosuspend001/TestDescription.java \
-  vmTestbase/nsk/jdi/LongValue/compareTo/compareto001/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/entryCount/entrycount002/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/owningThread/owningthread002/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/waitingThreads/waitingthreads002/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/waitingThreads/waitingthreads003/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/waitingThreads/waitingthreads004/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/isVerified/isverified003/TestDescription.java \
-  vmTestbase/nsk/jdi/SelectedArgument/choices/choices001/TestDescription.java \
-  vmTestbase/nsk/jdi/SelectedArgument/isValid/isvalid001/TestDescription.java \
-  vmTestbase/nsk/jdi/SelectedArgument/isValid/isvalid002/TestDescription.java \
-  vmTestbase/nsk/jdi/ShortType/_itself_/shorttype001/TestDescription.java \
-  vmTestbase/nsk/jdi/ShortValue/compareTo/compareto001/TestDescription.java \
-  vmTestbase/nsk/jdi/StackFrame/thisObject/thisobject002/TestDescription.java \
-  vmTestbase/nsk/jdi/StackFrame/thread/thread001/TestDescription.java \
-  vmTestbase/nsk/jdi/StackFrame/visibleVariableByName/visiblevarbyname001/TestDescription.java \
-  vmTestbase/nsk/jdi/StackFrame/visibleVariableByName/visiblevarbyname002/TestDescription.java \
-  vmTestbase/nsk/jdi/StackFrame/visibleVariables/visiblevariables001/TestDescription.java \
-  vmTestbase/nsk/jdi/StackFrame/visibleVariables/visiblevariables002/TestDescription.java \
-  vmTestbase/nsk/jdi/StepEvent/_itself_/stepevent001/TestDescription.java \
-  vmTestbase/nsk/jdi/StepEvent/_itself_/stepevent002/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/addClassExclusionFilter/filter001/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/addClassExclusionFilter/filter002/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/addClassFilter_s/filter_s001/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/addClassFilter_s/filter_s002/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/addClassFilter_rt/filter_rt001/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/addClassFilter_rt/filter_rt002/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/depth/depth001/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/depth/depth002/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/depth/depth003/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/size/size001/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/size/size002/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/thread/thread001/TestDescription.java \
-  vmTestbase/nsk/jdi/StringArgument/isValid/isvalid001/TestDescription.java \
-  vmTestbase/nsk/jdi/StringArgument/isValid/isvalid002/TestDescription.java \
-  vmTestbase/nsk/jdi/StringArgument/isValid/isvalid003/TestDescription.java \
-  vmTestbase/nsk/jdi/StringReference/value/value001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadDeathEvent/thread/thread001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter002/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter003/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter004/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter005/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadGroupReference/name/name001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadGroupReference/parent/parent001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadGroupReference/resume/resume001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadGroupReference/suspend/suspend001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadGroupReference/threadGroups/threadgroups001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadGroupReference/threads/threads001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/frame/frame001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/frameCount/framecount001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/frames/frames001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/frames_ii/frames_ii002/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/isAtBreakpoint/isatbreakpoint001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended003/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended004/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/name/name001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/ownedMonitors/ownedmonitors001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/suspendCount/suspendcount001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/threadGroup/threadgroup001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/currentContendedMonitor/currentcm001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/interrupt/interrupt001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/resume/resume001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/status/status003/status003.java \
-  vmTestbase/nsk/jdi/ThreadReference/status/status004/status004.java \
-  vmTestbase/nsk/jdi/ThreadReference/status/status005/status005.java \
-  vmTestbase/nsk/jdi/ThreadReference/status/status006/status006.java \
-  vmTestbase/nsk/jdi/ThreadReference/status/status007/status007.java \
-  vmTestbase/nsk/jdi/ThreadReference/status/status008/status008.java \
-  vmTestbase/nsk/jdi/ThreadReference/stop/stop001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter002/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter003/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter004/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter005/TestDescription.java \
-  vmTestbase/nsk/jdi/Transport/name/name001/TestDescription.java \
-  vmTestbase/nsk/jdi/Type/name/name001/TestDescription.java \
-  vmTestbase/nsk/jdi/Type/name/name002/TestDescription.java \
-  vmTestbase/nsk/jdi/Type/name/name003/TestDescription.java \
-  vmTestbase/nsk/jdi/Type/signature/signature001/TestDescription.java \
-  vmTestbase/nsk/jdi/Type/signature/signature002/TestDescription.java \
-  vmTestbase/nsk/jdi/Type/signature/signature003/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype001/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype002/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype003/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype007/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype008/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/isFinal/isfinal001/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/isFinal/isfinal003/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/isStatic/isstatic001/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/isStatic/isstatic003/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/isSynthetic/issynthetic001/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/isSynthetic/issynthetic002/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/name/name001/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/name/name003/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/signature/sign001/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/signature/sign003/TestDescription.java \
-  vmTestbase/nsk/jdi/Value/type/type001/TestDescription.java \
-  vmTestbase/nsk/jdi/Value/type/type002/type002.java \
-  vmTestbase/nsk/jdi/Value/type/type003/TestDescription.java \
-  vmTestbase/nsk/jdi/Value/_itself_/value001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/allClasses/allclasses001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/allClasses/allclasses002/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/allThreads/allthreads001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canGetBytecodes/cangetbytecodes001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canGetCurrentContendedMonitor/cangccm001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canGetMonitorInfo/cangetmonitorinfo001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canGetOwnedMonitorInfo/cangetinfo001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canGetSyntheticAttribute/cangetattr001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canWatchFieldAccess/canwatchaccess001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canWatchFieldModification/canwatchmod001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/classesByName/classesbyname001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/description/description001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/eventQueue/eventqueue001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/eventRequestManager/eventrmanager001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/exit/exit001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/exit/exit002/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_bool/mirrorof_bool001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_byte/mirrorof_byte001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_char/mirrorof_char001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_double/mirrorof_double001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_float/mirrorof_float001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_int/mirrorof_int001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_long/mirrorof_long001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_short/mirrorof_short001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_string/mirrorof_string001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/name/name001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/process/process001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/topLevelThreadGroups/toplevelgroups001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/version/version001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/allConnectors/allconnectors001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/attachingConnectors/attaching001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm002/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm003/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/defaultConnector/default001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/launchingConnectors/launching001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/listeningConnectors/listening001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/majorInterfaceVersion/major001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/minorInterfaceVersion/minor001/TestDescription.java \
-  vmTestbase/nsk/jdi/VoidType/_itself_/voidtype001/TestDescription.java \
-  vmTestbase/nsk/jdi/VoidValue/equals/equals001/equals001.java \
-  vmTestbase/nsk/jdi/VoidValue/hashCode/hashcode001/hashcode001.java \
-  vmTestbase/nsk/jdi/VMDeathEvent/_itself_/vmdeath001/TestDescription.java \
-  vmTestbase/nsk/jdi/VMDeathEvent/_itself_/vmdeath002/TestDescription.java \
-  vmTestbase/nsk/jdi/VMDeathEvent/_itself_/vmdeath003/TestDescription.java \
-  vmTestbase/nsk/jdi/VMDisconnectEvent/_itself_/disconnect001/TestDescription.java \
-  vmTestbase/nsk/jdi/VMDisconnectEvent/_itself_/disconnect002/TestDescription.java \
-  vmTestbase/nsk/jdi/VMDisconnectEvent/_itself_/disconnect003/TestDescription.java \
-  vmTestbase/nsk/jdi/VMStartEvent/thread/thread001/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointEvent/object/object001/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointEvent/field/field001/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointEvent/valueCurrent/valuecur001/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter001/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter002/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter003/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter004/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s001/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s002/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s003/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s004/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt001/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt002/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt003/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt004/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt005/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt006/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter001/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter002/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter003/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter004/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter005/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter006/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter007/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter008/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/field/field001/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/field/field002/TestDescription.java \
-  vmTestbase/nsk/jdi/AttachingConnector/attach/attach003/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassObjectReference/toString/tostring001/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod003/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod010/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod011/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod012/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod013/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod014/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/newInstance/newinstance009/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/setValue/setvalue006/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/setValue/setvalue007/TestDescription.java \
-  vmTestbase/nsk/jdi/Connector/_bounds_/bounds001/TestDescription.java \
-  vmTestbase/nsk/jdi/Connector/toString/tostring001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc01x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc01x002/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc02x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc02x002/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc03x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc04x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc04x002/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc05x002/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc06x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc07x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc08x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc09x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc09x002/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc10x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/hotswap/tc10x002/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/multithrd/tc01x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x002/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x003/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x004/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/multithrd/tc03x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/multithrd/tc04x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc01x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc01x002/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc02x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc03x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc03x002/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc03x003/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc04x001/TestDescription.java \
-  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc05x001/TestDescription.java \
-  vmTestbase/nsk/jdi/Event/equals/equals001/TestDescription.java \
-  vmTestbase/nsk/jdi/Event/hashCode/hashcode001/TestDescription.java \
-  vmTestbase/nsk/jdi/EventQueue/hashCode/hashcode001/TestDescription.java \
-  vmTestbase/nsk/jdi/EventRequest/disable/disable003/TestDescription.java \
-  vmTestbase/nsk/jdi/EventRequest/hashCode/hashcode001/TestDescription.java \
-  vmTestbase/nsk/jdi/EventRequestManager/deleteEventRequest/delevtreq003/TestDescription.java \
-  vmTestbase/nsk/jdi/EventRequestManager/hashCode/hashcode001/TestDescription.java \
-  vmTestbase/nsk/jdi/EventSet/resume/resume011/TestDescription.java \
-  vmTestbase/nsk/jdi/EventSet/toString/tostring001/TestDescription.java \
-  vmTestbase/nsk/jdi/EventSet/virtualMachine/virtualmachine001/TestDescription.java \
-  vmTestbase/nsk/jdi/LocalVariable/toString/tostring001/TestDescription.java \
-  vmTestbase/nsk/jdi/Method/_bounds_/bounds001/TestDescription.java \
-  vmTestbase/nsk/jdi/Method/isObsolete/isobsolete003/TestDescription.java \
-  vmTestbase/nsk/jdi/MethodEntryRequest/_bounds_/filters001/TestDescription.java \
-  vmTestbase/nsk/jdi/MethodExitRequest/_bounds_/filters001/TestDescription.java \
-  vmTestbase/nsk/jdi/Mirror/hashCode/hashcode001/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/_bounds_/bounds001/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/_bounds_/bounds002/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod002/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod003/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod004/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod005/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod007/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod008/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod009/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod010/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod011/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod012/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod013/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod014/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue002/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue003/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue004/TestDescription.java \
-  vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue005/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/_bounds_/bounds001/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/_bounds_/bounds002/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/allFields/allfields005/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/allLineLocations/alllinelocations002/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/allLineLocations_ss/alllinelocations_ss002/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods005/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/fields/fields005/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue004/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue005/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/getValues/getvalues002/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/getValues/getvalues003/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_i/locationsofline_i002/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_ssi/locationsofline_ssi002/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/methods/methods005/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/sourceName/sourcename004/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/sourceNames/sourcenames002/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/sourcePaths/sourcepaths002/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield005/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod006/TestDescription.java \
-  vmTestbase/nsk/jdi/Scenarios/invokeMethod/popframes001/TestDescription.java \
-  vmTestbase/nsk/jdi/Scenarios/invokeMethod/redefineclasses001/TestDescription.java \
-  vmTestbase/nsk/jdi/StackFrame/_bounds_/bounds002/TestDescription.java \
-  vmTestbase/nsk/jdi/StackFrame/getValue/getvalue003/TestDescription.java \
-  vmTestbase/nsk/jdi/StackFrame/getValues/getvalues003/TestDescription.java \
-  vmTestbase/nsk/jdi/StackFrame/hashCode/hashcode001/TestDescription.java \
-  vmTestbase/nsk/jdi/StackFrame/setValue/setvalue005/setvalue005.java \
-  vmTestbase/nsk/jdi/StackFrame/setValue/setvalue006/setvalue006.java \
-  vmTestbase/nsk/jdi/StackFrame/toString/tostring001/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/_bounds_/filters001/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/addClassFilter_rt/filter_rt003/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter001/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter002/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter003/TestDescription.java \
-  vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter004/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadGroupReference/toString/tostring001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/frames_ii/frames_ii001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/ownedMonitors/ownedmonitors002/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes001/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes002/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes003/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes004/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes005/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes006/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes007/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/stop/stop002/TestDescription.java \
-  vmTestbase/nsk/jdi/Type/hashCode/hashcode001/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/isPackagePrivate/ispackageprivate001/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/isPrivate/isprivate001/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/isProtected/isprotected001/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/isPublic/ispublic001/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointEvent/_itself_/wevent001/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/_bounds_/filters001/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter001/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter002/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter003/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter004/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter005/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter006/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter007/TestDescription.java \
-  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter008/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canAddMethod/canaddmethod001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canGetSourceDebugExtension/cangetsde001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canPopFrames/canpopframes001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canRedefineClasses/canredefineclasses001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canRequestVMDeathEvent/canreqvmdev001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canUnrestrictedlyRedefineClasses/curc001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canUseInstanceFilters/canusefilters001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/getDefaultStratum/getdefaultstratum001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses002/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses003/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses004/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses005/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses006/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses007/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses008/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses009/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses010/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses011/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses012/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses013/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses014/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses015/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses016/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses020/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses022/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses024/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses026/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses027/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses028/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses029/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses030/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses032/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses034/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses035/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/setDefaultStratum/setdefaultstratum001/TestDescription.java \
-  vmTestbase/nsk/jdi/VoidType/toString/tostring001/TestDescription.java \
-  vmTestbase/nsk/jdi/VoidValue/equals/equals002/TestDescription.java \
-  vmTestbase/nsk/jdi/VoidValue/toString/tostring001/TestDescription.java \
-  vmTestbase/nsk/jdi/ConstantField/values001/TestDescription.java \
-  vmTestbase/nsk/jdi/Accessible/isPackagePrivate/accipp002/TestDescription.java \
-  vmTestbase/nsk/jdi/Accessible/isPrivate/isprivate002/TestDescription.java \
-  vmTestbase/nsk/jdi/Accessible/isProtected/isprotected002/TestDescription.java \
-  vmTestbase/nsk/jdi/Accessible/isPublic/ispublic002/TestDescription.java \
-  vmTestbase/nsk/jdi/Accessible/isPublic/ispublic003/TestDescription.java \
-  vmTestbase/nsk/jdi/Accessible/modifiers/modifiers002/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/allInterfaces/allinterfaces002/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/interfaces/interfaces002/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod015/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/isEnum/isenum001/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/setValue/setvalue008/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/subclasses/subclasses002/TestDescription.java \
-  vmTestbase/nsk/jdi/ClassType/superclass/superclass002/TestDescription.java \
-  vmTestbase/nsk/jdi/Field/isEnumConstant/isenumconstant001/TestDescription.java \
-  vmTestbase/nsk/jdi/Field/type/type004/TestDescription.java \
-  vmTestbase/nsk/jdi/Field/typeName/typename002/TestDescription.java \
-  vmTestbase/nsk/jdi/LocalVariable/genericSignature/gensignature001/TestDescription.java \
-  vmTestbase/nsk/jdi/Method/arguments/arguments003/TestDescription.java \
-  vmTestbase/nsk/jdi/Method/argumentTypeNames/argumenttypenames003/TestDescription.java \
-  vmTestbase/nsk/jdi/Method/isBridge/isbridge001/TestDescription.java \
-  vmTestbase/nsk/jdi/Method/isVarArgs/isvarargs001/TestDescription.java \
-  vmTestbase/nsk/jdi/PlugConnectors/AttachConnector/plugAttachConnect001/plugAttachConnect001.java \
-  vmTestbase/nsk/jdi/PlugConnectors/AttachConnector/plugAttachConnect002/plugAttachConnect002.java \
-  vmTestbase/nsk/jdi/PlugConnectors/AttachConnector/plugAttachConnect003/plugAttachConnect003.java \
-  vmTestbase/nsk/jdi/PlugConnectors/LaunchConnector/plugLaunchConnect001/plugLaunchConnect001.java \
-  vmTestbase/nsk/jdi/PlugConnectors/LaunchConnector/plugLaunchConnect002/plugLaunchConnect002.java \
-  vmTestbase/nsk/jdi/PlugConnectors/LaunchConnector/plugLaunchConnect003/plugLaunchConnect003.java \
-  vmTestbase/nsk/jdi/PlugConnectors/ListenConnector/plugListenConnect001/plugListenConnect001.java \
-  vmTestbase/nsk/jdi/PlugConnectors/ListenConnector/plugListenConnect002/plugListenConnect002.java \
-  vmTestbase/nsk/jdi/PlugConnectors/ListenConnector/plugListenConnect003/plugListenConnect003.java \
-  vmTestbase/nsk/jdi/PlugConnectors/MultiConnectors/plugMultiConnect001/plugMultiConnect001.java \
-  vmTestbase/nsk/jdi/PlugConnectors/MultiConnectors/plugMultiConnect002/plugMultiConnect002.java \
-  vmTestbase/nsk/jdi/PlugConnectors/MultiConnectors/plugMultiConnect003/plugMultiConnect003.java \
-  vmTestbase/nsk/jdi/PlugConnectors/MultiConnectors/plugMultiConnect004/plugMultiConnect004.java \
-  vmTestbase/nsk/jdi/PlugConnectors/MultiConnectors/plugMultiConnect005/plugMultiConnect005.java \
-  vmTestbase/nsk/jdi/PlugConnectors/MultiConnectors/plugMultiConnect006/plugMultiConnect006.java \
-  vmTestbase/nsk/jdi/PlugConnectors/TransportService/transportService001/transportService001.java \
-  vmTestbase/nsk/jdi/PlugConnectors/TransportService/transportService002/transportService002.java \
-  vmTestbase/nsk/jdi/PlugConnectors/TransportService/transportService003/transportService003.java \
-  vmTestbase/nsk/jdi/ReferenceType/allFields/allfields006/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods006/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/classObject/classobj003/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/fields/fields006/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/genericSignature/genericSignature001/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/genericSignature/genericSignature002/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/isAbstract/isabstract003/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/isFinal/isfinal002/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/isInitialized/isinit003/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/methods/methods006/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield006/TestDescription.java \
-  vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod007/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype009/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/genericSignature/genericSignature001/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/genericSignature/genericSignature002/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/isFinal/isfinal004/TestDescription.java \
-  vmTestbase/nsk/jdi/TypeComponent/isStatic/isstatic004/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/canBeModified/canbemodified001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM002/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM003/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM004/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM005/TestDescription.java \
-  vmTestbase/nsk/jdi/VMCannotBeModifiedEx/_itself_/canntbemod001/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/instanceCounts/instancecounts001/instancecounts001.java \
-  vmTestbase/nsk/jdi/VirtualMachine/instanceCounts/instancecounts002/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/instanceCounts/instancecounts003/instancecounts003.java \
-  vmTestbase/nsk/jdi/VirtualMachine/instanceCounts/instancecounts004/instancecounts004.java \
-  vmTestbase/nsk/jdi/ReferenceType/instances/instances001/instances001.java \
-  vmTestbase/nsk/jdi/ReferenceType/instances/instances002/instances002.java \
-  vmTestbase/nsk/jdi/ReferenceType/instances/instances005/instances005.java \
-  vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects001/referringObjects001.java \
-  vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects002/referringObjects002.java \
-  vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects003/referringObjects003.java \
-  vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects004/referringObjects004.java \
-  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn002/forceEarlyReturn002.java \
-  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn003/forceEarlyReturn003.java \
-  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn004/forceEarlyReturn004.java \
-  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn005/forceEarlyReturn005.java \
-  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn006/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn007/TestDescription.java \
-  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn008/forceEarlyReturn008.java \
-  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn009/forceEarlyReturn009.java \
-  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn013/forceEarlyReturn013.java \
-  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn014/forceEarlyReturn014.java \
-  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn015/forceEarlyReturn015.java \
-  vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames001/ownedMonitorsAndFrames001.java \
-  vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames002/ownedMonitorsAndFrames002.java \
-  vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames003/ownedMonitorsAndFrames003.java \
-  vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames004/ownedMonitorsAndFrames004.java \
-  vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames005/ownedMonitorsAndFrames005.java \
-  vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames008/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorContendedEnteredRequest/addClassExclusionFilter/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorContendedEnteredRequest/addClassFilter_ClassName/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorContendedEnteredRequest/addClassFilter_ReferenceType/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorContendedEnteredRequest/addInstanceFilter/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorContendedEnteredRequest/addThreadFilter/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorContendedEnterRequest/addClassExclusionFilter/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorContendedEnterRequest/addClassFilter_ClassName/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorContendedEnterRequest/addClassFilter_ReferenceType/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorContendedEnterRequest/addInstanceFilter/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorContendedEnterRequest/addThreadFilter/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorWaitRequest/addClassExclusionFilter/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorWaitRequest/addClassFilter_ClassName/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorWaitRequest/addClassFilter_ReferenceType/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorWaitRequest/addInstanceFilter/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorWaitRequest/addThreadFilter/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorWaitedRequest/addClassExclusionFilter/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorWaitedRequest/addClassFilter_ClassName/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorWaitedRequest/addClassFilter_ReferenceType/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorWaitedRequest/addInstanceFilter/TestDescription.java \
-  vmTestbase/nsk/jdi/MonitorWaitedRequest/addThreadFilter/TestDescription.java \
-  vmTestbase/nsk/jdi/stress/ClassPrepareEvents/ClassPrepareEvents001/ClassPrepareEvents001.java \
-  vmTestbase/nsk/jdi/ClassPrepareRequest/addSourceNameFilter/addSourceNameFilter001/addSourceNameFilter001.java \
-  vmTestbase/nsk/jdi/ClassPrepareRequest/addSourceNameFilter/addSourceNameFilter002/addSourceNameFilter002.java \
-  vmTestbase/nsk/jdi/VMOutOfMemoryException/VMOutOfMemoryException001/VMOutOfMemoryException001.java \
-  vmTestbase/nsk/jdi/stress/serial/forceEarlyReturn001/TestDescription.java \
-  vmTestbase/nsk/jdi/stress/serial/heapwalking001/TestDescription.java \
-  vmTestbase/nsk/jdi/stress/serial/monitorEvents001/TestDescription.java \
-  vmTestbase/nsk/jdi/stress/serial/ownedMonitorsAndFrames001/TestDescription.java \
-  vmTestbase/nsk/jdi/stress/serial/mixed001/TestDescription.java \
-  vmTestbase/nsk/jdi/stress/serial/forceEarlyReturn002/TestDescription.java \
-  vmTestbase/nsk/jdi/stress/serial/monitorEvents002/TestDescription.java \
-  vmTestbase/nsk/jdi/stress/serial/ownedMonitorsAndFrames002/TestDescription.java \
-  vmTestbase/nsk/jdi/VirtualMachine/setDefaultStratum/setDefaultStratum002/setDefaultStratum002.java \
-  vmTestbase/nsk/jdi/ReferenceType/allLineLocations_ss/allLineLocations_ss003/allLineLocations_ss003.java \
-  vmTestbase/nsk/jdi/ReferenceType/allLineLocations_ss/allLineLocations_ss004/allLineLocations_ss004.java \
-  vmTestbase/nsk/jdi/Method/allLineLocations_ss/allLineLocations_ss002/allLineLocations_ss002.java \
-  vmTestbase/nsk/jdi/Method/allLineLocations_ss/allLineLocations_ss003/allLineLocations_ss003.java \
-  vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_ssi/locationsOfLine_ssi003/locationsOfLine_ssi003.java \
-  vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_ssi/locationsOfLine_ssi004/locationsOfLine_ssi004.java \
-  vmTestbase/nsk/jdi/Method/locationsOfLine_ssi/locationsOfLine_ssi002/locationsOfLine_ssi002.java \
-  vmTestbase/nsk/jdi/Method/locationsOfLine_ssi/locationsOfLine_ssi003/locationsOfLine_ssi003.java \
-  vmTestbase/nsk/jdi/ReferenceType/sourceNames/sourceNames003/sourceNames003.java \
-  vmTestbase/nsk/jdi/ReferenceType/sourcePaths/sourcePaths003/sourcePaths003.java \
-  vmTestbase/nsk/jdi/ReferenceType/availableStrata/availableStrata002/availableStrata002.java \
-  vmTestbase/nsk/jdi/ReferenceType/defaultStratum/defaultStratum002/defaultStratum002.java \
-  vmTestbase/nsk/jdi/Location/lineNumber_s/lineNumber_s002/lineNumber_s002.java \
-  vmTestbase/nsk/jdi/Location/sourceName_s/sourceName_s002/sourceName_s002.java \
-  vmTestbase/nsk/jdi/Location/sourcePath_s/sourcePath_s002/sourcePath_s002.java \
-  vmTestbase/nsk/jdi/AttachingConnector/attach/attach005/TestDescription.java \
-  vmTestbase/nsk/jdi/AttachingConnector/attachnosuspend/attachnosuspend002/TestDescription.java \
-  vmTestbase/nsk/jdi/AttachingConnector/attachnosuspend/attachnosuspend003/TestDescription.java \
-  vmTestbase/nsk/jdi/MethodExitEvent/returnValue/returnValue001/returnValue001.java \
-  vmTestbase/nsk/jdi/MethodExitEvent/returnValue/returnValue002/returnValue002.java \
-  vmTestbase/nsk/jdi/MethodExitEvent/returnValue/returnValue003/returnValue003.java \
-  vmTestbase/nsk/jdi/MethodExitEvent/returnValue/returnValue004/returnValue004.java \
-  vmTestbase/nsk/jdi/StackFrame/getArgumentValues/getArgumentValues001/getArgumentValues001.java \
-  vmTestbase/nsk/jdi/StackFrame/getArgumentValues/getArgumentValues002/getArgumentValues002.java \
-  vmTestbase/nsk/jdi/StackFrame/getArgumentValues/getArgumentValues003/getArgumentValues003.java
-
 vmTestbase_vm_metaspace = \
   vmTestbase/metaspace
 
@@ -1175,702 +349,10 @@
 vmTestbase_nsk_jvmti = \
   vmTestbase/nsk/jvmti
 
-vmTestbase_nsk_jvmti_quick = \
-  vmTestbase/nsk/jvmti/AddCapabilities/addcaps001/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddCapabilities/addcaps002/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddCapabilities/addcaps003/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch001/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch002/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch003/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch004/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch007/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch008/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch009/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch010/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddToSystemClassLoaderSearch/systemclssearch001/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddToSystemClassLoaderSearch/systemclssearch002/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddToSystemClassLoaderSearch/systemclssearch003/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddToSystemClassLoaderSearch/systemclssearch004/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddToSystemClassLoaderSearch/systemclssearch005/TestDescription.java \
-  vmTestbase/nsk/jvmti/AddToSystemClassLoaderSearch/systemclssearch006/TestDescription.java \
-  vmTestbase/nsk/jvmti/Agent_OnLoad/agentonload001/TestDescription.java \
-  vmTestbase/nsk/jvmti/Agent_OnLoad/agentonload002/TestDescription.java \
-  vmTestbase/nsk/jvmti/Agent_OnLoad/agentonload003/TestDriver.java \
-  vmTestbase/nsk/jvmti/Agent_OnUnload/agentonunload001/TestDriver.java \
-  vmTestbase/nsk/jvmti/Breakpoint/breakpoint001/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk001/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk002/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk003/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk004/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk005/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk006/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk007/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk008/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk009/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClassLoad/classload001/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClassPrepare/classprep001/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClearBreakpoint/clrbrk001/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClearBreakpoint/clrbrk002/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClearBreakpoint/clrbrk005/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClearFieldAccessWatch/clrfldw001/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClearFieldAccessWatch/clrfldw002/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClearFieldModificationWatch/clrfmodw001/TestDescription.java \
-  vmTestbase/nsk/jvmti/ClearFieldModificationWatch/clrfmodw002/TestDescription.java \
-  vmTestbase/nsk/jvmti/CompiledMethodLoad/compmethload001/TestDescription.java \
-  vmTestbase/nsk/jvmti/CreateRawMonitor/crrawmon001/TestDescription.java \
-  vmTestbase/nsk/jvmti/CreateRawMonitor/crrawmon002/TestDescription.java \
-  vmTestbase/nsk/jvmti/DisposeEnvironment/disposeenv001/TestDescription.java \
-  vmTestbase/nsk/jvmti/DisposeEnvironment/disposeenv002/TestDescription.java \
-  vmTestbase/nsk/jvmti/Deallocate/dealloc001/TestDescription.java \
-  vmTestbase/nsk/jvmti/DestroyRawMonitor/drrawmon001/TestDescription.java \
-  vmTestbase/nsk/jvmti/DestroyRawMonitor/drrawmon003/TestDescription.java \
-  vmTestbase/nsk/jvmti/DestroyRawMonitor/drrawmon004/TestDescription.java \
-  vmTestbase/nsk/jvmti/DynamicCodeGenerated/dyncodgen001/TestDescription.java \
-  vmTestbase/nsk/jvmti/Exception/exception001/TestDescription.java \
-  vmTestbase/nsk/jvmti/ExceptionCatch/excatch001/TestDescription.java \
-  vmTestbase/nsk/jvmti/FieldAccess/fieldacc001/TestDescription.java \
-  vmTestbase/nsk/jvmti/FieldAccess/fieldacc002/TestDescription.java \
-  vmTestbase/nsk/jvmti/FieldAccess/fieldacc003/TestDescription.java \
-  vmTestbase/nsk/jvmti/FieldAccess/fieldacc004/TestDescription.java \
-  vmTestbase/nsk/jvmti/FieldModification/fieldmod001/TestDescription.java \
-  vmTestbase/nsk/jvmti/FieldModification/fieldmod002/TestDescription.java \
-  vmTestbase/nsk/jvmti/ForceGarbageCollection/forcegc001/TestDescription.java \
-  vmTestbase/nsk/jvmti/ForceGarbageCollection/forcegc002/TestDescription.java \
-  vmTestbase/nsk/jvmti/FramePop/framepop001/TestDescription.java \
-  vmTestbase/nsk/jvmti/FramePop/framepop002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GenerateEvents/genevents001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetAllThreads/allthr001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetAllThreads/allthr002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetAvailableProcessors/getavailproc001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetArgumentsSize/argsize001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetArgumentsSize/argsize002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetBytecodes/bytecodes001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetBytecodes/bytecodes002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetBytecodes/bytecodes003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetCapabilities/getcaps001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetCapabilities/getcaps002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassFields/getclfld005/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassFields/getclfld006/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassFields/getclfld007/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassLoader/getclsldr001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassLoader/getclsldr002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassLoader/getclsldr003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassLoaderClasses/clsldrclss001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassLoaderClasses/clsldrclss002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassMethods/getclmthd005/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassMethods/getclmthd006/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassMethods/getclmthd007/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassModifiers/getclmdf004/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassModifiers/getclmdf005/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassModifiers/getclmdf006/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassModifiers/getclmdf007/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassSignature/getclsig004/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassSignature/getclsig005/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassSignature/getclsig006/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassStatus/getclstat005/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassStatus/getclstat006/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetClassStatus/getclstat007/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetCurrentContendedMonitor/contmon001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetCurrentContendedMonitor/contmon002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetCurrentContendedMonitor/contmon003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetCurrentThreadCpuTime/curthrcputime001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetCurrentThreadCpuTimerInfo/curthrtimerinfo001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetEnvironmentLocalStorage/getenvstor001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetErrorName/geterrname001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetErrorName/geterrname002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetExtensionEvents/extevents001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetExtensionFunctions/extfuncs001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetFieldDeclaringClass/getfldecl001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetFieldDeclaringClass/getfldecl002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetFieldDeclaringClass/getfldecl004/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetFieldModifiers/getfldmdf003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetFieldModifiers/getfldmdf004/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetFieldName/getfldnm003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetFieldName/getfldnm004/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetFieldName/getfldnm005/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetFrameCount/framecnt001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetFrameCount/framecnt002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetFrameCount/framecnt003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetFrameLocation/frameloc002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetFrameLocation/frameloc003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetImplementedInterfaces/getintrf005/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetImplementedInterfaces/getintrf006/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetImplementedInterfaces/getintrf007/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetJLocationFormat/getjlocfmt001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetJLocationFormat/getjlocfmt002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetJNIFunctionTable/getjniftab001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetJNIFunctionTable/getjniftab002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetLineNumberTable/linetab001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetLineNumberTable/linetab002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetLineNumberTable/linetab003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetLoadedClasses/loadedclss001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetLoadedClasses/loadedclss002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetLocalVariable/getlocal001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetLocalVariable/getlocal002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetLocalVariableTable/localtab001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetLocalVariableTable/localtab002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetLocalVariableTable/localtab003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetLocalVariableTable/localtab004/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetLocalVariableTable/localtab005/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetMaxLocals/maxloc001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetMaxLocals/maxloc002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetMethodDeclaringClass/declcls001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetMethodDeclaringClass/declcls002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetMethodDeclaringClass/declcls003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetObjectHashCode/objhashcode001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetMethodLocation/methloc001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetMethodLocation/methloc002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetMethodModifiers/methmod001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetMethodModifiers/methmod002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetMethodName/methname001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetMethodName/methname002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetMethodName/methname003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetObjectMonitorUsage/objmonusage001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetObjectMonitorUsage/objmonusage002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetObjectMonitorUsage/objmonusage003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetObjectMonitorUsage/objmonusage004/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetObjectMonitorUsage/objmonusage005/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetObjectSize/objsize001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetObjectsWithTags/objwithtags001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetOwnedMonitorInfo/ownmoninf001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetOwnedMonitorInfo/ownmoninf002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetOwnedMonitorInfo/ownmoninf003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetPhase/getphase001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetPhase/getphase002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetPotentialCapabilities/getpotcaps001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetSourceDebugExtension/srcdebugex001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetSourceDebugExtension/srcdebugex002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetSourceDebugExtension/srcdebugex003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetSourceFileName/getsrcfn004/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetSourceFileName/getsrcfn005/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetSourceFileName/getsrcfn006/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetSystemProperties/getsysprops001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetSystemProperties/getsysprops002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetSystemProperty/getsysprop001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetSystemProperty/getsysprop002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr004/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr005/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr006/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr007/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr008/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr009/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetTag/gettag001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetThreadCpuTime/thrcputime001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetThreadCpuTime/thrcputime002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetThreadCpuTimerInfo/thrtimerinfo001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetThreadGroupChildren/getthrdgrpchld001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetThreadGroupInfo/thrgrpinfo001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetThreadGroupInfo/thrgrpinfo002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetThreadInfo/thrinfo001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetThreadInfo/thrinfo002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetThreadLocalStorage/getthrdstor001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetThreadState/thrstat001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetThreadState/thrstat002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetThreadState/thrstat003/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetThreadState/thrstat004/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetThreadState/thrstat005/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetTime/gettime001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetTimerInfo/timerinfo001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetTopThreadGroups/topthrgrp001/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetTopThreadGroups/topthrgrp002/TestDescription.java \
-  vmTestbase/nsk/jvmti/GetVersionNumber/getvern001/TestDescription.java \
-  vmTestbase/nsk/jvmti/InterruptThread/intrpthrd001/TestDescription.java \
-  vmTestbase/nsk/jvmti/InterruptThread/intrpthrd002/TestDescription.java \
-  vmTestbase/nsk/jvmti/InterruptThread/intrpthrd003/TestDescription.java \
-  vmTestbase/nsk/jvmti/IsArrayClass/isarray004/TestDescription.java \
-  vmTestbase/nsk/jvmti/IsArrayClass/isarray005/TestDescription.java \
-  vmTestbase/nsk/jvmti/IsFieldSynthetic/isfldsin002/TestDescription.java \
-  vmTestbase/nsk/jvmti/IsFieldSynthetic/isfldsin003/TestDescription.java \
-  vmTestbase/nsk/jvmti/IsInterface/isintrf004/TestDescription.java \
-  vmTestbase/nsk/jvmti/IsInterface/isintrf005/TestDescription.java \
-  vmTestbase/nsk/jvmti/IsMethodNative/isnative001/TestDescription.java \
-  vmTestbase/nsk/jvmti/IsMethodNative/isnative002/TestDescription.java \
-  vmTestbase/nsk/jvmti/IsMethodObsolete/isobsolete001/TestDescription.java \
-  vmTestbase/nsk/jvmti/IsMethodSynthetic/issynth001/TestDescription.java \
-  vmTestbase/nsk/jvmti/IsMethodSynthetic/issynth002/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverHeap/iterheap001/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverHeap/iterheap002/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverHeap/iterheap003/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverHeap/iterheap004/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverHeap/iterheap005/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverHeap/iterheap006/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverHeap/iterheap007/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverInstancesOfClass/iterinstcls001/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverInstancesOfClass/iterinstcls002/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverInstancesOfClass/iterinstcls003/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverInstancesOfClass/iterinstcls004/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverInstancesOfClass/iterinstcls005/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverInstancesOfClass/iterinstcls006/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverInstancesOfClass/iterinstcls007/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverObjectsReachableFromObject/iterobjreachobj001/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverObjectsReachableFromObject/iterobjreachobj002/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverObjectsReachableFromObject/iterobjreachobj003/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverObjectsReachableFromObject/iterobjreachobj004/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverObjectsReachableFromObject/iterobjreachobj005/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverReachableObjects/iterreachobj001/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverReachableObjects/iterreachobj002/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverReachableObjects/iterreachobj003/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverReachableObjects/iterreachobj004/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateOverReachableObjects/iterreachobj005/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateThroughHeap/callbacks/Callbacks.java \
-  vmTestbase/nsk/jvmti/IterateThroughHeap/concrete-klass-filter/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateThroughHeap/non-concrete-klass-filter/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateThroughHeap/filter-tagged/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateThroughHeap/filter-untagged/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateThroughHeap/filter-class-tagged/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateThroughHeap/filter-class-untagged/TestDescription.java \
-  vmTestbase/nsk/jvmti/IterateThroughHeap/abort/Abort.java \
-  vmTestbase/nsk/jvmti/MethodEntry/mentry001/TestDescription.java \
-  vmTestbase/nsk/jvmti/MethodEntry/mentry002/TestDescription.java \
-  vmTestbase/nsk/jvmti/MethodExit/mexit002/TestDescription.java \
-  vmTestbase/nsk/jvmti/MonitorContendedEnter/mcontenter001/TestDescription.java \
-  vmTestbase/nsk/jvmti/MonitorContendedEntered/mcontentered001/TestDescription.java \
-  vmTestbase/nsk/jvmti/MonitorWait/monitorwait001/TestDescription.java \
-  vmTestbase/nsk/jvmti/MonitorWaited/monitorwaited001/TestDescription.java \
-  vmTestbase/nsk/jvmti/NativeMethodBind/nativemethbind001/TestDescription.java \
-  vmTestbase/nsk/jvmti/NativeMethodBind/nativemethbind002/TestDescription.java \
-  vmTestbase/nsk/jvmti/NativeMethodBind/nativemethbind003/TestDescription.java \
-  vmTestbase/nsk/jvmti/NativeMethodBind/nativemethbind004/TestDescription.java \
-  vmTestbase/nsk/jvmti/NotifyFramePop/nframepop001/TestDescription.java \
-  vmTestbase/nsk/jvmti/NotifyFramePop/nframepop002/TestDescription.java \
-  vmTestbase/nsk/jvmti/NotifyFramePop/nframepop003/TestDescription.java \
-  vmTestbase/nsk/jvmti/ObjectFree/objfree002/TestDescription.java \
-  vmTestbase/nsk/jvmti/PopFrame/popframe001/TestDescription.java \
-  vmTestbase/nsk/jvmti/PopFrame/popframe002/TestDescription.java \
-  vmTestbase/nsk/jvmti/PopFrame/popframe003/TestDescription.java \
-  vmTestbase/nsk/jvmti/PopFrame/popframe004/TestDescription.java \
-  vmTestbase/nsk/jvmti/PopFrame/popframe005/TestDescription.java \
-  vmTestbase/nsk/jvmti/PopFrame/popframe006/TestDescription.java \
-  vmTestbase/nsk/jvmti/PopFrame/popframe007/TestDescription.java \
-  vmTestbase/nsk/jvmti/PopFrame/popframe008/TestDescription.java \
-  vmTestbase/nsk/jvmti/PopFrame/popframe009/TestDescription.java \
-  vmTestbase/nsk/jvmti/PopFrame/popframe010/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorEnter/rawmonenter001/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorEnter/rawmonenter002/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorEnter/rawmonenter003/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorEnter/rawmonenter004/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorExit/rawmonexit001/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorExit/rawmonexit002/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorExit/rawmonexit003/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorExit/rawmonexit005/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorNotify/rawmnntfy001/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorNotify/rawmnntfy002/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorNotify/rawmnntfy003/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorNotify/rawmnntfy004/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorNotifyAll/rawmnntfyall001/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorNotifyAll/rawmnntfyall002/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorNotifyAll/rawmnntfyall003/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorNotifyAll/rawmnntfyall004/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorWait/rawmnwait001/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorWait/rawmnwait002/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorWait/rawmnwait003/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorWait/rawmnwait004/TestDescription.java \
-  vmTestbase/nsk/jvmti/RawMonitorWait/rawmnwait005/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/StressRedefine/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/StressRedefineWithoutBytecodeCorruption/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass001/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass002/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass003/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass004/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass005/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass006/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass008/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass009/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass010/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass011/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass012/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass013/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass014/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass015/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass016/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass017/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass018/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass019/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass020/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass021/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass022/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass023/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass024/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass025/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass026/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass027/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass028/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass029/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass030/TestDescription.java \
-  vmTestbase/nsk/jvmti/RedefineClasses/redefclass031/TestDescription.java \
-  vmTestbase/nsk/jvmti/RelinquishCapabilities/relcaps001/TestDescription.java \
-  vmTestbase/nsk/jvmti/RelinquishCapabilities/relcaps002/TestDescription.java \
-  vmTestbase/nsk/jvmti/ResumeThread/resumethrd001/TestDescription.java \
-  vmTestbase/nsk/jvmti/ResumeThread/resumethrd002/TestDescription.java \
-  vmTestbase/nsk/jvmti/ResumeThreadList/resumethrdlst001/TestDescription.java \
-  vmTestbase/nsk/jvmti/ResumeThreadList/resumethrdlst002/TestDescription.java \
-  vmTestbase/nsk/jvmti/RunAgentThread/agentthr001/TestDescription.java \
-  vmTestbase/nsk/jvmti/RunAgentThread/agentthr002/TestDescription.java \
-  vmTestbase/nsk/jvmti/RunAgentThread/agentthr003/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetBreakpoint/setbrk002/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetBreakpoint/setbrk003/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetBreakpoint/setbrk005/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetBreakpoint/setbrk007/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetBreakpoint/setbrk008/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetEnvironmentLocalStorage/setenvstor001/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetEnvironmentLocalStorage/setenvstor002/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetEnvironmentLocalStorage/setenvstor003/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetEventCallbacks/setevntcallb001/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetEventCallbacks/setevntcallb002/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetEventCallbacks/setevntcallb003/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetEventNotificationMode/setnotif001/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetExtensionEventCallback/setextevent001/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetFieldAccessWatch/setfldw001/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetFieldAccessWatch/setfldw002/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetFieldAccessWatch/setfldw003/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetFieldAccessWatch/setfldw004/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetFieldAccessWatch/setfldw005/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetFieldAccessWatch/setfldw006/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetFieldModificationWatch/setfmodw002/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetFieldModificationWatch/setfmodw003/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetFieldModificationWatch/setfmodw004/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetFieldModificationWatch/setfmodw005/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetFieldModificationWatch/setfmodw006/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetJNIFunctionTable/setjniftab001/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetJNIFunctionTable/setjniftab002/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetLocalVariable/setlocal001/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetLocalVariable/setlocal002/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetLocalVariable/setlocal003/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetLocalVariable/setlocal004/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetSystemProperty/setsysprop002/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetSystemProperty/setsysprop003/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetTag/settag001/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetThreadLocalStorage/setthrdstor001/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetThreadLocalStorage/setthrdstor002/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetThreadLocalStorage/setthrdstor003/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetVerboseFlag/setvrbflag001/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetVerboseFlag/setvrbflag002/TestDescription.java \
-  vmTestbase/nsk/jvmti/SingleStep/singlestep001/TestDescription.java \
-  vmTestbase/nsk/jvmti/SingleStep/singlestep003/TestDescription.java \
-  vmTestbase/nsk/jvmti/SuspendThread/suspendthrd001/TestDescription.java \
-  vmTestbase/nsk/jvmti/SuspendThreadList/suspendthrdlst001/TestDescription.java \
-  vmTestbase/nsk/jvmti/StopThread/stopthrd006/TestDescription.java \
-  vmTestbase/nsk/jvmti/StopThread/stopthrd007/TestDescription.java \
-  vmTestbase/nsk/jvmti/ThreadEnd/threadend001/TestDescription.java \
-  vmTestbase/nsk/jvmti/ThreadEnd/threadend002/TestDescription.java \
-  vmTestbase/nsk/jvmti/ThreadStart/threadstart001/TestDescription.java \
-  vmTestbase/nsk/jvmti/ThreadStart/threadstart002/TestDescription.java \
-  vmTestbase/nsk/jvmti/ThreadStart/threadstart003/TestDescription.java \
-  vmTestbase/nsk/jvmti/VMDeath/vmdeath001/TestDescription.java \
-  vmTestbase/nsk/jvmti/VMInit/vminit001/TestDescription.java \
-  vmTestbase/nsk/jvmti/VMObjectAlloc/vmobjalloc001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/allocation/AP01/ap01t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/allocation/AP02/ap02t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/allocation/AP03/ap03t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/allocation/AP05/ap05t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/allocation/AP05/ap05t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/allocation/AP06/ap06t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/allocation/AP07/ap07t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/allocation/AP07/ap07t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/allocation/AP09/ap09t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/allocation/AP10/ap10t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/allocation/AP11/ap11t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/bcinstr/BI01/bi01t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/bcinstr/BI01/bi01t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/bcinstr/BI02/bi02t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/bcinstr/BI02/bi02t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/bcinstr/BI03/bi03t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/bcinstr/BI03/bi03t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/bcinstr/BI04/bi04t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t003/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t004/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t005/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t006/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t008/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t009/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t010/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t011/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t012/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t013/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t014/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t015/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t016/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t017/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t018/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t019/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t020/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t021/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/capability/CM02/cm02t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/contention/TC01/tc01t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/contention/TC02/tc02t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/contention/TC03/tc03t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/contention/TC03/tc03t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/contention/TC04/tc04t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/events/EM01/em01t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/events/EM01/em01t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/events/EM02/em02t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/events/EM02/em02t004/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/events/EM02/em02t008/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/events/EM02/em02t009/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/events/EM02/em02t010/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/events/EM02/em02t011/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/events/EM04/em04t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/events/EM05/em05t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/events/EM06/em06t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/events/EM07/em07t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/general_functions/GF01/gf01t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/general_functions/GF04/gf04t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/general_functions/GF06/gf06t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/general_functions/GF08/gf08t001/TestDriver.java \
-  vmTestbase/nsk/jvmti/scenarios/general_functions/GF08/gf08t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/general_functions/GF08/gf08t003/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t003/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t004/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t005/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t006/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t007/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t008/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS102/hs102t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS102/hs102t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS103/hs103t002/hs103t002.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS104/hs104t001/hs104t001.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS104/hs104t002/hs104t002.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS201/hs201t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS201/hs201t003/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS202/hs202t001/hs202t001.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS202/hs202t002/hs202t002.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS203/hs203t001/hs203t001.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS203/hs203t002/hs203t002.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS203/hs203t003/hs203t003.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS204/hs204t002/hs204t002.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS204/hs204t003/hs204t003.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS204/hs204t004/hs204t004.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS301/hs301t001/hs301t001.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS301/hs301t002/hs301t002.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS301/hs301t003/hs301t003.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS301/hs301t004/hs301t004.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS301/hs301t005/hs301t005.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t001/hs302t001.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t002/hs302t002.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t003/hs302t003.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t004/hs302t004.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t005/hs302t005.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t006/hs302t006.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t007/hs302t007.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t008/hs302t008.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t009/hs302t009.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t010/hs302t010.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t011/hs302t011.java \
-  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t012/hs302t012.java \
-  vmTestbase/nsk/jvmti/scenarios/jni_interception/JI01/ji01t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/jni_interception/JI03/ji03t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/jni_interception/JI03/ji03t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/jni_interception/JI03/ji03t003/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/jni_interception/JI05/ji05t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/jni_interception/JI06/ji06t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA01/ma01t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA02/ma02t001/TestDriver.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA03/ma03t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA04/ma04t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA04/ma04t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA04/ma04t003/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA05/ma05t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA06/ma06t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA07/ma07t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA08/ma08t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t003/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t004/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t005/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t006/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t007/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t008/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP01/sp01t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP02/sp02t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP02/sp02t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP02/sp02t003/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP03/sp03t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP03/sp03t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP04/sp04t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP04/sp04t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP05/sp05t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP05/sp05t003/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP06/sp06t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP06/sp06t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP06/sp06t003/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP07/sp07t001/TestDescription.java \
-  vmTestbase/nsk/jvmti/scenarios/sampling/SP07/sp07t002/TestDescription.java \
-  vmTestbase/nsk/jvmti/AttachOnDemand/attach002a/TestDescription.java \
-  vmTestbase/nsk/jvmti/AttachOnDemand/attach024/TestDescription.java \
-  vmTestbase/nsk/jvmti/RetransformClasses/retransform002/TestDescription.java \
-  vmTestbase/nsk/jvmti/RetransformClasses/retransform003/TestDriver.java \
-  vmTestbase/nsk/jvmti/RetransformClasses/retransform004/TestDescription.java \
-  vmTestbase/nsk/jvmti/ForceEarlyReturn/ForceEarlyReturn001/TestDescription.java \
-  vmTestbase/nsk/jvmti/ForceEarlyReturn/ForceEarlyReturn002/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetNativeMethodPrefix/SetNativeMethodPrefix001/TestDescription.java \
-  vmTestbase/nsk/jvmti/SetNativeMethodPrefix/SetNativeMethodPrefix002/TestDriver.java \
-  vmTestbase/nsk/jvmti/GetEnv/GetEnv001/GetEnv001.java \
-  vmTestbase/nsk/jvmti/unit/MethodBind/JvmtiTest/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/OnUnload/JvmtiTest/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/StackTrace/JvmtiTest/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/agentthr/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/clsldrclss00x/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/events/redefineCFLH/JvmtiTest/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/extmech/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/functions/AddToBootstrapClassLoaderSearch/JvmtiTest/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/functions/Dispose/JvmtiTest/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/functions/environment/JvmtiTest/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/functions/nosuspendMonitorInfo/JvmtiTest/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/functions/nosuspendStackTrace/JvmtiTest/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/functions/rawmonitor/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/heap/BasicIterationTests/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/heap/BasicTagTests/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/heap/GetWithTests/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/heap/HeapWalkTests/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/heap/ObjectFreeTests/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/heap/ObjectSizeTests/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/heapref/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/refignore/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/setNullVMInit/JvmtiTest/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/GetLineNumberTable/linetab004/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/GetLocalVariable/getlocal003/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/GetLocalVariable/getlocal004/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/IsSynthetic/issynth001/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/FollowReferences/followref001/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/FollowReferences/followref002/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/FollowReferences/followref003/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/FollowReferences/followref004/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/FollowReferences/followref005/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/FollowReferences/followref006/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/ForceEarlyReturn/earlyretbase/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/ForceEarlyReturn/earlyretfp/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/ForceEarlyReturn/earlyretint/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/ForceEarlyReturn/earlyretlong/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/ForceEarlyReturn/earlyretobj/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/ForceEarlyReturn/earlyretstr/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/ForceEarlyReturn/earlyretvoid/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/GetAllStackTraces/getallstktr001/TestDescription.java \
-  vmTestbase/nsk/jvmti/unit/GetConstantPool/getcpool001/TestDescription.java
-
 # JDWP tests
 vmTestbase_nsk_jdwp = \
   vmTestbase/nsk/jdwp
 
-vmTestbase_nsk_jdwp_quick = \
-  vmTestbase/nsk/jdwp/ArrayReference/GetValues/getvalues001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ArrayReference/GetValues/getvalues002/TestDescription.java \
-  vmTestbase/nsk/jdwp/ArrayReference/Length/length001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ArrayReference/SetValues/setvalues001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ArrayType/NewInstance/newinstance001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ClassLoaderReference/VisibleClasses/visibclasses001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ClassObjectReference/ReflectedType/reflectype001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ClassType/InvokeMethod/invokemeth001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ClassType/NewInstance/newinst001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ClassType/SetValues/setvalues001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ClassType/Superclass/superclass001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/BREAKPOINT/breakpoint001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/EXCEPTION/exception001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/FIELD_ACCESS/fldaccess001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/FIELD_MODIFICATION/fldmodification001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/CLASS_PREPARE/clsprepare001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/CLASS_UNLOAD/clsunload001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/METHOD_ENTRY/methentry001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/METHOD_EXIT/methexit001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/SINGLE_STEP/singlestep001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/SINGLE_STEP/singlestep002/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/SINGLE_STEP/singlestep003/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/THREAD_DEATH/thrdeath001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/THREAD_START/thrstart001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/VM_DEATH/vmdeath001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/VM_START/vmstart001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/Composite/composite001/TestDescription.java \
-  vmTestbase/nsk/jdwp/EventRequest/Clear/clear001/TestDescription.java \
-  vmTestbase/nsk/jdwp/EventRequest/ClearAllBreakpoints/clrallbreakp001/TestDescription.java \
-  vmTestbase/nsk/jdwp/EventRequest/ClearAllBreakpoints/clrallbreakp002/TestDescription.java \
-  vmTestbase/nsk/jdwp/EventRequest/ClearAllBreakpoints/clrallbreakp003/TestDescription.java \
-  vmTestbase/nsk/jdwp/EventRequest/Set/set001/TestDescription.java \
-  vmTestbase/nsk/jdwp/EventRequest/Set/set002/TestDescription.java \
-  vmTestbase/nsk/jdwp/Method/LineTable/linetable001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Method/VariableTable/vartable001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Method/Bytecodes/bytecodes001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ObjectReference/DisableCollection/disablecol001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ObjectReference/EnableCollection/enablecol001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ObjectReference/GetValues/getvalues001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ObjectReference/InvokeMethod/invokemeth001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ObjectReference/IsCollected/iscollected001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ObjectReference/MonitorInfo/monitorinfo001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ObjectReference/ReferenceType/referencetype001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ObjectReference/SetValues/setvalues001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/ClassLoader/classloader001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/ClassObject/classobj001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/Fields/fields001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/GetValues/getvalues001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/Interfaces/interfaces001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/Methods/methods001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/Modifiers/modifiers001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/NestedTypes/nestedtypes001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/Signature/signature001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/SourceFile/srcfile001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/Status/status001/TestDescription.java \
-  vmTestbase/nsk/jdwp/StackFrame/GetValues/getvalues001/TestDescription.java \
-  vmTestbase/nsk/jdwp/StackFrame/SetValues/setvalues001/TestDescription.java \
-  vmTestbase/nsk/jdwp/StackFrame/ThisObject/thisobject001/TestDescription.java \
-  vmTestbase/nsk/jdwp/StringReference/Value/value001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadGroupReference/Children/children001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadGroupReference/Name/name001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadGroupReference/Parent/parent001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadReference/CurrentContendedMonitor/curcontmonitor001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadReference/Frames/frames001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadReference/FrameCount/framecnt001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadReference/Interrupt/interrupt001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadReference/Name/name001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadReference/OwnedMonitors/ownmonitors001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadReference/Resume/resume001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadReference/Status/status001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadReference/Stop/stop001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadReference/Suspend/suspend001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadReference/SuspendCount/suspendcnt001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ThreadReference/ThreadGroup/threadgroup001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/AllThreads/allthreads001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/Capabilities/capabilities001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/ClassPaths/classpaths001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/ClassesBySignature/classbysig001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/CreateString/createstr001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/Dispose/dispose001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/DisposeObjects/disposeobj001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/Exit/exit001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/HoldEvents/holdevents001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/IDSizes/idsizes001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/TopLevelThreadGroups/threadgroups001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/ReleaseEvents/releaseevents001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/ReleaseEvents/releaseevents002/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/Resume/resume001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/Version/version001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/Version/version002/TestDescription.java \
-  vmTestbase/nsk/jdwp/Event/VM_DEATH/vmdeath002/TestDescription.java \
-  vmTestbase/nsk/jdwp/Method/IsObsolete/isobsolete001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Method/IsObsolete/isobsolete002/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/SourceDebugExtension/srcdebugext001/TestDescription.java \
-  vmTestbase/nsk/jdwp/StackFrame/PopFrames/popframes001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/CapabilitiesNew/capabilitiesnew001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/RedefineClasses/redefinecls001/TestDescription.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/SetDefaultStratum/setdefstrat001/TestDescription.java \
-  vmTestbase/nsk/jdwp/Method/VariableTableWithGeneric/vartblwithgen001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/FieldsWithGeneric/fldwithgeneric001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/MethodsWithGeneric/methwithgeneric001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/SignatureWithGeneric/sigwithgeneric001/TestDescription.java \
-  vmTestbase/nsk/jdwp/ReferenceType/Instances/instances001/instances001.java \
-  vmTestbase/nsk/jdwp/ReferenceType/Instances/instances002/instances002.java \
-  vmTestbase/nsk/jdwp/ObjectReference/ReferringObjects/referringObjects001/referringObjects001.java \
-  vmTestbase/nsk/jdwp/ObjectReference/ReferringObjects/referringObjects002/referringObjects002.java \
-  vmTestbase/nsk/jdwp/VirtualMachine/InstanceCounts/instanceCounts001/instanceCounts001.java \
-  vmTestbase/nsk/jdwp/ThreadReference/ForceEarlyReturn/forceEarlyReturn002/forceEarlyReturn002.java \
-  vmTestbase/nsk/jdwp/ThreadReference/OwnedMonitorsStackDepthInfo/ownedMonitorsStackDepthInfo001/ownedMonitorsStackDepthInfo001.java \
-  vmTestbase/nsk/jdwp/ThreadReference/OwnedMonitorsStackDepthInfo/ownedMonitorsStackDepthInfo002/ownedMonitorsStackDepthInfo002.java
-
 vmTestbase_nsk_stress = \
   vmTestbase/nsk/stress
 
@@ -1887,32 +369,6 @@
   :vmTestbase_vm_gc_misc \
   :vmTestbase_vm_gc_ref
 
-# vmTestbase_vm_gc w/ 'quick' k/w
-vmTestbase_vm_gc_quick = \
-  vmTestbase/vm/gc/compact/Compact_Arrays \
-  vmTestbase/vm/gc/compact/Compact_Strings_TwoFields \
-  vmTestbase/vm/gc/compact/Compact_InternedStrings_Strings \
-  vmTestbase/vm/gc/compact/Humongous_Arrays5M \
-  vmTestbase/vm/gc/compact/Humongous_NonbranchyTree \
-  vmTestbase/vm/gc/containers/LinkedBlockingDeque_Arrays/TestDescription.java \
-  vmTestbase/vm/gc/containers/LinkedHashMap_Arrays/TestDescription.java \
-  vmTestbase/vm/gc/containers/Combination05/TestDescription.java \
-  vmTestbase/gc/ArrayJuggle/Juggle01 \
-  vmTestbase/gc/ArrayJuggle/Juggle14 \
-  vmTestbase/gc/ArrayJuggle/Juggle22 \
-  vmTestbase/gc/ArrayJuggle/Juggle29 \
-  vmTestbase/gc/ArrayJuggle/Juggle34 \
-  vmTestbase/gc/gctests/LargeObjects/large001/large001.java \
-  vmTestbase/gc/gctests/LoadUnloadGC2/LoadUnloadGC2.java \
-  vmTestbase/gc/gctests/StringGC/StringGC.java \
-  vmTestbase/gc/gctests/StringInternGC/StringInternGC.java \
-  vmTestbase/gc/gctests/ReferencesGC/ReferencesGC.java \
-  vmTestbase/vm/gc/kind/parOld/TestDescription.java \
-  vmTestbase/gc/lock/jni/jnilock001/TestDescription.java \
-  vmTestbase/gc/lock/jniref/jnireflock04/TestDescription.java \
-  vmTestbase/gc/lock/jvmti/alloc/jvmtialloclock02/TestDescription.java \
-  vmTestbase/gc/lock/malloc/malloclock03/TestDescription.java
-
 # In a loop: fill out the heap until OOME and then partly clear it. Variate object type and size
 vmTestbase_vm_gc_compact = \
   vmTestbase/vm/gc/compact
@@ -1982,287 +438,6 @@
   vmTestbase/jit \
   vmTestbase/vm/jit
 
-vmTestbase_vm_compiler_quick = \
-  vmTestbase/vm/compiler/jbe/constprop/constprop01/constprop01.java \
-  vmTestbase/vm/compiler/jbe/constprop/constprop02/constprop02.java \
-  vmTestbase/vm/compiler/jbe/dead/dead01/dead01.java \
-  vmTestbase/vm/compiler/jbe/dead/dead02/dead02.java \
-  vmTestbase/vm/compiler/jbe/dead/dead03/dead03.java \
-  vmTestbase/vm/compiler/jbe/dead/dead04/dead04.java \
-  vmTestbase/vm/compiler/jbe/dead/dead05/dead05.java \
-  vmTestbase/vm/compiler/jbe/dead/dead06/dead06.java \
-  vmTestbase/vm/compiler/jbe/dead/dead07/dead07.java \
-  vmTestbase/vm/compiler/jbe/dead/dead08/dead08.java \
-  vmTestbase/vm/compiler/jbe/dead/dead09/dead09.java \
-  vmTestbase/vm/compiler/jbe/dead/dead10/dead10.java \
-  vmTestbase/vm/compiler/jbe/dead/dead11/dead11.java \
-  vmTestbase/vm/compiler/jbe/dead/dead12/dead12.java \
-  vmTestbase/vm/compiler/jbe/dead/dead13/dead13.java \
-  vmTestbase/vm/compiler/jbe/dead/dead14/dead14.java \
-  vmTestbase/vm/compiler/jbe/dead/dead15/dead15.java \
-  vmTestbase/vm/compiler/jbe/dead/dead16/dead16.java \
-  vmTestbase/vm/compiler/jbe/hoist/hoist01/hoist01.java \
-  vmTestbase/vm/compiler/jbe/hoist/hoist02/hoist02.java \
-  vmTestbase/vm/compiler/jbe/hoist/hoist03/hoist03.java \
-  vmTestbase/vm/compiler/jbe/hoist/hoist04/hoist04.java \
-  vmTestbase/vm/compiler/jbe/subcommon/subcommon01/subcommon01.java \
-  vmTestbase/vm/compiler/jbe/subcommon/subcommon03/subcommon03.java \
-  vmTestbase/vm/compiler/jbe/subcommon/subcommon04/subcommon04.java \
-  vmTestbase/vm/compiler/jbe/subcommon/subcommon05/subcommon05.java \
-  vmTestbase/vm/compiler/coverage/parentheses/TestDescription.java \
-  vmTestbase/vm/compiler/optimizations/stringconcat/explicit/Explicit01/cs_disabled/TestDescription.java \
-  vmTestbase/vm/compiler/optimizations/stringconcat/explicit/Explicit01/cs_enabled/TestDescription.java \
-  vmTestbase/vm/compiler/optimizations/stringconcat/explicit/Merge01/cs_disabled/TestDescription.java \
-  vmTestbase/vm/compiler/optimizations/stringconcat/explicit/Merge01/cs_enabled/TestDescription.java \
-  vmTestbase/vm/compiler/optimizations/stringconcat/implicit/Implicit01/cs_disabled/TestDescription.java \
-  vmTestbase/vm/compiler/optimizations/stringconcat/implicit/Implicit01/cs_enabled/TestDescription.java \
-  vmTestbase/vm/compiler/optimizations/stringconcat/implicit/Merge01/cs_disabled/TestDescription.java \
-  vmTestbase/vm/compiler/optimizations/stringconcat/implicit/Merge01/cs_enabled/TestDescription.java \
-  vmTestbase/vm/compiler/optimizations/partialpeel/ForWhile/TestDescription.java \
-  vmTestbase/vm/compiler/optimizations/partialpeel/While/TestDescription.java \
-  vmTestbase/vm/compiler/optimizations/partialpeel/WhileWhile/TestDescription.java \
-  vmTestbase/vm/compiler/optimizations/partialpeel/Do/TestDescription.java \
-  vmTestbase/vm/compiler/complog/uninit/uninit001/uninit001.java \
-  vmTestbase/vm/compiler/complog/uninit/uninit002/uninit002.java \
-  vmTestbase/vm/compiler/complog/uninit/uninit003/uninit003.java \
-  vmTestbase/vm/compiler/complog/uninit/uninit004/uninit004.java \
-  vmTestbase/vm/compiler/complog/uninit/uninit005/uninit005.java \
-  vmTestbase/vm/compiler/complog/uninit/uninit006/uninit006.java \
-  vmTestbase/vm/compiler/complog/uninit/uninit007/uninit007.java \
-  vmTestbase/vm/compiler/complog/uninit/uninit008/uninit008.java \
-  vmTestbase/vm/compiler/complog/uninit/uninit009/uninit009.java \
-  vmTestbase/vm/compiler/complog/uninit/uninit010/uninit010.java \
-  vmTestbase/vm/compiler/complog/uninit/uninit011/uninit011.java \
-  vmTestbase/vm/compiler/complog/uninit/uninit012/uninit012.java \
-  vmTestbase/vm/compiler/complog/uninit/uninit013/uninit013.java \
-  vmTestbase/jit/Arrays/ArrayBounds/ArrayBounds.java \
-  vmTestbase/jit/Arrays/ArrayStoreCheck/ArrayStoreCheck.java \
-  vmTestbase/jit/Arrays/ArrayTests/ArrayTests.java \
-  vmTestbase/jit/CEETest/CEETest.java \
-  vmTestbase/jit/CondExpr/CondExpr.java \
-  vmTestbase/jit/DivTest/DivTest.java \
-  vmTestbase/jit/ExcOpt/ExcOpt.java \
-  vmTestbase/jit/FloatingPoint/FPCompare/TestFPBinop/TestFPBinop.java \
-  vmTestbase/jit/FloatingPoint/gen_math/Filtering/Filtering.java \
-  vmTestbase/jit/FloatingPoint/gen_math/Loops01/Loops01.java \
-  vmTestbase/jit/FloatingPoint/gen_math/Loops02/Loops02.java \
-  vmTestbase/jit/FloatingPoint/gen_math/Loops03/Loops03.java \
-  vmTestbase/jit/FloatingPoint/gen_math/Loops04/Loops04.java \
-  vmTestbase/jit/FloatingPoint/gen_math/Loops05/Loops05.java \
-  vmTestbase/jit/FloatingPoint/gen_math/Loops06/Loops06.java \
-  vmTestbase/jit/FloatingPoint/gen_math/Loops07/Loops07.java \
-  vmTestbase/jit/FloatingPoint/gen_math/Matrix_3d/Matrix_3d.java \
-  vmTestbase/jit/FloatingPoint/gen_math/ShortCircuitTest/ShortCircuitTest.java \
-  vmTestbase/jit/FloatingPoint/gen_math/Summ/Summ.java \
-  vmTestbase/jit/PrintProperties/PrintProperties.java \
-  vmTestbase/jit/PrintThis/PrintThis.java \
-  vmTestbase/jit/Robert/Robert.java \
-  vmTestbase/jit/Sleeper/Sleeper.java \
-  vmTestbase/jit/bounds/bounds.java \
-  vmTestbase/jit/collapse/collapse.java \
-  vmTestbase/jit/deoptimization/test01/test01.java \
-  vmTestbase/jit/deoptimization/test02/test02.java \
-  vmTestbase/jit/deoptimization/test03/test03.java \
-  vmTestbase/jit/deoptimization/test04/test04.java \
-  vmTestbase/jit/deoptimization/test05/test05.java \
-  vmTestbase/jit/deoptimization/test06/test06.java \
-  vmTestbase/jit/deoptimization/test07/test07.java \
-  vmTestbase/jit/deoptimization/test08/test08.java \
-  vmTestbase/jit/escape/AdaptiveBlocking/AdaptiveBlocking001/AdaptiveBlocking001.java \
-  vmTestbase/jit/escape/LockElision/MatMul/MatMul.java \
-  vmTestbase/jit/escape/LockCoarsening/LockCoarsening002/TestDescription.java \
-  vmTestbase/jit/exception/exception.java \
-  vmTestbase/jit/graph/cgt0/cgt0.java \
-  vmTestbase/jit/graph/cgt1/cgt1.java \
-  vmTestbase/jit/graph/cgt2/cgt2.java \
-  vmTestbase/jit/graph/cgt3/cgt3.java \
-  vmTestbase/jit/graph/cgt4/cgt4.java \
-  vmTestbase/jit/graph/cgt5/cgt5.java \
-  vmTestbase/jit/graph/cgt6/cgt6.java \
-  vmTestbase/jit/graph/cgt7/cgt7.java \
-  vmTestbase/jit/graph/cgt8/cgt8.java \
-  vmTestbase/jit/graph/cgt9/cgt9.java \
-  vmTestbase/jit/graph/cgt10/cgt10.java \
-  vmTestbase/jit/graph/cgt11/cgt11.java \
-  vmTestbase/jit/init/init01/init01.java \
-  vmTestbase/jit/init/init02/init02.java \
-  vmTestbase/jit/inline/inline003/inline003.java \
-  vmTestbase/jit/inline/inline004/inline004.java \
-  vmTestbase/jit/inline/inline005/inline005.java \
-  vmTestbase/jit/inline/inline007/inline007.java \
-  vmTestbase/jit/misctests/JitBug1/JitBug1.java \
-  vmTestbase/jit/misctests/Pi/Pi.java \
-  vmTestbase/jit/misctests/clss14702/clss14702.java \
-  vmTestbase/jit/misctests/fpustack/GraphApplet.java \
-  vmTestbase/jit/misctests/putfield00802/putfield00802.java \
-  vmTestbase/jit/misctests/t5/t5.java \
-  vmTestbase/jit/overflow/overflow.java \
-  vmTestbase/jit/regression/b4427606/b4427606.java \
-  vmTestbase/jit/regression/b4446672/b4446672.java \
-  vmTestbase/jit/regression/CrashC1/CrashC1.java \
-  vmTestbase/jit/series/series.java \
-  vmTestbase/jit/t/t001/t001.java \
-  vmTestbase/jit/t/t002/t002.java \
-  vmTestbase/jit/t/t003/t003.java \
-  vmTestbase/jit/t/t004/t004.java \
-  vmTestbase/jit/t/t005/t005.java \
-  vmTestbase/jit/t/t006/t006.java \
-  vmTestbase/jit/t/t007/t007.java \
-  vmTestbase/jit/t/t008/t008.java \
-  vmTestbase/jit/t/t009/t009.java \
-  vmTestbase/jit/t/t011/t011.java \
-  vmTestbase/jit/t/t012/t012.java \
-  vmTestbase/jit/t/t013/t013.java \
-  vmTestbase/jit/t/t014/t014.java \
-  vmTestbase/jit/t/t015/t015.java \
-  vmTestbase/jit/t/t016/t016.java \
-  vmTestbase/jit/t/t017/t017.java \
-  vmTestbase/jit/t/t018/t018.java \
-  vmTestbase/jit/t/t019/t019.java \
-  vmTestbase/jit/t/t020/t020.java \
-  vmTestbase/jit/t/t021/t021.java \
-  vmTestbase/jit/t/t022/t022.java \
-  vmTestbase/jit/t/t023/t023.java \
-  vmTestbase/jit/t/t024/t024.java \
-  vmTestbase/jit/t/t025/t025.java \
-  vmTestbase/jit/t/t026/t026.java \
-  vmTestbase/jit/t/t027/t027.java \
-  vmTestbase/jit/t/t028/t028.java \
-  vmTestbase/jit/t/t029/t029.java \
-  vmTestbase/jit/t/t030/t030.java \
-  vmTestbase/jit/t/t031/t031.java \
-  vmTestbase/jit/t/t032/t032.java \
-  vmTestbase/jit/t/t033/t033.java \
-  vmTestbase/jit/t/t034/t034.java \
-  vmTestbase/jit/t/t035/t035.java \
-  vmTestbase/jit/t/t036/t036.java \
-  vmTestbase/jit/t/t037/t037.java \
-  vmTestbase/jit/t/t038/t038.java \
-  vmTestbase/jit/t/t039/t039.java \
-  vmTestbase/jit/t/t040/t040.java \
-  vmTestbase/jit/t/t041/t041.java \
-  vmTestbase/jit/t/t042/t042.java \
-  vmTestbase/jit/t/t043/t043.java \
-  vmTestbase/jit/t/t044/t044.java \
-  vmTestbase/jit/t/t045/t045.java \
-  vmTestbase/jit/t/t046/t046.java \
-  vmTestbase/jit/t/t047/t047.java \
-  vmTestbase/jit/t/t048/t048.java \
-  vmTestbase/jit/t/t049/t049.java \
-  vmTestbase/jit/t/t050/t050.java \
-  vmTestbase/jit/t/t051/t051.java \
-  vmTestbase/jit/t/t052/t052.java \
-  vmTestbase/jit/t/t053/t053.java \
-  vmTestbase/jit/t/t054/t054.java \
-  vmTestbase/jit/t/t055/t055.java \
-  vmTestbase/jit/t/t056/t056.java \
-  vmTestbase/jit/t/t057/t057.java \
-  vmTestbase/jit/t/t058/t058.java \
-  vmTestbase/jit/t/t059/t059.java \
-  vmTestbase/jit/t/t060/t060.java \
-  vmTestbase/jit/t/t061/t061.java \
-  vmTestbase/jit/t/t062/t062.java \
-  vmTestbase/jit/t/t063/t063.java \
-  vmTestbase/jit/t/t064/t064.java \
-  vmTestbase/jit/t/t065/t065.java \
-  vmTestbase/jit/t/t066/t066.java \
-  vmTestbase/jit/t/t067/t067.java \
-  vmTestbase/jit/t/t068/t068.java \
-  vmTestbase/jit/t/t069/t069.java \
-  vmTestbase/jit/t/t070/t070.java \
-  vmTestbase/jit/t/t071/t071.java \
-  vmTestbase/jit/t/t072/t072.java \
-  vmTestbase/jit/t/t073/t073.java \
-  vmTestbase/jit/t/t074/t074.java \
-  vmTestbase/jit/t/t075/t075.java \
-  vmTestbase/jit/t/t076/t076.java \
-  vmTestbase/jit/t/t077/t077.java \
-  vmTestbase/jit/t/t078/t078.java \
-  vmTestbase/jit/t/t079/t079.java \
-  vmTestbase/jit/t/t080/t080.java \
-  vmTestbase/jit/t/t081/t081.java \
-  vmTestbase/jit/t/t086/t086.java \
-  vmTestbase/jit/t/t087/t087.java \
-  vmTestbase/jit/t/t088/t088.java \
-  vmTestbase/jit/t/t091/t091.java \
-  vmTestbase/jit/t/t093/t093.java \
-  vmTestbase/jit/t/t094/t094.java \
-  vmTestbase/jit/t/t095/t095.java \
-  vmTestbase/jit/t/t096/t096.java \
-  vmTestbase/jit/t/t098/t098.java \
-  vmTestbase/jit/t/t099/t099.java \
-  vmTestbase/jit/t/t100/t100.java \
-  vmTestbase/jit/t/t101/t101.java \
-  vmTestbase/jit/t/t102/t102.java \
-  vmTestbase/jit/t/t103/t103.java \
-  vmTestbase/jit/t/t104/t104.java \
-  vmTestbase/jit/t/t105/t105.java \
-  vmTestbase/jit/t/t106/t106.java \
-  vmTestbase/jit/t/t107/t107.java \
-  vmTestbase/jit/t/t108/TestDescription.java \
-  vmTestbase/jit/t/t109/TestDescription.java \
-  vmTestbase/jit/t/t110/TestDescription.java \
-  vmTestbase/jit/t/t111/TestDescription.java \
-  vmTestbase/jit/t/t112/TestDescription.java \
-  vmTestbase/jit/t/t113/TestDescription.java \
-  vmTestbase/jit/tiered/TestDescription.java \
-  vmTestbase/jit/verifier/VerifyInitLocal/VerifyInitLocal.java \
-  vmTestbase/jit/verifier/VerifyMergeStack/VerifyMergeStack.java \
-  vmTestbase/jit/wide/wide01/wide01.java \
-  vmTestbase/jit/wide/wide02/wide02.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc1/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc2/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc3/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc4/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc5/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc6/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc7/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc8/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc9/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc10/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc11/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc12/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc13/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc14/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc15/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc16/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc17/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc18/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc19/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc20/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc21/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc22/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc23/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc24/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc25/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc26/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc27/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc28/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc29/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc30/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc31/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc32/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc33/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc34/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc35/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc36/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc37/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc38/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc39/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc40/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc41/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc42/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc43/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc44/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc45/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc46/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc47/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc48/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc49/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc50/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc51/TestDescription.java \
-  vmTestbase/vm/jit/LongTransitions/nativeFnc52/TestDescription.java
-
 # JSR292 tests (invokedynamic AKA Multi-Language VM AKA Da Vinci Machine)
 vmTestbase_vm_mlvm = \
   vmTestbase/vm/mlvm
@@ -2274,3 +449,5 @@
 # JDB tests
 vmTestbase_nsk_jdb = \
   vmTestbase/nsk/jdb
+
+# vmTestbase_*_quick groups are defined in TEST.quick-groups
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/TEST.quick-groups	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,1844 @@
+#
+# Copyright (c) 2018, 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.
+#
+
+vmTestbase_nsk_monitoring_quick = \
+  vmTestbase/nsk/monitoring/MemoryNotificationInfo/MemoryNotificationInfo/info001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryNotificationInfo/from/from001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryNotificationInfo/getCount/getcount001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryNotificationInfo/getPoolName/getpoolname001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryNotificationInfo/getUsage/getusage001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsage/getusage001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsage/getusage002/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsage/getusage003/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsage/getusage004/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsage/getusage005/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThreshold/getthreshold001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThreshold/getthreshold002/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThreshold/getthreshold003/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThreshold/getthreshold004/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThreshold/getthreshold005/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThresholdCount/getcount001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThresholdCount/getcount002/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThresholdCount/getcount003/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThresholdCount/getcount004/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getCollectionUsageThresholdCount/getcount005/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getPeakUsage/getpeak001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getPeakUsage/getpeak002/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getPeakUsage/getpeak003/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getPeakUsage/getpeak004/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getPeakUsage/getpeak005/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsage/getusage001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsage/getusage002/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsage/getusage003/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsage/getusage004/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsage/getusage005/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThreshold/getthreshold001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThreshold/getthreshold002/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThreshold/getthreshold003/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThreshold/getthreshold004/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThreshold/getthreshold005/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThresholdCount/getcount001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThresholdCount/getcount002/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThresholdCount/getcount003/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThresholdCount/getcount004/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/getUsageThresholdCount/getcount005/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdExceeded/isexceeded001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdExceeded/isexceeded002/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdExceeded/isexceeded003/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdExceeded/isexceeded004/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdExceeded/isexceeded005/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdSupported/issupported001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdSupported/issupported002/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdSupported/issupported003/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdSupported/issupported004/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isCollectionUsageThresholdSupported/issupported005/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded002/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded003/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded004/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdExceeded/isexceeded005/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdSupported/issupported001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdSupported/issupported002/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdSupported/issupported003/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdSupported/issupported004/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/isUsageThresholdSupported/issupported005/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/resetPeakUsage/reset001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/resetPeakUsage/reset002/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/resetPeakUsage/reset003/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/resetPeakUsage/reset004/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/resetPeakUsage/reset005/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/setCollectionUsageThreshold/setthreshold001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/setCollectionUsageThreshold/setthreshold002/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/setCollectionUsageThreshold/setthreshold003/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/setCollectionUsageThreshold/setthreshold004/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/setCollectionUsageThreshold/setthreshold005/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/setUsageThreshold/setthreshold001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/setUsageThreshold/setthreshold002/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/setUsageThreshold/setthreshold003/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/setUsageThreshold/setthreshold004/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryPoolMBean/setUsageThreshold/setthreshold005/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryUsage/MemoryUsage/memoryusage001/TestDescription.java \
+  vmTestbase/nsk/monitoring/MemoryUsage/from/from001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadInfo/from_c/from_c001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadInfo/getLockName/getlockname001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadInfo/getLockOwnerName/getlockownername001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadInfo/isInNative/isinnative001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadInfo/isSuspended/issuspended001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadInfo/isSuspended/issuspended002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/findMonitorDeadlockedThreads/find001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/findMonitorDeadlockedThreads/find002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/findMonitorDeadlockedThreads/find003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/findMonitorDeadlockedThreads/find004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/findMonitorDeadlockedThreads/find005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/findMonitorDeadlockedThreads/find006/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isCurrentThreadCpuTimeSupported/curthcputime001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isCurrentThreadCpuTimeSupported/curthcputime002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isCurrentThreadCpuTimeSupported/curthcputime003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isCurrentThreadCpuTimeSupported/curthcputime004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isCurrentThreadCpuTimeSupported/curthcputime005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadContentionMonitoringSupported/thcontmonitor001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadContentionMonitoringSupported/thcontmonitor002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadContentionMonitoringSupported/thcontmonitor003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadContentionMonitoringSupported/thcontmonitor004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadContentionMonitoringSupported/thcontmonitor005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadCpuTimeSupported/thcputime001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadCpuTimeSupported/thcputime002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadCpuTimeSupported/thcputime003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadCpuTimeSupported/thcputime004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/isThreadCpuTimeSupported/thcputime005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/resetPeakThreadCount/reset001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/resetPeakThreadCount/reset002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/resetPeakThreadCount/reset003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/resetPeakThreadCount/reset004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/resetPeakThreadCount/reset005/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerLevel/getloggerlevel001/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerLevel/getloggerlevel002/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerLevel/getloggerlevel003/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerLevel/getloggerlevel004/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerLevel/getloggerlevel005/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/setLoggerLevel/setloggerlevel001/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/setLoggerLevel/setloggerlevel002/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/setLoggerLevel/setloggerlevel003/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/setLoggerLevel/setloggerlevel004/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/setLoggerLevel/setloggerlevel005/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getParentLoggerName/getparentloggername001/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getParentLoggerName/getparentloggername002/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getParentLoggerName/getparentloggername003/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getParentLoggerName/getparentloggername004/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getParentLoggerName/getparentloggername005/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerNames/getloggernames001/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerNames/getloggernames002/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerNames/getloggernames003/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerNames/getloggernames004/TestDescription.java \
+  vmTestbase/nsk/monitoring/LoggingMXBean/getLoggerNames/getloggernames005/TestDescription.java \
+  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionCount/getcollectioncount001/TestDescription.java \
+  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionCount/getcollectioncount002/TestDescription.java \
+  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionCount/getcollectioncount003/TestDescription.java \
+  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionCount/getcollectioncount004/TestDescription.java \
+  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionCount/getcollectioncount005/TestDescription.java \
+  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionTime/getcollectiontime001/TestDescription.java \
+  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionTime/getcollectiontime002/TestDescription.java \
+  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionTime/getcollectiontime003/TestDescription.java \
+  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionTime/getcollectiontime004/TestDescription.java \
+  vmTestbase/nsk/monitoring/GarbageCollectorMXBean/getCollectionTime/getcollectiontime005/TestDescription.java \
+  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean001/RuntimeMXBean001.java \
+  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean002/TestDescription.java \
+  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean003/TestDescription.java \
+  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean004/TestDescription.java \
+  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean005/TestDescription.java \
+  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean006/RuntimeMXBean006.java \
+  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean007/TestDescription.java \
+  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean008/TestDescription.java \
+  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean009/TestDescription.java \
+  vmTestbase/nsk/monitoring/RuntimeMXBean/RuntimeMXBean010/TestDescription.java \
+  vmTestbase/nsk/monitoring/CompilationMXBean/comptimemon001/comptimemon001.java \
+  vmTestbase/nsk/monitoring/CompilationMXBean/comptimemon002/TestDescription.java \
+  vmTestbase/nsk/monitoring/CompilationMXBean/comptimemon003/TestDescription.java \
+  vmTestbase/nsk/monitoring/CompilationMXBean/comptimemon004/TestDescription.java \
+  vmTestbase/nsk/monitoring/CompilationMXBean/comptimemon005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/TimedWaitingThread/TimedWaitingThread001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/TimedWaitingThread/TimedWaitingThread002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/TimedWaitingThread/TimedWaitingThread003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/TimedWaitingThread/TimedWaitingThread004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/TimedWaitingThread/TimedWaitingThread005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/RunningThread/RunningThread001/RunningThread001.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/RunningThread/RunningThread002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/RunningThread/RunningThread003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/RunningThread/RunningThread004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/RunningThread/RunningThread005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SleepingThread/SleepingThread001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SleepingThread/SleepingThread002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SleepingThread/SleepingThread003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SleepingThread/SleepingThread004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SleepingThread/SleepingThread005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/WaitingThread/WaitingThread001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/WaitingThread/WaitingThread002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/WaitingThread/WaitingThread003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/WaitingThread/WaitingThread004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/WaitingThread/WaitingThread005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/BlockedThread/BlockedThread001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/BlockedThread/BlockedThread002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/BlockedThread/BlockedThread003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/BlockedThread/BlockedThread004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/BlockedThread/BlockedThread005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NativeBlockedThread/NativeBlockedThread001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NativeBlockedThread/NativeBlockedThread002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NativeBlockedThread/NativeBlockedThread003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NativeBlockedThread/NativeBlockedThread004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NativeBlockedThread/NativeBlockedThread005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NewThread/NewThread001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NewThread/NewThread002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NewThread/NewThread003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NewThread/NewThread004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/NewThread/NewThread005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/FinishedThread/FinishedThread001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/FinishedThread/FinishedThread002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/FinishedThread/FinishedThread003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/FinishedThread/FinishedThread004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/FinishedThread/FinishedThread005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/LockingThreads/LockingThreads001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/LockingThreads/LockingThreads002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/LockingThreads/LockingThreads003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/LockingThreads/LockingThreads004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/LockingThreads/LockingThreads005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SynchronizerLockingThreads/SynchronizerLockingThreads001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SynchronizerLockingThreads/SynchronizerLockingThreads002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SynchronizerLockingThreads/SynchronizerLockingThreads003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SynchronizerLockingThreads/SynchronizerLockingThreads004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/SynchronizerLockingThreads/SynchronizerLockingThreads005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/JavaDeadlock001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/JavaDeadlock002/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/JavaDeadlock003/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/JavaDeadlock004/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/JavaDeadlock005/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/NativeDeadlock001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/SynchronizerDeadlock001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/SynchronizedMethodDeadlock001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/MixedDeadlock001/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/baseBehaviorTest_directly/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/baseBehaviorTest_server_default/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/baseBehaviorTest_server_custom/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/baseBehaviorTest_proxy_default/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/baseBehaviorTest_proxy_custom/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/illegalArgumentsTest_directly/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/illegalArgumentsTest_server_default/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/illegalArgumentsTest_server_custom/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/illegalArgumentsTest_proxy_default/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadCpuTime/illegalArgumentsTest_proxy_custom/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/allocatedMemorySupportedTest_directly/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/allocatedMemorySupportedTest_server_default/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/allocatedMemorySupportedTest_server_custom/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/allocatedMemorySupportedTest_proxy_default/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/allocatedMemorySupportedTest_proxy_custom/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/baseBehaviorTest_directly/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/baseBehaviorTest_server_default/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/baseBehaviorTest_server_custom/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/baseBehaviorTest_proxy_default/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/baseBehaviorTest_proxy_custom/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_directly_array/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_server_default_array/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_server_custom_array/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_proxy_default_array/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_proxy_custom_array/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_directly_string/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_server_default_string/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_server_custom_string/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_proxy_default_string/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/doubleAllocationTest_proxy_custom_string/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_directly_array/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_server_default_array/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_server_custom_array/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_proxy_default_array/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_proxy_custom_array/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_directly_string/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_server_default_string/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_server_custom_string/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_proxy_default_string/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/equalThreadsTest_proxy_custom_string/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/illegalArgumentsTest_directly/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/illegalArgumentsTest_server_default/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/illegalArgumentsTest_server_custom/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/illegalArgumentsTest_proxy_default/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/illegalArgumentsTest_proxy_custom/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/noAllocationTest_directly/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/noAllocationTest_server_default/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/noAllocationTest_server_custom/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/noAllocationTest_proxy_default/TestDescription.java \
+  vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/noAllocationTest_proxy_custom/TestDescription.java
+
+vmTestbase_nsk_jdi_quick = \
+  vmTestbase/nsk/jdi/Argument/description/description001/TestDescription.java \
+  vmTestbase/nsk/jdi/Argument/isValid/isvalid001/TestDescription.java \
+  vmTestbase/nsk/jdi/Argument/isValid/isvalid002/TestDescription.java \
+  vmTestbase/nsk/jdi/Argument/isValid/isvalid003/TestDescription.java \
+  vmTestbase/nsk/jdi/Argument/isValid/isvalid004/TestDescription.java \
+  vmTestbase/nsk/jdi/Argument/isValid/isvalid005/TestDescription.java \
+  vmTestbase/nsk/jdi/Argument/name/name001/TestDescription.java \
+  vmTestbase/nsk/jdi/Argument/value/value001/TestDescription.java \
+  vmTestbase/nsk/jdi/Argument/value/value002/TestDescription.java \
+  vmTestbase/nsk/jdi/Argument/value/value003/TestDescription.java \
+  vmTestbase/nsk/jdi/Argument/setValue/setvalue001/TestDescription.java \
+  vmTestbase/nsk/jdi/Argument/setValue/setvalue002/TestDescription.java \
+  vmTestbase/nsk/jdi/Argument/mustSpecify/mustspecify001/TestDescription.java \
+  vmTestbase/nsk/jdi/AttachingConnector/attach/attach002/TestDescription.java \
+  vmTestbase/nsk/jdi/BooleanArgument/booleanValue/booleanvalue001/TestDescription.java \
+  vmTestbase/nsk/jdi/BooleanArgument/booleanValue/booleanvalue002/TestDescription.java \
+  vmTestbase/nsk/jdi/BooleanArgument/isValid/isvalid001/TestDescription.java \
+  vmTestbase/nsk/jdi/BooleanArgument/isValid/isvalid002/TestDescription.java \
+  vmTestbase/nsk/jdi/BooleanArgument/setValue/setvalue001/TestDescription.java \
+  vmTestbase/nsk/jdi/BooleanArgument/setValue/setvalue002/TestDescription.java \
+  vmTestbase/nsk/jdi/BooleanArgument/stringValueOf/stringvalueof001/TestDescription.java \
+  vmTestbase/nsk/jdi/BooleanArgument/stringValueOf/stringvalueof002/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses001/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses002/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses003/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses004/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses005/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassLoaderReference/visibleClasses/visibleclasses002/TestDescription.java \
+  vmTestbase/nsk/jdi/Connector/defaultArguments/defaultArguments001/TestDescription.java \
+  vmTestbase/nsk/jdi/Connector/defaultArguments/defaultArguments002/TestDescription.java \
+  vmTestbase/nsk/jdi/Connector/defaultArguments/defaultArguments003/TestDescription.java \
+  vmTestbase/nsk/jdi/Connector/description/description001/TestDescription.java \
+  vmTestbase/nsk/jdi/Connector/name/name001/TestDescription.java \
+  vmTestbase/nsk/jdi/Connector/transport/transport001/TestDescription.java \
+  vmTestbase/nsk/jdi/FloatValue/compareTo/compareto001/TestDescription.java \
+  vmTestbase/nsk/jdi/IntegerArgument/intValue/intvalue001/TestDescription.java \
+  vmTestbase/nsk/jdi/IntegerArgument/intValue/intvalue002/TestDescription.java \
+  vmTestbase/nsk/jdi/IntegerArgument/isValid/isvalid001/TestDescription.java \
+  vmTestbase/nsk/jdi/IntegerArgument/isValid/isvalid002/TestDescription.java \
+  vmTestbase/nsk/jdi/IntegerArgument/isValid/isvalid003/TestDescription.java \
+  vmTestbase/nsk/jdi/IntegerArgument/max/max001/TestDescription.java \
+  vmTestbase/nsk/jdi/IntegerArgument/min/min001/TestDescription.java \
+  vmTestbase/nsk/jdi/IntegerArgument/setValue/setvalue001/TestDescription.java \
+  vmTestbase/nsk/jdi/IntegerArgument/stringValueOf/stringvalueof001/TestDescription.java \
+  vmTestbase/nsk/jdi/IntegerValue/compareTo/compareto001/TestDescription.java \
+  vmTestbase/nsk/jdi/LaunchingConnector/launch/launch001/TestDescription.java \
+  vmTestbase/nsk/jdi/LaunchingConnector/launch/launch002/TestDescription.java \
+  vmTestbase/nsk/jdi/LaunchingConnector/launch/launch004/TestDescription.java \
+  vmTestbase/nsk/jdi/ListeningConnector/accept/accept001/TestDescription.java \
+  vmTestbase/nsk/jdi/ListeningConnector/accept/accept002/TestDescription.java \
+  vmTestbase/nsk/jdi/ListeningConnector/stopListening/stoplis001/TestDescription.java \
+  vmTestbase/nsk/jdi/ListeningConnector/supportsMultipleConnections/supportsmultipleconnections001/TestDescription.java \
+  vmTestbase/nsk/jdi/ListeningConnector/listennosuspend/listennosuspend001/TestDescription.java \
+  vmTestbase/nsk/jdi/LongValue/compareTo/compareto001/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/entryCount/entrycount002/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/owningThread/owningthread002/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/waitingThreads/waitingthreads002/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/waitingThreads/waitingthreads003/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/waitingThreads/waitingthreads004/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/isVerified/isverified003/TestDescription.java \
+  vmTestbase/nsk/jdi/SelectedArgument/choices/choices001/TestDescription.java \
+  vmTestbase/nsk/jdi/SelectedArgument/isValid/isvalid001/TestDescription.java \
+  vmTestbase/nsk/jdi/SelectedArgument/isValid/isvalid002/TestDescription.java \
+  vmTestbase/nsk/jdi/ShortType/_itself_/shorttype001/TestDescription.java \
+  vmTestbase/nsk/jdi/ShortValue/compareTo/compareto001/TestDescription.java \
+  vmTestbase/nsk/jdi/StackFrame/thisObject/thisobject002/TestDescription.java \
+  vmTestbase/nsk/jdi/StackFrame/thread/thread001/TestDescription.java \
+  vmTestbase/nsk/jdi/StackFrame/visibleVariableByName/visiblevarbyname001/TestDescription.java \
+  vmTestbase/nsk/jdi/StackFrame/visibleVariableByName/visiblevarbyname002/TestDescription.java \
+  vmTestbase/nsk/jdi/StackFrame/visibleVariables/visiblevariables001/TestDescription.java \
+  vmTestbase/nsk/jdi/StackFrame/visibleVariables/visiblevariables002/TestDescription.java \
+  vmTestbase/nsk/jdi/StepEvent/_itself_/stepevent001/TestDescription.java \
+  vmTestbase/nsk/jdi/StepEvent/_itself_/stepevent002/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/addClassExclusionFilter/filter001/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/addClassExclusionFilter/filter002/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/addClassFilter_s/filter_s001/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/addClassFilter_s/filter_s002/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/addClassFilter_rt/filter_rt001/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/addClassFilter_rt/filter_rt002/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/depth/depth001/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/depth/depth002/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/depth/depth003/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/size/size001/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/size/size002/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/thread/thread001/TestDescription.java \
+  vmTestbase/nsk/jdi/StringArgument/isValid/isvalid001/TestDescription.java \
+  vmTestbase/nsk/jdi/StringArgument/isValid/isvalid002/TestDescription.java \
+  vmTestbase/nsk/jdi/StringArgument/isValid/isvalid003/TestDescription.java \
+  vmTestbase/nsk/jdi/StringReference/value/value001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadDeathEvent/thread/thread001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter002/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter003/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter004/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter005/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadGroupReference/name/name001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadGroupReference/parent/parent001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadGroupReference/resume/resume001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadGroupReference/suspend/suspend001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadGroupReference/threadGroups/threadgroups001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadGroupReference/threads/threads001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/frame/frame001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/frameCount/framecount001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/frames/frames001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/frames_ii/frames_ii002/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/isAtBreakpoint/isatbreakpoint001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended003/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended004/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/name/name001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/ownedMonitors/ownedmonitors001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/suspendCount/suspendcount001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/threadGroup/threadgroup001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/currentContendedMonitor/currentcm001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/interrupt/interrupt001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/resume/resume001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/status/status003/status003.java \
+  vmTestbase/nsk/jdi/ThreadReference/status/status004/status004.java \
+  vmTestbase/nsk/jdi/ThreadReference/status/status005/status005.java \
+  vmTestbase/nsk/jdi/ThreadReference/status/status006/status006.java \
+  vmTestbase/nsk/jdi/ThreadReference/status/status007/status007.java \
+  vmTestbase/nsk/jdi/ThreadReference/status/status008/status008.java \
+  vmTestbase/nsk/jdi/ThreadReference/stop/stop001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter002/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter003/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter004/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter005/TestDescription.java \
+  vmTestbase/nsk/jdi/Transport/name/name001/TestDescription.java \
+  vmTestbase/nsk/jdi/Type/name/name001/TestDescription.java \
+  vmTestbase/nsk/jdi/Type/name/name002/TestDescription.java \
+  vmTestbase/nsk/jdi/Type/name/name003/TestDescription.java \
+  vmTestbase/nsk/jdi/Type/signature/signature001/TestDescription.java \
+  vmTestbase/nsk/jdi/Type/signature/signature002/TestDescription.java \
+  vmTestbase/nsk/jdi/Type/signature/signature003/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype001/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype002/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype003/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype007/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype008/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/isFinal/isfinal001/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/isFinal/isfinal003/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/isStatic/isstatic001/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/isStatic/isstatic003/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/isSynthetic/issynthetic001/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/isSynthetic/issynthetic002/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/name/name001/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/name/name003/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/signature/sign001/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/signature/sign003/TestDescription.java \
+  vmTestbase/nsk/jdi/Value/type/type001/TestDescription.java \
+  vmTestbase/nsk/jdi/Value/type/type002/type002.java \
+  vmTestbase/nsk/jdi/Value/type/type003/TestDescription.java \
+  vmTestbase/nsk/jdi/Value/_itself_/value001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/allClasses/allclasses001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/allClasses/allclasses002/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/allThreads/allthreads001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canGetBytecodes/cangetbytecodes001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canGetCurrentContendedMonitor/cangccm001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canGetMonitorInfo/cangetmonitorinfo001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canGetOwnedMonitorInfo/cangetinfo001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canGetSyntheticAttribute/cangetattr001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canWatchFieldAccess/canwatchaccess001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canWatchFieldModification/canwatchmod001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/classesByName/classesbyname001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/description/description001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/eventQueue/eventqueue001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/eventRequestManager/eventrmanager001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/exit/exit001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/exit/exit002/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_bool/mirrorof_bool001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_byte/mirrorof_byte001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_char/mirrorof_char001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_double/mirrorof_double001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_float/mirrorof_float001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_int/mirrorof_int001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_long/mirrorof_long001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_short/mirrorof_short001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_string/mirrorof_string001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/name/name001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/process/process001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/topLevelThreadGroups/toplevelgroups001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/version/version001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/allConnectors/allconnectors001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/attachingConnectors/attaching001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm002/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm003/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/defaultConnector/default001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/launchingConnectors/launching001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/listeningConnectors/listening001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/majorInterfaceVersion/major001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/minorInterfaceVersion/minor001/TestDescription.java \
+  vmTestbase/nsk/jdi/VoidType/_itself_/voidtype001/TestDescription.java \
+  vmTestbase/nsk/jdi/VoidValue/equals/equals001/equals001.java \
+  vmTestbase/nsk/jdi/VoidValue/hashCode/hashcode001/hashcode001.java \
+  vmTestbase/nsk/jdi/VMDeathEvent/_itself_/vmdeath001/TestDescription.java \
+  vmTestbase/nsk/jdi/VMDeathEvent/_itself_/vmdeath002/TestDescription.java \
+  vmTestbase/nsk/jdi/VMDeathEvent/_itself_/vmdeath003/TestDescription.java \
+  vmTestbase/nsk/jdi/VMDisconnectEvent/_itself_/disconnect001/TestDescription.java \
+  vmTestbase/nsk/jdi/VMDisconnectEvent/_itself_/disconnect002/TestDescription.java \
+  vmTestbase/nsk/jdi/VMDisconnectEvent/_itself_/disconnect003/TestDescription.java \
+  vmTestbase/nsk/jdi/VMStartEvent/thread/thread001/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointEvent/object/object001/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointEvent/field/field001/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointEvent/valueCurrent/valuecur001/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter001/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter002/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter003/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter004/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s001/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s002/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s003/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s004/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt001/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt002/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt003/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt004/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt005/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt006/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter001/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter002/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter003/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter004/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter005/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter006/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter007/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter008/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/field/field001/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/field/field002/TestDescription.java \
+  vmTestbase/nsk/jdi/AttachingConnector/attach/attach003/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassObjectReference/toString/tostring001/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod003/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod010/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod011/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod012/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod013/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod014/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/newInstance/newinstance009/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/setValue/setvalue006/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/setValue/setvalue007/TestDescription.java \
+  vmTestbase/nsk/jdi/Connector/_bounds_/bounds001/TestDescription.java \
+  vmTestbase/nsk/jdi/Connector/toString/tostring001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc01x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc01x002/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc02x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc02x002/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc03x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc04x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc04x002/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc05x002/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc06x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc07x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc08x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc09x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc09x002/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc10x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/hotswap/tc10x002/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/multithrd/tc01x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x002/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x003/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x004/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/multithrd/tc03x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/multithrd/tc04x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc01x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc01x002/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc02x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc03x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc03x002/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc03x003/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc04x001/TestDescription.java \
+  vmTestbase/nsk/jdi/BScenarios/singlethrd/tc05x001/TestDescription.java \
+  vmTestbase/nsk/jdi/Event/equals/equals001/TestDescription.java \
+  vmTestbase/nsk/jdi/Event/hashCode/hashcode001/TestDescription.java \
+  vmTestbase/nsk/jdi/EventQueue/hashCode/hashcode001/TestDescription.java \
+  vmTestbase/nsk/jdi/EventRequest/disable/disable003/TestDescription.java \
+  vmTestbase/nsk/jdi/EventRequest/hashCode/hashcode001/TestDescription.java \
+  vmTestbase/nsk/jdi/EventRequestManager/deleteEventRequest/delevtreq003/TestDescription.java \
+  vmTestbase/nsk/jdi/EventRequestManager/hashCode/hashcode001/TestDescription.java \
+  vmTestbase/nsk/jdi/EventSet/resume/resume011/TestDescription.java \
+  vmTestbase/nsk/jdi/EventSet/toString/tostring001/TestDescription.java \
+  vmTestbase/nsk/jdi/EventSet/virtualMachine/virtualmachine001/TestDescription.java \
+  vmTestbase/nsk/jdi/LocalVariable/toString/tostring001/TestDescription.java \
+  vmTestbase/nsk/jdi/Method/_bounds_/bounds001/TestDescription.java \
+  vmTestbase/nsk/jdi/Method/isObsolete/isobsolete003/TestDescription.java \
+  vmTestbase/nsk/jdi/MethodEntryRequest/_bounds_/filters001/TestDescription.java \
+  vmTestbase/nsk/jdi/MethodExitRequest/_bounds_/filters001/TestDescription.java \
+  vmTestbase/nsk/jdi/Mirror/hashCode/hashcode001/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/_bounds_/bounds001/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/_bounds_/bounds002/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod002/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod003/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod004/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod005/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod007/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod008/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod009/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod010/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod011/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod012/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod013/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod014/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue002/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue003/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue004/TestDescription.java \
+  vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue005/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/_bounds_/bounds001/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/_bounds_/bounds002/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/allFields/allfields005/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/allLineLocations/alllinelocations002/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/allLineLocations_ss/alllinelocations_ss002/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods005/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/fields/fields005/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue004/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue005/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/getValues/getvalues002/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/getValues/getvalues003/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_i/locationsofline_i002/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_ssi/locationsofline_ssi002/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/methods/methods005/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/sourceName/sourcename004/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/sourceNames/sourcenames002/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/sourcePaths/sourcepaths002/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield005/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod006/TestDescription.java \
+  vmTestbase/nsk/jdi/Scenarios/invokeMethod/popframes001/TestDescription.java \
+  vmTestbase/nsk/jdi/Scenarios/invokeMethod/redefineclasses001/TestDescription.java \
+  vmTestbase/nsk/jdi/StackFrame/_bounds_/bounds002/TestDescription.java \
+  vmTestbase/nsk/jdi/StackFrame/getValue/getvalue003/TestDescription.java \
+  vmTestbase/nsk/jdi/StackFrame/getValues/getvalues003/TestDescription.java \
+  vmTestbase/nsk/jdi/StackFrame/hashCode/hashcode001/TestDescription.java \
+  vmTestbase/nsk/jdi/StackFrame/setValue/setvalue005/setvalue005.java \
+  vmTestbase/nsk/jdi/StackFrame/setValue/setvalue006/setvalue006.java \
+  vmTestbase/nsk/jdi/StackFrame/toString/tostring001/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/_bounds_/filters001/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/addClassFilter_rt/filter_rt003/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter001/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter002/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter003/TestDescription.java \
+  vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter004/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadGroupReference/toString/tostring001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/frames_ii/frames_ii001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/ownedMonitors/ownedmonitors002/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes001/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes002/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes003/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes004/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes005/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes006/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes007/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/stop/stop002/TestDescription.java \
+  vmTestbase/nsk/jdi/Type/hashCode/hashcode001/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/isPackagePrivate/ispackageprivate001/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/isPrivate/isprivate001/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/isProtected/isprotected001/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/isPublic/ispublic001/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointEvent/_itself_/wevent001/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/_bounds_/filters001/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter001/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter002/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter003/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter004/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter005/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter006/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter007/TestDescription.java \
+  vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter008/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canAddMethod/canaddmethod001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canGetSourceDebugExtension/cangetsde001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canPopFrames/canpopframes001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canRedefineClasses/canredefineclasses001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canRequestVMDeathEvent/canreqvmdev001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canUnrestrictedlyRedefineClasses/curc001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canUseInstanceFilters/canusefilters001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/getDefaultStratum/getdefaultstratum001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses002/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses003/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses004/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses005/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses006/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses007/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses008/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses009/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses010/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses011/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses012/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses013/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses014/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses015/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses016/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses020/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses022/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses024/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses026/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses027/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses028/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses029/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses030/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses032/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses034/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses035/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/setDefaultStratum/setdefaultstratum001/TestDescription.java \
+  vmTestbase/nsk/jdi/VoidType/toString/tostring001/TestDescription.java \
+  vmTestbase/nsk/jdi/VoidValue/equals/equals002/TestDescription.java \
+  vmTestbase/nsk/jdi/VoidValue/toString/tostring001/TestDescription.java \
+  vmTestbase/nsk/jdi/ConstantField/values001/TestDescription.java \
+  vmTestbase/nsk/jdi/Accessible/isPackagePrivate/accipp002/TestDescription.java \
+  vmTestbase/nsk/jdi/Accessible/isPrivate/isprivate002/TestDescription.java \
+  vmTestbase/nsk/jdi/Accessible/isProtected/isprotected002/TestDescription.java \
+  vmTestbase/nsk/jdi/Accessible/isPublic/ispublic002/TestDescription.java \
+  vmTestbase/nsk/jdi/Accessible/isPublic/ispublic003/TestDescription.java \
+  vmTestbase/nsk/jdi/Accessible/modifiers/modifiers002/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/allInterfaces/allinterfaces002/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/interfaces/interfaces002/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod015/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/isEnum/isenum001/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/setValue/setvalue008/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/subclasses/subclasses002/TestDescription.java \
+  vmTestbase/nsk/jdi/ClassType/superclass/superclass002/TestDescription.java \
+  vmTestbase/nsk/jdi/Field/isEnumConstant/isenumconstant001/TestDescription.java \
+  vmTestbase/nsk/jdi/Field/type/type004/TestDescription.java \
+  vmTestbase/nsk/jdi/Field/typeName/typename002/TestDescription.java \
+  vmTestbase/nsk/jdi/LocalVariable/genericSignature/gensignature001/TestDescription.java \
+  vmTestbase/nsk/jdi/Method/arguments/arguments003/TestDescription.java \
+  vmTestbase/nsk/jdi/Method/argumentTypeNames/argumenttypenames003/TestDescription.java \
+  vmTestbase/nsk/jdi/Method/isBridge/isbridge001/TestDescription.java \
+  vmTestbase/nsk/jdi/Method/isVarArgs/isvarargs001/TestDescription.java \
+  vmTestbase/nsk/jdi/PlugConnectors/AttachConnector/plugAttachConnect001/plugAttachConnect001.java \
+  vmTestbase/nsk/jdi/PlugConnectors/AttachConnector/plugAttachConnect002/plugAttachConnect002.java \
+  vmTestbase/nsk/jdi/PlugConnectors/AttachConnector/plugAttachConnect003/plugAttachConnect003.java \
+  vmTestbase/nsk/jdi/PlugConnectors/LaunchConnector/plugLaunchConnect001/plugLaunchConnect001.java \
+  vmTestbase/nsk/jdi/PlugConnectors/LaunchConnector/plugLaunchConnect002/plugLaunchConnect002.java \
+  vmTestbase/nsk/jdi/PlugConnectors/LaunchConnector/plugLaunchConnect003/plugLaunchConnect003.java \
+  vmTestbase/nsk/jdi/PlugConnectors/ListenConnector/plugListenConnect001/plugListenConnect001.java \
+  vmTestbase/nsk/jdi/PlugConnectors/ListenConnector/plugListenConnect002/plugListenConnect002.java \
+  vmTestbase/nsk/jdi/PlugConnectors/ListenConnector/plugListenConnect003/plugListenConnect003.java \
+  vmTestbase/nsk/jdi/PlugConnectors/MultiConnectors/plugMultiConnect001/plugMultiConnect001.java \
+  vmTestbase/nsk/jdi/PlugConnectors/MultiConnectors/plugMultiConnect002/plugMultiConnect002.java \
+  vmTestbase/nsk/jdi/PlugConnectors/MultiConnectors/plugMultiConnect003/plugMultiConnect003.java \
+  vmTestbase/nsk/jdi/PlugConnectors/MultiConnectors/plugMultiConnect004/plugMultiConnect004.java \
+  vmTestbase/nsk/jdi/PlugConnectors/MultiConnectors/plugMultiConnect005/plugMultiConnect005.java \
+  vmTestbase/nsk/jdi/PlugConnectors/MultiConnectors/plugMultiConnect006/plugMultiConnect006.java \
+  vmTestbase/nsk/jdi/PlugConnectors/TransportService/transportService001/transportService001.java \
+  vmTestbase/nsk/jdi/PlugConnectors/TransportService/transportService002/transportService002.java \
+  vmTestbase/nsk/jdi/PlugConnectors/TransportService/transportService003/transportService003.java \
+  vmTestbase/nsk/jdi/ReferenceType/allFields/allfields006/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods006/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/classObject/classobj003/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/fields/fields006/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/genericSignature/genericSignature001/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/genericSignature/genericSignature002/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/isAbstract/isabstract003/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/isFinal/isfinal002/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/isInitialized/isinit003/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/methods/methods006/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield006/TestDescription.java \
+  vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod007/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype009/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/genericSignature/genericSignature001/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/genericSignature/genericSignature002/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/isFinal/isfinal004/TestDescription.java \
+  vmTestbase/nsk/jdi/TypeComponent/isStatic/isstatic004/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/canBeModified/canbemodified001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM002/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM003/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM004/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM005/TestDescription.java \
+  vmTestbase/nsk/jdi/VMCannotBeModifiedEx/_itself_/canntbemod001/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/instanceCounts/instancecounts001/instancecounts001.java \
+  vmTestbase/nsk/jdi/VirtualMachine/instanceCounts/instancecounts002/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/instanceCounts/instancecounts003/instancecounts003.java \
+  vmTestbase/nsk/jdi/VirtualMachine/instanceCounts/instancecounts004/instancecounts004.java \
+  vmTestbase/nsk/jdi/ReferenceType/instances/instances001/instances001.java \
+  vmTestbase/nsk/jdi/ReferenceType/instances/instances002/instances002.java \
+  vmTestbase/nsk/jdi/ReferenceType/instances/instances005/instances005.java \
+  vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects001/referringObjects001.java \
+  vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects002/referringObjects002.java \
+  vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects003/referringObjects003.java \
+  vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects004/referringObjects004.java \
+  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn002/forceEarlyReturn002.java \
+  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn003/forceEarlyReturn003.java \
+  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn004/forceEarlyReturn004.java \
+  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn005/forceEarlyReturn005.java \
+  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn006/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn007/TestDescription.java \
+  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn008/forceEarlyReturn008.java \
+  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn009/forceEarlyReturn009.java \
+  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn013/forceEarlyReturn013.java \
+  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn014/forceEarlyReturn014.java \
+  vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn015/forceEarlyReturn015.java \
+  vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames001/ownedMonitorsAndFrames001.java \
+  vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames002/ownedMonitorsAndFrames002.java \
+  vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames003/ownedMonitorsAndFrames003.java \
+  vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames004/ownedMonitorsAndFrames004.java \
+  vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames005/ownedMonitorsAndFrames005.java \
+  vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames008/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorContendedEnteredRequest/addClassExclusionFilter/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorContendedEnteredRequest/addClassFilter_ClassName/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorContendedEnteredRequest/addClassFilter_ReferenceType/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorContendedEnteredRequest/addInstanceFilter/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorContendedEnteredRequest/addThreadFilter/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorContendedEnterRequest/addClassExclusionFilter/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorContendedEnterRequest/addClassFilter_ClassName/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorContendedEnterRequest/addClassFilter_ReferenceType/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorContendedEnterRequest/addInstanceFilter/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorContendedEnterRequest/addThreadFilter/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorWaitRequest/addClassExclusionFilter/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorWaitRequest/addClassFilter_ClassName/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorWaitRequest/addClassFilter_ReferenceType/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorWaitRequest/addInstanceFilter/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorWaitRequest/addThreadFilter/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorWaitedRequest/addClassExclusionFilter/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorWaitedRequest/addClassFilter_ClassName/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorWaitedRequest/addClassFilter_ReferenceType/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorWaitedRequest/addInstanceFilter/TestDescription.java \
+  vmTestbase/nsk/jdi/MonitorWaitedRequest/addThreadFilter/TestDescription.java \
+  vmTestbase/nsk/jdi/stress/ClassPrepareEvents/ClassPrepareEvents001/ClassPrepareEvents001.java \
+  vmTestbase/nsk/jdi/ClassPrepareRequest/addSourceNameFilter/addSourceNameFilter001/addSourceNameFilter001.java \
+  vmTestbase/nsk/jdi/ClassPrepareRequest/addSourceNameFilter/addSourceNameFilter002/addSourceNameFilter002.java \
+  vmTestbase/nsk/jdi/VMOutOfMemoryException/VMOutOfMemoryException001/VMOutOfMemoryException001.java \
+  vmTestbase/nsk/jdi/stress/serial/forceEarlyReturn001/TestDescription.java \
+  vmTestbase/nsk/jdi/stress/serial/heapwalking001/TestDescription.java \
+  vmTestbase/nsk/jdi/stress/serial/monitorEvents001/TestDescription.java \
+  vmTestbase/nsk/jdi/stress/serial/ownedMonitorsAndFrames001/TestDescription.java \
+  vmTestbase/nsk/jdi/stress/serial/mixed001/TestDescription.java \
+  vmTestbase/nsk/jdi/stress/serial/forceEarlyReturn002/TestDescription.java \
+  vmTestbase/nsk/jdi/stress/serial/monitorEvents002/TestDescription.java \
+  vmTestbase/nsk/jdi/stress/serial/ownedMonitorsAndFrames002/TestDescription.java \
+  vmTestbase/nsk/jdi/VirtualMachine/setDefaultStratum/setDefaultStratum002/setDefaultStratum002.java \
+  vmTestbase/nsk/jdi/ReferenceType/allLineLocations_ss/allLineLocations_ss003/allLineLocations_ss003.java \
+  vmTestbase/nsk/jdi/ReferenceType/allLineLocations_ss/allLineLocations_ss004/allLineLocations_ss004.java \
+  vmTestbase/nsk/jdi/Method/allLineLocations_ss/allLineLocations_ss002/allLineLocations_ss002.java \
+  vmTestbase/nsk/jdi/Method/allLineLocations_ss/allLineLocations_ss003/allLineLocations_ss003.java \
+  vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_ssi/locationsOfLine_ssi003/locationsOfLine_ssi003.java \
+  vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_ssi/locationsOfLine_ssi004/locationsOfLine_ssi004.java \
+  vmTestbase/nsk/jdi/Method/locationsOfLine_ssi/locationsOfLine_ssi002/locationsOfLine_ssi002.java \
+  vmTestbase/nsk/jdi/Method/locationsOfLine_ssi/locationsOfLine_ssi003/locationsOfLine_ssi003.java \
+  vmTestbase/nsk/jdi/ReferenceType/sourceNames/sourceNames003/sourceNames003.java \
+  vmTestbase/nsk/jdi/ReferenceType/sourcePaths/sourcePaths003/sourcePaths003.java \
+  vmTestbase/nsk/jdi/ReferenceType/availableStrata/availableStrata002/availableStrata002.java \
+  vmTestbase/nsk/jdi/ReferenceType/defaultStratum/defaultStratum002/defaultStratum002.java \
+  vmTestbase/nsk/jdi/Location/lineNumber_s/lineNumber_s002/lineNumber_s002.java \
+  vmTestbase/nsk/jdi/Location/sourceName_s/sourceName_s002/sourceName_s002.java \
+  vmTestbase/nsk/jdi/Location/sourcePath_s/sourcePath_s002/sourcePath_s002.java \
+  vmTestbase/nsk/jdi/AttachingConnector/attach/attach005/TestDescription.java \
+  vmTestbase/nsk/jdi/AttachingConnector/attachnosuspend/attachnosuspend002/TestDescription.java \
+  vmTestbase/nsk/jdi/AttachingConnector/attachnosuspend/attachnosuspend003/TestDescription.java \
+  vmTestbase/nsk/jdi/MethodExitEvent/returnValue/returnValue001/returnValue001.java \
+  vmTestbase/nsk/jdi/MethodExitEvent/returnValue/returnValue002/returnValue002.java \
+  vmTestbase/nsk/jdi/MethodExitEvent/returnValue/returnValue003/returnValue003.java \
+  vmTestbase/nsk/jdi/MethodExitEvent/returnValue/returnValue004/returnValue004.java \
+  vmTestbase/nsk/jdi/StackFrame/getArgumentValues/getArgumentValues001/getArgumentValues001.java \
+  vmTestbase/nsk/jdi/StackFrame/getArgumentValues/getArgumentValues002/getArgumentValues002.java \
+  vmTestbase/nsk/jdi/StackFrame/getArgumentValues/getArgumentValues003/getArgumentValues003.java
+
+vmTestbase_nsk_jvmti_quick = \
+  vmTestbase/nsk/jvmti/AddCapabilities/addcaps001/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddCapabilities/addcaps002/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddCapabilities/addcaps003/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch001/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch002/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch003/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch004/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch007/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch008/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch009/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddToBootstrapClassLoaderSearch/bootclssearch010/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddToSystemClassLoaderSearch/systemclssearch001/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddToSystemClassLoaderSearch/systemclssearch002/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddToSystemClassLoaderSearch/systemclssearch003/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddToSystemClassLoaderSearch/systemclssearch004/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddToSystemClassLoaderSearch/systemclssearch005/TestDescription.java \
+  vmTestbase/nsk/jvmti/AddToSystemClassLoaderSearch/systemclssearch006/TestDescription.java \
+  vmTestbase/nsk/jvmti/Agent_OnLoad/agentonload001/TestDescription.java \
+  vmTestbase/nsk/jvmti/Agent_OnLoad/agentonload002/TestDescription.java \
+  vmTestbase/nsk/jvmti/Agent_OnLoad/agentonload003/TestDriver.java \
+  vmTestbase/nsk/jvmti/Agent_OnUnload/agentonunload001/TestDriver.java \
+  vmTestbase/nsk/jvmti/Breakpoint/breakpoint001/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk001/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk002/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk003/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk004/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk005/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk006/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk007/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk008/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClassFileLoadHook/classfloadhk009/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClassLoad/classload001/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClassPrepare/classprep001/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClearBreakpoint/clrbrk001/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClearBreakpoint/clrbrk002/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClearBreakpoint/clrbrk005/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClearFieldAccessWatch/clrfldw001/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClearFieldAccessWatch/clrfldw002/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClearFieldModificationWatch/clrfmodw001/TestDescription.java \
+  vmTestbase/nsk/jvmti/ClearFieldModificationWatch/clrfmodw002/TestDescription.java \
+  vmTestbase/nsk/jvmti/CompiledMethodLoad/compmethload001/TestDescription.java \
+  vmTestbase/nsk/jvmti/CreateRawMonitor/crrawmon001/TestDescription.java \
+  vmTestbase/nsk/jvmti/CreateRawMonitor/crrawmon002/TestDescription.java \
+  vmTestbase/nsk/jvmti/DisposeEnvironment/disposeenv001/TestDescription.java \
+  vmTestbase/nsk/jvmti/DisposeEnvironment/disposeenv002/TestDescription.java \
+  vmTestbase/nsk/jvmti/Deallocate/dealloc001/TestDescription.java \
+  vmTestbase/nsk/jvmti/DestroyRawMonitor/drrawmon001/TestDescription.java \
+  vmTestbase/nsk/jvmti/DestroyRawMonitor/drrawmon003/TestDescription.java \
+  vmTestbase/nsk/jvmti/DestroyRawMonitor/drrawmon004/TestDescription.java \
+  vmTestbase/nsk/jvmti/DynamicCodeGenerated/dyncodgen001/TestDescription.java \
+  vmTestbase/nsk/jvmti/Exception/exception001/TestDescription.java \
+  vmTestbase/nsk/jvmti/ExceptionCatch/excatch001/TestDescription.java \
+  vmTestbase/nsk/jvmti/FieldAccess/fieldacc001/TestDescription.java \
+  vmTestbase/nsk/jvmti/FieldAccess/fieldacc002/TestDescription.java \
+  vmTestbase/nsk/jvmti/FieldAccess/fieldacc003/TestDescription.java \
+  vmTestbase/nsk/jvmti/FieldAccess/fieldacc004/TestDescription.java \
+  vmTestbase/nsk/jvmti/FieldModification/fieldmod001/TestDescription.java \
+  vmTestbase/nsk/jvmti/FieldModification/fieldmod002/TestDescription.java \
+  vmTestbase/nsk/jvmti/ForceGarbageCollection/forcegc001/TestDescription.java \
+  vmTestbase/nsk/jvmti/ForceGarbageCollection/forcegc002/TestDescription.java \
+  vmTestbase/nsk/jvmti/FramePop/framepop001/TestDescription.java \
+  vmTestbase/nsk/jvmti/FramePop/framepop002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GenerateEvents/genevents001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetAllThreads/allthr001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetAllThreads/allthr002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetAvailableProcessors/getavailproc001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetArgumentsSize/argsize001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetArgumentsSize/argsize002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetBytecodes/bytecodes001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetBytecodes/bytecodes002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetBytecodes/bytecodes003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetCapabilities/getcaps001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetCapabilities/getcaps002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassFields/getclfld005/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassFields/getclfld006/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassFields/getclfld007/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassLoader/getclsldr001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassLoader/getclsldr002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassLoader/getclsldr003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassLoaderClasses/clsldrclss001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassLoaderClasses/clsldrclss002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassMethods/getclmthd005/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassMethods/getclmthd006/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassMethods/getclmthd007/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassModifiers/getclmdf004/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassModifiers/getclmdf005/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassModifiers/getclmdf006/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassModifiers/getclmdf007/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassSignature/getclsig004/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassSignature/getclsig005/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassSignature/getclsig006/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassStatus/getclstat005/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassStatus/getclstat006/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetClassStatus/getclstat007/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetCurrentContendedMonitor/contmon001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetCurrentContendedMonitor/contmon002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetCurrentContendedMonitor/contmon003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetCurrentThreadCpuTime/curthrcputime001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetCurrentThreadCpuTimerInfo/curthrtimerinfo001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetEnvironmentLocalStorage/getenvstor001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetErrorName/geterrname001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetErrorName/geterrname002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetExtensionEvents/extevents001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetExtensionFunctions/extfuncs001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetFieldDeclaringClass/getfldecl001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetFieldDeclaringClass/getfldecl002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetFieldDeclaringClass/getfldecl004/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetFieldModifiers/getfldmdf003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetFieldModifiers/getfldmdf004/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetFieldName/getfldnm003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetFieldName/getfldnm004/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetFieldName/getfldnm005/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetFrameCount/framecnt001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetFrameCount/framecnt002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetFrameCount/framecnt003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetFrameLocation/frameloc002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetFrameLocation/frameloc003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetImplementedInterfaces/getintrf005/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetImplementedInterfaces/getintrf006/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetImplementedInterfaces/getintrf007/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetJLocationFormat/getjlocfmt001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetJLocationFormat/getjlocfmt002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetJNIFunctionTable/getjniftab001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetJNIFunctionTable/getjniftab002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetLineNumberTable/linetab001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetLineNumberTable/linetab002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetLineNumberTable/linetab003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetLoadedClasses/loadedclss001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetLoadedClasses/loadedclss002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetLocalVariable/getlocal001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetLocalVariable/getlocal002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetLocalVariableTable/localtab001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetLocalVariableTable/localtab002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetLocalVariableTable/localtab003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetLocalVariableTable/localtab004/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetLocalVariableTable/localtab005/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetMaxLocals/maxloc001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetMaxLocals/maxloc002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetMethodDeclaringClass/declcls001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetMethodDeclaringClass/declcls002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetMethodDeclaringClass/declcls003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetObjectHashCode/objhashcode001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetMethodLocation/methloc001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetMethodLocation/methloc002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetMethodModifiers/methmod001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetMethodModifiers/methmod002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetMethodName/methname001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetMethodName/methname002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetMethodName/methname003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetObjectMonitorUsage/objmonusage001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetObjectMonitorUsage/objmonusage002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetObjectMonitorUsage/objmonusage003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetObjectMonitorUsage/objmonusage004/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetObjectMonitorUsage/objmonusage005/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetObjectSize/objsize001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetObjectsWithTags/objwithtags001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetOwnedMonitorInfo/ownmoninf001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetOwnedMonitorInfo/ownmoninf002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetOwnedMonitorInfo/ownmoninf003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetPhase/getphase001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetPhase/getphase002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetPotentialCapabilities/getpotcaps001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetSourceDebugExtension/srcdebugex001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetSourceDebugExtension/srcdebugex002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetSourceDebugExtension/srcdebugex003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetSourceFileName/getsrcfn004/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetSourceFileName/getsrcfn005/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetSourceFileName/getsrcfn006/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetSystemProperties/getsysprops001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetSystemProperties/getsysprops002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetSystemProperty/getsysprop001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetSystemProperty/getsysprop002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr004/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr005/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr006/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr007/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr008/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetStackTrace/getstacktr009/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetTag/gettag001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetThreadCpuTime/thrcputime001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetThreadCpuTime/thrcputime002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetThreadCpuTimerInfo/thrtimerinfo001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetThreadGroupChildren/getthrdgrpchld001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetThreadGroupInfo/thrgrpinfo001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetThreadGroupInfo/thrgrpinfo002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetThreadInfo/thrinfo001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetThreadInfo/thrinfo002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetThreadLocalStorage/getthrdstor001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetThreadState/thrstat001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetThreadState/thrstat002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetThreadState/thrstat003/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetThreadState/thrstat004/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetThreadState/thrstat005/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetTime/gettime001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetTimerInfo/timerinfo001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetTopThreadGroups/topthrgrp001/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetTopThreadGroups/topthrgrp002/TestDescription.java \
+  vmTestbase/nsk/jvmti/GetVersionNumber/getvern001/TestDescription.java \
+  vmTestbase/nsk/jvmti/InterruptThread/intrpthrd001/TestDescription.java \
+  vmTestbase/nsk/jvmti/InterruptThread/intrpthrd002/TestDescription.java \
+  vmTestbase/nsk/jvmti/InterruptThread/intrpthrd003/TestDescription.java \
+  vmTestbase/nsk/jvmti/IsArrayClass/isarray004/TestDescription.java \
+  vmTestbase/nsk/jvmti/IsArrayClass/isarray005/TestDescription.java \
+  vmTestbase/nsk/jvmti/IsFieldSynthetic/isfldsin002/TestDescription.java \
+  vmTestbase/nsk/jvmti/IsFieldSynthetic/isfldsin003/TestDescription.java \
+  vmTestbase/nsk/jvmti/IsInterface/isintrf004/TestDescription.java \
+  vmTestbase/nsk/jvmti/IsInterface/isintrf005/TestDescription.java \
+  vmTestbase/nsk/jvmti/IsMethodNative/isnative001/TestDescription.java \
+  vmTestbase/nsk/jvmti/IsMethodNative/isnative002/TestDescription.java \
+  vmTestbase/nsk/jvmti/IsMethodObsolete/isobsolete001/TestDescription.java \
+  vmTestbase/nsk/jvmti/IsMethodSynthetic/issynth001/TestDescription.java \
+  vmTestbase/nsk/jvmti/IsMethodSynthetic/issynth002/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverHeap/iterheap001/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverHeap/iterheap002/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverHeap/iterheap003/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverHeap/iterheap004/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverHeap/iterheap005/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverHeap/iterheap006/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverHeap/iterheap007/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverInstancesOfClass/iterinstcls001/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverInstancesOfClass/iterinstcls002/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverInstancesOfClass/iterinstcls003/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverInstancesOfClass/iterinstcls004/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverInstancesOfClass/iterinstcls005/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverInstancesOfClass/iterinstcls006/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverInstancesOfClass/iterinstcls007/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverObjectsReachableFromObject/iterobjreachobj001/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverObjectsReachableFromObject/iterobjreachobj002/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverObjectsReachableFromObject/iterobjreachobj003/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverObjectsReachableFromObject/iterobjreachobj004/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverObjectsReachableFromObject/iterobjreachobj005/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverReachableObjects/iterreachobj001/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverReachableObjects/iterreachobj002/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverReachableObjects/iterreachobj003/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverReachableObjects/iterreachobj004/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateOverReachableObjects/iterreachobj005/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateThroughHeap/callbacks/Callbacks.java \
+  vmTestbase/nsk/jvmti/IterateThroughHeap/concrete-klass-filter/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateThroughHeap/non-concrete-klass-filter/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateThroughHeap/filter-tagged/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateThroughHeap/filter-untagged/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateThroughHeap/filter-class-tagged/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateThroughHeap/filter-class-untagged/TestDescription.java \
+  vmTestbase/nsk/jvmti/IterateThroughHeap/abort/Abort.java \
+  vmTestbase/nsk/jvmti/MethodEntry/mentry001/TestDescription.java \
+  vmTestbase/nsk/jvmti/MethodEntry/mentry002/TestDescription.java \
+  vmTestbase/nsk/jvmti/MethodExit/mexit002/TestDescription.java \
+  vmTestbase/nsk/jvmti/MonitorContendedEnter/mcontenter001/TestDescription.java \
+  vmTestbase/nsk/jvmti/MonitorContendedEntered/mcontentered001/TestDescription.java \
+  vmTestbase/nsk/jvmti/MonitorWait/monitorwait001/TestDescription.java \
+  vmTestbase/nsk/jvmti/MonitorWaited/monitorwaited001/TestDescription.java \
+  vmTestbase/nsk/jvmti/NativeMethodBind/nativemethbind001/TestDescription.java \
+  vmTestbase/nsk/jvmti/NativeMethodBind/nativemethbind002/TestDescription.java \
+  vmTestbase/nsk/jvmti/NativeMethodBind/nativemethbind003/TestDescription.java \
+  vmTestbase/nsk/jvmti/NativeMethodBind/nativemethbind004/TestDescription.java \
+  vmTestbase/nsk/jvmti/NotifyFramePop/nframepop001/TestDescription.java \
+  vmTestbase/nsk/jvmti/NotifyFramePop/nframepop002/TestDescription.java \
+  vmTestbase/nsk/jvmti/NotifyFramePop/nframepop003/TestDescription.java \
+  vmTestbase/nsk/jvmti/ObjectFree/objfree002/TestDescription.java \
+  vmTestbase/nsk/jvmti/PopFrame/popframe001/TestDescription.java \
+  vmTestbase/nsk/jvmti/PopFrame/popframe002/TestDescription.java \
+  vmTestbase/nsk/jvmti/PopFrame/popframe003/TestDescription.java \
+  vmTestbase/nsk/jvmti/PopFrame/popframe004/TestDescription.java \
+  vmTestbase/nsk/jvmti/PopFrame/popframe005/TestDescription.java \
+  vmTestbase/nsk/jvmti/PopFrame/popframe006/TestDescription.java \
+  vmTestbase/nsk/jvmti/PopFrame/popframe007/TestDescription.java \
+  vmTestbase/nsk/jvmti/PopFrame/popframe008/TestDescription.java \
+  vmTestbase/nsk/jvmti/PopFrame/popframe009/TestDescription.java \
+  vmTestbase/nsk/jvmti/PopFrame/popframe010/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorEnter/rawmonenter001/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorEnter/rawmonenter002/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorEnter/rawmonenter003/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorEnter/rawmonenter004/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorExit/rawmonexit001/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorExit/rawmonexit002/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorExit/rawmonexit003/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorExit/rawmonexit005/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorNotify/rawmnntfy001/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorNotify/rawmnntfy002/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorNotify/rawmnntfy003/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorNotify/rawmnntfy004/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorNotifyAll/rawmnntfyall001/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorNotifyAll/rawmnntfyall002/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorNotifyAll/rawmnntfyall003/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorNotifyAll/rawmnntfyall004/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorWait/rawmnwait001/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorWait/rawmnwait002/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorWait/rawmnwait003/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorWait/rawmnwait004/TestDescription.java \
+  vmTestbase/nsk/jvmti/RawMonitorWait/rawmnwait005/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/StressRedefine/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/StressRedefineWithoutBytecodeCorruption/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass001/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass002/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass003/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass004/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass005/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass006/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass008/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass009/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass010/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass011/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass012/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass013/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass014/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass015/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass016/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass017/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass018/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass019/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass020/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass021/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass022/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass023/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass024/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass025/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass026/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass027/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass028/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass029/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass030/TestDescription.java \
+  vmTestbase/nsk/jvmti/RedefineClasses/redefclass031/TestDescription.java \
+  vmTestbase/nsk/jvmti/RelinquishCapabilities/relcaps001/TestDescription.java \
+  vmTestbase/nsk/jvmti/RelinquishCapabilities/relcaps002/TestDescription.java \
+  vmTestbase/nsk/jvmti/ResumeThread/resumethrd001/TestDescription.java \
+  vmTestbase/nsk/jvmti/ResumeThread/resumethrd002/TestDescription.java \
+  vmTestbase/nsk/jvmti/ResumeThreadList/resumethrdlst001/TestDescription.java \
+  vmTestbase/nsk/jvmti/ResumeThreadList/resumethrdlst002/TestDescription.java \
+  vmTestbase/nsk/jvmti/RunAgentThread/agentthr001/TestDescription.java \
+  vmTestbase/nsk/jvmti/RunAgentThread/agentthr002/TestDescription.java \
+  vmTestbase/nsk/jvmti/RunAgentThread/agentthr003/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetBreakpoint/setbrk002/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetBreakpoint/setbrk003/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetBreakpoint/setbrk005/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetBreakpoint/setbrk007/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetBreakpoint/setbrk008/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetEnvironmentLocalStorage/setenvstor001/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetEnvironmentLocalStorage/setenvstor002/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetEnvironmentLocalStorage/setenvstor003/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetEventCallbacks/setevntcallb001/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetEventCallbacks/setevntcallb002/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetEventCallbacks/setevntcallb003/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetEventNotificationMode/setnotif001/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetExtensionEventCallback/setextevent001/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetFieldAccessWatch/setfldw001/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetFieldAccessWatch/setfldw002/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetFieldAccessWatch/setfldw003/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetFieldAccessWatch/setfldw004/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetFieldAccessWatch/setfldw005/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetFieldAccessWatch/setfldw006/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetFieldModificationWatch/setfmodw002/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetFieldModificationWatch/setfmodw003/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetFieldModificationWatch/setfmodw004/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetFieldModificationWatch/setfmodw005/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetFieldModificationWatch/setfmodw006/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetJNIFunctionTable/setjniftab001/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetJNIFunctionTable/setjniftab002/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetLocalVariable/setlocal001/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetLocalVariable/setlocal002/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetLocalVariable/setlocal003/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetLocalVariable/setlocal004/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetSystemProperty/setsysprop002/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetSystemProperty/setsysprop003/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetTag/settag001/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetThreadLocalStorage/setthrdstor001/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetThreadLocalStorage/setthrdstor002/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetThreadLocalStorage/setthrdstor003/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetVerboseFlag/setvrbflag001/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetVerboseFlag/setvrbflag002/TestDescription.java \
+  vmTestbase/nsk/jvmti/SingleStep/singlestep001/TestDescription.java \
+  vmTestbase/nsk/jvmti/SingleStep/singlestep003/TestDescription.java \
+  vmTestbase/nsk/jvmti/SuspendThread/suspendthrd001/TestDescription.java \
+  vmTestbase/nsk/jvmti/SuspendThreadList/suspendthrdlst001/TestDescription.java \
+  vmTestbase/nsk/jvmti/StopThread/stopthrd006/TestDescription.java \
+  vmTestbase/nsk/jvmti/StopThread/stopthrd007/TestDescription.java \
+  vmTestbase/nsk/jvmti/ThreadEnd/threadend001/TestDescription.java \
+  vmTestbase/nsk/jvmti/ThreadEnd/threadend002/TestDescription.java \
+  vmTestbase/nsk/jvmti/ThreadStart/threadstart001/TestDescription.java \
+  vmTestbase/nsk/jvmti/ThreadStart/threadstart002/TestDescription.java \
+  vmTestbase/nsk/jvmti/ThreadStart/threadstart003/TestDescription.java \
+  vmTestbase/nsk/jvmti/VMDeath/vmdeath001/TestDescription.java \
+  vmTestbase/nsk/jvmti/VMInit/vminit001/TestDescription.java \
+  vmTestbase/nsk/jvmti/VMObjectAlloc/vmobjalloc001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/allocation/AP01/ap01t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/allocation/AP02/ap02t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/allocation/AP03/ap03t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/allocation/AP05/ap05t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/allocation/AP05/ap05t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/allocation/AP06/ap06t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/allocation/AP07/ap07t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/allocation/AP07/ap07t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/allocation/AP09/ap09t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/allocation/AP10/ap10t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/allocation/AP11/ap11t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/bcinstr/BI01/bi01t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/bcinstr/BI01/bi01t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/bcinstr/BI02/bi02t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/bcinstr/BI02/bi02t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/bcinstr/BI03/bi03t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/bcinstr/BI03/bi03t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/bcinstr/BI04/bi04t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t003/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t004/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t005/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t006/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t008/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t009/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t010/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t011/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t012/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t013/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t014/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t015/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t016/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t017/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t018/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t019/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t020/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t021/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/capability/CM02/cm02t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/contention/TC01/tc01t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/contention/TC02/tc02t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/contention/TC03/tc03t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/contention/TC03/tc03t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/contention/TC04/tc04t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/events/EM01/em01t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/events/EM01/em01t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/events/EM02/em02t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/events/EM02/em02t004/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/events/EM02/em02t008/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/events/EM02/em02t009/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/events/EM02/em02t010/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/events/EM02/em02t011/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/events/EM04/em04t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/events/EM05/em05t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/events/EM06/em06t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/events/EM07/em07t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/general_functions/GF01/gf01t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/general_functions/GF04/gf04t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/general_functions/GF06/gf06t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/general_functions/GF08/gf08t001/TestDriver.java \
+  vmTestbase/nsk/jvmti/scenarios/general_functions/GF08/gf08t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/general_functions/GF08/gf08t003/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t003/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t004/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t005/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t006/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t007/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS101/hs101t008/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS102/hs102t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS102/hs102t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS103/hs103t002/hs103t002.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS104/hs104t001/hs104t001.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS104/hs104t002/hs104t002.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS201/hs201t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS201/hs201t003/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS202/hs202t001/hs202t001.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS202/hs202t002/hs202t002.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS203/hs203t001/hs203t001.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS203/hs203t002/hs203t002.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS203/hs203t003/hs203t003.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS204/hs204t002/hs204t002.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS204/hs204t003/hs204t003.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS204/hs204t004/hs204t004.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS301/hs301t001/hs301t001.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS301/hs301t002/hs301t002.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS301/hs301t003/hs301t003.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS301/hs301t004/hs301t004.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS301/hs301t005/hs301t005.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t001/hs302t001.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t002/hs302t002.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t003/hs302t003.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t004/hs302t004.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t005/hs302t005.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t006/hs302t006.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t007/hs302t007.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t008/hs302t008.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t009/hs302t009.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t010/hs302t010.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t011/hs302t011.java \
+  vmTestbase/nsk/jvmti/scenarios/hotswap/HS302/hs302t012/hs302t012.java \
+  vmTestbase/nsk/jvmti/scenarios/jni_interception/JI01/ji01t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/jni_interception/JI03/ji03t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/jni_interception/JI03/ji03t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/jni_interception/JI03/ji03t003/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/jni_interception/JI05/ji05t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/jni_interception/JI06/ji06t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA01/ma01t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA02/ma02t001/TestDriver.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA03/ma03t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA04/ma04t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA04/ma04t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA04/ma04t003/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA05/ma05t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA06/ma06t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA07/ma07t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA08/ma08t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t003/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t004/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t005/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t006/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t007/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/multienv/MA10/ma10t008/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP01/sp01t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP02/sp02t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP02/sp02t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP02/sp02t003/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP03/sp03t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP03/sp03t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP04/sp04t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP04/sp04t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP05/sp05t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP05/sp05t003/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP06/sp06t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP06/sp06t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP06/sp06t003/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP07/sp07t001/TestDescription.java \
+  vmTestbase/nsk/jvmti/scenarios/sampling/SP07/sp07t002/TestDescription.java \
+  vmTestbase/nsk/jvmti/AttachOnDemand/attach002a/TestDescription.java \
+  vmTestbase/nsk/jvmti/AttachOnDemand/attach024/TestDescription.java \
+  vmTestbase/nsk/jvmti/RetransformClasses/retransform002/TestDescription.java \
+  vmTestbase/nsk/jvmti/RetransformClasses/retransform003/TestDriver.java \
+  vmTestbase/nsk/jvmti/RetransformClasses/retransform004/TestDescription.java \
+  vmTestbase/nsk/jvmti/ForceEarlyReturn/ForceEarlyReturn001/TestDescription.java \
+  vmTestbase/nsk/jvmti/ForceEarlyReturn/ForceEarlyReturn002/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetNativeMethodPrefix/SetNativeMethodPrefix001/TestDescription.java \
+  vmTestbase/nsk/jvmti/SetNativeMethodPrefix/SetNativeMethodPrefix002/TestDriver.java \
+  vmTestbase/nsk/jvmti/GetEnv/GetEnv001/GetEnv001.java \
+  vmTestbase/nsk/jvmti/unit/MethodBind/JvmtiTest/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/OnUnload/JvmtiTest/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/StackTrace/JvmtiTest/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/agentthr/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/clsldrclss00x/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/events/redefineCFLH/JvmtiTest/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/extmech/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/functions/AddToBootstrapClassLoaderSearch/JvmtiTest/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/functions/Dispose/JvmtiTest/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/functions/environment/JvmtiTest/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/functions/nosuspendMonitorInfo/JvmtiTest/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/functions/nosuspendStackTrace/JvmtiTest/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/functions/rawmonitor/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/heap/BasicIterationTests/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/heap/BasicTagTests/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/heap/GetWithTests/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/heap/HeapWalkTests/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/heap/ObjectFreeTests/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/heap/ObjectSizeTests/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/heapref/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/refignore/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/setNullVMInit/JvmtiTest/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/GetLineNumberTable/linetab004/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/GetLocalVariable/getlocal003/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/GetLocalVariable/getlocal004/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/IsSynthetic/issynth001/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/FollowReferences/followref001/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/FollowReferences/followref002/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/FollowReferences/followref003/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/FollowReferences/followref004/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/FollowReferences/followref005/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/FollowReferences/followref006/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/ForceEarlyReturn/earlyretbase/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/ForceEarlyReturn/earlyretfp/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/ForceEarlyReturn/earlyretint/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/ForceEarlyReturn/earlyretlong/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/ForceEarlyReturn/earlyretobj/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/ForceEarlyReturn/earlyretstr/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/ForceEarlyReturn/earlyretvoid/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/GetAllStackTraces/getallstktr001/TestDescription.java \
+  vmTestbase/nsk/jvmti/unit/GetConstantPool/getcpool001/TestDescription.java
+
+vmTestbase_nsk_jdwp_quick = \
+  vmTestbase/nsk/jdwp/ArrayReference/GetValues/getvalues001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ArrayReference/GetValues/getvalues002/TestDescription.java \
+  vmTestbase/nsk/jdwp/ArrayReference/Length/length001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ArrayReference/SetValues/setvalues001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ArrayType/NewInstance/newinstance001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ClassLoaderReference/VisibleClasses/visibclasses001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ClassObjectReference/ReflectedType/reflectype001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ClassType/InvokeMethod/invokemeth001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ClassType/NewInstance/newinst001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ClassType/SetValues/setvalues001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ClassType/Superclass/superclass001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/BREAKPOINT/breakpoint001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/EXCEPTION/exception001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/FIELD_ACCESS/fldaccess001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/FIELD_MODIFICATION/fldmodification001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/CLASS_PREPARE/clsprepare001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/CLASS_UNLOAD/clsunload001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/METHOD_ENTRY/methentry001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/METHOD_EXIT/methexit001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/SINGLE_STEP/singlestep001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/SINGLE_STEP/singlestep002/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/SINGLE_STEP/singlestep003/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/THREAD_DEATH/thrdeath001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/THREAD_START/thrstart001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/VM_DEATH/vmdeath001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/VM_START/vmstart001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/Composite/composite001/TestDescription.java \
+  vmTestbase/nsk/jdwp/EventRequest/Clear/clear001/TestDescription.java \
+  vmTestbase/nsk/jdwp/EventRequest/ClearAllBreakpoints/clrallbreakp001/TestDescription.java \
+  vmTestbase/nsk/jdwp/EventRequest/ClearAllBreakpoints/clrallbreakp002/TestDescription.java \
+  vmTestbase/nsk/jdwp/EventRequest/ClearAllBreakpoints/clrallbreakp003/TestDescription.java \
+  vmTestbase/nsk/jdwp/EventRequest/Set/set001/TestDescription.java \
+  vmTestbase/nsk/jdwp/EventRequest/Set/set002/TestDescription.java \
+  vmTestbase/nsk/jdwp/Method/LineTable/linetable001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Method/VariableTable/vartable001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Method/Bytecodes/bytecodes001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ObjectReference/DisableCollection/disablecol001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ObjectReference/EnableCollection/enablecol001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ObjectReference/GetValues/getvalues001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ObjectReference/InvokeMethod/invokemeth001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ObjectReference/IsCollected/iscollected001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ObjectReference/MonitorInfo/monitorinfo001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ObjectReference/ReferenceType/referencetype001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ObjectReference/SetValues/setvalues001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/ClassLoader/classloader001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/ClassObject/classobj001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/Fields/fields001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/GetValues/getvalues001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/Interfaces/interfaces001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/Methods/methods001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/Modifiers/modifiers001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/NestedTypes/nestedtypes001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/Signature/signature001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/SourceFile/srcfile001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/Status/status001/TestDescription.java \
+  vmTestbase/nsk/jdwp/StackFrame/GetValues/getvalues001/TestDescription.java \
+  vmTestbase/nsk/jdwp/StackFrame/SetValues/setvalues001/TestDescription.java \
+  vmTestbase/nsk/jdwp/StackFrame/ThisObject/thisobject001/TestDescription.java \
+  vmTestbase/nsk/jdwp/StringReference/Value/value001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadGroupReference/Children/children001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadGroupReference/Name/name001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadGroupReference/Parent/parent001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadReference/CurrentContendedMonitor/curcontmonitor001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadReference/Frames/frames001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadReference/FrameCount/framecnt001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadReference/Interrupt/interrupt001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadReference/Name/name001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadReference/OwnedMonitors/ownmonitors001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadReference/Resume/resume001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadReference/Status/status001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadReference/Stop/stop001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadReference/Suspend/suspend001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadReference/SuspendCount/suspendcnt001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ThreadReference/ThreadGroup/threadgroup001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/AllThreads/allthreads001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/Capabilities/capabilities001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/ClassPaths/classpaths001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/ClassesBySignature/classbysig001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/CreateString/createstr001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/Dispose/dispose001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/DisposeObjects/disposeobj001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/Exit/exit001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/HoldEvents/holdevents001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/IDSizes/idsizes001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/TopLevelThreadGroups/threadgroups001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/ReleaseEvents/releaseevents001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/ReleaseEvents/releaseevents002/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/Resume/resume001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/Version/version001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/Version/version002/TestDescription.java \
+  vmTestbase/nsk/jdwp/Event/VM_DEATH/vmdeath002/TestDescription.java \
+  vmTestbase/nsk/jdwp/Method/IsObsolete/isobsolete001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Method/IsObsolete/isobsolete002/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/SourceDebugExtension/srcdebugext001/TestDescription.java \
+  vmTestbase/nsk/jdwp/StackFrame/PopFrames/popframes001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/CapabilitiesNew/capabilitiesnew001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/RedefineClasses/redefinecls001/TestDescription.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/SetDefaultStratum/setdefstrat001/TestDescription.java \
+  vmTestbase/nsk/jdwp/Method/VariableTableWithGeneric/vartblwithgen001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/FieldsWithGeneric/fldwithgeneric001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/MethodsWithGeneric/methwithgeneric001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/SignatureWithGeneric/sigwithgeneric001/TestDescription.java \
+  vmTestbase/nsk/jdwp/ReferenceType/Instances/instances001/instances001.java \
+  vmTestbase/nsk/jdwp/ReferenceType/Instances/instances002/instances002.java \
+  vmTestbase/nsk/jdwp/ObjectReference/ReferringObjects/referringObjects001/referringObjects001.java \
+  vmTestbase/nsk/jdwp/ObjectReference/ReferringObjects/referringObjects002/referringObjects002.java \
+  vmTestbase/nsk/jdwp/VirtualMachine/InstanceCounts/instanceCounts001/instanceCounts001.java \
+  vmTestbase/nsk/jdwp/ThreadReference/ForceEarlyReturn/forceEarlyReturn002/forceEarlyReturn002.java \
+  vmTestbase/nsk/jdwp/ThreadReference/OwnedMonitorsStackDepthInfo/ownedMonitorsStackDepthInfo001/ownedMonitorsStackDepthInfo001.java \
+  vmTestbase/nsk/jdwp/ThreadReference/OwnedMonitorsStackDepthInfo/ownedMonitorsStackDepthInfo002/ownedMonitorsStackDepthInfo002.java
+
+# vmTestbase_vm_gc w/ 'quick' k/w
+vmTestbase_vm_gc_quick = \
+  vmTestbase/vm/gc/compact/Compact_Arrays \
+  vmTestbase/vm/gc/compact/Compact_Strings_TwoFields \
+  vmTestbase/vm/gc/compact/Compact_InternedStrings_Strings \
+  vmTestbase/vm/gc/compact/Humongous_Arrays5M \
+  vmTestbase/vm/gc/compact/Humongous_NonbranchyTree \
+  vmTestbase/vm/gc/containers/LinkedBlockingDeque_Arrays/TestDescription.java \
+  vmTestbase/vm/gc/containers/LinkedHashMap_Arrays/TestDescription.java \
+  vmTestbase/vm/gc/containers/Combination05/TestDescription.java \
+  vmTestbase/gc/ArrayJuggle/Juggle01 \
+  vmTestbase/gc/ArrayJuggle/Juggle14 \
+  vmTestbase/gc/ArrayJuggle/Juggle22 \
+  vmTestbase/gc/ArrayJuggle/Juggle29 \
+  vmTestbase/gc/ArrayJuggle/Juggle34 \
+  vmTestbase/gc/gctests/LargeObjects/large001/large001.java \
+  vmTestbase/gc/gctests/LoadUnloadGC2/LoadUnloadGC2.java \
+  vmTestbase/gc/gctests/StringGC/StringGC.java \
+  vmTestbase/gc/gctests/StringInternGC/StringInternGC.java \
+  vmTestbase/gc/gctests/ReferencesGC/ReferencesGC.java \
+  vmTestbase/vm/gc/kind/parOld/TestDescription.java \
+  vmTestbase/gc/lock/jni/jnilock001/TestDescription.java \
+  vmTestbase/gc/lock/jniref/jnireflock04/TestDescription.java \
+  vmTestbase/gc/lock/jvmti/alloc/jvmtialloclock02/TestDescription.java \
+  vmTestbase/gc/lock/malloc/malloclock03/TestDescription.java
+
+vmTestbase_vm_compiler_quick = \
+  vmTestbase/vm/compiler/jbe/constprop/constprop01/constprop01.java \
+  vmTestbase/vm/compiler/jbe/constprop/constprop02/constprop02.java \
+  vmTestbase/vm/compiler/jbe/dead/dead01/dead01.java \
+  vmTestbase/vm/compiler/jbe/dead/dead02/dead02.java \
+  vmTestbase/vm/compiler/jbe/dead/dead03/dead03.java \
+  vmTestbase/vm/compiler/jbe/dead/dead04/dead04.java \
+  vmTestbase/vm/compiler/jbe/dead/dead05/dead05.java \
+  vmTestbase/vm/compiler/jbe/dead/dead06/dead06.java \
+  vmTestbase/vm/compiler/jbe/dead/dead07/dead07.java \
+  vmTestbase/vm/compiler/jbe/dead/dead08/dead08.java \
+  vmTestbase/vm/compiler/jbe/dead/dead09/dead09.java \
+  vmTestbase/vm/compiler/jbe/dead/dead10/dead10.java \
+  vmTestbase/vm/compiler/jbe/dead/dead11/dead11.java \
+  vmTestbase/vm/compiler/jbe/dead/dead12/dead12.java \
+  vmTestbase/vm/compiler/jbe/dead/dead13/dead13.java \
+  vmTestbase/vm/compiler/jbe/dead/dead14/dead14.java \
+  vmTestbase/vm/compiler/jbe/dead/dead15/dead15.java \
+  vmTestbase/vm/compiler/jbe/dead/dead16/dead16.java \
+  vmTestbase/vm/compiler/jbe/hoist/hoist01/hoist01.java \
+  vmTestbase/vm/compiler/jbe/hoist/hoist02/hoist02.java \
+  vmTestbase/vm/compiler/jbe/hoist/hoist03/hoist03.java \
+  vmTestbase/vm/compiler/jbe/hoist/hoist04/hoist04.java \
+  vmTestbase/vm/compiler/jbe/subcommon/subcommon01/subcommon01.java \
+  vmTestbase/vm/compiler/jbe/subcommon/subcommon03/subcommon03.java \
+  vmTestbase/vm/compiler/jbe/subcommon/subcommon04/subcommon04.java \
+  vmTestbase/vm/compiler/jbe/subcommon/subcommon05/subcommon05.java \
+  vmTestbase/vm/compiler/coverage/parentheses/TestDescription.java \
+  vmTestbase/vm/compiler/optimizations/stringconcat/explicit/Explicit01/cs_disabled/TestDescription.java \
+  vmTestbase/vm/compiler/optimizations/stringconcat/explicit/Explicit01/cs_enabled/TestDescription.java \
+  vmTestbase/vm/compiler/optimizations/stringconcat/explicit/Merge01/cs_disabled/TestDescription.java \
+  vmTestbase/vm/compiler/optimizations/stringconcat/explicit/Merge01/cs_enabled/TestDescription.java \
+  vmTestbase/vm/compiler/optimizations/stringconcat/implicit/Implicit01/cs_disabled/TestDescription.java \
+  vmTestbase/vm/compiler/optimizations/stringconcat/implicit/Implicit01/cs_enabled/TestDescription.java \
+  vmTestbase/vm/compiler/optimizations/stringconcat/implicit/Merge01/cs_disabled/TestDescription.java \
+  vmTestbase/vm/compiler/optimizations/stringconcat/implicit/Merge01/cs_enabled/TestDescription.java \
+  vmTestbase/vm/compiler/optimizations/partialpeel/ForWhile/TestDescription.java \
+  vmTestbase/vm/compiler/optimizations/partialpeel/While/TestDescription.java \
+  vmTestbase/vm/compiler/optimizations/partialpeel/WhileWhile/TestDescription.java \
+  vmTestbase/vm/compiler/optimizations/partialpeel/Do/TestDescription.java \
+  vmTestbase/vm/compiler/complog/uninit/uninit001/uninit001.java \
+  vmTestbase/vm/compiler/complog/uninit/uninit002/uninit002.java \
+  vmTestbase/vm/compiler/complog/uninit/uninit003/uninit003.java \
+  vmTestbase/vm/compiler/complog/uninit/uninit004/uninit004.java \
+  vmTestbase/vm/compiler/complog/uninit/uninit005/uninit005.java \
+  vmTestbase/vm/compiler/complog/uninit/uninit006/uninit006.java \
+  vmTestbase/vm/compiler/complog/uninit/uninit007/uninit007.java \
+  vmTestbase/vm/compiler/complog/uninit/uninit008/uninit008.java \
+  vmTestbase/vm/compiler/complog/uninit/uninit009/uninit009.java \
+  vmTestbase/vm/compiler/complog/uninit/uninit010/uninit010.java \
+  vmTestbase/vm/compiler/complog/uninit/uninit011/uninit011.java \
+  vmTestbase/vm/compiler/complog/uninit/uninit012/uninit012.java \
+  vmTestbase/vm/compiler/complog/uninit/uninit013/uninit013.java \
+  vmTestbase/jit/Arrays/ArrayBounds/ArrayBounds.java \
+  vmTestbase/jit/Arrays/ArrayStoreCheck/ArrayStoreCheck.java \
+  vmTestbase/jit/Arrays/ArrayTests/ArrayTests.java \
+  vmTestbase/jit/CEETest/CEETest.java \
+  vmTestbase/jit/CondExpr/CondExpr.java \
+  vmTestbase/jit/DivTest/DivTest.java \
+  vmTestbase/jit/ExcOpt/ExcOpt.java \
+  vmTestbase/jit/FloatingPoint/FPCompare/TestFPBinop/TestFPBinop.java \
+  vmTestbase/jit/FloatingPoint/gen_math/Filtering/Filtering.java \
+  vmTestbase/jit/FloatingPoint/gen_math/Loops01/Loops01.java \
+  vmTestbase/jit/FloatingPoint/gen_math/Loops02/Loops02.java \
+  vmTestbase/jit/FloatingPoint/gen_math/Loops03/Loops03.java \
+  vmTestbase/jit/FloatingPoint/gen_math/Loops04/Loops04.java \
+  vmTestbase/jit/FloatingPoint/gen_math/Loops05/Loops05.java \
+  vmTestbase/jit/FloatingPoint/gen_math/Loops06/Loops06.java \
+  vmTestbase/jit/FloatingPoint/gen_math/Loops07/Loops07.java \
+  vmTestbase/jit/FloatingPoint/gen_math/Matrix_3d/Matrix_3d.java \
+  vmTestbase/jit/FloatingPoint/gen_math/ShortCircuitTest/ShortCircuitTest.java \
+  vmTestbase/jit/FloatingPoint/gen_math/Summ/Summ.java \
+  vmTestbase/jit/PrintProperties/PrintProperties.java \
+  vmTestbase/jit/PrintThis/PrintThis.java \
+  vmTestbase/jit/Robert/Robert.java \
+  vmTestbase/jit/Sleeper/Sleeper.java \
+  vmTestbase/jit/bounds/bounds.java \
+  vmTestbase/jit/collapse/collapse.java \
+  vmTestbase/jit/deoptimization/test01/test01.java \
+  vmTestbase/jit/deoptimization/test02/test02.java \
+  vmTestbase/jit/deoptimization/test03/test03.java \
+  vmTestbase/jit/deoptimization/test04/test04.java \
+  vmTestbase/jit/deoptimization/test05/test05.java \
+  vmTestbase/jit/deoptimization/test06/test06.java \
+  vmTestbase/jit/deoptimization/test07/test07.java \
+  vmTestbase/jit/deoptimization/test08/test08.java \
+  vmTestbase/jit/escape/AdaptiveBlocking/AdaptiveBlocking001/AdaptiveBlocking001.java \
+  vmTestbase/jit/escape/LockElision/MatMul/MatMul.java \
+  vmTestbase/jit/escape/LockCoarsening/LockCoarsening002/TestDescription.java \
+  vmTestbase/jit/exception/exception.java \
+  vmTestbase/jit/graph/cgt0/cgt0.java \
+  vmTestbase/jit/graph/cgt1/cgt1.java \
+  vmTestbase/jit/graph/cgt2/cgt2.java \
+  vmTestbase/jit/graph/cgt3/cgt3.java \
+  vmTestbase/jit/graph/cgt4/cgt4.java \
+  vmTestbase/jit/graph/cgt5/cgt5.java \
+  vmTestbase/jit/graph/cgt6/cgt6.java \
+  vmTestbase/jit/graph/cgt7/cgt7.java \
+  vmTestbase/jit/graph/cgt8/cgt8.java \
+  vmTestbase/jit/graph/cgt9/cgt9.java \
+  vmTestbase/jit/graph/cgt10/cgt10.java \
+  vmTestbase/jit/graph/cgt11/cgt11.java \
+  vmTestbase/jit/init/init01/init01.java \
+  vmTestbase/jit/init/init02/init02.java \
+  vmTestbase/jit/inline/inline003/inline003.java \
+  vmTestbase/jit/inline/inline004/inline004.java \
+  vmTestbase/jit/inline/inline005/inline005.java \
+  vmTestbase/jit/inline/inline007/inline007.java \
+  vmTestbase/jit/misctests/JitBug1/JitBug1.java \
+  vmTestbase/jit/misctests/Pi/Pi.java \
+  vmTestbase/jit/misctests/clss14702/clss14702.java \
+  vmTestbase/jit/misctests/fpustack/GraphApplet.java \
+  vmTestbase/jit/misctests/putfield00802/putfield00802.java \
+  vmTestbase/jit/misctests/t5/t5.java \
+  vmTestbase/jit/overflow/overflow.java \
+  vmTestbase/jit/regression/b4427606/b4427606.java \
+  vmTestbase/jit/regression/b4446672/b4446672.java \
+  vmTestbase/jit/regression/CrashC1/CrashC1.java \
+  vmTestbase/jit/series/series.java \
+  vmTestbase/jit/t/t001/t001.java \
+  vmTestbase/jit/t/t002/t002.java \
+  vmTestbase/jit/t/t003/t003.java \
+  vmTestbase/jit/t/t004/t004.java \
+  vmTestbase/jit/t/t005/t005.java \
+  vmTestbase/jit/t/t006/t006.java \
+  vmTestbase/jit/t/t007/t007.java \
+  vmTestbase/jit/t/t008/t008.java \
+  vmTestbase/jit/t/t009/t009.java \
+  vmTestbase/jit/t/t011/t011.java \
+  vmTestbase/jit/t/t012/t012.java \
+  vmTestbase/jit/t/t013/t013.java \
+  vmTestbase/jit/t/t014/t014.java \
+  vmTestbase/jit/t/t015/t015.java \
+  vmTestbase/jit/t/t016/t016.java \
+  vmTestbase/jit/t/t017/t017.java \
+  vmTestbase/jit/t/t018/t018.java \
+  vmTestbase/jit/t/t019/t019.java \
+  vmTestbase/jit/t/t020/t020.java \
+  vmTestbase/jit/t/t021/t021.java \
+  vmTestbase/jit/t/t022/t022.java \
+  vmTestbase/jit/t/t023/t023.java \
+  vmTestbase/jit/t/t024/t024.java \
+  vmTestbase/jit/t/t025/t025.java \
+  vmTestbase/jit/t/t026/t026.java \
+  vmTestbase/jit/t/t027/t027.java \
+  vmTestbase/jit/t/t028/t028.java \
+  vmTestbase/jit/t/t029/t029.java \
+  vmTestbase/jit/t/t030/t030.java \
+  vmTestbase/jit/t/t031/t031.java \
+  vmTestbase/jit/t/t032/t032.java \
+  vmTestbase/jit/t/t033/t033.java \
+  vmTestbase/jit/t/t034/t034.java \
+  vmTestbase/jit/t/t035/t035.java \
+  vmTestbase/jit/t/t036/t036.java \
+  vmTestbase/jit/t/t037/t037.java \
+  vmTestbase/jit/t/t038/t038.java \
+  vmTestbase/jit/t/t039/t039.java \
+  vmTestbase/jit/t/t040/t040.java \
+  vmTestbase/jit/t/t041/t041.java \
+  vmTestbase/jit/t/t042/t042.java \
+  vmTestbase/jit/t/t043/t043.java \
+  vmTestbase/jit/t/t044/t044.java \
+  vmTestbase/jit/t/t045/t045.java \
+  vmTestbase/jit/t/t046/t046.java \
+  vmTestbase/jit/t/t047/t047.java \
+  vmTestbase/jit/t/t048/t048.java \
+  vmTestbase/jit/t/t049/t049.java \
+  vmTestbase/jit/t/t050/t050.java \
+  vmTestbase/jit/t/t051/t051.java \
+  vmTestbase/jit/t/t052/t052.java \
+  vmTestbase/jit/t/t053/t053.java \
+  vmTestbase/jit/t/t054/t054.java \
+  vmTestbase/jit/t/t055/t055.java \
+  vmTestbase/jit/t/t056/t056.java \
+  vmTestbase/jit/t/t057/t057.java \
+  vmTestbase/jit/t/t058/t058.java \
+  vmTestbase/jit/t/t059/t059.java \
+  vmTestbase/jit/t/t060/t060.java \
+  vmTestbase/jit/t/t061/t061.java \
+  vmTestbase/jit/t/t062/t062.java \
+  vmTestbase/jit/t/t063/t063.java \
+  vmTestbase/jit/t/t064/t064.java \
+  vmTestbase/jit/t/t065/t065.java \
+  vmTestbase/jit/t/t066/t066.java \
+  vmTestbase/jit/t/t067/t067.java \
+  vmTestbase/jit/t/t068/t068.java \
+  vmTestbase/jit/t/t069/t069.java \
+  vmTestbase/jit/t/t070/t070.java \
+  vmTestbase/jit/t/t071/t071.java \
+  vmTestbase/jit/t/t072/t072.java \
+  vmTestbase/jit/t/t073/t073.java \
+  vmTestbase/jit/t/t074/t074.java \
+  vmTestbase/jit/t/t075/t075.java \
+  vmTestbase/jit/t/t076/t076.java \
+  vmTestbase/jit/t/t077/t077.java \
+  vmTestbase/jit/t/t078/t078.java \
+  vmTestbase/jit/t/t079/t079.java \
+  vmTestbase/jit/t/t080/t080.java \
+  vmTestbase/jit/t/t081/t081.java \
+  vmTestbase/jit/t/t086/t086.java \
+  vmTestbase/jit/t/t087/t087.java \
+  vmTestbase/jit/t/t088/t088.java \
+  vmTestbase/jit/t/t091/t091.java \
+  vmTestbase/jit/t/t093/t093.java \
+  vmTestbase/jit/t/t094/t094.java \
+  vmTestbase/jit/t/t095/t095.java \
+  vmTestbase/jit/t/t096/t096.java \
+  vmTestbase/jit/t/t098/t098.java \
+  vmTestbase/jit/t/t099/t099.java \
+  vmTestbase/jit/t/t100/t100.java \
+  vmTestbase/jit/t/t101/t101.java \
+  vmTestbase/jit/t/t102/t102.java \
+  vmTestbase/jit/t/t103/t103.java \
+  vmTestbase/jit/t/t104/t104.java \
+  vmTestbase/jit/t/t105/t105.java \
+  vmTestbase/jit/t/t106/t106.java \
+  vmTestbase/jit/t/t107/t107.java \
+  vmTestbase/jit/t/t108/TestDescription.java \
+  vmTestbase/jit/t/t109/TestDescription.java \
+  vmTestbase/jit/t/t110/TestDescription.java \
+  vmTestbase/jit/t/t111/TestDescription.java \
+  vmTestbase/jit/t/t112/TestDescription.java \
+  vmTestbase/jit/t/t113/TestDescription.java \
+  vmTestbase/jit/tiered/TestDescription.java \
+  vmTestbase/jit/verifier/VerifyInitLocal/VerifyInitLocal.java \
+  vmTestbase/jit/verifier/VerifyMergeStack/VerifyMergeStack.java \
+  vmTestbase/jit/wide/wide01/wide01.java \
+  vmTestbase/jit/wide/wide02/wide02.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc1/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc2/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc3/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc4/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc5/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc6/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc7/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc8/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc9/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc10/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc11/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc12/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc13/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc14/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc15/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc16/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc17/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc18/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc19/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc20/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc21/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc22/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc23/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc24/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc25/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc26/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc27/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc28/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc29/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc30/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc31/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc32/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc33/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc34/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc35/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc36/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc37/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc38/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc39/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc40/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc41/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc42/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc43/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc44/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc45/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc46/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc47/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc48/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc49/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc50/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc51/TestDescription.java \
+  vmTestbase/vm/jit/LongTransitions/nativeFnc52/TestDescription.java
--- a/test/hotspot/jtreg/compiler/c2/aarch64/TestVolatiles.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/c2/aarch64/TestVolatiles.java	Thu Jul 12 11:09:23 2018 -0700
@@ -34,7 +34,7 @@
  *                       TestUnsafeVolatileCAS}
  * and <testtype> in {G1,
  *                    CMS,
- *                    CMSCondCardMark,
+ *                    CMSCondMark,
  *                    Serial,
  *                    Parallel}
  */
@@ -287,7 +287,7 @@
                     "ret"
                 };
                 break;
-            case "CMSCondCardMark":
+            case "CMSCondMark":
                 // a card mark volatile barrier should be generated
                 // before the card mark strb from the StoreCM and the
                 // storestore barrier from the StoreCM should be elided
@@ -305,11 +305,13 @@
             case "CMS":
                 // a volatile card mark membar should not be generated
                 // before the card mark strb from the StoreCM and the
-                // storestore barrier from the StoreCM should be elided
+                // storestore barrier from the StoreCM should be
+                // generated as "dmb ishst"
                 matches = new String[] {
                     "membar_release (elided)",
                     "stlrw",
-                    "storestore (elided)",
+                    "storestore",
+                    "dmb ishst",
                     "strb",
                     "membar_volatile (elided)",
                     "ret"
@@ -344,7 +346,7 @@
                     "ret"
                 };
                 break;
-            case "CMSCondCardMark":
+            case "CMSCondMark":
                 // a card mark volatile barrier should be generated
                 // before the card mark strb from the StoreCM and the
                 // storestore barrier from the StoreCM should be elided
@@ -443,7 +445,7 @@
                     "ret"
                 };
                 break;
-            case "CMSCondCardMark":
+            case "CMSCondMark":
                 // a card mark volatile barrier should be generated
                 // before the card mark strb from the StoreCM and the
                 // storestore barrier from the StoreCM should be elided
@@ -465,7 +467,8 @@
                 matches = new String[] {
                     "membar_release (elided)",
                     "cmpxchgw_acq",
-                    "storestore (elided)",
+                    "storestore",
+                    "dmb ishst",
                     "strb",
                     "membar_acquire (elided)",
                     "ret"
@@ -500,7 +503,7 @@
                     "ret"
                 };
                 break;
-            case "CMSCondCardMark":
+            case "CMSCondMark":
                 // a card mark volatile barrier should be generated
                 // before the card mark strb from the StoreCM and the
                 // storestore barrier from the StoreCM should be elided
--- a/test/hotspot/jtreg/compiler/debug/TraceIterativeGVN.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/debug/TraceIterativeGVN.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/dependencies/MonomorphicObjectCall/java.base/java/lang/Object.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/dependencies/MonomorphicObjectCall/java.base/java/lang/Object.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 1994, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/eliminateAutobox/UnsignedLoads.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/eliminateAutobox/UnsignedLoads.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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.
+ * 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/ApiDirectivesTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.api.directives.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/ApiTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.api.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/AsmAarch64Test.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.asm.aarch64.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/AsmAmd64Test.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.asm.amd64.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/AsmSparcTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.asm.sparc.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/CollectionsTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix jdk.internal.vm.compiler.collections.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/CoreAmd64Test.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.core.amd64.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/CoreSparcTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ * @requires vm.simpleArch == "sparcv9"
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.core.sparc.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/CoreTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.core.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/DebugTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.debug.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/GraphTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ * @requires vm.graal.enabled
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.graph.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/HotspotAmd64Test.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.hotspot.amd64.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/HotspotLirTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.hotspot.lir.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/HotspotTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.hotspot.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/Jtt.MicroTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.micro -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttBackendTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.backend -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttBytecodeTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.bytecode -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttExceptTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.except -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttHotpathTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.hotpath -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttHotspotTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.hotspot -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttJdkTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.jdk -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttLangALTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.lang.[a-lA-L] -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttLangMTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.lang.[mM] -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttLangNZTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.lang.[n-zN-Z] -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttLoopTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.loop -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttOptimizeTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.optimize -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttReflectAETest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.reflect.[a-eA-E] -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttReflectFTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.reflect.[fF] -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttReflectGZTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.reflect.[g-zG-Z] -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/JttThreadsTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.threads -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/LirJttTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.lir.jtt -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/LoopTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.loop.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/NodesTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ * @requires vm.graal.enabled
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.nodes.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/OptionsTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.options.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/PhasesCommonTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.phases.common.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/README.md	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,36 @@
+This directory contains jtreg tests which are wrapper tests to execute Graal unit tests similar way they are run in Graal project.
+The tests use compiler.graalunit.common.GraalUnitTestLauncher helper class to run Graal unit tests where the set of tests to execute
+is specified by '-prefix' argument. GraalUnitTestLauncher launches ported com.oracle.mxtool.junit.MxJUnitWrapper to run Graal unit
+tests as it is done by "mx unittest" command from Graal project.
+
+All compiler/graalunit/*.java tests were automatically generated by generateTests.sh script which reads
+"testName -> testPrefix [requiresStatement]" mapping from TestPackages.txt file and generates corresponding <testName>Test.java
+tests. The mapping takes into account tests execution time to avoid very long test runs.
+
+Graal unit tests depends on following external jar files:
+ asm-5.0.4.jar:
+ https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/asm-5.0.4.jar
+
+ asm-tree-5.0.4.jar:
+ https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/asm-tree-5.0.4.jar
+
+ junit-4.12.jar:
+ https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/junit-4.12.jar
+
+ hamcrest-core-1.3.jar:
+ https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/hamcrest-core-1.3.jar
+
+ java-allocation-instrumenter.jar:
+ https://lafo.ssw.uni-linz.ac.at/pub/java-allocation-instrumenter/java-allocation-instrumenter-8f0db117e64e.jar
+
+Before running the tests you need to download these jars from above locations in build/<platform>/images/test/hotspot/jtreg/graal/
+directory. Then you can pass it to jtreg as java option by using "-vmoptions:-Dgraalunit.libs="  or as environment variable
+by using "-e:TEST_IMAGE_GRAAL_DIR=..."
+
+Example:
+> jtreg -vt -jdk:<TESTED_JDK> -vmoptions:"-vmoptions:-Dgraalunit.libs=build/<platform>/images/test/hotspot/jtreg/graal"
+        compiler/graalunit/UtilTest.java
+
+To run Graal unit tests in Graal as JIT mode pass additional -vmoptions to jtreg:
+ -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+TieredCompilation -XX:+UseJVMCICompiler -Djvmci.Compiler=graal
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/ReplacementsTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.replacements.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/TestPackages.txt	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+Collections   jdk.internal.vm.compiler.collections.test
+ApiDirectives org.graalvm.compiler.api.directives.test
+Api           org.graalvm.compiler.api.test
+AsmAarch64    org.graalvm.compiler.asm.aarch64.test
+AsmAmd64      org.graalvm.compiler.asm.amd64.test
+AsmSparc      org.graalvm.compiler.asm.sparc.test
+CoreAmd64     org.graalvm.compiler.core.amd64.test
+CoreSparc     org.graalvm.compiler.core.sparc.test @requires vm.simpleArch == "sparcv9"
+Core          org.graalvm.compiler.core.test
+Debug         org.graalvm.compiler.debug.test
+Graph         org.graalvm.compiler.graph.test      @requires vm.graal.enabled
+HotspotAmd64  org.graalvm.compiler.hotspot.amd64.test
+HotspotLir    org.graalvm.compiler.hotspot.lir.test
+Hotspot       org.graalvm.compiler.hotspot.test
+Loop          org.graalvm.compiler.loop.test
+Nodes         org.graalvm.compiler.nodes.test      @requires vm.graal.enabled
+Options       org.graalvm.compiler.options.test
+PhasesCommon  org.graalvm.compiler.phases.common.test
+Replacements  org.graalvm.compiler.replacements.test
+Util          org.graalvm.util.test
+JttBackend    org.graalvm.compiler.jtt.backend
+JttBytecode   org.graalvm.compiler.jtt.bytecode
+JttExcept     org.graalvm.compiler.jtt.except
+JttHotpath    org.graalvm.compiler.jtt.hotpath
+JttHotspot    org.graalvm.compiler.jtt.hotspot
+JttJdk        org.graalvm.compiler.jtt.jdk
+JttLangAL     org.graalvm.compiler.jtt.lang.[a-lA-L]
+JttLangM      org.graalvm.compiler.jtt.lang.[mM]
+JttLangNZ     org.graalvm.compiler.jtt.lang.[n-zN-Z]
+JttLoop       org.graalvm.compiler.jtt.loop
+Jtt.Micro     org.graalvm.compiler.jtt.micro
+JttOptimize   org.graalvm.compiler.jtt.optimize
+JttReflectAE  org.graalvm.compiler.jtt.reflect.[a-eA-E]
+JttReflectF   org.graalvm.compiler.jtt.reflect.[fF]
+JttReflectGZ  org.graalvm.compiler.jtt.reflect.[g-zG-Z]
+JttThreads    org.graalvm.compiler.jtt.threads
+LirJtt        org.graalvm.compiler.lir.jtt
+Lir           org.graalvm.compiler.lir.test
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/UtilTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ *
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.util.test -exclude ExcludeList.txt
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/com.oracle.mxtool.junit/com/oracle/mxtool/junit/AnsiTerminalDecorator.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2014, 2014, 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.
+ */
+package com.oracle.mxtool.junit;
+
+import org.junit.runner.*;
+import org.junit.runner.notification.*;
+
+/**
+ * Color support for JUnit test output using ANSI escapes codes.
+ */
+class AnsiTerminalDecorator extends MxRunListenerDecorator {
+
+    /** Foreground black. */
+    public static final String BLACK = "\u001b[30m";
+    /** Foreground red. */
+    public static final String RED = "\u001b[31m";
+    /** Foreground green. */
+    public static final String GREEN = "\u001b[32m";
+    /** Foreground yellow. */
+    public static final String YELLOW = "\u001b[33m";
+    /** Foreground blue. */
+    public static final String BLUE = "\u001b[34m";
+    /** Foreground magenta. */
+    public static final String MAGENTA = "\u001b[35m";
+    /** Foreground cyan. */
+    public static final String CYAN = "\u001b[36m";
+    /** Foreground white. */
+    public static final String WHITE = "\u001b[37m";
+
+    /** Foreground bold black. */
+    public static final String BOLD_BLACK = "\u001b[30;1m";
+    /** Foreground bold red. */
+    public static final String BOLD_RED = "\u001b[31;1m";
+    /** Foreground bold green. */
+    public static final String BOLD_GREEN = "\u001b[32;1m";
+    /** Foreground bold yellow. */
+    public static final String BOLD_YELLOW = "\u001b[33;1m";
+    /** Foreground bold blue. */
+    public static final String BOLD_BLUE = "\u001b[34;1m";
+    /** Foreground bold magenta. */
+    public static final String BOLD_MAGENTA = "\u001b[35;1m";
+    /** Foreground bold cyan. */
+    public static final String BOLD_CYAN = "\u001b[36;1m";
+    /** Foreground bold white. */
+    public static final String BOLD_WHITE = "\u001b[37;1m";
+
+    /** Background black. */
+    public static final String BG_BLACK = "\u001b[40m";
+    /** Background red. */
+    public static final String BG_RED = "\u001b[41m";
+    /** Background green. */
+    public static final String BG_GREEN = "\u001b[42m";
+    /** Background yellow. */
+    public static final String BG_YELLOW = "\u001b[43m";
+    /** Background blue. */
+    public static final String BG_BLUE = "\u001b[44m";
+    /** Background magenta. */
+    public static final String BG_MAGENTA = "\u001b[45m";
+    /** Background cyan. */
+    public static final String BG_CYAN = "\u001b[46m";
+    /** Background white. */
+    public static final String BG_WHITE = "\u001b[47m";
+
+    /** Reset. */
+    public static final String RESET = "\u001b[0m";
+    /** Underline. */
+    public static final String UNDERLINED = "\u001b[4m";
+
+    AnsiTerminalDecorator(MxRunListener l) {
+        super(l);
+    }
+
+    @Override
+    public void testSucceeded(Description description) {
+        getWriter().print(GREEN);
+        super.testSucceeded(description);
+        getWriter().print(RESET);
+    }
+
+    @Override
+    public void testAssumptionFailure(Failure failure) {
+        getWriter().print(BLUE);
+        super.testAssumptionFailure(failure);
+        getWriter().print(RESET);
+    }
+
+    @Override
+    public void testFailed(Failure failure) {
+        getWriter().print(RED);
+        super.testFailed(failure);
+        getWriter().print(RESET);
+    }
+
+    @Override
+    public void testIgnored(Description description) {
+        getWriter().print(MAGENTA);
+        super.testIgnored(description);
+        getWriter().print(RESET);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/com.oracle.mxtool.junit/com/oracle/mxtool/junit/EagerStackTraceDecorator.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2014, 2014, 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.
+ */
+package com.oracle.mxtool.junit;
+
+import org.junit.runner.notification.*;
+
+class EagerStackTraceDecorator extends MxRunListenerDecorator {
+
+    EagerStackTraceDecorator(MxRunListener l) {
+        super(l);
+    }
+
+    @Override
+    public void testFailed(Failure failure) {
+        super.testFailed(failure);
+        getWriter().println();
+        getWriter().println(failure.getTestHeader());
+        getWriter().print(failure.getTrace());
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/com.oracle.mxtool.junit/com/oracle/mxtool/junit/FindClassesByAnnotatedMethods.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,341 @@
+/*
+ * Copyright (c) 2014, 2014, 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.
+ */
+package com.oracle.mxtool.junit;
+
+import java.io.BufferedInputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+/**
+ * Finds classes in given jar files that contain methods annotated by a given set of annotations.
+ */
+public class FindClassesByAnnotatedMethods {
+
+    /**
+     * Finds classes in a given set of jar files that contain at least one method with an annotation
+     * from a given set of annotations. The qualified name and containing jar file (separated by a
+     * space) is written to {@link System#out} for each matching class.
+     *
+     * @param args jar file names, annotations and snippets patterns. Annotations are those starting
+     *            with "@" and can be either qualified or unqualified annotation class names,
+     *            snippets patterns are those starting with {@code "snippetsPattern:"} and the rest
+     *            are jar file names
+     */
+    public static void main(String... args) throws Throwable {
+        Set<String> qualifiedAnnotations = new HashSet<>();
+        Set<String> unqualifiedAnnotations = new HashSet<>();
+        for (String arg : args) {
+            if (isAnnotationArg(arg)) {
+                String annotation = arg.substring(1);
+                int lastDot = annotation.lastIndexOf('.');
+                if (lastDot != -1) {
+                    qualifiedAnnotations.add(annotation);
+                } else {
+                    String unqualifed = annotation.substring(lastDot + 1);
+                    unqualifiedAnnotations.add(unqualifed);
+                }
+            }
+        }
+
+        for (String jarFilePath : args) {
+            if (isSnippetArg(jarFilePath) || isAnnotationArg(jarFilePath)) {
+                continue;
+            }
+            JarFile jarFile = new JarFile(jarFilePath);
+            Enumeration<JarEntry> e = jarFile.entries();
+            int unsupportedClasses = 0;
+            System.out.print(jarFilePath);
+            while (e.hasMoreElements()) {
+                JarEntry je = e.nextElement();
+                if (je.isDirectory() || !je.getName().endsWith(".class")) {
+                    continue;
+                }
+                Set<String> methodAnnotationTypes = new HashSet<>();
+                DataInputStream stream = new DataInputStream(new BufferedInputStream(jarFile.getInputStream(je), (int) je.getSize()));
+                boolean isSupported = true;
+                try {
+                    readClassfile(stream, methodAnnotationTypes);
+                } catch (UnsupportedClassVersionError ucve) {
+                    isSupported = false;
+                    unsupportedClasses++;
+                }
+                String className = je.getName().substring(0, je.getName().length() - ".class".length()).replaceAll("/", ".");
+                if (!isSupported) {
+                    System.out.print(" !" + className);
+                }
+                for (String annotationType : methodAnnotationTypes) {
+                    if (!qualifiedAnnotations.isEmpty()) {
+                        if (qualifiedAnnotations.contains(annotationType)) {
+                            System.out.print(" " + className);
+                        }
+                    }
+                    if (!unqualifiedAnnotations.isEmpty()) {
+                        final int lastDot = annotationType.lastIndexOf('.');
+                        if (lastDot != -1) {
+                            String simpleName = annotationType.substring(lastDot + 1);
+                            int lastDollar = simpleName.lastIndexOf('$');
+                            if (lastDollar != -1) {
+                                simpleName = simpleName.substring(lastDollar + 1);
+                            }
+                            if (unqualifiedAnnotations.contains(simpleName)) {
+                                System.out.print(" " + className);
+                            }
+                        }
+                    }
+                }
+            }
+            if (unsupportedClasses != 0) {
+                System.err.printf("Warning: %d classes in %s skipped as their class file version is not supported by %s%n", unsupportedClasses, jarFilePath,
+                                FindClassesByAnnotatedMethods.class.getSimpleName());
+            }
+            System.out.println();
+        }
+    }
+
+    private static boolean isAnnotationArg(String arg) {
+        return arg.charAt(0) == '@';
+    }
+
+    private static boolean isSnippetArg(String arg) {
+        return arg.startsWith("snippetsPattern:");
+    }
+
+    /*
+     * Small bytecode parser that extract annotations.
+     */
+    private static final int MAJOR_VERSION_JAVA7 = 51;
+    private static final int MAJOR_VERSION_OFFSET = 44;
+    private static final byte CONSTANT_Utf8 = 1;
+    private static final byte CONSTANT_Integer = 3;
+    private static final byte CONSTANT_Float = 4;
+    private static final byte CONSTANT_Long = 5;
+    private static final byte CONSTANT_Double = 6;
+    private static final byte CONSTANT_Class = 7;
+    private static final byte CONSTANT_Fieldref = 9;
+    private static final byte CONSTANT_String = 8;
+    private static final byte CONSTANT_Methodref = 10;
+    private static final byte CONSTANT_InterfaceMethodref = 11;
+    private static final byte CONSTANT_NameAndType = 12;
+    private static final byte CONSTANT_MethodHandle = 15;
+    private static final byte CONSTANT_MethodType = 16;
+    private static final byte CONSTANT_Dynamic = 17;
+    private static final byte CONSTANT_InvokeDynamic = 18;
+
+    private static void readClassfile(DataInputStream stream, Collection<String> methodAnnotationTypes) throws IOException {
+        // magic
+        int magic = stream.readInt();
+        assert magic == 0xCAFEBABE;
+
+        int minor = stream.readUnsignedShort();
+        int major = stream.readUnsignedShort();
+        if (major < MAJOR_VERSION_JAVA7) {
+            throw new UnsupportedClassVersionError("Unsupported class file version: " + major + "." + minor);
+        }
+        // Starting with JDK8, ignore a classfile that has a newer format than the current JDK.
+        String javaVersion = System.getProperties().get("java.specification.version").toString();
+        int majorJavaVersion;
+        if (javaVersion.startsWith("1.")) {
+            javaVersion = javaVersion.substring(2);
+            majorJavaVersion = Integer.parseInt(javaVersion);
+        } else {
+            majorJavaVersion = Integer.parseInt(javaVersion);
+        }
+        if (major > MAJOR_VERSION_OFFSET + majorJavaVersion) {
+            throw new UnsupportedClassVersionError("Unsupported class file version: " + major + "." + minor);
+        }
+
+        String[] cp = readConstantPool(stream, major, minor);
+
+        // access_flags, this_class, super_class
+        stream.skipBytes(6);
+
+        // interfaces
+        stream.skipBytes(stream.readUnsignedShort() * 2);
+
+        // fields
+        skipFields(stream);
+
+        // methods
+        readMethods(stream, cp, methodAnnotationTypes);
+    }
+
+    private static void skipFully(DataInputStream stream, int n) throws IOException {
+        long skipped = 0;
+        do {
+            long s = stream.skip(n - skipped);
+            skipped += s;
+            if (s == 0 && skipped != n) {
+                // Check for EOF (i.e., truncated class file)
+                if (stream.read() == -1) {
+                    throw new IOException("truncated stream");
+                }
+                skipped++;
+            }
+        } while (skipped != n);
+    }
+
+    private static String[] readConstantPool(DataInputStream stream, int major, int minor) throws IOException {
+        int count = stream.readUnsignedShort();
+        String[] cp = new String[count];
+
+        int i = 1;
+        while (i < count) {
+            byte tag = stream.readByte();
+            switch (tag) {
+                case CONSTANT_Class:
+                case CONSTANT_String:
+                case CONSTANT_MethodType: {
+                    skipFully(stream, 2);
+                    break;
+                }
+                case CONSTANT_InterfaceMethodref:
+                case CONSTANT_Methodref:
+                case CONSTANT_Fieldref:
+                case CONSTANT_NameAndType:
+                case CONSTANT_Float:
+                case CONSTANT_Integer:
+                case CONSTANT_Dynamic:
+                case CONSTANT_InvokeDynamic: {
+                    skipFully(stream, 4);
+                    break;
+                }
+                case CONSTANT_Long:
+                case CONSTANT_Double: {
+                    skipFully(stream, 8);
+                    break;
+                }
+                case CONSTANT_Utf8: {
+                    cp[i] = stream.readUTF();
+                    break;
+                }
+                case CONSTANT_MethodHandle: {
+                    skipFully(stream, 3);
+                    break;
+                }
+                default: {
+                    throw new InternalError(String.format("Invalid constant pool tag: " + tag + ". Maybe %s needs updating for changes introduced by class file version %d.%d?",
+                                    FindClassesByAnnotatedMethods.class, major, minor));
+                }
+            }
+            if ((tag == CONSTANT_Double) || (tag == CONSTANT_Long)) {
+                i += 2;
+            } else {
+                i += 1;
+            }
+        }
+        return cp;
+    }
+
+    private static void skipAttributes(DataInputStream stream) throws IOException {
+        int attributesCount;
+        attributesCount = stream.readUnsignedShort();
+        for (int i = 0; i < attributesCount; i++) {
+            stream.skipBytes(2); // name_index
+            int attributeLength = stream.readInt();
+            skipFully(stream, attributeLength);
+        }
+    }
+
+    private static void readMethodAttributes(DataInputStream stream, String[] cp, Collection<String> methodAnnotationTypes) throws IOException {
+        int attributesCount;
+        attributesCount = stream.readUnsignedShort();
+        for (int i = 0; i < attributesCount; i++) {
+            String attributeName = cp[stream.readUnsignedShort()];
+            int attributeLength = stream.readInt();
+
+            if (attributeName.equals("RuntimeVisibleAnnotations")) {
+                int numAnnotations = stream.readUnsignedShort();
+                for (int a = 0; a != numAnnotations; a++) {
+                    readAnnotation(stream, cp, methodAnnotationTypes);
+                }
+            } else {
+                skipFully(stream, attributeLength);
+            }
+        }
+    }
+
+    private static void readAnnotation(DataInputStream stream, String[] cp, Collection<String> methodAnnotationTypes) throws IOException {
+        int typeIndex = stream.readUnsignedShort();
+        int pairs = stream.readUnsignedShort();
+        String type = cp[typeIndex];
+        String className = type.substring(1, type.length() - 1).replace('/', '.');
+        methodAnnotationTypes.add(className);
+        readAnnotationElements(stream, cp, pairs, true, methodAnnotationTypes);
+    }
+
+    private static void readAnnotationElements(DataInputStream stream, String[] cp, int pairs, boolean withElementName, Collection<String> methodAnnotationTypes) throws IOException {
+        for (int p = 0; p < pairs; p++) {
+            if (withElementName) {
+                skipFully(stream, 2);
+            }
+            int tag = stream.readByte();
+            switch (tag) {
+                case 'B':
+                case 'C':
+                case 'D':
+                case 'F':
+                case 'I':
+                case 'J':
+                case 'S':
+                case 'Z':
+                case 's':
+                case 'c':
+                    skipFully(stream, 2);
+                    break;
+                case 'e':
+                    skipFully(stream, 4);
+                    break;
+                case '@':
+                    readAnnotation(stream, cp, methodAnnotationTypes);
+                    break;
+                case '[': {
+                    int numValues = stream.readUnsignedShort();
+                    readAnnotationElements(stream, cp, numValues, false, methodAnnotationTypes);
+                    break;
+                }
+            }
+        }
+    }
+
+    private static void skipFields(DataInputStream stream) throws IOException {
+        int count = stream.readUnsignedShort();
+        for (int i = 0; i < count; i++) {
+            stream.skipBytes(6); // access_flags, name_index, descriptor_index
+            skipAttributes(stream);
+        }
+    }
+
+    private static void readMethods(DataInputStream stream, String[] cp, Collection<String> methodAnnotationTypes) throws IOException {
+        int count = stream.readUnsignedShort();
+        for (int i = 0; i < count; i++) {
+            skipFully(stream, 6); // access_flags, name_index, descriptor_index
+            readMethodAttributes(stream, cp, methodAnnotationTypes);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/com.oracle.mxtool.junit/com/oracle/mxtool/junit/GCAfterTestDecorator.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2014, 2014, 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.
+ */
+package com.oracle.mxtool.junit;
+
+import org.junit.runner.*;
+
+class GCAfterTestDecorator extends MxRunListenerDecorator {
+
+    GCAfterTestDecorator(MxRunListener l) {
+        super(l);
+    }
+
+    @Override
+    public void testFinished(Description description) {
+        System.gc();
+        super.testFinished(description);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/com.oracle.mxtool.junit/com/oracle/mxtool/junit/JLModule.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,211 @@
+/*
+ * Copyright (c) 2016, 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.
+ */
+package com.oracle.mxtool.junit;
+
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.Set;
+
+/**
+ * Facade for the {@code java.lang.Module} class introduced in JDK9 that allows tests to be
+ * developed against JDK8 but use module logic if deployed on JDK9.
+ */
+class JLModule {
+
+    private final Object realModule;
+
+    JLModule(Object module) {
+        this.realModule = module;
+    }
+
+    private static final Class<?> moduleClass;
+    private static final Class<?> layerClass;
+
+    private static final Method bootMethod;
+    private static final Method modulesMethod;
+    private static final Method getModuleMethod;
+    private static final Method getUnnamedModuleMethod;
+    private static final Method getNameMethod;
+    private static final Method getPackagesMethod;
+    private static final Method isExportedMethod;
+    private static final Method isExported2Method;
+    private static final Method addExportsMethod;
+    private static final Method addOpensMethod;
+    static {
+        try {
+            moduleClass = findModuleClass();
+            Class<?> modulesClass = Class.forName("jdk.internal.module.Modules");
+            layerClass = findModuleLayerClass();
+            bootMethod = layerClass.getMethod("boot");
+            modulesMethod = layerClass.getMethod("modules");
+            getModuleMethod = Class.class.getMethod("getModule");
+            getUnnamedModuleMethod = ClassLoader.class.getMethod("getUnnamedModule");
+            getNameMethod = moduleClass.getMethod("getName");
+            getPackagesMethod = moduleClass.getMethod("getPackages");
+            isExportedMethod = moduleClass.getMethod("isExported", String.class);
+            isExported2Method = moduleClass.getMethod("isExported", String.class, moduleClass);
+            addExportsMethod = modulesClass.getDeclaredMethod("addExports", moduleClass, String.class, moduleClass);
+            addOpensMethod = getDeclaredMethodOptional(modulesClass, "addOpens", moduleClass, String.class, moduleClass);
+        } catch (Exception e) {
+            throw new AssertionError(e);
+        }
+    }
+
+    // API change http://hg.openjdk.java.net/jdk9/dev/hotspot/rev/afedee84773e.
+    protected static Class<?> findModuleClass() throws ClassNotFoundException {
+        try {
+            return Class.forName("java.lang.Module");
+        } catch (ClassNotFoundException e) {
+            return Class.forName("java.lang.reflect.Module");
+        }
+    }
+
+    // API change http://hg.openjdk.java.net/jdk9/dev/hotspot/rev/afedee84773e.
+    protected static Class<?> findModuleLayerClass() throws ClassNotFoundException {
+        try {
+            return Class.forName("java.lang.ModuleLayer");
+        } catch (ClassNotFoundException e) {
+            return Class.forName("java.lang.reflect.Layer");
+        }
+    }
+
+    private static Method getDeclaredMethodOptional(Class<?> declaringClass, String name, Class<?>... parameterTypes) {
+        try {
+            return declaringClass.getDeclaredMethod(name, parameterTypes);
+        } catch (NoSuchMethodException e) {
+            return null;
+        }
+    }
+
+    public static JLModule fromClass(Class<?> cls) {
+        try {
+            return new JLModule(getModuleMethod.invoke(cls));
+        } catch (Exception e) {
+            throw new AssertionError(e);
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    public static JLModule find(String name) {
+        try {
+            Object bootLayer = bootMethod.invoke(null);
+            Set<Object> modules = (Set<Object>) modulesMethod.invoke(bootLayer);
+            for (Object m : modules) {
+                JLModule module = new JLModule(m);
+                String mname = module.getName();
+                if (mname.equals(name)) {
+                    return module;
+                }
+            }
+        } catch (Exception e) {
+            throw new InternalError(e);
+        }
+        return null;
+    }
+
+    public static JLModule getUnnamedModuleFor(ClassLoader cl) {
+        try {
+            return new JLModule(getUnnamedModuleMethod.invoke(cl));
+        } catch (Exception e) {
+            throw new AssertionError(e);
+        }
+    }
+
+    public String getName() {
+        try {
+            return (String) getNameMethod.invoke(realModule);
+        } catch (Exception e) {
+            throw new AssertionError(e);
+        }
+    }
+
+    /**
+     * Exports all packages in this module to a given module.
+     */
+    public void exportAllPackagesTo(JLModule module) {
+        if (this != module) {
+            for (String pkg : getPackages()) {
+                // Export all JVMCI packages dynamically instead
+                // of requiring a long list of -XaddExports
+                // options on the JVM command line.
+                if (!isExported(pkg, module)) {
+                    addExports(pkg, module);
+                    addOpens(pkg, module);
+                }
+            }
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    public Iterable<String> getPackages() {
+        try {
+            // API change http://hg.openjdk.java.net/jdk9/dev/hotspot/rev/afedee84773e#l1.15
+            Object res = getPackagesMethod.invoke(realModule);
+            if (res instanceof String[]) {
+                return Arrays.asList((String[]) res);
+            }
+            return (Set<String>) res;
+        } catch (Exception e) {
+            throw new AssertionError(e);
+        }
+    }
+
+    public boolean isExported(String pn) {
+        try {
+            return (Boolean) isExportedMethod.invoke(realModule, pn);
+        } catch (Exception e) {
+            throw new AssertionError(e);
+        }
+    }
+
+    public boolean isExported(String pn, JLModule other) {
+        try {
+            return (Boolean) isExported2Method.invoke(realModule, pn, other.realModule);
+        } catch (Exception e) {
+            throw new AssertionError(e);
+        }
+    }
+
+    public void addExports(String pn, JLModule other) {
+        try {
+            addExportsMethod.invoke(null, realModule, pn, other.realModule);
+        } catch (Exception e) {
+            throw new AssertionError(e);
+        }
+    }
+
+    public void addOpens(String pn, JLModule other) {
+        if (addOpensMethod != null) {
+            try {
+                addOpensMethod.invoke(null, realModule, pn, other.realModule);
+            } catch (Exception e) {
+                throw new AssertionError(e);
+            }
+        }
+    }
+
+    @Override
+    public String toString() {
+        return realModule.toString();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/com.oracle.mxtool.junit/com/oracle/mxtool/junit/MxJUnitRequest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2014, 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
+ * 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.
+ */
+package com.oracle.mxtool.junit;
+
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+import org.junit.runner.Description;
+import org.junit.runner.Request;
+import org.junit.runner.notification.Failure;
+
+public final class MxJUnitRequest {
+
+    private final Request request;
+
+    final Set<Class<?>> classes;
+    final String methodName;
+
+    final List<Failure> missingClasses;
+
+    private MxJUnitRequest(Request request, Set<Class<?>> classes, String methodName, List<Failure> missingClasses) {
+        this.request = request;
+        this.classes = classes;
+        this.methodName = methodName;
+        this.missingClasses = missingClasses;
+    }
+
+    public Request getRequest() {
+        return request;
+    }
+
+    public static final class BuilderException extends Exception {
+
+        private static final long serialVersionUID = 1L;
+
+        private BuilderException(String msg) {
+            super(msg);
+        }
+    }
+
+    public static class Builder {
+
+        private final Set<Class<?>> classes = new LinkedHashSet<>();
+        private String methodName = null;
+        private final List<Failure> missingClasses = new ArrayList<>();
+
+        protected Class<?> resolveClass(String name) throws ClassNotFoundException {
+            return Class.forName(name, false, Builder.class.getClassLoader());
+        }
+
+        public void addTestSpec(String arg) throws BuilderException {
+            String className;
+            /*
+             * Entries of the form class#method are handled specially. Only one can be specified on
+             * the command line as there's no obvious way to build a runner for multiple ones.
+             */
+            if (methodName != null) {
+                throw new BuilderException("Only a single class and method can be specified: " + arg);
+            } else if (arg.contains("#")) {
+                String[] pair = arg.split("#");
+                if (pair.length != 2) {
+                    throw new BuilderException("Malformed class and method request: " + arg);
+                } else if (!classes.isEmpty()) {
+                    throw new BuilderException("Only a single class and method can be specified: " + arg);
+                } else {
+                    methodName = pair[1];
+                    className = pair[0];
+                }
+            } else {
+                className = arg;
+            }
+            try {
+                Class<?> cls = resolveClass(className);
+                if ((cls.getModifiers() & Modifier.ABSTRACT) == 0) {
+                    classes.add(cls);
+                }
+            } catch (ClassNotFoundException e) {
+                Description description = Description.createSuiteDescription(className);
+                Failure failure = new Failure(description, e);
+                missingClasses.add(failure);
+            }
+        }
+
+        public MxJUnitRequest build() {
+            Request request;
+            if (methodName == null) {
+                request = Request.classes(classes.toArray(new Class<?>[0]));
+            } else {
+                request = Request.method(classes.iterator().next(), methodName);
+            }
+            return new MxJUnitRequest(request, classes, methodName, missingClasses);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/com.oracle.mxtool.junit/com/oracle/mxtool/junit/MxJUnitWrapper.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,484 @@
+/*
+ * Copyright (c) 2014, 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
+ * 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.
+ */
+package com.oracle.mxtool.junit;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.ServiceLoader;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.junit.internal.JUnitSystem;
+import org.junit.internal.RealSystem;
+import org.junit.runner.Description;
+import org.junit.runner.JUnitCore;
+import org.junit.runner.Request;
+import org.junit.runner.Result;
+import org.junit.runner.Runner;
+import org.junit.runner.notification.Failure;
+import org.junit.runner.notification.RunListener;
+import org.junit.runner.notification.RunNotifier;
+import org.junit.runners.ParentRunner;
+import org.junit.runners.model.RunnerScheduler;
+
+import junit.runner.Version;
+
+public class MxJUnitWrapper {
+
+    public static class MxJUnitConfig {
+
+        public boolean verbose = false;
+        public boolean veryVerbose = false;
+        public boolean enableTiming = false;
+        public boolean failFast = false;
+        public boolean color = false;
+        public boolean eagerStackTrace = false;
+        public boolean gcAfterTest = false;
+        public boolean recordResults = false;
+        public int repeatCount = 1;
+    }
+
+    private static class RepeatingRunner extends Runner {
+
+        private final Runner parent;
+        private int repeat;
+
+        RepeatingRunner(Runner parent, int repeat) {
+            this.parent = parent;
+            this.repeat = repeat;
+        }
+
+        @Override
+        public Description getDescription() {
+            return parent.getDescription();
+        }
+
+        @Override
+        public void run(RunNotifier notifier) {
+            for (int i = 0; i < repeat; i++) {
+                parent.run(notifier);
+            }
+        }
+
+        @Override
+        public int testCount() {
+            return super.testCount() * repeat;
+        }
+    }
+
+    private static class RepeatingRequest extends Request {
+
+        private final Request request;
+        private final int repeat;
+
+        RepeatingRequest(Request request, int repeat) {
+            this.request = request;
+            this.repeat = repeat;
+        }
+
+        @Override
+        public Runner getRunner() {
+            return new RepeatingRunner(request.getRunner(), repeat);
+        }
+    }
+
+    /**
+     * Run the tests contained in the classes named in the <code>args</code>. A single test method
+     * can be specified by adding #method after the class name. Only a single test can be run in
+     * this way. If all tests run successfully, exit with a status of 0. Otherwise exit with a
+     * status of 1. Write feedback while tests are running and write stack traces for all failed
+     * tests after the tests all complete.
+     *
+     * @param args names of classes in which to find tests to run
+     */
+    public static void main(String... args) {
+        JUnitSystem system = new RealSystem();
+        JUnitCore junitCore = new JUnitCore();
+        system.out().println("MxJUnitCore");
+        system.out().println("JUnit version " + Version.id());
+
+        MxJUnitRequest.Builder builder = new MxJUnitRequest.Builder();
+        MxJUnitConfig config = new MxJUnitConfig();
+
+        String[] expandedArgs = expandArgs(args);
+        int i = 0;
+        while (i < expandedArgs.length) {
+            String each = expandedArgs[i];
+            if (each.charAt(0) == '-') {
+                // command line arguments
+                if (each.contentEquals("-JUnitVerbose")) {
+                    config.verbose = true;
+                } else if (each.contentEquals("-JUnitVeryVerbose")) {
+                    config.veryVerbose = true;
+                } else if (each.contentEquals("-JUnitFailFast")) {
+                    config.failFast = true;
+                } else if (each.contentEquals("-JUnitEnableTiming")) {
+                    config.enableTiming = true;
+                } else if (each.contentEquals("-JUnitColor")) {
+                    config.color = true;
+                } else if (each.contentEquals("-JUnitEagerStackTrace")) {
+                    config.eagerStackTrace = true;
+                } else if (each.contentEquals("-JUnitGCAfterTest")) {
+                    config.gcAfterTest = true;
+                } else if (each.contentEquals("-JUnitRecordResults")) {
+                    config.recordResults = true;
+                } else if (each.contentEquals("-JUnitRepeat")) {
+                    if (i + 1 >= expandedArgs.length) {
+                        system.out().println("Must include argument for -JUnitRepeat");
+                        System.exit(1);
+                    }
+                    try {
+                        config.repeatCount = Integer.parseInt(expandedArgs[++i]);
+                    } catch (NumberFormatException e) {
+                        system.out().println("Expected integer argument for -JUnitRepeat. Found: " + expandedArgs[i]);
+                        System.exit(1);
+                    }
+                } else {
+                    system.out().println("Unknown command line argument: " + each);
+                }
+
+            } else {
+
+                try {
+                    builder.addTestSpec(each);
+                } catch (MxJUnitRequest.BuilderException ex) {
+                    system.out().println(ex.getMessage());
+                    System.exit(1);
+                }
+            }
+            i++;
+        }
+
+        MxJUnitRequest request = builder.build();
+
+        if (System.getProperty("java.specification.version").compareTo("1.9") >= 0) {
+            addExports(request.classes, system.out());
+        }
+
+        for (RunListener p : ServiceLoader.load(RunListener.class)) {
+            junitCore.addListener(p);
+        }
+
+        Result result = runRequest(junitCore, system, config, request);
+        System.exit(result.wasSuccessful() ? 0 : 1);
+    }
+
+    private static PrintStream openFile(JUnitSystem system, String name) {
+        File file = new File(name).getAbsoluteFile();
+        try {
+            FileOutputStream fos = new FileOutputStream(file);
+            return new PrintStream(fos, true);
+        } catch (FileNotFoundException e) {
+            system.out().println("Could not open " + file + " for writing: " + e);
+            System.exit(1);
+            return null;
+        }
+    }
+
+    public static Result runRequest(JUnitCore junitCore, JUnitSystem system, MxJUnitConfig config, MxJUnitRequest mxRequest) {
+        final TextRunListener textListener;
+        if (config.veryVerbose) {
+            textListener = new VerboseTextListener(system, mxRequest.classes.size(), VerboseTextListener.SHOW_ALL_TESTS);
+        } else if (config.verbose) {
+            textListener = new VerboseTextListener(system, mxRequest.classes.size());
+        } else {
+            textListener = new TextRunListener(system);
+        }
+        TimingDecorator timings = config.enableTiming ? new TimingDecorator(textListener) : null;
+        MxRunListener mxListener = config.enableTiming ? timings : textListener;
+
+        if (config.color) {
+            mxListener = new AnsiTerminalDecorator(mxListener);
+        }
+        if (config.eagerStackTrace) {
+            mxListener = new EagerStackTraceDecorator(mxListener);
+        }
+        if (config.gcAfterTest) {
+            mxListener = new GCAfterTestDecorator(mxListener);
+        }
+        if (config.recordResults) {
+            PrintStream passed = openFile(system, "passed.txt");
+            PrintStream failed = openFile(system, "failed.txt");
+            mxListener = new TestResultLoggerDecorator(passed, failed, mxListener);
+        }
+
+        junitCore.addListener(TextRunListener.createRunListener(mxListener));
+
+        Request request = mxRequest.getRequest();
+        if (mxRequest.methodName == null) {
+            if (config.failFast) {
+                Runner runner = request.getRunner();
+                if (runner instanceof ParentRunner) {
+                    ParentRunner<?> parentRunner = (ParentRunner<?>) runner;
+                    parentRunner.setScheduler(new RunnerScheduler() {
+                        public void schedule(Runnable childStatement) {
+                            if (textListener.getLastFailure() == null) {
+                                childStatement.run();
+                            }
+                        }
+
+                        public void finished() {
+                        }
+                    });
+                } else {
+                    system.out().println("Unexpected Runner subclass " + runner.getClass().getName() + " - fail fast not supported");
+                }
+            }
+        } else {
+            if (config.failFast) {
+                system.out().println("Single method selected - fail fast not supported");
+            }
+        }
+
+        if (config.repeatCount != 1) {
+            request = new RepeatingRequest(request, config.repeatCount);
+        }
+
+        if (config.enableTiming) {
+            Runtime.getRuntime().addShutdownHook(new Thread() {
+                @Override
+                public void run() {
+                    printTimings(timings);
+                }
+            });
+        }
+
+        Result result = junitCore.run(request);
+        for (Failure each : mxRequest.missingClasses) {
+            result.getFailures().add(each);
+        }
+
+        return result;
+    }
+
+    private static final Pattern MODULE_PACKAGE_RE = Pattern.compile("([^/]+)/(.+)");
+
+    private static class Timing<T> implements Comparable<Timing<T>> {
+        final T subject;
+        final long value;
+
+        Timing(T subject, long value) {
+            this.subject = subject;
+            this.value = value;
+        }
+
+        public int compareTo(Timing<T> o) {
+            if (this.value < o.value) {
+                return -1;
+            }
+            if (this.value > o.value) {
+                return 1;
+            }
+            return 0;
+        }
+    }
+
+    // Should never need to customize so using a system property instead
+    // of a command line option for customization is fine.
+    private static final int TIMINGS_TO_PRINT = Integer.getInteger("mx.junit.timings_to_print", 10);
+
+    private static void printTimings(TimingDecorator timings) {
+        if (TIMINGS_TO_PRINT != 0) {
+            List<Timing<Class<?>>> classTimes = new ArrayList<>(timings.classTimes.size());
+            List<Timing<Description>> testTimes = new ArrayList<>(timings.testTimes.size());
+            for (Map.Entry<Class<?>, Long> e : timings.classTimes.entrySet()) {
+                classTimes.add(new Timing<>(e.getKey(), e.getValue()));
+            }
+            for (Map.Entry<Description, Long> e : timings.testTimes.entrySet()) {
+                testTimes.add(new Timing<>(e.getKey(), e.getValue()));
+            }
+            classTimes.sort(Collections.reverseOrder());
+            testTimes.sort(Collections.reverseOrder());
+
+            System.out.println();
+            System.out.printf("%d longest running test classes:%n", TIMINGS_TO_PRINT);
+            for (int i = 0; i < TIMINGS_TO_PRINT && i < classTimes.size(); i++) {
+                Timing<Class<?>> timing = classTimes.get(i);
+                System.out.printf(" %,10d ms    %s%n", timing.value, timing.subject.getName());
+            }
+            System.out.printf("%d longest running tests:%n", TIMINGS_TO_PRINT);
+            for (int i = 0; i < TIMINGS_TO_PRINT && i < testTimes.size(); i++) {
+                Timing<Description> timing = testTimes.get(i);
+                System.out.printf(" %,10d ms    %s%n", timing.value, timing.subject);
+            }
+            Object[] current = timings.getCurrentTestDuration();
+            if (current != null) {
+                System.out.printf("Test %s not finished after %d ms%n", current[0], current[1]);
+            }
+
+        }
+    }
+
+    /**
+     * Adds the super types of {@code cls} to {@code supertypes}.
+     */
+    private static void gatherSupertypes(Class<?> cls, Set<Class<?>> supertypes) {
+        if (!supertypes.contains(cls)) {
+            supertypes.add(cls);
+            Class<?> superclass = cls.getSuperclass();
+            if (superclass != null) {
+                gatherSupertypes(superclass, supertypes);
+            }
+            for (Class<?> iface : cls.getInterfaces()) {
+                gatherSupertypes(iface, supertypes);
+            }
+        }
+    }
+
+    /**
+     * Updates modules specified in {@code AddExport} annotations on {@code classes} to export
+     * concealed packages to the annotation classes' declaring modules.
+     */
+    private static void addExports(Set<Class<?>> classes, PrintStream out) {
+        Set<Class<?>> types = new HashSet<>();
+        for (Class<?> cls : classes) {
+            gatherSupertypes(cls, types);
+        }
+        for (Class<?> cls : types) {
+            Annotation[] annos = cls.getAnnotations();
+            for (Annotation a : annos) {
+                Class<? extends Annotation> annotationType = a.annotationType();
+                if (annotationType.getSimpleName().equals("AddExports")) {
+                    Optional<String[]> value = getElement("value", String[].class, a);
+                    if (value.isPresent()) {
+                        for (String export : value.get()) {
+                            Matcher m = MODULE_PACKAGE_RE.matcher(export);
+                            if (m.matches()) {
+                                String moduleName = m.group(1);
+                                String packageName = m.group(2);
+                                JLModule module = JLModule.find(moduleName);
+                                if (module == null) {
+                                    out.printf("%s: Cannot find module named %s specified in \"AddExports\" annotation: %s%n", cls.getName(), moduleName, a);
+                                } else {
+                                    if (packageName.equals("*")) {
+                                        module.exportAllPackagesTo(JLModule.fromClass(cls));
+                                    } else {
+                                        module.addExports(packageName, JLModule.fromClass(cls));
+                                        module.addOpens(packageName, JLModule.fromClass(cls));
+                                    }
+                                }
+                            } else {
+                                out.printf("%s: Ignoring \"AddExports\" annotation with value not matching <module>/<package> pattern: %s%n", cls.getName(), a);
+                            }
+                        }
+                    } else {
+                        out.printf("%s: Ignoring \"AddExports\" annotation without `String value` element: %s%n", cls.getName(), a);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Gets the value of the element named {@code name} of type {@code type} from {@code annotation}
+     * if present.
+     *
+     * @return the requested element value wrapped in an {@link Optional} or
+     *         {@link Optional#empty()} if {@code annotation} has no element named {@code name}
+     * @throws AssertionError if {@code annotation} has an element of the given name but whose type
+     *             is not {@code type} or if there's some problem reading the value via reflection
+     */
+    private static <T> Optional<T> getElement(String name, Class<T> type, Annotation annotation) {
+        Class<? extends Annotation> annotationType = annotation.annotationType();
+        Method valueAccessor;
+        try {
+            valueAccessor = annotationType.getMethod(name);
+            if (!valueAccessor.getReturnType().equals(type)) {
+                throw new AssertionError(String.format("Element %s of %s is of type %s, not %s ", name, annotationType.getName(), valueAccessor.getReturnType().getName(), type.getName()));
+            }
+        } catch (NoSuchMethodException e) {
+            return Optional.empty();
+        }
+        try {
+            return Optional.of(type.cast(valueAccessor.invoke(annotation)));
+        } catch (Exception e) {
+            throw new AssertionError(String.format("Could not read %s element from %s", name, annotation), e);
+        }
+    }
+
+    /**
+     * Expand any arguments starting with @ and return the resulting argument array.
+     *
+     * @return the expanded argument array
+     */
+    private static String[] expandArgs(String[] args) {
+        List<String> result = null;
+        for (int i = 0; i < args.length; i++) {
+            String arg = args[i];
+            if (arg.length() > 0 && arg.charAt(0) == '@') {
+                if (result == null) {
+                    result = new ArrayList<>();
+                    for (int j = 0; j < i; j++) {
+                        result.add(args[j]);
+                    }
+                    expandArg(arg.substring(1), result);
+                }
+            } else if (result != null) {
+                result.add(arg);
+            }
+        }
+        return result != null ? result.toArray(new String[0]) : args;
+    }
+
+    /**
+     * Add each line from {@code filename} to the list {@code args}.
+     */
+    private static void expandArg(String filename, List<String> args) {
+        BufferedReader br = null;
+        try {
+            br = new BufferedReader(new FileReader(filename));
+
+            String buf;
+            while ((buf = br.readLine()) != null) {
+                args.add(buf);
+            }
+            br.close();
+        } catch (IOException ioe) {
+            ioe.printStackTrace();
+            System.exit(2);
+        } finally {
+            try {
+                if (br != null) {
+                    br.close();
+                }
+            } catch (IOException ioe) {
+                ioe.printStackTrace();
+                System.exit(3);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/com.oracle.mxtool.junit/com/oracle/mxtool/junit/MxRunListener.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 2014, 2014, 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.
+ */
+package com.oracle.mxtool.junit;
+
+import java.io.*;
+
+import org.junit.internal.*;
+import org.junit.runner.*;
+import org.junit.runner.notification.*;
+
+interface MxRunListener {
+
+    /**
+     * Called before any tests have been run.
+     *
+     * @param description describes the tests to be run
+     */
+    default void testRunStarted(Description description) {
+    }
+
+    /**
+     * Called when all tests have finished.
+     *
+     * @param result the summary of the test run, including all the tests that failed
+     */
+    default void testRunFinished(Result result) {
+    }
+
+    /**
+     * Called when a test class is about to be started.
+     *
+     * @param clazz the test class
+     */
+    default void testClassStarted(Class<?> clazz) {
+    }
+
+    /**
+     * Called when all tests of a test class have finished.
+     *
+     * @param clazz the test class
+     * @param numPassed number of tests in {@code clazz} that passed
+     * @param numFailed number of tests in {@code clazz} that failed
+     */
+    default void testClassFinished(Class<?> clazz, int numPassed, int numFailed) {
+    }
+
+    /**
+     * Called when an atomic test is about to be started. This is also called for ignored tests.
+     *
+     * @param description the description of the test that is about to be run (generally a class and
+     *            method name)
+     */
+    default void testStarted(Description description) {
+    }
+
+    /**
+     * Called when an atomic test has finished, whether the test succeeds, fails or is ignored.
+     *
+     * @param description the description of the test that just ran
+     */
+    default void testFinished(Description description) {
+    }
+
+    /**
+     * Called when an atomic test fails.
+     *
+     * @param failure describes the test that failed and the exception that was thrown
+     */
+    default void testFailed(Failure failure) {
+    }
+
+    /**
+     * Called when a test will not be run, generally because a test method is annotated with
+     * {@link org.junit.Ignore}.
+     *
+     * @param description describes the test that will not be run
+     */
+    default void testIgnored(Description description) {
+    }
+
+    /**
+     * Called when an atomic test succeeds.
+     *
+     * @param description describes the test that will not be run
+     */
+    default void testSucceeded(Description description) {
+    }
+
+    /**
+     * Called when an atomic test flags that it assumes a condition that is false.
+     *
+     * @param failure describes the test that failed and the {@link AssumptionViolatedException}
+     *            that was thrown
+     */
+    default void testAssumptionFailure(Failure failure) {
+    }
+
+    /**
+     * Called after {@link #testClassFinished(Class, int, int)}.
+     */
+    default void testClassFinishedDelimiter() {
+    }
+
+    /**
+     * Called after {@link #testClassStarted(Class)}.
+     */
+    default void testClassStartedDelimiter() {
+    }
+
+    /**
+     * Called after {@link #testStarted(Description)}.
+     */
+    default void testStartedDelimiter() {
+    }
+
+    /**
+     * Called after {@link #testFailed(Failure)}.
+     */
+    default void testFinishedDelimiter() {
+    }
+
+    default boolean beVerbose() {
+        return false;
+    }
+
+    PrintStream getWriter();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/com.oracle.mxtool.junit/com/oracle/mxtool/junit/MxRunListenerDecorator.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2014, 2014, 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.
+ */
+package com.oracle.mxtool.junit;
+
+import java.io.*;
+
+import org.junit.runner.*;
+import org.junit.runner.notification.*;
+
+abstract class MxRunListenerDecorator implements MxRunListener {
+
+    private final MxRunListener l;
+
+    MxRunListenerDecorator(MxRunListener l) {
+        this.l = l;
+    }
+
+    @Override
+    public void testRunStarted(Description description) {
+        l.testRunStarted(description);
+    }
+
+    @Override
+    public void testRunFinished(Result result) {
+        l.testRunFinished(result);
+    }
+
+    @Override
+    public void testAssumptionFailure(Failure failure) {
+        l.testAssumptionFailure(failure);
+    }
+
+    @Override
+    public void testIgnored(Description description) {
+        l.testIgnored(description);
+    }
+
+    @Override
+    public void testClassStarted(Class<?> clazz) {
+        l.testClassStarted(clazz);
+    }
+
+    @Override
+    public void testClassFinished(Class<?> clazz, int numPassed, int numFailed) {
+        l.testClassFinished(clazz, numPassed, numFailed);
+    }
+
+    @Override
+    public void testStarted(Description description) {
+        l.testStarted(description);
+    }
+
+    @Override
+    public void testFinished(Description description) {
+        l.testFinished(description);
+    }
+
+    @Override
+    public void testFailed(Failure failure) {
+        l.testFailed(failure);
+    }
+
+    @Override
+    public void testSucceeded(Description description) {
+        l.testSucceeded(description);
+    }
+
+    @Override
+    public PrintStream getWriter() {
+        return l.getWriter();
+    }
+
+    public void testClassFinishedDelimiter() {
+        l.testClassFinishedDelimiter();
+    }
+
+    public void testClassStartedDelimiter() {
+        l.testClassStartedDelimiter();
+    }
+
+    public void testStartedDelimiter() {
+        l.testStartedDelimiter();
+    }
+
+    public void testFinishedDelimiter() {
+        l.testFinishedDelimiter();
+    }
+
+    public boolean beVerbose() {
+        return l.beVerbose();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/com.oracle.mxtool.junit/com/oracle/mxtool/junit/TestResultLoggerDecorator.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2014, 2016, 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.
+ */
+package com.oracle.mxtool.junit;
+
+import java.io.PrintStream;
+
+import org.junit.runner.Result;
+
+class TestResultLoggerDecorator extends MxRunListenerDecorator {
+
+    private final PrintStream passed;
+    private final PrintStream failed;
+
+    TestResultLoggerDecorator(PrintStream passed, PrintStream failed, MxRunListener l) {
+        super(l);
+        this.passed = passed;
+        this.failed = failed;
+    }
+
+    @Override
+    public void testClassFinished(Class<?> clazz, int numPassed, int numFailed) {
+        super.testClassFinished(clazz, numPassed, numFailed);
+        if (numFailed != 0) {
+            failed.println(clazz.getName());
+        } else {
+            passed.println(clazz.getName());
+        }
+    }
+
+    @Override
+    public void testRunFinished(Result result) {
+        super.testRunFinished(result);
+        passed.close();
+        failed.close();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/com.oracle.mxtool.junit/com/oracle/mxtool/junit/TextRunListener.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) 2014, 2014, 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.
+ */
+package com.oracle.mxtool.junit;
+
+import java.io.PrintStream;
+
+import org.junit.internal.JUnitSystem;
+import org.junit.internal.TextListener;
+import org.junit.runner.Description;
+import org.junit.runner.Result;
+import org.junit.runner.notification.Failure;
+import org.junit.runner.notification.RunListener;
+
+class TextRunListener implements MxRunListener {
+
+    private final PrintStream fWriter;
+    protected Failure lastFailure;
+
+    TextRunListener(JUnitSystem system) {
+        this(system.out());
+    }
+
+    TextRunListener(PrintStream writer) {
+        fWriter = writer;
+    }
+
+    public boolean beVerbose() {
+        return false;
+    }
+
+    @Override
+    public PrintStream getWriter() {
+        return fWriter;
+    }
+
+    public Failure getLastFailure() {
+        return lastFailure;
+    }
+
+    @Override
+    public void testStarted(Description description) {
+        getWriter().print('.');
+    }
+
+    @Override
+    public void testFailed(Failure failure) {
+        getWriter().print('E');
+        lastFailure = failure;
+    }
+
+    @Override
+    public void testIgnored(Description description) {
+        getWriter().print('I');
+    }
+
+    public static RunListener createRunListener(MxRunListener l) {
+        return new TextListener(l.getWriter()) {
+            private Class<?> lastClass;
+            private int passedInLastClass;
+            private int failedInLastClass;
+            private boolean failed;
+
+            @Override
+            public void testStarted(Description description) {
+                Class<?> currentClass = description.getTestClass();
+                if (currentClass != lastClass) {
+                    if (lastClass != null) {
+                        l.testClassFinished(lastClass, passedInLastClass, failedInLastClass);
+                        l.testClassFinishedDelimiter();
+                    }
+                    lastClass = currentClass;
+                    passedInLastClass = 0;
+                    failedInLastClass = 0;
+                    l.testClassStarted(currentClass);
+                    l.testClassStartedDelimiter();
+                }
+                failed = false;
+                l.testStarted(description);
+                l.testStartedDelimiter();
+            }
+
+            @Override
+            public void testFailure(Failure failure) {
+                failed = true;
+                failedInLastClass++;
+                l.testFailed(failure);
+            }
+
+            @Override
+            public void testFinished(Description description) {
+                // we have to do this because there is no callback for successful tests
+                if (!failed) {
+                    l.testSucceeded(description);
+                    passedInLastClass++;
+                }
+                l.testFinished(description);
+                l.testFinishedDelimiter();
+            }
+
+            @Override
+            public void testIgnored(Description description) {
+                testStarted(description);
+                l.testIgnored(description);
+                l.testFinished(description);
+                l.testFinishedDelimiter();
+            }
+
+            @Override
+            public void testRunStarted(Description description) {
+                l.testRunStarted(description);
+            }
+
+            @Override
+            public void testRunFinished(Result result) {
+                if (lastClass != null) {
+                    l.testClassFinished(lastClass, passedInLastClass, failedInLastClass);
+                }
+                l.testRunFinished(result);
+                super.testRunFinished(result);
+            }
+
+            @Override
+            public void testAssumptionFailure(Failure failure) {
+                l.testAssumptionFailure(failure);
+            }
+        };
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/com.oracle.mxtool.junit/com/oracle/mxtool/junit/TimingDecorator.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2014, 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
+ * 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.
+ */
+package com.oracle.mxtool.junit;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.runner.Description;
+
+/**
+ * Timing support for JUnit test runs.
+ */
+class TimingDecorator extends MxRunListenerDecorator {
+
+    private long startTime;
+    private long classStartTime;
+    private Description currentTest;
+    final Map<Class<?>, Long> classTimes;
+    final Map<Description, Long> testTimes;
+
+    TimingDecorator(MxRunListener l) {
+        super(l);
+        this.classTimes = new HashMap<>();
+        this.testTimes = new HashMap<>();
+    }
+
+    @Override
+    public void testClassStarted(Class<?> clazz) {
+        classStartTime = System.nanoTime();
+        super.testClassStarted(clazz);
+    }
+
+    @Override
+    public void testClassFinished(Class<?> clazz, int numPassed, int numFailed) {
+        long totalTime = System.nanoTime() - classStartTime;
+        super.testClassFinished(clazz, numPassed, numFailed);
+        if (beVerbose()) {
+            getWriter().print(' ' + valueToString(totalTime));
+        }
+        classTimes.put(clazz, totalTime / 1_000_000);
+    }
+
+    @Override
+    public void testStarted(Description description) {
+        currentTest = description;
+        startTime = System.nanoTime();
+        super.testStarted(description);
+    }
+
+    @Override
+    public void testFinished(Description description) {
+        long totalTime = System.nanoTime() - startTime;
+        super.testFinished(description);
+        if (beVerbose()) {
+            getWriter().print(" " + valueToString(totalTime));
+        }
+        currentTest = null;
+        testTimes.put(description, totalTime / 1_000_000);
+    }
+
+    private static String valueToString(long valueNS) {
+        long timeWholeMS = valueNS / 1_000_000;
+        long timeFractionMS = (valueNS / 100_000) % 10;
+        return String.format("%d.%d ms", timeWholeMS, timeFractionMS);
+    }
+
+    /**
+     * Gets the test currently starting but not yet completed along with the number of milliseconds
+     * it has been executing.
+     *
+     * @return {@code null} if there is no test currently executing
+     */
+    public Object[] getCurrentTestDuration() {
+        Description current = currentTest;
+        if (current != null) {
+            long timeMS = (System.nanoTime() - startTime) / 1_000_000;
+            return new Object[]{current, timeMS};
+        }
+        return null;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/com.oracle.mxtool.junit/com/oracle/mxtool/junit/VerboseTextListener.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2014, 2016, 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.
+ */
+package com.oracle.mxtool.junit;
+
+import java.io.*;
+
+import org.junit.internal.*;
+import org.junit.runner.*;
+import org.junit.runner.notification.*;
+
+class VerboseTextListener extends TextRunListener {
+
+    private static final int DEFAULT_MAX_TEST_PER_CLASS = 50;
+    public static final int SHOW_ALL_TESTS = Integer.MAX_VALUE;
+    private final int classesCount;
+    private final int maxTestsPerClass;
+    private int currentClassNum;
+    private int currentTestNum;
+
+    VerboseTextListener(JUnitSystem system, int classesCount) {
+        this(system.out(), classesCount, DEFAULT_MAX_TEST_PER_CLASS);
+    }
+
+    VerboseTextListener(JUnitSystem system, int classesCount, int maxTests) {
+        this(system.out(), classesCount, maxTests);
+    }
+
+    VerboseTextListener(PrintStream writer, int classesCount, int maxTests) {
+        super(writer);
+        maxTestsPerClass = maxTests;
+        this.classesCount = classesCount;
+    }
+
+    @Override
+    public boolean beVerbose() {
+        return currentTestNum < maxTestsPerClass;
+    }
+
+    @Override
+    public void testClassStarted(Class<?> clazz) {
+        ++currentClassNum;
+        getWriter().printf("%s started (%d of %d)", clazz.getName(), currentClassNum, classesCount);
+        currentTestNum = 0;
+    }
+
+    @Override
+    public void testClassFinished(Class<?> clazz, int numPassed, int numFailed) {
+        getWriter().print(clazz.getName() + " finished");
+    }
+
+    @Override
+    public void testStarted(Description description) {
+        if (beVerbose()) {
+            getWriter().print("  " + description.getMethodName() + ": ");
+            currentTestNum++;
+        } else {
+            super.testStarted(description);
+        }
+    }
+
+    @Override
+    public void testIgnored(Description description) {
+        if (beVerbose()) {
+            getWriter().print("Ignored");
+        } else {
+            super.testIgnored(description);
+        }
+    }
+
+    @Override
+    public void testSucceeded(Description description) {
+        if (beVerbose()) {
+            getWriter().print("Passed");
+        } else {
+            super.testSucceeded(description);
+        }
+    }
+
+    @Override
+    public void testAssumptionFailure(Failure failure) {
+        if (beVerbose()) {
+            getWriter().printf("(%s) ", failure.getMessage());
+        } else {
+            super.testAssumptionFailure(failure);
+        }
+    }
+
+    @Override
+    public void testFailed(Failure failure) {
+        getWriter().print("FAILED");
+        lastFailure = failure;
+    }
+
+    @Override
+    public void testClassFinishedDelimiter() {
+        getWriter().println();
+    }
+
+    @Override
+    public void testClassStartedDelimiter() {
+        getWriter().println();
+    }
+
+    @Override
+    public void testFinishedDelimiter() {
+        if (beVerbose()) {
+            getWriter().println();
+        } else {
+            super.testFinishedDelimiter();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/common/GraalUnitTestLauncher.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,266 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+package compiler.graalunit.common;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
+import java.nio.file.*;
+import java.util.stream.Collectors;
+
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+/*
+ * This is helper class used to run Graal unit tests.
+ * It accepts two arguments:
+ *  -prefix TEST_PREFIX_TO_DEFINE_SET_OF_TESTS_TO_RUN (Ex: -prefix org.graalvm.compiler.api.test)
+ *  -exclude EXCLUDED_TESTS_FILE_NAME
+ */
+public class GraalUnitTestLauncher {
+
+    static final String MXTOOL_JARFILE = "com.oracle.mxtool.junit.jar";
+    static final String GRAAL_UNITTESTS_JARFILE = "jdk.vm.compiler.tests.jar";
+
+    static final String[] GRAAL_EXTRA_JARS = {"junit-4.12.jar", "asm-5.0.4.jar", "asm-tree-5.0.4.jar",
+                                              "hamcrest-core-1.3.jar", "java-allocation-instrumenter.jar"};
+
+    static final String GENERATED_TESTCLASSES_FILENAME = "list.testclasses";
+
+    // Library dir used to find Graal specific jar files.
+    static String libsDir;
+    static {
+        libsDir = System.getProperty("graalunit.libs");
+        if (libsDir == null || libsDir.isEmpty()) {
+            libsDir = System.getenv("TEST_IMAGE_GRAAL_DIR");
+        }
+
+        if (libsDir == null || libsDir.isEmpty())
+            throw new RuntimeException("ERROR: Graal library directory is not specified, use -Dgraalunit.libs or TEST_IMAGE_GRAAL_DIR environment variable.");
+
+        System.out.println("INFO: graal libs dir is '" + libsDir + "'");
+    }
+
+    /*
+     * Generates --add-exports <module>/<package>=<target-module> flags and
+     * returns them as array list.
+     *
+     * @param moduleName
+     *        Name of the module to update export data
+     *
+     * @param targetModule
+     *        Name of the module to whom to export
+     */
+    static ArrayList<String> getModuleExports(String moduleName, String targetModule) {
+        ArrayList<String> exports = new ArrayList<String>();
+
+        Optional<Module> mod = ModuleLayer.boot().findModule(moduleName);
+        Set<String> packages;
+        if (mod.isPresent()) {
+            packages = mod.get().getPackages();
+
+            for (String pName : packages) {
+                exports.add("--add-exports");
+                exports.add(moduleName + "/" + pName + "=" + targetModule);
+            }
+        }
+
+        return exports;
+    }
+
+    /*
+     * Return list of tests which match specified prefix
+     *
+     * @param testPrefix
+     *        String prefix to select tests
+     */
+    static ArrayList<String> getListOfTestsByPrefix(String testPrefix, Set<String> excludeTests) throws Exception {
+        ArrayList<String> classes = new ArrayList<String>();
+
+        final String testAnnotationName = "@Test";
+
+        // return empty list in case no selection prefix specified
+        if (testPrefix == null || testPrefix.isEmpty())
+            return classes;
+
+        // replace "." by "\." in test pattern
+        testPrefix = testPrefix.replaceAll("\\.", "\\\\.") + ".*";
+        System.out.println("INFO: use following pattern to find tests: " + testPrefix);
+
+        String graalUnitTestFilePath = String.join(File.separator, libsDir, GRAAL_UNITTESTS_JARFILE);
+        String classPath = String.join(File.pathSeparator, System.getProperty("java.class.path"),
+                String.join(File.separator, libsDir, MXTOOL_JARFILE));
+
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(false,
+                "-cp",  classPath,
+                "com.oracle.mxtool.junit.FindClassesByAnnotatedMethods", graalUnitTestFilePath, testAnnotationName);
+
+        System.out.println("INFO: run command " + String.join(" ", pb.command()));
+
+        OutputAnalyzer out = new OutputAnalyzer(pb.start());
+        int exitCode = out.getExitValue();
+        if (exitCode != 0) {
+            throw new Exception("Failed to find tests, VM crashed with exit code " + exitCode);
+        }
+
+        String[] lines = out.getStdout().split(" ");
+        if (lines.length > 1) { // first line contains jar file name
+            for (int i = 1; i < lines.length; i++) {
+                String className = lines[i];
+
+                if (testPrefix.equals(".*") || className.matches(testPrefix)) {
+                    // add the test only in case it is not in exclude list
+                    if (excludeTests!= null && excludeTests.contains(className)) {
+                        System.out.println("INFO: excluded test: " + className);
+                    } else {
+                        classes.add(className);
+                    }
+                }
+            }
+        }
+
+        return classes;
+    }
+
+    /*
+     * Return set of excluded tests
+     *
+     * @param excludeFileName
+     *        Name of the file to read excluded test list
+     */
+    static Set loadExcludeList(String excludeFileName) {
+        Set<String> excludeTests;
+
+        Path excludeFilePath = Paths.get(excludeFileName);
+        try {
+            excludeTests = Files.readAllLines(excludeFilePath).stream()
+                    .filter(l -> !l.trim().isEmpty())
+                    .filter(l -> !l.trim().startsWith("#"))
+                    .map(l -> l.split(" ")[0])
+                    .collect(Collectors.toSet());
+
+        } catch (IOException ioe) {
+            throw new Error("TESTBUG: failed to read " + excludeFilePath);
+        }
+
+        return excludeTests;
+    }
+
+    static String getUsageString() {
+        return "Usage: " + GraalUnitTestLauncher.class.getName() + " " +
+                "-prefix (org.graalvm.compiler.api.test) " +
+                "-exclude <ExcludedTestsFileName>" + System.lineSeparator();
+    }
+
+    public static void main(String... args) throws Exception {
+
+        String testPrefix = null;
+        String excludeFileName = null;
+
+        int i=0;
+        String arg, val;
+        while (i+1 < args.length) {
+            arg = args[i++];
+            val = args[i++];
+
+            switch (arg) {
+                case "-prefix":
+                    testPrefix = val;
+                    break;
+
+                case "-exclude":
+                    excludeFileName = val;
+                    break;
+
+                default:
+                    System.out.println("WARN: illegal option " + arg);
+                    break;
+            }
+        }
+
+        if (testPrefix == null)
+            throw new Error("TESTBUG: no tests to run specified." + System.lineSeparator() + getUsageString());
+
+
+        Set<String> excludeTests = null;
+        if (excludeFileName != null) {
+            excludeTests = loadExcludeList(excludeFileName);
+        }
+
+        // Find list of tests which match provided predicate and write into GENERATED_TESTCLASSES_FILENAME file
+        ArrayList<String> tests = getListOfTestsByPrefix(testPrefix, excludeTests);
+        if (tests.size() > 0) {
+            Files.write(Paths.get(GENERATED_TESTCLASSES_FILENAME), String.join(System.lineSeparator(), tests).getBytes());
+        } else {
+            throw new Error("TESTBUG: no tests found for prefix " + testPrefix);
+        }
+
+        ArrayList<String> javaFlags = new ArrayList<String>();
+
+        // add modules and exports
+        javaFlags.add("--add-modules");
+        javaFlags.add("jdk.internal.vm.compiler,jdk.internal.vm.ci");
+        javaFlags.add("--add-exports");
+        javaFlags.add("java.base/jdk.internal.module=ALL-UNNAMED");
+        javaFlags.addAll(getModuleExports("jdk.internal.vm.compiler", "ALL-UNNAMED"));
+        javaFlags.addAll(getModuleExports("jdk.internal.vm.ci", "ALL-UNNAMED,jdk.internal.vm.compiler"));
+
+
+        // add VM flags
+        javaFlags.add("-XX:+UnlockExperimentalVMOptions");
+        javaFlags.add("-XX:+EnableJVMCI");
+        javaFlags.add("-Djava.awt.headless=true");
+        javaFlags.add("-esa");
+        javaFlags.add("-ea");
+
+
+        // generate class path
+        ArrayList<String> graalJars = new ArrayList<String>(Arrays.asList(GRAAL_EXTRA_JARS));
+        graalJars.add(MXTOOL_JARFILE);
+        graalJars.add(GRAAL_UNITTESTS_JARFILE);
+
+        String graalJarsCP = graalJars.stream()
+                                      .map(s -> String.join(File.separator, libsDir, s))
+                                      .collect(Collectors.joining(File.pathSeparator));
+
+        javaFlags.add("-cp");
+        javaFlags.add(String.join(File.pathSeparator, System.getProperty("java.class.path"), graalJarsCP));
+
+        //
+        javaFlags.add("com.oracle.mxtool.junit.MxJUnitWrapper");
+        javaFlags.add("-JUnitVerbose");
+        javaFlags.add("-JUnitEagerStackTrace");
+        javaFlags.add("-JUnitEnableTiming");
+
+        javaFlags.add("@"+GENERATED_TESTCLASSES_FILENAME);
+
+        ProcessBuilder javaPB = ProcessTools.createJavaProcessBuilder(true,
+                javaFlags.toArray(new String[javaFlags.size()]));
+        System.out.println("INFO: run command: " + String.join(" ", javaPB.command()));
+
+        OutputAnalyzer outputAnalyzer = new OutputAnalyzer(javaPB.start());
+        System.out.println("INFO: execution result: " + outputAnalyzer.getOutput());
+        outputAnalyzer.shouldHaveExitValue(0);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/graalunit/generateTests.sh	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,72 @@
+#!/bin/bash
+#
+# Copyright (c) 2018, 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.
+#
+
+while read -r fName pName requireInfo
+do
+  fName="${fName}Test.java"
+  echo "Generate $fName for $pName ..."
+
+  cat << EOF | sed 's/[[:blank:]]*$//' > $fName
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary
+ * @requires vm.opt.final.EnableJVMCI == true
+ * $requireInfo
+ * @modules jdk.internal.vm.compiler
+ *
+ * @library /test/lib /compiler/graalunit /
+ *
+ * @build compiler.graalunit.common.GraalUnitTestLauncher
+ *
+ * @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
+ *
+ * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix $pName -exclude ExcludeList.txt
+ */
+EOF
+
+done < TestPackages.txt
+
--- a/test/hotspot/jtreg/compiler/intrinsics/string/TestHasNegatives.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/intrinsics/string/TestHasNegatives.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/intrinsics/string/TestStringIntrinsicRangeChecks.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/intrinsics/string/TestStringIntrinsicRangeChecks.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/intrinsics/string/TestStringUTF16IntrinsicRangeChecks.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/intrinsics/string/TestStringUTF16IntrinsicRangeChecks.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, 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.
+ * 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/loopopts/CountedLoopPeelingProfilePredicates.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2018, Red Hat, Inc. 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.
+ */
+
+/**
+ * @test
+ * @bug 8205515
+ * @summary CountedLoopEndNode from peeled loop body is not candidate for profile loop predication
+ *
+ * @run main/othervm -XX:-TieredCompilation -XX:-BackgroundCompilation -XX:-UseOnStackReplacement CountedLoopPeelingProfilePredicates
+ *
+ */
+
+import java.util.Arrays;
+
+public class CountedLoopPeelingProfilePredicates {
+    public static void main(String[] args) {
+        int stop = 2;
+        boolean[] flags1 = new boolean[stop];
+        flags1[stop-1] = true;
+        boolean[] flags2 = new boolean[stop];
+        flags2[0] = true;
+        boolean[] flags3 = new boolean[100];
+        Arrays.fill(flags3, true);
+        flags3[0] = false;
+
+        for (int i = 0; i < 20_000; i++) {
+            test_helper(stop, flags1, false);
+            test_helper(stop, flags2, false);
+            test_helper(stop, flags2, false);
+        }
+        for (int i = 0; i < 20_000; i++) {
+            test(stop, flags1, false, flags3, 1);
+            test(stop, flags2, false, flags3, 1);
+            test(stop, flags2, false, flags3, 1);
+        }
+    }
+
+
+
+    private static void test(int stop, boolean[] flags1, boolean flag2, boolean[] flags3, int inc) {
+        for (int j = 0; j < 100; j+=inc) {
+            if (flags3[j]) {
+                test_helper(stop, flags1, flag2);
+            }
+        }
+    }
+
+    private static void test_helper(int stop, boolean[] flags1, boolean flag2) {
+        for (int i = 0; i < stop; i++) {
+            if (flags1[i]) {
+                return;
+            }
+            if (flag2) {
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/loopopts/TestLimitLoadBelowLoopLimitCheck.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018, Red Hat, Inc. 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.
+ */
+
+/**
+ * @test
+ * @bug 8202123
+ * @summary C2 Crash in Node::in(unsigned int) const+0x14
+ *
+ * @run main/othervm TestLimitLoadBelowLoopLimitCheck
+ *
+ */
+
+public class TestLimitLoadBelowLoopLimitCheck {
+    public static int[] run(int[] arr) {
+        int max = 0;
+        for (int i : arr) {
+            if (i > max) {
+                max = i;
+            }
+        }
+
+        int[] counts = new int[10];
+
+        int i = 0;
+        for (i = 0; i < counts.length; i += 1) {
+            for (int j = 0; j < counts[i]; j += 1) {
+            }
+        }
+
+        while (i < max) {
+            for (int j = 0; j < counts[i]; j += 1) {
+                arr[0] = i;
+            }
+        }
+
+        return arr;
+    }
+
+    public static void main(String[] args) {
+        int[] arr = new int[1000 * 1000];
+
+        for (int i = 0; i < 100; i++) {
+            run(arr);
+        }
+    }
+}
--- a/test/hotspot/jtreg/compiler/patches/java.base/java/lang/Helper.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/patches/java.base/java/lang/Helper.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/stable/StableConfiguration.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/stable/StableConfiguration.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/stable/TestStableBoolean.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/stable/TestStableBoolean.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/stable/TestStableByte.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/stable/TestStableByte.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/stable/TestStableChar.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/stable/TestStableChar.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/stable/TestStableDouble.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/stable/TestStableDouble.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/stable/TestStableFloat.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/stable/TestStableFloat.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/stable/TestStableInt.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/stable/TestStableInt.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/stable/TestStableLong.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/stable/TestStableLong.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/stable/TestStableMemoryBarrier.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/stable/TestStableMemoryBarrier.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/stable/TestStableObject.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/stable/TestStableObject.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/stable/TestStableShort.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/stable/TestStableShort.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/stable/TestStableUByte.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/stable/TestStableUByte.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/stable/TestStableUShort.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/stable/TestStableUShort.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/unsafe/OpaqueAccesses.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/unsafe/OpaqueAccesses.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/unsafe/UnsafeGetConstantField.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/unsafe/UnsafeGetConstantField.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/compiler/unsafe/UnsafeGetStableArrayElement.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/compiler/unsafe/UnsafeGetStableArrayElement.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/gc/g1/TestHumongousRemsetsMatch.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test TestHumongousRemSetsMatch
+ * @bug 8205426
+ * @summary Test to make sure that humongous object remset states are in sync
+ * @key gc
+ * @requires vm.gc.G1
+ * @library /test/lib
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -Xmx512M -Xms512M -Xmn10M -XX:ParallelGCThreads=2 -XX:-UseDynamicNumberOfGCThreads -XX:+UseG1GC -XX:+WhiteBoxAPI -XX:G1HeapRegionSize=1M -XX:+VerifyAfterGC -Xlog:gc,gc+remset+tracking=trace TestHumongousRemsetsMatch
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class TestHumongousRemsetsMatch {
+
+    // G1 at the moment uses one thread every this amount of regions.
+    private static final int WorkerThreadBoundary = 384;
+
+    private static final int ObjSizeInRegions = 17;
+    private static final int M = 1024 * 1024;
+    private static final int TypeArrayObjSize = ObjSizeInRegions * M / 4 /* sizeof(int) */ - 1024 /* > header size */;
+
+    public static void main(String[] args) throws Exception {
+        WhiteBox wb = WhiteBox.getWhiteBox();
+
+        for (int j = 0; j < 3; j++) {
+            wb.fullGC(); // Start with a clean slate
+
+            // It may happen that our 7-region sized humongous objects may just be "misaligned"
+            // so that they do not cross the region 384 boundary. Try to counter this by offsetting
+            // the humongous objects just a little.
+            Object alignmentFudge = new int[(j + 1) * M / 4 /* sizeof(int) */ - 1024];
+
+            // Fill the heap so that more than WorkerThreadBoundary regions are occupied with humongous objects
+            // and hopefully one of these objects crosses the region WorkerThreadBoundary boundary.
+            Object[] lotsOfHumongousObjects = new Object[(WorkerThreadBoundary / ObjSizeInRegions) + 3];
+
+            for (int i = 0; i < lotsOfHumongousObjects.length; i++) {
+                lotsOfHumongousObjects[i] = new int[TypeArrayObjSize];
+            }
+
+            wb.fullGC();
+
+            // Trigger a concurrent cycle and wait until the Remark pause
+            wb.g1StartConcMarkCycle();
+            while (wb.g1InConcurrentMark()) {
+                Thread.sleep(200);
+            }
+            wb.youngGC(); // Trigger verification error.
+
+            System.out.println(lotsOfHumongousObjects + " " + alignmentFudge);
+        }
+    }
+}
+
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SASymbolTableTest.java	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, 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.
- */
-
-/**
- * @test SASymbolTableTest
- * @summary Walk symbol table using SA, with and without CDS.
- * @requires vm.cds & vm.hasSAandCanAttach
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- *          jdk.hotspot.agent/sun.jvm.hotspot.oops
- *          jdk.hotspot.agent/sun.jvm.hotspot.memory
- *          jdk.hotspot.agent/sun.jvm.hotspot.runtime
- *          jdk.hotspot.agent/sun.jvm.hotspot.tools
- *          java.management
- * @build SASymbolTableTestAgent
- * @run main SASymbolTableTest
- */
-
-import java.util.Arrays;
-import java.util.List;
-import jdk.test.lib.cds.CDSTestUtils;
-import jdk.test.lib.process.ProcessTools;
-import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.JDKToolFinder;
-import jdk.test.lib.Platform;
-import jdk.test.lib.apps.LingeredApp;
-
-/*
- * The purpose of this test is to validate that we can use SA to
- * attach a process and walk its SymbolTable, regardless whether
- * the attachee process runs in CDS mode or not.
- *
- * SASymbolTableTest Just sets up the agent and attachee processes.
- * The SymbolTable walking is done in the SASymbolTableTestAgent class.
- */
-public class SASymbolTableTest {
-    static String jsaName = "./SASymbolTableTest.jsa";
-    private static LingeredApp theApp = null;
-
-
-    public static void main(String[] args) throws Exception {
-        CDSTestUtils.createArchiveAndCheck();
-        run(true);
-        run(false);
-    }
-
-
-    private static void run(boolean useArchive) throws Exception {
-        String flag = useArchive ? "auto" : "off";
-
-        try {
-            // (1) Launch the attachee process
-            System.out.println("Starting LingeredApp");
-            List<String> vmOpts = Arrays.asList(
-                    "-XX:SharedArchiveFile=" + jsaName,
-                    "-Xshare:" + flag,
-                    "-showversion");                // so we can see "sharing" in the output
-
-            theApp = LingeredApp.startApp(vmOpts);
-
-            // (2) Launch the agent process
-            long pid = theApp.getPid();
-            System.out.println("Attaching agent to " + pid );
-            ProcessBuilder tool = ProcessTools.createJavaProcessBuilder(
-                    "--add-modules=jdk.hotspot.agent",
-                    "--add-exports=jdk.hotspot.agent/sun.jvm.hotspot.oops=ALL-UNNAMED",
-                    "--add-exports=jdk.hotspot.agent/sun.jvm.hotspot.memory=ALL-UNNAMED",
-                    "--add-exports=jdk.hotspot.agent/sun.jvm.hotspot.runtime=ALL-UNNAMED",
-                    "--add-exports=jdk.hotspot.agent/sun.jvm.hotspot.tools=ALL-UNNAMED",
-                    "SASymbolTableTestAgent",
-                    Long.toString(pid));
-            OutputAnalyzer output = CDSTestUtils.executeAndLog(tool, "tool");
-            if (output.getStdout().contains("connected too early")) {
-                System.out.println("SymbolTable not created by VM - test skipped");
-                return;
-            }
-            output.shouldHaveExitValue(0);
-        } catch (Exception ex) {
-            throw new RuntimeException("Test ERROR " + ex, ex);
-        } finally {
-            LingeredApp.stopApp(theApp);
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SASymbolTableTestAgent.java	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/*
- * Copyright (c) 2016, 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.
- */
-
-import sun.jvm.hotspot.memory.SymbolTable;
-import sun.jvm.hotspot.oops.Symbol;
-import sun.jvm.hotspot.runtime.VM;
-import sun.jvm.hotspot.tools.Tool;
-
-/**
- * This class is launched in a sub-process by the main test,
- * SASymbolTableTest.java.
- *
- * It uses SA to connect to another JVM process, whose PID is specified in args[].
- * The purpose of the test is to validate that we can walk the SymbolTable
- * and CompactHashTable of the other process. Everything should work regardless
- * of whether the other process runs in CDS mode or not.
- *
- * Note: CompactHashTable is used only when CDS is enabled.
- */
-public class SASymbolTableTestAgent extends Tool {
-    public SASymbolTableTestAgent() {
-        super();
-    }
-    public static void main(String args[]) {
-        SASymbolTableTestAgent tool = new SASymbolTableTestAgent();
-        tool.execute(args);
-    }
-
-    static String[] commonNames = {
-        "java/lang/Object",
-        "java/lang/String",
-        "java/lang/Class",
-        "java/lang/Cloneable",
-        "java/lang/ClassLoader",
-        "java/io/Serializable",
-        "java/lang/System",
-        "java/lang/Throwable",
-        "java/lang/Error",
-        "java/lang/ThreadDeath",
-        "java/lang/Exception",
-        "java/lang/RuntimeException",
-        "java/lang/SecurityManager",
-        "java/security/ProtectionDomain",
-        "java/security/AccessControlContext",
-        "java/security/SecureClassLoader",
-        "java/lang/ClassNotFoundException",
-        "java/lang/NoClassDefFoundError",
-        "java/lang/LinkageError",
-        "java/lang/ClassCastException",
-        "java/lang/ArrayStoreException",
-        "java/lang/VirtualMachineError",
-        "java/lang/OutOfMemoryError",
-        "java/lang/StackOverflowError",
-        "java/lang/IllegalMonitorStateException",
-        "java/lang/ref/Reference",
-        "java/lang/ref/SoftReference",
-        "java/lang/ref/WeakReference",
-        "java/lang/ref/FinalReference",
-        "java/lang/ref/PhantomReference",
-        "java/lang/ref/Finalizer",
-        "java/lang/Thread",
-        "java/lang/ThreadGroup",
-        "java/util/Properties",
-        "java/lang/reflect/AccessibleObject",
-        "java/lang/reflect/Field",
-        "java/lang/reflect/Method",
-        "java/lang/reflect/Constructor",
-        "java/lang/invoke/MethodHandle",
-        "java/lang/invoke/MemberName",
-        "java/lang/invoke/MethodHandleNatives",
-        "java/lang/invoke/MethodType",
-        "java/lang/BootstrapMethodError",
-        "java/lang/invoke/CallSite",
-        "java/lang/invoke/ConstantCallSite",
-        "java/lang/invoke/MutableCallSite",
-        "java/lang/invoke/VolatileCallSite",
-        "java/lang/StringBuffer",
-        "java/lang/StringBuilder",
-        "java/io/ByteArrayInputStream",
-        "java/io/File",
-        "java/net/URLClassLoader",
-        "java/net/URL",
-        "java/util/jar/Manifest",
-        "java/security/CodeSource",
-    };
-
-    static String[] badNames = {
-        "java/lang/badbadbad",
-        "java/io/badbadbadbad",
-        "this*symbol*must*not*exist"
-    };
-
-    public void run() {
-        System.out.println("SASymbolTableTestAgent: starting");
-        try {
-            VM vm = VM.getVM();
-            SymbolTable table = vm.getSymbolTable();
-
-            // (a) These are names that are likely to exist in the symbol table
-            //     of a JVM after start-up. They were taken from vmSymbols.hpp
-            //     during the middle of JDK9 development.
-            //
-            //     The purpose is not to check that each name must exist (a future
-            //     version of JDK may not preload some of the classes).
-            //
-            //     The purpose of this loops is to ensure that we check a lot of symbols,
-            //     so we will (most likely) hit on both VALUE_ONLY_BUCKET_TYPE and normal bucket type
-            //     in CompactHashTable.probe().
-            for (String n : commonNames) {
-                Symbol s = table.probe(n);
-                System.out.format("%-40s = %s\n", n, s);
-            }
-
-            System.out.println("======================================================================");
-
-            // (b) Also test a few strings that are known to not exist in the table. This will
-            //     both the compact table (if it exists) and the regular table to be walked.
-            for (String n : badNames) {
-                Symbol s = table.probe(n);
-                System.out.format("%-40s = %s\n", n, s);
-            }
-        } catch (NullPointerException e) {
-            System.out.println("connected too early -- please try again");
-        }
-    }
-}
--- a/test/hotspot/jtreg/runtime/appcds/MoveJDKTest.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/appcds/MoveJDKTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -108,6 +108,16 @@
             out.shouldNotContain("shared class paths mismatch");
             out.shouldNotContain("BOOT classpath mismatch");
         }
+
+        // Test with no modules image in the <java home>/lib directory
+        renameModulesFile(java_home_dst);
+        {
+            ProcessBuilder pb = makeBuilder(java_home_dst + "/bin/java",
+                                            "-version");
+            OutputAnalyzer out = TestCommon.executeAndLog(pb, "exec-missing-modules");
+            out.shouldHaveExitValue(1);
+            out.shouldContain("Failed setting boot class path.");
+        }
     }
 
     // Do a cheap clone of the JDK. Most files can be sym-linked. However, $JAVA_HOME/bin/java and $JAVA_HOME/lib/.../libjvm.so"
@@ -144,6 +154,24 @@
         }
     }
 
+    static void renameModulesFile(String javaHome) throws Exception {
+        String modulesDir = javaHome + File.separator + "lib";
+        File origModules = new File(modulesDir, "modules");
+        if (!origModules.exists()) {
+            throw new RuntimeException("modules file not found");
+        }
+
+        File renamedModules = new File(modulesDir, "orig_modules");
+        if (renamedModules.exists()) {
+            throw new RuntimeException("found orig_modules unexpectedly");
+        }
+
+        boolean success = origModules.renameTo(renamedModules);
+        if (!success) {
+            throw new RuntimeException("rename modules file failed");
+        }
+    }
+
     static ProcessBuilder makeBuilder(String... args) throws Exception {
         System.out.print("[");
         for (String s : args) {
--- a/test/hotspot/jtreg/runtime/appcds/TestCommon.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/appcds/TestCommon.java	Thu Jul 12 11:09:23 2018 -0700
@@ -33,6 +33,7 @@
 import jdk.test.lib.process.OutputAnalyzer;
 import java.io.File;
 import java.text.SimpleDateFormat;
+import java.util.Arrays;
 import java.util.ArrayList;
 import java.util.Date;
 
@@ -343,4 +344,22 @@
         }
         return dirFile.getPath();
     }
+
+    public static boolean checkOutputStrings(String outputString1,
+                                             String outputString2,
+                                             String split_regex) {
+        String[] sa1 = outputString1.split(split_regex);
+        String[] sa2 = outputString2.split(split_regex);
+        Arrays.sort(sa1);
+        Arrays.sort(sa2);
+
+        int i = 0;
+        for (String s : sa1) {
+            if (!s.equals(sa2[i])) {
+                throw new RuntimeException(s + " is different from " + sa2[i]);
+            }
+            i ++;
+        }
+        return true;
+    }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/ArchivedModuleComboTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2018, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Test archived system module sub-graph and verify objects are archived.
+ * @requires vm.cds.archived.java.heap
+ * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @build sun.hotspot.WhiteBox
+ * @compile CheckArchivedModuleApp.java
+ * @run driver ClassFileInstaller -jar app.jar CheckArchivedModuleApp
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run main ArchivedModuleComboTest
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+import sun.hotspot.WhiteBox;
+
+public class ArchivedModuleComboTest {
+    public static void main(String[] args) throws Exception {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+        String appJar = ClassFileInstaller.getJarPath("app.jar");
+
+        Path userDir = Paths.get(System.getProperty("user.dir"));
+        Path moduleDir = Files.createTempDirectory(userDir, "mods");
+
+        // Dump without --module-path
+        OutputAnalyzer output = TestCommon.dump(appJar,
+                                    TestCommon.list("CheckArchivedModuleApp"),
+                                    use_whitebox_jar);
+        TestCommon.checkDump(output);
+
+        // Test case 1)
+        // - Dump without --module-path
+        // - Run from -cp only, archived boot layer module ModuleDescriptors
+        //   should be used.
+        System.out.println("----------------------- Test case 1 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "CheckArchivedModuleApp",
+                                 "yes");
+        TestCommon.checkExec(output);
+
+        // Test case 2)
+        // - Dump without --module-path
+        // - Run from -cp only, archived boot layer module ModuleDescriptors
+        //   should be used with --show-module-resolution (requires resolution).
+        System.out.println("----------------------- Test case 2 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                                 "--show-module-resolution",
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "CheckArchivedModuleApp",
+                                 "yes");
+        TestCommon.checkExec(output);
+
+        // Test case 3)
+        // - Dump without --module-path
+        // - Run with --module-path, archived boot layer module ModuleDescriptors
+        //   should be disabled.
+        System.out.println("----------------------- Test case 3 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                                 "--module-path",
+                                 moduleDir.toString(),
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "CheckArchivedModuleApp",
+                                 "no");
+        TestCommon.checkExec(output);
+
+        // Dump with --module-path specified (test case 4, 5). Use an
+        // empty directory as it's simple and still triggers the case
+        // where system module objects are not archived.
+        output = TestCommon.dump(appJar,
+                                 TestCommon.list("CheckArchivedModuleApp"),
+                                 "--module-path",
+                                 moduleDir.toString(),
+                                 use_whitebox_jar);
+        TestCommon.checkDump(output);
+
+        // Test case 4)
+        // - Dump with --module-path
+        // - Run from -cp only, no archived boot layer module ModuleDescriptors
+        //   should be found.
+        System.out.println("----------------------- Test case 4 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "CheckArchivedModuleApp",
+                                 "no");
+        TestCommon.checkExec(output);
+
+        // Test case 5)
+        // - Dump with --module-path
+        // - Run with --module-path, no archived boot layer module ModuleDescriptors
+        //   should be found.
+        System.out.println("----------------------- Test case 5 ----------------------");
+        output = TestCommon.exec(appJar, use_whitebox_jar,
+                                 "--module-path",
+                                 moduleDir.toString(),
+                                 "-XX:+UnlockDiagnosticVMOptions",
+                                 "-XX:+WhiteBoxAPI",
+                                 "CheckArchivedModuleApp",
+                                 "no");
+        TestCommon.checkExec(output);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/ArchivedModuleCompareTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2018, 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.
+ *
+ */
+
+/*
+ * @test
+ * @summary Compare archived system modules with non-archived.
+ * @requires vm.cds.archived.java.heap
+ * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/appcds
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ *          jdk.jartool/sun.tools.jar
+ * @compile PrintSystemModulesApp.java
+ * @run driver ClassFileInstaller -jar app.jar PrintSystemModulesApp
+ * @run main ArchivedModuleCompareTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class ArchivedModuleCompareTest {
+    public static void main(String[] args) throws Exception {
+        String appJar = ClassFileInstaller.getJarPath("app.jar");
+
+        // Test case 1)
+        // Compare the list of archived system module names with non-archived
+        // list. They must be the same.
+        System.out.println("---------------- Test case 1 -----------------");
+        OutputAnalyzer output = TestCommon.dump(appJar,
+                        TestCommon.list("PrintSystemModulesApp"));
+        TestCommon.checkDump(output);
+
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+                                 "-cp", appJar,
+                                 "-Xshare:off",
+                                 "PrintSystemModulesApp");
+        output = TestCommon.executeAndLog(pb, "print.system.module.share.off");
+        output.shouldHaveExitValue(0);
+        String bootModules1 = output.getStdout();
+
+        output = TestCommon.exec(appJar,
+                                 "PrintSystemModulesApp");
+        TestCommon.checkExec(output);
+        if (output.getStderr().contains("sharing")) {
+            String bootModules2 = output.getStdout();
+            TestCommon.checkOutputStrings(bootModules1, bootModules2, ", ");
+        }
+
+        // Test case 2)
+        // Verify --show-module-resolution output with the output from
+        // -Xshare:off run
+        System.out.println("---------------- Test case 2 -----------------");
+        pb = ProcessTools.createJavaProcessBuilder(
+                                 "-Xshare:off",
+                                 "--show-module-resolution",
+                                 "-version");
+        output = TestCommon.executeAndLog(pb, "show.module.resolution.share.off");
+        output.shouldHaveExitValue(0);
+        String moduleResolutionOut1 = output.getStdout();
+
+        output = TestCommon.exec(appJar,
+                                 "--show-module-resolution",
+                                 "-version");
+        TestCommon.checkExec(output);
+        if (output.getStderr().contains("sharing")) {
+            String moduleResolutionOut2 = output.getStdout();
+            TestCommon.checkOutputStrings(
+                moduleResolutionOut1, moduleResolutionOut2, "\n");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/ArchivedModuleWithCustomImageTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,184 @@
+/**
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @summary Test archived module graph with custom runtime image
+ * @requires vm.cds.archived.java.heap
+ * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/appcds
+ * @modules java.base/jdk.internal.module
+ *          java.management
+ *          jdk.jlink
+ *          jdk.compiler
+ * @build sun.hotspot.WhiteBox
+ * @compile CheckArchivedModuleApp.java
+ * @run driver ClassFileInstaller -jar app.jar CheckArchivedModuleApp
+ * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
+ * @run main ArchivedModuleWithCustomImageTest
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import jdk.test.lib.compiler.CompilerUtils;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class ArchivedModuleWithCustomImageTest {
+    private static final String JAVA_HOME = System.getProperty("java.home");
+    private static final String TEST_MODULE = "test";
+    private static final Path jdkHome = Paths.get(System.getProperty("test.jdk"));
+    private static final Path jdkMods = jdkHome.resolve("jmods");
+    private static final Path testSrc = Paths.get(System.getProperty("test.src"));
+    private static final Path src = testSrc.resolve("src").resolve(TEST_MODULE);
+    private static final Path classes = Paths.get("classes");
+    private static final Path jmods = Paths.get("jmods");
+
+    public static void main(String[] args) throws Throwable {
+        if (Files.notExists(jdkMods)) {
+            System.out.println("No jmods/ in test JDK, not supported.");
+            return;
+        }
+
+        // compile test module class
+        if (!CompilerUtils.compile(src, classes)) {
+            throw new RuntimeException("Compilation failure.");
+        }
+
+        // create custom runtime image named 'myimage'
+        Files.createDirectories(jmods);
+        Path image = Paths.get("myimage");
+        runJmod(classes.toString(), TEST_MODULE);
+        runJlink(image, TEST_MODULE);
+
+        // test using 'myimage'
+        testArchivedModuleUsingImage(image);
+
+        Files.delete(jmods.resolve(TEST_MODULE + ".jmod"));
+    }
+
+    private static void runJlink(Path image, String modName) throws Throwable {
+        Path jlink = Paths.get(JAVA_HOME, "bin", "jlink");
+        OutputAnalyzer output = ProcessTools.executeProcess(jlink.toString(),
+                        "--output", image.toString(),
+                        "--add-modules", modName,
+                        "--module-path", jdkMods + File.pathSeparator + jmods);
+        output.shouldHaveExitValue(0);
+    }
+
+    private static void runJmod(String cp, String modName) throws Throwable {
+        Path jmod = Paths.get(JAVA_HOME, "bin", "jmod");
+        OutputAnalyzer output = ProcessTools.executeProcess(jmod.toString(),
+                       "create",
+                       "--class-path", cp,
+                       "--module-version", "1.0",
+                       "--main-class", "jdk.test.Test",
+                       jmods.resolve(modName + ".jmod").toString());
+        output.shouldHaveExitValue(0);
+    }
+
+    private static void testArchivedModuleUsingImage(Path image)
+                            throws Throwable {
+        String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
+        String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
+        String appJar = ClassFileInstaller.getJarPath("app.jar");
+        Path customJava = Paths.get(image.toString(), "bin", "java");
+
+        // -Xshare:dump with custom runtime image
+        String[] dumpCmd = {
+            customJava.toString(),
+            "-XX:SharedArchiveFile=./ArchivedModuleWithCustomImageTest.jsa",
+            "-Xshare:dump"};
+        printCommand(dumpCmd);
+        ProcessBuilder pbDump = new ProcessBuilder();
+        pbDump.command(dumpCmd);
+        OutputAnalyzer output = TestCommon.executeAndLog(
+            pbDump, "custom.runtime.image.dump");
+        TestCommon.checkDump(output);
+
+        // Test case 1):
+        // test archived module graph objects are used with custome runtime image
+        System.out.println("------------------- Test case 1 -------------------");
+        String[] runCmd = {customJava.toString(),
+                           use_whitebox_jar,
+                           "-XX:SharedArchiveFile=./ArchivedModuleWithCustomImageTest.jsa",
+                           "-cp",
+                           appJar,
+                           "-Xshare:on",
+                           "-XX:+UnlockDiagnosticVMOptions",
+                           "-XX:+WhiteBoxAPI",
+                           "CheckArchivedModuleApp",
+                           "yes"};
+        printCommand(runCmd);
+        ProcessBuilder pbRun = new ProcessBuilder();
+        pbRun.command(runCmd);
+        output = TestCommon.executeAndLog(pbRun, "custom.runtime.image.run");
+        output.shouldHaveExitValue(0);
+
+
+        // Test case 2):
+        // verify --show-module-resolution output
+        System.out.println("------------------- Test case 2 -------------------");
+
+        // myimage/bin/java -Xshare:off --show-module-resolution -version
+        String[] showModuleCmd1 = {customJava.toString(),
+                                   "-Xshare:off",
+                                   "--show-module-resolution",
+                                   "-version"};
+        printCommand(showModuleCmd1);
+        pbRun = new ProcessBuilder();
+        pbRun.command(showModuleCmd1);
+        output = TestCommon.executeAndLog(
+            pbRun, "custom.runtime.image.showModuleResolution.nocds");
+        output.shouldHaveExitValue(0);
+        String moduleResolutionOut1 = output.getStdout();
+
+        // myimage/bin/java -Xshare:on --show-module-resolution -version
+        //    -XX:SharedArchiveFile=./ArchivedModuleWithCustomImageTest.jsa
+        String[] showModuleCmd2 = {
+            customJava.toString(),
+            "-XX:SharedArchiveFile=./ArchivedModuleWithCustomImageTest.jsa",
+            "-Xshare:on",
+            "--show-module-resolution",
+            "-version"};
+        printCommand(showModuleCmd2);
+        pbRun = new ProcessBuilder();
+        pbRun.command(showModuleCmd2);
+        output = TestCommon.executeAndLog(
+            pbRun, "custom.runtime.image.showModuleResolution.cds");
+        if (output.getStderr().contains("sharing")) {
+            String moduleResolutionOut2 = output.getStdout();
+            TestCommon.checkOutputStrings(
+                moduleResolutionOut1, moduleResolutionOut2, "\n");
+        }
+    }
+
+    private static void printCommand(String opts[]) {
+        StringBuilder cmdLine = new StringBuilder();
+        for (String cmd : opts)
+            cmdLine.append(cmd).append(' ');
+        System.out.println("Command line: [" + cmdLine.toString() + "]");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/CheckArchivedModuleApp.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2018, 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.
+ *
+ */
+
+import java.io.File;
+import java.lang.module.ModuleDescriptor;
+import java.util.Set;
+import sun.hotspot.WhiteBox;
+
+//
+// Test archived system module graph when open archive heap objects are mapped:
+//
+public class CheckArchivedModuleApp {
+    static WhiteBox wb;
+    public static void main(String args[]) throws Exception {
+        wb = WhiteBox.getWhiteBox();
+
+        if (!wb.areOpenArchiveHeapObjectsMapped()) {
+            System.out.println("Archived open_archive_heap objects are not mapped.");
+            System.out.println("This may happen during normal operation. Test Skipped.");
+            return;
+        }
+
+        boolean expectArchived = "yes".equals(args[0]);
+        checkModuleDescriptors(expectArchived);
+    }
+
+    private static void checkModuleDescriptors(boolean expectArchived) {
+        Set<Module> modules = ModuleLayer.boot().modules();
+        for (Module m : modules) {
+            ModuleDescriptor md = m.getDescriptor();
+            String name = md.name();
+            if (expectArchived) {
+                if (wb.isShared(md)) {
+                    System.out.println(name + " is archived. Expected.");
+                } else {
+                    throw new RuntimeException(
+                        "FAILED. " + name + " is not archived. Expect archived.");
+                }
+            } else {
+                if (!wb.isShared(md)) {
+                    System.out.println(name + " is not archived. Expected.");
+                } else {
+                    throw new RuntimeException(
+                        "FAILED. " + name + " is archived. Expect not archived.");
+                }
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/PrintSystemModulesApp.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2018, 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.
+ *
+ */
+
+//
+// Print the system module names
+//
+public class PrintSystemModulesApp {
+    public static void main(String args[]) throws Exception {
+        String modules = ModuleLayer.boot().toString();
+        System.out.println(modules + ", ");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/src/test/jdk/test/Test.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2018, 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.
+ */
+
+package jdk.test;
+
+public class Test {
+    public static void main(String[] args) {
+        ClassLoader scl = ClassLoader.getSystemClassLoader();
+        ClassLoader cl1 = Test.class.getClassLoader();
+        Module testModule = Test.class.getModule();
+        ClassLoader cl2 = ModuleLayer.boot().findLoader(testModule.getName());
+
+        if (cl1 != scl)
+            throw new RuntimeException("Not loaded by system class loader");
+        if (cl2 != scl)
+            throw new RuntimeException("Not associated with system class loader");
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/src/test/module-info.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2014, 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.
+ */
+
+module test {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/classFileParserBug/Class56.jasm	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @bug 8206022
+ * @summary Check that the JVM accepts class files with version 56
+ * @run main Class56
+ */
+
+super public class Class56 version 56:0 {
+
+    public Method "<init>":"()V" stack 1 locals 1 {
+        aload_0;
+        invokespecial    Method java/lang/Object."<init>":"()V";
+        return;
+    }
+
+    public static Method main:"([Ljava/lang/String;)V" stack 0 locals 1 {
+        return;
+    }
+
+} // end Class Class56
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/jni/terminatedThread/TestTerminatedThread.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+import java.lang.management.*;
+
+/*
+ * @test
+ * @bug     8205878 8206954
+ * @requires os.family != "windows" & os.family != "solaris"
+ * @summary Basic test of Thread and ThreadMXBean queries on a natively
+ *          attached thread that has failed to detach before terminating.
+ * @comment The native code only supports POSIX so no windows testing; also
+ *          we have to skip solaris as a terminating thread that fails to
+ *          detach will hit an infinite loop due to TLS destructor issues - see
+ *          comments in JDK-8156708
+ * @run main/othervm/native TestTerminatedThread
+ */
+
+public class TestTerminatedThread {
+
+    static native Thread createTerminatedThread();
+
+    static {
+        System.loadLibrary("terminatedThread");
+    }
+
+    private static ThreadMXBean mbean = ManagementFactory.getThreadMXBean();
+
+    public static void main(String[] args) throws Throwable {
+
+        Thread t = createTerminatedThread();
+
+        if (!t.isAlive())
+            throw new Error("Thread is only supposed to terminate at native layer!");
+
+        // Now invoke the various functions on this thread to
+        // make sure the VM handles it okay. The focus is on
+        // functions with an underlying native OS implementation.
+        // Generally as long as we don't crash or throw unexpected
+        // exceptions then the test passes. In some cases we know exactly
+        // what a function should return and so can check that.
+
+        System.out.println("Working with thread: " + t +
+                           ",  in state: " + t.getState());
+
+        System.out.println("Calling suspend ...");
+        t.suspend();
+        System.out.println("Calling resume ...");
+        t.resume();
+        System.out.println("Calling getStackTrace ...");
+        StackTraceElement[] stack = t.getStackTrace();
+        System.out.println(java.util.Arrays.toString(stack));
+        if (stack.length != 0)
+            throw new Error("Terminated thread should have empty java stack trace");
+        System.out.println("Calling setName(\"NewName\") ...");
+        t.setName("NewName");
+        System.out.println("Calling interrupt ...");
+        t.interrupt();
+        System.out.println("Calling stop ...");
+        t.stop();
+
+        // Now the ThreadMXBean functions
+
+        if (mbean.isThreadCpuTimeSupported() &&
+            mbean.isThreadCpuTimeEnabled() ) {
+            System.out.println("Calling getThreadCpuTime ...");
+            long t1 = mbean.getThreadCpuTime(t.getId());
+            if (t1 != -1) {
+                throw new RuntimeException("Invalid ThreadCpuTime returned = " +
+                                           t1 + " expected = -1");
+            }
+            System.out.println("Okay: getThreadCpuTime() reported -1 as expected");
+        } else {
+            System.out.println("Skipping Thread CPU time test as it's not supported");
+        }
+
+        System.out.println("Calling getThreadUserTime ...");
+        long t1 = mbean.getThreadUserTime(t.getId());
+        if (t1 != -1) {
+            throw new RuntimeException("Invalid ThreadUserTime returned = " +
+                                       t1 + " expected = -1");
+        }
+        System.out.println("Okay: getThreadUserTime() reported -1 as expected");
+
+        System.out.println("Calling getThreadInfo ...");
+        ThreadInfo info = mbean.getThreadInfo(t.getId());
+        System.out.println(info);
+
+        System.out.println("Calling getThreadInfo with stack ...");
+        info = mbean.getThreadInfo(t.getId(), Integer.MAX_VALUE);
+        System.out.println(info);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/jni/terminatedThread/libterminatedThread.c	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <pthread.h>
+#include <string.h>
+
+#include "jni.h"
+#include "jni_util.h"
+
+
+JavaVM* jvm;
+jobject nativeThread;
+
+static void * thread_start(void* unused) {
+  JNIEnv *env;
+  jclass class_id;
+  jmethodID method_id;
+  int res;
+
+  printf("Native thread is running and attaching as daemon ...\n");
+
+  res = (*jvm)->AttachCurrentThreadAsDaemon(jvm, (void **)&env, NULL);
+  if (res != JNI_OK) {
+    fprintf(stderr, "Test ERROR. Can't attach current thread: %d\n", res);
+    exit(1);
+  }
+
+  class_id = (*env)->FindClass (env, "java/lang/Thread");
+  if (class_id == NULL) {
+    fprintf(stderr, "Test ERROR. Can't load class Thread\n");
+    exit(1);
+  }
+
+  method_id = (*env)->GetStaticMethodID(env, class_id, "currentThread",
+                                        "()Ljava/lang/Thread;");
+  if (method_id == NULL) {
+    fprintf(stderr, "Test ERROR. Can't find method currentThread\n");
+    exit(1);
+  }
+
+  nativeThread = (*env)->CallStaticObjectMethod(env, class_id, method_id, NULL);
+
+  if ((*env)->ExceptionOccurred(env) != NULL) {
+    (*env)->ExceptionDescribe(env);
+    exit(1);
+  }
+  printf("Native thread terminating\n");
+
+  return NULL;
+}
+
+JNIEXPORT jobject JNICALL
+Java_TestTerminatedThread_createTerminatedThread
+(JNIEnv *env, jclass cls) {
+  pthread_t thread;
+  int res = (*env)->GetJavaVM(env, &jvm);
+  if (res != JNI_OK) {
+    fprintf(stderr, "Test ERROR. Can't extract JavaVM: %d\n", res);
+    exit(1);
+  }
+
+  if ((res = pthread_create(&thread, NULL, thread_start, NULL)) != 0) {
+    fprintf(stderr, "TEST ERROR: pthread_create failed: %s (%d)\n", strerror(res), res);
+    exit(1);
+  }
+
+  if ((res = pthread_join(thread, NULL)) != 0) {
+    fprintf(stderr, "TEST ERROR: pthread_join failed: %s (%d)\n", strerror(res), res);
+    exit(1);
+  }
+
+  return nativeThread;
+}
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/CheckRead.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/CheckRead.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/DiffCL_CheckRead.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/DiffCL_CheckRead.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/DiffCL_ExpQualOther.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/DiffCL_ExpQualOther.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/DiffCL_ExpQualToM1.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/DiffCL_ExpQualToM1.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/DiffCL_ExpUnqual.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/DiffCL_ExpUnqual.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/DiffCL_PkgNotExp.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/DiffCL_PkgNotExp.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/DiffCL_Umod.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/DiffCL_Umod.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/DiffCL_UmodUpkg.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/DiffCL_UmodUpkg.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/ExpQualOther.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/ExpQualOther.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/ExpQualToM1.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/ExpQualToM1.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/ExpQualToM1PrivateMethodIAE.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/ExpQualToM1PrivateMethodIAE.java	Thu Jul 12 11:09:23 2018 -0700
@@ -4,9 +4,7 @@
  *
  * 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/ExpUnqual.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/ExpUnqual.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/ExportAllUnnamed.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/ExportAllUnnamed.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/PkgNotExp.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/PkgNotExp.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/Umod.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/Umod.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodDiffCL_ExpQualOther.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodDiffCL_ExpQualOther.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodDiffCL_ExpUnqual.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodDiffCL_ExpUnqual.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodDiffCL_PkgNotExp.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodDiffCL_PkgNotExp.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodDiffCL_Umod.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodDiffCL_Umod.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodDiffCL_UmodUpkg.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodDiffCL_UmodUpkg.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodUPkg.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodUPkg.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodUpkgDiffCL_ExpQualOther.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodUpkgDiffCL_ExpQualOther.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodUpkgDiffCL_NotExp.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodUpkgDiffCL_NotExp.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodUpkgDiffCL_Umod.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodUpkgDiffCL_Umod.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodUpkg_ExpQualOther.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodUpkg_ExpQualOther.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodUpkg_NotExp.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodUpkg_NotExp.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodUpkg_Umod.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/UmodUpkg_Umod.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/Umod_ExpQualOther.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/Umod_ExpQualOther.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/Umod_ExpUnqual.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/Umod_ExpUnqual.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/Umod_PkgNotExp.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/Umod_PkgNotExp.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/Umod_UmodUpkg.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/Umod_UmodUpkg.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/p1/c1.jasm	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/p1/c1.jasm	Thu Jul 12 11:09:23 2018 -0700
@@ -4,9 +4,7 @@
  *
  * 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/AccessCheck/p2/c2.jasm	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/AccessCheck/p2/c2.jasm	Thu Jul 12 11:09:23 2018 -0700
@@ -4,9 +4,7 @@
  *
  * 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/ModuleStress/ModuleNonBuiltinCLMain.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/ModuleStress/ModuleNonBuiltinCLMain.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/ModuleStress/ModuleSameCLMain.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/ModuleStress/ModuleSameCLMain.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/runtime/modules/ModuleStress/ModuleStress.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/runtime/modules/ModuleStress/ModuleStress.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,12 +1,10 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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.
+ * 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
--- a/test/hotspot/jtreg/serviceability/sa/ClhsdbPrintStatics.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbPrintStatics.java	Thu Jul 12 11:09:23 2018 -0700
@@ -57,7 +57,7 @@
             expStrMap.put("printstatics", List.of(
                     "All known static fields",
                     "Abstract_VM_Version::_vm_major_version",
-                    "ClassLoaderDataGraph::_head", "SymbolTable::_the_table",
+                    "ClassLoaderDataGraph::_head",
                     "JNIHandles::_weak_global_handles", "PerfMemory::_top",
                     "ObjectSynchronizer::gBlockList",
                     "java_lang_Class::_oop_size_offset",
--- a/test/hotspot/jtreg/serviceability/sa/ClhsdbSource.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbSource.java	Thu Jul 12 11:09:23 2018 -0700
@@ -66,8 +66,7 @@
                     "Available commands:",
                     "attach pid | exec core",
                     "intConstant [ name [ value ] ]",
-                    "type [ type [ name super isOop isInteger isUnsigned size ] ]",
-                    "symboltable name"));
+                    "type [ type [ name super isOop isInteger isUnsigned size ] ]"));
 
             Map<String, List<String>> unExpStrMap = new HashMap<>();
             unExpStrMap.put("source clhsdb_cmd_file", List.of(
--- a/test/hotspot/jtreg/serviceability/sa/ClhsdbSymbol.java	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- */
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import jdk.test.lib.apps.LingeredApp;
-import jdk.test.lib.Platform;
-
-/**
- * @test
- * @bug 8190198
- * @summary Test clhsdb symboldump command
- * @requires vm.hasSA
- * @library /test/lib
- * @run main/othervm ClhsdbSymbol
- */
-
-public class ClhsdbSymbol {
-
-    public static void main(String[] args) throws Exception {
-        System.out.println("Starting ClhsdbSymbol test");
-
-        LingeredApp theApp = null;
-        try {
-            ClhsdbLauncher test = new ClhsdbLauncher();
-            theApp = LingeredApp.startApp();
-            System.out.println("Started LingeredApp with pid " + theApp.getPid());
-
-            List<String> cmds = List.of("symboldump");
-
-            Map<String, List<String>> expStrMap = new HashMap<>();
-            expStrMap.put("symboldump", List.of(
-                    "java/lang/String", "java/util/HashMap",
-                    "Ljava/io/InputStream", "LambdaMetafactory", "PerfCounter",
-                    "isAnonymousClass", "JVMTI_THREAD_STATE_TERMINATED", "jdi",
-                    "checkGetClassLoaderPermission", "lockCreationTime",
-                    "stderrBuffer", "stdoutBuffer", "getProcess",
-                    "LingeredApp"));
-
-            test.run(theApp.getPid(), cmds, expStrMap, null);
-        } catch (Exception ex) {
-            throw new RuntimeException("Test ERROR " + ex, ex);
-        } finally {
-            LingeredApp.stopApp(theApp);
-        }
-        System.out.println("Test PASSED");
-    }
-}
--- a/test/hotspot/jtreg/serviceability/sa/ClhsdbSymbolTable.java	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- */
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.ArrayList;
-import jdk.test.lib.apps.LingeredApp;
-
-/**
- * @test
- * @bug 8191538
- * @summary Test the clhsdb 'symboltable' and 'symbol' commands
- * @requires vm.hasSA
- * @library /test/lib
- * @run main/othervm ClhsdbSymbolTable
- */
-
-public class ClhsdbSymbolTable {
-
-    public static void main(String[] args) throws Exception {
-        System.out.println("Starting the ClhsdbSymbolTable test");
-
-        LingeredApp theApp = null;
-        try {
-            ClhsdbLauncher test = new ClhsdbLauncher();
-
-            theApp = LingeredApp.startApp();
-            System.out.println("Started LingeredApp with pid " + theApp.getPid());
-
-            // Test the symboltable command
-            List<String> cmds = List.of(
-                "symboltable main",
-                "symboltable java/lang/Class",
-                "symboltable java/lang/Object",
-                "symboltable java/lang/String",
-                "symboltable java/util/List",
-                "symboltable jdk/test/lib/apps/LingeredApp");
-
-            Map<String, List<String>> expStrMap = new HashMap<>();
-            expStrMap.put("symboltable main", List.of(
-                "sun.jvm.hotspot.oops.Symbol@"));
-            expStrMap.put("symboltable java/lang/Class", List.of(
-                "sun.jvm.hotspot.oops.Symbol@"));
-            expStrMap.put("symboltable java/lang/Object", List.of(
-                "sun.jvm.hotspot.oops.Symbol@"));
-            expStrMap.put("symboltable java/lang/String", List.of(
-                "sun.jvm.hotspot.oops.Symbol@"));
-            expStrMap.put("symboltable java/util/List", List.of(
-                "sun.jvm.hotspot.oops.Symbol@"));
-            expStrMap.put("symboltable jdk/test/lib/apps/LingeredApp", List.of(
-                "sun.jvm.hotspot.oops.Symbol@"));
-            String consolidatedOutput =
-                test.run(theApp.getPid(), cmds, expStrMap, null);
-
-            // Test the 'symbol' command passing in the address obtained from
-            // the 'symboltable' command
-            expStrMap = new HashMap<>();
-            cmds = new ArrayList<String>();
-            int expectedStringsIdx = 0;
-            String expectedStrings[] = {"#main",
-                                        "#java/lang/Class", "#java/lang/Object",
-                                        "#java/lang/String", "#java/util/List",
-                                        "#jdk/test/lib/apps/LingeredApp"};
-            if (consolidatedOutput != null) {
-                // Output could be null due to attach permission issues
-                // and if we are skipping this.
-                String[] singleCommandOutputs = consolidatedOutput.split("hsdb>");
-
-                for (String singleCommandOutput : singleCommandOutputs) {
-                    if (singleCommandOutput.contains("@")) {
-                        String[] tokens = singleCommandOutput.split("@");
-                        String addressString = tokens[1].replace("\n","");
-
-                        // tokens[1] represents the address of the symbol
-                        String cmd = "symbol " + addressString;
-                        cmds.add(cmd);
-                        expStrMap.put(cmd, List.of
-                            (expectedStrings[expectedStringsIdx++]));
-                    }
-                }
-                test.run(theApp.getPid(), cmds, expStrMap, null);
-            }
-        } catch (Exception ex) {
-            throw new RuntimeException("Test ERROR " + ex, ex);
-        } finally {
-            LingeredApp.stopApp(theApp);
-        }
-        System.out.println("Test PASSED");
-    }
-}
--- a/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/ByteCodeGenerator.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/ByteCodeGenerator.java	Thu Jul 12 11:09:23 2018 -0700
@@ -23,14 +23,14 @@
 
 package jdk.test.lib.jittester;
 
-import java.io.FileOutputStream;
+import jdk.test.lib.jittester.visitors.ByteCodeVisitor;
+
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.StandardOpenOption;
 import java.util.function.Function;
-import jdk.test.lib.jittester.visitors.ByteCodeVisitor;
 
 /**
  * Generates class files from IRTree
@@ -88,8 +88,8 @@
     }
 
     private void writeFile(String fileName, byte[] bytecode) {
-        try (FileOutputStream file = new FileOutputStream(generatorDir.resolve(fileName).toFile())) {
-            file.write(bytecode);
+        try {
+            Files.write(generatorDir.resolve(fileName), bytecode);
         } catch (IOException ex) {
             ex.printStackTrace();
         }
--- a/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/JavaCodeGenerator.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/JavaCodeGenerator.java	Thu Jul 12 11:09:23 2018 -0700
@@ -23,7 +23,6 @@
 
 package jdk.test.lib.jittester;
 
-import java.io.File;
 import java.io.IOException;
 import java.util.function.Function;
 import jdk.test.lib.jittester.visitors.JavaCodeVisitor;
@@ -65,7 +64,9 @@
     }
 
     private void compileJavaFile(String mainClassName) {
-        String classPath = getRoot() + File.pathSeparator + generatorDir;
+        String classPath = getRoot().resolve(generatorDir)
+                                    .toAbsolutePath()
+                                    .toString();
         ProcessBuilder pb = new ProcessBuilder(JAVAC, "-cp", classPath,
                 generatorDir.resolve(mainClassName + ".java").toString());
         try {
--- a/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/TestsGenerator.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/TestsGenerator.java	Thu Jul 12 11:09:23 2018 -0700
@@ -58,7 +58,9 @@
     }
 
     protected void generateGoldenOut(String mainClassName) {
-        String classPath = getRoot() + File.pathSeparator + generatorDir;
+        String classPath = getRoot().resolve(generatorDir)
+                                    .toAbsolutePath()
+                                    .toString();
         ProcessBuilder pb = new ProcessBuilder(JAVA, "-Xint", DISABLE_WARNINGS, "-Xverify",
                 "-cp", classPath, mainClassName);
         String goldFile = mainClassName + ".gold";
@@ -182,7 +184,10 @@
         for (String name : env) {
             String path = System.getenv(name);
             if (path != null) {
-                return path + "/bin/";
+                return Paths.get(path)
+                            .resolve("bin")
+                            .toAbsolutePath()
+                            .toString();
             }
         }
         return "";
--- a/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/TypesParser.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/TypesParser.java	Thu Jul 12 11:09:23 2018 -0700
@@ -31,6 +31,7 @@
 import java.lang.reflect.Modifier;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -207,7 +208,7 @@
         Asserts.assertNotNull(klassesFileName, "Classes input file name is null");
         Asserts.assertFalse(klassesFileName.isEmpty(), "Classes input file name is empty");
         List<String> klassNamesList = new ArrayList<>();
-        Path klassesFilePath = (new File(klassesFileName)).toPath();
+        Path klassesFilePath = Paths.get(klassesFileName);
         try {
             Files.lines(klassesFilePath).forEach(line -> {
                 line = line.trim();
@@ -223,7 +224,7 @@
             throw new Error("Error reading klasses file", ex);
         }
         List<Class<?>> klassesList = new ArrayList<>();
-        klassNamesList.stream().forEach(klassName -> {
+        klassNamesList.forEach(klassName -> {
             try {
                 klassesList.add(Class.forName(klassName));
             } catch (ClassNotFoundException ex) {
@@ -237,7 +238,7 @@
         Asserts.assertNotNull(methodsFileName, "Methods exclude input file name is null");
         Asserts.assertFalse(methodsFileName.isEmpty(), "Methods exclude input file name is empty");
         LinkedList<String> methodNamesList = new LinkedList<>();
-        Path klassesFilePath = (new File(methodsFileName)).toPath();
+        Path klassesFilePath = Paths.get(methodsFileName);
         try {
             Files.lines(klassesFilePath).forEach(line -> {
                 line = line.trim();
@@ -253,7 +254,7 @@
             throw new Error("Error reading exclude method file", ex);
         }
         Set<Executable> methodsList = new HashSet<>();
-        methodNamesList.stream().forEach(methodName -> {
+        methodNamesList.forEach(methodName -> {
             String[] klassAndNameAndSig = methodName.split("::");
             String klassName = klassAndNameAndSig[0].replaceAll("/", "\\.");
             String[] nameAndSig = klassAndNameAndSig[1].split("[\\(\\)]");
--- a/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/jtreg/JitTesterDriver.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/jtreg/JitTesterDriver.java	Thu Jul 12 11:09:23 2018 -0700
@@ -24,15 +24,15 @@
 package jdk.test.lib.jittester.jtreg;
 
 import jdk.test.lib.Asserts;
+import jdk.test.lib.Utils;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
-import jdk.test.lib.Utils;
+
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Arrays;
-import java.util.function.Predicate;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
--- a/test/hotspot/jtreg/vmTestbase/nsk/jvmti/AttachOnDemand/attach024/TestDescription.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jvmti/AttachOnDemand/attach024/TestDescription.java	Thu Jul 12 11:09:23 2018 -0700
@@ -35,8 +35,8 @@
  *     agent starts new thread from the 'agentmain' method, and all test checks are executed
  *     in this thread.
  *     Test checks that agent's JAR file is appended at the end of the system class path.
- *     Agent's JAR file contains modified class java.util.ServiceConfigurationError (it is assumed
- *     that this class isn't loaded before agent is loaded), agent instantiates ServiceConfigurationError
+ *     Agent's JAR file contains modified class java.util.TooManyListenersException (it is assumed
+ *     that this class isn't loaded before agent is loaded), agent instantiates TooManyListenersException
  *     and checks that non-modified version of this class was loaded from rt.jar (not from agent's JAR).
  *
  * @library /vmTestbase
@@ -46,7 +46,7 @@
  *        nsk.share.aod.TargetApplicationWaitingAgents
  *        nsk.jvmti.AttachOnDemand.attach024.attach024Agent00
  *
- * @comment compile modified java.util.ServiceConfigurationError
+ * @comment compile modified java.util.TooManyListenersException
  * @build ExecDriver
  * @run driver PropertyResolvingWrapper ExecDriver --cmd
  *      ${compile.jdk}/bin/javac
@@ -54,14 +54,14 @@
  *      -d ./bin/classes
  *      --patch-module java.base=${test.src}/java.base
  *      --add-reads java.base=ALL-UNNAMED
- *      ${test.src}/java.base/java/util/ServiceConfigurationError.java
+ *      ${test.src}/java.base/java/util/TooManyListenersException.java
  *
  * @comment create attach024Agent00.jar in current directory
  * @run driver PropertyResolvingWrapper ExecDriver --cmd
  *      ${compile.jdk}/bin/jar
  *      -cfm attach024Agent00.jar ${test.src}/attach024Agent00.mf
  *      -C ./bin/classes
- *      java/util/ServiceConfigurationError.class
+ *      java/util/TooManyListenersException.class
  * @run driver ClassFileInstaller
  *      nsk.jvmti.AttachOnDemand.attach024.attach024Agent00
  * @run driver PropertyResolvingWrapper ExecDriver --cmd
--- a/test/hotspot/jtreg/vmTestbase/nsk/jvmti/AttachOnDemand/attach024/attach024Agent00.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jvmti/AttachOnDemand/attach024/attach024Agent00.java	Thu Jul 12 11:09:23 2018 -0700
@@ -30,27 +30,27 @@
 
     public static final String MODIFIED_TO_STRING = "attach024: Modified version";
 
-    private static final String TESTED_CLASS_NAME = "java.util.ServiceConfigurationError";
+    private static final String TESTED_CLASS_NAME = "java.util.TooManyListenersException";
 
     protected void agentActions() {
         /*
-         * Check that ServiceConfigurationError isn't loaded, otherwise test checks
+         * Check that TooManyListenersException isn't loaded, otherwise test checks
          * doesn't make sense
          */
         for (Class<?> klass : inst.getAllLoadedClasses()) {
             if (klass.getName().equals(TESTED_CLASS_NAME)) {
-                throw new TestBug("ServiceConfigurationError already loaded");
+                throw new TestBug("TooManyListenersException already loaded");
             }
         }
 
-        checkServiceConfigurationError();
+        checkTooManyListenersException();
     }
 
-    void checkServiceConfigurationError() {
-        java.util.ServiceConfigurationError e = new java.util.ServiceConfigurationError("Test");
-        display("ServiceConfigurationError.toString(): " + e.toString());
+    void checkTooManyListenersException() {
+        java.util.TooManyListenersException e = new java.util.TooManyListenersException("Test");
+        display("TooManyListenersException.toString(): " + e.toString());
         if (e.toString().equals(MODIFIED_TO_STRING)) {
-            setStatusFailed("Class ServiceConfigurationError was erroneously loaded from agent's jar");
+            setStatusFailed("Class TooManyListenersException was erroneously loaded from agent's jar");
         }
     }
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/jvmti/AttachOnDemand/attach024/java.base/java/util/ServiceConfigurationError.java	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2008, 2018, 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.
- */
-package java.util;
-
-import nsk.jvmti.AttachOnDemand.attach024.*;
-
-public class ServiceConfigurationError extends Error {
-    private static final long serialVersionUID = 74132770414881L;
-
-    public ServiceConfigurationError(String msg) {
-        super(msg);
-    }
-
-    public ServiceConfigurationError(String msg, Throwable cause) {
-        super(msg, cause);
-    }
-
-    public String toString() {
-        return attach024Agent00.MODIFIED_TO_STRING;
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jvmti/AttachOnDemand/attach024/java.base/java/util/TooManyListenersException.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 1996, 2018, 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.
+ */
+
+package java.util;
+
+import nsk.jvmti.AttachOnDemand.attach024.*;
+
+/**
+ * <p>
+ * The <code> TooManyListenersException </code> Exception is used as part of
+ * the Java Event model to annotate and implement a unicast special case of
+ * a multicast Event Source.
+ * </p>
+ * <p>
+ * The presence of a "throws TooManyListenersException" clause on any given
+ * concrete implementation of the normally multicast "void addXyzEventListener"
+ * event listener registration pattern is used to annotate that interface as
+ * implementing a unicast Listener special case, that is, that one and only
+ * one Listener may be registered on the particular event listener source
+ * concurrently.
+ * </p>
+ *
+ * @see java.util.EventObject
+ * @see java.util.EventListener
+ *
+ * @author Laurence P. G. Cable
+ * @since  1.1
+ */
+
+public class TooManyListenersException extends Exception {
+    private static final long serialVersionUID = 5074640544770687831L;
+
+    /**
+     * Constructs a TooManyListenersException with no detail message.
+     * A detail message is a String that describes this particular exception.
+     */
+
+    public TooManyListenersException() {
+        super();
+    }
+
+    /**
+     * Constructs a TooManyListenersException with the specified detail message.
+     * A detail message is a String that describes this particular exception.
+     * @param s the detail message
+     */
+
+    public TooManyListenersException(String s) {
+        super(s);
+    }
+
+    public String toString() {
+        return attach024Agent00.MODIFIED_TO_STRING;
+    }
+}
--- a/test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/jni_interception/JI05/ji05t001/ji05t001.c	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/jni_interception/JI05/ji05t001/ji05t001.c	Thu Jul 12 11:09:23 2018 -0700
@@ -333,8 +333,11 @@
     checkIntercept(1, 0, 1); /* expected interceptions: 1 */
     NSK_DISPLAY0("\n<<< TEST CASE #4) done\n");
 
-    NSK_DISPLAY1("\nagent A: returning exit code %d\n",
+    NSK_DISPLAY1("\nagent A: detaching and returning exit code %d\n",
         exitCode);
+    if ((res = JNI_ENV_PTR(vm)->DetachCurrentThread(JNI_ENV_ARG1(vm))) != 0) {
+        NSK_COMPLAIN1("TEST WARNING: agent A: DetachCurrentThread() returns: %d\n", res);
+    }
     return exitCode;
 }
 
@@ -393,8 +396,11 @@
 
     redir[1] = 1;
 
-    NSK_DISPLAY1("\nagent B: returning exit code %d\n",
+    NSK_DISPLAY1("\nagent B: detaching and returning exit code %d\n",
         exitCode);
+    if ((res = JNI_ENV_PTR(vm)->DetachCurrentThread(JNI_ENV_ARG1(vm))) != 0) {
+        NSK_COMPLAIN1("TEST WARNING: agent B: DetachCurrentThread() returns: %d\n", res);
+    }
     return exitCode;
 }
 /*********************/
--- a/test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/jni_interception/JI06/ji06t001/ji06t001.c	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/jni_interception/JI06/ji06t001/ji06t001.c	Thu Jul 12 11:09:23 2018 -0700
@@ -62,6 +62,18 @@
 #define TRIES 30
 #define MAX_THREADS 5
 
+// Helper for thread detach and terminate
+#define THREAD_return(status) \
+  do { \
+      int res = JNI_ENV_PTR(vm)->DetachCurrentThread(JNI_ENV_ARG1(vm)); \
+      if (res != 0) \
+          NSK_COMPLAIN1("TEST WARNING: DetachCurrentThread() returns: %d\n", res); \
+      else \
+          NSK_DISPLAY0("Detaching thread ...\n"); \
+      return status; \
+  } while (0)
+
+
 static const char *javaField = "_ji06t001a";
 static const char *classSig =
     "Lnsk/jvmti/scenarios/jni_interception/JI06/ji06t001a;";
@@ -225,16 +237,16 @@
     thrStarted[indx-1] = 1; /* the thread is started */
 
     if (enterMonitor(env, "waitingThread") == STATUS_FAILED)
-        return STATUS_FAILED;
+        THREAD_return(STATUS_FAILED);
     if (verbose)
         printf("waitingThread: thread #%d entered the monitor\n",
             indx);
     if (exitMonitor(env, "waitingThread") == STATUS_FAILED)
-        return STATUS_FAILED;
+        THREAD_return(STATUS_FAILED);
 
     NSK_DISPLAY2("waitingThread: thread #%d exits the monitor\n\treturning %d\n",
         indx, exitCode);
-    return exitCode;
+    THREAD_return(exitCode);
 }
 
 static int ownerThread(void *context) {
@@ -254,7 +266,7 @@
 
     NSK_DISPLAY0("ownerThread: trying to enter the monitor ...\n");
     if (enterMonitor(env, "ownerThread") == STATUS_FAILED)
-        return STATUS_FAILED;
+        THREAD_return(STATUS_FAILED);
 
     monEntered = 1; /* the monitor has been entered */
     NSK_DISPLAY1("ownerThread: entered the monitor: monEntered=%d\n\
@@ -272,12 +284,12 @@
     } while(releaseMon != 1);
 
     if (exitMonitor(env, "ownerThread") == STATUS_FAILED)
-        return STATUS_FAILED;
+        THREAD_return(STATUS_FAILED);
 
     NSK_DISPLAY1("ownerThread: exits the monitor\n\treturning %d\n",
         exitCode);
 
-    return exitCode;
+    THREAD_return(exitCode);
 }
 
 static int redirectorThread(void *context) {
@@ -301,7 +313,7 @@
     NSK_DISPLAY1("redirectorThread: the MonitorEnter() redirected\n\treturning %d\n",
         exitCode);
 
-    return exitCode;
+    THREAD_return(exitCode);
 }
 /*********************/
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/EventTestTemplates.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/EventTestTemplates.java	Thu Jul 12 11:09:23 2018 -0700
@@ -139,7 +139,7 @@
 
         // can't control events from system libraries, so save events only from nsk packages
         protected boolean shouldSaveEvent(Event event) {
-            return isEventFromNSK(event);
+            return isEventFromNSK(event, debuggee);
         }
 
         protected String debuggeeClassName() {
@@ -415,7 +415,7 @@
 
         // can't control events from system libraries, so save events only from nsk packages
         protected boolean shouldSaveEvent(Event event) {
-            return isEventFromNSK(event);
+            return isEventFromNSK(event, debuggee);
         }
 
         protected String debuggeeClassName() {
@@ -436,20 +436,25 @@
         }
     }
 
-    static public boolean isEventFromNSK(Event event) {
-        if (event instanceof MonitorContendedEnterEvent) {
-            return ((MonitorContendedEnterEvent) event).location() != null && ((MonitorContendedEnterEvent) event).monitor().type().name().startsWith("nsk.");
-        }
-        if (event instanceof MonitorContendedEnteredEvent) {
-            return ((MonitorContendedEnteredEvent) event).location() != null  && ((MonitorContendedEnteredEvent) event).monitor().type().name().startsWith("nsk.");
+    static public boolean isEventFromNSK(Event event, Debugee debuggee) {
+        try {
+            if (event instanceof MonitorContendedEnterEvent) {
+                return ((MonitorContendedEnterEvent) event).location() != null && ((MonitorContendedEnterEvent) event).monitor().type().name().startsWith("nsk.");
+            }
+            if (event instanceof MonitorContendedEnteredEvent) {
+                return ((MonitorContendedEnteredEvent) event).location() != null && ((MonitorContendedEnteredEvent) event).monitor().type().name().startsWith("nsk.");
+            }
+            if (event instanceof MonitorWaitEvent) {
+                return ((MonitorWaitEvent) event).monitor().type().name().startsWith("nsk.");
+            }
+            if (event instanceof MonitorWaitedEvent) {
+                return ((MonitorWaitedEvent) event).monitor().type().name().startsWith("nsk.");
+            }
+        } catch (ObjectCollectedException ex) {
+            // The monitor object the event refers to might be already collected. Ignore this exception.
+            debuggee.getLog().display("Exception caught:" + ex);
+            return false;
         }
-        if (event instanceof MonitorWaitEvent) {
-            return ((MonitorWaitEvent) event).monitor().type().name().startsWith("nsk.");
-        }
-        if (event instanceof MonitorWaitedEvent) {
-            return ((MonitorWaitedEvent) event).monitor().type().name().startsWith("nsk.");
-        }
-
         // don't filter other events
         return true;
     }
--- a/test/hotspot/jtreg/vmTestbase/vm/mlvm/tools/Indify.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/hotspot/jtreg/vmTestbase/vm/mlvm/tools/Indify.java	Thu Jul 12 11:09:23 2018 -0700
@@ -4,9 +4,7 @@
  *
  * 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.
+ * 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
--- a/test/jaxp/javax/xml/jaxp/unittest/datatype/DurationTest.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jaxp/javax/xml/jaxp/unittest/datatype/DurationTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -39,11 +39,13 @@
 import org.testng.Assert;
 import org.testng.AssertJUnit;
 import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.DataProvider;
 import org.testng.annotations.Listeners;
 import org.testng.annotations.Test;
 
 /*
  * @test
+ * @bug 8190835
  * @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest
  * @run testng/othervm -DrunSecMngr=true datatype.DurationTest
  * @run testng/othervm datatype.DurationTest
@@ -66,6 +68,61 @@
         }
     }
 
+    /*
+       DataProvider: for testDurationSubtract1
+       Data: minuend, subtrahend, expected result
+     */
+    @DataProvider(name = "DurationSubtract1")
+    public Object[][] getSubtract1() {
+
+        return new Object[][]{
+            {"P2Y2M", "P1Y5M", "P9M"},
+            {"P2DT2H", "P1DT12H", "PT14H"},
+            {"P2DT2H10M", "P1DT2H25M", "PT23H45M"},
+            {"PT2H10M", "PT1H25M", "PT45M"},
+            {"PT2H10M20S", "PT1H25M35S", "PT44M45S"},
+            {"PT2H10M20.25S", "PT1H25M35.45S", "PT44M44.8S"},
+            // 8190835 test case
+            {"PT2M3.123S", "PT1M10.123S", "PT53S"}
+        };
+    }
+
+    @DataProvider(name = "DurationSubtract2")
+    public Object[][] getSubtract2() {
+
+        return new Object[][]{
+            {"P2Y20D", "P1Y125D"},
+            {"P2M20D", "P1M25D"}
+        };
+    }
+
+    /*
+     * Verifies valid substraction operations.
+     */
+    @Test(dataProvider = "DurationSubtract1")
+    public void testDurationSubtract1(String t1, String t2, String e) throws Exception {
+        DatatypeFactory factory = DatatypeFactory.newInstance();
+        Duration dt1 = factory.newDuration(t1);
+        Duration dt2 = factory.newDuration(t2);
+
+        Duration result = dt1.subtract(dt2);
+        Duration expected = factory.newDuration(e);
+        Assert.assertTrue(result.equals(expected), "The result should be " + e);
+
+    }
+
+    /*
+     * Verifies invalid substraction operations. These operations are invalid
+     * since days in a month are indeterminate.
+    */
+    @Test(dataProvider = "DurationSubtract2", expectedExceptions = IllegalStateException.class)
+    public void testDurationSubtract2(String t1, String t2) throws Exception {
+        DatatypeFactory factory = DatatypeFactory.newInstance();
+        Duration dt1 = factory.newDuration(t1);
+        Duration dt2 = factory.newDuration(t2);
+        Duration result = dt1.subtract(dt2);
+    }
+
     @Test
     public void testDurationSubtract() {
         try {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jaxp/javax/xml/jaxp/unittest/stream/XMLEventReaderTest/EventReaderTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+package stream.XMLEventReaderTest;
+
+import java.io.StringReader;
+import java.util.NoSuchElementException;
+import javax.xml.stream.XMLEventReader;
+
+import javax.xml.stream.XMLInputFactory;
+import org.testng.annotations.Listeners;
+import org.testng.annotations.Test;
+
+/*
+ * @test
+ * @bug 8204329
+ * @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest
+ * @run testng stream.XMLEventReaderTest.EventReaderTest
+ * @summary Tests XMLEventReader
+ */
+@Listeners({jaxp.library.BasePolicy.class})
+public class EventReaderTest {
+    @Test(expectedExceptions = NoSuchElementException.class)
+    public void testNextEvent() throws Exception {
+        XMLEventReader eventReader = XMLInputFactory.newFactory().createXMLEventReader(
+                new StringReader("<?xml version='1.0'?><foo/>"));
+
+        while (eventReader.hasNext()) {
+            eventReader.nextEvent();
+        }
+        // no more event
+        eventReader.nextEvent();
+    }
+}
--- a/test/jaxp/javax/xml/jaxp/unittest/stream/XMLStreamReaderTest/StreamReaderTest.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jaxp/javax/xml/jaxp/unittest/stream/XMLStreamReaderTest/StreamReaderTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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
@@ -20,9 +20,10 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
-
 package stream.XMLStreamReaderTest;
 
+import java.io.StringReader;
+import java.util.NoSuchElementException;
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.XMLStreamReader;
@@ -34,7 +35,7 @@
 
 /*
  * @test
- * @bug 8167340
+ * @bug 8167340 8204329
  * @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest
  * @run testng/othervm -DrunSecMngr=true stream.XMLStreamReaderTest.StreamReaderTest
  * @run testng/othervm stream.XMLStreamReaderTest.StreamReaderTest
@@ -42,6 +43,20 @@
  */
 @Listeners({jaxp.library.FilePolicy.class})
 public class StreamReaderTest {
+    @Test(expectedExceptions = NoSuchElementException.class)
+    public void testNext() throws Exception {
+        XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
+        XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(
+                new StringReader("<?xml version='1.0'?><foo/>"));
+
+        while (xmlStreamReader.hasNext()) {
+            int event = xmlStreamReader.next();
+        }
+        // no more event
+        xmlStreamReader.next();
+    }
+
+
     /**
      * Verifies that after switching to a different XML Version (1.1), the parser
      * is initialized properly (the listener was not registered in this case).
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jaxp/javax/xml/jaxp/unittest/transform/SAXTFactoryTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+package transform;
+
+import java.util.Properties;
+import javax.xml.transform.Templates;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXTransformerFactory;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+import org.xml.sax.XMLFilter;
+
+/*
+ * @test
+ * @bug 8206164
+ * @modules java.xml
+ * @run testng transform.SAXTFactoryTest
+ * @summary Tests SAXTransformerFactory.
+ */
+public class SAXTFactoryTest {
+
+    /*
+     * Verifies that the default ErrorListener throws a TransformerException
+     * when a fatal error is encountered. It is then wrapped and thrown again in
+     * a TransformerConfigurationException.
+    */
+    @Test
+    public void testErrorListener() throws Exception {
+        try {
+            SAXTransformerFactory saxTFactory =
+                    (SAXTransformerFactory)TransformerFactory.newInstance();
+            XMLFilter filter = saxTFactory.newXMLFilter(new ATemplatesImpl());
+        } catch (TransformerConfigurationException tce) {
+            Throwable cause = tce.getCause();
+            Assert.assertTrue((cause != null && cause instanceof TransformerException),
+                    "The TransformerFactoryImpl terminates upon a fatal error "
+                            + "by throwing a TransformerException.");
+        }
+
+    }
+
+    class ATemplatesImpl implements Templates {
+
+        @Override
+        public Transformer newTransformer() throws TransformerConfigurationException {
+            throw new TransformerConfigurationException("TCE from ATemplatesImpl");
+        }
+
+        @Override
+        public Properties getOutputProperties() {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+    }
+}
--- a/test/jdk/ProblemList.txt	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/ProblemList.txt	Thu Jul 12 11:09:23 2018 -0700
@@ -128,7 +128,7 @@
 java/awt/dnd/BadSerializaionTest/BadSerializationTest.java 8039082 generic-all
 java/awt/dnd/MissingEventsOnModalDialog/MissingEventsOnModalDialogTest.java 8164464 linux-all,macosx-all
 java/awt/dnd/URIListBetweenJVMsTest/URIListBetweenJVMsTest.html 8171510 macosx-all
-java/awt/dnd/7171812/bug7171812.java 8041447 macosx-all
+javax/swing/dnd/7171812/bug7171812.java 8041447 macosx-all
 java/awt/Focus/ChoiceFocus/ChoiceFocus.java 8169103 windows-all,macosx-all
 java/awt/Focus/ClearLwQueueBreakTest/ClearLwQueueBreakTest.java 8198618 macosx-all
 java/awt/Focus/ConsumeNextKeyTypedOnModalShowTest/ConsumeNextKeyTypedOnModalShowTest.java 6986252 macosx-all
@@ -196,7 +196,6 @@
 java/awt/TrayIcon/ActionEventTest/ActionEventTest.java 8150540 windows-all
 java/awt/TrayIcon/ModalityTest/ModalityTest.java 8150540 windows-all,macosx-all
 java/awt/TrayIcon/MouseEventMask/MouseEventMaskTest.java 8150540 windows-all
-java/awt/TrayIcon/MouseEventMask/MouseEventMovedTest.java 8150540 windows-all
 java/awt/TrayIcon/MouseMovedTest/MouseMovedTest.java 8150540 windows-all
 java/awt/TrayIcon/SecurityCheck/FunctionalityCheck/FunctionalityCheck.java 8150540 windows-all
 java/awt/TrayIcon/TrayIconEventModifiers/TrayIconEventModifiersTest.java 8150540 windows-all
@@ -244,7 +243,6 @@
 sun/java2d/SunGraphics2D/SourceClippingBlitTest/SourceClippingBlitTest.java 8196185 generic-all
 sun/java2d/pipe/InterpolationQualityTest.java 8171303 windows-all,linux-all,macosx-all
 java/awt/FullScreen/DisplayChangeVITest/DisplayChangeVITest.java 8169469 windows-all
-java/awt/Graphics/ClippedCopyAreaTest/ClippedCopyAreaTest.java 8196436 linux-all
 java/awt/Graphics2D/DrawString/DrawRotatedStringUsingRotatedFont.java 8197796 generic-all
 java/awt/TextArea/TextAreaScrolling/TextAreaScrolling.java 8196300 windows-all
 java/awt/print/PrinterJob/Margins.java 8196301 windows-all
@@ -399,8 +397,6 @@
 java/awt/Mouse/EnterExitEvents/FullscreenEnterEventTest.java 8051455 macosx-all
 java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Standard.java 7124407 macosx-all
 java/awt/Mouse/RemovedComponentMouseListener/RemovedComponentMouseListener.java 8157170 macosx-all
-java/awt/Focus/ForwardingFocusToProxyMotifTest/ForwardingFocusToProxyMotifTest.java 8196436 linux-all
-java/awt/Window/OverrideRedirectRemoved/ChildWindowProblem.java 8196438 linux-all
 java/awt/Modal/ToBack/ToBackAppModal1Test.java 8196441 linux-all,macosx-all
 java/awt/Modal/ToBack/ToBackAppModal2Test.java 8196441 linux-all,macosx-all
 java/awt/Modal/ToBack/ToBackAppModal3Test.java 8196441 linux-all,macosx-all
@@ -475,8 +471,6 @@
 java/awt/Focus/WindowUpdateFocusabilityTest/WindowUpdateFocusabilityTest.html 8202926 linux-all
 java/awt/datatransfer/ConstructFlavoredObjectTest/ConstructFlavoredObjectTest.java 8202860 linux-all
 java/awt/dnd/DisposeFrameOnDragCrash/DisposeFrameOnDragTest.java 8202790 macosx-all,linux-all
-java/awt/Clipboard/NoDataConversionFailureTest/NoDataConversionFailureTest.html 8202791 macosx-all
-java/awt/Clipboard/ImageTransferTest/ImageTransferTest.html 8202792 macosx-all
 java/awt/FileDialog/FilenameFilterTest/FilenameFilterTest.html 8202882 linux-all
 java/awt/MenuBar/8007006/bug8007006.java 8202886 macosx-all
 java/awt/Frame/FramesGC/FramesGC.java 8079069 macosx-all
@@ -540,9 +534,6 @@
 com/sun/management/OperatingSystemMXBean/GetProcessCpuLoad.java 8030957 aix-all
 com/sun/management/OperatingSystemMXBean/GetSystemCpuLoad.java  8030957 aix-all
 
-sun/management/jmxremote/bootstrap/RmiSslBootstrapTest.sh       8205653 generic-all
-sun/management/jmxremote/bootstrap/RmiRegistrySslTest.java      8205653 generic-all
-
 ############################################################################
 
 # jdk_jmx
@@ -611,7 +602,6 @@
 javax/net/ssl/DTLS/RespondToRetransmit.java                     8169086 macosx-x64
 javax/net/ssl/DTLS/CipherSuite.java                             8202059 macosx-x64
 
-sun/security/krb5/auto/UnboundSSL.java                          8180265 windows-all
 sun/security/provider/KeyStore/DKSTest.sh                       8180266 windows-all
 
 sun/security/pkcs11/Cipher/ReinitCipher.java                    8204203 windows-all
@@ -717,7 +707,6 @@
 javax/swing/JSplitPane/4201995/bug4201995.java 8079127 generic-all
 javax/swing/JTree/DnD/LastNodeLowerHalfDrop.java 8159131 linux-all
 javax/swing/JTree/4633594/JTreeFocusTest.java 8173125 macosx-all
-javax/swing/JTree/8003400/Test8003401.java 8011259 macosx-all,linux-all
 javax/swing/JFileChooser/8041694/bug8041694.java 8196302 windows-all
 javax/swing/AbstractButton/6711682/bug6711682.java 8060765 windows-all,macosx-all
 javax/swing/Action/8133039/bug8133039.java 8196089 windows-all,macosx-all
@@ -798,7 +787,7 @@
 javax/swing/PopupFactory/8048506/bug8048506.java 8202660 windows-all
 javax/swing/JTextArea/TextViewOOM/TextViewOOM.java 8167355 generic-all
 javax/swing/JEditorPane/8195095/ImageViewTest.java 8202656 windows-all
-javax/swing/text/Utilities/8142966/SwingFontMetricsTest.java 8202663 windows-all
+javax/swing/text/Utilities/8142966/SwingFontMetricsTest.java 8199529 windows-all
 javax/swing/JPopupMenu/8075063/ContextMenuScrollTest.java 202880 linux-all
 javax/swing/dnd/8139050/NativeErrorsInTableDnD.java 8202765  macosx-all,linux-all
 javax/swing/Popup/TaskbarPositionTest.java 8065097 macosx-all,linux-all
@@ -819,9 +808,7 @@
 # core_tools
 
 tools/pack200/CommandLineTests.java                             8059906 generic-all
-
-tools/jimage/JImageExtractTest.java                             8198405,8198819 generic-all
-tools/jimage/JImageListTest.java                                8198405 windows-all
+tools/jimage/JImageListTest.java                                8206445 windows-all
 
 ############################################################################
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/crypto/provider/Cipher/ChaCha20/unittest/ChaCha20CipherUnitTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,252 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @bug 8153029
+ * @library /test/lib
+ * @run main ChaCha20CipherUnitTest
+ * @summary Unit test for com.sun.crypto.provider.ChaCha20Cipher.
+ */
+
+import java.nio.ByteBuffer;
+import java.security.AlgorithmParameters;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.util.Arrays;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.ChaCha20ParameterSpec;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
+import jdk.test.lib.Utils;
+
+public class ChaCha20CipherUnitTest {
+
+    private static final byte[] NONCE
+            = Utils.toByteArray("012345670123456701234567");
+    private static final SecretKeySpec KEY = new SecretKeySpec(
+            Utils.toByteArray(
+                    "0123456701234567012345670123456701234567012345670123456701234567"),
+            "ChaCha20");
+    private static final ChaCha20ParameterSpec CHACHA20_PARAM_SPEC
+            = new ChaCha20ParameterSpec(NONCE, 0);
+    private static final IvParameterSpec IV_PARAM_SPEC
+            = new IvParameterSpec(NONCE);
+
+    public static void main(String[] args) throws Exception {
+        testTransformations();
+        testInit();
+        testAEAD();
+        testGetBlockSize();
+    }
+
+    private static void testTransformations() throws Exception {
+        System.out.println("== transformations ==");
+
+        checkTransformation("ChaCha20", true);
+        checkTransformation("ChaCha20/None/NoPadding", true);
+        checkTransformation("ChaCha20-Poly1305", true);
+        checkTransformation("ChaCha20-Poly1305/None/NoPadding", true);
+
+        checkTransformation("ChaCha20/ECB/NoPadding", false);
+        checkTransformation("ChaCha20/None/PKCS5Padding", false);
+        checkTransformation("ChaCha20-Poly1305/ECB/NoPadding", false);
+        checkTransformation("ChaCha20-Poly1305/None/PKCS5Padding", false);
+    }
+
+    private static void checkTransformation(String transformation,
+            boolean expected) throws Exception {
+        try {
+            Cipher.getInstance(transformation);
+            if (!expected) {
+                throw new RuntimeException(
+                        "Unexpected transformation: " + transformation);
+            } else {
+                System.out.println("Expected transformation: " + transformation);
+            }
+        } catch (NoSuchAlgorithmException e) {
+            if (!expected) {
+                System.out.println("Unexpected transformation: " + transformation);
+            } else {
+                throw new RuntimeException("Unexpected fail: " + transformation, e);
+            }
+        }
+    }
+
+    private static void testInit() throws Exception {
+        testInitOnCrypt(Cipher.ENCRYPT_MODE);
+        testInitOnCrypt(Cipher.DECRYPT_MODE);
+        testInitOnWrap(Cipher.WRAP_MODE);
+        testInitOnWrap(Cipher.UNWRAP_MODE);
+    }
+
+    private static void testInitOnCrypt(int opMode) throws Exception {
+        System.out.println("== init (" + getOpModeName(opMode) + ") ==");
+
+        Cipher.getInstance("ChaCha20").init(opMode, KEY, CHACHA20_PARAM_SPEC);
+        Cipher.getInstance("ChaCha20").init(opMode, KEY,
+                CHACHA20_PARAM_SPEC, new SecureRandom());
+
+        try {
+            Cipher.getInstance("ChaCha20").init(opMode, KEY, IV_PARAM_SPEC);
+            throw new RuntimeException("ChaCha20ParameterSpec is needed");
+        } catch (InvalidAlgorithmParameterException e) {
+            System.out.println("Expected " + e);
+        }
+
+        Cipher.getInstance("ChaCha20-Poly1305").init(opMode, KEY,
+                IV_PARAM_SPEC);
+        Cipher.getInstance("ChaCha20-Poly1305").init(opMode, KEY,
+                IV_PARAM_SPEC, new SecureRandom());
+
+        try {
+            Cipher.getInstance("ChaCha20-Poly1305").init(opMode, KEY,
+                    CHACHA20_PARAM_SPEC);
+            throw new RuntimeException("IvParameterSpec is needed");
+        } catch (InvalidAlgorithmParameterException e) {
+            System.out.println("Expected " + e);
+        }
+
+        AlgorithmParameters algorithmParameters =
+                AlgorithmParameters.getInstance("ChaCha20-Poly1305");
+        algorithmParameters.init(
+                new byte[] { 4, 12, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8 });
+        try {
+            Cipher.getInstance("ChaCha20").init(opMode, KEY,
+                    algorithmParameters, new SecureRandom());
+            throw new RuntimeException(
+                    "ChaCha20 cipher doesn't accept AlgorithmParameters");
+        } catch (InvalidAlgorithmParameterException e) {
+            System.out.println("Expected " + e);
+        }
+        Cipher.getInstance("ChaCha20-Poly1305").init(opMode, KEY,
+                algorithmParameters, new SecureRandom());
+    }
+
+    private static void testInitOnWrap(int opMode) throws Exception {
+        String opModeName = getOpModeName(opMode);
+        System.out.println("== init (" + opModeName + ") ==");
+
+        Cipher chacha20Cipher = Cipher.getInstance("ChaCha20");
+        try {
+            chacha20Cipher.init(opMode, KEY, new SecureRandom());
+            throw new RuntimeException(
+                    "Unexpected opration mode: " + opModeName);
+        } catch (Exception e) {
+            if (e instanceof UnsupportedOperationException) {
+                System.out.println("Expected " + e);
+            } else {
+                throw new RuntimeException("Unexpected exception: " + e);
+            }
+        }
+    }
+
+    private static void testAEAD() throws Exception {
+        byte[] expectedPlainttext = Utils.toByteArray("01234567");
+        byte[] ciphertext = testUpdateAAD(Cipher.ENCRYPT_MODE, expectedPlainttext);
+        byte[] plaintext = testUpdateAAD(Cipher.DECRYPT_MODE, ciphertext);
+        if (!Arrays.equals(plaintext, expectedPlainttext)) {
+            System.out.println("ciphertext: " + Arrays.toString(ciphertext));
+            System.out.println("plaintext: " + Arrays.toString(plaintext));
+            throw new RuntimeException("AEAD failed");
+        }
+    }
+
+    private static byte[] testUpdateAAD(int opMode, byte[] input)
+            throws Exception {
+        String opModeName = getOpModeName(opMode);
+        System.out.println("== updateAAD (" + opModeName + ") ==");
+
+        byte[] aad = Utils.toByteArray("0000");
+        ByteBuffer aadBuf = ByteBuffer.wrap(aad);
+
+        Cipher cipher = Cipher.getInstance("ChaCha20");
+        cipher.init(opMode, KEY, CHACHA20_PARAM_SPEC);
+        try {
+            cipher.updateAAD(aadBuf);
+            throw new RuntimeException("ChaCha20 cipher cannot apply AAD");
+        } catch (IllegalStateException e) {
+            System.out.println("Expected " + e);
+        }
+
+        Cipher aeadCipher = Cipher.getInstance("ChaCha20-Poly1305");
+        try {
+            aeadCipher.updateAAD(aadBuf);
+            throw new RuntimeException(
+                    "Cannot update AAD on uninitialized Cipher");
+        } catch (IllegalStateException e) {
+            System.out.println("Expected " + e);
+        }
+        aeadCipher.init(opMode, KEY, IV_PARAM_SPEC);
+        aeadCipher.update(input);
+        try {
+            aeadCipher.updateAAD(aad);
+            throw new RuntimeException(
+                    "Cannot update AAD after plaintext/cipertext update");
+        } catch (IllegalStateException e) {
+            System.out.println("Expected " + e);
+        }
+
+        aeadCipher = Cipher.getInstance("ChaCha20-Poly1305");
+        aeadCipher.init(opMode, KEY, IV_PARAM_SPEC);
+        aeadCipher.updateAAD(aadBuf);
+        return aeadCipher.doFinal(input);
+    }
+
+    private static void testGetBlockSize() throws Exception {
+        testGetBlockSize(Cipher.ENCRYPT_MODE);
+        testGetBlockSize(Cipher.DECRYPT_MODE);
+    }
+
+    private static void testGetBlockSize(int opMode) throws Exception {
+        System.out.println("== getBlockSize (" + getOpModeName(opMode) + ") ==");
+
+        Cipher cipher = Cipher.getInstance("ChaCha20");
+        cipher.init(opMode, KEY, CHACHA20_PARAM_SPEC);
+        if (cipher.getBlockSize() != 0) {
+            throw new RuntimeException("Block size must be 0");
+        }
+    }
+
+    private static String getOpModeName(int opMode) {
+        switch (opMode) {
+        case Cipher.ENCRYPT_MODE:
+            return "ENCRYPT";
+
+        case Cipher.DECRYPT_MODE:
+            return "DECRYPT";
+
+        case Cipher.WRAP_MODE:
+            return "WRAP";
+
+        case Cipher.UNWRAP_MODE:
+            return "UNWRAP";
+
+        default:
+            return "";
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/crypto/provider/Cipher/ChaCha20/unittest/ChaCha20Poly1305ParametersUnitTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @bug 8153029
+ * @library /test/lib
+ * @run main ChaCha20Poly1305ParametersUnitTest
+ * @summary Unit test for com.sun.crypto.provider.ChaCha20Poly1305Parameters.
+ */
+
+import java.io.IOException;
+import java.security.AlgorithmParameters;
+import java.security.spec.InvalidParameterSpecException;
+import java.util.Arrays;
+
+import javax.crypto.spec.ChaCha20ParameterSpec;
+import javax.crypto.spec.IvParameterSpec;
+
+public class ChaCha20Poly1305ParametersUnitTest {
+
+    private static final String ALGORITHM = "ChaCha20-Poly1305";
+
+    private static final byte[] NONCE = {
+            0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8 };
+    private static final byte[] PARAM = {
+            4, 12, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8 };
+
+    private static final byte[] BAD_NONCE = {
+            0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+    private static final byte[] BAD_PARAM = {
+            4, 13, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+
+    public static void main(String[] args) throws Exception {
+        testInit();
+        testGetParameterSpec();
+        testGetEncoded();
+    }
+
+    private static void testInit() throws Exception {
+        System.out.println("== init ==");
+
+        AlgorithmParameters ap = AlgorithmParameters.getInstance(ALGORITHM);
+        ap.init(new IvParameterSpec(NONCE));
+        System.out.println("AlgorithmParameters: " + ap);
+
+        ap = AlgorithmParameters.getInstance(ALGORITHM);
+        ap.init(PARAM);
+
+        ap = AlgorithmParameters.getInstance(ALGORITHM);
+        try {
+            ap.init(new ChaCha20ParameterSpec(NONCE, 0));
+            throw new RuntimeException("IvParameterSpec is needed");
+        } catch (InvalidParameterSpecException e) {
+            System.out.println("Expected " + e);
+        }
+
+        ap = AlgorithmParameters.getInstance(ALGORITHM);
+        try {
+            ap.init(new IvParameterSpec(BAD_NONCE));
+            throw new RuntimeException("Nonce must be 96 bits in length");
+        } catch (InvalidParameterSpecException e) {
+            System.out.println("Expected " + e);
+        }
+
+        ap = AlgorithmParameters.getInstance(ALGORITHM);
+        try {
+            ap.init(BAD_PARAM);
+            throw new RuntimeException("Nonce must be 96 bits in length");
+        } catch (IOException e) {
+            System.out.println("Expected " + e);
+        }
+    }
+
+    private static void testGetParameterSpec() throws Exception {
+        System.out.println("== getParameterSpec ==");
+
+        AlgorithmParameters ap = AlgorithmParameters.getInstance(ALGORITHM);
+        ap.init(PARAM);
+
+        IvParameterSpec paramSpec = ap.getParameterSpec(IvParameterSpec.class);
+        byte[] nonce = paramSpec.getIV();
+        System.out.println("Nonce: " + Arrays.toString(nonce));
+        Arrays.equals(nonce, NONCE);
+
+        try {
+            ap.getParameterSpec(ChaCha20ParameterSpec.class);
+            throw new RuntimeException("IvParameterSpec is needed");
+        } catch (InvalidParameterSpecException e) {
+            System.out.println("Expected " + e);
+        }
+    }
+
+    private static void testGetEncoded() throws Exception {
+        System.out.println("== getEncoded ==");
+
+        AlgorithmParameters ap = AlgorithmParameters.getInstance(ALGORITHM);
+        ap.init(PARAM);
+
+        byte[] defaultFormatEncoded = ap.getEncoded();
+        System.out.println("Default format encoding: "
+                + Arrays.toString(defaultFormatEncoded));
+        if (!Arrays.equals(defaultFormatEncoded, PARAM)) {
+            throw new RuntimeException("Default format encoding failed");
+        }
+
+        byte[] asn1FormatEncoded = ap.getEncoded("ASN.1");
+        System.out.println("ASN.1 format encoding: "
+                + Arrays.toString(asn1FormatEncoded));
+        if (!Arrays.equals(asn1FormatEncoded, PARAM)) {
+            throw new RuntimeException("ASN.1 format encoding failed");
+        }
+
+        byte[] nullFormatEncoded = ap.getEncoded(null);
+        System.out.println("Null format encoding: "
+                + Arrays.toString(nullFormatEncoded));
+        if (!Arrays.equals(nullFormatEncoded, PARAM)) {
+            throw new RuntimeException("Null format encoding failed");
+        }
+
+        try {
+            ap.getEncoded("BAD");
+            throw new RuntimeException("Format must be ASN.1");
+        } catch (IOException e) {
+            System.out.println("Expected " + e);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/crypto/provider/Cipher/ChaCha20/unittest/Poly1305UnitTestDriver.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @bug 8153029
+ * @modules java.base/com.sun.crypto.provider
+ * @run main java.base/com.sun.crypto.provider.Poly1305UnitTest
+ * @summary Unit test for com.sun.crypto.provider.Poly1305.
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/crypto/provider/Cipher/ChaCha20/unittest/java.base/com/sun/crypto/provider/Poly1305UnitTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+package com.sun.crypto.provider;
+
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+
+import javax.crypto.spec.SecretKeySpec;
+
+public class Poly1305UnitTest {
+
+    public static void main(String[] args) throws Exception {
+        byte[] key = new byte[] {
+                 28, -110,   64,  -91,  -21,   85,  -45, -118,
+                -13,   51, -120, -122,    4,  -10,  -75,  -16,
+                 71,   57,   23,  -63,   64,   43, -128,    9,
+                -99,  -54,   92,  -68,   32,  112,  117,  -64
+        };
+
+        Poly1305 authenticator = new Poly1305();
+        if (authenticator.engineGetMacLength() != 16) {
+            throw new RuntimeException(
+                    "The length of Poly1305 MAC must be 16-bytes.");
+        }
+
+        authenticator.engineInit(new SecretKeySpec(key, 0, 32,
+                "Poly1305"), null);
+
+        byte[] message = new byte[] {
+                 39,   84,  119,   97,  115,   32,   98,  114,
+                105,  108,  108,  105,  103,   44,   32,   97,
+                110,  100,   32,  116,  104,  101,   32,  115,
+                108,  105,  116,  104,  121,   32,  116,  111,
+                118,  101,  115,   10,   68,  105,  100,   32,
+                103,  121,  114,  101,   32,   97,  110,  100,
+                 32,  103,  105,  109,   98,  108,  101,   32,
+                105,  110,   32,  116,  104,  101,   32,  119,
+                 97,   98,  101,   58,   10,   65,  108,  108,
+                 32,  109,  105,  109,  115,  121,   32,  119,
+                101,  114,  101,   32,  116,  104,  101,   32,
+                 98,  111,  114,  111,  103,  111,  118,  101,
+                115,   44,   10,   65,  110,  100,   32,  116,
+                104,  101,   32,  109,  111,  109,  101,   32,
+                114,   97,  116,  104,  115,   32,  111,  117,
+                116,  103,  114,   97,   98,  101,   46
+        };
+
+        authenticator.engineUpdate(
+                ByteBuffer.wrap(Arrays.copyOfRange(message, 0, 8)));
+        authenticator.engineUpdate(message, 8, 104);
+        authenticator.engineUpdate(message, 112, 7);
+        for (int i = 119; i < message.length; i++) {
+            authenticator.engineUpdate(message[i]);
+        }
+
+        byte[] tag = authenticator.engineDoFinal();
+        byte[] expectedTag = new byte[] {
+                 69,   65,  102, -102,  126,  -86,  -18,   97,
+                -25,    8,  -36,  124,  -68,  -59,  -21,   98
+        };
+        if (!Arrays.equals(tag, expectedTag)) {
+            throw new RuntimeException(
+                    "Unexpected tag: " + Arrays.toString(tag));
+        }
+    }
+}
--- a/test/jdk/com/sun/jdi/RedefineNestmateAttr/TestNestmateAttr.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/com/sun/jdi/RedefineNestmateAttr/TestNestmateAttr.java	Thu Jul 12 11:09:23 2018 -0700
@@ -189,12 +189,14 @@
 
         }
 
+        breakpoint();    // debugger runs to here before enabling events
         allowRedefine(); // debugger stops us here to attempt redefinitions
 
         System.out.println("Target executed okay");
     }
 
-    public static void allowRedefine() { }
+    static void allowRedefine() { }
+    static void breakpoint() { }
 }
 
 public class TestNestmateAttr extends TestScaffold {
@@ -226,7 +228,7 @@
 
     public void runTests() throws Exception {
         // Get Target into debuggable state
-        BreakpointEvent bpe = startToMain("Target");
+        BreakpointEvent bpe = startTo("Target", "breakpoint", "()V");
         EventRequestManager erm = vm().eventRequestManager();
         MethodEntryRequest mee = erm.createMethodEntryRequest();
         mee.addClassFilter("Target");
--- a/test/jdk/com/sun/jndi/dns/Test6991580.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/com/sun/jndi/dns/Test6991580.java	Thu Jul 12 11:09:23 2018 -0700
@@ -33,10 +33,11 @@
 /*
  * @test
  * @bug 6991580 8080108 8133035
- * @requires os.family != "windows"
  * @summary IPv6 Nameservers in resolv.conf throws NumberFormatException
  * @modules java.desktop
  *          jdk.naming.dns/com.sun.jndi.dns
+ * @requires os.family != "windows"
+ * @build IPv6NameserverPlatformParsingTest
  * @run main/manual Test6991580
  */
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/security/auth/UnixPrincipalHashCode.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/**
+ * @test
+ * @bug 8198352
+ * @requires os.family != "windows"
+ * @run main/othervm/policy=uphc.policy
+ *      -Djava.security.auth.login.config=uphc.conf
+ *      UnixPrincipalHashCode
+ * @summary java.util.MissingResourceException: sun.security.util.AuthResources
+ *          when trying to use com.sun.security.auth.module.UnixLoginModule
+ */
+
+import javax.security.auth.Subject;
+import javax.security.auth.login.LoginContext;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.security.PrivilegedAction;
+import java.util.List;
+
+public class UnixPrincipalHashCode {
+    public static void main(java.lang.String[] args) throws Exception {
+        Files.write(Path.of("uphc.conf"), List.of(
+                "entry {",
+                "    com.sun.security.auth.module.UnixLoginModule required;",
+                "};"));
+        LoginContext lc = new LoginContext("entry");
+        lc.login();
+        Subject subject = lc.getSubject();
+        PrivilegedAction action = () -> {
+            System.out.println(subject);
+            return null;
+        };
+        Subject.doAsPrivileged(subject, action, null);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/security/auth/uphc.policy	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,6 @@
+grant {
+   permission java.io.FilePermission "./-", "write";
+   permission javax.security.auth.AuthPermission "modifyPrincipals";
+   permission javax.security.auth.AuthPermission "createLoginContext";
+   permission javax.security.auth.AuthPermission "doAsPrivileged";
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/beans/Beans/TypoInBeanDescription.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.io.IOException;
+import java.net.URI;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
+
+/**
+ * @test
+ * @bug 8205454
+ */
+public final class TypoInBeanDescription {
+
+    private static final String[] typos = {"&amp;", "&lt;", "&gt;", "&quot;"};
+
+    public static void main(final String[] args) throws IOException {
+        FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
+        Files.walkFileTree(fs.getPath("/modules/java.desktop"), new SimpleFileVisitor<>() {
+            @Override
+            public FileVisitResult visitFile(Path file,
+                                             BasicFileAttributes attrs) {
+                file = file.subpath(2, file.getNameCount());
+                String name = file.toString();
+                if (name.endsWith(".class")) {
+                    name = name.substring(0, name.indexOf(".")).replace('/', '.');
+
+                    final Class<?> type;
+                    try {
+                        type = Class.forName(name);
+                    } catch (Throwable e) {
+                        return FileVisitResult.CONTINUE;
+                    }
+                    final BeanInfo beanInfo;
+                    try {
+                        beanInfo = Introspector.getBeanInfo(type);
+                    } catch (IntrospectionException e) {
+                        return FileVisitResult.CONTINUE;
+                    }
+                    test(beanInfo);
+                }
+                return FileVisitResult.CONTINUE;
+            }
+        });
+    }
+
+    private static void test(final BeanInfo beanInfo) {
+        for (var pd : beanInfo.getPropertyDescriptors()) {
+            String d = pd.getShortDescription();
+            String n = pd.getName();
+            String dn = pd.getDisplayName();
+            for (String typo : typos) {
+                if (d.contains(typo) || n.contains(typo) || dn.contains(typo)) {
+                    throw new RuntimeException("Wrong name: " + beanInfo.getBeanDescriptor());
+                }
+            }
+        }
+    }
+}
--- a/test/jdk/java/io/RandomAccessFile/SetLength.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/io/RandomAccessFile/SetLength.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, 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
@@ -22,60 +22,143 @@
  */
 
 /* @test
-   @summary General tests of the setLength method -- Should migrate to 1.2 JCK
+ * @bug 8204310
+ * @summary General tests of the setLength method
+ * @library /test/lib
+ * @build jdk.test.lib.RandomFactory
+ * @run main SetLength
+ * @key randomness
  */
 
-import java.io.*;
+import java.io.IOException;
+import java.io.File;
+import java.io.RandomAccessFile;
 
+import jdk.test.lib.RandomFactory;
 
 public class SetLength {
 
-    static void fail(String s) {
-        throw new RuntimeException(s);
+    static void checkState(RandomAccessFile f, long expectedFilePointer,
+            long expectedLength)
+        throws IOException
+    {
+        long filePointer = f.getFilePointer();
+        long length = f.length();
+        if (length != expectedLength) {
+            throw new RuntimeException("File length " + length + " != expected "
+                    + expectedLength);
+        }
+        if (filePointer != expectedFilePointer) {
+            throw new RuntimeException("File pointer " + filePointer
+                    + " != expected " + expectedFilePointer);
+        }
     }
 
-    static void go(File fn, int max) throws IOException {
-        int chunk = max / 4;
-        long i;
-        RandomAccessFile f;
+    static void test(RandomAccessFile f, long quarterLength)
+        throws IOException
+    {
+        long halfLength = 2 * quarterLength;
+        long threeQuarterLength = 3 * quarterLength;
+        long fullLength = 4 * quarterLength;
+
+        // initially, empty file
+        checkState(f, 0, 0);
+
+        // extending the file size
+        f.setLength(halfLength);
+        checkState(f, 0, halfLength);
+
+        // writing from the begining
+        f.write(new byte[(int)fullLength]);
+        checkState(f, fullLength, fullLength);
+
+        // setting to the same length
+        f.setLength(fullLength);
+        checkState(f, fullLength, fullLength);
+
+        // truncating the file
+        f.setLength(threeQuarterLength);
+        checkState(f, threeQuarterLength, threeQuarterLength);
+
+        // changing the file pointer
+        f.seek(quarterLength);
+        checkState(f, quarterLength, threeQuarterLength);
+
+        // truncating the file again
+        f.setLength(halfLength);
+        checkState(f, quarterLength, halfLength);
+
+        // writing from the middle with extending the file
+        f.write(new byte[(int)halfLength]);
+        checkState(f, threeQuarterLength, threeQuarterLength);
+
+        // changing the file pointer
+        f.seek(quarterLength);
+        checkState(f, quarterLength, threeQuarterLength);
 
-        f = new RandomAccessFile(fn, "rw");
-        f.setLength(2 * chunk);
-        if (f.length() != 2 * chunk) fail("Length not increased to " + (2 * chunk));
-        if ((i = f.getFilePointer()) != 0) fail("File pointer shifted to " + i);
-        byte[] buf = new byte[max];
-        f.write(buf);
-        if (f.length() != max) fail("Write didn't work");
-        if (f.getFilePointer() != max) fail("File pointer inconsistent");
-        f.setLength(3 * chunk);
-        if (f.length() != 3 * chunk) fail("Length not reduced to " + 3 * chunk);
-        if (f.getFilePointer() != 3 * chunk) fail("File pointer not shifted to " + (3 * chunk));
-        f.seek(1 * chunk);
-        if (f.getFilePointer() != 1 * chunk) fail("File pointer not shifted to " + (1 * chunk));
-        f.setLength(2 * chunk);
-        if (f.length() != 2 * chunk) fail("Length not reduced to " + (2 * chunk));
-        if (f.getFilePointer() != 1 * chunk) fail("File pointer not shifted to " + (1 * chunk));
+        // writing from the middle without extending the file
+        f.write(new byte[(int)quarterLength]);
+        checkState(f, halfLength, threeQuarterLength);
+
+        // changing the file pointer to the end of file
+        f.seek(threeQuarterLength);
+        checkState(f, threeQuarterLength, threeQuarterLength);
+
+        // writing to the end of file
+        f.write(new byte[(int)quarterLength]);
+        checkState(f, fullLength, fullLength);
+
+        // truncating the file to zero
+        f.setLength(0);
+        checkState(f, 0, 0);
+
+        // changing the file pointer beyond the end of file
+        f.seek(threeQuarterLength);
+        checkState(f, threeQuarterLength, 0);
+
+        // writing beyont the end of file
+        f.write(new byte[(int)quarterLength]);
+        checkState(f, fullLength, fullLength);
+
+        // negative file pointer
+        try {
+            f.seek(-1);
+            throw new RuntimeException("IOE not thrown");
+        } catch (IOException expected) {
+        }
+        checkState(f, fullLength, fullLength);
+
+        // truncating the file after failed seek
+        f.setLength(halfLength);
+        checkState(f, halfLength, halfLength);
+
+        // truncating after closing
         f.close();
+        try {
+            f.setLength(halfLength);
+            throw new RuntimeException("IOE not thrown");
+        } catch (IOException expected) {
+        }
     }
 
     public static void main(String[] args) throws IOException {
-        File fn = new File("x.SetLength");
-        try {
-            go(fn, 20);
-            fn.delete();
-            go(fn, 64 * 1024);
-            RandomAccessFile f = new RandomAccessFile(fn, "r");
-            boolean thrown = false;
-            try {
-                f.setLength(3);
-            } catch (IOException x) {
-                thrown = true;
-            }
-            if (!thrown) fail("setLength succeeded on a file opened read-only");
-            f.close();
+        File f28b = new File("f28b");
+        File f28K = new File("f28K");
+        File frnd = new File("frnd");
+
+        try (RandomAccessFile raf28b = new RandomAccessFile(f28b, "rw");
+             RandomAccessFile raf28K = new RandomAccessFile(f28K, "rw");
+             RandomAccessFile rafrnd = new RandomAccessFile(frnd, "rw")) {
+            test(raf28b, 7);
+            test(raf28K, 7 * 1024);
+            test(rafrnd, 1 + RandomFactory.getRandom().nextInt(16000));
         }
-        finally {
-            fn.delete();
+
+        // truncating read-only file
+        try (RandomAccessFile raf28b = new RandomAccessFile(f28b, "r")) {
+            raf28b.setLength(42);
+            throw new RuntimeException("IOE not thrown");
+        } catch (IOException expected) {
         }
     }
 
--- a/test/jdk/java/lang/Class/GetPackageBootLoaderChildLayer.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/lang/Class/GetPackageBootLoaderChildLayer.java	Thu Jul 12 11:09:23 2018 -0700
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @requires !vm.graal.enabled
  * @modules jdk.attach
  * @run main/othervm --limit-modules jdk.attach -Djdk.attach.allowAttachSelf
  *    GetPackageBootLoaderChildLayer
--- a/test/jdk/java/lang/System/SetProperties.java	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2018, 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.
- */
-
-/*
- * @test
- * @bug 4244670
- * @summary test System.setProperties(null)
- */
-
-import java.util.Properties;
-
-public class SetProperties {
-    public static void main(String [] argv) {
-        System.setProperties((Properties)null);
-        System.getProperties().containsKey("java.version");
-    }
-}
--- a/test/jdk/java/lang/System/SetPropertiesNull.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/lang/System/SetPropertiesNull.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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
@@ -26,7 +26,7 @@
  * reinitialized after setting System.setProperties(null).
  *
  * @test
- * @bug 8030781
+ * @bug 4244670 8030781
  * @summary Test for System.setProperties(null).
  */
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/lang/invoke/MethodHandlesArityLimitsTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2018, 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.
+ **/
+
+/* @test
+ * @summary unit tests for arity limits of methods in java.lang.invoke.MethodHandles
+ * @run junit/othervm test.java.lang.invoke.MethodHandlesArityLimitsTest
+ **/
+
+package test.java.lang.invoke;
+
+import org.junit.*;
+
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.WrongMethodTypeException;
+import java.lang.invoke.MethodType;
+import java.lang.invoke.VarHandle;
+import java.util.List;
+
+import java.util.stream.IntStream;
+
+import static org.junit.Assert.*;
+
+public class MethodHandlesArityLimitsTest {
+
+    private static MethodType mt254 = null;
+    private static MethodType mt255 = null;
+
+    static {
+        Class<?>[] classes254 = IntStream.range(0, 254)
+                                         .mapToObj(i -> int.class)
+                                         .toArray(Class[]::new);
+        mt254 = MethodType.methodType(void.class, classes254);
+        mt255 = mt254.appendParameterTypes(int.class);
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testDropArgumentsToMatch() {
+        MethodHandles.dropArgumentsToMatch(MethodHandles.empty(mt254), 0, mt255.parameterList(), 0);
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testEmpty() {
+        MethodHandles.empty(mt255);
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testExplicitCastArguments() {
+        MethodHandles.explicitCastArguments(
+                                         MethodHandles.empty(mt254),
+                                         mt254.dropParameterTypes(0, 1).insertParameterTypes(0, long.class) );
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testPermuteArguments() {
+        MethodHandles.permuteArguments(
+                                    MethodHandles.empty(MethodType.methodType(void.class)),
+                                    mt255);
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testVarHandleInvoker() {
+        MethodHandles.varHandleInvoker(VarHandle.AccessMode.GET, mt254);
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testVarHandleExactInvoker() {
+        MethodHandles.varHandleExactInvoker(VarHandle.AccessMode.GET, mt254);
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testMHExactInvoker() {
+        MethodHandles.exactInvoker(mt255);
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testMHInvoker() {
+        MethodHandles.invoker(mt255);
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testMHSpreadInvoker() {
+        MethodHandles.spreadInvoker(mt255, 255);
+    }
+
+    @Test(expected = WrongMethodTypeException.class)
+    public void testAsType() throws ReflectiveOperationException {
+        MethodHandle asList = MethodHandles.lookup().findStatic(
+                                                java.util.Arrays.class,
+                                                "asList",
+                                                MethodType.methodType(List.class, Object[].class));
+        try {
+           asList.asType(MethodType.genericMethodType(254));//does not throw IAE or WMTE
+        }
+        catch(WrongMethodTypeException wmte) {
+           Assert.fail("Unexpected WrongMethodTypeException thrown");
+        }
+        asList.asType(MethodType.genericMethodType(255));//throws WMTE
+    }
+}
--- a/test/jdk/java/lang/reflect/OldenCompilingWithDefaults.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/lang/reflect/OldenCompilingWithDefaults.java	Thu Jul 12 11:09:23 2018 -0700
@@ -25,7 +25,6 @@
  * @test
  * @bug 8009267
  * @summary Verify uses of isAnnotationPresent compile under older source versions
- * @compile -source 1.6 -target 1.6 OldenCompilingWithDefaults.java
  * @compile -source 1.7 -target 1.7 OldenCompilingWithDefaults.java
  * @compile                         OldenCompilingWithDefaults.java
  */
--- a/test/jdk/java/net/httpclient/CancelledResponse.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/net/httpclient/CancelledResponse.java	Thu Jul 12 11:09:23 2018 -0700
@@ -339,9 +339,11 @@
                     Thread.sleep(10);
                 }
                 out.println("sent " + s);
-            } catch (SSLException | SocketException x) {
-                // if SSL then we might get a "Broken Pipe", otherwise
-                // a "Socket closed".
+            } catch (SSLException | SocketException | RuntimeException x) {
+                // if SSL then we might get a "Broken Pipe", or a
+                // RuntimeException wrapping an InvalidAlgorithmParameterException
+                // (probably if the channel is closed during the handshake),
+                // otherwise we get a "Socket closed".
                 boolean expected = cancelled.get();
                 if (sent > 0 && expected) {
                     System.out.println("Connection closed by peer as expected: " + x);
@@ -349,6 +351,7 @@
                 } else {
                     System.out.println("Unexpected exception (sent="
                             + sent + ", cancelled=" + expected + "): " + x);
+                    if (x instanceof RuntimeException) throw (RuntimeException) x;
                     throw new RuntimeException(x);
                 }
             } catch (IOException | InterruptedException e) {
--- a/test/jdk/java/net/httpclient/MockServer.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/net/httpclient/MockServer.java	Thu Jul 12 11:09:23 2018 -0700
@@ -284,7 +284,7 @@
             }
             try {
                 socket.close();
-            } catch (IOException e) {}
+            } catch (Throwable e) {}
             synchronized (removals) {
                 removals.add(this);
             }
@@ -339,7 +339,7 @@
         closed = true;
         try {
             ss.close();
-        } catch (IOException e) {
+        } catch (Throwable e) {
             e.printStackTrace();
         }
         for (Connection c : sockets) {
--- a/test/jdk/java/net/httpclient/ShortResponseBody.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/net/httpclient/ShortResponseBody.java	Thu Jul 12 11:09:23 2018 -0700
@@ -264,19 +264,47 @@
 
     // can be used to prolong request body publication
     static final class InfiniteInputStream extends InputStream {
+        int count = 0;
+        int k16 = 0;
         @Override
         public int read() throws IOException {
+            if (++count == 1) {
+                System.out.println("Start sending 1 byte");
+            }
+            if (count > 16 * 1024) {
+                k16++;
+                System.out.println("... 16K sent.");
+                count = count % (16 * 1024);
+            }
+            if (k16 > 128) {
+                System.out.println("WARNING: InfiniteInputStream: " +
+                        "more than 128 16k buffers generated: returning EOF");
+                return -1;
+            }
             return 1;
         }
 
         @Override
         public int read(byte[] buf, int offset, int length) {
             //int count = offset;
-            //length = Math.max(0, Math.min(buf.length - offset, length));
+            length = Math.max(0, Math.min(buf.length - offset, length));
             //for (; count < length; count++)
             //    buf[offset++] = 0x01;
             //return count;
-            return Math.max(0, Math.min(buf.length - offset, length));
+            if (count == 0) {
+                System.out.println("Start sending " + length);
+            } else if (count > 16 * 1024) {
+                k16++;
+                System.out.println("... 16K sent.");
+                count = count % (16 * 1024);
+            }
+            if (k16 > 128) {
+                System.out.println("WARNING: InfiniteInputStream: " +
+                        "more than 128 16k buffers generated: returning EOF");
+                return -1;
+            }
+            count += length;
+            return length;
         }
     }
 
@@ -493,10 +521,13 @@
                     out.print(requestMethod + " ");
                     URI uriPath = readRequestPath(is);
                     out.println(uriPath);
-                    readRequestHeaders(is);
+                    String headers = readRequestHeaders(is);
 
                     String query = uriPath.getRawQuery();
-                    assert query != null;
+                    if (query == null) {
+                        out.println("Request headers: [" + headers + "]");
+                    }
+                    assert query != null : "null query for uriPath: " + uriPath;
                     String qv = query.split("=")[1];
                     int len;
                     if (qv.equals("all")) {
@@ -542,9 +573,11 @@
         }
 
         // Read until the end of a HTTP request headers
-        static void readRequestHeaders(InputStream is) throws IOException {
+        static String readRequestHeaders(InputStream is) throws IOException {
             int requestEndCount = 0, r;
+            StringBuilder sb = new StringBuilder();
             while ((r = is.read()) != -1) {
+                sb.append((char) r);
                 if (r == requestEnd[requestEndCount]) {
                     requestEndCount++;
                     if (requestEndCount == 4) {
@@ -554,6 +587,7 @@
                     requestEndCount = 0;
                 }
             }
+            return sb.toString();
         }
     }
 
--- a/test/jdk/java/net/httpclient/SplitResponse.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/net/httpclient/SplitResponse.java	Thu Jul 12 11:09:23 2018 -0700
@@ -32,6 +32,7 @@
 import java.util.concurrent.CompletableFuture;
 import javax.net.ssl.SSLContext;
 import javax.net.ServerSocketFactory;
+import javax.net.ssl.SSLException;
 import javax.net.ssl.SSLServerSocketFactory;
 import java.net.http.HttpClient;
 import java.net.http.HttpClient.Version;
@@ -268,7 +269,7 @@
                     String onechar = s.substring(i, i + 1);
                     try {
                         conn.send(onechar);
-                    } catch(SocketException x) {
+                    } catch(SocketException | SSLException x) {
                         if (!useSSL || i != len - 1) throw x;
                         if (x.getMessage().contains("closed by remote host")) {
                             String osname = System.getProperty("os.name", "unknown");
--- a/test/jdk/java/net/httpclient/http2/FixedThreadPoolTest.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/net/httpclient/http2/FixedThreadPoolTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -177,13 +177,24 @@
         System.err.println("DONE");
     }
 
+    // expect highest supported version we know about
+    static String expectedTLSVersion(SSLContext ctx) {
+        SSLParameters params = ctx.getSupportedSSLParameters();
+        String[] protocols = params.getProtocols();
+        for (String prot : protocols) {
+            if (prot.equals("TLSv1.3"))
+                return "TLSv1.3";
+        }
+        return "TLSv1.2";
+    }
+
     static void paramsTest() throws Exception {
         System.err.println("paramsTest");
         Http2TestServer server = new Http2TestServer(true, 0, exec, sslContext);
         server.addHandler((t -> {
             SSLSession s = t.getSSLSession();
             String prot = s.getProtocol();
-            if (prot.equals("TLSv1.2")) {
+            if (prot.equals(expectedTLSVersion(sslContext))) {
                 t.sendResponseHeaders(200, -1);
             } else {
                 System.err.printf("Protocols =%s\n", prot);
--- a/test/jdk/java/net/httpclient/http2/TLSConnection.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/net/httpclient/http2/TLSConnection.java	Thu Jul 12 11:09:23 2018 -0700
@@ -32,6 +32,7 @@
 import java.net.http.HttpRequest;
 import java.net.http.HttpRequest.BodyPublishers;
 import java.net.http.HttpResponse.BodyHandlers;
+import javax.net.ssl.SSLContext;
 import javax.net.ssl.SSLParameters;
 import javax.net.ssl.SSLSession;
 
@@ -57,6 +58,19 @@
 
     private static final SSLParameters USE_DEFAULT_SSL_PARAMETERS = new SSLParameters();
 
+    // expect highest supported version we know about
+    static String expectedTLSVersion(SSLContext ctx) throws Exception {
+        if (ctx == null)
+            ctx = SSLContext.getDefault();
+        SSLParameters params = ctx.getSupportedSSLParameters();
+        String[] protocols = params.getProtocols();
+        for (String prot : protocols) {
+            if (prot.equals("TLSv1.3"))
+                return "TLSv1.3";
+        }
+        return "TLSv1.2";
+    }
+
     public static void main(String[] args) throws Exception {
         // re-enable 3DES
         Security.setProperty("jdk.tls.disabledAlgorithms", "");
@@ -92,7 +106,7 @@
                     "---\nTest #2: default SSL parameters, "
                             + "expect successful connection",
                     () -> connect(uriString, USE_DEFAULT_SSL_PARAMETERS));
-            success &= checkProtocol(handler.getSSLSession(), "TLSv1.2");
+            success &= checkProtocol(handler.getSSLSession(), expectedTLSVersion(null));
 
             // set SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA cipher suite
             // which has less priority in default cipher suite list
--- a/test/jdk/java/net/httpclient/whitebox/java.net.http/jdk/internal/net/http/SSLEchoTubeTest.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/net/httpclient/whitebox/java.net.http/jdk/internal/net/http/SSLEchoTubeTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -350,7 +350,7 @@
 
             @Override
             public void cancel() {
-                cancelled.set(true);
+                queue.add(EOF);
             }
         }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/nio/channels/AsynchronousSocketChannel/CompletionHandlerRelease.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,211 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/* @test
+ * @bug 8202252
+ * @run testng CompletionHandlerRelease
+ * @summary Verify that reference to CompletionHandler is cleared after use
+ */
+
+import java.io.Closeable;
+import java.io.IOException;
+import java.lang.ref.Reference;
+import java.lang.ref.ReferenceQueue;
+import java.lang.ref.WeakReference;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import static java.net.StandardSocketOptions.*;
+import java.nio.ByteBuffer;
+import java.nio.channels.AsynchronousChannelGroup;
+import java.nio.channels.AsynchronousServerSocketChannel;
+import java.nio.channels.AsynchronousSocketChannel;
+import java.nio.channels.CompletionHandler;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+import org.testng.annotations.AfterTest;
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
+import static org.testng.Assert.*;
+
+public class CompletionHandlerRelease {
+    @Test
+    public void testConnect() throws Exception {
+        try (Server server = new Server()) {
+            try (AsynchronousSocketChannel ch =
+                 AsynchronousSocketChannel.open(GROUP)) {
+                CountDownLatch latch = new CountDownLatch(1);
+                Handler<Void,Object> handler =
+                    new Handler<Void,Object>("connect", latch);
+                ReferenceQueue queue = new ReferenceQueue<WeakReference>();
+                WeakReference<Object> ref =
+                    new WeakReference<Object>(handler, queue);
+
+                ch.connect(server.address(), null, handler);
+
+                try { latch.await(); } catch (InterruptedException ignore) { }
+
+                handler = null;
+                waitForRefToClear(ref, queue);
+
+                server.accept().get().close();
+            }
+        }
+    }
+
+    @Test
+    public void testWrite() throws Exception {
+        try (Server server = new Server();
+             AsynchronousSocketChannel ch =
+                 AsynchronousSocketChannel.open(GROUP)) {
+            ch.connect(server.address()).get();
+
+            try (AsynchronousSocketChannel sc = server.accept().get()) {
+                ByteBuffer src = ByteBuffer.wrap("hello".getBytes("UTF-8"));
+                sc.setOption(SO_SNDBUF, src.remaining());
+
+                CountDownLatch latch = new CountDownLatch(1);
+                Handler<Integer,Object> handler =
+                    new Handler<Integer,Object>("write", latch);
+                ReferenceQueue queue = new ReferenceQueue<WeakReference>();
+                WeakReference<Object> ref =
+                    new WeakReference<Object>(handler, queue);
+
+                sc.write(src, null, handler);
+
+                try { latch.await(); } catch (InterruptedException ignore) { }
+
+                handler = null;
+                waitForRefToClear(ref, queue);
+            }
+        }
+    }
+
+    @Test
+    public void testRead() throws Exception {
+        try (Server server = new Server();
+             AsynchronousSocketChannel ch =
+                 AsynchronousSocketChannel.open(GROUP)) {
+            ch.connect(server.address()).get();
+
+            try (AsynchronousSocketChannel sc = server.accept().get()) {
+                ByteBuffer src = ByteBuffer.wrap("hello".getBytes("UTF-8"));
+                sc.setOption(SO_SNDBUF, src.remaining());
+                sc.write(src).get();
+
+                CountDownLatch latch = new CountDownLatch(1);
+                Handler<Integer,Object> handler =
+                    new Handler<Integer,Object>("read", latch);
+                ReferenceQueue queue = new ReferenceQueue<WeakReference>();
+                WeakReference<Object> ref =
+                    new WeakReference<Object>(handler, queue);
+
+                ByteBuffer dst = ByteBuffer.allocate(64);
+                ch.read(dst, null, handler);
+
+                try { latch.await(); } catch (InterruptedException ignore) { }
+
+                handler = null;
+                waitForRefToClear(ref, queue);
+            }
+        }
+    }
+
+    private AsynchronousChannelGroup GROUP;
+
+    @BeforeTest
+    void setup() throws IOException {
+        GROUP = AsynchronousChannelGroup.withFixedThreadPool(2,
+            Executors.defaultThreadFactory());
+    }
+
+    @AfterTest
+    void cleanup() throws IOException {
+        GROUP.shutdownNow();
+    }
+
+    class Server implements Closeable {
+        private final AsynchronousServerSocketChannel ssc;
+        private final InetSocketAddress address;
+
+        Server() throws IOException {
+            this(0);
+        }
+
+        Server(int recvBufSize) throws IOException {
+            ssc = AsynchronousServerSocketChannel.open(GROUP);
+            if (recvBufSize > 0) {
+                ssc.setOption(SO_RCVBUF, recvBufSize);
+            }
+            ssc.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(),
+                0));
+            address = (InetSocketAddress)ssc.getLocalAddress();
+        }
+
+        InetSocketAddress address() {
+            return address;
+        }
+
+        Future<AsynchronousSocketChannel> accept() throws IOException {
+            return ssc.accept();
+        }
+
+        public void close() throws IOException {
+            ssc.close();
+        }
+    }
+
+    static class Handler<V,A> implements CompletionHandler<V,A> {
+        private final String name;
+        private final CountDownLatch latch;
+
+        Handler(String name, CountDownLatch latch) {
+            this.name = name;
+            this.latch = latch;
+        }
+
+        public void completed(V result, A attachment) {
+            System.out.format("%s completed(%s, %s)%n",
+                name, result, attachment);
+            latch.countDown();
+        }
+
+        public void failed(Throwable exc, A attachment) {
+            System.out.format("%s failed(%s, %s)%n",
+                name, exc, attachment);
+            exc.printStackTrace();
+            latch.countDown();
+        }
+    }
+
+    private void waitForRefToClear(Reference ref, ReferenceQueue queue)
+        throws InterruptedException {
+        Reference r;
+        while ((r = queue.remove(20)) == null) {
+            System.gc();
+        }
+        assertEquals(r, ref);
+        assertNull(r.get());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/nio/channels/FileChannel/TruncateRAF.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/* @test
+ * @bug 8204310
+ * @summary Check how FileChannel behaves if the file size/offset change via
+ *          RAF.setLength() and other methods.
+ * @run main TruncateRAF
+ */
+
+import java.io.File;
+import java.io.RandomAccessFile;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
+
+public class TruncateRAF {
+
+    static void checkState(RandomAccessFile raf, FileChannel fch,
+            long expectedOffset, long expectedLength)
+        throws IOException
+    {
+        long rafLength = raf.length();
+        long rafOffset = raf.getFilePointer();
+        long fchLength = fch.size();
+        long fchOffset = fch.position();
+
+        if (rafLength != expectedLength)
+            throw new RuntimeException("rafLength (" + rafLength + ") != " +
+                    "expectedLength (" + expectedLength + ")");
+        if (rafOffset != expectedOffset)
+            throw new RuntimeException("rafOffset (" + rafOffset + ") != " +
+                    "expectedOffset (" + expectedOffset + ")");
+        if (fchLength != expectedLength)
+            throw new RuntimeException("fchLength (" + fchLength + ") != " +
+                    "expectedLength (" + expectedLength + ")");
+        if (fchOffset != expectedOffset)
+            throw new RuntimeException("fchOffset (" + fchOffset + ") != " +
+                    "expectedOffset (" + expectedOffset + ")");
+    }
+
+    public static void main(String[] args) throws Throwable {
+        File file = new File("tmp");
+        try (RandomAccessFile raf = new RandomAccessFile(file, "rw");
+             FileChannel fch = raf.getChannel()) {
+
+            // initially empty
+            checkState(raf, fch, 0, 0);
+
+            // seeking beyond EOF
+            raf.seek(42);
+            checkState(raf, fch, 42, 0);
+
+            // seeking beyond EOF
+            fch.position(84);
+            checkState(raf, fch, 84, 0);
+
+            // writing at offset beyond EOF
+            raf.write(1);
+            checkState(raf, fch, 85, 85);
+
+            // truncating
+            raf.setLength(63);
+            checkState(raf, fch, 63, 63);
+
+            // writing at EOF
+            fch.write(ByteBuffer.wrap(new byte[1]));
+            checkState(raf, fch, 64, 64);
+
+            // seeking at the middle
+            fch.position(32);
+            checkState(raf, fch, 32, 64);
+
+            // truncating beyond offset
+            fch.truncate(42);
+            checkState(raf, fch, 32, 42);
+
+            // truncating before offset
+            fch.truncate(16);
+            checkState(raf, fch, 16, 16);
+
+            // writing at position beyond EOF
+            fch.write(ByteBuffer.wrap(new byte[1]), 127);
+            checkState(raf, fch, 16, 128);
+
+            // writing at position before EOF
+            fch.write(ByteBuffer.wrap(new byte[1]), 42);
+            checkState(raf, fch, 16, 128);
+
+            // truncating
+            raf.setLength(64);
+            checkState(raf, fch, 16, 64);
+
+            // changing offset
+            raf.seek(21);
+            checkState(raf, fch, 21, 64);
+
+            // skipping should change offset
+            raf.skipBytes(4);
+            checkState(raf, fch, 25, 64);
+
+            // reading should change offset
+            raf.read();
+            checkState(raf, fch, 26, 64);
+
+            // truncating to zero
+            raf.setLength(0);
+            checkState(raf, fch, 0, 0);
+
+            // FileChannel cannot expand size
+            fch.truncate(42);
+            checkState(raf, fch, 0, 0);
+
+            // expanding
+            raf.setLength(42);
+            checkState(raf, fch, 0, 42);
+
+            // seeking beyond EOF
+            raf.seek(512);
+            checkState(raf, fch, 512, 42);
+
+            // truncating to the same size
+            fch.truncate(256);
+            checkState(raf, fch, 256, 42);
+
+            // truncating to the same size
+            fch.truncate(42);
+            checkState(raf, fch, 42, 42);
+
+            // truncating to zero
+            fch.truncate(0);
+            checkState(raf, fch, 0, 0);
+        }
+    }
+}
--- a/test/jdk/java/time/test/java/time/format/TestNonIsoFormatter.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/time/test/java/time/format/TestNonIsoFormatter.java	Thu Jul 12 11:09:23 2018 -0700
@@ -24,6 +24,7 @@
 /*
  *
  * @test
+ * @bug 8206120
  * @modules jdk.localedata
  */
 
@@ -44,6 +45,7 @@
 import java.time.format.DateTimeFormatterBuilder;
 import java.time.format.DateTimeParseException;
 import java.time.format.FormatStyle;
+import java.time.format.ResolverStyle;
 import java.time.format.TextStyle;
 import java.time.temporal.TemporalAccessor;
 import java.time.temporal.TemporalQueries;
@@ -135,6 +137,16 @@
         };
     }
 
+    @DataProvider(name="lenient_eraYear")
+    Object[][] lenientEraYear() {
+        return new Object[][] {
+            // Chronology, lenient era/year, strict era/year
+            { JAPANESE, "Meiji 123", "Heisei 2" },
+            { JAPANESE, "Showa 65", "Heisei 2" },
+            { JAPANESE, "Heisei 32", "NewEra 2" }, // NewEra
+        };
+    }
+
     @Test(dataProvider="format_data")
     public void test_formatLocalizedDate(Chronology chrono, Locale formatLocale, Locale numberingLocale,
                                          ChronoLocalDate date, String expected) {
@@ -173,4 +185,15 @@
         Chronology cal = ta.query(TemporalQueries.chronology());
         assertEquals(cal, chrono);
     }
+
+    @Test(dataProvider="lenient_eraYear")
+    public void test_lenientEraYear(Chronology chrono, String lenient, String strict) {
+        String mdStr = "-01-01";
+        DateTimeFormatter dtf = new DateTimeFormatterBuilder()
+            .appendPattern("GGGG y-M-d")
+            .toFormatter()
+            .withChronology(chrono);
+        DateTimeFormatter dtfLenient = dtf.withResolverStyle(ResolverStyle.LENIENT);
+        assertEquals(LocalDate.parse(lenient+mdStr, dtfLenient), LocalDate.parse(strict+mdStr, dtf));
+    }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/util/ArrayDeque/WhiteBox.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,153 @@
+/*
+ * 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.
+ */
+
+/*
+ * This file is available under and governed by the GNU General Public
+ * License version 2 only, as published by the Free Software Foundation.
+ * However, the following notice accompanied the original version of this
+ * file:
+ *
+ * Written by Martin Buchholz with assistance from members of JCP
+ * JSR-166 Expert Group and released to the public domain, as
+ * explained at http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+/*
+ * @test
+ * @modules java.base/java.util:open
+ * @run testng WhiteBox
+ * @summary White box tests of implementation details
+ */
+
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.VarHandle;
+import java.util.ArrayDeque;
+import java.util.concurrent.ThreadLocalRandom;
+
+@Test
+public class WhiteBox {
+    final ThreadLocalRandom rnd = ThreadLocalRandom.current();
+    final VarHandle ELEMENTS, HEAD, TAIL;
+
+    WhiteBox() throws ReflectiveOperationException {
+        Class<?> klazz = ArrayDeque.class;
+        MethodHandles.Lookup lookup
+            = MethodHandles.privateLookupIn(klazz, MethodHandles.lookup());
+        ELEMENTS = lookup.findVarHandle(klazz, "elements", Object[].class);
+        HEAD = lookup.findVarHandle(klazz, "head", int.class);
+        TAIL = lookup.findVarHandle(klazz, "tail", int.class);
+    }
+
+    Object[] elements(ArrayDeque d) { return (Object[]) ELEMENTS.get(d); }
+    int head(ArrayDeque d) { return (int) HEAD.get(d); }
+    int tail(ArrayDeque d) { return (int) TAIL.get(d); }
+
+    void checkCapacity(ArrayDeque d, int capacity) {
+        assertTrue(d.isEmpty());
+        assertEquals(0, head(d));
+        assertEquals(0, tail(d));
+        Object[] initialElements = elements(d);
+
+        assertInvariants(d);
+        for (int i = capacity; i--> 0; ) {
+            d.add(rnd.nextInt(42));
+            assertSame(elements(d), initialElements);
+            assertInvariants(d);
+        }
+
+        d.add(rnd.nextInt(42));
+        assertNotSame(elements(d), initialElements);
+        assertInvariants(d);
+    }
+
+    @Test
+    public void defaultConstructor() {
+        checkCapacity(new ArrayDeque(), 16);
+    }
+
+    @Test
+    public void shouldNotResizeWhenInitialCapacityProvided() {
+        int initialCapacity = rnd.nextInt(20);
+        checkCapacity(new ArrayDeque(initialCapacity), initialCapacity);
+    }
+
+    byte[] serialBytes(Object o) {
+        try {
+            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            ObjectOutputStream oos = new ObjectOutputStream(bos);
+            oos.writeObject(o);
+            oos.flush();
+            oos.close();
+            return bos.toByteArray();
+        } catch (Exception fail) {
+            throw new AssertionError(fail);
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    <T> T serialClone(T o) {
+        try {
+            ObjectInputStream ois = new ObjectInputStream
+                (new ByteArrayInputStream(serialBytes(o)));
+            T clone = (T) ois.readObject();
+            assertNotSame(o, clone);
+            assertSame(o.getClass(), clone.getClass());
+            return clone;
+        } catch (Exception fail) {
+            throw new AssertionError(fail);
+        }
+    }
+
+    @Test
+    public void testSerialization() {
+        ArrayDeque[] ds = { new ArrayDeque(), new ArrayDeque(rnd.nextInt(20)) };
+        for (ArrayDeque d : ds) {
+            if (rnd.nextBoolean()) d.add(99);
+            ArrayDeque clone = serialClone(d);
+            assertInvariants(clone);
+            assertNotSame(elements(d), elements(clone));
+            assertEquals(d, clone);
+        }
+    }
+
+    /** Checks conditions which should always be true. */
+    void assertInvariants(ArrayDeque d) {
+        final Object[] elements = elements(d);
+        final int head = head(d);
+        final int tail = tail(d);
+        final int capacity = elements.length;
+        assertTrue(0 <= head && head < capacity);
+        assertTrue(0 <= tail && tail < capacity);
+        assertTrue(capacity > 0);
+        assertTrue(d.size() < capacity);
+        assertTrue((head == tail) ^ (elements[head] != null));
+        assertNull(elements[tail]);
+        assertTrue((head == tail) ^ (elements[Math.floorMod(tail - 1, capacity)] != null));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/util/Calendar/JapaneseLenientEraTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @bug 8206120
+ * @summary Test whether lenient era is accepted in JapaneseImperialCalendar
+ * @run testng/othervm JapaneseLenientEraTest
+ */
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Locale;
+
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import static org.testng.Assert.assertEquals;
+
+@Test
+public class JapaneseLenientEraTest {
+
+    @DataProvider(name="lenientEra")
+    Object[][] names() {
+        return new Object[][] {
+            // lenient era/year, strict era/year
+            { "Meiji 123", "Heisei 2" },
+            { "Sh\u014dwa 65", "Heisei 2" },
+            { "Heisei 32", "NewEra 2" }, // NewEra
+        };
+    }
+
+    @Test(dataProvider="lenientEra")
+    public void testLenientEra(String lenient, String strict) throws Exception {
+        Calendar c = new Calendar.Builder()
+            .setCalendarType("japanese")
+            .build();
+        DateFormat df = new SimpleDateFormat("GGGG y-M-d", Locale.ROOT);
+        df.setCalendar(c);
+        Date lenDate = df.parse(lenient + "-01-01");
+        df.setLenient(false);
+        Date strDate = df.parse(strict + "-01-01");
+        assertEquals(lenDate, strDate);
+    }
+}
--- a/test/jdk/java/util/Locale/bcp47u/SystemPropertyTests.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/util/Locale/bcp47u/SystemPropertyTests.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, 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
@@ -47,6 +47,7 @@
 public class SystemPropertyTests {
 
     private static String LANGPROP = "-Duser.language=en";
+    private static String SCPTPROP = "-Duser.script=";
     private static String CTRYPROP = "-Duser.country=US";
 
     @DataProvider(name="data")
@@ -88,7 +89,7 @@
     @Test(dataProvider="data")
     public void runTest(String extprop, String defLoc,
                         String defFmtLoc, String defDspLoc) throws Exception {
-        int exitValue = executeTestJava(LANGPROP, CTRYPROP,
+        int exitValue = executeTestJava(LANGPROP, SCPTPROP, CTRYPROP,
                                     extprop, "DefaultLocaleTest", defLoc, defFmtLoc, defDspLoc)
                             .outputTo(System.out)
                             .errorTo(System.out)
--- a/test/jdk/java/util/concurrent/forkjoin/FJExceptionTableLeak.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/util/concurrent/forkjoin/FJExceptionTableLeak.java	Thu Jul 12 11:09:23 2018 -0700
@@ -34,77 +34,102 @@
 
 /*
  * @test
- * @bug 8004138
+ * @bug 8004138 8205576
  * @modules java.base/java.util.concurrent:open
+ * @run testng FJExceptionTableLeak
  * @summary Checks that ForkJoinTask thrown exceptions are not leaked.
  * This whitebox test is sensitive to forkjoin implementation details.
  */
 
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 
 import java.lang.ref.ReferenceQueue;
 import java.lang.ref.WeakReference;
-import java.lang.reflect.Field;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.VarHandle;
 import java.util.ArrayList;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ForkJoinPool;
 import java.util.concurrent.ForkJoinTask;
 import java.util.concurrent.RecursiveAction;
+import java.util.concurrent.ThreadLocalRandom;
+import java.util.concurrent.locks.ReentrantLock;
 import java.util.function.BooleanSupplier;
 
+@Test
 public class FJExceptionTableLeak {
+    final ThreadLocalRandom rnd = ThreadLocalRandom.current();
+    final VarHandle NEXT, EX;
+    final Object[] exceptionTable;
+    final ReentrantLock exceptionTableLock;
+
+    FJExceptionTableLeak() throws ReflectiveOperationException {
+        MethodHandles.Lookup lookup = MethodHandles.privateLookupIn(
+            ForkJoinTask.class, MethodHandles.lookup());
+        Class<?> nodeClass = Class.forName(
+            ForkJoinTask.class.getName() + "$ExceptionNode");
+        VarHandle exceptionTableHandle = lookup.findStaticVarHandle(
+            ForkJoinTask.class, "exceptionTable", arrayClass(nodeClass));
+        VarHandle exceptionTableLockHandle = lookup.findStaticVarHandle(
+            ForkJoinTask.class, "exceptionTableLock", ReentrantLock.class);
+        exceptionTable = (Object[]) exceptionTableHandle.get();
+        exceptionTableLock = (ReentrantLock) exceptionTableLockHandle.get();
+
+        NEXT = lookup.findVarHandle(nodeClass, "next", nodeClass);
+        EX = lookup.findVarHandle(nodeClass, "ex", Throwable.class);
+    }
+
+    static <T> Class<T[]> arrayClass(Class<T> klazz) {
+        try {
+            return (Class<T[]>) Class.forName("[L" + klazz.getName() + ";");
+        } catch (ReflectiveOperationException ex) {
+            throw new Error(ex);
+        }
+    }
+
+    Object next(Object node) { return NEXT.get(node); }
+    Throwable ex(Object node) { return (Throwable) EX.get(node); }
+
     static class FailingTaskException extends RuntimeException {}
     static class FailingTask extends RecursiveAction {
         public void compute() { throw new FailingTaskException(); }
     }
 
-    static int bucketsInuse(Object[] exceptionTable) {
-        int count = 0;
-        for (Object x : exceptionTable)
-            if (x != null) count++;
-        return count;
+    /** Counts all FailingTaskExceptions still recorded in exceptionTable. */
+    int retainedExceptions() {
+        exceptionTableLock.lock();
+        try {
+            int count = 0;
+            for (Object node : exceptionTable)
+                for (; node != null; node = next(node))
+                    if (ex(node) instanceof FailingTaskException)
+                        count++;
+            return count;
+        } finally {
+            exceptionTableLock.unlock();
+        }
     }
 
-    public static void main(String[] args) throws Exception {
-        final ForkJoinPool pool = new ForkJoinPool(4);
-        final Field exceptionTableField =
-            ForkJoinTask.class.getDeclaredField("exceptionTable");
-        exceptionTableField.setAccessible(true);
-        final Object[] exceptionTable = (Object[]) exceptionTableField.get(null);
-
-        if (bucketsInuse(exceptionTable) != 0) throw new AssertionError();
-
-        final ArrayList<FailingTask> tasks = new ArrayList<>();
+    @Test
+    public void exceptionTableCleanup() throws Exception {
+        ArrayList<FailingTask> failedTasks = failedTasks();
 
-        // Keep submitting failing tasks until most of the exception
-        // table buckets are in use
-        do {
-            for (int i = 0; i < exceptionTable.length; i++) {
-                FailingTask task = new FailingTask();
-                pool.execute(task);
-                tasks.add(task); // retain strong refs to all tasks, for now
-            }
-            for (FailingTask task : tasks) {
-                try {
-                    task.join();
-                    throw new AssertionError("should throw");
-                } catch (FailingTaskException success) {}
-            }
-        } while (bucketsInuse(exceptionTable) < exceptionTable.length * 3 / 4);
-
-        // Retain a strong ref to one last failing task;
-        // task.join() will trigger exception table expunging.
-        FailingTask lastTask = tasks.get(0);
+        // Retain a strong ref to one last failing task
+        FailingTask lastTask = failedTasks.get(rnd.nextInt(failedTasks.size()));
 
         // Clear all other strong refs, making exception table cleanable
-        tasks.clear();
+        failedTasks.clear();
 
         BooleanSupplier exceptionTableIsClean = () -> {
             try {
+                // Trigger exception table expunging as side effect
                 lastTask.join();
                 throw new AssertionError("should throw");
             } catch (FailingTaskException expected) {}
-            int count = bucketsInuse(exceptionTable);
+            int count = retainedExceptions();
             if (count == 0)
                 throw new AssertionError("expected to find last task");
             return count == 1;
@@ -112,6 +137,35 @@
         gcAwait(exceptionTableIsClean);
     }
 
+    /** Sequestered into a separate method to inhibit GC retention. */
+    ArrayList<FailingTask> failedTasks()
+        throws Exception {
+        final ForkJoinPool pool = new ForkJoinPool(rnd.nextInt(1, 4));
+
+        assertEquals(0, retainedExceptions());
+
+        final ArrayList<FailingTask> tasks = new ArrayList<>();
+
+        for (int i = exceptionTable.length; i--> 0; ) {
+            FailingTask task = new FailingTask();
+            pool.execute(task);
+            tasks.add(task); // retain strong refs to all tasks, for now
+            task = null;     // excessive GC retention paranoia
+        }
+        for (FailingTask task : tasks) {
+            try {
+                task.join();
+                throw new AssertionError("should throw");
+            } catch (FailingTaskException success) {}
+            task = null;     // excessive GC retention paranoia
+        }
+
+        if (rnd.nextBoolean())
+            gcAwait(() -> retainedExceptions() == tasks.size());
+
+        return tasks;
+    }
+
     // --------------- GC finalization infrastructure ---------------
 
     /** No guarantees, but effective in practice. */
--- a/test/jdk/java/util/zip/TestExtraTime.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/java/util/zip/TestExtraTime.java	Thu Jul 12 11:09:23 2018 -0700
@@ -23,7 +23,8 @@
 
 /**
  * @test
- * @bug 4759491 6303183 7012868 8015666 8023713 8068790 8076641 8075526 8130914 8161942
+ * @bug 4759491 6303183 7012868 8015666 8023713 8068790 8076641 8075526 8130914
+ *      8161942 8206389
  * @summary Test ZOS and ZIS timestamp in extra field correctly
  */
 
@@ -96,6 +97,7 @@
         testNullHandling();
         testTagOnlyHandling();
         testTimeConversions();
+        testNullMtime();
     }
 
     static void test(FileTime mtime, FileTime atime, FileTime ctime,
@@ -192,9 +194,11 @@
                           ze.getTime(),
                           ze.getLastModifiedTime().to(TimeUnit.MILLISECONDS));
          */
-        if (mtime.to(TimeUnit.SECONDS) !=
-            ze.getLastModifiedTime().to(TimeUnit.SECONDS))
+        if (mtime != null &&
+            mtime.to(TimeUnit.SECONDS) !=
+            ze.getLastModifiedTime().to(TimeUnit.SECONDS)) {
             throw new RuntimeException("Timestamp: storing mtime failed!");
+        }
         if (atime != null &&
             atime.to(TimeUnit.SECONDS) !=
             ze.getLastAccessTime().to(TimeUnit.SECONDS))
@@ -305,4 +309,52 @@
             Files.delete(zpath);
         }
     }
+
+    static void checkLastModifiedTimeDOS(FileTime mtime, ZipEntry ze) {
+        FileTime lmt = ze.getLastModifiedTime();
+        if ((lmt.to(TimeUnit.SECONDS) >>> 1) != (mtime.to(TimeUnit.SECONDS) >>> 1) ||
+            lmt.to(TimeUnit.MILLISECONDS) != ze.getTime() ||
+            lmt.to(TimeUnit.MILLISECONDS) % 1000 != 0) {
+            throw new RuntimeException("Timestamp: storing mtime in dos format failed!");
+        }
+    }
+
+    static void testNullMtime() throws Throwable {
+        Instant now = Instant.now();
+        FileTime ctime = FileTime.from(now);
+        FileTime atime = FileTime.from(now.plusSeconds(7));
+        FileTime mtime = FileTime.from(now.plusSeconds(13));
+        System.out.printf("--------------------%nTesting: [%s]/[%s]/[%s]%n",
+                          mtime, atime, ctime);
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        try (ZipOutputStream zos = new ZipOutputStream(baos)) {
+            ZipEntry ze = new ZipEntry("TestExtraTime.java");
+            ze.setCreationTime(ctime);
+            ze.setLastAccessTime(atime);
+            // ze.setLastModifiedTime(now);
+            ze.setTime(mtime.toMillis());
+            zos.putNextEntry(ze);
+            zos.write(new byte[] { 1,2 ,3, 4});
+        }
+
+        try (ZipInputStream zis = new ZipInputStream(
+                 new ByteArrayInputStream(baos.toByteArray()))) {
+            ZipEntry ze = zis.getNextEntry();
+            // check LOC
+            check(null, atime, ctime, ze, null);
+            checkLastModifiedTimeDOS(mtime, ze);
+        }
+
+        Path zpath = Paths.get(System.getProperty("test.dir", "."),
+                               "TestExtraTime.zip");
+        Files.copy(new ByteArrayInputStream(baos.toByteArray()), zpath);
+        try (ZipFile zf = new ZipFile(zpath.toFile())) {
+            ZipEntry ze = zf.getEntry("TestExtraTime.java");
+            // check CEN
+            checkLastModifiedTimeDOS(mtime, ze);
+        } finally {
+            Files.delete(zpath);
+        }
+    }
 }
--- a/test/jdk/javax/net/ssl/SSLSession/TestEnabledProtocols.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/javax/net/ssl/SSLSession/TestEnabledProtocols.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2018, 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
@@ -33,313 +33,251 @@
  *                  session
  *          4701722 protocol mismatch exceptions should be consistent between
  *                  SSLv3 and TLSv1
+ * @library /javax/net/ssl/templates
  * @run main/othervm TestEnabledProtocols
  * @author Ram Marti
  */
 
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import java.security.*;
-import javax.net.ssl.*;
-import java.security.cert.*;
-
-public class TestEnabledProtocols {
-
-    /*
-     * For each of the valid protocols combinations, start a server thread
-     * that sets up an SSLServerSocket supporting that protocol. Then run
-     * a client thread that attemps to open a connection with all
-     * possible protocol combinataion.  Verify that we get handshake
-     * exceptions correctly. Whenever the connection is established
-     * successfully, verify that the negotiated protocol was correct.
-     * See results file in this directory for complete results.
-     */
+import java.io.InputStream;
+import java.io.InterruptedIOException;
+import java.io.OutputStream;
+import java.security.Security;
+import java.util.Arrays;
 
-    static final String[][] protocolStrings = {
-                                {"TLSv1"},
-                                {"TLSv1", "SSLv2Hello"},
-                                {"TLSv1", "SSLv3"},
-                                {"SSLv3", "SSLv2Hello"},
-                                {"SSLv3"},
-                                {"TLSv1", "SSLv3", "SSLv2Hello"}
-                                };
+import javax.net.ssl.SSLException;
+import javax.net.ssl.SSLHandshakeException;
+import javax.net.ssl.SSLServerSocket;
+import javax.net.ssl.SSLSocket;
 
-    static final boolean [][] eXceptionArray = {
-        // Do we expect exception?       Protocols supported by the server
-        { false, true,  false, true,  true,  true }, // TLSv1
-        { false, false, false, true,  true,  false}, // TLSv1,SSLv2Hello
-        { false, true,  false, true,  false, true }, // TLSv1,SSLv3
-        { true,  true,  false, false, false, false}, // SSLv3, SSLv2Hello
-        { true,  true,  false, true,  false, true }, // SSLv3
-        { false, false, false, false, false, false } // TLSv1,SSLv3,SSLv2Hello
-        };
-
-    static final String[][] protocolSelected = {
-        // TLSv1
-        { "TLSv1",  null,   "TLSv1",  null,   null,     null },
-
-        // TLSv1,SSLv2Hello
-        { "TLSv1", "TLSv1", "TLSv1",  null,   null,    "TLSv1"},
-
-        // TLSv1,SSLv3
-        { "TLSv1",  null,   "TLSv1",  null,   "SSLv3",  null },
-
-        // SSLv3, SSLv2Hello
-        {  null,    null,   "SSLv3", "SSLv3", "SSLv3",  "SSLv3"},
+public class TestEnabledProtocols extends SSLSocketTemplate {
 
-        // SSLv3
-        {  null,    null,   "SSLv3",  null,   "SSLv3",  null },
-
-        // TLSv1,SSLv3,SSLv2Hello
-        { "TLSv1", "TLSv1", "TLSv1", "SSLv3", "SSLv3", "TLSv1" }
-
-    };
-
-    /*
-     * Where do we find the keystores?
-     */
-    final static String pathToStores = "../etc";
-    static String passwd = "passphrase";
-    static String keyStoreFile = "keystore";
-    static String trustStoreFile = "truststore";
-
-    /*
-     * Is the server ready to serve?
-     */
-    volatile static boolean serverReady = false;
-
-    /*
-     * Turn on SSL debugging?
-     */
-    final static boolean debug = false;
+    private final String[] serverProtocols;
+    private final String[] clientProtocols;
+    private final boolean exceptionExpected;
+    private final String selectedProtocol;
 
-    // use any free port by default
-    volatile int serverPort = 0;
-
-    volatile Exception clientException = null;
-
-    public static void main(String[] args) throws Exception {
-        // reset the security property to make sure that the algorithms
-        // and keys used in this test are not disabled.
-        Security.setProperty("jdk.tls.disabledAlgorithms", "");
+    public TestEnabledProtocols(String[] serverProtocols,
+            String[] clientProtocols, boolean exceptionExpected,
+            String selectedProtocol) {
+        this.serverProtocols = serverProtocols;
+        this.clientProtocols = clientProtocols;
+        this.exceptionExpected = exceptionExpected;
+        this.selectedProtocol = selectedProtocol;
+    }
 
-        String keyFilename =
-            System.getProperty("test.src", "./") + "/" + pathToStores +
-                "/" + keyStoreFile;
-        String trustFilename =
-            System.getProperty("test.src", "./") + "/" + pathToStores +
-                "/" + trustStoreFile;
-
-        System.setProperty("javax.net.ssl.keyStore", keyFilename);
-        System.setProperty("javax.net.ssl.keyStorePassword", passwd);
-        System.setProperty("javax.net.ssl.trustStore", trustFilename);
-        System.setProperty("javax.net.ssl.trustStorePassword", passwd);
-
-        if (debug)
-            System.setProperty("javax.net.debug", "all");
-
-        new TestEnabledProtocols();
+    @Override
+    protected void configureServerSocket(SSLServerSocket sslServerSocket) {
+        sslServerSocket.setEnabledProtocols(serverProtocols);
     }
 
-    TestEnabledProtocols() throws Exception  {
-        /*
-         * Start the tests.
-         */
-        SSLServerSocketFactory sslssf =
-            (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
-        SSLServerSocket sslServerSocket =
-            (SSLServerSocket) sslssf.createServerSocket(serverPort);
-        serverPort = sslServerSocket.getLocalPort();
-        // sslServerSocket.setNeedClientAuth(true);
+    @Override
+    protected void runServerApplication(SSLSocket socket) throws Exception {
+        try {
+            socket.startHandshake();
+
+            InputStream in = socket.getInputStream();
+            OutputStream out = socket.getOutputStream();
+            out.write(280);
+            in.read();
+        } catch (SSLHandshakeException se) {
+            // ignore it; this is part of the testing
+            // log it for debugging
+            System.out.println("Server SSLHandshakeException:");
+            se.printStackTrace(System.out);
+        } catch (InterruptedIOException ioe) {
+            // must have been interrupted, no harm
+        } catch (SSLException ssle) {
+            // The client side may have closed the socket.
+            System.out.println("Server SSLException:");
+            ssle.printStackTrace(System.out);
+        } catch (Exception e) {
+            System.out.println("Server exception:");
+            e.printStackTrace(System.out);
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    protected void runClientApplication(SSLSocket sslSocket) throws Exception {
+        try {
+            System.out.println("=== Starting new test run ===");
+            showProtocols("server", serverProtocols);
+            showProtocols("client", clientProtocols);
 
-        for (int i = 0; i < protocolStrings.length; i++) {
-            String [] serverProtocols = protocolStrings[i];
-            startServer ss = new startServer(serverProtocols,
-                sslServerSocket, protocolStrings.length);
-            ss.setDaemon(true);
-            ss.start();
-            for (int j = 0; j < protocolStrings.length; j++) {
-                String [] clientProtocols = protocolStrings[j];
-                startClient sc = new startClient(
-                    clientProtocols, serverProtocols,
-                    eXceptionArray[i][j], protocolSelected[i][j]);
-                sc.start();
-                sc.join();
-                if (clientException != null) {
-                    ss.requestStop();
-                    throw clientException;
-                }
+            sslSocket.setEnabledProtocols(clientProtocols);
+            sslSocket.startHandshake();
+
+            String protocolName = sslSocket.getSession().getProtocol();
+            System.out.println("Protocol name after getSession is " +
+                protocolName);
+
+            if (protocolName.equals(selectedProtocol)) {
+                System.out.println("** Success **");
+            } else {
+                System.out.println("** FAILURE ** ");
+                throw new RuntimeException
+                    ("expected protocol " + selectedProtocol +
+                     " but using " + protocolName);
             }
-            ss.requestStop();
-            System.out.println("Waiting for the server to complete");
-            ss.join();
+
+            InputStream in = sslSocket.getInputStream();
+            OutputStream out = sslSocket.getOutputStream();
+            in.read();
+            out.write(280);
+        } catch (SSLHandshakeException e) {
+            if (!exceptionExpected) {
+                System.out.println(
+                        "Client got UNEXPECTED SSLHandshakeException:");
+                e.printStackTrace(System.out);
+                System.out.println("** FAILURE **");
+                throw new RuntimeException(e);
+            } else {
+                System.out.println(
+                        "Client got expected SSLHandshakeException:");
+                e.printStackTrace(System.out);
+                System.out.println("** Success **");
+            }
+        } catch (Exception e) {
+            System.out.println("Client got UNEXPECTED Exception:");
+            e.printStackTrace(System.out);
+            System.out.println("** FAILURE **");
+            throw new RuntimeException(e);
         }
     }
 
-    class startServer extends Thread  {
-        private String[] enabledP = null;
-        SSLServerSocket sslServerSocket = null;
-        int numExpConns;
-        volatile boolean stopRequested = false;
+    public static void main(String[] args) throws Exception {
+        Security.setProperty("jdk.tls.disabledAlgorithms", "");
 
-        public startServer(String[] enabledProtocols,
-                            SSLServerSocket sslServerSocket,
-                            int numExpConns) {
-            super("Server Thread");
-            serverReady = false;
-            enabledP = enabledProtocols;
-            this.sslServerSocket = sslServerSocket;
-            sslServerSocket.setEnabledProtocols(enabledP);
-            this.numExpConns = numExpConns;
-        }
+        runCase(new String[] { "TLSv1" },
+                new String[] { "TLSv1" },
+                false, "TLSv1");
+        runCase(new String[] { "TLSv1" },
+                new String[] { "TLSv1", "SSLv2Hello" },
+                true, null);
+        runCase(new String[] { "TLSv1" },
+                new String[] { "TLSv1", "SSLv3" },
+                false, "TLSv1");
+        runCase(new String[] { "TLSv1" },
+                new String[] { "SSLv3", "SSLv2Hello" },
+                true, null);
+        runCase(new String[] { "TLSv1" },
+                new String[] { "SSLv3" },
+                true, null);
+        runCase(new String[] { "TLSv1" },
+                new String[] { "TLSv1", "SSLv3", "SSLv2Hello" },
+                true, null);
 
-        public void requestStop() {
-            stopRequested = true;
-        }
+        runCase(new String[] { "TLSv1", "SSLv2Hello" },
+                new String[] { "TLSv1" },
+                false, "TLSv1");
+        runCase(new String[] { "TLSv1", "SSLv2Hello" },
+                new String[] { "TLSv1", "SSLv2Hello" },
+                false, "TLSv1");
+        runCase(new String[] { "TLSv1", "SSLv2Hello" },
+                new String[] { "TLSv1", "SSLv3" },
+                false, "TLSv1");
+        runCase(new String[] { "TLSv1", "SSLv2Hello" },
+                new String[] { "SSLv3", "SSLv2Hello" },
+                true, null);
+        runCase(new String[] { "TLSv1", "SSLv2Hello" },
+                new String[] { "SSLv3" },
+                true, null);
+        runCase(new String[] { "TLSv1", "SSLv2Hello" },
+                new String[] { "TLSv1", "SSLv3", "SSLv2Hello" },
+                false, "TLSv1");
 
-        public void run() {
-            int conns = 0;
-            while (!stopRequested) {
-                SSLSocket socket = null;
-                try {
-                    serverReady = true;
-                    socket = (SSLSocket)sslServerSocket.accept();
-                    conns++;
-
-                    // set ready to false. this is just to make the
-                    // client wait and synchronise exception messages
-                    serverReady = false;
-                    socket.startHandshake();
-                    SSLSession session = socket.getSession();
-                    session.invalidate();
+        runCase(new String[] { "TLSv1", "SSLv3" },
+                new String[] { "TLSv1" },
+                false, "TLSv1");
+        runCase(new String[] { "TLSv1", "SSLv3" },
+                new String[] { "TLSv1", "SSLv2Hello" },
+                true, null);
+        runCase(new String[] { "TLSv1", "SSLv3" },
+                new String[] { "TLSv1", "SSLv3" },
+                false, "TLSv1");
+        runCase(new String[] { "TLSv1", "SSLv3" },
+                new String[] { "SSLv3", "SSLv2Hello" },
+                true, null);
+        runCase(new String[] { "TLSv1", "SSLv3" },
+                new String[] { "SSLv3" },
+                false, "SSLv3");
+        runCase(new String[] { "TLSv1", "SSLv3" },
+                new String[] { "TLSv1", "SSLv3", "SSLv2Hello" },
+                true, null);
 
-                    InputStream in = socket.getInputStream();
-                    OutputStream out = socket.getOutputStream();
-                    out.write(280);
-                    in.read();
+        runCase(new String[] { "SSLv3", "SSLv2Hello" },
+                new String[] { "TLSv1" },
+                true, null);
+        runCase(new String[] { "SSLv3", "SSLv2Hello" },
+                new String[] { "TLSv1", "SSLv2Hello" },
+                true, null);
+        runCase(new String[] { "SSLv3", "SSLv2Hello" },
+                new String[] { "TLSv1", "SSLv3" },
+                false, "SSLv3");
+        runCase(new String[] { "SSLv3", "SSLv2Hello" },
+                new String[] { "SSLv3", "SSLv2Hello" },
+                false, "SSLv3");
+        runCase(new String[] { "SSLv3", "SSLv2Hello" },
+                new String[] { "SSLv3" },
+                false, "SSLv3");
+        runCase(new String[] { "SSLv3", "SSLv2Hello" },
+                new String[] { "TLSv1", "SSLv3", "SSLv2Hello" },
+                false, "SSLv3");
 
-                    socket.close();
-                    // sleep for a while so that the server thread can be
-                    // stopped
-                    Thread.sleep(30);
-                } catch (SSLHandshakeException se) {
-                    // ignore it; this is part of the testing
-                    // log it for debugging
-                    System.out.println("Server SSLHandshakeException:");
-                    se.printStackTrace(System.out);
-                } catch (java.io.InterruptedIOException ioe) {
-                    // must have been interrupted, no harm
-                    break;
-                } catch (java.lang.InterruptedException ie) {
-                    // must have been interrupted, no harm
-                    break;
-                } catch (SSLException ssle) {
-                    // The client side may have closed the socket.
-                    System.out.println("Server SSLException:");
-                    ssle.printStackTrace(System.out);
-                } catch (Exception e) {
-                    System.out.println("Server exception:");
-                    e.printStackTrace(System.out);
-                    throw new RuntimeException(e);
-                } finally {
-                    try {
-                        if (socket != null) {
-                            socket.close();
-                        }
-                    } catch (IOException e) {
-                        // ignore
-                    }
-                }
-                if (conns >= numExpConns) {
-                    break;
-                }
-            }
-        }
+        runCase(new String[] { "SSLv3" },
+                new String[] { "TLSv1" },
+                true, null);
+        runCase(new String[] { "SSLv3" },
+                new String[] { "TLSv1", "SSLv2Hello" },
+                true, null);
+        runCase(new String[] { "SSLv3" },
+                new String[] { "TLSv1", "SSLv3" },
+                false, "SSLv3");
+        runCase(new String[] { "SSLv3" },
+                new String[] { "SSLv3", "SSLv2Hello" },
+                true, null);
+        runCase(new String[] { "SSLv3" },
+                new String[] { "SSLv3" },
+                false, "SSLv3");
+        runCase(new String[] { "SSLv3" },
+                new String[] { "TLSv1", "SSLv3", "SSLv2Hello" },
+                true, null);
+
+        runCase(new String[] { "TLSv1", "SSLv3", "SSLv2Hello" },
+                new String[] { "TLSv1" },
+                false, "TLSv1");
+        runCase(new String[] { "TLSv1", "SSLv3", "SSLv2Hello" },
+                new String[] { "TLSv1", "SSLv2Hello" },
+                false, "TLSv1");
+        runCase(new String[] { "TLSv1", "SSLv3", "SSLv2Hello" },
+                new String[] { "TLSv1", "SSLv3" },
+                false, "TLSv1");
+        runCase(new String[] { "TLSv1", "SSLv3", "SSLv2Hello" },
+                new String[] { "SSLv3", "SSLv2Hello" },
+                false, "SSLv3");
+        runCase(new String[] { "TLSv1", "SSLv3", "SSLv2Hello" },
+                new String[] { "SSLv3" },
+                false, "SSLv3");
+        runCase(new String[] { "TLSv1", "SSLv3", "SSLv2Hello" },
+                new String[] { "TLSv1", "SSLv3", "SSLv2Hello" },
+                false, "TLSv1");
+    }
+
+    private static void runCase(
+            String[] serverProtocols,
+            String[] clientProtocols,
+            boolean exceptionExpected,
+            String selectedProtocol) throws Exception {
+        new TestEnabledProtocols(
+                serverProtocols,
+                clientProtocols,
+                exceptionExpected,
+                selectedProtocol).run();
     }
 
     private static void showProtocols(String name, String[] protocols) {
-        System.out.println("Enabled protocols on the " + name + " are: " + Arrays.asList(protocols));
+        System.out.printf("Enabled protocols on the %s are: %s%n",
+                name,
+                Arrays.asList(protocols));
     }
-
-    class startClient extends Thread {
-        boolean hsCompleted = false;
-        boolean exceptionExpected = false;
-        private String[] enabledP = null;
-        private String[] serverP = null; // used to print the result
-        private String protocolToUse = null;
-
-        startClient(String[] enabledProtocol,
-                    String[] serverP,
-                    boolean eXception,
-                    String protocol) throws Exception {
-            super("Client Thread");
-            this.enabledP = enabledProtocol;
-            this.serverP = serverP;
-            this.exceptionExpected = eXception;
-            this.protocolToUse = protocol;
-        }
-
-        public void run() {
-            SSLSocket sslSocket = null;
-            try {
-                while (!serverReady) {
-                    Thread.sleep(50);
-                }
-                System.out.flush();
-                System.out.println("=== Starting new test run ===");
-                showProtocols("server", serverP);
-                showProtocols("client", enabledP);
-
-                SSLSocketFactory sslsf =
-                    (SSLSocketFactory)SSLSocketFactory.getDefault();
-                sslSocket = (SSLSocket)
-                    sslsf.createSocket("localhost", serverPort);
-                sslSocket.setEnabledProtocols(enabledP);
-                sslSocket.startHandshake();
-
-                SSLSession session = sslSocket.getSession();
-                session.invalidate();
-                String protocolName = session.getProtocol();
-                System.out.println("Protocol name after getSession is " +
-                    protocolName);
-
-                if (protocolName.equals(protocolToUse)) {
-                    System.out.println("** Success **");
-                } else {
-                    System.out.println("** FAILURE ** ");
-                    throw new RuntimeException
-                        ("expected protocol " + protocolToUse +
-                         " but using " + protocolName);
-                }
-
-                InputStream in = sslSocket.getInputStream();
-                OutputStream out = sslSocket.getOutputStream();
-                in.read();
-                out.write(280);
-
-                sslSocket.close();
-
-            } catch (SSLHandshakeException e) {
-                if (!exceptionExpected) {
-                    System.out.println("Client got UNEXPECTED SSLHandshakeException:");
-                    e.printStackTrace(System.out);
-                    System.out.println("** FAILURE **");
-                    clientException = e;
-                } else {
-                    System.out.println("Client got expected SSLHandshakeException:");
-                    e.printStackTrace(System.out);
-                    System.out.println("** Success **");
-                }
-            } catch (RuntimeException e) {
-                clientException = e;
-            } catch (Exception e) {
-                System.out.println("Client got UNEXPECTED Exception:");
-                e.printStackTrace(System.out);
-                System.out.println("** FAILURE **");
-                clientException = e;
-            }
-        }
-    }
-
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/net/ssl/TLSCommon/TestSessionLocalPrincipal.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,344 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.security.KeyFactory;
+import java.security.KeyStore;
+import java.security.Principal;
+import java.security.PrivateKey;
+import java.security.Security;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.util.Base64;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLServerSocket;
+import javax.net.ssl.SSLServerSocketFactory;
+import javax.net.ssl.SSLSocket;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManagerFactory;
+
+/*
+ * @test
+ * @bug 8206355
+ * @summary Test principal that was sent to the peer during handshake.
+ * @run main/othervm TestSessionLocalPrincipal
+ */
+public class TestSessionLocalPrincipal {
+
+    public static void main(String[] args) throws Exception {
+
+        Security.setProperty("jdk.tls.disabledAlgorithms", "");
+        for (String tlsProtocol : new String[]{
+            "TLSv1.3", "TLSv1.2", "TLSv1.1", "TLSv1"}) {
+            for (boolean clientAuth : new boolean[]{true, false}) {
+                System.out.printf("Protocol %s: Client side auth enabled: %s%n",
+                        tlsProtocol, clientAuth);
+                CountDownLatch serverReady = new CountDownLatch(1);
+                Server server = new Server(tlsProtocol, clientAuth,
+                        serverReady);
+                server.start();
+
+                // Wait till server is ready to accept connection.
+                serverReady.await();
+                new Client(tlsProtocol, clientAuth, server.port).doClientSide();
+                if (server.serverExc != null) {
+                    throw new RuntimeException(server.serverExc);
+                }
+            }
+        }
+    }
+
+    public static class Server implements Runnable {
+
+        private volatile int port = 0;
+        private final String tlsProtocol;
+        private final boolean clientAuth;
+        private final CountDownLatch latch;
+        private volatile Exception serverExc;
+
+        public Server(String tlsProtocol, boolean clientAuth,
+                CountDownLatch latch) {
+            this.tlsProtocol = tlsProtocol;
+            this.clientAuth = clientAuth;
+            this.latch = latch;
+        }
+
+        public void start() {
+
+            ExecutorService executor = null;
+            try {
+                executor = Executors.newCachedThreadPool(new ThreadFactory() {
+                    @Override
+                    public Thread newThread(Runnable r) {
+                        Thread t = Executors.defaultThreadFactory()
+                                .newThread(r);
+                        t.setDaemon(true);
+                        return t;
+                    }
+                });
+                executor.execute(this);
+            } finally {
+                if (executor != null) {
+                    executor.shutdown();
+                }
+            }
+        }
+
+        /*
+         * Define the server side operation.
+         */
+        void doServerSide() throws Exception {
+
+            SSLContext ctx = getSSLContext(tlsProtocol);
+            SSLServerSocketFactory sslssf = ctx.getServerSocketFactory();
+            SSLServerSocket sslServerSocket
+                    = (SSLServerSocket) sslssf.createServerSocket(port);
+            port = sslServerSocket.getLocalPort();
+            System.out.println("Server listining on port: " + port);
+            sslServerSocket.setEnabledProtocols(new String[]{tlsProtocol});
+            /*
+             * Signal Client, the server is ready to accept client request.
+             */
+            latch.countDown();
+            try (SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept()) {
+                sslSocket.setNeedClientAuth(this.clientAuth);
+                sslSocket.setSoTimeout(5000);
+                try (InputStream sslIS = sslSocket.getInputStream();
+                        OutputStream sslOS = sslSocket.getOutputStream();) {
+                    sslIS.read();
+                    sslOS.write(85);
+                    sslOS.flush();
+                }
+            } finally {
+                sslServerSocket.close();
+            }
+        }
+
+        @Override
+        public void run() {
+            try {
+                doServerSide();
+            } catch (Exception e) {
+                // Print the exception for debug purpose.
+                e.printStackTrace(System.out);
+                serverExc = e;
+            }
+        }
+    }
+
+    /*
+     * Define the client side of the test.
+     */
+    public static class Client {
+
+        private final int serverPort;
+        private final String tlsProtocol;
+        private final boolean clientAuth;
+
+        public Client(String tlsProtocol, boolean clientAuth, int serverPort) {
+            this.tlsProtocol = tlsProtocol;
+            this.clientAuth = clientAuth;
+            this.serverPort = serverPort;
+        }
+
+        void doClientSide() throws Exception {
+
+            SSLContext ctx = getSSLContext(this.tlsProtocol);
+            SSLSocketFactory sslsf = ctx.getSocketFactory();
+            try (SSLSocket sslSocket
+                    = (SSLSocket) sslsf.createSocket("localhost", serverPort)) {
+                sslSocket.setEnabledProtocols(new String[]{this.tlsProtocol});
+                Principal principal = sslSocket.getSession().getLocalPrincipal();
+                if (this.clientAuth && principal == null) {
+                    throw new RuntimeException("Principal can not be null");
+                }
+                if (!this.clientAuth && principal != null) {
+                    throw new RuntimeException("Principal should be null");
+                }
+                try (InputStream sslIS = sslSocket.getInputStream();
+                        OutputStream sslOS = sslSocket.getOutputStream()) {
+                    sslOS.write(86);
+                    sslOS.flush();
+                    sslIS.read();
+                }
+            }
+        }
+    }
+
+    // get the ssl context
+    protected static SSLContext getSSLContext(String tlsProtocol)
+            throws Exception {
+
+        // Generate certificate from cert string
+        CertificateFactory cf = CertificateFactory.getInstance("X.509");
+
+        // Create a key store
+        KeyStore ts = KeyStore.getInstance("PKCS12");
+        KeyStore ks = KeyStore.getInstance("PKCS12");
+        ts.load(null, null);
+        ks.load(null, null);
+        char passphrase[] = "passphrase".toCharArray();
+
+        // Import the trusted cert
+        ts.setCertificateEntry("trusted-cert-"
+                + KeyType.rsa_pkcs1_sha256.getKeyType(),
+                cf.generateCertificate(new ByteArrayInputStream(
+                        KeyType.rsa_pkcs1_sha256.getTrustedCert().getBytes())));
+
+        boolean hasKeyMaterials = KeyType.rsa_pkcs1_sha256.getEndCert() != null
+                && KeyType.rsa_pkcs1_sha256.getPrivateKey() != null;
+        if (hasKeyMaterials) {
+
+            // Generate the private key.
+            PKCS8EncodedKeySpec priKeySpec = new PKCS8EncodedKeySpec(
+                    Base64.getMimeDecoder().decode(
+                            KeyType.rsa_pkcs1_sha256.getPrivateKey()));
+            KeyFactory kf = KeyFactory.getInstance(
+                    KeyType.rsa_pkcs1_sha256.getKeyType());
+            PrivateKey priKey = kf.generatePrivate(priKeySpec);
+
+            // Generate certificate chain
+            Certificate keyCert = cf.generateCertificate(
+                    new ByteArrayInputStream(
+                            KeyType.rsa_pkcs1_sha256.getEndCert().getBytes()));
+            Certificate[] chain = new Certificate[]{keyCert};
+
+            // Import the key entry.
+            ks.setKeyEntry("cert-" + KeyType.rsa_pkcs1_sha256.getKeyType(),
+                    priKey, passphrase, chain);
+        }
+
+        // Create SSL context
+        TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX");
+        tmf.init(ts);
+
+        SSLContext context = SSLContext.getInstance(tlsProtocol);
+        if (hasKeyMaterials) {
+            KeyManagerFactory kmf = KeyManagerFactory.getInstance("NewSunX509");
+            kmf.init(ks, passphrase);
+            context.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
+        } else {
+            context.init(null, tmf.getTrustManagers(), null);
+        }
+        return context;
+    }
+}
+
+enum KeyType {
+
+    rsa_pkcs1_sha256(
+            "RSA",
+            /**
+             * Signature Algorithm: sha256WithRSAEncryption
+             * Issuer: CN = localhost
+             * Validity Not Before: Jun 4 15:22:04 2018 GMT
+             * Not After: May 30 15:22:04 2038 GMT
+             * Subject: CN = localhost
+             * Public Key Algorithm: rsaEncryption
+             */
+            "-----BEGIN CERTIFICATE-----\n"
+            + "MIIDBjCCAe6gAwIBAgIUc8yTYekR2LuXkkCJYqWlS/pBMKIwDQYJKoZIhvcNAQEL\n"
+            + "BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTE4MDYwNDE1MjIwNFoXDTM4MDUz\n"
+            + "MDE1MjIwNFowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF\n"
+            + "AAOCAQ8AMIIBCgKCAQEA2jDPGMogc9dq2w5b+FHqbfaGPokRmyObiU8y/l/dqkM5\n"
+            + "9IV+qj8VQUI4NtpdCTWr16812z4AjXrk5HIBrECfQbHPUcm1rme5YVZ0WxV0+Ufy\n"
+            + "hDmrGwDLhkxGqc3hOhRrlF2wdXeUfjIzhvS9+S/401++t/jvq+cqFF1BHnzYOu+l\n"
+            + "nbi/o95Oqo8MlwiRqg3xy3fNRfqXk7DWy+QT8s+Vc3Pcj1EW6K0iJJ23BVTdv6YT\n"
+            + "Ja5IKiWL4XsLht3fWvZwF+PoYfKb+JYflt0rafpxg9xkowe7GnGh2SpV7bJaH/QN\n"
+            + "3PTFEKQWgWHjWwjR171GOzSaEgaklvKde6+zNWeYKwIDAQABo1AwTjAdBgNVHQ4E\n"
+            + "FgQUqCtGe8/Ky4O6pH7xeTUy9yrv4n0wHwYDVR0jBBgwFoAUqCtGe8/Ky4O6pH7x\n"
+            + "eTUy9yrv4n0wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAuqch30im\n"
+            + "M09sARarbfK3OExqYK2xoyuUscgTqQNDpNL2gMdXY9e0lTmGVgw9pVYtNZPZRxem\n"
+            + "jR5an2XegvG9qVU6vLENDwLCqZgsTb2gvmXngiG8NVcYd81GNqD228mkgBosNJku\n"
+            + "6BR+C8zlURzsNEt657eVvIp9ObGomdAbWhpdqihBD180PP18DIBWopyfHfJtT5FA\n"
+            + "U2kSPBp+P1EtdceW0zfwv3rF8hwRbnQBzuoYrZfn2PiMYaGUqOgbqUltCMD/Dp9G\n"
+            + "xK0nfAXEwIqHWWnijGwAd6YrszMjBUcSGmlehdF+XZK6jHNlw64RB4WTfavr+rY0\n"
+            + "dTe6g4o5GYr9nQ==\n"
+            + "-----END CERTIFICATE-----\n",
+            //
+            // Private key.
+            //
+            "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDaMM8YyiBz12rb\n"
+            + "Dlv4Uept9oY+iRGbI5uJTzL+X92qQzn0hX6qPxVBQjg22l0JNavXrzXbPgCNeuTk\n"
+            + "cgGsQJ9Bsc9RybWuZ7lhVnRbFXT5R/KEOasbAMuGTEapzeE6FGuUXbB1d5R+MjOG\n"
+            + "9L35L/jTX763+O+r5yoUXUEefNg676WduL+j3k6qjwyXCJGqDfHLd81F+peTsNbL\n"
+            + "5BPyz5Vzc9yPURborSIknbcFVN2/phMlrkgqJYvhewuG3d9a9nAX4+hh8pv4lh+W\n"
+            + "3Stp+nGD3GSjB7sacaHZKlXtslof9A3c9MUQpBaBYeNbCNHXvUY7NJoSBqSW8p17\n"
+            + "r7M1Z5grAgMBAAECggEAHs/7vw10TcejEHJTrJqs14CT7qresKDzqw1jLycMn6nE\n"
+            + "unJLs/EaqE+Yrq5hqxZIQTo+CcsUuuYbAuPStqedleJtW6h3nryJImTaI67BCR8O\n"
+            + "8XtPXY3cMAf/hqVLZC9UDey5Ka2Ma9HdEvbnCRSsN/VycnqWJhmMCLouowaQZqoE\n"
+            + "VopscUix8GqELv0vEo2CszZfUjtSVbNTlNgwDf5U7eSKXMuFsnSn/LE7AMvHsEyo\n"
+            + "HatxogwlM/WjpTnf/WIeJY3VhaK10IsP6OEgUn/p4VtI2DQ/TJdgYrvD5vhjY8ip\n"
+            + "XuUPuPILRvJWo8dRXJqa4diXB12q5YhP8iiOp4BgkQKBgQD1GtlOR+JVgOzpQ11h\n"
+            + "s5/iJOsczee80pQscbSRJnzSsIaP9WM8CyJgvbPxIQxLUQeYnxM/bxNKkpJtzxRK\n"
+            + "pob+v4NoRn8PTpqbOp1obmWJT7uHTaoeavQo7r7uZI4i3eEgHCCQkMzpqzz7UFTY\n"
+            + "2Yst7bBTPUivlSVQQBEc8bLpeQKBgQDj47EjpAlh8DmJRTElg58t+XJehXGTqmlx\n"
+            + "nYu8DQLSzGbOQ/Z4srakC1mkM0LHCmULIIWk3KhV1GBCeArv7DlZ9A1SkI95bsq9\n"
+            + "GBeQpovL0PXKkOOWMJBklP/CTECO4eyA8r6c1d8wytBb6MrJ8bi74DdT+JlFjK5A\n"
+            + "zNoeNx6JwwKBgQCehIPABeuSYvRVlDTDqFkh98B6+4wBaatc5xjhuyOFW5dbaVeJ\n"
+            + "kKXmLSpAK6B44WnpQhA/uUWfuBWtoPy9nt+1yARjnxwzuSFyfUEqNiPC32coBYmd\n"
+            + "bIyGIIopQa1PTXJ4wtgoxw1PnmitHHITYPaLeKrN2te0fuAH+7dVodeU+QKBgAct\n"
+            + "VJbaw7Dh7+3yz+lui8TW5lMzwK/13fxGCfCSOFSLO3Gjkk+a0UW5VclmE+RQ333K\n"
+            + "OGtIx8RsO9vcC/wiZGwA06qWAu7AHoJ2D8fudtikbBlFFuXUAbgpOSTVYfMeCmTF\n"
+            + "QFuQIMdYm9dJLZnOkxLXrOZoHeui0poX2Ya6FawhAoGAAI/QCyDbuvnJzGmjSbvl\n"
+            + "5Ndr9lNAansCXaUzXuVLp6dD6PnB8HVCE8tdETZrcXseyTBeltaxAhj+tCybJvDO\n"
+            + "sV8UmPR0w9ibExmUIVGX5BpoRlB/KWxEG3ar/wJbUZVZ2oSdIAZvCvdbN956SLDg\n"
+            + "Pg5M5wrRqs71s2EiIJd0HrU="
+    );
+    private final String keyType;
+    private final String trustedCert;
+    private final String endCert;
+    private final String privateKey;
+
+    private KeyType(String keyType, String selfCert, String privateKey) {
+        this.keyType = keyType;
+        this.trustedCert = selfCert;
+        this.endCert = selfCert;
+        this.privateKey = privateKey;
+    }
+
+    public String getKeyType() {
+        return keyType;
+    }
+
+    public String getTrustedCert() {
+        return trustedCert;
+    }
+
+    public String getEndCert() {
+        return endCert;
+    }
+
+    public String getPrivateKey() {
+        return privateKey;
+    }
+}
--- a/test/jdk/javax/net/ssl/compatibility/Compatibility.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/javax/net/ssl/compatibility/Compatibility.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, 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
@@ -51,6 +51,7 @@
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import jdk.test.lib.process.OutputAnalyzer;
 
@@ -157,10 +158,6 @@
                                 "ServerStatus=%s, ClientStatus=%s, CaseStatus=%s%n",
                                 serverStatus, clientStatus, testCase.getStatus());
 
-                        // Confirm the server has stopped.
-                        if(new File(Utils.PORT_LOG).exists()) {
-                            throw new RuntimeException("Server doesn't stop.");
-                        }
                         System.out.println("----- Case end -----");
                     }
                 }
@@ -236,10 +233,12 @@
     private static List<String> jdkList(String listFileProp) throws IOException {
         String listFile = System.getProperty(listFileProp);
         System.out.println(listFileProp + "=" + listFile);
-        if (listFile != null && new File(listFile).exists()) {
-            return Files.lines(Paths.get(listFile))
-                        .filter(line -> { return !line.trim().isEmpty(); })
-                        .collect(Collectors.toList());
+        if (listFile != null && Files.exists(Paths.get(listFile))) {
+            try (Stream<String> lines = Files.lines(Paths.get(listFile))) {
+                return lines.filter(line -> {
+                    return !line.trim().isEmpty();
+                }).collect(Collectors.toList());
+            }
         } else {
             return new ArrayList<>();
         }
@@ -263,12 +262,13 @@
 
     // Retrieves the latest server port from port.log.
     private static int getServerPort() throws IOException {
-        if (!new File(Utils.PORT_LOG).exists()) {
+        if (!Files.exists(Paths.get(Utils.PORT_LOG))) {
             return -1;
         }
 
-        return Integer.valueOf(
-                Files.lines(Paths.get(Utils.PORT_LOG)).findFirst().get());
+        try (Stream<String> lines = Files.lines(Paths.get(Utils.PORT_LOG))) {
+            return Integer.valueOf(lines.findFirst().get());
+        }
     }
 
     private static OutputAnalyzer runServer(String jdkPath,
--- a/test/jdk/javax/net/ssl/compatibility/Server.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/javax/net/ssl/compatibility/Server.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, 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
@@ -146,10 +146,9 @@
                 server.close();
             }
 
-            // Cleanups port.log.
-            File file = new File(Utils.PORT_LOG);
-            if (file.exists()) {
-                file.delete();
+            // Cleanups port log.
+            if (!new File(Utils.PORT_LOG).delete()) {
+                throw new RuntimeException("Cannot delete port log");
             }
         }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/sound/sampled/Clip/AutoCloseTimeCheck.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+import java.applet.AudioClip;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.util.concurrent.TimeUnit;
+
+import javax.sound.sampled.AudioFileFormat.Type;
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.AudioInputStream;
+import javax.sound.sampled.AudioSystem;
+
+import static javax.sound.sampled.AudioFormat.Encoding.PCM_SIGNED;
+import static javax.sound.sampled.AudioSystem.NOT_SPECIFIED;
+
+/**
+ * @test
+ * @bug 8202264
+ */
+public final class AutoCloseTimeCheck {
+
+    public static void main(final String[] args) throws Exception {
+        // Prepare the audio file
+        File file = new File("audio.wav");
+        try {
+            AudioFormat format =
+                    new AudioFormat(PCM_SIGNED, 44100, 8, 1, 1, 44100, false);
+            AudioSystem.write(getStream(format), Type.WAVE, file);
+        } catch (final Exception ignored) {
+            return; // the test is not applicable
+        }
+        try {
+            testSmallDelay(file);
+            testBigDelay(file);
+        } finally {
+            Files.delete(file.toPath());
+        }
+    }
+
+    /**
+     * Checks that after a big period of non-activity the clip will be closed
+     * and the "Direct Clip" thread will stop.
+     */
+    private static void testBigDelay(final File file) throws Exception {
+        AudioClip clip = (AudioClip) file.toURL().getContent();
+        clip.loop();
+        clip.stop();
+        sleep(20000); // 20 sec for slow systems
+        if (count() != 0) {
+            throw new RuntimeException("Thread was found");
+        }
+    }
+
+    /**
+     * Checks that after small period of non-activity the clip will not be
+     * closed and the "Direct Clip" thread will alive.
+     */
+    private static void testSmallDelay(final File file) throws IOException {
+        AudioClip clip = (AudioClip) file.toURL().getContent();
+        long threadID = 0;
+        // Will run the test no more than 15 seconds
+        long endtime = System.nanoTime() + TimeUnit.SECONDS.toNanos(15);
+        while (endtime - System.nanoTime() > 0) {
+            clip.loop();
+            sleep(500);
+
+            long data = count();
+            if (data != threadID) {
+                System.out.println("Playing on new thread: " + data + " at "
+                                           + new java.util.Date());
+                if (threadID == 0) {
+                    threadID = data;
+                } else {
+                    throw new RuntimeException("Thread was changed");
+                }
+            }
+
+            clip.stop();
+            sleep(500);
+        }
+    }
+
+    private static void sleep(int millis) {
+        try {
+            Thread.sleep(millis);
+        } catch (InterruptedException ignored) {
+        }
+    }
+
+    private static long count() {
+        for (final Thread t : Thread.getAllStackTraces().keySet()) {
+            if (t.getName().equals("Direct Clip")) {
+                return t.getId();
+            }
+        }
+        return 0;
+    }
+
+    private static AudioInputStream getStream(final AudioFormat format) {
+        final int dataSize = 5000 * format.getFrameSize();
+        final InputStream in = new ByteArrayInputStream(new byte[dataSize]);
+        return new AudioInputStream(in, format, NOT_SPECIFIED);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/swing/GraphicsConfigNotifier/OrderOfGConfigNotify.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+import java.awt.EventQueue;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+
+/**
+ * @test
+ * @key headful
+ * @bug 8201552
+ * @summary Container should get "graphicsConfiguration" notification when all
+ *          its children are updated
+ */
+public final class OrderOfGConfigNotify {
+
+    private static String name = "graphicsConfiguration";
+
+    public static void main(final String[] args) throws Exception {
+        EventQueue.invokeAndWait(() -> {
+            AtomicBoolean parentCalled = new AtomicBoolean(false);
+            AtomicBoolean childCalled = new AtomicBoolean(false);
+
+            JFrame frame = new JFrame();
+
+            JPanel parent = new JPanel();
+            parent.addPropertyChangeListener(evt -> {
+                if (!evt.getPropertyName().equals(name)) {
+                    return;
+                }
+                if (!childCalled.get()) {
+                    throw new RuntimeException("Parent is called/child is not");
+                }
+                parentCalled.set(true);
+                if (parent.getGraphicsConfiguration() == null) {
+                    throw new RuntimeException("GraphicsConfiguration is null");
+                }
+            });
+            JPanel child = new JPanel();
+            child.addPropertyChangeListener(evt -> {
+                if (!evt.getPropertyName().equals(name)) {
+                    return;
+                }
+                childCalled.set(true);
+                if (child.getGraphicsConfiguration() == null) {
+                    throw new RuntimeException("GraphicsConfiguration is null");
+                }
+            });
+            parent.add(child);
+
+            // Frame.add() should update graphicsConfiguration for all hierarchy
+            frame.add(parent);
+            if (!parentCalled.get() || !childCalled.get()) {
+                throw new RuntimeException("Property listener was not called");
+            }
+        });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/swing/GraphicsConfigNotifier/StalePreferredSize.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,212 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.EventQueue;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.Callable;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JEditorPane;
+import javax.swing.JFormattedTextField;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JRadioButton;
+import javax.swing.JScrollPane;
+import javax.swing.JSpinner;
+import javax.swing.JTable;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.JToolTip;
+import javax.swing.JTree;
+import javax.swing.SpinnerListModel;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.tree.DefaultMutableTreeNode;
+
+import static javax.swing.UIManager.getInstalledLookAndFeels;
+
+/**
+ * @test
+ * @key headful
+ * @bug 8201552
+ * @summary Initial layout of the component should use correct graphics config.
+ *          It is checked by SwingUtilities.updateComponentTreeUI(), if layout
+ *          was correct the call to updateComponentTreeUI() will be no-op.
+ * @compile -encoding utf-8 StalePreferredSize.java
+ * @run main/othervm/timeout=200 StalePreferredSize
+ * @run main/othervm/timeout=200 -Dsun.java2d.uiScale=1 StalePreferredSize
+ * @run main/othervm/timeout=200 -Dsun.java2d.uiScale=2.25 StalePreferredSize
+ */
+public final class StalePreferredSize {
+
+    // Some text to be tested
+    static final String TEXT[] = new String[]{
+            "<span>A few words to get started before the "
+                    + "bug</span><span>overlapping text</span>",
+            "A quick brown fox jumps over the lazy dog",
+            "El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña "
+                    + "tocaba el saxofón detrás del palenque de paja",
+            "Voix ambiguë d’un cœur qui au zéphyr préfère les jattes de kiwis",
+            "다람쥐 헌 쳇바퀴에 타고파",
+            "Съешь ещё этих мягких французских булок да выпей же чаю"};
+
+    static JFrame frame;
+    static Component component;
+    static int typeFont = 0; // 0 - default, 1 - bold, 2 - italic
+
+    public static void main(final String[] args) throws Exception {
+        for (final UIManager.LookAndFeelInfo laf : getInstalledLookAndFeels()) {
+            EventQueue.invokeAndWait(() -> setLookAndFeel(laf));
+            for (typeFont = 0; typeFont < 3; typeFont++) {
+                System.err.println("typeFont = " + typeFont);
+                for (final boolean html : new boolean[]{true, false}) {
+                    for (String text : TEXT) {
+                        if (html) {
+                            text = "<html>" + text + "</html>";
+                        }
+                        test(text);
+                    }
+                }
+            }
+        }
+    }
+
+    private static void test(String text) throws Exception {
+        System.err.println("text = " + text);
+        // Each Callable create a component to be tested
+        final List<Callable<Component>> comps = List.of(
+                () -> new JLabel(text),
+                () -> new JButton(text),
+                () -> new JMenuItem(text),
+                () -> new JMenu(text),
+                () -> new JList<>(new String[]{text}),
+                () -> new JComboBox<>(new String[]{text}),
+                () -> new JTextField(text),
+                () -> new JTextArea(text),
+                () -> new JCheckBox(text),
+                () -> new JFormattedTextField(text),
+                () -> new JRadioButton(text),
+                () -> new JTree(new DefaultMutableTreeNode(text)),
+                () -> new JSpinner(new SpinnerListModel(new String[]{text})),
+                () -> {
+                    JToolTip tip = new JToolTip();
+                    tip.setTipText(text);
+                    return tip;
+                    },
+                () -> {
+                    JEditorPane pane = new JEditorPane();
+                    pane.setText(text);
+                    return pane;
+                    },
+                () -> {
+                    JTable table = new JTable(1, 1);
+                    table.getModel().setValueAt(text, 0, 0);
+                    return table;
+                    }
+        );
+
+        for (final Callable<Component> creator : comps) {
+            checkComponent(creator);
+        }
+    }
+
+    static void checkComponent(Callable<Component> creator) throws Exception {
+        EventQueue.invokeAndWait(() -> {
+
+            try {
+                component = creator.call();
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+
+            Font font = component.getFont();
+            if (typeFont == 1) {
+                component.setFont(new Font(font.deriveFont(Font.BOLD).getAttributes()));
+            }
+            if (typeFont == 2) {
+                component.setFont(new Font(font.deriveFont(Font.ITALIC).getAttributes()));
+            }
+
+            frame = new JFrame();
+            frame.setLayout(new FlowLayout());
+            frame.add(new JScrollPane(component));
+            frame.setSize(300, 100);
+            frame.setLocationRelativeTo(null);
+            frame.setVisible(true);
+        });
+
+        EventQueue.invokeAndWait(() -> {
+
+            // After the frame was shown we change nothing, so current layout
+            // should be optimal and updateComponentTreeUI() should be no-op
+            Dimension before = component.getPreferredSize();
+            SwingUtilities.updateComponentTreeUI(frame);
+            Dimension after = component.getPreferredSize();
+
+            // We change the font size to some big value, as a result the
+            // layout and preferredSize of the component should be changed
+            component.setFont(component.getFont().deriveFont(35f));
+            Dimension last = component.getPreferredSize();
+
+            frame.dispose();
+
+            if (!Objects.equals(before, after)) {
+                System.err.println("Component: " + component);
+                System.err.println("Before: " + before);
+                System.err.println("After: " + after);
+                throw new RuntimeException("Wrong PreferredSize");
+            }
+            // TODO JDK-8206024
+//            if (Objects.equals(after, last)) {
+//                System.err.println("Component: " + component);
+//                System.err.println("After: " + after);
+//                System.err.println("Last: " + last);
+//                throw new RuntimeException("Wrong PreferredSize");
+//            }
+        });
+    }
+
+    private static void setLookAndFeel(final UIManager.LookAndFeelInfo laf) {
+        try {
+            UIManager.setLookAndFeel(laf.getClassName());
+            System.err.println("LookAndFeel: " + laf.getClassName());
+        } catch (final UnsupportedLookAndFeelException ignored) {
+            System.err.println(
+                    "Unsupported LookAndFeel: " + laf.getClassName());
+        } catch (ClassNotFoundException | InstantiationException |
+                IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/swing/GraphicsConfigNotifier/TestSingleScreenGConfigNotify.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+import java.awt.EventQueue;
+import java.awt.GraphicsConfiguration;
+import java.util.Objects;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+
+/**
+ * @test
+ * @key headful
+ * @bug 8201552
+ * @summary Verifies if graphicsConfiguration property notification is sent
+ *          when frame is shown on the screen.
+ * @run main TestSingleScreenGConfigNotify
+ * @run main/othervm -Dsun.java2d.uiScale=2.25 TestSingleScreenGConfigNotify
+ */
+public final class TestSingleScreenGConfigNotify {
+
+    private static String name = "graphicsConfiguration";
+    private static CountDownLatch go = new CountDownLatch(1);
+    private static JFrame frame;
+    private static GraphicsConfiguration after;
+    private static GraphicsConfiguration before;
+    private static JButton button;
+
+    public static void main(final String[] args) throws Exception {
+        EventQueue.invokeAndWait(() -> {
+            frame = new JFrame();
+
+            frame.setSize(300,300);
+            frame.setLocationRelativeTo(null);
+            button = new JButton();
+            button.addPropertyChangeListener(evt -> {
+                if (evt.getPropertyName().equals(name)) {
+                    go.countDown();
+                }
+            });
+
+            before = button.getGraphicsConfiguration();
+
+            frame.add(button);
+            frame.setVisible(true);
+        });
+
+        boolean called = go.await(10, TimeUnit.SECONDS);
+
+        EventQueue.invokeAndWait(() -> {
+            after = button.getGraphicsConfiguration();
+            frame.dispose();
+        });
+
+        if (Objects.equals(before, after) && called) {
+            throw new RuntimeException("propertyChange() should not be called");
+        }
+        if (!Objects.equals(before, after) && !called) {
+            throw new RuntimeException("propertyChange() should be called");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/swing/reliability/HangDuringStaticInitialization.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+import java.net.URI;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
+
+/**
+ * @test
+ * @bug 8189604
+ * @run main/othervm -Djava.awt.headless=false HangDuringStaticInitialization
+ * @run main/othervm -Djava.awt.headless=true HangDuringStaticInitialization
+ */
+public final class HangDuringStaticInitialization {
+
+    public static void main(final String[] args) throws Exception {
+        FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
+        test(fs, "/modules/java.desktop");
+        test(fs, "/modules/java.datatransfer");
+    }
+
+    private static void test(FileSystem fs, String s) throws Exception {
+        Files.walkFileTree(fs.getPath(s), new SimpleFileVisitor<>() {
+            @Override
+            public FileVisitResult visitFile(Path file,
+                                             BasicFileAttributes attrs) {
+                file = file.subpath(2, file.getNameCount());
+                String name = file.toString();
+                if (name.endsWith(".class")) {
+                    name = name.substring(0, name.indexOf(".")).replace('/', '.');
+                    try {
+                        Class.forName(name, true, null);
+                    } catch (Throwable e) {
+                        // only the crash / hang will be considered as failure
+                    }
+                }
+                return FileVisitResult.CONTINUE;
+            }
+        });
+    }
+}
\ No newline at end of file
--- a/test/jdk/jdk/internal/platform/docker/MetricsMemoryTester.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/jdk/internal/platform/docker/MetricsMemoryTester.java	Thu Jul 12 11:09:23 2018 -0700
@@ -95,10 +95,11 @@
 
     private static void testKernelMemoryLimit(String value) {
         long limit = getMemoryValue(value);
-        if (limit != Metrics.systemMetrics().getKernelMemoryLimit()) {
+        long kmemlimit = Metrics.systemMetrics().getKernelMemoryLimit();
+        if (kmemlimit != 0 && limit != kmemlimit) {
             throw new RuntimeException("Kernel Memory limit not equal, expected : ["
                     + limit + "]" + ", got : ["
-                    + Metrics.systemMetrics().getKernelMemoryLimit() + "]");
+                    + kmemlimit + "]");
         }
         System.out.println("TEST PASSED!!!");
     }
--- a/test/jdk/jdk/jfr/event/os/TestCPUInformation.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/jdk/jfr/event/os/TestCPUInformation.java	Thu Jul 12 11:09:23 2018 -0700
@@ -53,8 +53,8 @@
             Events.assertField(event, "hwThreads").atLeast(1);
             Events.assertField(event, "cores").atLeast(1);
             Events.assertField(event, "sockets").atLeast(1);
-            Events.assertField(event, "cpu").containsAny("Intel", "AMD", "Unknown x86", "sparc", "ARM", "PPC", "PowerPC", "AArch64");
-            Events.assertField(event, "description").containsAny("Intel", "AMD", "Unknown x86", "SPARC", "ARM", "PPC", "PowerPC", "AArch64");
+            Events.assertField(event, "cpu").containsAny("Intel", "AMD", "Unknown x86", "sparc", "ARM", "PPC", "PowerPC", "AArch64", "s390");
+            Events.assertField(event, "description").containsAny("Intel", "AMD", "Unknown x86", "SPARC", "ARM", "PPC", "PowerPC", "AArch64", "zArch");
         }
     }
 }
--- a/test/jdk/sun/management/jmxremote/bootstrap/management_ssltest11_ok.properties.in	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/sun/management/jmxremote/bootstrap/management_ssltest11_ok.properties.in	Thu Jul 12 11:09:23 2018 -0700
@@ -1,6 +1,6 @@
-com.sun.management.jmxremote.ssl.enabled.cipher.suites=SSL_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_RC4_128_MD5
-com.sun.management.jmxremote.ssl.enabled.protocols=SSLv2Hello,SSLv3,TLSv1
+com.sun.management.jmxremote.ssl.enabled.cipher.suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384
+com.sun.management.jmxremote.ssl.enabled.protocols=SSLv2Hello,SSLv3,TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
 com.sun.management.jmxremote.ssl.need.client.auth=true
 com.sun.management.jmxremote.ssl.config.file=@TEST-SRC@/jmxremote_ssltest11_ok.ssl
 com.sun.management.jmxremote.authenticate=false
-javax.rmi.ssl.client.enabledCipherSuites=SSL_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_RC4_128_MD5
+javax.rmi.ssl.client.enabledCipherSuites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/sun/management/jmxremote/bootstrap/management_ssltest15_ok.properties.in	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,6 @@
+com.sun.management.jmxremote.ssl.enabled.cipher.suites=TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA
+com.sun.management.jmxremote.ssl.enabled.protocols=SSLv2Hello,SSLv3,TLSv1
+com.sun.management.jmxremote.ssl.need.client.auth=true
+com.sun.management.jmxremote.ssl.config.file=@TEST-SRC@/jmxremote_ssltest11_ok.ssl
+com.sun.management.jmxremote.authenticate=false
+javax.rmi.ssl.client.enabledCipherSuites=TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA
--- a/test/jdk/sun/management/jmxremote/bootstrap/ssl/Readme.txt	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/sun/management/jmxremote/bootstrap/ssl/Readme.txt	Thu Jul 12 11:09:23 2018 -0700
@@ -1,11 +1,10 @@
 The trustore and keystore are to be generated as follows:
 
-1. keytool -genkey -alias duke -keystore keystore -validity 36500
+1. keytool -genkey -alias duke -keyalg RSA -keysize 2048 -validity 36500 -keystore keystore -storepass password
 - use password 'password' for the keystore and key passwords
 - leave all values at default
 - the certificate validity will be 100 years (should be enough for now)
 2. keytool -export -keystore keystore -alias duke -file duke.crt
-3. keytool -import -keystore truststore -alias duke -file duke.crt
+3. keytool -import -alias duke -file duke.crt -keystore truststore -storepass trustword
 - use password 'trustword' for the keystore and key passwords
 - leave all values at default
-
Binary file test/jdk/sun/management/jmxremote/bootstrap/ssl/keystore has changed
Binary file test/jdk/sun/management/jmxremote/bootstrap/ssl/truststore has changed
--- a/test/jdk/sun/nio/cs/TestIBMBugs.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/sun/nio/cs/TestIBMBugs.java	Thu Jul 12 11:09:23 2018 -0700
@@ -30,6 +30,7 @@
 import java.io.*;
 import java.nio.*;
 import java.nio.charset.*;
+import java.util.Arrays;
 
 public class TestIBMBugs {
 
@@ -173,6 +174,53 @@
         }
     }
 
+    private static void bug8202329() throws Exception {
+        String original = "\\\u007E\u00A5\u203E"; // [backslash][tilde][yen][overscore]
+        byte[] expectedBytes; // bytes after conversion
+        String expectedStringfromBytes; // String constructed from bytes
+
+        Charset charset; // charset used for conversion
+
+        ByteBuffer bb; // Buffer that holds encoded bytes
+        byte[]  ba; // byte array that holds encoded bytes
+
+        CharBuffer cb; // Buffer that holds decoded chars
+
+
+        // Test IBM943, where \ and ~ are encoded to unmappable i.e., 0x3f
+        // and [yen] and [overscore] are encoded to 0x5c and 0x7e
+        charset = Charset.forName("IBM943");
+        expectedBytes = new byte[] {0x3f, 0x3f, 0x5c, 0x7e};
+        expectedStringfromBytes = "??\u00A5\u203E";
+        bb = charset.encode(original);
+        ba = new byte[bb.remaining()];
+        bb.get(ba, 0, ba.length);
+        if(!Arrays.equals(ba, expectedBytes)) {
+            throw new Exception("IBM943 failed to encode");
+        }
+        cb = charset.decode(ByteBuffer.wrap(expectedBytes));
+        if(!cb.toString().equals(expectedStringfromBytes)) {
+            throw new Exception("IBM943 failed to decode");
+        }
+
+
+        // Test IBM943C, where \ and ~ are encoded to 0x5c and 0x7e
+        // and [yen] and [overscore] are encoded to 0x5c and 0x7e
+        charset = Charset.forName("IBM943C");
+        expectedBytes = new byte[] {0x5c, 0x7e, 0x5c, 0x7e};
+        expectedStringfromBytes = "\\~\\~";
+        bb = charset.encode(original);
+        ba = new byte[bb.remaining()];
+        bb.get(ba, 0, ba.length);
+        if(!Arrays.equals(ba, expectedBytes)) {
+            throw new Exception("IBM943C failed to encode");
+        }
+        cb = charset.decode(ByteBuffer.wrap(expectedBytes));
+        if(!cb.toString().equals(expectedStringfromBytes)) {
+            throw new Exception("IBM943C failed to decode");
+        }
+    }
+
     public static void main (String[] args) throws Exception {
         bug6577466();
         // need to be tested before any other IBM949C test case
@@ -183,5 +231,6 @@
         bug6371619();
         bug6371431();
         bug6569191();
+        bug8202329();
     }
 }
--- a/test/jdk/sun/tools/jhsdb/AlternateHashingTest.java	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, 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.
- */
-
-/**
- * @test
- * @bug 8030750
- * @summary Test alternate hashing of strings in Serviceability Agent.
- * @requires vm.hasSAandCanAttach
- * @library /test/lib
- * @library /lib/testlibrary
- * @compile AlternateHashingTest.java
- * @run main/timeout=240 AlternateHashingTest
- */
-
-import java.io.BufferedReader;
-import java.io.OutputStream;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.util.Arrays;
-import jdk.testlibrary.JDKToolLauncher;
-import jdk.test.lib.apps.LingeredApp;
-import jdk.test.lib.Platform;
-
-public class AlternateHashingTest {
-
-    private static LingeredAppWithAltHashing theApp = null;
-
-    /**
-     *
-     * @param vmArgs  - tool arguments to launch jhsdb
-     * @return exit code of tool
-     */
-    public static void launch(String expectedMessage, String cmd) throws IOException {
-
-        System.out.println("Starting LingeredApp");
-        try {
-            theApp = new LingeredAppWithAltHashing();
-            LingeredApp.startApp(Arrays.asList("-Xmx256m"), theApp);
-
-            System.out.println("Starting clhsdb against " + theApp.getPid());
-            JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jhsdb");
-            launcher.addToolArg("clhsdb");
-            launcher.addToolArg("--pid=" + Long.toString(theApp.getPid()));
-
-            ProcessBuilder processBuilder = new ProcessBuilder(launcher.getCommand());
-            processBuilder.redirectError(ProcessBuilder.Redirect.INHERIT);
-            Process toolProcess = processBuilder.start();
-
-            try (OutputStream out = toolProcess.getOutputStream()) {
-                out.write(cmd.getBytes());
-                out.write("quit\n".getBytes());
-            }
-
-            boolean result = false;
-            try (BufferedReader reader =
-                 new BufferedReader(new InputStreamReader(toolProcess.getInputStream()))) {
-                String line;
-
-                while ((line = reader.readLine()) != null) {
-                    line = line.trim();
-                    System.out.println(line);
-
-                    if (line.contains(expectedMessage)) {
-                        result = true;
-                        break;
-                    }
-                }
-            }
-
-            toolProcess.waitFor();
-
-            if (toolProcess.exitValue() != 0) {
-                throw new RuntimeException("FAILED CLHSDB terminated with non-zero exit code " + toolProcess.exitValue());
-            }
-
-            if (!result) {
-                throw new RuntimeException(cmd + " command output is missing the message " + expectedMessage);
-            }
-
-        } catch (Exception ex) {
-            throw new RuntimeException("Test ERROR " + ex, ex);
-        } finally {
-            LingeredApp.stopApp(theApp);
-        }
-    }
-
-
-    public static void testAltHashing() throws IOException {
-
-        launch("Stack in use by Java", "threads\n");
-    }
-
-    public static void main(String[] args) throws Exception {
-
-        testAltHashing();
-
-        // The test throws RuntimeException on error.
-        // IOException is thrown if LingeredApp can't start because of some bad
-        // environment condition
-        System.out.println("Test PASSED");
-    }
-}
--- a/test/jdk/sun/tools/jhsdb/LingeredAppWithAltHashing.java	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/*
- * Copyright (c) 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
- * 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.
- */
-import jdk.test.lib.apps.LingeredApp;
-
-public class LingeredAppWithAltHashing extends LingeredApp {
-
-    public static void main(String args[]) {
-        LingeredApp.main(args);
-    }
-
-    // Following strings generate the same hashcode
-
-    static final String str1 = "AaAaAaAaAaAaAa";
-    static final String str2 = "AaAaAaAaAaAaBB";
-    static final String str3 = "AaAaAaAaAaBBAa";
-    static final String str4 = "AaAaAaAaAaBBBB";
-    static final String str5 = "AaAaAaAaBBAaAa";
-    static final String str6 = "AaAaAaAaBBAaBB";
-    static final String str7 = "AaAaAaAaBBBBAa";
-    static final String str8 = "AaAaAaAaBBBBBB";
-    static final String str9 = "AaAaAaBBAaAaAa";
-    static final String str10 = "AaAaAaBBAaAaBB";
-    static final String str11 = "AaAaAaBBAaBBAa";
-    static final String str12 = "AaAaAaBBAaBBBB";
-    static final String str13 = "AaAaAaBBBBAaAa";
-    static final String str14 = "AaAaAaBBBBAaBB";
-    static final String str15 = "AaAaAaBBBBBBAa";
-    static final String str16 = "AaAaAaBBBBBBBB";
-    static final String str17 = "AaAaBBAaAaAaAa";
-    static final String str18 = "AaAaBBAaAaAaBB";
-    static final String str19 = "AaAaBBAaAaBBAa";
-    static final String str20 = "AaAaBBAaAaBBBB";
-    static final String str21 = "AaAaBBAaBBAaAa";
-    static final String str22 = "AaAaBBAaBBAaBB";
-    static final String str23 = "AaAaBBAaBBBBAa";
-    static final String str24 = "AaAaBBAaBBBBBB";
-    static final String str25 = "AaAaBBBBAaAaAa";
-    static final String str26 = "AaAaBBBBAaAaBB";
-    static final String str27 = "AaAaBBBBAaBBAa";
-    static final String str28 = "AaAaBBBBAaBBBB";
-    static final String str29 = "AaAaBBBBBBAaAa";
-    static final String str30 = "AaAaBBBBBBAaBB";
-    static final String str31 = "AaAaBBBBBBBBAa";
-    static final String str32 = "AaAaBBBBBBBBBB";
-    static final String str33 = "AaBBAaAaAaAaAa";
-    static final String str34 = "AaBBAaAaAaAaBB";
-    static final String str35 = "AaBBAaAaAaBBAa";
-    static final String str36 = "AaBBAaAaAaBBBB";
-    static final String str37 = "AaBBAaAaBBAaAa";
-    static final String str38 = "AaBBAaAaBBAaBB";
-    static final String str39 = "AaBBAaAaBBBBAa";
-    static final String str40 = "AaBBAaAaBBBBBB";
-    static final String str41 = "AaBBAaBBAaAaAa";
-    static final String str42 = "AaBBAaBBAaAaBB";
-    static final String str43 = "AaBBAaBBAaBBAa";
-    static final String str44 = "AaBBAaBBAaBBBB";
-    static final String str45 = "AaBBAaBBBBAaAa";
-    static final String str46 = "AaBBAaBBBBAaBB";
-    static final String str47 = "AaBBAaBBBBBBAa";
-    static final String str48 = "AaBBAaBBBBBBBB";
-    static final String str49 = "AaBBBBAaAaAaAa";
-    static final String str50 = "AaBBBBAaAaAaBB";
-    static final String str51 = "AaBBBBAaAaBBAa";
-    static final String str52 = "AaBBBBAaAaBBBB";
-    static final String str53 = "AaBBBBAaBBAaAa";
-    static final String str54 = "AaBBBBAaBBAaBB";
-    static final String str55 = "AaBBBBAaBBBBAa";
-    static final String str56 = "AaBBBBAaBBBBBB";
-    static final String str57 = "AaBBBBBBAaAaAa";
-    static final String str58 = "AaBBBBBBAaAaBB";
-    static final String str59 = "AaBBBBBBAaBBAa";
-    static final String str60 = "AaBBBBBBAaBBBB";
-    static final String str61 = "AaBBBBBBBBAaAa";
-    static final String str62 = "AaBBBBBBBBAaBB";
-    static final String str63 = "AaBBBBBBBBBBAa";
-    static final String str64 = "AaBBBBBBBBBBBB";
-    static final String str65 = "BBAaAaAaAaAaAa";
-    static final String str66 = "BBAaAaAaAaAaBB";
-    static final String str67 = "BBAaAaAaAaBBAa";
-    static final String str68 = "BBAaAaAaAaBBBB";
-    static final String str69 = "BBAaAaAaBBAaAa";
-    static final String str70 = "BBAaAaAaBBAaBB";
-    static final String str71 = "BBAaAaAaBBBBAa";
-    static final String str72 = "BBAaAaAaBBBBBB";
-    static final String str73 = "BBAaAaBBAaAaAa";
-    static final String str74 = "BBAaAaBBAaAaBB";
-    static final String str75 = "BBAaAaBBAaBBAa";
-    static final String str76 = "BBAaAaBBAaBBBB";
-    static final String str77 = "BBAaAaBBBBAaAa";
-    static final String str78 = "BBAaAaBBBBAaBB";
-    static final String str79 = "BBAaAaBBBBBBAa";
-    static final String str80 = "BBAaAaBBBBBBBB";
-    static final String str81 = "BBAaBBAaAaAaAa";
-    static final String str82 = "BBAaBBAaAaAaBB";
-    static final String str83 = "BBAaBBAaAaBBAa";
-    static final String str84 = "BBAaBBAaAaBBBB";
-    static final String str85 = "BBAaBBAaBBAaAa";
-    static final String str86 = "BBAaBBAaBBAaBB";
-    static final String str87 = "BBAaBBAaBBBBAa";
-    static final String str88 = "BBAaBBAaBBBBBB";
-    static final String str89 = "BBAaBBBBAaAaAa";
-    static final String str90 = "BBAaBBBBAaAaBB";
-    static final String str91 = "BBAaBBBBAaBBAa";
-    static final String str92 = "BBAaBBBBAaBBBB";
-    static final String str93 = "BBAaBBBBBBAaAa";
-    static final String str94 = "BBAaBBBBBBAaBB";
-    static final String str95 = "BBAaBBBBBBBBAa";
-    static final String str96 = "BBAaBBBBBBBBBB";
-    static final String str97 = "BBBBAaAaAaAaAa";
-    static final String str98 = "BBBBAaAaAaAaBB";
-    static final String str99 = "BBBBAaAaAaBBAa";
-    static final String str100 = "BBBBAaAaAaBBBB";
-    static final String str101 = "BBBBAaAaBBAaAa";
-    static final String str102 = "BBBBAaAaBBAaBB";
-    static final String str103 = "BBBBAaAaBBBBAa";
-    static final String str104 = "BBBBAaAaBBBBBB";
-    static final String str105 = "BBBBAaBBAaAaAa";
-    static final String str106 = "BBBBAaBBAaAaBB";
-    static final String str107 = "BBBBAaBBAaBBAa";
-    static final String str108 = "BBBBAaBBAaBBBB";
-    static final String str109 = "BBBBAaBBBBAaAa";
-    static final String str110 = "BBBBAaBBBBAaBB";
-    static final String str111 = "BBBBAaBBBBBBAa";
-    static final String str112 = "BBBBAaBBBBBBBB";
-    static final String str113 = "BBBBBBAaAaAaAa";
-    static final String str114 = "BBBBBBAaAaAaBB";
-    static final String str115 = "BBBBBBAaAaBBAa";
-    static final String str116 = "BBBBBBAaAaBBBB";
-    static final String str117 = "BBBBBBAaBBAaAa";
-    static final String str118 = "BBBBBBAaBBAaBB";
-    static final String str119 = "BBBBBBAaBBBBAa";
-    static final String str120 = "BBBBBBAaBBBBBB";
-    static final String str121 = "BBBBBBBBAaAaAa";
-    static final String str122 = "BBBBBBBBAaAaBB";
-    static final String str123 = "BBBBBBBBAaBBAa";
-    static final String str124 = "BBBBBBBBAaBBBB";
-    static final String str125 = "BBBBBBBBBBAaAa";
-    static final String str126 = "BBBBBBBBBBAaBB";
-    static final String str127 = "BBBBBBBBBBBBAa";
-    static final String str128 = "BBBBBBBBBBBBBB";
- }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/sun/util/resources/cldr/Bug8204603.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+ /*
+ * @test
+ * @bug 8204603
+ * @summary Test that correct data is retrieved for zh_CN and zh_TW locales
+ * and CLDR provider supports all locales for which aliases exist.
+ * @modules java.base/sun.util.locale.provider
+ *          jdk.localedata
+ * @run main Bug8204603
+ */
+
+import java.text.DateFormatSymbols;
+import java.text.DecimalFormatSymbols;
+import java.util.Calendar;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import sun.util.locale.provider.LocaleProviderAdapter;
+
+/**
+ * This test is dependent on a particular version of CLDR data.
+ */
+public class Bug8204603 {
+
+    /**
+     * List of all locales for which CLDR provides alias Mappings. e.g alias of
+     * zh-HK is zh-Hant-HK
+     */
+    private static final List<Locale> ALIAS_LOCALES
+            = List.of(Locale.forLanguageTag("az-AZ"), Locale.forLanguageTag("bs-BA"),
+                    Locale.forLanguageTag("ha-Latn-GH"), Locale.forLanguageTag("ha-Latn-NE"),
+                    Locale.forLanguageTag("ha-Latn-NG"), Locale.forLanguageTag("i-lux"),
+                    Locale.forLanguageTag("kk-Cyrl-KZ"), Locale.forLanguageTag("ks-Arab-IN"),
+                    Locale.forLanguageTag("ky-Cyrl-KG"), Locale.forLanguageTag("lb"),
+                    Locale.forLanguageTag("lb"), Locale.forLanguageTag("mn-Cyrl-MN"),
+                    Locale.forLanguageTag("mo"), Locale.forLanguageTag("ms-Latn-BN"),
+                    Locale.forLanguageTag("ms-Latn-MY"), Locale.forLanguageTag("ms-Latn-SG"),
+                    Locale.forLanguageTag("pa-IN"), Locale.forLanguageTag("pa-PK"),
+                    Locale.forLanguageTag("scc"), Locale.forLanguageTag("scr"),
+                    Locale.forLanguageTag("sh"), Locale.forLanguageTag("shi-MA"),
+                    Locale.forLanguageTag("sr-BA"), Locale.forLanguageTag("sr-RS"),
+                    Locale.forLanguageTag("sr-XK"), Locale.forLanguageTag("tl"),
+                    Locale.forLanguageTag("tzm-Latn-MA"), Locale.forLanguageTag("ug-Arab-CN"),
+                    Locale.forLanguageTag("uz-AF"), Locale.forLanguageTag("uz-UZ"),
+                    Locale.forLanguageTag("vai-LR"), Locale.forLanguageTag("vai-LR"),
+                    Locale.forLanguageTag("yue-CN"), Locale.forLanguageTag("yue-HK"),
+                    Locale.forLanguageTag("zh-CN"), Locale.forLanguageTag("zh-HK"),
+                    Locale.forLanguageTag("zh-MO"), Locale.forLanguageTag("zh-SG"),
+                    Locale.forLanguageTag("zh-TW"));
+
+    private static final Map<Locale, String> CALENDAR_DATA_MAP = Map.of(
+            Locale.forLanguageTag("zh-CN"), "\u5468\u65E5",
+            Locale.forLanguageTag("zh-TW"), "\u9031\u65E5");
+    private static final Map<Locale, String> NAN_DATA_MAP = Map.of(
+            Locale.forLanguageTag("zh-CN"), "NaN",
+            Locale.forLanguageTag("zh-TW"), "\u975E\u6578\u503C");
+
+    public static void main(String[] args) {
+        testCldrSupportedLocales();
+        CALENDAR_DATA_MAP.forEach((k, v) -> testCalendarData(k, v));
+        NAN_DATA_MAP.forEach((k, v) -> testNanData(k, v));
+    }
+
+    /**
+     * tests that CLDR provider should return true for alias locales.
+     *
+     */
+    private static void testCldrSupportedLocales() {
+        LocaleProviderAdapter cldr = LocaleProviderAdapter.forType(LocaleProviderAdapter.Type.CLDR);
+        Set<Locale> availableLocs = Set.of(cldr.getAvailableLocales());
+        Set<String> langtags = new HashSet<>();
+        availableLocs.forEach(loc -> langtags.add(loc.toLanguageTag()));
+        ALIAS_LOCALES.stream().filter(loc -> !cldr.isSupportedProviderLocale(loc, langtags)).findAny()
+                .ifPresent(l -> {
+                    throw new RuntimeException("Locale " + l
+                            + "  is not supported by CLDR locale provider");
+                });
+    }
+
+    private static void testCalendarData(Locale loc, String expected) {
+        DateFormatSymbols dfs = DateFormatSymbols.getInstance(loc);
+        String[] shortDays = dfs.getShortWeekdays();
+        String actual = shortDays[Calendar.SUNDAY];
+        if (!actual.equals(expected)) {
+            throw new RuntimeException("Calendar data mismatch for locale: "
+                    + loc + ", expected  is: " + expected + ", actual is: " + actual);
+        }
+    }
+
+    private static void testNanData(Locale loc, String expected) {
+        DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(loc);
+        String actual = dfs.getNaN();
+        if (!actual.equals(expected)) {
+            throw new RuntimeException("NaN mismatch for locale: "
+                    + loc + ", expected  is: " + expected + ", actual is: " + actual);
+        }
+    }
+}
--- a/test/jdk/tools/jimage/JImageExtractTest.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jdk/tools/jimage/JImageExtractTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -34,11 +34,10 @@
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.nio.file.attribute.FileAttribute;
-import java.nio.file.attribute.PosixFilePermission;
-import java.nio.file.attribute.PosixFilePermissions;
+import java.nio.file.attribute.*;
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -47,12 +46,13 @@
 
 public class JImageExtractTest extends JImageCliTest {
     public void testExtract() throws IOException {
+        Set<Path> notJImageModules = Files.walk(Paths.get("."),1).collect(Collectors.toSet());
         jimage("extract", getImagePath())
                 .assertSuccess()
                 .resultChecker(r -> {
                     assertTrue(r.output.isEmpty(), "Output is not expected");
                 });
-        verifyExplodedImage(Paths.get("."));
+        verifyExplodedImage(Paths.get("."), notJImageModules);
     }
 
     public void testExtractHelp() {
@@ -68,12 +68,13 @@
 
     public void testExtractToDir() throws IOException {
         Path tmp = Files.createTempDirectory(Paths.get("."), getClass().getName());
+        Set<Path> notJImageModules = Files.walk(tmp,1).collect(Collectors.toSet());
         jimage("extract", "--dir", tmp.toString(), getImagePath())
                 .assertSuccess()
                 .resultChecker(r -> {
                     assertTrue(r.output.isEmpty(), "Output is not expected");
                 });
-        verifyExplodedImage(tmp);
+        verifyExplodedImage(tmp, notJImageModules);
     }
 
     public void testExtractNoImageSpecified() {
@@ -105,13 +106,14 @@
 
     public void testExtractToNotExistingDir() throws IOException {
         Path tmp = Files.createTempDirectory(Paths.get("."), getClass().getName());
+        Set<Path> notJImageModules = Files.walk(tmp,1).collect(Collectors.toSet());
         Files.delete(tmp);
         jimage("extract", "--dir", tmp.toString(), getImagePath())
                 .assertSuccess()
                 .resultChecker(r -> {
                     assertTrue(r.output.isEmpty(), "Output is not expected");
                 });
-        verifyExplodedImage(tmp);
+        verifyExplodedImage(tmp, notJImageModules);
     }
 
     public void testExtractFromDir() {
@@ -132,20 +134,35 @@
             // nothing to test
             return;
         }
-
+        Set<Path> notJImageModules = Files.walk(tmp,1).collect(Collectors.toSet());
         jimage("extract", "--dir", symlink.toString(), getImagePath())
                 .assertSuccess()
                 .resultChecker(r -> {
                     assertTrue(r.output.isEmpty(), "Output is not expected");
                 });
-        verifyExplodedImage(tmp);
+        verifyExplodedImage(tmp, notJImageModules);
     }
 
     public void testExtractToReadOnlyDir() throws IOException {
-        Set<PosixFilePermission> perms = PosixFilePermissions.fromString("r-xr--r--");
-        FileAttribute<Set<PosixFilePermission>> atts = PosixFilePermissions.asFileAttribute(perms);
-        Path tmp = Files.createTempDirectory(Paths.get("."), getClass().getName(), atts);
-        jimage("extract", "--dir", tmp.toString(), getImagePath())
+        Path filePath = Files.createTempDirectory(Paths.get("."), getClass().getName());
+        Set<String> supportedAttr = filePath.getFileSystem().supportedFileAttributeViews();
+        if (supportedAttr.contains("posix")) {
+            Files.setPosixFilePermissions(filePath, PosixFilePermissions.fromString("r-xr--r--"));
+        } else if (supportedAttr.contains("acl")) {
+            System.out.println("Entered into acl block");
+            UserPrincipal fileOwner = Files.getOwner(filePath);
+            AclFileAttributeView view = Files.getFileAttributeView(filePath, AclFileAttributeView.class);
+            AclEntry entry = AclEntry.newBuilder()
+                                     .setType(AclEntryType.DENY)
+                                     .setPrincipal(fileOwner)
+                                     .setPermissions(AclEntryPermission.WRITE_DATA)
+                                     .setFlags(AclEntryFlag.FILE_INHERIT, AclEntryFlag.DIRECTORY_INHERIT)
+                                     .build();
+            List<AclEntry> acl = view.getAcl();
+            acl.add(0, entry);
+            view.setAcl(acl);
+        }
+        jimage("extract", "--dir", filePath.toString(), getImagePath())
                 .assertFailure()
                 .assertShowsError();
     }
@@ -167,15 +184,16 @@
                 .assertShowsError();
     }
 
-    private void verifyExplodedImage(Path imagePath) throws IOException {
+    private void verifyExplodedImage(Path imagePath, Set<Path> notJImageModules) throws IOException {
         Set<Path> allModules = Files.walk(imagePath, 1).collect(Collectors.toSet());
         assertTrue(allModules.stream().anyMatch(p -> "java.base".equals(p.getFileName().toString())),
                 "Exploded image contains java.base module.");
-
         Set<Path> badModules = allModules.stream()
                 .filter(p -> !Files.exists(p.resolve("module-info.class")))
                 .collect(Collectors.toSet());
-        assertEquals(badModules, new HashSet<Path>() {{ add(imagePath); }},
+        // filter bad modules which are not part of jimage
+        badModules.removeAll(notJImageModules);
+        assertEquals(badModules, new HashSet<Path>() {{}},
                 "There are no exploded modules with missing 'module-info.class'");
     }
 
--- a/test/jtreg-ext/requires/VMProps.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/jtreg-ext/requires/VMProps.java	Thu Jul 12 11:09:23 2018 -0700
@@ -251,17 +251,18 @@
      * @param flagName - flag name
      */
     private void vmOptFinalFlag(Map<String, String> map, String flagName) {
-        String value = WB.getBooleanVMFlag(flagName) ? "true" : "false";
+        String value = String.valueOf(WB.getBooleanVMFlag(flagName));
         map.put("vm.opt.final." + flagName, value);
     }
 
     /**
      * Selected sets of final flags.
-     * @param map -property-value pairs
+     * @param map - property-value pairs
      */
     protected void vmOptFinalFlags(Map<String, String> map) {
         vmOptFinalFlag(map, "ClassUnloading");
         vmOptFinalFlag(map, "UseCompressedOops");
+        vmOptFinalFlag(map, "EnableJVMCI");
     }
 
     /**
--- a/test/langtools/jdk/javadoc/doclet/WindowTitles/WindowTitles.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/jdk/javadoc/doclet/WindowTitles/WindowTitles.java	Thu Jul 12 11:09:23 2018 -0700
@@ -51,6 +51,7 @@
                 "-sourcepath", testSrc,
                 "p1", "p2");
         checkExit(Exit.OK);
+        checkFiles(false, "allclasses-noframe.html");
 
         checkTitle("overview-summary.html",     "Overview");
         checkTitle("overview-tree.html",        "Class Hierarchy");
@@ -61,7 +62,6 @@
         checkTitle("p1/package-use.html",       "Uses of Package p1");
         checkTitle("p1/C1.html",                "C1");
         checkTitle("allclasses-frame.html",     "All Classes");
-        checkTitle("allclasses-noframe.html",   "All Classes");
         checkTitle("constant-values.html",      "Constant Field Values");
         checkTitle("deprecated-list.html",      "Deprecated List");
         checkTitle("serialized-form.html",      "Serialized Form");
--- a/test/langtools/jdk/javadoc/doclet/testFramesNoFrames/TestFramesNoFrames.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/jdk/javadoc/doclet/testFramesNoFrames/TestFramesNoFrames.java	Thu Jul 12 11:09:23 2018 -0700
@@ -287,24 +287,19 @@
         private void checkAllClassesFiles() {
             // these files are only generated in frames mode
             checkFiles(frames,
-                    "allclasses-frame.html",
-                    "allclasses-noframe.html");
+                    "allclasses-frame.html");
 
-            // this file is only generated when not in frames mode
-            checkFiles(!frames,
+            checkFiles(false,
                     "allclasses.html");
 
+            checkFiles(false,
+                    "allclasses-noframe.html");
+
             if (frames) {
                 checkOutput("allclasses-frame.html", true,
                         classes.stream()
                             .map(c -> "title=\"class in " + packagePart(c) + "\" target=\"classFrame\">" + classPart(c) + "</a>")
                             .toArray(String[]::new));
-                checkOutput("allclasses-noframe.html", false,
-                            "target=\"classFrame\">");
-            } else {
-                checkOutput("allclasses.html", false,
-                            "target=\"classFrame\">");
-
             }
         }
 
--- a/test/langtools/jdk/javadoc/doclet/testGeneratedBy/TestGeneratedBy.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/jdk/javadoc/doclet/testGeneratedBy/TestGeneratedBy.java	Thu Jul 12 11:09:23 2018 -0700
@@ -45,6 +45,7 @@
             "-sourcepath", testSrc,
             "pkg");
         checkExit(Exit.OK);
+        checkFiles(false, "allclasses-noframe.html");
 
         checkTimestamps(true);
     }
@@ -57,6 +58,7 @@
             "-sourcepath", testSrc,
             "pkg");
         checkExit(Exit.OK);
+        checkFiles(false, "allclasses-noframe.html");
 
         checkTimestamps(false);
     }
@@ -67,7 +69,6 @@
         "pkg/package-summary.html",
         "pkg/package-frame.html",
         "pkg/package-tree.html",
-        "allclasses-noframe.html",
         "constant-values.html",
         "allclasses-frame.html",
         "overview-tree.html",
--- a/test/langtools/jdk/javadoc/doclet/testHtmlVersion/TestHtmlVersion.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/jdk/javadoc/doclet/testHtmlVersion/TestHtmlVersion.java	Thu Jul 12 11:09:23 2018 -0700
@@ -117,14 +117,6 @@
                 + "<ul>\n"
                 + "<li>");
 
-        // Test for allclasses-noframe page
-        checkOutput("allclasses-noframe.html", true,
-                "<!DOCTYPE HTML>",
-                "<meta name=\"dc.created\"",
-                "<main role=\"main\" class=\"indexContainer\">\n"
-                + "<ul>\n"
-                + "<li>");
-
         // Test for overview-summary page
         checkOutput("overview-summary.html", true,
                 "<!DOCTYPE HTML>",
@@ -360,7 +352,7 @@
                 "<section role=\"region\">\n"
                 + "<h2>Package</h2>\n",
                 "<section role=\"region\">\n"
-                + "<h2>Class/Interface</h2>\n",
+                + "<h2>Class or Interface</h2>\n",
                 "<footer role=\"contentinfo\">\n"
                 + "<nav role=\"navigation\">\n"
                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
@@ -655,14 +647,6 @@
                 + "<ul>\n"
                 + "<li>");
 
-        // Negated test for allclasses-noframe page
-        checkOutput("allclasses-noframe.html", false,
-                "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-                "<meta name=\"date\"",
-                "<div class=\"indexContainer\">\n"
-                + "<ul>\n"
-                + "<li>");
-
         // Negated test for overview-summary page
         checkOutput("overview-summary.html", false,
                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
@@ -1088,14 +1072,6 @@
                 + "<ul>\n"
                 + "<li>");
 
-        // Test for allclasses-noframe page
-        checkOutput("allclasses-noframe.html", true,
-                "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-                "<meta name=\"date\"",
-                "<div class=\"indexContainer\">\n"
-                + "<ul>\n"
-                + "<li>");
-
         // Test for overview-summary page
         checkOutput("overview-summary.html", true,
                 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
@@ -1290,7 +1266,7 @@
                 "<li class=\"blockList\">\n"
                 + "<h2>Package</h2>",
                 "<li class=\"blockList\">\n"
-                + "<h2>Class/Interface</h2>");
+                + "<h2>Class or Interface</h2>");
 
         // Test for a regular class page and members (nested class, field, constructore and method)
         checkOutput("pkg/AnotherClass.html", true,
@@ -1539,14 +1515,6 @@
                 + "<ul>\n"
                 + "<li>");
 
-        // Negated test for allclasses-noframe page
-        checkOutput("allclasses-noframe.html", false,
-                "<!DOCTYPE HTML>",
-                "<meta name=\"dc.created\"",
-                "<main role=\"main\" class=\"indexContainer\">\n"
-                + "<ul>\n"
-                + "<li>");
-
         // Negated test for overview-summary page
         checkOutput("overview-summary.html", false,
                 "<!DOCTYPE HTML>",
--- a/test/langtools/jdk/javadoc/doclet/testModuleDirs/TestModuleDirs.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/jdk/javadoc/doclet/testModuleDirs/TestModuleDirs.java	Thu Jul 12 11:09:23 2018 -0700
@@ -102,7 +102,7 @@
                 + "<li><a href=\"overview-frame.html\" target=\"packageListFrame\">All&nbsp;Packages</a></li>\n"
                 + "<li><a href=\"module-overview-frame.html\" target=\"packageListFrame\">All&nbsp;Modules</a></li>\n"
                 + "</ul>\n");
-        checkOutput("ma-summary.html", true,
+        checkOutput("ma-summary.html", false,
                 "<ul class=\"navList\" id=\"allclasses_navbar_top\">\n"
                 + "<li><a href=\"allclasses-noframe.html\">All&nbsp;Classes</a></li>\n"
                 + "</ul>\n");
@@ -145,7 +145,7 @@
                 + "<li><a href=\"../overview-frame.html\" target=\"packageListFrame\">All&nbsp;Packages</a></li>\n"
                 + "<li><a href=\"../module-overview-frame.html\" target=\"packageListFrame\">All&nbsp;Modules</a></li>\n"
                 + "</ul>\n");
-        checkOutput("ma/module-summary.html", true,
+        checkOutput("ma/module-summary.html", false,
                 "<ul class=\"navList\" id=\"allclasses_navbar_top\">\n"
                 + "<li><a href=\"../allclasses-noframe.html\">All&nbsp;Classes</a></li>\n"
                 + "</ul>\n");
--- a/test/langtools/jdk/javadoc/doclet/testModules/TestModules.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/jdk/javadoc/doclet/testModules/TestModules.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1148,7 +1148,8 @@
                 "module-overview-frame.html");
         checkFiles(true,
                 "moduleC/module-summary.html",
-                "allclasses-frame.html",
+                "allclasses-frame.html");
+        checkFiles(false,
                 "allclasses-noframe.html");
     }
 
--- a/test/langtools/jdk/javadoc/doclet/testNavigation/TestModuleNavigation.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/jdk/javadoc/doclet/testNavigation/TestModuleNavigation.java	Thu Jul 12 11:09:23 2018 -0700
@@ -81,34 +81,73 @@
 
         checkOutput("overview-summary.html", false,
                 "Prev",
-                "Next");
+                "Next",
+                "All&nbsp;Classes",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_top\");",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");");
 
         checkOutput("m/module-summary.html", false,
                 "Prev&nbsp;Module",
-                "Next&nbsp;Module");
+                "Next&nbsp;Module",
+                "All&nbsp;Classes",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_top\");",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");");
 
         checkOutput("m2/m2p1/package-summary.html", false,
                 "Prev&nbsp;Package",
-                "Next&nbsp;Package");
+                "Next&nbsp;Package",
+                "All&nbsp;Classes",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_top\");",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");");
 
         checkOutput("m2/m2p1/Am2.html", false,
                 "Prev&nbsp;Class",
-                "Next&nbsp;Class");
+                "Next&nbsp;Class",
+                "All&nbsp;Classes",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_top\");",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");");
 
         checkOutput("m2/m2p1/class-use/Am2.html", false,
                 "Prev",
-                "Next");
+                "Next",
+                "All&nbsp;Classes",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_top\");",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");");
 
         checkOutput("m2/m2p1/package-tree.html", false,
                 "Prev",
-                "Next");
+                "Next",
+                "All&nbsp;Classes",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_top\");",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");");
 
         checkOutput("deprecated-list.html", false,
                 "Prev",
-                "Next");
+                "Next",
+                "All&nbsp;Classes",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_top\");",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");");
 
         checkOutput("index-all.html", false,
                 "Prev",
-                "Next");
+                "Next",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_top\");",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");");
     }
 }
--- a/test/langtools/jdk/javadoc/doclet/testNavigation/TestNavigation.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/jdk/javadoc/doclet/testNavigation/TestNavigation.java	Thu Jul 12 11:09:23 2018 -0700
@@ -60,6 +60,7 @@
                 "-sourcepath", testSrc,
                 "pkg");
         checkExit(Exit.OK);
+        checkSubNav();
 
         checkOutput("pkg/A.html", true,
                 "<ul class=\"navList\" title=\"Navigation\">\n" +
@@ -117,6 +118,7 @@
                 "-sourcepath", testSrc,
                 "pkg");
         checkExit(Exit.OK);
+        checkSubNav();
 
         checkOutput("pkg/I.html", true,
                 // Test for 4664607
@@ -156,6 +158,7 @@
                 "-sourcepath", testSrc,
                 "pkg");
         checkExit(Exit.OK);
+        checkSubNav();
 
         checkOutput("pkg/A.html", true,
                 "<!-- ========= END OF TOP NAVBAR ========= -->\n"
@@ -189,6 +192,7 @@
                 "-sourcepath", testSrc,
                 "pkg");
         checkExit(Exit.OK);
+        checkSubNav();
 
         checkOutput("pkg/A.html", false,
                 "<!-- ========= END OF TOP NAVBAR ========= -->\n"
@@ -221,6 +225,7 @@
                 "-sourcepath", testSrc,
                 "pkg");
         checkExit(Exit.OK);
+        checkSubNav();
 
         checkOutput("pkg/A.html", false,
                 "<!-- ========= END OF TOP NAVBAR ========= -->\n"
@@ -329,4 +334,42 @@
                 "<li>Constr&nbsp;|&nbsp;</li>",
                 "<li>Method</li>");
     }
+
+    private void checkSubNav() {
+
+        checkOutput("pkg/A.html", false,
+                "All&nbsp;Classes",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_top\");",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");");
+
+        checkOutput("pkg/C.html", false,
+                "All&nbsp;Classes",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_top\");",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");");
+
+        checkOutput("pkg/E.html", false,
+                "All&nbsp;Classes",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_top\");",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");");
+
+        checkOutput("pkg/I.html", false,
+                "All&nbsp;Classes",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_top\");",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");");
+
+        checkOutput("pkg/package-summary.html", false,
+                "All&nbsp;Classes",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_top\");",
+                "<script type=\"text/javascript\"><!--\n"
+                + "  allClassesLink = document.getElementById(\"allclasses_navbar_bottom\");");
 }
+}
--- a/test/langtools/jdk/javadoc/doclet/testOrdering/TestOrdering.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/jdk/javadoc/doclet/testOrdering/TestOrdering.java	Thu Jul 12 11:09:23 2018 -0700
@@ -132,6 +132,7 @@
                     "--frames",
                     "pkg1");
             tester.checkExit(Exit.OK);
+            tester.checkFiles(false, "allclasses-noframe.html");
 
             checkClassUseOrdering("pkg1/class-use/UsedClass.html");
 
@@ -182,20 +183,6 @@
                     "<dd><code>iterator</code>&nbsp;in interface&nbsp;<code>java.util.Collection&lt;",
                     "<dd><code>iterator</code>&nbsp;in interface&nbsp;<code>java.lang.Iterable&lt;");
 
-            tester.checkOrder("allclasses-noframe.html",
-                    "pkg1/A.html\" title=\"class in pkg1",
-                    "pkg1/A.C.html\" title=\"class in pkg1",
-                    "pkg1/B.html\" title=\"class in pkg1",
-                    "pkg1/B.A.html\" title=\"class in pkg1",
-                    "pkg1/C1.html\" title=\"class in pkg1",
-                    "pkg1/C2.html\" title=\"class in pkg1",
-                    "pkg1/C3.html\" title=\"class in pkg1",
-                    "pkg1/C4.html\" title=\"class in pkg1",
-                    "pkg1/ImplementsOrdering.html\" title=\"interface in pkg1",
-                    "pkg1/MethodOrder.html\" title=\"class in pkg1",
-                    "pkg1/OverrideOrdering.html\" title=\"class in pkg1",
-                    "pkg1/UsedClass.html\" title=\"class in pkg1");
-
             tester.checkOrder("allclasses-frame.html",
                     "pkg1/A.html\" title=\"class in pkg1",
                     "pkg1/A.C.html\" title=\"class in pkg1",
--- a/test/langtools/jdk/javadoc/tool/api/basic/APITest.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/jdk/javadoc/tool/api/basic/APITest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -190,7 +190,6 @@
      * Standard files generated by processing a documented class pkg.C.
      */
     protected static Set<String> standardExpectFiles = new HashSet<>(Arrays.asList(
-            "allclasses.html",
             "allclasses-index.html",
             "allpackages-index.html",
             "constant-values.html",
--- a/test/langtools/jdk/javadoc/tool/modules/ReleaseOptions.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/jdk/javadoc/tool/modules/ReleaseOptions.java	Thu Jul 12 11:09:23 2018 -0700
@@ -58,7 +58,7 @@
         Task.Result result = execNegativeTask("--release", "8",
                 "--patch-module", "m=" + mpath.toString(),
                 "p");
-        assertMessagePresent(".*not allowed with target 1.8.*");
+        assertMessagePresent(".*not allowed with target 8.*");
         assertMessageNotPresent(".*Exception*");
         assertMessageNotPresent(".java.lang.AssertionError.*");
     }
@@ -92,7 +92,7 @@
         Task.Result result = execNegativeTask("--release", "8",
                 "--module-source-path", src.toString(),
                 "--module", "m");
-        assertMessagePresent(".*not allowed with target 1.8.*");
+        assertMessagePresent(".*not allowed with target 8.*");
         assertMessageNotPresent(".*Exception*");
         assertMessageNotPresent(".java.lang.AssertionError.*");
     }
--- a/test/langtools/tools/javac/6558548/T6558548.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/6558548/T6558548.java	Thu Jul 12 11:09:23 2018 -0700
@@ -3,7 +3,6 @@
  * @bug     6558548 7039937
  * @summary The compiler needs to be aligned with clarified specification of throws
  * @compile/fail/ref=T6558548_latest.out -XDrawDiagnostics T6558548.java
- * @compile/fail/ref=T6558548_6.out -source 6 -Xlint:-options -XDrawDiagnostics T6558548.java
  */
 
 class T6558548 {
--- a/test/langtools/tools/javac/6558548/T6558548_6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-T6558548.java:168:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
-T6558548.java:177:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
-T6558548.java:248:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
-T6558548.java:258:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
-T6558548.java:300:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
-T6558548.java:307:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
-6 errors
--- a/test/langtools/tools/javac/6558548/T6558548_latest.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/6558548/T6558548_latest.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,9 +1,9 @@
-T6558548.java:20:9: compiler.warn.unreachable.catch: java.io.FileNotFoundException
-T6558548.java:168:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
-T6558548.java:177:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
-T6558548.java:248:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
-T6558548.java:258:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
-T6558548.java:300:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
-T6558548.java:307:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
+T6558548.java:19:9: compiler.warn.unreachable.catch: java.io.FileNotFoundException
+T6558548.java:167:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
+T6558548.java:176:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
+T6558548.java:247:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
+T6558548.java:257:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
+T6558548.java:299:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
+T6558548.java:306:9: compiler.err.except.never.thrown.in.try: java.lang.InterruptedException
 6 errors
 1 warning
--- a/test/langtools/tools/javac/8013179/T8013179.java	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-/*
- * @test /nodynamiccopyright/
- * @bug 8013179
- * @summary assertion failure in javac when compiling with -source 1.6 -target 1.6
- * @compile/fail/ref=T8013179.out -source 6 -target 6 -Xlint:-options -XDrawDiagnostics T8013179.java
- */
-
-import java.lang.invoke.MethodHandle;
-
-class T8013179 {
-    static MethodHandle getNamedMember;
-    public static Object getMember(String name, Object rec) throws Throwable {
-        return getNamedMember.invoke(rec, name);
-    }
-}
--- a/test/langtools/tools/javac/8013179/T8013179.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-T8013179.java:13:37: compiler.err.bad.target.sigpoly.call: 1.6, 1.7
-1 error
--- a/test/langtools/tools/javac/8074306/TestSyntheticNullChecks.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/8074306/TestSyntheticNullChecks.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -25,9 +25,6 @@
  * @test
  * @bug 8074306 8073432 8074501
  * @summary NULLCHK is emitted as Object.getClass
- * @compile -source 6 -target 6 TestSyntheticNullChecks.java
- * @run main TestSyntheticNullChecks 6
- * @clean TestSyntheticNullChecks*
  * @compile -source 7 -target 7 TestSyntheticNullChecks.java
  * @run main TestSyntheticNullChecks 7
  * @clean TestSyntheticNullChecks*
--- a/test/langtools/tools/javac/Diagnostics/compressed/T8012003b.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/Diagnostics/compressed/T8012003b.out	Thu Jul 12 11:09:23 2018 -0700
@@ -3,6 +3,6 @@
 T8012003b.java:32:22: compiler.err.prob.found.req: (compiler.misc.incompatible.ret.type.in.lambda: (compiler.misc.conditional.target.cant.be.void))
 T8012003b.java:33:12: compiler.err.prob.found.req: (compiler.misc.invalid.mref: kindname.method, (compiler.misc.prob.found.req: (compiler.misc.inconvertible.types: java.lang.Integer, java.lang.String)))
 T8012003b.java:34:12: compiler.err.prob.found.req: (compiler.misc.incompatible.ret.type.in.mref: (compiler.misc.inconvertible.types: java.lang.String, java.lang.Integer))
-T8012003b.java:35:12: compiler.err.invalid.mref: kindname.method, (compiler.misc.cant.resolve.location.args: kindname.method, k, , , (compiler.misc.location: kindname.class, T8012003b, null))
+T8012003b.java:35:12: compiler.err.invalid.mref: kindname.method, (compiler.misc.cant.resolve.location.args: kindname.method, k, , java.lang.String, (compiler.misc.location: kindname.class, T8012003b, null))
 - compiler.note.compressed.diags
 6 errors
--- a/test/langtools/tools/javac/StringConcat/TestIndyStringConcat.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/StringConcat/TestIndyStringConcat.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, 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
@@ -35,10 +35,6 @@
  * @modules jdk.jdeps/com.sun.tools.classfile
  *
  * @clean TestIndyStringConcat*
- * @compile -source 6 -target 6 TestIndyStringConcat.java
- * @run main TestIndyStringConcat false
- *
- * @clean TestIndyStringConcat*
  * @compile -source 7 -target 7 TestIndyStringConcat.java
  * @run main TestIndyStringConcat false
  *
--- a/test/langtools/tools/javac/StringsInSwitch/BadlyTypedLabel1.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/StringsInSwitch/BadlyTypedLabel1.java	Thu Jul 12 11:09:23 2018 -0700
@@ -2,7 +2,6 @@
  * @test  /nodynamiccopyright/
  * @bug 6827009
  * @summary Check for case labels of different types.
- * @compile/fail/ref=BadlyTypedLabel1_6.out -XDrawDiagnostics -source 6 BadlyTypedLabel1.java
  * @compile/fail/ref=BadlyTypedLabel1.out -XDrawDiagnostics BadlyTypedLabel1.java
  */
 class BadlyTypedLabel1 {
--- a/test/langtools/tools/javac/StringsInSwitch/BadlyTypedLabel1.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/StringsInSwitch/BadlyTypedLabel1.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
-BadlyTypedLabel1.java:13:14: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: int, java.lang.String)
+BadlyTypedLabel1.java:12:14: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: int, java.lang.String)
 1 error
--- a/test/langtools/tools/javac/StringsInSwitch/BadlyTypedLabel1_6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-- compiler.warn.source.no.bootclasspath: 6
-- compiler.warn.option.obsolete.source: 6
-- compiler.warn.option.obsolete.suppression
-BadlyTypedLabel1.java:10:15: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.string.switch), 6, 7
-BadlyTypedLabel1.java:13:14: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: int, java.lang.String)
-2 errors
-3 warnings
--- a/test/langtools/tools/javac/StringsInSwitch/BadlyTypedLabel2.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/StringsInSwitch/BadlyTypedLabel2.java	Thu Jul 12 11:09:23 2018 -0700
@@ -2,7 +2,6 @@
  * @test  /nodynamiccopyright/
  * @bug 6827009
  * @summary Check for case lables of different types.
- * @compile/fail/ref=BadlyTypedLabel2_6.out -XDrawDiagnostics -source 6 BadlyTypedLabel2.java
  * @compile/fail/ref=BadlyTypedLabel2.out -XDrawDiagnostics BadlyTypedLabel2.java
  */
 import static java.math.RoundingMode.*;
--- a/test/langtools/tools/javac/StringsInSwitch/BadlyTypedLabel2.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/StringsInSwitch/BadlyTypedLabel2.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
-BadlyTypedLabel2.java:15:14: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: java.math.RoundingMode, java.lang.String)
+BadlyTypedLabel2.java:14:14: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: java.math.RoundingMode, java.lang.String)
 1 error
--- a/test/langtools/tools/javac/StringsInSwitch/BadlyTypedLabel2_6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-- compiler.warn.source.no.bootclasspath: 6
-- compiler.warn.option.obsolete.source: 6
-- compiler.warn.option.obsolete.suppression
-BadlyTypedLabel2.java:12:15: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.string.switch), 6, 7
-BadlyTypedLabel2.java:15:14: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: java.math.RoundingMode, java.lang.String)
-2 errors
-3 warnings
--- a/test/langtools/tools/javac/StringsInSwitch/NonConstantLabel.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/StringsInSwitch/NonConstantLabel.java	Thu Jul 12 11:09:23 2018 -0700
@@ -2,7 +2,6 @@
  * @test  /nodynamiccopyright/
  * @bug 6827009
  * @summary Check for non-constant case labels.
- * @compile/fail/ref=NonConstantLabel6.out -XDrawDiagnostics -source 6 NonConstantLabel.java
  * @compile/fail/ref=NonConstantLabel.out -XDrawDiagnostics NonConstantLabel.java
  */
 class NonConstantLabel {
--- a/test/langtools/tools/javac/StringsInSwitch/NonConstantLabel.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/StringsInSwitch/NonConstantLabel.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
-NonConstantLabel.java:14:14: compiler.err.string.const.req
+NonConstantLabel.java:13:14: compiler.err.string.const.req
 1 error
--- a/test/langtools/tools/javac/StringsInSwitch/NonConstantLabel6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-- compiler.warn.source.no.bootclasspath: 6
-- compiler.warn.option.obsolete.source: 6
-- compiler.warn.option.obsolete.suppression
-NonConstantLabel.java:11:15: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.string.switch), 6, 7
-NonConstantLabel.java:14:14: compiler.err.string.const.req
-2 errors
-3 warnings
--- a/test/langtools/tools/javac/StringsInSwitch/OneCaseSwitches.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/StringsInSwitch/OneCaseSwitches.java	Thu Jul 12 11:09:23 2018 -0700
@@ -2,7 +2,6 @@
  * @test /nodynamiccopyright/
  * @bug 6827009 8078561
  * @summary Positive tests for strings in switch with few alternatives.
- * @compile/fail/ref=OneCaseSwitches.out -XDrawDiagnostics -source 6 OneCaseSwitches.java
  * @compile          OneCaseSwitches.java
  * @run main OneCaseSwitches
  * @author  Joseph D. Darcy
--- a/test/langtools/tools/javac/StringsInSwitch/OneCaseSwitches.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-- compiler.warn.source.no.bootclasspath: 6
-- compiler.warn.option.obsolete.source: 6
-- compiler.warn.option.obsolete.suppression
-OneCaseSwitches.java:23:15: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.string.switch), 6, 7
-1 error
-3 warnings
--- a/test/langtools/tools/javac/StringsInSwitch/RSCL1.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/StringsInSwitch/RSCL1.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
-RepeatedStringCaseLabels1.java:13:9: compiler.err.duplicate.case.label
+RepeatedStringCaseLabels1.java:12:9: compiler.err.duplicate.case.label
 1 error
--- a/test/langtools/tools/javac/StringsInSwitch/RSCL1_6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-- compiler.warn.source.no.bootclasspath: 6
-- compiler.warn.option.obsolete.source: 6
-- compiler.warn.option.obsolete.suppression
-RepeatedStringCaseLabels1.java:10:15: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.string.switch), 6, 7
-RepeatedStringCaseLabels1.java:13:9: compiler.err.duplicate.case.label
-2 errors
-3 warnings
--- a/test/langtools/tools/javac/StringsInSwitch/RSCL2.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/StringsInSwitch/RSCL2.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
-RepeatedStringCaseLabels2.java:14:9: compiler.err.duplicate.case.label
+RepeatedStringCaseLabels2.java:13:9: compiler.err.duplicate.case.label
 1 error
--- a/test/langtools/tools/javac/StringsInSwitch/RSCL2_6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-- compiler.warn.source.no.bootclasspath: 6
-- compiler.warn.option.obsolete.source: 6
-- compiler.warn.option.obsolete.suppression
-RepeatedStringCaseLabels2.java:11:15: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.string.switch), 6, 7
-RepeatedStringCaseLabels2.java:14:9: compiler.err.duplicate.case.label
-2 errors
-3 warnings
--- a/test/langtools/tools/javac/StringsInSwitch/RepeatedStringCaseLabels1.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/StringsInSwitch/RepeatedStringCaseLabels1.java	Thu Jul 12 11:09:23 2018 -0700
@@ -2,7 +2,6 @@
  * @test  /nodynamiccopyright/
  * @bug 6827009
  * @summary Check for repeated string case labels.
- * @compile/fail/ref=RSCL1_6.out -XDrawDiagnostics -source 6 RepeatedStringCaseLabels1.java
  * @compile/fail/ref=RSCL1.out -XDrawDiagnostics RepeatedStringCaseLabels1.java
  */
 class RepeatedStringCaseLabels1 {
--- a/test/langtools/tools/javac/StringsInSwitch/RepeatedStringCaseLabels2.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/StringsInSwitch/RepeatedStringCaseLabels2.java	Thu Jul 12 11:09:23 2018 -0700
@@ -2,7 +2,6 @@
  * @test  /nodynamiccopyright/
  * @bug 6827009
  * @summary Check for repeated string case labels.
- * @compile/fail/ref=RSCL2_6.out -XDrawDiagnostics -source 6 RepeatedStringCaseLabels2.java
  * @compile/fail/ref=RSCL2.out -XDrawDiagnostics RepeatedStringCaseLabels2.java
  */
 class RepeatedStringCaseLabels2 {
--- a/test/langtools/tools/javac/TryWithResources/BadTwr.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/TryWithResources/BadTwr.java	Thu Jul 12 11:09:23 2018 -0700
@@ -3,7 +3,6 @@
  * @bug 6911256 6964740
  * @author Joseph D. Darcy
  * @summary Verify bad TWRs don't compile
- * @compile/fail/ref=BadTwr6.out -XDrawDiagnostics -source 6 BadTwr.java
  * @compile/fail/ref=BadTwr.out -XDrawDiagnostics BadTwr.java
  */
 
--- a/test/langtools/tools/javac/TryWithResources/BadTwr.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/TryWithResources/BadTwr.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
-BadTwr.java:13:46: compiler.err.already.defined: kindname.variable, r1, kindname.method, main(java.lang.String...)
-BadTwr.java:18:20: compiler.err.already.defined: kindname.variable, args, kindname.method, main(java.lang.String...)
-BadTwr.java:21:13: compiler.err.cant.assign.val.to.final.var: thatsIt
-BadTwr.java:26:24: compiler.err.already.defined: kindname.variable, name, kindname.method, main(java.lang.String...)
+BadTwr.java:12:46: compiler.err.already.defined: kindname.variable, r1, kindname.method, main(java.lang.String...)
+BadTwr.java:17:20: compiler.err.already.defined: kindname.variable, args, kindname.method, main(java.lang.String...)
+BadTwr.java:20:13: compiler.err.cant.assign.val.to.final.var: thatsIt
+BadTwr.java:25:24: compiler.err.already.defined: kindname.variable, name, kindname.method, main(java.lang.String...)
 4 errors
--- a/test/langtools/tools/javac/TryWithResources/BadTwr6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-- compiler.warn.source.no.bootclasspath: 6
-- compiler.warn.option.obsolete.source: 6
-- compiler.warn.option.obsolete.suppression
-BadTwr.java:13:12: compiler.err.feature.not.supported.in.source: (compiler.misc.feature.try.with.resources), 6, 7
-1 error
-3 warnings
--- a/test/langtools/tools/javac/TryWithResources/BadTwrSyntax.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/TryWithResources/BadTwrSyntax.java	Thu Jul 12 11:09:23 2018 -0700
@@ -3,7 +3,6 @@
  * @bug 6911256 6964740
  * @author Joseph D. Darcy
  * @summary Verify bad TWRs don't compile
- * @compile/fail/ref=BadTwrSyntax6.out -XDrawDiagnostics -source 6 BadTwrSyntax.java
  * @compile/fail/ref=BadTwrSyntax.out -XDrawDiagnostics BadTwrSyntax.java
  */
 
--- a/test/langtools/tools/javac/TryWithResources/BadTwrSyntax.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/TryWithResources/BadTwrSyntax.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
-BadTwrSyntax.java:14:43: compiler.err.illegal.start.of.expr
+BadTwrSyntax.java:13:43: compiler.err.illegal.start.of.expr
 1 error
--- a/test/langtools/tools/javac/TryWithResources/BadTwrSyntax6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-- compiler.warn.source.no.bootclasspath: 6
-- compiler.warn.option.obsolete.source: 6
-- compiler.warn.option.obsolete.suppression
-BadTwrSyntax.java:14:12: compiler.err.feature.not.supported.in.source: (compiler.misc.feature.try.with.resources), 6, 7
-BadTwrSyntax.java:14:43: compiler.err.illegal.start.of.expr
-2 errors
-3 warnings
--- a/test/langtools/tools/javac/TryWithResources/PlainTry.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/TryWithResources/PlainTry.java	Thu Jul 12 11:09:23 2018 -0700
@@ -3,7 +3,6 @@
  * @bug 6911256 6964740
  * @author Joseph D. Darcy
  * @summary Test error messages for an unadorned try
- * @compile/fail/ref=PlainTry6.out -XDrawDiagnostics -source 6 -Xlint:-options PlainTry.java
  * @compile/fail/ref=PlainTry.out  -XDrawDiagnostics                           PlainTry.java
  */
 public class PlainTry {
--- a/test/langtools/tools/javac/TryWithResources/PlainTry.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/TryWithResources/PlainTry.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
-PlainTry.java:11:9: compiler.err.try.without.catch.finally.or.resource.decls
+PlainTry.java:10:9: compiler.err.try.without.catch.finally.or.resource.decls
 1 error
--- a/test/langtools/tools/javac/TryWithResources/PlainTry6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-PlainTry.java:11:9: compiler.err.try.without.catch.or.finally
-1 error
--- a/test/langtools/tools/javac/TryWithResources/TwrOnNonResource.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/TryWithResources/TwrOnNonResource.java	Thu Jul 12 11:09:23 2018 -0700
@@ -3,7 +3,6 @@
  * @bug 6911256 6964740 7013420
  * @author Joseph D. Darcy
  * @summary Verify invalid TWR block is not accepted.
- * @compile/fail/ref=TwrOnNonResource6.out -XDrawDiagnostics -source 6 TwrOnNonResource.java
  * @compile/fail/ref=TwrOnNonResource.out -XDrawDiagnostics TwrOnNonResource.java
  */
 
--- a/test/langtools/tools/javac/TryWithResources/TwrOnNonResource.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/TryWithResources/TwrOnNonResource.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,4 +1,4 @@
-TwrOnNonResource.java:12:30: compiler.err.prob.found.req: (compiler.misc.try.not.applicable.to.type: (compiler.misc.inconvertible.types: TwrOnNonResource, java.lang.AutoCloseable))
-TwrOnNonResource.java:15:30: compiler.err.prob.found.req: (compiler.misc.try.not.applicable.to.type: (compiler.misc.inconvertible.types: TwrOnNonResource, java.lang.AutoCloseable))
-TwrOnNonResource.java:18:30: compiler.err.prob.found.req: (compiler.misc.try.not.applicable.to.type: (compiler.misc.inconvertible.types: TwrOnNonResource, java.lang.AutoCloseable))
+TwrOnNonResource.java:11:30: compiler.err.prob.found.req: (compiler.misc.try.not.applicable.to.type: (compiler.misc.inconvertible.types: TwrOnNonResource, java.lang.AutoCloseable))
+TwrOnNonResource.java:14:30: compiler.err.prob.found.req: (compiler.misc.try.not.applicable.to.type: (compiler.misc.inconvertible.types: TwrOnNonResource, java.lang.AutoCloseable))
+TwrOnNonResource.java:17:30: compiler.err.prob.found.req: (compiler.misc.try.not.applicable.to.type: (compiler.misc.inconvertible.types: TwrOnNonResource, java.lang.AutoCloseable))
 3 errors
--- a/test/langtools/tools/javac/TryWithResources/TwrOnNonResource6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-- compiler.warn.source.no.bootclasspath: 6
-- compiler.warn.option.obsolete.source: 6
-- compiler.warn.option.obsolete.suppression
-TwrOnNonResource.java:12:12: compiler.err.feature.not.supported.in.source: (compiler.misc.feature.try.with.resources), 6, 7
-1 error
-3 warnings
--- a/test/langtools/tools/javac/TryWithResources/WeirdTwr.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/TryWithResources/WeirdTwr.java	Thu Jul 12 11:09:23 2018 -0700
@@ -3,7 +3,6 @@
  * @bug 6911256 6964740
  * @author Joseph D. Darcy
  * @summary Strange TWRs
- * @compile/fail/ref=WeirdTwr.out -XDrawDiagnostics -source 6 WeirdTwr.java
  * @compile WeirdTwr.java
  * @run main WeirdTwr
  */
--- a/test/langtools/tools/javac/annotations/repeatingAnnotations/WrongVersion.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/annotations/repeatingAnnotations/WrongVersion.java	Thu Jul 12 11:09:23 2018 -0700
@@ -5,7 +5,6 @@
  * @compile WrongVersion.java
  * @compile -Xlint:-options -source 8 WrongVersion.java
  * @compile/fail/ref=WrongVersion7.out -XDrawDiagnostics -Xlint:-options -source 7 WrongVersion.java
- * @compile/fail/ref=WrongVersion6.out -XDrawDiagnostics -Xlint:-options -source 6 WrongVersion.java
  */
 import java.lang.annotation.Repeatable;
 
--- a/test/langtools/tools/javac/annotations/repeatingAnnotations/WrongVersion6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-WrongVersion.java:12:9: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.repeatable.annotations), 6, 8
-1 error
--- a/test/langtools/tools/javac/annotations/repeatingAnnotations/WrongVersion7.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/annotations/repeatingAnnotations/WrongVersion7.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
-WrongVersion.java:12:9: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.repeatable.annotations), 7, 8
+WrongVersion.java:11:9: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.repeatable.annotations), 7, 8
 1 error
--- a/test/langtools/tools/javac/annotations/typeAnnotations/failures/AnnotationVersion.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/annotations/typeAnnotations/failures/AnnotationVersion.java	Thu Jul 12 11:09:23 2018 -0700
@@ -4,7 +4,6 @@
  * @summary test that only Java 8 allows type annotations
  * @author Mahmood Ali
  * @compile AnnotationVersion.java
- * @compile/fail/ref=AnnotationVersion.out -XDrawDiagnostics -Xlint:-options -source 1.6 AnnotationVersion.java
  * @compile/fail/ref=AnnotationVersion7.out -XDrawDiagnostics -Xlint:-options -source 1.7 AnnotationVersion.java
  */
 import java.lang.annotation.*;
--- a/test/langtools/tools/javac/annotations/typeAnnotations/failures/AnnotationVersion.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-AnnotationVersion.java:12:27: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.type.annotations), 6, 8
-1 error
--- a/test/langtools/tools/javac/annotations/typeAnnotations/failures/AnnotationVersion7.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/annotations/typeAnnotations/failures/AnnotationVersion7.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
-AnnotationVersion.java:12:27: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.type.annotations), 7, 8
+AnnotationVersion.java:11:27: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.type.annotations), 7, 8
 1 error
--- a/test/langtools/tools/javac/api/T6265137.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/api/T6265137.java	Thu Jul 12 11:09:23 2018 -0700
@@ -52,7 +52,9 @@
             String srcdir = System.getProperty("test.src");
             Iterable<? extends JavaFileObject> files =
                 fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(srcdir, "T6265137a.java")));
-            javac.getTask(null, fm, dl, Arrays.asList("-target", "12"), null, files).call();
+            javac.getTask(null, fm, dl,
+                          Arrays.asList("-target", Integer.toString(Runtime.version().feature())),
+                          null, files).call();
         }
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/api/TestGetScopeResult.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2018, 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.
+ */
+
+/*
+ * @test
+ * @bug 8205418
+ * @summary Test the outcomes from Trees.getScope
+ * @modules jdk.compiler
+ */
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.lang.model.element.Element;
+import javax.tools.JavaCompiler;
+import javax.tools.SimpleJavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
+
+import com.sun.source.tree.CompilationUnitTree;
+import com.sun.source.tree.LambdaExpressionTree;
+import com.sun.source.tree.Scope;
+import com.sun.source.util.JavacTask;
+import com.sun.source.util.TreePath;
+import com.sun.source.util.TreePathScanner;
+import com.sun.source.util.Trees;
+
+import static javax.tools.JavaFileObject.Kind.SOURCE;
+
+public class TestGetScopeResult {
+    public static void main(String... args) throws IOException {
+        new TestGetScopeResult().run();
+    }
+
+    public void run() throws IOException {
+        String[] simpleLambda = {
+            "s:java.lang.String",
+            "i:Test.I",
+            "super:java.lang.Object",
+            "this:Test"
+        };
+        doTest("class Test { void test() { I i = s -> { }; } interface I { public void test(String s); } }",
+               simpleLambda);
+        doTest("class Test { void test() { I i = s -> { }; } interface I { public int test(String s); } }",
+               simpleLambda);
+        doTest("class Test { void test() { I i = s -> { }; } interface I { public String test(String s); } }",
+               simpleLambda);
+        doTest("class Test { void test() { I i; inv(s -> { }); } void inv(I i) { } interface I { public void test(String s); } }",
+               simpleLambda);
+        doTest("class Test { void test() { I i; inv(s -> { }); } void inv(I i) { } interface I { public int test(String s); } }",
+               simpleLambda);
+        doTest("class Test { void test() { I i; inv(s -> { }); } void inv(I i) { } interface I { public String test(String s); } }",
+               simpleLambda);
+        String[] dualLambda = {
+            "s:java.lang.String",
+            "i:Test.I1",
+            "super:java.lang.Object",
+            "this:Test",
+            "s:java.lang.CharSequence",
+            "i:Test.I1",
+            "super:java.lang.Object",
+            "this:Test"
+        };
+        doTest("class Test { void test() { I1 i; inv(s -> { }, s -> { }); } void inv(I1 i, I2 i) { } interface I1 { public String test(String s); } interface I2 { public void test(CharSequence s); } }",
+               dualLambda);
+        doTest("class Test { void test() { I1 i; inv(s -> { }, s -> { }); } void inv(I1 i, I2 i) { } interface I1 { public String test(String s); } interface I2 { public int test(CharSequence s); } }",
+               dualLambda);
+        String[] brokenType = {
+            "s:<any>",
+            "u:Undefined",
+            "super:java.lang.Object",
+            "this:Test"
+        };
+        doTest("class Test { void test() { Undefined u = s -> { }; } }",
+               brokenType);
+        String[] multipleCandidates1 = {
+            "s:<any>",
+            "super:java.lang.Object",
+            "this:Test"
+        };
+        doTest("class Test { void test() { cand1(s -> { }); } void cand1(I1 i) { } void cand1(I2 i) { } interface I1 { public String test(String s); } interface I2 { public int test(CharSequence s); } }",
+               multipleCandidates1);
+        String[] multipleCandidates2 = {
+            "s:java.lang.String",
+            "super:java.lang.Object",
+            "this:Test"
+        };
+        doTest("class Test { void test() { cand1(s -> { }); } void cand1(I1 i) { } void cand1(I2 i, int i) { } interface I1 { public String test(String s); } interface I2 { public int test(CharSequence s); } }",
+               multipleCandidates2);
+    }
+
+    public void doTest(String code, String... expected) throws IOException {
+        JavaCompiler c = ToolProvider.getSystemJavaCompiler();
+        try (StandardJavaFileManager fm = c.getStandardFileManager(null, null, null)) {
+            class MyFileObject extends SimpleJavaFileObject {
+                MyFileObject() {
+                    super(URI.create("myfo:///Test.java"), SOURCE);
+                }
+                @Override
+                public String getCharContent(boolean ignoreEncodingErrors) {
+                    return code;
+                }
+            }
+            JavacTask t = (JavacTask) c.getTask(null, fm, null, null, null, List.of(new MyFileObject()));
+            CompilationUnitTree cut = t.parse().iterator().next();
+            t.analyze();
+
+            List<String> actual = new ArrayList<>();
+
+            new TreePathScanner<Void, Void>() {
+                @Override
+                public Void visitLambdaExpression(LambdaExpressionTree node, Void p) {
+                    Scope scope = Trees.instance(t).getScope(new TreePath(getCurrentPath(), node.getBody()));
+                    while (scope.getEnclosingClass() != null) {
+                        for (Element el : scope.getLocalElements()) {
+                            actual.add(el.getSimpleName() + ":" +el.asType().toString());
+                        }
+                        scope = scope.getEnclosingScope();
+                    }
+                    return super.visitLambdaExpression(node, p);
+                }
+            }.scan(cut, null);
+
+            List<String> expectedList = List.of(expected);
+
+            if (!expectedList.equals(actual)) {
+                throw new IllegalStateException("Unexpected scope content: " + actual);
+            }
+        }
+    }
+
+}
+
--- a/test/langtools/tools/javac/classfiles/ClassVersionChecker.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/classfiles/ClassVersionChecker.java	Thu Jul 12 11:09:23 2018 -0700
@@ -35,10 +35,40 @@
 import java.util.*;
 import java.util.regex.*;
 
+/*
+ * If not explicitly specified the latest source and latest target
+ * values are the defaults. If explicitly specified, the target value
+ * has to be greater than or equal to the source value.
+ */
 public class ClassVersionChecker {
+    private static enum Version {
+        SEVEN("7", 51),
+        EIGHT("8", 52),
+        NINE("9", 53),
+        TEN("10", 54),
+        ELEVEN("11", 55),
+        TWELVE("12", 56);
+
+        private Version(String release, int classFileVer) {
+            this.release = release;
+            this.classFileVer = classFileVer;
+        }
+        private final String release;
+        private final int classFileVer;
+
+        String release() {return release;}
+        int classFileVer() {return classFileVer;}
+    }
+
+    static final Version CURRENT;
+    static {
+        Version[] versions = Version.values();
+        int index = versions.length;
+        CURRENT = versions[index - 1];
+    }
 
     int errors;
-    String[] jdk = {"", "1.6", "1.7", "1.8", "1.9", "1.10", "11", "12"};
+
     File javaFile = null;
 
     public static void main(String[] args) throws Throwable {
@@ -47,31 +77,23 @@
 
     void run() throws Exception {
         writeTestFile();
-        /* Rules applicable for -source and -target combinations
+        /*
+         * Rules applicable for -source and -target combinations:
          * 1. If both empty, version num is for the current release
-         * 2. If source is not empty and target is empty, version is based on source
+         * 2. If source is not empty and target is empty, version is
+         * based on the current release
          * 3. If both non-empty, version is based on target
          */
-
-        /* -source (0=>empty,1=>1.2,...) X -target (0=>empty,1=>1.2,...)
-         * ver[0][0] => no -source or -target was given
-         * -1 => invalid combinations
-         */
-        int[][] ver =
-            {{56, -1, -1, -1, -1, -1, -1, -1},
-             {56, 50, 51, 52, 53, 54, 55, 56},
-             {56, -1, 51, 52, 53, 54, 55, 56},
-             {56, -1, -1, 52, 53, 54, 55, 56},
-             {56, -1, -1, -1, 53, 54, 55, 56},
-             {56, -1, -1, -1, -1, 54, 55, 56}};
-
-        // Loop to run all possible combinations of source/target values
-        for (int i = 0; i< ver.length; i++) {
-            for (int j = 0 ; j< ver[i].length; j++) {
-                if(ver[i][j] != -1) {
-                    logMsg("Index values for i = " + i + " j = " + j);
-                    logMsg("Running for src = " + jdk[i] + " target = "+jdk[j] +" expected = " + ver[i][j]);
-                    test(i,j, ver[i][j]);
+        test("", "", CURRENT.classFileVer());
+        for (Version source : Version.values()) {
+            test(source.release(), "", CURRENT.classFileVer()); // no target
+            for (Version target : Version.values()) {
+                if (target.compareTo(source) < 0)
+                    continue; // Target < source not a valid set of arguments
+                else {
+                    logMsg("Running for src = " + source + " target = "+ target +
+                           " expected = " + target.classFileVer());
+                    test(source.release(), target.release(), target.classFileVer());
                 }
             }
         }
@@ -80,7 +102,7 @@
             throw new Exception(errors + " errors found");
     }
 
-    void test (int i, int j, int expected) {
+    void test(String i, String j, int expected) {
         File classFile = compileTestFile(i, j, javaFile);
         short majorVer = getMajorVersion(classFile);
         checkVersion(majorVer, expected);
@@ -97,15 +119,15 @@
         }
     }
 
-    File compileTestFile(int i , int j, File f) {
+    File compileTestFile(String i, String j, File f) {
         int rc = -1;
         // Src and target are empty
-        if (i == 0 && j == 0 ) {
+        if (i.isEmpty() && j.isEmpty() ) {
             rc = compile("-g", f.getPath());
-        } else if( j == 0 ) {  // target is empty
-            rc = compile("-source", jdk[i], "-g", f.getPath());
+        } else if( j.isEmpty()) {  // target is empty
+            rc = compile("-source", i, "-g", f.getPath());
         } else {
-            rc = compile("-source", jdk[i], "-target", jdk[j], "-g", f.getPath());
+            rc = compile("-source", i, "-target", j, "-g", f.getPath());
         }
         if (rc != 0)
             throw new Error("compilation failed. rc=" + rc);
--- a/test/langtools/tools/javac/defaultMethods/static/StaticInvokeQualified.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/defaultMethods/static/StaticInvokeQualified.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,9 +1,8 @@
 /* @test /nodynamiccopyright/
  * @bug 8037385
  * @summary Must not allow static interface method invocation in legacy code
- * @compile -source 8 -Xlint:-options StaticInvokeQualified.java
+ * @compile -Xlint:-options StaticInvokeQualified.java
  * @compile/fail/ref=StaticInvokeQualified7.out -source 7 -Xlint:-options -XDrawDiagnostics StaticInvokeQualified.java
- * @compile/fail/ref=StaticInvokeQualified6.out -source 6 -Xlint:-options -XDrawDiagnostics StaticInvokeQualified.java
  */
 
 class StaticInvokeQualified {
--- a/test/langtools/tools/javac/defaultMethods/static/StaticInvokeQualified6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-StaticInvokeQualified.java:11:32: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.static.intf.method.invoke), 6, 8
-1 error
--- a/test/langtools/tools/javac/defaultMethods/static/StaticInvokeQualified7.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/defaultMethods/static/StaticInvokeQualified7.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
-StaticInvokeQualified.java:11:32: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.static.intf.method.invoke), 7, 8
+StaticInvokeQualified.java:10:32: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.static.intf.method.invoke), 7, 8
 1 error
--- a/test/langtools/tools/javac/defaultMethods/static/StaticInvokeSimple.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/defaultMethods/static/StaticInvokeSimple.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,9 +1,8 @@
 /* @test /nodynamiccopyright/
  * @bug 8037385
  * @summary Must not allow static interface method invocation in legacy code
- * @compile -source 8 -Xlint:-options StaticInvokeSimple.java
+ * @compile -Xlint:-options StaticInvokeSimple.java
  * @compile/fail/ref=StaticInvokeSimple7.out -source 7 -Xlint:-options -XDrawDiagnostics StaticInvokeSimple.java
- * @compile/fail/ref=StaticInvokeSimple6.out -source 6 -Xlint:-options -XDrawDiagnostics StaticInvokeSimple.java
  */
 import java.util.stream.Stream;
 
--- a/test/langtools/tools/javac/defaultMethods/static/StaticInvokeSimple6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-StaticInvokeSimple.java:12:15: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.static.intf.method.invoke), 6, 8
-1 error
--- a/test/langtools/tools/javac/defaultMethods/static/StaticInvokeSimple7.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/defaultMethods/static/StaticInvokeSimple7.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
-StaticInvokeSimple.java:12:15: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.static.intf.method.invoke), 7, 8
+StaticInvokeSimple.java:11:15: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.static.intf.method.invoke), 7, 8
 1 error
--- a/test/langtools/tools/javac/lambda/BadRecovery.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/lambda/BadRecovery.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,3 +1,4 @@
 BadRecovery.java:17:9: compiler.err.cant.apply.symbol: kindname.method, m, BadRecovery.SAM1, @11, kindname.class, BadRecovery, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.incompatible.arg.types.in.lambda))
+BadRecovery.java:17:38: compiler.err.cant.resolve.location.args: kindname.method, someMemberOfReceiver, , @60, (compiler.misc.location.1: kindname.variable, receiver, java.lang.Object)
 BadRecovery.java:17:77: compiler.err.cant.resolve.location: kindname.variable, f, , , (compiler.misc.location: kindname.class, BadRecovery, null)
-2 errors
+3 errors
--- a/test/langtools/tools/javac/literals/BadBinaryLiterals.6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-BadBinaryLiterals.java:10:17: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.binary.lit), 6, 7
-BadBinaryLiterals.java:11:24: compiler.err.expected: ';'
-BadBinaryLiterals.java:16:27: compiler.err.expected: ';'
-BadBinaryLiterals.java:17:27: compiler.err.expected: ';'
-BadBinaryLiterals.java:17:30: compiler.err.expected: token.identifier
-5 errors
--- a/test/langtools/tools/javac/literals/BadBinaryLiterals.7.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/literals/BadBinaryLiterals.7.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,7 +1,7 @@
-BadBinaryLiterals.java:11:24: compiler.err.expected: ';'
-BadBinaryLiterals.java:13:21: compiler.err.int.number.too.large: 111111111111111111111111111111111
-BadBinaryLiterals.java:15:21: compiler.err.int.number.too.large: 11111111111111111111111111111111111111111111111111111111111111111
+BadBinaryLiterals.java:10:24: compiler.err.expected: ';'
+BadBinaryLiterals.java:12:21: compiler.err.int.number.too.large: 111111111111111111111111111111111
+BadBinaryLiterals.java:14:21: compiler.err.int.number.too.large: 11111111111111111111111111111111111111111111111111111111111111111
+BadBinaryLiterals.java:15:27: compiler.err.expected: ';'
 BadBinaryLiterals.java:16:27: compiler.err.expected: ';'
-BadBinaryLiterals.java:17:27: compiler.err.expected: ';'
-BadBinaryLiterals.java:17:30: compiler.err.expected: token.identifier
+BadBinaryLiterals.java:16:30: compiler.err.expected: token.identifier
 6 errors
--- a/test/langtools/tools/javac/literals/BadBinaryLiterals.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/literals/BadBinaryLiterals.java	Thu Jul 12 11:09:23 2018 -0700
@@ -2,7 +2,6 @@
  * @test /nodynamiccopyright/
  * @bug 6860965
  * @summary Project Coin: binary literals
- * @compile/fail/ref=BadBinaryLiterals.6.out -XDrawDiagnostics -source 6 -Xlint:-options BadBinaryLiterals.java
  * @compile/fail/ref=BadBinaryLiterals.7.out -XDrawDiagnostics BadBinaryLiterals.java
  */
 
--- a/test/langtools/tools/javac/literals/BadUnderscoreLiterals.6.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-BadUnderscoreLiterals.java:11:17: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.underscore.lit), 6, 7
-BadUnderscoreLiterals.java:15:15: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:19:19: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:22:14: compiler.err.feature.not.supported.in.source.plural: (compiler.misc.feature.binary.lit), 6, 7
-BadUnderscoreLiterals.java:22:16: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:23:17: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:26:16: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:27:17: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:30:17: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:31:18: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:32:19: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:33:19: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:34:18: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:35:19: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:38:19: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:39:20: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:40:21: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:41:22: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:42:21: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:43:22: compiler.err.illegal.underscore
-20 errors
--- a/test/langtools/tools/javac/literals/BadUnderscoreLiterals.7.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/literals/BadUnderscoreLiterals.7.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,19 +1,19 @@
-BadUnderscoreLiterals.java:15:15: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:19:19: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:22:16: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:23:17: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:26:16: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:27:17: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:30:17: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:31:18: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:14:15: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:18:19: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:21:16: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:22:17: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:25:16: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:26:17: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:29:17: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:30:18: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:31:19: compiler.err.illegal.underscore
 BadUnderscoreLiterals.java:32:19: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:33:19: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:34:18: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:35:19: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:38:19: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:39:20: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:40:21: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:41:22: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:42:21: compiler.err.illegal.underscore
-BadUnderscoreLiterals.java:43:22: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:33:18: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:34:19: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:37:19: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:38:20: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:39:21: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:40:22: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:41:21: compiler.err.illegal.underscore
+BadUnderscoreLiterals.java:42:22: compiler.err.illegal.underscore
 18 errors
--- a/test/langtools/tools/javac/literals/BadUnderscoreLiterals.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/literals/BadUnderscoreLiterals.java	Thu Jul 12 11:09:23 2018 -0700
@@ -4,11 +4,10 @@
  * @summary Project Coin: underscores in literals
  *
  * @compile/fail/ref=BadUnderscoreLiterals.7.out -XDrawDiagnostics BadUnderscoreLiterals.java
- * @compile/fail/ref=BadUnderscoreLiterals.6.out -XDrawDiagnostics -source 6 -Xlint:-options BadUnderscoreLiterals.java
  */
 
 public class BadUnderscoreLiterals {
-    int valid = 1_1;            // valid literal; illegal in -source 6
+    int valid = 1_1;            // valid literal
 
     // test zero
     int z1 = _0;                // valid (but undefined) variable
--- a/test/langtools/tools/javac/mixedTarget/ExtendCovariant2.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/mixedTarget/ExtendCovariant2.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2018, 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
@@ -27,7 +27,6 @@
  * @summary Ensure Covariant Return Type allowed in minimum supported version
  * @author gafter
  *
- * @compile -source 1.6 ExtendCovariant2.java
  * @compile                  ExtendCovariant2.java
  */
 
@@ -40,7 +39,7 @@
  *
  * With JDK 1.5, a Covariant Return is allowed so check that is the case.
  *
- **/
+ */
 public class ExtendCovariant2 extends java.io.PrintStream {
     ExtendCovariant2() throws java.io.IOException {
         super("");
--- a/test/langtools/tools/javac/modules/AddLimitMods.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/modules/AddLimitMods.java	Thu Jul 12 11:09:23 2018 -0700
@@ -264,7 +264,7 @@
                    .writeAll()
                    .getOutputLines(Task.OutputKind.DIRECT);
 
-        if (!actual.contains("- compiler.err.option.not.allowed.with.target: --add-modules, 1.8")) {
+        if (!actual.contains("- compiler.err.option.not.allowed.with.target: --add-modules, 8")) {
             throw new IllegalStateException("incorrect errors; actual=" + actual);
         }
 
--- a/test/langtools/tools/javac/modules/AnnotationProcessing.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/modules/AnnotationProcessing.java	Thu Jul 12 11:09:23 2018 -0700
@@ -95,6 +95,7 @@
 public class AnnotationProcessing extends ModuleTestBase {
 
     public static void main(String... args) throws Exception {
+        System.out.println(System.getProperties());
         new AnnotationProcessing().runTests();
     }
 
@@ -568,7 +569,7 @@
                             "--module-source-path", moduleSrc.toString());
                 assertFileExists(classes, "m1x", "api1", "Impl.class");
 
-                deleteFile(m1.resolve("test").resolve("Test.java"));
+                tb.deleteFiles(m1.resolve("test").resolve("Test.java"));
 
                 //resource class output:
                 runCompiler(base,
@@ -623,7 +624,7 @@
             assertFileExists(classes, "m1x", pack, "Pass.class");
             assertFileNotExists(classes, "m2x", pack, "Pass.class");
 
-            deleteFile(m1.resolve("test").resolve("Test.java"));
+            tb.deleteFiles(m1.resolve("test").resolve("Test.java"));
 
             runCompiler(base,
                         moduleSrc,
@@ -694,36 +695,6 @@
         }
     }
 
-    private void deleteFile(Path file) throws IOException {
-        long startTime = System.currentTimeMillis();
-
-        do {
-            Files.delete(file);
-            if (!Files.exists(file)) {
-                return;
-            }
-            System.err.println("!! File not deleted !!");
-            System.gc(); // allow finalizers and cleaners to run
-            try {
-                Thread.sleep(RETRY_DELETE_MILLIS);
-            } catch (InterruptedException e) {
-                throw new IOException("Interrupted while deleting " + file, e);
-            }
-        } while ((System.currentTimeMillis() - startTime) <= MAX_RETRY_DELETE_MILLIS);
-
-        throw new IOException("Can't delete " + file);
-    }
-
-
-    private static final int RETRY_DELETE_MILLIS;
-    private static final int MAX_RETRY_DELETE_MILLIS;
-
-    static {
-        boolean isWindows = System.getProperty("os.name").startsWith("Windows");
-        RETRY_DELETE_MILLIS = isWindows ? 500 : 0;
-        MAX_RETRY_DELETE_MILLIS = isWindows ? 15 * 1000 : 0;
-    }
-
     public static abstract class GeneratingAP extends AbstractProcessor {
 
         public void createSource(CreateFileObject file, String name, String content) {
@@ -872,7 +843,7 @@
                                 options);
                     assertFileExists(classes, modulePath, "impl", "Impl.class");
 
-                    deleteFile(m1.resolve("test").resolve("Test.java"));
+                    tb.deleteFiles(m1.resolve("test").resolve("Test.java"));
 
                     //resource class output:
                     runCompiler(base,
@@ -899,7 +870,7 @@
                     "expectFilerException(() -> filer.getResource(StandardLocation.SOURCE_PATH, \"m1x/impl\", \"resource\"))",
                     "-sourcepath", m1.toString());
 
-        deleteFile(m1.resolve("impl").resolve("resource"));
+        tb.deleteFiles(m1.resolve("impl").resolve("resource"));
 
         //can read resources from the system module path if module name given:
         runCompiler(base,
@@ -960,7 +931,7 @@
                         "-sourcepath", m1.toString());
         }
 
-        deleteFile(m1.resolve("module-info.java"));
+        tb.deleteFiles(m1.resolve("module-info.java"));
         tb.writeJavaFiles(m1,
                           "package test; class Test { }");
 
--- a/test/langtools/tools/javac/multicatch/Neg01.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/multicatch/Neg01.java	Thu Jul 12 11:09:23 2018 -0700
@@ -5,8 +5,6 @@
  * @summary Project Coin: Improved Exception Handling for Java (aka 'multicatch')
  * @author darcy
  * @compile/fail/ref=Neg01.out -XDrawDiagnostics Neg01.java
- * @compile -source 6 -XDrawDiagnostics Neg01.java
- *
  */
 
 class Neg01 {
--- a/test/langtools/tools/javac/multicatch/Neg01.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/multicatch/Neg01.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
-Neg01.java:24:19: compiler.err.except.never.thrown.in.try: Neg01.B2
+Neg01.java:22:19: compiler.err.except.never.thrown.in.try: Neg01.B2
 1 error
--- a/test/langtools/tools/javac/multicatch/Neg01eff_final.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/multicatch/Neg01eff_final.java	Thu Jul 12 11:09:23 2018 -0700
@@ -5,8 +5,6 @@
  * @summary Project Coin: Improved Exception Handling for Java (aka 'multicatch')
  * @author darcy
  * @compile/fail/ref=Neg01eff_final.out -XDrawDiagnostics Neg01eff_final.java
- * @compile -source 6 -XDrawDiagnostics Neg01eff_final.java
- *
  */
 
 class Neg01eff_final {
--- a/test/langtools/tools/javac/multicatch/Neg01eff_final.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/multicatch/Neg01eff_final.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
-Neg01eff_final.java:24:19: compiler.err.except.never.thrown.in.try: Neg01eff_final.B2
+Neg01eff_final.java:22:19: compiler.err.except.never.thrown.in.try: Neg01eff_final.B2
 1 error
--- a/test/langtools/tools/javac/parser/JavacParserTest.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/parser/JavacParserTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 7073631 7159445 7156633 8028235 8065753 8205913
+ * @bug 7073631 7159445 7156633 8028235 8065753 8205418 8205913
  * @summary tests error and diagnostics positions
  * @author  Jan Lahoda
  * @modules jdk.compiler/com.sun.tools.javac.api
@@ -51,6 +51,7 @@
 import com.sun.source.tree.WhileLoopTree;
 import com.sun.source.util.JavacTask;
 import com.sun.source.util.SourcePositions;
+import com.sun.source.util.TreePath;
 import com.sun.source.util.TreePathScanner;
 import com.sun.source.util.TreeScanner;
 import com.sun.source.util.Trees;
@@ -1037,6 +1038,105 @@
         assertEquals("the error message is not correct, actual: " + actualErrors, expectedErrors, actualErrors);
     }
 
+    @Test
+    void testTypeParamsWithoutMethod() throws IOException {
+        assert tool != null;
+
+        String code = "package test; class Test { /**javadoc*/ |public <T> |}";
+        String[] parts = code.split("\\|");
+
+        code = parts[0] + parts[1] + parts[2];
+
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, fm, null, null,
+                null, Arrays.asList(new MyFileObject(code)));
+        Trees trees = Trees.instance(ct);
+        SourcePositions pos = trees.getSourcePositions();
+        CompilationUnitTree cut = ct.parse().iterator().next();
+        ClassTree clazz = (ClassTree) cut.getTypeDecls().get(0);
+        ErroneousTree err = (ErroneousTree) clazz.getMembers().get(0);
+        MethodTree method = (MethodTree) err.getErrorTrees().get(0);
+
+        final int methodStart = parts[0].length();
+        final int methodEnd = parts[0].length() + parts[1].length();
+        assertEquals("testTypeParamsWithoutMethod",
+                methodStart, pos.getStartPosition(cut, method));
+        assertEquals("testTypeParamsWithoutMethod",
+                methodEnd, pos.getEndPosition(cut, method));
+
+        TreePath path2Method = new TreePath(new TreePath(new TreePath(cut), clazz), method);
+        String javadoc = trees.getDocComment(path2Method);
+
+        if (!"javadoc".equals(javadoc)) {
+            throw new AssertionError("Expected javadoc not found, actual javadoc: " + javadoc);
+        }
+    }
+
+    @Test
+    void testAnalyzeParensWithComma1() throws IOException {
+        assert tool != null;
+
+        String code = "package test; class Test { FI fi = |(s, |";
+        String[] parts = code.split("\\|", 3);
+
+        code = parts[0] + parts[1] + parts[2];
+
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, fm, null, null,
+                null, Arrays.asList(new MyFileObject(code)));
+        Trees trees = Trees.instance(ct);
+        SourcePositions pos = trees.getSourcePositions();
+        CompilationUnitTree cut = ct.parse().iterator().next();
+        boolean[] found = new boolean[1];
+
+        new TreeScanner<Void, Void>() {
+            @Override
+            public Void visitLambdaExpression(LambdaExpressionTree tree, Void v) {
+                found[0] = true;
+                int lambdaStart = parts[0].length();
+                int lambdaEnd = parts[0].length() + parts[1].length();
+                assertEquals("testAnalyzeParensWithComma1",
+                        lambdaStart, pos.getStartPosition(cut, tree));
+                assertEquals("testAnalyzeParensWithComma1",
+                        lambdaEnd, pos.getEndPosition(cut, tree));
+                return null;
+            }
+        }.scan(cut, null);
+
+        assertTrue("testAnalyzeParensWithComma1", found[0]);
+    }
+
+    @Test
+    void testAnalyzeParensWithComma2() throws IOException {
+        assert tool != null;
+
+        String code = "package test; class Test { FI fi = |(s, o)|";
+        String[] parts = code.split("\\|", 3);
+
+        code = parts[0] + parts[1] + parts[2];
+
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, fm, null, null,
+                null, Arrays.asList(new MyFileObject(code)));
+        Trees trees = Trees.instance(ct);
+        SourcePositions pos = trees.getSourcePositions();
+        CompilationUnitTree cut = ct.parse().iterator().next();
+        boolean[] found = new boolean[1];
+
+        new TreeScanner<Void, Void>() {
+            @Override
+            public Void visitLambdaExpression(LambdaExpressionTree tree, Void v) {
+                found[0] = true;
+                int lambdaStart = parts[0].length();
+                int lambdaEnd = parts[0].length() + parts[1].length();
+                assertEquals("testAnalyzeParensWithComma2",
+                        lambdaStart, pos.getStartPosition(cut, tree));
+                assertEquals("testAnalyzeParensWithComma2",
+                        lambdaEnd, pos.getEndPosition(cut, tree));
+                return null;
+            }
+        }.scan(cut, null);
+
+        assertTrue("testAnalyzeParensWithComma2", found[0]);
+    }
+
     void run(String[] args) throws Exception {
         int passed = 0, failed = 0;
         final Pattern p = (args != null && args.length > 0)
@@ -1082,6 +1182,12 @@
         }
     }
 
+    void assertTrue(String message, boolean bvalue) {
+        if (bvalue == false) {
+            fail(message);
+        }
+    }
+
     void assertEquals(String message, int i, long l) {
         if (i != l) {
             fail(message + ":" + i + ":" + l);
--- a/test/langtools/tools/javac/positions/TreeEndPosTest.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/positions/TreeEndPosTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 8017216 8019422 8019421 8054956
+ * @bug 8017216 8019422 8019421 8054956 8205418
  * @summary verify start and end positions
  * @modules java.compiler
  *          jdk.compiler
@@ -44,6 +44,13 @@
 import javax.tools.JavaFileObject;
 import javax.tools.SimpleJavaFileObject;
 import javax.tools.ToolProvider;
+import com.sun.source.tree.CompilationUnitTree;
+import com.sun.source.tree.Tree;
+import com.sun.source.tree.Tree.Kind;
+import com.sun.source.util.JavacTask;
+import com.sun.source.util.SourcePositions;
+import com.sun.source.util.TreeScanner;
+import com.sun.source.util.Trees;
 
 public class TreeEndPosTest {
     private static JavaFileManager getJavaFileManager(JavaCompiler compiler,
@@ -99,6 +106,15 @@
             js.endPos = end;
             return js;
         }
+
+        static JavaSource createFullJavaSource(String code) {
+            final String name = "Bug";
+            String[] parts = code.split("\\|", 3);
+            JavaSource js = new JavaSource(name + ".java", parts[0] + parts[1] + parts[2]);
+            js.startPos = parts[0].length();
+            js.endPos = parts[0].length() + parts[1].length();
+            return js;
+        }
     }
 
     public static void main(String... args) throws IOException {
@@ -107,6 +123,7 @@
         testUnresolvableAnnotationAttribute();
         testFinalVariableWithDefaultConstructor();
         testFinalVariableWithConstructor();
+        testWholeTextSpan();
     }
 
     static void testUninitializedVariable() throws IOException {
@@ -133,6 +150,10 @@
                 "{}"));
     }
 
+    static void testWholeTextSpan() throws IOException {
+        treeSpan(JavaSource.createFullJavaSource("|class X    |"));
+    }
+
     static void compile(JavaSource src) throws IOException {
         ByteArrayOutputStream ba = new ByteArrayOutputStream();
         PrintWriter writer = new PrintWriter(ba);
@@ -169,4 +190,46 @@
             }
         }
     }
+
+    static void treeSpan(JavaSource src) throws IOException {
+        ByteArrayOutputStream ba = new ByteArrayOutputStream();
+        PrintWriter writer = new PrintWriter(ba);
+        File tempDir = new File(".");
+        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+        DiagnosticCollector dc = new DiagnosticCollector();
+        try (JavaFileManager javaFileManager = getJavaFileManager(compiler, dc)) {
+            List<String> options = new ArrayList<>();
+            options.add("-cp");
+            options.add(tempDir.getPath());
+            options.add("-d");
+            options.add(tempDir.getPath());
+            options.add("--should-stop=at=GENERATE");
+
+            List<JavaFileObject> sources = new ArrayList<>();
+            sources.add(src);
+            JavacTask task = (JavacTask) compiler.getTask(writer, javaFileManager,
+                                                          dc, options, null,
+                                                          sources);
+            SourcePositions sp = Trees.instance(task).getSourcePositions();
+            boolean[] found = new boolean[1];
+            new TreeScanner<Void, Void>() {
+                CompilationUnitTree cut;
+                @Override
+                public Void scan(Tree tree, Void p) {
+                    if (tree == null)
+                        return null;
+                    if (tree.getKind() == Kind.COMPILATION_UNIT) {
+                        cut = (CompilationUnitTree) tree;
+                    }
+                    found[0] |= (sp.getStartPosition(cut, tree) == src.startPos) &&
+                                (sp.getEndPosition(cut, tree) == src.endPos);
+                    return super.scan(tree, p);
+                }
+            }.scan(task.parse(), null);
+
+            if (!found[0]) {
+                throw new IllegalStateException();
+            }
+        }
+    }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/processing/rounds/GenerateAnonymousClass.java	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2018, Google LLC. 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.
+ */
+
+/*
+ * @test
+ * @bug 8204630
+ * @summary generating an anonymous class with Filer#createClassFile causes an NPE in
+ * JavacProcessingEnvironment
+ * @library /tools/lib /tools/javac/lib/
+ * @modules jdk.compiler/com.sun.tools.javac.api
+ *          jdk.compiler/com.sun.tools.javac.main
+ *          jdk.compiler/com.sun.tools.javac.processing
+ *          jdk.compiler/com.sun.tools.javac.util
+ *          jdk.jdeps/com.sun.tools.javap
+ * @clean *
+ * @build toolbox.ToolBox toolbox.JavacTask
+ * @build GenerateAnonymousClass JavacTestingAbstractProcessor
+ * @compile/ref=GenerateAnonymousClass.out -XDaccessInternalAPI -processor GenerateAnonymousClass -XDrawDiagnostics GenerateAnonymousClass.java
+ */
+
+import com.sun.tools.javac.processing.JavacProcessingEnvironment;
+import com.sun.tools.javac.processing.PrintingProcessor.PrintingElementVisitor;
+import com.sun.tools.javac.util.Log;
+import com.sun.tools.javac.util.Log.WriterKind;
+import java.io.*;
+import java.util.*;
+import javax.annotation.processing.*;
+import javax.lang.model.element.*;
+import javax.tools.*;
+import toolbox.JavacTask;
+import toolbox.ToolBox;
+
+public class GenerateAnonymousClass extends JavacTestingAbstractProcessor {
+    int round = 1;
+
+    @Override
+    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
+        Log log = Log.instance(((JavacProcessingEnvironment) processingEnv).getContext());
+        PrintWriter pw = log.getWriter(WriterKind.NOTICE);
+
+        pw.println("round: " + round);
+
+        TypeElement generatedClass = processingEnv.getElementUtils().getTypeElement("T");
+        if (generatedClass != null) {
+            new PrintingElementVisitor(pw, processingEnv.getElementUtils()).visit(generatedClass);
+            pw.flush();
+        }
+
+        if (round++ == 1) {
+            ToolBox tb = new ToolBox();
+            ToolBox.MemoryFileManager mfm = new ToolBox.MemoryFileManager();
+            new JavacTask(tb).fileManager(mfm).sources(GENERATED).run();
+
+            try (OutputStream out = filer.createClassFile("T").openOutputStream()) {
+                out.write(mfm.getFileBytes(StandardLocation.CLASS_OUTPUT, "T"));
+            } catch (IOException e) {
+                processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, e.toString());
+            }
+            try (OutputStream out = filer.createClassFile("T$1").openOutputStream()) {
+                out.write(mfm.getFileBytes(StandardLocation.CLASS_OUTPUT, "T$1"));
+            } catch (IOException e) {
+                processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, e.toString());
+            }
+        }
+
+        return false;
+    }
+
+    private static final String GENERATED =
+            "public class T {\n"
+                    + "    public void test() {\n"
+                    + "        new Object() {};\n"
+                    + "    }\n"
+                    + "}";
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/processing/rounds/GenerateAnonymousClass.out	Thu Jul 12 11:09:23 2018 -0700
@@ -0,0 +1,17 @@
+round: 1
+round: 2
+
+public class T {
+
+  public T();
+
+  public void test();
+}
+round: 3
+
+public class T {
+
+  public T();
+
+  public void test();
+}
--- a/test/langtools/tools/javac/processing/warnings/TestSourceVersionWarnings.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/processing/warnings/TestSourceVersionWarnings.java	Thu Jul 12 11:09:23 2018 -0700
@@ -29,13 +29,12 @@
  * @modules java.compiler
  *          jdk.compiler
  * @compile TestSourceVersionWarnings.java
- * @compile/ref=gold_0.out             -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only                           -source 1.6 -Xlint:-options HelloWorld.java
- * @compile/ref=gold_sv_warn_5_6.out   -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_5 -source 1.6 -Xlint:-options HelloWorld.java
- * @compile/ref=gold_sv_none.out       -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_6 -source 1.6 -Xlint:-options HelloWorld.java
- * @compile/ref=gold_unsp_warn.out     -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_6 -source 1.6 -Xlint:-options -Aunsupported HelloWorld.java
- * @compile/ref=gold_sv_none.out       -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_7 -source 1.7 -Xlint:-options HelloWorld.java
- * @compile/ref=gold_sv_none.out       -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_8 -source 1.8 -Xlint:-options HelloWorld.java
- * @compile/ref=gold_sv_none.out       -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_9 -source 1.9 -Xlint:-options HelloWorld.java
+ * @compile/ref=gold_0.out             -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only                            -source  8 -Xlint:-options HelloWorld.java
+ * @compile/ref=gold_sv_warn_5_6.out   -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_5  -source  8 -Xlint:-options HelloWorld.java
+ * @compile/ref=gold_unsp_warn.out     -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_8  -source  8 -Xlint:-options -Aunsupported HelloWorld.java
+ * @compile/ref=gold_sv_none.out       -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_10 -source 10 -Xlint:-options HelloWorld.java
+ * @compile/ref=gold_sv_none.out       -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_11 -source 11 -Xlint:-options HelloWorld.java
+ * @compile/ref=gold_sv_none.out       -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_12 -source 12 -Xlint:-options HelloWorld.java
  */
 
 import java.util.Set;
@@ -64,7 +63,7 @@
         if (sourceVersion == null) {
             processingEnv.getMessager().printMessage(WARNING,
                                                      "No SourceVersion option given");
-            return SourceVersion.RELEASE_6;
+            return SourceVersion.RELEASE_8;
         } else {
             return SourceVersion.valueOf(sourceVersion);
         }
--- a/test/langtools/tools/javac/processing/warnings/gold_sv_warn_5_6.out	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/processing/warnings/gold_sv_warn_5_6.out	Thu Jul 12 11:09:23 2018 -0700
@@ -1,2 +1,2 @@
-- compiler.warn.proc.processor.incompatible.source.version: RELEASE_5, TestSourceVersionWarnings, 6
+- compiler.warn.proc.processor.incompatible.source.version: RELEASE_5, TestSourceVersionWarnings, 8
 1 warning
--- a/test/langtools/tools/javac/types/CastObjectToPrimitiveTest.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/types/CastObjectToPrimitiveTest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, 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
@@ -25,7 +25,6 @@
  * @test
  * @bug 7038363
  * @summary cast from object to primitive should be for source >= 1.7
- * @compile/fail/ref=CastObjectToPrimitiveTest.out -XDrawDiagnostics -Xlint:-options -source 6 CastObjectToPrimitiveTest.java
  * @compile CastObjectToPrimitiveTest.java
  */
 
--- a/test/langtools/tools/javac/types/CastObjectToPrimitiveTest.out	Tue Jul 03 16:09:25 2018 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-CastObjectToPrimitiveTest.java:35:23: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: java.lang.Object, int)
-1 error
--- a/test/langtools/tools/javac/versions/Versions.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javac/versions/Versions.java	Thu Jul 12 11:09:23 2018 -0700
@@ -41,8 +41,14 @@
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Set;
+import java.util.function.BiConsumer;
 
-
+/*
+ * If not explicitly specified the latest source and latest target
+ * values are the defaults. If explicitly specified, the target value
+ * has to be greater than or equal to the source value.
+ */
 public class Versions {
 
     protected JavaCompiler javacompiler;
@@ -59,87 +65,115 @@
         versions.run();
     }
 
+    public static final Set<String> RETIRED_SOURCES =
+        Set.of("1.2", "1.3", "1.4", "1.5" /*, 1.6 */);
+
+    public static final Set<String> VALID_SOURCES =
+        Set.of("1.7", "1.8", "1.9", "1.10", "11", "12");
+
+    public static final String LATEST_MAJOR_VERSION = "56.0";
+
+    static enum SourceTarget {
+        SEVEN(true,   "51.0",  "7", Versions::checksrc17),
+        EIGHT(true,   "52.0",  "8", Versions::checksrc18),
+        NINE(true,    "53.0",  "9", Versions::checksrc19),
+        TEN(true,     "54.0", "10", Versions::checksrc110),
+        ELEVEN(false, "55.0", "11", Versions::checksrc111),
+        TWELVE(false, "56.0", "12", Versions::checksrc112);
+
+        private final boolean dotOne;
+        private final String classFileVer;
+        private final String target;
+        private final BiConsumer<Versions, String[]> checker;
+
+        private SourceTarget(boolean dotOne, String classFileVer, String target,
+                             BiConsumer<Versions, String[]> checker) {
+            this.dotOne = dotOne;
+            this.classFileVer = classFileVer;
+            this.target = target;
+            this.checker = checker;
+        }
+
+        public void checksrc(Versions version, String... args) {
+            checker.accept(version, args);
+        }
+
+        public boolean dotOne() {
+            return dotOne;
+        }
+
+        public String classFileVer() {
+            return classFileVer;
+        }
+
+        public String target() {
+            return target;
+        }
+    }
+
     void run() {
-
         String TC = "";
         System.out.println("Version.java: Starting");
 
-        String LATEST_MAJOR_VERSION = "56.0";
         check(LATEST_MAJOR_VERSION);
-        check(LATEST_MAJOR_VERSION, "-source 1.6");
-        check(LATEST_MAJOR_VERSION, "-source 1.7");
-        check(LATEST_MAJOR_VERSION, "-source 1.8");
-        check(LATEST_MAJOR_VERSION, "-source 1.9");
-        check(LATEST_MAJOR_VERSION, "-source 1.10");
-        check(LATEST_MAJOR_VERSION, "-source 11");
-        check(LATEST_MAJOR_VERSION, "-source 12");
+        for (String source : VALID_SOURCES) {
+            check(LATEST_MAJOR_VERSION, "-source " + source);
+        }
 
-        check_source_target(true, "50.0", "6", "6");
-        check_source_target(true, "51.0", "6", "7");
-        check_source_target(true, "51.0", "7", "7");
-        check_source_target(true, "52.0", "6", "8");
-        check_source_target(true, "52.0", "7", "8");
-        check_source_target(true, "52.0", "8", "8");
-        check_source_target(true, "53.0", "6", "9");
-        check_source_target(true, "53.0", "7", "9");
-        check_source_target(true, "53.0", "8", "9");
-        check_source_target(true, "53.0", "9", "9");
-        check_source_target(true, "54.0", "6", "10");
-        check_source_target(true, "54.0", "7", "10");
-        check_source_target(true, "54.0", "8", "10");
-        check_source_target(true, "54.0", "9", "10");
-        check_source_target(true, "54.0", "10", "10");
-        check_source_target(false, "55.0", "6", "11");
-        check_source_target(false, "55.0", "7", "11");
-        check_source_target(false, "55.0", "8", "11");
-        check_source_target(false, "55.0", "9", "11");
-        check_source_target(false, "55.0", "10", "11");
-        check_source_target(false, "55.0", "11", "11");
-        check_source_target(false, "56.0", "12", "12");
+        // Verify that a -source value less than a -target value is
+        // accepted and that the resulting class files are dependent
+        // on the target setting alone.
+        SourceTarget[] sourceTargets = SourceTarget.values();
+        for (int i = 0; i < sourceTargets.length; i++) {
+            SourceTarget st = sourceTargets[i];
+            String classFileVer = st.classFileVer();
+            String target = st.target();
+            boolean dotOne = st.dotOne();
+            check_source_target(dotOne, classFileVer, target, target);
+            for (int j = i; j > 0; j--) {
+                String source = sourceTargets[j].target();
+                check_source_target(dotOne, classFileVer, source, target);
+            }
+        }
+
+        // Verify acceptance of different combinations of -source N,
+        // -target M; N <= M
+        for (int i = 0; i < sourceTargets.length; i++) {
+            SourceTarget st = sourceTargets[i];
+
+            st.checksrc(this, "-source " + st.target());
+            st.checksrc(this, "-source " + st.target(), "-target " + st.target());
 
-        checksrc16("-source 1.6");
-        checksrc16("-source 6");
-        checksrc16("-source 1.6", "-target 1.6");
-        checksrc16("-source 6", "-target 6");
-        checksrc17("-source 1.7");
-        checksrc17("-source 7");
-        checksrc17("-source 1.7", "-target 1.7");
-        checksrc17("-source 7", "-target 7");
-        checksrc18("-source 1.8");
-        checksrc18("-source 8");
-        checksrc18("-source 1.8", "-target 1.8");
-        checksrc18("-source 8", "-target 8");
-        checksrc19("-source 1.9");
-        checksrc19("-source 9");
-        checksrc19("-source 1.9", "-target 1.9");
-        checksrc19("-source 9", "-target 9");
-        checksrc110();
-        checksrc110("-source 1.10");
-        checksrc110("-source 10");
-        checksrc110("-source 1.10", "-target 1.10");
-        checksrc110("-source 10", "-target 10");
-        checksrc111("-source 11");
-        checksrc111("-source 11", "-target 11");
-        checksrc112("-source 12");
-        checksrc112("-source 12", "-target 12");
-        checksrc112("-target 12");
+            if (st.dotOne()) {
+                st.checksrc(this, "-source 1." + st.target());
+                st.checksrc(this, "-source 1." + st.target(), "-target 1." + st.target());
+            }
+
+            if (i == sourceTargets.length) {
+                // Can use -target without -source setting only for
+                // most recent target since the most recent source is
+                // the default.
+                st.checksrc(this, "-target " + st.target());
 
-        fail("-source 7", "-target 1.6", "Base.java");
-        fail("-source 8", "-target 1.6", "Base.java");
-        fail("-source 8", "-target 1.7", "Base.java");
-        fail("-source 9", "-target 1.7", "Base.java");
-        fail("-source 9", "-target 1.8", "Base.java");
-        fail("-source 10", "-target 1.7", "Base.java");
-        fail("-source 10", "-target 1.8", "Base.java");
-        fail("-source 11", "-target 1.9", "Base.java");
-        fail("-source 11", "-target 1.10", "Base.java");
-        fail("-source 12", "-target 1.10", "Base.java");
-        fail("-source 12", "-target 11", "Base.java");
+                if (!st.classFileVer().equals(LATEST_MAJOR_VERSION)) {
+                    throw new RuntimeException(st +
+                                               "does not have class file version" +
+                                               LATEST_MAJOR_VERSION);
+                }
+            }
+        }
 
-        fail("-source 1.5", "-target 1.5", "Base.java");
-        fail("-source 1.4", "-target 1.4", "Base.java");
-        fail("-source 1.3", "-target 1.3", "Base.java");
-        fail("-source 1.2", "-target 1.2", "Base.java");
+        // Verify that -source N -target (N-1) is rejected
+        for (int i = 1 /* Skip zeroth value */; i < sourceTargets.length; i++) {
+            fail("-source " + sourceTargets[i].target(),
+                 "-target " + sourceTargets[i-1].target(),
+                 "Base.java");
+        }
+
+        // Previously supported source/target values
+        for (String source  : RETIRED_SOURCES) {
+            fail("-source " + source, "-target " + source, "Base.java");
+        }
 
         if (failedCases > 0) {
             System.err.println("failedCases = " + String.valueOf(failedCases));
@@ -197,17 +231,6 @@
         }
     }
 
-    protected void checksrc16(String... args) {
-        printargs("checksrc16", args);
-        int asize = args.length;
-        String[] newargs = new String[asize + 1];
-        System.arraycopy(args, 0, newargs, 0, asize);
-        newargs[asize] = "Base.java";
-        pass(newargs);
-        newargs[asize] = "New17.java";
-        fail(newargs);
-    }
-
     protected void checksrc17(String... args) {
         printargs("checksrc17", args);
         int asize = args.length;
@@ -252,7 +275,17 @@
 
     protected void checksrc111(String... args) {
         printargs("checksrc111", args);
-        checksrc110(args);
+        int asize = args.length;
+        String[] newargs = new String[asize+1];
+        System.arraycopy(args, 0, newargs,0 , asize);
+        newargs[asize] = "New17.java";
+        pass(newargs);
+        newargs[asize] = "New18.java";
+        pass(newargs);
+        newargs[asize] = "New110.java";
+        pass(newargs);
+        newargs[asize] = "New111.java";
+        pass(newargs);
     }
 
     protected void checksrc112(String... args) {
@@ -399,6 +432,17 @@
             "} \n"
         );
 
+        /*
+         * Create a file with a new feature in 11, not in 10 : var for lambda parameters
+         */
+        writeSourceFile("New111.java",
+            "public class New111 { \n" +
+            "    static java.util.function.Function<String,String> f = (var x) -> x.substring(0);\n" +
+            "    void m(String name) { \n" +
+            "    var tmp = new Thread(() -> { }, f.apply(name)); \n" +
+            "    } \n" +
+            "} \n"
+        );
     }
 
     protected boolean checkClassFileVersion
--- a/test/langtools/tools/javadoc/api/basic/APITest.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/javadoc/api/basic/APITest.java	Thu Jul 12 11:09:23 2018 -0700
@@ -190,7 +190,6 @@
      * Standard files generated by processing a documented class pkg.C.
      */
     protected static Set<String> standardExpectFiles = new HashSet<>(Arrays.asList(
-            "allclasses.html",
             "allclasses-index.html",
             "allpackages-index.html",
             "constant-values.html",
--- a/test/langtools/tools/lib/toolbox/ToolBox.java	Tue Jul 03 16:09:25 2018 +0530
+++ b/test/langtools/tools/lib/toolbox/ToolBox.java	Thu Jul 12 11:09:23 2018 -0700
@@ -34,8 +34,10 @@
 import java.io.Writer;
 import java.net.URI;
 import java.nio.charset.Charset;
+import java.nio.file.DirectoryNotEmptyException;
 import java.nio.file.FileVisitResult;
 import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.SimpleFileVisitor;
@@ -43,8 +45,11 @@
 import java.nio.file.attribute.BasicFileAttributes;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
+import java.util.Deque;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -98,6 +103,12 @@
     public static final String testSrc = System.getProperty("test.src");
     /** The location of the test JDK for this test, or null if not set. */
     public static final String testJDK = System.getProperty("test.jdk");
+    /** The timeout factor for slow systems. */
+    public static final float timeoutFactor;
+    static {
+        String ttf = System.getProperty("test.timeout.factor");
+        timeoutFactor = (ttf == null) ? 1.0f : Float.valueOf(ttf);
+    }
 
     /** The current directory. */
     public static final Path currDir = Paths.get(".");
@@ -109,7 +120,7 @@
      * Checks if the host OS is some version of Windows.
      * @return true if the host OS is some version of Windows
      */
-    public boolean isWindows() {
+    public static boolean isWindows() {
         return osName.toLowerCase(Locale.ENGLISH).startsWith("windows");
     }
 
@@ -238,21 +249,50 @@
     }
 
     /**
-     * Deletes one or more files.
-     * Any directories to be deleted must be empty.
+     * Deletes one or more files, awaiting confirmation that the files
+     * no longer exist. Any directories to be deleted must be empty.
      * <p>Similar to the shell command: {@code rm files}.
-     * @param files the files to be deleted
+     * @param files the names of the files to be deleted
      * @throws IOException if an error occurred while deleting the files
      */
     public void deleteFiles(String... files) throws IOException {
-        if (files.length == 0)
-            throw new IllegalArgumentException("no files specified");
-        for (String file : files)
-            Files.delete(Paths.get(file));
+        deleteFiles(List.of(files).stream().map(Paths::get).collect(Collectors.toList()));
+    }
+
+    /**
+     * Deletes one or more files, awaiting confirmation that the files
+     * no longer exist. Any directories to be deleted must be empty.
+     * <p>Similar to the shell command: {@code rm files}.
+     * @param paths the paths for the files to be deleted
+     * @throws IOException if an error occurred while deleting the files
+     */
+    public void deleteFiles(Path... paths) throws IOException {
+        deleteFiles(List.of(paths));
     }
 
     /**
-     * Deletes all content of a directory (but not the directory itself).
+     * Deletes one or more files, awaiting confirmation that the files
+     * no longer exist. Any directories to be deleted must be empty.
+     * <p>Similar to the shell command: {@code rm files}.
+     * @param paths the paths for the files to be deleted
+     * @throws IOException if an error occurred while deleting the files
+     */
+    public void deleteFiles(List<Path> paths) throws IOException {
+        if (paths.isEmpty())
+            throw new IllegalArgumentException("no files specified");
+        IOException ioe = null;
+        for (Path path : paths) {
+            ioe = deleteFile(path, ioe);
+        }
+        if (ioe != null) {
+            throw ioe;
+        }
+        ensureDeleted(paths);
+    }
+
+    /**
+     * Deletes all content of a directory (but not the directory itself),
+     * awaiting confirmation that the content has been deleted.
      * @param root the directory to be cleaned
      * @throws IOException if an error occurs while cleaning the directory
      */
@@ -261,9 +301,23 @@
             throw new IOException(root + " is not a directory");
         }
         Files.walkFileTree(root, new SimpleFileVisitor<Path>() {
+            private IOException ioe = null;
+            // for each directory we visit, maintain a list of the files that we try to delete
+            private Deque<List<Path>> dirFiles = new LinkedList<>();
+
             @Override
             public FileVisitResult visitFile(Path file, BasicFileAttributes a) throws IOException {
-                Files.delete(file);
+                ioe = deleteFile(file, ioe);
+                dirFiles.peekFirst().add(file);
+                return FileVisitResult.CONTINUE;
+            }
+
+            @Override
+            public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes a) throws IOException {
+                if (!dir.equals(root)) {
+                    dirFiles.peekFirst().add(dir);
+                }
+                dirFiles.addFirst(new ArrayList<>());
                 return FileVisitResult.CONTINUE;
             }
 
@@ -272,8 +326,12 @@
                 if (e != null) {
                     throw e;
                 }
+                if (ioe != null) {
+                    throw ioe;
+                }
+                ensureDeleted(dirFiles.removeFirst());
                 if (!dir.equals(root)) {
-                    Files.delete(dir);
+                    ioe = deleteFile(dir, ioe);
                 }
                 return FileVisitResult.CONTINUE;
             }
@@ -281,6 +339,67 @@
     }
 
     /**
+     * Internal method to delete a file, using {@code Files.delete}.
+     * It does not wait to confirm deletion, nor does it retry.
+     * If an exception occurs it is either returned or added to the set of
+     * suppressed exceptions for an earlier exception.
+     * @param path the path for the file to be deleted
+     * @param ioe the earlier exception, or null
+     * @return the earlier exception or an exception that occurred while
+     *  trying to delete the file
+     */
+    private IOException deleteFile(Path path, IOException ioe) {
+        try {
+            Files.delete(path);
+        } catch (IOException e) {
+            if (ioe == null) {
+                ioe = e;
+            } else {
+                ioe.addSuppressed(e);
+            }
+        }
+        return ioe;
+    }
+
+    /**
+     * Wait until it is confirmed that a set of files have been deleted.
+     * @param paths the paths for the files to be deleted
+     * @throws IOException if a file has not been deleted
+     */
+    private void ensureDeleted(Collection<Path> paths)
+            throws IOException {
+        for (Path path : paths) {
+            ensureDeleted(path);
+        }
+    }
+
+    /**
+     * Wait until it is confirmed that a file has been deleted.
+     * @param path the path for the file to be deleted
+     * @throws IOException if problems occur while deleting the file
+     */
+    private void ensureDeleted(Path path) throws IOException {
+        long startTime = System.currentTimeMillis();
+        do {
+            // Note: Files.notExists is not the same as !Files.exists
+            if (Files.notExists(path)) {
+                return;
+            }
+            System.gc(); // allow finalizers and cleaners to run
+            try {
+                Thread.sleep(RETRY_DELETE_MILLIS);
+            } catch (InterruptedException e) {
+                throw new IOException("Interrupted while waiting for file to be deleted: " + path, e);
+            }
+        } while ((System.currentTimeMillis() - startTime) <= MAX_RETRY_DELETE_MILLIS);
+
+        throw new IOException("File not deleted: " + path);
+    }
+
+    private static final int RETRY_DELETE_MILLIS = isWindows() ? (int)(500 * timeoutFactor): 0;
+    private static final int MAX_RETRY_DELETE_MILLIS = isWindows() ? (int)(15 * 1000 * timeoutFactor) : 0;
+
+    /**
      * Moves a file.
      * If the given destination exists and is a directory, the file will be moved
      * to that directory.  Otherwise, the file will be moved to the destination,