--- a/.hgtags Mon Jul 17 09:14:23 2017 -0700
+++ b/.hgtags Thu Jul 20 09:38:27 2017 -0700
@@ -436,3 +436,4 @@
e6d70017f5b9adbb2ec82d826973d0251800a3c3 jdk-10+12
9927a9f16738e240ab7014f0118f41e314ef8f99 jdk-10+13
9ef5029b247b4d940080417a287440bbdbab995b jdk-10+14
+878e216039322cb3f0ecbd0944642a2b4e2593f3 jdk-10+15
--- a/.hgtags-top-repo Mon Jul 17 09:14:23 2017 -0700
+++ b/.hgtags-top-repo Thu Jul 20 09:38:27 2017 -0700
@@ -435,3 +435,4 @@
1fd5901544acc50bb30fde9388c8e53cb7c449e4 jdk-10+14
84777531d994ef70163d35078ec9c4127f2eadb5 jdk-9+176
a4371edb589c60db01142e45c317adb9ccbcb083 jdk-9+177
+a6c830ee8a6798b186730475e700027cdf4598aa jdk-10+15
--- a/common/autoconf/flags.m4 Mon Jul 17 09:14:23 2017 -0700
+++ b/common/autoconf/flags.m4 Thu Jul 20 09:38:27 2017 -0700
@@ -996,14 +996,18 @@
$2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
$2JVM_CFLAGS="[$]$2JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \
-mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \
- -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 -mmacosx-version-min=10.7.0 \
-fno-omit-frame-pointer"
elif test "x$OPENJDK_$1_OS" = xaix; then
$2JVM_CFLAGS="[$]$2JVM_CFLAGS -DAIX"
- # We may need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
$2JVM_CFLAGS="[$]$2JVM_CFLAGS -qtune=balanced \
-qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
-qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
+ # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
+ # Hotspot now overflows its 64K TOC (currently only for slowdebug),
+ # so for slowdebug we build with '-qpic=large -bbigtoc'.
+ if test "x$DEBUG_LEVEL" = xslowdebug; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qpic=large"
+ fi
elif test "x$OPENJDK_$1_OS" = xbsd; then
$2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
elif test "x$OPENJDK_$1_OS" = xwindows; then
@@ -1081,18 +1085,50 @@
# Additional macosx handling
if test "x$OPENJDK_$1_OS" = xmacosx; then
- # Setting these parameters makes it an error to link to macosx APIs that are
- # newer than the given OS version and makes the linked binaries compatible
- # even if built on a newer version of the OS.
- # The expected format is X.Y.Z
+ # MACOSX_VERSION_MIN is the c++ and ld is -mmacosx-version-min argument. The expected
+ # format is X.Y.Z. It's hard-coded to the minimum OSX version on which the
+ # JDK can be built and makes the linked binaries compatible even if built on
+ # a newer version of the OS.
MACOSX_VERSION_MIN=10.7.0
AC_SUBST(MACOSX_VERSION_MIN)
- # The macro takes the version with no dots, ex: 1070
+ # Setting --with-macosx-version-max=<version> makes it an error to build or
+ # link to macosx APIs that are newer than the given OS version. The expected
+ # format for <version> is either nn.n.n or nn.nn.nn. See /usr/include/AvailabilityMacros.h.
+ AC_ARG_WITH([macosx-version-max], [AS_HELP_STRING([--with-macosx-version-max],
+ [error on use of newer functionality. @<:@macosx@:>@])],
+ [
+ if echo "$with_macosx_version_max" | $GREP -q "^[[0-9]][[0-9]]\.[[0-9]]\.[[0-9]]\$"; then
+ MACOSX_VERSION_MAX=$with_macosx_version_max
+ elif echo "$with_macosx_version_max" | $GREP -q "^[[0-9]][[0-9]]\.[[0-9]][[0-9]]\.[[0-9]][[0-9]]\$"; then
+ MACOSX_VERSION_MAX=$with_macosx_version_max
+ elif test "x$with_macosx_version_max" = "xno"; then
+ # Use build system default
+ MACOSX_VERSION_MAX=
+ else
+ AC_MSG_ERROR([osx version format must be nn.n.n or nn.nn.nn])
+ fi
+ ],
+ [MACOSX_VERSION_MAX=]
+ )
+ AC_SUBST(MACOSX_VERSION_MAX)
+
# Let the flags variables get resolved in make for easier override on make
- # command line.
- $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ # command line. AvailabilityMacros.h versions have no dots, ex: 1070.
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \
+ -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
+ -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
$2LDFLAGS_JDK="[$]$2LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS \
+ -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
+ -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+
+ if test -n "$MACOSX_VERSION_MAX"; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))"
+ fi
fi
# Setup some hard coded includes
@@ -1218,6 +1254,12 @@
LDFLAGS_XLC="-b64 -brtl -bnolibpath -bexpall -bernotok"
$2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_XLC"
$2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_XLC"
+ # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
+ # Hotspot now overflows its 64K TOC (currently only for slowdebug),
+ # so for slowdebug we build with '-qpic=large -bbigtoc'.
+ if test "x$DEBUG_LEVEL" = xslowdebug; then
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -bbigtoc"
+ fi
fi
# Customize LDFLAGS for executables
--- a/common/autoconf/generated-configure.sh Mon Jul 17 09:14:23 2017 -0700
+++ b/common/autoconf/generated-configure.sh Thu Jul 20 09:38:27 2017 -0700
@@ -749,6 +749,7 @@
CXXFLAGS_JDKLIB
CFLAGS_JDKEXE
CFLAGS_JDKLIB
+MACOSX_VERSION_MAX
MACOSX_VERSION_MIN
CXXSTD_CXXFLAG
JDK_ARCH_ABI_PROP_NAME
@@ -1182,6 +1183,7 @@
with_build_devkit
with_jtreg
with_abi_profile
+with_macosx_version_max
enable_warnings_as_errors
with_native_debug_symbols
enable_debug_symbols
@@ -2132,6 +2134,8 @@
(arm-vfp-sflt,arm-vfp-hflt,arm-sflt,
armv5-vfp-sflt,armv6-vfp-hflt,arm64,aarch64)
[toolchain dependent]
+ --with-macosx-version-max
+ error on use of newer functionality. [macosx]
--with-native-debug-symbols
set the native debug symbol configuration (none,
internal, external, zipped) [varying]
@@ -5010,7 +5014,7 @@
# Minimum supported versions, empty means unspecified
TOOLCHAIN_MINIMUM_VERSION_clang="3.2"
-TOOLCHAIN_MINIMUM_VERSION_gcc="4.3"
+TOOLCHAIN_MINIMUM_VERSION_gcc="4.7"
TOOLCHAIN_MINIMUM_VERSION_microsoft="16.00.30319.01" # VS2010
TOOLCHAIN_MINIMUM_VERSION_solstudio="5.13"
TOOLCHAIN_MINIMUM_VERSION_xlc=""
@@ -5189,7 +5193,7 @@
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1496926402
+DATE_WHEN_GENERATED=1500423205
###############################################################################
#
@@ -51461,14 +51465,18 @@
JVM_CFLAGS="$JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
JVM_CFLAGS="$JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \
-mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \
- -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 -mmacosx-version-min=10.7.0 \
-fno-omit-frame-pointer"
elif test "x$OPENJDK_TARGET_OS" = xaix; then
JVM_CFLAGS="$JVM_CFLAGS -DAIX"
- # We may need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
JVM_CFLAGS="$JVM_CFLAGS -qtune=balanced \
-qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
-qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
+ # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
+ # Hotspot now overflows its 64K TOC (currently only for slowdebug),
+ # so for slowdebug we build with '-qpic=large -bbigtoc'.
+ if test "x$DEBUG_LEVEL" = xslowdebug; then
+ JVM_CFLAGS="$JVM_CFLAGS -qpic=large"
+ fi
elif test "x$OPENJDK_TARGET_OS" = xbsd; then
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
elif test "x$OPENJDK_TARGET_OS" = xwindows; then
@@ -51635,18 +51643,54 @@
# Additional macosx handling
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
- # Setting these parameters makes it an error to link to macosx APIs that are
- # newer than the given OS version and makes the linked binaries compatible
- # even if built on a newer version of the OS.
- # The expected format is X.Y.Z
+ # MACOSX_VERSION_MIN is the c++ and ld is -mmacosx-version-min argument. The expected
+ # format is X.Y.Z. It's hard-coded to the minimum OSX version on which the
+ # JDK can be built and makes the linked binaries compatible even if built on
+ # a newer version of the OS.
MACOSX_VERSION_MIN=10.7.0
- # The macro takes the version with no dots, ex: 1070
+ # Setting --with-macosx-version-max=<version> makes it an error to build or
+ # link to macosx APIs that are newer than the given OS version. The expected
+ # format for <version> is either nn.n.n or nn.nn.nn. See /usr/include/AvailabilityMacros.h.
+
+# Check whether --with-macosx-version-max was given.
+if test "${with_macosx_version_max+set}" = set; then :
+ withval=$with_macosx_version_max;
+ if echo "$with_macosx_version_max" | $GREP -q "^[0-9][0-9]\.[0-9]\.[0-9]\$"; then
+ MACOSX_VERSION_MAX=$with_macosx_version_max
+ elif echo "$with_macosx_version_max" | $GREP -q "^[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\$"; then
+ MACOSX_VERSION_MAX=$with_macosx_version_max
+ elif test "x$with_macosx_version_max" = "xno"; then
+ # Use build system default
+ MACOSX_VERSION_MAX=
+ else
+ as_fn_error $? "osx version format must be nn.n.n or nn.nn.nn" "$LINENO" 5
+ fi
+
+else
+ MACOSX_VERSION_MAX=
+
+fi
+
+
+
# Let the flags variables get resolved in make for easier override on make
- # command line.
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ # command line. AvailabilityMacros.h versions have no dots, ex: 1070.
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
+ -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
+ -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ JVM_CFLAGS="$JVM_CFLAGS \
+ -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
+ -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+
+ if test -n "$MACOSX_VERSION_MAX"; then
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))"
+ JVM_CFLAGS="$JVM_CFLAGS \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))"
+ fi
fi
# Setup some hard coded includes
@@ -51772,6 +51816,12 @@
LDFLAGS_XLC="-b64 -brtl -bnolibpath -bexpall -bernotok"
LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_XLC"
JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_XLC"
+ # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
+ # Hotspot now overflows its 64K TOC (currently only for slowdebug),
+ # so for slowdebug we build with '-qpic=large -bbigtoc'.
+ if test "x$DEBUG_LEVEL" = xslowdebug; then
+ JVM_LDFLAGS="$JVM_LDFLAGS -bbigtoc"
+ fi
fi
# Customize LDFLAGS for executables
@@ -52279,14 +52329,18 @@
OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \
-mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \
- -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 -mmacosx-version-min=10.7.0 \
-fno-omit-frame-pointer"
elif test "x$OPENJDK_BUILD_OS" = xaix; then
OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -DAIX"
- # We may need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -qtune=balanced \
-qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
-qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
+ # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
+ # Hotspot now overflows its 64K TOC (currently only for slowdebug),
+ # so for slowdebug we build with '-qpic=large -bbigtoc'.
+ if test "x$DEBUG_LEVEL" = xslowdebug; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -qpic=large"
+ fi
elif test "x$OPENJDK_BUILD_OS" = xbsd; then
OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
elif test "x$OPENJDK_BUILD_OS" = xwindows; then
@@ -52453,18 +52507,54 @@
# Additional macosx handling
if test "x$OPENJDK_BUILD_OS" = xmacosx; then
- # Setting these parameters makes it an error to link to macosx APIs that are
- # newer than the given OS version and makes the linked binaries compatible
- # even if built on a newer version of the OS.
- # The expected format is X.Y.Z
+ # MACOSX_VERSION_MIN is the c++ and ld is -mmacosx-version-min argument. The expected
+ # format is X.Y.Z. It's hard-coded to the minimum OSX version on which the
+ # JDK can be built and makes the linked binaries compatible even if built on
+ # a newer version of the OS.
MACOSX_VERSION_MIN=10.7.0
- # The macro takes the version with no dots, ex: 1070
+ # Setting --with-macosx-version-max=<version> makes it an error to build or
+ # link to macosx APIs that are newer than the given OS version. The expected
+ # format for <version> is either nn.n.n or nn.nn.nn. See /usr/include/AvailabilityMacros.h.
+
+# Check whether --with-macosx-version-max was given.
+if test "${with_macosx_version_max+set}" = set; then :
+ withval=$with_macosx_version_max;
+ if echo "$with_macosx_version_max" | $GREP -q "^[0-9][0-9]\.[0-9]\.[0-9]\$"; then
+ MACOSX_VERSION_MAX=$with_macosx_version_max
+ elif echo "$with_macosx_version_max" | $GREP -q "^[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\$"; then
+ MACOSX_VERSION_MAX=$with_macosx_version_max
+ elif test "x$with_macosx_version_max" = "xno"; then
+ # Use build system default
+ MACOSX_VERSION_MAX=
+ else
+ as_fn_error $? "osx version format must be nn.n.n or nn.nn.nn" "$LINENO" 5
+ fi
+
+else
+ MACOSX_VERSION_MAX=
+
+fi
+
+
+
# Let the flags variables get resolved in make for easier override on make
- # command line.
- OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ # command line. AvailabilityMacros.h versions have no dots, ex: 1070.
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
+ -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
+ -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS \
+ -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
+ -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+
+ if test -n "$MACOSX_VERSION_MAX"; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))"
+ fi
fi
# Setup some hard coded includes
@@ -52590,6 +52680,12 @@
LDFLAGS_XLC="-b64 -brtl -bnolibpath -bexpall -bernotok"
OPENJDK_BUILD_LDFLAGS_JDK="${OPENJDK_BUILD_LDFLAGS_JDK} $LDFLAGS_XLC"
OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_XLC"
+ # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
+ # Hotspot now overflows its 64K TOC (currently only for slowdebug),
+ # so for slowdebug we build with '-qpic=large -bbigtoc'.
+ if test "x$DEBUG_LEVEL" = xslowdebug; then
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -bbigtoc"
+ fi
fi
# Customize LDFLAGS for executables
--- a/common/autoconf/spec.gmk.in Mon Jul 17 09:14:23 2017 -0700
+++ b/common/autoconf/spec.gmk.in Thu Jul 20 09:38:27 2017 -0700
@@ -335,8 +335,10 @@
X_CFLAGS:=@X_CFLAGS@
X_LIBS:=@X_LIBS@
-# The lowest required version of macosx to enforce compatiblity for
+# The lowest required version of macosx
MACOSX_VERSION_MIN=@MACOSX_VERSION_MIN@
+# The highest allowed version of macosx
+MACOSX_VERSION_MAX=@MACOSX_VERSION_MAX@
# Toolchain type: gcc, clang, solstudio, lxc, microsoft...
TOOLCHAIN_TYPE:=@TOOLCHAIN_TYPE@
--- a/common/autoconf/toolchain.m4 Mon Jul 17 09:14:23 2017 -0700
+++ b/common/autoconf/toolchain.m4 Thu Jul 20 09:38:27 2017 -0700
@@ -52,7 +52,7 @@
# Minimum supported versions, empty means unspecified
TOOLCHAIN_MINIMUM_VERSION_clang="3.2"
-TOOLCHAIN_MINIMUM_VERSION_gcc="4.3"
+TOOLCHAIN_MINIMUM_VERSION_gcc="4.7"
TOOLCHAIN_MINIMUM_VERSION_microsoft="16.00.30319.01" # VS2010
TOOLCHAIN_MINIMUM_VERSION_solstudio="5.13"
TOOLCHAIN_MINIMUM_VERSION_xlc=""
--- a/common/conf/jib-profiles.js Mon Jul 17 09:14:23 2017 -0700
+++ b/common/conf/jib-profiles.js Thu Jul 20 09:38:27 2017 -0700
@@ -436,7 +436,8 @@
target_os: "macosx",
target_cpu: "x64",
dependencies: ["devkit"],
- configure_args: concat(common.configure_args_64bit, "--with-zlib=system"),
+ configure_args: concat(common.configure_args_64bit, "--with-zlib=system",
+ "--with-macosx-version-max=10.7.0"),
},
"solaris-x64": {
--- a/common/doc/building.md Mon Jul 17 09:14:23 2017 -0700
+++ b/common/doc/building.md Thu Jul 20 09:38:27 2017 -0700
@@ -392,11 +392,8 @@
### gcc
-The minimum accepted version of gcc is 4.3. Older versions will not be accepted
-by `configure`.
-
-However, gcc 4.3 is quite old and OpenJDK is not regularly tested on this
-version, so it is recommended to use a more modern gcc.
+The minimum accepted version of gcc is 4.7. Older versions will generate a warning
+by `configure` and are unlikely to work.
OpenJDK 9 includes patches that should allow gcc 6 to compile, but this should
be considered experimental.
--- a/common/nb_native/nbproject/configurations.xml Mon Jul 17 09:14:23 2017 -0700
+++ b/common/nb_native/nbproject/configurations.xml Thu Jul 20 09:38:27 2017 -0700
@@ -3517,7 +3517,6 @@
<Elem>COMPILER2</Elem>
<Elem>DTRACE_ENABLED</Elem>
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
<Elem>TARGET_ARCH_x86</Elem>
<Elem>TARGET_COMPILER_gcc</Elem>
@@ -10570,7 +10569,6 @@
<Elem>COMPILER2</Elem>
<Elem>DTRACE_ENABLED</Elem>
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
<Elem>TARGET_ARCH_x86</Elem>
<Elem>TARGET_COMPILER_gcc</Elem>
@@ -18227,7 +18225,6 @@
<Elem>COMPILER2</Elem>
<Elem>DTRACE_ENABLED</Elem>
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
<Elem>TARGET_ARCH_x86</Elem>
<Elem>TARGET_COMPILER_gcc</Elem>
@@ -20787,7 +20784,6 @@
<Elem>COMPILER2</Elem>
<Elem>DTRACE_ENABLED</Elem>
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
<Elem>TARGET_ARCH_x86</Elem>
<Elem>TARGET_COMPILER_gcc</Elem>
@@ -21531,7 +21527,6 @@
<Elem>ARCHPROPNAME="x86_64"</Elem>
<Elem>DEBUG</Elem>
<Elem>MACOSX</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>THIS_FILE="java_props_macosx.c"</Elem>
<Elem>_ALLBSD_SOURCE</Elem>
<Elem>_DARWIN_UNLIMITED_SELECT</Elem>
@@ -23025,7 +23020,6 @@
<Elem>ARCHPROPNAME="x86_64"</Elem>
<Elem>DEBUG</Elem>
<Elem>MACOSX</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>THIS_FILE="java_props_md.c"</Elem>
<Elem>_ALLBSD_SOURCE</Elem>
<Elem>_DARWIN_UNLIMITED_SELECT</Elem>
@@ -23104,7 +23098,6 @@
<Elem>ARCH="x86_64"</Elem>
<Elem>DEBUG</Elem>
<Elem>MACOSX</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>THIS_FILE="ExtendedOptionsImpl.c"</Elem>
<Elem>_ALLBSD_SOURCE</Elem>
<Elem>_DARWIN_UNLIMITED_SELECT</Elem>
@@ -23481,7 +23474,6 @@
<Elem>ARCH="x86_64"</Elem>
<Elem>DEBUG</Elem>
<Elem>MACOSX</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>THIS_FILE="SocketDispatcher.c"</Elem>
<Elem>_ALLBSD_SOURCE</Elem>
<Elem>_DARWIN_UNLIMITED_SELECT</Elem>
@@ -29987,7 +29979,6 @@
<Elem>COMPILER2</Elem>
<Elem>DTRACE_ENABLED</Elem>
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
<Elem>TARGET_ARCH_x86</Elem>
<Elem>TARGET_COMPILER_gcc</Elem>
@@ -30069,7 +30060,6 @@
<Elem>COMPILER2</Elem>
<Elem>DTRACE_ENABLED</Elem>
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
<Elem>TARGET_ARCH_x86</Elem>
<Elem>TARGET_COMPILER_gcc</Elem>
@@ -30104,7 +30094,6 @@
<Elem>ARCH="x86_64"</Elem>
<Elem>DEBUG</Elem>
<Elem>MACOSX</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>_ALLBSD_SOURCE</Elem>
<Elem>_DARWIN_UNLIMITED_SELECT</Elem>
<Elem>_GNU_SOURCE</Elem>
@@ -30147,7 +30136,6 @@
<Elem>COMPILER2</Elem>
<Elem>DTRACE_ENABLED</Elem>
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
<Elem>TARGET_ARCH_x86</Elem>
<Elem>TARGET_COMPILER_gcc</Elem>
@@ -30211,7 +30199,6 @@
<Elem>COMPILER2</Elem>
<Elem>DTRACE_ENABLED</Elem>
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
<Elem>TARGET_ARCH_x86</Elem>
<Elem>TARGET_COMPILER_gcc</Elem>
@@ -30274,7 +30261,6 @@
<Elem>COMPILER2</Elem>
<Elem>DTRACE_ENABLED</Elem>
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
<Elem>TARGET_ARCH_x86</Elem>
<Elem>TARGET_COMPILER_gcc</Elem>
@@ -30341,7 +30327,6 @@
<preprocessorList>
<Elem>ARCH="x86_64"</Elem>
<Elem>MACOSX</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>THIS_FILE="agent_util.c"</Elem>
<Elem>_ALLBSD_SOURCE</Elem>
<Elem>_DARWIN_UNLIMITED_SELECT</Elem>
@@ -30354,7 +30339,6 @@
<preprocessorList>
<Elem>ARCH="x86_64"</Elem>
<Elem>MACOSX</Elem>
- <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
<Elem>THIS_FILE="Agent.cpp"</Elem>
<Elem>_ALLBSD_SOURCE</Elem>
<Elem>_DARWIN_UNLIMITED_SELECT</Elem>
--- a/corba/.hgtags Mon Jul 17 09:14:23 2017 -0700
+++ b/corba/.hgtags Thu Jul 20 09:38:27 2017 -0700
@@ -435,3 +435,4 @@
25d991a67cba240eeaf15c19c5857b40fdd71561 jdk-10+14
40fb9f229471ef357d493813d34b15afcce9f32b jdk-9+176
c72e9d3823f04cb3ef3166646dfea9e4c2769133 jdk-9+177
+15f59cfc6fbe9387423fb173e962265c7b5d357e jdk-10+15
--- a/hotspot/.hgtags Mon Jul 17 09:14:23 2017 -0700
+++ b/hotspot/.hgtags Thu Jul 20 09:38:27 2017 -0700
@@ -595,3 +595,4 @@
e920b4d008d914f3414bd4630b58837cf0b7f08d jdk-10+14
2ab74e5dbdc2b6a962c865500cafd23cf387dc60 jdk-9+176
1ca8f038fceb88c640badf9bd18905205bc63b43 jdk-9+177
+c1f3649a3a42f124b418a5a916dbad13d059b757 jdk-10+15
--- a/jaxp/.hgtags Mon Jul 17 09:14:23 2017 -0700
+++ b/jaxp/.hgtags Thu Jul 20 09:38:27 2017 -0700
@@ -435,3 +435,4 @@
4d05f673cf773f1c20e8f5a879d64115d2f741d9 jdk-10+14
38cf34e2328070cc691c4f136e6dde1a44c04171 jdk-9+176
332ad9f92632f56f337b8c40edef9a95a42b26bc jdk-9+177
+02a876781a3a6193140591d92db7b95ca743eac2 jdk-10+15
--- a/jaxp/src/java.xml/share/classes/javax/xml/stream/XMLEventFactory.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jaxp/src/java.xml/share/classes/javax/xml/stream/XMLEventFactory.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -125,10 +125,6 @@
* <p>
* Once an application has obtained a reference to a XMLEventFactory it
* can use the factory to configure and obtain stream instances.
- * <p>
- * Note that this is a new method that replaces the deprecated newInstance() method.
- * No changes in behavior are defined by this replacement method relative to
- * the deprecated method.
*
* @throws FactoryConfigurationError in case of {@linkplain
* java.util.ServiceConfigurationError service configuration error} or if
--- a/jaxp/src/java.xml/share/classes/javax/xml/stream/XMLInputFactory.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jaxp/src/java.xml/share/classes/javax/xml/stream/XMLInputFactory.java Thu Jul 20 09:38:27 2017 -0700
@@ -209,16 +209,11 @@
* <p>
* Once an application has obtained a reference to a XMLInputFactory it
* can use the factory to configure and obtain stream instances.
- * <p>
- * Note that this is a new method that replaces the deprecated newInstance() method.
- * No changes in behavior are defined by this replacement method relative to
- * the deprecated method.
*
* @throws FactoryConfigurationError in case of {@linkplain
* java.util.ServiceConfigurationError service configuration error} or if
* the implementation is not available or cannot be instantiated.
*/
- @Deprecated(since="1.7")
public static XMLInputFactory newFactory()
throws FactoryConfigurationError
{
--- a/jaxp/src/java.xml/share/classes/javax/xml/stream/XMLOutputFactory.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jaxp/src/java.xml/share/classes/javax/xml/stream/XMLOutputFactory.java Thu Jul 20 09:38:27 2017 -0700
@@ -189,10 +189,6 @@
* <p>
* Once an application has obtained a reference to a XMLOutputFactory it
* can use the factory to configure and obtain stream instances.
- * <p>
- * Note that this is a new method that replaces the deprecated newInstance() method.
- * No changes in behavior are defined by this replacement method relative to the
- * deprecated method.
*
* @throws FactoryConfigurationError in case of {@linkplain
* java.util.ServiceConfigurationError service configuration error} or if
--- a/jaxp/src/java.xml/share/classes/javax/xml/validation/Validator.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jaxp/src/java.xml/share/classes/javax/xml/validation/Validator.java Thu Jul 20 09:38:27 2017 -0700
@@ -135,7 +135,7 @@
* <caption>{@code Source} / {@code Result} Accepted</caption>
* <thead>
* <tr>
- * <td></td>>
+ * <td></td>
* <th scope="col">{@link javax.xml.transform.stream.StreamSource}</th>
* <th scope="col">{@link javax.xml.transform.sax.SAXSource}</th>
* <th scope="col">{@link javax.xml.transform.dom.DOMSource}</th>
--- a/jaxws/.hgtags Mon Jul 17 09:14:23 2017 -0700
+++ b/jaxws/.hgtags Thu Jul 20 09:38:27 2017 -0700
@@ -438,3 +438,4 @@
bddeaa49ffd55567ad232548c38aa270e1a1420a jdk-10+14
ea819b6009d33a72e6672bab6c101d51db0cfb4c jdk-9+176
b44a721aee3d3b2537754e559fe9ecccadea548b jdk-9+177
+6d17fd0a5133a0dd916c77a9a24ae7f0ca402876 jdk-10+15
--- a/jdk/src/java.base/share/classes/java/io/ObjectStreamField.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/io/ObjectStreamField.java Thu Jul 20 09:38:27 2017 -0700
@@ -45,16 +45,18 @@
/** field name */
private final String name;
- /** canonical JVM signature of field type */
+ /** canonical JVM signature of field type, if given */
private final String signature;
/** field type (Object.class if unknown non-primitive type) */
private final Class<?> type;
+ /** lazily constructed signature for the type, if no explicit signature */
+ private String typeSignature;
/** whether or not to (de)serialize field values as unshared */
private final boolean unshared;
/** corresponding reflective field object, if any */
private final Field field;
/** offset of field value in enclosing field group */
- private int offset = 0;
+ private int offset;
/**
* Create a Serializable field with the specified type. This field should
@@ -91,8 +93,8 @@
this.name = name;
this.type = type;
this.unshared = unshared;
- signature = getClassSignature(type).intern();
- field = null;
+ this.field = null;
+ this.signature = null;
}
/**
@@ -106,7 +108,7 @@
this.name = name;
this.signature = signature.intern();
this.unshared = unshared;
- field = null;
+ this.field = null;
switch (signature.charAt(0)) {
case 'Z': type = Boolean.TYPE; break;
@@ -242,7 +244,7 @@
*/
// REMIND: deprecate?
public char getTypeCode() {
- return signature.charAt(0);
+ return getSignature().charAt(0);
}
/**
@@ -252,7 +254,7 @@
*/
// REMIND: deprecate?
public String getTypeString() {
- return isPrimitive() ? null : signature;
+ return isPrimitive() ? null : getSignature();
}
/**
@@ -284,7 +286,7 @@
*/
// REMIND: deprecate?
public boolean isPrimitive() {
- char tcode = signature.charAt(0);
+ char tcode = getTypeCode();
return ((tcode != 'L') && (tcode != '['));
}
@@ -320,7 +322,7 @@
* Return a string that describes this field.
*/
public String toString() {
- return signature + ' ' + name;
+ return getSignature() + ' ' + name;
}
/**
@@ -336,6 +338,17 @@
* that signature strings are returned for primitive fields as well).
*/
String getSignature() {
- return signature;
+ if (signature != null) {
+ return signature;
+ }
+
+ String sig = typeSignature;
+ // This lazy calculation is safe since signature can be null iff one
+ // of the public constructors are used, in which case type is always
+ // initialized to the exact type we want the signature to represent.
+ if (sig == null) {
+ typeSignature = sig = getClassSignature(type).intern();
+ }
+ return sig;
}
}
--- a/jdk/src/java.base/share/classes/java/lang/System.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/System.java Thu Jul 20 09:38:27 2017 -0700
@@ -1960,10 +1960,6 @@
setOut0(newPrintStream(fdOut, props.getProperty("sun.stdout.encoding")));
setErr0(newPrintStream(fdErr, props.getProperty("sun.stderr.encoding")));
- // Load the zip library now in order to keep java.util.zip.ZipFile
- // from trying to use itself to load this library later.
- loadLibrary("zip");
-
// Setup Java signal handlers for HUP, TERM, and INT (where available).
Terminator.setup();
--- a/jdk/src/java.base/share/classes/java/nio/charset/Charset.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/nio/charset/Charset.java Thu Jul 20 09:38:27 2017 -0700
@@ -25,6 +25,11 @@
package java.nio.charset;
+import jdk.internal.misc.VM;
+import sun.nio.cs.StandardCharsets;
+import sun.nio.cs.ThreadLocalCoders;
+import sun.security.action.GetPropertyAction;
+
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.spi.CharsetProvider;
@@ -38,15 +43,11 @@
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Objects;
-import java.util.Set;
+import java.util.ServiceConfigurationError;
import java.util.ServiceLoader;
-import java.util.ServiceConfigurationError;
+import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
-import jdk.internal.misc.VM;
-import sun.nio.cs.StandardCharsets;
-import sun.nio.cs.ThreadLocalCoders;
-import sun.security.action.GetPropertyAction;
/**
@@ -635,10 +636,19 @@
* If the canonical name or any of the aliases are illegal
*/
protected Charset(String canonicalName, String[] aliases) {
- checkName(canonicalName);
String[] as = Objects.requireNonNullElse(aliases, zeroAliases);
- for (int i = 0; i < as.length; i++)
- checkName(as[i]);
+
+ // Skip checks for the standard, built-in Charsets we always load
+ // during initialization. Use of identity is intentional to be
+ // consistent with sun.nio.cs.StandardCharsets
+ if (canonicalName != StandardCharsets.ISO_8859_1
+ && canonicalName != StandardCharsets.US_ASCII
+ && canonicalName != StandardCharsets.UTF_8) {
+ checkName(canonicalName);
+ for (int i = 0; i < as.length; i++) {
+ checkName(as[i]);
+ }
+ }
this.name = canonicalName;
this.aliases = as;
}
--- a/jdk/src/java.base/share/classes/java/util/zip/Adler32.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/util/zip/Adler32.java Thu Jul 20 09:38:27 2017 -0700
@@ -136,4 +136,8 @@
@HotSpotIntrinsicCandidate
private static native int updateByteBuffer(int adler, long addr,
int off, int len);
+
+ static {
+ ZipUtils.loadLibrary();
+ }
}
--- a/jdk/src/java.base/share/classes/java/util/zip/CRC32.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/util/zip/CRC32.java Thu Jul 20 09:38:27 2017 -0700
@@ -172,4 +172,8 @@
throw new NullPointerException();
}
}
+
+ static {
+ ZipUtils.loadLibrary();
+ }
}
--- a/jdk/src/java.base/share/classes/java/util/zip/Deflater.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/util/zip/Deflater.java Thu Jul 20 09:38:27 2017 -0700
@@ -154,7 +154,7 @@
public static final int FULL_FLUSH = 3;
static {
- /* Zip library is loaded from System.initializeSystemClass */
+ ZipUtils.loadLibrary();
initIDs();
}
--- a/jdk/src/java.base/share/classes/java/util/zip/Inflater.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/util/zip/Inflater.java Thu Jul 20 09:38:27 2017 -0700
@@ -85,7 +85,7 @@
private static final byte[] defaultBuf = new byte[0];
static {
- /* Zip library is loaded from System.initializeSystemClass */
+ ZipUtils.loadLibrary();
initIDs();
}
--- a/jdk/src/java.base/share/classes/java/util/zip/ZipUtils.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/util/zip/ZipUtils.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,8 @@
package java.util.zip;
import java.nio.file.attribute.FileTime;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
@@ -245,4 +247,17 @@
// The END header is followed by a variable length comment of size < 64k.
static final long END_MAXLEN = 0xFFFF + ENDHDR;
static final int READBLOCKSZ = 128;
+
+ /**
+ * Loads zip native library, if not already laoded
+ */
+ static void loadLibrary() {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm == null) {
+ System.loadLibrary("zip");
+ } else {
+ PrivilegedAction<Void> pa = () -> { System.loadLibrary("zip"); return null; };
+ AccessController.doPrivileged(pa);
+ }
+ }
}
--- a/jdk/src/java.base/share/classes/sun/nio/cs/ISO_8859_1.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/share/classes/sun/nio/cs/ISO_8859_1.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -42,7 +42,7 @@
{
public ISO_8859_1() {
- super("ISO-8859-1", StandardCharsets.aliases_ISO_8859_1);
+ super(StandardCharsets.ISO_8859_1, StandardCharsets.aliases_ISO_8859_1);
}
public String historicalName() {
--- a/jdk/src/java.base/share/classes/sun/nio/cs/StandardCharsets.java.template Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/share/classes/sun/nio/cs/StandardCharsets.java.template Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -51,6 +51,12 @@
private static final String packagePrefix = "sun.nio.cs";
+ public static final String US_ASCII = "US-ASCII";
+
+ public static final String ISO_8859_1 = "ISO-8859-1";
+
+ public static final String UTF_8 = "UTF-8";
+
public StandardCharsets() {
this.aliasMap = new Aliases();
this.classMap = new Classes();
@@ -103,13 +109,13 @@
// As all charset class names added to classMap are string literals we
// can check identity here as an optimization
- if (cln == "US_ASCII") {
+ if (cln == US_ASCII) {
return cache(csn, new US_ASCII());
}
- if (cln == "ISO_8859_1") {
+ if (cln == ISO_8859_1) {
return cache(csn, new ISO_8859_1());
}
- if (cln == "UTF_8") {
+ if (cln == UTF_8) {
return cache(csn, new UTF_8());
}
--- a/jdk/src/java.base/share/classes/sun/nio/cs/US_ASCII.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/share/classes/sun/nio/cs/US_ASCII.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -38,7 +38,7 @@
{
public US_ASCII() {
- super("US-ASCII", StandardCharsets.aliases_US_ASCII);
+ super(StandardCharsets.US_ASCII, StandardCharsets.aliases_US_ASCII);
}
public String historicalName() {
--- a/jdk/src/java.base/share/classes/sun/nio/cs/UTF_8.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/share/classes/sun/nio/cs/UTF_8.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -57,7 +57,7 @@
class UTF_8 extends Unicode
{
public UTF_8() {
- super("UTF-8", StandardCharsets.aliases_UTF_8);
+ super(StandardCharsets.UTF_8, StandardCharsets.aliases_UTF_8);
}
public String historicalName() {
--- a/jdk/src/java.base/share/classes/sun/security/util/SignatureFileVerifier.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/util/SignatureFileVerifier.java Thu Jul 20 09:38:27 2017 -0700
@@ -59,9 +59,15 @@
/* Are we debugging ? */
private static final Debug debug = Debug.getInstance("jar");
- private static final DisabledAlgorithmConstraints JAR_DISABLED_CHECK =
+ /**
+ * Holder class to delay initialization of DisabledAlgorithmConstraints
+ * until needed.
+ */
+ private static class ConfigurationHolder {
+ static final DisabledAlgorithmConstraints JAR_DISABLED_CHECK =
new DisabledAlgorithmConstraints(
DisabledAlgorithmConstraints.PROPERTY_JAR_DISABLED_ALGS);
+ }
private ArrayList<CodeSigner[]> signerCache;
@@ -371,7 +377,7 @@
Boolean permitted = permittedAlgs.get(algorithm);
if (permitted == null) {
try {
- JAR_DISABLED_CHECK.permits(algorithm,
+ ConfigurationHolder.JAR_DISABLED_CHECK.permits(algorithm,
new ConstraintsParameters(timestamp));
} catch(GeneralSecurityException e) {
permittedAlgs.put(algorithm, Boolean.FALSE);
--- a/jdk/src/java.base/unix/native/libjava/ProcessHandleImpl_unix.c Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/unix/native/libjava/ProcessHandleImpl_unix.c Thu Jul 20 09:38:27 2017 -0700
@@ -662,6 +662,11 @@
return -1;
}
+ // Validate the pid before returning the info in case /proc/pid is racy
+ if (kill(pid, 0) < 0) {
+ return -1;
+ }
+
*totalTime = psinfo.pr_time.tv_sec * 1000000000L + psinfo.pr_time.tv_nsec;
*startTime = psinfo.pr_start.tv_sec * (jlong)1000 +
--- a/jdk/src/java.base/unix/native/libjava/locale_str.h Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/unix/native/libjava/locale_str.h Thu Jul 20 09:38:27 2017 -0700
@@ -135,16 +135,6 @@
"sr_SP", "sr_YU",
"tchinese", "zh_TW",
#endif
-#ifdef MACOSX
- "sr-Latn", "sr_CS", // Mappings as done by old Apple JRS code
- "tk", "tk-Cyrl",
- "tt-Latn", "tt-Cyrl",
- "uz", "uz_UZ",
- "uz-Arab", "uz_UZ",
- "uz-Latn", "uz_UZ",
- "zh-Hans", "zh_CN",
- "zh-Hant", "zh_TW",
-#endif
"", "",
};
--- a/jdk/src/java.base/windows/native/libnio/ch/FileChannelImpl.c Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/windows/native/libnio/ch/FileChannelImpl.c Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -170,8 +170,8 @@
{
HANDLE h = (HANDLE)(handleval(env, fdo));
if (h != INVALID_HANDLE_VALUE) {
- jint result = CloseHandle(h);
- if (result < 0) {
+ BOOL result = CloseHandle(h);
+ if (result == 0) {
JNU_ThrowIOExceptionWithLastError(env, "Close failed");
}
}
--- a/jdk/src/java.base/windows/native/libnio/ch/FileDispatcherImpl.c Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/windows/native/libnio/ch/FileDispatcherImpl.c Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -334,7 +334,7 @@
FileEndOfFileInfo,
&eofInfo,
sizeof(eofInfo));
- if (result == FALSE) {
+ if (result == 0) {
JNU_ThrowIOExceptionWithLastError(env, "Truncation failed");
return IOS_THROWN;
}
@@ -411,7 +411,7 @@
long highPos = (long)(pos >> 32);
DWORD lowNumBytes = (DWORD)size;
DWORD highNumBytes = (DWORD)(size >> 32);
- jint result = 0;
+ BOOL result = 0;
OVERLAPPED o;
o.hEvent = 0;
o.Offset = lowPos;
@@ -422,7 +422,7 @@
if (error == ERROR_IO_PENDING) {
DWORD dwBytes;
result = GetOverlappedResult(h, &o, &dwBytes, TRUE);
- if (result == 0) {
+ if (result != 0) {
return;
}
error = GetLastError();
@@ -437,7 +437,7 @@
HANDLE h = (HANDLE)fd;
if (h != INVALID_HANDLE_VALUE) {
int result = CloseHandle(h);
- if (result < 0)
+ if (result == 0)
JNU_ThrowIOExceptionWithLastError(env, "Close failed");
}
}
--- a/jdk/src/java.base/windows/native/libnio/ch/WindowsAsynchronousFileChannelImpl.c Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/src/java.base/windows/native/libnio/ch/WindowsAsynchronousFileChannelImpl.c Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -126,5 +126,8 @@
jlong handle)
{
HANDLE h = (HANDLE)jlong_to_ptr(handle);
- CloseHandle(h);
+ BOOL result = CloseHandle(h);
+ if (result == 0) {
+ JNU_ThrowIOExceptionWithLastError(env, "Close failed");
+ }
}
--- a/jdk/test/com/oracle/security/ucrypto/TestAES.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/test/com/oracle/security/ucrypto/TestAES.java Thu Jul 20 09:38:27 2017 -0700
@@ -26,17 +26,22 @@
* @bug 7088989 8014374 8167512 8173708
* @summary Ensure the AES ciphers of OracleUcrypto provider works correctly
* @key randomness
+ * @library /test/lib
+ * @build jdk.test.lib.Platform
+ * jdk.test.lib.Utils
* @run main TestAES
- * @run main/othervm/java.security.policy==empty.policy TestAES
+ * @run main/othervm -Dpolicy=empty.policy TestAES
*/
-import java.io.*;
import java.security.*;
import java.security.spec.*;
import java.util.*;
import javax.crypto.*;
import javax.crypto.spec.*;
+import jdk.test.lib.Platform;
+import jdk.test.lib.Utils;
+
public class TestAES extends UcryptoTest {
private static final String[] PADDEDCIPHER_ALGOS = {
@@ -55,10 +60,29 @@
private static final SecretKey CIPHER_KEY =
new SecretKeySpec(new byte[16], "AES");
+ private static final boolean IS_BAD_SOLARIS = isBadSolaris();
+
public static void main(String[] args) throws Exception {
+ // It has to determine Solaris version before enabling security manager.
+ // Because that needs some permissions, like java.io.FilePermission.
+ String policy = System.getProperty("policy");
+ if (policy != null) {
+ enableSecurityManager(policy);
+ }
+
main(new TestAES(), null);
}
+ // Enables security manager and uses the specified policy file to override
+ // the default one.
+ private static void enableSecurityManager(String policy) {
+ String policyURL = "file://" + System.getProperty("test.src", ".") + "/"
+ + policy;
+ System.out.println("policyURL: " + policyURL);
+ Security.setProperty("policy.url.1", policyURL);
+ System.setSecurityManager(new SecurityManager());
+ }
+
public void doTest(Provider prov) throws Exception {
// Provider for testing Interoperability
Provider sunJCEProv = Security.getProvider("SunJCE");
@@ -136,11 +160,18 @@
boolean testPassed = true;
byte[] in = new byte[16];
(new SecureRandom()).nextBytes(in);
- int blockSize = 16;
- for (int j = 1; j < (in.length - 1); j++) {
- System.out.println("Input offset size: " + j);
- for (int i = 0; i < algos.length; i++) {
+ for (int i = 0; i < algos.length; i++) {
+ if (IS_BAD_SOLARIS
+ && algos[i].indexOf("CFB128") != -1
+ && p.getName().equals("OracleUcrypto")) {
+ System.out.println("Ignore cases on CFB128 due to a pre-S11.3 bug");
+ continue;
+ }
+
+ for (int j = 1; j < (in.length - 1); j++) {
+ System.out.println("Input offset size: " + j);
+
try {
// check ENC
Cipher c;
@@ -177,12 +208,6 @@
k += c.doFinal(eout, firstPartLen+1, eout.length - firstPartLen - 1, dout, k);
if (!checkArrays(in, in.length, dout, k)) testPassed = false;
} catch(Exception ex) {
- if (ex instanceof BadPaddingException &&
- algos[i].indexOf("CFB128") != -1 &&
- p.getName().equals("OracleUcrypto")) {
- System.out.println("Ignore due to a pre-S11.3 bug: " + ex);
- continue;
- }
System.out.println("Unexpected Exception: " + algos[i]);
ex.printStackTrace();
testPassed = false;
@@ -261,7 +286,6 @@
}
}
-
private static void testCipherGCM(SecretKey key,
Provider p) {
boolean testPassed = true;
@@ -349,4 +373,12 @@
}
return equal;
}
+
+ // The cases on CFB128 mode have to be skipped on pre-S11.3.
+ private static boolean isBadSolaris() {
+ return Platform.isSolaris()
+ && Platform.getOsVersionMajor() <= 5
+ && Platform.getOsVersionMinor() <= 11
+ && Utils.distro().compareTo("11.3") < 0;
+ }
}
--- a/jdk/test/com/sun/jdi/LineNumberInfo.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/test/com/sun/jdi/LineNumberInfo.java Thu Jul 20 09:38:27 2017 -0700
@@ -23,7 +23,7 @@
/**
* @test
- * @bug 4238644 4238643 4238641 4944198
+ * @bug 4238644 4238643 4238641 4944198 8181500
* @summary Test javac regressions in the generation of line number info
* @author Gordon Hirsch
*
@@ -72,6 +72,7 @@
36,
37,
36,
+ 37,
40,
41,
42,
@@ -110,6 +111,7 @@
85 ,
93 ,
96 ,
+ 105,
107,
111,
119,
--- a/jdk/test/java/io/File/createTempFile/NameTooLong.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/test/java/io/File/createTempFile/NameTooLong.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -43,7 +43,8 @@
for (String[] ps : prefixSuffix) {
File f;
try {
- f = File.createTempFile(ps[0], ps[1]);
+ f = File.createTempFile(ps[0], ps[1],
+ new File(System.getProperty("test.dir", ".")));
String s = f.toPath().getFileName().toString();
if (!s.startsWith(ps[0].substring(0, 3))) {
System.err.printf("%s did not start with %s%n", s,
--- a/jdk/test/java/io/File/createTempFile/SpecialTempFile.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/test/java/io/File/createTempFile/SpecialTempFile.java Thu Jul 20 09:38:27 2017 -0700
@@ -30,6 +30,9 @@
import java.io.File;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
public class SpecialTempFile {
@@ -45,21 +48,21 @@
final String exceptionMsg = "Unable to create temporary file";
String[] dirs = { null, "." };
+ Path testPath = Paths.get(System.getProperty("test.dir", "."));
for (int i = 0; i < prefix.length; i++) {
boolean exceptionThrown = false;
File f = null;
for (String dir: dirs) {
+ Path tempDir = Files.createTempDirectory(testPath, dir);
System.out.println("In test " + name +
", creating temp file with prefix, " +
prefix[i] + ", suffix, " + suffix[i] +
- ", in dir, " + dir);
+ ", in dir, " + tempDir);
try {
- if (dir == null || dir.isEmpty())
- f = File.createTempFile(prefix[i], suffix[i]);
- else
- f = File.createTempFile(prefix[i], suffix[i], new File(dir));
+ f = File.createTempFile(prefix[i], suffix[i],
+ tempDir.toFile());
} catch (IOException e) {
if (exceptionExpected) {
if (e.getMessage().startsWith(exceptionMsg))
@@ -81,10 +84,6 @@
public static void main(String[] args) throws Exception {
// Common test
final String name = "SpecialTempFile";
- File f = new File(System.getProperty("java.io.tmpdir"), name);
- if (!f.exists()) {
- f.createNewFile();
- }
String[] nulPre = { name + "\u0000" };
String[] nulSuf = { ".test" };
test("NulName", nulPre, nulSuf, true);
--- a/jdk/test/java/nio/charset/Charset/IllegalCharsetName.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/test/java/nio/charset/Charset/IllegalCharsetName.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,15 +22,12 @@
*/
/* @test
- * @bug 6330020
+ * @bug 6330020 8184665
* @summary Ensure Charset.forName/isSupport throws the correct exception
* if the charset names passed in are illegal.
*/
-import java.io.*;
-import java.nio.*;
import java.nio.charset.*;
-import java.util.*;
public class IllegalCharsetName {
public static void main(String[] args) throws Exception {
@@ -59,5 +56,18 @@
} catch (IllegalCharsetNameException x) { //expected
}
}
+
+ // Standard charsets may bypass alias checking during startup, test that
+ // they're all well-behaved as a sanity test
+ checkAliases(StandardCharsets.ISO_8859_1);
+ checkAliases(StandardCharsets.US_ASCII);
+ checkAliases(StandardCharsets.UTF_8);
+ }
+
+ private static void checkAliases(Charset cs) {
+ for (String alias : cs.aliases()) {
+ Charset.forName(alias);
+ Charset.isSupported(alias);
+ }
}
}
--- a/jdk/test/java/nio/file/Files/probeContentType/ParallelProbes.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/test/java/nio/file/Files/probeContentType/ParallelProbes.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.ArrayList;
public class ParallelProbes {
@@ -47,7 +48,8 @@
}
private Path createTmpFile() throws IOException {
- final Path p = Files.createTempFile("prefix", ".json");
+ Path dir = Paths.get(System.getProperty("test.dir", "."));
+ final Path p = Files.createTempFile(dir, "prefix", ".json");
Files.write(p, "{\"test\"}".getBytes());
System.out.println("Write test file <" + p + ">");
return p;
--- a/jdk/test/java/nio/file/spi/SetDefaultProvider.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/test/java/nio/file/spi/SetDefaultProvider.java Thu Jul 20 09:38:27 2017 -0700
@@ -32,6 +32,7 @@
*/
import java.io.File;
+import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -54,6 +55,11 @@
new RuntimeException("jar tool not found")
);
+ private static Path createTempDirectory(String prefix) throws IOException {
+ Path testDir = Paths.get(System.getProperty("test.dir", "."));
+ return Files.createTempDirectory(testDir, prefix);
+ }
+
/**
* Test override of default FileSystemProvider with the main application
* on the class path.
@@ -91,7 +97,7 @@
* is a module that is patched by an exploded patch.
*/
public void testExplodedModuleWithExplodedPatch() throws Exception {
- Path patchdir = Files.createTempDirectory("patch");
+ Path patchdir = createTempDirectory("patch");
String modulePath = System.getProperty("jdk.module.path");
int exitValue = exec(SET_DEFAULT_FSP,
"--patch-module", "m=" + patchdir,
@@ -105,7 +111,7 @@
* is a module that is patched by an exploded patch.
*/
public void testExplodedModuleWithJarPatch() throws Exception {
- Path patchdir = Files.createTempDirectory("patch");
+ Path patchdir = createTempDirectory("patch");
Files.createDirectory(patchdir.resolve("m.properties"));
Path patch = createJarFile(patchdir);
String modulePath = System.getProperty("jdk.module.path");
@@ -142,7 +148,7 @@
* Creates a JAR file containing the entries in the given file tree.
*/
private Path createJarFile(Path dir) throws Exception {
- Path jar = Files.createTempDirectory("tmp").resolve("m.jar");
+ Path jar = createTempDirectory("tmp").resolve("m.jar");
String[] args = { "--create", "--file=" + jar, "-C", dir.toString(), "." };
int ret = JAR_TOOL.run(System.out, System.out, args);
assertTrue(ret == 0);
--- a/jdk/test/jdk/internal/jrtfs/Basic.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/test/jdk/internal/jrtfs/Basic.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -70,15 +70,11 @@
@BeforeClass
public void setup() {
theFileSystem = FileSystems.getFileSystem(URI.create("jrt:/"));
- Path javaHomeDir = Paths.get(System.getProperty("java.home"));
- Path jrtJarPath = javaHomeDir.resolve("jrt-fs.jar");
- Path modulesPath = javaHomeDir.resolve("lib/modules");
- isExplodedBuild = !Files.exists(jrtJarPath)
- && !Files.exists(modulesPath);
- if (Files.notExists(jrtJarPath)
- && Files.notExists(modulesPath)) {
- System.out.printf("Following files not exist: %s, %s",
- jrtJarPath.toString(), modulesPath.toString());
+ Path modulesPath = Paths.get(System.getProperty("java.home"),
+ "lib", "modules");
+ isExplodedBuild = Files.notExists(modulesPath);
+ if (isExplodedBuild) {
+ System.out.printf("%s doesn't exist.", modulesPath.toString());
System.out.println();
System.out.println("It is most probably an exploded build."
+ " Skip non-default FileSystem testing.");
--- a/jdk/test/jdk/internal/jrtfs/WithSecurityManager.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/test/jdk/internal/jrtfs/WithSecurityManager.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,16 +29,28 @@
import java.net.URI;
import java.nio.file.FileSystems;
+import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collections;
public class WithSecurityManager {
public static void main(String[] args) throws Exception {
+ Path modulesPath = Paths.get(System.getProperty("java.home"),
+ "lib", "modules");
+ if (Files.notExists(modulesPath)) {
+ System.out.printf("%s doesn't exist.", modulesPath.toString());
+ System.out.println();
+ System.out.println("It is most probably an exploded build."
+ + " Skip the test.");
+ return;
+ }
+
boolean allow = args[0].equals("allow");
// set security policy to allow access
if (allow) {
+
String testSrc = System.getProperty("test.src");
if (testSrc == null)
testSrc = ".";
--- a/jdk/test/tools/jar/multiRelease/ApiValidatorTest.java Mon Jul 17 09:14:23 2017 -0700
+++ b/jdk/test/tools/jar/multiRelease/ApiValidatorTest.java Thu Jul 20 09:38:27 2017 -0700
@@ -28,8 +28,7 @@
* @modules java.base/jdk.internal.misc
* jdk.compiler
* jdk.jartool
- * @build jdk.test.lib.util.FileUtils
- * jdk.test.lib.Utils
+ * @build jdk.test.lib.Utils
* jdk.test.lib.Asserts
* jdk.test.lib.JDKToolFinder
* jdk.test.lib.JDKToolLauncher
@@ -40,13 +39,10 @@
*/
import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.util.FileUtils;
-import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
-import java.io.IOException;
import java.lang.reflect.Method;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -68,12 +64,6 @@
classes = root.resolve("classes");
}
- @AfterMethod
- void testCleanup() throws IOException {
- FileUtils.deleteFileTreeWithRetry(root);
- }
-
-
@Test(dataProvider = "signatureChange")
public void changeMethodSignature(String sigBase, String sigV10,
boolean isAcceptable) throws Throwable {
--- a/langtools/.hgtags Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/.hgtags Thu Jul 20 09:38:27 2017 -0700
@@ -435,3 +435,4 @@
add6717b655efa3aa9350e917175f3965cfc0729 jdk-10+14
0d0ac75b0f6cbe218362e3fac4bb443496e7258f jdk-9+176
2f01728210c1405ef459e69d9c7247b5df6abb78 jdk-9+177
+2b9273266ea629ca686239c416a7ff8a592d822a jdk-10+15
--- a/langtools/make/gendata/Gendata-jdk.compiler.gmk Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/make/gendata/Gendata-jdk.compiler.gmk Thu Jul 20 09:38:27 2017 -0700
@@ -60,7 +60,8 @@
$(SUPPORT_OUTPUTDIR)/symbols/ct.sym-files/_the.symbols: \
$(COMPILE_CREATE_SYMBOLS) \
- $(wildcard $(LANGTOOLS_TOPDIR)/make/data/symbols/*)
+ $(wildcard $(LANGTOOLS_TOPDIR)/make/data/symbols/*) \
+ $(MODULE_INFOS)
$(RM) -r $(@D)
$(MKDIR) -p $(@D)
$(ECHO) Creating ct.sym classes
--- a/langtools/make/src/classes/build/tools/symbolgenerator/TransitiveDependencies.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/make/src/classes/build/tools/symbolgenerator/TransitiveDependencies.java Thu Jul 20 09:38:27 2017 -0700
@@ -59,13 +59,14 @@
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
List<String> options = Arrays.asList("-source", "9",
"-target", "9",
+ "-proc:only",
"--system", "none",
"--module-source-path", args[0],
"--add-modules", Arrays.stream(args)
.skip(1)
.collect(Collectors.joining(",")));
List<String> jlObjectList = Arrays.asList("java.lang.Object");
- JavacTaskImpl task = (JavacTaskImpl) compiler.getTask(null, null, d -> {}, options, jlObjectList, null);
+ JavacTaskImpl task = (JavacTaskImpl) compiler.getTask(null, null, null, options, jlObjectList, null);
task.enter();
Elements elements = task.getElements();
List<String> todo = new LinkedList<>();
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/ClassFinder.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/ClassFinder.java Thu Jul 20 09:38:27 2017 -0700
@@ -340,6 +340,8 @@
JavaFileObject classfile = c.classfile;
if (classfile != null) {
JavaFileObject previousClassFile = currentClassFile;
+ Symbol prevOwner = c.owner;
+ Name prevName = c.fullname;
try {
if (reader.filling) {
Assert.error("Filling " + classfile.toUri() + " during " + previousClassFile);
@@ -360,6 +362,21 @@
+ classfile.toUri());
}
}
+ } catch (BadClassFile cf) {
+ //the symbol may be partially initialized, purge it:
+ c.owner = prevOwner;
+ c.members_field.getSymbols(sym -> sym.kind == TYP).forEach(sym -> {
+ ClassSymbol csym = (ClassSymbol) sym;
+ csym.owner = sym.packge();
+ csym.owner.members().enter(sym);
+ csym.fullname = sym.flatName();
+ csym.name = Convert.shortName(sym.flatName());
+ csym.reset();
+ });
+ c.fullname = prevName;
+ c.name = Convert.shortName(prevName);
+ c.reset();
+ throw cf;
} finally {
currentClassFile = previousClassFile;
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java Thu Jul 20 09:38:27 2017 -0700
@@ -290,8 +290,7 @@
*/
public Type completionError(DiagnosticPosition pos, CompletionFailure ex) {
log.error(JCDiagnostic.DiagnosticFlag.NON_DEFERRABLE, pos, Errors.CantAccess(ex.sym, ex.getDetailValue()));
- if (ex instanceof ClassFinder.BadClassFile) throw new Abort();
- else return syms.errType;
+ return syms.errType;
}
/** Report an error that wrong type tag was found.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java Thu Jul 20 09:38:27 2017 -0700
@@ -94,10 +94,8 @@
import com.sun.tools.javac.tree.JCTree.JCUses;
import com.sun.tools.javac.tree.JCTree.Tag;
import com.sun.tools.javac.tree.TreeInfo;
-import com.sun.tools.javac.util.Abort;
import com.sun.tools.javac.util.Assert;
import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.JCDiagnostic;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
import com.sun.tools.javac.util.List;
import com.sun.tools.javac.util.ListBuffer;
@@ -105,7 +103,6 @@
import com.sun.tools.javac.util.Name;
import com.sun.tools.javac.util.Names;
import com.sun.tools.javac.util.Options;
-import com.sun.tools.javac.util.Position;
import static com.sun.tools.javac.code.Flags.ABSTRACT;
import static com.sun.tools.javac.code.Flags.ENUM;
@@ -266,8 +263,7 @@
msym.complete();
}
} catch (CompletionFailure ex) {
- log.error(JCDiagnostic.DiagnosticFlag.NON_DEFERRABLE, Position.NOPOS, Errors.CantAccess(ex.sym, ex.getDetailValue()));
- if (ex instanceof ClassFinder.BadClassFile) throw new Abort();
+ chk.completionError(null, ex);
} finally {
depth--;
}
@@ -1220,10 +1216,6 @@
Predicate<ModuleSymbol> observablePred = sym ->
(observable == null) ? (moduleFinder.findModule(sym).kind != ERR) : observable.contains(sym);
Predicate<ModuleSymbol> systemModulePred = sym -> (sym.flags() & Flags.SYSTEM_MODULE) != 0;
- Predicate<ModuleSymbol> noIncubatorPred = sym -> {
- sym.complete();
- return !sym.resolutionFlags.contains(ModuleResolutionFlags.DO_NOT_RESOLVE_BY_DEFAULT);
- };
Set<ModuleSymbol> enabledRoot = new LinkedHashSet<>();
if (rootModules.contains(syms.unnamedModule)) {
@@ -1241,9 +1233,18 @@
jdkModulePred = sym -> true;
}
+ Predicate<ModuleSymbol> noIncubatorPred = sym -> {
+ sym.complete();
+ return !sym.resolutionFlags.contains(ModuleResolutionFlags.DO_NOT_RESOLVE_BY_DEFAULT);
+ };
+
for (ModuleSymbol sym : new HashSet<>(syms.getAllModules())) {
- if (systemModulePred.test(sym) && observablePred.test(sym) && jdkModulePred.test(sym) && noIncubatorPred.test(sym)) {
- enabledRoot.add(sym);
+ try {
+ if (systemModulePred.test(sym) && observablePred.test(sym) && jdkModulePred.test(sym) && noIncubatorPred.test(sym)) {
+ enabledRoot.add(sym);
+ }
+ } catch (CompletionFailure ex) {
+ chk.completionError(null, ex);
}
}
}
@@ -1341,32 +1342,36 @@
result.add(syms.java_base);
while (primaryTodo.nonEmpty() || secondaryTodo.nonEmpty()) {
- ModuleSymbol current;
- boolean isPrimaryTodo;
- if (primaryTodo.nonEmpty()) {
- current = primaryTodo.head;
- primaryTodo = primaryTodo.tail;
- isPrimaryTodo = true;
- } else {
- current = secondaryTodo.head;
- secondaryTodo = secondaryTodo.tail;
- isPrimaryTodo = false;
- }
- if (observable != null && !observable.contains(current))
- continue;
- if (!result.add(current) || current == syms.unnamedModule || ((current.flags_field & Flags.AUTOMATIC_MODULE) != 0))
- continue;
- current.complete();
- if (current.kind == ERR && (isPrimaryTodo || base.contains(current)) && warnedMissing.add(current)) {
- log.error(Errors.ModuleNotFound(current));
- }
- for (RequiresDirective rd : current.requires) {
- if (rd.module == syms.java_base) continue;
- if ((rd.isTransitive() && isPrimaryTodo) || rootModules.contains(current)) {
- primaryTodo = primaryTodo.prepend(rd.module);
+ try {
+ ModuleSymbol current;
+ boolean isPrimaryTodo;
+ if (primaryTodo.nonEmpty()) {
+ current = primaryTodo.head;
+ primaryTodo = primaryTodo.tail;
+ isPrimaryTodo = true;
} else {
- secondaryTodo = secondaryTodo.prepend(rd.module);
+ current = secondaryTodo.head;
+ secondaryTodo = secondaryTodo.tail;
+ isPrimaryTodo = false;
}
+ if (observable != null && !observable.contains(current))
+ continue;
+ if (!result.add(current) || current == syms.unnamedModule || ((current.flags_field & Flags.AUTOMATIC_MODULE) != 0))
+ continue;
+ current.complete();
+ if (current.kind == ERR && (isPrimaryTodo || base.contains(current)) && warnedMissing.add(current)) {
+ log.error(Errors.ModuleNotFound(current));
+ }
+ for (RequiresDirective rd : current.requires) {
+ if (rd.module == syms.java_base) continue;
+ if ((rd.isTransitive() && isPrimaryTodo) || rootModules.contains(current)) {
+ primaryTodo = primaryTodo.prepend(rd.module);
+ } else {
+ secondaryTodo = secondaryTodo.prepend(rd.module);
+ }
+ }
+ } catch (CompletionFailure ex) {
+ chk.completionError(null, ex);
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java Thu Jul 20 09:38:27 2017 -0700
@@ -1425,7 +1425,7 @@
ClassSymbol c = readClassSymbol(nextChar());
NameAndType nt = readNameAndType(nextChar());
- if (c.members_field == null)
+ if (c.members_field == null || c.kind != TYP)
throw badClassFile("bad.enclosing.class", self, c);
MethodSymbol m = findMethod(nt, c.members_field, self.flags());
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java Thu Jul 20 09:38:27 2017 -0700
@@ -400,8 +400,6 @@
} catch (CompletionFailure ex) {
// inlined Check.completionError as it is not initialized yet
log.error(Errors.CantAccess(ex.sym, ex.getDetailValue()));
- if (ex instanceof ClassFinder.BadClassFile)
- throw new Abort();
}
source = Source.instance(context);
attr = Attr.instance(context);
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java Thu Jul 20 09:38:27 2017 -0700
@@ -2243,8 +2243,20 @@
}
}
- JCNewArray na = toP(F.at(newpos).NewArray(elemtype, dims.toList(), null));
+ List<JCExpression> elems = null;
+ int errpos = token.pos;
+
+ if (token.kind == LBRACE) {
+ elems = arrayInitializerElements(newpos, elemtype);
+ }
+
+ JCNewArray na = toP(F.at(newpos).NewArray(elemtype, dims.toList(), elems));
na.dimAnnotations = dimAnnotations.toList();
+
+ if (elems != null) {
+ return syntaxError(errpos, List.of(na), "illegal.array.creation.both.dimension.and.initialization");
+ }
+
return na;
}
}
@@ -2270,6 +2282,11 @@
/** ArrayInitializer = "{" [VariableInitializer {"," VariableInitializer}] [","] "}"
*/
JCExpression arrayInitializer(int newpos, JCExpression t) {
+ List<JCExpression> elems = arrayInitializerElements(newpos, t);
+ return toP(F.at(newpos).NewArray(t, List.nil(), elems));
+ }
+
+ List<JCExpression> arrayInitializerElements(int newpos, JCExpression t) {
accept(LBRACE);
ListBuffer<JCExpression> elems = new ListBuffer<>();
if (token.kind == COMMA) {
@@ -2283,7 +2300,7 @@
}
}
accept(RBRACE);
- return toP(F.at(newpos).NewArray(t, List.nil(), elems.toList()));
+ return elems.toList();
}
/** VariableInitializer = ArrayInitializer | Expression
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Thu Jul 20 09:38:27 2017 -0700
@@ -165,6 +165,9 @@
compiler.err.array.dimension.missing=\
array dimension missing
+compiler.err.illegal.array.creation.both.dimension.and.initialization=\
+ array creation with both dimension expression and initialization is illegal
+
# 0: type
compiler.err.array.req.but.found=\
array required, but {0} found
--- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractIndexWriter.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractIndexWriter.java Thu Jul 20 09:38:27 2017 -0700
@@ -455,7 +455,7 @@
* @throws DocFileIOException if there is a problem creating the search index file
*/
protected void createSearchIndexFile(DocPath searchIndexFile, DocPath searchIndexZip,
- DocPath searchIndexJS, List<SearchIndexItem> searchIndex, String varName) throws DocFileIOException {
+ DocPath searchIndexJS, Collection<SearchIndexItem> searchIndex, String varName) throws DocFileIOException {
if (!searchIndex.isEmpty()) {
StringBuilder searchVar = new StringBuilder("[");
boolean first = true;
--- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java Thu Jul 20 09:38:27 2017 -0700
@@ -532,7 +532,7 @@
tdDesc.addStyle(HtmlStyle.colLast);
writer.addSummaryLinkComment(this, member, firstSentenceTags, tdDesc);
tr.addContent(tdDesc);
- if (utils.isMethod(member) && !utils.isAnnotationType(member)) {
+ if (utils.isMethod(member) && !utils.isAnnotationType(member) && !utils.isProperty(name(member))) {
int methodType = utils.isStatic(member) ? MethodTypes.STATIC.tableTabs().value() :
MethodTypes.INSTANCE.tableTabs().value();
if (utils.isInterface(member.getEnclosingElement())) {
--- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlConfiguration.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlConfiguration.java Thu Jul 20 09:38:27 2017 -0700
@@ -224,7 +224,7 @@
protected List<SearchIndexItem> packageSearchIndex = new ArrayList<>();
- protected List<SearchIndexItem> tagSearchIndex = new ArrayList<>();
+ protected SortedSet<SearchIndexItem> tagSearchIndex = new TreeSet<>(makeSearchTagComparator());
protected List<SearchIndexItem> typeSearchIndex = new ArrayList<>();
@@ -348,6 +348,16 @@
return htmlTag.allowTag(this.htmlVersion);
}
+ public Comparator<SearchIndexItem> makeSearchTagComparator() {
+ return (SearchIndexItem sii1, SearchIndexItem sii2) -> {
+ int result = (sii1.getLabel()).compareTo(sii2.getLabel());
+ if (result == 0) {
+ result = (sii1.getHolder()).compareTo(sii2.getHolder());
+ }
+ return result;
+ };
+ }
+
/**
* Decide the page which will appear first in the right-hand frame. It will
* be "overview-summary.html" if "-overview" option is used or no
--- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java Thu Jul 20 09:38:27 2017 -0700
@@ -107,12 +107,16 @@
Set<Character> keys = new TreeSet<>(indexbuilder.getIndexMap().keySet());
keys.addAll(configuration.tagSearchIndexKeys);
ListIterator<Character> li = new ArrayList<>(keys).listIterator();
+ int prev;
+ int next;
while (li.hasNext()) {
+ prev = (li.hasPrevious()) ? li.previousIndex() + 1 : -1;
Object ch = li.next();
+ next = (li.hasNext()) ? li.nextIndex() + 1 : -1;
DocPath filename = DocPaths.indexN(li.nextIndex());
SplitIndexWriter indexgen = new SplitIndexWriter(configuration,
path.resolve(filename),
- indexbuilder, keys, li.previousIndex(), li.nextIndex());
+ indexbuilder, keys, prev, next);
indexgen.generateIndexFile((Character) ch);
if (!li.hasNext()) {
indexgen.createSearchIndexFiles();
--- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css Thu Jul 20 09:38:27 2017 -0700
@@ -434,21 +434,21 @@
}
.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link,
-.requiresSummary caption a:link, .packagesSummary caption a:link, providesSummary caption a:link,
+.requiresSummary caption a:link, .packagesSummary caption a:link, .providesSummary caption a:link,
.usesSummary caption a:link,
.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
-.requiresSummary caption a:hover, .packagesSummary caption a:hover, providesSummary caption a:hover,
+.requiresSummary caption a:hover, .packagesSummary caption a:hover, .providesSummary caption a:hover,
.usesSummary caption a:hover,
.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active,
-.requiresSummary caption a:active, .packagesSummary caption a:active, providesSummary caption a:active,
+.requiresSummary caption a:active, .packagesSummary caption a:active, .providesSummary caption a:active,
.usesSummary caption a:active,
.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
-.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited
-.requiresSummary caption a:visited, .packagesSummary caption a:visited, providesSummary caption a:visited,
+.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited,
+.requiresSummary caption a:visited, .packagesSummary caption a:visited, .providesSummary caption a:visited,
.usesSummary caption a:visited {
- color:#FFFFFF;
+ color:#1f389c;
}
.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span,
--- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Start.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Start.java Thu Jul 20 09:38:27 2017 -0700
@@ -38,7 +38,9 @@
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
+import java.util.MissingResourceException;
import java.util.Objects;
+import java.util.ResourceBundle;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -177,6 +179,16 @@
usage("main.Xusage", OptionKind.EXTENDED, "main.Xusage.foot");
}
+ @Override
+ void version() {
+ messager.notice("javadoc.version", messager.programName, version("release"));
+ }
+
+ @Override
+ void fullVersion() {
+ messager.notice("javadoc.fullversion", messager.programName, version("full"));
+ }
+
private void usage(String headerKey, OptionKind kind, String footerKey) {
messager.notice(headerKey);
showToolOptions(kind);
@@ -193,6 +205,24 @@
messager.notice(footerKey);
}
+ private static final String versionRBName = "jdk.javadoc.internal.tool.resources.version";
+ private static ResourceBundle versionRB;
+
+ private static String version(String key) {
+ if (versionRB == null) {
+ try {
+ versionRB = ResourceBundle.getBundle(versionRBName);
+ } catch (MissingResourceException e) {
+ return Log.getLocalizedString("version.not.available");
+ }
+ }
+ try {
+ return versionRB.getString(key);
+ } catch (MissingResourceException e) {
+ return Log.getLocalizedString("version.not.available");
+ }
+ }
+
void showToolOptions(OptionKind kind) {
Comparator<ToolOption> comp = new Comparator<ToolOption>() {
final Collator collator = Collator.getInstance(Locale.US);
--- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/ToolOption.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/ToolOption.java Thu Jul 20 09:38:27 2017 -0700
@@ -359,6 +359,20 @@
public void process(Helper helper) {
throw new AssertionError("the -J flag should be caught by the launcher.");
}
+ },
+
+ VERSION("--version", STANDARD) {
+ @Override
+ public void process(Helper helper) throws OptionException {
+ throw new OptionException(OK, helper::version);
+ }
+ },
+
+ FULLVERSION("--full-version", HIDDEN) {
+ @Override
+ public void process(Helper helper) throws OptionException {
+ throw new OptionException(OK, helper::fullVersion);
+ }
};
public final String primaryName;
@@ -456,6 +470,9 @@
abstract void usage();
abstract void Xusage();
+ abstract void version();
+ abstract void fullVersion();
+
abstract String getLocalizedMessage(String msg, Object... args);
abstract OptionHelper getOptionHelper();
--- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc.properties Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc.properties Thu Jul 20 09:38:27 2017 -0700
@@ -200,6 +200,9 @@
main.opt.quiet.desc=\
Do not display status messages
+main.opt.version.desc=\
+ Print version information
+
main.opt.J.arg=\
<flag>
main.opt.J.desc=\
@@ -306,3 +309,5 @@
javadoc.warning.msg={0}: warning - {1}
javadoc.note.msg = {1}
javadoc.note.pos.msg= {0}: {1}
+javadoc.version={0} {1}
+javadoc.fullversion={0} full version "{1}"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/jdk/javadoc/doclet/testIndexFiles/TestIndexFiles.java Thu Jul 20 09:38:27 2017 -0700
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8170825
+ * @summary Perform tests on index files generated by javadoc.
+ * @author bpatel
+ * @library ../lib
+ * @modules jdk.javadoc/jdk.javadoc.internal.tool
+ * @build JavadocTester
+ * @run main TestIndexFiles
+ */
+
+public class TestIndexFiles extends JavadocTester {
+
+ public static void main(String... args) throws Exception {
+ TestIndexFiles tester = new TestIndexFiles();
+ tester.runTests();
+ }
+
+ @Test
+ void testIndexFiles() {
+ javadoc("-d", "out", "-splitindex", "-Xdoclint:none", "-sourcepath", testSrc,
+ "-use", "pkg");
+ checkExit(Exit.OK);
+ checkIndexFiles(true);
+ }
+
+ void checkIndexFiles(boolean found) {
+ checkOutput("index-files/index-1.html", found,
+ "<li>Prev Letter</li>\n"
+ + "<li><a href=\"index-2.html\">Next Letter</a></li>");
+ checkOutput("index-files/index-5.html", found,
+ "<li><a href=\"index-4.html\">Prev Letter</a></li>\n"
+ + "<li>Next Letter</li>");
+ checkOutput("index-files/index-1.html", !found,
+ "<li><a href=\"index-0.html\">Prev Letter</a></li>\n"
+ + "<li><a href=\"index-1.html\">Next Letter</a></li>");
+ checkOutput("index-files/index-5.html", !found,
+ "<li><a href=\"index-4.html\">Prev Letter</a></li>\n"
+ + "<li><a href=\"index-5.html\">Next Letter</a></li>");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/jdk/javadoc/doclet/testIndexFiles/pkg/ClassForIndexFilesTest.java Thu Jul 20 09:38:27 2017 -0700
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package pkg;
+
+public class ClassForIndexFilesTest {
+
+ /**
+ * Test field.
+ */
+ public int field1;
+
+ /**
+ * Test method.
+ */
+ public void testMethod() {
+ }
+
+ /**
+ * Another test method.
+ */
+ public void anotherTestMethod() {
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/jdk/javadoc/doclet/testIndexFiles/pkg/package-info.java Thu Jul 20 09:38:27 2017 -0700
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Test pkg used for testing index files.
+ */
+package pkg;
--- a/langtools/test/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/test/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java Thu Jul 20 09:38:27 2017 -0700
@@ -24,7 +24,7 @@
/*
* @test
* @bug 7112427 8012295 8025633 8026567 8061305 8081854 8150130 8162363
- * 8167967 8172528 8175200 8178830
+ * 8167967 8172528 8175200 8178830 8182257
* @summary Test of the JavaFX doclet features.
* @author jvalenta
* @library ../lib
@@ -137,7 +137,10 @@
"<h3>Property Summary</h3>\n"
+ "<table class=\"memberSummary\" summary=\"Property Summary table, listing properties, and an explanation\">\n"
+ "<caption><span>Properties</span><span class=\"tabEnd\"> </span></caption>",
- "");
+ "<tr class=\"altColor\">\n"
+ + "<td class=\"colFirst\"><code><a href=\"../pkg1/C.BooleanProperty.html\" title=\"class in pkg1\">C.BooleanProperty</a></code></td>\n",
+ "<tr class=\"rowColor\">\n"
+ + "<td class=\"colFirst\"><code><a href=\"../pkg1/C.DoubleProperty.html\" title=\"class in pkg1\">C.DoubleProperty</a></code></td>\n");
checkOutput("pkg1/C.html", false,
"A()",
@@ -147,7 +150,11 @@
+ "</span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a>"
+ "</span><span class=\"tabEnd\"> </span></span><span id=\"t4\" class=\"tableTab\"><span>"
+ "<a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\"> </span></span>"
- + "</caption>");
+ + "</caption>",
+ "<tr id=\"i0\" class=\"altColor\">\n"
+ + "<td class=\"colFirst\"><code><a href=\"../pkg1/C.BooleanProperty.html\" title=\"class in pkg1\">C.BooleanProperty</a></code></td>\n",
+ "<tr id=\"i1\" class=\"rowColor\">\n"
+ + "<td class=\"colFirst\"><code><a href=\"../pkg1/C.DoubleProperty.html\" title=\"class in pkg1\">C.DoubleProperty</a></code></td>\n");
checkOutput("index-all.html", true,
"<div class=\"block\">Gets the value of the property paused.</div>",
--- a/langtools/test/jdk/javadoc/doclet/testModules/TestModules.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/test/jdk/javadoc/doclet/testModules/TestModules.java Thu Jul 20 09:38:27 2017 -0700
@@ -25,7 +25,7 @@
* @test
* @bug 8154119 8154262 8156077 8157987 8154261 8154817 8135291 8155995 8162363
* 8168766 8168688 8162674 8160196 8175799 8174974 8176778 8177562 8175218 8175823 8166306
- * 8178043
+ * 8178043 8181622
* @summary Test modules support in javadoc.
* @author bpatel
* @library ../lib
@@ -394,7 +394,7 @@
+ "<a name=\"module.description\">\n"
+ "<!-- -->\n"
+ "</a>\n"
- + "<div class=\"block\">This is a test description for the moduleA module. Search "
+ + "<div class=\"block\">This is a test description for the moduleA module with a Search "
+ "phrase <a id=\"searchphrase\" class=\"searchTagResult\">search phrase</a>.</div>");
checkOutput("moduleB-summary.html", found,
"<!-- ============ MODULE DESCRIPTION =========== -->\n"
@@ -454,7 +454,7 @@
+ "<a id=\"module.description\">\n"
+ "<!-- -->\n"
+ "</a>\n"
- + "<div class=\"block\">This is a test description for the moduleA module. Search "
+ + "<div class=\"block\">This is a test description for the moduleA module with a Search "
+ "phrase <a id=\"searchphrase\" class=\"searchTagResult\">search phrase</a>.</div>");
checkOutput("moduleB-summary.html", found,
"<section role=\"region\">\n"
@@ -755,7 +755,8 @@
+ "<td class=\"colFirst\">transitive</td>\n"
+ "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleA-summary.html\">moduleA</a></th>\n"
+ "<td class=\"colLast\">\n"
- + "<div class=\"block\">This is a test description for the moduleA module.</div>\n"
+ + "<div class=\"block\">This is a test description for the moduleA module with a Search "
+ + "phrase <a id=\"searchphrase\" class=\"searchTagResult\">search phrase</a>.</div>\n"
+ "</td>\n"
+ "</tr>\n"
+ "<tr class=\"rowColor\">\n"
@@ -839,7 +840,8 @@
"<dl>\n"
+ "<dt><a href=\"moduleA-summary.html\">moduleA</a> - module moduleA</dt>\n"
+ "<dd>\n"
- + "<div class=\"block\">This is a test description for the moduleA module.</div>\n"
+ + "<div class=\"block\">This is a test description for the moduleA module with a Search "
+ + "phrase <a id=\"searchphrase\" class=\"searchTagResult\">search phrase</a>.</div>\n"
+ "</dd>\n"
+ "<dt><a href=\"moduleB-summary.html\">moduleB</a> - module moduleB</dt>\n"
+ "<dd>\n"
@@ -854,13 +856,21 @@
+ "search_word</a></span> - Search tag in moduleB</dt>\n"
+ "<dd> </dd>\n"
+ "</dl>");
+ checkOutput("index-all.html", false,
+ "<dt><span class=\"searchTagLink\"><a href=\"moduleA-summary.html#searchphrase\">"
+ + "search phrase</a></span> - Search tag in moduleA</dt>\n"
+ + "<dd>with description</dd>\n"
+ + "<dt><span class=\"searchTagLink\"><a href=\"moduleA-summary.html#searchphrase\">"
+ + "search phrase</a></span> - Search tag in moduleA</dt>\n"
+ + "<dd>with description</dd>");
}
void checkModuleModeCommon() {
checkOutput("overview-summary.html", true,
"<th class=\"colFirst\" scope=\"row\"><a href=\"moduleA-summary.html\">moduleA</a></th>\n"
+ "<td class=\"colLast\">\n"
- + "<div class=\"block\">This is a test description for the moduleA module.</div>\n"
+ + "<div class=\"block\">This is a test description for the moduleA module with a Search "
+ + "phrase <a id=\"searchphrase\" class=\"searchTagResult\">search phrase</a>.</div>\n"
+ "</td>",
"<th class=\"colFirst\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n"
+ "<td class=\"colLast\">\n"
@@ -868,7 +878,7 @@
+ "</td>",
"<th class=\"colFirst\" scope=\"row\"><a href=\"moduletags-summary.html\">moduletags</a></th>\n"
+ "<td class=\"colLast\">\n"
- + "<div class=\"block\">This is a test description for the moduleA module.<br>\n"
+ + "<div class=\"block\">This is a test description for the moduletags module.<br>\n"
+ " Type Link: <a href=\"testpkgmdltags/TestClassInModuleTags.html\" title=\"class in testpkgmdltags\"><code>TestClassInModuleTags</code></a>.<br>\n"
+ " Member Link: <a href=\"testpkgmdltags/TestClassInModuleTags.html#testMethod-java.lang.String-\"><code>testMethod(String)</code></a>.<br>\n"
+ " Package Link: <a href=\"testpkgmdltags/package-summary.html\"><code>testpkgmdltags</code></a>.<br></div>\n"
@@ -896,7 +906,8 @@
"<td class=\"colFirst\">transitive static</td>\n"
+ "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleA-summary.html\">moduleA</a></th>\n"
+ "<td class=\"colLast\">\n"
- + "<div class=\"block\">This is a test description for the moduleA module.</div>\n"
+ + "<div class=\"block\">This is a test description for the moduleA module with a Search "
+ + "phrase <a id=\"searchphrase\" class=\"searchTagResult\">search phrase</a>.</div>\n"
+ "</td>",
"<table class=\"requiresSummary\" summary=\"Requires table, listing modules, and an explanation\">\n"
+ "<caption><span>Requires</span><span class=\"tabEnd\"> </span></caption>\n"
--- a/langtools/test/jdk/javadoc/doclet/testModules/moduleA/module-info.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/test/jdk/javadoc/doclet/testModules/moduleA/module-info.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
*/
/**
- * This is a test description for the moduleA module. Search phrase {@index "search phrase" with description}.
+ * This is a test description for the moduleA module with a Search phrase {@index "search phrase" with description}.
*
* @deprecated This module is deprecated.
*/
--- a/langtools/test/jdk/javadoc/doclet/testModules/moduletags/module-info.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/test/jdk/javadoc/doclet/testModules/moduletags/module-info.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
*/
/**
- * This is a test description for the moduleA module.<br>
+ * This is a test description for the moduletags module.<br>
* Type Link: {@link testpkgmdltags.TestClassInModuleTags}.<br>
* Member Link: {@link testpkgmdltags.TestClassInModuleTags#testMethod(String)}.<br>
* Package Link: {@link testpkgmdltags}.<br>
--- a/langtools/test/jdk/javadoc/doclet/testSearch/TestSearch.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/test/jdk/javadoc/doclet/testSearch/TestSearch.java Thu Jul 20 09:38:27 2017 -0700
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 8141492 8071982 8141636 8147890 8166175 8168965 8176794 8175218 8147881
+ * @bug 8141492 8071982 8141636 8147890 8166175 8168965 8176794 8175218 8147881 8181622
* @summary Test the search feature of javadoc.
* @author bpatel
* @library ../lib
@@ -65,6 +65,7 @@
checkInvalidUsageIndexTag();
checkSearchOutput(true);
checkSingleIndex(true);
+ checkSingleIndexSearchTagDuplication();
checkJqueryAndImageFiles(true);
checkSearchJS();
checkFiles(true,
@@ -86,6 +87,7 @@
checkDocLintErrors();
checkSearchOutput(true);
checkSingleIndex(true);
+ checkSingleIndexSearchTagDuplication();
checkJqueryAndImageFiles(true);
checkSearchJS();
checkFiles(true,
@@ -127,6 +129,7 @@
checkExit(Exit.OK);
checkSearchOutput(true);
checkSingleIndex(true);
+ checkSingleIndexSearchTagDuplication();
checkJqueryAndImageFiles(true);
checkSearchJS();
checkFiles(true,
@@ -210,6 +213,7 @@
checkInvalidUsageIndexTag();
checkSearchOutput(true);
checkSplitIndex();
+ checkSplitIndexSearchTagDuplication();
checkJqueryAndImageFiles(true);
checkSearchJS();
checkFiles(true,
@@ -498,4 +502,34 @@
+ " }\n"
+ " });");
}
+
+ void checkSingleIndexSearchTagDuplication() {
+ // Test for search tags duplication in index file.
+ checkOutput("index-all.html", true,
+ "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">"
+ + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError</dt>\n"
+ + "<dd>with description</dd>");
+ checkOutput("index-all.html", false,
+ "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">"
+ + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError</dt>\n"
+ + "<dd>with description</dd>\n"
+ + "<dt><span class=\"searchTagLink\"><a href=\"pkg2/TestError.html#SearchTagDeprecatedMethod\">"
+ + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError</dt>\n"
+ + "<dd>with description</dd>");
+ }
+
+ void checkSplitIndexSearchTagDuplication() {
+ // Test for search tags duplication in index file.
+ checkOutput("index-files/index-13.html", true,
+ "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">"
+ + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError</dt>\n"
+ + "<dd>with description</dd>");
+ checkOutput("index-files/index-13.html", false,
+ "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">"
+ + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError</dt>\n"
+ + "<dd>with description</dd>\n"
+ + "<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">"
+ + "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError</dt>\n"
+ + "<dd>with description</dd>");
+ }
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/jdk/javadoc/doclet/testVersionOption/TestVersionOption.java Thu Jul 20 09:38:27 2017 -0700
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8177048
+ * @summary javadoc should support --version and --full-version flags
+ * @library ../lib
+ * @modules jdk.javadoc/jdk.javadoc.internal.tool
+ * @build JavadocTester TestVersionOption
+ * @run main TestVersionOption
+ */
+
+public class TestVersionOption extends JavadocTester {
+
+ public static void main(String... args) throws Exception {
+ TestVersionOption tester = new TestVersionOption();
+ tester.runTests();
+ }
+
+ @Test
+ void testFullVersionOption() {
+ javadoc("--full-version");
+ checkExit(Exit.OK);
+
+ checkOutput(Output.OUT, true, "javadoc full version \"" + System.getProperty("java.runtime.version") + "\"");
+ }
+
+
+ @Test
+ void testVersionOption() {
+ javadoc("--version");
+ checkExit(Exit.OK);
+
+ checkOutput(Output.OUT, true, "javadoc " + System.getProperty("java.version"));
+ }
+
+}
--- a/langtools/test/tools/javac/ExtraneousEquals.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/test/tools/javac/ExtraneousEquals.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,6 +1,6 @@
/*
* @test /nodynamiccopyright/
- * @bug 5019614
+ * @bug 5019614 8057647
* @summary variance prototype syntax leftover
*
* @compile/fail/ref=ExtraneousEquals.out -XDrawDiagnostics ExtraneousEquals.java
--- a/langtools/test/tools/javac/ExtraneousEquals.out Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/test/tools/javac/ExtraneousEquals.out Thu Jul 20 09:38:27 2017 -0700
@@ -1,6 +1,4 @@
ExtraneousEquals.java:10:23: compiler.err.illegal.start.of.expr
ExtraneousEquals.java:10:24: compiler.err.illegal.start.of.expr
-ExtraneousEquals.java:10:25: compiler.err.expected: ';'
-ExtraneousEquals.java:10:28: compiler.err.not.stmt
-ExtraneousEquals.java:10:29: compiler.err.expected: ';'
-5 errors
+ExtraneousEquals.java:10:26: compiler.err.illegal.array.creation.both.dimension.and.initialization
+3 errors
--- a/langtools/test/tools/javac/T8003967/DetectMutableStaticFields.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/test/tools/javac/T8003967/DetectMutableStaticFields.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -91,6 +91,7 @@
static {
ignore("javax/tools/ToolProvider", "instance");
+ ignore("jdk/javadoc/internal/tool/Start", "versionRB");
ignore("com/sun/tools/javah/JavahTask", "versionRB");
ignore("com/sun/tools/classfile/Dependencies$DefaultFilter", "instance");
ignore("com/sun/tools/javap/JavapTask", "versionRB");
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/diags/examples/IllegalArrayCreation.java Thu Jul 20 09:38:27 2017 -0700
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+// key: compiler.err.illegal.array.creation.both.dimension.and.initialization
+
+class IllegalArrayCreation {
+ int[] foo = new int[10] { 1, 2, 3 };
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/modules/BrokenModulesTest.java Thu Jul 20 09:38:27 2017 -0700
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8182450
+ * @summary Test model behavior when a completing a broken module-info.
+ * @library /tools/lib
+ * @modules
+ * jdk.compiler/com.sun.tools.javac.api
+ * jdk.compiler/com.sun.tools.javac.code
+ * jdk.compiler/com.sun.tools.javac.main
+ * jdk.compiler/com.sun.tools.javac.processing
+ * @build toolbox.ToolBox toolbox.JavacTask toolbox.ModuleBuilder ModuleTestBase
+ * @run main BrokenModulesTest
+ */
+
+import java.nio.file.Path;
+import java.util.List;
+
+import javax.tools.JavaCompiler;
+import javax.tools.ToolProvider;
+
+import com.sun.tools.javac.api.JavacTaskImpl;
+
+public class BrokenModulesTest extends ModuleTestBase {
+
+ public static void main(String... args) throws Exception {
+ new BrokenModulesTest().runTests();
+ }
+
+ List<String> jlObjectList = List.of("java.lang.Object");
+ JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+
+ @Test
+ public void testBrokenModuleInfoModuleSourcePath(Path base) throws Exception {
+ Path msp = base.resolve("msp");
+ Path ma = msp.resolve("ma");
+ tb.writeJavaFiles(ma,
+ "module ma { requires not.available; exports api1; }",
+ "package api1; public interface Api { }");
+ Path out = base.resolve("out");
+ tb.createDirectories(out);
+
+ List<String> opts = List.of("--module-source-path", msp.toString(),
+ "--add-modules", "ma");
+ JavacTaskImpl task = (JavacTaskImpl) compiler.getTask(null, null, null, opts, jlObjectList, null);
+
+ task.enter();
+
+ task.getElements().getModuleElement("java.base");
+ }
+
+ @Test
+ public void testSystem(Path base) throws Exception {
+ Path jdkCompiler = base.resolve("jdk.compiler");
+ tb.writeJavaFiles(jdkCompiler,
+ "module jdk.compiler { requires not.available; }");
+ Path out = base.resolve("out");
+ tb.createDirectories(out);
+
+ List<String> opts = List.of("--patch-module", "jdk.compiler=" + jdkCompiler.toString(),
+ "--add-modules", "jdk.compiler");
+ JavacTaskImpl task = (JavacTaskImpl) compiler.getTask(null, null, null, opts, jlObjectList, null);
+
+ task.enter();
+
+ task.getElements().getModuleElement("java.base");
+ }
+
+ @Test
+ public void testParseError(Path base) throws Exception {
+ Path msp = base.resolve("msp");
+ Path ma = msp.resolve("ma");
+ tb.writeJavaFiles(ma,
+ "broken module ma { }",
+ "package api1; public interface Api { }");
+ Path out = base.resolve("out");
+ tb.createDirectories(out);
+
+ List<String> opts = List.of("--module-source-path", msp.toString(),
+ "--add-modules", "ma");
+ JavacTaskImpl task = (JavacTaskImpl) compiler.getTask(null, null, null, opts, jlObjectList, null);
+
+ task.analyze();
+
+ task.getElements().getModuleElement("java.base");
+ }
+
+}
--- a/langtools/test/tools/javac/modules/EdgeCases.java Mon Jul 17 09:14:23 2017 -0700
+++ b/langtools/test/tools/javac/modules/EdgeCases.java Thu Jul 20 09:38:27 2017 -0700
@@ -467,7 +467,8 @@
List<String> expected = Arrays.asList(
"- compiler.err.cant.access: m1x.module-info, (compiler.misc.bad.class.file.header: module-info.class, (compiler.misc.module.name.mismatch: other, m1x))",
- "1 error");
+ "module-info.java:1:1: compiler.err.module.not.found: m1x",
+ "2 errors");
if (!expected.equals(log)) {
throw new AssertionError("Unexpected output: " + log);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/processing/model/completionfailure/NoAbortForBadClassFile.java Thu Jul 20 09:38:27 2017 -0700
@@ -0,0 +1,248 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8182450
+ * @summary Bad classfiles should not abort compilations
+ * @library /tools/lib
+ * @modules
+ * jdk.compiler/com.sun.tools.javac.api
+ * jdk.compiler/com.sun.tools.javac.code
+ * jdk.compiler/com.sun.tools.javac.comp
+ * jdk.compiler/com.sun.tools.javac.jvm
+ * jdk.compiler/com.sun.tools.javac.main
+ * jdk.compiler/com.sun.tools.javac.processing
+ * jdk.compiler/com.sun.tools.javac.util
+ * @build toolbox.ToolBox toolbox.JavacTask
+ * @run main NoAbortForBadClassFile
+ */
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import com.sun.tools.javac.api.JavacTaskImpl;
+import com.sun.tools.javac.api.JavacTool;
+import com.sun.tools.javac.code.Flags;
+import com.sun.tools.javac.code.Symbol.ClassSymbol;
+import com.sun.tools.javac.code.Symbol.CompletionFailure;
+import com.sun.tools.javac.code.Symtab;
+import com.sun.tools.javac.jvm.ClassReader;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.Context.Factory;
+import com.sun.tools.javac.util.Names;
+import com.sun.tools.javac.util.Options;
+import toolbox.Task;
+import toolbox.Task.Expect;
+
+import toolbox.TestRunner;
+import toolbox.ToolBox;
+
+public class NoAbortForBadClassFile extends TestRunner {
+
+ private ToolBox tb = new ToolBox();
+
+ public NoAbortForBadClassFile() {
+ super(System.out);
+ }
+
+ public static void main(String... args) throws Exception {
+ new NoAbortForBadClassFile().runTests(m -> new Object[] { Paths.get(m.getName()) });
+ }
+
+ @Test
+ public void testBrokenClassFile(Path base) throws Exception {
+ Path classes = base.resolve("classes");
+ Path brokenClassFile = classes.resolve("test").resolve("Broken.class");
+
+ Files.createDirectories(brokenClassFile.getParent());
+ Files.newOutputStream(brokenClassFile).close();
+
+ Path src = base.resolve("src");
+ tb.writeJavaFiles(src,
+ "package test; public class Test { private void test() { Broken b; String.unknown(); } }");
+ Path out = base.resolve("out");
+ tb.createDirectories(out);
+
+ List<String> log = new toolbox.JavacTask(tb)
+ .options("-classpath", classes.toString(),
+ "-XDrawDiagnostics")
+ .outdir(out)
+ .files(tb.findJavaFiles(src))
+ .run(Expect.FAIL)
+ .writeAll()
+ .getOutputLines(Task.OutputKind.DIRECT);
+
+ List<String> expectedOut = Arrays.asList(
+ "Test.java:1:57: compiler.err.cant.access: test.Broken, (compiler.misc.bad.class.file.header: Broken.class, (compiler.misc.class.file.wrong.class: java.lang.AutoCloseable))",
+ "Test.java:1:73: compiler.err.cant.resolve.location.args: kindname.method, unknown, , , (compiler.misc.location: kindname.class, java.lang.String, null)",
+ "2 errors"
+ );
+
+ if (!expectedOut.equals(log))
+ throw new Exception("expected output not found: " + log);
+ }
+
+ @Test
+ public void testLoading(Path base) throws Exception {
+ Path src = base.resolve("src");
+ tb.writeJavaFiles(src,
+ "public class Test { static { new Object() {}; } public static class I { public static class II { } } }");
+ Path out = base.resolve("out");
+ tb.createDirectories(out);
+
+ new toolbox.JavacTask(tb)
+ .outdir(out)
+ .files(tb.findJavaFiles(src))
+ .run(Expect.SUCCESS)
+ .writeAll()
+ .getOutputLines(Task.OutputKind.DIRECT);
+
+ List<Path> files;
+ try (Stream<Path> dir = Files.list(out)) {
+ files = dir.collect(Collectors.toList());
+ }
+
+ List<List<Path>> result = new ArrayList<>();
+
+ permutations(files, Collections.emptyList(), result);
+
+ for (List<Path> order : result) {
+ for (Path missing : order) {
+ Path test = base.resolve("test");
+
+ if (Files.exists(test)) {
+ tb.cleanDirectory(test);
+ } else {
+ tb.createDirectories(test);
+ }
+
+ for (Path p : order) {
+ Files.copy(p, test.resolve(p.getFileName()));
+ }
+
+ List<String> actual = complete(test, order, missing, true);
+
+ Files.delete(test.resolve(missing.getFileName()));
+
+ List<String> expected = complete(test, order, missing, false);
+
+ if (!actual.equals(expected)) {
+ throw new AssertionError("Unexpected state, actual=\n" + actual + "\nexpected=\n" + expected + "\norder=" + order + "\nmissing=" + missing);
+ }
+ }
+ }
+ }
+
+ private static void permutations(List<Path> todo, List<Path> currentList, List<List<Path>> result) {
+ if (todo.isEmpty()) {
+ result.add(currentList);
+ return ;
+ }
+
+ for (Path p : todo) {
+ List<Path> nextTODO = new ArrayList<>(todo);
+
+ nextTODO.remove(p);
+
+ List<Path> nextList = new ArrayList<>(currentList);
+
+ nextList.add(p);
+
+ permutations(nextTODO, nextList, result);
+ }
+ }
+
+ private List<String> complete(Path test, List<Path> order, Path missing, boolean badClassFile) {
+ Context context = new Context();
+ if (badClassFile) {
+ TestClassReader.preRegister(context);
+ }
+ JavacTool tool = JavacTool.create();
+ JavacTaskImpl task = (JavacTaskImpl) tool.getTask(null, null, null, List.of("-classpath", test.toString(), "-XDblockClass=" + flatName(missing)), null, null, context);
+ Symtab syms = Symtab.instance(context);
+ Names names = Names.instance(context);
+
+ task.getElements().getTypeElement("java.lang.Object");
+
+ if (!badClassFile) {
+ //to ensure the same paths taken in ClassFinder.completeEnclosing in case the file is missing:
+ syms.enterClass(syms.unnamedModule, names.fromString(flatName(missing)));
+ }
+
+ List<String> result = new ArrayList<>();
+
+ for (Path toCheck : order) {
+ ClassSymbol sym = syms.enterClass(syms.unnamedModule, names.fromString(flatName(toCheck)));
+
+ try {
+ sym.complete();
+ } catch (CompletionFailure ignore) {
+ }
+
+ long flags = sym.flags_field;
+
+ flags &= ~(Flags.CLASS_SEEN | Flags.SOURCE_SEEN);
+
+ result.add("sym: " + sym.flatname + ", " + sym.owner.flatName() +
+ ", " + sym.type + ", " + sym.members_field + ", " + flags);
+ }
+
+ return result;
+ }
+
+ private String flatName(Path p) {
+ return p.getFileName().toString().replace(".class", "");
+ }
+
+ private static class TestClassReader extends ClassReader {
+ public static void preRegister(Context ctx) {
+ ctx.put(classReaderKey, (Factory<ClassReader>) c -> new TestClassReader(ctx));
+ }
+
+ private final String block;
+
+ public TestClassReader(Context context) {
+ super(context);
+ block = Options.instance(context).get("blockClass");
+ }
+
+ @Override
+ public void readClassFile(ClassSymbol c) {
+ super.readClassFile(c);
+
+ if (c.flatname.contentEquals(block)) {
+ throw badClassFile("blocked");
+ }
+ }
+
+ }
+
+}
--- a/make/Main.gmk Mon Jul 17 09:14:23 2017 -0700
+++ b/make/Main.gmk Thu Jul 20 09:38:27 2017 -0700
@@ -699,6 +699,9 @@
jdk.jdeps-gendata: java rmic
+ # The ct.sym generation uses all the moduleinfos as input
+ jdk.compiler-gendata: $(GENSRC_MODULEINFO_TARGETS)
+
# Declare dependencies between jmod targets.
# java.base jmod needs jrt-fs.jar and access to the other jmods to be built.
# When creating a BUILDJDK, we don't need to add hashes to java.base, thus
--- a/nashorn/.hgtags Mon Jul 17 09:14:23 2017 -0700
+++ b/nashorn/.hgtags Thu Jul 20 09:38:27 2017 -0700
@@ -426,3 +426,4 @@
fed3f329875710c74f3ec1a0c4714046a79af100 jdk-10+14
3c6fbdf6e785aaf18d35ce9c6684369952fd22ec jdk-9+176
aa7404e062b95f679018f25eaaf933dcf0cf3f2b jdk-9+177
+f8a0c4895b2abe64a8c55af6117ffda192e34d30 jdk-10+15
--- a/nashorn/samples/barchart_weather.js Mon Jul 17 09:14:23 2017 -0700
+++ b/nashorn/samples/barchart_weather.js Thu Jul 20 09:38:27 2017 -0700
@@ -60,7 +60,7 @@
}
// change URL for your city here!
-var url = "http://api.openweathermap.org/data/2.5/forecast?q=chennai,india&units=metric&mode=json";
+var url = "http://api.openweathermap.org/data/2.5/forecast?q=chennai,india&units=metric&mode=json&appid=9b2982987c080ae88d81f081dcb129e8";
// download JSON document and parse
var json = readTextFromURL(url);
--- a/nashorn/samples/datepick.js Mon Jul 17 09:14:23 2017 -0700
+++ b/nashorn/samples/datepick.js Thu Jul 20 09:38:27 2017 -0700
@@ -37,6 +37,7 @@
}
load("fx:controls.js");
+var Scene = Java.type("javafx.scene.Scene");
function start(stage) {
var picker = new DatePicker();
--- a/nashorn/samples/jsonviewer.js Mon Jul 17 09:14:23 2017 -0700
+++ b/nashorn/samples/jsonviewer.js Thu Jul 20 09:38:27 2017 -0700
@@ -103,7 +103,7 @@
return item;
}
-var DEFAULT_URL = "http://api.openweathermap.org/data/2.5/forecast/daily?q=Chennai&mode=json&units=metric&cnt=7`";
+var DEFAULT_URL = "http://api.openweathermap.org/data/2.5/forecast?q=chennai,india&units=metric&mode=json&appid=9b2982987c080ae88d81f081dcb129e8";
var url = arguments.length == 0? DEFAULT_URL : arguments[0];
var obj = JSON.parse(readTextFromURL(url));
--- a/test/lib/jdk/test/lib/Utils.java Mon Jul 17 09:14:23 2017 -0700
+++ b/test/lib/jdk/test/lib/Utils.java Thu Jul 20 09:38:27 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -680,5 +680,26 @@
String.format("A mandatory property '%s' isn't set", propName));
return prop;
}
+
+ /*
+ * Run uname with specified arguments.
+ */
+ public static OutputAnalyzer uname(String... args) throws Throwable {
+ String[] cmds = new String[args.length + 1];
+ cmds[0] = "uname";
+ System.arraycopy(args, 0, cmds, 1, args.length);
+ return ProcessTools.executeCommand(cmds);
+ }
+
+ /*
+ * Returns the system distro.
+ */
+ public static String distro() {
+ try {
+ return uname("-v").asLines().get(0);
+ } catch (Throwable t) {
+ throw new RuntimeException("Failed to determine distro.", t);
+ }
+ }
}