# HG changeset patch # User chegar # Date 1459697321 -3600 # Node ID 84179cb88469267a1dcdb491bc0cb1ebf24c8597 # Parent 6072af7a98be3922f26bdce71b53bb3646cb2ac9 8153181: Move sun.misc.VMSupport to an internal package Reviewed-by: alanb, mchung diff -r 6072af7a98be -r 84179cb88469 jdk/make/mapfiles/libjava/mapfile-vers --- a/jdk/make/mapfiles/libjava/mapfile-vers Wed Jul 05 21:31:37 2017 +0200 +++ b/jdk/make/mapfiles/libjava/mapfile-vers Sun Apr 03 16:28:41 2016 +0100 @@ -283,8 +283,8 @@ Java_jdk_internal_loader_BootLoader_getSystemPackageNames; Java_jdk_internal_loader_BootLoader_setBootLoaderUnnamedModule0; - Java_sun_misc_VMSupport_initAgentProperties; - Java_sun_misc_VMSupport_getVMTemporaryDirectory; + Java_jdk_internal_vm_VMSupport_initAgentProperties; + Java_jdk_internal_vm_VMSupport_getVMTemporaryDirectory; # ZipFile.c needs this one throwFileNotFoundException; diff -r 6072af7a98be -r 84179cb88469 jdk/src/java.base/share/classes/jdk/internal/vm/VMSupport.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/java.base/share/classes/jdk/internal/vm/VMSupport.java Sun Apr 03 16:28:41 2016 +0100 @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package jdk.internal.vm; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Properties; +import java.util.Set; +import java.util.jar.JarFile; +import java.util.jar.Manifest; +import java.util.jar.Attributes; + +/* + * Support class used by JVMTI and VM attach mechanism. + */ +public class VMSupport { + + private static Properties agentProps = null; + /** + * Returns the agent properties. + */ + public static synchronized Properties getAgentProperties() { + if (agentProps == null) { + agentProps = new Properties(); + initAgentProperties(agentProps); + } + return agentProps; + } + private static native Properties initAgentProperties(Properties props); + + /** + * Write the given properties list to a byte array and return it. Properties with + * a key or value that is not a String is filtered out. The stream written to the byte + * array is ISO 8859-1 encoded. + */ + private static byte[] serializePropertiesToByteArray(Properties p) throws IOException { + ByteArrayOutputStream out = new ByteArrayOutputStream(4096); + + Properties props = new Properties(); + + // stringPropertyNames() returns a snapshot of the property keys + Set keyset = p.stringPropertyNames(); + for (String key : keyset) { + String value = p.getProperty(key); + props.put(key, value); + } + + props.store(out, null); + return out.toByteArray(); + } + + public static byte[] serializePropertiesToByteArray() throws IOException { + return serializePropertiesToByteArray(System.getProperties()); + } + + public static byte[] serializeAgentPropertiesToByteArray() throws IOException { + return serializePropertiesToByteArray(getAgentProperties()); + } + + /* + * Returns true if the given JAR file has the Class-Path attribute in the + * main section of the JAR manifest. Throws RuntimeException if the given + * path is not a JAR file or some other error occurs. + */ + public static boolean isClassPathAttributePresent(String path) { + try { + Manifest man = (new JarFile(path)).getManifest(); + if (man != null) { + if (man.getMainAttributes().getValue(Attributes.Name.CLASS_PATH) != null) { + return true; + } + } + return false; + } catch (IOException ioe) { + throw new RuntimeException(ioe.getMessage()); + } + } + + /* + * Return the temporary directory that the VM uses for the attach + * and perf data files. + * + * It is important that this directory is well-known and the + * same for all VM instances. It cannot be affected by configuration + * variables such as java.io.tmpdir. + */ + public static native String getVMTemporaryDirectory(); +} diff -r 6072af7a98be -r 84179cb88469 jdk/src/java.base/share/classes/module-info.java --- a/jdk/src/java.base/share/classes/module-info.java Wed Jul 05 21:31:37 2017 +0200 +++ b/jdk/src/java.base/share/classes/module-info.java Sun Apr 03 16:28:41 2016 +0100 @@ -182,6 +182,9 @@ java.desktop; exports jdk.internal.util.jar to jdk.jartool; + exports jdk.internal.vm to + java.management, + jdk.jvmstat; exports sun.net to java.httpclient; exports sun.net.dns to diff -r 6072af7a98be -r 84179cb88469 jdk/src/java.base/share/classes/sun/misc/VMSupport.java --- a/jdk/src/java.base/share/classes/sun/misc/VMSupport.java Wed Jul 05 21:31:37 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package sun.misc; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.Properties; -import java.util.Set; -import java.util.jar.JarFile; -import java.util.jar.Manifest; -import java.util.jar.Attributes; - -/* - * Support class used by JVMTI and VM attach mechanism. - */ -public class VMSupport { - - private static Properties agentProps = null; - /** - * Returns the agent properties. - */ - public static synchronized Properties getAgentProperties() { - if (agentProps == null) { - agentProps = new Properties(); - initAgentProperties(agentProps); - } - return agentProps; - } - private static native Properties initAgentProperties(Properties props); - - /** - * Write the given properties list to a byte array and return it. Properties with - * a key or value that is not a String is filtered out. The stream written to the byte - * array is ISO 8859-1 encoded. - */ - private static byte[] serializePropertiesToByteArray(Properties p) throws IOException { - ByteArrayOutputStream out = new ByteArrayOutputStream(4096); - - Properties props = new Properties(); - - // stringPropertyNames() returns a snapshot of the property keys - Set keyset = p.stringPropertyNames(); - for (String key : keyset) { - String value = p.getProperty(key); - props.put(key, value); - } - - props.store(out, null); - return out.toByteArray(); - } - - public static byte[] serializePropertiesToByteArray() throws IOException { - return serializePropertiesToByteArray(System.getProperties()); - } - - public static byte[] serializeAgentPropertiesToByteArray() throws IOException { - return serializePropertiesToByteArray(getAgentProperties()); - } - - /* - * Returns true if the given JAR file has the Class-Path attribute in the - * main section of the JAR manifest. Throws RuntimeException if the given - * path is not a JAR file or some other error occurs. - */ - public static boolean isClassPathAttributePresent(String path) { - try { - Manifest man = (new JarFile(path)).getManifest(); - if (man != null) { - if (man.getMainAttributes().getValue(Attributes.Name.CLASS_PATH) != null) { - return true; - } - } - return false; - } catch (IOException ioe) { - throw new RuntimeException(ioe.getMessage()); - } - } - - /* - * Return the temporary directory that the VM uses for the attach - * and perf data files. - * - * It is important that this directory is well-known and the - * same for all VM instances. It cannot be affected by configuration - * variables such as java.io.tmpdir. - */ - public static native String getVMTemporaryDirectory(); -} diff -r 6072af7a98be -r 84179cb88469 jdk/src/java.base/share/native/libjava/VMSupport.c --- a/jdk/src/java.base/share/native/libjava/VMSupport.c Wed Jul 05 21:31:37 2017 +0200 +++ b/jdk/src/java.base/share/native/libjava/VMSupport.c Sun Apr 03 16:28:41 2016 +0100 @@ -27,36 +27,17 @@ #include "jni_util.h" #include "jlong.h" #include "jvm.h" -#include "jdk_util.h" -#include "sun_misc_VMSupport.h" - -typedef jobject (JNICALL *INIT_AGENT_PROPERTIES_FN)(JNIEnv *, jobject); - -static INIT_AGENT_PROPERTIES_FN InitAgentProperties_fp = NULL; +#include "jdk_internal_vm_VMSupport.h" JNIEXPORT jobject JNICALL -Java_sun_misc_VMSupport_initAgentProperties(JNIEnv *env, jclass cls, jobject props) +Java_jdk_internal_vm_VMSupport_initAgentProperties(JNIEnv *env, jclass cls, jobject props) { - if (InitAgentProperties_fp == NULL) { - if (!JDK_InitJvmHandle()) { - JNU_ThrowInternalError(env, - "Handle for JVM not found for symbol lookup"); - return NULL; - } - InitAgentProperties_fp = (INIT_AGENT_PROPERTIES_FN) - JDK_FindJvmEntry("JVM_InitAgentProperties"); - if (InitAgentProperties_fp == NULL) { - JNU_ThrowInternalError(env, - "Mismatched VM version: JVM_InitAgentProperties not found"); - return NULL; - } - } - return (*InitAgentProperties_fp)(env, props); + return JVM_InitAgentProperties(env, props); } JNIEXPORT jstring JNICALL -Java_sun_misc_VMSupport_getVMTemporaryDirectory(JNIEnv *env, jclass cls) +Java_jdk_internal_vm_VMSupport_getVMTemporaryDirectory(JNIEnv *env, jclass cls) { return JVM_GetTemporaryDirectory(env); } diff -r 6072af7a98be -r 84179cb88469 jdk/src/java.management/share/classes/sun/management/Agent.java --- a/jdk/src/java.management/share/classes/sun/management/Agent.java Wed Jul 05 21:31:37 2017 +0200 +++ b/jdk/src/java.management/share/classes/sun/management/Agent.java Sun Apr 03 16:28:41 2016 +0100 @@ -52,7 +52,7 @@ import sun.management.jmxremote.ConnectorBootstrap; import sun.management.jdp.JdpController; import sun.management.jdp.JdpException; -import sun.misc.VMSupport; +import jdk.internal.vm.VMSupport; /** * This Agent is started by the VM when -Dcom.sun.management.snmp or diff -r 6072af7a98be -r 84179cb88469 jdk/src/jdk.jdwp.agent/share/native/libjdwp/util.c --- a/jdk/src/jdk.jdwp.agent/share/native/libjdwp/util.c Wed Jul 05 21:31:37 2017 +0200 +++ b/jdk/src/jdk.jdwp.agent/share/native/libjdwp/util.c Sun Apr 03 16:28:41 2016 +0100 @@ -257,9 +257,9 @@ gdata->property_user_dir = getPropertyUTF8(env, "user.dir"); - /* Get agent properties: invoke sun.misc.VMSupport.getAgentProperties */ + /* Get agent properties: invoke VMSupport.getAgentProperties */ localVMSupportClass = JNI_FUNC_PTR(env,FindClass) - (env, "sun/misc/VMSupport"); + (env, "jdk/internal/vm/VMSupport"); if (localVMSupportClass == NULL) { gdata->agent_properties = NULL; if (JNI_FUNC_PTR(env,ExceptionOccurred)(env)) { @@ -276,7 +276,7 @@ if (JNI_FUNC_PTR(env,ExceptionOccurred)(env)) { JNI_FUNC_PTR(env,ExceptionClear)(env); EXIT_ERROR(AGENT_ERROR_INTERNAL, - "Exception occurred calling sun.misc.VMSupport.getAgentProperties"); + "Exception occurred calling VMSupport.getAgentProperties"); } } diff -r 6072af7a98be -r 84179cb88469 jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataFile.java --- a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataFile.java Wed Jul 05 21:31:37 2017 +0200 +++ b/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataFile.java Sun Apr 03 16:28:41 2016 +0100 @@ -27,6 +27,7 @@ import java.io.File; import java.io.FilenameFilter; +import jdk.internal.vm.VMSupport; /** * Class to provide translations from the local Vm Identifier @@ -291,7 +292,7 @@ * the same directory. Instead of guessing which directory the * VM is using, we will ask. */ - String tmpdir = sun.misc.VMSupport.getVMTemporaryDirectory(); + String tmpdir = VMSupport.getVMTemporaryDirectory(); /* * Assure that the string returned has a trailing File.separator