From 367c06b7f82721803272b31aff01a43f6820753a Mon Sep 17 00:00:00 2001
From: Ujwal Vangapally <ujwal.vangapally@oracle.com>
Date: Fri, 23 Dec 2016 12:15:21 +0530
Subject: [PATCH 1/9] 8170861: Remove DcmdMBeanPermissionsTest.java from
 ProblemList

Removed DcmdMBeanPermissionsTest.java from ProblemList

Reviewed-by: dholmes, fparain
---
 jdk/test/ProblemList.txt | 2 --
 1 file changed, 2 deletions(-)

diff --git a/jdk/test/ProblemList.txt b/jdk/test/ProblemList.txt
index cc645799e09..53111b09448 100644
--- a/jdk/test/ProblemList.txt
+++ b/jdk/test/ProblemList.txt
@@ -150,8 +150,6 @@ java/io/pathNames/GeneralWin32.java                             8156595 windows-
 com/sun/management/OperatingSystemMXBean/GetProcessCpuLoad.java 8030957 aix-all
 com/sun/management/OperatingSystemMXBean/GetSystemCpuLoad.java  8030957 aix-all
 
-com/sun/management/DiagnosticCommandMBean/DcmdMBeanPermissionsTest.java 8169575 generic-all
-
 ############################################################################
 
 # jdk_jmx

From fff8c7e7daa76db3370c80dc2ae2fad1954bc66c Mon Sep 17 00:00:00 2001
From: Dmitry Fazunenko <dfazunen@openjdk.org>
Date: Tue, 27 Dec 2016 16:24:37 +0300
Subject: [PATCH 2/9] 8171441: tools/launcher/VersionCheck.java doesn't report
 names of tools which failed checks

Reviewed-by: stsmirno, iignatyev, anazarov
---
 jdk/test/tools/launcher/VersionCheck.java | 104 ++++++++++++++--------
 1 file changed, 66 insertions(+), 38 deletions(-)

