--- a/.hgtags-top-repo Thu Jul 13 19:34:24 2017 +0000
+++ b/.hgtags-top-repo Thu Aug 24 16:29:34 2017 +0200
@@ -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 Thu Jul 13 19:34:24 2017 +0000
+++ b/common/autoconf/flags.m4 Thu Aug 24 16:29:34 2017 +0200
@@ -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 Thu Jul 13 19:34:24 2017 +0000
+++ b/common/autoconf/generated-configure.sh Thu Aug 24 16:29:34 2017 +0200
@@ -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 Thu Jul 13 19:34:24 2017 +0000
+++ b/common/autoconf/spec.gmk.in Thu Aug 24 16:29:34 2017 +0200
@@ -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 Thu Jul 13 19:34:24 2017 +0000
+++ b/common/autoconf/toolchain.m4 Thu Aug 24 16:29:34 2017 +0200
@@ -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 Thu Jul 13 19:34:24 2017 +0000
+++ b/common/conf/jib-profiles.js Thu Aug 24 16:29:34 2017 +0200
@@ -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 Thu Jul 13 19:34:24 2017 +0000
+++ b/common/doc/building.md Thu Aug 24 16:29:34 2017 +0200
@@ -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 Thu Jul 13 19:34:24 2017 +0000
+++ b/common/nb_native/nbproject/configurations.xml Thu Aug 24 16:29:34 2017 +0200
@@ -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/hotspot/.hgtags Thu Jul 13 19:34:24 2017 +0000
+++ b/hotspot/.hgtags Thu Aug 24 16:29:34 2017 +0200
@@ -595,3 +595,4 @@
e920b4d008d914f3414bd4630b58837cf0b7f08d jdk-10+14
2ab74e5dbdc2b6a962c865500cafd23cf387dc60 jdk-9+176
1ca8f038fceb88c640badf9bd18905205bc63b43 jdk-9+177
+c1f3649a3a42f124b418a5a916dbad13d059b757 jdk-10+15
--- a/jdk/.hgtags Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/.hgtags Thu Aug 24 16:29:34 2017 +0200
@@ -435,3 +435,4 @@
7a2bc0a80087b63c909df2af6ec7d9ef44e6d7f7 jdk-10+14
9f27d513658d5375b0e26846857d92563f279073 jdk-9+176
80acf577b7d0b886fb555c9916552844f6cc72af jdk-9+177
+e069834e2c518a7bc2ffadc8c7e3cd7ec69fa8a0 jdk-10+15
--- a/jdk/make/mapfiles/libsunec/mapfile-vers Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/make/mapfiles/libsunec/mapfile-vers Thu Aug 24 16:29:34 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2009, 2013, 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
@@ -27,6 +27,7 @@
SUNWprivate_1.1 {
global:
+ Java_sun_security_ec_ECKeyPairGenerator_isCurveSupported;
Java_sun_security_ec_ECKeyPairGenerator_generateECKeyPair;
Java_sun_security_ec_ECDSASignature_signDigest;
Java_sun_security_ec_ECDSASignature_verifySignedDigest;
--- a/jdk/src/java.base/share/classes/java/io/ObjectStreamField.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/io/ObjectStreamField.java Thu Aug 24 16:29:34 2017 +0200
@@ -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/io/RandomAccessFile.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/io/RandomAccessFile.java Thu Aug 24 16:29:34 2017 +0200
@@ -139,21 +139,21 @@
* <table class="striped">
* <caption style="display:none">Access mode permitted values and meanings</caption>
* <thead>
- * <tr><th style="text-align:left">Value</th><th style="text-align:left">Meaning</th></tr>
+ * <tr><th scope="col" style="text-align:left">Value</th><th scope="col" style="text-align:left">Meaning</th></tr>
* </thead>
* <tbody>
- * <tr><td style="vertical-align:top">{@code "r"}</td>
+ * <tr><th scope="row" style="vertical-align:top">{@code "r"}</th>
* <td> Open for reading only. Invoking any of the {@code write}
* methods of the resulting object will cause an
* {@link java.io.IOException} to be thrown.</td></tr>
- * <tr><td style="vertical-align:top">{@code "rw"}</td>
+ * <tr><th scope="row" style="vertical-align:top">{@code "rw"}</th>
* <td> Open for reading and writing. If the file does not already
* exist then an attempt will be made to create it.</td></tr>
- * <tr><td style="vertical-align:top">{@code "rws"}</td>
+ * <tr><th scope="row" style="vertical-align:top">{@code "rws"}</th>
* <td> Open for reading and writing, as with {@code "rw"}, and also
* require that every update to the file's content or metadata be
* written synchronously to the underlying storage device.</td></tr>
- * <tr><td style="vertical-align:top">{@code "rwd"}</td>
+ * <tr><th scope="row" style="vertical-align:top">{@code "rwd"}</th>
* <td> Open for reading and writing, as with {@code "rw"}, and also
* require that every update to the file's content be written
* synchronously to the underlying storage device.</td></tr>
--- a/jdk/src/java.base/share/classes/java/io/SerializablePermission.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/io/SerializablePermission.java Thu Aug 24 16:29:34 2017 +0200
@@ -48,15 +48,15 @@
* <caption style="display:none">Permission target name, what the permission allows, and associated risks</caption>
* <thead>
* <tr>
- * <th>Permission Target Name</th>
- * <th>What the Permission Allows</th>
- * <th>Risks of Allowing this Permission</th>
+ * <th scope="col">Permission Target Name</th>
+ * <th scope="col">What the Permission Allows</th>
+ * <th scope="col">Risks of Allowing this Permission</th>
* </tr>
* </thead>
* <tbody>
*
* <tr>
- * <td>enableSubclassImplementation</td>
+ * <th scope="row">enableSubclassImplementation</th>
* <td>Subclass implementation of ObjectOutputStream or ObjectInputStream
* to override the default serialization or deserialization, respectively,
* of objects</td>
@@ -69,7 +69,7 @@
* </tr>
*
* <tr>
- * <td>enableSubstitution</td>
+ * <th scope="row">enableSubstitution</th>
* <td>Substitution of one object for another during
* serialization or deserialization</td>
* <td>This is dangerous because malicious code
@@ -78,7 +78,7 @@
* </tr>
*
* <tr>
- * <td>serialFilter</td>
+ * <th scope="row">serialFilter</th>
* <td>Setting a filter for ObjectInputStreams.</td>
* <td>Code could remove a configured filter and remove protections
* already established.</td>
--- a/jdk/src/java.base/share/classes/java/lang/RuntimePermission.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/RuntimePermission.java Thu Aug 24 16:29:34 2017 +0200
@@ -48,15 +48,15 @@
* what the target allows, and associated risks</caption>
* <thead>
* <tr>
- * <th>Permission Target Name</th>
- * <th>What the Permission Allows</th>
- * <th>Risks of Allowing this Permission</th>
+ * <th scope="col">Permission Target Name</th>
+ * <th scope="col">What the Permission Allows</th>
+ * <th scope="col">Risks of Allowing this Permission</th>
* </tr>
* </thead>
* <tbody>
*
* <tr>
- * <td>createClassLoader</td>
+ * <th scope="row">createClassLoader</th>
* <td>Creation of a class loader</td>
* <td>This is an extremely dangerous permission to grant.
* Malicious applications that can instantiate their own class
@@ -67,7 +67,7 @@
* </tr>
*
* <tr>
- * <td>getClassLoader</td>
+ * <th scope="row">getClassLoader</th>
* <td>Retrieval of a class loader (e.g., the class loader for the calling
* class)</td>
* <td>This would grant an attacker permission to get the
@@ -78,7 +78,7 @@
* </tr>
*
* <tr>
- * <td>setContextClassLoader</td>
+ * <th scope="row">setContextClassLoader</th>
* <td>Setting of the context class loader used by a thread</td>
* <td>The context class loader is used by system code and extensions
* when they need to lookup resources that might not exist in the system
@@ -88,7 +88,7 @@
* </tr>
*
* <tr>
- * <td>enableContextClassLoaderOverride</td>
+ * <th scope="row">enableContextClassLoaderOverride</th>
* <td>Subclass implementation of the thread context class loader methods</td>
* <td>The context class loader is used by system code and extensions
* when they need to lookup resources that might not exist in the system
@@ -98,14 +98,14 @@
* </tr>
*
* <tr>
- * <td>closeClassLoader</td>
+ * <th scope="row">closeClassLoader</th>
* <td>Closing of a ClassLoader</td>
* <td>Granting this permission allows code to close any URLClassLoader
* that it has a reference to.</td>
* </tr>
*
* <tr>
- * <td>setSecurityManager</td>
+ * <th scope="row">setSecurityManager</th>
* <td>Setting of the security manager (possibly replacing an existing one)
* </td>
* <td>The security manager is a class that allows
@@ -117,14 +117,14 @@
* </tr>
*
* <tr>
- * <td>createSecurityManager</td>
+ * <th scope="row">createSecurityManager</th>
* <td>Creation of a new security manager</td>
* <td>This gives code access to protected, sensitive methods that may
* disclose information about other classes or the execution stack.</td>
* </tr>
*
* <tr>
- * <td>getenv.{variable name}</td>
+ * <th scope="row">getenv.{variable name}</th>
* <td>Reading of the value of the specified environment variable</td>
* <td>This would allow code to read the value, or determine the
* existence, of a particular environment variable. This is
@@ -132,7 +132,7 @@
* </tr>
*
* <tr>
- * <td>exitVM.{exit status}</td>
+ * <th scope="row">exitVM.{exit status}</th>
* <td>Halting of the Java Virtual Machine with the specified exit status</td>
* <td>This allows an attacker to mount a denial-of-service attack
* by automatically forcing the virtual machine to halt.
@@ -143,14 +143,14 @@
* </tr>
*
* <tr>
- * <td>shutdownHooks</td>
+ * <th scope="row">shutdownHooks</th>
* <td>Registration and cancellation of virtual-machine shutdown hooks</td>
* <td>This allows an attacker to register a malicious shutdown
* hook that interferes with the clean shutdown of the virtual machine.</td>
* </tr>
*
* <tr>
- * <td>setFactory</td>
+ * <th scope="row">setFactory</th>
* <td>Setting of the socket factory used by ServerSocket or Socket,
* or of the stream handler factory used by URL</td>
* <td>This allows code to set the actual implementation
@@ -160,7 +160,7 @@
* </tr>
*
* <tr>
- * <td>setIO</td>
+ * <th scope="row">setIO</th>
* <td>Setting of System.out, System.in, and System.err</td>
* <td>This allows changing the value of the standard system streams.
* An attacker may change System.in to monitor and
@@ -169,7 +169,7 @@
* </tr>
*
* <tr>
- * <td>modifyThread</td>
+ * <th scope="row">modifyThread</th>
* <td>Modification of threads, e.g., via calls to Thread
* {@code interrupt, stop, suspend, resume, setDaemon, setPriority,
* setName} and {@code setUncaughtExceptionHandler}
@@ -179,7 +179,7 @@
* </tr>
*
* <tr>
- * <td>stopThread</td>
+ * <th scope="row">stopThread</th>
* <td>Stopping of threads via calls to the Thread <code>stop</code>
* method</td>
* <td>This allows code to stop any thread in the system provided that it is
@@ -189,7 +189,7 @@
* </tr>
*
* <tr>
- * <td>modifyThreadGroup</td>
+ * <th scope="row">modifyThreadGroup</th>
* <td>modification of thread groups, e.g., via calls to ThreadGroup
* <code>destroy</code>, <code>getParent</code>, <code>resume</code>,
* <code>setDaemon</code>, <code>setMaxPriority</code>, <code>stop</code>,
@@ -199,7 +199,7 @@
* </tr>
*
* <tr>
- * <td>getProtectionDomain</td>
+ * <th scope="row">getProtectionDomain</th>
* <td>Retrieval of the ProtectionDomain for a class</td>
* <td>This allows code to obtain policy information
* for a particular code source. While obtaining policy information
@@ -209,7 +209,7 @@
* </tr>
*
* <tr>
- * <td>getFileSystemAttributes</td>
+ * <th scope="row">getFileSystemAttributes</th>
* <td>Retrieval of file system attributes</td>
* <td>This allows code to obtain file system information such as disk usage
* or disk space available to the caller. This is potentially dangerous
@@ -219,7 +219,7 @@
* </tr>
*
* <tr>
- * <td>readFileDescriptor</td>
+ * <th scope="row">readFileDescriptor</th>
* <td>Reading of file descriptors</td>
* <td>This would allow code to read the particular file associated
* with the file descriptor read. This is dangerous if the file
@@ -227,7 +227,7 @@
* </tr>
*
* <tr>
- * <td>writeFileDescriptor</td>
+ * <th scope="row">writeFileDescriptor</th>
* <td>Writing to file descriptors</td>
* <td>This allows code to write to a particular file associated
* with the descriptor. This is dangerous because it may allow
@@ -236,7 +236,7 @@
* </tr>
*
* <tr>
- * <td>loadLibrary.{library name}</td>
+ * <th scope="row">loadLibrary.{library name}</th>
* <td>Dynamic linking of the specified library</td>
* <td>It is dangerous to allow an applet permission to load native code
* libraries, because the Java security architecture is not designed to and
@@ -244,7 +244,7 @@
* </tr>
*
* <tr>
- * <td>accessClassInPackage.{package name}</td>
+ * <th scope="row">accessClassInPackage.{package name}</th>
* <td>Access to the specified package via a class loader's
* <code>loadClass</code> method when that class loader calls
* the SecurityManager <code>checkPackageAccess</code> method</td>
@@ -255,7 +255,7 @@
* </tr>
*
* <tr>
- * <td>defineClassInPackage.{package name}</td>
+ * <th scope="row">defineClassInPackage.{package name}</th>
* <td>Definition of classes in the specified package, via a class
* loader's <code>defineClass</code> method when that class loader calls
* the SecurityManager <code>checkPackageDefinition</code> method.</td>
@@ -267,7 +267,7 @@
* </tr>
*
* <tr>
- * <td>defineClass</td>
+ * <th scope="row">defineClass</th>
* <td>Define a class with
* {@link java.lang.invoke.MethodHandles.Lookup#defineClass(byte[])
* Lookup.defineClass}.</td>
@@ -277,7 +277,7 @@
* </tr>
*
* <tr>
- * <td>accessDeclaredMembers</td>
+ * <th scope="row">accessDeclaredMembers</th>
* <td>Access to the declared members of a class</td>
* <td>This grants code permission to query a class for its public,
* protected, default (package) access, and private fields and/or
@@ -295,14 +295,14 @@
</td>
* </tr>
* <tr>
- * <td>queuePrintJob</td>
+ * <th scope="row">queuePrintJob</th>
* <td>Initiation of a print job request</td>
* <td>This could print sensitive information to a printer,
* or simply waste paper.</td>
* </tr>
*
* <tr>
- * <td>getStackTrace</td>
+ * <th scope="row">getStackTrace</th>
* <td>Retrieval of the stack trace information of another thread.</td>
* <td>This allows retrieval of the stack trace information of
* another thread. This might allow malicious code to monitor the
@@ -310,7 +310,7 @@
* </tr>
*
* <tr>
- * <td>getStackWalkerWithClassReference</td>
+ * <th scope="row">getStackWalkerWithClassReference</th>
* <td>Get a stack walker that can retrieve stack frames with class reference.</td>
* <td>This allows retrieval of Class objects from stack walking.
* This might allow malicious code to access Class objects on the stack
@@ -318,7 +318,7 @@
* </tr>
*
* <tr>
- * <td>setDefaultUncaughtExceptionHandler</td>
+ * <th scope="row">setDefaultUncaughtExceptionHandler</th>
* <td>Setting the default handler to be used when a thread
* terminates abruptly due to an uncaught exception</td>
* <td>This allows an attacker to register a malicious
@@ -327,7 +327,7 @@
* </tr>
*
* <tr>
- * <td>preferences</td>
+ * <th scope="row">preferences</th>
* <td>Represents the permission required to get access to the
* java.util.prefs.Preferences implementations user or system root
* which in turn allows retrieval or update operations within the
@@ -340,14 +340,14 @@
* </tr>
*
* <tr>
- * <td>manageProcess</td>
+ * <th scope="row">manageProcess</th>
* <td>Native process termination and information about processes
* {@link ProcessHandle}.</td>
* <td>Allows code to identify and terminate processes that it did not create.</td>
* </tr>
*
* <tr>
- * <td>localeServiceProvider</td>
+ * <th scope="row">localeServiceProvider</th>
* <td>This {@code RuntimePermission} is required to be granted to
* classes which subclass and implement
* {@code java.util.spi.LocaleServiceProvider}. The permission is
@@ -360,7 +360,7 @@
* </tr>
*
* <tr>
- * <td>loggerFinder</td>
+ * <th scope="row">loggerFinder</th>
* <td>This {@code RuntimePermission} is required to be granted to
* classes which subclass or call methods on
* {@code java.lang.System.LoggerFinder}. The permission is
@@ -373,7 +373,7 @@
* </tr>
*
* <tr>
- * <td>accessSystemModules</td>
+ * <th scope="row">accessSystemModules</th>
* <td>Access system modules in the runtime image.</td>
* <td>This grants the permission to access resources in the
* {@linkplain ModuleFinder#ofSystem system modules} in the runtime image.</td>
--- a/jdk/src/java.base/share/classes/java/lang/System.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/System.java Thu Aug 24 16:29:34 2017 +0200
@@ -582,67 +582,67 @@
* <table class="striped">
* <caption style="display:none">Shows property keys and associated values</caption>
* <thead>
- * <tr><th>Key</th>
- * <th>Description of Associated Value</th></tr>
+ * <tr><th scope="col">Key</th>
+ * <th scope="col">Description of Associated Value</th></tr>
* </thead>
* <tbody>
- * <tr><td><code>java.version</code></td>
+ * <tr><th scope="row"><code>java.version</code></th>
* <td>Java Runtime Environment version which may be interpreted
* as a {@link Runtime.Version}</td></tr>
- * <tr><td><code>java.vendor</code></td>
+ * <tr><th scope="row"><code>java.vendor</code></th>
* <td>Java Runtime Environment vendor</td></tr>
- * <tr><td><code>java.vendor.url</code></td>
+ * <tr><th scope="row"><code>java.vendor.url</code></th>
* <td>Java vendor URL</td></tr>
- * <tr><td><code>java.home</code></td>
+ * <tr><th scope="row"><code>java.home</code></th>
* <td>Java installation directory</td></tr>
- * <tr><td><code>java.vm.specification.version</code></td>
+ * <tr><th scope="row"><code>java.vm.specification.version</code></th>
* <td>Java Virtual Machine specification version which may be
* interpreted as a {@link Runtime.Version}</td></tr>
- * <tr><td><code>java.vm.specification.vendor</code></td>
+ * <tr><th scope="row"><code>java.vm.specification.vendor</code></th>
* <td>Java Virtual Machine specification vendor</td></tr>
- * <tr><td><code>java.vm.specification.name</code></td>
+ * <tr><th scope="row"><code>java.vm.specification.name</code></th>
* <td>Java Virtual Machine specification name</td></tr>
- * <tr><td><code>java.vm.version</code></td>
+ * <tr><th scope="row"><code>java.vm.version</code></th>
* <td>Java Virtual Machine implementation version which may be
* interpreted as a {@link Runtime.Version}</td></tr>
- * <tr><td><code>java.vm.vendor</code></td>
+ * <tr><th scope="row"><code>java.vm.vendor</code></th>
* <td>Java Virtual Machine implementation vendor</td></tr>
- * <tr><td><code>java.vm.name</code></td>
+ * <tr><th scope="row"><code>java.vm.name</code></th>
* <td>Java Virtual Machine implementation name</td></tr>
- * <tr><td><code>java.specification.version</code></td>
+ * <tr><th scope="row"><code>java.specification.version</code></th>
* <td>Java Runtime Environment specification version which may be
* interpreted as a {@link Runtime.Version}</td></tr>
- * <tr><td><code>java.specification.vendor</code></td>
+ * <tr><th scope="row"><code>java.specification.vendor</code></th>
* <td>Java Runtime Environment specification vendor</td></tr>
- * <tr><td><code>java.specification.name</code></td>
+ * <tr><th scope="row"><code>java.specification.name</code></th>
* <td>Java Runtime Environment specification name</td></tr>
- * <tr><td><code>java.class.version</code></td>
+ * <tr><th scope="row"><code>java.class.version</code></th>
* <td>Java class format version number</td></tr>
- * <tr><td><code>java.class.path</code></td>
+ * <tr><th scope="row"><code>java.class.path</code></th>
* <td>Java class path</td></tr>
- * <tr><td><code>java.library.path</code></td>
+ * <tr><th scope="row"><code>java.library.path</code></th>
* <td>List of paths to search when loading libraries</td></tr>
- * <tr><td><code>java.io.tmpdir</code></td>
+ * <tr><th scope="row"><code>java.io.tmpdir</code></th>
* <td>Default temp file path</td></tr>
- * <tr><td><code>java.compiler</code></td>
+ * <tr><th scope="row"><code>java.compiler</code></th>
* <td>Name of JIT compiler to use</td></tr>
- * <tr><td><code>os.name</code></td>
+ * <tr><th scope="row"><code>os.name</code></th>
* <td>Operating system name</td></tr>
- * <tr><td><code>os.arch</code></td>
+ * <tr><th scope="row"><code>os.arch</code></th>
* <td>Operating system architecture</td></tr>
- * <tr><td><code>os.version</code></td>
+ * <tr><th scope="row"><code>os.version</code></th>
* <td>Operating system version</td></tr>
- * <tr><td><code>file.separator</code></td>
+ * <tr><th scope="row"><code>file.separator</code></th>
* <td>File separator ("/" on UNIX)</td></tr>
- * <tr><td><code>path.separator</code></td>
+ * <tr><th scope="row"><code>path.separator</code></th>
* <td>Path separator (":" on UNIX)</td></tr>
- * <tr><td><code>line.separator</code></td>
+ * <tr><th scope="row"><code>line.separator</code></th>
* <td>Line separator ("\n" on UNIX)</td></tr>
- * <tr><td><code>user.name</code></td>
+ * <tr><th scope="row"><code>user.name</code></th>
* <td>User's account name</td></tr>
- * <tr><td><code>user.home</code></td>
+ * <tr><th scope="row"><code>user.home</code></th>
* <td>User's home directory</td></tr>
- * <tr><td><code>user.dir</code></td>
+ * <tr><th scope="row"><code>user.dir</code></th>
* <td>User's current working directory</td></tr>
* </tbody>
* </table>
@@ -659,17 +659,17 @@
* <table class="striped">
* <caption style="display:none">Shows property keys and associated values</caption>
* <thead>
- * <tr><th>Key</th>
- * <th>Description of Associated Value</th></tr>
+ * <tr><th scope="col">Key</th>
+ * <th scope="col">Description of Associated Value</th></tr>
* </thead>
* <tbody>
- * <tr><td>{@code jdk.module.path}</td>
+ * <tr><th scope="row">{@code jdk.module.path}</th>
* <td>The application module path</td></tr>
- * <tr><td>{@code jdk.module.upgrade.path}</td>
+ * <tr><th scope="row">{@code jdk.module.upgrade.path}</th>
* <td>The upgrade module path</td></tr>
- * <tr><td>{@code jdk.module.main}</td>
+ * <tr><th scope="row">{@code jdk.module.main}</th>
* <td>The module name of the initial/main module</td></tr>
- * <tr><td>{@code jdk.module.main.class}</td>
+ * <tr><th scope="row">{@code jdk.module.main.class}</th>
* <td>The main class name of the initial module</td></tr>
* </tbody>
* </table>
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleInfo.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleInfo.java Thu Aug 24 16:29:34 2017 +0200
@@ -84,43 +84,43 @@
* <table class="striped">
* <caption style="display:none">reference kinds</caption>
* <thead>
- * <tr><th>reference kind</th><th>descriptive name</th><th>scope</th><th>member</th><th>behavior</th></tr>
+ * <tr><th scope="col">reference kind</th><th scope="col">descriptive name</th><th scope="col">scope</th><th scope="col">member</th><th scope="col">behavior</th></tr>
* </thead>
* <tbody>
* <tr>
- * <td>{@code 1}</td><td>{@code REF_getField}</td><td>{@code class}</td>
+ * <th scope="row">{@code 1}</th><td>{@code REF_getField}</td><td>{@code class}</td>
* <td>{@code FT f;}</td><td>{@code (T) this.f;}</td>
* </tr>
* <tr>
- * <td>{@code 2}</td><td>{@code REF_getStatic}</td><td>{@code class} or {@code interface}</td>
+ * <th scope="row">{@code 2}</th><td>{@code REF_getStatic}</td><td>{@code class} or {@code interface}</td>
* <td>{@code static}<br>{@code FT f;}</td><td>{@code (T) C.f;}</td>
* </tr>
* <tr>
- * <td>{@code 3}</td><td>{@code REF_putField}</td><td>{@code class}</td>
+ * <th scope="row">{@code 3}</th><td>{@code REF_putField}</td><td>{@code class}</td>
* <td>{@code FT f;}</td><td>{@code this.f = x;}</td>
* </tr>
* <tr>
- * <td>{@code 4}</td><td>{@code REF_putStatic}</td><td>{@code class}</td>
+ * <th scope="row">{@code 4}</th><td>{@code REF_putStatic}</td><td>{@code class}</td>
* <td>{@code static}<br>{@code FT f;}</td><td>{@code C.f = arg;}</td>
* </tr>
* <tr>
- * <td>{@code 5}</td><td>{@code REF_invokeVirtual}</td><td>{@code class}</td>
+ * <th scope="row">{@code 5}</th><td>{@code REF_invokeVirtual}</td><td>{@code class}</td>
* <td>{@code T m(A*);}</td><td>{@code (T) this.m(arg*);}</td>
* </tr>
* <tr>
- * <td>{@code 6}</td><td>{@code REF_invokeStatic}</td><td>{@code class} or {@code interface}</td>
+ * <th scope="row">{@code 6}</th><td>{@code REF_invokeStatic}</td><td>{@code class} or {@code interface}</td>
* <td>{@code static}<br>{@code T m(A*);}</td><td>{@code (T) C.m(arg*);}</td>
* </tr>
* <tr>
- * <td>{@code 7}</td><td>{@code REF_invokeSpecial}</td><td>{@code class} or {@code interface}</td>
+ * <th scope="row">{@code 7}</th><td>{@code REF_invokeSpecial}</td><td>{@code class} or {@code interface}</td>
* <td>{@code T m(A*);}</td><td>{@code (T) super.m(arg*);}</td>
* </tr>
* <tr>
- * <td>{@code 8}</td><td>{@code REF_newInvokeSpecial}</td><td>{@code class}</td>
+ * <th scope="row">{@code 8}</th><td>{@code REF_newInvokeSpecial}</td><td>{@code class}</td>
* <td>{@code C(A*);}</td><td>{@code new C(arg*);}</td>
* </tr>
* <tr>
- * <td>{@code 9}</td><td>{@code REF_invokeInterface}</td><td>{@code interface}</td>
+ * <th scope="row">{@code 9}</th><td>{@code REF_invokeInterface}</td><td>{@code interface}</td>
* <td>{@code T m(A*);}</td><td>{@code (T) this.m(arg*);}</td>
* </tr>
* </tbody>
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java Thu Aug 24 16:29:34 2017 +0200
@@ -282,66 +282,66 @@
* <caption style="display:none">lookup method behaviors</caption>
* <thead>
* <tr>
- * <th><a id="equiv"></a>lookup expression</th>
- * <th>member</th>
- * <th>bytecode behavior</th>
+ * <th scope="col"><a id="equiv"></a>lookup expression</th>
+ * <th scope="col">member</th>
+ * <th scope="col">bytecode behavior</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td>{@link java.lang.invoke.MethodHandles.Lookup#findGetter lookup.findGetter(C.class,"f",FT.class)}</td>
+ * <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findGetter lookup.findGetter(C.class,"f",FT.class)}</th>
* <td>{@code FT f;}</td><td>{@code (T) this.f;}</td>
* </tr>
* <tr>
- * <td>{@link java.lang.invoke.MethodHandles.Lookup#findStaticGetter lookup.findStaticGetter(C.class,"f",FT.class)}</td>
+ * <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findStaticGetter lookup.findStaticGetter(C.class,"f",FT.class)}</th>
* <td>{@code static}<br>{@code FT f;}</td><td>{@code (T) C.f;}</td>
* </tr>
* <tr>
- * <td>{@link java.lang.invoke.MethodHandles.Lookup#findSetter lookup.findSetter(C.class,"f",FT.class)}</td>
+ * <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findSetter lookup.findSetter(C.class,"f",FT.class)}</th>
* <td>{@code FT f;}</td><td>{@code this.f = x;}</td>
* </tr>
* <tr>
- * <td>{@link java.lang.invoke.MethodHandles.Lookup#findStaticSetter lookup.findStaticSetter(C.class,"f",FT.class)}</td>
+ * <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findStaticSetter lookup.findStaticSetter(C.class,"f",FT.class)}</th>
* <td>{@code static}<br>{@code FT f;}</td><td>{@code C.f = arg;}</td>
* </tr>
* <tr>
- * <td>{@link java.lang.invoke.MethodHandles.Lookup#findVirtual lookup.findVirtual(C.class,"m",MT)}</td>
+ * <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findVirtual lookup.findVirtual(C.class,"m",MT)}</th>
* <td>{@code T m(A*);}</td><td>{@code (T) this.m(arg*);}</td>
* </tr>
* <tr>
- * <td>{@link java.lang.invoke.MethodHandles.Lookup#findStatic lookup.findStatic(C.class,"m",MT)}</td>
+ * <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findStatic lookup.findStatic(C.class,"m",MT)}</th>
* <td>{@code static}<br>{@code T m(A*);}</td><td>{@code (T) C.m(arg*);}</td>
* </tr>
* <tr>
- * <td>{@link java.lang.invoke.MethodHandles.Lookup#findSpecial lookup.findSpecial(C.class,"m",MT,this.class)}</td>
+ * <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findSpecial lookup.findSpecial(C.class,"m",MT,this.class)}</th>
* <td>{@code T m(A*);}</td><td>{@code (T) super.m(arg*);}</td>
* </tr>
* <tr>
- * <td>{@link java.lang.invoke.MethodHandles.Lookup#findConstructor lookup.findConstructor(C.class,MT)}</td>
+ * <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findConstructor lookup.findConstructor(C.class,MT)}</th>
* <td>{@code C(A*);}</td><td>{@code new C(arg*);}</td>
* </tr>
* <tr>
- * <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflectGetter lookup.unreflectGetter(aField)}</td>
+ * <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflectGetter lookup.unreflectGetter(aField)}</th>
* <td>({@code static})?<br>{@code FT f;}</td><td>{@code (FT) aField.get(thisOrNull);}</td>
* </tr>
* <tr>
- * <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflectSetter lookup.unreflectSetter(aField)}</td>
+ * <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflectSetter lookup.unreflectSetter(aField)}</th>
* <td>({@code static})?<br>{@code FT f;}</td><td>{@code aField.set(thisOrNull, arg);}</td>
* </tr>
* <tr>
- * <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)}</td>
+ * <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)}</th>
* <td>({@code static})?<br>{@code T m(A*);}</td><td>{@code (T) aMethod.invoke(thisOrNull, arg*);}</td>
* </tr>
* <tr>
- * <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflectConstructor lookup.unreflectConstructor(aConstructor)}</td>
+ * <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflectConstructor lookup.unreflectConstructor(aConstructor)}</th>
* <td>{@code C(A*);}</td><td>{@code (C) aConstructor.newInstance(arg*);}</td>
* </tr>
* <tr>
- * <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)}</td>
+ * <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)}</th>
* <td>({@code static})?<br>{@code T m(A*);}</td><td>{@code (T) aMethod.invoke(thisOrNull, arg*);}</td>
* </tr>
* <tr>
- * <td>{@link java.lang.invoke.MethodHandles.Lookup#findClass lookup.findClass("C")}</td>
+ * <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findClass lookup.findClass("C")}</th>
* <td>{@code class C { ... }}</td><td>{@code C.class;}</td>
* </tr>
* </tbody>
--- a/jdk/src/java.base/share/classes/java/lang/reflect/ReflectPermission.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/reflect/ReflectPermission.java Thu Aug 24 16:29:34 2017 +0200
@@ -36,15 +36,15 @@
* <caption style="display:none">Table shows permission target name, what the permission allows, and associated risks</caption>
* <thead>
* <tr>
- * <th>Permission Target Name</th>
- * <th>What the Permission Allows</th>
- * <th>Risks of Allowing this Permission</th>
+ * <th scope="col">Permission Target Name</th>
+ * <th scope="col">What the Permission Allows</th>
+ * <th scope="col">Risks of Allowing this Permission</th>
* </tr>
* </thead>
* <tbody>
*
* <tr>
- * <td>suppressAccessChecks</td>
+ * <th scope="row">suppressAccessChecks</th>
* <td>ability to suppress the standard Java language access checks
* on fields and methods in a class; allow access not only public members
* but also allow access to default (package) access, protected,
@@ -53,7 +53,7 @@
* methods normally unavailable would be accessible to malicious code.</td>
* </tr>
* <tr>
- * <td>newProxyInPackage.{package name}</td>
+ * <th scope="row">newProxyInPackage.{package name}</th>
* <td>ability to create a proxy instance in the specified package of which
* the non-public interface that the proxy class implements.</td>
* <td>This gives code access to classes in packages to which it normally
--- a/jdk/src/java.base/share/classes/java/net/NetPermission.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/net/NetPermission.java Thu Aug 24 16:29:34 2017 +0200
@@ -51,14 +51,14 @@
* <caption style="display:none">Permission target name, what the permission allows, and associated risks</caption>
* <thead>
* <tr>
- * <th>Permission Target Name</th>
- * <th>What the Permission Allows</th>
- * <th>Risks of Allowing this Permission</th>
+ * <th scope="col">Permission Target Name</th>
+ * <th scope="col">What the Permission Allows</th>
+ * <th scope="col">Risks of Allowing this Permission</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td>allowHttpTrace</td>
+ * <th scope="row">allowHttpTrace</th>
* <td>The ability to use the HTTP TRACE method in HttpURLConnection.</td>
* <td>Malicious code using HTTP TRACE could get access to security sensitive
* information in the HTTP headers (such as cookies) that it might not
@@ -66,7 +66,7 @@
* </tr>
*
* <tr>
- * <td>getCookieHandler</td>
+ * <th scope="row">getCookieHandler</th>
* <td>The ability to get the cookie handler that processes highly
* security sensitive cookie information for an Http session.</td>
* <td>Malicious code can get a cookie handler to obtain access to
@@ -76,14 +76,14 @@
* </tr>
*
* <tr>
- * <td>getNetworkInformation</td>
+ * <th scope="row">getNetworkInformation</th>
* <td>The ability to retrieve all information about local network interfaces.</td>
* <td>Malicious code can read information about network hardware such as
* MAC addresses, which could be used to construct local IPv6 addresses.</td>
* </tr>
*
* <tr>
- * <td>getProxySelector</td>
+ * <th scope="row">getProxySelector</th>
* <td>The ability to get the proxy selector used to make decisions
* on which proxies to use when making network connections.</td>
* <td>Malicious code can get a ProxySelector to discover proxy
@@ -92,7 +92,7 @@
* </tr>
*
* <tr>
- * <td>getResponseCache</td>
+ * <th scope="row">getResponseCache</th>
* <td>The ability to get the response cache that provides
* access to a local response cache.</td>
* <td>Malicious code getting access to the local response cache
@@ -100,7 +100,7 @@
* </tr>
*
* <tr>
- * <td>requestPasswordAuthentication</td>
+ * <th scope="row">requestPasswordAuthentication</th>
* <td>The ability
* to ask the authenticator registered with the system for
* a password</td>
@@ -108,7 +108,7 @@
* </tr>
*
* <tr>
- * <td>setCookieHandler</td>
+ * <th scope="row">setCookieHandler</th>
* <td>The ability to set the cookie handler that processes highly
* security sensitive cookie information for an Http session.</td>
* <td>Malicious code can set a cookie handler to obtain access to
@@ -118,7 +118,7 @@
* </tr>
*
* <tr>
- * <td>setDefaultAuthenticator</td>
+ * <th scope="row">setDefaultAuthenticator</th>
* <td>The ability to set the
* way authentication information is retrieved when
* a proxy or HTTP server asks for authentication</td>
@@ -128,7 +128,7 @@
* </tr>
*
* <tr>
- * <td>setProxySelector</td>
+ * <th scope="row">setProxySelector</th>
* <td>The ability to set the proxy selector used to make decisions
* on which proxies to use when making network connections.</td>
* <td>Malicious code can set a ProxySelector that directs network
@@ -136,7 +136,7 @@
* </tr>
*
* <tr>
- * <td>setResponseCache</td>
+ * <th scope="row">setResponseCache</th>
* <td>The ability to set the response cache that provides access to
* a local response cache.</td>
* <td>Malicious code getting access to the local response cache
@@ -145,7 +145,7 @@
* </tr>
*
* <tr>
- * <td>specifyStreamHandler</td>
+ * <th scope="row">specifyStreamHandler</th>
* <td>The ability
* to specify a stream handler when constructing a URL</td>
* <td>Malicious code may create a URL with resources that it would
--- a/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousChannelGroup.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousChannelGroup.java Thu Aug 24 16:29:34 2017 +0200
@@ -64,13 +64,13 @@
* <caption style="display:none:">System properties</caption>
* <thead>
* <tr>
- * <th>System property</th>
- * <th>Description</th>
+ * <th scope="col">System property</th>
+ * <th scope="col">Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td> {@code java.nio.channels.DefaultThreadPool.threadFactory} </td>
+ * <th scope="row"> {@code java.nio.channels.DefaultThreadPool.threadFactory} </th>
* <td> The value of this property is taken to be the fully-qualified name
* of a concrete {@link java.util.concurrent.ThreadFactory ThreadFactory}
* class. The class is loaded using the system class loader and instantiated.
@@ -81,7 +81,7 @@
* construction of the default group. </td>
* </tr>
* <tr>
- * <td> {@code java.nio.channels.DefaultThreadPool.initialSize} </td>
+ * <th scope="row"> {@code java.nio.channels.DefaultThreadPool.initialSize} </th>
* <td> The value of the {@code initialSize} parameter for the default
* group (see {@link #withCachedThreadPool withCachedThreadPool}).
* The value of the property is taken to be the {@code String}
--- a/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousFileChannel.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousFileChannel.java Thu Aug 24 16:29:34 2017 +0200
@@ -136,17 +136,17 @@
* <table class="striped">
* <caption style="display:none">additional options</caption>
* <thead>
- * <tr> <th>Option</th> <th>Description</th> </tr>
+ * <tr> <th scope="col">Option</th> <th scope="col">Description</th> </tr>
* </thead>
* <tbody>
* <tr>
- * <td> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </td>
+ * <th scope="row"> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </th>
* <td> When opening an existing file, the file is first truncated to a
* size of 0 bytes. This option is ignored when the file is opened only
* for reading.</td>
* </tr>
* <tr>
- * <td> {@link StandardOpenOption#CREATE_NEW CREATE_NEW} </td>
+ * <th scope="row"> {@link StandardOpenOption#CREATE_NEW CREATE_NEW} </th>
* <td> If this option is present then a new file is created, failing if
* the file already exists. When creating a file the check for the
* existence of the file and the creation of the file if it does not exist
@@ -154,7 +154,7 @@
* ignored when the file is opened only for reading. </td>
* </tr>
* <tr>
- * <td > {@link StandardOpenOption#CREATE CREATE} </td>
+ * <th scope="row" > {@link StandardOpenOption#CREATE CREATE} </th>
* <td> If this option is present then an existing file is opened if it
* exists, otherwise a new file is created. When creating a file the check
* for the existence of the file and the creation of the file if it does
@@ -163,7 +163,7 @@
* the file is opened only for reading. </td>
* </tr>
* <tr>
- * <td > {@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} </td>
+ * <th scope="row" > {@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} </th>
* <td> When this option is present then the implementation makes a
* <em>best effort</em> attempt to delete the file when closed by the
* the {@link #close close} method. If the {@code close} method is not
@@ -171,20 +171,20 @@
* when the Java virtual machine terminates. </td>
* </tr>
* <tr>
- * <td>{@link StandardOpenOption#SPARSE SPARSE} </td>
+ * <th scope="row">{@link StandardOpenOption#SPARSE SPARSE} </th>
* <td> When creating a new file this option is a <em>hint</em> that the
* new file will be sparse. This option is ignored when not creating
* a new file. </td>
* </tr>
* <tr>
- * <td> {@link StandardOpenOption#SYNC SYNC} </td>
+ * <th scope="row"> {@link StandardOpenOption#SYNC SYNC} </th>
* <td> Requires that every update to the file's content or metadata be
* written synchronously to the underlying storage device. (see <a
* href="../file/package-summary.html#integrity"> Synchronized I/O file
* integrity</a>). </td>
* </tr>
* <tr>
- * <td> {@link StandardOpenOption#DSYNC DSYNC} </td>
+ * <th scope="row"> {@link StandardOpenOption#DSYNC DSYNC} </th>
* <td> Requires that every update to the file's content be written
* synchronously to the underlying storage device. (see <a
* href="../file/package-summary.html#integrity"> Synchronized I/O file
--- a/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousServerSocketChannel.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousServerSocketChannel.java Thu Aug 24 16:29:34 2017 +0200
@@ -56,17 +56,17 @@
* <caption style="display:none">Socket options</caption>
* <thead>
* <tr>
- * <th>Option Name</th>
- * <th>Description</th>
+ * <th scope="col">Option Name</th>
+ * <th scope="col">Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </th>
* <td> The size of the socket receive buffer </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </th>
* <td> Re-use address </td>
* </tr>
* </tbody>
--- a/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousSocketChannel.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousSocketChannel.java Thu Aug 24 16:29:34 2017 +0200
@@ -66,29 +66,29 @@
* <caption style="display:none">Socket options</caption>
* <thead>
* <tr>
- * <th>Option Name</th>
- * <th>Description</th>
+ * <th scope="col">Option Name</th>
+ * <th scope="col">Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </th>
* <td> The size of the socket send buffer </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </th>
* <td> The size of the socket receive buffer </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_KEEPALIVE SO_KEEPALIVE} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_KEEPALIVE SO_KEEPALIVE} </th>
* <td> Keep connection alive </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </th>
* <td> Re-use address </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY} </th>
* <td> Disable the Nagle algorithm </td>
* </tr>
* </tbody>
--- a/jdk/src/java.base/share/classes/java/nio/channels/DatagramChannel.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/DatagramChannel.java Thu Aug 24 16:29:34 2017 +0200
@@ -61,44 +61,44 @@
* <caption style="display:none">Socket options</caption>
* <thead>
* <tr>
- * <th>Option Name</th>
- * <th>Description</th>
+ * <th scope="col">Option Name</th>
+ * <th scope="col">Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </th>
* <td> The size of the socket send buffer </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </th>
* <td> The size of the socket receive buffer </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </th>
* <td> Re-use address </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_BROADCAST SO_BROADCAST} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_BROADCAST SO_BROADCAST} </th>
* <td> Allow transmission of broadcast datagrams </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#IP_TOS IP_TOS} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#IP_TOS IP_TOS} </th>
* <td> The Type of Service (ToS) octet in the Internet Protocol (IP) header </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#IP_MULTICAST_IF IP_MULTICAST_IF} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#IP_MULTICAST_IF IP_MULTICAST_IF} </th>
* <td> The network interface for Internet Protocol (IP) multicast datagrams </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#IP_MULTICAST_TTL
- * IP_MULTICAST_TTL} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#IP_MULTICAST_TTL
+ * IP_MULTICAST_TTL} </th>
* <td> The <em>time-to-live</em> for Internet Protocol (IP) multicast
* datagrams </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#IP_MULTICAST_LOOP
- * IP_MULTICAST_LOOP} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#IP_MULTICAST_LOOP
+ * IP_MULTICAST_LOOP} </th>
* <td> Loopback for Internet Protocol (IP) multicast datagrams </td>
* </tr>
* </tbody>
--- a/jdk/src/java.base/share/classes/java/nio/channels/FileChannel.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/FileChannel.java Thu Aug 24 16:29:34 2017 +0200
@@ -177,11 +177,11 @@
* <table class="striped">
* <caption style="display:none">additional options</caption>
* <thead>
- * <tr> <th>Option</th> <th>Description</th> </tr>
+ * <tr> <th scope="col">Option</th> <th scope="col">Description</th> </tr>
* </thead>
* <tbody>
* <tr>
- * <td> {@link StandardOpenOption#APPEND APPEND} </td>
+ * <th scope="row"> {@link StandardOpenOption#APPEND APPEND} </th>
* <td> If this option is present then the file is opened for writing and
* each invocation of the channel's {@code write} method first advances
* the position to the end of the file and then writes the requested
@@ -191,13 +191,13 @@
* with the {@code READ} or {@code TRUNCATE_EXISTING} options. </td>
* </tr>
* <tr>
- * <td> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </td>
+ * <th scope="row"> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </th>
* <td> If this option is present then the existing file is truncated to
* a size of 0 bytes. This option is ignored when the file is opened only
* for reading. </td>
* </tr>
* <tr>
- * <td> {@link StandardOpenOption#CREATE_NEW CREATE_NEW} </td>
+ * <th scope="row"> {@link StandardOpenOption#CREATE_NEW CREATE_NEW} </th>
* <td> If this option is present then a new file is created, failing if
* the file already exists. When creating a file the check for the
* existence of the file and the creation of the file if it does not exist
@@ -205,7 +205,7 @@
* ignored when the file is opened only for reading. </td>
* </tr>
* <tr>
- * <td > {@link StandardOpenOption#CREATE CREATE} </td>
+ * <th scope="row" > {@link StandardOpenOption#CREATE CREATE} </th>
* <td> If this option is present then an existing file is opened if it
* exists, otherwise a new file is created. When creating a file the check
* for the existence of the file and the creation of the file if it does
@@ -214,7 +214,7 @@
* the file is opened only for reading. </td>
* </tr>
* <tr>
- * <td > {@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} </td>
+ * <th scope="row" > {@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} </th>
* <td> When this option is present then the implementation makes a
* <em>best effort</em> attempt to delete the file when closed by the
* the {@link #close close} method. If the {@code close} method is not
@@ -222,20 +222,20 @@
* when the Java virtual machine terminates. </td>
* </tr>
* <tr>
- * <td>{@link StandardOpenOption#SPARSE SPARSE} </td>
+ * <th scope="row">{@link StandardOpenOption#SPARSE SPARSE} </th>
* <td> When creating a new file this option is a <em>hint</em> that the
* new file will be sparse. This option is ignored when not creating
* a new file. </td>
* </tr>
* <tr>
- * <td> {@link StandardOpenOption#SYNC SYNC} </td>
+ * <th scope="row"> {@link StandardOpenOption#SYNC SYNC} </th>
* <td> Requires that every update to the file's content or metadata be
* written synchronously to the underlying storage device. (see <a
* href="../file/package-summary.html#integrity"> Synchronized I/O file
* integrity</a>). </td>
* </tr>
* <tr>
- * <td> {@link StandardOpenOption#DSYNC DSYNC} </td>
+ * <th scope="row"> {@link StandardOpenOption#DSYNC DSYNC} </th>
* <td> Requires that every update to the file's content be written
* synchronously to the underlying storage device. (see <a
* href="../file/package-summary.html#integrity"> Synchronized I/O file
--- a/jdk/src/java.base/share/classes/java/nio/channels/ServerSocketChannel.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/ServerSocketChannel.java Thu Aug 24 16:29:34 2017 +0200
@@ -50,17 +50,17 @@
* <caption style="display:none">Socket options</caption>
* <thead>
* <tr>
- * <th>Option Name</th>
- * <th>Description</th>
+ * <th scope="col">Option Name</th>
+ * <th scope="col">Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </th>
* <td> The size of the socket receive buffer </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </th>
* <td> Re-use address </td>
* </tr>
* </tbody>
--- a/jdk/src/java.base/share/classes/java/nio/channels/SocketChannel.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/SocketChannel.java Thu Aug 24 16:29:34 2017 +0200
@@ -70,34 +70,34 @@
* <caption style="display:none">Socket options</caption>
* <thead>
* <tr>
- * <th>Option Name</th>
- * <th>Description</th>
+ * <th scope="col">Option Name</th>
+ * <th scope="col">Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </th>
* <td> The size of the socket send buffer </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </th>
* <td> The size of the socket receive buffer </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_KEEPALIVE SO_KEEPALIVE} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_KEEPALIVE SO_KEEPALIVE} </th>
* <td> Keep connection alive </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </th>
* <td> Re-use address </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#SO_LINGER SO_LINGER} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#SO_LINGER SO_LINGER} </th>
* <td> Linger on close if data is present (when configured in blocking mode
* only) </td>
* </tr>
* <tr>
- * <td> {@link java.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY} </td>
+ * <th scope="row"> {@link java.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY} </th>
* <td> Disable the Nagle algorithm </td>
* </tr>
* </tbody>
--- a/jdk/src/java.base/share/classes/java/nio/charset/Charset.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/charset/Charset.java Thu Aug 24 16:29:34 2017 +0200
@@ -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;
/**
@@ -150,23 +151,23 @@
* <blockquote><table class="striped" style="width:80%">
* <caption style="display:none">Description of standard charsets</caption>
* <thead>
- * <tr><th style="text-align:left">Charset</th><th style="text-align:left">Description</th></tr>
+ * <tr><th scope="col" style="text-align:left">Charset</th><th scope="col" style="text-align:left">Description</th></tr>
* </thead>
* <tbody>
- * <tr><td style="vertical-align:top">{@code US-ASCII}</td>
+ * <tr><th scope="row" style="vertical-align:top">{@code US-ASCII}</th>
* <td>Seven-bit ASCII, a.k.a. {@code ISO646-US},
* a.k.a. the Basic Latin block of the Unicode character set</td></tr>
- * <tr><td style="vertical-align:top"><code>ISO-8859-1 </code></td>
+ * <tr><th scope="row" style="vertical-align:top"><code>ISO-8859-1 </code></th>
* <td>ISO Latin Alphabet No. 1, a.k.a. {@code ISO-LATIN-1}</td></tr>
- * <tr><td style="vertical-align:top">{@code UTF-8}</td>
+ * <tr><th scope="row" style="vertical-align:top">{@code UTF-8}</th>
* <td>Eight-bit UCS Transformation Format</td></tr>
- * <tr><td style="vertical-align:top">{@code UTF-16BE}</td>
+ * <tr><th scope="row" style="vertical-align:top">{@code UTF-16BE}</th>
* <td>Sixteen-bit UCS Transformation Format,
* big-endian byte order</td></tr>
- * <tr><td style="vertical-align:top">{@code UTF-16LE}</td>
+ * <tr><th scope="row" style="vertical-align:top">{@code UTF-16LE}</th>
* <td>Sixteen-bit UCS Transformation Format,
* little-endian byte order</td></tr>
- * <tr><td style="vertical-align:top">{@code UTF-16}</td>
+ * <tr><th scope="row" style="vertical-align:top">{@code UTF-16}</th>
* <td>Sixteen-bit UCS Transformation Format,
* byte order identified by an optional byte-order mark</td></tr>
* </tbody>
@@ -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/nio/file/Files.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/Files.java Thu Aug 24 16:29:34 2017 +0200
@@ -236,11 +236,11 @@
* <table class="striped">
* <caption style="display:none">Options</caption>
* <thead>
- * <tr> <th>Option</th> <th>Description</th> </tr>
+ * <tr> <th scope="col">Option</th> <th scope="col">Description</th> </tr>
* </thead>
* <tbody>
* <tr>
- * <td> {@link StandardOpenOption#APPEND APPEND} </td>
+ * <th scope="row"> {@link StandardOpenOption#APPEND APPEND} </th>
* <td> If this option is present then the file is opened for writing and
* each invocation of the channel's {@code write} method first advances
* the position to the end of the file and then writes the requested
@@ -250,13 +250,13 @@
* with the {@code READ} or {@code TRUNCATE_EXISTING} options. </td>
* </tr>
* <tr>
- * <td> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </td>
+ * <th scope="row"> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </th>
* <td> If this option is present then the existing file is truncated to
* a size of 0 bytes. This option is ignored when the file is opened only
* for reading. </td>
* </tr>
* <tr>
- * <td> {@link StandardOpenOption#CREATE_NEW CREATE_NEW} </td>
+ * <th scope="row"> {@link StandardOpenOption#CREATE_NEW CREATE_NEW} </th>
* <td> If this option is present then a new file is created, failing if
* the file already exists or is a symbolic link. When creating a file the
* check for the existence of the file and the creation of the file if it
@@ -264,14 +264,14 @@
* This option is ignored when the file is opened only for reading. </td>
* </tr>
* <tr>
- * <td > {@link StandardOpenOption#CREATE CREATE} </td>
+ * <th scope="row" > {@link StandardOpenOption#CREATE CREATE} </th>
* <td> If this option is present then an existing file is opened if it
* exists, otherwise a new file is created. This option is ignored if the
* {@code CREATE_NEW} option is also present or the file is opened only
* for reading. </td>
* </tr>
* <tr>
- * <td > {@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} </td>
+ * <th scope="row" > {@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} </th>
* <td> When this option is present then the implementation makes a
* <em>best effort</em> attempt to delete the file when closed by the
* {@link SeekableByteChannel#close close} method. If the {@code close}
@@ -279,20 +279,20 @@
* delete the file when the Java virtual machine terminates. </td>
* </tr>
* <tr>
- * <td>{@link StandardOpenOption#SPARSE SPARSE} </td>
+ * <th scope="row">{@link StandardOpenOption#SPARSE SPARSE} </th>
* <td> When creating a new file this option is a <em>hint</em> that the
* new file will be sparse. This option is ignored when not creating
* a new file. </td>
* </tr>
* <tr>
- * <td> {@link StandardOpenOption#SYNC SYNC} </td>
+ * <th scope="row"> {@link StandardOpenOption#SYNC SYNC} </th>
* <td> Requires that every update to the file's content or metadata be
* written synchronously to the underlying storage device. (see <a
* href="package-summary.html#integrity"> Synchronized I/O file
* integrity</a>). </td>
* </tr>
* <tr>
- * <td> {@link StandardOpenOption#DSYNC DSYNC} </td>
+ * <th scope="row"> {@link StandardOpenOption#DSYNC DSYNC} </th>
* <td> Requires that every update to the file's content be written
* synchronously to the underlying storage device. (see <a
* href="package-summary.html#integrity"> Synchronized I/O file
@@ -1196,18 +1196,18 @@
* <table class="striped">
* <caption style="display:none">Options</caption>
* <thead>
- * <tr> <th>Option</th> <th>Description</th> </tr>
+ * <tr> <th scope="col">Option</th> <th scope="col">Description</th> </tr>
* </thead>
* <tbody>
* <tr>
- * <td> {@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} </td>
+ * <th scope="row"> {@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} </th>
* <td> If the target file exists, then the target file is replaced if it
* is not a non-empty directory. If the target file exists and is a
* symbolic link, then the symbolic link itself, not the target of
* the link, is replaced. </td>
* </tr>
* <tr>
- * <td> {@link StandardCopyOption#COPY_ATTRIBUTES COPY_ATTRIBUTES} </td>
+ * <th scope="row"> {@link StandardCopyOption#COPY_ATTRIBUTES COPY_ATTRIBUTES} </th>
* <td> Attempts to copy the file attributes associated with this file to
* the target file. The exact file attributes that are copied is platform
* and file system dependent and therefore unspecified. Minimally, the
@@ -1217,7 +1217,7 @@
* loss. </td>
* </tr>
* <tr>
- * <td> {@link LinkOption#NOFOLLOW_LINKS NOFOLLOW_LINKS} </td>
+ * <th scope="row"> {@link LinkOption#NOFOLLOW_LINKS NOFOLLOW_LINKS} </th>
* <td> Symbolic links are not followed. If the file is a symbolic link,
* then the symbolic link itself, not the target of the link, is copied.
* It is implementation specific if file attributes can be copied to the
@@ -1319,18 +1319,18 @@
* <table class="striped">
* <caption style="display:none">Options</caption>
* <thead>
- * <tr> <th>Option</th> <th>Description</th> </tr>
+ * <tr> <th scope="col">Option</th> <th scope="col">Description</th> </tr>
* </thead>
* <tbody>
* <tr>
- * <td> {@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} </td>
+ * <th scope="row"> {@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} </th>
* <td> If the target file exists, then the target file is replaced if it
* is not a non-empty directory. If the target file exists and is a
* symbolic link, then the symbolic link itself, not the target of
* the link, is replaced. </td>
* </tr>
* <tr>
- * <td> {@link StandardCopyOption#ATOMIC_MOVE ATOMIC_MOVE} </td>
+ * <th scope="row"> {@link StandardCopyOption#ATOMIC_MOVE ATOMIC_MOVE} </th>
* <td> The move is performed as an atomic file system operation and all
* other options are ignored. If the target file exists then it is
* implementation specific if the existing file is replaced or this method
--- a/jdk/src/java.base/share/classes/java/nio/file/LinkPermission.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/LinkPermission.java Thu Aug 24 16:29:34 2017 +0200
@@ -37,14 +37,14 @@
* <caption style="display:none">Table shows permission target name, what the permission allows, and associated risks</caption>
* <thead>
* <tr>
- * <th>Permission Target Name</th>
- * <th>What the Permission Allows</th>
- * <th>Risks of Allowing this Permission</th>
+ * <th scope="col">Permission Target Name</th>
+ * <th scope="col">What the Permission Allows</th>
+ * <th scope="col">Risks of Allowing this Permission</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td>hard</td>
+ * <th scope="row">hard</th>
* <td> Ability to add an existing file to a directory. This is sometimes
* known as creating a link, or hard link. </td>
* <td> Extreme care should be taken when granting this permission. It allows
@@ -52,7 +52,7 @@
* attacker access to all files. </td>
* </tr>
* <tr>
- * <td>symbolic</td>
+ * <th scope="row">symbolic</th>
* <td> Ability to create symbolic links. </td>
* <td> Extreme care should be taken when granting this permission. It allows
* linking to any file or directory in the file system thus allowing the
--- a/jdk/src/java.base/share/classes/java/nio/file/attribute/AclFileAttributeView.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/attribute/AclFileAttributeView.java Thu Aug 24 16:29:34 2017 +0200
@@ -98,17 +98,17 @@
* <caption style="display:none">Supported attributes</caption>
* <thead>
* <tr>
- * <th> Name </th>
- * <th> Type </th>
+ * <th scope="col"> Name </th>
+ * <th scope="col"> Type </th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td> "acl" </td>
+ * <th scope="row"> "acl" </th>
* <td> {@link List}<{@link AclEntry}> </td>
* </tr>
* <tr>
- * <td> "owner" </td>
+ * <th scope="row"> "owner" </th>
* <td> {@link UserPrincipal} </td>
* </tr>
* </tbody>
--- a/jdk/src/java.base/share/classes/java/nio/file/attribute/BasicFileAttributeView.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/attribute/BasicFileAttributeView.java Thu Aug 24 16:29:34 2017 +0200
@@ -45,45 +45,45 @@
* <caption style="display:none">Supported attributes</caption>
* <thead>
* <tr>
- * <th> Name </th>
- * <th> Type </th>
+ * <th scope="col"> Name </th>
+ * <th scope="col"> Type </th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td> "lastModifiedTime" </td>
+ * <th scope="row"> "lastModifiedTime" </th>
* <td> {@link FileTime} </td>
* </tr>
* <tr>
- * <td> "lastAccessTime" </td>
+ * <th scope="row"> "lastAccessTime" </th>
* <td> {@link FileTime} </td>
* </tr>
* <tr>
- * <td> "creationTime" </td>
+ * <th scope="row"> "creationTime" </th>
* <td> {@link FileTime} </td>
* </tr>
* <tr>
- * <td> "size" </td>
+ * <th scope="row"> "size" </th>
* <td> {@link Long} </td>
* </tr>
* <tr>
- * <td> "isRegularFile" </td>
+ * <th scope="row"> "isRegularFile" </th>
* <td> {@link Boolean} </td>
* </tr>
* <tr>
- * <td> "isDirectory" </td>
+ * <th scope="row"> "isDirectory" </th>
* <td> {@link Boolean} </td>
* </tr>
* <tr>
- * <td> "isSymbolicLink" </td>
+ * <th scope="row"> "isSymbolicLink" </th>
* <td> {@link Boolean} </td>
* </tr>
* <tr>
- * <td> "isOther" </td>
+ * <th scope="row"> "isOther" </th>
* <td> {@link Boolean} </td>
* </tr>
* <tr>
- * <td> "fileKey" </td>
+ * <th scope="row"> "fileKey" </th>
* <td> {@link Object} </td>
* </tr>
* </tbody>
--- a/jdk/src/java.base/share/classes/java/nio/file/attribute/DosFileAttributeView.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/attribute/DosFileAttributeView.java Thu Aug 24 16:29:34 2017 +0200
@@ -45,25 +45,25 @@
* <caption style="display:none">Supported attributes</caption>
* <thead>
* <tr>
- * <th> Name </th>
- * <th> Type </th>
+ * <th scope="col"> Name </th>
+ * <th scope="col"> Type </th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td> readonly </td>
+ * <th scope="row"> readonly </th>
* <td> {@link Boolean} </td>
* </tr>
* <tr>
- * <td> hidden </td>
+ * <th scope="row"> hidden </th>
* <td> {@link Boolean} </td>
* </tr>
* <tr>
- * <td> system </td>
+ * <th scope="row"> system </th>
* <td> {@link Boolean} </td>
* </tr>
* <tr>
- * <td> archive </td>
+ * <th scope="row"> archive </th>
* <td> {@link Boolean} </td>
* </tr>
* </tbody>
--- a/jdk/src/java.base/share/classes/java/nio/file/attribute/PosixFileAttributeView.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/attribute/PosixFileAttributeView.java Thu Aug 24 16:29:34 2017 +0200
@@ -78,17 +78,17 @@
* <caption style="display:none">Supported attributes</caption>
* <thead>
* <tr>
- * <th> Name </th>
- * <th> Type </th>
+ * <th scope="col"> Name </th>
+ * <th scope="col"> Type </th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td> "permissions" </td>
+ * <th scope="row"> "permissions" </th>
* <td> {@link Set}<{@link PosixFilePermission}> </td>
* </tr>
* <tr>
- * <td> "group" </td>
+ * <th scope="row"> "group" </th>
* <td> {@link GroupPrincipal} </td>
* </tr>
* </tbody>
--- a/jdk/src/java.base/share/classes/java/nio/file/spi/FileSystemProvider.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/spi/FileSystemProvider.java Thu Aug 24 16:29:34 2017 +0200
@@ -922,21 +922,21 @@
* <table class="striped">
* <caption style="display:none">Access Modes</caption>
* <thead>
- * <tr> <th>Value</th> <th>Description</th> </tr>
+ * <tr> <th scope="col">Value</th> <th scope="col">Description</th> </tr>
* </thead>
* <tbody>
* <tr>
- * <td> {@link AccessMode#READ READ} </td>
+ * <th scope="row"> {@link AccessMode#READ READ} </th>
* <td> Checks that the file exists and that the Java virtual machine has
* permission to read the file. </td>
* </tr>
* <tr>
- * <td> {@link AccessMode#WRITE WRITE} </td>
+ * <th scope="row"> {@link AccessMode#WRITE WRITE} </th>
* <td> Checks that the file exists and that the Java virtual machine has
* permission to write to the file, </td>
* </tr>
* <tr>
- * <td> {@link AccessMode#EXECUTE EXECUTE} </td>
+ * <th scope="row"> {@link AccessMode#EXECUTE EXECUTE} </th>
* <td> Checks that the file exists and that the Java virtual machine has
* permission to {@link Runtime#exec execute} the file. The semantics
* may differ when checking access to a directory. For example, on UNIX
--- a/jdk/src/java.base/share/classes/java/security/SecurityPermission.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/SecurityPermission.java Thu Aug 24 16:29:34 2017 +0200
@@ -49,15 +49,15 @@
* <caption style="display:none">target name, what the permission allows, and associated risks</caption>
* <thead>
* <tr>
- * <th>Permission Target Name</th>
- * <th>What the Permission Allows</th>
- * <th>Risks of Allowing this Permission</th>
+ * <th scope="col">Permission Target Name</th>
+ * <th scope="col">What the Permission Allows</th>
+ * <th scope="col">Risks of Allowing this Permission</th>
* </tr>
* </thead>
* <tbody>
*
* <tr>
- * <td>authProvider.{provider name}</td>
+ * <th scope="row">authProvider.{provider name}</th>
* <td>Allow the named provider to be an AuthProvider for login and
* logout operations. </td>
* <td>This allows the named provider to perform login and logout
@@ -68,7 +68,7 @@
* </tr>
*
* <tr>
- * <td>createAccessControlContext</td>
+ * <th scope="row">createAccessControlContext</th>
* <td>Creation of an AccessControlContext</td>
* <td>This allows someone to instantiate an AccessControlContext
* with a {@code DomainCombiner}. Extreme care must be taken when
@@ -78,7 +78,7 @@
* </tr>
*
* <tr>
- * <td>getDomainCombiner</td>
+ * <th scope="row">getDomainCombiner</th>
* <td>Retrieval of an AccessControlContext's DomainCombiner</td>
* <td>This allows someone to retrieve an AccessControlContext's
* {@code DomainCombiner}. Since DomainCombiners may contain
@@ -86,7 +86,7 @@
* </tr>
*
* <tr>
- * <td>getPolicy</td>
+ * <th scope="row">getPolicy</th>
* <td>Retrieval of the system-wide security policy (specifically, of the
* currently-installed Policy object)</td>
* <td>This allows someone to query the policy via the
@@ -99,7 +99,7 @@
* </tr>
*
* <tr>
- * <td>setPolicy</td>
+ * <th scope="row">setPolicy</th>
* <td>Setting of the system-wide security policy (specifically,
* the Policy object)</td>
* <td>Granting this permission is extremely dangerous, as malicious
@@ -108,7 +108,7 @@
* </tr>
*
* <tr>
- * <td>createPolicy.{policy type}</td>
+ * <th scope="row">createPolicy.{policy type}</th>
* <td>Getting an instance of a Policy implementation from a provider</td>
* <td>Granting this permission enables code to obtain a Policy object.
* Malicious code may query the Policy object to determine what permissions
@@ -116,7 +116,7 @@
* </tr>
*
* <tr>
- * <td>getProperty.{key}</td>
+ * <th scope="row">getProperty.{key}</th>
* <td>Retrieval of the security property with the specified key</td>
* <td>Depending on the particular key for which access has
* been granted, the code may have access to the list of security
@@ -129,7 +129,7 @@
* </tr>
*
* <tr>
- * <td>setProperty.{key}</td>
+ * <th scope="row">setProperty.{key}</th>
* <td>Setting of the security property with the specified key</td>
* <td>This could include setting a security provider or defining
* the location of the system-wide security policy. Malicious
@@ -144,7 +144,7 @@
* </tr>
*
* <tr>
- * <td>insertProvider</td>
+ * <th scope="row">insertProvider</th>
* <td>Addition of a new provider</td>
* <td>This would allow somebody to introduce a possibly
* malicious provider (e.g., one that discloses the private keys passed
@@ -158,7 +158,7 @@
* </tr>
*
* <tr>
- * <td>removeProvider.{provider name}</td>
+ * <th scope="row">removeProvider.{provider name}</th>
* <td>Removal of the specified provider</td>
* <td>This may change the behavior or disable execution of other
* parts of the program. If a provider subsequently requested by the
@@ -171,7 +171,7 @@
* </tr>
*
* <tr>
- * <td>clearProviderProperties.{provider name}</td>
+ * <th scope="row">clearProviderProperties.{provider name}</th>
* <td>"Clearing" of a Provider so that it no longer contains the properties
* used to look up services implemented by the provider</td>
* <td>This disables the lookup of services implemented by the provider.
@@ -181,7 +181,7 @@
* </tr>
*
* <tr>
- * <td>putProviderProperty.{provider name}</td>
+ * <th scope="row">putProviderProperty.{provider name}</th>
* <td>Setting of properties for the specified Provider</td>
* <td>The provider properties each specify the name and location
* of a particular service implemented by the provider. By granting
@@ -190,7 +190,7 @@
* </tr>
*
* <tr>
- * <td>removeProviderProperty.{provider name}</td>
+ * <th scope="row">removeProviderProperty.{provider name}</th>
* <td>Removal of properties from the specified Provider</td>
* <td>This disables the lookup of services implemented by the
* provider. They are no longer accessible due to removal of the properties
@@ -213,15 +213,15 @@
* <caption style="display:none">target name, what the permission allows, and associated risks</caption>
* <thead>
* <tr>
- * <th>Permission Target Name</th>
- * <th>What the Permission Allows</th>
- * <th>Risks of Allowing this Permission</th>
+ * <th scope="col">Permission Target Name</th>
+ * <th scope="col">What the Permission Allows</th>
+ * <th scope="col">Risks of Allowing this Permission</th>
* </tr>
* </thead>
*
* <tbody>
* <tr>
- * <td>insertProvider.{provider name}</td>
+ * <th scope="row">insertProvider.{provider name}</th>
* <td>Addition of a new provider, with the specified name</td>
* <td>Use of this permission is discouraged from further use because it is
* possible to circumvent the name restrictions by overriding the
@@ -238,7 +238,7 @@
* </tr>
*
* <tr>
- * <td>setSystemScope</td>
+ * <th scope="row">setSystemScope</th>
* <td>Setting of the system identity scope</td>
* <td>This would allow an attacker to configure the system identity scope with
* certificates that should not be trusted, thereby granting applet or
@@ -247,7 +247,7 @@
* </tr>
*
* <tr>
- * <td>setIdentityPublicKey</td>
+ * <th scope="row">setIdentityPublicKey</th>
* <td>Setting of the public key for an Identity</td>
* <td>If the identity is marked as "trusted", this allows an attacker to
* introduce a different public key (e.g., its own) that is not trusted
@@ -257,7 +257,7 @@
* </tr>
*
* <tr>
- * <td>setIdentityInfo</td>
+ * <th scope="row">setIdentityInfo</th>
* <td>Setting of a general information string for an Identity</td>
* <td>This allows attackers to set the general description for
* an identity. This may trick applications into using a different
@@ -266,7 +266,7 @@
* </tr>
*
* <tr>
- * <td>addIdentityCertificate</td>
+ * <th scope="row">addIdentityCertificate</th>
* <td>Addition of a certificate for an Identity</td>
* <td>This allows attackers to set a certificate for
* an identity's public key. This is dangerous because it affects
@@ -275,7 +275,7 @@
* </tr>
*
* <tr>
- * <td>removeIdentityCertificate</td>
+ * <th scope="row">removeIdentityCertificate</th>
* <td>Removal of a certificate for an Identity</td>
* <td>This allows attackers to remove a certificate for
* an identity's public key. This is dangerous because it affects
@@ -284,7 +284,7 @@
* </tr>
*
* <tr>
- * <td>printIdentity</td>
+ * <th scope="row">printIdentity</th>
* <td>Viewing the name of a principal
* and optionally the scope in which it is used, and whether
* or not it is considered "trusted" in that scope</td>
@@ -296,7 +296,7 @@
*</tr>
*
* <tr>
- * <td>getSignerPrivateKey</td>
+ * <th scope="row">getSignerPrivateKey</th>
* <td>Retrieval of a Signer's private key</td>
* <td>It is very dangerous to allow access to a private key; private
* keys are supposed to be kept secret. Otherwise, code can use the
@@ -305,7 +305,7 @@
* </tr>
*
* <tr>
- * <td>setSignerKeyPair</td>
+ * <th scope="row">setSignerKeyPair</th>
* <td>Setting of the key pair (public key and private key) for a Signer</td>
* <td>This would allow an attacker to replace somebody else's (the "target's")
* keypair with a possibly weaker keypair (e.g., a keypair of a smaller
--- a/jdk/src/java.base/share/classes/java/text/DecimalFormat.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/text/DecimalFormat.java Thu Aug 24 16:29:34 2017 +0200
@@ -176,60 +176,60 @@
* <caption style="display:none">Chart showing symbol, location, localized, and meaning.</caption>
* <thead>
* <tr>
- * <th style="text-align:left">Symbol
- * <th style="text-align:left">Location
- * <th style="text-align:left">Localized?
- * <th style="text-align:left">Meaning
+ * <th scope="col" style="text-align:left">Symbol
+ * <th scope="col" style="text-align:left">Location
+ * <th scope="col" style="text-align:left">Localized?
+ * <th scope="col" style="text-align:left">Meaning
* </thead>
* <tbody>
* <tr style="vertical-align:top">
- * <td><code>0</code>
+ * <th scope="row"><code>0</code>
* <td>Number
* <td>Yes
* <td>Digit
* <tr style="vertical-align: top">
- * <td><code>#</code>
+ * <th scope="row"><code>#</code>
* <td>Number
* <td>Yes
* <td>Digit, zero shows as absent
* <tr style="vertical-align:top">
- * <td><code>.</code>
+ * <th scope="row"><code>.</code>
* <td>Number
* <td>Yes
* <td>Decimal separator or monetary decimal separator
* <tr style="vertical-align: top">
- * <td><code>-</code>
+ * <th scope="row"><code>-</code>
* <td>Number
* <td>Yes
* <td>Minus sign
* <tr style="vertical-align:top">
- * <td><code>,</code>
+ * <th scope="row"><code>,</code>
* <td>Number
* <td>Yes
* <td>Grouping separator
* <tr style="vertical-align: top">
- * <td><code>E</code>
+ * <th scope="row"><code>E</code>
* <td>Number
* <td>Yes
* <td>Separates mantissa and exponent in scientific notation.
* <em>Need not be quoted in prefix or suffix.</em>
* <tr style="vertical-align:top">
- * <td><code>;</code>
+ * <th scope="row"><code>;</code>
* <td>Subpattern boundary
* <td>Yes
* <td>Separates positive and negative subpatterns
* <tr style="vertical-align: top">
- * <td><code>%</code>
+ * <th scope="row"><code>%</code>
* <td>Prefix or suffix
* <td>Yes
* <td>Multiply by 100 and show as percentage
* <tr style="vertical-align:top">
- * <td><code>\u2030</code>
+ * <th scope="row"><code>\u2030</code>
* <td>Prefix or suffix
* <td>Yes
* <td>Multiply by 1000 and show as per mille value
* <tr style="vertical-align: top">
- * <td><code>¤</code> (<code>\u00A4</code>)
+ * <th scope="row"><code>¤</code> (<code>\u00A4</code>)
* <td>Prefix or suffix
* <td>No
* <td>Currency sign, replaced by currency symbol. If
@@ -237,7 +237,7 @@
* If present in a pattern, the monetary decimal separator
* is used instead of the decimal separator.
* <tr style="vertical-align:top">
- * <td><code>'</code>
+ * <th scope="row"><code>'</code>
* <td>Prefix or suffix
* <td>No
* <td>Used to quote special characters in a prefix or suffix,
--- a/jdk/src/java.base/share/classes/java/text/SimpleDateFormat.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/text/SimpleDateFormat.java Thu Aug 24 16:29:34 2017 +0200
@@ -96,124 +96,124 @@
* <caption style="display:none">Chart shows pattern letters, date/time component, presentation, and examples.</caption>
* <thead>
* <tr>
- * <th style="text-align:left">Letter
- * <th style="text-align:left">Date or Time Component
- * <th style="text-align:left">Presentation
- * <th style="text-align:left">Examples
+ * <th scope="col" style="text-align:left">Letter
+ * <th scope="col" style="text-align:left">Date or Time Component
+ * <th scope="col" style="text-align:left">Presentation
+ * <th scope="col" style="text-align:left">Examples
* </thead>
* <tbody>
* <tr>
- * <td><code>G</code>
+ * <th scope="row"><code>G</code>
* <td>Era designator
* <td><a href="#text">Text</a>
* <td><code>AD</code>
* <tr>
- * <td><code>y</code>
+ * <th scope="row"><code>y</code>
* <td>Year
* <td><a href="#year">Year</a>
* <td><code>1996</code>; <code>96</code>
* <tr>
- * <td><code>Y</code>
+ * <th scope="row"><code>Y</code>
* <td>Week year
* <td><a href="#year">Year</a>
* <td><code>2009</code>; <code>09</code>
* <tr>
- * <td><code>M</code>
+ * <th scope="row"><code>M</code>
* <td>Month in year (context sensitive)
* <td><a href="#month">Month</a>
* <td><code>July</code>; <code>Jul</code>; <code>07</code>
* <tr>
- * <td><code>L</code>
+ * <th scope="row"><code>L</code>
* <td>Month in year (standalone form)
* <td><a href="#month">Month</a>
* <td><code>July</code>; <code>Jul</code>; <code>07</code>
* <tr>
- * <td><code>w</code>
+ * <th scope="row"><code>w</code>
* <td>Week in year
* <td><a href="#number">Number</a>
* <td><code>27</code>
* <tr>
- * <td><code>W</code>
+ * <th scope="row"><code>W</code>
* <td>Week in month
* <td><a href="#number">Number</a>
* <td><code>2</code>
* <tr>
- * <td><code>D</code>
+ * <th scope="row"><code>D</code>
* <td>Day in year
* <td><a href="#number">Number</a>
* <td><code>189</code>
* <tr>
- * <td><code>d</code>
+ * <th scope="row"><code>d</code>
* <td>Day in month
* <td><a href="#number">Number</a>
* <td><code>10</code>
* <tr>
- * <td><code>F</code>
+ * <th scope="row"><code>F</code>
* <td>Day of week in month
* <td><a href="#number">Number</a>
* <td><code>2</code>
* <tr>
- * <td><code>E</code>
+ * <th scope="row"><code>E</code>
* <td>Day name in week
* <td><a href="#text">Text</a>
* <td><code>Tuesday</code>; <code>Tue</code>
* <tr>
- * <td><code>u</code>
+ * <th scope="row"><code>u</code>
* <td>Day number of week (1 = Monday, ..., 7 = Sunday)
* <td><a href="#number">Number</a>
* <td><code>1</code>
* <tr>
- * <td><code>a</code>
+ * <th scope="row"><code>a</code>
* <td>Am/pm marker
* <td><a href="#text">Text</a>
* <td><code>PM</code>
* <tr>
- * <td><code>H</code>
+ * <th scope="row"><code>H</code>
* <td>Hour in day (0-23)
* <td><a href="#number">Number</a>
* <td><code>0</code>
* <tr>
- * <td><code>k</code>
+ * <th scope="row"><code>k</code>
* <td>Hour in day (1-24)
* <td><a href="#number">Number</a>
* <td><code>24</code>
* <tr>
- * <td><code>K</code>
+ * <th scope="row"><code>K</code>
* <td>Hour in am/pm (0-11)
* <td><a href="#number">Number</a>
* <td><code>0</code>
* <tr>
- * <td><code>h</code>
+ * <th scope="row"><code>h</code>
* <td>Hour in am/pm (1-12)
* <td><a href="#number">Number</a>
* <td><code>12</code>
* <tr>
- * <td><code>m</code>
+ * <th scope="row"><code>m</code>
* <td>Minute in hour
* <td><a href="#number">Number</a>
* <td><code>30</code>
* <tr>
- * <td><code>s</code>
+ * <th scope="row"><code>s</code>
* <td>Second in minute
* <td><a href="#number">Number</a>
* <td><code>55</code>
* <tr>
- * <td><code>S</code>
+ * <th scope="row"><code>S</code>
* <td>Millisecond
* <td><a href="#number">Number</a>
* <td><code>978</code>
* <tr>
- * <td><code>z</code>
+ * <th scope="row"><code>z</code>
* <td>Time zone
* <td><a href="#timezone">General time zone</a>
* <td><code>Pacific Standard Time</code>; <code>PST</code>; <code>GMT-08:00</code>
* <tr>
- * <td><code>Z</code>
+ * <th scope="row"><code>Z</code>
* <td>Time zone
* <td><a href="#rfc822timezone">RFC 822 time zone</a>
* <td><code>-0800</code>
* <tr>
- * <td><code>X</code>
+ * <th scope="row"><code>X</code>
* <td>Time zone
* <td><a href="#iso8601timezone">ISO 8601 time zone</a>
* <td><code>-08</code>; <code>-0800</code>; <code>-08:00</code>
@@ -379,42 +379,42 @@
* <caption style="display:none">Examples of date and time patterns interpreted in the U.S. locale</caption>
* <thead>
* <tr>
- * <th style="text-align:left">Date and Time Pattern
- * <th style="text-align:left">Result
+ * <th scope="col" style="text-align:left">Date and Time Pattern
+ * <th scope="col" style="text-align:left">Result
* </thead>
* <tbody>
* <tr>
- * <td><code>"yyyy.MM.dd G 'at' HH:mm:ss z"</code>
+ * <th scope="row"><code>"yyyy.MM.dd G 'at' HH:mm:ss z"</code>
* <td><code>2001.07.04 AD at 12:08:56 PDT</code>
* <tr>
- * <td><code>"EEE, MMM d, ''yy"</code>
+ * <th scope="row"><code>"EEE, MMM d, ''yy"</code>
* <td><code>Wed, Jul 4, '01</code>
* <tr>
- * <td><code>"h:mm a"</code>
+ * <th scope="row"><code>"h:mm a"</code>
* <td><code>12:08 PM</code>
* <tr>
- * <td><code>"hh 'o''clock' a, zzzz"</code>
+ * <th scope="row"><code>"hh 'o''clock' a, zzzz"</code>
* <td><code>12 o'clock PM, Pacific Daylight Time</code>
* <tr>
- * <td><code>"K:mm a, z"</code>
+ * <th scope="row"><code>"K:mm a, z"</code>
* <td><code>0:08 PM, PDT</code>
* <tr>
- * <td><code>"yyyyy.MMMMM.dd GGG hh:mm aaa"</code>
+ * <th scope="row"><code>"yyyyy.MMMMM.dd GGG hh:mm aaa"</code>
* <td><code>02001.July.04 AD 12:08 PM</code>
* <tr>
- * <td><code>"EEE, d MMM yyyy HH:mm:ss Z"</code>
+ * <th scope="row"><code>"EEE, d MMM yyyy HH:mm:ss Z"</code>
* <td><code>Wed, 4 Jul 2001 12:08:56 -0700</code>
* <tr>
- * <td><code>"yyMMddHHmmssZ"</code>
+ * <th scope="row"><code>"yyMMddHHmmssZ"</code>
* <td><code>010704120856-0700</code>
* <tr>
- * <td><code>"yyyy-MM-dd'T'HH:mm:ss.SSSZ"</code>
+ * <th scope="row"><code>"yyyy-MM-dd'T'HH:mm:ss.SSSZ"</code>
* <td><code>2001-07-04T12:08:56.235-0700</code>
* <tr>
- * <td><code>"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"</code>
+ * <th scope="row"><code>"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"</code>
* <td><code>2001-07-04T12:08:56.235-07:00</code>
* <tr>
- * <td><code>"YYYY-'W'ww-u"</code>
+ * <th scope="row"><code>"YYYY-'W'ww-u"</code>
* <td><code>2001-W27-3</code>
* </tbody>
* </table>
--- a/jdk/src/java.base/share/classes/java/time/OffsetDateTime.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/time/OffsetDateTime.java Thu Aug 24 16:29:34 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
@@ -100,7 +100,7 @@
* {@code OffsetDateTime} is an immutable representation of a date-time with an offset.
* This class stores all date and time fields, to a precision of nanoseconds,
* as well as the offset from UTC/Greenwich. For example, the value
- * "2nd October 2007 at 13:45.30.123456789 +02:00" can be stored in an {@code OffsetDateTime}.
+ * "2nd October 2007 at 13:45:30.123456789 +02:00" can be stored in an {@code OffsetDateTime}.
* <p>
* {@code OffsetDateTime}, {@link java.time.ZonedDateTime} and {@link java.time.Instant} all store an instant
* on the time-line to nanosecond precision.
--- a/jdk/src/java.base/share/classes/java/time/OffsetTime.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/time/OffsetTime.java Thu Aug 24 16:29:34 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
@@ -100,7 +100,7 @@
* viewed as hour-minute-second-offset.
* This class stores all time fields, to a precision of nanoseconds,
* as well as a zone offset.
- * For example, the value "13:45.30.123456789+02:00" can be stored
+ * For example, the value "13:45:30.123456789+02:00" can be stored
* in an {@code OffsetTime}.
*
* <p>
--- a/jdk/src/java.base/share/classes/java/time/format/DateTimeFormatter.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/time/format/DateTimeFormatter.java Thu Aug 24 16:29:34 2017 +0200
@@ -154,103 +154,103 @@
* <caption>Predefined Formatters</caption>
* <thead>
* <tr>
- * <th style="text-align:left">Formatter</th>
- * <th style="text-align:left">Description</th>
- * <th style="text-align:left">Example</th>
+ * <th scope="col" style="text-align:left">Formatter</th>
+ * <th scope="col" style="text-align:left">Description</th>
+ * <th scope="col" style="text-align:left">Example</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td>{@link #ofLocalizedDate ofLocalizedDate(dateStyle)} </td>
+ * <th scope="row">{@link #ofLocalizedDate ofLocalizedDate(dateStyle)} </th>
* <td> Formatter with date style from the locale </td>
* <td> '2011-12-03'</td>
* </tr>
* <tr>
- * <td> {@link #ofLocalizedTime ofLocalizedTime(timeStyle)} </td>
+ * <th scope="row"> {@link #ofLocalizedTime ofLocalizedTime(timeStyle)} </th>
* <td> Formatter with time style from the locale </td>
* <td> '10:15:30'</td>
* </tr>
* <tr>
- * <td> {@link #ofLocalizedDateTime ofLocalizedDateTime(dateTimeStyle)} </td>
+ * <th scope="row"> {@link #ofLocalizedDateTime ofLocalizedDateTime(dateTimeStyle)} </th>
* <td> Formatter with a style for date and time from the locale</td>
* <td> '3 Jun 2008 11:05:30'</td>
* </tr>
* <tr>
- * <td> {@link #ofLocalizedDateTime ofLocalizedDateTime(dateStyle,timeStyle)}
- * </td>
+ * <th scope="row"> {@link #ofLocalizedDateTime ofLocalizedDateTime(dateStyle,timeStyle)}
+ * </th>
* <td> Formatter with date and time styles from the locale </td>
* <td> '3 Jun 2008 11:05'</td>
* </tr>
* <tr>
- * <td> {@link #BASIC_ISO_DATE}</td>
+ * <th scope="row"> {@link #BASIC_ISO_DATE}</th>
* <td>Basic ISO date </td> <td>'20111203'</td>
* </tr>
* <tr>
- * <td> {@link #ISO_LOCAL_DATE}</td>
+ * <th scope="row"> {@link #ISO_LOCAL_DATE}</th>
* <td> ISO Local Date </td>
* <td>'2011-12-03'</td>
* </tr>
* <tr>
- * <td> {@link #ISO_OFFSET_DATE}</td>
+ * <th scope="row"> {@link #ISO_OFFSET_DATE}</th>
* <td> ISO Date with offset </td>
* <td>'2011-12-03+01:00'</td>
* </tr>
* <tr>
- * <td> {@link #ISO_DATE}</td>
+ * <th scope="row"> {@link #ISO_DATE}</th>
* <td> ISO Date with or without offset </td>
* <td> '2011-12-03+01:00'; '2011-12-03'</td>
* </tr>
* <tr>
- * <td> {@link #ISO_LOCAL_TIME}</td>
+ * <th scope="row"> {@link #ISO_LOCAL_TIME}</th>
* <td> Time without offset </td>
* <td>'10:15:30'</td>
* </tr>
* <tr>
- * <td> {@link #ISO_OFFSET_TIME}</td>
+ * <th scope="row"> {@link #ISO_OFFSET_TIME}</th>
* <td> Time with offset </td>
* <td>'10:15:30+01:00'</td>
* </tr>
* <tr>
- * <td> {@link #ISO_TIME}</td>
+ * <th scope="row"> {@link #ISO_TIME}</th>
* <td> Time with or without offset </td>
* <td>'10:15:30+01:00'; '10:15:30'</td>
* </tr>
* <tr>
- * <td> {@link #ISO_LOCAL_DATE_TIME}</td>
+ * <th scope="row"> {@link #ISO_LOCAL_DATE_TIME}</th>
* <td> ISO Local Date and Time </td>
* <td>'2011-12-03T10:15:30'</td>
* </tr>
* <tr>
- * <td> {@link #ISO_OFFSET_DATE_TIME}</td>
+ * <th scope="row"> {@link #ISO_OFFSET_DATE_TIME}</th>
* <td> Date Time with Offset
* </td><td>2011-12-03T10:15:30+01:00'</td>
* </tr>
* <tr>
- * <td> {@link #ISO_ZONED_DATE_TIME}</td>
+ * <th scope="row"> {@link #ISO_ZONED_DATE_TIME}</th>
* <td> Zoned Date Time </td>
* <td>'2011-12-03T10:15:30+01:00[Europe/Paris]'</td>
* </tr>
* <tr>
- * <td> {@link #ISO_DATE_TIME}</td>
+ * <th scope="row"> {@link #ISO_DATE_TIME}</th>
* <td> Date and time with ZoneId </td>
* <td>'2011-12-03T10:15:30+01:00[Europe/Paris]'</td>
* </tr>
* <tr>
- * <td> {@link #ISO_ORDINAL_DATE}</td>
+ * <th scope="row"> {@link #ISO_ORDINAL_DATE}</th>
* <td> Year and day of year </td>
* <td>'2012-337'</td>
* </tr>
* <tr>
- * <td> {@link #ISO_WEEK_DATE}</td>
+ * <th scope="row"> {@link #ISO_WEEK_DATE}</th>
* <td> Year and Week </td>
* <td>2012-W48-6'</td></tr>
* <tr>
- * <td> {@link #ISO_INSTANT}</td>
+ * <th scope="row"> {@link #ISO_INSTANT}</th>
* <td> Date and Time of an Instant </td>
* <td>'2011-12-03T10:15:30Z' </td>
* </tr>
* <tr>
- * <td> {@link #RFC_1123_DATE_TIME}</td>
+ * <th scope="row"> {@link #RFC_1123_DATE_TIME}</th>
* <td> RFC 1123 / RFC 822 </td>
* <td>'Tue, 3 Jun 2008 11:05:30 GMT'</td>
* </tr>
--- a/jdk/src/java.base/share/classes/java/util/Formatter.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/Formatter.java Thu Aug 24 16:29:34 2017 +0200
@@ -293,12 +293,12 @@
* <table class="striped">
* <caption style="display:none">genConv</caption>
* <thead>
- * <tr><th style="vertical-align:bottom"> Conversion
- * <th style="vertical-align:bottom"> Argument Category
- * <th style="vertical-align:bottom"> Description
+ * <tr><th scope="col" style="vertical-align:bottom"> Conversion
+ * <th scope="col" style="vertical-align:bottom"> Argument Category
+ * <th scope="col" style="vertical-align:bottom"> Description
* </thead>
* <tbody>
- * <tr><td style="vertical-align:top"> {@code 'b'}, {@code 'B'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'b'}, {@code 'B'}
* <td style="vertical-align:top"> general
* <td> If the argument <i>arg</i> is {@code null}, then the result is
* "{@code false}". If <i>arg</i> is a {@code boolean} or {@link
@@ -306,64 +306,64 @@
* String#valueOf(boolean) String.valueOf(arg)}. Otherwise, the result is
* "true".
*
- * <tr><td style="vertical-align:top"> {@code 'h'}, {@code 'H'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'h'}, {@code 'H'}
* <td style="vertical-align:top"> general
* <td> The result is obtained by invoking
* {@code Integer.toHexString(arg.hashCode())}.
*
- * <tr><td style="vertical-align:top"> {@code 's'}, {@code 'S'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 's'}, {@code 'S'}
* <td style="vertical-align:top"> general
* <td> If <i>arg</i> implements {@link Formattable}, then
* {@link Formattable#formatTo arg.formatTo} is invoked. Otherwise, the
* result is obtained by invoking {@code arg.toString()}.
*
- * <tr><td style="vertical-align:top">{@code 'c'}, {@code 'C'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'c'}, {@code 'C'}
* <td style="vertical-align:top"> character
* <td> The result is a Unicode character
*
- * <tr><td style="vertical-align:top">{@code 'd'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'd'}
* <td style="vertical-align:top"> integral
* <td> The result is formatted as a decimal integer
*
- * <tr><td style="vertical-align:top">{@code 'o'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'o'}
* <td style="vertical-align:top"> integral
* <td> The result is formatted as an octal integer
*
- * <tr><td style="vertical-align:top">{@code 'x'}, {@code 'X'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'x'}, {@code 'X'}
* <td style="vertical-align:top"> integral
* <td> The result is formatted as a hexadecimal integer
*
- * <tr><td style="vertical-align:top">{@code 'e'}, {@code 'E'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'e'}, {@code 'E'}
* <td style="vertical-align:top"> floating point
* <td> The result is formatted as a decimal number in computerized
* scientific notation
*
- * <tr><td style="vertical-align:top">{@code 'f'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'f'}
* <td style="vertical-align:top"> floating point
* <td> The result is formatted as a decimal number
*
- * <tr><td style="vertical-align:top">{@code 'g'}, {@code 'G'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'g'}, {@code 'G'}
* <td style="vertical-align:top"> floating point
* <td> The result is formatted using computerized scientific notation or
* decimal format, depending on the precision and the value after rounding.
*
- * <tr><td style="vertical-align:top">{@code 'a'}, {@code 'A'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'a'}, {@code 'A'}
* <td style="vertical-align:top"> floating point
* <td> The result is formatted as a hexadecimal floating-point number with
* a significand and an exponent. This conversion is <b>not</b> supported
* for the {@code BigDecimal} type despite the latter's being in the
* <i>floating point</i> argument category.
*
- * <tr><td style="vertical-align:top">{@code 't'}, {@code 'T'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 't'}, {@code 'T'}
* <td style="vertical-align:top"> date/time
* <td> Prefix for date and time conversion characters. See <a
* href="#dt">Date/Time Conversions</a>.
*
- * <tr><td style="vertical-align:top">{@code '%'}
+ * <tr><th scope="row" style="vertical-align:top">{@code '%'}
* <td style="vertical-align:top"> percent
* <td> The result is a literal {@code '%'} (<code>'\u0025'</code>)
*
- * <tr><td style="vertical-align:top">{@code 'n'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'n'}
* <td style="vertical-align:top"> line separator
* <td> The result is the platform-specific line separator
*
@@ -387,44 +387,44 @@
* <table class="striped">
* <caption style="display:none">time</caption>
* <tbody>
- * <tr><td style="vertical-align:top"> {@code 'H'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'H'}
* <td> Hour of the day for the 24-hour clock, formatted as two digits with
* a leading zero as necessary i.e. {@code 00 - 23}.
*
- * <tr><td style="vertical-align:top">{@code 'I'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'I'}
* <td> Hour for the 12-hour clock, formatted as two digits with a leading
* zero as necessary, i.e. {@code 01 - 12}.
*
- * <tr><td style="vertical-align:top">{@code 'k'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'k'}
* <td> Hour of the day for the 24-hour clock, i.e. {@code 0 - 23}.
*
- * <tr><td style="vertical-align:top">{@code 'l'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'l'}
* <td> Hour for the 12-hour clock, i.e. {@code 1 - 12}.
*
- * <tr><td style="vertical-align:top">{@code 'M'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'M'}
* <td> Minute within the hour formatted as two digits with a leading zero
* as necessary, i.e. {@code 00 - 59}.
*
- * <tr><td style="vertical-align:top">{@code 'S'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'S'}
* <td> Seconds within the minute, formatted as two digits with a leading
* zero as necessary, i.e. {@code 00 - 60} ("{@code 60}" is a special
* value required to support leap seconds).
*
- * <tr><td style="vertical-align:top">{@code 'L'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'L'}
* <td> Millisecond within the second formatted as three digits with
* leading zeros as necessary, i.e. {@code 000 - 999}.
*
- * <tr><td style="vertical-align:top">{@code 'N'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'N'}
* <td> Nanosecond within the second, formatted as nine digits with leading
* zeros as necessary, i.e. {@code 000000000 - 999999999}.
*
- * <tr><td style="vertical-align:top">{@code 'p'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'p'}
* <td> Locale-specific {@linkplain
* java.text.DateFormatSymbols#getAmPmStrings morning or afternoon} marker
* in lower case, e.g."{@code am}" or "{@code pm}". Use of the conversion
* prefix {@code 'T'} forces this output to upper case.
*
- * <tr><td style="vertical-align:top">{@code 'z'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'z'}
* <td> <a href="http://www.ietf.org/rfc/rfc0822.txt">RFC 822</a>
* style numeric time zone offset from GMT, e.g. {@code -0800}. This
* value will be adjusted as necessary for Daylight Saving Time. For
@@ -432,7 +432,7 @@
* the {@linkplain TimeZone#getDefault() default time zone} for this
* instance of the Java virtual machine.
*
- * <tr><td style="vertical-align:top">{@code 'Z'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'Z'}
* <td> A string representing the abbreviation for the time zone. This
* value will be adjusted as necessary for Daylight Saving Time. For
* {@code long}, {@link Long}, and {@link Date} the time zone used is
@@ -440,12 +440,12 @@
* instance of the Java virtual machine. The Formatter's locale will
* supersede the locale of the argument (if any).
*
- * <tr><td style="vertical-align:top">{@code 's'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 's'}
* <td> Seconds since the beginning of the epoch starting at 1 January 1970
* {@code 00:00:00} UTC, i.e. {@code Long.MIN_VALUE/1000} to
* {@code Long.MAX_VALUE/1000}.
*
- * <tr><td style="vertical-align:top">{@code 'Q'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'Q'}
* <td> Milliseconds since the beginning of the epoch starting at 1 January
* 1970 {@code 00:00:00} UTC, i.e. {@code Long.MIN_VALUE} to
* {@code Long.MAX_VALUE}.
@@ -459,54 +459,54 @@
* <caption style="display:none">date</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top">{@code 'B'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'B'}
* <td> Locale-specific {@linkplain java.text.DateFormatSymbols#getMonths
* full month name}, e.g. {@code "January"}, {@code "February"}.
*
- * <tr><td style="vertical-align:top">{@code 'b'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'b'}
* <td> Locale-specific {@linkplain
* java.text.DateFormatSymbols#getShortMonths abbreviated month name},
* e.g. {@code "Jan"}, {@code "Feb"}.
*
- * <tr><td style="vertical-align:top">{@code 'h'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'h'}
* <td> Same as {@code 'b'}.
*
- * <tr><td style="vertical-align:top">{@code 'A'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'A'}
* <td> Locale-specific full name of the {@linkplain
* java.text.DateFormatSymbols#getWeekdays day of the week},
* e.g. {@code "Sunday"}, {@code "Monday"}
*
- * <tr><td style="vertical-align:top">{@code 'a'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'a'}
* <td> Locale-specific short name of the {@linkplain
* java.text.DateFormatSymbols#getShortWeekdays day of the week},
* e.g. {@code "Sun"}, {@code "Mon"}
*
- * <tr><td style="vertical-align:top">{@code 'C'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'C'}
* <td> Four-digit year divided by {@code 100}, formatted as two digits
* with leading zero as necessary, i.e. {@code 00 - 99}
*
- * <tr><td style="vertical-align:top">{@code 'Y'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'Y'}
* <td> Year, formatted as at least four digits with leading zeros as
* necessary, e.g. {@code 0092} equals {@code 92} CE for the Gregorian
* calendar.
*
- * <tr><td style="vertical-align:top">{@code 'y'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'y'}
* <td> Last two digits of the year, formatted with leading zeros as
* necessary, i.e. {@code 00 - 99}.
*
- * <tr><td style="vertical-align:top">{@code 'j'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'j'}
* <td> Day of year, formatted as three digits with leading zeros as
* necessary, e.g. {@code 001 - 366} for the Gregorian calendar.
*
- * <tr><td style="vertical-align:top">{@code 'm'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'm'}
* <td> Month, formatted as two digits with leading zeros as necessary,
* i.e. {@code 01 - 13}.
*
- * <tr><td style="vertical-align:top">{@code 'd'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'd'}
* <td> Day of month, formatted as two digits with leading zeros as
* necessary, i.e. {@code 01 - 31}
*
- * <tr><td style="vertical-align:top">{@code 'e'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'e'}
* <td> Day of month, formatted as two digits, i.e. {@code 1 - 31}.
*
* </tbody>
@@ -519,25 +519,25 @@
* <caption style="display:none">composites</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top">{@code 'R'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'R'}
* <td> Time formatted for the 24-hour clock as {@code "%tH:%tM"}
*
- * <tr><td style="vertical-align:top">{@code 'T'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'T'}
* <td> Time formatted for the 24-hour clock as {@code "%tH:%tM:%tS"}.
*
- * <tr><td style="vertical-align:top">{@code 'r'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'r'}
* <td> Time formatted for the 12-hour clock as {@code "%tI:%tM:%tS %Tp"}.
* The location of the morning or afternoon marker ({@code '%Tp'}) may be
* locale-dependent.
*
- * <tr><td style="vertical-align:top">{@code 'D'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'D'}
* <td> Date formatted as {@code "%tm/%td/%ty"}.
*
- * <tr><td style="vertical-align:top">{@code 'F'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'F'}
* <td> <a href="http://www.w3.org/TR/NOTE-datetime">ISO 8601</a>
* complete date formatted as {@code "%tY-%tm-%td"}.
*
- * <tr><td style="vertical-align:top">{@code 'c'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'c'}
* <td> Date and time formatted as {@code "%ta %tb %td %tT %tZ %tY"},
* e.g. {@code "Sun Jul 20 16:17:00 EDT 1969"}.
*
@@ -555,49 +555,49 @@
* <table class="striped">
* <caption style="display:none">genConv</caption>
* <thead>
- * <tr><th style="vertical-align:bottom"> Flag <th style="vertical-align:bottom"> General
- * <th style="vertical-align:bottom"> Character <th style="vertical-align:bottom"> Integral
- * <th style="vertical-align:bottom"> Floating Point
- * <th style="vertical-align:bottom"> Date/Time
- * <th style="vertical-align:bottom"> Description
+ * <tr><th scope="col" style="vertical-align:bottom"> Flag <th scope="col" style="vertical-align:bottom"> General
+ * <th scope="col" style="vertical-align:bottom"> Character <th scope="col" style="vertical-align:bottom"> Integral
+ * <th scope="col" style="vertical-align:bottom"> Floating Point
+ * <th scope="col" style="vertical-align:bottom"> Date/Time
+ * <th scope="col" style="vertical-align:bottom"> Description
* </thead>
* <tbody>
- * <tr><td> '-' <td style="text-align:center; vertical-align:top"> y
+ * <tr><th scope="row"> '-' <td style="text-align:center; vertical-align:top"> y
* <td style="text-align:center; vertical-align:top"> y
* <td style="text-align:center; vertical-align:top"> y
* <td style="text-align:center; vertical-align:top"> y
* <td style="text-align:center; vertical-align:top"> y
* <td> The result will be left-justified.
*
- * <tr><td> '#' <td style="text-align:center; vertical-align:top"> y<sup>1</sup>
+ * <tr><th scope="row"> '#' <td style="text-align:center; vertical-align:top"> y<sup>1</sup>
* <td style="text-align:center; vertical-align:top"> -
* <td style="text-align:center; vertical-align:top"> y<sup>3</sup>
* <td style="text-align:center; vertical-align:top"> y
* <td style="text-align:center; vertical-align:top"> -
* <td> The result should use a conversion-dependent alternate form
*
- * <tr><td> '+' <td style="text-align:center; vertical-align:top"> -
+ * <tr><th scope="row"> '+' <td style="text-align:center; vertical-align:top"> -
* <td style="text-align:center; vertical-align:top"> -
* <td style="text-align:center; vertical-align:top"> y<sup>4</sup>
* <td style="text-align:center; vertical-align:top"> y
* <td style="text-align:center; vertical-align:top"> -
* <td> The result will always include a sign
*
- * <tr><td> ' ' <td style="text-align:center; vertical-align:top"> -
+ * <tr><th scope="row"> ' ' <td style="text-align:center; vertical-align:top"> -
* <td style="text-align:center; vertical-align:top"> -
* <td style="text-align:center; vertical-align:top"> y<sup>4</sup>
* <td style="text-align:center; vertical-align:top"> y
* <td style="text-align:center; vertical-align:top"> -
* <td> The result will include a leading space for positive values
*
- * <tr><td> '0' <td style="text-align:center; vertical-align:top"> -
+ * <tr><th scope="row"> '0' <td style="text-align:center; vertical-align:top"> -
* <td style="text-align:center; vertical-align:top"> -
* <td style="text-align:center; vertical-align:top"> y
* <td style="text-align:center; vertical-align:top"> y
* <td style="text-align:center; vertical-align:top"> -
* <td> The result will be zero-padded
*
- * <tr><td> ',' <td style="text-align:center; vertical-align:top"> -
+ * <tr><th scope="row"> ',' <td style="text-align:center; vertical-align:top"> -
* <td style="text-align:center; vertical-align:top"> -
* <td style="text-align:center; vertical-align:top"> y<sup>2</sup>
* <td style="text-align:center; vertical-align:top"> y<sup>5</sup>
@@ -605,7 +605,7 @@
* <td> The result will include locale-specific {@linkplain
* java.text.DecimalFormatSymbols#getGroupingSeparator grouping separators}
*
- * <tr><td> '(' <td style="text-align:center; vertical-align:top"> -
+ * <tr><th scope="row"> '(' <td style="text-align:center; vertical-align:top"> -
* <td style="text-align:center; vertical-align:top"> -
* <td style="text-align:center; vertical-align:top"> y<sup>4</sup>
* <td style="text-align:center; vertical-align:top"> y<sup>5</sup>
@@ -723,7 +723,7 @@
* <caption style="display:none">dgConv</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top"> {@code 'b'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'b'}
* <td style="vertical-align:top"> <code>'\u0062'</code>
* <td> Produces either "{@code true}" or "{@code false}" as returned by
* {@link Boolean#toString(boolean)}.
@@ -737,11 +737,11 @@
* <p> If the {@code '#'} flag is given, then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'B'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'B'}
* <td style="vertical-align:top"> <code>'\u0042'</code>
* <td> The upper-case variant of {@code 'b'}.
*
- * <tr><td style="vertical-align:top"> {@code 'h'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'h'}
* <td style="vertical-align:top"> <code>'\u0068'</code>
* <td> Produces a string representing the hash code value of the object.
*
@@ -751,11 +751,11 @@
* <p> If the {@code '#'} flag is given, then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'H'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'H'}
* <td style="vertical-align:top"> <code>'\u0048'</code>
* <td> The upper-case variant of {@code 'h'}.
*
- * <tr><td style="vertical-align:top"> {@code 's'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 's'}
* <td style="vertical-align:top"> <code>'\u0073'</code>
* <td> Produces a string.
*
@@ -768,7 +768,7 @@
* Formattable} , then a {@link FormatFlagsConversionMismatchException}
* will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'S'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'S'}
* <td style="vertical-align:top"> <code>'\u0053'</code>
* <td> The upper-case variant of {@code 's'}.
*
@@ -781,7 +781,7 @@
* <caption style="display:none">dFlags</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top"> {@code '-'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code '-'}
* <td style="vertical-align:top"> <code>'\u002d'</code>
* <td> Left justifies the output. Spaces (<code>'\u0020'</code>) will be
* added at the end of the converted value as required to fill the minimum
@@ -789,7 +789,7 @@
* MissingFormatWidthException} will be thrown. If this flag is not given
* then the output will be right-justified.
*
- * <tr><td style="vertical-align:top"> {@code '#'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code '#'}
* <td style="vertical-align:top"> <code>'\u0023'</code>
* <td> Requires the output use an alternate form. The definition of the
* form is specified by the conversion.
@@ -825,7 +825,7 @@
* <caption style="display:none">charConv</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top"> {@code 'c'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'c'}
* <td style="vertical-align:top"> <code>'\u0063'</code>
* <td> Formats the argument as a Unicode character as described in <a
* href="../lang/Character.html#unicode">Unicode Character
@@ -835,7 +835,7 @@
* <p> If the {@code '#'} flag is given, then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'C'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'C'}
* <td style="vertical-align:top"> <code>'\u0043'</code>
* <td> The upper-case variant of {@code 'c'}.
*
@@ -929,7 +929,7 @@
* <caption style="display:none">IntConv</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top"> {@code 'd'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'd'}
* <td style="vertical-align:top"> <code>'\u0064'</code>
* <td> Formats the argument as a decimal integer. The <a
* href="#L10nAlgorithm">localization algorithm</a> is applied.
@@ -940,7 +940,7 @@
* <p> If the {@code '#'} flag is given then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'o'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'o'}
* <td style="vertical-align:top"> <code>'\u006f'</code>
* <td> Formats the argument as an integer in base eight. No localization
* is applied.
@@ -962,7 +962,7 @@
* are given then a {@link FormatFlagsConversionMismatchException} will be
* thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'x'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'x'}
* <td style="vertical-align:top"> <code>'\u0078'</code>
* <td> Formats the argument as an integer in base sixteen. No
* localization is applied.
@@ -985,7 +985,7 @@
* {@code ','} flags are given then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'X'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'X'}
* <td style="vertical-align:top"> <code>'\u0058'</code>
* <td> The upper-case variant of {@code 'x'}. The entire string
* representing the number will be converted to {@linkplain
@@ -1012,7 +1012,7 @@
* <caption style="display:none">intFlags</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top"> {@code '+'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code '+'}
* <td style="vertical-align:top"> <code>'\u002b'</code>
* <td> Requires the output to include a positive sign for all positive
* numbers. If this flag is not given then only negative values will
@@ -1021,7 +1021,7 @@
* <p> If both the {@code '+'} and <code>' '</code> flags are given
* then an {@link IllegalFormatFlagsException} will be thrown.
*
- * <tr><td style="vertical-align:top"> <code>' '</code>
+ * <tr><th scope="row" style="vertical-align:top"> <code>' '</code>
* <td style="vertical-align:top"> <code>'\u0020'</code>
* <td> Requires the output to include a single extra space
* (<code>'\u0020'</code>) for non-negative values.
@@ -1029,7 +1029,7 @@
* <p> If both the {@code '+'} and <code>' '</code> flags are given
* then an {@link IllegalFormatFlagsException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code '0'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code '0'}
* <td style="vertical-align:top"> <code>'\u0030'</code>
* <td> Requires the output to be padded with leading {@linkplain
* java.text.DecimalFormatSymbols#getZeroDigit zeros} to the minimum field
@@ -1040,14 +1040,14 @@
* <p> If both the {@code '-'} and {@code '0'} flags are given then an
* {@link IllegalFormatFlagsException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code ','}
+ * <tr><th scope="row" style="vertical-align:top"> {@code ','}
* <td style="vertical-align:top"> <code>'\u002c'</code>
* <td> Requires the output to include the locale-specific {@linkplain
* java.text.DecimalFormatSymbols#getGroupingSeparator group separators} as
* described in the <a href="#L10nGroup">"group" section</a> of the
* localization algorithm.
*
- * <tr><td style="vertical-align:top"> {@code '('}
+ * <tr><th scope="row" style="vertical-align:top"> {@code '('}
* <td style="vertical-align:top"> <code>'\u0028'</code>
* <td> Requires the output to prepend a {@code '('}
* (<code>'\u0028'</code>) and append a {@code ')'}
@@ -1093,7 +1093,7 @@
* <caption style="display:none">bIntConv</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top"> {@code 'd'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'd'}
* <td style="vertical-align:top"> <code>'\u0064'</code>
* <td> Requires the output to be formatted as a decimal integer. The <a
* href="#L10nAlgorithm">localization algorithm</a> is applied.
@@ -1101,7 +1101,7 @@
* <p> If the {@code '#'} flag is given {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'o'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'o'}
* <td style="vertical-align:top"> <code>'\u006f'</code>
* <td> Requires the output to be formatted as an integer in base eight.
* No localization is applied.
@@ -1124,7 +1124,7 @@
* <p> If the {@code ','} flag is given then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'x'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'x'}
* <td style="vertical-align:top"> <code>'\u0078'</code>
* <td> Requires the output to be formatted as an integer in base
* sixteen. No localization is applied.
@@ -1148,7 +1148,7 @@
* <p> If the {@code ','} flag is given then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'X'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'X'}
* <td style="vertical-align:top"> <code>'\u0058'</code>
* <td> The upper-case variant of {@code 'x'}. The entire string
* representing the number will be converted to {@linkplain
@@ -1190,7 +1190,7 @@
* <caption style="display:none">floatConv</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top"> {@code 'e'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'e'}
* <td style="vertical-align:top"> <code>'\u0065'</code>
* <td> Requires the output to be formatted using <a
* id="scientific">computerized scientific notation</a>. The <a
@@ -1238,12 +1238,12 @@
* <p>If the {@code ','} flag is given, then an {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'E'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'E'}
* <td style="vertical-align:top"> <code>'\u0045'</code>
* <td> The upper-case variant of {@code 'e'}. The exponent symbol
* will be {@code 'E'} (<code>'\u0045'</code>).
*
- * <tr><td style="vertical-align:top"> {@code 'g'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'g'}
* <td style="vertical-align:top"> <code>'\u0067'</code>
* <td> Requires the output to be formatted in general scientific notation
* as described below. The <a href="#L10nAlgorithm">localization
@@ -1268,11 +1268,11 @@
* <p> If the {@code '#'} flag is given then an {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'G'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'G'}
* <td style="vertical-align:top"> <code>'\u0047'</code>
* <td> The upper-case variant of {@code 'g'}.
*
- * <tr><td style="vertical-align:top"> {@code 'f'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'f'}
* <td style="vertical-align:top"> <code>'\u0066'</code>
* <td> Requires the output to be formatted using <a id="decimal">decimal
* format</a>. The <a href="#L10nAlgorithm">localization algorithm</a> is
@@ -1304,7 +1304,7 @@
* Float#toString(float)} or {@link Double#toString(double)} as
* appropriate.
*
- * <tr><td style="vertical-align:top"> {@code 'a'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'a'}
* <td style="vertical-align:top"> <code>'\u0061'</code>
* <td> Requires the output to be formatted in hexadecimal exponential
* form. No localization is applied.
@@ -1357,7 +1357,7 @@
* <p> If the {@code '('} or {@code ','} flags are given, then a {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'A'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'A'}
* <td style="vertical-align:top"> <code>'\u0041'</code>
* <td> The upper-case variant of {@code 'a'}. The entire string
* representing the number will be converted to upper case including the
@@ -1427,7 +1427,7 @@
* <caption style="display:none">floatConv</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top"> {@code 'e'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'e'}
* <td style="vertical-align:top"> <code>'\u0065'</code>
* <td> Requires the output to be formatted using <a
* id="bscientific">computerized scientific notation</a>. The <a
@@ -1469,12 +1469,12 @@
* <p> If the {@code ','} flag is given, then an {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'E'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'E'}
* <td style="vertical-align:top"> <code>'\u0045'</code>
* <td> The upper-case variant of {@code 'e'}. The exponent symbol
* will be {@code 'E'} (<code>'\u0045'</code>).
*
- * <tr><td style="vertical-align:top"> {@code 'g'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'g'}
* <td style="vertical-align:top"> <code>'\u0067'</code>
* <td> Requires the output to be formatted in general scientific notation
* as described below. The <a href="#L10nAlgorithm">localization
@@ -1499,11 +1499,11 @@
* <p> If the {@code '#'} flag is given then an {@link
* FormatFlagsConversionMismatchException} will be thrown.
*
- * <tr><td style="vertical-align:top"> {@code 'G'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'G'}
* <td style="vertical-align:top"> <code>'\u0047'</code>
* <td> The upper-case variant of {@code 'g'}.
*
- * <tr><td style="vertical-align:top"> {@code 'f'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'f'}
* <td style="vertical-align:top"> <code>'\u0066'</code>
* <td> Requires the output to be formatted using <a id="bdecimal">decimal
* format</a>. The <a href="#L10nAlgorithm">localization algorithm</a> is
@@ -1554,10 +1554,10 @@
* <caption style="display:none">DTConv</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top"> {@code 't'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 't'}
* <td style="vertical-align:top"> <code>'\u0074'</code>
* <td> Prefix for date and time conversion characters.
- * <tr><td style="vertical-align:top"> {@code 'T'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'T'}
* <td style="vertical-align:top"> <code>'\u0054'</code>
* <td> The upper-case variant of {@code 't'}.
*
@@ -1577,52 +1577,52 @@
* <caption style="display:none">time</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top"> {@code 'H'}
+ * <tr><th scope="row" style="vertical-align:top"> {@code 'H'}
* <td style="vertical-align:top"> <code>'\u0048'</code>
* <td> Hour of the day for the 24-hour clock, formatted as two digits with
* a leading zero as necessary i.e. {@code 00 - 23}. {@code 00}
* corresponds to midnight.
*
- * <tr><td style="vertical-align:top">{@code 'I'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'I'}
* <td style="vertical-align:top"> <code>'\u0049'</code>
* <td> Hour for the 12-hour clock, formatted as two digits with a leading
* zero as necessary, i.e. {@code 01 - 12}. {@code 01} corresponds to
* one o'clock (either morning or afternoon).
*
- * <tr><td style="vertical-align:top">{@code 'k'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'k'}
* <td style="vertical-align:top"> <code>'\u006b'</code>
* <td> Hour of the day for the 24-hour clock, i.e. {@code 0 - 23}.
* {@code 0} corresponds to midnight.
*
- * <tr><td style="vertical-align:top">{@code 'l'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'l'}
* <td style="vertical-align:top"> <code>'\u006c'</code>
* <td> Hour for the 12-hour clock, i.e. {@code 1 - 12}. {@code 1}
* corresponds to one o'clock (either morning or afternoon).
*
- * <tr><td style="vertical-align:top">{@code 'M'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'M'}
* <td style="vertical-align:top"> <code>'\u004d'</code>
* <td> Minute within the hour formatted as two digits with a leading zero
* as necessary, i.e. {@code 00 - 59}.
*
- * <tr><td style="vertical-align:top">{@code 'S'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'S'}
* <td style="vertical-align:top"> <code>'\u0053'</code>
* <td> Seconds within the minute, formatted as two digits with a leading
* zero as necessary, i.e. {@code 00 - 60} ("{@code 60}" is a special
* value required to support leap seconds).
*
- * <tr><td style="vertical-align:top">{@code 'L'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'L'}
* <td style="vertical-align:top"> <code>'\u004c'</code>
* <td> Millisecond within the second formatted as three digits with
* leading zeros as necessary, i.e. {@code 000 - 999}.
*
- * <tr><td style="vertical-align:top">{@code 'N'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'N'}
* <td style="vertical-align:top"> <code>'\u004e'</code>
* <td> Nanosecond within the second, formatted as nine digits with leading
* zeros as necessary, i.e. {@code 000000000 - 999999999}. The precision
* of this value is limited by the resolution of the underlying operating
* system or hardware.
*
- * <tr><td style="vertical-align:top">{@code 'p'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'p'}
* <td style="vertical-align:top"> <code>'\u0070'</code>
* <td> Locale-specific {@linkplain
* java.text.DateFormatSymbols#getAmPmStrings morning or afternoon} marker
@@ -1632,7 +1632,7 @@
* GNU {@code date} and POSIX {@code strftime(3c)} which produce
* upper-case output.)
*
- * <tr><td style="vertical-align:top">{@code 'z'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'z'}
* <td style="vertical-align:top"> <code>'\u007a'</code>
* <td> <a href="http://www.ietf.org/rfc/rfc0822.txt">RFC 822</a>
* style numeric time zone offset from GMT, e.g. {@code -0800}. This
@@ -1641,7 +1641,7 @@
* the {@linkplain TimeZone#getDefault() default time zone} for this
* instance of the Java virtual machine.
*
- * <tr><td style="vertical-align:top">{@code 'Z'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'Z'}
* <td style="vertical-align:top"> <code>'\u005a'</code>
* <td> A string representing the abbreviation for the time zone. This
* value will be adjusted as necessary for Daylight Saving Time. For
@@ -1650,13 +1650,13 @@
* instance of the Java virtual machine. The Formatter's locale will
* supersede the locale of the argument (if any).
*
- * <tr><td style="vertical-align:top">{@code 's'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 's'}
* <td style="vertical-align:top"> <code>'\u0073'</code>
* <td> Seconds since the beginning of the epoch starting at 1 January 1970
* {@code 00:00:00} UTC, i.e. {@code Long.MIN_VALUE/1000} to
* {@code Long.MAX_VALUE/1000}.
*
- * <tr><td style="vertical-align:top">{@code 'Q'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'Q'}
* <td style="vertical-align:top"> <code>'\u004f'</code>
* <td> Milliseconds since the beginning of the epoch starting at 1 January
* 1970 {@code 00:00:00} UTC, i.e. {@code Long.MIN_VALUE} to
@@ -1672,68 +1672,68 @@
* <caption style="display:none">date</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top">{@code 'B'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'B'}
* <td style="vertical-align:top"> <code>'\u0042'</code>
* <td> Locale-specific {@linkplain java.text.DateFormatSymbols#getMonths
* full month name}, e.g. {@code "January"}, {@code "February"}.
*
- * <tr><td style="vertical-align:top">{@code 'b'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'b'}
* <td style="vertical-align:top"> <code>'\u0062'</code>
* <td> Locale-specific {@linkplain
* java.text.DateFormatSymbols#getShortMonths abbreviated month name},
* e.g. {@code "Jan"}, {@code "Feb"}.
*
- * <tr><td style="vertical-align:top">{@code 'h'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'h'}
* <td style="vertical-align:top"> <code>'\u0068'</code>
* <td> Same as {@code 'b'}.
*
- * <tr><td style="vertical-align:top">{@code 'A'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'A'}
* <td style="vertical-align:top"> <code>'\u0041'</code>
* <td> Locale-specific full name of the {@linkplain
* java.text.DateFormatSymbols#getWeekdays day of the week},
* e.g. {@code "Sunday"}, {@code "Monday"}
*
- * <tr><td style="vertical-align:top">{@code 'a'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'a'}
* <td style="vertical-align:top"> <code>'\u0061'</code>
* <td> Locale-specific short name of the {@linkplain
* java.text.DateFormatSymbols#getShortWeekdays day of the week},
* e.g. {@code "Sun"}, {@code "Mon"}
*
- * <tr><td style="vertical-align:top">{@code 'C'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'C'}
* <td style="vertical-align:top"> <code>'\u0043'</code>
* <td> Four-digit year divided by {@code 100}, formatted as two digits
* with leading zero as necessary, i.e. {@code 00 - 99}
*
- * <tr><td style="vertical-align:top">{@code 'Y'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'Y'}
* <td style="vertical-align:top"> <code>'\u0059'</code> <td> Year, formatted to at least
* four digits with leading zeros as necessary, e.g. {@code 0092} equals
* {@code 92} CE for the Gregorian calendar.
*
- * <tr><td style="vertical-align:top">{@code 'y'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'y'}
* <td style="vertical-align:top"> <code>'\u0079'</code>
* <td> Last two digits of the year, formatted with leading zeros as
* necessary, i.e. {@code 00 - 99}.
*
- * <tr><td style="vertical-align:top">{@code 'j'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'j'}
* <td style="vertical-align:top"> <code>'\u006a'</code>
* <td> Day of year, formatted as three digits with leading zeros as
* necessary, e.g. {@code 001 - 366} for the Gregorian calendar.
* {@code 001} corresponds to the first day of the year.
*
- * <tr><td style="vertical-align:top">{@code 'm'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'm'}
* <td style="vertical-align:top"> <code>'\u006d'</code>
* <td> Month, formatted as two digits with leading zeros as necessary,
* i.e. {@code 01 - 13}, where "{@code 01}" is the first month of the
* year and ("{@code 13}" is a special value required to support lunar
* calendars).
*
- * <tr><td style="vertical-align:top">{@code 'd'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'd'}
* <td style="vertical-align:top"> <code>'\u0064'</code>
* <td> Day of month, formatted as two digits with leading zeros as
* necessary, i.e. {@code 01 - 31}, where "{@code 01}" is the first day
* of the month.
*
- * <tr><td style="vertical-align:top">{@code 'e'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'e'}
* <td style="vertical-align:top"> <code>'\u0065'</code>
* <td> Day of month, formatted as two digits, i.e. {@code 1 - 31} where
* "{@code 1}" is the first day of the month.
@@ -1748,30 +1748,30 @@
* <caption style="display:none">composites</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top">{@code 'R'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'R'}
* <td style="vertical-align:top"> <code>'\u0052'</code>
* <td> Time formatted for the 24-hour clock as {@code "%tH:%tM"}
*
- * <tr><td style="vertical-align:top">{@code 'T'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'T'}
* <td style="vertical-align:top"> <code>'\u0054'</code>
* <td> Time formatted for the 24-hour clock as {@code "%tH:%tM:%tS"}.
*
- * <tr><td style="vertical-align:top">{@code 'r'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'r'}
* <td style="vertical-align:top"> <code>'\u0072'</code>
* <td> Time formatted for the 12-hour clock as {@code "%tI:%tM:%tS
* %Tp"}. The location of the morning or afternoon marker
* ({@code '%Tp'}) may be locale-dependent.
*
- * <tr><td style="vertical-align:top">{@code 'D'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'D'}
* <td style="vertical-align:top"> <code>'\u0044'</code>
* <td> Date formatted as {@code "%tm/%td/%ty"}.
*
- * <tr><td style="vertical-align:top">{@code 'F'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'F'}
* <td style="vertical-align:top"> <code>'\u0046'</code>
* <td> <a href="http://www.w3.org/TR/NOTE-datetime">ISO 8601</a>
* complete date formatted as {@code "%tY-%tm-%td"}.
*
- * <tr><td style="vertical-align:top">{@code 'c'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'c'}
* <td style="vertical-align:top"> <code>'\u0063'</code>
* <td> Date and time formatted as {@code "%ta %tb %td %tT %tZ %tY"},
* e.g. {@code "Sun Jul 20 16:17:00 EDT 1969"}.
@@ -1802,7 +1802,7 @@
* <caption style="display:none">DTConv</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top">{@code '%'}
+ * <tr><th scope="row" style="vertical-align:top">{@code '%'}
* <td> The result is a literal {@code '%'} (<code>'\u0025'</code>)
*
* <p> The width is the minimum number of characters to
@@ -1830,7 +1830,7 @@
* <caption style="display:none">DTConv</caption>
* <tbody>
*
- * <tr><td style="vertical-align:top">{@code 'n'}
+ * <tr><th scope="row" style="vertical-align:top">{@code 'n'}
* <td> the platform-specific line separator as returned by {@link
* System#lineSeparator()}.
*
--- a/jdk/src/java.base/share/classes/java/util/GregorianCalendar.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/GregorianCalendar.java Thu Aug 24 16:29:34 2017 +0200
@@ -163,83 +163,83 @@
* <caption style="display:none">GregorianCalendar default field values</caption>
* <thead>
* <tr>
- * <th>
+ * <th scope="col">
* Field
* </th>
- * <th>
+ * <th scope="col">
Default Value
* </th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td>
+ * <th scope="row">
* <code>ERA</code>
- * </td>
+ * </th>
* <td>
* <code>AD</code>
* </td>
* </tr>
* <tr>
- * <td>
+ * <th scope="row">
* <code>YEAR</code>
- * </td>
+ * </th>
* <td>
* <code>1970</code>
* </td>
* </tr>
* <tr>
- * <td>
+ * <th scope="row">
* <code>MONTH</code>
- * </td>
+ * </th>
* <td>
* <code>JANUARY</code>
* </td>
* </tr>
* <tr>
- * <td>
+ * <th scope="row">
* <code>DAY_OF_MONTH</code>
- * </td>
+ * </th>
* <td>
* <code>1</code>
* </td>
* </tr>
* <tr>
- * <td>
+ * <th scope="row">
* <code>DAY_OF_WEEK</code>
- * </td>
+ * </th>
* <td>
* <code>the first day of week</code>
* </td>
* </tr>
* <tr>
- * <td>
+ * <th scope="row">
* <code>WEEK_OF_MONTH</code>
- * </td>
+ * </th>
* <td>
* <code>0</code>
* </td>
* </tr>
* <tr>
- * <td>
+ * <th scope="row">
* <code>DAY_OF_WEEK_IN_MONTH</code>
- * </td>
+ * </th>
* <td>
* <code>1</code>
* </td>
* </tr>
* <tr>
- * <td>
+ * <th scope="row">
* <code>AM_PM</code>
- * </td>
+ * </th>
* <td>
* <code>AM</code>
* </td>
* </tr>
* <tr>
- * <td>
+ * <th scope="row">
* <code>HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND</code>
- * </td>
+ * </th>
* <td>
* <code>0</code>
* </td>
--- a/jdk/src/java.base/share/classes/java/util/Locale.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/Locale.java Thu Aug 24 16:29:34 2017 +0200
@@ -1590,29 +1590,29 @@
* <table class="striped">
* <caption style="display:none">Grandfathered tags with canonical replacements</caption>
* <thead style="text-align:center">
- * <tr><th style="padding: 0 2px">grandfathered tag</th><th style="padding: 0 2px">modern replacement</th></tr>
+ * <tr><th scope="col" style="padding: 0 2px">grandfathered tag</th><th scope="col" style="padding: 0 2px">modern replacement</th></tr>
* </thead>
* <tbody style="text-align:center">
- * <tr><td>art-lojban</td><td>jbo</td></tr>
- * <tr><td>i-ami</td><td>ami</td></tr>
- * <tr><td>i-bnn</td><td>bnn</td></tr>
- * <tr><td>i-hak</td><td>hak</td></tr>
- * <tr><td>i-klingon</td><td>tlh</td></tr>
- * <tr><td>i-lux</td><td>lb</td></tr>
- * <tr><td>i-navajo</td><td>nv</td></tr>
- * <tr><td>i-pwn</td><td>pwn</td></tr>
- * <tr><td>i-tao</td><td>tao</td></tr>
- * <tr><td>i-tay</td><td>tay</td></tr>
- * <tr><td>i-tsu</td><td>tsu</td></tr>
- * <tr><td>no-bok</td><td>nb</td></tr>
- * <tr><td>no-nyn</td><td>nn</td></tr>
- * <tr><td>sgn-BE-FR</td><td>sfb</td></tr>
- * <tr><td>sgn-BE-NL</td><td>vgt</td></tr>
- * <tr><td>sgn-CH-DE</td><td>sgg</td></tr>
- * <tr><td>zh-guoyu</td><td>cmn</td></tr>
- * <tr><td>zh-hakka</td><td>hak</td></tr>
- * <tr><td>zh-min-nan</td><td>nan</td></tr>
- * <tr><td>zh-xiang</td><td>hsn</td></tr>
+ * <tr><th scope="row">art-lojban</th><td>jbo</td></tr>
+ * <tr><th scope="row">i-ami</th><td>ami</td></tr>
+ * <tr><th scope="row">i-bnn</th><td>bnn</td></tr>
+ * <tr><th scope="row">i-hak</th><td>hak</td></tr>
+ * <tr><th scope="row">i-klingon</th><td>tlh</td></tr>
+ * <tr><th scope="row">i-lux</th><td>lb</td></tr>
+ * <tr><th scope="row">i-navajo</th><td>nv</td></tr>
+ * <tr><th scope="row">i-pwn</th><td>pwn</td></tr>
+ * <tr><th scope="row">i-tao</th><td>tao</td></tr>
+ * <tr><th scope="row">i-tay</th><td>tay</td></tr>
+ * <tr><th scope="row">i-tsu</th><td>tsu</td></tr>
+ * <tr><th scope="row">no-bok</th><td>nb</td></tr>
+ * <tr><th scope="row">no-nyn</th><td>nn</td></tr>
+ * <tr><th scope="row">sgn-BE-FR</th><td>sfb</td></tr>
+ * <tr><th scope="row">sgn-BE-NL</th><td>vgt</td></tr>
+ * <tr><th scope="row">sgn-CH-DE</th><td>sgg</td></tr>
+ * <tr><th scope="row">zh-guoyu</th><td>cmn</td></tr>
+ * <tr><th scope="row">zh-hakka</th><td>hak</td></tr>
+ * <tr><th scope="row">zh-min-nan</th><td>nan</td></tr>
+ * <tr><th scope="row">zh-xiang</th><td>hsn</td></tr>
* </tbody>
* </table>
*
@@ -1622,15 +1622,15 @@
* <table class="striped">
* <caption style="display:none">Grandfathered tags with no modern replacement</caption>
* <thead style="text-align:center">
- * <tr><th style="padding: 0 2px">grandfathered tag</th><th style="padding: 0 2px">converts to</th></tr>
+ * <tr><th scope="col" style="padding: 0 2px">grandfathered tag</th><th scope="col" style="padding: 0 2px">converts to</th></tr>
* </thead>
* <tbody style="text-align:center">
- * <tr><td>cel-gaulish</td><td>xtg-x-cel-gaulish</td></tr>
- * <tr><td>en-GB-oed</td><td>en-GB-x-oed</td></tr>
- * <tr><td>i-default</td><td>en-x-i-default</td></tr>
- * <tr><td>i-enochian</td><td>und-x-i-enochian</td></tr>
- * <tr><td>i-mingo</td><td>see-x-i-mingo</td></tr>
- * <tr><td>zh-min</td><td>nan-x-zh-min</td></tr>
+ * <tr><th scope="row">cel-gaulish</th><td>xtg-x-cel-gaulish</td></tr>
+ * <tr><th scope="row">en-GB-oed</th><td>en-GB-x-oed</td></tr>
+ * <tr><th scope="row">i-default</th><td>en-x-i-default</td></tr>
+ * <tr><th scope="row">i-enochian</th><td>und-x-i-enochian</td></tr>
+ * <tr><th scope="row">i-mingo</th><td>see-x-i-mingo</td></tr>
+ * <tr><th scope="row">zh-min</th><td>nan-x-zh-min</td></tr>
* </tbody>
* </table>
*
@@ -2778,16 +2778,16 @@
* <caption>Filtering method behavior</caption>
* <thead>
* <tr>
- * <th>Filtering Mode</th>
- * <th>Language Priority List: {@code "de-DE"}</th>
- * <th>Language Priority List: {@code "de-*-DE"}</th>
+ * <th scope="col">Filtering Mode</th>
+ * <th scope="col">Language Priority List: {@code "de-DE"}</th>
+ * <th scope="col">Language Priority List: {@code "de-*-DE"}</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td style="vertical-align:top">
+ * <th scope="row" style="vertical-align:top">
* {@link FilteringMode#AUTOSELECT_FILTERING AUTOSELECT_FILTERING}
- * </td>
+ * </th>
* <td style="vertical-align:top">
* Performs <em>basic</em> filtering and returns {@code "de-DE"} and
* {@code "de-DE-1996"}.
@@ -2799,9 +2799,9 @@
* </td>
* </tr>
* <tr>
- * <td style="vertical-align:top">
+ * <th scope="row" style="vertical-align:top">
* {@link FilteringMode#EXTENDED_FILTERING EXTENDED_FILTERING}
- * </td>
+ * </th>
* <td style="vertical-align:top">
* Performs <em>extended</em> filtering and returns {@code "de-DE"},
* {@code "de-Deva-DE"}, {@code "de-DE-1996"}, {@code "de-Latn-DE"}, and
@@ -2810,9 +2810,9 @@
* <td style="vertical-align:top">Same as above.</td>
* </tr>
* <tr>
- * <td style="vertical-align:top">
+ * <th scope="row" style="vertical-align:top">
* {@link FilteringMode#IGNORE_EXTENDED_RANGES IGNORE_EXTENDED_RANGES}
- * </td>
+ * </th>
* <td style="vertical-align:top">
* Performs <em>basic</em> filtering and returns {@code "de-DE"} and
* {@code "de-DE-1996"}.
@@ -2823,9 +2823,9 @@
* </td>
* </tr>
* <tr>
- * <td style="vertical-align:top">
+ * <th scope="row" style="vertical-align:top">
* {@link FilteringMode#MAP_EXTENDED_RANGES MAP_EXTENDED_RANGES}
- * </td>
+ * </th>
* <td style="vertical-align:top">Same as above.</td>
* <td style="vertical-align:top">
* Performs <em>basic</em> filtering and returns {@code "de-DE"} and
@@ -2834,9 +2834,9 @@
* </td>
* </tr>
* <tr>
- * <td style="vertical-align:top">
+ * <th scope="row" style="vertical-align:top">
* {@link FilteringMode#REJECT_EXTENDED_RANGES REJECT_EXTENDED_RANGES}
- * </td>
+ * </th>
* <td style="vertical-align:top">Same as above.</td>
* <td style="vertical-align:top">
* Throws {@link IllegalArgumentException} because {@code "de-*-DE"} is
--- a/jdk/src/java.base/share/classes/java/util/regex/Pattern.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/regex/Pattern.java Thu Aug 24 16:29:34 2017 +0200
@@ -3887,9 +3887,13 @@
return next.match(matcher, i + 1, seq);
if (ch == 0x0D) {
i++;
- if (i < matcher.to && seq.charAt(i) == 0x0A &&
- next.match(matcher, i + 1, seq)) {
- return true;
+ if (i < matcher.to) {
+ if (seq.charAt(i) == 0x0A &&
+ next.match(matcher, i + 1, seq)) {
+ return true;
+ }
+ } else {
+ matcher.hitEnd = true;
}
return next.match(matcher, i, seq);
}
--- a/jdk/src/java.base/share/classes/javax/net/ssl/SSLPermission.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/javax/net/ssl/SSLPermission.java Thu Aug 24 16:29:34 2017 +0200
@@ -48,15 +48,15 @@
* <caption style="display:none">permission name, what it allows, and associated risks</caption>
* <thead>
* <tr>
- * <th>Permission Target Name</th>
- * <th>What the Permission Allows</th>
- * <th>Risks of Allowing this Permission</th>
+ * <th scope="col">Permission Target Name</th>
+ * <th scope="col">What the Permission Allows</th>
+ * <th scope="col">Risks of Allowing this Permission</th>
* </tr>
* </thead>
*
* <tbody>
* <tr>
- * <td>setHostnameVerifier</td>
+ * <th scope="row">setHostnameVerifier</th>
* <td>The ability to set a callback which can decide whether to
* allow a mismatch between the host being connected to by
* an HttpsURLConnection and the common name field in
@@ -70,7 +70,7 @@
* </tr>
*
* <tr>
- * <td>getSSLSessionContext</td>
+ * <th scope="row">getSSLSessionContext</th>
* <td>The ability to get the SSLSessionContext of an SSLSession.
* </td>
* <td>Malicious code may monitor sessions which have been established
@@ -79,7 +79,7 @@
* </tr>
*
* <tr>
- * <td>setDefaultSSLContext</td>
+ * <th scope="row">setDefaultSSLContext</th>
* <td>The ability to set the default SSL context
* </td>
* <td>Malicious code can set a context that monitors the opening of
--- a/jdk/src/java.base/share/classes/sun/nio/cs/ISO_8859_1.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/sun/nio/cs/ISO_8859_1.java Thu Aug 24 16:29:34 2017 +0200
@@ -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 Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/sun/nio/cs/StandardCharsets.java.template Thu Aug 24 16:29:34 2017 +0200
@@ -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 Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/sun/nio/cs/US_ASCII.java Thu Aug 24 16:29:34 2017 +0200
@@ -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 Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/sun/nio/cs/UTF_8.java Thu Aug 24 16:29:34 2017 +0200
@@ -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/provider/certpath/AlgorithmChecker.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/provider/certpath/AlgorithmChecker.java Thu Aug 24 16:29:34 2017 +0200
@@ -270,7 +270,7 @@
AlgorithmParameters currSigAlgParams = algorithmId.getParameters();
PublicKey currPubKey = cert.getPublicKey();
- String currSigAlg = ((X509Certificate)cert).getSigAlgName();
+ String currSigAlg = x509Cert.getSigAlgName();
// Check the signature algorithm and parameters against constraints.
if (!constraints.permits(SIGNATURE_PRIMITIVE_SET, currSigAlg,
--- a/jdk/src/java.base/share/classes/sun/security/util/ECUtil.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/util/ECUtil.java Thu Aug 24 16:29:34 2017 +0200
@@ -130,7 +130,7 @@
return (ECPrivateKey)keyFactory.generatePrivate(keySpec);
}
- private static AlgorithmParameters getECParameters(Provider p) {
+ public static AlgorithmParameters getECParameters(Provider p) {
try {
if (p != null) {
return AlgorithmParameters.getInstance("EC", p);
--- a/jdk/src/java.base/windows/native/libnio/ch/FileChannelImpl.c Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/windows/native/libnio/ch/FileChannelImpl.c Thu Aug 24 16:29:34 2017 +0200
@@ -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 Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/windows/native/libnio/ch/FileDispatcherImpl.c Thu Aug 24 16:29:34 2017 +0200
@@ -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 Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.base/windows/native/libnio/ch/WindowsAsynchronousFileChannelImpl.c Thu Aug 24 16:29:34 2017 +0200
@@ -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/src/java.sql.rowset/share/classes/javax/sql/rowset/package.html Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.sql.rowset/share/classes/javax/sql/rowset/package.html Thu Aug 24 16:29:34 2017 +0200
@@ -177,13 +177,13 @@
<caption>Features in <code>BaseRowSet</code></caption>
<thead>
<tr>
- <th>Feature</th>
- <th>Details</th>
+ <th scope="col">Feature</th>
+ <th scope="col">Details</th>
</tr>
</thead>
<tbody>
<tr>
- <td>Properties</td>
+ <th scope="row">Properties</th>
<td>Provides standard JavaBeans property manipulation
mechanisms to allow applications to get and set <code>RowSet</code> command and
property values. Refer to the documentation of the <code>javax.sql.RowSet</code>
@@ -191,7 +191,7 @@
the standard <code>RowSet</code> properties.</td>
</tr>
<tr>
- <td>Event notification</td>
+ <th scope="row">Event notification</th>
<td>Provides standard JavaBeans event notifications
to registered event listeners. Refer to the documentation of <code>javax.sql.RowSetEvent</code>
interface (available in the JDBC 3.0 specification) for
@@ -199,12 +199,12 @@
by compliant implementations.</td>
</tr>
<tr>
- <td>Setters for a RowSet object's command</td>
+ <th scope="row">Setters for a RowSet object's command</th>
<td>Provides a complete set of setter methods
for setting RowSet command parameters.</td>
</tr>
<tr>
- <td>Streams</td>
+ <th scope="row">Streams</th>
<td>Provides fields for storing of stream instances
in addition to providing a set of constants for stream type designation.</td>
</tr>
--- a/jdk/src/java.sql/share/classes/java/sql/Connection.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.sql/share/classes/java/sql/Connection.java Thu Aug 24 16:29:34 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -1523,7 +1523,7 @@
*
* @implSpec
* The default implementation is a no-op.
- * <p>
+ *
* @apiNote
* This method is to be used by Connection pooling managers.
* <p>
--- a/jdk/src/java.sql/share/classes/java/sql/DriverManager.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.sql/share/classes/java/sql/DriverManager.java Thu Aug 24 16:29:34 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -63,7 +63,6 @@
* via the {@linkplain ServiceLoader#load service-provider loading} mechanism.
*</ul>
*
- *<P>
* @implNote
* {@code DriverManager} initialization is done lazily and looks up service
* providers using the thread context class loader. The drivers loaded and
--- a/jdk/src/java.sql/share/classes/java/sql/SQLPermission.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.sql/share/classes/java/sql/SQLPermission.java Thu Aug 24 16:29:34 2017 +0200
@@ -62,29 +62,29 @@
* <caption style="display:none">permission target name, what the permission allows, and associated risks</caption>
* <thead>
* <tr>
- * <th>Permission Target Name</th>
- * <th>What the Permission Allows</th>
- * <th>Risks of Allowing this Permission</th>
+ * <th scope="col">Permission Target Name</th>
+ * <th scope="col">What the Permission Allows</th>
+ * <th scope="col">Risks of Allowing this Permission</th>
* </tr>
* </thead>
*
* <tbody>
* <tr>
- * <td>setLog</td>
+ * <th scope="row">setLog</th>
* <td>Setting of the logging stream</td>
* <td>This is a dangerous permission to grant.
* The contents of the log may contain usernames and passwords,
* SQL statements, and SQL data.</td>
* </tr>
* <tr>
- * <td>callAbort</td>
+ * <th scope="row">callAbort</th>
* <td>Allows the invocation of the {@code Connection} method
* {@code abort}</td>
* <td>Permits an application to terminate a physical connection to a
* database.</td>
* </tr>
* <tr>
- * <td>setSyncFactory</td>
+ * <th scope="row">setSyncFactory</th>
* <td>Allows the invocation of the {@code SyncFactory} methods
* {@code setJNDIContext} and {@code setLogger}</td>
* <td>Permits an application to specify the JNDI context from which the
@@ -93,7 +93,7 @@
* </tr>
*
* <tr>
- * <td>setNetworkTimeout</td>
+ * <th scope="row">setNetworkTimeout</th>
* <td>Allows the invocation of the {@code Connection} method
* {@code setNetworkTimeout}</td>
* <td>Permits an application to specify the maximum period a
@@ -101,7 +101,7 @@
* objects created from the <code>Connection</code>
* will wait for the database to reply to any one request.</td>
* <tr>
- * <td>deregisterDriver</td>
+ * <th scope="row">deregisterDriver</th>
* <td>Allows the invocation of the {@code DriverManager}
* method {@code deregisterDriver}</td>
* <td>Permits an application to remove a JDBC driver from the list of
--- a/jdk/src/java.sql/share/classes/java/sql/Statement.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.sql/share/classes/java/sql/Statement.java Thu Aug 24 16:29:34 2017 +0200
@@ -1379,17 +1379,17 @@
* single quote within the string will be replaced by two single quotes.
*
* <blockquote>
- * <table class="striped" >
+ * <table class="striped">
* <caption>Examples of the conversion:</caption>
* <thead>
- * <tr><th>Value</th><th>Result</th></tr>
+ * <tr><th scope="col">Value</th><th scope="col">Result</th></tr>
* </thead>
* <tbody style="text-align:center">
- * <tr> <td>Hello</td> <td>'Hello'</td> </tr>
- * <tr> <td>G'Day</td> <td>'G''Day'</td> </tr>
- * <tr> <td>'G''Day'</td>
+ * <tr> <th scope="row">Hello</th> <td>'Hello'</td> </tr>
+ * <tr> <th scope="row">G'Day</th> <td>'G''Day'</td> </tr>
+ * <tr> <th scope="row">'G''Day'</th>
* <td>'''G''''Day'''</td> </tr>
- * <tr> <td>I'''M</td> <td>'I''''''M'</td>
+ * <tr> <th scope="row">I'''M</th> <td>'I''''''M'</td>
* </tr>
*
* </tbody>
@@ -1454,48 +1454,48 @@
* <caption>Examples of the conversion:</caption>
* <thead>
* <tr>
- * <th>identifier</th>
- * <th>alwaysQuote</th>
- * <th>Result</th></tr>
+ * <th scope="col">identifier</th>
+ * <th scope="col">alwaysQuote</th>
+ * <th scope="col">Result</th></tr>
* </thead>
* <tbody>
* <tr>
- * <td>Hello</td>
+ * <th scope="row">Hello</th>
* <td>false</td>
* <td>Hello</td>
* </tr>
* <tr>
- * <td>Hello</td>
+ * <th scope="row">Hello</th>
* <td>true</td>
* <td>"Hello"</td>
* </tr>
* <tr>
- * <td>G'Day</td>
+ * <th scope="row">G'Day</th>
* <td>false</td>
* <td>"G'Day"</td>
* </tr>
* <tr>
- * <td>"Bruce Wayne"</td>
+ * <th scope="row">"Bruce Wayne"</th>
* <td>false</td>
* <td>"Bruce Wayne"</td>
* </tr>
* <tr>
- * <td>"Bruce Wayne"</td>
+ * <th scope="row">"Bruce Wayne"</th>
* <td>true</td>
* <td>"Bruce Wayne"</td>
* </tr>
* <tr>
- * <td>GoodDay$</td>
+ * <th scope="row">GoodDay$</th>
* <td>false</td>
* <td>"GoodDay$"</td>
* </tr>
* <tr>
- * <td>Hello"World</td>
+ * <th scope="row">Hello"World</th>
* <td>false</td>
* <td>SQLException</td>
* </tr>
* <tr>
- * <td>"Hello"World"</td>
+ * <th scope="row">"Hello"World"</th>
* <td>false</td>
* <td>SQLException</td>
* </tr>
@@ -1554,33 +1554,33 @@
* <caption>Examples of the conversion:</caption>
* <thead>
* <tr>
- * <th>identifier</th>
- * <th>Simple Identifier</th>
+ * <th scope="col">identifier</th>
+ * <th scope="col">Simple Identifier</th>
* </thead>
*
* <tbody>
* <tr>
- * <td>Hello</td>
+ * <th scope="row">Hello</th>
* <td>true</td>
* </tr>
* <tr>
- * <td>G'Day</td>
+ * <th scope="row">G'Day</th>
* <td>false</td>
* </tr>
* <tr>
- * <td>"Bruce Wayne"</td>
+ * <th scope="row">"Bruce Wayne"</th>
* <td>false</td>
* </tr>
* <tr>
- * <td>GoodDay$</td>
+ * <th scope="row">GoodDay$</th>
* <td>false</td>
* </tr>
* <tr>
- * <td>Hello"World</td>
+ * <th scope="row">Hello"World</th>
* <td>false</td>
* </tr>
* <tr>
- * <td>"Hello"World"</td>
+ * <th scope="row">"Hello"World"</th>
* <td>false</td>
* </tr>
* </tbody>
@@ -1613,17 +1613,17 @@
* <caption>Examples of the conversion:</caption>
* <thead>
* <tr>
- * <th>Value</th>
- * <th>Result</th>
+ * <th scope="col">Value</th>
+ * <th scope="col">Result</th>
* </tr>
* </thead>
* <tbody>
- * <tr> <td>Hello</td> <td>N'Hello'</td> </tr>
- * <tr> <td>G'Day</td> <td>N'G''Day'</td> </tr>
- * <tr> <td>'G''Day'</td>
+ * <tr> <th scope="row">Hello</th> <td>N'Hello'</td> </tr>
+ * <tr> <th scope="row">G'Day</th> <td>N'G''Day'</td> </tr>
+ * <tr> <th scope="row">'G''Day'</th>
* <td>N'''G''''Day'''</td> </tr>
- * <tr> <td>I'''M</td> <td>N'I''''''M'</td>
- * <tr> <td>N'Hello'</td> <td>N'N''Hello'''</td> </tr>
+ * <tr> <th scope="row">I'''M</th> <td>N'I''''''M'</td>
+ * <tr> <th scope="row">N'Hello'</th> <td>N'N''Hello'''</td> </tr>
*
* </tbody>
* </table>
--- a/jdk/src/java.sql/share/classes/javax/sql/package.html Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/java.sql/share/classes/javax/sql/package.html Thu Aug 24 16:29:34 2017 +0200
@@ -280,7 +280,6 @@
The <code>RowSet</code> interface may be implemented in any number of
ways, and anyone may write an implementation. Developers are encouraged
to use their imaginations in coming up with new ways to use rowsets.
-<P>
<h2>Package Specification</h2>
--- a/jdk/src/jdk.crypto.ec/share/classes/sun/security/ec/ECKeyPairGenerator.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/jdk.crypto.ec/share/classes/sun/security/ec/ECKeyPairGenerator.java Thu Aug 24 16:29:34 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2013, 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
@@ -25,12 +25,14 @@
package sun.security.ec;
+import java.io.IOException;
import java.math.BigInteger;
import java.security.*;
import java.security.spec.AlgorithmParameterSpec;
import java.security.spec.ECGenParameterSpec;
import java.security.spec.ECParameterSpec;
import java.security.spec.ECPoint;
+import java.security.spec.InvalidParameterSpecException;
import sun.security.ec.ECPrivateKeyImpl;
import sun.security.ec.ECPublicKeyImpl;
@@ -85,17 +87,19 @@
public void initialize(AlgorithmParameterSpec params, SecureRandom random)
throws InvalidAlgorithmParameterException {
+ ECParameterSpec ecSpec = null;
+
if (params instanceof ECParameterSpec) {
- this.params = ECUtil.getECParameterSpec(null,
+ ecSpec = ECUtil.getECParameterSpec(null,
(ECParameterSpec)params);
- if (this.params == null) {
+ if (ecSpec == null) {
throw new InvalidAlgorithmParameterException(
"Unsupported curve: " + params);
}
} else if (params instanceof ECGenParameterSpec) {
String name = ((ECGenParameterSpec)params).getName();
- this.params = ECUtil.getECParameterSpec(null, name);
- if (this.params == null) {
+ ecSpec = ECUtil.getECParameterSpec(null, name);
+ if (ecSpec == null) {
throw new InvalidAlgorithmParameterException(
"Unknown curve name: " + name);
}
@@ -103,11 +107,36 @@
throw new InvalidAlgorithmParameterException(
"ECParameterSpec or ECGenParameterSpec required for EC");
}
+
+ // Not all known curves are supported by the native implementation
+ ensureCurveIsSupported(ecSpec);
+ this.params = ecSpec;
+
this.keySize =
((ECParameterSpec)this.params).getCurve().getField().getFieldSize();
this.random = random;
}
+ private static void ensureCurveIsSupported(ECParameterSpec ecSpec)
+ throws InvalidAlgorithmParameterException {
+
+ AlgorithmParameters ecParams = ECUtil.getECParameters(null);
+ byte[] encodedParams;
+ try {
+ ecParams.init(ecSpec);
+ encodedParams = ecParams.getEncoded();
+ } catch (InvalidParameterSpecException ex) {
+ throw new InvalidAlgorithmParameterException(
+ "Unsupported curve: " + ecSpec.toString());
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
+ if (!isCurveSupported(encodedParams)) {
+ throw new InvalidAlgorithmParameterException(
+ "Unsupported curve: " + ecParams.toString());
+ }
+ }
+
// generate the keypair. See JCA doc
@Override
public KeyPair generateKeyPair() {
@@ -159,6 +188,17 @@
this.keySize = keySize;
}
+ /**
+ * Checks whether the curve in the encoded parameters is supported by the
+ * native implementation.
+ *
+ * @param encodedParams encoded parameters in the same form accepted
+ * by generateECKeyPair
+ * @return true if and only if generateECKeyPair will succeed for
+ * the supplied parameters
+ */
+ private static native boolean isCurveSupported(byte[] encodedParams);
+
/*
* Generates the keypair and returns a 2-element array of encoding bytes.
* The first one is for the private key, the second for the public key.
--- a/jdk/src/jdk.crypto.ec/share/native/libsunec/ECC_JNI.cpp Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/jdk.crypto.ec/share/native/libsunec/ECC_JNI.cpp Thu Aug 24 16:29:34 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2015, 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
@@ -90,6 +90,50 @@
/*
* Class: sun_security_ec_ECKeyPairGenerator
+ * Method: isCurveSupported
+ * Signature: ([B)Z
+ */
+JNIEXPORT jboolean
+JNICALL Java_sun_security_ec_ECKeyPairGenerator_isCurveSupported
+ (JNIEnv *env, jclass clazz, jbyteArray encodedParams)
+{
+ SECKEYECParams params_item;
+ ECParams *ecparams = NULL;
+ jboolean result = JNI_FALSE;
+
+ // The curve is supported if we can get parameters for it
+ params_item.len = env->GetArrayLength(encodedParams);
+ params_item.data =
+ (unsigned char *) env->GetByteArrayElements(encodedParams, 0);
+ if (params_item.data == NULL) {
+ goto cleanup;
+ }
+
+ // Fill a new ECParams using the supplied OID
+ if (EC_DecodeParams(¶ms_item, &ecparams, 0) != SECSuccess) {
+ /* bad curve OID */
+ goto cleanup;
+ }
+
+ // If we make it to here, then the curve is supported
+ result = JNI_TRUE;
+
+cleanup:
+ {
+ if (params_item.data) {
+ env->ReleaseByteArrayElements(encodedParams,
+ (jbyte *) params_item.data, JNI_ABORT);
+ }
+ if (ecparams) {
+ FreeECParams(ecparams, true);
+ }
+ }
+
+ return result;
+}
+
+/*
+ * Class: sun_security_ec_ECKeyPairGenerator
* Method: generateECKeyPair
* Signature: (I[B[B)[[B
*/
--- a/jdk/src/jdk.management.agent/share/classes/sun/management/jdp/JdpController.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/jdk.management.agent/share/classes/sun/management/jdp/JdpController.java Thu Aug 24 16:29:34 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 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
@@ -33,6 +33,7 @@
import java.lang.management.RuntimeMXBean;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.lang.UnsupportedOperationException;
import sun.management.VMManagement;
/**
@@ -132,19 +133,11 @@
}
// Get the process id of the current running Java process
- private static Integer getProcessId() {
+ private static Long getProcessId() {
try {
- // Get the current process id using a reflection hack
- RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
- Field jvm = runtime.getClass().getDeclaredField("jvm");
- jvm.setAccessible(true);
-
- VMManagement mgmt = (sun.management.VMManagement) jvm.get(runtime);
- Method pid_method = mgmt.getClass().getDeclaredMethod("getProcessId");
- pid_method.setAccessible(true);
- Integer pid = (Integer) pid_method.invoke(mgmt);
- return pid;
- } catch(Exception ex) {
+ // Get the current process id
+ return ProcessHandle.current().pid();
+ } catch(UnsupportedOperationException ex) {
return null;
}
}
@@ -206,7 +199,7 @@
packet.setBroadcastInterval(Integer.toString(pause));
// Set process id
- Integer pid = getProcessId();
+ Long pid = getProcessId();
if (pid != null) {
packet.setProcessId(pid.toString());
}
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpChannel.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpChannel.java Thu Aug 24 16:29:34 2017 +0200
@@ -59,65 +59,70 @@
* {@link #setOption(SctpSocketOption,Object) setOption} method. An SCTP
* channel support the following options:
* <blockquote>
- * <table class="striped"><caption style="display:none">Socket options</caption>
+ * <table class="striped">
+ * <caption style="display:none">Socket options</caption>
+ * <thead>
* <tr>
- * <th>Option Name</th>
- * <th>Description</th>
+ * <th scope="col">Option Name</th>
+ * <th scope="col">Description</th>
* </tr>
+ * </thead>
+ * <tbody>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_DISABLE_FRAGMENTS
- * SCTP_DISABLE_FRAGMENTS} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_DISABLE_FRAGMENTS
+ * SCTP_DISABLE_FRAGMENTS} </th>
* <td> Enables or disables message fragmentation </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_EXPLICIT_COMPLETE
- * SCTP_EXPLICIT_COMPLETE} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_EXPLICIT_COMPLETE
+ * SCTP_EXPLICIT_COMPLETE} </th>
* <td> Enables or disables explicit message completion </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_FRAGMENT_INTERLEAVE
- * SCTP_FRAGMENT_INTERLEAVE} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_FRAGMENT_INTERLEAVE
+ * SCTP_FRAGMENT_INTERLEAVE} </th>
* <td> Controls how the presentation of messages occur for the message
* receiver </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_INIT_MAXSTREAMS
- * SCTP_INIT_MAXSTREAMS} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_INIT_MAXSTREAMS
+ * SCTP_INIT_MAXSTREAMS} </th>
* <td> The maximum number of streams requested by the local endpoint during
* association initialization </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_NODELAY SCTP_NODELAY} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_NODELAY SCTP_NODELAY} </th>
* <td> Enables or disable a Nagle-like algorithm </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_PRIMARY_ADDR
- * SCTP_PRIMARY_ADDR} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_PRIMARY_ADDR
+ * SCTP_PRIMARY_ADDR} </th>
* <td> Requests that the local SCTP stack use the given peer address as the
* association primary </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_SET_PEER_PRIMARY_ADDR
- * SCTP_SET_PEER_PRIMARY_ADDR} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_SET_PEER_PRIMARY_ADDR
+ * SCTP_SET_PEER_PRIMARY_ADDR} </th>
* <td> Requests that the peer mark the enclosed address as the association
* primary </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SO_SNDBUF
- * SO_SNDBUF} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SO_SNDBUF
+ * SO_SNDBUF} </th>
* <td> The size of the socket send buffer </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SO_RCVBUF
- * SO_RCVBUF} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SO_RCVBUF
+ * SO_RCVBUF} </th>
* <td> The size of the socket receive buffer </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SO_LINGER
- * SO_LINGER} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SO_LINGER
+ * SO_LINGER} </th>
* <td> Linger on close if data is present (when configured in blocking mode
* only) </td>
* </tr>
+ * </tbody>
* </table>
* </blockquote>
* Additional (implementation specific) options may also be supported. The list
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpMultiChannel.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpMultiChannel.java Thu Aug 24 16:29:34 2017 +0200
@@ -63,65 +63,70 @@
* {@link #setOption(SctpSocketOption,Object,Association) setOption} method. An
* {@code SctpMultiChannel} supports the following options:
* <blockquote>
- * <table class="striped"><caption style="display:none">Socket options</caption>
+ * <table class="striped">
+ * <caption style="display:none">Socket options</caption>
+ * <thead>
* <tr>
- * <th>Option Name</th>
- * <th>Description</th>
+ * <th scope="col">Option Name</th>
+ * <th scope="col">Description</th>
* </tr>
+ * </thead>
+ * <tbody>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_DISABLE_FRAGMENTS
- * SCTP_DISABLE_FRAGMENTS} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_DISABLE_FRAGMENTS
+ * SCTP_DISABLE_FRAGMENTS} </th>
* <td> Enables or disables message fragmentation </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_EXPLICIT_COMPLETE
- * SCTP_EXPLICIT_COMPLETE} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_EXPLICIT_COMPLETE
+ * SCTP_EXPLICIT_COMPLETE} </th>
* <td> Enables or disables explicit message completion </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_FRAGMENT_INTERLEAVE
- * SCTP_FRAGMENT_INTERLEAVE} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_FRAGMENT_INTERLEAVE
+ * SCTP_FRAGMENT_INTERLEAVE} </th>
* <td> Controls how the presentation of messages occur for the message
* receiver </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_INIT_MAXSTREAMS
- * SCTP_INIT_MAXSTREAMS} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_INIT_MAXSTREAMS
+ * SCTP_INIT_MAXSTREAMS} </th>
* <td> The maximum number of streams requested by the local endpoint during
* association initialization </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_NODELAY SCTP_NODELAY} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_NODELAY SCTP_NODELAY} </th>
* <td> Enables or disable a Nagle-like algorithm </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_PRIMARY_ADDR
- * SCTP_PRIMARY_ADDR} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_PRIMARY_ADDR
+ * SCTP_PRIMARY_ADDR} </th>
* <td> Requests that the local SCTP stack use the given peer address as the
* association primary </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_SET_PEER_PRIMARY_ADDR
- * SCTP_SET_PEER_PRIMARY_ADDR} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_SET_PEER_PRIMARY_ADDR
+ * SCTP_SET_PEER_PRIMARY_ADDR} </th>
* <td> Requests that the peer mark the enclosed address as the association
* primary </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SO_SNDBUF
- * SO_SNDBUF} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SO_SNDBUF
+ * SO_SNDBUF} </th>
* <td> The size of the socket send buffer </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SO_RCVBUF
- * SO_RCVBUF} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SO_RCVBUF
+ * SO_RCVBUF} </th>
* <td> The size of the socket receive buffer </td>
* </tr>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SO_LINGER
- * SO_LINGER} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SO_LINGER
+ * SO_LINGER} </th>
* <td> Linger on close if data is present (when configured in blocking mode
* only) </td>
* </tr>
+ * </tbody>
* </table>
* </blockquote>
* Additional (implementation specific) options may also be supported. The list
--- a/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpServerChannel.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp/SctpServerChannel.java Thu Aug 24 16:29:34 2017 +0200
@@ -47,17 +47,22 @@
* {@link #setOption(SctpSocketOption,Object) setOption} method. SCTP server socket
* channels support the following options:
* <blockquote>
- * <table><caption style="display:none">Socket options</caption>
+ * <table class="striped">
+ * <caption style="display:none">Socket options</caption>
+ * <thead>
* <tr>
- * <th>Option Name</th>
- * <th>Description</th>
+ * <th scope="col">Option Name</th>
+ * <th scope="col">Description</th>
* </tr>
+ * </thead>
+ * <tbody>
* <tr>
- * <td> {@link SctpStandardSocketOptions#SCTP_INIT_MAXSTREAMS
- * SCTP_INIT_MAXSTREAMS} </td>
+ * <th scope="row"> {@link SctpStandardSocketOptions#SCTP_INIT_MAXSTREAMS
+ * SCTP_INIT_MAXSTREAMS} </th>
* <td> The maximum number of streams requested by the local endpoint during
* association initialization </td>
* </tr>
+ * </tbody>
* </table>
* </blockquote>
* Additional (implementation specific) options may also be supported. The list
--- a/jdk/test/ProblemList.txt Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/test/ProblemList.txt Thu Aug 24 16:29:34 2017 +0200
@@ -264,9 +264,6 @@
tools/jimage/JImageListTest.java 8170120 generic-all
tools/jimage/JImageVerifyTest.java 8170120 generic-all
-tools/schemagen/MultiReleaseJarTest.java 8174692 generic-all
-tools/wsgen/MultiReleaseJarTest.java 8174692 generic-all
-
############################################################################
# jdk_jdi
--- a/jdk/test/com/oracle/security/ucrypto/TestAES.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/test/com/oracle/security/ucrypto/TestAES.java Thu Aug 24 16:29:34 2017 +0200
@@ -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/java/nio/charset/Charset/IllegalCharsetName.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/test/java/nio/charset/Charset/IllegalCharsetName.java Thu Aug 24 16:29:34 2017 +0200
@@ -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/util/regex/RegExTest.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/test/java/util/regex/RegExTest.java Thu Aug 24 16:29:34 2017 +0200
@@ -33,9 +33,8 @@
* 6350801 6676425 6878475 6919132 6931676 6948903 6990617 7014645 7039066
* 7067045 7014640 7189363 8007395 8013252 8013254 8012646 8023647 6559590
* 8027645 8035076 8039124 8035975 8074678 6854417 8143854 8147531 7071819
- * 8151481 4867170 7080302 6728861 6995635 6736245 4916384
- * 6328855 6192895 6345469 6988218 6693451 7006761 8140212 8143282 8158482
- * 8176029
+ * 8151481 4867170 7080302 6728861 6995635 6736245 4916384 6328855 6192895
+ * 6345469 6988218 6693451 7006761 8140212 8143282 8158482 8176029 8184706
*
* @library /test/lib
* @build jdk.test.lib.RandomFactory
@@ -470,7 +469,25 @@
m.find();
if (!m.hitEnd())
failCount++;
- report("hitEnd from a Slice");
+
+ // 8184706: Matching u+0d at EOL against \R should hit-end
+ p = Pattern.compile("...\\R");
+ m = p.matcher("cat" + (char)0x0a);
+ m.find();
+ if (m.hitEnd())
+ failCount++;
+
+ m = p.matcher("cat" + (char)0x0d);
+ m.find();
+ if (!m.hitEnd())
+ failCount++;
+
+ m = p.matcher("cat" + (char)0x0d + (char)0x0a);
+ m.find();
+ if (m.hitEnd())
+ failCount++;
+
+ report("hitEnd");
}
// This is for bug 4997476
--- a/jdk/test/sun/management/jdp/JdpOnTestCase.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/test/sun/management/jdp/JdpOnTestCase.java Thu Aug 24 16:29:34 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 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
@@ -31,6 +31,7 @@
import java.net.SocketTimeoutException;
import java.util.Map;
+import static jdk.testlibrary.Asserts.assertNotEquals;
public class JdpOnTestCase extends JdpTestCase {
@@ -58,6 +59,7 @@
final String jdpName = payload.get("INSTANCE_NAME");
log.fine("Received correct JDP packet #" + String.valueOf(receivedJDPpackets) +
", jdp.name=" + jdpName);
+ assertNotEquals(null, payload.get("PROCESS_ID"), "Expected payload.get(\"PROCESS_ID\") to be not null.");
}
/**
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/ec/InvalidCurve.java Thu Aug 24 16:29:34 2017 +0200
@@ -0,0 +1,61 @@
+/*
+ * 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 8182999
+ * @summary Ensure that SunEC behaves correctly for unsupported curves.
+ * @run main InvalidCurve
+ */
+
+import java.security.*;
+import java.security.spec.*;
+import java.math.*;
+
+public class InvalidCurve {
+
+ public static void main(String[] args) {
+
+ KeyPairGenerator keyGen;
+ try {
+ keyGen = KeyPairGenerator.getInstance("EC", "SunEC");
+ ECGenParameterSpec brainpoolSpec =
+ new ECGenParameterSpec("brainpoolP256r1");
+ keyGen.initialize(brainpoolSpec);
+ } catch (InvalidAlgorithmParameterException ex) {
+ System.out.println(ex.getMessage());
+ // this is expected
+ return;
+ } catch (NoSuchAlgorithmException | NoSuchProviderException ex) {
+ throw new RuntimeException(ex);
+ }
+
+ keyGen.generateKeyPair();
+
+ // If we make it to here, then the test is not working correctly.
+ throw new RuntimeException("The expected exception was not thrown.");
+
+ }
+
+}
+
--- a/jdk/test/tools/schemagen/MultiReleaseJarTest.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/test/tools/schemagen/MultiReleaseJarTest.java Thu Aug 24 16:29:34 2017 +0200
@@ -56,7 +56,7 @@
@DataProvider(name = "jarFiles")
public Object[][] jarFiles() {
- return new Object[][]{{"MV_BOTH.jar", 9},
+ return new Object[][]{{"MV_BOTH.jar", Math.min(10, Runtime.version().major())},
{"MV_ONLY_9.jar", 9},
{"NON_MV.jar", 8}};
}
--- a/jdk/test/tools/wsgen/MultiReleaseJarTest.java Thu Jul 13 19:34:24 2017 +0000
+++ b/jdk/test/tools/wsgen/MultiReleaseJarTest.java Thu Aug 24 16:29:34 2017 +0200
@@ -56,7 +56,7 @@
@DataProvider(name = "jarFiles")
public Object[][] jarFiles() {
- return new Object[][]{{"MV_BOTH.jar", 9},
+ return new Object[][]{{"MV_BOTH.jar", Math.min(10, Runtime.version().major())},
{"MV_ONLY_9.jar", 9},
{"NON_MV.jar", 8}};
}
--- a/make/Main.gmk Thu Jul 13 19:34:24 2017 +0000
+++ b/make/Main.gmk Thu Aug 24 16:29:34 2017 +0200
@@ -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/test/lib/jdk/test/lib/Utils.java Thu Jul 13 19:34:24 2017 +0000
+++ b/test/lib/jdk/test/lib/Utils.java Thu Aug 24 16:29:34 2017 +0200
@@ -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);
+ }
+ }
}