Merge
authorthartmann
Fri, 15 Jan 2016 09:15:33 +0100
changeset 35630 ed6ad80054c8
parent 35629 5738b816718a (current diff)
parent 35272 11bc23ee9f62 (diff)
child 35631 a19782509918
Merge
jdk/make/mapfiles/libjava/mapfile-vers
jdk/src/java.base/share/classes/jdk/Exported.java
jdk/src/java.base/share/classes/jdk/internal/misc/CleanerImpl.java
jdk/src/java.base/share/classes/sun/misc/CEFormatException.java
jdk/src/java.base/share/classes/sun/misc/CEStreamExhausted.java
jdk/src/java.base/share/classes/sun/misc/JarFilter.java
jdk/src/java.base/share/classes/sun/misc/MessageUtils.java
jdk/src/java.base/share/classes/sun/misc/Perf.java
jdk/src/java.base/share/classes/sun/misc/PerfCounter.java
jdk/src/java.base/share/classes/sun/misc/PerformanceLogger.java
jdk/src/java.base/share/classes/sun/misc/VM.java
jdk/src/java.base/share/classes/sun/misc/VMNotification.java
jdk/src/java.base/share/native/libjava/MessageUtils.c
jdk/src/java.base/unix/classes/sun/misc/OSEnvironment.java
jdk/src/java.base/windows/classes/sun/misc/OSEnvironment.java
jdk/src/java.scripting/share/classes/javax/script/package.html
jdk/test/java/lang/ProcessHandle/TEST.properties
jdk/test/sun/misc/VM/GetNanoTimeAdjustment.java
langtools/test/tools/javac/util/context/T7021650.java
--- a/.hgtags	Tue Jan 12 17:03:06 2016 +0300
+++ b/.hgtags	Fri Jan 15 09:15:33 2016 +0100
@@ -342,3 +342,4 @@
 4edcff1b9a8875eb6380a2165dfec599e8e3f7c0 jdk-9+97
 d00ad2d9049ac60815f70bff445e95df85648bd2 jdk-9+98
 f9bcdce2df26678c3fe468130b535c0342c69b89 jdk-9+99
+4379223f8806626852c46c52d4e7a27a584b406e jdk-9+100
--- a/.hgtags-top-repo	Tue Jan 12 17:03:06 2016 +0300
+++ b/.hgtags-top-repo	Fri Jan 15 09:15:33 2016 +0100
@@ -342,3 +342,4 @@
 75c3897541ecb52ee16d001ea605b12971df7303 jdk-9+97
 48987460c7d49a29013963ee44d090194396bb61 jdk-9+98
 7c0577bea4c65d69c5bef67023a89d2efa4fb2f7 jdk-9+99
+c1f30ac14db0eaff398429c04cd9fab92e1b4b2a jdk-9+100
--- a/common/autoconf/build-performance.m4	Tue Jan 12 17:03:06 2016 +0300
+++ b/common/autoconf/build-performance.m4	Fri Jan 15 09:15:33 2016 +0100
@@ -253,6 +253,24 @@
 
 ################################################################################
 #
+# Runs icecc-create-env once and prints the error if it fails
+#
+# $1: arguments to icecc-create-env
+# $2: log file
+#
+AC_DEFUN([BPERF_RUN_ICECC_CREATE_ENV],
+[
+  cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
+      && ${ICECC_CREATE_ENV} $1 > $2 2>&1
+  if test "$?" != "0"; then
+    AC_MSG_NOTICE([icecc-create-env output:])
+    cat $2
+    AC_MSG_ERROR([Failed to create icecc compiler environment])
+  fi
+])
+
+################################################################################
+#
 # Optionally enable distributed compilation of native code using icecc/icecream
 #
 AC_DEFUN([BPERF_SETUP_ICECC],
@@ -271,16 +289,18 @@
     # be sent to the other hosts in the icecream cluster.
     icecc_create_env_log="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/icecc_create_env.log"
     ${MKDIR} -p ${CONFIGURESUPPORT_OUTPUTDIR}/icecc
-    AC_MSG_CHECKING([for icecc build environment for target compiler])
+    # Older versions of icecc does not have the --gcc parameter
+    if ${ICECC_CREATE_ENV} | $GREP -q -e --gcc; then
+      icecc_gcc_arg="--gcc"
+    fi
     if test "x${TOOLCHAIN_TYPE}" = "xgcc"; then
-      cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
-          && ${ICECC_CREATE_ENV} --gcc ${CC} ${CXX} > ${icecc_create_env_log}
+      BPERF_RUN_ICECC_CREATE_ENV([${icecc_gcc_arg} ${CC} ${CXX}], \
+          ${icecc_create_env_log})
     elif test "x$TOOLCHAIN_TYPE" = "xclang"; then
       # For clang, the icecc compilerwrapper is needed. It usually resides next
       # to icecc-create-env.
       BASIC_REQUIRE_PROGS(ICECC_WRAPPER, compilerwrapper)
-      cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
-          && ${ICECC_CREATE_ENV} --clang ${CC} ${ICECC_WRAPPER} > ${icecc_create_env_log}
+      BPERF_RUN_ICECC_CREATE_ENV([--clang ${CC} ${ICECC_WRAPPER}], ${icecc_create_env_log})
     else
       AC_MSG_ERROR([Can only create icecc compiler packages for toolchain types gcc and clang])
     fi
@@ -289,24 +309,31 @@
     # to find it.
     ICECC_ENV_BUNDLE_BASENAME="`${SED} -n '/^creating/s/creating //p' ${icecc_create_env_log}`"
     ICECC_ENV_BUNDLE="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/${ICECC_ENV_BUNDLE_BASENAME}"
+    if test ! -f ${ICECC_ENV_BUNDLE}; then
+      AC_MSG_ERROR([icecc-create-env did not produce an environment ${ICECC_ENV_BUNDLE}])
+    fi
+    AC_MSG_CHECKING([for icecc build environment for target compiler])
     AC_MSG_RESULT([${ICECC_ENV_BUNDLE}])
     ICECC="ICECC_VERSION=${ICECC_ENV_BUNDLE} ICECC_CC=${CC} ICECC_CXX=${CXX} ${ICECC_CMD}"
 
     if test "x${COMPILE_TYPE}" = "xcross"; then
       # If cross compiling, create a separate env package for the build compiler
-      AC_MSG_CHECKING([for icecc build environment for build compiler])
       # Assume "gcc" or "cc" is gcc and "clang" is clang. Otherwise bail.
+      icecc_create_env_log_build="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/icecc_create_env_build.log"
       if test "x${BUILD_CC##*/}" = "xgcc" ||  test "x${BUILD_CC##*/}" = "xcc"; then
-        cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
-            && ${ICECC_CREATE_ENV} --gcc ${BUILD_CC} ${BUILD_CXX} > ${icecc_create_env_log}
+        BPERF_RUN_ICECC_CREATE_ENV([${icecc_gcc_arg} ${BUILD_CC} ${BUILD_CXX}], \
+            ${icecc_create_env_log_build})
       elif test "x${BUILD_CC##*/}" = "xclang"; then
-        cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
-            && ${ICECC_CREATE_ENV} --clang ${BUILD_CC} ${ICECC_WRAPPER} > ${icecc_create_env_log}
+        BPERF_RUN_ICECC_CREATE_ENV([--clang ${BUILD_CC} ${ICECC_WRAPPER}], ${icecc_create_env_log_build})
       else
         AC_MSG_ERROR([Cannot create icecc compiler package for ${BUILD_CC}])
       fi
-      ICECC_ENV_BUNDLE_BASENAME="`${SED} -n '/^creating/s/creating //p' ${icecc_create_env_log}`"
+      ICECC_ENV_BUNDLE_BASENAME="`${SED} -n '/^creating/s/creating //p' ${icecc_create_env_log_build}`"
       ICECC_ENV_BUNDLE="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/${ICECC_ENV_BUNDLE_BASENAME}"
+      if test ! -f ${ICECC_ENV_BUNDLE}; then
+        AC_MSG_ERROR([icecc-create-env did not produce an environment ${ICECC_ENV_BUNDLE}])
+      fi
+      AC_MSG_CHECKING([for icecc build environment for build compiler])
       AC_MSG_RESULT([${ICECC_ENV_BUNDLE}])
       BUILD_ICECC="ICECC_VERSION=${ICECC_ENV_BUNDLE} ICECC_CC=${BUILD_CC} \
           ICECC_CXX=${BUILD_CXX} ${ICECC_CMD}"
--- a/common/autoconf/flags.m4	Tue Jan 12 17:03:06 2016 +0300
+++ b/common/autoconf/flags.m4	Fri Jan 15 09:15:33 2016 +0100
@@ -128,6 +128,26 @@
   else
     COMPILER_TARGET_BITS_FLAG="-m"
     COMPILER_COMMAND_FILE_FLAG="@"
+
+    # The solstudio linker does not support @-files.
+    if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+      COMPILER_COMMAND_FILE_FLAG=
+    fi
+
+    # Check if @file is supported by gcc
+    if test "x$TOOLCHAIN_TYPE" = xgcc; then
+      AC_MSG_CHECKING([if @file is supported by gcc])
+      # Extra emtpy "" to prevent ECHO from interpreting '--version' as argument
+      $ECHO "" "--version" > command.file
+      if $CXX @command.file 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD; then
+        AC_MSG_RESULT(yes)
+        COMPILER_COMMAND_FILE_FLAG="@"
+      else
+        AC_MSG_RESULT(no)
+        COMPILER_COMMAND_FILE_FLAG=
+      fi
+      rm -rf command.file
+    fi
   fi
   AC_SUBST(COMPILER_TARGET_BITS_FLAG)
   AC_SUBST(COMPILER_COMMAND_FILE_FLAG)
--- a/common/autoconf/generated-configure.sh	Tue Jan 12 17:03:06 2016 +0300
+++ b/common/autoconf/generated-configure.sh	Fri Jan 15 09:15:33 2016 +0100
@@ -3794,6 +3794,15 @@
 
 ################################################################################
 #
+# Runs icecc-create-env once and prints the error if it fails
+#
+# $1: arguments to icecc-create-env
+# $2: log file
+#
+
+
+################################################################################
+#
 # Optionally enable distributed compilation of native code using icecc/icecream
 #
 
@@ -4308,7 +4317,7 @@
 
 
 #
-# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -4801,7 +4810,7 @@
 #CUSTOM_AUTOCONF_INCLUDE
 
 # Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1450277321
+DATE_WHEN_GENERATED=1452261921
 
 ###############################################################################
 #
@@ -45930,6 +45939,29 @@
   else
     COMPILER_TARGET_BITS_FLAG="-m"
     COMPILER_COMMAND_FILE_FLAG="@"
+
+    # The solstudio linker does not support @-files.
+    if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+      COMPILER_COMMAND_FILE_FLAG=
+    fi
+
+    # Check if @file is supported by gcc
+    if test "x$TOOLCHAIN_TYPE" = xgcc; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking if @file is supported by gcc" >&5
+$as_echo_n "checking if @file is supported by gcc... " >&6; }
+      # Extra emtpy "" to prevent ECHO from interpreting '--version' as argument
+      $ECHO "" "--version" > command.file
+      if $CXX @command.file 2>&5 >&5; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+        COMPILER_COMMAND_FILE_FLAG="@"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+        COMPILER_COMMAND_FILE_FLAG=
+      fi
+      rm -rf command.file
+    fi
   fi
 
 
@@ -51742,12 +51774,28 @@
     fi
 
     if test "x${with_cups}" != x; then
-      CUPS_CFLAGS="-I${with_cups}/include"
-      CUPS_FOUND=yes
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cups headers" >&5
+$as_echo_n "checking for cups headers... " >&6; }
+      if test -s "${with_cups}/include/cups/cups.h"; then
+        CUPS_CFLAGS="-I${with_cups}/include"
+        CUPS_FOUND=yes
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUPS_FOUND" >&5
+$as_echo "$CUPS_FOUND" >&6; }
+      else
+        as_fn_error $? "Can't find 'include/cups/cups.h' under ${with_cups} given with the --with-cups option." "$LINENO" 5
+      fi
     fi
     if test "x${with_cups_include}" != x; then
-      CUPS_CFLAGS="-I${with_cups_include}"
-      CUPS_FOUND=yes
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cups headers" >&5
+$as_echo_n "checking for cups headers... " >&6; }
+      if test -s "${with_cups_include}/cups/cups.h"; then
+        CUPS_CFLAGS="-I${with_cups_include}"
+        CUPS_FOUND=yes
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUPS_FOUND" >&5
+$as_echo "$CUPS_FOUND" >&6; }
+      else
+        as_fn_error $? "Can't find 'cups/cups.h' under ${with_cups_include} given with the --with-cups-include option." "$LINENO" 5
+      fi
     fi
     if test "x$CUPS_FOUND" = xno; then
       # Are the cups headers installed in the default /usr/include location?
@@ -59543,11 +59591,23 @@
     # be sent to the other hosts in the icecream cluster.
     icecc_create_env_log="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/icecc_create_env.log"
     ${MKDIR} -p ${CONFIGURESUPPORT_OUTPUTDIR}/icecc
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icecc build environment for target compiler" >&5
-$as_echo_n "checking for icecc build environment for target compiler... " >&6; }
+    # Older versions of icecc does not have the --gcc parameter
+    if ${ICECC_CREATE_ENV} | $GREP -q -e --gcc; then
+      icecc_gcc_arg="--gcc"
+    fi
     if test "x${TOOLCHAIN_TYPE}" = "xgcc"; then
-      cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
-          && ${ICECC_CREATE_ENV} --gcc ${CC} ${CXX} > ${icecc_create_env_log}
+
+  cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
+      && ${ICECC_CREATE_ENV} ${icecc_gcc_arg} ${CC} ${CXX} > \
+          ${icecc_create_env_log} 2>&1
+  if test "$?" != "0"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: icecc-create-env output:" >&5
+$as_echo "$as_me: icecc-create-env output:" >&6;}
+    cat \
+          ${icecc_create_env_log}
+    as_fn_error $? "Failed to create icecc compiler environment" "$LINENO" 5
+  fi
+
     elif test "x$TOOLCHAIN_TYPE" = "xclang"; then
       # For clang, the icecc compilerwrapper is needed. It usually resides next
       # to icecc-create-env.
@@ -59755,8 +59815,16 @@
   fi
 
 
-      cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
-          && ${ICECC_CREATE_ENV} --clang ${CC} ${ICECC_WRAPPER} > ${icecc_create_env_log}
+
+  cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
+      && ${ICECC_CREATE_ENV} --clang ${CC} ${ICECC_WRAPPER} > ${icecc_create_env_log} 2>&1
+  if test "$?" != "0"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: icecc-create-env output:" >&5
+$as_echo "$as_me: icecc-create-env output:" >&6;}
+    cat ${icecc_create_env_log}
+    as_fn_error $? "Failed to create icecc compiler environment" "$LINENO" 5
+  fi
+
     else
       as_fn_error $? "Can only create icecc compiler packages for toolchain types gcc and clang" "$LINENO" 5
     fi
@@ -59765,26 +59833,53 @@
     # to find it.
     ICECC_ENV_BUNDLE_BASENAME="`${SED} -n '/^creating/s/creating //p' ${icecc_create_env_log}`"
     ICECC_ENV_BUNDLE="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/${ICECC_ENV_BUNDLE_BASENAME}"
+    if test ! -f ${ICECC_ENV_BUNDLE}; then
+      as_fn_error $? "icecc-create-env did not produce an environment ${ICECC_ENV_BUNDLE}" "$LINENO" 5
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icecc build environment for target compiler" >&5
+$as_echo_n "checking for icecc build environment for target compiler... " >&6; }
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ICECC_ENV_BUNDLE}" >&5
 $as_echo "${ICECC_ENV_BUNDLE}" >&6; }
     ICECC="ICECC_VERSION=${ICECC_ENV_BUNDLE} ICECC_CC=${CC} ICECC_CXX=${CXX} ${ICECC_CMD}"
 
     if test "x${COMPILE_TYPE}" = "xcross"; then
       # If cross compiling, create a separate env package for the build compiler
+      # Assume "gcc" or "cc" is gcc and "clang" is clang. Otherwise bail.
+      icecc_create_env_log_build="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/icecc_create_env_build.log"
+      if test "x${BUILD_CC##*/}" = "xgcc" ||  test "x${BUILD_CC##*/}" = "xcc"; then
+
+  cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
+      && ${ICECC_CREATE_ENV} ${icecc_gcc_arg} ${BUILD_CC} ${BUILD_CXX} > \
+            ${icecc_create_env_log_build} 2>&1
+  if test "$?" != "0"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: icecc-create-env output:" >&5
+$as_echo "$as_me: icecc-create-env output:" >&6;}
+    cat \
+            ${icecc_create_env_log_build}
+    as_fn_error $? "Failed to create icecc compiler environment" "$LINENO" 5
+  fi
+
+      elif test "x${BUILD_CC##*/}" = "xclang"; then
+
+  cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
+      && ${ICECC_CREATE_ENV} --clang ${BUILD_CC} ${ICECC_WRAPPER} > ${icecc_create_env_log_build} 2>&1
+  if test "$?" != "0"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: icecc-create-env output:" >&5
+$as_echo "$as_me: icecc-create-env output:" >&6;}
+    cat ${icecc_create_env_log_build}
+    as_fn_error $? "Failed to create icecc compiler environment" "$LINENO" 5
+  fi
+
+      else
+        as_fn_error $? "Cannot create icecc compiler package for ${BUILD_CC}" "$LINENO" 5
+      fi
+      ICECC_ENV_BUNDLE_BASENAME="`${SED} -n '/^creating/s/creating //p' ${icecc_create_env_log_build}`"
+      ICECC_ENV_BUNDLE="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/${ICECC_ENV_BUNDLE_BASENAME}"
+      if test ! -f ${ICECC_ENV_BUNDLE}; then
+        as_fn_error $? "icecc-create-env did not produce an environment ${ICECC_ENV_BUNDLE}" "$LINENO" 5
+      fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icecc build environment for build compiler" >&5
 $as_echo_n "checking for icecc build environment for build compiler... " >&6; }
-      # Assume "gcc" or "cc" is gcc and "clang" is clang. Otherwise bail.
-      if test "x${BUILD_CC##*/}" = "xgcc" ||  test "x${BUILD_CC##*/}" = "xcc"; then
-        cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
-            && ${ICECC_CREATE_ENV} --gcc ${BUILD_CC} ${BUILD_CXX} > ${icecc_create_env_log}
-      elif test "x${BUILD_CC##*/}" = "xclang"; then
-        cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
-            && ${ICECC_CREATE_ENV} --clang ${BUILD_CC} ${ICECC_WRAPPER} > ${icecc_create_env_log}
-      else
-        as_fn_error $? "Cannot create icecc compiler package for ${BUILD_CC}" "$LINENO" 5
-      fi
-      ICECC_ENV_BUNDLE_BASENAME="`${SED} -n '/^creating/s/creating //p' ${icecc_create_env_log}`"
-      ICECC_ENV_BUNDLE="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/${ICECC_ENV_BUNDLE_BASENAME}"
       { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ICECC_ENV_BUNDLE}" >&5
 $as_echo "${ICECC_ENV_BUNDLE}" >&6; }
       BUILD_ICECC="ICECC_VERSION=${ICECC_ENV_BUNDLE} ICECC_CC=${BUILD_CC} \
--- a/common/autoconf/lib-cups.m4	Tue Jan 12 17:03:06 2016 +0300
+++ b/common/autoconf/lib-cups.m4	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -48,12 +48,24 @@
     fi
 
     if test "x${with_cups}" != x; then
-      CUPS_CFLAGS="-I${with_cups}/include"
-      CUPS_FOUND=yes
+      AC_MSG_CHECKING([for cups headers])
+      if test -s "${with_cups}/include/cups/cups.h"; then
+        CUPS_CFLAGS="-I${with_cups}/include"
+        CUPS_FOUND=yes
+        AC_MSG_RESULT([$CUPS_FOUND])
+      else
+        AC_MSG_ERROR([Can't find 'include/cups/cups.h' under ${with_cups} given with the --with-cups option.])
+      fi
     fi
     if test "x${with_cups_include}" != x; then
-      CUPS_CFLAGS="-I${with_cups_include}"
-      CUPS_FOUND=yes
+      AC_MSG_CHECKING([for cups headers])
+      if test -s "${with_cups_include}/cups/cups.h"; then
+        CUPS_CFLAGS="-I${with_cups_include}"
+        CUPS_FOUND=yes
+        AC_MSG_RESULT([$CUPS_FOUND])
+      else
+        AC_MSG_ERROR([Can't find 'cups/cups.h' under ${with_cups_include} given with the --with-cups-include option.])
+      fi
     fi
     if test "x$CUPS_FOUND" = xno; then
       # Are the cups headers installed in the default /usr/include location?
--- a/corba/.hgtags	Tue Jan 12 17:03:06 2016 +0300
+++ b/corba/.hgtags	Fri Jan 15 09:15:33 2016 +0100
@@ -342,3 +342,4 @@
 10a482b863582376d4ca229090334b23b05159fc jdk-9+97
 ea285530245cf4e0edf0479121a41347d3030eba jdk-9+98
 180212ee1d8710691ba9944593dfc1ff3e4f1532 jdk-9+99
+791d0d3ac0138faeb6110bd840a4545bc1950df2 jdk-9+100
--- a/hotspot/.hgtags	Tue Jan 12 17:03:06 2016 +0300
+++ b/hotspot/.hgtags	Fri Jan 15 09:15:33 2016 +0100
@@ -502,3 +502,4 @@
 de592ea5f7ba0f8a8c5afc03bd169f7690c72b6f jdk-9+97
 e5b1a23be1e105417ba1c4c576ab373eb3fa2c2b jdk-9+98
 f008e8cc10d5b3212fb22d58c96fa01d38654f19 jdk-9+99
+bdb0acafc63c42e84d9d8195bf2e2b25ee9c3306 jdk-9+100
--- a/hotspot/src/share/vm/prims/jvm.cpp	Tue Jan 12 17:03:06 2016 +0300
+++ b/hotspot/src/share/vm/prims/jvm.cpp	Fri Jan 15 09:15:33 2016 +0100
@@ -285,7 +285,7 @@
   return os::javaTimeNanos();
 JVM_END
 
-// The function below is actually exposed by sun.misc.VM and not
+// The function below is actually exposed by jdk.internal.misc.VM and not
 // java.lang.System, but we choose to keep it here so that it stays next
 // to JVM_CurrentTimeMillis and JVM_NanoTime
 
--- a/jaxp/.hgtags	Tue Jan 12 17:03:06 2016 +0300
+++ b/jaxp/.hgtags	Fri Jan 15 09:15:33 2016 +0100
@@ -342,3 +342,4 @@
 9c107c050335d7ee63b2a8b38ca5d498f19713a2 jdk-9+97
 52b01339235f24c93b679bd6b8fb36a1072ad0ac jdk-9+98
 52774b544850c791f1d1c67db2601b33739b18c9 jdk-9+99
+d45bcd374f6057851e3c2dcd45607cd362afadfa jdk-9+100
--- a/jaxws/.hgtags	Tue Jan 12 17:03:06 2016 +0300
+++ b/jaxws/.hgtags	Fri Jan 15 09:15:33 2016 +0100
@@ -345,3 +345,4 @@
 7293db4716ee25b814e14f738b9acfb85700e3fa jdk-9+97
 67c84077edc3db6b24998b35970b37c01aae985e jdk-9+98
 97b31ca0dd77483cf20ff99a033a455673639578 jdk-9+99
+d0a97e57d2336238edf6a4cd60aafe67deb7258d jdk-9+100
--- a/jdk/.hgtags	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/.hgtags	Fri Jan 15 09:15:33 2016 +0100
@@ -342,3 +342,5 @@
 fdd84b2265ddce7f50e084b7c8635189bba6f012 jdk-9+97
 f86ee68d1107dad41a27efc34306e0e56244a12e jdk-9+98
 e1a789be1535741274c9779f4d4ca3495196b5c3 jdk-9+99
+3d452840f48299a36842760d17c0c8402f0e1266 jdk-9+100
+5e8370fb3ed925335164afe340d1e54beab2d4d5 jdk-9+101
--- a/jdk/make/gendata/GendataBreakIterator.gmk	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/make/gendata/GendataBreakIterator.gmk	Fri Jan 15 09:15:33 2016 +0100
@@ -48,7 +48,6 @@
 $(eval $(call SetupJavaCompilation,BUILD_BREAKITERATOR, \
     SETUP := GENERATE_OLDBYTECODE, \
     SRC := $(TEXT_SRCDIR), \
-    INCLUDES := $(TEXT_PKG), \
     INCLUDE_FILES := $(TEXT_SOURCES), \
     BIN := $(BREAK_ITERATOR_CLASSES)))
 
--- a/jdk/make/mapfiles/libjava/mapfile-vers	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/make/mapfiles/libjava/mapfile-vers	Fri Jan 15 09:15:33 2016 +0100
@@ -216,6 +216,7 @@
 		Java_java_lang_SecurityManager_getClassContext;
 		Java_java_lang_Shutdown_halt0;
 		Java_java_lang_String_intern;
+		Java_java_lang_StringCoding_err;
 		Java_java_lang_StringUTF16_isBigEndian;
 		Java_java_lang_System_identityHashCode;
 		Java_java_lang_System_initProperties;
@@ -243,8 +244,6 @@
 		Java_java_util_TimeZone_getSystemTimeZoneID;
 		Java_java_util_TimeZone_getSystemGMTOffsetID;
 		Java_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8;
-		Java_sun_misc_MessageUtils_toStderr;
-		Java_sun_misc_MessageUtils_toStdout;
 		Java_sun_misc_NativeSignalHandler_handle0;
 		Java_sun_misc_Signal_findSignal;
 		Java_sun_misc_Signal_handle0;
@@ -278,12 +277,12 @@
 		Java_sun_reflect_Reflection_getClassAccessFlags;
                 Java_sun_misc_Version_getJdkVersionInfo;
                 Java_sun_misc_Version_getJvmVersionInfo;
-		Java_sun_misc_VM_latestUserDefinedLoader;
-                Java_sun_misc_VM_getuid;
-                Java_sun_misc_VM_geteuid;
-                Java_sun_misc_VM_getgid;
-                Java_sun_misc_VM_getegid;
-                Java_sun_misc_VM_initialize;
+		Java_jdk_internal_misc_VM_latestUserDefinedLoader;
+                Java_jdk_internal_misc_VM_getuid;
+                Java_jdk_internal_misc_VM_geteuid;
+                Java_jdk_internal_misc_VM_getgid;
+                Java_jdk_internal_misc_VM_getegid;
+                Java_jdk_internal_misc_VM_initialize;
 		Java_sun_misc_VMSupport_initAgentProperties;
 		Java_sun_misc_VMSupport_getVMTemporaryDirectory;
 
--- a/jdk/make/src/classes/build/tools/dtdbuilder/DTDParser.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/make/src/classes/build/tools/dtdbuilder/DTDParser.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,8 +35,6 @@
 import java.util.BitSet;
 import java.text.MessageFormat;
 
-import sun.misc.MessageUtils;
-
 /**
  * A parser for DTDs. This parser roughly corresponds to the
  * rules specified in "The SGML Handbook" by Charles F. Goldfarb.
--- a/jdk/src/java.base/share/classes/java/io/ObjectInputStream.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/io/ObjectInputStream.java	Fri Jan 15 09:15:33 2016 +0100
@@ -2135,7 +2135,7 @@
      * corresponding modifications to the above class.
      */
     private static ClassLoader latestUserDefinedLoader() {
-        return sun.misc.VM.latestUserDefinedLoader();
+        return jdk.internal.misc.VM.latestUserDefinedLoader();
     }
 
     /**
--- a/jdk/src/java.base/share/classes/java/lang/Class.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/Class.java	Fri Jan 15 09:15:33 2016 +0100
@@ -56,6 +56,7 @@
 import java.util.Objects;
 import java.util.StringJoiner;
 import jdk.internal.misc.Unsafe;
+import jdk.internal.misc.VM;
 import jdk.internal.HotSpotIntrinsicCandidate;
 import sun.reflect.CallerSensitive;
 import sun.reflect.ConstantPool;
@@ -360,9 +361,9 @@
             // Reflective call to get caller class is only needed if a security manager
             // is present.  Avoid the overhead of making this call otherwise.
             caller = Reflection.getCallerClass();
-            if (sun.misc.VM.isSystemDomainLoader(loader)) {
+            if (VM.isSystemDomainLoader(loader)) {
                 ClassLoader ccl = ClassLoader.getClassLoader(caller);
-                if (!sun.misc.VM.isSystemDomainLoader(ccl)) {
+                if (!VM.isSystemDomainLoader(ccl)) {
                     sm.checkPermission(
                         SecurityConstants.GET_CLASSLOADER_PERMISSION);
                 }
--- a/jdk/src/java.base/share/classes/java/lang/ClassLoader.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/ClassLoader.java	Fri Jan 15 09:15:33 2016 +0100
@@ -50,6 +50,8 @@
 import java.util.Hashtable;
 import java.util.WeakHashMap;
 import java.util.concurrent.ConcurrentHashMap;
+
+import jdk.internal.perf.PerfCounter;
 import sun.misc.Resource;
 import sun.misc.URLClassPath;
 import sun.reflect.CallerSensitive;
@@ -423,9 +425,9 @@
                     c = findClass(name);
 
                     // this is the defining class loader; record the stats
-                    sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
-                    sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);
-                    sun.misc.PerfCounter.getFindClasses().increment();
+                    PerfCounter.getParentDelegationTime().addTime(t1 - t0);
+                    PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);
+                    PerfCounter.getFindClasses().increment();
                 }
             }
             if (resolve) {
--- a/jdk/src/java.base/share/classes/java/lang/Integer.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/Integer.java	Fri Jan 15 09:15:33 2016 +0100
@@ -28,6 +28,7 @@
 import java.lang.annotation.Native;
 import java.util.Objects;
 import jdk.internal.HotSpotIntrinsicCandidate;
+import jdk.internal.misc.VM;
 
 import static java.lang.String.COMPACT_STRINGS;
 import static java.lang.String.LATIN1;
@@ -1018,7 +1019,7 @@
      * may be controlled by the {@code -XX:AutoBoxCacheMax=<size>} option.
      * During VM initialization, java.lang.Integer.IntegerCache.high property
      * may be set and saved in the private system properties in the
-     * sun.misc.VM class.
+     * jdk.internal.misc.VM class.
      */
 
     private static class IntegerCache {
@@ -1030,7 +1031,7 @@
             // high value may be configured by property
             int h = 127;
             String integerCacheHighPropValue =
-                sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
+                VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
             if (integerCacheHighPropValue != null) {
                 try {
                     int i = parseInt(integerCacheHighPropValue);
--- a/jdk/src/java.base/share/classes/java/lang/LiveStackFrame.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/LiveStackFrame.java	Fri Jan 15 09:15:33 2016 +0100
@@ -61,6 +61,9 @@
      * local variable array is an {@link PrimitiveValue} object;
      * otherwise, the element is an {@code Object}.
      *
+     * <p>The returned array may contain null entries if a local variable is not
+     * live.
+     *
      * @return  the local variable array of this stack frame.
      */
     public Object[] getLocals();
--- a/jdk/src/java.base/share/classes/java/lang/StackStreamFactory.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/StackStreamFactory.java	Fri Jan 15 09:15:33 2016 +0100
@@ -24,7 +24,7 @@
  */
 package java.lang;
 
-import sun.misc.VM;
+import jdk.internal.misc.VM;
 
 import java.io.PrintStream;
 import java.lang.StackWalker.Option;
--- a/jdk/src/java.base/share/classes/java/lang/StringCoding.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/StringCoding.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
 import java.nio.charset.UnsupportedCharsetException;
 import java.util.Arrays;
 import jdk.internal.HotSpotIntrinsicCandidate;
-import sun.misc.MessageUtils;
 import sun.nio.cs.HistoricallyNamedCharset;
 import sun.nio.cs.ArrayDecoder;
 import sun.nio.cs.ArrayEncoder;
@@ -106,11 +105,11 @@
 
     private static void warnUnsupportedCharset(String csn) {
         if (warnUnsupportedCharset) {
-            // Use sun.misc.MessageUtils rather than the Logging API or
-            // System.err since this method may be called during VM
-            // initialization before either is available.
-            MessageUtils.err("WARNING: Default charset " + csn +
-                             " not supported, using ISO-8859-1 instead");
+            // Use err(String) rather than the Logging API or System.err
+            // since this method may be called during VM initialization
+            // before either is available.
+            err("WARNING: Default charset " + csn +
+                " not supported, using ISO-8859-1 instead\n");
             warnUnsupportedCharset = false;
         }
     }
@@ -341,10 +340,9 @@
         try {
             return decode("ISO-8859-1", ba, off, len);
         } catch (UnsupportedEncodingException x) {
-            // If this code is hit during VM initialization, MessageUtils is
+            // If this code is hit during VM initialization, err(String) is
             // the only way we will be able to get any kind of error message.
-            MessageUtils.err("ISO-8859-1 charset not available: "
-                             + x.toString());
+            err("ISO-8859-1 charset not available: " + x.toString() + "\n");
             // If we can not find ISO-8859-1 (a required encoding) then things
             // are seriously wrong with the installation.
             System.exit(1);
@@ -653,14 +651,20 @@
         try {
             return encode("ISO-8859-1", coder, val);
         } catch (UnsupportedEncodingException x) {
-            // If this code is hit during VM initialization, MessageUtils is
+            // If this code is hit during VM initialization, err(String) is
             // the only way we will be able to get any kind of error message.
-            MessageUtils.err("ISO-8859-1 charset not available: "
-                             + x.toString());
+            err("ISO-8859-1 charset not available: " + x.toString() + "\n");
             // If we can not find ISO-8859-1 (a required encoding) then things
             // are seriously wrong with the installation.
             System.exit(1);
             return null;
         }
     }
+
+    /**
+     *  Print a message directly to stderr, bypassing all character conversion
+     *  methods.
+     *  @param msg  message to print
+     */
+    private static native void err(String msg);
 }
--- a/jdk/src/java.base/share/classes/java/lang/System.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/System.java	Fri Jan 15 09:15:33 2016 +0100
@@ -46,6 +46,7 @@
 import jdk.internal.HotSpotIntrinsicCandidate;
 import jdk.internal.misc.JavaLangAccess;;
 import jdk.internal.misc.SharedSecrets;;
+import jdk.internal.misc.VM;
 import jdk.internal.logger.LoggerFinderLoader;
 import jdk.internal.logger.LazyLoggers;
 import jdk.internal.logger.LocalizedLoggerWrapper;
@@ -1534,6 +1535,8 @@
      * @return an instance of {@link Logger} that can be used by the calling
      *         class.
      * @throws NullPointerException if {@code name} is {@code null}.
+     *
+     * @since 9
      */
     @CallerSensitive
     public static Logger getLogger(String name) {
@@ -1571,6 +1574,8 @@
      * resource bundle for message localization.
      * @throws NullPointerException if {@code name} is {@code null} or
      *         {@code bundle} is {@code null}.
+     *
+     * @since 9
      */
     @CallerSensitive
     public static Logger getLogger(String name, ResourceBundle bundle) {
@@ -1817,12 +1822,12 @@
         // removed from the system properties.
         //
         // See java.lang.Integer.IntegerCache and the
-        // sun.misc.VM.saveAndRemoveProperties method for example.
+        // VM.saveAndRemoveProperties method for example.
         //
         // Save a private copy of the system properties object that
         // can only be accessed by the internal implementation.  Remove
         // certain system properties that are not intended for public access.
-        sun.misc.VM.saveAndRemoveProperties(props);
+        VM.saveAndRemoveProperties(props);
 
 
         lineSeparator = props.getProperty("line.separator");
@@ -1846,7 +1851,7 @@
         // set for the class libraries. Currently this is no-op everywhere except
         // for Windows where the process-wide error mode is set before the java.io
         // classes are used.
-        sun.misc.VM.initializeOSEnvironment();
+        VM.initializeOSEnvironment();
 
         // The main thread is not added to its thread group in the same
         // way as other threads; we must do it ourselves here.
@@ -1857,10 +1862,10 @@
         setJavaLangAccess();
 
         // Subsystems that are invoked during initialization can invoke
-        // sun.misc.VM.isBooted() in order to avoid doing things that should
+        // VM.isBooted() in order to avoid doing things that should
         // wait until the application class loader has been set up.
         // IMPORTANT: Ensure that this remains the last initialization action!
-        sun.misc.VM.booted();
+        VM.booted();
     }
 
     private static void setJavaLangAccess() {
--- a/jdk/src/java.base/share/classes/java/lang/Thread.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/Thread.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1869,7 +1869,7 @@
      */
     public State getState() {
         // get current thread state
-        return sun.misc.VM.toThreadState(threadStatus);
+        return jdk.internal.misc.VM.toThreadState(threadStatus);
     }
 
     // Added in JSR-166
--- a/jdk/src/java.base/share/classes/java/lang/ThreadGroup.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/ThreadGroup.java	Fri Jan 15 09:15:33 2016 +0100
@@ -27,7 +27,7 @@
 
 import java.io.PrintStream;
 import java.util.Arrays;
-import sun.misc.VM;
+import jdk.internal.misc.VM;
 
 /**
  * A thread group represents a set of threads. In addition, a thread
--- a/jdk/src/java.base/share/classes/java/lang/Throwable.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/Throwable.java	Fri Jan 15 09:15:33 2016 +0100
@@ -24,7 +24,7 @@
  */
 
 package java.lang;
-import sun.misc.VM;
+import jdk.internal.misc.VM;
 
 import  java.io.*;
 import  java.util.*;
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1836,7 +1836,7 @@
                 return false;
             }
             ClassLoader loader = defc.getClassLoader();
-            if (!sun.misc.VM.isSystemDomainLoader(loader)) {
+            if (!jdk.internal.misc.VM.isSystemDomainLoader(loader)) {
                 ClassLoader sysl = ClassLoader.getSystemClassLoader();
                 boolean found = false;
                 while (sysl != null) {
@@ -3120,6 +3120,8 @@
                                 MethodHandle handler) {
         MethodType ttype = target.type();
         MethodType htype = handler.type();
+        if (!Throwable.class.isAssignableFrom(exType))
+            throw new ClassCastException(exType.getName());
         if (htype.parameterCount() < 1 ||
             !htype.parameterType(0).isAssignableFrom(exType))
             throw newIllegalArgumentException("handler does not accept exception type "+exType);
--- a/jdk/src/java.base/share/classes/java/lang/ref/Cleaner.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/ref/Cleaner.java	Fri Jan 15 09:15:33 2016 +0100
@@ -28,7 +28,7 @@
 import java.util.Objects;
 import java.util.concurrent.ThreadFactory;
 
-import jdk.internal.misc.CleanerImpl;
+import jdk.internal.ref.CleanerImpl;
 
 /**
  * {@code Cleaner} manages a set of object references and corresponding cleaning actions.
--- a/jdk/src/java.base/share/classes/java/lang/ref/Finalizer.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/ref/Finalizer.java	Fri Jan 15 09:15:33 2016 +0100
@@ -29,7 +29,7 @@
 import java.security.AccessController;
 import jdk.internal.misc.JavaLangAccess;
 import jdk.internal.misc.SharedSecrets;
-import sun.misc.VM;
+import jdk.internal.misc.VM;
 
 final class Finalizer extends FinalReference<Object> { /* Package-private; must be in
                                                           same package as the Reference
--- a/jdk/src/java.base/share/classes/java/lang/ref/ReferenceQueue.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/ref/ReferenceQueue.java	Fri Jan 15 09:15:33 2016 +0100
@@ -26,6 +26,7 @@
 package java.lang.ref;
 
 import java.util.function.Consumer;
+import jdk.internal.misc.VM;
 
 /**
  * Reference queues, to which registered reference objects are appended by the
@@ -73,7 +74,7 @@
             // Volatiles ensure ordering.
             r.queue = ENQUEUED;
             if (r instanceof FinalReference) {
-                sun.misc.VM.addFinalRefCount(1);
+                VM.addFinalRefCount(1);
             }
             lock.notifyAll();
             return true;
@@ -93,7 +94,7 @@
             r.next = r;
             queueLength--;
             if (r instanceof FinalReference) {
-                sun.misc.VM.addFinalRefCount(-1);
+                VM.addFinalRefCount(-1);
             }
             return r;
         }
--- a/jdk/src/java.base/share/classes/java/lang/reflect/Proxy.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/reflect/Proxy.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,7 @@
 import java.util.Objects;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.function.BiFunction;
-import sun.misc.VM;
+import jdk.internal.misc.VM;
 import sun.reflect.CallerSensitive;
 import sun.reflect.Reflection;
 import sun.reflect.misc.ReflectUtil;
--- a/jdk/src/java.base/share/classes/java/net/URI.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/net/URI.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1146,13 +1146,30 @@
         if (part != null) {
             return part;
         }
-        StringBuilder sb = new StringBuilder();
-        appendSchemeSpecificPart(sb, null, getAuthority(), getUserInfo(),
+
+        String s = string;
+        if (s != null) {
+            // if string is defined, components will have been parsed
+            int start = 0;
+            int end = s.length();
+            if (scheme != null) {
+                start = scheme.length() + 1;
+            }
+            if (fragment != null) {
+                end -= fragment.length() + 1;
+            }
+            if (path != null && path.length() == end - start) {
+                part = path;
+            } else {
+                part = s.substring(start, end);
+            }
+        } else {
+            StringBuilder sb = new StringBuilder();
+            appendSchemeSpecificPart(sb, null, getAuthority(), getUserInfo(),
                                  host, port, getPath(), getQuery());
-        if (sb.length() == 0) {
-            return null;
+            part = sb.toString();
         }
-        return schemeSpecificPart = sb.toString();
+        return schemeSpecificPart = part;
     }
 
     /**
@@ -2059,7 +2076,7 @@
 
         // 5.2 (2): Reference to current document (lone fragment)
         if ((child.scheme == null) && (child.authority == null)
-            && child.path.equals("") && (child.fragment != null)
+            && child.path.isEmpty() && (child.fragment != null)
             && (child.query == null)) {
             if ((base.fragment != null)
                 && child.fragment.equals(base.fragment)) {
@@ -2647,13 +2664,6 @@
     private static final long L_SCHEME = L_ALPHA | L_DIGIT | lowMask("+-.");
     private static final long H_SCHEME = H_ALPHA | H_DIGIT | highMask("+-.");
 
-    // uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" |
-    //                 "&" | "=" | "+" | "$" | ","
-    private static final long L_URIC_NO_SLASH
-        = L_UNRESERVED | L_ESCAPED | lowMask(";?:@&=+$,");
-    private static final long H_URIC_NO_SLASH
-        = H_UNRESERVED | H_ESCAPED | highMask(";?:@&=+$,");
-
     // scope_id = alpha | digit | "_" | "."
     private static final long L_SCOPE_ID
         = L_ALPHANUM | lowMask("_.");
@@ -2884,23 +2894,10 @@
 
         // -- Simple access to the input string --
 
-        // Return a substring of the input string
-        //
-        private String substring(int start, int end) {
-            return input.substring(start, end);
-        }
-
-        // Return the char at position p,
-        // assuming that p < input.length()
-        //
-        private char charAt(int p) {
-            return input.charAt(p);
-        }
-
         // Tells whether start < end and, if so, whether charAt(start) == c
         //
         private boolean at(int start, int end, char c) {
-            return (start < end) && (charAt(start) == c);
+            return (start < end) && (input.charAt(start) == c);
         }
 
         // Tells whether start + s.length() < end and, if so,
@@ -2913,7 +2910,7 @@
                 return false;
             int i = 0;
             while (i < sn) {
-                if (charAt(p++) != s.charAt(i)) {
+                if (input.charAt(p++) != s.charAt(i)) {
                     break;
                 }
                 i++;
@@ -2953,7 +2950,7 @@
         // start position.
         //
         private int scan(int start, int end, char c) {
-            if ((start < end) && (charAt(start) == c))
+            if ((start < end) && (input.charAt(start) == c))
                 return start + 1;
             return start;
         }
@@ -2968,7 +2965,7 @@
         private int scan(int start, int end, String err, String stop) {
             int p = start;
             while (p < end) {
-                char c = charAt(p);
+                char c = input.charAt(p);
                 if (err.indexOf(c) >= 0)
                     return -1;
                 if (stop.indexOf(c) >= 0)
@@ -2978,6 +2975,23 @@
             return p;
         }
 
+        // Scan forward from the given start position.  Stop at the first char
+        // in the stop string (in which case the index of the preceding char is
+        // returned), or the end of the input string (in which case the length
+        // of the input string is returned).  May return the start position if
+        // nothing matches.
+        //
+        private int scan(int start, int end, String stop) {
+            int p = start;
+            while (p < end) {
+                char c = input.charAt(p);
+                if (stop.indexOf(c) >= 0)
+                    break;
+                p++;
+            }
+            return p;
+        }
+
         // Scan a potential escape sequence, starting at the given position,
         // with the given first char (i.e., charAt(start) == c).
         //
@@ -2992,8 +3006,8 @@
             if (c == '%') {
                 // Process escape pair
                 if ((p + 3 <= n)
-                    && match(charAt(p + 1), L_HEX, H_HEX)
-                    && match(charAt(p + 2), L_HEX, H_HEX)) {
+                    && match(input.charAt(p + 1), L_HEX, H_HEX)
+                    && match(input.charAt(p + 2), L_HEX, H_HEX)) {
                     return p + 3;
                 }
                 fail("Malformed escape pair", p);
@@ -3013,7 +3027,7 @@
         {
             int p = start;
             while (p < n) {
-                char c = charAt(p);
+                char c = input.charAt(p);
                 if (match(c, lowMask, highMask)) {
                     p++;
                     continue;
@@ -3059,7 +3073,6 @@
         //
         void parse(boolean rsa) throws URISyntaxException {
             requireServerAuthority = rsa;
-            int ssp;                    // Start of scheme-specific part
             int n = input.length();
             int p = scan(0, n, "/?#", ":");
             if ((p >= 0) && at(p, n, ':')) {
@@ -3067,26 +3080,25 @@
                     failExpecting("scheme name", 0);
                 checkChar(0, L_ALPHA, H_ALPHA, "scheme name");
                 checkChars(1, p, L_SCHEME, H_SCHEME, "scheme name");
-                scheme = substring(0, p);
+                scheme = input.substring(0, p);
                 p++;                    // Skip ':'
-                ssp = p;
                 if (at(p, n, '/')) {
                     p = parseHierarchical(p, n);
                 } else {
-                    int q = scan(p, n, "", "#");
+                    // opaque; need to create the schemeSpecificPart
+                    int q = scan(p, n, "#");
                     if (q <= p)
                         failExpecting("scheme-specific part", p);
                     checkChars(p, q, L_URIC, H_URIC, "opaque part");
+                    schemeSpecificPart = input.substring(p, q);
                     p = q;
                 }
             } else {
-                ssp = 0;
                 p = parseHierarchical(0, n);
             }
-            schemeSpecificPart = substring(ssp, p);
             if (at(p, n, '#')) {
                 checkChars(p + 1, n, L_URIC, H_URIC, "fragment");
-                fragment = substring(p + 1, n);
+                fragment = input.substring(p + 1, n);
                 p = n;
             }
             if (p < n)
@@ -3113,7 +3125,7 @@
             int p = start;
             if (at(p, n, '/') && at(p + 1, n, '/')) {
                 p += 2;
-                int q = scan(p, n, "", "/?#");
+                int q = scan(p, n, "/?#");
                 if (q > p) {
                     p = parseAuthority(p, q);
                 } else if (q < n) {
@@ -3122,15 +3134,15 @@
                 } else
                     failExpecting("authority", p);
             }
-            int q = scan(p, n, "", "?#"); // DEVIATION: May be empty
+            int q = scan(p, n, "?#"); // DEVIATION: May be empty
             checkChars(p, q, L_PATH, H_PATH, "path");
-            path = substring(p, q);
+            path = input.substring(p, q);
             p = q;
             if (at(p, n, '?')) {
                 p++;
-                q = scan(p, n, "", "#");
+                q = scan(p, n, "#");
                 checkChars(p, q, L_URIC, H_URIC, "query");
-                query = substring(p, q);
+                query = input.substring(p, q);
                 p = q;
             }
             return p;
@@ -3154,7 +3166,7 @@
             boolean serverChars;
             boolean regChars;
 
-            if (scan(p, n, "", "]") > p) {
+            if (scan(p, n, "]") > p) {
                 // contains a literal IPv6 address, therefore % is allowed
                 serverChars = (scan(p, n, L_SERVER_PERCENT, H_SERVER_PERCENT) == n);
             } else {
@@ -3164,7 +3176,7 @@
 
             if (regChars && !serverChars) {
                 // Must be a registry-based authority
-                authority = substring(p, n);
+                authority = input.substring(p, n);
                 return n;
             }
 
@@ -3176,7 +3188,7 @@
                     q = parseServer(p, n);
                     if (q < n)
                         failExpecting("end of authority", q);
-                    authority = substring(p, n);
+                    authority = input.substring(p, n);
                 } catch (URISyntaxException x) {
                     // Undo results of failed parse
                     userInfo = null;
@@ -3198,7 +3210,7 @@
             if (q < n) {
                 if (regChars) {
                     // Registry-based authority
-                    authority = substring(p, n);
+                    authority = input.substring(p, n);
                 } else if (ex != null) {
                     // Re-throw exception; it was probably due to
                     // a malformed IPv6 address
@@ -3224,7 +3236,7 @@
             q = scan(p, n, "/?#", "@");
             if ((q >= p) && at(q, n, '@')) {
                 checkChars(p, q, L_USERINFO, H_USERINFO, "user info");
-                userInfo = substring(p, q);
+                userInfo = input.substring(p, q);
                 p = q + 1;              // Skip '@'
             }
 
@@ -3235,7 +3247,7 @@
                 q = scan(p, n, "/?#", "]");
                 if ((q > p) && at(q, n, ']')) {
                     // look for a "%" scope id
-                    int r = scan (p, q, "", "%");
+                    int r = scan (p, q, "%");
                     if (r > p) {
                         parseIPv6Reference(p, r);
                         if (r+1 == q) {
@@ -3246,7 +3258,7 @@
                     } else {
                         parseIPv6Reference(p, q);
                     }
-                    host = substring(p-1, q+1);
+                    host = input.substring(p-1, q+1);
                     p = q + 1;
                 } else {
                     failExpecting("closing bracket for IPv6 address", q);
@@ -3261,7 +3273,7 @@
             // port
             if (at(p, n, ':')) {
                 p++;
-                q = scan(p, n, "", "/");
+                q = scan(p, n, "/");
                 if (q > p) {
                     checkChars(p, q, L_DIGIT, H_DIGIT, "port number");
                     try {
@@ -3361,13 +3373,13 @@
                 // IPv4 address is followed by something - check that
                 // it's a ":" as this is the only valid character to
                 // follow an address.
-                if (charAt(p) != ':') {
+                if (input.charAt(p) != ':') {
                     p = -1;
                 }
             }
 
             if (p > start)
-                host = substring(start, p);
+                host = input.substring(start, p);
 
             return p;
         }
@@ -3393,7 +3405,7 @@
                     p = q;
                     q = scan(p, n, L_ALPHANUM | L_DASH, H_ALPHANUM | H_DASH);
                     if (q > p) {
-                        if (charAt(q - 1) == '-')
+                        if (input.charAt(q - 1) == '-')
                             fail("Illegal character in hostname", q - 1);
                         p = q;
                     }
@@ -3412,11 +3424,11 @@
 
             // for a fully qualified hostname check that the rightmost
             // label starts with an alpha character.
-            if (l > start && !match(charAt(l), L_ALPHA, H_ALPHA)) {
+            if (l > start && !match(input.charAt(l), L_ALPHA, H_ALPHA)) {
                 fail("Illegal character in hostname", l);
             }
 
-            host = substring(start, p);
+            host = input.substring(start, p);
             return p;
         }
 
--- a/jdk/src/java.base/share/classes/java/net/URL.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/net/URL.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1242,7 +1242,7 @@
     private static ThreadLocal<Object> gate = new ThreadLocal<>();
 
     private static URLStreamHandler lookupViaProviders(final String protocol) {
-        if (!sun.misc.VM.isBooted())
+        if (!jdk.internal.misc.VM.isBooted())
             return null;
 
         if (gate.get() != null)
--- a/jdk/src/java.base/share/classes/java/net/URLClassLoader.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/net/URLClassLoader.java	Fri Jan 15 09:15:33 2016 +0100
@@ -52,6 +52,7 @@
 
 import jdk.internal.misc.JavaNetAccess;
 import jdk.internal.misc.SharedSecrets;
+import jdk.internal.perf.PerfCounter;
 import sun.misc.Resource;
 import sun.misc.URLClassPath;
 import sun.net.www.ParseUtil;
@@ -459,14 +460,14 @@
             // Use (direct) ByteBuffer:
             CodeSigner[] signers = res.getCodeSigners();
             CodeSource cs = new CodeSource(url, signers);
-            sun.misc.PerfCounter.getReadClassBytesTime().addElapsedTimeFrom(t0);
+            PerfCounter.getReadClassBytesTime().addElapsedTimeFrom(t0);
             return defineClass(name, bb, cs);
         } else {
             byte[] b = res.getBytes();
             // must read certificates AFTER reading bytes.
             CodeSigner[] signers = res.getCodeSigners();
             CodeSource cs = new CodeSource(url, signers);
-            sun.misc.PerfCounter.getReadClassBytesTime().addElapsedTimeFrom(t0);
+            PerfCounter.getReadClassBytesTime().addElapsedTimeFrom(t0);
             return defineClass(name, b, 0, b.length, cs);
         }
     }
--- a/jdk/src/java.base/share/classes/java/net/URLConnection.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/net/URLConnection.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1567,6 +1567,11 @@
             }
         }
 
+        if ((c1 == 0x49 && c2 == 0x49 && c3 == 0x2a && c4 == 0x00)
+            || (c1 == 0x4d && c2 == 0x4d && c3 == 0x00 && c4 == 0x2a)) {
+            return "image/tiff";
+        }
+
         if (c1 == 0xD0 && c2 == 0xCF && c3 == 0x11 && c4 == 0xE0 &&
             c5 == 0xA1 && c6 == 0xB1 && c7 == 0x1A && c8 == 0xE1) {
 
--- a/jdk/src/java.base/share/classes/java/nio/Bits.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/nio/Bits.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,7 +31,7 @@
 import jdk.internal.misc.JavaLangRefAccess;
 import jdk.internal.misc.SharedSecrets;
 import jdk.internal.misc.Unsafe;
-import sun.misc.VM;
+import jdk.internal.misc.VM;
 
 /**
  * Access to bits, native and otherwise.
--- a/jdk/src/java.base/share/classes/java/nio/Direct-X-Buffer.java.template	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/nio/Direct-X-Buffer.java.template	Fri Jan 15 09:15:33 2016 +0100
@@ -30,7 +30,7 @@
 import java.io.FileDescriptor;
 import sun.misc.Cleaner;
 import jdk.internal.misc.Unsafe;
-import sun.misc.VM;
+import jdk.internal.misc.VM;
 import sun.nio.ch.DirectBuffer;
 
 
--- a/jdk/src/java.base/share/classes/java/nio/charset/Charset.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/nio/charset/Charset.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,6 +43,7 @@
 import java.util.ServiceConfigurationError;
 import java.util.SortedMap;
 import java.util.TreeMap;
+import jdk.internal.misc.VM;
 import sun.misc.ASCIICaseInsensitiveComparator;
 import sun.nio.cs.StandardCharsets;
 import sun.nio.cs.ThreadLocalCoders;
@@ -281,7 +282,7 @@
     static boolean atBugLevel(String bl) {              // package-private
         String level = bugLevel;
         if (level == null) {
-            if (!sun.misc.VM.isBooted())
+            if (!VM.isBooted())
                 return false;
             bugLevel = level = AccessController.doPrivileged(
                 new GetPropertyAction("sun.nio.cs.bugLevel", ""));
@@ -394,7 +395,7 @@
         // that loader to be prematurely initialized with incomplete
         // information.
         //
-        if (!sun.misc.VM.isBooted())
+        if (!VM.isBooted())
             return null;
 
         if (gate.get() != null)
@@ -445,7 +446,7 @@
     }
 
     private static Charset lookupExtendedCharset(String charsetName) {
-        if (!sun.misc.VM.isBooted())  // see lookupViaProviders()
+        if (!VM.isBooted())  // see lookupViaProviders()
             return null;
         CharsetProvider[] ecps = ExtendedProviderHolder.extendedProviders;
         for (CharsetProvider cp : ecps) {
--- a/jdk/src/java.base/share/classes/java/security/ProtectionDomain.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/security/ProtectionDomain.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,12 +27,12 @@
 
 import java.lang.ref.Reference;
 import java.lang.ref.ReferenceQueue;
+import java.lang.ref.SoftReference;
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.Map;
-import java.util.WeakHashMap;
 import java.util.concurrent.ConcurrentHashMap;
 import jdk.internal.misc.JavaSecurityAccess;
 import jdk.internal.misc.JavaSecurityProtectionDomainAccess;
@@ -472,11 +472,15 @@
      *
      * This class stores ProtectionDomains as weak keys in a ConcurrentHashMap
      * with additional support for checking and removing weak keys that are no
-     * longer in use.
+     * longer in use. There can be cases where the permission collection may
+     * have a chain of strong references back to the ProtectionDomain, which
+     * ordinarily would prevent the entry from being removed from the map. To
+     * address that, we wrap the permission collection in a SoftReference so
+     * that it can be reclaimed by the garbage collector due to memory demand.
      */
     private static class PDCache implements ProtectionDomainCache {
         private final ConcurrentHashMap<WeakProtectionDomainKey,
-                                        PermissionCollection>
+                                        SoftReference<PermissionCollection>>
                                         pdMap = new ConcurrentHashMap<>();
         private final ReferenceQueue<Key> queue = new ReferenceQueue<>();
 
@@ -485,15 +489,15 @@
             processQueue(queue, pdMap);
             WeakProtectionDomainKey weakPd =
                 new WeakProtectionDomainKey(pd, queue);
-            pdMap.putIfAbsent(weakPd, pc);
+            pdMap.put(weakPd, new SoftReference<>(pc));
         }
 
         @Override
         public PermissionCollection get(ProtectionDomain pd) {
             processQueue(queue, pdMap);
-            WeakProtectionDomainKey weakPd =
-                new WeakProtectionDomainKey(pd, queue);
-            return pdMap.get(weakPd);
+            WeakProtectionDomainKey weakPd = new WeakProtectionDomainKey(pd);
+            SoftReference<PermissionCollection> sr = pdMap.get(weakPd);
+            return (sr == null) ? null : sr.get();
         }
 
         /**
@@ -533,11 +537,20 @@
             this((pd == null ? NULL_KEY : pd.key), rq);
         }
 
+        WeakProtectionDomainKey(ProtectionDomain pd) {
+            this(pd == null ? NULL_KEY : pd.key);
+        }
+
         private WeakProtectionDomainKey(Key key, ReferenceQueue<Key> rq) {
             super(key, rq);
             hash = key.hashCode();
         }
 
+        private WeakProtectionDomainKey(Key key) {
+            super(key);
+            hash = key.hashCode();
+        }
+
         /**
          * Returns the identity hash code of the original referent.
          */
--- a/jdk/src/java.base/share/classes/java/time/Clock.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/time/Clock.java	Fri Jan 15 09:15:33 2016 +0100
@@ -69,7 +69,7 @@
 import java.io.Serializable;
 import java.util.Objects;
 import java.util.TimeZone;
-import sun.misc.VM;
+import jdk.internal.misc.VM;
 
 /**
  * A clock providing access to the current instant, date and time using a time-zone.
--- a/jdk/src/java.base/share/classes/java/time/LocalDate.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/time/LocalDate.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1369,6 +1369,23 @@
         if (daysToAdd == 0) {
             return this;
         }
+        long dom = day + daysToAdd;
+        if (dom > 0) {
+            if (dom <= 28) {
+                return new LocalDate(year, month, (int) dom);
+            } else if (dom <= 59) { // 59th Jan is 28th Feb, 59th Feb is 31st Mar
+                long monthLen = lengthOfMonth();
+                if (dom <= monthLen) {
+                    return new LocalDate(year, month, (int) dom);
+                } else if (month < 12) {
+                    return new LocalDate(year, month + 1, (int) (dom - monthLen));
+                } else {
+                    YEAR.checkValidValue(year + 1);
+                    return new LocalDate(year + 1, 1, (int) (dom - monthLen));
+                }
+            }
+        }
+
         long mjDay = Math.addExact(toEpochDay(), daysToAdd);
         return LocalDate.ofEpochDay(mjDay);
     }
--- a/jdk/src/java.base/share/classes/java/util/zip/ZipFile.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/java/util/zip/ZipFile.java	Fri Jan 15 09:15:33 2016 +0100
@@ -54,6 +54,7 @@
 import java.util.stream.StreamSupport;
 import jdk.internal.misc.JavaUtilZipFileAccess;
 import jdk.internal.misc.SharedSecrets;
+import jdk.internal.perf.PerfCounter;
 
 import static java.util.zip.ZipConstants.*;
 import static java.util.zip.ZipConstants64.*;
@@ -210,8 +211,8 @@
         this.name = name;
         long t0 = System.nanoTime();
         this.zsrc = Source.get(file, (mode & OPEN_DELETE) != 0);
-        sun.misc.PerfCounter.getZipFileOpenTime().addElapsedTimeFrom(t0);
-        sun.misc.PerfCounter.getZipFileCount().increment();
+        PerfCounter.getZipFileOpenTime().addElapsedTimeFrom(t0);
+        PerfCounter.getZipFileCount().increment();
     }
 
     /**
--- a/jdk/src/java.base/share/classes/jdk/Exported.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  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;
-
-import java.lang.annotation.*;
-
-/**
-  * Indicates whether or not a JDK specific type or package is an
-  * exported part of the JDK suitable for use outside of the JDK
-  * implementation itself.
-  *
-  * This annotation should only be applied to types and packages
-  * <em>outside</em> of the Java SE namespaces of {@code java.*} and
-  * {@code javax.*} packages.  For example, certain portions of {@code
-  * com.sun.*} are official parts of the JDK meant to be generally
-  * usable while other portions of {@code com.sun.*} are not.  This
-  * annotation type allows those portions to be easily and
-  * programmatically distinguished.
-  *
-  * <p>If in one release a type or package is
-  * <code>@Exported(true)</code>, in a subsequent major release such a
-  * type or package can transition to <code>@Exported(false)</code>.
-  *
-  * <p>If a type or package is <code>@Exported(false)</code> in a
-  * release, it may be removed in a subsequent major release.
-  *
-  * <p>If a top-level type has an <code>@Exported</code> annotation,
-  * any nested member types with the top-level type should have an
-  * <code>@Exported</code> annotation with the same value.
-  *
-  * (In exceptional cases, if a nested type is going to be removed
-  * before its enclosing type, the nested type's could be
-  * <code>@Exported(false)</code> while its enclosing type was
-  * <code>@Exported(true)</code>.)
-  *
-  * Likewise, if a package has an <code>@Exported</code> annotation,
-  * top-level types within that package should also have an
-  * <code>@Exported</code> annotation.
-  *
-  * Sometimes a top-level type may have a different
-  * <code>@Exported</code> value than its package.
-  *
-  * @since 1.8
-  */
-@Documented
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.TYPE, ElementType.PACKAGE})
-@Exported
-public @interface Exported {
-    /**
-     * Whether or not the annotated type or package is an exported
-     * part of the JDK.
-     * @return whether or not the annotated type or package is an exported
-     * part of the JDK
-     */
-    boolean value() default true;
-}
--- a/jdk/src/java.base/share/classes/jdk/internal/logger/BootstrapLogger.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/jdk/internal/logger/BootstrapLogger.java	Fri Jan 15 09:15:33 2016 +0100
@@ -48,7 +48,7 @@
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import sun.misc.InnocuousThread;
-import sun.misc.VM;
+import jdk.internal.misc.VM;
 import sun.util.logging.PlatformLogger;
 import jdk.internal.logger.LazyLoggers.LazyLoggerAccessor;
 
--- a/jdk/src/java.base/share/classes/jdk/internal/logger/LazyLoggers.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/jdk/internal/logger/LazyLoggers.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,7 @@
 import java.lang.System.Logger;
 import java.lang.ref.WeakReference;
 import java.util.Objects;
-import sun.misc.VM;
+import jdk.internal.misc.VM;
 import sun.util.logging.PlatformLogger;
 
 /**
--- a/jdk/src/java.base/share/classes/jdk/internal/misc/CleanerImpl.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,788 +0,0 @@
-/*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
- * 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.misc;
-
-import java.lang.ref.Cleaner;
-import java.lang.ref.Cleaner.Cleanable;
-import java.lang.ref.PhantomReference;
-import java.lang.ref.Reference;
-import java.lang.ref.ReferenceQueue;
-import java.lang.ref.SoftReference;
-import java.lang.ref.WeakReference;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Objects;
-import java.util.concurrent.ThreadFactory;
-import java.util.function.Function;
-
-import sun.misc.InnocuousThread;
-
-/**
- * CleanerImpl manages a set of object references and corresponding cleaning actions.
- * CleanerImpl provides the functionality of {@link java.lang.ref.Cleaner}.
- */
-public final class CleanerImpl implements Runnable {
-
-    /**
-     * An object to access the CleanerImpl from a Cleaner; set by Cleaner init.
-     */
-    private static Function<Cleaner, CleanerImpl> cleanerImplAccess = null;
-
-    /**
-     * Heads of a CleanableList for each reference type.
-     */
-    final PhantomCleanable<?> phantomCleanableList;
-
-    final WeakCleanable<?> weakCleanableList;
-
-    final SoftCleanable<?> softCleanableList;
-
-    // The ReferenceQueue of pending cleaning actions
-    final ReferenceQueue<Object> queue;
-
-    /**
-     * Called by Cleaner static initialization to provide the function
-     * to map from Cleaner to CleanerImpl.
-     * @param access a function to map from Cleaner to CleanerImpl
-     */
-    public static void setCleanerImplAccess(Function<Cleaner, CleanerImpl> access) {
-        if (cleanerImplAccess == null) {
-            cleanerImplAccess = access;
-        }
-    }
-
-    /**
-     * Called to get the CleanerImpl for a Cleaner.
-     * @param cleaner the cleaner
-     * @return the corresponding CleanerImpl
-     */
-    private static CleanerImpl getCleanerImpl(Cleaner cleaner) {
-        return cleanerImplAccess.apply(cleaner);
-    }
-
-    /**
-     * Constructor for CleanerImpl.
-     */
-    public CleanerImpl() {
-        queue = new ReferenceQueue<>();
-        phantomCleanableList = new PhantomCleanableRef(this);
-        weakCleanableList = new WeakCleanableRef(this);
-        softCleanableList = new SoftCleanableRef(this);
-    }
-
-    /**
-     * Starts the Cleaner implementation.
-     * When started waits for Cleanables to be queued.
-     * @param service the cleaner
-     * @param threadFactory the thread factory
-     */
-    public void start(Cleaner service, ThreadFactory threadFactory) {
-        // schedule a nop cleaning action for the service, so the associated thread
-        // will continue to run at least until the service is reclaimable.
-        new PhantomCleanableRef(service, service, () -> {});
-
-        if (threadFactory == null) {
-            threadFactory = CleanerImpl.InnocuousThreadFactory.factory();
-        }
-
-        // now that there's at least one cleaning action, for the service,
-        // we can start the associated thread, which runs until
-        // all cleaning actions have been run.
-        Thread thread = threadFactory.newThread(this);
-        thread.setDaemon(true);
-        thread.start();
-    }
-
-    /**
-     * Process queued Cleanables as long as the cleanable lists are not empty.
-     * A Cleanable is in one of the lists for each Object and for the Cleaner
-     * itself.
-     * Terminates when the Cleaner is no longer reachable and
-     * has been cleaned and there are no more Cleanable instances
-     * for which the object is reachable.
-     * <p>
-     * If the thread is a ManagedLocalsThread, the threadlocals
-     * are erased before each cleanup
-     */
-    public void run() {
-        Thread t = Thread.currentThread();
-        InnocuousThread mlThread = (t instanceof InnocuousThread)
-                ? (InnocuousThread) t
-                : null;
-        while (!phantomCleanableList.isListEmpty() ||
-                !weakCleanableList.isListEmpty() ||
-                !softCleanableList.isListEmpty()) {
-            if (mlThread != null) {
-                // Clear the thread locals
-                mlThread.eraseThreadLocals();
-            }
-            try {
-                // Wait for a Ref, with a timeout to avoid getting hung
-                // due to a race with clear/clean
-                Cleanable ref = (Cleanable) queue.remove(60 * 1000L);
-                if (ref != null) {
-                    ref.clean();
-                }
-            } catch (InterruptedException i) {
-                continue;   // ignore the interruption
-            } catch (Throwable e) {
-                // ignore exceptions from the cleanup action
-            }
-        }
-    }
-
-    /**
-     * PhantomCleanable subclasses efficiently encapsulate cleanup state and
-     * the cleaning action.
-     * Subclasses implement the abstract {@link #performCleanup()}  method
-     * to provide the cleaning action.
-     * When constructed, the object reference and the {@link Cleanable Cleanable}
-     * are registered with the {@link Cleaner}.
-     * The Cleaner invokes {@link Cleaner.Cleanable#clean() clean} after the
-     * referent becomes phantom reachable.
-     */
-    public static abstract class PhantomCleanable<T> extends PhantomReference<T>
-            implements Cleaner.Cleanable {
-
-        /**
-         * Links to previous and next in a doubly-linked list.
-         */
-        PhantomCleanable<?> prev = this, next = this;
-
-        /**
-         * The CleanerImpl for this Cleanable.
-         */
-        private final CleanerImpl cleanerImpl;
-
-        /**
-         * Constructs new {@code PhantomCleanable} with
-         * {@code non-null referent} and {@code non-null cleaner}.
-         * The {@code cleaner} is not retained; it is only used to
-         * register the newly constructed {@link Cleaner.Cleanable Cleanable}.
-         *
-         * @param referent the referent to track
-         * @param cleaner  the {@code Cleaner} to register with
-         */
-        public PhantomCleanable(T referent, Cleaner cleaner) {
-            super(Objects.requireNonNull(referent), getCleanerImpl(cleaner).queue);
-            this.cleanerImpl = getCleanerImpl(cleaner);
-            insert();
-
-            // TODO: Replace getClass() with ReachabilityFence when it is available
-            cleaner.getClass();
-            referent.getClass();
-        }
-
-        /**
-         * Construct a new root of the list; not inserted.
-         */
-        PhantomCleanable(CleanerImpl cleanerImpl) {
-            super(null, null);
-            this.cleanerImpl = cleanerImpl;
-        }
-
-        /**
-         * Insert this PhantomCleanable after the list head.
-         */
-        private void insert() {
-            final PhantomCleanable<?> list = cleanerImpl.phantomCleanableList;
-            synchronized (list) {
-                prev = list;
-                next = list.next;
-                next.prev = this;
-                list.next = this;
-            }
-        }
-
-        /**
-         * Remove this PhantomCleanable from the list.
-         *
-         * @return true if Cleanable was removed or false if not because
-         * it had already been removed before
-         */
-        private boolean remove() {
-            PhantomCleanable<?> list = cleanerImpl.phantomCleanableList;
-            synchronized (list) {
-                if (next != this) {
-                    next.prev = prev;
-                    prev.next = next;
-                    prev = this;
-                    next = this;
-                    return true;
-                }
-                return false;
-            }
-        }
-
-        /**
-         * Returns true if the list's next reference refers to itself.
-         *
-         * @return true if the list is empty
-         */
-        boolean isListEmpty() {
-            PhantomCleanable<?> list = cleanerImpl.phantomCleanableList;
-            synchronized (list) {
-                return list == list.next;
-            }
-        }
-
-        /**
-         * Unregister this PhantomCleanable and invoke {@link #performCleanup()},
-         * ensuring at-most-once semantics.
-         */
-        @Override
-        public final void clean() {
-            if (remove()) {
-                super.clear();
-                performCleanup();
-            }
-        }
-
-        /**
-         * Unregister this PhantomCleanable and clear the reference.
-         * Due to inherent concurrency, {@link #performCleanup()} may still be invoked.
-         */
-        @Override
-        public void clear() {
-            if (remove()) {
-                super.clear();
-            }
-        }
-
-        /**
-         * The {@code performCleanup} abstract method is overridden
-         * to implement the cleaning logic.
-         * The {@code performCleanup} method should not be called except
-         * by the {@link #clean} method which ensures at most once semantics.
-         */
-        protected abstract void performCleanup();
-
-        /**
-         * This method always throws {@link UnsupportedOperationException}.
-         * Enqueuing details of {@link Cleaner.Cleanable}
-         * are a private implementation detail.
-         *
-         * @throws UnsupportedOperationException always
-         */
-        @Override
-        public final boolean isEnqueued() {
-            throw new UnsupportedOperationException("isEnqueued");
-        }
-
-        /**
-         * This method always throws {@link UnsupportedOperationException}.
-         * Enqueuing details of {@link Cleaner.Cleanable}
-         * are a private implementation detail.
-         *
-         * @throws UnsupportedOperationException always
-         */
-        @Override
-        public final boolean enqueue() {
-            throw new UnsupportedOperationException("enqueue");
-        }
-    }
-
-    /**
-     * WeakCleanable subclasses efficiently encapsulate cleanup state and
-     * the cleaning action.
-     * Subclasses implement the abstract {@link #performCleanup()}  method
-     * to provide the cleaning action.
-     * When constructed, the object reference and the {@link Cleanable Cleanable}
-     * are registered with the {@link Cleaner}.
-     * The Cleaner invokes {@link Cleaner.Cleanable#clean() clean} after the
-     * referent becomes weakly reachable.
-     */
-    public static abstract class WeakCleanable<T> extends WeakReference<T>
-            implements Cleaner.Cleanable {
-
-        /**
-         * Links to previous and next in a doubly-linked list.
-         */
-        WeakCleanable<?> prev = this, next = this;
-
-        /**
-         * The CleanerImpl for this Cleanable.
-         */
-        private final CleanerImpl cleanerImpl;
-
-        /**
-         * Constructs new {@code WeakCleanableReference} with
-         * {@code non-null referent} and {@code non-null cleaner}.
-         * The {@code cleaner} is not retained by this reference; it is only used
-         * to register the newly constructed {@link Cleaner.Cleanable Cleanable}.
-         *
-         * @param referent the referent to track
-         * @param cleaner  the {@code Cleaner} to register new reference with
-         */
-        public WeakCleanable(T referent, Cleaner cleaner) {
-            super(Objects.requireNonNull(referent), getCleanerImpl(cleaner).queue);
-            cleanerImpl = getCleanerImpl(cleaner);
-            insert();
-
-            // TODO: Replace getClass() with ReachabilityFence when it is available
-            cleaner.getClass();
-            referent.getClass();
-        }
-
-        /**
-         * Construct a new root of the list; not inserted.
-         */
-        WeakCleanable(CleanerImpl cleanerImpl) {
-            super(null, null);
-            this.cleanerImpl = cleanerImpl;
-        }
-
-        /**
-         * Insert this WeakCleanableReference after the list head.
-         */
-        private void insert() {
-            final WeakCleanable<?> list = cleanerImpl.weakCleanableList;
-            synchronized (list) {
-                prev = list;
-                next = list.next;
-                next.prev = this;
-                list.next = this;
-            }
-        }
-
-        /**
-         * Remove this WeakCleanableReference from the list.
-         *
-         * @return true if Cleanable was removed or false if not because
-         * it had already been removed before
-         */
-        private boolean remove() {
-            WeakCleanable<?> list = cleanerImpl.weakCleanableList;
-            synchronized (list) {
-                if (next != this) {
-                    next.prev = prev;
-                    prev.next = next;
-                    prev = this;
-                    next = this;
-                    return true;
-                }
-                return false;
-            }
-        }
-
-        /**
-         * Returns true if the list's next reference refers to itself.
-         *
-         * @return true if the list is empty
-         */
-        boolean isListEmpty() {
-            WeakCleanable<?> list = cleanerImpl.weakCleanableList;
-            synchronized (list) {
-                return list == list.next;
-            }
-        }
-
-        /**
-         * Unregister this WeakCleanable reference and invoke {@link #performCleanup()},
-         * ensuring at-most-once semantics.
-         */
-        @Override
-        public final void clean() {
-            if (remove()) {
-                super.clear();
-                performCleanup();
-            }
-        }
-
-        /**
-         * Unregister this WeakCleanable and clear the reference.
-         * Due to inherent concurrency, {@link #performCleanup()} may still be invoked.
-         */
-        @Override
-        public void clear() {
-            if (remove()) {
-                super.clear();
-            }
-        }
-
-        /**
-         * The {@code performCleanup} abstract method is overridden
-         * to implement the cleaning logic.
-         * The {@code performCleanup} method should not be called except
-         * by the {@link #clean} method which ensures at most once semantics.
-         */
-        protected abstract void performCleanup();
-
-        /**
-         * This method always throws {@link UnsupportedOperationException}.
-         * Enqueuing details of {@link java.lang.ref.Cleaner.Cleanable}
-         * are a private implementation detail.
-         *
-         * @throws UnsupportedOperationException always
-         */
-        @Override
-        public final boolean isEnqueued() {
-            throw new UnsupportedOperationException("isEnqueued");
-        }
-
-        /**
-         * This method always throws {@link UnsupportedOperationException}.
-         * Enqueuing details of {@link java.lang.ref.Cleaner.Cleanable}
-         * are a private implementation detail.
-         *
-         * @throws UnsupportedOperationException always
-         */
-        @Override
-        public final boolean enqueue() {
-            throw new UnsupportedOperationException("enqueue");
-        }
-    }
-
-    /**
-     * SoftCleanable subclasses efficiently encapsulate cleanup state and
-     * the cleaning action.
-     * Subclasses implement the abstract {@link #performCleanup()}  method
-     * to provide the cleaning action.
-     * When constructed, the object reference and the {@link Cleanable Cleanable}
-     * are registered with the {@link Cleaner}.
-     * The Cleaner invokes {@link Cleaner.Cleanable#clean() clean} after the
-     * referent becomes softly reachable.
-     */
-    public static abstract class SoftCleanable<T> extends SoftReference<T>
-            implements Cleaner.Cleanable {
-
-        /**
-         * Links to previous and next in a doubly-linked list.
-         */
-        SoftCleanable<?> prev = this, next = this;
-
-        /**
-         * The CleanerImpl for this Cleanable.
-         */
-        private final CleanerImpl cleanerImpl;
-
-        /**
-         * Constructs new {@code SoftCleanableReference} with
-         * {@code non-null referent} and {@code non-null cleaner}.
-         * The {@code cleaner} is not retained by this reference; it is only used
-         * to register the newly constructed {@link Cleaner.Cleanable Cleanable}.
-         *
-         * @param referent the referent to track
-         * @param cleaner  the {@code Cleaner} to register with
-         */
-        public SoftCleanable(T referent, Cleaner cleaner) {
-            super(Objects.requireNonNull(referent), getCleanerImpl(cleaner).queue);
-            cleanerImpl = getCleanerImpl(cleaner);
-            insert();
-
-            // TODO: Replace getClass() with ReachabilityFence when it is available
-            cleaner.getClass();
-            referent.getClass();
-        }
-
-        /**
-         * Construct a new root of the list; not inserted.
-         */
-        SoftCleanable(CleanerImpl cleanerImpl) {
-            super(null, null);
-            this.cleanerImpl = cleanerImpl;
-        }
-
-        /**
-         * Insert this SoftCleanableReference after the list head.
-         */
-        private void insert() {
-            final SoftCleanable<?> list = cleanerImpl.softCleanableList;
-            synchronized (list) {
-                prev = list;
-                next = list.next;
-                next.prev = this;
-                list.next = this;
-            }
-        }
-
-        /**
-         * Remove this SoftCleanableReference from the list.
-         *
-         * @return true if Cleanable was removed or false if not because
-         * it had already been removed before
-         */
-        private boolean remove() {
-            SoftCleanable<?> list = cleanerImpl.softCleanableList;
-            synchronized (list) {
-                if (next != this) {
-                    next.prev = prev;
-                    prev.next = next;
-                    prev = this;
-                    next = this;
-                    return true;
-                }
-                return false;
-            }
-        }
-
-        /**
-         * Returns true if the list's next reference refers to itself.
-         *
-         * @return true if the list is empty
-         */
-        boolean isListEmpty() {
-            SoftCleanable<?> list = cleanerImpl.softCleanableList;
-            synchronized (list) {
-                return list == list.next;
-            }
-        }
-
-        /**
-         * Unregister this SoftCleanable reference and invoke {@link #performCleanup()},
-         * ensuring at-most-once semantics.
-         */
-        @Override
-        public final void clean() {
-            if (remove()) {
-                super.clear();
-                performCleanup();
-            }
-        }
-
-        /**
-         * Unregister this SoftCleanable and clear the reference.
-         * Due to inherent concurrency, {@link #performCleanup()} may still be invoked.
-         */
-        @Override
-        public void clear() {
-            if (remove()) {
-                super.clear();
-            }
-        }
-
-        /**
-         * The {@code performCleanup} abstract method is overridden
-         * to implement the cleaning logic.
-         * The {@code performCleanup} method should not be called except
-         * by the {@link #clean} method which ensures at most once semantics.
-         */
-        protected abstract void performCleanup();
-
-        /**
-         * This method always throws {@link UnsupportedOperationException}.
-         * Enqueuing details of {@link Cleaner.Cleanable}
-         * are a private implementation detail.
-         *
-         * @throws UnsupportedOperationException always
-         */
-        @Override
-        public final boolean isEnqueued() {
-            throw new UnsupportedOperationException("isEnqueued");
-        }
-
-        /**
-         * This method always throws {@link UnsupportedOperationException}.
-         * Enqueuing details of {@link Cleaner.Cleanable}
-         * are a private implementation detail.
-         *
-         * @throws UnsupportedOperationException always
-         */
-        @Override
-        public final boolean enqueue() {
-            throw new UnsupportedOperationException("enqueue");
-        }
-    }
-
-    /**
-     * Perform cleaning on an unreachable PhantomReference.
-     */
-    public static final class PhantomCleanableRef extends PhantomCleanable<Object> {
-        private final Runnable action;
-
-        /**
-         * Constructor for a phantom cleanable reference.
-         * @param obj the object to monitor
-         * @param cleaner the cleaner
-         * @param action the action Runnable
-         */
-        public PhantomCleanableRef(Object obj, Cleaner cleaner, Runnable action) {
-            super(obj, cleaner);
-            this.action = action;
-        }
-
-        /**
-         * Constructor used only for root of phantom cleanable list.
-         * @param cleanerImpl  the cleanerImpl
-         */
-        PhantomCleanableRef(CleanerImpl cleanerImpl) {
-            super(cleanerImpl);
-            this.action = null;
-        }
-
-        @Override
-        protected void performCleanup() {
-            action.run();
-        }
-
-        /**
-         * Prevent access to referent even when it is still alive.
-         *
-         * @throws UnsupportedOperationException always
-         */
-        @Override
-        public Object get() {
-            throw new UnsupportedOperationException("get");
-        }
-
-        /**
-         * Direct clearing of the referent is not supported.
-         *
-         * @throws UnsupportedOperationException always
-         */
-        @Override
-        public void clear() {
-            throw new UnsupportedOperationException("clear");
-        }
-    }
-
-    /**
-     * Perform cleaning on an unreachable WeakReference.
-     */
-    public static final class WeakCleanableRef extends WeakCleanable<Object> {
-        private final Runnable action;
-
-        /**
-         * Constructor for a weak cleanable reference.
-         * @param obj the object to monitor
-         * @param cleaner the cleaner
-         * @param action the action Runnable
-         */
-        WeakCleanableRef(Object obj, Cleaner cleaner, Runnable action) {
-            super(obj, cleaner);
-            this.action = action;
-        }
-
-        /**
-         * Constructor used only for root of weak cleanable list.
-         * @param cleanerImpl  the cleanerImpl
-         */
-        WeakCleanableRef(CleanerImpl cleanerImpl) {
-            super(cleanerImpl);
-            this.action = null;
-        }
-
-        @Override
-        protected void performCleanup() {
-            action.run();
-        }
-
-        /**
-         * Prevent access to referent even when it is still alive.
-         *
-         * @throws UnsupportedOperationException always
-         */
-        @Override
-        public Object get() {
-            throw new UnsupportedOperationException("get");
-        }
-
-        /**
-         * Direct clearing of the referent is not supported.
-         *
-         * @throws UnsupportedOperationException always
-         */
-        @Override
-        public void clear() {
-            throw new UnsupportedOperationException("clear");
-        }
-    }
-
-    /**
-     * Perform cleaning on an unreachable SoftReference.
-     */
-    public static final class SoftCleanableRef extends SoftCleanable<Object> {
-        private final Runnable action;
-
-        /**
-         * Constructor for a soft cleanable reference.
-         * @param obj the object to monitor
-         * @param cleaner the cleaner
-         * @param action the action Runnable
-         */
-        SoftCleanableRef(Object obj, Cleaner cleaner, Runnable action) {
-            super(obj, cleaner);
-            this.action = action;
-        }
-
-        /**
-         * Constructor used only for root of soft cleanable list.
-         * @param cleanerImpl  the cleanerImpl
-         */
-        SoftCleanableRef(CleanerImpl cleanerImpl) {
-            super(cleanerImpl);
-            this.action = null;
-        }
-
-        @Override
-        protected void performCleanup() {
-            action.run();
-        }
-
-        /**
-         * Prevent access to referent even when it is still alive.
-         *
-         * @throws UnsupportedOperationException always
-         */
-        @Override
-        public Object get() {
-            throw new UnsupportedOperationException("get");
-        }
-
-        /**
-         * Direct clearing of the referent is not supported.
-         *
-         * @throws UnsupportedOperationException always
-         */
-        @Override
-        public void clear() {
-            throw new UnsupportedOperationException("clear");
-        }
-
-    }
-
-    /**
-     * A ThreadFactory for InnocuousThreads.
-     * The factory is a singleton.
-     */
-    static final class InnocuousThreadFactory implements ThreadFactory {
-        final static ThreadFactory factory = new InnocuousThreadFactory();
-
-        static ThreadFactory factory() {
-            return factory;
-        }
-
-        public Thread newThread(Runnable r) {
-            return AccessController.doPrivileged((PrivilegedAction<Thread>) () -> {
-                Thread t = new InnocuousThread(r);
-                t.setPriority(Thread.MAX_PRIORITY - 2);
-                t.setName("Cleaner-" + t.getId());
-                return t;
-            });
-        }
-    }
-
-}
--- a/jdk/src/java.base/share/classes/jdk/internal/misc/Unsafe.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/jdk/internal/misc/Unsafe.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,7 +30,7 @@
 
 import sun.reflect.CallerSensitive;
 import sun.reflect.Reflection;
-import sun.misc.VM;
+import jdk.internal.misc.VM;
 
 import jdk.internal.HotSpotIntrinsicCandidate;
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/jdk/internal/misc/VM.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,433 @@
+/*
+ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * 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.misc;
+
+import static java.lang.Thread.State.*;
+import java.util.Properties;
+
+public class VM {
+
+    /* The following methods used to be native methods that instruct
+     * the VM to selectively suspend certain threads in low-memory
+     * situations. They are inherently dangerous and not implementable
+     * on native threads. We removed them in JDK 1.2. The skeletons
+     * remain so that existing applications that use these methods
+     * will still work.
+     */
+    private static boolean suspended = false;
+
+    /** @deprecated */
+    @Deprecated
+    public static boolean threadsSuspended() {
+        return suspended;
+    }
+
+    @SuppressWarnings("deprecation")
+    public static boolean allowThreadSuspension(ThreadGroup g, boolean b) {
+        return g.allowThreadSuspension(b);
+    }
+
+    /** @deprecated */
+    @Deprecated
+    public static boolean suspendThreads() {
+        suspended = true;
+        return true;
+    }
+
+    // Causes any suspended threadgroups to be resumed.
+    /** @deprecated */
+    @Deprecated
+    public static void unsuspendThreads() {
+        suspended = false;
+    }
+
+    // Causes threadgroups no longer marked suspendable to be resumed.
+    /** @deprecated */
+    @Deprecated
+    public static void unsuspendSomeThreads() {
+    }
+
+    /* Deprecated fields and methods -- Memory advice not supported in 1.2 */
+
+    /** @deprecated */
+    @Deprecated
+    public static final int STATE_GREEN = 1;
+
+    /** @deprecated */
+    @Deprecated
+    public static final int STATE_YELLOW = 2;
+
+    /** @deprecated */
+    @Deprecated
+    public static final int STATE_RED = 3;
+
+    /** @deprecated */
+    @Deprecated
+    public static final int getState() {
+        return STATE_GREEN;
+    }
+
+    /** @deprecated */
+    @Deprecated
+    public static void registerVMNotification(VMNotification n) { }
+
+    /** @deprecated */
+    @Deprecated
+    public static void asChange(int as_old, int as_new) { }
+
+    /** @deprecated */
+    @Deprecated
+    public static void asChange_otherthread(int as_old, int as_new) { }
+
+    /*
+     * Not supported in 1.2 because these will have to be exported as
+     * JVM functions, and we are not sure we want do that. Leaving
+     * here so it can be easily resurrected -- just remove the //
+     * comments.
+     */
+
+    /**
+     * Resume Java profiling.  All profiling data is added to any
+     * earlier profiling, unless <code>resetJavaProfiler</code> is
+     * called in between.  If profiling was not started from the
+     * command line, <code>resumeJavaProfiler</code> will start it.
+     * <p>
+     *
+     * NOTE: Profiling must be enabled from the command line for a
+     * java.prof report to be automatically generated on exit; if not,
+     * writeJavaProfilerReport must be invoked to write a report.
+     *
+     * @see     resetJavaProfiler
+     * @see     writeJavaProfilerReport
+     */
+
+    // public native static void resumeJavaProfiler();
+
+    /**
+     * Suspend Java profiling.
+     */
+    // public native static void suspendJavaProfiler();
+
+    /**
+     * Initialize Java profiling.  Any accumulated profiling
+     * information is discarded.
+     */
+    // public native static void resetJavaProfiler();
+
+    /**
+     * Write the current profiling contents to the file "java.prof".
+     * If the file already exists, it will be overwritten.
+     */
+    // public native static void writeJavaProfilerReport();
+
+
+    private static volatile boolean booted = false;
+    private static final Object lock = new Object();
+
+    // Invoked by System.initializeSystemClass just before returning.
+    // Subsystems that are invoked during initialization can check this
+    // property in order to avoid doing things that should wait until the
+    // application class loader has been set up.
+    //
+    public static void booted() {
+        synchronized (lock) {
+            booted = true;
+            lock.notifyAll();
+        }
+    }
+
+    public static boolean isBooted() {
+        return booted;
+    }
+
+    // Waits until VM completes initialization
+    //
+    // This method is invoked by the Finalizer thread
+    public static void awaitBooted() throws InterruptedException {
+        synchronized (lock) {
+            while (!booted) {
+                lock.wait();
+            }
+        }
+    }
+
+    // A user-settable upper limit on the maximum amount of allocatable direct
+    // buffer memory.  This value may be changed during VM initialization if
+    // "java" is launched with "-XX:MaxDirectMemorySize=<size>".
+    //
+    // The initial value of this field is arbitrary; during JRE initialization
+    // it will be reset to the value specified on the command line, if any,
+    // otherwise to Runtime.getRuntime().maxMemory().
+    //
+    private static long directMemory = 64 * 1024 * 1024;
+
+    // Returns the maximum amount of allocatable direct buffer memory.
+    // The directMemory variable is initialized during system initialization
+    // in the saveAndRemoveProperties method.
+    //
+    public static long maxDirectMemory() {
+        return directMemory;
+    }
+
+    // User-controllable flag that determines if direct buffers should be page
+    // aligned. The "-XX:+PageAlignDirectMemory" option can be used to force
+    // buffers, allocated by ByteBuffer.allocateDirect, to be page aligned.
+    private static boolean pageAlignDirectMemory;
+
+    // Returns {@code true} if the direct buffers should be page aligned. This
+    // variable is initialized by saveAndRemoveProperties.
+    public static boolean isDirectMemoryPageAligned() {
+        return pageAlignDirectMemory;
+    }
+
+    /**
+     * Returns true if the given class loader is in the system domain
+     * in which all permissions are granted.
+     */
+    public static boolean isSystemDomainLoader(ClassLoader loader) {
+        return loader == null;
+    }
+
+    /**
+     * Returns the system property of the specified key saved at
+     * system initialization time.  This method should only be used
+     * for the system properties that are not changed during runtime.
+     * It accesses a private copy of the system properties so
+     * that user's locking of the system properties object will not
+     * cause the library to deadlock.
+     *
+     * Note that the saved system properties do not include
+     * the ones set by sun.misc.Version.init().
+     *
+     */
+    public static String getSavedProperty(String key) {
+        if (savedProps.isEmpty())
+            throw new IllegalStateException("Should be non-empty if initialized");
+
+        return savedProps.getProperty(key);
+    }
+
+    // TODO: the Property Management needs to be refactored and
+    // the appropriate prop keys need to be accessible to the
+    // calling classes to avoid duplication of keys.
+    private static final Properties savedProps = new Properties();
+
+    // Save a private copy of the system properties and remove
+    // the system properties that are not intended for public access.
+    //
+    // This method can only be invoked during system initialization.
+    public static void saveAndRemoveProperties(Properties props) {
+        if (booted)
+            throw new IllegalStateException("System initialization has completed");
+
+        savedProps.putAll(props);
+
+        // Set the maximum amount of direct memory.  This value is controlled
+        // by the vm option -XX:MaxDirectMemorySize=<size>.
+        // The maximum amount of allocatable direct buffer memory (in bytes)
+        // from the system property sun.nio.MaxDirectMemorySize set by the VM.
+        // The system property will be removed.
+        String s = (String)props.remove("sun.nio.MaxDirectMemorySize");
+        if (s != null) {
+            if (s.equals("-1")) {
+                // -XX:MaxDirectMemorySize not given, take default
+                directMemory = Runtime.getRuntime().maxMemory();
+            } else {
+                long l = Long.parseLong(s);
+                if (l > -1)
+                    directMemory = l;
+            }
+        }
+
+        // Check if direct buffers should be page aligned
+        s = (String)props.remove("sun.nio.PageAlignDirectMemory");
+        if ("true".equals(s))
+            pageAlignDirectMemory = true;
+
+        // Remove other private system properties
+        // used by java.lang.Integer.IntegerCache
+        props.remove("java.lang.Integer.IntegerCache.high");
+
+        // used by sun.launcher.LauncherHelper
+        props.remove("sun.java.launcher.diag");
+    }
+
+    // Initialize any miscellenous operating system settings that need to be
+    // set for the class libraries.
+    //
+    public static void initializeOSEnvironment() {
+        if (!booted) {
+            OSEnvironment.initialize();
+        }
+    }
+
+    /* Current count of objects pending for finalization */
+    private static volatile int finalRefCount;
+
+    /* Peak count of objects pending for finalization */
+    private static volatile int peakFinalRefCount;
+
+    /*
+     * Gets the number of objects pending for finalization.
+     *
+     * @return the number of objects pending for finalization.
+     */
+    public static int getFinalRefCount() {
+        return finalRefCount;
+    }
+
+    /*
+     * Gets the peak number of objects pending for finalization.
+     *
+     * @return the peak number of objects pending for finalization.
+     */
+    public static int getPeakFinalRefCount() {
+        return peakFinalRefCount;
+    }
+
+    /*
+     * Add {@code n} to the objects pending for finalization count.
+     *
+     * @param n an integer value to be added to the objects pending
+     * for finalization count
+     */
+    public static void addFinalRefCount(int n) {
+        // The caller must hold lock to synchronize the update.
+
+        finalRefCount += n;
+        if (finalRefCount > peakFinalRefCount) {
+            peakFinalRefCount = finalRefCount;
+        }
+    }
+
+    /**
+     * Returns Thread.State for the given threadStatus
+     */
+    public static Thread.State toThreadState(int threadStatus) {
+        if ((threadStatus & JVMTI_THREAD_STATE_RUNNABLE) != 0) {
+            return RUNNABLE;
+        } else if ((threadStatus & JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER) != 0) {
+            return BLOCKED;
+        } else if ((threadStatus & JVMTI_THREAD_STATE_WAITING_INDEFINITELY) != 0) {
+            return WAITING;
+        } else if ((threadStatus & JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) != 0) {
+            return TIMED_WAITING;
+        } else if ((threadStatus & JVMTI_THREAD_STATE_TERMINATED) != 0) {
+            return TERMINATED;
+        } else if ((threadStatus & JVMTI_THREAD_STATE_ALIVE) == 0) {
+            return NEW;
+        } else {
+            return RUNNABLE;
+        }
+    }
+
+    /* The threadStatus field is set by the VM at state transition
+     * in the hotspot implementation. Its value is set according to
+     * the JVM TI specification GetThreadState function.
+     */
+    private static final int JVMTI_THREAD_STATE_ALIVE = 0x0001;
+    private static final int JVMTI_THREAD_STATE_TERMINATED = 0x0002;
+    private static final int JVMTI_THREAD_STATE_RUNNABLE = 0x0004;
+    private static final int JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400;
+    private static final int JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010;
+    private static final int JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020;
+
+    /*
+     * Returns the first non-null class loader up the execution stack,
+     * or null if only code from the null class loader is on the stack.
+     */
+    public static native ClassLoader latestUserDefinedLoader();
+
+    /**
+     * Returns {@code true} if we are in a set UID program.
+     */
+    public static boolean isSetUID() {
+        long uid = getuid();
+        long euid = geteuid();
+        long gid = getgid();
+        long egid = getegid();
+        return uid != euid  || gid != egid;
+    }
+
+    /**
+     * Returns the real user ID of the calling process,
+     * or -1 if the value is not available.
+     */
+    public static native long getuid();
+
+    /**
+     * Returns the effective user ID of the calling process,
+     * or -1 if the value is not available.
+     */
+    public static native long geteuid();
+
+    /**
+     * Returns the real group ID of the calling process,
+     * or -1 if the value is not available.
+     */
+    public static native long getgid();
+
+    /**
+     * Returns the effective group ID of the calling process,
+     * or -1 if the value is not available.
+     */
+    public static native long getegid();
+
+    /**
+     * Get a nanosecond time stamp adjustment in the form of a single long.
+     *
+     * This value can be used to create an instant using
+     * {@link java.time.Instant#ofEpochSecond(long, long)
+     *  java.time.Instant.ofEpochSecond(offsetInSeconds,
+     *  getNanoTimeAdjustment(offsetInSeconds))}.
+     * <p>
+     * The value returned has the best resolution available to the JVM on
+     * the current system.
+     * This is usually down to microseconds - or tenth of microseconds -
+     * depending on the OS/Hardware and the JVM implementation.
+     *
+     * @param offsetInSeconds The offset in seconds from which the nanosecond
+     *        time stamp should be computed.
+     *
+     * @apiNote The offset should be recent enough - so that
+     *         {@code offsetInSeconds} is within {@code +/- 2^32} seconds of the
+     *         current UTC time. If the offset is too far off, {@code -1} will be
+     *         returned. As such, {@code -1} must not be considered as a valid
+     *         nano time adjustment, but as an exception value indicating
+     *         that an offset closer to the current time should be used.
+     *
+     * @return A nanosecond time stamp adjustment in the form of a single long.
+     *     If the offset is too far off the current time, this method returns -1.
+     *     In that case, the caller should call this method again, passing a
+     *     more accurate offset.
+     */
+    public static native long getNanoTimeAdjustment(long offsetInSeconds);
+
+    static {
+        initialize();
+    }
+    private static native void initialize();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/jdk/internal/misc/VMNotification.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 1996, 2004, Oracle and/or its affiliates. All rights reserved.
+ * 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.misc;
+
+/** @deprecated */
+@Deprecated
+public interface VMNotification {
+
+    // when the vm switches allocation states, we get notified
+    // (possible semantics: if the state changes while in this
+    // notification, don't recursively notify).
+    // oldState and newState may be the same if we are just releasing
+    // suspended threads.
+    void newAllocState(int oldState, int newState,
+                       boolean threadsSuspended);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/jdk/internal/perf/Perf.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,547 @@
+/*
+ * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
+ * 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.perf;
+
+import java.nio.ByteBuffer;
+import java.security.Permission;
+import java.security.PrivilegedAction;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import jdk.internal.ref.CleanerFactory;
+
+/**
+ * The Perf class provides the ability to attach to an instrumentation
+ * buffer maintained by a Java virtual machine. The instrumentation
+ * buffer may be for the Java virtual machine running the methods of
+ * this class or it may be for another Java virtual machine on the
+ * same system.
+ * <p>
+ * In addition, this class provides methods to create instrumentation
+ * objects in the instrumentation buffer for the Java virtual machine
+ * that is running these methods. It also contains methods for acquiring
+ * the value of a platform specific high resolution clock for time
+ * stamp and interval measurement purposes.
+ *
+ * @author   Brian Doherty
+ * @since    1.4.2
+ * @see      #getPerf
+ * @see      jdk.internal.perf.Perf.GetPerfAction
+ * @see      java.nio.ByteBuffer
+ */
+public final class Perf {
+
+    private static Perf instance;
+
+    private static final int PERF_MODE_RO = 0;
+    private static final int PERF_MODE_RW = 1;
+
+    private Perf() { }    // prevent instantiation
+
+    /**
+     * The GetPerfAction class is a convenience class for acquiring access
+     * to the singleton Perf instance using the
+     * <code>AccessController.doPrivileged()</code> method.
+     * <p>
+     * An instance of this class can be used as the argument to
+     * <code>AccessController.doPrivileged(PrivilegedAction)</code>.
+     * <p> Here is a suggested idiom for use of this class:
+     *
+     * <blockquote><pre>{@code
+     * class MyTrustedClass {
+     *   private static final Perf perf =
+     *       AccessController.doPrivileged(new Perf.GetPerfAction<Perf>());
+     *   ...
+     * }
+     * }</pre></blockquote>
+     * <p>
+     * In the presence of a security manager, the <code>MyTrustedClass</code>
+     * class in the above example will need to be granted the
+     * <em>"sun.misc.Perf.getPerf"</em> <code>RuntimePermission</code>
+     * permission in order to successfully acquire the singleton Perf instance.
+     * <p>
+     * Please note that the <em>"sun.misc.Perf.getPerf"</em> permission
+     * is not a JDK specified permission.
+     *
+     * @see  java.security.AccessController#doPrivileged(PrivilegedAction)
+     * @see  java.lang.RuntimePermission
+     */
+    public static class GetPerfAction implements PrivilegedAction<Perf>
+    {
+        /**
+         * Run the <code>Perf.getPerf()</code> method in a privileged context.
+         *
+         * @see #getPerf
+         */
+        public Perf run() {
+            return getPerf();
+        }
+    }
+
+    /**
+     * Return a reference to the singleton Perf instance.
+     * <p>
+     * The getPerf() method returns the singleton instance of the Perf
+     * class. The returned object provides the caller with the capability
+     * for accessing the instrumentation buffer for this or another local
+     * Java virtual machine.
+     * <p>
+     * If a security manager is installed, its <code>checkPermission</code>
+     * method is called with a <code>RuntimePermission</code> with a target
+     * of <em>"sun.misc.Perf.getPerf"</em>. A security exception will result
+     * if the caller has not been granted this permission.
+     * <p>
+     * Access to the returned <code>Perf</code> object should be protected
+     * by its caller and not passed on to untrusted code. This object can
+     * be used to attach to the instrumentation buffer provided by this Java
+     * virtual machine or for those of other Java virtual machines running
+     * on the same system. The instrumentation buffer may contain senstitive
+     * information. API's built on top of this interface may want to provide
+     * finer grained access control to the contents of individual
+     * instrumentation objects contained within the buffer.
+     * <p>
+     * Please note that the <em>"sun.misc.Perf.getPerf"</em> permission
+     * is not a JDK specified permission.
+     *
+     * @return  A reference to the singleton Perf instance.
+     * @throws SecurityException  if a security manager exists and its
+     *         <code>checkPermission</code> method doesn't allow access
+     *         to the <em>"jdk.internal.perf.Perf.getPerf""</em> target.
+     * @see  java.lang.RuntimePermission
+     * @see  #attach
+     */
+    public static Perf getPerf()
+    {
+        SecurityManager security = System.getSecurityManager();
+        if (security != null) {
+            Permission perm = new RuntimePermission("jdk.internal.perf.Perf.getPerf");
+            security.checkPermission(perm);
+        }
+
+        return instance;
+    }
+
+    /**
+     * Attach to the instrumentation buffer for the specified Java virtual
+     * machine.
+     * <p>
+     * This method will attach to the instrumentation buffer for the
+     * specified virtual machine. It returns a <code>ByteBuffer</code> object
+     * that is initialized to access the instrumentation buffer for the
+     * indicated Java virtual machine. The <code>lvmid</code> parameter is
+     * a integer value that uniquely identifies the target local Java virtual
+     * machine. It is typically, but not necessarily, the process id of
+     * the target Java virtual machine.
+     * <p>
+     * If the <code>lvmid</code> identifies a Java virtual machine different
+     * from the one running this method, then the coherency characteristics
+     * of the buffer are implementation dependent. Implementations that do
+     * not support named, coherent, shared memory may return a
+     * <code>ByteBuffer</code> object that contains only a snap shot of the
+     * data in the instrumentation buffer. Implementations that support named,
+     * coherent, shared memory, may return a <code>ByteBuffer</code> object
+     * that will be changing dynamically over time as the target Java virtual
+     * machine updates its mapping of this buffer.
+     * <p>
+     * If the <code>lvmid</code> is 0 or equal to the actual <code>lvmid</code>
+     * for the Java virtual machine running this method, then the returned
+     * <code>ByteBuffer</code> object will always be coherent and dynamically
+     * changing.
+     * <p>
+     * The attach mode specifies the access permissions requested for the
+     * instrumentation buffer of the target virtual machine. The permitted
+     * access permissions are:
+     * <ul>
+     * <li>"r"  - Read only access. This Java virtual machine has only
+     * read access to the instrumentation buffer for the target Java
+     * virtual machine.
+     * <li>"rw"  - Read/Write access. This Java virtual machine has read and
+     * write access to the instrumentation buffer for the target Java virtual
+     * machine. This mode is currently not supported and is reserved for
+     * future enhancements.
+     * </ul>
+     *
+     * @param   lvmid            an integer that uniquely identifies the
+     *                           target local Java virtual machine.
+     * @param   mode             a string indicating the attach mode.
+     * @return  ByteBuffer       a direct allocated byte buffer
+     * @throws  IllegalArgumentException  The lvmid or mode was invalid.
+     * @throws  IOException      An I/O error occurred while trying to acquire
+     *                           the instrumentation buffer.
+     * @throws  OutOfMemoryError The instrumentation buffer could not be mapped
+     *                           into the virtual machine's address space.
+     * @see     java.nio.ByteBuffer
+     */
+    public ByteBuffer attach(int lvmid, String mode)
+           throws IllegalArgumentException, IOException
+    {
+        if (mode.compareTo("r") == 0) {
+            return attachImpl(null, lvmid, PERF_MODE_RO);
+        }
+        else if (mode.compareTo("rw") == 0) {
+            return attachImpl(null, lvmid, PERF_MODE_RW);
+        }
+        else {
+            throw new IllegalArgumentException("unknown mode");
+        }
+    }
+
+    /**
+     * Attach to the instrumentation buffer for the specified Java virtual
+     * machine owned by the given user.
+     * <p>
+     * This method behaves just as the <code>attach(int lvmid, String mode)
+     * </code> method, except that it only searches for Java virtual machines
+     * owned by the specified user.
+     *
+     * @param   user             A <code>String</code> object containing the
+     *                           name of the user that owns the target Java
+     *                           virtual machine.
+     * @param   lvmid            an integer that uniquely identifies the
+     *                           target local Java virtual machine.
+     * @param   mode             a string indicating the attach mode.
+     * @return  ByteBuffer       a direct allocated byte buffer
+     * @throws  IllegalArgumentException  The lvmid or mode was invalid.
+     * @throws  IOException      An I/O error occurred while trying to acquire
+     *                           the instrumentation buffer.
+     * @throws  OutOfMemoryError The instrumentation buffer could not be mapped
+     *                           into the virtual machine's address space.
+     * @see     java.nio.ByteBuffer
+     */
+    public ByteBuffer attach(String user, int lvmid, String mode)
+           throws IllegalArgumentException, IOException
+    {
+        if (mode.compareTo("r") == 0) {
+            return attachImpl(user, lvmid, PERF_MODE_RO);
+        }
+        else if (mode.compareTo("rw") == 0) {
+            return attachImpl(user, lvmid, PERF_MODE_RW);
+        }
+        else {
+            throw new IllegalArgumentException("unknown mode");
+        }
+    }
+
+    /**
+     * Call the implementation specific attach method.
+     * <p>
+     * This method calls into the Java virtual machine to perform the platform
+     * specific attach method. Buffers returned from this method are
+     * internally managed as <code>PhantomRefereces</code> to provide for
+     * guaranteed, secure release of the native resources.
+     *
+     * @param   user             A <code>String</code> object containing the
+     *                           name of the user that owns the target Java
+     *                           virtual machine.
+     * @param   lvmid            an integer that uniquely identifies the
+     *                           target local Java virtual machine.
+     * @param   mode             a string indicating the attach mode.
+     * @return  ByteBuffer       a direct allocated byte buffer
+     * @throws  IllegalArgumentException  The lvmid or mode was invalid.
+     * @throws  IOException      An I/O error occurred while trying to acquire
+     *                           the instrumentation buffer.
+     * @throws  OutOfMemoryError The instrumentation buffer could not be mapped
+     *                           into the virtual machine's address space.
+     */
+    private ByteBuffer attachImpl(String user, int lvmid, int mode)
+            throws IllegalArgumentException, IOException
+    {
+        final ByteBuffer b = attach(user, lvmid, mode);
+
+        if (lvmid == 0) {
+            // The native instrumentation buffer for this Java virtual
+            // machine is never unmapped.
+            return b;
+        }
+        else {
+            // This is an instrumentation buffer for another Java virtual
+            // machine with native resources that need to be managed. We
+            // create a duplicate of the native ByteBuffer and manage it
+            // with a Cleaner. When the duplicate becomes phantom reachable,
+            // the native resources will be released.
+
+            final ByteBuffer dup = b.duplicate();
+
+            CleanerFactory.cleaner()
+                          .register(dup, new CleanerAction(instance, b));
+            return dup;
+        }
+    }
+
+    private static class CleanerAction implements Runnable {
+        private final ByteBuffer bb;
+        private final Perf perf;
+        CleanerAction(Perf perf, ByteBuffer bb) {
+            this.perf = perf;
+            this.bb = bb;
+        }
+        public void run() {
+            try {
+                perf.detach(bb);
+            } catch (Throwable th) {
+                // avoid crashing the reference handler thread,
+                // but provide for some diagnosability
+                assert false : th.toString();
+            }
+        }
+    }
+
+    /**
+     * Native method to perform the implementation specific attach mechanism.
+     * <p>
+     * The implementation of this method may return distinct or identical
+     * <code>ByteBuffer</code> objects for two distinct calls requesting
+     * attachment to the same Java virtual machine.
+     * <p>
+     * For the Sun HotSpot JVM, two distinct calls to attach to the same
+     * target Java virtual machine will result in two distinct ByteBuffer
+     * objects returned by this method. This may change in a future release.
+     *
+     * @param   user             A <code>String</code> object containing the
+     *                           name of the user that owns the target Java
+     *                           virtual machine.
+     * @param   lvmid            an integer that uniquely identifies the
+     *                           target local Java virtual machine.
+     * @param   mode             a string indicating the attach mode.
+     * @return  ByteBuffer       a direct allocated byte buffer
+     * @throws  IllegalArgumentException  The lvmid or mode was invalid.
+     * @throws  IOException      An I/O error occurred while trying to acquire
+     *                           the instrumentation buffer.
+     * @throws  OutOfMemoryError The instrumentation buffer could not be mapped
+     *                           into the virtual machine's address space.
+     */
+    private native ByteBuffer attach(String user, int lvmid, int mode)
+                   throws IllegalArgumentException, IOException;
+
+    /**
+     * Native method to perform the implementation specific detach mechanism.
+     * <p>
+     * If this method is passed a <code>ByteBuffer</code> object that is
+     * not created by the <code>attach</code> method, then the results of
+     * this method are undefined, with unpredictable and potentially damaging
+     * effects to the Java virtual machine. To prevent accidental or malicious
+     * use of this method, all native ByteBuffer created by the <code>
+     * attach</code> method are managed internally as PhantomReferences
+     * and resources are freed by the system.
+     * <p>
+     * If this method is passed a <code>ByteBuffer</code> object created
+     * by the <code>attach</code> method with a lvmid for the Java virtual
+     * machine running this method (lvmid=0, for example), then the detach
+     * request is silently ignored.
+     *
+     * @param bb  A direct allocated byte buffer created by the
+     *                    <code>attach</code> method.
+     * @see   java.nio.ByteBuffer
+     * @see   #attach
+     */
+    private native void detach(ByteBuffer bb);
+
+    /**
+     * Create a <code>long</code> scalar entry in the instrumentation buffer
+     * with the given variability characteristic, units, and initial value.
+     * <p>
+     * Access to the instrument is provided through the returned <code>
+     * ByteBuffer</code> object. Typically, this object should be wrapped
+     * with <code>LongBuffer</code> view object.
+     *
+     * @param   variability the variability characteristic for this entry.
+     * @param   units       the units for this entry.
+     * @param   name        the name of this entry.
+     * @param   value       the initial value for this entry.
+     * @return  ByteBuffer  a direct allocated ByteBuffer object that
+     *                      allows write access to a native memory location
+     *                      containing a <code>long</code> value.
+     *
+     * see sun.misc.perf.Variability
+     * see sun.misc.perf.Units
+     * @see java.nio.ByteBuffer
+     */
+    public native ByteBuffer createLong(String name, int variability,
+                                        int units, long value);
+
+    /**
+     * Create a <code>String</code> entry in the instrumentation buffer with
+     * the given variability characteristic, units, and initial value.
+     * <p>
+     * The maximum length of the <code>String</code> stored in this string
+     * instrument is given in by <code>maxLength</code> parameter. Updates
+     * to this instrument with <code>String</code> values with lengths greater
+     * than <code>maxLength</code> will be truncated to <code>maxLength</code>.
+     * The truncated value will be terminated by a null character.
+     * <p>
+     * The underlying implementation may further limit the length of the
+     * value, but will continue to preserve the null terminator.
+     * <p>
+     * Access to the instrument is provided through the returned <code>
+     * ByteBuffer</code> object.
+     *
+     * @param   variability the variability characteristic for this entry.
+     * @param   units       the units for this entry.
+     * @param   name        the name of this entry.
+     * @param   value       the initial value for this entry.
+     * @param   maxLength   the maximum string length for this string
+     *                      instrument.
+     * @return  ByteBuffer  a direct allocated ByteBuffer that allows
+     *                      write access to a native memory location
+     *                      containing a <code>long</code> value.
+     *
+     * see sun.misc.perf.Variability
+     * see sun.misc.perf.Units
+     * @see java.nio.ByteBuffer
+     */
+    public ByteBuffer createString(String name, int variability,
+                                   int units, String value, int maxLength)
+    {
+        byte[] v = getBytes(value);
+        byte[] v1 = new byte[v.length+1];
+        System.arraycopy(v, 0, v1, 0, v.length);
+        v1[v.length] = '\0';
+        return createByteArray(name, variability, units, v1, Math.max(v1.length, maxLength));
+    }
+
+    /**
+     * Create a <code>String</code> entry in the instrumentation buffer with
+     * the given variability characteristic, units, and initial value.
+     * <p>
+     * The maximum length of the <code>String</code> stored in this string
+     * instrument is implied by the length of the <code>value</code> parameter.
+     * Subsequent updates to the value of this instrument will be truncated
+     * to this implied maximum length. The truncated value will be terminated
+     * by a null character.
+     * <p>
+     * The underlying implementation may further limit the length of the
+     * initial or subsequent value, but will continue to preserve the null
+     * terminator.
+     * <p>
+     * Access to the instrument is provided through the returned <code>
+     * ByteBuffer</code> object.
+     *
+     * @param   variability the variability characteristic for this entry.
+     * @param   units       the units for this entry.
+     * @param   name        the name of this entry.
+     * @param   value       the initial value for this entry.
+     * @return  ByteBuffer  a direct allocated ByteBuffer that allows
+     *                      write access to a native memory location
+     *                      containing a <code>long</code> value.
+     *
+     * see sun.misc.perf.Variability
+     * see sun.misc.perf.Units
+     * @see java.nio.ByteBuffer
+     */
+    public ByteBuffer createString(String name, int variability,
+                                   int units, String value)
+    {
+        byte[] v = getBytes(value);
+        byte[] v1 = new byte[v.length+1];
+        System.arraycopy(v, 0, v1, 0, v.length);
+        v1[v.length] = '\0';
+        return createByteArray(name, variability, units, v1, v1.length);
+    }
+
+    /**
+     * Create a <code>byte</code> vector entry in the instrumentation buffer
+     * with the given variability characteristic, units, and initial value.
+     * <p>
+     * The <code>maxLength</code> parameter limits the size of the byte
+     * array instrument such that the initial or subsequent updates beyond
+     * this length are silently ignored. No special handling of truncated
+     * updates is provided.
+     * <p>
+     * The underlying implementation may further limit the length of the
+     * length of the initial or subsequent value.
+     * <p>
+     * Access to the instrument is provided through the returned <code>
+     * ByteBuffer</code> object.
+     *
+     * @param   variability the variability characteristic for this entry.
+     * @param   units       the units for this entry.
+     * @param   name        the name of this entry.
+     * @param   value       the initial value for this entry.
+     * @param   maxLength   the maximum length of this byte array.
+     * @return  ByteBuffer  a direct allocated byte buffer that allows
+     *                      write access to a native memory location
+     *                      containing a <code>long</code> value.
+     *
+     * see sun.misc.perf.Variability
+     * see sun.misc.perf.Units
+     * @see java.nio.ByteBuffer
+     */
+    public native ByteBuffer createByteArray(String name, int variability,
+                                             int units, byte[] value,
+                                             int maxLength);
+
+
+    /**
+     * convert string to an array of UTF-8 bytes
+     */
+    private static byte[] getBytes(String s)
+    {
+        byte[] bytes = null;
+
+        try {
+            bytes = s.getBytes("UTF-8");
+        }
+        catch (UnsupportedEncodingException e) {
+            // ignore, UTF-8 encoding is always known
+        }
+
+        return bytes;
+    }
+
+    /**
+     * Return the value of the High Resolution Counter.
+     *
+     * The High Resolution Counter returns the number of ticks since
+     * since the start of the Java virtual machine. The resolution of
+     * the counter is machine dependent and can be determined from the
+     * value return by the {@link #highResFrequency} method.
+     *
+     * @return  the number of ticks of machine dependent resolution since
+     *          the start of the Java virtual machine.
+     *
+     * @see #highResFrequency
+     * @see java.lang.System#currentTimeMillis()
+     */
+    public native long highResCounter();
+
+    /**
+     * Returns the frequency of the High Resolution Counter, in ticks per
+     * second.
+     *
+     * This value can be used to convert the value of the High Resolution
+     * Counter, as returned from a call to the {@link #highResCounter} method,
+     * into the number of seconds since the start of the Java virtual machine.
+     *
+     * @return  the frequency of the High Resolution Counter.
+     * @see #highResCounter
+     */
+    public native long highResFrequency();
+
+    private static native void registerNatives();
+
+    static {
+        registerNatives();
+        instance = new Perf();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/jdk/internal/perf/PerfCounter.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,191 @@
+/*
+ * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ * 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.perf;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.LongBuffer;
+import java.security.AccessController;
+
+/**
+ * Performance counter support for internal JRE classes.
+ * This class defines a fixed list of counters for the platform
+ * to use as an interim solution until RFE# 6209222 is implemented.
+ * The perf counters will be created in the jvmstat perf buffer
+ * that the HotSpot VM creates. The default size is 32K and thus
+ * the number of counters is bounded.  You can alter the size
+ * with {@code -XX:PerfDataMemorySize=<bytes>} option. If there is
+ * insufficient memory in the jvmstat perf buffer, the C heap memory
+ * will be used and thus the application will continue to run if
+ * the counters added exceeds the buffer size but the counters
+ * will be missing.
+ *
+ * See HotSpot jvmstat implementation for certain circumstances
+ * that the jvmstat perf buffer is not supported.
+ *
+ */
+public class PerfCounter {
+    private static final Perf perf =
+        AccessController.doPrivileged(new Perf.GetPerfAction());
+
+    // Must match values defined in hotspot/src/share/vm/runtime/perfdata.hpp
+    private static final int V_Constant  = 1;
+    private static final int V_Monotonic = 2;
+    private static final int V_Variable  = 3;
+    private static final int U_None      = 1;
+
+    private final String name;
+    private final LongBuffer lb;
+
+    private PerfCounter(String name, int type) {
+        this.name = name;
+        ByteBuffer bb = perf.createLong(name, type, U_None, 0L);
+        bb.order(ByteOrder.nativeOrder());
+        this.lb = bb.asLongBuffer();
+    }
+
+    static PerfCounter newPerfCounter(String name) {
+        return new PerfCounter(name, V_Variable);
+    }
+
+    static PerfCounter newConstantPerfCounter(String name) {
+        PerfCounter c = new PerfCounter(name, V_Constant);
+        return c;
+    }
+
+    /**
+     * Returns the current value of the perf counter.
+     */
+    public synchronized long get() {
+        return lb.get(0);
+    }
+
+    /**
+     * Sets the value of the perf counter to the given newValue.
+     */
+    public synchronized void set(long newValue) {
+        lb.put(0, newValue);
+    }
+
+    /**
+     * Adds the given value to the perf counter.
+     */
+    public synchronized void add(long value) {
+        long res = get() + value;
+        lb.put(0, res);
+    }
+
+    /**
+     * Increments the perf counter with 1.
+     */
+    public void increment() {
+        add(1);
+    }
+
+    /**
+     * Adds the given interval to the perf counter.
+     */
+    public void addTime(long interval) {
+        add(interval);
+    }
+
+    /**
+     * Adds the elapsed time from the given start time (ns) to the perf counter.
+     */
+    public void addElapsedTimeFrom(long startTime) {
+        add(System.nanoTime() - startTime);
+    }
+
+    @Override
+    public String toString() {
+        return name + " = " + get();
+    }
+
+    static class CoreCounters {
+        static final PerfCounter pdt   = newPerfCounter("sun.classloader.parentDelegationTime");
+        static final PerfCounter lc    = newPerfCounter("sun.classloader.findClasses");
+        static final PerfCounter lct   = newPerfCounter("sun.classloader.findClassTime");
+        static final PerfCounter rcbt  = newPerfCounter("sun.urlClassLoader.readClassBytesTime");
+        static final PerfCounter zfc   = newPerfCounter("sun.zip.zipFiles");
+        static final PerfCounter zfot  = newPerfCounter("sun.zip.zipFile.openTime");
+    }
+
+    static class WindowsClientCounters {
+        static final PerfCounter d3dAvailable = newConstantPerfCounter("sun.java2d.d3d.available");
+    }
+
+    /**
+     * Number of findClass calls
+     */
+    public static PerfCounter getFindClasses() {
+        return CoreCounters.lc;
+    }
+
+    /**
+     * Time (ns) spent in finding classes that includes
+     * lookup and read class bytes and defineClass
+     */
+    public static PerfCounter getFindClassTime() {
+        return CoreCounters.lct;
+    }
+
+    /**
+     * Time (ns) spent in finding classes
+     */
+    public static PerfCounter getReadClassBytesTime() {
+        return CoreCounters.rcbt;
+    }
+
+    /**
+     * Time (ns) spent in the parent delegation to
+     * the parent of the defining class loader
+     */
+    public static PerfCounter getParentDelegationTime() {
+        return CoreCounters.pdt;
+    }
+
+    /**
+     * Number of zip files opened.
+     */
+    public static PerfCounter getZipFileCount() {
+        return CoreCounters.zfc;
+    }
+
+    /**
+     * Time (ns) spent in opening the zip files that
+     * includes building the entries hash table
+     */
+    public static PerfCounter getZipFileOpenTime() {
+        return CoreCounters.zfot;
+    }
+
+    /**
+     * D3D graphic pipeline available
+     */
+    public static PerfCounter getD3DAvailable() {
+        return WindowsClientCounters.d3dAvailable;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/jdk/internal/ref/CleanerFactory.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  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.ref;
+
+import java.lang.ref.Cleaner;
+
+/**
+ * CleanerFactory provides a Cleaner for use within OpenJDK modules.
+ * The cleaner is created on the first reference to the CleanerFactory.
+ */
+public final class CleanerFactory {
+
+    /* The common Cleaner. */
+    private final static Cleaner commonCleaner = Cleaner.create();
+
+    /**
+     * Cleaner for use within OpenJDK modules.
+     *
+     * @return a Cleaner for use within OpenJDK modules
+     */
+    public static Cleaner cleaner() {
+        return commonCleaner;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/jdk/internal/ref/CleanerImpl.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,333 @@
+/*
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  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.ref;
+
+import java.lang.ref.Cleaner;
+import java.lang.ref.Cleaner.Cleanable;
+import java.lang.ref.ReferenceQueue;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.concurrent.ThreadFactory;
+import java.util.function.Function;
+
+import sun.misc.InnocuousThread;
+
+/**
+ * CleanerImpl manages a set of object references and corresponding cleaning actions.
+ * CleanerImpl provides the functionality of {@link java.lang.ref.Cleaner}.
+ */
+public final class CleanerImpl {
+
+    /**
+     * An object to access the CleanerImpl from a Cleaner; set by Cleaner init.
+     */
+    private static Function<Cleaner, CleanerImpl> cleanerImplAccess = null;
+
+    /**
+     * Heads of a CleanableList for each reference type.
+     */
+    final PhantomCleanable<?> phantomCleanableList;
+
+    final WeakCleanable<?> weakCleanableList;
+
+    final SoftCleanable<?> softCleanableList;
+
+    // The ReferenceQueue of pending cleaning actions
+    final ReferenceQueue<Object> queue;
+
+    /**
+     * Called by Cleaner static initialization to provide the function
+     * to map from Cleaner to CleanerImpl.
+     * @param access a function to map from Cleaner to CleanerImpl
+     */
+    public static void setCleanerImplAccess(Function<Cleaner, CleanerImpl> access) {
+        if (cleanerImplAccess == null) {
+            cleanerImplAccess = access;
+        } else {
+            throw new InternalError("cleanerImplAccess");
+        }
+    }
+
+    /**
+     * Called to get the CleanerImpl for a Cleaner.
+     * @param cleaner the cleaner
+     * @return the corresponding CleanerImpl
+     */
+    static CleanerImpl getCleanerImpl(Cleaner cleaner) {
+        return cleanerImplAccess.apply(cleaner);
+    }
+
+    /**
+     * Constructor for CleanerImpl.
+     */
+    public CleanerImpl() {
+        queue = new ReferenceQueue<>();
+        phantomCleanableList = new PhantomCleanableRef();
+        weakCleanableList = new WeakCleanableRef();
+        softCleanableList = new SoftCleanableRef();
+    }
+
+    /**
+     * Starts the Cleaner implementation.
+     * Ensure this is the CleanerImpl for the Cleaner.
+     * When started waits for Cleanables to be queued.
+     * @param cleaner the cleaner
+     * @param threadFactory the thread factory
+     */
+    public void start(Cleaner cleaner, ThreadFactory threadFactory) {
+        if (getCleanerImpl(cleaner) != this) {
+            throw new AssertionError("wrong cleaner");
+        }
+        // schedule a nop cleaning action for the cleaner, so the associated thread
+        // will continue to run at least until the cleaner is reclaimable.
+        new PhantomCleanableRef(cleaner, cleaner, () -> {});
+
+        if (threadFactory == null) {
+            threadFactory = CleanerImpl.InnocuousThreadFactory.factory();
+        }
+
+        // now that there's at least one cleaning action, for the cleaner,
+        // we can start the associated thread, which runs until
+        // all cleaning actions have been run.
+        Thread thread = threadFactory.newThread(this::run);
+        thread.setDaemon(true);
+        thread.start();
+    }
+
+    /**
+     * Process queued Cleanables as long as the cleanable lists are not empty.
+     * A Cleanable is in one of the lists for each Object and for the Cleaner
+     * itself.
+     * Terminates when the Cleaner is no longer reachable and
+     * has been cleaned and there are no more Cleanable instances
+     * for which the object is reachable.
+     * <p>
+     * If the thread is a ManagedLocalsThread, the threadlocals
+     * are erased before each cleanup
+     */
+    private void run() {
+        Thread t = Thread.currentThread();
+        InnocuousThread mlThread = (t instanceof InnocuousThread)
+                ? (InnocuousThread) t
+                : null;
+        while (!phantomCleanableList.isListEmpty() ||
+                !weakCleanableList.isListEmpty() ||
+                !softCleanableList.isListEmpty()) {
+            if (mlThread != null) {
+                // Clear the thread locals
+                mlThread.eraseThreadLocals();
+            }
+            try {
+                // Wait for a Ref, with a timeout to avoid getting hung
+                // due to a race with clear/clean
+                Cleanable ref = (Cleanable) queue.remove(60 * 1000L);
+                if (ref != null) {
+                    ref.clean();
+                }
+            } catch (InterruptedException i) {
+                continue;   // ignore the interruption
+            } catch (Throwable e) {
+                // ignore exceptions from the cleanup action
+            }
+        }
+    }
+
+    /**
+     * Perform cleaning on an unreachable PhantomReference.
+     */
+    public static final class PhantomCleanableRef extends PhantomCleanable<Object> {
+        private final Runnable action;
+
+        /**
+         * Constructor for a phantom cleanable reference.
+         * @param obj the object to monitor
+         * @param cleaner the cleaner
+         * @param action the action Runnable
+         */
+        public PhantomCleanableRef(Object obj, Cleaner cleaner, Runnable action) {
+            super(obj, cleaner);
+            this.action = action;
+        }
+
+        /**
+         * Constructor used only for root of phantom cleanable list.
+         */
+        PhantomCleanableRef() {
+            super();
+            this.action = null;
+        }
+
+        @Override
+        protected void performCleanup() {
+            action.run();
+        }
+
+        /**
+         * Prevent access to referent even when it is still alive.
+         *
+         * @throws UnsupportedOperationException always
+         */
+        @Override
+        public Object get() {
+            throw new UnsupportedOperationException("get");
+        }
+
+        /**
+         * Direct clearing of the referent is not supported.
+         *
+         * @throws UnsupportedOperationException always
+         */
+        @Override
+        public void clear() {
+            throw new UnsupportedOperationException("clear");
+        }
+    }
+
+    /**
+     * Perform cleaning on an unreachable WeakReference.
+     */
+    public static final class WeakCleanableRef extends WeakCleanable<Object> {
+        private final Runnable action;
+
+        /**
+         * Constructor for a weak cleanable reference.
+         * @param obj the object to monitor
+         * @param cleaner the cleaner
+         * @param action the action Runnable
+         */
+        WeakCleanableRef(Object obj, Cleaner cleaner, Runnable action) {
+            super(obj, cleaner);
+            this.action = action;
+        }
+
+        /**
+         * Constructor used only for root of weak cleanable list.
+         */
+        WeakCleanableRef() {
+            super();
+            this.action = null;
+        }
+
+        @Override
+        protected void performCleanup() {
+            action.run();
+        }
+
+        /**
+         * Prevent access to referent even when it is still alive.
+         *
+         * @throws UnsupportedOperationException always
+         */
+        @Override
+        public Object get() {
+            throw new UnsupportedOperationException("get");
+        }
+
+        /**
+         * Direct clearing of the referent is not supported.
+         *
+         * @throws UnsupportedOperationException always
+         */
+        @Override
+        public void clear() {
+            throw new UnsupportedOperationException("clear");
+        }
+    }
+
+    /**
+     * Perform cleaning on an unreachable SoftReference.
+     */
+    public static final class SoftCleanableRef extends SoftCleanable<Object> {
+        private final Runnable action;
+
+        /**
+         * Constructor for a soft cleanable reference.
+         * @param obj the object to monitor
+         * @param cleaner the cleaner
+         * @param action the action Runnable
+         */
+        SoftCleanableRef(Object obj, Cleaner cleaner, Runnable action) {
+            super(obj, cleaner);
+            this.action = action;
+        }
+
+        /**
+         * Constructor used only for root of soft cleanable list.
+         */
+        SoftCleanableRef() {
+            super();
+            this.action = null;
+        }
+
+        @Override
+        protected void performCleanup() {
+            action.run();
+        }
+
+        /**
+         * Prevent access to referent even when it is still alive.
+         *
+         * @throws UnsupportedOperationException always
+         */
+        @Override
+        public Object get() {
+            throw new UnsupportedOperationException("get");
+        }
+
+        /**
+         * Direct clearing of the referent is not supported.
+         *
+         * @throws UnsupportedOperationException always
+         */
+        @Override
+        public void clear() {
+            throw new UnsupportedOperationException("clear");
+        }
+
+    }
+
+    /**
+     * A ThreadFactory for InnocuousThreads.
+     * The factory is a singleton.
+     */
+    static final class InnocuousThreadFactory implements ThreadFactory {
+        final static ThreadFactory factory = new InnocuousThreadFactory();
+
+        static ThreadFactory factory() {
+            return factory;
+        }
+
+        public Thread newThread(Runnable r) {
+            return AccessController.doPrivileged((PrivilegedAction<Thread>) () -> {
+                Thread t = new InnocuousThread(r);
+                t.setPriority(Thread.MAX_PRIORITY - 2);
+                t.setName("Cleaner-" + t.getId());
+                return t;
+            });
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/jdk/internal/ref/PhantomCleanable.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,178 @@
+/*
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  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.ref;
+
+import java.lang.ref.Cleaner;
+import java.lang.ref.PhantomReference;
+import java.util.Objects;
+
+/**
+ * PhantomCleanable subclasses efficiently encapsulate cleanup state and
+ * the cleaning action.
+ * Subclasses implement the abstract {@link #performCleanup()}  method
+ * to provide the cleaning action.
+ * When constructed, the object reference and the {@link Cleaner.Cleanable Cleanable}
+ * are registered with the {@link Cleaner}.
+ * The Cleaner invokes {@link Cleaner.Cleanable#clean() clean} after the
+ * referent becomes phantom reachable.
+ */
+public abstract class PhantomCleanable<T> extends PhantomReference<T>
+        implements Cleaner.Cleanable {
+
+    /**
+     * Links to previous and next in a doubly-linked list.
+     */
+    PhantomCleanable<?> prev = this, next = this;
+
+    /**
+     * The list of PhantomCleanable; synchronizes insert and remove.
+     */
+    private final PhantomCleanable<?> list;
+
+    /**
+     * Constructs new {@code PhantomCleanable} with
+     * {@code non-null referent} and {@code non-null cleaner}.
+     * The {@code cleaner} is not retained; it is only used to
+     * register the newly constructed {@link Cleaner.Cleanable Cleanable}.
+     *
+     * @param referent the referent to track
+     * @param cleaner  the {@code Cleaner} to register with
+     */
+    public PhantomCleanable(T referent, Cleaner cleaner) {
+        super(Objects.requireNonNull(referent), CleanerImpl.getCleanerImpl(cleaner).queue);
+        this.list = CleanerImpl.getCleanerImpl(cleaner).phantomCleanableList;
+        insert();
+
+        // TODO: Replace getClass() with ReachabilityFence when it is available
+        cleaner.getClass();
+        referent.getClass();
+    }
+
+    /**
+     * Construct a new root of the list; not inserted.
+     */
+    PhantomCleanable() {
+        super(null, null);
+        this.list = this;
+    }
+
+    /**
+     * Insert this PhantomCleanable after the list head.
+     */
+    private void insert() {
+        synchronized (list) {
+            prev = list;
+            next = list.next;
+            next.prev = this;
+            list.next = this;
+        }
+    }
+
+    /**
+     * Remove this PhantomCleanable from the list.
+     *
+     * @return true if Cleanable was removed or false if not because
+     * it had already been removed before
+     */
+    private boolean remove() {
+        synchronized (list) {
+            if (next != this) {
+                next.prev = prev;
+                prev.next = next;
+                prev = this;
+                next = this;
+                return true;
+            }
+            return false;
+        }
+    }
+
+    /**
+     * Returns true if the list's next reference refers to itself.
+     *
+     * @return true if the list is empty
+     */
+    boolean isListEmpty() {
+        synchronized (list) {
+            return list == list.next;
+        }
+    }
+
+    /**
+     * Unregister this PhantomCleanable and invoke {@link #performCleanup()},
+     * ensuring at-most-once semantics.
+     */
+    @Override
+    public final void clean() {
+        if (remove()) {
+            super.clear();
+            performCleanup();
+        }
+    }
+
+    /**
+     * Unregister this PhantomCleanable and clear the reference.
+     * Due to inherent concurrency, {@link #performCleanup()} may still be invoked.
+     */
+    @Override
+    public void clear() {
+        if (remove()) {
+            super.clear();
+        }
+    }
+
+    /**
+     * The {@code performCleanup} abstract method is overridden
+     * to implement the cleaning logic.
+     * The {@code performCleanup} method should not be called except
+     * by the {@link #clean} method which ensures at most once semantics.
+     */
+    protected abstract void performCleanup();
+
+    /**
+     * This method always throws {@link UnsupportedOperationException}.
+     * Enqueuing details of {@link Cleaner.Cleanable}
+     * are a private implementation detail.
+     *
+     * @throws UnsupportedOperationException always
+     */
+    @Override
+    public final boolean isEnqueued() {
+        throw new UnsupportedOperationException("isEnqueued");
+    }
+
+    /**
+     * This method always throws {@link UnsupportedOperationException}.
+     * Enqueuing details of {@link Cleaner.Cleanable}
+     * are a private implementation detail.
+     *
+     * @throws UnsupportedOperationException always
+     */
+    @Override
+    public final boolean enqueue() {
+        throw new UnsupportedOperationException("enqueue");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/jdk/internal/ref/SoftCleanable.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,178 @@
+/*
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  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.ref;
+
+import java.lang.ref.Cleaner;
+import java.lang.ref.SoftReference;
+import java.util.Objects;
+
+/**
+ * SoftCleanable subclasses efficiently encapsulate cleanup state and
+ * the cleaning action.
+ * Subclasses implement the abstract {@link #performCleanup()}  method
+ * to provide the cleaning action.
+ * When constructed, the object reference and the {@link Cleaner.Cleanable Cleanable}
+ * are registered with the {@link Cleaner}.
+ * The Cleaner invokes {@link Cleaner.Cleanable#clean() clean} after the
+ * referent becomes softly reachable.
+ */
+public abstract class SoftCleanable<T> extends SoftReference<T>
+        implements Cleaner.Cleanable {
+
+    /**
+     * Links to previous and next in a doubly-linked list.
+     */
+    SoftCleanable<?> prev = this, next = this;
+
+    /**
+     * The list of SoftCleanable; synchronizes insert and remove.
+     */
+    private final SoftCleanable<?> list;
+
+    /**
+     * Constructs new {@code SoftCleanableReference} with
+     * {@code non-null referent} and {@code non-null cleaner}.
+     * The {@code cleaner} is not retained by this reference; it is only used
+     * to register the newly constructed {@link Cleaner.Cleanable Cleanable}.
+     *
+     * @param referent the referent to track
+     * @param cleaner  the {@code Cleaner} to register with
+     */
+    public SoftCleanable(T referent, Cleaner cleaner) {
+        super(Objects.requireNonNull(referent), CleanerImpl.getCleanerImpl(cleaner).queue);
+        list = CleanerImpl.getCleanerImpl(cleaner).softCleanableList;
+        insert();
+
+        // TODO: Replace getClass() with ReachabilityFence when it is available
+        cleaner.getClass();
+        referent.getClass();
+    }
+
+    /**
+     * Construct a new root of the list; not inserted.
+     */
+    SoftCleanable() {
+        super(null, null);
+        this.list = this;
+    }
+
+    /**
+     * Insert this SoftCleanableReference after the list head.
+     */
+    private void insert() {
+        synchronized (list) {
+            prev = list;
+            next = list.next;
+            next.prev = this;
+            list.next = this;
+        }
+    }
+
+    /**
+     * Remove this SoftCleanableReference from the list.
+     *
+     * @return true if Cleanable was removed or false if not because
+     * it had already been removed before
+     */
+    private boolean remove() {
+        synchronized (list) {
+            if (next != this) {
+                next.prev = prev;
+                prev.next = next;
+                prev = this;
+                next = this;
+                return true;
+            }
+            return false;
+        }
+    }
+
+    /**
+     * Returns true if the list's next reference refers to itself.
+     *
+     * @return true if the list is empty
+     */
+    boolean isListEmpty() {
+        synchronized (list) {
+            return list == list.next;
+        }
+    }
+
+    /**
+     * Unregister this SoftCleanable reference and invoke {@link #performCleanup()},
+     * ensuring at-most-once semantics.
+     */
+    @Override
+    public final void clean() {
+        if (remove()) {
+            super.clear();
+            performCleanup();
+        }
+    }
+
+    /**
+     * Unregister this SoftCleanable and clear the reference.
+     * Due to inherent concurrency, {@link #performCleanup()} may still be invoked.
+     */
+    @Override
+    public void clear() {
+        if (remove()) {
+            super.clear();
+        }
+    }
+
+    /**
+     * The {@code performCleanup} abstract method is overridden
+     * to implement the cleaning logic.
+     * The {@code performCleanup} method should not be called except
+     * by the {@link #clean} method which ensures at most once semantics.
+     */
+    protected abstract void performCleanup();
+
+    /**
+     * This method always throws {@link UnsupportedOperationException}.
+     * Enqueuing details of {@link Cleaner.Cleanable}
+     * are a private implementation detail.
+     *
+     * @throws UnsupportedOperationException always
+     */
+    @Override
+    public final boolean isEnqueued() {
+        throw new UnsupportedOperationException("isEnqueued");
+    }
+
+    /**
+     * This method always throws {@link UnsupportedOperationException}.
+     * Enqueuing details of {@link Cleaner.Cleanable}
+     * are a private implementation detail.
+     *
+     * @throws UnsupportedOperationException always
+     */
+    @Override
+    public final boolean enqueue() {
+        throw new UnsupportedOperationException("enqueue");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/jdk/internal/ref/WeakCleanable.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,178 @@
+package jdk.internal.ref;
+
+/*
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.lang.ref.Cleaner;
+import java.lang.ref.WeakReference;
+import java.util.Objects;
+
+/**
+ * WeakCleanable subclasses efficiently encapsulate cleanup state and
+ * the cleaning action.
+ * Subclasses implement the abstract {@link #performCleanup()}  method
+ * to provide the cleaning action.
+ * When constructed, the object reference and the {@link Cleaner.Cleanable Cleanable}
+ * are registered with the {@link Cleaner}.
+ * The Cleaner invokes {@link Cleaner.Cleanable#clean() clean} after the
+ * referent becomes weakly reachable.
+ */
+public abstract class WeakCleanable<T> extends WeakReference<T>
+        implements Cleaner.Cleanable {
+
+    /**
+     * Links to previous and next in a doubly-linked list.
+     */
+    WeakCleanable<?> prev = this, next = this;
+
+    /**
+     * The list of WeakCleanable; synchronizes insert and remove.
+     */
+    private final WeakCleanable<?> list;
+
+    /**
+     * Constructs new {@code WeakCleanableReference} with
+     * {@code non-null referent} and {@code non-null cleaner}.
+     * The {@code cleaner} is not retained by this reference; it is only used
+     * to register the newly constructed {@link Cleaner.Cleanable Cleanable}.
+     *
+     * @param referent the referent to track
+     * @param cleaner  the {@code Cleaner} to register new reference with
+     */
+    public WeakCleanable(T referent, Cleaner cleaner) {
+        super(Objects.requireNonNull(referent), CleanerImpl.getCleanerImpl(cleaner).queue);
+        list = CleanerImpl.getCleanerImpl(cleaner).weakCleanableList;
+        insert();
+
+        // TODO: Replace getClass() with ReachabilityFence when it is available
+        cleaner.getClass();
+        referent.getClass();
+    }
+
+    /**
+     * Construct a new root of the list; not inserted.
+     */
+    WeakCleanable() {
+        super(null, null);
+        this.list = this;
+    }
+
+    /**
+     * Insert this WeakCleanableReference after the list head.
+     */
+    private void insert() {
+        synchronized (list) {
+            prev = list;
+            next = list.next;
+            next.prev = this;
+            list.next = this;
+        }
+    }
+
+    /**
+     * Remove this WeakCleanableReference from the list.
+     *
+     * @return true if Cleanable was removed or false if not because
+     * it had already been removed before
+     */
+    private boolean remove() {
+        synchronized (list) {
+            if (next != this) {
+                next.prev = prev;
+                prev.next = next;
+                prev = this;
+                next = this;
+                return true;
+            }
+            return false;
+        }
+    }
+
+    /**
+     * Returns true if the list's next reference refers to itself.
+     *
+     * @return true if the list is empty
+     */
+    boolean isListEmpty() {
+        synchronized (list) {
+            return list == list.next;
+        }
+    }
+
+    /**
+     * Unregister this WeakCleanable reference and invoke {@link #performCleanup()},
+     * ensuring at-most-once semantics.
+     */
+    @Override
+    public final void clean() {
+        if (remove()) {
+            super.clear();
+            performCleanup();
+        }
+    }
+
+    /**
+     * Unregister this WeakCleanable and clear the reference.
+     * Due to inherent concurrency, {@link #performCleanup()} may still be invoked.
+     */
+    @Override
+    public void clear() {
+        if (remove()) {
+            super.clear();
+        }
+    }
+
+    /**
+     * The {@code performCleanup} abstract method is overridden
+     * to implement the cleaning logic.
+     * The {@code performCleanup} method should not be called except
+     * by the {@link #clean} method which ensures at most once semantics.
+     */
+    protected abstract void performCleanup();
+
+    /**
+     * This method always throws {@link UnsupportedOperationException}.
+     * Enqueuing details of {@link Cleaner.Cleanable}
+     * are a private implementation detail.
+     *
+     * @throws UnsupportedOperationException always
+     */
+    @Override
+    public final boolean isEnqueued() {
+        throw new UnsupportedOperationException("isEnqueued");
+    }
+
+    /**
+     * This method always throws {@link UnsupportedOperationException}.
+     * Enqueuing details of {@link Cleaner.Cleanable}
+     * are a private implementation detail.
+     *
+     * @throws UnsupportedOperationException always
+     */
+    @Override
+    public final boolean enqueue() {
+        throw new UnsupportedOperationException("enqueue");
+    }
+}
--- a/jdk/src/java.base/share/classes/jdk/net/ExtendedSocketOptions.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/jdk/net/ExtendedSocketOptions.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public final class ExtendedSocketOptions {
 
     private static class ExtSocketOption<T> implements SocketOption<T> {
--- a/jdk/src/java.base/share/classes/jdk/net/NetworkPermission.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/jdk/net/NetworkPermission.java	Fri Jan 15 09:15:33 2016 +0100
@@ -61,7 +61,6 @@
  * @since 1.8
  */
 
-@jdk.Exported
 public final class NetworkPermission extends BasicPermission {
 
     private static final long serialVersionUID = -2012939586906722291L;
--- a/jdk/src/java.base/share/classes/jdk/net/SocketFlow.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/jdk/net/SocketFlow.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public class SocketFlow {
 
     private static final int UNSET = -1;
@@ -68,7 +67,6 @@
      *
      * @since 1.8
      */
-    @jdk.Exported
     public enum Status {
         /**
          * Set or get socket option has not been called yet. Status
--- a/jdk/src/java.base/share/classes/jdk/net/Sockets.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/jdk/net/Sockets.java	Fri Jan 15 09:15:33 2016 +0100
@@ -55,7 +55,6 @@
  *
  * @see java.nio.channels.NetworkChannel
  */
-@jdk.Exported
 public class Sockets {
 
     private static final HashMap<Class<?>,Set<SocketOption<?>>>
--- a/jdk/src/java.base/share/classes/jdk/net/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/jdk/net/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,5 +30,4 @@
  * @since 1.8
  */
 
-@jdk.Exported
 package jdk.net;
--- a/jdk/src/java.base/share/classes/sun/launcher/LauncherHelper.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/sun/launcher/LauncherHelper.java	Fri Jan 15 09:15:33 2016 +0100
@@ -66,6 +66,7 @@
 import java.util.jar.Attributes;
 import java.util.jar.JarFile;
 import java.util.jar.Manifest;
+import jdk.internal.misc.VM;
 
 public enum LauncherHelper {
     INSTANCE;
@@ -86,9 +87,9 @@
     private static final String PROP_SETTINGS   = "Property settings:";
     private static final String LOCALE_SETTINGS = "Locale settings:";
 
-    // sync with java.c and sun.misc.VM
+    // sync with java.c and jdk.internal.misc.VM
     private static final String diagprop = "sun.java.launcher.diag";
-    static final boolean trace = sun.misc.VM.getSavedProperty(diagprop) != null;
+    static final boolean trace = VM.getSavedProperty(diagprop) != null;
 
     private static final String defaultBundleName =
             "sun.launcher.resources.launcher";
--- a/jdk/src/java.base/share/classes/sun/misc/CEFormatException.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.misc;
-
-import java.io.IOException;
-
-public class CEFormatException extends IOException {
-    static final long serialVersionUID = -7139121221067081482L;
-    public CEFormatException(String s) {
-        super(s);
-    }
-}
-
--- a/jdk/src/java.base/share/classes/sun/misc/CEStreamExhausted.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package sun.misc;
-
-import java.io.IOException;
-
-/** This exception is thrown when EOF is reached */
-public class CEStreamExhausted extends IOException {
-    static final long serialVersionUID = -5889118049525891904L;
-}
-
--- a/jdk/src/java.base/share/classes/sun/misc/JarFilter.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
- * 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.File;
-import java.io.FilenameFilter;
-
-/**
- * This class checks that only jar and zip files are included in the file list.
- * This class is used in extension installation support (ExtensionDependency).
- *
- * @deprecated this class will be removed in a future release.
- * @author  Michael Colburn
- */
-@Deprecated
-public class JarFilter implements FilenameFilter {
-
-    public boolean accept(File dir, String name) {
-        String lower = name.toLowerCase();
-        return lower.endsWith(".jar") || lower.endsWith(".zip");
-    }
-}
--- a/jdk/src/java.base/share/classes/sun/misc/MessageUtils.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
- * Copyright (c) 1995, 2000, Oracle and/or its affiliates. All rights reserved.
- * 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;
-
-/**
- * MessageUtils: miscellaneous utilities for handling error and status
- * properties and messages.
- *
- * @author Herb Jellinek
- */
-
-public class MessageUtils {
-    // can instantiate it for to allow less verbose use - via instance
-    // instead of classname
-
-    public MessageUtils() { }
-
-    public static String subst(String patt, String arg) {
-        String args[] = { arg };
-        return subst(patt, args);
-    }
-
-    public static String subst(String patt, String arg1, String arg2) {
-        String args[] = { arg1, arg2 };
-        return subst(patt, args);
-    }
-
-    public static String subst(String patt, String arg1, String arg2,
-                               String arg3) {
-        String args[] = { arg1, arg2, arg3 };
-        return subst(patt, args);
-    }
-
-    public static String subst(String patt, String args[]) {
-        StringBuilder result = new StringBuilder();
-        int len = patt.length();
-        for (int i = 0; i >= 0 && i < len; i++) {
-            char ch = patt.charAt(i);
-            if (ch == '%') {
-                if (i != len) {
-                    int index = Character.digit(patt.charAt(i + 1), 10);
-                    if (index == -1) {
-                        result.append(patt.charAt(i + 1));
-                        i++;
-                    } else if (index < args.length) {
-                        result.append(args[index]);
-                        i++;
-                    }
-                }
-            } else {
-                result.append(ch);
-            }
-        }
-        return result.toString();
-    }
-
-    public static String substProp(String propName, String arg) {
-        return subst(System.getProperty(propName), arg);
-    }
-
-    public static String substProp(String propName, String arg1, String arg2) {
-        return subst(System.getProperty(propName), arg1, arg2);
-    }
-
-    public static String substProp(String propName, String arg1, String arg2,
-                                   String arg3) {
-        return subst(System.getProperty(propName), arg1, arg2, arg3);
-    }
-
-    /**
-     *  Print a message directly to stderr, bypassing all the
-     *  character conversion methods.
-     *  @param msg   message to print
-     */
-    public static native void toStderr(String msg);
-
-    /**
-     *  Print a message directly to stdout, bypassing all the
-     *  character conversion methods.
-     *  @param msg   message to print
-     */
-    public static native void toStdout(String msg);
-
-
-    // Short forms of the above
-
-    public static void err(String s) {
-        toStderr(s + "\n");
-    }
-
-    public static void out(String s) {
-        toStdout(s + "\n");
-    }
-
-    // Print a stack trace to stderr
-    //
-    public static void where() {
-        Throwable t = new Throwable();
-        StackTraceElement[] es = t.getStackTrace();
-        for (int i = 1; i < es.length; i++)
-            toStderr("\t" + es[i].toString() + "\n");
-    }
-
-}
--- a/jdk/src/java.base/share/classes/sun/misc/Perf.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,538 +0,0 @@
-/*
- * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
- * 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.nio.ByteBuffer;
-import java.security.Permission;
-import java.security.PrivilegedAction;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-
-/**
- * The Perf class provides the ability to attach to an instrumentation
- * buffer maintained by a Java virtual machine. The instrumentation
- * buffer may be for the Java virtual machine running the methods of
- * this class or it may be for another Java virtual machine on the
- * same system.
- * <p>
- * In addition, this class provides methods to create instrumentation
- * objects in the instrumentation buffer for the Java virtual machine
- * that is running these methods. It also contains methods for acquiring
- * the value of a platform specific high resolution clock for time
- * stamp and interval measurement purposes.
- *
- * @author   Brian Doherty
- * @since    1.4.2
- * @see      #getPerf
- * @see      sun.misc.Perf$GetPerfAction
- * @see      java.nio.ByteBuffer
- */
-public final class Perf {
-
-    private static Perf instance;
-
-    private static final int PERF_MODE_RO = 0;
-    private static final int PERF_MODE_RW = 1;
-
-    private Perf() { }    // prevent instantiation
-
-    /**
-     * The GetPerfAction class is a convenience class for acquiring access
-     * to the singleton Perf instance using the
-     * <code>AccessController.doPrivileged()</code> method.
-     * <p>
-     * An instance of this class can be used as the argument to
-     * <code>AccessController.doPrivileged(PrivilegedAction)</code>.
-     * <p> Here is a suggested idiom for use of this class:
-     *
-     * <blockquote><pre>{@code
-     * class MyTrustedClass {
-     *   private static final Perf perf =
-     *       AccessController.doPrivileged(new Perf.GetPerfAction<Perf>());
-     *   ...
-     * }
-     * }</pre></blockquote>
-     * <p>
-     * In the presence of a security manager, the <code>MyTrustedClass</code>
-     * class in the above example will need to be granted the
-     * <em>"sun.misc.Perf.getPerf"</em> <code>RuntimePermission</code>
-     * permission in order to successfully acquire the singleton Perf instance.
-     * <p>
-     * Please note that the <em>"sun.misc.Perf.getPerf"</em> permission
-     * is not a JDK specified permission.
-     *
-     * @see  java.security.AccessController#doPrivileged(PrivilegedAction)
-     * @see  java.lang.RuntimePermission
-     */
-    public static class GetPerfAction implements PrivilegedAction<Perf>
-    {
-        /**
-         * Run the <code>Perf.getPerf()</code> method in a privileged context.
-         *
-         * @see #getPerf
-         */
-        public Perf run() {
-            return getPerf();
-        }
-    }
-
-    /**
-     * Return a reference to the singleton Perf instance.
-     * <p>
-     * The getPerf() method returns the singleton instance of the Perf
-     * class. The returned object provides the caller with the capability
-     * for accessing the instrumentation buffer for this or another local
-     * Java virtual machine.
-     * <p>
-     * If a security manager is installed, its <code>checkPermission</code>
-     * method is called with a <code>RuntimePermission</code> with a target
-     * of <em>"sun.misc.Perf.getPerf"</em>. A security exception will result
-     * if the caller has not been granted this permission.
-     * <p>
-     * Access to the returned <code>Perf</code> object should be protected
-     * by its caller and not passed on to untrusted code. This object can
-     * be used to attach to the instrumentation buffer provided by this Java
-     * virtual machine or for those of other Java virtual machines running
-     * on the same system. The instrumentation buffer may contain senstitive
-     * information. API's built on top of this interface may want to provide
-     * finer grained access control to the contents of individual
-     * instrumentation objects contained within the buffer.
-     * <p>
-     * Please note that the <em>"sun.misc.Perf.getPerf"</em> permission
-     * is not a JDK specified permission.
-     *
-     * @return       A reference to the singleton Perf instance.
-     * @throws AccessControlException  if a security manager exists and
-     *               its <code>checkPermission</code> method doesn't allow
-     *               access to the <em>"sun.misc.Perf.getPerf"</em> target.
-     * @see  java.lang.RuntimePermission
-     * @see  #attach
-     */
-    public static Perf getPerf()
-    {
-        SecurityManager security = System.getSecurityManager();
-        if (security != null) {
-            Permission perm = new RuntimePermission("sun.misc.Perf.getPerf");
-            security.checkPermission(perm);
-        }
-
-        return instance;
-    }
-
-    /**
-     * Attach to the instrumentation buffer for the specified Java virtual
-     * machine.
-     * <p>
-     * This method will attach to the instrumentation buffer for the
-     * specified virtual machine. It returns a <code>ByteBuffer</code> object
-     * that is initialized to access the instrumentation buffer for the
-     * indicated Java virtual machine. The <code>lvmid</code> parameter is
-     * a integer value that uniquely identifies the target local Java virtual
-     * machine. It is typically, but not necessarily, the process id of
-     * the target Java virtual machine.
-     * <p>
-     * If the <code>lvmid</code> identifies a Java virtual machine different
-     * from the one running this method, then the coherency characteristics
-     * of the buffer are implementation dependent. Implementations that do
-     * not support named, coherent, shared memory may return a
-     * <code>ByteBuffer</code> object that contains only a snap shot of the
-     * data in the instrumentation buffer. Implementations that support named,
-     * coherent, shared memory, may return a <code>ByteBuffer</code> object
-     * that will be changing dynamically over time as the target Java virtual
-     * machine updates its mapping of this buffer.
-     * <p>
-     * If the <code>lvmid</code> is 0 or equal to the actual <code>lvmid</code>
-     * for the Java virtual machine running this method, then the returned
-     * <code>ByteBuffer</code> object will always be coherent and dynamically
-     * changing.
-     * <p>
-     * The attach mode specifies the access permissions requested for the
-     * instrumentation buffer of the target virtual machine. The permitted
-     * access permissions are:
-     * <ul>
-     * <li>"r"  - Read only access. This Java virtual machine has only
-     * read access to the instrumentation buffer for the target Java
-     * virtual machine.
-     * <li>"rw"  - Read/Write access. This Java virtual machine has read and
-     * write access to the instrumentation buffer for the target Java virtual
-     * machine. This mode is currently not supported and is reserved for
-     * future enhancements.
-     * </ul>
-     *
-     * @param   lvmid            an integer that uniquely identifies the
-     *                           target local Java virtual machine.
-     * @param   mode             a string indicating the attach mode.
-     * @return  ByteBuffer       a direct allocated byte buffer
-     * @throws  IllegalArgumentException  The lvmid or mode was invalid.
-     * @throws  IOException      An I/O error occurred while trying to acquire
-     *                           the instrumentation buffer.
-     * @throws  OutOfMemoryError The instrumentation buffer could not be mapped
-     *                           into the virtual machine's address space.
-     * @see     java.nio.ByteBuffer
-     */
-    public ByteBuffer attach(int lvmid, String mode)
-           throws IllegalArgumentException, IOException
-    {
-        if (mode.compareTo("r") == 0) {
-            return attachImpl(null, lvmid, PERF_MODE_RO);
-        }
-        else if (mode.compareTo("rw") == 0) {
-            return attachImpl(null, lvmid, PERF_MODE_RW);
-        }
-        else {
-            throw new IllegalArgumentException("unknown mode");
-        }
-    }
-
-    /**
-     * Attach to the instrumentation buffer for the specified Java virtual
-     * machine owned by the given user.
-     * <p>
-     * This method behaves just as the <code>attach(int lvmid, String mode)
-     * </code> method, except that it only searches for Java virtual machines
-     * owned by the specified user.
-     *
-     * @param   user             A <code>String</code> object containing the
-     *                           name of the user that owns the target Java
-     *                           virtual machine.
-     * @param   lvmid            an integer that uniquely identifies the
-     *                           target local Java virtual machine.
-     * @param   mode             a string indicating the attach mode.
-     * @return  ByteBuffer       a direct allocated byte buffer
-     * @throws  IllegalArgumentException  The lvmid or mode was invalid.
-     * @throws  IOException      An I/O error occurred while trying to acquire
-     *                           the instrumentation buffer.
-     * @throws  OutOfMemoryError The instrumentation buffer could not be mapped
-     *                           into the virtual machine's address space.
-     * @see     java.nio.ByteBuffer
-     */
-    public ByteBuffer attach(String user, int lvmid, String mode)
-           throws IllegalArgumentException, IOException
-    {
-        if (mode.compareTo("r") == 0) {
-            return attachImpl(user, lvmid, PERF_MODE_RO);
-        }
-        else if (mode.compareTo("rw") == 0) {
-            return attachImpl(user, lvmid, PERF_MODE_RW);
-        }
-        else {
-            throw new IllegalArgumentException("unknown mode");
-        }
-    }
-
-    /**
-     * Call the implementation specific attach method.
-     * <p>
-     * This method calls into the Java virtual machine to perform the platform
-     * specific attach method. Buffers returned from this method are
-     * internally managed as <code>PhantomRefereces</code> to provide for
-     * guaranteed, secure release of the native resources.
-     *
-     * @param   user             A <code>String</code> object containing the
-     *                           name of the user that owns the target Java
-     *                           virtual machine.
-     * @param   lvmid            an integer that uniquely identifies the
-     *                           target local Java virtual machine.
-     * @param   mode             a string indicating the attach mode.
-     * @return  ByteBuffer       a direct allocated byte buffer
-     * @throws  IllegalArgumentException  The lvmid or mode was invalid.
-     * @throws  IOException      An I/O error occurred while trying to acquire
-     *                           the instrumentation buffer.
-     * @throws  OutOfMemoryError The instrumentation buffer could not be mapped
-     *                           into the virtual machine's address space.
-     */
-    private ByteBuffer attachImpl(String user, int lvmid, int mode)
-            throws IllegalArgumentException, IOException
-    {
-        final ByteBuffer b = attach(user, lvmid, mode);
-
-        if (lvmid == 0) {
-            // The native instrumentation buffer for this Java virtual
-            // machine is never unmapped.
-            return b;
-        }
-        else {
-            // This is an instrumentation buffer for another Java virtual
-            // machine with native resources that need to be managed. We
-            // create a duplicate of the native ByteBuffer and manage it
-            // with a Cleaner object (PhantomReference). When the duplicate
-            // becomes only phantomly reachable, the native resources will
-            // be released.
-
-            final ByteBuffer dup = b.duplicate();
-            Cleaner.create(dup, new Runnable() {
-                    public void run() {
-                        try {
-                            instance.detach(b);
-                        }
-                        catch (Throwable th) {
-                            // avoid crashing the reference handler thread,
-                            // but provide for some diagnosability
-                            assert false : th.toString();
-                        }
-                    }
-                });
-            return dup;
-        }
-    }
-
-    /**
-     * Native method to perform the implementation specific attach mechanism.
-     * <p>
-     * The implementation of this method may return distinct or identical
-     * <code>ByteBuffer</code> objects for two distinct calls requesting
-     * attachment to the same Java virtual machine.
-     * <p>
-     * For the Sun HotSpot JVM, two distinct calls to attach to the same
-     * target Java virtual machine will result in two distinct ByteBuffer
-     * objects returned by this method. This may change in a future release.
-     *
-     * @param   user             A <code>String</code> object containing the
-     *                           name of the user that owns the target Java
-     *                           virtual machine.
-     * @param   lvmid            an integer that uniquely identifies the
-     *                           target local Java virtual machine.
-     * @param   mode             a string indicating the attach mode.
-     * @return  ByteBuffer       a direct allocated byte buffer
-     * @throws  IllegalArgumentException  The lvmid or mode was invalid.
-     * @throws  IOException      An I/O error occurred while trying to acquire
-     *                           the instrumentation buffer.
-     * @throws  OutOfMemoryError The instrumentation buffer could not be mapped
-     *                           into the virtual machine's address space.
-     */
-    private native ByteBuffer attach(String user, int lvmid, int mode)
-                   throws IllegalArgumentException, IOException;
-
-    /**
-     * Native method to perform the implementation specific detach mechanism.
-     * <p>
-     * If this method is passed a <code>ByteBuffer</code> object that is
-     * not created by the <code>attach</code> method, then the results of
-     * this method are undefined, with unpredictable and potentially damaging
-     * effects to the Java virtual machine. To prevent accidental or malicious
-     * use of this method, all native ByteBuffer created by the <code>
-     * attach</code> method are managed internally as PhantomReferences
-     * and resources are freed by the system.
-     * <p>
-     * If this method is passed a <code>ByteBuffer</code> object created
-     * by the <code>attach</code> method with a lvmid for the Java virtual
-     * machine running this method (lvmid=0, for example), then the detach
-     * request is silently ignored.
-     *
-     * @param ByteBuffer  A direct allocated byte buffer created by the
-     *                    <code>attach</code> method.
-     * @see   java.nio.ByteBuffer
-     * @see   #attach
-     */
-    private native void detach(ByteBuffer bb);
-
-    /**
-     * Create a <code>long</code> scalar entry in the instrumentation buffer
-     * with the given variability characteristic, units, and initial value.
-     * <p>
-     * Access to the instrument is provided through the returned <code>
-     * ByteBuffer</code> object. Typically, this object should be wrapped
-     * with <code>LongBuffer</code> view object.
-     *
-     * @param   variability the variability characteristic for this entry.
-     * @param   units       the units for this entry.
-     * @param   name        the name of this entry.
-     * @param   value       the initial value for this entry.
-     * @return  ByteBuffer  a direct allocated ByteBuffer object that
-     *                      allows write access to a native memory location
-     *                      containing a <code>long</code> value.
-     *
-     * see sun.misc.perf.Variability
-     * see sun.misc.perf.Units
-     * @see java.nio.ByteBuffer
-     */
-    public native ByteBuffer createLong(String name, int variability,
-                                        int units, long value);
-
-    /**
-     * Create a <code>String</code> entry in the instrumentation buffer with
-     * the given variability characteristic, units, and initial value.
-     * <p>
-     * The maximum length of the <code>String</code> stored in this string
-     * instrument is given in by <code>maxLength</code> parameter. Updates
-     * to this instrument with <code>String</code> values with lengths greater
-     * than <code>maxLength</code> will be truncated to <code>maxLength</code>.
-     * The truncated value will be terminated by a null character.
-     * <p>
-     * The underlying implementation may further limit the length of the
-     * value, but will continue to preserve the null terminator.
-     * <p>
-     * Access to the instrument is provided through the returned <code>
-     * ByteBuffer</code> object.
-     *
-     * @param   variability the variability characteristic for this entry.
-     * @param   units       the units for this entry.
-     * @param   name        the name of this entry.
-     * @param   value       the initial value for this entry.
-     * @param   maxLength   the maximum string length for this string
-     *                      instrument.
-     * @return  ByteBuffer  a direct allocated ByteBuffer that allows
-     *                      write access to a native memory location
-     *                      containing a <code>long</code> value.
-     *
-     * see sun.misc.perf.Variability
-     * see sun.misc.perf.Units
-     * @see java.nio.ByteBuffer
-     */
-    public ByteBuffer createString(String name, int variability,
-                                   int units, String value, int maxLength)
-    {
-        byte[] v = getBytes(value);
-        byte[] v1 = new byte[v.length+1];
-        System.arraycopy(v, 0, v1, 0, v.length);
-        v1[v.length] = '\0';
-        return createByteArray(name, variability, units, v1, Math.max(v1.length, maxLength));
-    }
-
-    /**
-     * Create a <code>String</code> entry in the instrumentation buffer with
-     * the given variability characteristic, units, and initial value.
-     * <p>
-     * The maximum length of the <code>String</code> stored in this string
-     * instrument is implied by the length of the <code>value</code> parameter.
-     * Subsequent updates to the value of this instrument will be truncated
-     * to this implied maximum length. The truncated value will be terminated
-     * by a null character.
-     * <p>
-     * The underlying implementation may further limit the length of the
-     * initial or subsequent value, but will continue to preserve the null
-     * terminator.
-     * <p>
-     * Access to the instrument is provided through the returned <code>
-     * ByteBuffer</code> object.
-     *
-     * @param   variability the variability characteristic for this entry.
-     * @param   units       the units for this entry.
-     * @param   name        the name of this entry.
-     * @param   value       the initial value for this entry.
-     * @return  ByteBuffer  a direct allocated ByteBuffer that allows
-     *                      write access to a native memory location
-     *                      containing a <code>long</code> value.
-     *
-     * see sun.misc.perf.Variability
-     * see sun.misc.perf.Units
-     * @see java.nio.ByteBuffer
-     */
-    public ByteBuffer createString(String name, int variability,
-                                   int units, String value)
-    {
-        byte[] v = getBytes(value);
-        byte[] v1 = new byte[v.length+1];
-        System.arraycopy(v, 0, v1, 0, v.length);
-        v1[v.length] = '\0';
-        return createByteArray(name, variability, units, v1, v1.length);
-    }
-
-    /**
-     * Create a <code>byte</code> vector entry in the instrumentation buffer
-     * with the given variability characteristic, units, and initial value.
-     * <p>
-     * The <code>maxLength</code> parameter limits the size of the byte
-     * array instrument such that the initial or subsequent updates beyond
-     * this length are silently ignored. No special handling of truncated
-     * updates is provided.
-     * <p>
-     * The underlying implementation may further limit the length of the
-     * length of the initial or subsequent value.
-     * <p>
-     * Access to the instrument is provided through the returned <code>
-     * ByteBuffer</code> object.
-     *
-     * @param   variability the variability characteristic for this entry.
-     * @param   units       the units for this entry.
-     * @param   name        the name of this entry.
-     * @param   value       the initial value for this entry.
-     * @param   maxLength   the maximum length of this byte array.
-     * @return  ByteBuffer  a direct allocated byte buffer that allows
-     *                      write access to a native memory location
-     *                      containing a <code>long</code> value.
-     *
-     * see sun.misc.perf.Variability
-     * see sun.misc.perf.Units
-     * @see java.nio.ByteBuffer
-     */
-    public native ByteBuffer createByteArray(String name, int variability,
-                                             int units, byte[] value,
-                                             int maxLength);
-
-
-    /**
-     * convert string to an array of UTF-8 bytes
-     */
-    private static byte[] getBytes(String s)
-    {
-        byte[] bytes = null;
-
-        try {
-            bytes = s.getBytes("UTF-8");
-        }
-        catch (UnsupportedEncodingException e) {
-            // ignore, UTF-8 encoding is always known
-        }
-
-        return bytes;
-    }
-
-    /**
-     * Return the value of the High Resolution Counter.
-     *
-     * The High Resolution Counter returns the number of ticks since
-     * since the start of the Java virtual machine. The resolution of
-     * the counter is machine dependent and can be determined from the
-     * value return by the {@link #highResFrequency} method.
-     *
-     * @return  the number of ticks of machine dependent resolution since
-     *          the start of the Java virtual machine.
-     *
-     * @see #highResFrequency
-     * @see java.lang.System#currentTimeMillis()
-     */
-    public native long highResCounter();
-
-    /**
-     * Returns the frequency of the High Resolution Counter, in ticks per
-     * second.
-     *
-     * This value can be used to convert the value of the High Resolution
-     * Counter, as returned from a call to the {@link #highResCounter} method,
-     * into the number of seconds since the start of the Java virtual machine.
-     *
-     * @return  the frequency of the High Resolution Counter.
-     * @see #highResCounter
-     */
-    public native long highResFrequency();
-
-    private static native void registerNatives();
-
-    static {
-        registerNatives();
-        instance = new Perf();
-    }
-}
--- a/jdk/src/java.base/share/classes/sun/misc/PerfCounter.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-/*
- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
- * 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.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.LongBuffer;
-import java.security.AccessController;
-
-/**
- * Performance counter support for internal JRE classes.
- * This class defines a fixed list of counters for the platform
- * to use as an interim solution until RFE# 6209222 is implemented.
- * The perf counters will be created in the jvmstat perf buffer
- * that the HotSpot VM creates. The default size is 32K and thus
- * the number of counters is bounded.  You can alter the size
- * with {@code -XX:PerfDataMemorySize=<bytes>} option. If there is
- * insufficient memory in the jvmstat perf buffer, the C heap memory
- * will be used and thus the application will continue to run if
- * the counters added exceeds the buffer size but the counters
- * will be missing.
- *
- * See HotSpot jvmstat implementation for certain circumstances
- * that the jvmstat perf buffer is not supported.
- *
- */
-public class PerfCounter {
-    private static final Perf perf =
-        AccessController.doPrivileged(new Perf.GetPerfAction());
-
-    // Must match values defined in hotspot/src/share/vm/runtime/perfdata.hpp
-    private static final int V_Constant  = 1;
-    private static final int V_Monotonic = 2;
-    private static final int V_Variable  = 3;
-    private static final int U_None      = 1;
-
-    private final String name;
-    private final LongBuffer lb;
-
-    private PerfCounter(String name, int type) {
-        this.name = name;
-        ByteBuffer bb = perf.createLong(name, type, U_None, 0L);
-        bb.order(ByteOrder.nativeOrder());
-        this.lb = bb.asLongBuffer();
-    }
-
-    static PerfCounter newPerfCounter(String name) {
-        return new PerfCounter(name, V_Variable);
-    }
-
-    static PerfCounter newConstantPerfCounter(String name) {
-        PerfCounter c = new PerfCounter(name, V_Constant);
-        return c;
-    }
-
-    /**
-     * Returns the current value of the perf counter.
-     */
-    public synchronized long get() {
-        return lb.get(0);
-    }
-
-    /**
-     * Sets the value of the perf counter to the given newValue.
-     */
-    public synchronized void set(long newValue) {
-        lb.put(0, newValue);
-    }
-
-    /**
-     * Adds the given value to the perf counter.
-     */
-    public synchronized void add(long value) {
-        long res = get() + value;
-        lb.put(0, res);
-    }
-
-    /**
-     * Increments the perf counter with 1.
-     */
-    public void increment() {
-        add(1);
-    }
-
-    /**
-     * Adds the given interval to the perf counter.
-     */
-    public void addTime(long interval) {
-        add(interval);
-    }
-
-    /**
-     * Adds the elapsed time from the given start time (ns) to the perf counter.
-     */
-    public void addElapsedTimeFrom(long startTime) {
-        add(System.nanoTime() - startTime);
-    }
-
-    @Override
-    public String toString() {
-        return name + " = " + get();
-    }
-
-    static class CoreCounters {
-        static final PerfCounter pdt   = newPerfCounter("sun.classloader.parentDelegationTime");
-        static final PerfCounter lc    = newPerfCounter("sun.classloader.findClasses");
-        static final PerfCounter lct   = newPerfCounter("sun.classloader.findClassTime");
-        static final PerfCounter rcbt  = newPerfCounter("sun.urlClassLoader.readClassBytesTime");
-        static final PerfCounter zfc   = newPerfCounter("sun.zip.zipFiles");
-        static final PerfCounter zfot  = newPerfCounter("sun.zip.zipFile.openTime");
-    }
-
-    static class WindowsClientCounters {
-        static final PerfCounter d3dAvailable = newConstantPerfCounter("sun.java2d.d3d.available");
-    }
-
-    /**
-     * Number of findClass calls
-     */
-    public static PerfCounter getFindClasses() {
-        return CoreCounters.lc;
-    }
-
-    /**
-     * Time (ns) spent in finding classes that includes
-     * lookup and read class bytes and defineClass
-     */
-    public static PerfCounter getFindClassTime() {
-        return CoreCounters.lct;
-    }
-
-    /**
-     * Time (ns) spent in finding classes
-     */
-    public static PerfCounter getReadClassBytesTime() {
-        return CoreCounters.rcbt;
-    }
-
-    /**
-     * Time (ns) spent in the parent delegation to
-     * the parent of the defining class loader
-     */
-    public static PerfCounter getParentDelegationTime() {
-        return CoreCounters.pdt;
-    }
-
-    /**
-     * Number of zip files opened.
-     */
-    public static PerfCounter getZipFileCount() {
-        return CoreCounters.zfc;
-    }
-
-    /**
-     * Time (ns) spent in opening the zip files that
-     * includes building the entries hash table
-     */
-    public static PerfCounter getZipFileOpenTime() {
-        return CoreCounters.zfot;
-    }
-
-    /**
-     * D3D graphic pipeline available
-     */
-    public static PerfCounter getD3DAvailable() {
-        return WindowsClientCounters.d3dAvailable;
-    }
-}
--- a/jdk/src/java.base/share/classes/sun/misc/PerformanceLogger.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,317 +0,0 @@
-/*
- * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
- * 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.util.Vector;
-import java.io.FileWriter;
-import java.io.File;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-
-/**
- * This class is intended to be a central place for the jdk to
- * log timing events of interest.  There is pre-defined event
- * of startTime, as well as a general
- * mechanism of setting arbitrary times in an array.
- * All unreserved times in the array can be used by callers
- * in application-defined situations.  The caller is responsible
- * for setting and getting all times and for doing whatever
- * analysis is interesting; this class is merely a central container
- * for those timing values.
- * Note that, due to the variables in this class being static,
- * use of particular time values by multiple applets will cause
- * confusing results.  For example, if plugin runs two applets
- * simultaneously, the initTime for those applets will collide
- * and the results may be undefined.
- * <P>
- * To automatically track startup performance in an app or applet,
- * use the command-line parameter sun.perflog as follows:<BR>
- * <pre>{@code
- *     -Dsun.perflog[=file:<filename>]
- * }</pre>
- * <BR>
- * where simply using the parameter with no value will enable output
- * to the console and a value of "{@code file:<filename>}" will cause
- * that given filename to be created and used for all output.
- * <P>
- * By default, times are measured using System.currentTimeMillis().  To use
- * System.nanoTime() instead, add the command-line parameter:<BR>
-       -Dsun.perflog.nano=true
- * <BR>
- * <P>
- * <B>Warning: Use at your own risk!</B>
- * This class is intended for internal testing
- * purposes only and may be removed at any time.  More
- * permanent monitoring and profiling APIs are expected to be
- * developed for future releases and this class will cease to
- * exist once those APIs are in place.
- * @author Chet Haase
- */
-public class PerformanceLogger {
-
-    // Timing values of global interest
-    private static final int START_INDEX    = 0;    // VM start
-    private static final int LAST_RESERVED  = START_INDEX;
-
-    private static boolean perfLoggingOn = false;
-    private static boolean useNanoTime = false;
-    private static Vector<TimeData> times;
-    private static String logFileName = null;
-    private static Writer logWriter = null;
-    private static long baseTime;
-
-    static {
-        String perfLoggingProp =
-            java.security.AccessController.doPrivileged(
-            new sun.security.action.GetPropertyAction("sun.perflog"));
-        if (perfLoggingProp != null) {
-            perfLoggingOn = true;
-
-            // Check if we should use nanoTime
-            String perfNanoProp =
-                java.security.AccessController.doPrivileged(
-                new sun.security.action.GetPropertyAction("sun.perflog.nano"));
-            if (perfNanoProp != null) {
-                useNanoTime = true;
-            }
-
-            // Now, figure out what the user wants to do with the data
-            if (perfLoggingProp.regionMatches(true, 0, "file:", 0, 5)) {
-                logFileName = perfLoggingProp.substring(5);
-            }
-            if (logFileName != null) {
-                if (logWriter == null) {
-                    java.security.AccessController.doPrivileged(
-                    new java.security.PrivilegedAction<Void>() {
-                        public Void run() {
-                            try {
-                                File logFile = new File(logFileName);
-                                logFile.createNewFile();
-                                logWriter = new FileWriter(logFile);
-                            } catch (Exception e) {
-                                System.out.println(e + ": Creating logfile " +
-                                                   logFileName +
-                                                   ".  Log to console");
-                            }
-                            return null;
-                        }
-                    });
-                }
-            }
-            if (logWriter == null) {
-                logWriter = new OutputStreamWriter(System.out);
-            }
-        }
-        times = new Vector<TimeData>(10);
-        // Reserve predefined slots
-        for (int i = 0; i <= LAST_RESERVED; ++i) {
-            times.add(new TimeData("Time " + i + " not set", 0));
-        }
-    }
-
-    /**
-     * Returns status of whether logging is enabled or not.  This is
-     * provided as a convenience method so that users do not have to
-     * perform the same GetPropertyAction check as above to determine whether
-     * to enable performance logging.
-     */
-    public static boolean loggingEnabled() {
-        return perfLoggingOn;
-    }
-
-
-    /**
-     * Internal class used to store time/message data together.
-     */
-    static class TimeData {
-        String message;
-        long time;
-
-        TimeData(String message, long time) {
-            this.message = message;
-            this.time = time;
-        }
-
-        String getMessage() {
-            return message;
-        }
-
-        long getTime() {
-            return time;
-        }
-    }
-
-    /**
-     * Return the current time, in millis or nanos as appropriate
-     */
-    private static long getCurrentTime() {
-        if (useNanoTime) {
-            return System.nanoTime();
-        } else {
-            return System.currentTimeMillis();
-        }
-    }
-
-    /**
-     * Sets the start time.  Ideally, this is the earliest time available
-     * during the startup of a Java applet or application.  This time is
-     * later used to analyze the difference between the initial startup
-     * time and other events in the system (such as an applet's init time).
-     */
-    public static void setStartTime(String message) {
-        if (loggingEnabled()) {
-            long nowTime = getCurrentTime();
-            setStartTime(message, nowTime);
-        }
-    }
-
-    /**
-     * Sets the base time, output can then
-     * be displayed as offsets from the base time;.
-     */
-    public static void setBaseTime(long time) {
-        if (loggingEnabled()) {
-            baseTime = time;
-        }
-    }
-
-    /**
-     * Sets the start time.
-     * This version of the method is
-     * given the time to log, instead of expecting this method to
-     * get the time itself.  This is done in case the time was
-     * recorded much earlier than this method was called.
-     */
-    public static void setStartTime(String message, long time) {
-        if (loggingEnabled()) {
-            times.set(START_INDEX, new TimeData(message, time));
-        }
-    }
-
-    /**
-     * Gets the start time, which should be the time when
-     * the java process started, prior to the VM actually being
-     * loaded.
-     */
-    public static long getStartTime() {
-        if (loggingEnabled()) {
-            return times.get(START_INDEX).getTime();
-        } else {
-            return 0;
-        }
-    }
-
-    /**
-     * Sets the value of a given time and returns the index of the
-     * slot that that time was stored in.
-     */
-    public static int setTime(String message) {
-        if (loggingEnabled()) {
-            long nowTime = getCurrentTime();
-            return setTime(message, nowTime);
-        } else {
-            return 0;
-        }
-    }
-
-    /**
-     * Sets the value of a given time and returns the index of the
-     * slot that that time was stored in.
-     * This version of the method is
-     * given the time to log, instead of expecting this method to
-     * get the time itself.  This is done in case the time was
-     * recorded much earlier than this method was called.
-     */
-    public static int setTime(String message, long time) {
-        if (loggingEnabled()) {
-            // times is already synchronized, but we need to ensure that
-            // the size used in times.set() is the same used when returning
-            // the index of that operation.
-            synchronized (times) {
-                times.add(new TimeData(message, time));
-                return (times.size() - 1);
-            }
-        } else {
-            return 0;
-        }
-    }
-
-    /**
-     * Returns time at given index.
-     */
-    public static long getTimeAtIndex(int index) {
-        if (loggingEnabled()) {
-            return times.get(index).getTime();
-        } else {
-            return 0;
-        }
-    }
-
-    /**
-     * Returns message at given index.
-     */
-    public static String getMessageAtIndex(int index) {
-        if (loggingEnabled()) {
-            return times.get(index).getMessage();
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * Outputs all data to parameter-specified Writer object
-     */
-    public static void outputLog(Writer writer) {
-        if (loggingEnabled()) {
-            try {
-                synchronized(times) {
-                    for (int i = 0; i < times.size(); ++i) {
-                        TimeData td = times.get(i);
-                        if (td != null) {
-                            writer.write(i + " " + td.getMessage() + ": " +
-                                         (td.getTime() - baseTime) + "\n");
-
-                        }
-                    }
-                }
-                writer.flush();
-            } catch (Exception e) {
-                System.out.println(e + ": Writing performance log to " +
-                                   writer);
-            }
-        }
-    }
-
-    /**
-     * Outputs all data to whatever location the user specified
-     * via sun.perflog command-line parameter.
-     */
-    public static void outputLog() {
-        outputLog(logWriter);
-    }
-}
--- a/jdk/src/java.base/share/classes/sun/misc/Unsafe.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/sun/misc/Unsafe.java	Fri Jan 15 09:15:33 2016 +0100
@@ -26,6 +26,7 @@
 package sun.misc;
 
 import jdk.internal.HotSpotIntrinsicCandidate;
+import jdk.internal.misc.VM;
 import sun.reflect.CallerSensitive;
 import sun.reflect.Reflection;
 
--- a/jdk/src/java.base/share/classes/sun/misc/VM.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,433 +0,0 @@
-/*
- * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
- * 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 static java.lang.Thread.State.*;
-import java.util.Properties;
-
-public class VM {
-
-    /* The following methods used to be native methods that instruct
-     * the VM to selectively suspend certain threads in low-memory
-     * situations. They are inherently dangerous and not implementable
-     * on native threads. We removed them in JDK 1.2. The skeletons
-     * remain so that existing applications that use these methods
-     * will still work.
-     */
-    private static boolean suspended = false;
-
-    /** @deprecated */
-    @Deprecated
-    public static boolean threadsSuspended() {
-        return suspended;
-    }
-
-    @SuppressWarnings("deprecation")
-    public static boolean allowThreadSuspension(ThreadGroup g, boolean b) {
-        return g.allowThreadSuspension(b);
-    }
-
-    /** @deprecated */
-    @Deprecated
-    public static boolean suspendThreads() {
-        suspended = true;
-        return true;
-    }
-
-    // Causes any suspended threadgroups to be resumed.
-    /** @deprecated */
-    @Deprecated
-    public static void unsuspendThreads() {
-        suspended = false;
-    }
-
-    // Causes threadgroups no longer marked suspendable to be resumed.
-    /** @deprecated */
-    @Deprecated
-    public static void unsuspendSomeThreads() {
-    }
-
-    /* Deprecated fields and methods -- Memory advice not supported in 1.2 */
-
-    /** @deprecated */
-    @Deprecated
-    public static final int STATE_GREEN = 1;
-
-    /** @deprecated */
-    @Deprecated
-    public static final int STATE_YELLOW = 2;
-
-    /** @deprecated */
-    @Deprecated
-    public static final int STATE_RED = 3;
-
-    /** @deprecated */
-    @Deprecated
-    public static final int getState() {
-        return STATE_GREEN;
-    }
-
-    /** @deprecated */
-    @Deprecated
-    public static void registerVMNotification(VMNotification n) { }
-
-    /** @deprecated */
-    @Deprecated
-    public static void asChange(int as_old, int as_new) { }
-
-    /** @deprecated */
-    @Deprecated
-    public static void asChange_otherthread(int as_old, int as_new) { }
-
-    /*
-     * Not supported in 1.2 because these will have to be exported as
-     * JVM functions, and we are not sure we want do that. Leaving
-     * here so it can be easily resurrected -- just remove the //
-     * comments.
-     */
-
-    /**
-     * Resume Java profiling.  All profiling data is added to any
-     * earlier profiling, unless <code>resetJavaProfiler</code> is
-     * called in between.  If profiling was not started from the
-     * command line, <code>resumeJavaProfiler</code> will start it.
-     * <p>
-     *
-     * NOTE: Profiling must be enabled from the command line for a
-     * java.prof report to be automatically generated on exit; if not,
-     * writeJavaProfilerReport must be invoked to write a report.
-     *
-     * @see     resetJavaProfiler
-     * @see     writeJavaProfilerReport
-     */
-
-    // public native static void resumeJavaProfiler();
-
-    /**
-     * Suspend Java profiling.
-     */
-    // public native static void suspendJavaProfiler();
-
-    /**
-     * Initialize Java profiling.  Any accumulated profiling
-     * information is discarded.
-     */
-    // public native static void resetJavaProfiler();
-
-    /**
-     * Write the current profiling contents to the file "java.prof".
-     * If the file already exists, it will be overwritten.
-     */
-    // public native static void writeJavaProfilerReport();
-
-
-    private static volatile boolean booted = false;
-    private static final Object lock = new Object();
-
-    // Invoked by System.initializeSystemClass just before returning.
-    // Subsystems that are invoked during initialization can check this
-    // property in order to avoid doing things that should wait until the
-    // application class loader has been set up.
-    //
-    public static void booted() {
-        synchronized (lock) {
-            booted = true;
-            lock.notifyAll();
-        }
-    }
-
-    public static boolean isBooted() {
-        return booted;
-    }
-
-    // Waits until VM completes initialization
-    //
-    // This method is invoked by the Finalizer thread
-    public static void awaitBooted() throws InterruptedException {
-        synchronized (lock) {
-            while (!booted) {
-                lock.wait();
-            }
-        }
-    }
-
-    // A user-settable upper limit on the maximum amount of allocatable direct
-    // buffer memory.  This value may be changed during VM initialization if
-    // "java" is launched with "-XX:MaxDirectMemorySize=<size>".
-    //
-    // The initial value of this field is arbitrary; during JRE initialization
-    // it will be reset to the value specified on the command line, if any,
-    // otherwise to Runtime.getRuntime().maxMemory().
-    //
-    private static long directMemory = 64 * 1024 * 1024;
-
-    // Returns the maximum amount of allocatable direct buffer memory.
-    // The directMemory variable is initialized during system initialization
-    // in the saveAndRemoveProperties method.
-    //
-    public static long maxDirectMemory() {
-        return directMemory;
-    }
-
-    // User-controllable flag that determines if direct buffers should be page
-    // aligned. The "-XX:+PageAlignDirectMemory" option can be used to force
-    // buffers, allocated by ByteBuffer.allocateDirect, to be page aligned.
-    private static boolean pageAlignDirectMemory;
-
-    // Returns {@code true} if the direct buffers should be page aligned. This
-    // variable is initialized by saveAndRemoveProperties.
-    public static boolean isDirectMemoryPageAligned() {
-        return pageAlignDirectMemory;
-    }
-
-    /**
-     * Returns true if the given class loader is in the system domain
-     * in which all permissions are granted.
-     */
-    public static boolean isSystemDomainLoader(ClassLoader loader) {
-        return loader == null;
-    }
-
-    /**
-     * Returns the system property of the specified key saved at
-     * system initialization time.  This method should only be used
-     * for the system properties that are not changed during runtime.
-     * It accesses a private copy of the system properties so
-     * that user's locking of the system properties object will not
-     * cause the library to deadlock.
-     *
-     * Note that the saved system properties do not include
-     * the ones set by sun.misc.Version.init().
-     *
-     */
-    public static String getSavedProperty(String key) {
-        if (savedProps.isEmpty())
-            throw new IllegalStateException("Should be non-empty if initialized");
-
-        return savedProps.getProperty(key);
-    }
-
-    // TODO: the Property Management needs to be refactored and
-    // the appropriate prop keys need to be accessible to the
-    // calling classes to avoid duplication of keys.
-    private static final Properties savedProps = new Properties();
-
-    // Save a private copy of the system properties and remove
-    // the system properties that are not intended for public access.
-    //
-    // This method can only be invoked during system initialization.
-    public static void saveAndRemoveProperties(Properties props) {
-        if (booted)
-            throw new IllegalStateException("System initialization has completed");
-
-        savedProps.putAll(props);
-
-        // Set the maximum amount of direct memory.  This value is controlled
-        // by the vm option -XX:MaxDirectMemorySize=<size>.
-        // The maximum amount of allocatable direct buffer memory (in bytes)
-        // from the system property sun.nio.MaxDirectMemorySize set by the VM.
-        // The system property will be removed.
-        String s = (String)props.remove("sun.nio.MaxDirectMemorySize");
-        if (s != null) {
-            if (s.equals("-1")) {
-                // -XX:MaxDirectMemorySize not given, take default
-                directMemory = Runtime.getRuntime().maxMemory();
-            } else {
-                long l = Long.parseLong(s);
-                if (l > -1)
-                    directMemory = l;
-            }
-        }
-
-        // Check if direct buffers should be page aligned
-        s = (String)props.remove("sun.nio.PageAlignDirectMemory");
-        if ("true".equals(s))
-            pageAlignDirectMemory = true;
-
-        // Remove other private system properties
-        // used by java.lang.Integer.IntegerCache
-        props.remove("java.lang.Integer.IntegerCache.high");
-
-        // used by sun.launcher.LauncherHelper
-        props.remove("sun.java.launcher.diag");
-    }
-
-    // Initialize any miscellenous operating system settings that need to be
-    // set for the class libraries.
-    //
-    public static void initializeOSEnvironment() {
-        if (!booted) {
-            OSEnvironment.initialize();
-        }
-    }
-
-    /* Current count of objects pending for finalization */
-    private static volatile int finalRefCount;
-
-    /* Peak count of objects pending for finalization */
-    private static volatile int peakFinalRefCount;
-
-    /*
-     * Gets the number of objects pending for finalization.
-     *
-     * @return the number of objects pending for finalization.
-     */
-    public static int getFinalRefCount() {
-        return finalRefCount;
-    }
-
-    /*
-     * Gets the peak number of objects pending for finalization.
-     *
-     * @return the peak number of objects pending for finalization.
-     */
-    public static int getPeakFinalRefCount() {
-        return peakFinalRefCount;
-    }
-
-    /*
-     * Add {@code n} to the objects pending for finalization count.
-     *
-     * @param n an integer value to be added to the objects pending
-     * for finalization count
-     */
-    public static void addFinalRefCount(int n) {
-        // The caller must hold lock to synchronize the update.
-
-        finalRefCount += n;
-        if (finalRefCount > peakFinalRefCount) {
-            peakFinalRefCount = finalRefCount;
-        }
-    }
-
-    /**
-     * Returns Thread.State for the given threadStatus
-     */
-    public static Thread.State toThreadState(int threadStatus) {
-        if ((threadStatus & JVMTI_THREAD_STATE_RUNNABLE) != 0) {
-            return RUNNABLE;
-        } else if ((threadStatus & JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER) != 0) {
-            return BLOCKED;
-        } else if ((threadStatus & JVMTI_THREAD_STATE_WAITING_INDEFINITELY) != 0) {
-            return WAITING;
-        } else if ((threadStatus & JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) != 0) {
-            return TIMED_WAITING;
-        } else if ((threadStatus & JVMTI_THREAD_STATE_TERMINATED) != 0) {
-            return TERMINATED;
-        } else if ((threadStatus & JVMTI_THREAD_STATE_ALIVE) == 0) {
-            return NEW;
-        } else {
-            return RUNNABLE;
-        }
-    }
-
-    /* The threadStatus field is set by the VM at state transition
-     * in the hotspot implementation. Its value is set according to
-     * the JVM TI specification GetThreadState function.
-     */
-    private static final int JVMTI_THREAD_STATE_ALIVE = 0x0001;
-    private static final int JVMTI_THREAD_STATE_TERMINATED = 0x0002;
-    private static final int JVMTI_THREAD_STATE_RUNNABLE = 0x0004;
-    private static final int JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400;
-    private static final int JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010;
-    private static final int JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020;
-
-    /*
-     * Returns the first non-null class loader up the execution stack,
-     * or null if only code from the null class loader is on the stack.
-     */
-    public static native ClassLoader latestUserDefinedLoader();
-
-    /**
-     * Returns {@code true} if we are in a set UID program.
-     */
-    public static boolean isSetUID() {
-        long uid = getuid();
-        long euid = geteuid();
-        long gid = getgid();
-        long egid = getegid();
-        return uid != euid  || gid != egid;
-    }
-
-    /**
-     * Returns the real user ID of the calling process,
-     * or -1 if the value is not available.
-     */
-    public static native long getuid();
-
-    /**
-     * Returns the effective user ID of the calling process,
-     * or -1 if the value is not available.
-     */
-    public static native long geteuid();
-
-    /**
-     * Returns the real group ID of the calling process,
-     * or -1 if the value is not available.
-     */
-    public static native long getgid();
-
-    /**
-     * Returns the effective group ID of the calling process,
-     * or -1 if the value is not available.
-     */
-    public static native long getegid();
-
-    /**
-     * Get a nanosecond time stamp adjustment in the form of a single long.
-     *
-     * This value can be used to create an instant using
-     * {@link java.time.Instant#ofEpochSecond(long, long)
-     *  java.time.Instant.ofEpochSecond(offsetInSeconds,
-     *  getNanoTimeAdjustment(offsetInSeconds))}.
-     * <p>
-     * The value returned has the best resolution available to the JVM on
-     * the current system.
-     * This is usually down to microseconds - or tenth of microseconds -
-     * depending on the OS/Hardware and the JVM implementation.
-     *
-     * @param offsetInSeconds The offset in seconds from which the nanosecond
-     *        time stamp should be computed.
-     *
-     * @apiNote The offset should be recent enough - so that
-     *         {@code offsetInSeconds} is within {@code +/- 2^32} seconds of the
-     *         current UTC time. If the offset is too far off, {@code -1} will be
-     *         returned. As such, {@code -1} must not be considered as a valid
-     *         nano time adjustment, but as an exception value indicating
-     *         that an offset closer to the current time should be used.
-     *
-     * @return A nanosecond time stamp adjustment in the form of a single long.
-     *     If the offset is too far off the current time, this method returns -1.
-     *     In that case, the caller should call this method again, passing a
-     *     more accurate offset.
-     */
-    public static native long getNanoTimeAdjustment(long offsetInSeconds);
-
-    static {
-        initialize();
-    }
-    private static native void initialize();
-}
--- a/jdk/src/java.base/share/classes/sun/misc/VMNotification.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 1996, 2004, Oracle and/or its affiliates. All rights reserved.
- * 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;
-
-/** @deprecated */
-@Deprecated
-public interface VMNotification {
-
-    // when the vm switches allocation states, we get notified
-    // (possible semantics: if the state changes while in this
-    // notification, don't recursively notify).
-    // oldState and newState may be the same if we are just releasing
-    // suspended threads.
-    void newAllocState(int oldState, int newState,
-                       boolean threadsSuspended);
-}
--- a/jdk/src/java.base/share/classes/sun/net/www/http/HttpClient.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/sun/net/www/http/HttpClient.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -967,12 +967,6 @@
         return "";
     }
 
-    @Override
-    protected void finalize() throws Throwable {
-        // This should do nothing.  The stream finalizer will
-        // close the fd.
-    }
-
     public void setDoNotRetry(boolean value) {
         // failedOnce is used to determine if a request should be retried.
         failedOnce = value;
--- a/jdk/src/java.base/share/classes/sun/net/www/protocol/jar/URLJarFile.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/sun/net/www/protocol/jar/URLJarFile.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -108,13 +108,6 @@
         return false;
     }
 
-    /*
-     * close the jar file.
-     */
-    protected void finalize() throws IOException {
-        close();
-    }
-
     /**
      * Returns the <code>ZipEntry</code> for the given entry name or
      * <code>null</code> if not found.
--- a/jdk/src/java.base/share/classes/sun/nio/ch/Util.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/sun/nio/ch/Util.java	Fri Jan 15 09:15:33 2016 +0100
@@ -389,7 +389,7 @@
 
     static boolean atBugLevel(String bl) {              // package-private
         if (bugLevel == null) {
-            if (!sun.misc.VM.isBooted())
+            if (!jdk.internal.misc.VM.isBooted())
                 return false;
             String value = AccessController.doPrivileged(
                 new GetPropertyAction("sun.nio.ch.bugLevel"));
--- a/jdk/src/java.base/share/classes/sun/nio/cs/StandardCharsets.java.template	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/sun/nio/cs/StandardCharsets.java.template	Fri Jan 15 09:15:33 2016 +0100
@@ -156,12 +156,12 @@
 
     private boolean initialized = false;
 
-    /*   provider the sun.nio.cs.map property fir sjis/ms932 mapping hack 
+    /*   provider the sun.nio.cs.map property fir sjis/ms932 mapping hack
      */
     private void init() {
         if (initialized)
             return;
-        if (!sun.misc.VM.isBooted())
+        if (!jdk.internal.misc.VM.isBooted())
             return;
         initialized = true;
 
--- a/jdk/src/java.base/share/classes/sun/reflect/Reflection.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/sun/reflect/Reflection.java	Fri Jan 15 09:15:33 2016 +0100
@@ -29,6 +29,7 @@
 import java.util.HashMap;
 import java.util.Map;
 import jdk.internal.HotSpotIntrinsicCandidate;
+import jdk.internal.misc.VM;
 
 /** Common utility routines used by both java.lang and
     java.lang.reflect */
@@ -335,7 +336,7 @@
      */
     public static boolean isCallerSensitive(Method m) {
         final ClassLoader loader = m.getDeclaringClass().getClassLoader();
-        if (sun.misc.VM.isSystemDomainLoader(loader) || isExtClassLoader(loader))  {
+        if (VM.isSystemDomainLoader(loader) || isExtClassLoader(loader))  {
             return m.isAnnotationPresent(CallerSensitive.class);
         }
         return false;
--- a/jdk/src/java.base/share/classes/sun/security/ssl/SSLEngineImpl.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/sun/security/ssl/SSLEngineImpl.java	Fri Jan 15 09:15:33 2016 +0100
@@ -2211,7 +2211,7 @@
 
     @Override
     public synchronized String getHandshakeApplicationProtocol() {
-        if ((handshaker != null) && !handshaker.started()) {
+        if ((handshaker != null) && handshaker.started()) {
             return handshaker.getHandshakeApplicationProtocol();
         }
         return null;
--- a/jdk/src/java.base/share/classes/sun/security/ssl/SSLSocketImpl.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/sun/security/ssl/SSLSocketImpl.java	Fri Jan 15 09:15:33 2016 +0100
@@ -2598,7 +2598,7 @@
 
     @Override
     public synchronized String getHandshakeApplicationProtocol() {
-        if ((handshaker != null) && !handshaker.started()) {
+        if ((handshaker != null) && handshaker.started()) {
             return handshaker.getHandshakeApplicationProtocol();
         }
         return null;
--- a/jdk/src/java.base/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -153,13 +153,11 @@
             getSupportedAlgorithms(AlgorithmConstraints constraints) {
 
         Collection<SignatureAndHashAlgorithm> supported = new ArrayList<>();
-        synchronized (priorityMap) {
-            for (SignatureAndHashAlgorithm sigAlg : priorityMap.values()) {
-                if (sigAlg.priority <= SUPPORTED_ALG_PRIORITY_MAX_NUM &&
-                        constraints.permits(SIGNATURE_PRIMITIVE_SET,
-                                sigAlg.algorithm, null)) {
-                    supported.add(sigAlg);
-                }
+        for (SignatureAndHashAlgorithm sigAlg : priorityMap.values()) {
+            if (sigAlg.priority <= SUPPORTED_ALG_PRIORITY_MAX_NUM &&
+                    constraints.permits(SIGNATURE_PRIMITIVE_SET,
+                            sigAlg.algorithm, null)) {
+                supported.add(sigAlg);
             }
         }
 
@@ -417,14 +415,12 @@
             supports(HashAlgorithm.SHA1,        SignatureAlgorithm.ECDSA,
                     "SHA1withECDSA",        --p);
 
-            if (Security.getProvider("SunMSCAPI") == null) {
             supports(HashAlgorithm.SHA224,      SignatureAlgorithm.DSA,
                     "SHA224withDSA",        --p);
             supports(HashAlgorithm.SHA224,      SignatureAlgorithm.RSA,
                     "SHA224withRSA",        --p);
             supports(HashAlgorithm.SHA224,      SignatureAlgorithm.ECDSA,
                     "SHA224withECDSA",      --p);
-            }
 
             supports(HashAlgorithm.SHA256,      SignatureAlgorithm.DSA,
                     "SHA256withDSA",        --p);
--- a/jdk/src/java.base/share/conf/security/java.policy	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/conf/security/java.policy	Fri Jan 15 09:15:33 2016 +0100
@@ -98,17 +98,6 @@
 // default permissions granted to all domains
 
 grant {
-        // Allows any thread to stop itself using the java.lang.Thread.stop()
-        // method that takes no argument.
-        // Note that this permission is granted by default only to remain
-        // backwards compatible.
-        // It is strongly recommended that you either remove this permission
-        // from this policy file or further restrict it to code sources
-        // that you specify, because Thread.stop() is potentially unsafe.
-        // See the API specification of java.lang.Thread.stop() for more
-        // information.
-        permission java.lang.RuntimePermission "stopThread";
-
         // allows anyone to listen on dynamic ports
         permission java.net.SocketPermission "localhost:0", "listen";
 
--- a/jdk/src/java.base/share/native/libjava/MessageUtils.c	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  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.
- */
-
-#include <stdlib.h>
-#include <jni.h>
-#include <jni_util.h>
-#include <jlong.h>
-#include <stdio.h>
-#include <jvm.h>
-
-#include "sun_misc_MessageUtils.h"
-
-static void
-printToFile(JNIEnv *env, jstring s, FILE *file)
-{
-    char *sConverted;
-    int length = 0;
-    int i;
-    const jchar *sAsArray;
-
-    if (s == NULL) {
-      s = (*env)->NewStringUTF(env, "null");
-      if (s == NULL) return;
-    }
-
-    sAsArray = (*env)->GetStringChars(env, s, NULL);
-    if (!sAsArray)
-        return;
-    length = (*env)->GetStringLength(env, s);
-    if (length == 0) {
-        (*env)->ReleaseStringChars(env, s, sAsArray);
-        return;
-    }
-    sConverted = (char *) malloc(length + 1);
-    if (!sConverted) {
-        (*env)->ReleaseStringChars(env, s, sAsArray);
-        JNU_ThrowOutOfMemoryError(env, NULL);
-        return;
-    }
-
-    for(i = 0; i < length; i++) {
-        sConverted[i] = (0x7f & sAsArray[i]);
-    }
-    sConverted[length] = '\0';
-    jio_fprintf(file, "%s", sConverted);
-    (*env)->ReleaseStringChars(env, s, sAsArray);
-    free(sConverted);
-}
-
-JNIEXPORT void JNICALL
-Java_sun_misc_MessageUtils_toStderr(JNIEnv *env, jclass cls, jstring s)
-{
-    printToFile(env, s, stderr);
-}
-
-JNIEXPORT void JNICALL
-Java_sun_misc_MessageUtils_toStdout(JNIEnv *env, jclass cls, jstring s)
-{
-    printToFile(env, s, stdout);
-}
--- a/jdk/src/java.base/share/native/libjava/RandomAccessFile.c	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/native/libjava/RandomAccessFile.c	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -103,23 +103,19 @@
 
 JNIEXPORT jlong JNICALL
 Java_java_io_RandomAccessFile_length(JNIEnv *env, jobject this) {
+
     FD fd;
-    jlong cur = jlong_zero;
-    jlong end = jlong_zero;
+    jlong length = jlong_zero;
 
     fd = GET_FD(this, raf_fd);
     if (fd == -1) {
         JNU_ThrowIOException(env, "Stream Closed");
         return -1;
     }
-    if ((cur = IO_Lseek(fd, 0L, SEEK_CUR)) == -1) {
-        JNU_ThrowIOExceptionWithLastError(env, "Seek failed");
-    } else if ((end = IO_Lseek(fd, 0L, SEEK_END)) == -1) {
-        JNU_ThrowIOExceptionWithLastError(env, "Seek failed");
-    } else if (IO_Lseek(fd, cur, SEEK_SET) == -1) {
-        JNU_ThrowIOExceptionWithLastError(env, "Seek failed");
+    if ((length = IO_GetLength(fd)) == -1) {
+        JNU_ThrowIOExceptionWithLastError(env, "GetLength failed");
     }
-    return end;
+    return length;
 }
 
 JNIEXPORT void JNICALL
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/native/libjava/StringCoding.c	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  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.
+ */
+
+#include <stdlib.h>
+#include <jni.h>
+#include <jni_util.h>
+#include <stdio.h>
+#include <jvm.h>
+
+#include "java_lang_StringCoding.h"
+
+static void
+printToFile(JNIEnv *env, jstring s, FILE *file)
+{
+    char *sConverted;
+    int length = 0;
+    int i;
+    const jchar *sAsArray;
+
+    if (s == NULL) {
+        JNU_ThrowNullPointerException(env, NULL);
+        return;
+    }
+
+    sAsArray = (*env)->GetStringChars(env, s, NULL);
+    if (!sAsArray)
+        return;
+    length = (*env)->GetStringLength(env, s);
+    if (length == 0) {
+        (*env)->ReleaseStringChars(env, s, sAsArray);
+        return;
+    }
+    sConverted = (char *) malloc(length + 1);
+    if (!sConverted) {
+        (*env)->ReleaseStringChars(env, s, sAsArray);
+        JNU_ThrowOutOfMemoryError(env, NULL);
+        return;
+    }
+
+    for(i = 0; i < length; i++) {
+        sConverted[i] = (0x7f & sAsArray[i]);
+    }
+    sConverted[length] = '\0';
+    jio_fprintf(file, "%s", sConverted);
+    (*env)->ReleaseStringChars(env, s, sAsArray);
+    free(sConverted);
+}
+
+JNIEXPORT void JNICALL
+Java_java_lang_StringCoding_err(JNIEnv *env, jclass cls, jstring s)
+{
+    printToFile(env, s, stderr);
+}
--- a/jdk/src/java.base/share/native/libjava/VM.c	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/share/native/libjava/VM.c	Fri Jan 15 09:15:33 2016 +0100
@@ -28,7 +28,7 @@
 #include "jvm.h"
 #include "jdk_util.h"
 
-#include "sun_misc_VM.h"
+#include "jdk_internal_misc_VM.h"
 
 /* Only register the performance-critical methods */
 static JNINativeMethod methods[] = {
@@ -36,12 +36,12 @@
 };
 
 JNIEXPORT jobject JNICALL
-Java_sun_misc_VM_latestUserDefinedLoader(JNIEnv *env, jclass cls) {
+Java_jdk_internal_misc_VM_latestUserDefinedLoader(JNIEnv *env, jclass cls) {
     return JVM_LatestUserDefinedLoader(env);
 }
 
 JNIEXPORT void JNICALL
-Java_sun_misc_VM_initialize(JNIEnv *env, jclass cls) {
+Java_jdk_internal_misc_VM_initialize(JNIEnv *env, jclass cls) {
     if (!JDK_InitJvmHandle()) {
         JNU_ThrowInternalError(env, "Handle for JVM not found for symbol lookup");
         return;
@@ -50,8 +50,8 @@
     // Registers implementations of native methods described in methods[]
     // above.
     // In particular, registers JVM_GetNanoTimeAdjustment as the implementation
-    // of the native sun.misc.VM.getNanoTimeAdjustment - avoiding the cost of
-    // introducing a Java_sun_misc_VM_getNanoTimeAdjustment  wrapper
+    // of the native VM.getNanoTimeAdjustment - avoiding the cost of
+    // introducing a Java_jdk_internal_misc_VM_getNanoTimeAdjustment wrapper
     (*env)->RegisterNatives(env, cls,
                             methods, sizeof(methods)/sizeof(methods[0]));
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/unix/classes/jdk/internal/misc/OSEnvironment.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,38 @@
+/*
+ * 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.misc;
+
+public class OSEnvironment {
+
+    /*
+     * Initialize any miscellaneous operating system settings that need to be set
+     * for the class libraries.
+     */
+    public static void initialize() {
+        // no-op on Solaris and Linux
+    }
+
+}
--- a/jdk/src/java.base/unix/classes/sun/misc/OSEnvironment.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +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;
-
-public class OSEnvironment {
-
-    /*
-     * Initialize any miscellenous operating system settings that need to be set
-     * for the class libraries.
-     */
-    public static void initialize() {
-        // no-op on Solaris and Linux
-    }
-
-}
--- a/jdk/src/java.base/unix/native/libjava/VM_md.c	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/unix/native/libjava/VM_md.c	Fri Jan 15 09:15:33 2016 +0100
@@ -28,25 +28,25 @@
 
 
 JNIEXPORT jlong JNICALL
-Java_sun_misc_VM_getuid(JNIEnv *env, jclass thisclass) {
+Java_jdk_internal_misc_VM_getuid(JNIEnv *env, jclass thisclass) {
 
     return getuid();
 }
 
 JNIEXPORT jlong JNICALL
-Java_sun_misc_VM_geteuid(JNIEnv *env, jclass thisclass) {
+Java_jdk_internal_misc_VM_geteuid(JNIEnv *env, jclass thisclass) {
 
     return geteuid();
 }
 
 JNIEXPORT jlong JNICALL
-Java_sun_misc_VM_getgid(JNIEnv *env, jclass thisclass) {
+Java_jdk_internal_misc_VM_getgid(JNIEnv *env, jclass thisclass) {
 
     return getgid();
 }
 
 JNIEXPORT jlong JNICALL
-Java_sun_misc_VM_getegid(JNIEnv *env, jclass thisclass) {
+Java_jdk_internal_misc_VM_getegid(JNIEnv *env, jclass thisclass) {
 
     return getegid();
 }
--- a/jdk/src/java.base/unix/native/libjava/io_util_md.c	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/unix/native/libjava/io_util_md.c	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,7 +22,6 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
-
 #include "jni.h"
 #include "jni_util.h"
 #include "jvm.h"
@@ -219,3 +218,14 @@
     RESTARTABLE(ftruncate64(fd, length), result);
     return result;
 }
+
+jlong
+handleGetLength(FD fd)
+{
+    struct stat64 sb;
+    if (fstat64(fd, &sb) == 0) {
+        return sb.st_size;
+    } else {
+        return -1;
+    }
+}
--- a/jdk/src/java.base/unix/native/libjava/io_util_md.h	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/unix/native/libjava/io_util_md.h	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,7 +39,7 @@
 ssize_t handleRead(FD fd, void *buf, jint len);
 jint handleAvailable(FD fd, jlong *pbytes);
 jint handleSetLength(FD fd, jlong length);
-
+jlong handleGetLength(FD fd);
 FD handleOpen(const char *path, int oflag, int mode);
 
 /*
@@ -72,6 +72,7 @@
 #define IO_Append handleWrite
 #define IO_Available handleAvailable
 #define IO_SetLength handleSetLength
+#define IO_GetLength handleGetLength
 
 #ifdef _ALLBSD_SOURCE
 #define open64 open
--- a/jdk/src/java.base/unix/native/libnio/ch/NativeThread.c	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/unix/native/libnio/ch/NativeThread.c	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -93,6 +93,10 @@
 #else
     ret = pthread_kill((pthread_t)thread, INTERRUPT_SIGNAL);
 #endif
+#ifdef MACOSX
+    if (ret != 0 && ret != ESRCH)
+#else
     if (ret != 0)
+#endif
         JNU_ThrowIOExceptionWithLastError(env, "Thread signal failed");
 }
--- a/jdk/src/java.base/windows/classes/java/lang/ProcessImpl.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/windows/classes/java/lang/ProcessImpl.java	Fri Jan 15 09:15:33 2016 +0100
@@ -42,8 +42,10 @@
 import java.util.concurrent.TimeUnit;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+
 import jdk.internal.misc.JavaIOFileDescriptorAccess;
 import jdk.internal.misc.SharedSecrets;
+import jdk.internal.ref.CleanerFactory;
 
 /* This class is for the exclusive use of ProcessBuilder.start() to
  * create new processes.
@@ -417,6 +419,10 @@
 
         handle = create(cmdstr, envblock, path,
                         stdHandles, redirectErrorStream);
+        // Register a cleaning function to close the handle
+        final long local_handle = handle;    // local to prevent capture of this
+        CleanerFactory.cleaner().register(this, () -> closeHandle(local_handle));
+
         processHandle = ProcessHandleImpl.getInternal(getProcessId0(handle));
 
         java.security.AccessController.doPrivileged(
@@ -463,10 +469,6 @@
         return stderr_stream;
     }
 
-    protected void finalize() {
-        closeHandle(handle);
-    }
-
     private static final int STILL_ACTIVE = getStillActive();
     private static native int getStillActive();
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/windows/classes/jdk/internal/misc/OSEnvironment.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,42 @@
+/*
+ * 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.misc;
+
+import sun.io.Win32ErrorMode;
+
+public class OSEnvironment {
+
+    /*
+     * Initialize any miscellaneous operating system settings that need to be set
+     * for the class libraries.
+     * <p>
+     * At this time only the process-wide error mode needs to be set.
+     */
+    public static void initialize() {
+        Win32ErrorMode.initialize();
+    }
+
+}
--- a/jdk/src/java.base/windows/classes/sun/io/Win32ErrorMode.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/windows/classes/sun/io/Win32ErrorMode.java	Fri Jan 15 09:15:33 2016 +0100
@@ -66,7 +66,7 @@
      * has completed.
      */
     public static void initialize() {
-        if (!sun.misc.VM.isBooted()) {
+        if (!jdk.internal.misc.VM.isBooted()) {
             String s = System.getProperty("sun.io.allowCriticalErrorMessageBox");
             if (s == null || s.equals(Boolean.FALSE.toString())) {
                 long mode = setErrorMode(0);
--- a/jdk/src/java.base/windows/classes/sun/misc/OSEnvironment.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +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 sun.io.Win32ErrorMode;
-
-public class OSEnvironment {
-
-    /*
-     * Initialize any miscellenous operating system settings that need to be set
-     * for the class libraries.
-     * <p>
-     * At this time only the process-wide error mode needs to be set.
-     */
-    public static void initialize() {
-        Win32ErrorMode.initialize();
-    }
-
-}
--- a/jdk/src/java.base/windows/native/libjava/VM_md.c	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/windows/native/libjava/VM_md.c	Fri Jan 15 09:15:33 2016 +0100
@@ -27,28 +27,28 @@
 
 
 JNIEXPORT jlong JNICALL
-Java_sun_misc_VM_getuid(JNIEnv *env, jclass thisclass) {
+Java_jdk_internal_misc_VM_getuid(JNIEnv *env, jclass thisclass) {
 
     /* -1 means function not available. */
     return -1;
 }
 
 JNIEXPORT jlong JNICALL
-Java_sun_misc_VM_geteuid(JNIEnv *env, jclass thisclass) {
+Java_jdk_internal_misc_VM_geteuid(JNIEnv *env, jclass thisclass) {
 
     /* -1 means function not available. */
     return -1;
 }
 
 JNIEXPORT jlong JNICALL
-Java_sun_misc_VM_getgid(JNIEnv *env, jclass thisclass) {
+Java_jdk_internal_misc_VM_getgid(JNIEnv *env, jclass thisclass) {
 
     /* -1 means function not available. */
     return -1;
 }
 
 JNIEXPORT jlong JNICALL
-Java_sun_misc_VM_getegid(JNIEnv *env, jclass thisclass) {
+Java_jdk_internal_misc_VM_getegid(JNIEnv *env, jclass thisclass) {
 
     /* -1 means function not available. */
     return -1;
--- a/jdk/src/java.base/windows/native/libjava/io_util_md.c	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/windows/native/libjava/io_util_md.c	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -584,3 +584,14 @@
     }
     return long_to_jlong(pos.QuadPart);
 }
+
+jlong
+handleGetLength(FD fd) {
+    HANDLE h = (HANDLE) fd;
+    LARGE_INTEGER length;
+    if (GetFileSizeEx(h, &length) != 0) {
+        return long_to_jlong(length.QuadPart);
+    } else {
+        return -1;
+    }
+}
--- a/jdk/src/java.base/windows/native/libjava/io_util_md.h	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/windows/native/libjava/io_util_md.h	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,6 +44,7 @@
 int handleAvailable(FD fd, jlong *pbytes);
 int handleSync(FD fd);
 int handleSetLength(FD fd, jlong length);
+jlong handleGetLength(FD fd);
 JNIEXPORT jint handleRead(FD fd, void *buf, jint len);
 jint handleWrite(FD fd, const void *buf, jint len);
 jint handleAppend(FD fd, const void *buf, jint len);
@@ -84,6 +85,7 @@
 #define IO_Lseek handleLseek
 #define IO_Available handleAvailable
 #define IO_SetLength handleSetLength
+#define IO_GetLength handleGetLength
 
 /*
  * Setting the handle field in Java_java_io_FileDescriptor_set for
--- a/jdk/src/java.base/windows/native/libjli/java_md.c	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/windows/native/libjli/java_md.c	Fri Jan 15 09:15:33 2016 +0100
@@ -337,6 +337,15 @@
         }
     }
 
+    /* Try getting path to JRE from path to JLI.DLL */
+    if (GetApplicationHomeFromDll(path, pathsize)) {
+        JLI_Snprintf(javadll, sizeof(javadll), "%s\\bin\\" JAVA_DLL, path);
+        if (stat(javadll, &s) == 0) {
+            JLI_TraceLauncher("JRE path is %s\n", path);
+            return JNI_TRUE;
+        }
+    }
+
     JLI_ReportErrorMessage(JRE_ERROR8 JAVA_DLL);
     return JNI_FALSE;
 
@@ -404,17 +413,17 @@
 }
 
 /*
- * If app is "c:\foo\bin\javac", then put "c:\foo" into buf.
+ * Removes the trailing file name and one sub-folder from a path.
+ * If buf is "c:\foo\bin\javac", then put "c:\foo" into buf.
  */
 jboolean
-GetApplicationHome(char *buf, jint bufsize)
+TruncatePath(char *buf)
 {
     char *cp;
-    GetModuleFileName(0, buf, bufsize);
     *JLI_StrRChr(buf, '\\') = '\0'; /* remove .exe file name */
     if ((cp = JLI_StrRChr(buf, '\\')) == 0) {
         /* This happens if the application is in a drive root, and
-         * there is no bin directory. */
+        * there is no bin directory. */
         buf[0] = '\0';
         return JNI_FALSE;
     }
@@ -423,6 +432,36 @@
 }
 
 /*
+ * Retrieves the path to the JRE home by locating the executable file
+ * of the current process and then truncating the path to the executable
+ */
+jboolean
+GetApplicationHome(char *buf, jint bufsize)
+{
+    GetModuleFileName(NULL, buf, bufsize);
+    return TruncatePath(buf);
+}
+
+/*
+ * Retrieves the path to the JRE home by locating JLI.DLL and
+ * then truncating the path to JLI.DLL
+ */
+jboolean
+GetApplicationHomeFromDll(char *buf, jint bufsize)
+{
+    HMODULE hModule;
+    DWORD dwFlags =
+        GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |
+        GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT;
+
+    if (GetModuleHandleEx(dwFlags, (LPCSTR)&GetJREPath, &hModule) == 0) {
+        return JNI_FALSE;
+    };
+    GetModuleFileName(hModule, buf, bufsize);
+    return TruncatePath(buf);
+}
+
+/*
  * Support for doing cheap, accurate interval timing.
  */
 static jboolean counterAvailable = JNI_FALSE;
--- a/jdk/src/java.base/windows/native/libjli/java_md.h	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.base/windows/native/libjli/java_md.h	Fri Jan 15 09:15:33 2016 +0100
@@ -54,4 +54,7 @@
 
 int UnsetEnv(char *name);
 
+jboolean
+GetApplicationHomeFromDll(char *buf, jint bufsize);
+
 #endif /* JAVA_MD_H */
--- a/jdk/src/java.desktop/share/classes/javax/swing/text/html/parser/Parser.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.desktop/share/classes/javax/swing/text/html/parser/Parser.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,8 +35,6 @@
 import java.util.Enumeration;
 import java.net.URL;
 
-import sun.misc.MessageUtils;
-
 /**
  * A simple DTD-driven HTML parser. The parser reads an
  * HTML file from an InputStream and calls various methods
--- a/jdk/src/java.desktop/share/classes/sun/applet/AppletPanel.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.desktop/share/classes/sun/applet/AppletPanel.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,9 +43,8 @@
 import sun.awt.AppContext;
 import sun.awt.EmbeddedFrame;
 import sun.awt.SunToolkit;
+import sun.awt.util.PerformanceLogger;
 import sun.misc.ManagedLocalsThread;
-import sun.misc.MessageUtils;
-import sun.misc.PerformanceLogger;
 import sun.security.util.SecurityConstants;
 
 /**
@@ -118,8 +117,6 @@
      */
     Dimension currentAppletSize = new Dimension(10, 10);
 
-    MessageUtils mu = new MessageUtils();
-
     /**
      * The thread to use during applet loading
      */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/util/PerformanceLogger.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,317 @@
+/*
+ * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
+ * 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.awt.util;
+
+import java.util.Vector;
+import java.io.FileWriter;
+import java.io.File;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+
+/**
+ * This class is intended to be a central place for the jdk to
+ * log timing events of interest.  There is pre-defined event
+ * of startTime, as well as a general
+ * mechanism of setting arbitrary times in an array.
+ * All unreserved times in the array can be used by callers
+ * in application-defined situations.  The caller is responsible
+ * for setting and getting all times and for doing whatever
+ * analysis is interesting; this class is merely a central container
+ * for those timing values.
+ * Note that, due to the variables in this class being static,
+ * use of particular time values by multiple applets will cause
+ * confusing results.  For example, if plugin runs two applets
+ * simultaneously, the initTime for those applets will collide
+ * and the results may be undefined.
+ * <P>
+ * To automatically track startup performance in an app or applet,
+ * use the command-line parameter sun.perflog as follows:<BR>
+ * <pre>{@code
+ *     -Dsun.perflog[=file:<filename>]
+ * }</pre>
+ * <BR>
+ * where simply using the parameter with no value will enable output
+ * to the console and a value of "{@code file:<filename>}" will cause
+ * that given filename to be created and used for all output.
+ * <P>
+ * By default, times are measured using System.currentTimeMillis().  To use
+ * System.nanoTime() instead, add the command-line parameter:<BR>
+       -Dsun.perflog.nano=true
+ * <BR>
+ * <P>
+ * <B>Warning: Use at your own risk!</B>
+ * This class is intended for internal testing
+ * purposes only and may be removed at any time.  More
+ * permanent monitoring and profiling APIs are expected to be
+ * developed for future releases and this class will cease to
+ * exist once those APIs are in place.
+ * @author Chet Haase
+ */
+public class PerformanceLogger {
+
+    // Timing values of global interest
+    private static final int START_INDEX    = 0;    // VM start
+    private static final int LAST_RESERVED  = START_INDEX;
+
+    private static boolean perfLoggingOn = false;
+    private static boolean useNanoTime = false;
+    private static Vector<TimeData> times;
+    private static String logFileName = null;
+    private static Writer logWriter = null;
+    private static long baseTime;
+
+    static {
+        String perfLoggingProp =
+            java.security.AccessController.doPrivileged(
+            new sun.security.action.GetPropertyAction("sun.perflog"));
+        if (perfLoggingProp != null) {
+            perfLoggingOn = true;
+
+            // Check if we should use nanoTime
+            String perfNanoProp =
+                java.security.AccessController.doPrivileged(
+                new sun.security.action.GetPropertyAction("sun.perflog.nano"));
+            if (perfNanoProp != null) {
+                useNanoTime = true;
+            }
+
+            // Now, figure out what the user wants to do with the data
+            if (perfLoggingProp.regionMatches(true, 0, "file:", 0, 5)) {
+                logFileName = perfLoggingProp.substring(5);
+            }
+            if (logFileName != null) {
+                if (logWriter == null) {
+                    java.security.AccessController.doPrivileged(
+                    new java.security.PrivilegedAction<Void>() {
+                        public Void run() {
+                            try {
+                                File logFile = new File(logFileName);
+                                logFile.createNewFile();
+                                logWriter = new FileWriter(logFile);
+                            } catch (Exception e) {
+                                System.out.println(e + ": Creating logfile " +
+                                                   logFileName +
+                                                   ".  Log to console");
+                            }
+                            return null;
+                        }
+                    });
+                }
+            }
+            if (logWriter == null) {
+                logWriter = new OutputStreamWriter(System.out);
+            }
+        }
+        times = new Vector<TimeData>(10);
+        // Reserve predefined slots
+        for (int i = 0; i <= LAST_RESERVED; ++i) {
+            times.add(new TimeData("Time " + i + " not set", 0));
+        }
+    }
+
+    /**
+     * Returns status of whether logging is enabled or not.  This is
+     * provided as a convenience method so that users do not have to
+     * perform the same GetPropertyAction check as above to determine whether
+     * to enable performance logging.
+     */
+    public static boolean loggingEnabled() {
+        return perfLoggingOn;
+    }
+
+
+    /**
+     * Internal class used to store time/message data together.
+     */
+    static class TimeData {
+        String message;
+        long time;
+
+        TimeData(String message, long time) {
+            this.message = message;
+            this.time = time;
+        }
+
+        String getMessage() {
+            return message;
+        }
+
+        long getTime() {
+            return time;
+        }
+    }
+
+    /**
+     * Return the current time, in millis or nanos as appropriate
+     */
+    private static long getCurrentTime() {
+        if (useNanoTime) {
+            return System.nanoTime();
+        } else {
+            return System.currentTimeMillis();
+        }
+    }
+
+    /**
+     * Sets the start time.  Ideally, this is the earliest time available
+     * during the startup of a Java applet or application.  This time is
+     * later used to analyze the difference between the initial startup
+     * time and other events in the system (such as an applet's init time).
+     */
+    public static void setStartTime(String message) {
+        if (loggingEnabled()) {
+            long nowTime = getCurrentTime();
+            setStartTime(message, nowTime);
+        }
+    }
+
+    /**
+     * Sets the base time, output can then
+     * be displayed as offsets from the base time;.
+     */
+    public static void setBaseTime(long time) {
+        if (loggingEnabled()) {
+            baseTime = time;
+        }
+    }
+
+    /**
+     * Sets the start time.
+     * This version of the method is
+     * given the time to log, instead of expecting this method to
+     * get the time itself.  This is done in case the time was
+     * recorded much earlier than this method was called.
+     */
+    public static void setStartTime(String message, long time) {
+        if (loggingEnabled()) {
+            times.set(START_INDEX, new TimeData(message, time));
+        }
+    }
+
+    /**
+     * Gets the start time, which should be the time when
+     * the java process started, prior to the VM actually being
+     * loaded.
+     */
+    public static long getStartTime() {
+        if (loggingEnabled()) {
+            return times.get(START_INDEX).getTime();
+        } else {
+            return 0;
+        }
+    }
+
+    /**
+     * Sets the value of a given time and returns the index of the
+     * slot that that time was stored in.
+     */
+    public static int setTime(String message) {
+        if (loggingEnabled()) {
+            long nowTime = getCurrentTime();
+            return setTime(message, nowTime);
+        } else {
+            return 0;
+        }
+    }
+
+    /**
+     * Sets the value of a given time and returns the index of the
+     * slot that that time was stored in.
+     * This version of the method is
+     * given the time to log, instead of expecting this method to
+     * get the time itself.  This is done in case the time was
+     * recorded much earlier than this method was called.
+     */
+    public static int setTime(String message, long time) {
+        if (loggingEnabled()) {
+            // times is already synchronized, but we need to ensure that
+            // the size used in times.set() is the same used when returning
+            // the index of that operation.
+            synchronized (times) {
+                times.add(new TimeData(message, time));
+                return (times.size() - 1);
+            }
+        } else {
+            return 0;
+        }
+    }
+
+    /**
+     * Returns time at given index.
+     */
+    public static long getTimeAtIndex(int index) {
+        if (loggingEnabled()) {
+            return times.get(index).getTime();
+        } else {
+            return 0;
+        }
+    }
+
+    /**
+     * Returns message at given index.
+     */
+    public static String getMessageAtIndex(int index) {
+        if (loggingEnabled()) {
+            return times.get(index).getMessage();
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Outputs all data to parameter-specified Writer object
+     */
+    public static void outputLog(Writer writer) {
+        if (loggingEnabled()) {
+            try {
+                synchronized(times) {
+                    for (int i = 0; i < times.size(); ++i) {
+                        TimeData td = times.get(i);
+                        if (td != null) {
+                            writer.write(i + " " + td.getMessage() + ": " +
+                                         (td.getTime() - baseTime) + "\n");
+
+                        }
+                    }
+                }
+                writer.flush();
+            } catch (Exception e) {
+                System.out.println(e + ": Writing performance log to " +
+                                   writer);
+            }
+        }
+    }
+
+    /**
+     * Outputs all data to whatever location the user specified
+     * via sun.perflog command-line parameter.
+     */
+    public static void outputLog() {
+        outputLog(logWriter);
+    }
+}
--- a/jdk/src/java.desktop/share/classes/sun/java2d/SunGraphics2D.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/SunGraphics2D.java	Fri Jan 15 09:15:33 2016 +0100
@@ -88,9 +88,9 @@
 import sun.java2d.loops.XORComposite;
 import sun.awt.ConstrainableGraphics;
 import sun.awt.SunHints;
+import sun.awt.util.PerformanceLogger;
 import java.util.Map;
 import java.util.Iterator;
-import sun.misc.PerformanceLogger;
 
 import java.lang.annotation.Native;
 import java.awt.image.MultiResolutionImage;
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XToolkit.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XToolkit.java	Fri Jan 15 09:15:33 2016 +0100
@@ -52,6 +52,7 @@
 import sun.font.FontConfigManager;
 import sun.java2d.SunGraphicsEnvironment;
 import sun.misc.*;
+import sun.awt.util.PerformanceLogger;
 import sun.awt.util.ThreadGroupUtils;
 import sun.print.PrintJob2D;
 import sun.security.action.GetPropertyAction;
--- a/jdk/src/java.desktop/windows/classes/sun/awt/windows/WToolkit.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/windows/WToolkit.java	Fri Jan 15 09:15:33 2016 +0100
@@ -67,10 +67,10 @@
 import java.util.Map;
 import java.util.Properties;
 
+import sun.awt.util.PerformanceLogger;
 import sun.font.FontManager;
 import sun.font.FontManagerFactory;
 import sun.font.SunFontManager;
-import sun.misc.PerformanceLogger;
 import sun.util.logging.PlatformLogger;
 
 public final class WToolkit extends SunToolkit implements Runnable {
--- a/jdk/src/java.desktop/windows/classes/sun/java2d/d3d/D3DGraphicsDevice.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.desktop/windows/classes/sun/java2d/d3d/D3DGraphicsDevice.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,6 +38,7 @@
 import java.awt.peer.WindowPeer;
 import java.util.ArrayList;
 
+import jdk.internal.perf.PerfCounter;
 import sun.awt.AWTAccessor;
 import sun.awt.AWTAccessor.ComponentAccessor;
 import sun.awt.Win32GraphicsDevice;
@@ -69,9 +70,9 @@
         if (d3dAvailable) {
             // we don't use pixel formats for the d3d pipeline
             pfDisabled = true;
-            sun.misc.PerfCounter.getD3DAvailable().set(1);
+            PerfCounter.getD3DAvailable().set(1);
         } else {
-            sun.misc.PerfCounter.getD3DAvailable().set(0);
+            PerfCounter.getD3DAvailable().set(0);
         }
     }
 
--- a/jdk/src/java.logging/share/classes/java/util/logging/FileHandler.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.logging/share/classes/java/util/logging/FileHandler.java	Fri Jan 15 09:15:33 2016 +0100
@@ -639,7 +639,7 @@
                     continue;
                 } else if (ch2 == 'h') {
                     file = new File(System.getProperty("user.home"));
-                    if (sun.misc.VM.isSetUID()) {
+                    if (jdk.internal.misc.VM.isSetUID()) {
                         // Ok, we are in a set UID program.  For safety's sake
                         // we disallow attempts to open files relative to %h.
                         throw new IOException("can't use %h in set UID program");
--- a/jdk/src/java.management/share/classes/java/lang/management/ManagementFactory.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.management/share/classes/java/lang/management/ManagementFactory.java	Fri Jan 15 09:15:33 2016 +0100
@@ -583,7 +583,7 @@
         ClassLoader loader =
             AccessController.doPrivileged(
                 (PrivilegedAction<ClassLoader>) () -> cls.getClassLoader());
-        if (!sun.misc.VM.isSystemDomainLoader(loader)) {
+        if (!jdk.internal.misc.VM.isSystemDomainLoader(loader)) {
             throw new IllegalArgumentException(mxbeanName +
                 " is not a platform MXBean");
         }
--- a/jdk/src/java.management/share/classes/sun/management/ConnectorAddressLink.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.management/share/classes/sun/management/ConnectorAddressLink.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,7 @@
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import sun.misc.Perf;
+import jdk.internal.perf.Perf;
 import sun.management.counter.Units;
 import sun.management.counter.Counter;
 import sun.management.counter.perf.PerfInstrumentation;
--- a/jdk/src/java.management/share/classes/sun/management/ManagementFactoryHelper.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.management/share/classes/sun/management/ManagementFactoryHelper.java	Fri Jan 15 09:15:33 2016 +0100
@@ -473,7 +473,7 @@
     public static Thread.State toThreadState(int state) {
         // suspended and native bits may be set in state
         int threadStatus = state & ~JMM_THREAD_STATE_FLAG_MASK;
-        return sun.misc.VM.toThreadState(threadStatus);
+        return jdk.internal.misc.VM.toThreadState(threadStatus);
     }
 
     // These values are defined in jmm.h
--- a/jdk/src/java.management/share/classes/sun/management/MemoryImpl.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.management/share/classes/sun/management/MemoryImpl.java	Fri Jan 15 09:15:33 2016 +0100
@@ -59,7 +59,7 @@
     }
 
     public int getObjectPendingFinalizationCount() {
-        return sun.misc.VM.getFinalRefCount();
+        return jdk.internal.misc.VM.getFinalRefCount();
     }
 
     public void gc() {
--- a/jdk/src/java.management/share/classes/sun/management/VMManagementImpl.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.management/share/classes/sun/management/VMManagementImpl.java	Fri Jan 15 09:15:33 2016 +0100
@@ -25,7 +25,7 @@
 
 package sun.management;
 
-import sun.misc.Perf;
+import jdk.internal.perf.Perf;
 import sun.management.counter.*;
 import sun.management.counter.perf.*;
 import java.nio.ByteBuffer;
--- a/jdk/src/java.rmi/share/classes/sun/rmi/server/MarshalInputStream.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.rmi/share/classes/sun/rmi/server/MarshalInputStream.java	Fri Jan 15 09:15:33 2016 +0100
@@ -262,7 +262,7 @@
      * if only code from the null class loader is on the stack.
      */
     private static ClassLoader latestUserDefinedLoader() {
-        return sun.misc.VM.latestUserDefinedLoader();
+        return jdk.internal.misc.VM.latestUserDefinedLoader();
     }
 
     /**
--- a/jdk/src/java.scripting/share/classes/javax/script/ScriptEngineFactory.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.scripting/share/classes/javax/script/ScriptEngineFactory.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,12 +31,14 @@
  * <code>ScriptEngineFactory</code> is used to describe and instantiate
  * <code>ScriptEngines</code>.
  * <br><br>
- * Each class implementing <code>ScriptEngine</code> has a corresponding factory
- * that exposes metadata describing the engine class.
+ * Each class implementing <code>ScriptEngine</code> has a corresponding
+ * factory that exposes metadata describing the engine class.
  * <br><br>The <code>ScriptEngineManager</code>
- * uses the service provider mechanism described in the <i>Jar File Specification</i> to obtain
- * instances of all <code>ScriptEngineFactories</code> available in
- * the current ClassLoader.
+ * uses the service-provider loader mechanism described in the
+ * {@link java.util.ServiceLoader} class to obtain
+ * instances of {@code ScriptEngineFactory} instances.
+ * See {@link ScriptEngineManager#ScriptEngineManager()} and
+ * {@link ScriptEngineManager#ScriptEngineManager(java.lang.ClassLoader)}.
  *
  * @since 1.6
  */
--- a/jdk/src/java.scripting/share/classes/javax/script/ScriptEngineManager.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.scripting/share/classes/javax/script/ScriptEngineManager.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,8 @@
  * The <code>ScriptEngineManager</code> implements a discovery and instantiation
  * mechanism for <code>ScriptEngine</code> classes and also maintains a
  * collection of key/value pairs storing state shared by all engines created
- * by the Manager. This class uses the <a href="../../../technotes/guides/jar/jar.html#Service%20Provider">service provider</a> mechanism to enumerate all the
+ * by the Manager. This class uses the service provider mechanism described in the
+ * {@link java.util.ServiceLoader} class to enumerate all the
  * implementations of <code>ScriptEngineFactory</code>. <br><br>
  * The <code>ScriptEngineManager</code> provides a method to return a list of all these factories
  * as well as utility methods which look up factories on the basis of language name, file extension
@@ -64,7 +65,7 @@
     /**
      * This constructor loads the implementations of
      * <code>ScriptEngineFactory</code> visible to the given
-     * <code>ClassLoader</code> using the <a href="../../../technotes/guides/jar/jar.html#Service%20Provider">service provider</a> mechanism.<br><br>
+     * <code>ClassLoader</code> using the service provider mechanism.<br><br>
      * If loader is <code>null</code>, the script engine factories that are
      * bundled with the platform are loaded. <br>
      *
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.scripting/share/classes/javax/script/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,94 @@
+/*
+ * 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.
+ */
+
+/**
+
+<p>The scripting API consists of interfaces and classes that define
+Java&trade; Scripting Engines and provides
+a framework for their use in Java applications. This API is intended
+for use by application programmers who wish to execute programs
+written in scripting languages in their Java applications. The
+scripting language programs are usually provided by the end-users of
+the applications.
+</p>
+<p>The main areas of functionality of <code>javax.script</code>
+package include
+</p>
+<ol>
+<li><p><b>Script execution</b>: Scripts
+are streams of characters used as sources for  programs executed by
+script engines. Script execution uses
+{@link javax.script.ScriptEngine#eval eval} methods of
+{@link javax.script.ScriptEngine ScriptEngine} and methods of the
+{@link javax.script.Invocable Invocable} interface.
+</p>
+<li><p><b>Binding</b>: This facility
+allows Java objects to be exposed to script programs as named
+variables. {@link javax.script.Bindings Bindings} and
+{@link javax.script.ScriptContext ScriptContext}
+classes are used for this purpose.
+</p>
+<li><p><b>Compilation</b>: This
+functionality allows the intermediate code generated by the
+front-end of a script engine to be stored and executed repeatedly.
+This benefits applications that execute the same script multiple
+times. These applications can gain efficiency since the engines'
+front-ends only need to execute once per script rather than once per
+script execution. Note that this functionality is optional and
+script engines may choose not to implement it. Callers need to check
+for availability of the {@link javax.script.Compilable Compilable}
+interface using an <I>instanceof</I> check.
+</p>
+<li><p><b>Invocation</b>: This
+functionality allows the reuse of intermediate code generated by a
+script engine's front-end. Whereas Compilation allows entire scripts
+represented by intermediate code to be re-executed, Invocation
+functionality allows individual procedures/methods in the scripts to
+be re-executed. As in the case with compilation, not all script
+engines are required to provide this facility. Caller has to check
+for {@link javax.script.Invocable Invocable} availability.
+</p>
+<li><p><b>Script engine discovery</b>: Applications
+written to the Scripting API might have specific requirements on
+script engines. Some may require a specific scripting language
+and/or version while others may require a specific implementation
+engine and/or version. Script engines are packaged in a specified
+way so that engines can be discovered at runtime and queried for
+attributes. The Engine discovery mechanism is based on the service-provider
+loading facility described in the {@link java.util.ServiceLoader} class.
+{@link javax.script.ScriptEngineManager ScriptEngineManager}
+includes
+{@link javax.script.ScriptEngineManager#getEngineFactories getEngineFactories} method to get all
+{@link javax.script.ScriptEngineFactory ScriptEngineFactory} instances
+discovered using this mechanism. <code>ScriptEngineFactory</code> has
+methods to query attributes about script engine.
+</p>
+</ol>
+
+@since 1.6
+*/
+
+package javax.script;
+
--- a/jdk/src/java.scripting/share/classes/javax/script/package.html	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-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.
--->
-
-</head>
-<body bgcolor="white">
-<p>The scripting API consists of interfaces and classes that define
-Java&trade; Scripting Engines and provides
-a framework for their use in Java applications. This API is intended
-for use by application programmers who wish to execute programs
-written in scripting languages in their Java applications. The
-scripting language programs are usually provided by the end-users of
-the applications. 
-</p>
-<p>The main areas of functionality of <code>javax.script</code>
-package include 
-</p>
-<ol>
-	<li><p><b>Script execution</b>: Scripts
-	are streams of characters used as sources for  programs executed by
-	script engines. Script execution uses 
-        {@link javax.script.ScriptEngine#eval eval} methods of
-	{@link javax.script.ScriptEngine ScriptEngine} and methods of the 
-        {@link javax.script.Invocable Invocable} interface. 
-	</p>
-	<li><p><b>Binding</b>: This facility
-	allows Java objects to be exposed to script programs as named
-	variables. {@link javax.script.Bindings Bindings} and 
-        {@link javax.script.ScriptContext ScriptContext}
-	classes are used for this purpose. 
-	</p>
-	<li><p><b>Compilation</b>: This
-	functionality allows the intermediate code generated by the
-	front-end of a script engine to be stored and executed repeatedly.
-	This benefits applications that execute the same script multiple
-	times. These applications can gain efficiency since the engines'
-	front-ends only need to execute once per script rather than once per
-	script execution. Note that this functionality is optional and
-	script engines may choose not to implement it. Callers need to check
-	for availability of the {@link javax.script.Compilable Compilable}
-        interface using an <I>instanceof</I> check. 
-	</p>
-	<li><p><b>Invocation</b>: This
-	functionality allows the reuse of intermediate code generated by a
-	script engine's front-end. Whereas Compilation allows entire scripts
-	represented by intermediate code to be re-executed, Invocation
-	functionality allows individual procedures/methods in the scripts to
-	be re-executed. As in the case with compilation, not all script
-	engines are required to provide this facility. Caller has to check
-	for {@link javax.script.Invocable Invocable} availability. 
-	</p>
-	<li><p><b>Script engine discovery and Metadata</b>: Applications
-	written to the Scripting API might have specific requirements on
-	script engines. Some may require a specific scripting language
-	and/or version while others may require a specific implementation
-	engine and/or version. Script engines are packaged in a specified
-	way so that engines can be discovered at runtime and queried for
-	attributes. The Engine discovery mechanism is based on the Service
-	discovery mechanism described in the <b>Jar File Specification</b>.
-	Script engine implementing classes are packaged in jar files that
-	include a  text resource named
-	<b>META-INF/services/javax.script.ScriptEngineFactory</b>. This
-	resource must include a line for each 
-        {@link javax.script.ScriptEngineFactory ScriptEngineFactory}
-	that is packaged in the jar file. 
-        {@link javax.script.ScriptEngineManager ScriptEngineManager}
-	includes 
-        {@link javax.script.ScriptEngineManager#getEngineFactories getEngineFactories} method to get all
-	{@link javax.script.ScriptEngineFactory ScriptEngineFactory} instances 
-        discovered using this mechanism. <code>ScriptEngineFactory</code> has 
-        methods to query attributes about script engine.
-	</p>
-</ol>
-
-@since 1.6
-
-</body>
-</html>
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	Fri Jan 15 09:15:33 2016 +0100
@@ -397,7 +397,7 @@
          */
 
         if (osname != null && !osname.startsWith("Windows")) {
-            long uid = sun.misc.VM.getuid();
+            long uid = jdk.internal.misc.VM.getuid();
             if (uid != -1) {
                 name = File.separator + "tmp" +
                         File.separator + stdCacheNameComponent + "_" + uid;
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/rcache/DflCache.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/internal/rcache/DflCache.java	Fri Jan 15 09:15:33 2016 +0100
@@ -60,7 +60,7 @@
  *
  *    service_euid
  *
- * in which euid is available as sun.misc.VM.geteuid().
+ * in which euid is available as jdk.internal.misc.VM.geteuid().
  *
  * The file has a header:
  *
@@ -107,7 +107,7 @@
     private static long uid;
     static {
         // Available on Solaris, Linux and Mac. Otherwise, -1 and no _euid suffix
-        uid = sun.misc.VM.geteuid();
+        uid = jdk.internal.misc.VM.geteuid();
     }
 
     public DflCache (String source) {
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/AWTEventMonitor.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/AWTEventMonitor.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * level support for capturing the top-level containers as they are created.
  */
 
-@jdk.Exported
 public class AWTEventMonitor {
 
     /**
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/AccessibilityEventMonitor.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/AccessibilityEventMonitor.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,7 +43,6 @@
  *
  */
 
-@jdk.Exported
 public class AccessibilityEventMonitor {
 
     // listeners
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/AccessibilityListenerList.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/AccessibilityListenerList.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  *
  */
 
-@jdk.Exported
 public class AccessibilityListenerList {
     /* A null array to be shared by all empty listener lists */
     private final static Object[] NULL_ARRAY = new Object[0];
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/EventID.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/EventID.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  * @see SwingEventMonitor
  *
  */
-@jdk.Exported
 public class EventID {
 
     /**
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/EventQueueMonitor.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/EventQueueMonitor.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * @see AWTEventMonitor
  * @see SwingEventMonitor
  */
-@jdk.Exported
 public class EventQueueMonitor
         implements AWTEventListener {
 
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/GUIInitializedListener.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/GUIInitializedListener.java	Fri Jan 15 09:15:33 2016 +0100
@@ -49,7 +49,6 @@
  * @see EventQueueMonitor#removeGUIInitializedListener
  *
  */
-@jdk.Exported
 public interface GUIInitializedListener extends EventListener {
 
     /**
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/SwingEventMonitor.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/SwingEventMonitor.java	Fri Jan 15 09:15:33 2016 +0100
@@ -56,7 +56,6 @@
  * @see AWTEventMonitor
  *
  */
-@jdk.Exported
 public class SwingEventMonitor extends AWTEventMonitor {
 
     /**
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/TopLevelWindowListener.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/TopLevelWindowListener.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,7 +43,6 @@
  * @see EventQueueMonitor#removeTopLevelWindowListener
  *
  */
-@jdk.Exported
 public interface TopLevelWindowListener extends EventListener {
 
     /**
--- a/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/Translator.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/Translator.java	Fri Jan 15 09:15:33 2016 +0100
@@ -58,7 +58,6 @@
  * to implement accessibility features for a toolkit.  Instead of relying upon this
  * code, a toolkit's components should implement interface {@code Accessible} directly.
  */
-@jdk.Exported
 public class Translator extends AccessibleContext
         implements Accessible, AccessibleComponent {
 
--- a/jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/internal/AccessBridge.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/internal/AccessBridge.java	Fri Jan 15 09:15:33 2016 +0100
@@ -53,7 +53,6 @@
  * Note: This class has to be public.  It's loaded from the VM like this:
  *       Class.forName(atName).newInstance();
  */
-@jdk.Exported(false)
 final public class AccessBridge {
 
     private static AccessBridge theAccessBridge;
--- a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AgentInitializationException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AgentInitializationException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * the error returned by the agent's {@code Agent_OnAttach} function.
  * This error code can be obtained by invoking the {@link #returnValue() returnValue} method.
  */
-@jdk.Exported
 public class AgentInitializationException extends Exception {
 
     /** use serialVersionUID for interoperability */
--- a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AgentLoadException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AgentLoadException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  * com.sun.tools.attach.VirtualMachine#loadAgentPath loadAgentPath} methods
  * if the agent, or agent library, cannot be loaded.
  */
-@jdk.Exported
 public class AgentLoadException extends Exception {
 
     /** use serialVersionUID for interoperability */
--- a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AttachNotSupportedException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AttachNotSupportedException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  * AttachProvider.attachVirtualMachine} if the provider attempts to
  * attach to a Java virtual machine with which it not comptatible.
  */
-@jdk.Exported
 public class AttachNotSupportedException extends Exception {
 
     /** use serialVersionUID for interoperability */
--- a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AttachOperationFailedException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AttachOperationFailedException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public class AttachOperationFailedException extends IOException {
 
     private static final long serialVersionUID = 2140308168167478043L;
--- a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AttachPermission.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AttachPermission.java	Fri Jan 15 09:15:33 2016 +0100
@@ -79,7 +79,6 @@
  * @see com.sun.tools.attach.spi.AttachProvider
  */
 
-@jdk.Exported
 public final class AttachPermission extends java.security.BasicPermission {
 
     /** use serialVersionUID for interoperability */
--- a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/VirtualMachine.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/VirtualMachine.java	Fri Jan 15 09:15:33 2016 +0100
@@ -96,7 +96,6 @@
  * @since 1.6
  */
 
-@jdk.Exported
 public abstract class VirtualMachine {
     private AttachProvider provider;
     private String id;
--- a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/VirtualMachineDescriptor.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/VirtualMachineDescriptor.java	Fri Jan 15 09:15:33 2016 +0100
@@ -55,7 +55,6 @@
  *
  * @since 1.6
  */
-@jdk.Exported
 public class VirtualMachineDescriptor {
 
     private AttachProvider provider;
--- a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,5 +38,4 @@
  * @since 1.6
  */
 
-@jdk.Exported
 package com.sun.tools.attach;
--- a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/spi/AttachProvider.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/spi/AttachProvider.java	Fri Jan 15 09:15:33 2016 +0100
@@ -74,7 +74,6 @@
  * @since 1.6
  */
 
-@jdk.Exported
 public abstract class AttachProvider {
 
     private static final Object lock = new Object();
--- a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/spi/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/spi/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,5 +31,4 @@
  * @since 1.6
  */
 
-@jdk.Exported
 package com.sun.tools.attach.spi;
--- a/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ExtendedCharsets.java.template	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ExtendedCharsets.java.template	Fri Jan 15 09:15:33 2016 +0100
@@ -97,7 +97,7 @@
     protected void init() {
         if (initialized)
             return;
-        if (!sun.misc.VM.isBooted())
+        if (!jdk.internal.misc.VM.isBooted())
             return;
 
         String map = getProperty("sun.nio.cs.map");
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/Authenticator.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/Authenticator.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  * Note. This implies that any caching of credentials or other authentication
  * information must be done outside of this class.
  */
-@jdk.Exported
 public abstract class Authenticator {
 
     /**
@@ -48,7 +47,6 @@
      * Indicates an authentication failure. The authentication
      * attempt has completed.
      */
-    @jdk.Exported
     public static class Failure extends Result {
 
         private int responseCode;
@@ -70,7 +68,6 @@
      * authenticated user principal can be acquired by calling
      * getPrincipal().
      */
-    @jdk.Exported
     public static class Success extends Result {
         private HttpPrincipal principal;
 
@@ -92,7 +89,6 @@
      * set any necessary response headers in the given HttpExchange
      * before returning this Retry object.
      */
-    @jdk.Exported
     public static class Retry extends Result {
 
         private int responseCode;
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/BasicAuthenticator.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/BasicAuthenticator.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,6 @@
  * to provide an implementation of {@link #checkCredentials(String,String)}
  * which is called to verify each incoming request.
  */
-@jdk.Exported
 public abstract class BasicAuthenticator extends Authenticator {
 
     protected String realm;
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/Filter.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/Filter.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * exchange handler.
  * @since 1.6
  */
-@jdk.Exported
 public abstract class Filter {
 
     protected Filter () {}
@@ -49,7 +48,6 @@
      * Each filter in the chain is given one of these
      * so it can invoke the next filter in the chain
      */
-    @jdk.Exported
     public static class Chain {
         /* the last element in the chain must invoke the users
          * handler
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/Headers.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/Headers.java	Fri Jan 15 09:15:33 2016 +0100
@@ -61,7 +61,6 @@
  * as a header line containing the key but no associated value.
  * @since 1.6
  */
-@jdk.Exported
 public class Headers implements Map<String,List<String>> {
 
         HashMap<String,List<String>> map;
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpContext.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpContext.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * context can be pre- and post-processed by each Filter in the chain.
  * @since 1.6
  */
-@jdk.Exported
 public abstract class HttpContext {
 
     protected HttpContext () {
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpExchange.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpExchange.java	Fri Jan 15 09:15:33 2016 +0100
@@ -64,7 +64,6 @@
  * @since 1.6
  */
 
-@jdk.Exported
 public abstract class HttpExchange {
 
     protected HttpExchange () {
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpHandler.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpHandler.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * HTTP exchange is handled by one of these handlers.
  * @since 1.6
  */
-@jdk.Exported
 public interface HttpHandler {
     /**
      * Handle the given request and generate an appropriate response.
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,6 @@
  * Represents a user authenticated by HTTP Basic or Digest
  * authentication.
  */
-@jdk.Exported
 public class HttpPrincipal implements Principal {
     private String username, realm;
 
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpServer.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpServer.java	Fri Jan 15 09:15:33 2016 +0100
@@ -87,7 +87,6 @@
  * @since 1.6
  */
 
-@jdk.Exported
 public abstract class HttpServer {
 
     /**
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpsConfigurator.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpsConfigurator.java	Fri Jan 15 09:15:33 2016 +0100
@@ -67,7 +67,6 @@
  * </pre></blockquote>
  * @since 1.6
  */
-@jdk.Exported
 public class HttpsConfigurator {
 
     private SSLContext context;
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpsExchange.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpsExchange.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @since 1.6
  */
 
-@jdk.Exported
 public abstract class HttpsExchange extends HttpExchange {
 
     protected HttpsExchange () {
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpsParameters.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpsParameters.java	Fri Jan 15 09:15:33 2016 +0100
@@ -49,7 +49,6 @@
  * are used, and any settings made in this object are ignored.
  * @since 1.6
  */
-@jdk.Exported
 public abstract class HttpsParameters {
 
     private String[] cipherSuites;
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpsServer.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpsServer.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * @since 1.6
  */
 
-@jdk.Exported
 public abstract class HttpsServer extends HttpServer {
 
     /**
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -123,5 +123,4 @@
 
    @since 1.6
  */
-@jdk.Exported
 package com.sun.net.httpserver;
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/spi/HttpServerProvider.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/spi/HttpServerProvider.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * {@link HttpServer} and associated classes. Applications do not normally use
  * this class. See {@link #provider()} for how providers are found and loaded.
  */
-@jdk.Exported
 public abstract class HttpServerProvider {
 
     /**
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/spi/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/spi/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -27,5 +27,4 @@
  * Provides a pluggable service provider interface, which allows the HTTP server
  * implementation to be replaced with other implementations.
  */
-@jdk.Exported
 package com.sun.net.httpserver.spi;
--- a/jdk/src/jdk.jartool/share/classes/com/sun/jarsigner/ContentSigner.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jartool/share/classes/com/sun/jarsigner/ContentSigner.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,7 +38,6 @@
  * @deprecated This class has been deprecated.
  */
 
-@jdk.Exported
 @Deprecated
 public abstract class ContentSigner {
 
--- a/jdk/src/jdk.jartool/share/classes/com/sun/jarsigner/ContentSignerParameters.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jartool/share/classes/com/sun/jarsigner/ContentSignerParameters.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  * @author Vincent Ryan
  * @deprecated This class has been deprecated.
  */
-@jdk.Exported
 @Deprecated
 public interface ContentSignerParameters {
 
--- a/jdk/src/jdk.jartool/share/classes/com/sun/jarsigner/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jartool/share/classes/com/sun/jarsigner/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,5 +35,4 @@
  * to sign JAR files.
  */
 
-@jdk.Exported
 package com.sun.jarsigner;
--- a/jdk/src/jdk.jartool/share/classes/jdk/security/jarsigner/JarSigner.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jartool/share/classes/jdk/security/jarsigner/JarSigner.java	Fri Jan 15 09:15:33 2016 +0100
@@ -79,7 +79,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public final class JarSigner {
 
     /**
@@ -88,7 +87,6 @@
      *
      * @since 1.9
      */
-    @jdk.Exported
     public static class Builder {
 
         // Signer materials:
--- a/jdk/src/jdk.jartool/share/classes/jdk/security/jarsigner/JarSignerException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jartool/share/classes/jdk/security/jarsigner/JarSignerException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,7 +30,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public class JarSignerException extends RuntimeException {
 
     private static final long serialVersionUID = -4732217075689309530L;
--- a/jdk/src/jdk.jconsole/share/classes/com/sun/tools/jconsole/JConsoleContext.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jconsole/share/classes/com/sun/tools/jconsole/JConsoleContext.java	Fri Jan 15 09:15:33 2016 +0100
@@ -42,7 +42,6 @@
  *
  * @since 1.6
  */
-@jdk.Exported
 public interface JConsoleContext {
     /**
      * The {@link ConnectionState ConnectionState} bound property name.
@@ -53,7 +52,6 @@
      * Values for the {@linkplain #CONNECTION_STATE_PROPERTY
      * <i>ConnectionState</i>} bound property.
      */
-    @jdk.Exported
     public enum ConnectionState {
         /**
          * The connection has been successfully established.
--- a/jdk/src/jdk.jconsole/share/classes/com/sun/tools/jconsole/JConsolePlugin.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jconsole/share/classes/com/sun/tools/jconsole/JConsolePlugin.java	Fri Jan 15 09:15:33 2016 +0100
@@ -72,7 +72,6 @@
  *
  * @since 1.6
  */
-@jdk.Exported
 public abstract class JConsolePlugin {
     private volatile JConsoleContext context = null;
     private List<PropertyChangeListener> listeners = null;
--- a/jdk/src/jdk.jconsole/share/classes/com/sun/tools/jconsole/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jconsole/share/classes/com/sun/tools/jconsole/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -29,5 +29,4 @@
  * @since 1.6
  */
 
-@jdk.Exported
 package com.sun.tools.jconsole;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/AbsentInformationException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/AbsentInformationException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,7 +31,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public class AbsentInformationException extends Exception
 {
     private static final long serialVersionUID = 4988939309582416373L;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Accessible.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Accessible.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface Accessible {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ArrayReference.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ArrayReference.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface ArrayReference extends ObjectReference {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ArrayType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ArrayType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,7 +38,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface ArrayType extends ReferenceType {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/BooleanType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/BooleanType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,6 +35,5 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface BooleanType extends PrimitiveType {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/BooleanValue.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/BooleanValue.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface BooleanValue extends PrimitiveValue {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Bootstrap.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Bootstrap.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  * @since  1.3
  */
 
-@jdk.Exported
 public class Bootstrap extends Object {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ByteType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ByteType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,6 +35,5 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface ByteType extends PrimitiveType {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ByteValue.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ByteValue.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface ByteValue extends PrimitiveValue, Comparable<ByteValue> {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/CharType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/CharType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,6 +35,5 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface CharType extends PrimitiveType {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/CharValue.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/CharValue.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface CharValue extends PrimitiveValue, Comparable<CharValue> {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ClassLoaderReference.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ClassLoaderReference.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public interface ClassLoaderReference extends ObjectReference {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ClassNotLoadedException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ClassNotLoadedException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -67,7 +67,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public class ClassNotLoadedException extends Exception
 {
     private static final long serialVersionUID = -6242978768444298722L;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ClassNotPreparedException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ClassNotPreparedException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public class ClassNotPreparedException extends RuntimeException {
     private static final long serialVersionUID = -6120698967144079642L;
     public ClassNotPreparedException()
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ClassObjectReference.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ClassObjectReference.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public interface ClassObjectReference extends ObjectReference {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ClassType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ClassType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface ClassType extends ReferenceType {
     /**
      * Gets the superclass of this class.
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/DoubleType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/DoubleType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,6 +35,5 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface DoubleType extends PrimitiveType {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/DoubleValue.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/DoubleValue.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface DoubleValue extends PrimitiveValue, Comparable<DoubleValue> {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Field.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Field.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,7 +38,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface Field extends TypeComponent, Comparable<Field> {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/FloatType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/FloatType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,6 +35,5 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface FloatType extends PrimitiveType {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/FloatValue.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/FloatValue.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface FloatValue extends PrimitiveValue, Comparable<FloatValue> {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/IncompatibleThreadStateException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/IncompatibleThreadStateException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public class IncompatibleThreadStateException extends Exception {
     private static final long serialVersionUID = 6199174323414551389L;
 
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InconsistentDebugInfoException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InconsistentDebugInfoException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public class InconsistentDebugInfoException extends RuntimeException {
     private static final long serialVersionUID = 7964236415376861808L;
     public InconsistentDebugInfoException() {
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/IntegerType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/IntegerType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,6 +35,5 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface IntegerType extends PrimitiveType {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/IntegerValue.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/IntegerValue.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface IntegerValue extends PrimitiveValue, Comparable<IntegerValue> {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InterfaceType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InterfaceType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,7 +43,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface InterfaceType extends ReferenceType {
     /**
      * Gets the interfaces directly extended by this interface.
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InternalException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InternalException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public class InternalException extends RuntimeException {
      private static final long serialVersionUID = -9171606393104480607L;
      private int errorCode;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InvalidCodeIndexException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InvalidCodeIndexException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 @Deprecated
 public class InvalidCodeIndexException extends RuntimeException {
     private static final long serialVersionUID = 7416010225133747805L;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InvalidLineNumberException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InvalidLineNumberException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 @Deprecated
 public class InvalidLineNumberException extends RuntimeException {
     private static final long serialVersionUID = 4048709912372692875L;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InvalidStackFrameException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InvalidStackFrameException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public class InvalidStackFrameException extends RuntimeException {
     private static final long serialVersionUID = -1919378296505827922L;
     public InvalidStackFrameException() {
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InvalidTypeException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InvalidTypeException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public class InvalidTypeException extends Exception {
     private static final long serialVersionUID = 2256667231949650806L;
 
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InvocationException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/InvocationException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public class InvocationException extends Exception {
     private static final long serialVersionUID = 6066780907971918568L;
     ObjectReference exception;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/JDIPermission.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/JDIPermission.java	Fri Jan 15 09:15:33 2016 +0100
@@ -78,7 +78,6 @@
  *
  */
 
-@jdk.Exported
 public final class JDIPermission extends java.security.BasicPermission {
     private static final long serialVersionUID = -6988461416938786271L;
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/LocalVariable.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/LocalVariable.java	Fri Jan 15 09:15:33 2016 +0100
@@ -42,7 +42,6 @@
  * @since  1.3
  */
 
-@jdk.Exported
 public interface LocalVariable extends Mirror, Comparable<LocalVariable> {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Locatable.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Locatable.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface Locatable {
     /**
      * Returns the {@link Location} of this mirror, if there is
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Location.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Location.java	Fri Jan 15 09:15:33 2016 +0100
@@ -86,7 +86,6 @@
  * @author James McIlree
  * @since 1.3
  */
-@jdk.Exported
 public interface Location extends Mirror, Comparable<Location> {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/LongType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/LongType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,6 +35,5 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface LongType extends PrimitiveType {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/LongValue.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/LongValue.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface LongValue extends PrimitiveValue, Comparable<LongValue> {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Method.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Method.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface Method extends TypeComponent, Locatable, Comparable<Method> {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Mirror.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Mirror.java	Fri Jan 15 09:15:33 2016 +0100
@@ -56,7 +56,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface Mirror {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/MonitorInfo.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/MonitorInfo.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * @since  1.6
  */
 
-@jdk.Exported
 public interface MonitorInfo extends Mirror {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/NativeMethodException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/NativeMethodException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public class NativeMethodException extends RuntimeException {
 
     private static final long serialVersionUID = 3924951669039469992L;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ObjectCollectedException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ObjectCollectedException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public class ObjectCollectedException extends RuntimeException {
     private static final long serialVersionUID = -1928428056197269588L;
     public ObjectCollectedException() {
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ObjectReference.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ObjectReference.java	Fri Jan 15 09:15:33 2016 +0100
@@ -55,7 +55,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface ObjectReference extends Value {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/PathSearchingVirtualMachine.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/PathSearchingVirtualMachine.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public interface PathSearchingVirtualMachine extends VirtualMachine {
     /**
      * Get the class path for this virtual machine.
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/PrimitiveType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/PrimitiveType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,6 +37,5 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface PrimitiveType extends Type {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/PrimitiveValue.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/PrimitiveValue.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface PrimitiveValue extends Value {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ReferenceType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ReferenceType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -77,7 +77,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface ReferenceType
     extends Type, Comparable<ReferenceType>, Accessible
 {
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ShortType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ShortType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,6 +35,5 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface ShortType extends PrimitiveType {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ShortValue.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ShortValue.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface ShortValue extends PrimitiveValue, Comparable<ShortValue> {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/StackFrame.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/StackFrame.java	Fri Jan 15 09:15:33 2016 +0100
@@ -58,7 +58,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface StackFrame extends Mirror, Locatable {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/StringReference.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/StringReference.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface StringReference extends ObjectReference {
     /**
      * Returns the StringReference as a String. The returned string
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ThreadGroupReference.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ThreadGroupReference.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface ThreadGroupReference extends ObjectReference {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ThreadReference.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/ThreadReference.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface ThreadReference extends ObjectReference {
     /** Thread status is unknown */
     public final int THREAD_STATUS_UNKNOWN  =-1;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Type.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Type.java	Fri Jan 15 09:15:33 2016 +0100
@@ -127,7 +127,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface Type extends Mirror {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/TypeComponent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/TypeComponent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -44,7 +44,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface TypeComponent extends Mirror, Accessible {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VMCannotBeModifiedException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VMCannotBeModifiedException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * @author Jim Holmlund
  * @since  1.5
  */
-@jdk.Exported
 public class VMCannotBeModifiedException extends UnsupportedOperationException {
     private static final long serialVersionUID = -4063879815130164009L;
     public VMCannotBeModifiedException() {
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VMDisconnectedException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VMDisconnectedException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public class VMDisconnectedException extends RuntimeException {
 
     private static final long serialVersionUID = 2892975269768351637L;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VMMismatchException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VMMismatchException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public class VMMismatchException extends RuntimeException {
     private static final long serialVersionUID = 289169358790459564L;
     public VMMismatchException() {
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VMOutOfMemoryException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VMOutOfMemoryException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public class VMOutOfMemoryException extends RuntimeException {
     private static final long serialVersionUID = 71504228548910686L;
     public VMOutOfMemoryException() {
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Value.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Value.java	Fri Jan 15 09:15:33 2016 +0100
@@ -168,7 +168,6 @@
  * @since  1.3
  */
 
-@jdk.Exported
 public interface Value extends Mirror {
     /**
      * Returns the run-time type of this value.
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VirtualMachine.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VirtualMachine.java	Fri Jan 15 09:15:33 2016 +0100
@@ -70,7 +70,6 @@
  * @author James McIlree
  * @since  1.3
  */
-@jdk.Exported
 public interface VirtualMachine extends Mirror {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VirtualMachineManager.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VirtualMachineManager.java	Fri Jan 15 09:15:33 2016 +0100
@@ -275,7 +275,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public interface VirtualMachineManager {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VoidType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VoidType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,6 +35,5 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface VoidType extends Type {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VoidValue.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VoidValue.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface VoidValue extends Value {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/AttachingConnector.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/AttachingConnector.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public interface AttachingConnector extends Connector {
     /**
      * Attaches to a running application and returns a
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/Connector.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/Connector.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public interface Connector {
     /**
      * Returns a short identifier for the connector. Connector implementors
@@ -92,7 +91,6 @@
      * {@link Connector.IntegerArgument},
      * or {@link Connector.SelectedArgument}.
      */
-    @jdk.Exported
     public interface Argument extends Serializable {
         /**
          * Returns a short, unique identifier for the argument.
@@ -158,7 +156,6 @@
      * whose value is Boolean.  Boolean values are represented
      * by the localized versions of the strings "true" and "false".
      */
-    @jdk.Exported
     public interface BooleanArgument extends Argument {
         /**
          * Sets the value of the argument.
@@ -199,7 +196,6 @@
      * whose value is an integer.  Integer values are represented
      * by their corresponding strings.
      */
-    @jdk.Exported
     public interface IntegerArgument extends Argument {
         /**
          * Sets the value of the argument.
@@ -261,7 +257,6 @@
      * Specification for and value of a Connector argument,
      * whose value is a String.
      */
-    @jdk.Exported
     public interface StringArgument extends Argument {
         /**
          * Performs basic sanity check of argument.
@@ -274,7 +269,6 @@
      * Specification for and value of a Connector argument,
      * whose value is a String selected from a list of choices.
      */
-    @jdk.Exported
     public interface SelectedArgument extends Argument {
         /**
          * Return the possible values for the argument
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/IllegalConnectorArgumentsException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/IllegalConnectorArgumentsException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public class IllegalConnectorArgumentsException extends Exception {
 
     private static final long serialVersionUID = -3042212603611350941L;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/LaunchingConnector.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/LaunchingConnector.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public interface LaunchingConnector extends Connector {
     /**
      * Launches an application and connects to its VM. Properties
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/ListeningConnector.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/ListeningConnector.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public interface ListeningConnector extends Connector {
     /**
      * Indicates whether this listening connector supports multiple
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/Transport.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/Transport.java	Fri Jan 15 09:15:33 2016 +0100
@@ -42,7 +42,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public interface Transport {
     /**
      * Returns a short identifier for the transport.
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/TransportTimeoutException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/TransportTimeoutException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -54,7 +54,6 @@
  *
  * @since 1.5
  */
-@jdk.Exported
 public class TransportTimeoutException extends java.io.IOException {
     private static final long serialVersionUID = 4107035242623365074L;
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/VMStartException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/VMStartException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  * @author Gordon Hirsch
  * @since  1.3
  */
-@jdk.Exported
 public class VMStartException extends Exception {
 
     private static final long serialVersionUID = 6408644824640801020L;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,5 +35,4 @@
  * extension.
  */
 
-@jdk.Exported
 package com.sun.jdi.connect;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/spi/ClosedConnectionException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/spi/ClosedConnectionException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  *
  * @since 1.5
  */
-@jdk.Exported
 public class ClosedConnectionException extends java.io.IOException {
     private static final long serialVersionUID = 3877032124297204774L;
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/spi/Connection.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/spi/Connection.java	Fri Jan 15 09:15:33 2016 +0100
@@ -56,7 +56,6 @@
  * @since 1.5
  */
 
-@jdk.Exported
 public abstract class Connection {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/spi/TransportService.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/spi/TransportService.java	Fri Jan 15 09:15:33 2016 +0100
@@ -77,7 +77,6 @@
  * @since 1.5
  */
 
-@jdk.Exported
 public abstract class TransportService {
 
     /**
@@ -97,7 +96,6 @@
     /**
      * The transport service capabilities.
      */
-    @jdk.Exported
     public static abstract class Capabilities {
 
         /**
@@ -231,7 +229,6 @@
      * #stopListening stopListening} to stop the transport
      * service from listening on an address.
      */
-    @jdk.Exported
     public static abstract class ListenKey {
 
         /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/spi/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/spi/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -29,5 +29,4 @@
  * implementations.
  */
 
-@jdk.Exported
 package com.sun.jdi.connect.spi;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/AccessWatchpointEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/AccessWatchpointEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,6 +37,5 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface AccessWatchpointEvent extends WatchpointEvent {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/BreakpointEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/BreakpointEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -47,6 +47,5 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface BreakpointEvent extends LocatableEvent {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/ClassPrepareEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/ClassPrepareEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface ClassPrepareEvent extends Event {
     /**
      * Returns the thread in which this event has occurred.
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/ClassUnloadEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/ClassUnloadEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface ClassUnloadEvent extends Event {
     /**
      * Returns the name of the class that has been unloaded.
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/Event.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/Event.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,7 +43,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface Event extends Mirror {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/EventIterator.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/EventIterator.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * @since  1.3
  */
 
-@jdk.Exported
 public interface EventIterator extends Iterator<Event> {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/EventQueue.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/EventQueue.java	Fri Jan 15 09:15:33 2016 +0100
@@ -57,7 +57,6 @@
  * @since  1.3
  */
 
-@jdk.Exported
 public interface EventQueue extends Mirror {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/EventSet.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/EventSet.java	Fri Jan 15 09:15:33 2016 +0100
@@ -126,7 +126,6 @@
  * @since  1.3
  */
 
-@jdk.Exported
 public interface EventSet extends Mirror, Set<Event> {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/ExceptionEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/ExceptionEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -44,7 +44,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface ExceptionEvent extends LocatableEvent {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/LocatableEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/LocatableEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface LocatableEvent extends Event, Locatable {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MethodEntryEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MethodEntryEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,7 +43,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface MethodEntryEvent extends LocatableEvent {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MethodExitEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MethodExitEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface MethodExitEvent extends LocatableEvent {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/ModificationWatchpointEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/ModificationWatchpointEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,7 +38,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface ModificationWatchpointEvent extends WatchpointEvent {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorContendedEnterEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorContendedEnterEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author Swamy Venkataramanappa
  * @since  1.6
  */
-@jdk.Exported
 public interface MonitorContendedEnterEvent extends LocatableEvent {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorContendedEnteredEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorContendedEnteredEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,7 +38,6 @@
  * @author Swamy Venkataramanappa
  * @since  1.6
  */
-@jdk.Exported
 public interface MonitorContendedEnteredEvent extends LocatableEvent {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorWaitEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorWaitEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  * @author Swamy Venkataramanappa
  * @since  1.6
  */
-@jdk.Exported
 public interface MonitorWaitEvent extends LocatableEvent {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorWaitedEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorWaitedEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  * @author Swamy Venkataramanappa
  * @since  1.6
  */
-@jdk.Exported
 public interface MonitorWaitedEvent extends LocatableEvent {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/StepEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/StepEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -46,6 +46,5 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface StepEvent extends LocatableEvent {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/ThreadDeathEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/ThreadDeathEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface ThreadDeathEvent extends Event {
     /**
      * Returns the thread which is terminating.
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/ThreadStartEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/ThreadStartEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -52,7 +52,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface ThreadStartEvent extends Event {
     /**
      * Returns the thread which has started.
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/VMDeathEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/VMDeathEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -68,6 +68,5 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface VMDeathEvent extends Event {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/VMDisconnectEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/VMDisconnectEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -52,6 +52,5 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface VMDisconnectEvent extends Event {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/VMStartEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/VMStartEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,7 +43,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface VMStartEvent extends Event {
     /**
      * Returns the initial thread of the VM which has started.
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/WatchpointEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/WatchpointEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface WatchpointEvent extends LocatableEvent {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,5 +43,4 @@
  * extension.
  */
 
-@jdk.Exported
 package com.sun.jdi.event;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -44,5 +44,4 @@
  * extension.
  */
 
-@jdk.Exported
 package com.sun.jdi;
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/AccessWatchpointRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/AccessWatchpointRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -55,6 +55,5 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface AccessWatchpointRequest extends WatchpointRequest {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/BreakpointRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/BreakpointRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -46,7 +46,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface BreakpointRequest extends EventRequest, Locatable {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/ClassPrepareRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/ClassPrepareRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -47,7 +47,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface ClassPrepareRequest extends EventRequest {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/ClassUnloadRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/ClassUnloadRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -46,7 +46,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface ClassUnloadRequest extends EventRequest {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/DuplicateRequestException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/DuplicateRequestException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,7 +31,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public class DuplicateRequestException extends RuntimeException {
     private static final long serialVersionUID = -3719784920313411060L;
 
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/EventRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/EventRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -78,7 +78,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface EventRequest extends Mirror {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/EventRequestManager.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/EventRequestManager.java	Fri Jan 15 09:15:33 2016 +0100
@@ -44,7 +44,6 @@
  * @since  1.3
  */
 
-@jdk.Exported
 public interface EventRequestManager extends Mirror {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/ExceptionRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/ExceptionRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,7 +43,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface ExceptionRequest extends EventRequest {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/InvalidRequestStateException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/InvalidRequestStateException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public class InvalidRequestStateException extends RuntimeException {
     private static final long serialVersionUID = -3774632428543322148L;
     public InvalidRequestStateException()
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/MethodEntryRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/MethodEntryRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -44,7 +44,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface MethodEntryRequest extends EventRequest {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/MethodExitRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/MethodExitRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -44,7 +44,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface MethodExitRequest extends EventRequest {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/ModificationWatchpointRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/ModificationWatchpointRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -55,6 +55,5 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface ModificationWatchpointRequest extends WatchpointRequest {
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/MonitorContendedEnterRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/MonitorContendedEnterRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * @author Swamy Venkataramanappa
  * @since  1.6
  */
-@jdk.Exported
 public interface MonitorContendedEnterRequest extends EventRequest {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/MonitorContendedEnteredRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/MonitorContendedEnteredRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * @author Swamy Venkataramanappa
  * @since  1.6
  */
-@jdk.Exported
 public interface MonitorContendedEnteredRequest extends EventRequest {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/MonitorWaitRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/MonitorWaitRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * @author Swamy Venkataramanappa
  * @since  1.6
  */
-@jdk.Exported
 public interface MonitorWaitRequest extends EventRequest {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/MonitorWaitedRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/MonitorWaitedRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * @author Swamy Venkataramanappa
  * @since  1.6
  */
-@jdk.Exported
 public interface MonitorWaitedRequest extends EventRequest {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/StepRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/StepRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,7 +43,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface StepRequest extends EventRequest {
 
     /** Step into any newly pushed frames */
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/ThreadDeathRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/ThreadDeathRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -44,7 +44,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface ThreadDeathRequest extends EventRequest {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/ThreadStartRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/ThreadStartRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -44,7 +44,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface ThreadStartRequest extends EventRequest {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/VMDeathRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/VMDeathRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -56,7 +56,6 @@
  * @author Robert Field
  * @since  1.4
  */
-@jdk.Exported
 public interface VMDeathRequest extends EventRequest {
 
 }
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/WatchpointRequest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/WatchpointRequest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,7 +38,6 @@
  * @author Robert Field
  * @since  1.3
  */
-@jdk.Exported
 public interface WatchpointRequest extends EventRequest {
 
     /**
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -42,5 +42,4 @@
  * extension.
  */
 
-@jdk.Exported
 package com.sun.jdi.request;
--- a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractMonitoredVm.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractMonitoredVm.java	Fri Jan 15 09:15:33 2016 +0100
@@ -95,7 +95,7 @@
     public void detach() {
         /*
          * no default action required because the detach operation for the
-         * native byte buffer is managed by the sun.misc.Perf class.
+         * native byte buffer is managed by the Perf class.
          */
     }
 
--- a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractPerfDataBuffer.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/AbstractPerfDataBuffer.java	Fri Jan 15 09:15:33 2016 +0100
@@ -25,7 +25,6 @@
 
 package sun.jvmstat.perfdata.monitor;
 
-import sun.misc.Perf;
 import sun.jvmstat.monitor.*;
 import java.util.*;
 import java.io.*;
--- a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataBuffer.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataBuffer.java	Fri Jan 15 09:15:33 2016 +0100
@@ -25,7 +25,7 @@
 
 package sun.jvmstat.perfdata.monitor.protocol.local;
 
-import sun.misc.Perf;
+import jdk.internal.perf.Perf;
 import sun.jvmstat.monitor.*;
 import sun.jvmstat.perfdata.monitor.*;
 import java.util.*;
--- a/jdk/src/jdk.management/share/classes/com/sun/management/GarbageCollectionNotificationInfo.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.management/share/classes/com/sun/management/GarbageCollectionNotificationInfo.java	Fri Jan 15 09:15:33 2016 +0100
@@ -82,7 +82,6 @@
  * </ul>
  **/
 
-@jdk.Exported
 public class GarbageCollectionNotificationInfo implements  CompositeDataView {
 
     private final String gcName;
--- a/jdk/src/jdk.management/share/classes/com/sun/management/GarbageCollectorMXBean.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.management/share/classes/com/sun/management/GarbageCollectorMXBean.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-@jdk.Exported
 public interface GarbageCollectorMXBean
     extends java.lang.management.GarbageCollectorMXBean {
 
--- a/jdk/src/jdk.management/share/classes/com/sun/management/GcInfo.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.management/share/classes/com/sun/management/GcInfo.java	Fri Jan 15 09:15:33 2016 +0100
@@ -63,7 +63,6 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-@jdk.Exported
 public class GcInfo implements CompositeData, CompositeDataView {
     private final long index;
     private final long startTime;
--- a/jdk/src/jdk.management/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.management/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java	Fri Jan 15 09:15:33 2016 +0100
@@ -47,7 +47,6 @@
  *
  * @see java.lang.management.ManagementFactory#getPlatformMXBeans(Class)
  */
-@jdk.Exported
 public interface HotSpotDiagnosticMXBean extends PlatformManagedObject {
     /**
      * Dumps the heap to the {@code outputFile} file in the same
--- a/jdk/src/jdk.management/share/classes/com/sun/management/OperatingSystemMXBean.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.management/share/classes/com/sun/management/OperatingSystemMXBean.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-@jdk.Exported
 public interface OperatingSystemMXBean extends
     java.lang.management.OperatingSystemMXBean {
 
--- a/jdk/src/jdk.management/share/classes/com/sun/management/ThreadMXBean.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.management/share/classes/com/sun/management/ThreadMXBean.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,7 +38,6 @@
  * @since   6u25
  */
 
-@jdk.Exported
 public interface ThreadMXBean extends java.lang.management.ThreadMXBean {
     /**
      * Returns the total CPU time for each thread whose ID is
--- a/jdk/src/jdk.management/share/classes/com/sun/management/UnixOperatingSystemMXBean.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.management/share/classes/com/sun/management/UnixOperatingSystemMXBean.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-@jdk.Exported
 public interface UnixOperatingSystemMXBean extends
     com.sun.management.OperatingSystemMXBean {
 
--- a/jdk/src/jdk.management/share/classes/com/sun/management/VMOption.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.management/share/classes/com/sun/management/VMOption.java	Fri Jan 15 09:15:33 2016 +0100
@@ -52,7 +52,6 @@
  * @author Mandy Chung
  * @since 1.6
  */
-@jdk.Exported
 public class VMOption {
     private String name;
     private String value;
@@ -65,7 +64,6 @@
      *
      * @since 1.6
      */
-    @jdk.Exported
     public enum Origin {
         /**
          * The VM option has not been set and its value
--- a/jdk/src/jdk.management/share/classes/com/sun/management/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.management/share/classes/com/sun/management/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,5 +40,4 @@
  * @since   1.5
  */
 
-@jdk.Exported
 package com.sun.management;
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/AbstractNotificationHandler.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/AbstractNotificationHandler.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public class AbstractNotificationHandler<T>
     implements NotificationHandler<T>
 {
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/Association.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/Association.java	Fri Jan 15 09:15:33 2016 +0100
@@ -51,7 +51,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public class Association {
     private final int associationID;
     private final int maxInStreams;
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/AssociationChangeNotification.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/AssociationChangeNotification.java	Fri Jan 15 09:15:33 2016 +0100
@@ -29,7 +29,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public abstract class AssociationChangeNotification
     implements Notification
 {
@@ -38,7 +37,6 @@
      *
      * @since 1.7
      */
-    @jdk.Exported
     public enum AssocChangeEvent
     {
         /**
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/HandlerResult.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/HandlerResult.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public enum HandlerResult {
     /**
      * Try to receieve another message or notification.
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/IllegalReceiveException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/IllegalReceiveException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,7 +31,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public class IllegalReceiveException extends IllegalStateException {
     private static final long serialVersionUID = 2296619040988576224L;
 
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/IllegalUnbindException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/IllegalUnbindException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,7 +31,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public class IllegalUnbindException extends IllegalStateException {
     private static final long serialVersionUID = -310540883995532224L;
 
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/InvalidStreamException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/InvalidStreamException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,7 +30,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public class InvalidStreamException extends IllegalArgumentException {
     private static final long serialVersionUID = -9172703378046665558L;
 
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/MessageInfo.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/MessageInfo.java	Fri Jan 15 09:15:33 2016 +0100
@@ -56,7 +56,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public abstract class MessageInfo {
     /**
      * Initializes a new instance of this class.
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/Notification.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/Notification.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public interface Notification {
     /**
      * Returns the association that this notification is applicable to.
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/NotificationHandler.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/NotificationHandler.java	Fri Jan 15 09:15:33 2016 +0100
@@ -49,7 +49,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public interface NotificationHandler<T> {
     /**
      * Invoked when a notification is received from the SCTP stack.
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/PeerAddressChangeNotification.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/PeerAddressChangeNotification.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public abstract class PeerAddressChangeNotification
     implements Notification
 {
@@ -47,7 +46,6 @@
      *
      * @since 1.7
      */
-    @jdk.Exported
     public enum AddressChangeEvent {
         /**
          * This address is now reachable.
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpChannel.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpChannel.java	Fri Jan 15 09:15:33 2016 +0100
@@ -134,7 +134,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public abstract class SctpChannel
     extends AbstractSelectableChannel
 {
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpMultiChannel.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpMultiChannel.java	Fri Jan 15 09:15:33 2016 +0100
@@ -134,7 +134,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public abstract class SctpMultiChannel
     extends AbstractSelectableChannel
 {
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpServerChannel.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpServerChannel.java	Fri Jan 15 09:15:33 2016 +0100
@@ -68,7 +68,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public abstract class SctpServerChannel
     extends AbstractSelectableChannel
 {
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpSocketOption.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpSocketOption.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,5 +35,4 @@
  *
  * @see SctpStandardSocketOptions
  */
-@jdk.Exported
 public interface SctpSocketOption<T> extends SocketOption<T> { }
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpStandardSocketOptions.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpStandardSocketOptions.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public class SctpStandardSocketOptions {
     private SctpStandardSocketOptions() {}
     /**
@@ -316,7 +315,6 @@
      *
      * @since 1.7
      */
-    @jdk.Exported
     public static class InitMaxStreams {
         private int maxInStreams;
         private int maxOutStreams;
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SendFailedNotification.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SendFailedNotification.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public abstract class SendFailedNotification implements Notification {
     /**
      * Initializes a new instance of this class.
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/ShutdownNotification.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/ShutdownNotification.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public abstract class ShutdownNotification implements Notification {
     /**
      * Initializes a new instance of this class.
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -72,5 +72,4 @@
  * @since 1.7
  */
 
-@jdk.Exported
 package com.sun.nio.sctp;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/LdapPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/LdapPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  *
  * @since 1.6
  */
-@jdk.Exported
 public final class LdapPrincipal implements Principal, java.io.Serializable {
 
     private static final long serialVersionUID = 6820120005580754861L;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTDomainPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTDomainPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@jdk.Exported
 public class NTDomainPrincipal implements Principal, java.io.Serializable {
 
     private static final long serialVersionUID = -4408637351440771220L;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTNumericCredential.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTNumericCredential.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,7 +30,6 @@
  * and provides a mechanism to do same-process security impersonation.
  */
 
-@jdk.Exported
 public class NTNumericCredential {
 
     private long impersonationToken;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSid.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSid.java	Fri Jan 15 09:15:33 2016 +0100
@@ -47,7 +47,6 @@
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@jdk.Exported
 public class NTSid implements Principal, java.io.Serializable {
 
     private static final long serialVersionUID = 4412290580770249885L;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidDomainPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidDomainPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,7 +43,6 @@
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@jdk.Exported
 public class NTSidDomainPrincipal extends NTSid {
 
     private static final long serialVersionUID = 5247810785821650912L;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidGroupPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidGroupPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * @see javax.security.auth.Subject
  * @see com.sun.security.auth.NTSid
  */
-@jdk.Exported
 public class NTSidGroupPrincipal extends NTSid {
 
     private static final long serialVersionUID = -1373347438636198229L;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidPrimaryGroupPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidPrimaryGroupPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@jdk.Exported
 public class NTSidPrimaryGroupPrincipal extends NTSid {
 
     private static final long serialVersionUID = 8011978367305190527L;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidUserPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidUserPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@jdk.Exported
 public class NTSidUserPrincipal extends NTSid {
 
     private static final long serialVersionUID = -5573239889517749525L;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTUserPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTUserPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@jdk.Exported
 public class NTUserPrincipal implements Principal, java.io.Serializable {
 
     private static final long serialVersionUID = -8737649811939033735L;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/PolicyFile.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/PolicyFile.java	Fri Jan 15 09:15:33 2016 +0100
@@ -215,7 +215,6 @@
  * @see java.security.ProtectionDomain
  * @see java.security.Security security properties
  */
-@jdk.Exported(false)
 @Deprecated
 public class PolicyFile extends javax.security.auth.Policy {
 
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/PrincipalComparator.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/PrincipalComparator.java	Fri Jan 15 09:15:33 2016 +0100
@@ -50,7 +50,6 @@
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@jdk.Exported
 public interface PrincipalComparator {
     /**
      * Check if the specified {@code Subject} is implied by
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericGroupPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericGroupPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@jdk.Exported(false)
 @Deprecated
 public class SolarisNumericGroupPrincipal implements
                                         Principal,
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericUserPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericUserPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -44,7 +44,6 @@
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@jdk.Exported(false)
 @Deprecated
 public class SolarisNumericUserPrincipal implements
                                         Principal,
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -44,7 +44,6 @@
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@jdk.Exported(false)
 @Deprecated
 public class SolarisPrincipal implements Principal, java.io.Serializable {
 
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericGroupPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericGroupPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@jdk.Exported
 public class UnixNumericGroupPrincipal implements
                                         Principal,
                                         java.io.Serializable {
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericUserPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericUserPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@jdk.Exported
 public class UnixNumericUserPrincipal implements
                                         Principal,
                                         java.io.Serializable {
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@jdk.Exported
 public class UnixPrincipal implements Principal, java.io.Serializable {
 
     private static final long serialVersionUID = -2951667807323493631L;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UserPrincipal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UserPrincipal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -42,7 +42,6 @@
  *
  * @since 1.6
  */
-@jdk.Exported
 public final class UserPrincipal implements Principal, java.io.Serializable {
 
     private static final long serialVersionUID = 892106070870210969L;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/X500Principal.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/X500Principal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -49,7 +49,6 @@
  *             class.
  * @see javax.security.auth.x500.X500Principal
 */
-@jdk.Exported(false)
 @Deprecated
 public class X500Principal implements Principal, java.io.Serializable {
 
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/callback/TextCallbackHandler.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/callback/TextCallbackHandler.java	Fri Jan 15 09:15:33 2016 +0100
@@ -46,7 +46,6 @@
  * @see javax.security.auth.callback
  */
 
-@jdk.Exported
 public class TextCallbackHandler implements CallbackHandler {
     private final CallbackHandler consoleHandler;
 
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/callback/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/callback/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -23,5 +23,4 @@
  * questions.
  */
 
-@jdk.Exported
 package com.sun.security.auth.callback;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/login/ConfigFile.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/login/ConfigFile.java	Fri Jan 15 09:15:33 2016 +0100
@@ -83,7 +83,6 @@
  * @see javax.security.auth.login.LoginContext
  * @see java.security.Security security properties
  */
-@jdk.Exported
 public class ConfigFile extends Configuration {
 
     private final sun.security.provider.ConfigFile.Spi spi;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/login/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/login/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -23,5 +23,4 @@
  * questions.
  */
 
-@jdk.Exported
 package com.sun.security.auth.login;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/JndiLoginModule.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/JndiLoginModule.java	Fri Jan 15 09:15:33 2016 +0100
@@ -151,7 +151,6 @@
  * </pre>
  *
  */
-@jdk.Exported
 public class JndiLoginModule implements LoginModule {
 
     private static final ResourceBundle rb = AccessController.doPrivileged(
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java	Fri Jan 15 09:15:33 2016 +0100
@@ -110,7 +110,6 @@
  *
  * </dl>
  */
-@jdk.Exported
 public class KeyStoreLoginModule implements LoginModule {
 
     private static final ResourceBundle rb = AccessController.doPrivileged(
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/Krb5LoginModule.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/Krb5LoginModule.java	Fri Jan 15 09:15:33 2016 +0100
@@ -367,7 +367,6 @@
  * @author Ram Marti
  */
 
-@jdk.Exported
 public class Krb5LoginModule implements LoginModule {
 
     // initial state
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/LdapLoginModule.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/LdapLoginModule.java	Fri Jan 15 09:15:33 2016 +0100
@@ -303,7 +303,6 @@
  *
  * @since 1.6
  */
-@jdk.Exported
 public class LdapLoginModule implements LoginModule {
 
     // Use the default classloader for this class to load the prompt strings.
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/NTLoginModule.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/NTLoginModule.java	Fri Jan 15 09:15:33 2016 +0100
@@ -57,7 +57,6 @@
  *
  * @see javax.security.auth.spi.LoginModule
  */
-@jdk.Exported
 public class NTLoginModule implements LoginModule {
 
     private NTSystem ntSystem;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/NTSystem.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/NTSystem.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,7 +30,6 @@
  * security information for the current user.
  *
  */
-@jdk.Exported
 public class NTSystem {
 
     private native void getCurrent(boolean debug);
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/SolarisLoginModule.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/SolarisLoginModule.java	Fri Jan 15 09:15:33 2016 +0100
@@ -52,7 +52,6 @@
  *             UnixLoginModule.
  *
  */
-@jdk.Exported(false)
 @Deprecated
 public class SolarisLoginModule implements LoginModule {
 
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/SolarisSystem.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/SolarisSystem.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,7 +31,6 @@
  *
  * @deprecated replaced by {@link UnixSystem}.
  */
-@jdk.Exported(false)
 @Deprecated
 public class SolarisSystem {
 
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/UnixLoginModule.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/UnixLoginModule.java	Fri Jan 15 09:15:33 2016 +0100
@@ -47,7 +47,6 @@
  * debug messages will be output to the output stream, System.out.
  *
  */
-@jdk.Exported
 public class UnixLoginModule implements LoginModule {
 
     // initial state
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/UnixSystem.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/UnixSystem.java	Fri Jan 15 09:15:33 2016 +0100
@@ -29,7 +29,6 @@
  * This class implementation retrieves and makes available Unix
  * UID/GID/groups information for the current user.
  */
-@jdk.Exported
 public class UnixSystem {
 
     private native void getUnixInfo();
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -23,5 +23,4 @@
  * questions.
  */
 
-@jdk.Exported
 package com.sun.security.auth.module;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -23,5 +23,4 @@
  * questions.
  */
 
-@jdk.Exported
 package com.sun.security.auth;
--- a/jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss/AuthorizationDataEntry.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss/AuthorizationDataEntry.java	Fri Jan 15 09:15:33 2016 +0100
@@ -28,7 +28,6 @@
 /**
  * Kerberos 5 AuthorizationData entry.
  */
-@jdk.Exported
 public final class AuthorizationDataEntry {
 
     private final int type;
--- a/jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss/ExtendedGSSContext.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss/ExtendedGSSContext.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  * functionalities not defined by {@code org.ietf.jgss.GSSContext},
  * such as querying context-specific attributes.
  */
-@jdk.Exported
 public interface ExtendedGSSContext extends GSSContext {
 
     // The impl is almost identical to GSSContextImpl with only 2 differences:
--- a/jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss/ExtendedGSSCredential.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss/ExtendedGSSCredential.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,6 @@
  * functionalities not defined by {@code org.ietf.jgss.GSSCredential}.
  * @since 1.8
  */
-@jdk.Exported
 public interface ExtendedGSSCredential extends GSSCredential {
 
     static class ExtendedGSSCredentialImpl extends GSSCredentialImpl
--- a/jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss/GSSUtil.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss/GSSUtil.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,6 @@
  * GSS-API Utilities for using in conjunction with Sun Microsystem's
  * implementation of Java GSS-API.
  */
-@jdk.Exported
 public class GSSUtil {
 
     /**
--- a/jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss/InquireSecContextPermission.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss/InquireSecContextPermission.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * <p>The target name is the {@link InquireType} allowed.
  */
-@jdk.Exported
 public final class InquireSecContextPermission extends BasicPermission {
     private static final long serialVersionUID = -7131173349668647297L;
 
--- a/jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss/InquireType.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss/InquireType.java	Fri Jan 15 09:15:33 2016 +0100
@@ -29,7 +29,6 @@
  * Attribute types that can be specified as an argument of
  * {@link com.sun.security.jgss.ExtendedGSSContext#inquireSecContext}
  */
-@jdk.Exported
 public enum InquireType {
     /**
      * Attribute type for retrieving the session key of an established
--- a/jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -23,5 +23,4 @@
  * questions.
  */
 
-@jdk.Exported
 package com.sun.security.jgss;
--- a/jdk/test/ProblemList.txt	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/ProblemList.txt	Fri Jan 15 09:15:33 2016 +0100
@@ -1,6 +1,6 @@
 ###########################################################################
 #
-# Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -299,6 +299,9 @@
 # 8074580
 sun/security/pkcs11/rsa/TestKeyPairGenerator.java               generic-all
 
+# 8146387
+javax/net/ssl/SSLSession/SessionCacheSizeTests.java windows-all,solaris-all
+
 ############################################################################
 
 # jdk_sound
--- a/jdk/test/TEST.groups	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/TEST.groups	Fri Jan 15 09:15:33 2016 +0100
@@ -31,7 +31,6 @@
     -java/util/zip/TestLocalTime.java \
     :jdk_util \
     -java/util/WeakHashMap/GCDuringIteration.java \
-    -java/util/concurrent/Phaser/Basic.java \
     -java/util/concurrent/ThreadPoolExecutor/ConfigChanges.java
     sun/nio/cs/ISO8859x.java \
     java/nio/Buffer \
@@ -41,7 +40,6 @@
 tier2 = \
     java/lang/ProcessHandle/TreeTest.java \
     java/util/zip/TestLocalTime.java \
-    java/util/concurrent/Phaser/Basic.java \
     java/util/WeakHashMap/GCDuringIteration.java \
     java/util/concurrent/ThreadPoolExecutor/ConfigChanges.java \
     :jdk_io \
@@ -77,7 +75,6 @@
     sun/misc \
     sun/reflect \
     jdk/lambda \
-    jdk/internal/jimage \
     vm
 
 # All of the java.util package
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/io/RandomAccessFile/FileLengthTest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,137 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * 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 randomAccessFile that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4823133
+ * @summary optimize RandomAccessFile.length() and length() is thread safe now.
+ */
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+
+/**
+ *
+ * @author vyom.tewari@oracle.com
+ */
+public class FileLengthTest {
+
+    private static final int BUF_SIZE = 4096;
+    private static RandomAccessFile randomAccessFile;
+    private static Thread fileLengthCaller;
+    private static Thread fileContentReader;
+    private static StringBuilder fileContents;
+    private static volatile boolean isFailed = false;
+
+    /**
+     * this thread will call length() in loop
+     */
+    private static void startLengthThread() {
+        if (randomAccessFile == null) {
+            return;
+        }
+        fileLengthCaller = new Thread(() -> {
+            while (true) {
+                try {
+                    long length = randomAccessFile.length();
+                    if (length < 0) {
+                        return;
+                    }
+                } catch (IOException ex) {
+                    return;
+                }
+            }
+        });
+        fileLengthCaller.setName("RandomAccessFile-length-caller");
+        fileLengthCaller.setDaemon(true);
+        fileLengthCaller.start();
+    }
+
+    /**
+     * this thread will call read() and store the content in internal buffer.
+     */
+    private static void startReaderThread() {
+        if (randomAccessFile == null) {
+            return;
+        }
+        fileContentReader = new Thread(() -> {
+            StringBuilder sb = new StringBuilder(BUF_SIZE);
+            int i;
+            byte arr[] = new byte[8];
+            try {
+                while ((i = randomAccessFile.read(arr)) != -1) {
+                    sb.append(new String(arr, 0, i));
+                }
+                if (!sb.toString().equals(fileContents.toString())) {
+                    isFailed = true;
+                }
+            } catch (IOException ex) {
+            }
+        });
+        fileContentReader.setName("RandomAccessFile-content-reader");
+        fileContentReader.setDaemon(true);
+        fileContentReader.start();
+    }
+
+    public static void main(String args[]) {
+        byte arr[] = new byte[BUF_SIZE];
+        String testFile = "testfile.txt";
+        try {
+            createDummyFile(testFile);
+            File file = new File(testFile);
+            file.deleteOnExit();
+            randomAccessFile = new RandomAccessFile(file, "r");
+            int count = randomAccessFile.read(arr);
+            randomAccessFile.seek(0);
+            fileContents = new StringBuilder(BUF_SIZE);
+            fileContents.append(new String(arr, 0, count));
+            startLengthThread();
+            startReaderThread();
+            fileContentReader.join();
+        } catch (FileNotFoundException | InterruptedException ex) {
+        } catch (IOException ex) {
+        } finally {
+            try {
+                randomAccessFile.close();
+            } catch (IOException ex) {
+            }
+        }
+        if (isFailed) {
+            throw new RuntimeException("RandomAccessFile.length() changed the underlying file pointer.");
+        }
+    }
+
+    private static void createDummyFile(String fileName) throws FileNotFoundException, IOException {
+        try (FileOutputStream outputStream = new FileOutputStream(new File(fileName))) {
+            String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
+            int count = 0;
+            while ((count + str.length()) < BUF_SIZE) {
+                outputStream.write(str.getBytes());
+                count += str.length();
+            }
+            outputStream.flush();
+        }
+    }
+}
--- a/jdk/test/java/lang/ProcessHandle/Basic.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/lang/ProcessHandle/Basic.java	Fri Jan 15 09:15:33 2016 +0100
@@ -27,8 +27,8 @@
 import static org.testng.Assert.fail;
 
 import java.io.IOException;
+import java.util.List;
 import java.util.Optional;
-import java.util.List;
 import java.util.stream.Collectors;
 
 import org.testng.TestNG;
@@ -36,6 +36,8 @@
 
 /*
  * @test
+ * @library /test/lib/share/classes
+ * @run testng InfoTest
  * @summary Basic tests for ProcessHandler
  * @author Roger Riggs
  */
--- a/jdk/test/java/lang/ProcessHandle/InfoTest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/lang/ProcessHandle/InfoTest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -21,11 +21,10 @@
  * questions.
  */
 
+import java.io.BufferedReader;
 import java.io.File;
-import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.UncheckedIOException;
-import java.lang.ProcessBuilder;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -40,18 +39,18 @@
 import java.util.Random;
 import java.util.concurrent.TimeUnit;
 
-import jdk.testlibrary.Platform;
-import jdk.testlibrary.Utils;
-
+import jdk.test.lib.Platform;
+import jdk.test.lib.Utils;
 import org.testng.Assert;
+import org.testng.TestNG;
 import org.testng.annotations.Test;
-import org.testng.TestNG;
 
 /*
  * @test
  * @bug 8077350 8081566 8081567 8098852 8136597
- * @build jdk.testlibrary.*
- * @library /lib/testlibrary
+ * @library /test/lib/share/classes
+ * @build jdk.test.lib.Platform jdk.test.lib.Utils
+ * @run testng InfoTest
  * @summary Functions of ProcessHandle.Info
  * @author Roger Riggs
  * @key intermittent
--- a/jdk/test/java/lang/ProcessHandle/OnExitTest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/lang/ProcessHandle/OnExitTest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -22,7 +22,6 @@
  */
 
 import java.io.IOException;
-import java.lang.InterruptedException;
 import java.time.Duration;
 import java.time.Instant;
 import java.util.ArrayList;
@@ -31,7 +30,7 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutionException;
 
-import jdk.testlibrary.Utils;
+import jdk.test.lib.Utils;
 
 import org.testng.annotations.Test;
 import org.testng.Assert;
@@ -39,7 +38,9 @@
 
 /*
  * @test
- * @build jdk.testlibrary.Utils
+ * @library /test/lib/share/classes
+ * @build jdk.test.lib.Platform jdk.test.lib.Utils
+ * @run testng OnExitTest
  * @summary Functions of Process.onExit and ProcessHandle.onExit
  * @author Roger Riggs
  */
--- a/jdk/test/java/lang/ProcessHandle/PermissionTest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/lang/ProcessHandle/PermissionTest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,7 +31,6 @@
 import java.security.ProtectionDomain;
 import java.security.SecurityPermission;
 import java.util.Arrays;
-import java.util.Optional;
 import java.util.PropertyPermission;
 
 import org.testng.Assert;
@@ -39,6 +38,12 @@
 import org.testng.annotations.BeforeGroups;
 import org.testng.annotations.Test;
 
+/*
+ * @test
+ * @run testng/othervm PermissionTest
+ * @summary Test Permissions to access Info
+ */
+
 public class PermissionTest {
     /**
      * Backing up policy.
--- a/jdk/test/java/lang/ProcessHandle/ProcessUtil.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/lang/ProcessHandle/ProcessUtil.java	Fri Jan 15 09:15:33 2016 +0100
@@ -23,18 +23,13 @@
 
 import java.io.IOException;
 import java.lang.management.ManagementFactory;
-import java.lang.ProcessBuilder;
 import java.time.Duration;
 import java.util.List;
-import java.util.Objects;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import com.sun.management.OperatingSystemMXBean;
-
-import jdk.testlibrary.Platform;
-
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import jdk.test.lib.Platform;
 
 /**
  * Useful utilities for testing Process and ProcessHandle.
--- a/jdk/test/java/lang/ProcessHandle/TEST.properties	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-# ProcessHandle tests use TestNG
-TestNG.dirs = .
-lib.dirs = /lib/testlibrary
-modules = jdk.management
--- a/jdk/test/java/lang/ProcessHandle/TreeTest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/lang/ProcessHandle/TreeTest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -23,30 +23,31 @@
 
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.time.Duration;
 import java.time.Instant;
+import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import java.util.concurrent.ExecutionException;
-import jdk.testlibrary.Utils;
+
+import jdk.test.lib.Utils;
 import org.testng.Assert;
 import org.testng.TestNG;
 import org.testng.annotations.Test;
 
 /*
  * @test
- * @library /lib/testlibrary
- * Test counting and JavaChild.spawning and counting of Processes.
- * @run testng/othervm InfoTest
+ * @library /test/lib/share/classes
+ * @build jdk.test.lib.Utils
+ * @run testng/othervm TreeTest
+ * @summary Test counting and JavaChild.spawning and counting of Processes.
  * @key intermittent
  * @author Roger Riggs
  */
--- a/jdk/test/java/lang/StackWalker/LocalsAndOperands.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/lang/StackWalker/LocalsAndOperands.java	Fri Jan 15 09:15:33 2016 +0100
@@ -86,29 +86,43 @@
                 System.out.println("frame: " + f);
                 Object[] locals = (Object[]) getLocals.invoke(f);
                 for (int i = 0; i < locals.length; i++) {
-                    System.out.format("local %d: %s type %s%n", i, locals[i], type(locals[i]));
+                    System.out.format("  local %d: %s type %s\n", i, locals[i], type(locals[i]));
+
+                    // check for non-null locals in LocalsAndOperands.test()
+                    if (f.getClassName().equals("LocalsAndOperands") &&
+                            f.getMethodName().equals("test")) {
+                        if (locals[i] == null) {
+                            throw new RuntimeException("kept-alive locals should not be null");
+                        }
+                    }
                 }
 
                 Object[] operands = (Object[]) getOperands.invoke(f);
                 for (int i = 0; i < operands.length; i++) {
-                    System.out.format("operand %d: %s type %s%n", i, operands[i], type(operands[i]));
+                    System.out.format("  operand %d: %s type %s%n", i, operands[i],
+                                      type(operands[i]));
                 }
 
                 Object[] monitors = (Object[]) getMonitors.invoke(f);
                 for (int i = 0; i < monitors.length; i++) {
-                    System.out.format("monitor %d: %s%n", i, monitors[i]);
+                    System.out.format("  monitor %d: %s%n", i, monitors[i]);
                 }
             }
         } else {
             for (StackFrame f : frames) {
-                if (liveStackFrameClass.isInstance(f))
+                if (liveStackFrameClass.isInstance(f)) {
                     throw new RuntimeException("should not be LiveStackFrame");
+                }
             }
         }
+        // Use local variables so they stay alive
+        System.out.println("Stayin' alive: "+x+" "+c+" "+hi+" "+l+" "+d);
     }
 
     String type(Object o) throws Exception {
-        if (primitiveValueClass.isInstance(o)) {
+        if (o == null) {
+            return "null";
+        } else if (primitiveValueClass.isInstance(o)) {
             char c = (char)primitiveType.invoke(o);
             return String.valueOf(c);
         } else {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/invoke/8076596/Test8076596.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ * @bug 8076596
+ * @run main/othervm/policy=Test8076596.security.policy/secure=Test8076596 -ea -esa Test8076596
+ */
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+public class Test8076596 extends SecurityManager {
+    public Test8076596() {
+        // 1. Using lambda
+        AccessController.doPrivileged((PrivilegedAction<Void>) () -> null);
+        // 2. Using inner class
+        AccessController.doPrivileged(new PrivilegedAction<Void>() {
+            @Override
+            public Void run() {
+                return null;
+            }
+        });
+    }
+
+    public static void main(String[] args) {
+        // empty
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/invoke/8076596/Test8076596.security.policy	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,8 @@
+/*
+ * Security policy used by the Test8076596.
+ * Must allow file reads so that jtreg itself can run.
+ */
+
+grant {
+  permission java.io.FilePermission "*", "read";
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/invoke/8147078/Test8147078.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ * @bug 8147078
+ * @run testng/othervm -ea -esa Test8147078
+ */
+
+import org.testng.annotations.Test;
+
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+
+import static java.lang.invoke.MethodType.methodType;
+
+import static org.testng.AssertJUnit.*;
+
+public class Test8147078 {
+
+    static int target(int x) {
+        throw new RuntimeException("ieps");
+    }
+
+    static int handler(String s, int x) {
+        return 4*x;
+    }
+
+    static final MethodHandle MH_target;
+    static final MethodHandle MH_handler;
+    static final MethodHandle MH_catchException;
+
+    static final MethodHandles.Lookup LOOKUP = MethodHandles.lookup();
+
+    static {
+        try {
+            Class<Test8147078> C = Test8147078.class;
+            MH_target = LOOKUP.findStatic(C, "target", methodType(int.class, int.class));
+            MH_handler = LOOKUP.findStatic(C, "handler", methodType(int.class, String.class, int.class));
+            MH_catchException = LOOKUP.findStatic(MethodHandles.class, "catchException",
+                    methodType(MethodHandle.class, MethodHandle.class, Class.class, MethodHandle.class));
+        } catch (Exception e) {
+            throw new ExceptionInInitializerError(e);
+        }
+    }
+
+    @Test
+    public void testNoExceptionType() {
+        boolean caught = false;
+        try {
+            MethodHandle eek = (MethodHandle) MH_catchException.invoke(MH_target, String.class, MH_handler);
+        } catch (ClassCastException cce) {
+            assertEquals("java.lang.String", cce.getMessage());
+            caught = true;
+        } catch (Throwable t) {
+            fail("unexpected exception caught: " + t);
+        }
+        assertTrue(caught);
+    }
+
+}
\ No newline at end of file
--- a/jdk/test/java/lang/invoke/FindClassSecurityManager.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/lang/invoke/FindClassSecurityManager.java	Fri Jan 15 09:15:33 2016 +0100
@@ -24,6 +24,7 @@
  */
 
 /* @test
+ * @bug 8139885
  * @run main/othervm/policy=findclass.security.policy/secure=java.lang.SecurityManager -ea -esa test.java.lang.invoke.FindClassSecurityManager
  */
 
--- a/jdk/test/java/lang/invoke/T8139885.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/lang/invoke/T8139885.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,8 @@
  */
 
 /* @test
+ * @bug 8139885
+ * @bug 8143798
  * @run testng/othervm -ea -esa test.java.lang.invoke.T8139885
  */
 
--- a/jdk/test/java/lang/management/MemoryMXBean/Pending.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/lang/management/MemoryMXBean/Pending.java	Fri Jan 15 09:15:33 2016 +0100
@@ -24,7 +24,7 @@
 /*
  * @test
  * @bug     4530538
- * @modules java.base/sun.misc
+ * @modules java.base/jdk.internal.misc
  *          java.management
  * @summary Basic unit test of
  *          RuntimeMXBean.getObjectPendingFinalizationCount()
@@ -50,10 +50,10 @@
     private static void printFinalizerInstanceCount() {
         if (!trace) return;
 
-        int count = sun.misc.VM.getFinalRefCount();
+        int count = jdk.internal.misc.VM.getFinalRefCount();
         System.out.println(INDENT + "Finalizable object Count = " + count);
 
-        count = sun.misc.VM.getPeakFinalRefCount();
+        count = jdk.internal.misc.VM.getPeakFinalRefCount();
         System.out.println(INDENT + "Peak Finalizable object Count = " + count);
     }
 
--- a/jdk/test/java/lang/ref/CleanerTest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/lang/ref/CleanerTest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -34,9 +34,10 @@
 import java.util.function.Consumer;
 import java.util.function.Supplier;
 
-import jdk.internal.misc.CleanerImpl.PhantomCleanable;
-import jdk.internal.misc.CleanerImpl.WeakCleanable;
-import jdk.internal.misc.CleanerImpl.SoftCleanable;
+import jdk.internal.ref.PhantomCleanable;
+import jdk.internal.ref.WeakCleanable;
+import jdk.internal.ref.SoftCleanable;
+import jdk.internal.ref.CleanerFactory;
 
 import sun.hotspot.WhiteBox;
 
@@ -48,17 +49,17 @@
  * @test
  * @library /lib/testlibrary /test/lib
  * @build sun.hotspot.WhiteBox
- * @modules java.base/jdk.internal.misc
+ * @modules java.base/jdk.internal.misc java.base/jdk.internal.ref
  * @run main ClassFileInstaller sun.hotspot.WhiteBox
  * @run testng/othervm
  *      -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:.
- *      -verbose:gc -Xmx4m CleanerTest
+ *      -verbose:gc CleanerTest
  */
 
 @Test
 public class CleanerTest {
     // A common CleaningService used by the test for notifications
-    static final Cleaner COMMON = Cleaner.create();
+    static final Cleaner COMMON = CleanerFactory.cleaner();
 
     // Access to WhiteBox utilities
     static final WhiteBox whitebox = WhiteBox.getWhiteBox();
@@ -702,4 +703,17 @@
         cleaner = null;
     }
 
+    /**
+     * Test the Cleaner from the CleanerFactory.
+     */
+    @Test
+    void testCleanerFactory() {
+        Cleaner cleaner = CleanerFactory.cleaner();
+
+        Object obj = new Object();
+        CleanableCase s = setupPhantom(cleaner, obj);
+        obj = null;
+        Assert.assertTrue(checkCleaned(s.getSemaphore()),
+                "Object cleaning should have occurred using CleanerFactor.cleaner()");
+    }
 }
--- a/jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -41,7 +41,11 @@
         } catch (Exception ex) {
           throw new RuntimeException("Setting DatagramSocketImplFactory failed!");
         }
-        new QuoteServerThread().start();
+
+        QuoteServerThread server = new QuoteServerThread();
+        int port = server.getPort();
+        System.out.println("Server port is " + port);
+        server.start();
 
         // get a datagram socket
         DatagramSocket socket = new DatagramSocket();
@@ -49,7 +53,7 @@
         // send request
         byte[] buf = new byte[256];
         InetAddress address = InetAddress.getLocalHost();
-        DatagramPacket packet = new DatagramPacket(buf, buf.length, address, 4445);
+        DatagramPacket packet = new DatagramPacket(buf, buf.length, address, port);
         socket.send(packet);
 
         // get response
@@ -67,6 +71,7 @@
 class QuoteServerThread extends Thread {
 
     protected DatagramSocket socket = null;
+    private final int port;
 
     public QuoteServerThread() throws IOException {
         this("QuoteServerThread");
@@ -74,7 +79,11 @@
 
     public QuoteServerThread(String name) throws IOException {
         super(name);
-        socket = new DatagramSocket(4445);
+        socket = new DatagramSocket(0);
+        port =  socket.getLocalPort();
+    }
+    public int getPort(){
+        return port;
     }
 
     public void run() {
@@ -101,3 +110,4 @@
       socket.close();
     }
 }
+
--- a/jdk/test/java/net/SocketOption/OptionsTest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/net/SocketOption/OptionsTest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -80,8 +80,11 @@
     static NetworkInterface getNetworkInterface() {
         try {
             Enumeration<NetworkInterface> nifs = NetworkInterface.getNetworkInterfaces();
-            if (nifs.hasMoreElements()) {
-                return (NetworkInterface)nifs.nextElement();
+            while (nifs.hasMoreElements()) {
+                NetworkInterface ni = (NetworkInterface)nifs.nextElement();
+                if (ni.supportsMulticast()) {
+                    return ni;
+                }
             }
         } catch (Exception e) {
         }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/URLConnection/TIFFContentGuesser.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8146041
+ * @summary java.net.URLConnection.guessContentTypeFromStream() does not
+ * recognize TIFF streams
+ */
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.net.URLConnection;
+
+public class TIFFContentGuesser {
+    private static final byte[] LITTLE_ENDIAN_MAGIC =
+        new byte[] {(byte)0x49, (byte)0x49, (byte)0x2a, (byte)0};
+    private static final byte[] BIG_ENDIAN_MAGIC =
+        new byte[] {(byte)0x4d, (byte)0x4d, (byte)0, (byte)0x2a};
+
+    private static final String TIFF_MIME_TYPE = "image/tiff";
+
+    public static void main(String[] args) throws Throwable {
+        int failures = 0;
+
+        InputStream stream = new ByteArrayInputStream(LITTLE_ENDIAN_MAGIC);
+        String contentType = URLConnection.guessContentTypeFromStream(stream);
+        if (contentType == null || !contentType.equals(TIFF_MIME_TYPE)) {
+            failures++;
+            System.err.println("Test failed for little endian magic");
+        }
+
+        stream = new ByteArrayInputStream(BIG_ENDIAN_MAGIC);
+        contentType = URLConnection.guessContentTypeFromStream(stream);
+        if (contentType == null || !contentType.equals(TIFF_MIME_TYPE)) {
+            failures++;
+            System.err.println("Test failed for big endian magic");
+        }
+
+        if (failures != 0) {
+            throw new RuntimeException
+                ("Test failed with " + failures +  " error(s)");
+        }
+    }
+}
+
--- a/jdk/test/java/net/ipv6tests/TcpTest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/net/ipv6tests/TcpTest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -60,8 +60,7 @@
         dprintln ("Local Addresses");
         dprintln (ia4addr.toString());
         dprintln (ia6addr.toString());
-        test1 (0);
-        test1 (5100);
+        test1();
         test2();
         test3();
         test4();
@@ -69,11 +68,9 @@
 
     /* basic TCP connectivity test using IPv6 only and IPv4/IPv6 together */
 
-    static void test1 (int port) throws Exception {
-        server = new ServerSocket (port);
-        if (port == 0) {
-            port = server.getLocalPort();
-        }
+    static void test1 () throws Exception {
+        server = new ServerSocket (0);
+        int port = server.getLocalPort();
         // try Ipv6 only
         c1 = new Socket ("::1", port);
         s1 = server.accept ();
@@ -107,9 +104,7 @@
     /** bind tests:
      *  1. bind to specific address IPv4 only (any port)
      *  2. bind to specific address IPv6 only (any port)
-     *  3. bind to specific address IPv4 only (specific port)
-     *  4. bind to specific address IPv4 only (specific port)
-     *  5. bind to any address IPv4 (test collision)
+     *  3. bind to any address IPv4 (test collision)
      */
 
     static void test2 () throws Exception {
@@ -147,39 +142,6 @@
         server.close ();
         c1.close ();
 
-        /* now try IPv6 specific port only */
-
-        server = new ServerSocket ();
-        sadr = new InetSocketAddress (ia6addr, 5200);
-        server.bind (sadr);
-        port = server.getLocalPort();
-        t_assert (port == 5200);
-
-        c1 = new Socket (ia6addr, port);
-        try {
-            c2 = new Socket (ia4addr, port);
-            throw new RuntimeException ("connect to IPv4 address should be refused");
-        } catch (IOException e) { }
-        server.close ();
-        c1.close ();
-
-        /* now try IPv4 specific port only */
-
-        server = new ServerSocket ();
-        sadr = new InetSocketAddress (ia4addr, 5200);
-        server.bind (sadr);
-        port = server.getLocalPort();
-        t_assert (port == 5200);
-
-        c1 = new Socket (ia4addr, port);
-
-        try {
-            c2 = new Socket (ia6addr, port);
-            throw new RuntimeException ("connect to IPv6 address should be refused");
-        } catch (IOException e) { }
-        server.accept().close();
-        c1.close ();
-        server.close();
         System.out.println ("Test2: OK");
     }
 
@@ -242,3 +204,4 @@
         System.out.println ("Test4: OK");
     }
 }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/channels/DatagramChannel/StressNativeSignal.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ * @bug 8050499
+ * @summary Attempt to provoke error 316 on OS X in NativeSignal.signal()
+ */
+
+import java.io.*;
+import java.net.*;
+import java.nio.ByteBuffer;
+import java.nio.channels.DatagramChannel;
+
+public class StressNativeSignal {
+    private UDPThread udpThread;
+    private ServerSocketThread serverSocketThread;
+
+    StressNativeSignal() {
+        try {
+            serverSocketThread = new ServerSocketThread();
+            serverSocketThread.start();
+
+            udpThread = new UDPThread();
+            udpThread.start();
+        } catch (Exception z) {
+            z.printStackTrace();
+        }
+    }
+
+    public static void main(String[] args) throws Throwable {
+        StressNativeSignal test = new StressNativeSignal();
+        try {
+            Thread.sleep(3000);
+        } catch (Exception z) {
+            z.printStackTrace(System.err);
+        }
+
+        test.shutdown();
+    }
+
+    public void shutdown() {
+        udpThread.terminate();
+        try {
+            udpThread.join();
+        } catch (Exception z) {
+            z.printStackTrace(System.err);
+        }
+
+        serverSocketThread.terminate();
+        try {
+            serverSocketThread.join();
+        } catch (Exception z) {
+            z.printStackTrace(System.err);
+        }
+    }
+
+    public class ServerSocketThread extends Thread {
+        private volatile boolean shouldTerminate;
+        private ServerSocket socket;
+
+        public void run() {
+            try {
+                socket = new ServerSocket(1122);
+                Socket client = socket.accept();
+                BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
+                shouldTerminate = false;
+                while (!shouldTerminate) {
+                    String msg = reader.readLine();
+                }
+            } catch (Exception z) {
+                if (!shouldTerminate) {
+                    z.printStackTrace(System.err);
+                }
+            }
+        }
+
+        public void terminate() {
+            shouldTerminate = true;
+            try {
+                socket.close();
+            } catch (Exception z) {
+                z.printStackTrace(System.err);
+                // ignore
+            }
+        }
+    }
+
+    public class UDPThread extends Thread {
+        private DatagramChannel channel;
+        private volatile boolean shouldTerminate;
+
+        @Override
+        public void run() {
+            try {
+                channel = DatagramChannel.open();
+                channel.setOption(StandardSocketOptions.SO_RCVBUF, 6553600);
+                channel.bind(new InetSocketAddress(19870));
+            } catch (IOException z) {
+                z.printStackTrace(System.err);
+            }
+
+            ByteBuffer buf = ByteBuffer.allocate(6553600);
+            shouldTerminate = false;
+            while (!shouldTerminate) {
+                try {
+                    buf.rewind();
+                    channel.receive(buf);
+                } catch (IOException z) {
+                    if (!shouldTerminate) {
+                        z.printStackTrace(System.err);
+                    }
+                }
+            }
+        }
+
+        public void terminate() {
+            shouldTerminate = true;
+            try {
+                channel.close();
+            } catch (Exception z) {
+                z.printStackTrace(System.err);
+                // ignore
+            }
+        }
+    }
+
+}
--- a/jdk/test/java/nio/file/attribute/BasicFileAttributeView/UnixSocketFile.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/nio/file/attribute/BasicFileAttributeView/UnixSocketFile.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
  */
 
 import java.io.File;
+import java.io.InputStream;
 import java.io.IOException;
 import java.nio.file.FileSystem;
 import java.nio.file.FileSystems;
@@ -49,6 +50,17 @@
     public static void main(String[] args)
         throws InterruptedException, IOException {
 
+        // Use 'which' to verify that 'nc' is available and skip the test
+        // if it is not.
+        Process proc = Runtime.getRuntime().exec("which nc");
+        InputStream stdout = proc.getInputStream();
+        int b = stdout.read();
+        proc.destroy();
+        if (b == -1) {
+            System.err.println("Netcat command unavailable; skipping test.");
+            return;
+        }
+
         // Create a new sub-directory of the nominal test directory in which
         // 'nc' will create the socket file.
         String testSubDir = System.getProperty("test.dir", ".")
@@ -62,7 +74,6 @@
 
         // Create a process which executes the nc (netcat) utility to create
         // a socket file at the indicated location.
-        Process proc;
         FileSystem fs = FileSystems.getDefault();
         try (WatchService ws = fs.newWatchService()) {
             // Watch the test sub-directory to receive notification when an
--- a/jdk/test/java/time/tck/java/time/TCKLocalDate.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/time/tck/java/time/TCKLocalDate.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1285,12 +1285,36 @@
     public void test_plusWeeks_invalidMaxMinusMin() {
         LocalDate.of(Year.MAX_VALUE, 12, 25).plusWeeks(Long.MIN_VALUE);
     }
+    //-----------------------------------------------------------------------
+    @DataProvider(name="PlusDays")
+    Object[][] provider_plusDays() {
+        return new Object[][] {
+                {LocalDate.of(2007, 7, 15), 1, LocalDate.of(2007, 7, 16)},
+                {LocalDate.of(2007, 7, 15), 17, LocalDate.of(2007, 8, 1)},
+                {LocalDate.of(2007, 12, 31), 1, LocalDate.of(2008, 1, 1)},
+                {LocalDate.of(2007, 1, 1), 58, LocalDate.of(2007, 2, 28)},
+                {LocalDate.of(2007, 1, 1), 59, LocalDate.of(2007, 3, 1)},
+                {LocalDate.of(2008, 1, 1), 60, LocalDate.of(2008, 3, 1)},
+                {LocalDate.of(2007, 2, 1), 27, LocalDate.of(2007, 2, 28)},
+                {LocalDate.of(2007, 2, 1), 28, LocalDate.of(2007, 3, 1)},
+                {LocalDate.of(2007, 1, 1), 29, LocalDate.of(2007, 1, 30)},
+                {LocalDate.of(2007, 1, 1), 30, LocalDate.of(2007, 1, 31)},
+                {LocalDate.of(2007, 1, 15), 13, LocalDate.of(2007, 1, 28)},
+                {LocalDate.of(2007, 1, 15), 14, LocalDate.of(2007, 1, 29)},
+                {LocalDate.of(2007, 1, 15), 15, LocalDate.of(2007, 1, 30)},
+                {LocalDate.of(2007, 1, 15), 16, LocalDate.of(2007, 1, 31)},
+                {LocalDate.of(2007, 2, 15), 13, LocalDate.of(2007, 2, 28)},
+                {LocalDate.of(2007, 2, 15), 14, LocalDate.of(2007, 3, 1)},
+                {LocalDate.of(2007, 2, 15), 15, LocalDate.of(2007, 3, 2)},
+                {LocalDate.of(2007, 2, 15), 16, LocalDate.of(2007, 3, 3)},
+        };
+    }
 
-    @Test
-    public void test_plusDays_normal() {
-        LocalDate t = TEST_2007_07_15.plusDays(1);
-        assertEquals(t, LocalDate.of(2007, 7, 16));
-    }
+    @Test(dataProvider="PlusDays")
+    public void test_plusDays_normal(LocalDate input, int amountsToAdd, LocalDate expected) {
+        LocalDate actual = input.plusDays(amountsToAdd);
+        assertEquals(actual, expected);
+     }
 
     @Test
     public void test_plusDays_overMonths() {
--- a/jdk/test/java/util/logging/LogManager/Configuration/updateConfiguration/UpdateConfigurationTest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/java/util/logging/LogManager/Configuration/updateConfiguration/UpdateConfigurationTest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -209,8 +209,9 @@
                     + barChild.getParent() +"\n\texpected: " + barRef.get());
         }
         Reference<? extends Logger> ref2;
-        int max = 3;
+        int max = 10;
         barChild = null;
+        System.gc();
         while ((ref2 = queue.poll()) == null) {
             System.gc();
             Thread.sleep(100);
@@ -276,24 +277,27 @@
                     }
                 });
 
-                // Now we need to forget the child, so that loggers are released,
-                // and so that we can run the test with the next configuration...
-
-                fooChild = null;
-                System.out.println("Setting fooChild to: " + fooChild);
-                while ((ref2 = queue.poll()) == null) {
-                    System.gc();
-                    Thread.sleep(1000);
+                if (suppressed == null) {
+                    // Now we need to forget the child, so that loggers are released,
+                    // and so that we can run the test with the next configuration...
+                    // No need to do that if failed!=null however, as the first
+                    // ref might not have been cleared yet and failing here would
+                    // hide the original failure.
+                    fooChild = null;
+                    System.out.println("Setting fooChild to: " + fooChild);
+                    while ((ref2 = queue.poll()) == null) {
+                        System.gc();
+                        Thread.sleep(1000);
+                    }
+                    if (ref2 != fooRef) {
+                        throw new RuntimeException("Unexpected reference: "
+                                + ref2 +"\n\texpected: " + fooRef);
+                    }
+                    if (ref2.get() != null) {
+                        throw new RuntimeException("Referent not cleared: " + ref2.get());
+                    }
+                    System.out.println("Got fooRef after reset(), fooChild is " + fooChild);
                 }
-                if (ref2 != fooRef) {
-                    throw new RuntimeException("Unexpected reference: "
-                            + ref2 +"\n\texpected: " + fooRef);
-                }
-                if (ref2.get() != null) {
-                    throw new RuntimeException("Referent not cleared: " + ref2.get());
-                }
-                System.out.println("Got fooRef after reset(), fooChild is " + fooChild);
-
             }
         }
         if (failed != null) {
--- a/jdk/test/javax/management/ImplementationVersion/ImplVersionCommand.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/javax/management/ImplementationVersion/ImplVersionCommand.java	Fri Jan 15 09:15:33 2016 +0100
@@ -53,21 +53,13 @@
 
         // Check JMX implementation version vs. JVM implementation version
         //
-        if (Boolean.valueOf(args[1]).booleanValue()) {
-            if (!mbsdVersion.equals(args[0]))
-                throw new IllegalArgumentException(
-                  "JMX and Java Runtime implementation versions do not match!");
-            // Test OK!
-            //
-            System.out.println("JMX and Java Runtime implementation " +
-                               "versions match!");
-        } else {
-            // Test OK!
-            //
-            System.out.println("JMX and Java Runtime implementation " +
-                               "versions do not match because the test " +
-                               "is using an unbundled version of JMX!");
-        }
+        if (!mbsdVersion.equals(args[0]))
+            throw new IllegalArgumentException(
+              "JMX and Java Runtime implementation versions do not match!");
+        // Test OK!
+        //
+        System.out.println("JMX and Java Runtime implementation " +
+                           "versions match!");
         System.out.println("Bye! Bye!");
     }
 }
--- a/jdk/test/javax/management/ImplementationVersion/ImplVersionTest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/javax/management/ImplementationVersion/ImplVersionTest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,9 +25,9 @@
  * @test
  * @bug 4842196
  * @summary Test that there is no difference between the JMX version and the
- * JDK version when JMX is bundled into the Java platform and the application
- * is run with a security manager and the test codebase has the java permission
- * to read the "java.runtime.version" system property.
+ * JDK version when the application is run with a security manager and the
+ * test codebase has the java permission to read the "java.runtime.version"
+ * system property.
  * @author Luis-Miguel Alventosa
  * @modules java.management
  * @run clean ImplVersionTest ImplVersionCommand
@@ -36,8 +36,6 @@
  */
 
 import java.io.File;
-import java.security.CodeSource;
-import javax.management.MBeanServer;
 
 public class ImplVersionTest {
 
@@ -70,18 +68,13 @@
             System.out.println("testClasses = " + testClasses);
             // Get boot class path
             //
-            boolean checkVersion = true;
-            String bootClassPath = System.getProperty("sun.boot.class.path");
-            if (bootClassPath != null &&
-                bootClassPath.indexOf("jmxri.jar") != -1)
-                checkVersion = false;
             String command =
                 javaHome + File.separator + "bin" + File.separator + "java " +
                 " -classpath " + testClasses +
                 " -Djava.security.manager -Djava.security.policy==" + testSrc +
                 File.separator + "policy -Dtest.classes=" + testClasses +
                 " ImplVersionCommand " +
-                System.getProperty("java.runtime.version") + " " + checkVersion;
+                System.getProperty("java.runtime.version");
             System.out.println("ImplVersionCommand Exec Command = " +command);
             Process proc = Runtime.getRuntime().exec(command);
             new ImplVersionReader(proc, proc.getInputStream()).start();
--- a/jdk/test/javax/management/remote/mandatory/version/ImplVersionTest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/javax/management/remote/mandatory/version/ImplVersionTest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,9 +25,9 @@
  * @test
  * @bug 5046815
  * @summary Test that RMIServer.getVersion() reflects the JDK version when
- * JMX is bundled into the Java platform and the application is run with a
- * security manager and the test codebase has the java permission to read
- * the "java.runtime.version" system property.
+ * the Java platform and the application is run with a security manager and the
+ * test codebase has the java permission to read the "java.runtime.version"
+ * system property.
  * @author Luis-Miguel Alventosa, Joel Feraud
  * @modules java.management
  * @run clean ImplVersionTest ImplVersionCommand
@@ -36,8 +36,6 @@
  */
 
 import java.io.File;
-import java.security.CodeSource;
-import javax.management.MBeanServer;
 
 public class ImplVersionTest {
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/net/ssl/ALPN/MyX509ExtendedKeyManager.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.net.Socket;
+import java.security.Principal;
+import java.security.PrivateKey;
+import java.security.cert.X509Certificate;
+import javax.net.ssl.SSLEngine;
+import javax.net.ssl.SSLSocket;
+import javax.net.ssl.X509ExtendedKeyManager;
+
+public class MyX509ExtendedKeyManager extends X509ExtendedKeyManager {
+
+    static final String ERROR = "ERROR";
+    X509ExtendedKeyManager akm;
+    String expectedAP;
+
+    MyX509ExtendedKeyManager(X509ExtendedKeyManager akm) {
+        this.akm = akm;
+    }
+
+    public MyX509ExtendedKeyManager(
+            X509ExtendedKeyManager akm, String expectedAP) {
+        this.akm = akm;
+        this.expectedAP = expectedAP;
+
+    }
+
+    @Override
+    public String[] getClientAliases(String keyType, Principal[] issuers) {
+        return akm.getClientAliases(keyType, issuers);
+    }
+
+    @Override
+    public String chooseClientAlias(String[] keyType, Principal[] issuers,
+            Socket socket) {
+        String nap = ((SSLSocket) socket).getHandshakeApplicationProtocol();
+        checkALPN(nap);
+
+        return akm.chooseClientAlias(keyType, issuers, socket);
+    }
+
+    @Override
+    public String[] getServerAliases(String keyType, Principal[] issuers) {
+        return akm.getServerAliases(keyType, issuers);
+    }
+
+    @Override
+    public String chooseServerAlias(String keyType, Principal[] issuers,
+            Socket socket) {
+        String nap = ((SSLSocket) socket).getHandshakeApplicationProtocol();
+        checkALPN(nap);
+
+        return akm.chooseServerAlias(keyType, issuers, socket);
+    }
+
+    @Override
+    public X509Certificate[] getCertificateChain(String alias) {
+        return akm.getCertificateChain(alias);
+    }
+
+    @Override
+    public PrivateKey getPrivateKey(String alias) {
+        return akm.getPrivateKey(alias);
+    }
+
+    @Override
+    public String chooseEngineClientAlias(String[] keyType, Principal[] issuers,
+            SSLEngine engine) {
+        String nap = engine.getHandshakeApplicationProtocol();
+        checkALPN(nap);
+
+        return akm.chooseEngineClientAlias(keyType, issuers, engine);
+    }
+
+    @Override
+    public String chooseEngineServerAlias(String keyType, Principal[] issuers,
+            SSLEngine engine) {
+        String nap = engine.getHandshakeApplicationProtocol();
+        checkALPN(nap);
+
+        return akm.chooseEngineServerAlias(keyType, issuers, engine);
+    }
+
+    private void checkALPN(String ap) {
+
+        if (ERROR.equals(expectedAP)) {
+            throw new RuntimeException("Should not reach here");
+        }
+
+        System.out.println("Expected ALPN value: " + expectedAP
+                + " Got: " + ap);
+
+        if (ap == null) {
+            throw new RuntimeException(
+                    "ALPN should be negotiated, but null was received");
+        }
+        if (expectedAP.equals("NONE")) {
+            if (!ap.isEmpty()) {
+                throw new RuntimeException("Expected no ALPN value");
+            } else {
+                System.out.println("No ALPN value negotiated, as expected");
+            }
+        } else if (!expectedAP.equals(ap)) {
+            throw new RuntimeException(expectedAP
+                    + " ALPN value not available on negotiated connection");
+        }
+
+    }
+}
--- a/jdk/test/javax/net/ssl/ALPN/SSLEngineAlpnTest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/javax/net/ssl/ALPN/SSLEngineAlpnTest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,8 +26,9 @@
 
 /*
  * @test
- * @bug 8051498
+ * @bug 8051498 8145849
  * @summary JEP 244: TLS Application-Layer Protocol Negotiation Extension
+ * @compile MyX509ExtendedKeyManager.java
  * @run main/othervm SSLEngineAlpnTest h2          h2          h2
  * @run main/othervm SSLEngineAlpnTest h2          h2,http/1.1 h2
  * @run main/othervm SSLEngineAlpnTest h2,http/1.1 h2,http/1.1 h2
@@ -162,7 +163,7 @@
             throw new Exception("Invalid number of test parameters");
         }
 
-        SSLEngineAlpnTest test = new SSLEngineAlpnTest();
+        SSLEngineAlpnTest test = new SSLEngineAlpnTest(args[2]);
         try {
             test.runTest(convert(args[0]), convert(args[1]), args[2]);
         } catch (SSLHandshakeException she) {
@@ -179,7 +180,7 @@
     /*
      * Create an initialized SSLContext to use for these tests.
      */
-    public SSLEngineAlpnTest() throws Exception {
+    public SSLEngineAlpnTest(String expectedAP) throws Exception {
 
         KeyStore ks = KeyStore.getInstance("JKS");
         KeyStore ts = KeyStore.getInstance("JKS");
@@ -192,12 +193,20 @@
         KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
         kmf.init(ks, passphrase);
 
+        KeyManager [] kms = kmf.getKeyManagers();
+        if (!(kms[0] instanceof X509ExtendedKeyManager)) {
+            throw new Exception("kms[0] not X509ExtendedKeyManager");
+        }
+
+        kms = new KeyManager[] { new MyX509ExtendedKeyManager(
+                (X509ExtendedKeyManager) kms[0], expectedAP) };
+
         TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
         tmf.init(ts);
 
         SSLContext sslCtx = SSLContext.getInstance("TLS");
 
-        sslCtx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
+        sslCtx.init(kms, tmf.getTrustManagers(), null);
 
         sslc = sslCtx;
     }
@@ -327,6 +336,11 @@
             return;
         }
 
+        if (engine.getHandshakeApplicationProtocol() != null) {
+            throw new Exception ("getHandshakeApplicationProtocol() should "
+                    + "return null after the handshake is completed");
+        }
+
         String ap = engine.getApplicationProtocol();
         System.out.println("Application Protocol: \"" + ap + "\"");
 
@@ -384,6 +398,12 @@
         sslp = clientEngine.getSSLParameters();
         sslp.setApplicationProtocols(clientAPs);
         clientEngine.setSSLParameters(sslp);
+
+        if ((clientEngine.getHandshakeApplicationProtocol() != null) ||
+                (serverEngine.getHandshakeApplicationProtocol() != null)) {
+            throw new Exception ("getHandshakeApplicationProtocol() should "
+                    + "return null before the handshake starts");
+        }
     }
 
     /*
--- a/jdk/test/javax/net/ssl/ALPN/SSLSocketAlpnTest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/javax/net/ssl/ALPN/SSLSocketAlpnTest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,8 +26,9 @@
 
 /*
  * @test
- * @bug 8051498
+ * @bug 8051498 8145849
  * @summary JEP 244: TLS Application-Layer Protocol Negotiation Extension
+ * @compile MyX509ExtendedKeyManager.java
  * @run main/othervm SSLSocketAlpnTest h2          h2          h2
  * @run main/othervm SSLSocketAlpnTest h2          h2,http/1.1 h2
  * @run main/othervm SSLSocketAlpnTest h2,http/1.1 h2,http/1.1 h2
@@ -40,6 +41,8 @@
  * @author Brad Wetmore
  */
 import java.io.*;
+import java.security.KeyStore;
+
 import javax.net.ssl.*;
 
 public class SSLSocketAlpnTest {
@@ -65,6 +68,16 @@
     static String trustStoreFile = "truststore";
     static String passwd = "passphrase";
 
+    static String keyFilename = System.getProperty("test.src", ".") + "/"
+            + pathToStores + "/" + keyStoreFile;
+    static String trustFilename = System.getProperty("test.src", ".") + "/"
+            + pathToStores + "/" + trustStoreFile;
+
+    /*
+     * SSLContext
+     */
+    SSLContext mySSLContext = null;
+
     /*
      * Is the server ready to serve?
      */
@@ -82,7 +95,7 @@
     /*
      * If the client or server is doing some kind of object creation
      * that the other side depends on, and that thread prematurely
-     * exits, you may experience a hang.  The test harness will
+     * exits, you may experience a hang. The test harness will
      * terminate all hung threads after its timeout has expired,
      * currently 3 minutes by default, but you might try to be
      * smart about it....
@@ -95,10 +108,11 @@
      * to avoid infinite hangs.
      */
     void doServerSide() throws Exception {
-        SSLServerSocketFactory sslssf
-                = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
+        SSLServerSocketFactory sslssf = mySSLContext.getServerSocketFactory();
         SSLServerSocket sslServerSocket
                 = (SSLServerSocket) sslssf.createServerSocket(serverPort);
+        // for both client/server to call into X509KM
+        sslServerSocket.setNeedClientAuth(true);
 
         serverPort = sslServerSocket.getLocalPort();
 
@@ -119,20 +133,30 @@
          */
         String[] suites = sslp.getCipherSuites();
         sslp.setCipherSuites(suites);
-        sslp.setUseCipherSuitesOrder(true);  // Set server side order
+        sslp.setUseCipherSuitesOrder(true); // Set server side order
 
         // Set the ALPN selection.
         sslp.setApplicationProtocols(serverAPs);
         sslSocket.setSSLParameters(sslp);
 
+        if (sslSocket.getHandshakeApplicationProtocol() != null) {
+            throw new Exception ("getHandshakeApplicationProtocol() should "
+                    + "return null before the handshake starts");
+        }
+
         sslSocket.startHandshake();
 
+        if (sslSocket.getHandshakeApplicationProtocol() != null) {
+            throw new Exception ("getHandshakeApplicationProtocol() should "
+                    + "return null after the handshake is completed");
+        }
+
         String ap = sslSocket.getApplicationProtocol();
         System.out.println("Application Protocol: \"" + ap + "\"");
 
         if (ap == null) {
             throw new Exception(
-                "Handshake was completed but null was received");
+                    "Handshake was completed but null was received");
         }
         if (expectedAP.equals("NONE")) {
             if (!ap.isEmpty()) {
@@ -141,8 +165,8 @@
                 System.out.println("No ALPN value negotiated, as expected");
             }
         } else if (!expectedAP.equals(ap)) {
-            throw new Exception(expectedAP +
-                " ALPN value not available on negotiated connection");
+            throw new Exception(expectedAP
+                    + " ALPN value not available on negotiated connection");
         }
 
         InputStream sslIS = sslSocket.getInputStream();
@@ -170,8 +194,7 @@
             Thread.sleep(50);
         }
 
-        SSLSocketFactory sslsf
-                = (SSLSocketFactory) SSLSocketFactory.getDefault();
+        SSLSocketFactory sslsf = mySSLContext.getSocketFactory();
         SSLSocket sslSocket
                 = (SSLSocket) sslsf.createSocket("localhost", serverPort);
 
@@ -185,28 +208,35 @@
          */
         String[] suites = sslp.getCipherSuites();
         sslp.setCipherSuites(suites);
-        sslp.setUseCipherSuitesOrder(true);  // Set server side order
+        sslp.setUseCipherSuitesOrder(true); // Set server side order
 
         // Set the ALPN selection.
         sslp.setApplicationProtocols(clientAPs);
         sslSocket.setSSLParameters(sslp);
 
+        if (sslSocket.getHandshakeApplicationProtocol() != null) {
+            throw new Exception ("getHandshakeApplicationProtocol() should "
+                    + "return null before the handshake starts");
+        }
+
         sslSocket.startHandshake();
 
+        if (sslSocket.getHandshakeApplicationProtocol() != null) {
+            throw new Exception ("getHandshakeApplicationProtocol() should "
+                    + "return null after the handshake is completed");
+        }
+
         /*
          * Check that the resulting connection meets our defined ALPN
          * criteria.  If we were connecting to a non-JSSE implementation,
          * the server might have negotiated something we shouldn't accept.
-         *
-         * We were expecting H2 from server, let's make sure the
-         * conditions match.
          */
         String ap = sslSocket.getApplicationProtocol();
         System.out.println("Application Protocol: \"" + ap + "\"");
 
         if (ap == null) {
             throw new Exception(
-                "Handshake was completed but null was received");
+                    "Handshake was completed but null was received");
         }
         if (expectedAP.equals("NONE")) {
             if (!ap.isEmpty()) {
@@ -215,8 +245,8 @@
                 System.out.println("No ALPN value negotiated, as expected");
             }
         } else if (!expectedAP.equals(ap)) {
-            throw new Exception(expectedAP +
-                " ALPN value not available on negotiated connection");
+            throw new Exception(expectedAP
+                    + " ALPN value not available on negotiated connection");
         }
 
         InputStream sslIS = sslSocket.getInputStream();
@@ -240,17 +270,6 @@
     volatile Exception clientException = null;
 
     public static void main(String[] args) throws Exception {
-        String keyFilename
-                = System.getProperty("test.src", ".") + "/" + pathToStores
-                + "/" + keyStoreFile;
-        String trustFilename
-                = System.getProperty("test.src", ".") + "/" + pathToStores
-                + "/" + trustStoreFile;
-
-        System.setProperty("javax.net.ssl.keyStore", keyFilename);
-        System.setProperty("javax.net.ssl.keyStorePassword", passwd);
-        System.setProperty("javax.net.ssl.trustStore", trustFilename);
-        System.setProperty("javax.net.ssl.trustStorePassword", passwd);
 
         if (debug) {
             System.setProperty("javax.net.debug", "all");
@@ -280,6 +299,39 @@
         System.out.println("Test Passed.");
     }
 
+    SSLContext getSSLContext(String keyFilename, String trustFilename)
+            throws Exception {
+        SSLContext ctx = SSLContext.getInstance("TLS");
+
+        // Keystores
+        KeyStore keyKS = KeyStore.getInstance("JKS");
+        keyKS.load(new FileInputStream(keyFilename), passwd.toCharArray());
+
+        KeyStore trustKS = KeyStore.getInstance("JKS");
+        trustKS.load(new FileInputStream(trustFilename), passwd.toCharArray());
+
+        // Generate KeyManager and TrustManager
+        KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
+        kmf.init(keyKS, passwd.toCharArray());
+
+        KeyManager[] kms = kmf.getKeyManagers();
+        if (!(kms[0] instanceof X509ExtendedKeyManager)) {
+            throw new Exception("kms[0] not X509ExtendedKeyManager");
+        }
+
+        kms = new KeyManager[] { new MyX509ExtendedKeyManager(
+                (X509ExtendedKeyManager) kms[0], expectedAP) };
+
+        TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
+        tmf.init(trustKS);
+        TrustManager[] tms = tmf.getTrustManagers();
+
+        // initial SSLContext
+        ctx.init(kms, tms, null);
+
+        return ctx;
+    }
+
     /*
      * Convert a comma-separated list into an array of strings.
      */
@@ -309,6 +361,7 @@
      */
     SSLSocketAlpnTest() throws Exception {
         Exception startException = null;
+        mySSLContext = getSSLContext(keyFilename, trustFilename);
         try {
             if (separateServerThread) {
                 startServer(true);
--- a/jdk/test/javax/net/ssl/SSLSession/SessionCacheSizeTests.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/javax/net/ssl/SSLSession/SessionCacheSizeTests.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
  * @bug 4366807
  * @summary Need new APIs to get/set session timeout and session cache size.
  * @run main/othervm SessionCacheSizeTests
+ * @key intermittent
  */
 
 import java.io.*;
@@ -108,28 +109,34 @@
 
     void doServerSide(int serverPort, int serverConns) throws Exception {
 
-        SSLServerSocket sslServerSocket =
-            (SSLServerSocket) sslssf.createServerSocket(serverPort);
-        sslServerSocket.setSoTimeout(45000); // timeout to accept a connection
-        serverPorts[createdPorts++] = sslServerSocket.getLocalPort();
+        try (SSLServerSocket sslServerSocket =
+                (SSLServerSocket) sslssf.createServerSocket(serverPort)) {
+
+            // timeout to accept a connection
+            sslServerSocket.setSoTimeout(45000);
+
+            // make sure createdPorts++ is atomic
+            synchronized(serverPorts) {
+                serverPorts[createdPorts++] = sslServerSocket.getLocalPort();
 
-        /*
-         * Signal Client, we're ready for his connect.
-         */
-        if (createdPorts == serverPorts.length) {
-            serverReady = true;
-        }
-        int read = 0;
-        int nConnections = 0;
-        /*
-         * Divide the max connections among the available server ports.
-         * The use of more than one server port ensures creation of more
-         * than one session.
-         */
-        SSLSession sessions [] = new SSLSession [serverConns];
-        SSLSessionContext sessCtx = sslctx.getServerSessionContext();
+                /*
+                 * Signal Client, we're ready for his connect.
+                 */
+                if (createdPorts == serverPorts.length) {
+                    serverReady = true;
+                }
+            }
+            int read = 0;
+            int nConnections = 0;
 
-        try {
+            /*
+             * Divide the max connections among the available server ports.
+             * The use of more than one server port ensures creation of more
+             * than one session.
+             */
+            SSLSession sessions [] = new SSLSession [serverConns];
+            SSLSessionContext sessCtx = sslctx.getServerSessionContext();
+
             while (nConnections < serverConns) {
                 try (SSLSocket sslSocket =
                         (SSLSocket)sslServerSocket.accept()) {
@@ -143,8 +150,6 @@
                     nConnections++;
                 }
             }
-        } finally {
-            sslServerSocket.close();
         }
     }
 
@@ -270,8 +275,8 @@
      * Using four ports (one per each connection), we are able to create
      * alteast four sessions.
      */
-    volatile int serverPorts[] = new int[]{0, 0, 0, 0};
-    volatile int createdPorts = 0;
+    int serverPorts[] = new int[]{0, 0, 0, 0};  // MAX_ACTIVE_CONNECTIONS: 4
+    int createdPorts = 0;
     static SSLServerSocketFactory sslssf;
     static SSLSocketFactory sslsf;
     static SSLContext sslctx;
--- a/jdk/test/jdk/internal/jimage/JImageReadTest.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/jdk/internal/jimage/JImageReadTest.java	Fri Jan 15 09:15:33 2016 +0100
@@ -313,7 +313,7 @@
     static boolean isMetaName(String name) {
         return name.startsWith("/modules")
                 || name.startsWith("/packages")
-                || name.startsWith("META-INF/services")
+                || name.startsWith("META-INF")
                 || name.equals("bootmodules.jdata");
     }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/jdk/internal/misc/VM/GetNanoTimeAdjustment.java	Fri Jan 15 09:15:33 2016 +0100
@@ -0,0 +1,250 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+import java.util.Objects;
+import jdk.internal.misc.VM;
+
+/**
+ * @test
+ * @bug 8068730
+ * @summary tests that VM.getgetNanoTimeAdjustment() works as expected.
+ * @modules java.base/jdk.internal.misc
+ * @run main GetNanoTimeAdjustment
+ * @author danielfuchs
+ */
+public class GetNanoTimeAdjustment {
+
+    static final int MILLIS_IN_SECOND = 1000;
+    static final int NANOS_IN_MILLI = 1000_000;
+    static final int NANOS_IN_MICRO = 1000;
+    static final int NANOS_IN_SECOND = 1000_000_000;
+
+    static final boolean verbose = true;
+
+    static final class TestAssertException extends RuntimeException {
+        TestAssertException(String msg) { super(msg); }
+    }
+
+    private static void assertEquals(long expected, long received, String msg) {
+        if (expected != received) {
+            throw new TestAssertException("Unexpected result for " + msg
+                    + ".\n\texpected: " + expected
+                    +  "\n\tactual:   " + received);
+        } else if (verbose) {
+            System.out.println("Got expected " + msg + ": " + received);
+        }
+    }
+
+    private static void assertEquals(Object expected, Object received, String msg) {
+        if (!Objects.equals(expected, received)) {
+            throw new TestAssertException("Unexpected result for " + msg
+                    + ".\n\texpected: " + expected
+                    +  "\n\tactual:   " + received);
+        } else if (verbose) {
+            System.out.println("Got expected " + msg + ": " + received);
+        }
+    }
+
+    static final long MAX_OFFSET = 0x0100000000L;
+    static final long MIN_OFFSET = -MAX_OFFSET;
+    static enum Answer {
+        YES,   // isOffLimit = YES:   we must get -1
+        NO,    // isOffLimit = NO:    we must not not get -1
+        MAYBE  // isOffLimit = MAYBE: we might get -1 or a valid adjustment.
+    };
+    static long distance(long one, long two) {
+        return one > two ? Math.subtractExact(one, two)
+                : Math.subtractExact(two, one);
+    }
+
+
+    static Answer isOffLimits(long before, long after, long offset) {
+        long relativeDistanceBefore = distance(before, offset);
+        long relativeDistanceAfter  = distance(after, offset);
+        if (relativeDistanceBefore >= MAX_OFFSET && relativeDistanceAfter >= MAX_OFFSET) {
+            return Answer.YES;
+        }
+        if (relativeDistanceBefore < MAX_OFFSET && relativeDistanceAfter < MAX_OFFSET) {
+            if (relativeDistanceBefore == 0 || relativeDistanceAfter == 0) {
+                return Answer.MAYBE; // unlucky case where
+            }
+            return Answer.NO;
+        }
+        return Answer.MAYBE;
+    }
+
+    static void testWithOffset(String name, long offset) {
+        System.out.println("Testing with offset: " + name);
+        long beforeMillis = System.currentTimeMillis();
+        long adjustment = VM.getNanoTimeAdjustment(offset);
+        long afterMillis = System.currentTimeMillis();
+
+        if (offset >= beforeMillis/MILLIS_IN_SECOND
+                && offset <= afterMillis/MILLIS_IN_SECOND) {
+            if (adjustment == -1) {
+                // it's possible that we have fallen in the unlucky case
+                // where -1 was the genuine result. let's go backward a bit.
+                offset = offset - 10;
+                beforeMillis = System.currentTimeMillis();
+                adjustment = VM.getNanoTimeAdjustment(offset);
+                afterMillis = System.currentTimeMillis();
+                if (adjustment == -1) {
+                    throw new RuntimeException(name + ": VM says " + offset
+                            + " secs is too far off, "
+                            + " when time in seconds is in ["
+                            + beforeMillis/MILLIS_IN_SECOND + ", "
+                            + afterMillis/MILLIS_IN_SECOND
+                            + "]");
+                }
+            }
+        }
+
+        Answer isOffLimit = isOffLimits(beforeMillis/MILLIS_IN_SECOND,
+                afterMillis/MILLIS_IN_SECOND, offset);
+        switch (isOffLimit) {
+            case YES:
+                if (adjustment != -1) {
+                    throw new RuntimeException(name
+                        + ": VM should have returned -1 for "
+                        + offset
+                        + " when time in seconds is in ["
+                        + beforeMillis/MILLIS_IN_SECOND + ", "
+                        + afterMillis/MILLIS_IN_SECOND + "]");
+                }
+                System.out.println("Got expected exception value: " + adjustment);
+                break;
+            case NO:
+                if (adjustment == -1) {
+                    throw new RuntimeException(name
+                            + "VM says "  + offset
+                            + " secs is too far off, "
+                            + " when time in seconds is in ["
+                            + beforeMillis/MILLIS_IN_SECOND + ", "
+                            + afterMillis/MILLIS_IN_SECOND
+                            + "]");
+                }
+                break;
+            case MAYBE:
+                System.out.println("Adjustment: " + adjustment);
+                System.out.println("Can't assert for -1 with offset "
+                        + offset + "(" + name + ")"
+                        + " when time in seconds is in ["
+                        + beforeMillis/MILLIS_IN_SECOND + ", "
+                        + afterMillis/MILLIS_IN_SECOND
+                        + "]");
+                // not conclusive
+        }
+
+        if (isOffLimit == Answer.NO || adjustment != -1) {
+            System.out.println("Validating adjustment: " + adjustment);
+            long expectedMax = distance(offset, beforeMillis/MILLIS_IN_SECOND)
+                      * NANOS_IN_SECOND
+                    + (beforeMillis % MILLIS_IN_SECOND) * NANOS_IN_MILLI
+                    + (afterMillis - beforeMillis + 1) * NANOS_IN_MILLI;
+            long absoluteAdjustment = distance(0, adjustment);
+            if (absoluteAdjustment > expectedMax) {
+                long adjSec = absoluteAdjustment / NANOS_IN_SECOND;
+                long adjMil = (absoluteAdjustment % NANOS_IN_SECOND) / NANOS_IN_MILLI;
+                long adjMic = (absoluteAdjustment % NANOS_IN_MILLI) / NANOS_IN_MICRO;
+                long adjNan = (absoluteAdjustment % NANOS_IN_MICRO);
+                long expSec = expectedMax / NANOS_IN_SECOND;
+                long expMil = (expectedMax % NANOS_IN_SECOND) / NANOS_IN_MILLI;
+                long expMic = (expectedMax % NANOS_IN_MILLI) / NANOS_IN_MICRO;
+                long expNan = (expectedMax % NANOS_IN_MICRO);
+                System.err.println("Excessive adjustment: " + adjSec + "s, "
+                        + adjMil + "ms, " + adjMic + "mics, " + adjNan + "ns");
+                System.err.println("Epected max: " + expSec + "s, "
+                        + expMil + "ms, " + expMic + "mics, " + expNan + "ns");
+
+                throw new RuntimeException(name
+                    + ": Excessive adjustment: " + adjustment
+                    + " when time in millis is in ["
+                    + beforeMillis + ", " + afterMillis
+                    + "] and offset in seconds is " + offset);
+            }
+        }
+
+    }
+
+    static void regular() {
+        System.out.println("*** Testing regular cases ***");
+        final long start = System.currentTimeMillis();
+        long offset = start/1000;
+        long adjustment = VM.getNanoTimeAdjustment(offset);
+        if (start != offset*1000) {
+            if (adjustment == -1) {
+                throw new RuntimeException("VM says " + offset
+                        + " secs is too far off, but time millis is "
+                        + System.currentTimeMillis());
+            }
+        }
+        if (adjustment == -1) {
+            offset = System.currentTimeMillis()/1000 - 1024;
+            adjustment = VM.getNanoTimeAdjustment(offset);
+            if (adjustment == -1) {
+                throw new RuntimeException("VM says " + offset
+                        + " secs is too far off, but time millis is "
+                        + System.currentTimeMillis());
+            }
+        }
+        if (adjustment > (start/1000 - offset + 20)*NANOS_IN_SECOND) {
+            throw new RuntimeException("Excessive adjustment: " + adjustment);
+        }
+        testWithOffset("System.currentTimeMillis()/1000",
+                System.currentTimeMillis()/1000);
+        testWithOffset("System.currentTimeMillis()/1000 - 1024",
+                System.currentTimeMillis()/1000 - 1024);
+        testWithOffset("System.currentTimeMillis()/1000 + 1024",
+                System.currentTimeMillis()/1000 + 1024);
+    }
+
+    static void testLimits() {
+        System.out.println("*** Testing limits ***");
+        testWithOffset("System.currentTimeMillis()/1000 - MAX_OFFSET + 1",
+                System.currentTimeMillis()/1000 - MAX_OFFSET + 1);
+        testWithOffset("System.currentTimeMillis()/1000 + MAX_OFFSET - 1",
+                System.currentTimeMillis()/1000 + MAX_OFFSET - 1);
+        testWithOffset("System.currentTimeMillis()/1000 - MAX_OFFSET",
+                System.currentTimeMillis()/1000 - MAX_OFFSET);
+        testWithOffset("System.currentTimeMillis()/1000 + MAX_OFFSET",
+                System.currentTimeMillis()/1000 + MAX_OFFSET);
+        testWithOffset("System.currentTimeMillis()/1000 - MAX_OFFSET - 1024",
+                System.currentTimeMillis()/1000 - MAX_OFFSET - 1024);
+        testWithOffset("System.currentTimeMillis()/1000 + MAX_OFFSET + 1024",
+                System.currentTimeMillis()/1000 + MAX_OFFSET + 1024);
+        testWithOffset("0", 0);
+        testWithOffset("-1", -1);
+        testWithOffset("Integer.MAX_VALUE + System.currentTimeMillis()/1000",
+                ((long)Integer.MAX_VALUE) + System.currentTimeMillis()/1000);
+        testWithOffset("System.currentTimeMillis()/1000 - Integer.MIN_VALUE",
+                System.currentTimeMillis()/1000 - Integer.MIN_VALUE);
+        testWithOffset("Long.MAX_VALUE", Long.MAX_VALUE);
+        testWithOffset("System.currentTimeMillis()/1000 - Long.MIN_VALUE",
+                (Long.MIN_VALUE + System.currentTimeMillis()/1000)*-1);
+    }
+
+    public static void main(String[] args) throws Exception {
+        regular();
+        testLimits();
+    }
+
+}
--- a/jdk/test/sun/misc/VM/GetNanoTimeAdjustment.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,250 +0,0 @@
-/*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-import java.util.Objects;
-import sun.misc.VM;
-
-/**
- * @test
- * @bug 8068730
- * @summary tests that VM.getgetNanoTimeAdjustment() works as expected.
- * @modules java.base/sun.misc
- * @run main GetNanoTimeAdjustment
- * @author danielfuchs
- */
-public class GetNanoTimeAdjustment {
-
-    static final int MILLIS_IN_SECOND = 1000;
-    static final int NANOS_IN_MILLI = 1000_000;
-    static final int NANOS_IN_MICRO = 1000;
-    static final int NANOS_IN_SECOND = 1000_000_000;
-
-    static final boolean verbose = true;
-
-    static final class TestAssertException extends RuntimeException {
-        TestAssertException(String msg) { super(msg); }
-    }
-
-    private static void assertEquals(long expected, long received, String msg) {
-        if (expected != received) {
-            throw new TestAssertException("Unexpected result for " + msg
-                    + ".\n\texpected: " + expected
-                    +  "\n\tactual:   " + received);
-        } else if (verbose) {
-            System.out.println("Got expected " + msg + ": " + received);
-        }
-    }
-
-    private static void assertEquals(Object expected, Object received, String msg) {
-        if (!Objects.equals(expected, received)) {
-            throw new TestAssertException("Unexpected result for " + msg
-                    + ".\n\texpected: " + expected
-                    +  "\n\tactual:   " + received);
-        } else if (verbose) {
-            System.out.println("Got expected " + msg + ": " + received);
-        }
-    }
-
-    static final long MAX_OFFSET = 0x0100000000L;
-    static final long MIN_OFFSET = -MAX_OFFSET;
-    static enum Answer {
-        YES,   // isOffLimit = YES:   we must get -1
-        NO,    // isOffLimit = NO:    we must not not get -1
-        MAYBE  // isOffLimit = MAYBE: we might get -1 or a valid adjustment.
-    };
-    static long distance(long one, long two) {
-        return one > two ? Math.subtractExact(one, two)
-                : Math.subtractExact(two, one);
-    }
-
-
-    static Answer isOffLimits(long before, long after, long offset) {
-        long relativeDistanceBefore = distance(before, offset);
-        long relativeDistanceAfter  = distance(after, offset);
-        if (relativeDistanceBefore >= MAX_OFFSET && relativeDistanceAfter >= MAX_OFFSET) {
-            return Answer.YES;
-        }
-        if (relativeDistanceBefore < MAX_OFFSET && relativeDistanceAfter < MAX_OFFSET) {
-            if (relativeDistanceBefore == 0 || relativeDistanceAfter == 0) {
-                return Answer.MAYBE; // unlucky case where
-            }
-            return Answer.NO;
-        }
-        return Answer.MAYBE;
-    }
-
-    static void testWithOffset(String name, long offset) {
-        System.out.println("Testing with offset: " + name);
-        long beforeMillis = System.currentTimeMillis();
-        long adjustment = VM.getNanoTimeAdjustment(offset);
-        long afterMillis = System.currentTimeMillis();
-
-        if (offset >= beforeMillis/MILLIS_IN_SECOND
-                && offset <= afterMillis/MILLIS_IN_SECOND) {
-            if (adjustment == -1) {
-                // it's possible that we have fallen in the unlucky case
-                // where -1 was the genuine result. let's go backward a bit.
-                offset = offset - 10;
-                beforeMillis = System.currentTimeMillis();
-                adjustment = VM.getNanoTimeAdjustment(offset);
-                afterMillis = System.currentTimeMillis();
-                if (adjustment == -1) {
-                    throw new RuntimeException(name + ": VM says " + offset
-                            + " secs is too far off, "
-                            + " when time in seconds is in ["
-                            + beforeMillis/MILLIS_IN_SECOND + ", "
-                            + afterMillis/MILLIS_IN_SECOND
-                            + "]");
-                }
-            }
-        }
-
-        Answer isOffLimit = isOffLimits(beforeMillis/MILLIS_IN_SECOND,
-                afterMillis/MILLIS_IN_SECOND, offset);
-        switch (isOffLimit) {
-            case YES:
-                if (adjustment != -1) {
-                    throw new RuntimeException(name
-                        + ": VM should have returned -1 for "
-                        + offset
-                        + " when time in seconds is in ["
-                        + beforeMillis/MILLIS_IN_SECOND + ", "
-                        + afterMillis/MILLIS_IN_SECOND + "]");
-                }
-                System.out.println("Got expected exception value: " + adjustment);
-                break;
-            case NO:
-                if (adjustment == -1) {
-                    throw new RuntimeException(name
-                            + "VM says "  + offset
-                            + " secs is too far off, "
-                            + " when time in seconds is in ["
-                            + beforeMillis/MILLIS_IN_SECOND + ", "
-                            + afterMillis/MILLIS_IN_SECOND
-                            + "]");
-                }
-                break;
-            case MAYBE:
-                System.out.println("Adjustment: " + adjustment);
-                System.out.println("Can't assert for -1 with offset "
-                        + offset + "(" + name + ")"
-                        + " when time in seconds is in ["
-                        + beforeMillis/MILLIS_IN_SECOND + ", "
-                        + afterMillis/MILLIS_IN_SECOND
-                        + "]");
-                // not conclusive
-        }
-
-        if (isOffLimit == Answer.NO || adjustment != -1) {
-            System.out.println("Validating adjustment: " + adjustment);
-            long expectedMax = distance(offset, beforeMillis/MILLIS_IN_SECOND)
-                      * NANOS_IN_SECOND
-                    + (beforeMillis % MILLIS_IN_SECOND) * NANOS_IN_MILLI
-                    + (afterMillis - beforeMillis + 1) * NANOS_IN_MILLI;
-            long absoluteAdjustment = distance(0, adjustment);
-            if (absoluteAdjustment > expectedMax) {
-                long adjSec = absoluteAdjustment / NANOS_IN_SECOND;
-                long adjMil = (absoluteAdjustment % NANOS_IN_SECOND) / NANOS_IN_MILLI;
-                long adjMic = (absoluteAdjustment % NANOS_IN_MILLI) / NANOS_IN_MICRO;
-                long adjNan = (absoluteAdjustment % NANOS_IN_MICRO);
-                long expSec = expectedMax / NANOS_IN_SECOND;
-                long expMil = (expectedMax % NANOS_IN_SECOND) / NANOS_IN_MILLI;
-                long expMic = (expectedMax % NANOS_IN_MILLI) / NANOS_IN_MICRO;
-                long expNan = (expectedMax % NANOS_IN_MICRO);
-                System.err.println("Excessive adjustment: " + adjSec + "s, "
-                        + adjMil + "ms, " + adjMic + "mics, " + adjNan + "ns");
-                System.err.println("Epected max: " + expSec + "s, "
-                        + expMil + "ms, " + expMic + "mics, " + expNan + "ns");
-
-                throw new RuntimeException(name
-                    + ": Excessive adjustment: " + adjustment
-                    + " when time in millis is in ["
-                    + beforeMillis + ", " + afterMillis
-                    + "] and offset in seconds is " + offset);
-            }
-        }
-
-    }
-
-    static void regular() {
-        System.out.println("*** Testing regular cases ***");
-        final long start = System.currentTimeMillis();
-        long offset = start/1000;
-        long adjustment = VM.getNanoTimeAdjustment(offset);
-        if (start != offset*1000) {
-            if (adjustment == -1) {
-                throw new RuntimeException("VM says " + offset
-                        + " secs is too far off, but time millis is "
-                        + System.currentTimeMillis());
-            }
-        }
-        if (adjustment == -1) {
-            offset = System.currentTimeMillis()/1000 - 1024;
-            adjustment = VM.getNanoTimeAdjustment(offset);
-            if (adjustment == -1) {
-                throw new RuntimeException("VM says " + offset
-                        + " secs is too far off, but time millis is "
-                        + System.currentTimeMillis());
-            }
-        }
-        if (adjustment > (start/1000 - offset + 20)*NANOS_IN_SECOND) {
-            throw new RuntimeException("Excessive adjustment: " + adjustment);
-        }
-        testWithOffset("System.currentTimeMillis()/1000",
-                System.currentTimeMillis()/1000);
-        testWithOffset("System.currentTimeMillis()/1000 - 1024",
-                System.currentTimeMillis()/1000 - 1024);
-        testWithOffset("System.currentTimeMillis()/1000 + 1024",
-                System.currentTimeMillis()/1000 + 1024);
-    }
-
-    static void testLimits() {
-        System.out.println("*** Testing limits ***");
-        testWithOffset("System.currentTimeMillis()/1000 - MAX_OFFSET + 1",
-                System.currentTimeMillis()/1000 - MAX_OFFSET + 1);
-        testWithOffset("System.currentTimeMillis()/1000 + MAX_OFFSET - 1",
-                System.currentTimeMillis()/1000 + MAX_OFFSET - 1);
-        testWithOffset("System.currentTimeMillis()/1000 - MAX_OFFSET",
-                System.currentTimeMillis()/1000 - MAX_OFFSET);
-        testWithOffset("System.currentTimeMillis()/1000 + MAX_OFFSET",
-                System.currentTimeMillis()/1000 + MAX_OFFSET);
-        testWithOffset("System.currentTimeMillis()/1000 - MAX_OFFSET - 1024",
-                System.currentTimeMillis()/1000 - MAX_OFFSET - 1024);
-        testWithOffset("System.currentTimeMillis()/1000 + MAX_OFFSET + 1024",
-                System.currentTimeMillis()/1000 + MAX_OFFSET + 1024);
-        testWithOffset("0", 0);
-        testWithOffset("-1", -1);
-        testWithOffset("Integer.MAX_VALUE + System.currentTimeMillis()/1000",
-                ((long)Integer.MAX_VALUE) + System.currentTimeMillis()/1000);
-        testWithOffset("System.currentTimeMillis()/1000 - Integer.MIN_VALUE",
-                System.currentTimeMillis()/1000 - Integer.MIN_VALUE);
-        testWithOffset("Long.MAX_VALUE", Long.MAX_VALUE);
-        testWithOffset("System.currentTimeMillis()/1000 - Long.MIN_VALUE",
-                (Long.MIN_VALUE + System.currentTimeMillis()/1000)*-1);
-    }
-
-    public static void main(String[] args) throws Exception {
-        regular();
-        testLimits();
-    }
-
-}
--- a/jdk/test/sun/security/krb5/auto/ReplayCacheTestProc.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/sun/security/krb5/auto/ReplayCacheTestProc.java	Fri Jan 15 09:15:33 2016 +0100
@@ -78,7 +78,7 @@
                 mode = -1;
             }
 
-            uid = sun.misc.VM.geteuid();
+            uid = jdk.internal.misc.VM.geteuid();
 
             KDC kdc = KDC.create(OneKDC.REALM, HOST, 0, true);
             for (int i=0; i<nu; i++) {
--- a/jdk/test/sun/security/krb5/auto/TEST.properties	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/sun/security/krb5/auto/TEST.properties	Fri Jan 15 09:15:33 2016 +0100
@@ -1,4 +1,5 @@
-modules java.base/sun.misc \
+modules java.base/jdk.internal.misc \
+        java.base/sun.misc \
         java.base/sun.net.spi.nameservice \
         java.base/sun.security.util \
         java.security.jgss/sun.security.jgss \
--- a/jdk/test/tools/pack200/Pack200Test.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/jdk/test/tools/pack200/Pack200Test.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
  /*
   * @test
   * @bug 6521334 6712743 8007902
+  * @key intermittent
   * @summary check for memory leaks, test general packer/unpacker functionality\
   *          using native and java unpackers
   * @compile -XDignore.symbol.file Utils.java Pack200Test.java
--- a/langtools/.hgtags	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/.hgtags	Fri Jan 15 09:15:33 2016 +0100
@@ -342,3 +342,4 @@
 ae8cdc734bab4f19ef8babd2434dcf024672ad38 jdk-9+97
 345520da2ec17100cb512a53d541a307a195305e jdk-9+98
 cb73b474703e2de266542b505cffd658bcc052da jdk-9+99
+51136404ee5e6cd5868b60d66ebd55a02170b508 jdk-9+100
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java	Fri Jan 15 09:15:33 2016 +0100
@@ -145,7 +145,7 @@
      * The version recognized by the Java Platform, Standard Edition
      * 9.
      *
-     * @since 1.9
+     * @since 9
      */
      RELEASE_9;
 
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor9.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor9.java	Fri Jan 15 09:15:33 2016 +0100
@@ -57,7 +57,7 @@
  * @see AbstractAnnotationValueVisitor6
  * @see AbstractAnnotationValueVisitor7
  * @see AbstractAnnotationValueVisitor8
- * @since 1.9
+ * @since 9
  */
 @SupportedSourceVersion(RELEASE_9)
 public abstract class AbstractAnnotationValueVisitor9<R, P> extends AbstractAnnotationValueVisitor8<R, P> {
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor9.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor9.java	Fri Jan 15 09:15:33 2016 +0100
@@ -61,7 +61,7 @@
  * @see AbstractElementVisitor6
  * @see AbstractElementVisitor7
  * @see AbstractElementVisitor8
- * @since 1.9
+ * @since 9
  */
 @SupportedSourceVersion(RELEASE_9)
 public abstract class AbstractElementVisitor9<R, P> extends AbstractElementVisitor8<R, P> {
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor9.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor9.java	Fri Jan 15 09:15:33 2016 +0100
@@ -61,7 +61,7 @@
  * @see AbstractTypeVisitor6
  * @see AbstractTypeVisitor7
  * @see AbstractTypeVisitor8
- * @since 1.9
+ * @since 9
  */
 @SupportedSourceVersion(RELEASE_9)
 public abstract class AbstractTypeVisitor9<R, P> extends AbstractTypeVisitor8<R, P> {
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor9.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor9.java	Fri Jan 15 09:15:33 2016 +0100
@@ -74,7 +74,7 @@
  * @see ElementKindVisitor6
  * @see ElementKindVisitor7
  * @see ElementKindVisitor8
- * @since 1.9
+ * @since 9
  */
 @SupportedSourceVersion(RELEASE_9)
 public class ElementKindVisitor9<R, P> extends ElementKindVisitor8<R, P> {
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/util/ElementScanner9.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/util/ElementScanner9.java	Fri Jan 15 09:15:33 2016 +0100
@@ -87,7 +87,7 @@
  * @see ElementScanner6
  * @see ElementScanner7
  * @see ElementScanner8
- * @since 1.9
+ * @since 9
  */
 @SupportedSourceVersion(RELEASE_9)
 public class ElementScanner9<R, P> extends ElementScanner8<R, P> {
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor9.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor9.java	Fri Jan 15 09:15:33 2016 +0100
@@ -64,7 +64,7 @@
  * @see SimpleAnnotationValueVisitor6
  * @see SimpleAnnotationValueVisitor7
  * @see SimpleAnnotationValueVisitor8
- * @since 1.9
+ * @since 9
  */
 @SupportedSourceVersion(RELEASE_9)
 public class SimpleAnnotationValueVisitor9<R, P> extends SimpleAnnotationValueVisitor8<R, P> {
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor9.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor9.java	Fri Jan 15 09:15:33 2016 +0100
@@ -69,7 +69,7 @@
  * @see SimpleElementVisitor6
  * @see SimpleElementVisitor7
  * @see SimpleElementVisitor8
- * @since 1.9
+ * @since 9
  */
 @SupportedSourceVersion(RELEASE_9)
 public class SimpleElementVisitor9<R, P> extends SimpleElementVisitor8<R, P> {
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor9.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor9.java	Fri Jan 15 09:15:33 2016 +0100
@@ -72,7 +72,7 @@
  * @see TypeKindVisitor6
  * @see TypeKindVisitor7
  * @see TypeKindVisitor8
- * @since 1.9
+ * @since 9
  */
 @SupportedSourceVersion(RELEASE_9)
 public class TypeKindVisitor9<R, P> extends TypeKindVisitor8<R, P> {
--- a/langtools/src/java.compiler/share/classes/javax/tools/FileManagerUtils.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/java.compiler/share/classes/javax/tools/FileManagerUtils.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,7 @@
 /**
  * Package-private utility methods to convert between files and paths.
  *
- * @since 1.9
+ * @since 9
  */
 class FileManagerUtils {
     private FileManagerUtils() { }
--- a/langtools/src/java.compiler/share/classes/javax/tools/StandardJavaFileManager.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/java.compiler/share/classes/javax/tools/StandardJavaFileManager.java	Fri Jan 15 09:15:33 2016 +0100
@@ -187,7 +187,7 @@
      * a directory or if this file manager does not support any of the
      * given paths.
      *
-     * @since 1.9
+     * @since 9
      */
     default Iterable<? extends JavaFileObject> getJavaFileObjectsFromPaths(
             Iterable<? extends Path> paths) {
@@ -226,7 +226,7 @@
      * @throws NullPointerException if the given array contains null
      * elements
      *
-     * @since 1.9
+     * @since 9
      */
     default Iterable<? extends JavaFileObject> getJavaFileObjects(Path... paths) {
         return getJavaFileObjectsFromPaths(Arrays.asList(paths));
@@ -295,7 +295,7 @@
      * @throws IOException if {@code location} is an output location and
      * {@code paths} does not represent an existing directory
      *
-     * @since 1.9
+     * @since 9
      */
     default void setLocationFromPaths(Location location, Iterable<? extends Path> paths)
         throws IOException {
@@ -324,7 +324,7 @@
      * associated search path
      *
      * @see #setLocationFromPaths
-     * @since 1.9
+     * @since 9
      */
     default Iterable<? extends Path> getLocationAsPaths(Location location) {
         return asPaths(getLocation(location));
@@ -345,7 +345,7 @@
      * @throws IllegalArgumentException if the file object does not have an underlying path
      * @throws UnsupportedOperationException if the operation is not supported by this file manager
      *
-     * @since 1.9
+     * @since 9
      */
     default Path asPath(FileObject file) {
         throw new UnsupportedOperationException();
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/AttributeTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/AttributeTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,12 +33,10 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface AttributeTree extends DocTree {
     /**
      * The kind of an attribute value.
      */
-    @jdk.Exported
     enum ValueKind {
         /** The attribute value is empty. */
         EMPTY,
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/AuthorTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/AuthorTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface AuthorTree extends BlockTagTree {
     /**
      * Returns the name of the author.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/BlockTagTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/BlockTagTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,7 +31,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface BlockTagTree extends DocTree {
     /**
      * Returns the name of the tag.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/CommentTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/CommentTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface CommentTree extends DocTree {
     /**
      * Returns the text of the comment.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/DeprecatedTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/DeprecatedTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface DeprecatedTree extends BlockTagTree {
     /**
      * Returns the description explaining why an item is deprecated.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/DocCommentTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/DocCommentTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface DocCommentTree extends DocTree {
     /**
      * Returns the first sentence of a documentation comment.
@@ -49,7 +48,7 @@
      * before any block tags, including the first sentence.
      * @return body of a documentation comment first sentence inclusive
      *
-     * @since 1.9
+     * @since 9
      */
     default List<? extends DocTree> getFullBody() {
         ArrayList<DocTree> bodyList = new ArrayList<>();
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/DocRootTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/DocRootTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,5 +33,4 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface DocRootTree extends InlineTagTree { }
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/DocTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/DocTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,12 +30,10 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface DocTree {
     /**
      * Enumerates all kinds of trees.
      */
-    @jdk.Exported
     enum Kind {
         /**
          * Used for instances of {@link AttributeTree}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/DocTreeVisitor.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/DocTreeVisitor.java	Fri Jan 15 09:15:33 2016 +0100
@@ -54,7 +54,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface DocTreeVisitor<R,P> {
 
     /**
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/EndElementTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/EndElementTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface EndElementTree extends DocTree {
     /**
      * Returns the name of this element.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/EntityTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/EntityTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,7 +38,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface EntityTree extends DocTree {
     /**
      * Returns the name or value of the entity.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/ErroneousTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/ErroneousTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface ErroneousTree extends TextTree {
     /**
      * Returns a diagnostic object giving details about
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/IdentifierTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/IdentifierTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface IdentifierTree extends DocTree {
     /**
      * Returns the name of the identifier.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/IndexTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/IndexTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,9 +33,8 @@
  * <p>
  * {&#064;index keyword optional description} <br>
  *
- * @since 1.9
+ * @since 9
  */
-@jdk.Exported
 public interface IndexTree extends InlineTagTree {
     /**
      * Returns the specified search term.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/InheritDocTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/InheritDocTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,5 +34,4 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface InheritDocTree extends InlineTagTree { }
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/InlineTagTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/InlineTagTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,7 +31,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface InlineTagTree extends DocTree {
     /**
      * Returns the name of the tag.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/LinkTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/LinkTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface LinkTree extends InlineTagTree {
     /**
      * Returns the reference of a link.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/LiteralTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/LiteralTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface LiteralTree extends InlineTagTree {
     /**
      * Returns the body of the {@code @code} or {@code @literal} tag.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/ParamTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/ParamTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface ParamTree extends BlockTagTree {
     /**
      * Returns true if this is documenting a type parameter.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/ReferenceTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/ReferenceTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface ReferenceTree extends DocTree {
     /**
      * Returns the signature of the Java language element being referenced,
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/ReturnTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/ReturnTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface ReturnTree extends BlockTagTree {
     /**
      * Returns the description of the return value of a method.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/SeeTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/SeeTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,7 +38,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface SeeTree extends BlockTagTree {
     /**
      * Returns the reference.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/SerialDataTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/SerialDataTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface SerialDataTree extends BlockTagTree {
     /**
      * Returns the description of the serial data.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/SerialFieldTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/SerialFieldTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface SerialFieldTree extends BlockTagTree {
     /**
      * Returns the name of the serial field.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/SerialTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/SerialTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface SerialTree extends BlockTagTree {
     /**
      * Returns the description of the field, or the word
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/SinceTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/SinceTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface SinceTree extends BlockTagTree {
     /**
      * Returns the text explaining the availability of the item being documented.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/StartElementTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/StartElementTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface StartElementTree extends DocTree {
     /**
      * Returns the name of the element.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/TextTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/TextTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,7 +30,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface TextTree extends DocTree {
     /**
      * Returns the text.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/ThrowsTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/ThrowsTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,7 +38,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface ThrowsTree extends BlockTagTree {
     /**
      * Returns a name of the exception being documented.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/UnknownBlockTagTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/UnknownBlockTagTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  * @since 1.8
  *
  */
-@jdk.Exported
 public interface UnknownBlockTagTree extends BlockTagTree {
     /**
      * Returns the content of an unrecognized block tag.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/UnknownInlineTagTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/UnknownInlineTagTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  * @since 1.8
  *
  */
-@jdk.Exported
 public interface UnknownInlineTagTree extends InlineTagTree {
     /**
      * Returns the content of an unrecognized inline tag.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/ValueTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/ValueTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface ValueTree extends InlineTagTree {
     /**
      * Returns the reference to the value.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/VersionTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/VersionTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface VersionTree extends BlockTagTree {
     /**
      * Returns the body of the tag.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/doctree/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,5 +31,4 @@
  * @since 1.8
  * @see <a href="http://download.oracle.com/javase/6/docs/technotes/tools/solaris/javadoc.html#javadoctags">http://download.oracle.com/javase/6/docs/technotes/tools/solaris/javadoc.html#javadoctags</a>
  */
-@jdk.Exported
 package com.sun.source.doctree;
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/AnnotatedTypeTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/AnnotatedTypeTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @author Mahmood Ali
  * @since 1.8
  */
-@jdk.Exported
 public interface AnnotatedTypeTree extends ExpressionTree {
     /**
      * Returns the annotations associated with this type expression.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/AnnotationTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/AnnotationTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -42,7 +42,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface AnnotationTree extends ExpressionTree {
     /**
      * Returns the annotation type.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ArrayAccessTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ArrayAccessTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ArrayAccessTree extends ExpressionTree {
     /**
      * Returns the expression for the array being accessed.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ArrayTypeTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ArrayTypeTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ArrayTypeTree extends Tree {
     /**
      * Returns the element type of this array type.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/AssertTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/AssertTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface AssertTree extends StatementTree {
     /**
      * Returns the condition being asserted.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/AssignmentTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/AssignmentTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface AssignmentTree extends ExpressionTree {
     /**
      * Returns the variable being assigned to.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/BinaryTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/BinaryTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface BinaryTree extends ExpressionTree {
     /**
      * Returns the left (first) operand of the expression.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/BlockTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/BlockTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface BlockTree extends StatementTree {
     /**
      * Returns true if and only if this is a static initializer block.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/BreakTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/BreakTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,7 +43,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface BreakTree extends StatementTree {
     /**
      * Returns the label for this {@code break} statement.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/CaseTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/CaseTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface CaseTree extends Tree {
     /**
      * Returns the expression for the case, or
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/CatchTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/CatchTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface CatchTree extends Tree {
     /**
      * Returns the catch variable.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ClassTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ClassTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -48,7 +48,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ClassTree extends StatementTree {
     /**
      * Returns the modifiers, including any annotations,
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/CompilationUnitTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/CompilationUnitTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  * @author Peter von der Ah&eacute;
  * @since 1.6
  */
-@jdk.Exported
 public interface CompilationUnitTree extends Tree {
     /**
      * Returns the annotations listed on any package declaration
@@ -59,7 +58,7 @@
      * Returns the package tree associated with this compilation unit,
      * or {@code null} if there is no package declaration.
      * @return the package tree
-     * @since 1.9
+     * @since 9
      */
     PackageTree getPackage();
 
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/CompoundAssignmentTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/CompoundAssignmentTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface CompoundAssignmentTree extends ExpressionTree {
     /**
      * Returns the variable on the left hand side of the compound assignment.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ConditionalExpressionTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ConditionalExpressionTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ConditionalExpressionTree extends ExpressionTree {
     /**
      * Returns the condition.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ContinueTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ContinueTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -42,7 +42,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ContinueTree extends StatementTree {
     /**
      * Returns the label for this {@code continue} statement.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/DoWhileLoopTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/DoWhileLoopTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface DoWhileLoopTree extends StatementTree {
     /**
      * Returns the condition of the loop.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/EmptyStatementTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/EmptyStatementTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,5 +39,4 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface EmptyStatementTree extends StatementTree {}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/EnhancedForLoopTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/EnhancedForLoopTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface EnhancedForLoopTree extends StatementTree {
     /**
      * Returns the control variable for the loop.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ErroneousTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ErroneousTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ErroneousTree extends ExpressionTree {
     /**
      * Returns any trees that were saved in this node.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ExpressionStatementTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ExpressionStatementTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ExpressionStatementTree extends StatementTree {
     /**
      * Returns the expression constituting this statement.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ExpressionTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ExpressionTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,5 +35,4 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ExpressionTree extends Tree {}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ForLoopTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ForLoopTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -42,7 +42,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ForLoopTree extends StatementTree {
     /**
      * Returns any initializers of the {@code for} statement.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/IdentifierTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/IdentifierTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface IdentifierTree extends ExpressionTree {
     /**
      * Returns the name of the identifier.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/IfTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/IfTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface IfTree extends StatementTree {
     /**
      * Returns the condition of the if-statement.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ImportTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ImportTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ImportTree extends Tree {
     /**
      * Returns true if this is a static import declaration.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/InstanceOfTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/InstanceOfTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface InstanceOfTree extends ExpressionTree {
     /**
      * Returns the expression to be tested.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/IntersectionTypeTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/IntersectionTypeTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -34,7 +34,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface IntersectionTypeTree extends Tree {
     /**
      * Returns the bounds of the type.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/LabeledStatementTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/LabeledStatementTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface LabeledStatementTree extends StatementTree {
     /**
      * Returns the label.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/LambdaExpressionTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/LambdaExpressionTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  *   (x,y)-> { return x + y; }
  * }</pre>
  */
-@jdk.Exported
 public interface LambdaExpressionTree extends ExpressionTree {
 
     /**
@@ -47,7 +46,6 @@
      * <li> statement lambdas, whose body is a block
      * </ul>
      */
-    @jdk.Exported
     public enum BodyKind {
         /** enum constant for expression lambdas */
         EXPRESSION,
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/LineMap.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/LineMap.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,7 +31,6 @@
  *
  * @since 1.6
  */
-@jdk.Exported
 public interface LineMap {
     /**
      * Finds the start position of a line.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/LiteralTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/LiteralTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface LiteralTree extends ExpressionTree {
     /**
      * Returns the value of the literal expression.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/MemberReferenceTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/MemberReferenceTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,14 +39,12 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface MemberReferenceTree extends ExpressionTree {
 
     /**
      * There are two kinds of member references: (i) method references and
      * (ii) constructor references
      */
-    @jdk.Exported
     public enum ReferenceMode {
         /** enum constant for method references. */
         INVOKE,
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/MemberSelectTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/MemberSelectTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface MemberSelectTree extends ExpressionTree {
     /**
      * Returns the expression for which a member is to be selected.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/MethodInvocationTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/MethodInvocationTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,7 +43,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface MethodInvocationTree extends ExpressionTree {
     /**
      * Returns the type arguments for this method invocation.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/MethodTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/MethodTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -46,7 +46,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface MethodTree extends Tree {
     /**
      * Returns the modifiers, including any annotations for the method being declared.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ModifiersTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ModifiersTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ModifiersTree extends Tree {
     /**
      * Returns the flags in this modifiers tree.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/NewArrayTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/NewArrayTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,7 +43,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface NewArrayTree extends ExpressionTree {
     /**
      * Returns the base type of the expression.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/NewClassTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/NewClassTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -48,7 +48,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface NewClassTree extends ExpressionTree {
     /**
      * Returns the enclosing expression, or {@code null} if none.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/PackageTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/PackageTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,9 +33,8 @@
  * @jls sections 7.3, and 7.4
  *
  * @author Paul Govereau
- * @since 1.9
+ * @since 9
  */
-@jdk.Exported
 public interface PackageTree extends Tree {
     /**
      * Returns the annotations associated with this package declaration.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ParameterizedTypeTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ParameterizedTypeTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ParameterizedTypeTree extends Tree {
     /**
      * Returns the base type.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ParenthesizedTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ParenthesizedTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ParenthesizedTree extends ExpressionTree {
     /**
      * Returns the expression within the parentheses.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/PrimitiveTypeTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/PrimitiveTypeTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface PrimitiveTypeTree extends Tree {
     /**
      * Returns the kind of this primitive type.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ReturnTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ReturnTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ReturnTree extends StatementTree {
     /**
      * Returns the expression to be returned.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/Scope.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/Scope.java	Fri Jan 15 09:15:33 2016 +0100
@@ -48,7 +48,6 @@
  *
  * @since 1.6
  */
-@jdk.Exported
 public interface Scope {
     /**
      * Returns the enclosing scope.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/StatementTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/StatementTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,5 +35,4 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface StatementTree extends Tree {}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/SwitchTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/SwitchTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,7 +43,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface SwitchTree extends StatementTree {
     /**
      * Returns the expression for the {@code switch} statement.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/SynchronizedTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/SynchronizedTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -40,7 +40,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface SynchronizedTree extends StatementTree {
     /**
      * Returns the expression on which to synchronize.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ThrowTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/ThrowTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface ThrowTree extends StatementTree {
     /**
      * Returns the expression to be thrown.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,13 +39,11 @@
  *
  * @since 1.6
  */
-@jdk.Exported
 public interface Tree {
 
     /**
      * Enumerates all kinds of trees.
      */
-    @jdk.Exported
     public enum Kind {
         /**
          * Used for instances of {@link AnnotatedTypeTree}
@@ -212,7 +210,7 @@
 
         /**
          * Used for instances of {@link PackageTree}.
-         * @since 1.9
+         * @since 9
          */
         PACKAGE(PackageTree.class),
 
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java	Fri Jan 15 09:15:33 2016 +0100
@@ -56,7 +56,6 @@
  *
  * @since 1.6
  */
-@jdk.Exported
 public interface TreeVisitor<R,P> {
     /**
      * Visits an AnnotatedTypeTree node.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/TryTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/TryTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -45,7 +45,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface TryTree extends StatementTree {
     /**
      * Returns the block of the {@code try} statement.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/TypeCastTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/TypeCastTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface TypeCastTree extends ExpressionTree {
     /**
      * Returns the target type of the cast.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/TypeParameterTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/TypeParameterTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -46,7 +46,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface TypeParameterTree extends Tree {
     /**
      * Returns the name of the type parameter.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/UnaryTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/UnaryTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -42,7 +42,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface UnaryTree extends ExpressionTree {
     /**
      * Returns the expression that is the operand of the unary operator.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/UnionTypeTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/UnionTypeTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.7
  */
-@jdk.Exported
 public interface UnionTypeTree extends Tree {
     /**
      * Returns the alternative type expressions.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/VariableTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/VariableTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -42,7 +42,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface VariableTree extends StatementTree {
     /**
      * Returns the modifiers, including any annotations, on the declaration.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/WhileLoopTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/WhileLoopTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface WhileLoopTree extends StatementTree {
     /**
      * Returns the condition of the loop.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/WildcardTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/WildcardTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -44,7 +44,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface WildcardTree extends Tree {
     /**
      * Returns the bound of the wildcard.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/tree/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,5 +31,4 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 package com.sun.source.tree;
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/DocSourcePositions.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/DocSourcePositions.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface DocSourcePositions extends SourcePositions {
 
     /**
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/DocTreePath.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/DocTreePath.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public class DocTreePath implements Iterable<DocTree> {
     /**
      * Returns a documentation tree path for a tree node within a compilation unit,
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/DocTreePathScanner.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/DocTreePathScanner.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public class DocTreePathScanner<R, P> extends DocTreeScanner<R, P> {
     /**
      * Scans a tree from a position identified by a tree path.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/DocTreeScanner.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/DocTreeScanner.java	Fri Jan 15 09:15:33 2016 +0100
@@ -68,7 +68,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public class DocTreeScanner<R,P> implements DocTreeVisitor<R,P> {
 
     /**
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/DocTrees.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/DocTrees.java	Fri Jan 15 09:15:33 2016 +0100
@@ -43,7 +43,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public abstract class DocTrees extends Trees {
     /**
      * Returns a DocTrees object for a given CompilationTask.
@@ -73,7 +72,7 @@
      * Returns {@code null} if none has been specified.
      * @return the break iterator
      *
-     * @since 1.9
+     * @since 9
      */
     public abstract BreakIterator getBreakIterator();
 
@@ -91,7 +90,7 @@
      * @param e an element whose documentation is required
      * @return the doc comment tree
      *
-     * @since 1.9
+     * @since 9
      */
     public abstract DocCommentTree getDocCommentTree(Element e);
 
@@ -105,7 +104,7 @@
      * @param fileObject the content container
      * @return the doc comment tree
      *
-     * @since 1.9
+     * @since 9
      */
     public abstract DocCommentTree getDocCommentTree(FileObject fileObject);
 
@@ -122,7 +121,7 @@
      * @return the doc comment tree
      * @throws java.io.IOException if an exception occurs
      *
-     * @since 1.9
+     * @since 9
      */
     public abstract DocCommentTree getDocCommentTree(Element e, String relativePath) throws IOException;
 
@@ -141,7 +140,7 @@
      * @param list the DocTree list to interrogate
      * @return the first sentence
      *
-     * @since 1.9
+     * @since 9
      */
     public abstract List<DocTree> getFirstSentence(List<? extends DocTree> list);
 
@@ -173,7 +172,7 @@
      * @param breakiterator a break iterator or {@code null} to specify the default
      *                      sentence breaker
      *
-     * @since 1.9
+     * @since 9
      */
     public abstract void setBreakIterator(BreakIterator breakiterator);
 }
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/JavacTask.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/JavacTask.java	Fri Jan 15 09:15:33 2016 +0100
@@ -48,7 +48,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public abstract class JavacTask implements CompilationTask {
 
     /**
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/Plugin.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/Plugin.java	Fri Jan 15 09:15:33 2016 +0100
@@ -49,7 +49,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public interface Plugin {
     /**
      * Returns the user-friendly name of this plug-in.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/SimpleDocTreeVisitor.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/SimpleDocTreeVisitor.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,7 +38,6 @@
  *
  * @since 1.8
  */
-@jdk.Exported
 public class SimpleDocTreeVisitor<R,P> implements DocTreeVisitor<R, P> {
     /**
      * The default value, returned by the {@link #defaultAction default action}.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  * @author Peter von der Ah&eacute;
  * @since 1.6
  */
-@jdk.Exported
 public class SimpleTreeVisitor <R,P> implements TreeVisitor<R,P> {
     /**
      * The default value, returned by the {@link #defaultAction default action}.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/SourcePositions.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/SourcePositions.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  * @author Peter von der Ah&eacute;
  * @since 1.6
  */
-@jdk.Exported
 public interface SourcePositions {
 
     /**
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/TaskEvent.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/TaskEvent.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,14 +36,12 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public final class TaskEvent
 {
     /**
      * Kind of task event.
      * @since 1.6
      */
-    @jdk.Exported
     public enum Kind {
         /**
          * For events related to the parsing of a file.
@@ -74,7 +72,7 @@
          * This event is not sent when using {@link JavacTask#parse()},
          * {@link JavacTask#analyze()} or {@link JavacTask#generate()}.
          *
-         * @since 1.9
+         * @since 9
          */
         COMPILATION,
     }
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/TaskListener.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/TaskListener.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public interface TaskListener
 {
     /**
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/TreePath.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/TreePath.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public class TreePath implements Iterable<Tree> {
     /**
      * Returns a tree path for a tree node within a compilation unit,
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/TreePathScanner.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/TreePathScanner.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,7 +38,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public class TreePathScanner<R, P> extends TreeScanner<R, P> {
 
     /**
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java	Fri Jan 15 09:15:33 2016 +0100
@@ -74,7 +74,6 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 public class TreeScanner<R,P> implements TreeVisitor<R,P> {
 
     /**
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/Trees.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/Trees.java	Fri Jan 15 09:15:33 2016 +0100
@@ -51,7 +51,6 @@
  *
  * @author Peter von der Ah&eacute;
  */
-@jdk.Exported
 public abstract class Trees {
     /**
      * Returns a Trees object for a given CompilationTask.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,5 +30,4 @@
  * @author Jonathan Gibbons
  * @since 1.6
  */
-@jdk.Exported
 package com.sun.source.util;
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/Main.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/Main.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,7 +31,6 @@
  * The programmatic interface for the Java Programming Language
  * compiler, javac.
  */
-@jdk.Exported
 public class Main {
 
     /** Main entry point for the launcher.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/platform/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/platform/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,5 +31,4 @@
  *  This code and its internal interfaces are subject to change or
  *  deletion without notice.</b>
  */
-@jdk.Exported(false)
 package com.sun.tools.javac.platform;
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CleanProperties.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CleanProperties.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -66,7 +66,6 @@
     public boolean transform(CompilationService sjavac,
                              Map<String,Set<URI>> pkgSrcs,
                              Set<URI>             visibleSrcs,
-                             Map<URI,Set<String>> visibleClasses,
                              Map<String,Set<String>> oldPackageDependencies,
                              URI destRoot,
                              Map<String,Set<URI>>    packageArtifacts,
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CompileJavaPackages.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CompileJavaPackages.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -80,7 +80,6 @@
     public boolean transform(final CompilationService sjavac,
                              Map<String,Set<URI>> pkgSrcs,
                              final Set<URI>             visibleSources,
-                             final Map<URI,Set<String>> visibleClasses,
                              Map<String,Set<String>> oldPackageDependents,
                              URI destRoot,
                              final Map<String,Set<URI>>    packageArtifacts,
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CompileProperties.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CompileProperties.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -74,7 +74,6 @@
     public boolean transform(CompilationService compilationService,
                              Map<String,Set<URI>> pkgSrcs,
                              Set<URI>             visibleSrcs,
-                             Map<URI,Set<String>> visibleClasses,
                              Map<String,Set<String>> oldPackageDependents,
                              URI destRoot,
                              Map<String,Set<URI>>    packageArtifacts,
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CopyFile.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/CopyFile.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -61,7 +61,6 @@
     public boolean transform(CompilationService compilationService,
                              Map<String,Set<URI>> pkgSrcs,
                              Set<URI> visibleSrcs,
-                             Map<URI,Set<String>> visibleClasses,
                              Map<String,Set<String>> oldPackageDependents,
                              URI destRoot,
                              Map<String,Set<URI>>    packageArtifacts,
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/JavacState.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/JavacState.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -120,13 +120,6 @@
     // ones that -sourcepath is allowed to see.
     Set<URI> visibleSrcs;
 
-    // Visible classes for linking. These are the only
-    // ones that -classpath is allowed to see.
-    // It maps from a classpath root to the set of visible classes for that root.
-    // If the set is empty, then all classes are visible for that root.
-    // It can also map from a jar file to the set of visible classes for that jar file.
-    Map<URI,Set<String>> visibleClasses;
-
     // Setup transform that always exist.
     private CompileJavaPackages compileJavaPackages = new CompileJavaPackages();
 
@@ -214,16 +207,6 @@
     }
 
     /**
-     * Specify which classes are visible to the compiler through -classpath.
-     */
-    public void setVisibleClasses(Map<String,Source> vs) {
-        visibleSrcs = new HashSet<>();
-        for (String s : vs.keySet()) {
-            Source src = vs.get(s);
-            visibleSrcs.add(src.file().toURI());
-        }
-    }
-    /**
      * Returns true if this is an incremental build.
      */
     public boolean isIncremental() {
@@ -820,7 +803,6 @@
             boolean r = t.transform(sjavac,
                                     srcs,
                                     visibleSrcs,
-                                    visibleClasses,
                                     prev.dependents(),
                                     outputDir.toURI(),
                                     packageArtifacts,
@@ -954,8 +936,7 @@
             }
         }
         // Read in the file and create another set of filenames with full paths.
-        try {
-            BufferedReader in = new BufferedReader(new FileReader(makefileSourceList));
+        try(BufferedReader in = new BufferedReader(new FileReader(makefileSourceList))) {
             for (;;) {
                 String l = in.readLine();
                 if (l==null) break;
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/Transformer.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac/Transformer.java	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -86,7 +86,6 @@
     boolean transform(CompilationService sjavac,
                       Map<String,Set<URI>> pkgSrcs,
                       Set<URI>             visibleSources,
-                      Map<URI,Set<String>> visibleClasses,
                       Map<String,Set<String>> oldPackageDependencies,
                       URI destRoot,
                       Map<String,Set<URI>>    packageArtifacts,
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/javadoc/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/javadoc/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -144,5 +144,4 @@
 @see com.sun.javadoc.Doclet
 @see com.sun.javadoc.RootDoc
 */
-@jdk.Exported
 package com.sun.javadoc;
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/markup/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/markup/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,5 +31,4 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
  */
-@jdk.Exported(false)
 package com.sun.tools.doclets.formats.html.markup;
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,5 +36,4 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
-@jdk.Exported(false)
 package com.sun.tools.doclets.formats.html;
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/builders/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/builders/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,5 +37,4 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
-@jdk.Exported(false)
 package com.sun.tools.doclets.internal.toolkit.builders;
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -53,5 +53,4 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
-@jdk.Exported(false)
 package com.sun.tools.doclets.internal.toolkit;
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -48,5 +48,4 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
-@jdk.Exported(false)
 package com.sun.tools.doclets.internal.toolkit.taglets;
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/util/links/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/util/links/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,5 +31,4 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
-@jdk.Exported(false)
 package com.sun.tools.doclets.internal.toolkit.util.links;
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/util/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/util/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,5 +32,4 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
-@jdk.Exported(false)
 package com.sun.tools.doclets.internal.toolkit.util;
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,5 +32,4 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
-@jdk.Exported(false)
 package com.sun.tools.doclets;
--- a/langtools/src/jdk.jdeps/share/classes/com/sun/tools/classfile/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.jdeps/share/classes/com/sun/tools/classfile/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,5 +33,4 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
-@jdk.Exported(false)
 package com.sun.tools.classfile;
--- a/langtools/src/jdk.jdeps/share/classes/com/sun/tools/javap/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/src/jdk.jdeps/share/classes/com/sun/tools/javap/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,5 +31,4 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
-@jdk.Exported(false)
 package com.sun.tools.javap;
--- a/langtools/test/tools/javac/proprietary/WarnImport.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/test/tools/javac/proprietary/WarnImport.java	Fri Jan 15 09:15:33 2016 +0100
@@ -9,6 +9,6 @@
  * @compile/fail/ref=WarnImport.out -XDrawDiagnostics  -Werror -Xlint:none WarnImport.java
  */
 
-import sun.misc.VM;
+import sun.security.x509.X509CertInfo;
 
 public class WarnImport {}
--- a/langtools/test/tools/javac/proprietary/WarnImport.out	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/test/tools/javac/proprietary/WarnImport.out	Fri Jan 15 09:15:33 2016 +0100
@@ -1,4 +1,4 @@
-WarnImport.java:12:16: compiler.warn.sun.proprietary: sun.misc.VM
+WarnImport.java:12:25: compiler.warn.sun.proprietary: sun.security.x509.X509CertInfo
 - compiler.err.warnings.and.werror
 1 error
 1 warning
--- a/langtools/test/tools/javac/proprietary/WarnMethod.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/test/tools/javac/proprietary/WarnMethod.java	Fri Jan 15 09:15:33 2016 +0100
@@ -3,7 +3,7 @@
  * @bug     6380059
  * @summary Emit warnings for proprietary packages in the boot class path
  * @author  Peter von der Ah\u00e9
- * @modules java.base/sun.misc
+ * @modules java.base/sun.security.x509
  * @compile WarnMethod.java
  * @compile/fail/ref=WarnMethod.out -XDrawDiagnostics  -Werror WarnMethod.java
  * @compile/fail/ref=WarnMethod.out -XDrawDiagnostics  -Werror -nowarn WarnMethod.java
@@ -12,6 +12,6 @@
 
 public class WarnMethod {
     public static void main(String... args) {
-        System.out.println(sun.misc.VM.getFinalRefCount());
+        System.out.println(sun.security.x509.OIDMap.getOID(""));
     }
 }
--- a/langtools/test/tools/javac/proprietary/WarnMethod.out	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/test/tools/javac/proprietary/WarnMethod.out	Fri Jan 15 09:15:33 2016 +0100
@@ -1,4 +1,4 @@
-WarnMethod.java:15:36: compiler.warn.sun.proprietary: sun.misc.VM
+WarnMethod.java:15:45: compiler.warn.sun.proprietary: sun.security.x509.OIDMap
 - compiler.err.warnings.and.werror
 1 error
 1 warning
--- a/langtools/test/tools/javac/proprietary/WarnStaticImport.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/test/tools/javac/proprietary/WarnStaticImport.java	Fri Jan 15 09:15:33 2016 +0100
@@ -9,6 +9,6 @@
  * @compile/fail/ref=WarnStaticImport.out -XDrawDiagnostics  -Werror -Xlint:none WarnStaticImport.java
  */
 
-import static sun.misc.VM.getFinalRefCount;
+import static sun.security.x509.OIDMap.getOID;
 
 public class WarnStaticImport {}
--- a/langtools/test/tools/javac/proprietary/WarnStaticImport.out	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/test/tools/javac/proprietary/WarnStaticImport.out	Fri Jan 15 09:15:33 2016 +0100
@@ -1,4 +1,4 @@
-WarnStaticImport.java:12:23: compiler.warn.sun.proprietary: sun.misc.VM
+WarnStaticImport.java:12:32: compiler.warn.sun.proprietary: sun.security.x509.OIDMap
 - compiler.err.warnings.and.werror
 1 error
 1 warning
--- a/langtools/test/tools/javac/tree/NoPrivateTypesExported.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/test/tools/javac/tree/NoPrivateTypesExported.java	Fri Jan 15 09:15:33 2016 +0100
@@ -90,8 +90,7 @@
             "java.text.",
             "java.util.",
             "javax.lang.model.",
-            "javax.annotation.processing.SupportedSourceVersion",
-            "jdk.Exported"
+            "javax.annotation.processing.SupportedSourceVersion"
         ));
         Set<String> javaxToolsProcessingAcceptableTemp = new HashSet<>();
         javaxToolsProcessingAcceptableTemp.addAll(javaxLangModelAcceptable);
--- a/langtools/test/tools/javac/util/context/T7021650.java	Tue Jan 12 17:03:06 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,223 +0,0 @@
-/*
- * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
- * @test
- * @bug 7021650
- * @summary Fix Context issues
- * @library /tools/javac/lib
- * @modules jdk.compiler/com.sun.tools.javac.comp
- *          jdk.compiler/com.sun.tools.javac.file
- *          jdk.compiler/com.sun.tools.javac.main
- *          jdk.compiler/com.sun.tools.javac.processing
- *          jdk.compiler/com.sun.tools.javac.util
- * @build JavacTestingAbstractProcessor T7021650
- * @run main T7021650
- */
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import javax.annotation.processing.*;
-import javax.lang.model.element.*;
-import javax.tools.*;
-
-import com.sun.tools.javac.comp.Attr;
-import com.sun.tools.javac.file.JavacFileManager;
-import com.sun.tools.javac.main.Main;
-import com.sun.tools.javac.processing.JavacProcessingEnvironment;
-import com.sun.tools.javac.util.Context;
-
-public class T7021650 extends JavacTestingAbstractProcessor {
-    public static void main(String... args) throws Exception {
-        new T7021650().run();
-    }
-
-    static File testSrc = new File(System.getProperty("test.src"));
-    static final int MAX_ROUNDS = 3;
-
-    /**
-     * Perform a compilation with custom factories registered in the context,
-     * and verify that corresponding objects are created in each round.
-     */
-    void run() throws Exception {
-        Counter myDemoCounter = new Counter();
-        Counter myAttrCounter = new Counter();
-
-        Context context = new Context();
-        // Use a custom file manager which creates classloaders for annotation
-        // processors with a sensible delegation parent, so that all instances
-        // of test classes come from the same class loader. This is important
-        // because the test performs class checks on the instances of classes
-        // found in the context for each round or processing.
-        context.put(JavaFileManager.class, new Context.Factory<JavaFileManager>() {
-            public JavaFileManager make(Context c) {
-                return new JavacFileManager(c, true, null) {
-                    @Override
-                    protected ClassLoader getClassLoader(URL[] urls) {
-                        return new URLClassLoader(urls, T7021650.class.getClassLoader());
-                    }
-                };
-            }
-        });
-
-        MyDemo.preRegister(context, myDemoCounter);
-        MyAttr.preRegister(context, myAttrCounter);
-
-        String[] args = {
-            "-d", ".",
-            "-processor", T7021650.class.getName(),
-            "-XprintRounds",
-            new File(testSrc, T7021650.class.getName() + ".java").getPath()
-        };
-
-        compile(context, args);
-
-        // the services should only be created once in the current scheme:
-        checkEqual("demoCounter", myDemoCounter.count, 1);
-        checkEqual("myAttrCounter", myAttrCounter.count, 1);
-    }
-
-    void compile(Context context, String... args) throws Exception {
-        StringWriter sw = new StringWriter();
-        PrintWriter pw = new PrintWriter(sw);
-        Main m = new Main("javac", pw);
-        Main.Result res = m.compile(args, context);
-        pw.close();
-        String out = sw.toString();
-        if (!out.isEmpty())
-            System.err.println(out);
-        if (!res.isOK())
-            throw new Exception("compilation failed unexpectedly: result=" + res);
-    }
-
-    void checkEqual(String label, int found, int expect) throws Exception {
-        if (found != expect)
-            throw new Exception("unexpected value for " + label
-                    + ": expected " + expect
-                    + ": found " + found);
-    }
-
-    //---------------
-
-    /*
-     * A custom class unknown to javac but nonetheless registered in the context.
-     */
-    static class Demo {
-        Demo(Context c) {
-            c.put(Demo.class, this);
-        }
-
-        static Demo instance(Context context) {
-            return context.get(Demo.class);
-        }
-    }
-
-    static class MyDemo extends Demo {
-        static void preRegister(Context context, final Counter counter) {
-            context.put(Demo.class, new Context.Factory<Demo>() {
-                public Demo make(Context c) {
-                    counter.count++;
-                    return new MyDemo(c);
-                }
-            });
-        }
-
-        MyDemo(Context c) {
-            super(c);
-        }
-    }
-
-    /**
-     * A custom version of a standard javac component.
-     */
-    static class MyAttr extends Attr {
-        static void preRegister(Context context, final Counter counter) {
-            context.put(attrKey, new Context.Factory<Attr>() {
-                public Attr make(Context c) {
-                    counter.count++;
-                    return new MyAttr(c);
-                }
-            });
-        }
-
-        MyAttr(Context c) {
-            super(c);
-        }
-    }
-
-    static class Counter {
-        int count;
-    }
-
-    //---------------
-
-    int round = 0;
-
-    @Override
-    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
-        round++;
-
-        Context context = ((JavacProcessingEnvironment) processingEnv).getContext();
-
-        // verify items in context as expected
-        check("Demo", Demo.instance(context), MyDemo.class);
-        check("Attr", Attr.instance(context), MyAttr.class);
-
-        // For a few rounds, generate new source files, so that we can check whether
-        // values in the context are correctly handled in subsequent processing rounds
-        if (round <= MAX_ROUNDS) {
-            String pkg = "p";
-            String currClass = "Gen" + round;
-            String curr = pkg + "." + currClass;
-            String next = (pkg + ".Gen" + (round + 1));
-            StringBuilder text = new StringBuilder();
-            text.append("package ").append(pkg).append(";\n");
-            text.append("public class ").append(currClass).append(" {\n");
-            if (round < MAX_ROUNDS)
-                text.append("    ").append(next).append(" x;\n");
-            text.append("}\n");
-
-            try {
-                JavaFileObject fo = filer.createSourceFile(curr);
-                Writer out = fo.openWriter();
-                try {
-                    out.write(text.toString());
-                } finally {
-                    out.close();
-                }
-            } catch (IOException e) {
-                throw new Error(e);
-            }
-        }
-
-        return true;
-    }
-
-    void check(String label, Object o, Class<?> clazz) {
-        if (o == null)
-            throw new IllegalStateException(label + ": no item found");
-        if (!clazz.isAssignableFrom(o.getClass()))
-            throw new IllegalStateException(label + ": unexpected class: " + o.getClass());
-    }
-}
--- a/langtools/test/tools/jdeps/m/Gee.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/langtools/test/tools/jdeps/m/Gee.java	Fri Jan 15 09:15:33 2016 +0100
@@ -26,7 +26,7 @@
 
 class Gee extends g.G {
     public sun.security.x509.X509CertInfo cert;
-    public com.sun.tools.classfile.ClassFile cf;     // @jdk.Exported(false)
-    public com.sun.source.tree.BinaryTree tree;      // @jdk.Exported
-    public com.sun.management.ThreadMXBean mxbean;   // @jdk.Exported on package-info
+    public com.sun.tools.classfile.ClassFile cf;     // not exported
+    public com.sun.source.tree.BinaryTree tree;      // exported
+    public com.sun.management.ThreadMXBean mxbean;   // exported
 }
--- a/make/common/NON_CORE_PKGS.gmk	Tue Jan 12 17:03:06 2016 +0300
+++ b/make/common/NON_CORE_PKGS.gmk	Fri Jan 15 09:15:33 2016 +0100
@@ -79,8 +79,7 @@
 
 TREEAPI_PKGS = com.sun.source.doctree \
     com.sun.source.tree \
-    com.sun.source.util \
-    jdk
+    com.sun.source.util
 
 NASHORNAPI_PKGS = jdk.nashorn.api.scripting \
     jdk.nashorn.api.tree
--- a/make/common/NativeCompilation.gmk	Tue Jan 12 17:03:06 2016 +0300
+++ b/make/common/NativeCompilation.gmk	Fri Jan 15 09:15:33 2016 +0100
@@ -783,13 +783,13 @@
 
     $1_LD_OBJ_ARG := $$($1_ALL_OBJS)
 
-    # If there are many object files, use an @-file.
+    # If there are many object files, use an @-file...
     ifneq ($$(word 17, $$($1_ALL_OBJS)), )
       $1_OBJ_FILE_LIST := $$($1_OBJECT_DIR)/_$1_objectfilenames.txt
-      ifneq ($(TOOLCHAIN_TYPE),solstudio)
+      ifneq ($(COMPILER_COMMAND_FILE_FLAG),)
         $1_LD_OBJ_ARG := $(COMPILER_COMMAND_FILE_FLAG)$$($1_OBJ_FILE_LIST)
       else
-        # The solstudio linker does not support @-files.
+        # ...except for toolchains which don't support them.
         $1_LD_OBJ_ARG := `cat $$($1_OBJ_FILE_LIST)`
       endif
     endif
--- a/modules.xml	Tue Jan 12 17:03:06 2016 +0300
+++ b/modules.xml	Fri Jan 15 09:15:33 2016 +0100
@@ -205,9 +205,6 @@
       <name>javax.security.cert</name>
     </export>
     <export>
-      <name>jdk</name>
-    </export>
-    <export>
       <name>jdk.net</name>
     </export>
     <export>
@@ -233,9 +230,11 @@
       <to>java.logging</to>
       <to>java.management</to>
       <to>java.naming</to>
+      <to>java.rmi</to>
       <to>java.security.jgss</to>
       <to>java.sql</to>
       <to>java.xml</to>
+      <to>jdk.charsets</to>
       <to>jdk.management.resource</to>
       <to>jdk.scripting.nashorn</to>
     </export>
--- a/nashorn/.hgtags	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/.hgtags	Fri Jan 15 09:15:33 2016 +0100
@@ -333,3 +333,4 @@
 2beaef2b6a880c0bff8c9f57ffca33477d647f8b jdk-9+97
 68a36216f70c0de4c7e36f8978995934fc72ec03 jdk-9+98
 74ddd1339c57cf2c2a13e34e1760006c2e54d1fc jdk-9+99
+da397aea8adad7e6f743b60bfe0c415fc8508df5 jdk-9+100
--- a/nashorn/src/jdk.dynalink/share/classes/jdk/dynalink/beans/ClassLinker.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.dynalink/share/classes/jdk/dynalink/beans/ClassLinker.java	Fri Jan 15 09:15:33 2016 +0100
@@ -102,7 +102,7 @@
         setPropertyGetter("static", FOR_CLASS, ValidationType.EXACT_CLASS);
     }
 
-    private static final MethodHandle FOR_CLASS = new Lookup(MethodHandles.lookup()).findStatic(StaticClass.class,
+    private static final MethodHandle FOR_CLASS = Lookup.PUBLIC.findStatic(StaticClass.class,
             "forClass", MethodType.methodType(StaticClass.class, Class.class));
 
 }
--- a/nashorn/src/jdk.dynalink/share/classes/jdk/dynalink/beans/OverloadedDynamicMethod.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.dynalink/share/classes/jdk/dynalink/beans/OverloadedDynamicMethod.java	Fri Jan 15 09:15:33 2016 +0100
@@ -112,8 +112,7 @@
     /**
      * Holds a list of all methods.
      */
-    private final LinkedList<SingleDynamicMethod> methods;
-    private final ClassLoader classLoader;
+    private final LinkedList<SingleDynamicMethod> methods = new LinkedList<>();
 
     /**
      * Creates a new overloaded dynamic method.
@@ -122,13 +121,7 @@
      * @param name the name of the method
      */
     OverloadedDynamicMethod(final Class<?> clazz, final String name) {
-        this(new LinkedList<SingleDynamicMethod>(), clazz.getClassLoader(), getClassAndMethodName(clazz, name));
-    }
-
-    private OverloadedDynamicMethod(final LinkedList<SingleDynamicMethod> methods, final ClassLoader classLoader, final String name) {
-        super(name);
-        this.methods = methods;
-        this.classLoader = classLoader;
+        super(getClassAndMethodName(clazz, name));
     }
 
     @Override
@@ -288,10 +281,6 @@
         return b.toString();
     };
 
-    ClassLoader getClassLoader() {
-        return classLoader;
-    }
-
     private static boolean isApplicableDynamically(final LinkerServices linkerServices, final MethodType callSiteType,
             final SingleDynamicMethod m) {
         final MethodType methodType = m.getMethodType();
--- a/nashorn/src/jdk.dynalink/share/classes/jdk/dynalink/beans/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.dynalink/share/classes/jdk/dynalink/beans/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -85,5 +85,4 @@
  * Contains the linker for ordinary Java objects.
  * @since 1.9
  */
-@jdk.Exported
 package jdk.dynalink.beans;
--- a/nashorn/src/jdk.dynalink/share/classes/jdk/dynalink/linker/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.dynalink/share/classes/jdk/dynalink/linker/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -113,5 +113,4 @@
  * </p>
  * @since 1.9
  */
-@jdk.Exported
 package jdk.dynalink.linker;
--- a/nashorn/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.dynalink/share/classes/jdk/dynalink/linker/support/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -89,5 +89,4 @@
  * </p>
  * @since 1.9
  */
-@jdk.Exported
 package jdk.dynalink.linker.support;
--- a/nashorn/src/jdk.dynalink/share/classes/jdk/dynalink/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.dynalink/share/classes/jdk/dynalink/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -273,5 +273,4 @@
  * from B will get a chance to link the call site in A when it encounters the
  * object from B.
  */
-@jdk.Exported
 package jdk.dynalink;
--- a/nashorn/src/jdk.dynalink/share/classes/jdk/dynalink/support/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.dynalink/share/classes/jdk/dynalink/support/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -87,5 +87,4 @@
  * </p>
  * @since 1.9
  */
-@jdk.Exported
 package jdk.dynalink.support;
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/AbstractJSObject.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/AbstractJSObject.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  *
  * @since 1.8u40
  */
-@jdk.Exported
 public abstract class AbstractJSObject implements JSObject {
     /**
      * Call this object as a JavaScript function. This is equivalent to
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ClassFilter.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ClassFilter.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,7 +31,6 @@
  *
  * @since 1.8u40
  */
-@jdk.Exported
 public interface ClassFilter {
      /**
       * Should the Java class of the specified name be exposed to scripts?
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/JSObject.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/JSObject.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  *
  * @since 1.8u40
  */
-@jdk.Exported
 public interface JSObject {
     /**
      * Call this object as a JavaScript function. This is equivalent to
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -44,7 +44,6 @@
  *
  * @since 1.8u40
  */
-@jdk.Exported
 @SuppressWarnings("serial")
 public abstract class NashornException extends RuntimeException {
     // script file name
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngine.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngine.java	Fri Jan 15 09:15:33 2016 +0100
@@ -69,7 +69,6 @@
  *
  * @since 1.8u40
  */
-@jdk.Exported
 public final class NashornScriptEngine extends AbstractScriptEngine implements Compilable, Invocable {
     /**
      * Key used to associate Nashorn global object mirror with arbitrary Bindings instance.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java	Fri Jan 15 09:15:33 2016 +0100
@@ -48,7 +48,6 @@
  *
  * @since 1.8u40
  */
-@jdk.Exported
 public final class NashornScriptEngineFactory implements ScriptEngineFactory {
     @Override
     public String getEngineName() {
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptObjectMirror.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptObjectMirror.java	Fri Jan 15 09:15:33 2016 +0100
@@ -60,7 +60,6 @@
  *
  * @since 1.8u40
  */
-@jdk.Exported
 public final class ScriptObjectMirror extends AbstractJSObject implements Bindings {
     private static AccessControlContext getContextAccCtxt() {
         final Permissions perms = new Permissions();
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptUtils.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptUtils.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  *
  * @since 1.8u40
  */
-@jdk.Exported
 public final class ScriptUtils {
     private ScriptUtils() {}
 
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/URLReader.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/URLReader.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  *
  * @since 1.8u40
  */
-@jdk.Exported
 public final class URLReader extends Reader {
     // underlying URL
     private final URL url;
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,5 +38,4 @@
  *
  * @since 1.8u40
  */
-@jdk.Exported
 package jdk.nashorn.api.scripting;
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ArrayAccessTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ArrayAccessTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface ArrayAccessTree extends ExpressionTree {
     /**
      * Returns the array that is accessed.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ArrayLiteralTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ArrayLiteralTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface ArrayLiteralTree extends ExpressionTree {
     /**
      * Returns the list of Array element expressions.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/AssignmentTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/AssignmentTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface AssignmentTree extends ExpressionTree {
     /**
      * Returns the left hand side (LHS) of this assignment.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/BinaryTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/BinaryTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface BinaryTree extends ExpressionTree {
     /**
      * Returns left hand side (LHS) of this binary expression.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/BlockTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/BlockTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface BlockTree extends StatementTree {
     /**
      * Returns the list of statements in this block.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/BreakTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/BreakTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface BreakTree extends GotoTree {
     /**
      * Label associated with this break statement. This is null
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/CaseTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/CaseTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface CaseTree extends Tree {
     /**
      * Case expression of this 'case' statement.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/CatchTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/CatchTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface CatchTree extends Tree {
     /**
      * Returns the catch parameter identifier of the exception caught.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/CompilationUnitTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/CompilationUnitTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface CompilationUnitTree extends Tree {
     /**
      * Return the list of source elements in this compilation unit.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/CompoundAssignmentTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/CompoundAssignmentTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface CompoundAssignmentTree extends ExpressionTree {
     /**
      * Returns the left hand side (LHS) of this assignment.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ConditionalExpressionTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ConditionalExpressionTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface ConditionalExpressionTree extends ExpressionTree {
     /**
      * Returns the condition expression of this ternary expression.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ConditionalLoopTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ConditionalLoopTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,7 +30,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface ConditionalLoopTree extends LoopTree {
     /**
      * Returns the condition expression of this 'loop' statement.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ContinueTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ContinueTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface ContinueTree extends GotoTree {
     /**
      * Label associated with this continue statement. This is null
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/DebuggerTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/DebuggerTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,6 +35,5 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface DebuggerTree extends StatementTree {
 }
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/Diagnostic.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/Diagnostic.java	Fri Jan 15 09:15:33 2016 +0100
@@ -42,7 +42,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface Diagnostic {
 
     /**
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/DiagnosticListener.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/DiagnosticListener.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,7 +30,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 @FunctionalInterface
 public interface DiagnosticListener {
     /**
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/DoWhileLoopTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/DoWhileLoopTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface DoWhileLoopTree extends ConditionalLoopTree {
     /**
      * Returns the condition expression of this do-while statement.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/EmptyStatementTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/EmptyStatementTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,5 +35,4 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface EmptyStatementTree extends StatementTree {}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ErroneousTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ErroneousTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,6 +30,5 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface ErroneousTree extends ExpressionTree {
 }
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ExpressionStatementTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ExpressionStatementTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface ExpressionStatementTree extends StatementTree {
     /**
      * Returns the expression of this expression statement.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ExpressionTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ExpressionTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,5 +31,4 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface ExpressionTree extends Tree {}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ForInLoopTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ForInLoopTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface ForInLoopTree extends LoopTree {
     /**
      * The for..in left hand side expression.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ForLoopTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ForLoopTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface ForLoopTree extends ConditionalLoopTree {
     /**
      * Returns the initializer expression of this 'for' statement.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/FunctionCallTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/FunctionCallTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface FunctionCallTree extends ExpressionTree {
     /**
      * Returns the function being called.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/FunctionDeclarationTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/FunctionDeclarationTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface FunctionDeclarationTree extends StatementTree {
     /**
      * Returns the name of the function being declared.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/FunctionExpressionTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/FunctionExpressionTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface FunctionExpressionTree extends ExpressionTree {
     /**
      * Returns the name of the function being declared.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/GotoTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/GotoTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,7 +33,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface GotoTree extends StatementTree {
     /**
      * Label associated with this goto statement. This is null
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/IdentifierTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/IdentifierTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface IdentifierTree extends ExpressionTree {
     /**
      * Returns the name of this identifier.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/IfTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/IfTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface IfTree extends StatementTree {
     /**
      * Returns the condition expression of this 'if' statement.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/InstanceOfTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/InstanceOfTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface InstanceOfTree extends ExpressionTree {
     /**
      * Returns the expression whose type is being checked.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/LabeledStatementTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/LabeledStatementTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface LabeledStatementTree extends StatementTree {
     /**
      * Returns the label associated with this statement.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/LineMap.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/LineMap.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,7 +31,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface LineMap {
     /**
      * Find the line containing a position; a line termination
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/LiteralTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/LiteralTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface LiteralTree extends ExpressionTree {
     /**
      * Returns the value of this literal.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/LoopTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/LoopTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,7 +30,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface LoopTree extends StatementTree {
     /**
      * Returns the statement contained in this 'loop' statement.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/MemberSelectTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/MemberSelectTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface MemberSelectTree extends ExpressionTree {
     /**
      * The object expression whose member is being selected.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/NewTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/NewTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -37,7 +37,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface NewTree extends ExpressionTree {
     /**
      * Returns the constructor expression of this 'new' expression.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ObjectLiteralTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ObjectLiteralTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -32,7 +32,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface ObjectLiteralTree extends ExpressionTree {
     /**
      * Returns the list of properties of this object literal.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ParenthesizedTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ParenthesizedTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface ParenthesizedTree extends ExpressionTree {
     /**
      * Returns the expression within the parenthesis.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/Parser.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/Parser.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,7 +38,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface Parser {
     /**
      * Parses the source file and returns compilation unit tree
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/PropertyTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/PropertyTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,7 +30,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface PropertyTree extends Tree {
     /**
      * Returns the name of this property.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/RegExpLiteralTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/RegExpLiteralTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -30,7 +30,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface RegExpLiteralTree extends Tree {
     /**
      * Regular expression pattern to match.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ReturnTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ReturnTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface ReturnTree extends StatementTree {
     /**
      * Returns the expression being returned. This is null if no value
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/StatementTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/StatementTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -31,6 +31,5 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface StatementTree extends Tree {
 }
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/SwitchTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/SwitchTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -39,7 +39,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface SwitchTree extends StatementTree {
     /**
      * Returns the expression on which this statement switches.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ThrowTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/ThrowTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface ThrowTree extends StatementTree {
     /**
      * Returns the expression being thrown.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/Tree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/Tree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -33,13 +33,11 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface Tree {
 
     /**
      * Enumerates all kinds of trees.
      */
-    @jdk.Exported
     public enum Kind {
         /**
          * Used for instances of {@link ArrayAccessTree}.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/TreeVisitor.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/TreeVisitor.java	Fri Jan 15 09:15:33 2016 +0100
@@ -53,7 +53,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface TreeVisitor<R,P> {
     /**
      * Visit assignment tree.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/TryTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/TryTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -41,7 +41,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface TryTree extends StatementTree {
     /**
      * Returns the 'try' block of this 'try' statement.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/UnaryTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/UnaryTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -38,7 +38,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface UnaryTree extends ExpressionTree {
     /**
      * Returns the expression operated by the unary operator.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/UnknownTreeException.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/UnknownTreeException.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public class UnknownTreeException extends RuntimeException {
 
     private static final long serialVersionUID = 1L;
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/VariableTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/VariableTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -35,7 +35,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface VariableTree extends StatementTree {
     /**
      * Returns the name of this variable.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/WhileLoopTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/WhileLoopTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface WhileLoopTree extends ConditionalLoopTree {
     /**
      * The condition expression of this 'while' statement.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/WithTree.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/WithTree.java	Fri Jan 15 09:15:33 2016 +0100
@@ -36,7 +36,6 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 public interface WithTree extends StatementTree {
     /**
      * The scope object expression for this 'with' statement.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/package-info.java	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/package-info.java	Fri Jan 15 09:15:33 2016 +0100
@@ -70,6 +70,5 @@
  *
  * @since 1.9
  */
-@jdk.Exported
 package jdk.nashorn.api.tree;
 
--- a/nashorn/test/script/basic/JDK-8134488.js	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/test/script/basic/JDK-8134488.js	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  * 
  * This code is free software; you can redistribute it and/or modify it
--- a/nashorn/test/script/basic/JDK-8134490.js	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/test/script/basic/JDK-8134490.js	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  * 
  * This code is free software; you can redistribute it and/or modify it
--- a/nashorn/test/script/basic/JDK-8134939.js	Tue Jan 12 17:03:06 2016 +0300
+++ b/nashorn/test/script/basic/JDK-8134939.js	Fri Jan 15 09:15:33 2016 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  * 
  * This code is free software; you can redistribute it and/or modify it