diff --git a/jdk/test/tools/launcher/VersionCheck.java b/jdk/test/tools/launcher/VersionCheck.java
index aa507b6da43..469c5bf6f45 100644
--- a/jdk/test/tools/launcher/VersionCheck.java
+++ b/jdk/test/tools/launcher/VersionCheck.java
@@ -36,6 +36,8 @@ import java.util.Map;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
 
 public class VersionCheck extends TestHelper {
 
@@ -148,31 +150,44 @@ public class VersionCheck extends TestHelper {
     }
 
     /*
-     * this tests if the tool can take a version string and returns
-     * a 0 exit code, it is not possible to validate the contents
-     * of the -version output as they are inconsistent.
+     * Checks if the tools accept "-version" option (exit code is zero).
+     * The output of the tools run with "-version" is not verified.
      */
-    static boolean testToolVersion() {
-        TestHelper.testExitValue = 0;
+    static String testToolVersion() {
+        System.out.println("=== testToolVersion === ");
+        Set<String> failed = new HashSet<>();
         for (File f : new File(JAVA_BIN).listFiles(new ToolFilter(BLACKLIST_VERSION))) {
             String x = f.getAbsolutePath();
-            System.out.println("Testing (-version): " + x);
             TestResult tr = doExec(x, "-version");
-            tr.checkPositive();
+            System.out.println("Testing " + f.getName());
+            System.out.println("#> " + x + " -version");
+            tr.testOutput.forEach(System.out::println);
+            System.out.println("#> echo $?");
+            System.out.println(tr.exitValue);
+            if (!tr.isOK()) {
+                System.out.println("failed");
+                failed.add(f.getName());
+            }
         }
-        return TestHelper.testExitValue == 0;
+        if (failed.isEmpty()) {
+            System.out.println("testToolVersion passed");
+            return "";
+        } else {
+            System.out.println("testToolVersion failed");
+            return "testToolVersion: " + failed + "; ";
+        }
+
     }
 
-    static boolean compareJVersionStrings() {
-        int failcount = 0;
+    static String testJVersionStrings() {
+        System.out.println("=== testJVersionStrings === ");
+        Set<String> failed = new HashSet<>();
         for (File f : new File(JAVA_BIN).listFiles(new ToolFilter(BLACKLIST_JOPTION))) {
+            System.out.println("Testing " + f.getName());
             String x = f.getAbsolutePath();
-            System.out.println("Testing (-J-version): " + x);
-            String testStr;
-
-            testStr = getVersion(x, "-J-version");
+            String testStr = getVersion(x, "-J-version");
             if (refVersion.compareTo(testStr) != 0) {
-                failcount++;
+                failed.add(f.getName());
                 System.out.println("Error: " + x +
                                    " fails -J-version comparison");
                 System.out.println("Expected:");
@@ -183,7 +198,7 @@ public class VersionCheck extends TestHelper {
 
             testStr = getVersion(x, "-J-fullversion");
             if (refFullVersion.compareTo(testStr) != 0) {
-                failcount++;
+                failed.add(f.getName());
                 System.out.println("Error: " + x +
                                    " fails -J-fullversion comparison");
                 System.out.println("Expected:");
@@ -192,12 +207,17 @@ public class VersionCheck extends TestHelper {
                 System.out.print(testStr);
             }
         }
-        System.out.println("Version Test: " + failcount);
-        return failcount == 0;
+        if (failed.isEmpty()) {
+            System.out.println("testJVersionStrings passed");
+            return "";
+        } else {
+            System.out.println("testJVersionStrings failed");
+            return "testJVersionStrings: " + failed + "; ";
+        }
     }
 
-    static boolean compareInternalStrings() {
-        int failcount = 0;
+    static String testInternalStrings() {
+        System.out.println("=== testInternalStrings === ");
         String bStr = refVersion.substring(refVersion.indexOf("build") +
                                            "build".length() + 1,
                                            refVersion.lastIndexOf(")"));
@@ -208,20 +228,21 @@ public class VersionCheck extends TestHelper {
         envMap.put(TestHelper.JLDEBUG_KEY, "true");
         TestHelper.TestResult tr = doExec(envMap, javaCmd, "-version");
         List<String> alist = new ArrayList<>();
-        alist.addAll(tr.testOutput);
-        for (String x : tr.testOutput) {
-            alist.add(x.trim());
-        }
+        tr.testOutput.stream().map(String::trim).forEach(alist::add);
 
-        if (!alist.contains(expectedFullVersion)) {
+        if (alist.contains(expectedFullVersion)) {
+            System.out.println("testInternalStrings passed");
+            return "";
+        } else {
             System.out.println("Error: could not find " + expectedFullVersion);
-            failcount++;
+            tr.testOutput.forEach(System.out::println);
+            System.out.println("testInternalStrings failed");
+            return "testInternalStrings; ";
         }
-        System.out.println("Internal Strings Test: " + failcount);
-        return failcount == 0;
     }
 
-    static boolean testDebugVersion() {
+    static String testDebugVersion() {
+        System.out.println("=== testInternalStrings === ");
         String jdkType = System.getProperty("jdk.debug", "release");
         String versionLines = getAllVersionLines(javaCmd, "-version");
         if ("release".equals(jdkType)) {
@@ -229,18 +250,23 @@ public class VersionCheck extends TestHelper {
         } else {
             jdkType = jdkType + " ";
         }
+
         String tofind = "(" + jdkType + "build";
+
         int idx = versionLines.indexOf(tofind);
         if (idx < 0) {
+            System.out.println("versionLines " + versionLines);
             System.out.println("Did not find first instance of " + tofind);
-            return false;
+            return "testDebugVersion; ";
         }
         idx =  versionLines.indexOf(tofind, idx + 1);
         if (idx < 0) {
-            System.out.println("Did not find first instance of " + tofind);
-            return false;
+            System.out.println("versionLines " + versionLines);
+            System.out.println("Did not find second instance of " + tofind);
+            return "testDebugVersion; ";
         }
-        return true;
+        System.out.println("testDebugVersion passed");
+        return "";
     }
 
     // Initialize
@@ -251,13 +277,15 @@ public class VersionCheck extends TestHelper {
 
     public static void main(String[] args) {
         init();
-        if (compareJVersionStrings() &&
-                compareInternalStrings() &&
-                testToolVersion() &&
-                testDebugVersion()) {
+        String errorMessage = "";
+        errorMessage += testJVersionStrings();
+        errorMessage += testInternalStrings();
+        errorMessage += testToolVersion();
+        errorMessage += testDebugVersion();
+        if (errorMessage.isEmpty()) {
             System.out.println("All Version string comparisons: PASS");
         } else {
-            throw new AssertionError("Some tests failed");
+            throw new AssertionError("VersionCheck failed: " + errorMessage);
         }
     }
 

From 68447bd8a37d5189ac20b4b0026b66f13dda7ece Mon Sep 17 00:00:00 2001
From: Christian Tornqvist <ctornqvi@openjdk.org>
Date: Thu, 5 Jan 2017 16:46:28 -0500
Subject: [PATCH 3/9] 8172188: JDI tests fail due to "permission denied" when
 creating temp file

Reviewed-by: hseigel, mseledtsov
---
 jdk/test/com/sun/jdi/ShellScaffold.sh | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/jdk/test/com/sun/jdi/ShellScaffold.sh b/jdk/test/com/sun/jdi/ShellScaffold.sh
index 7727a8f762d..c8af3a20755 100644
--- a/jdk/test/com/sun/jdi/ShellScaffold.sh
+++ b/jdk/test/com/sun/jdi/ShellScaffold.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 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
@@ -276,10 +276,10 @@ setup()
             # treat them as control chars on mks (eg \t is tab)
             # Oops; windows mks really seems to want this cat line
             # to start in column 1
-            if [ -w "$SystemRoot" ] ; then
-                tmpFile=$SystemRoot/tmp.$$
-            elif [ -w "$SYSTEMROOT" ] ; then
-                tmpFile=$SYSTEMROOT/tmp.$$
+            if [ -w "$Temp" ] ; then
+                tmpFile=$Temp/tmp.$$
+            elif [ -w "$TEMP" ] ; then
+                tmpFile=$TEMP/tmp.$$
             else
                 tmpFile=tmp.$$
             fi

From a3946e30e34206b16edb4bb702779519a50b4ad2 Mon Sep 17 00:00:00 2001
From: Harold Seigel <hseigel@openjdk.org>
Date: Fri, 13 Jan 2017 10:45:53 -0500
Subject: [PATCH 4/9] 8172288: Fix Jigsaw related module/package error messages
 and throw correct exceptions

Reword error messages and throw IllegalStateExceptions where appropriate

Reviewed-by: alanb, acorn, lfoltan, gtriantafill
---
 .../share/classes/java/lang/reflect/Layer.java        | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/jdk/src/java.base/share/classes/java/lang/reflect/Layer.java b/jdk/src/java.base/share/classes/java/lang/reflect/Layer.java
index 4b4588c3c01..9eaf90d0ca8 100644
--- a/jdk/src/java.base/share/classes/java/lang/reflect/Layer.java
+++ b/jdk/src/java.base/share/classes/java/lang/reflect/Layer.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -458,7 +458,7 @@ public final class Layer {
             loader.initRemotePackageMap(cf, parents);
             Layer layer =  new Layer(cf, parents, mn -> loader);
             return new Controller(layer);
-        } catch (IllegalArgumentException e) {
+        } catch (IllegalArgumentException | IllegalStateException e) {
             throw new LayerInstantiationException(e.getMessage());
         }
     }
@@ -526,7 +526,7 @@ public final class Layer {
         try {
             Layer layer = new Layer(cf, parents, pool::loaderFor);
             return new Controller(layer);
-        } catch (IllegalArgumentException e) {
+        } catch (IllegalArgumentException | IllegalStateException e) {
             throw new LayerInstantiationException(e.getMessage());
         }
     }
@@ -610,9 +610,8 @@ public final class Layer {
         try {
             Layer layer = new Layer(cf, parents, clf);
             return new Controller(layer);
-        } catch (IllegalArgumentException iae) {
-            // IAE is thrown by VM when defining the module fails
-            throw new LayerInstantiationException(iae.getMessage());
+        } catch (IllegalArgumentException | IllegalStateException e) {
+            throw new LayerInstantiationException(e.getMessage());
         }
     }
 

From ea8d3e109a708f05e46ea5b0eb68ba301f425d40 Mon Sep 17 00:00:00 2001
From: Claes Redestad <redestad@openjdk.org>
Date: Thu, 19 Jan 2017 11:27:03 +0100
Subject: [PATCH 5/9] 8171855: Move package name transformations during module
 bootstrap into native code

Reviewed-by: alanb, acorn, lfoltan, mchung, plevart, hseigel, sspitsyn
---
 .../classes/java/lang/reflect/Module.java     |  32 ++---
 jdk/src/java.base/share/native/include/jvm.h  |  55 +++++--
 .../java.base/share/native/libjava/Module.c   | 136 +++++++++++++++++-
 3 files changed, 188 insertions(+), 35 deletions(-)

diff --git a/jdk/src/java.base/share/classes/java/lang/reflect/Module.java b/jdk/src/java.base/share/classes/java/lang/reflect/Module.java
index a71b4b320ab..5134b64caf8 100644
--- a/jdk/src/java.base/share/classes/java/lang/reflect/Module.java
+++ b/jdk/src/java.base/share/classes/java/lang/reflect/Module.java
@@ -128,14 +128,8 @@ public final class Module implements AnnotatedElement {
         Version version = descriptor.version().orElse(null);
         String vs = Objects.toString(version, null);
         String loc = Objects.toString(uri, null);
-        Set<String> packages = descriptor.packages();
-        int n = packages.size();
-        String[] array = new String[n];
-        int i = 0;
-        for (String pn : packages) {
-            array[i++] = pn.replace('.', '/');
-        }
-        defineModule0(this, isOpen, vs, loc, array);
+        String[] packages = descriptor.packages().toArray(new String[0]);
+        defineModule0(this, isOpen, vs, loc, packages);
     }
 
 
@@ -789,13 +783,12 @@ public final class Module implements AnnotatedElement {
 
         // update VM first, just in case it fails
         if (syncVM) {
-            String pkgInternalForm = pn.replace('.', '/');
             if (other == EVERYONE_MODULE) {
-                addExportsToAll0(this, pkgInternalForm);
+                addExportsToAll0(this, pn);
             } else if (other == ALL_UNNAMED_MODULE) {
-                addExportsToAllUnnamed0(this, pkgInternalForm);
+                addExportsToAllUnnamed0(this, pn);
             } else {
-                addExports0(this, pkgInternalForm, other);
+                addExports0(this, pn, other);
             }
         }
 
@@ -1021,7 +1014,7 @@ public final class Module implements AnnotatedElement {
 
             // update VM first, just in case it fails
             if (syncVM)
-                addPackage0(this, pn.replace('.', '/'));
+                addPackage0(this, pn);
 
             // replace with new set
             this.extraPackages = extraPackages; // volatile write
@@ -1180,8 +1173,7 @@ public final class Module implements AnnotatedElement {
         if (descriptor.isOpen()) {
             assert descriptor.opens().isEmpty();
             for (String source : descriptor.packages()) {
-                String sourceInternalForm = source.replace('.', '/');
-                addExportsToAll0(m, sourceInternalForm);
+                addExportsToAll0(m, source);
             }
             return;
         }
@@ -1192,7 +1184,6 @@ public final class Module implements AnnotatedElement {
         // process the open packages first
         for (Opens opens : descriptor.opens()) {
             String source = opens.source();
-            String sourceInternalForm = source.replace('.', '/');
 
             if (opens.isQualified()) {
                 // qualified opens
@@ -1201,7 +1192,7 @@ public final class Module implements AnnotatedElement {
                     // only open to modules that are in this configuration
                     Module m2 = nameToModule.get(target);
                     if (m2 != null) {
-                        addExports0(m, sourceInternalForm, m2);
+                        addExports0(m, source, m2);
                         targets.add(m2);
                     }
                 }
@@ -1210,7 +1201,7 @@ public final class Module implements AnnotatedElement {
                 }
             } else {
                 // unqualified opens
-                addExportsToAll0(m, sourceInternalForm);
+                addExportsToAll0(m, source);
                 openPackages.put(source, EVERYONE_SET);
             }
         }
@@ -1218,7 +1209,6 @@ public final class Module implements AnnotatedElement {
         // next the exports, skipping exports when the package is open
         for (Exports exports : descriptor.exports()) {
             String source = exports.source();
-            String sourceInternalForm = source.replace('.', '/');
 
             // skip export if package is already open to everyone
             Set<Module> openToTargets = openPackages.get(source);
@@ -1234,7 +1224,7 @@ public final class Module implements AnnotatedElement {
                     if (m2 != null) {
                         // skip qualified export if already open to m2
                         if (openToTargets == null || !openToTargets.contains(m2)) {
-                            addExports0(m, sourceInternalForm, m2);
+                            addExports0(m, source, m2);
                             targets.add(m2);
                         }
                     }
@@ -1245,7 +1235,7 @@ public final class Module implements AnnotatedElement {
 
             } else {
                 // unqualified exports
-                addExportsToAll0(m, sourceInternalForm);
+                addExportsToAll0(m, source);
                 exportedPackages.put(source, EVERYONE_SET);
             }
         }
diff --git a/jdk/src/java.base/share/native/include/jvm.h b/jdk/src/java.base/share/native/include/jvm.h
index 848fe83d240..c90a557de8b 100644
--- a/jdk/src/java.base/share/native/include/jvm.h
+++ b/jdk/src/java.base/share/native/include/jvm.h
@@ -401,30 +401,67 @@ JVM_DefineClassWithSource(JNIEnv *env, const char *name, jobject loader,
  * Module support funcions
  */
 
+/*
+ * Define a module with the specified packages and bind the module to the
+ * given class loader.
+ *  module:       module to define
+ *  is_open:      specifies if module is open (currently ignored)
+ *  version:      the module version
+ *  location:     the module location
+ *  packages:     list of packages in the module
+ *  num_packages: number of packages in the module
+ */
 JNIEXPORT void JNICALL
 JVM_DefineModule(JNIEnv *env, jobject module, jboolean is_open, jstring version,
-                 jstring location, jobjectArray packages);
+                 jstring location, const char* const* packages, jsize num_packages);
 
+/*
+ * Set the boot loader's unnamed module.
+ *  module: boot loader's unnamed module
+ */
 JNIEXPORT void JNICALL
 JVM_SetBootLoaderUnnamedModule(JNIEnv *env, jobject module);
 
+/*
+ * Do a qualified export of a package.
+ *  from_module: module containing the package to export
+ *  package:     name of the package to export
+ *  to_module:   module to export the package to
+ */
 JNIEXPORT void JNICALL
-JVM_AddReadsModule(JNIEnv *env, jobject from_module, jobject to_module);
+JVM_AddModuleExports(JNIEnv *env, jobject from_module, const char* package, jobject to_module);
 
+/*
+ * Do an export of a package to all unnamed modules.
+ *  from_module: module containing the package to export
+ *  package:     name of the package to export to all unnamed modules
+ */
 JNIEXPORT void JNICALL
-JVM_AddModuleExports(JNIEnv *env, jobject from_module, jstring package, jobject to_module);
+JVM_AddModuleExportsToAllUnnamed(JNIEnv *env, jobject from_module, const char* package);
 
+/*
+ * Do an unqualified export of a package.
+ *  from_module: module containing the package to export
+ *  package:     name of the package to export
+ */
 JNIEXPORT void JNICALL
-JVM_AddModuleExportsToAll(JNIEnv *env, jobject from_module, jstring package);
+JVM_AddModuleExportsToAll(JNIEnv *env, jobject from_module, const char* package);
 
+/*
+ * Add a module to the list of modules that a given module can read.
+ *  from_module:   module requesting read access
+ *  source_module: module that from_module wants to read
+ */
 JNIEXPORT void JNICALL
-JVM_AddModuleExportsToAllUnnamed(JNIEnv *env, jobject from_module, jstring package);
+JVM_AddReadsModule(JNIEnv *env, jobject from_module, jobject source_module);
 
+/*
+ * Add a package to a module.
+ *  module:  module that will contain the package
+ *  package: package to add to the module
+ */
 JNIEXPORT void JNICALL
-JVM_AddModulePackage(JNIEnv* env,  jobject module, jstring package);
-
-JNIEXPORT jobject JNICALL
-JVM_GetModuleByPackageName(JNIEnv *env, jobject cl, jstring pkg);
+JVM_AddModulePackage(JNIEnv* env,  jobject module, const char* package);
 
 /*
  * Reflection support functions
diff --git a/jdk/src/java.base/share/native/libjava/Module.c b/jdk/src/java.base/share/native/libjava/Module.c
index cb6057a5f86..26067555a33 100644
--- a/jdk/src/java.base/share/native/libjava/Module.c
+++ b/jdk/src/java.base/share/native/libjava/Module.c
@@ -22,18 +22,88 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
+#include <stdlib.h>
+#include <string.h>
 
 #include "jni.h"
+#include "jni_util.h"
 #include "jvm.h"
 
 #include "java_lang_reflect_Module.h"
 
+/*
+ * Gets the UTF-8 chars for the string and translates '.' to '/'.  Does no
+ * further validation, assumption being that both calling code in
+ * java.lang.reflect.Module and VM will do deeper validation.
+ */
+static char*
+GetInternalPackageName(JNIEnv *env, jstring pkg, char* buf, jsize buf_size)
+{
+    jsize len;
+    jsize unicode_len;
+    char* p;
+    char* utf_str;
+
+    len = (*env)->GetStringUTFLength(env, pkg);
+    unicode_len = (*env)->GetStringLength(env, pkg);
+    if (len >= buf_size) {
+        utf_str = malloc(len + 1);
+        if (utf_str == NULL) {
+            JNU_ThrowOutOfMemoryError(env, NULL);
+            return NULL;
+        }
+    } else {
+        utf_str = buf;
+    }
+    (*env)->GetStringUTFRegion(env, pkg, 0, unicode_len, utf_str);
+
+    p = utf_str;
+    while (*p != '\0') {
+        if (*p == '.') {
+            *p = '/';
+        }
+        p++;
+    }
+    return utf_str;
+}
+
 JNIEXPORT void JNICALL
 Java_java_lang_reflect_Module_defineModule0(JNIEnv *env, jclass cls, jobject module,
                                             jboolean is_open, jstring version,
                                             jstring location, jobjectArray packages)
 {
-    JVM_DefineModule(env, module, is_open, version, location, packages);
+    char** pkgs = NULL;
+    jsize idx;
+    jsize num_packages = (*env)->GetArrayLength(env, packages);
+
+    if (num_packages != 0 && (pkgs = calloc(num_packages, sizeof(char*))) == NULL) {
+        JNU_ThrowOutOfMemoryError(env, NULL);
+        return;
+    } else {
+        int valid = 1;
+        for (idx = 0; idx < num_packages; idx++) {
+            jstring pkg = (*env)->GetObjectArrayElement(env, packages, idx);
+            pkgs[idx] = GetInternalPackageName(env, pkg, NULL, 0);
+            if (pkgs[idx] == NULL) {
+                valid = 0;
+                break;
+            }
+        }
+
+        if (valid != 0) {
+            JVM_DefineModule(env, module, is_open, version, location,
+                    (const char* const*)pkgs, num_packages);
+        }
+    }
+
+    if (num_packages > 0) {
+        for (idx = 0; idx < num_packages; idx++) {
+            if (pkgs[idx] != NULL) {
+                free(pkgs[idx]);
+            }
+        }
+        free(pkgs);
+    }
 }
 
 JNIEXPORT void JNICALL
@@ -46,25 +116,81 @@ JNIEXPORT void JNICALL
 Java_java_lang_reflect_Module_addExports0(JNIEnv *env, jclass cls, jobject from,
                                           jstring pkg, jobject to)
 {
-    JVM_AddModuleExports(env, from, pkg, to);
+    char buf[128];
+    char* pkg_name;
+
+    if (pkg == NULL) {
+        JNU_ThrowNullPointerException(env, "package is null");
+        return;
+    }
+
+    pkg_name = GetInternalPackageName(env, pkg, buf, (jsize)sizeof(buf));
+    if (pkg_name != NULL) {
+        JVM_AddModuleExports(env, from, pkg_name, to);
+        if (pkg_name != buf) {
+            free(pkg_name);
+        }
+    }
 }
 
 JNIEXPORT void JNICALL
 Java_java_lang_reflect_Module_addExportsToAll0(JNIEnv *env, jclass cls, jobject from,
                                                jstring pkg)
 {
-    JVM_AddModuleExportsToAll(env, from, pkg);
+    char buf[128];
+    char* pkg_name;
+
+    if (pkg == NULL) {
+        JNU_ThrowNullPointerException(env, "package is null");
+        return;
+    }
+
+    pkg_name = GetInternalPackageName(env, pkg, buf, (jsize)sizeof(buf));
+    if (pkg_name != NULL) {
+        JVM_AddModuleExportsToAll(env, from, pkg_name);
+        if (pkg_name != buf) {
+            free(pkg_name);
+        }
+    }
 }
 
 JNIEXPORT void JNICALL
 Java_java_lang_reflect_Module_addExportsToAllUnnamed0(JNIEnv *env, jclass cls,
                                                       jobject from, jstring pkg)
 {
-    JVM_AddModuleExportsToAllUnnamed(env, from, pkg);
+    char buf[128];
+    char* pkg_name;
+
+    if (pkg == NULL) {
+        JNU_ThrowNullPointerException(env, "package is null");
+        return;
+    }
+
+    pkg_name = GetInternalPackageName(env, pkg, buf, (jsize)sizeof(buf));
+    if (pkg_name != NULL) {
+        JVM_AddModuleExportsToAllUnnamed(env, from, pkg_name);
+        if (pkg_name != buf) {
+            free(pkg_name);
+        }
+    }
 }
 
 JNIEXPORT void JNICALL
 Java_java_lang_reflect_Module_addPackage0(JNIEnv *env, jclass cls, jobject m, jstring pkg)
 {
-    JVM_AddModulePackage(env, m, pkg);
+    char buf[128];
+    char* pkg_name;
+
+    if (pkg == NULL) {
+        JNU_ThrowNullPointerException(env, "package is null");
+        return;
+    }
+
+    pkg_name = GetInternalPackageName(env, pkg, buf, (jsize)sizeof(buf));
+    if (pkg_name != NULL) {
+        JVM_AddModulePackage(env, m, pkg_name);
+        if (pkg_name != buf) {
+            free(pkg_name);
+        }
+    }
 }

From 3489b910b59b3919c6c15a33f02a2f312d5647a9 Mon Sep 17 00:00:00 2001
From: George Triantafillou <gtriantafill@openjdk.org>
Date: Thu, 19 Jan 2017 10:55:39 -0500
Subject: [PATCH 6/9] 8152206: Simplify jvmstat modules

Reviewed-by: alanb, mchung, hseigel
---
 jdk/src/java.base/share/classes/module-info.java            | 6 +++---
 jdk/src/jdk.attach/share/classes/module-info.java           | 4 ++--
 .../share/classes/module-info.java                          | 2 +-
 .../share/classes/sun/jvmstat/monitor/AbstractMonitor.java  | 0
 .../classes/sun/jvmstat/monitor/BufferedMonitoredVm.java    | 0
 .../share/classes/sun/jvmstat/monitor/ByteArrayMonitor.java | 0
 .../share/classes/sun/jvmstat/monitor/HostIdentifier.java   | 0
 .../share/classes/sun/jvmstat/monitor/IntegerMonitor.java   | 0
 .../share/classes/sun/jvmstat/monitor/LongMonitor.java      | 0
 .../share/classes/sun/jvmstat/monitor/Monitor.java          | 0
 .../share/classes/sun/jvmstat/monitor/MonitorException.java | 0
 .../share/classes/sun/jvmstat/monitor/MonitoredHost.java    | 0
 .../classes/sun/jvmstat/monitor/MonitoredHostService.java   | 0
 .../share/classes/sun/jvmstat/monitor/MonitoredVm.java      | 0
 .../share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java  | 0
 .../share/classes/sun/jvmstat/monitor/StringMonitor.java    | 0
 .../share/classes/sun/jvmstat/monitor/Units.java            | 0
 .../share/classes/sun/jvmstat/monitor/Variability.java      | 0
 .../share/classes/sun/jvmstat/monitor/VmIdentifier.java     | 0
 .../share/classes/sun/jvmstat/monitor/event/HostEvent.java  | 0
 .../classes/sun/jvmstat/monitor/event/HostListener.java     | 0
 .../sun/jvmstat/monitor/event/MonitorStatusChangeEvent.java | 0
 .../share/classes/sun/jvmstat/monitor/event/VmEvent.java    | 0
 .../share/classes/sun/jvmstat/monitor/event/VmListener.java | 0
 .../sun/jvmstat/monitor/event/VmStatusChangeEvent.java      | 0
 .../share/classes/sun/jvmstat/monitor/event/package.html    | 0
 .../share/classes/sun/jvmstat/monitor/package.html          | 0
 .../sun/jvmstat/perfdata/monitor/AbstractMonitoredVm.java   | 0
 .../jvmstat/perfdata/monitor/AbstractPerfDataBuffer.java    | 0
 .../perfdata/monitor/AbstractPerfDataBufferPrologue.java    | 0
 .../sun/jvmstat/perfdata/monitor/AliasFileParser.java       | 0
 .../sun/jvmstat/perfdata/monitor/CountedTimerTask.java      | 0
 .../sun/jvmstat/perfdata/monitor/CountedTimerTaskUtils.java | 0
 .../sun/jvmstat/perfdata/monitor/MonitorDataException.java  | 0
 .../classes/sun/jvmstat/perfdata/monitor/MonitorStatus.java | 0
 .../jvmstat/perfdata/monitor/MonitorStructureException.java | 0
 .../sun/jvmstat/perfdata/monitor/MonitorTypeException.java  | 0
 .../jvmstat/perfdata/monitor/MonitorVersionException.java   | 0
 .../sun/jvmstat/perfdata/monitor/PerfByteArrayMonitor.java  | 0
 .../sun/jvmstat/perfdata/monitor/PerfDataBufferImpl.java    | 0
 .../sun/jvmstat/perfdata/monitor/PerfIntegerMonitor.java    | 0
 .../sun/jvmstat/perfdata/monitor/PerfLongMonitor.java       | 0
 .../jvmstat/perfdata/monitor/PerfStringConstantMonitor.java | 0
 .../sun/jvmstat/perfdata/monitor/PerfStringMonitor.java     | 0
 .../jvmstat/perfdata/monitor/PerfStringVariableMonitor.java | 0
 .../sun/jvmstat/perfdata/monitor/SyntaxException.java       | 0
 .../share/classes/sun/jvmstat/perfdata/monitor/package.html | 0
 .../perfdata/monitor/protocol/file/FileMonitoredVm.java     | 0
 .../monitor/protocol/file/MonitoredHostFileService.java     | 0
 .../monitor/protocol/file/MonitoredHostProvider.java        | 0
 .../perfdata/monitor/protocol/file/PerfDataBuffer.java      | 0
 .../sun/jvmstat/perfdata/monitor/protocol/file/package.html | 0
 .../perfdata/monitor/protocol/local/LocalEventTimer.java    | 0
 .../perfdata/monitor/protocol/local/LocalMonitoredVm.java   | 0
 .../perfdata/monitor/protocol/local/LocalVmManager.java     | 0
 .../monitor/protocol/local/MonitoredHostLocalService.java   | 0
 .../monitor/protocol/local/MonitoredHostProvider.java       | 0
 .../perfdata/monitor/protocol/local/PerfDataBuffer.java     | 0
 .../perfdata/monitor/protocol/local/PerfDataFile.java       | 0
 .../jvmstat/perfdata/monitor/protocol/local/package.html    | 0
 .../sun/jvmstat/perfdata/monitor/v1_0/BasicType.java        | 0
 .../sun/jvmstat/perfdata/monitor/v1_0/PerfDataBuffer.java   | 0
 .../perfdata/monitor/v1_0/PerfDataBufferPrologue.java       | 0
 .../sun/jvmstat/perfdata/monitor/v2_0/PerfDataBuffer.java   | 0
 .../perfdata/monitor/v2_0/PerfDataBufferPrologue.java       | 0
 .../classes/sun/jvmstat/perfdata/monitor/v2_0/TypeCode.java | 0
 .../share/classes/sun/jvmstat/perfdata/resources/aliasmap   | 0
 jdk/src/jdk.jcmd/share/classes/module-info.java             | 4 ++--
 jdk/src/jdk.jconsole/share/classes/module-info.java         | 4 ++--
 jdk/src/jdk.jstatd/share/classes/module-info.java           | 4 ++--
 .../monitor/HostIdentifier/HostIdentifierCreate.java        | 4 ++--
 .../monitor/MonitoredVm/MonitorVmStartTerminate.java        | 6 +++---
 .../jvmstat/monitor/MonitoredVm/TestPollingInterval.java    | 4 ++--
 .../monitor/VmIdentifier/VmIdentifierCreateResolve.java     | 4 ++--
 .../perfdata/PrologSanity/PrologSizeSanityCheck.java        | 4 ++--
 75 files changed, 23 insertions(+), 23 deletions(-)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/module-info.java (98%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/AbstractMonitor.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/BufferedMonitoredVm.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/ByteArrayMonitor.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/HostIdentifier.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/IntegerMonitor.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/LongMonitor.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/Monitor.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/MonitorException.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/MonitoredHost.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/MonitoredHostService.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/MonitoredVm.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/StringMonitor.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/Units.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/Variability.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/VmIdentifier.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/event/HostEvent.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/event/HostListener.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/event/MonitorStatusChangeEvent.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/event/VmEvent.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/event/VmListener.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/event/VmStatusChangeEvent.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/event/package.html (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/monitor/package.html (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/AbstractMonitoredVm.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/AbstractPerfDataBuffer.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/AbstractPerfDataBufferPrologue.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/AliasFileParser.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/CountedTimerTask.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/CountedTimerTaskUtils.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/MonitorDataException.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/MonitorStatus.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/MonitorStructureException.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/MonitorTypeException.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/MonitorVersionException.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/PerfByteArrayMonitor.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/PerfDataBufferImpl.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/PerfIntegerMonitor.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/PerfLongMonitor.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/PerfStringConstantMonitor.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/PerfStringMonitor.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/PerfStringVariableMonitor.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/SyntaxException.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/package.html (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/FileMonitoredVm.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/MonitoredHostFileService.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/MonitoredHostProvider.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/PerfDataBuffer.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/package.html (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalEventTimer.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalMonitoredVm.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalVmManager.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/MonitoredHostLocalService.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/MonitoredHostProvider.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataBuffer.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataFile.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/package.html (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/v1_0/BasicType.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/v1_0/PerfDataBuffer.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/v1_0/PerfDataBufferPrologue.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/v2_0/PerfDataBuffer.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/v2_0/PerfDataBufferPrologue.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/monitor/v2_0/TypeCode.java (100%)
 rename jdk/src/{jdk.jvmstat => jdk.internal.jvmstat}/share/classes/sun/jvmstat/perfdata/resources/aliasmap (100%)

diff --git a/jdk/src/java.base/share/classes/module-info.java b/jdk/src/java.base/share/classes/module-info.java
index 0c455f827a7..b0efb66a390 100644
--- a/jdk/src/java.base/share/classes/module-info.java
+++ b/jdk/src/java.base/share/classes/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -178,7 +178,7 @@ module java.base {
     exports jdk.internal.perf to
         java.desktop,
         java.management,
-        jdk.jvmstat;
+        jdk.internal.jvmstat;
     exports jdk.internal.ref to
         java.desktop,
         jdk.unsupported;
@@ -199,7 +199,7 @@ module java.base {
         jdk.jlink;
     exports jdk.internal.vm to
         java.management,
-        jdk.jvmstat;
+        jdk.internal.jvmstat;
     exports sun.net to
         jdk.incubator.httpclient;
     exports sun.net.ext to
diff --git a/jdk/src/jdk.attach/share/classes/module-info.java b/jdk/src/jdk.attach/share/classes/module-info.java
index 6cb8c007fd6..d87b33904ce 100644
--- a/jdk/src/jdk.attach/share/classes/module-info.java
+++ b/jdk/src/jdk.attach/share/classes/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -27,7 +27,7 @@
  * Defines the attach API.
  */
 module jdk.attach {
-    requires jdk.jvmstat;
+    requires jdk.internal.jvmstat;
 
     exports com.sun.tools.attach;
     exports com.sun.tools.attach.spi;
diff --git a/jdk/src/jdk.jvmstat/share/classes/module-info.java b/jdk/src/jdk.internal.jvmstat/share/classes/module-info.java
similarity index 98%
rename from jdk/src/jdk.jvmstat/share/classes/module-info.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/module-info.java
index fc82760b9ba..17612177301 100644
--- a/jdk/src/jdk.jvmstat/share/classes/module-info.java
+++ b/jdk/src/jdk.internal.jvmstat/share/classes/module-info.java
@@ -23,7 +23,7 @@
  * questions.
  */
 
-module jdk.jvmstat {
+module jdk.internal.jvmstat {
     exports sun.jvmstat.monitor to
         jdk.attach,
         jdk.jcmd,
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/AbstractMonitor.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/AbstractMonitor.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/AbstractMonitor.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/AbstractMonitor.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/BufferedMonitoredVm.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/BufferedMonitoredVm.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/BufferedMonitoredVm.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/BufferedMonitoredVm.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/ByteArrayMonitor.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/ByteArrayMonitor.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/ByteArrayMonitor.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/ByteArrayMonitor.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/HostIdentifier.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/HostIdentifier.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/HostIdentifier.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/HostIdentifier.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/IntegerMonitor.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/IntegerMonitor.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/IntegerMonitor.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/IntegerMonitor.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/LongMonitor.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/LongMonitor.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/LongMonitor.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/LongMonitor.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/Monitor.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/Monitor.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/Monitor.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/Monitor.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/MonitorException.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitorException.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/MonitorException.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitorException.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredHost.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredHost.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredHost.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredHost.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredHostService.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredHostService.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredHostService.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredHostService.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredVm.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredVm.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredVm.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredVm.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/StringMonitor.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/StringMonitor.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/StringMonitor.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/StringMonitor.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/Units.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/Units.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/Units.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/Units.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/Variability.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/Variability.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/Variability.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/Variability.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/VmIdentifier.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/VmIdentifier.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/VmIdentifier.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/VmIdentifier.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/event/HostEvent.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/event/HostEvent.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/event/HostEvent.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/event/HostEvent.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/event/HostListener.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/event/HostListener.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/event/HostListener.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/event/HostListener.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/event/MonitorStatusChangeEvent.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/event/MonitorStatusChangeEvent.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/event/MonitorStatusChangeEvent.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/event/MonitorStatusChangeEvent.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/event/VmEvent.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/event/VmEvent.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/event/VmEvent.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/event/VmEvent.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/event/VmListener.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/event/VmListener.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/event/VmListener.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/event/VmListener.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/event/VmStatusChangeEvent.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/event/VmStatusChangeEvent.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/event/VmStatusChangeEvent.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/event/VmStatusChangeEvent.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/event/package.html b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/event/package.html
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/event/package.html
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/event/package.html
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/package.html b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/package.html
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/package.html
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/package.html
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractMonitoredVm.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractMonitoredVm.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractMonitoredVm.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractMonitoredVm.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractPerfDataBuffer.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractPerfDataBuffer.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractPerfDataBuffer.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractPerfDataBuffer.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractPerfDataBufferPrologue.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractPerfDataBufferPrologue.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractPerfDataBufferPrologue.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractPerfDataBufferPrologue.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AliasFileParser.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AliasFileParser.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AliasFileParser.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AliasFileParser.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/CountedTimerTask.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/CountedTimerTask.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/CountedTimerTask.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/CountedTimerTask.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/CountedTimerTaskUtils.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/CountedTimerTaskUtils.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/CountedTimerTaskUtils.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/CountedTimerTaskUtils.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorDataException.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorDataException.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorDataException.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorDataException.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorStatus.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorStatus.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorStatus.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorStatus.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorStructureException.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorStructureException.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorStructureException.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorStructureException.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorTypeException.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorTypeException.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorTypeException.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorTypeException.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorVersionException.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorVersionException.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorVersionException.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/MonitorVersionException.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfByteArrayMonitor.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfByteArrayMonitor.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfByteArrayMonitor.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfByteArrayMonitor.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfDataBufferImpl.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfDataBufferImpl.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfDataBufferImpl.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfDataBufferImpl.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfIntegerMonitor.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfIntegerMonitor.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfIntegerMonitor.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfIntegerMonitor.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfLongMonitor.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfLongMonitor.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfLongMonitor.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfLongMonitor.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfStringConstantMonitor.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfStringConstantMonitor.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfStringConstantMonitor.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfStringConstantMonitor.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfStringMonitor.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfStringMonitor.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfStringMonitor.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfStringMonitor.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfStringVariableMonitor.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfStringVariableMonitor.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfStringVariableMonitor.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/PerfStringVariableMonitor.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/SyntaxException.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/SyntaxException.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/SyntaxException.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/SyntaxException.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/package.html b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/package.html
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/package.html
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/package.html
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/FileMonitoredVm.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/FileMonitoredVm.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/FileMonitoredVm.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/FileMonitoredVm.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/MonitoredHostFileService.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/MonitoredHostFileService.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/MonitoredHostFileService.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/MonitoredHostFileService.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/MonitoredHostProvider.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/MonitoredHostProvider.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/MonitoredHostProvider.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/MonitoredHostProvider.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/PerfDataBuffer.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/PerfDataBuffer.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/PerfDataBuffer.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/PerfDataBuffer.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/package.html b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/package.html
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/package.html
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/file/package.html
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalEventTimer.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalEventTimer.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalEventTimer.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalEventTimer.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalMonitoredVm.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalMonitoredVm.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalMonitoredVm.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalMonitoredVm.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalVmManager.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalVmManager.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalVmManager.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalVmManager.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/MonitoredHostLocalService.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/MonitoredHostLocalService.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/MonitoredHostLocalService.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/MonitoredHostLocalService.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/MonitoredHostProvider.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/MonitoredHostProvider.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/MonitoredHostProvider.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/MonitoredHostProvider.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataBuffer.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataBuffer.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataBuffer.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataBuffer.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataFile.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataFile.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataFile.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataFile.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/package.html b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/package.html
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/package.html
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/package.html
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v1_0/BasicType.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v1_0/BasicType.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v1_0/BasicType.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v1_0/BasicType.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v1_0/PerfDataBuffer.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v1_0/PerfDataBuffer.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v1_0/PerfDataBuffer.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v1_0/PerfDataBuffer.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v1_0/PerfDataBufferPrologue.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v1_0/PerfDataBufferPrologue.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v1_0/PerfDataBufferPrologue.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v1_0/PerfDataBufferPrologue.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v2_0/PerfDataBuffer.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v2_0/PerfDataBuffer.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v2_0/PerfDataBuffer.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v2_0/PerfDataBuffer.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v2_0/PerfDataBufferPrologue.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v2_0/PerfDataBufferPrologue.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v2_0/PerfDataBufferPrologue.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v2_0/PerfDataBufferPrologue.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v2_0/TypeCode.java b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v2_0/TypeCode.java
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v2_0/TypeCode.java
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v2_0/TypeCode.java
diff --git a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/resources/aliasmap b/jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/resources/aliasmap
similarity index 100%
rename from jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/resources/aliasmap
rename to jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/resources/aliasmap
diff --git a/jdk/src/jdk.jcmd/share/classes/module-info.java b/jdk/src/jdk.jcmd/share/classes/module-info.java
index c78803b774c..5edf30cec80 100644
--- a/jdk/src/jdk.jcmd/share/classes/module-info.java
+++ b/jdk/src/jdk.jcmd/share/classes/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -25,5 +25,5 @@
 
 module jdk.jcmd {
     requires jdk.attach;
-    requires jdk.jvmstat;
+    requires jdk.internal.jvmstat;
 }
diff --git a/jdk/src/jdk.jconsole/share/classes/module-info.java b/jdk/src/jdk.jconsole/share/classes/module-info.java
index bd10ffb739d..7227c079fc0 100644
--- a/jdk/src/jdk.jconsole/share/classes/module-info.java
+++ b/jdk/src/jdk.jconsole/share/classes/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -29,7 +29,7 @@ module jdk.jconsole {
     requires java.logging;
     requires java.rmi;
     requires jdk.attach;
-    requires jdk.jvmstat;
+    requires jdk.internal.jvmstat;
     requires jdk.management;
     exports com.sun.tools.jconsole;
     uses com.sun.tools.jconsole.JConsolePlugin;
diff --git a/jdk/src/jdk.jstatd/share/classes/module-info.java b/jdk/src/jdk.jstatd/share/classes/module-info.java
index 1f8a86e214d..67f3ec0770f 100644
--- a/jdk/src/jdk.jstatd/share/classes/module-info.java
+++ b/jdk/src/jdk.jstatd/share/classes/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 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
@@ -25,7 +25,7 @@
 
 module jdk.jstatd {
     requires java.rmi;
-    requires jdk.jvmstat;
+    requires jdk.internal.jvmstat;
 
     // RMI needs to serialize types in this package
     exports sun.jvmstat.monitor.remote to java.rmi;
diff --git a/jdk/test/sun/jvmstat/monitor/HostIdentifier/HostIdentifierCreate.java b/jdk/test/sun/jvmstat/monitor/HostIdentifier/HostIdentifierCreate.java
index e5dbcf31a16..38c464ebc91 100644
--- a/jdk/test/sun/jvmstat/monitor/HostIdentifier/HostIdentifierCreate.java
+++ b/jdk/test/sun/jvmstat/monitor/HostIdentifier/HostIdentifierCreate.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -24,7 +24,7 @@
 /*
  * @test
  * @bug 4990825
- * @modules jdk.jvmstat/sun.jvmstat.monitor
+ * @modules jdk.internal.jvmstat/sun.jvmstat.monitor
  * @summary test that HostIdentifier objects get created as expected
  */
 
diff --git a/jdk/test/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java b/jdk/test/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java
index cd446dabbb4..c759c01c99a 100644
--- a/jdk/test/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java
+++ b/jdk/test/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -68,8 +68,8 @@ import sun.jvmstat.monitor.event.VmStatusChangeEvent;
  * @summary attach to external but local JVM processes
  * @library /lib/testlibrary
  * @modules java.management
- *          jdk.jvmstat/sun.jvmstat.monitor
- *          jdk.jvmstat/sun.jvmstat.monitor.event
+ *          jdk.internal.jvmstat/sun.jvmstat.monitor
+ *          jdk.internal.jvmstat/sun.jvmstat.monitor.event
  * @build jdk.testlibrary.*
  * @run main/othervm MonitorVmStartTerminate
  */
diff --git a/jdk/test/sun/jvmstat/monitor/MonitoredVm/TestPollingInterval.java b/jdk/test/sun/jvmstat/monitor/MonitoredVm/TestPollingInterval.java
index 3d521ad5bc5..8f9d9d693ac 100644
--- a/jdk/test/sun/jvmstat/monitor/MonitoredVm/TestPollingInterval.java
+++ b/jdk/test/sun/jvmstat/monitor/MonitoredVm/TestPollingInterval.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -40,7 +40,7 @@ import sun.jvmstat.monitor.VmIdentifier;
  * @test
  * @bug 6672135
  * @summary setInterval() for local MonitoredHost and local MonitoredVm
- * @modules jdk.jvmstat/sun.jvmstat.monitor
+ * @modules jdk.internal.jvmstat/sun.jvmstat.monitor
  * @library /lib/testlibrary
  * @library /test/lib
  * @build jdk.testlibrary.*
diff --git a/jdk/test/sun/jvmstat/monitor/VmIdentifier/VmIdentifierCreateResolve.java b/jdk/test/sun/jvmstat/monitor/VmIdentifier/VmIdentifierCreateResolve.java
index 408ce1f4d06..e3bdb4c9b91 100644
--- a/jdk/test/sun/jvmstat/monitor/VmIdentifier/VmIdentifierCreateResolve.java
+++ b/jdk/test/sun/jvmstat/monitor/VmIdentifier/VmIdentifierCreateResolve.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -24,7 +24,7 @@
 /*
  * @test
  * @bug 4990825
- * @modules jdk.jvmstat/sun.jvmstat.monitor
+ * @modules jdk.internal.jvmstat/sun.jvmstat.monitor
  * @summary test that VmIdentifier objects get created as expected
  */
 
diff --git a/jdk/test/sun/jvmstat/perfdata/PrologSanity/PrologSizeSanityCheck.java b/jdk/test/sun/jvmstat/perfdata/PrologSanity/PrologSizeSanityCheck.java
index 95c54917d59..24438815d6e 100644
--- a/jdk/test/sun/jvmstat/perfdata/PrologSanity/PrologSizeSanityCheck.java
+++ b/jdk/test/sun/jvmstat/perfdata/PrologSanity/PrologSizeSanityCheck.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -24,7 +24,7 @@
 /*
  * @test
  * @bug 4990825
- * @modules jdk.jvmstat/sun.jvmstat.monitor
+ * @modules jdk.internal.jvmstat/sun.jvmstat.monitor
  * @run main/othervm -XX:+UsePerfData PrologSizeSanityCheck
  * @summary prolog size and overflow sanity checks
  */

From a70d3ad6194c4e5a9d609e90d876e917076d0063 Mon Sep 17 00:00:00 2001
From: Amit Sapre <amit.sapre@oracle.com>
Date: Fri, 20 Jan 2017 04:42:29 -0800
Subject: [PATCH 7/9] 8167337: When jmxremote.port=0, JDP broadcasts "0"
 instead of assigned port

Fetched the correct jmx service url for jdp to broadcast it.

Reviewed-by: dsamersoff, rriggs
---
 .../share/classes/sun/management/Agent.java   |  18 +--
 .../sun/management/jdp/DynamicLauncher.java   |  11 +-
 .../jdp/JdpJmxRemoteDynamicPortTest.java      |  60 ++++++++++
 .../jdp/JdpJmxRemoteDynamicPortTestCase.java  | 106 ++++++++++++++++++
 4 files changed, 177 insertions(+), 18 deletions(-)
 create mode 100644 jdk/test/sun/management/jdp/JdpJmxRemoteDynamicPortTest.java
 create mode 100644 jdk/test/sun/management/jdp/JdpJmxRemoteDynamicPortTestCase.java

diff --git a/jdk/src/java.management/share/classes/sun/management/Agent.java b/jdk/src/java.management/share/classes/sun/management/Agent.java
index fbc80433793..80c34e30452 100644
--- a/jdk/src/java.management/share/classes/sun/management/Agent.java
+++ b/jdk/src/java.management/share/classes/sun/management/Agent.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -502,19 +502,9 @@ public class Agent {
                }
             }
 
-            // Rebuilding service URL to broadcast it
-            String jmxremotePort = props.getProperty(JMXREMOTE_PORT);
-            String rmiPort = props.getProperty(RMI_PORT);
-
-            JMXServiceURL url = jmxServer.getAddress();
-            String hostname = url.getHost();
-
-            String jmxUrlStr = (rmiPort != null)
-                    ? String.format(
-                    "service:jmx:rmi://%s:%s/jndi/rmi://%s:%s/jmxrmi",
-                    hostname, rmiPort, hostname, jmxremotePort)
-                    : String.format(
-                    "service:jmx:rmi:///jndi/rmi://%s:%s/jmxrmi", hostname, jmxremotePort);
+            // Get service URL to broadcast it
+            Map<String,String> remoteProps = ConnectorAddressLink.importRemoteFrom(0);
+            String jmxUrlStr = remoteProps.get("sun.management.JMXConnectorServer.0.remoteAddress");
 
             String instanceName = props.getProperty("com.sun.management.jdp.name");
 
diff --git a/jdk/test/sun/management/jdp/DynamicLauncher.java b/jdk/test/sun/management/jdp/DynamicLauncher.java
index b8e5710dbef..934002c056b 100644
--- a/jdk/test/sun/management/jdp/DynamicLauncher.java
+++ b/jdk/test/sun/management/jdp/DynamicLauncher.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 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
@@ -38,19 +38,19 @@ import java.util.UUID;
 public abstract class DynamicLauncher {
 
     final String jdpName = UUID.randomUUID().toString();
+    OutputAnalyzer output;
     int jmxPort;
 
     protected void run() throws Exception {
-        OutputAnalyzer out;
         int retries = 1;
         boolean tryAgain;
 
         do {
             tryAgain = false;
             jmxPort = Utils.getFreePort();
-            out = runVM();
+            output = runVM();
             try {
-                out.shouldNotContain("Port already in use");
+                output.shouldNotContain("Port already in use");
             } catch (RuntimeException e) {
                 if (retries < 3) {
                     retries++;
@@ -71,4 +71,7 @@ public abstract class DynamicLauncher {
 
     protected abstract String[] options();
 
+    protected OutputAnalyzer getProcessOutpoutAnalyzer() {
+        return output;
+    }
 }
diff --git a/jdk/test/sun/management/jdp/JdpJmxRemoteDynamicPortTest.java b/jdk/test/sun/management/jdp/JdpJmxRemoteDynamicPortTest.java
new file mode 100644
index 00000000000..9ee4a0cd820
--- /dev/null
+++ b/jdk/test/sun/management/jdp/JdpJmxRemoteDynamicPortTest.java
@@ -0,0 +1,60 @@
+/*
+ * 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.
+ */
+
+/**
+ *  @test JdpJmxRemoteDynamicPortTest.java
+ *  @bug 8167337
+ *  @summary Verify a non-zero value is assigned to jmxremote.port
+ *           when VM is started with jmxremote.port=0.
+ *  @library /lib/testlibrary
+ *  @modules java.management/sun.management.jdp
+ *  @build jdk.testlibrary.* ClientConnection JdpTestUtil JdpTestCase JdpJmxRemoteDynamicPortTestCase DynamicLauncher
+ *  @run main JdpJmxRemoteDynamicPortTest
+ */
+
+import java.lang.management.ManagementFactory;
+
+public class JdpJmxRemoteDynamicPortTest  extends DynamicLauncher {
+    final String testName = "JdpJmxRemoteDynamicPortTestCase";
+
+    public static void main(String[] args) throws Exception {
+        DynamicLauncher launcher = new JdpJmxRemoteDynamicPortTest();
+        launcher.run();
+        launcher.getProcessOutpoutAnalyzer().stderrShouldNotContain("java.lang.Exception:");
+    }
+
+    protected String[] options() {
+        String[] options = {
+                "-Dcom.sun.management.jmxremote.authenticate=false",
+                "-Dcom.sun.management.jmxremote.ssl=false",
+                "-Dcom.sun.management.jmxremote=true",
+                "-Dcom.sun.management.jmxremote.port=0",
+                "-Dcom.sun.management.jmxremote.autodiscovery=true",
+                "-Dcom.sun.management.jdp.pause=1",
+                "-Dcom.sun.management.jdp.name=" + jdpName,
+                "-Djava.util.logging.SimpleFormatter.format='%1$tF %1$tT %4$-7s %5$s %n'",
+                testName
+        };
+        return options;
+    }
+}
diff --git a/jdk/test/sun/management/jdp/JdpJmxRemoteDynamicPortTestCase.java b/jdk/test/sun/management/jdp/JdpJmxRemoteDynamicPortTestCase.java
new file mode 100644
index 00000000000..bb5485ed073
--- /dev/null
+++ b/jdk/test/sun/management/jdp/JdpJmxRemoteDynamicPortTestCase.java
@@ -0,0 +1,106 @@
+/*
+ * 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 java.net.SocketTimeoutException;
+import java.util.Map;
+
+public class JdpJmxRemoteDynamicPortTestCase extends JdpTestCase {
+
+    private int receivedJDPpackets = 0;
+
+    public JdpJmxRemoteDynamicPortTestCase(ClientConnection connection) {
+        super(connection);
+    }
+
+    @Override
+    protected String initialLogMessage() {
+        return "Starting test case JdpJmxRemoteDynamicPortTestCase";
+    }
+
+    /**
+     * This method is executed after a correct Jdp packet (coming from this VM) has been received.
+     *
+     * @param payload A dictionary containing the Jdp packet data.
+     */
+    protected void packetFromThisVMReceived(Map<String, String> payload) throws Exception {
+        receivedJDPpackets++;
+        final String jmxServiceurl = payload.get("JMX_SERVICE_URL");
+        int lastcolon = jmxServiceurl.lastIndexOf(':');
+        int nextslash = jmxServiceurl.indexOf('/', lastcolon);
+        int jmxRemotePort = Integer.parseInt(jmxServiceurl, lastcolon + 1, nextslash, 10);
+
+        log.fine("Received #" + String.valueOf(receivedJDPpackets) +
+                  ", jmxStringUrl=" + jmxServiceurl + ", jmxRemotePort=" + jmxRemotePort);
+
+        if (0 == jmxRemotePort) {
+           throw new Exception("JmxRemotePort value is zero. Test case failed.");
+        }
+
+        log.fine("Test case passed");
+    }
+
+    /**
+     * The socket should not timeout.
+     * It is set to wait for 10 times the defined pause between Jdp packet. See JdpOnTestCase.TIME_OUT_FACTOR.
+     */
+    @Override
+    protected void onSocketTimeOut(SocketTimeoutException e) throws Exception {
+        String message = "Timed out waiting for JDP packet. Should arrive within " +
+                connection.pauseInSeconds + " seconds, but waited for " +
+                timeOut + " seconds.";
+        log.severe(message);
+        throw new Exception(message, e);
+    }
+
+
+    /**
+     * After receiving one Jdp packets the test should end.
+     */
+    @Override
+    protected boolean shouldContinue() {
+        return receivedJDPpackets < 1;
+    }
+
+    /**
+     * To run this test manually you might need the following VM options:
+     * <p/>
+     * -Dcom.sun.management.jmxremote.authenticate=false
+     * -Dcom.sun.management.jmxremote.ssl=false
+     * -Dcom.sun.management.jmxremote.port=0
+     * -Dcom.sun.management.jmxremote=true
+     * -Dcom.sun.management.jmxremote.autodiscovery=true
+     * -Dcom.sun.management.jdp.pause=1
+     * -Dcom.sun.management.jdp.name=alex  (or some other string to identify this VM)
+     * <p/>
+     * Recommended for nice output:
+     * -Djava.util.logging.SimpleFormatter.format="%1$tF %1$tT %4$-7s %5$s %n"
+     *
+     * @param args
+     * @throws Exception
+     */
+    public static void main(String[] args) throws Exception {
+        JdpTestCase client = new JdpJmxRemoteDynamicPortTestCase(new ClientConnection());
+        client.run();
+    }
+
+}

From a1d6b9fa8b7e2ca6d5ec6bfa6a0ca10353552a1a Mon Sep 17 00:00:00 2001
From: Dmitrij Pochepko <dpochepk@openjdk.org>
Date: Mon, 23 Jan 2017 16:31:49 +0300
Subject: [PATCH 8/9] 8171149:
 java/lang/invoke/LFCaching/LFSingleThreadCachingTest.java failed with "Out of
 space in CodeCache for adapters"

Reviewed-by: kvn
---
 .../invoke/LFCaching/LambdaFormTestCase.java   | 18 +++++++-----------
 .../jsr292/CodeCacheOverflowProcessor.java     |  1 -
 2 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/jdk/test/java/lang/invoke/LFCaching/LambdaFormTestCase.java b/jdk/test/java/lang/invoke/LFCaching/LambdaFormTestCase.java
index 34fe4b1a7bb..42f6aefbfe7 100644
--- a/jdk/test/java/lang/invoke/LFCaching/LambdaFormTestCase.java
+++ b/jdk/test/java/lang/invoke/LFCaching/LambdaFormTestCase.java
@@ -141,16 +141,6 @@ public abstract class LambdaFormTestCase {
             doneIterations++;
             return true;
         }
-
-        void checkPassed() {
-            if (!passed) {
-                throw new Error(String.format("%d of %d test cases FAILED! %n"
-                        + "Rerun the test with the same \"-Dseed=\" option as in the log file!",
-                        failCounter, testCounter));
-            } else {
-                System.err.printf("All %d test cases PASSED!%n", testCounter);
-            }
-        }
     }
 
     /**
@@ -195,6 +185,12 @@ public abstract class LambdaFormTestCase {
             System.err.println("FAILED");
             throw new Error("Unexpected error!", ex);
         }
-        run.checkPassed();
+        if (!run.passed) {
+            throw new Error(String.format("%d of %d test cases FAILED! %n"
+                    + "Rerun the test with the same \"-Dseed=\" option as in the log file!",
+                    run.failCounter, run.testCounter));
+        } else {
+            System.err.printf("All %d test cases PASSED!%n", run.testCounter);
+        }
     }
 }
diff --git a/jdk/test/lib/testlibrary/jsr292/com/oracle/testlibrary/jsr292/CodeCacheOverflowProcessor.java b/jdk/test/lib/testlibrary/jsr292/com/oracle/testlibrary/jsr292/CodeCacheOverflowProcessor.java
index d5d6b1c34f3..ca772aa431f 100644
--- a/jdk/test/lib/testlibrary/jsr292/com/oracle/testlibrary/jsr292/CodeCacheOverflowProcessor.java
+++ b/jdk/test/lib/testlibrary/jsr292/com/oracle/testlibrary/jsr292/CodeCacheOverflowProcessor.java
@@ -72,7 +72,6 @@ public class CodeCacheOverflowProcessor {
         if (t != null) {
             System.err.printf("%nNon-critical exception caught becuse of"
                     + " code cache size is not enough to run all test cases.%n%n");
-            t.printStackTrace();
         }
         return t;
     }

From dc09e00a6e15acd78024da550eb42c3b5b8ffc47 Mon Sep 17 00:00:00 2001
From: Vyom Tewari <vtewari@openjdk.org>
Date: Wed, 25 Jan 2017 15:31:01 +0530
Subject: [PATCH 9/9] 8167178: Exported elements referring to inaccessible
 types in java.naming

Reviewed-by: chegar, rriggs, alanb
---
 .../share/classes/javax/naming/CompoundName.java         | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/jdk/src/java.naming/share/classes/javax/naming/CompoundName.java b/jdk/src/java.naming/share/classes/javax/naming/CompoundName.java
index aa4b4eb252c..cbdcd00bdab 100644
--- a/jdk/src/java.naming/share/classes/javax/naming/CompoundName.java
+++ b/jdk/src/java.naming/share/classes/javax/naming/CompoundName.java
@@ -149,11 +149,10 @@ import java.util.Properties;
 public class CompoundName implements Name {
 
     /**
-      * Implementation of this compound name.
-      * This field is initialized by the constructors and cannot be null.
-      * It should be treated as a read-only variable by subclasses.
-      */
-    protected transient NameImpl impl;
+     * Implementation of this compound name. This field is initialized by the
+     * constructors and cannot be null.
+     */
+    private transient NameImpl impl;
     /**
       * Syntax properties for this compound name.
       * This field is initialized by the constructors and cannot be null.