This commit is contained in:
J. Duke 2017-07-05 23:30:07 +02:00
commit 24252e72e4
312 changed files with 4117 additions and 2772 deletions

View File

@ -419,4 +419,7 @@ ba5b16c9c6d80632b61959a33d424b1c3398ce62 jdk-9+166
111e2e7d00f45c983cdbc9c59ae40552152fcc23 jdk-10+5
03fe61bb7670644cf6e46b5cfafb6b27c0e0157e jdk-10+6
b25838a28195f4b6dab34668411eedd2d366a16c jdk-9+169
4d163ec59d989a9261ed7f848bc6303f90869af5 jdk-9+170
aa3c97810d7c484c93a2fd75d3c76ff574deb6d8 jdk-10+7
df33ef1dc163f994177fd97d4d0e73a1e3cb5d85 jdk-10+8

View File

@ -5186,7 +5186,7 @@ VS_SDK_PLATFORM_NAME_2013=
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
DATE_WHEN_GENERATED=1494615666
DATE_WHEN_GENERATED=1494858828
###############################################################################
#
@ -48811,173 +48811,63 @@ $as_echo "yes" >&6; }
# Check whether --with-jtreg was given.
if test "${with_jtreg+set}" = set; then :
withval=$with_jtreg;
else
with_jtreg=no
fi
if test "x$with_jtreg" = xno; then
# jtreg disabled
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg" >&5
$as_echo_n "checking for jtreg... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg test harness" >&5
$as_echo_n "checking for jtreg test harness... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no, disabled" >&5
$as_echo "no, disabled" >&6; }
elif test "x$with_jtreg" != xyes && test "x$with_jtreg" != x; then
# An explicit path is specified, use it.
JT_HOME="$with_jtreg"
if test ! -d "$JT_HOME"; then
as_fn_error $? "jtreg home directory from --with-jtreg=$with_jtreg does not exist" "$LINENO" 5
fi
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
as_fn_error $? "jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home" "$LINENO" 5
fi
JTREGEXE="$JT_HOME/bin/jtreg"
if test ! -x "$JTREGEXE"; then
as_fn_error $? "jtreg home directory from --with-jtreg=$with_jtreg does not contain valid jtreg executable" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg test harness" >&5
$as_echo_n "checking for jtreg test harness... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $JT_HOME" >&5
$as_echo "$JT_HOME" >&6; }
else
if test "x$with_jtreg" != xyes; then
# with path specified.
JT_HOME="$with_jtreg"
fi
# Try to locate jtreg
if test "x$JT_HOME" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg" >&5
$as_echo_n "checking for jtreg... " >&6; }
# use JT_HOME enviroment var.
# Only process if variable expands to non-empty
if test "x$JT_HOME" != x; then
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
# Input might be given as Windows format, start by converting to
# unix format.
path="$JT_HOME"
new_path=`$CYGPATH -u "$path"`
# Cygwin tries to hide some aspects of the Windows file system, such that binaries are
# named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
# the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
# "foo.exe" is OK but "foo" is an error.
#
# This test is therefore slightly more accurate than "test -f" to check for file precense.
# It is also a way to make sure we got the proper file name for the real test later on.
test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
if test "x$test_shortpath" = x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of JT_HOME, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of JT_HOME, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Cannot locate the the path of JT_HOME" "$LINENO" 5
fi
# Call helper function which possibly converts this using DOS-style short mode.
# If so, the updated path is stored in $new_path.
input_path="$new_path"
# Check if we need to convert this using DOS-style short mode. If the path
# contains just simple characters, use it. Otherwise (spaces, weird characters),
# take no chances and rewrite it.
# Note: m4 eats our [], so we need to use [ and ] instead.
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
if test "x$has_forbidden_chars" != x; then
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
shortmode_path=`$CYGPATH -s -m -a "$input_path"`
path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
# Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
fi
test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
if test "x$test_cygdrive_prefix" = x; then
# As a simple fix, exclude /usr/bin since it's not a real path.
if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
# The path is in a Cygwin special directory (e.g. /home). We need this converted to
# a path prefixed by /cygdrive for fixpath to work.
new_path="$CYGWIN_ROOT_PATH$input_path"
fi
fi
if test "x$path" != "x$new_path"; then
JT_HOME="$new_path"
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JT_HOME to \"$new_path\"" >&5
$as_echo "$as_me: Rewriting JT_HOME to \"$new_path\"" >&6;}
fi
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
path="$JT_HOME"
has_colon=`$ECHO $path | $GREP ^.:`
new_path="$path"
if test "x$has_colon" = x; then
# Not in mixed or Windows style, start by that.
new_path=`cmd //c echo $path`
fi
input_path="$new_path"
# Check if we need to convert this using DOS-style short mode. If the path
# contains just simple characters, use it. Otherwise (spaces, weird characters),
# take no chances and rewrite it.
# Note: m4 eats our [], so we need to use [ and ] instead.
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
if test "x$has_forbidden_chars" != x; then
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
fi
windows_path="$new_path"
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
unix_path=`$CYGPATH -u "$windows_path"`
new_path="$unix_path"
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
new_path="$unix_path"
fi
if test "x$path" != "x$new_path"; then
JT_HOME="$new_path"
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JT_HOME to \"$new_path\"" >&5
$as_echo "$as_me: Rewriting JT_HOME to \"$new_path\"" >&6;}
fi
# Save the first 10 bytes of this path to the storage, so fixpath can work.
all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
else
# We're on a unix platform. Hooray! :)
path="$JT_HOME"
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of JT_HOME, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of JT_HOME, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
# Use eval to expand a potential ~
eval path="$path"
if test ! -f "$path" && test ! -d "$path"; then
as_fn_error $? "The path of JT_HOME, which resolves as \"$path\", is not found." "$LINENO" 5
fi
if test -d "$path"; then
JT_HOME="`cd "$path"; $THEPWDCMD -L`"
# JT_HOME set in environment, use it
if test ! -d "$JT_HOME"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring JT_HOME pointing to invalid directory: $JT_HOME" >&5
$as_echo "$as_me: WARNING: Ignoring JT_HOME pointing to invalid directory: $JT_HOME" >&2;}
JT_HOME=
else
dir="`$DIRNAME "$path"`"
base="`$BASENAME "$path"`"
JT_HOME="`cd "$dir"; $THEPWDCMD -L`/$base"
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME" >&5
$as_echo "$as_me: WARNING: Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME" >&2;}
JT_HOME=
elif test ! -x "$JT_HOME/bin/jtreg"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring JT_HOME which does not contain valid jtreg executable: $JT_HOME" >&5
$as_echo "$as_me: WARNING: Ignoring JT_HOME which does not contain valid jtreg executable: $JT_HOME" >&2;}
JT_HOME=
else
JTREGEXE="$JT_HOME/bin/jtreg"
{ $as_echo "$as_me:${as_lineno-$LINENO}: Located jtreg using JT_HOME from environment" >&5
$as_echo "$as_me: Located jtreg using JT_HOME from environment" >&6;}
fi
fi
fi
fi
# jtreg win32 script works for everybody
JTREGEXE="$JT_HOME/bin/jtreg"
if test ! -f "$JTREGEXE"; then
as_fn_error $? "JTReg executable does not exist: $JTREGEXE" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $JTREGEXE" >&5
$as_echo "$JTREGEXE" >&6; }
else
# try to find jtreg on path
if test "x$JT_HOME" = x; then
# JT_HOME is not set in environment, or was deemed invalid.
# Try to find jtreg on path
# Publish this variable in the help.
@ -49175,13 +49065,451 @@ $as_echo "$tool_specified" >&6; }
fi
if test "x$JTREGEXE" != x; then
# That's good, now try to derive JT_HOME
JT_HOME=`(cd $($DIRNAME $JTREGEXE)/.. && pwd)`
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring jtreg from path since a valid jtreg home cannot be found" >&5
$as_echo "$as_me: WARNING: Ignoring jtreg from path since a valid jtreg home cannot be found" >&2;}
JT_HOME=
JTREGEXE=
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: Located jtreg using jtreg executable in path" >&5
$as_echo "$as_me: Located jtreg using jtreg executable in path" >&6;}
fi
fi
fi
if test "x$JTREGEXE" = x; then
as_fn_error $? "Could not find required tool for JTREGEXE" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg test harness" >&5
$as_echo_n "checking for jtreg test harness... " >&6; }
if test "x$JT_HOME" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $JT_HOME" >&5
$as_echo "$JT_HOME" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no, not found" >&5
$as_echo "no, not found" >&6; }
if test "x$with_jtreg" = xyes; then
as_fn_error $? "--with-jtreg was specified, but no jtreg found." "$LINENO" 5
fi
fi
fi
JT_HOME="`$DIRNAME $JTREGEXE`"
# Only process if variable expands to non-empty
if test "x$JTREGEXE" != x; then
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
# First separate the path from the arguments. This will split at the first
# space.
complete="$JTREGEXE"
path="${complete%% *}"
tmp="$complete EOL"
arguments="${tmp#* }"
# Input might be given as Windows format, start by converting to
# unix format.
new_path=`$CYGPATH -u "$path"`
# Now try to locate executable using which
new_path=`$WHICH "$new_path" 2> /dev/null`
# bat and cmd files are not always considered executable in cygwin causing which
# to not find them
if test "x$new_path" = x \
&& test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
&& test "x`$LS \"$path\" 2>/dev/null`" != x; then
new_path=`$CYGPATH -u "$path"`
fi
if test "x$new_path" = x; then
# Oops. Which didn't find the executable.
# The splitting of arguments from the executable at a space might have been incorrect,
# since paths with space are more likely in Windows. Give it another try with the whole
# argument.
path="$complete"
arguments="EOL"
new_path=`$CYGPATH -u "$path"`
new_path=`$WHICH "$new_path" 2> /dev/null`
# bat and cmd files are not always considered executable in cygwin causing which
# to not find them
if test "x$new_path" = x \
&& test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
&& test "x`$LS \"$path\" 2>/dev/null`" != x; then
new_path=`$CYGPATH -u "$path"`
fi
if test "x$new_path" = x; then
# It's still not found. Now this is an unrecoverable error.
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&5
$as_echo "$as_me: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&6;}
has_space=`$ECHO "$complete" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
fi
as_fn_error $? "Cannot locate the the path of JTREGEXE" "$LINENO" 5
fi
fi
# Cygwin tries to hide some aspects of the Windows file system, such that binaries are
# named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
# the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
# "foo.exe" is OK but "foo" is an error.
#
# This test is therefore slightly more accurate than "test -f" to check for file presence.
# It is also a way to make sure we got the proper file name for the real test later on.
test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
if test "x$test_shortpath" = x; then
# Short path failed, file does not exist as specified.
# Try adding .exe or .cmd
if test -f "${new_path}.exe"; then
input_to_shortpath="${new_path}.exe"
elif test -f "${new_path}.cmd"; then
input_to_shortpath="${new_path}.cmd"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of JTREGEXE, which resolves as \"$new_path\", is invalid." >&5
$as_echo "$as_me: The path of JTREGEXE, which resolves as \"$new_path\", is invalid." >&6;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
as_fn_error $? "Cannot locate the the path of JTREGEXE" "$LINENO" 5
fi
else
input_to_shortpath="$new_path"
fi
# Call helper function which possibly converts this using DOS-style short mode.
# If so, the updated path is stored in $new_path.
new_path="$input_to_shortpath"
input_path="$input_to_shortpath"
# Check if we need to convert this using DOS-style short mode. If the path
# contains just simple characters, use it. Otherwise (spaces, weird characters),
# take no chances and rewrite it.
# Note: m4 eats our [], so we need to use [ and ] instead.
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
if test "x$has_forbidden_chars" != x; then
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
shortmode_path=`$CYGPATH -s -m -a "$input_path"`
path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
# Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
fi
test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
if test "x$test_cygdrive_prefix" = x; then
# As a simple fix, exclude /usr/bin since it's not a real path.
if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
# The path is in a Cygwin special directory (e.g. /home). We need this converted to
# a path prefixed by /cygdrive for fixpath to work.
new_path="$CYGWIN_ROOT_PATH$input_path"
fi
fi
# remove trailing .exe if any
new_path="${new_path/%.exe/}"
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
# First separate the path from the arguments. This will split at the first
# space.
complete="$JTREGEXE"
path="${complete%% *}"
tmp="$complete EOL"
arguments="${tmp#* }"
# Input might be given as Windows format, start by converting to
# unix format.
new_path="$path"
windows_path="$new_path"
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
unix_path=`$CYGPATH -u "$windows_path"`
new_path="$unix_path"
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
new_path="$unix_path"
fi
# Now try to locate executable using which
new_path=`$WHICH "$new_path" 2> /dev/null`
if test "x$new_path" = x; then
# Oops. Which didn't find the executable.
# The splitting of arguments from the executable at a space might have been incorrect,
# since paths with space are more likely in Windows. Give it another try with the whole
# argument.
path="$complete"
arguments="EOL"
new_path="$path"
windows_path="$new_path"
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
unix_path=`$CYGPATH -u "$windows_path"`
new_path="$unix_path"
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
new_path="$unix_path"
fi
new_path=`$WHICH "$new_path" 2> /dev/null`
# bat and cmd files are not always considered executable in MSYS causing which
# to not find them
if test "x$new_path" = x \
&& test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
&& test "x`$LS \"$path\" 2>/dev/null`" != x; then
new_path="$path"
windows_path="$new_path"
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
unix_path=`$CYGPATH -u "$windows_path"`
new_path="$unix_path"
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
new_path="$unix_path"
fi
fi
if test "x$new_path" = x; then
# It's still not found. Now this is an unrecoverable error.
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&5
$as_echo "$as_me: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&6;}
has_space=`$ECHO "$complete" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
fi
as_fn_error $? "Cannot locate the the path of JTREGEXE" "$LINENO" 5
fi
fi
# Now new_path has a complete unix path to the binary
if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
# Keep paths in /bin as-is, but remove trailing .exe if any
new_path="${new_path/%.exe/}"
# Do not save /bin paths to all_fixpath_prefixes!
else
# Not in mixed or Windows style, start by that.
new_path=`cmd //c echo $new_path`
input_path="$new_path"
# Check if we need to convert this using DOS-style short mode. If the path
# contains just simple characters, use it. Otherwise (spaces, weird characters),
# take no chances and rewrite it.
# Note: m4 eats our [], so we need to use [ and ] instead.
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
if test "x$has_forbidden_chars" != x; then
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
fi
# Output is in $new_path
windows_path="$new_path"
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
unix_path=`$CYGPATH -u "$windows_path"`
new_path="$unix_path"
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
new_path="$unix_path"
fi
# remove trailing .exe if any
new_path="${new_path/%.exe/}"
# Save the first 10 bytes of this path to the storage, so fixpath can work.
all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
fi
else
# We're on a unix platform. Hooray! :)
# First separate the path from the arguments. This will split at the first
# space.
complete="$JTREGEXE"
path="${complete%% *}"
tmp="$complete EOL"
arguments="${tmp#* }"
# Cannot rely on the command "which" here since it doesn't always work.
is_absolute_path=`$ECHO "$path" | $GREP ^/`
if test -z "$is_absolute_path"; then
# Path to executable is not absolute. Find it.
IFS_save="$IFS"
IFS=:
for p in $PATH; do
if test -f "$p/$path" && test -x "$p/$path"; then
new_path="$p/$path"
break
fi
done
IFS="$IFS_save"
else
# This is an absolute path, we can use it without further modifications.
new_path="$path"
fi
if test "x$new_path" = x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&5
$as_echo "$as_me: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&6;}
has_space=`$ECHO "$complete" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
fi
as_fn_error $? "Cannot locate the the path of JTREGEXE" "$LINENO" 5
fi
fi
# Now join together the path and the arguments once again
if test "x$arguments" != xEOL; then
new_complete="$new_path ${arguments% *}"
else
new_complete="$new_path"
fi
if test "x$complete" != "x$new_complete"; then
JTREGEXE="$new_complete"
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JTREGEXE to \"$new_complete\"" >&5
$as_echo "$as_me: Rewriting JTREGEXE to \"$new_complete\"" >&6;}
fi
fi
# Only process if variable expands to non-empty
if test "x$JT_HOME" != x; then
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
# Input might be given as Windows format, start by converting to
# unix format.
path="$JT_HOME"
new_path=`$CYGPATH -u "$path"`
# Cygwin tries to hide some aspects of the Windows file system, such that binaries are
# named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
# the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
# "foo.exe" is OK but "foo" is an error.
#
# This test is therefore slightly more accurate than "test -f" to check for file precense.
# It is also a way to make sure we got the proper file name for the real test later on.
test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
if test "x$test_shortpath" = x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of JT_HOME, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of JT_HOME, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Cannot locate the the path of JT_HOME" "$LINENO" 5
fi
# Call helper function which possibly converts this using DOS-style short mode.
# If so, the updated path is stored in $new_path.
input_path="$new_path"
# Check if we need to convert this using DOS-style short mode. If the path
# contains just simple characters, use it. Otherwise (spaces, weird characters),
# take no chances and rewrite it.
# Note: m4 eats our [], so we need to use [ and ] instead.
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
if test "x$has_forbidden_chars" != x; then
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
shortmode_path=`$CYGPATH -s -m -a "$input_path"`
path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
# Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
fi
test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
if test "x$test_cygdrive_prefix" = x; then
# As a simple fix, exclude /usr/bin since it's not a real path.
if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
# The path is in a Cygwin special directory (e.g. /home). We need this converted to
# a path prefixed by /cygdrive for fixpath to work.
new_path="$CYGWIN_ROOT_PATH$input_path"
fi
fi
if test "x$path" != "x$new_path"; then
JT_HOME="$new_path"
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JT_HOME to \"$new_path\"" >&5
$as_echo "$as_me: Rewriting JT_HOME to \"$new_path\"" >&6;}
fi
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
path="$JT_HOME"
has_colon=`$ECHO $path | $GREP ^.:`
new_path="$path"
if test "x$has_colon" = x; then
# Not in mixed or Windows style, start by that.
new_path=`cmd //c echo $path`
fi
input_path="$new_path"
# Check if we need to convert this using DOS-style short mode. If the path
# contains just simple characters, use it. Otherwise (spaces, weird characters),
# take no chances and rewrite it.
# Note: m4 eats our [], so we need to use [ and ] instead.
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
if test "x$has_forbidden_chars" != x; then
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
fi
windows_path="$new_path"
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
unix_path=`$CYGPATH -u "$windows_path"`
new_path="$unix_path"
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
new_path="$unix_path"
fi
if test "x$path" != "x$new_path"; then
JT_HOME="$new_path"
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JT_HOME to \"$new_path\"" >&5
$as_echo "$as_me: Rewriting JT_HOME to \"$new_path\"" >&6;}
fi
# Save the first 10 bytes of this path to the storage, so fixpath can work.
all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
else
# We're on a unix platform. Hooray! :)
path="$JT_HOME"
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of JT_HOME, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of JT_HOME, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
# Use eval to expand a potential ~
eval path="$path"
if test ! -f "$path" && test ! -d "$path"; then
as_fn_error $? "The path of JT_HOME, which resolves as \"$path\", is not found." "$LINENO" 5
fi
if test -d "$path"; then
JT_HOME="`cd "$path"; $THEPWDCMD -L`"
else
dir="`$DIRNAME "$path"`"
base="`$BASENAME "$path"`"
JT_HOME="`cd "$dir"; $THEPWDCMD -L`/$base"
fi
fi
fi

View File

@ -271,9 +271,6 @@ BUNDLES_OUTPUTDIR=$(BUILD_OUTPUT)/bundles
TESTMAKE_OUTPUTDIR=$(BUILD_OUTPUT)/test-make
MAKESUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/make-support
# By default, output javadoc directly into image
JAVADOC_OUTPUTDIR = $(DOCS_IMAGE_DIR)
# This does not get overridden in a bootcycle build
CONFIGURESUPPORT_OUTPUTDIR:=@CONFIGURESUPPORT_OUTPUTDIR@
BUILDJDK_OUTPUTDIR=$(BUILD_OUTPUT)/buildjdk
@ -819,6 +816,8 @@ INTERIM_IMAGE_DIR := $(SUPPORT_OUTPUTDIR)/interim-image
# Docs image
DOCS_IMAGE_SUBDIR := docs
DOCS_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_IMAGE_SUBDIR)
# Output docs directly into image
DOCS_OUTPUTDIR := $(DOCS_IMAGE_DIR)
# Macosx bundles directory definitions
JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle

View File

@ -926,41 +926,82 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG],
[
AC_ARG_WITH(jtreg, [AS_HELP_STRING([--with-jtreg],
[Regression Test Harness @<:@probed@:>@])],
[],
[with_jtreg=no])
[Regression Test Harness @<:@probed@:>@])])
if test "x$with_jtreg" = xno; then
# jtreg disabled
AC_MSG_CHECKING([for jtreg])
AC_MSG_RESULT(no)
else
if test "x$with_jtreg" != xyes; then
# with path specified.
JT_HOME="$with_jtreg"
AC_MSG_CHECKING([for jtreg test harness])
AC_MSG_RESULT([no, disabled])
elif test "x$with_jtreg" != xyes && test "x$with_jtreg" != x; then
# An explicit path is specified, use it.
JT_HOME="$with_jtreg"
if test ! -d "$JT_HOME"; then
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not exist])
fi
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home])
fi
JTREGEXE="$JT_HOME/bin/jtreg"
if test ! -x "$JTREGEXE"; then
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not contain valid jtreg executable])
fi
AC_MSG_CHECKING([for jtreg test harness])
AC_MSG_RESULT([$JT_HOME])
else
# Try to locate jtreg
if test "x$JT_HOME" != x; then
AC_MSG_CHECKING([for jtreg])
# use JT_HOME enviroment var.
BASIC_FIXUP_PATH([JT_HOME])
# jtreg win32 script works for everybody
JTREGEXE="$JT_HOME/bin/jtreg"
if test ! -f "$JTREGEXE"; then
AC_MSG_ERROR([JTReg executable does not exist: $JTREGEXE])
# JT_HOME set in environment, use it
if test ! -d "$JT_HOME"; then
AC_MSG_WARN([Ignoring JT_HOME pointing to invalid directory: $JT_HOME])
JT_HOME=
else
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
AC_MSG_WARN([Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME])
JT_HOME=
elif test ! -x "$JT_HOME/bin/jtreg"; then
AC_MSG_WARN([Ignoring JT_HOME which does not contain valid jtreg executable: $JT_HOME])
JT_HOME=
else
JTREGEXE="$JT_HOME/bin/jtreg"
AC_MSG_NOTICE([Located jtreg using JT_HOME from environment])
fi
fi
fi
AC_MSG_RESULT($JTREGEXE)
if test "x$JT_HOME" = x; then
# JT_HOME is not set in environment, or was deemed invalid.
# Try to find jtreg on path
BASIC_PATH_PROGS(JTREGEXE, jtreg)
if test "x$JTREGEXE" != x; then
# That's good, now try to derive JT_HOME
JT_HOME=`(cd $($DIRNAME $JTREGEXE)/.. && pwd)`
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
AC_MSG_WARN([Ignoring jtreg from path since a valid jtreg home cannot be found])
JT_HOME=
JTREGEXE=
else
AC_MSG_NOTICE([Located jtreg using jtreg executable in path])
fi
fi
fi
AC_MSG_CHECKING([for jtreg test harness])
if test "x$JT_HOME" != x; then
AC_MSG_RESULT([$JT_HOME])
else
# try to find jtreg on path
BASIC_REQUIRE_PROGS(JTREGEXE, jtreg)
JT_HOME="`$DIRNAME $JTREGEXE`"
AC_MSG_RESULT([no, not found])
if test "x$with_jtreg" = xyes; then
AC_MSG_ERROR([--with-jtreg was specified, but no jtreg found.])
fi
fi
fi
BASIC_FIXUP_EXECUTABLE(JTREGEXE)
BASIC_FIXUP_PATH(JT_HOME)
AC_SUBST(JT_HOME)
AC_SUBST(JTREGEXE)
])

View File

@ -1,6 +1,6 @@
#!/bin/sh
#
# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@ -183,7 +183,7 @@ trap 'nice_exit' EXIT
subrepos="corba jaxp jaxws langtools jdk hotspot nashorn"
jdk_subrepos_extra="closed jdk/src/closed jdk/make/closed jdk/test/closed hotspot/make/closed hotspot/src/closed hotspot/test/closed"
subrepos_extra="$jdk_subrepos_extra deploy install sponsors pubs"
subrepos_extra="$jdk_subrepos_extra deploy install sponsors"
# Only look in specific locations for possible forests (avoids long searches)
pull_default=""

View File

@ -997,7 +997,8 @@ var getJibProfilesDependencies = function (input, common) {
ext: "tar.gz",
revision: "2.38.0-1+1.1",
module: "graphviz-" + input.target_platform,
configure_args: "DOT=" + input.get("graphviz", "install_path") + "/dot"
configure_args: "DOT=" + input.get("graphviz", "install_path") + "/dot",
environment_path: input.get("graphviz", "install_path")
},
pandoc: {
@ -1005,7 +1006,8 @@ var getJibProfilesDependencies = function (input, common) {
ext: "tar.gz",
revision: "1.17.2+1.0",
module: "pandoc-" + input.target_platform,
configure_args: "PANDOC=" + input.get("pandoc", "install_path") + "/pandoc/pandoc"
configure_args: "PANDOC=" + input.get("pandoc", "install_path") + "/pandoc/pandoc",
environment_path: input.get("pandoc", "install_path") + "/pandoc"
},
};

View File

@ -6,6 +6,7 @@
<meta name="generator" content="pandoc" />
<title>OpenJDK Build README</title>
<style type="text/css">code{white-space: pre;}</style>
<link rel="stylesheet" href=" ../../jdk/make/data/docs-resources/specs/resources/jdk-default.css" type="text/css" />
</head>
<body>
<div id="header">

View File

@ -6,9 +6,8 @@
<meta name="generator" content="pandoc" />
<title>Testing OpenJDK</title>
<style type="text/css">code{white-space: pre;}</style>
<link rel="stylesheet" href="http://openjdk.java.net/page.css" type="text/css" />
<link rel="stylesheet" href=" ../../jdk/make/data/docs-resources/specs/resources/jdk-default.css" type="text/css" />
<style type="text/css">pre, code, tt { color: #1d6ae5; }</style>
<style type="text/css">pre { font-size: 10pt; }</style>
</head>
<body>
<div id="header">

View File

@ -419,3 +419,6 @@ c7358d703e1282af3dcd8af6c037dc4342de9054 jdk-10+6
43de67f51801b9e16507865fcb7e8344f4ca4aa9 jdk-9+167
03a2cc9c8a1e8f87924c9863e917bc8b91770d5f jdk-9+168
b2218d41edef02ee8f94bb438f885b2ba79bfa08 jdk-9+169
8a4ab3b0ab9a86df73d9a1e337134f2dbe006725 jdk-9+170
aed5a4edc8275c1c50195503756ff92bfe0197f5 jdk-10+7
648b0a00824eb29e71936bc3258d309a25e3b8c0 jdk-10+8

View File

@ -1,4 +1,4 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
@ -6,7 +6,7 @@
<title>package</title>
<!--
Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 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
@ -52,7 +52,7 @@ import org.omg.CORBA.portable.IDLEntity;
* </OL>
*
* <P>
* <a name="anyOps"></a>
* <a id="anyOps"></a>
* A large part of the <code>Any</code> class consists of pairs of methods
* for inserting values into and extracting values from an
* <code>Any</code> object.

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 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
@ -85,13 +85,17 @@ import java.security.PrivilegedAction;
* three {@code init} methods. Two of the three methods use the properties
* (associations of a name with a value) shown in the
* table below.<BR>
* <TABLE BORDER=1 SUMMARY="Standard Java CORBA Properties">
* <TR><TH>Property Name</TH> <TH>Property Value</TH></TR>
* <TABLE class="plain">
* <CAPTION>Standard Java CORBA Properties:</CAPTION>
* <thead>
* <TR><TH>Property Name</TH> <TH>Property Value</TH></TR>
* </thead>
* <tbody>
* <TR><TD>org.omg.CORBA.ORBClass</TD>
* <TD>class name of an ORB implementation</TD></TR>
* <TR><TD>org.omg.CORBA.ORBSingletonClass</TD>
* <TD>class name of the ORB returned by {@code init()}</TD></TR>
* </tbody>
* </TABLE>
* <P>
* These properties allow a different vendor's {@code ORB}

View File

@ -1,4 +1,4 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">

View File

@ -1,4 +1,4 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">

View File

@ -1,3 +1,4 @@
<!doctype html>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
@ -6,7 +7,7 @@
<TITLE>package</TITLE>
<!--
/*
* Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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,9 +32,8 @@
*/
-->
</HEAD>
<BODY BGCOLOR="#FFFFFF">
Provides the mapping of the OMG CORBA APIs to the Java<SUP><FONT
SIZE=-2>TM</FONT></SUP>
<BODY>
Provides the mapping of the OMG CORBA APIs to the Java&trade;
programming language, including the class <code>ORB</code>, which is implemented
so that a programmer can use it as a fully-functional Object Request Broker
(ORB).
@ -427,7 +427,7 @@ will contain the static methods needed for manipulating instances of the type,
in this case, <code>Account</code> objects.
<a name="narrow"></a>
<a id="narrow"></a>
<h3>The <code>narrow</code> Method</h3>
When an object is the return value for a method, it is returned in the
form of a generic object, either an <code>org.omg.CORBA.Object</code> object
@ -465,7 +465,7 @@ tutorial uses a <code>narrow</code> method that looks like this:
helloImpl = HelloHelper.narrow(ncRef.resolve_str(name));
</PRE>
<a name="basic"></a>
<a id="basic"></a>
<h3>Example of a Basic Helper Class</h3>
A basic helper class, for purposes of this explanation, is one with
the methods that are provided by every helper class, plus a <code>narrow</code>
@ -671,7 +671,7 @@ abstract public class AddressHelper
&nbsp;&nbsp;&nbsp;&nbsp; WStringSeqHelper
&nbsp;&nbsp;&nbsp;&nbsp; WStringValueHelper
</code></PRE>
<a name="adv"></a>
<a id="adv"></a>
<H1>
Other Classes</H1>
The other classes and interfaces in the <code>CORBA</code> package, which are
@ -868,17 +868,17 @@ For overviews, guides, and a tutorial, please see:
<P><A NAME="unimpl"></A>
<P><A id="unimpl"></A>
<H1>
CORBA Features Not Implemented in Java IDL</H1>
<P>Some of the API included in <code>org.omg</code> subpackages is provided for
conformance with the current OMG CORBA specification but is not implemented
in Sun's release of the JDK<SUP><FONT SIZE=-2>TM</FONT></SUP>. This enables
in Sun's release of the JDK&trade;. This enables
other JDK licensees to provide implementations of this API in standard
extensions and products.
<P><A NAME="NO_IMPLEMENT"></A>
<P><A id="NO_IMPLEMENT"></A>
<h2>Features That Throw NO_IMPLEMENT</h2>
<P>Some of the API included in <code>org.omg</code> subpackages throw

View File

@ -1,8 +1,8 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!doctype html>
<html>
<head>
<!--
Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@ -26,7 +26,7 @@ or visit www.oracle.com if you need additional information or have any
questions.
-->
</head>
<body bgcolor="white">
<body>
Provides a portability layer, that is, a set of ORB APIs
that makes it possible for code generated
@ -38,7 +38,7 @@ can call into these ORB APIs.
<p>
<a name="unimpl"></a>
<a id="unimpl"></a>
<hr>
<h1>CORBA Features Throwing NO_IMPLEMENT() Exceptions</h1>
<hr>

View File

@ -1,4 +1,4 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
@ -6,7 +6,7 @@
<title>package</title>
<!--
/*
* Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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,7 +31,7 @@
*/
-->
</head>
<body bgcolor="#FFFFFF">
<body>
The CORBA_2_3 package defines additions to existing CORBA interfaces
in the Java[tm] Standard Edition 6.&nbsp;&nbsp; These changes occurred in recent
revisions to the CORBA API defined by the OMG.&nbsp; The new methods were
@ -46,7 +46,7 @@ the Java[tm] Platform, Standard Edition 6, ORB complies, see <A
HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA
support in Java[tm] SE 6</A>.
<P>
<a name="unimpl"></a>
<a id="unimpl"></a>
The following methods in the abstract class
<code>org.omg.CORBA_2_3.ORB</code> are unimplemented:
<UL>

View File

@ -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.
*
* This code is free software; you can redistribute it and/or modify it
@ -425,7 +425,7 @@ module IOP {
* encoded using GIOP 1.2 with a TCS-W of UTF-16. This service context
* may be sent on Reply messages with a reply_status of SYSTEM_EXCEPTION
* or USER_EXCEPTION. The usage of this service context is defined
* by language mappings. <br/> <br/>
* by language mappings. <br> <br>
*
* IDL/Java: ptc/02-01-22: 1.15.2:
* When a System Exception is marshaled, its GIOP Reply message shall

View File

@ -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.
*
* This code is free software; you can redistribute it and/or modify it
@ -580,7 +580,8 @@ module PortableInterceptor {
* to access it will result in a <code>BAD_INV_ORDER</code> being thrown
* with a standard minor code of 14.
*
* <table border=1 summary="Shows the validity of each attribute or operation">
* <table class="plain">
* <caption style="display:none">Shows the validity of each attribute or operation</caption>
* <thead>
* <tr>
* <th>&nbsp;</th>
@ -597,42 +598,42 @@ module PortableInterceptor {
* <td id="ri" colspan=6><i>Inherited from RequestInfo:</i></td>
* </tr>
*
* <tr><th id="req_id"><p align="left">request_id</p></th>
* <tr><th id="req_id"><p style="text-align:left">request_id</p></th>
* <td headers="ri req_id send_req">yes</td>
* <td headers="ri req_id send_poll">yes</td>
* <td headers="ri req_id rec_reply">yes</td>
* <td headers="ri req_id rec_ex">yes</td>
* <td headers="ri req_id rec_oth">yes</td></tr>
*
* <tr><th id="op"><p align="left">operation</p></th>
* <tr><th id="op"><p style="text-align:left">operation</p></th>
* <td headers="ri op send_req">yes</td>
* <td headers="ri op send_poll">yes</td>
* <td headers="ri op rec_reply">yes</td>
* <td headers="ri op rec_ex">yes</td>
* <td headers="ri op rec_oth">yes</td></tr>
*
* <tr><th id="arg"><p align="left">arguments</p></th>
* <tr><th id="arg"><p style="text-align:left">arguments</p></th>
* <td headers="ri arg send_req">yes<sub>1</sub></td>
* <td headers="ri arg send_poll">no </td>
* <td headers="ri arg rec_reply">yes</td>
* <td headers="ri arg rec_ex">no </td>
* <td headers="ri arg rec_oth">no </td></tr>
*
* <tr><th id="exc"><p align="left">exceptions</p></th>
* <tr><th id="exc"><p style="text-align:left">exceptions</p></th>
* <td headers="ri exc send_req">yes</td>
* <td headers="ri exc send_poll">no </td>
* <td headers="ri exc rec_reply">yes</td>
* <td headers="ri exc rec_ex">yes</td>
* <td headers="ri exc rec_oth">yes</td></tr>
*
* <tr><th id="con"><p align="left">contexts</p></th>
* <tr><th id="con"><p style="text-align:left">contexts</p></th>
* <td headers="ri con send_req">yes</td>
* <td headers="ri con send_poll">no </td>
* <td headers="ri con rec_reply">yes</td>
* <td headers="ri con rec_ex">yes</td>
* <td headers="ri con rec_oth">yes</td></tr>
*
* <tr><th id="op_con"><p align="left">operation_context</p></th>
* <tr><th id="op_con"><p style="text-align:left">operation_context</p></th>
* <td headers="ri op_con send_req">yes</td>
* <td headers="ri op_con send_poll">no </td>
* <td headers="ri op_con rec_reply">yes</td>
@ -640,7 +641,7 @@ module PortableInterceptor {
* <td headers="ri op_con rec_oth">yes</td>
* </tr>
*
* <tr><th id="result"><p align="left">result</p></th>
* <tr><th id="result"><p style="text-align:left">result</p></th>
* <td headers="ri result send_req">no </td>
* <td headers="ri result send_poll">no </td>
* <td headers="ri result rec_reply">yes</td>
@ -648,14 +649,14 @@ module PortableInterceptor {
* <td headers="ri result rec_oth">no </td>
* </tr>
*
* <tr><th id="res_exp"><p align="left">response_expected</p></th>
* <tr><th id="res_exp"><p style="text-align:left">response_expected</p></th>
* <td headers="ri res_exp send_req">yes</td>
* <td headers="ri res_exp send_poll">yes</td>
* <td headers="ri res_exp rec_reply">yes</td>
* <td headers="ri res_exp rec_ex">yes</td>
* <td headers="ri res_exp rec_oth">yes</td></tr>
*
* <tr><th id="sync_sco"><p align="left">sync_scope</p></th>
* <tr><th id="sync_sco"><p style="text-align:left">sync_scope</p></th>
* <td headers="ri sync_sco send_req">yes</td>
* <td headers="ri sync_sco send_poll">no </td>
* <td headers="ri sync_sco rec_reply">yes</td>
@ -663,14 +664,14 @@ module PortableInterceptor {
* <td headers="ri sync_sco rec_oth">yes</td>
* </tr>
*
* <tr><th id="rep_stat"><p align="left">reply_status</p></th>
* <tr><th id="rep_stat"><p style="text-align:left">reply_status</p></th>
* <td headers="ri rep_stat send_req">no </td>
* <td headers="ri rep_stat send_poll">no </td>
* <td headers="ri rep_stat rec_reply">yes</td>
* <td headers="ri rep_stat rec_ex">yes</td>
* <td headers="ri rep_stat rec_oth">yes</td></tr>
*
* <tr><th id="for_ref"><p align="left">forward_reference</p></th>
* <tr><th id="for_ref"><p style="text-align:left">forward_reference</p></th>
* <td headers="ri for_ref send_req">no </td>
* <td headers="ri for_ref send_poll">no </td>
* <td headers="ri for_ref rec_reply">no </td>
@ -678,21 +679,21 @@ module PortableInterceptor {
* <td headers="ri for_ref rec_oth">yes<sub>2</sub>
* </td></tr>
*
* <tr><th id="get_slot"><p align="left">get_slot</p></th>
* <tr><th id="get_slot"><p style="text-align:left">get_slot</p></th>
* <td headers="ri get_slot send_req">yes</td>
* <td headers="ri get_slot send_poll">yes</td>
* <td headers="ri get_slot rec_reply">yes</td>
* <td headers="ri get_slot rec_ex">yes</td>
* <td headers="ri get_slot rec_oth">yes</td></tr>
*
* <tr><th id="grsc"><p align="left">get_request_service_context</p></th>
* <tr><th id="grsc"><p style="text-align:left">get_request_service_context</p></th>
* <td headers="ri grsc send_req">yes</td>
* <td headers="ri grsc send_poll">no </td>
* <td headers="ri grsc rec_reply">yes</td>
* <td headers="ri grsc rec_ex">yes</td>
* <td headers="ri grsc rec_oth">yes</td></tr>
*
* <tr><th id="gpsc"><p align="left">get_reply_service_context</p></th>
* <tr><th id="gpsc"><p style="text-align:left">get_reply_service_context</p></th>
* <td headers="ri gpsc send_req">no </td>
* <td headers="ri gpsc send_poll">no </td>
* <td headers="ri gpsc rec_reply">yes</td>
@ -704,14 +705,14 @@ module PortableInterceptor {
* <td id="cri" colspan=6><i>ClientRequestInfo-specific:</i></td>
* </tr>
*
* <tr><th id="target"><p align="left">target</p></th>
* <tr><th id="target"><p style="text-align:left">target</p></th>
* <td headers="cri target send_req">yes</td>
* <td headers="cri target send_poll">yes</td>
* <td headers="cri target rec_reply">yes</td>
* <td headers="cri target rec_ex">yes</td>
* <td headers="cri target rec_oth">yes</td></tr>
*
* <tr><th id="eftarget"><p align="left">effective_target</p></th>
* <tr><th id="eftarget"><p style="text-align:left">effective_target</p></th>
* <td headers="cri eftarget send_req">yes</td>
* <td headers="cri eftarget send_poll">yes</td>
* <td headers="cri eftarget rec_reply">yes</td>
@ -719,49 +720,49 @@ module PortableInterceptor {
* <td headers="cri eftarget rec_oth">yes</td>
* </tr>
*
* <tr><th id="efprof"><p align="left">effective_profile</p></th>
* <tr><th id="efprof"><p style="text-align:left">effective_profile</p></th>
* <td headers="cri efprof send_req">yes</td>
* <td headers="cri efprof send_poll">yes</td>
* <td headers="cri efprof rec_reply">yes</td>
* <td headers="cri efprof rec_ex">yes</td>
* <td headers="cri efprof rec_oth">yes</td></tr>
*
* <tr><th id="rxp"><p align="left">received_exception</p></th>
* <tr><th id="rxp"><p style="text-align:left">received_exception</p></th>
* <td headers="cri rxp send_req">no </td>
* <td headers="cri rxp send_poll">no </td>
* <td headers="cri rxp rec_reply">no </td>
* <td headers="cri rxp rec_ex">yes</td>
* <td headers="cri rxp rec_oth">no </td></tr>
*
* <tr><th id="rei"><p align="left">received_exception_id</p></th>
* <tr><th id="rei"><p style="text-align:left">received_exception_id</p></th>
* <td headers="cri rei send_req">no </td>
* <td headers="cri rei send_poll">no </td>
* <td headers="cri rei rec_reply">no </td>
* <td headers="cri rei rec_ex">yes</td>
* <td headers="cri rei rec_oth">no </td></tr>
*
* <tr><th id="gec"><p align="left">get_effective_component</p></th>
* <tr><th id="gec"><p style="text-align:left">get_effective_component</p></th>
* <td headers="cri gec send_req">yes</td>
* <td headers="cri gec send_poll">no </td>
* <td headers="cri gec rec_reply">yes</td>
* <td headers="cri gec rec_ex">yes</td>
* <td headers="cri gec rec_oth">yes</td></tr>
*
* <tr><th id="gecs"><p align="left">get_effective_components</p></th>
* <tr><th id="gecs"><p style="text-align:left">get_effective_components</p></th>
* <td headers="cri gecs send_req">yes</td>
* <td headers="cri gecs send_poll">no </td>
* <td headers="cri gecs rec_reply">yes</td>
* <td headers="cri gecs rec_ex">yes</td>
* <td headers="cri gecs rec_oth">yes</td></tr>
*
* <tr><th id="grpcy"><p align="left">get_request_policy</p></th>
* <tr><th id="grpcy"><p style="text-align:left">get_request_policy</p></th>
* <td headers="cri grpcy send_req">yes</td>
* <td headers="cri grpcy send_poll">no </td>
* <td headers="cri grpcy rec_reply">yes</td>
* <td headers="cri grpcy rec_ex">yes</td>
* <td headers="cri grpcy rec_oth">yes</td></tr>
*
* <tr><th id="arsc"><p align="left">add_request_service_context</p></th>
* <tr><th id="arsc"><p style="text-align:left">add_request_service_context</p></th>
* <td headers="cri arsc send_req">yes</td>
* <td headers="cri arsc send_poll">no </td>
* <td headers="cri arsc rec_reply">no </td>
@ -935,7 +936,8 @@ module PortableInterceptor {
* standard minor code of 14.
*
*
* <table border=1 summary="Shows the validity of each attribute or operation">
* <table class="plain">
* <caption style="display:none">Shows the validity of each attribute or operation</caption>
* <thead>
* <tr>
* <th>&nbsp;</th>
@ -953,21 +955,21 @@ module PortableInterceptor {
* <td id="ri" colspan=6><i>Inherited from RequestInfo:</i></td>
* </tr>
*
* <tr><th id="req_id"><p align="left">request_id</p></th>
* <tr><th id="req_id"><p style="text-align:left">request_id</p></th>
* <td headers="ri req_id rec_req_ser_con">yes</td>
* <td headers="ri req_id rec_req">yes</td>
* <td headers="ri req_id send_rep">yes</td>
* <td headers="ri req_id send_exc">yes</td>
* <td headers="ri req_id send_oth">yes</td></tr>
*
* <tr><th id="op"><p align="left">operation</p></th>
* <tr><th id="op"><p style="text-align:left">operation</p></th>
* <td headers="ri op rec_req_ser_con">yes</td>
* <td headers="ri op rec_req">yes</td>
* <td headers="ri op send_rep">yes</td>
* <td headers="ri op send_exc">yes</td>
* <td headers="ri op send_oth">yes</td></tr>
*
* <tr><th id="args"><p align="left">arguments</p></th>
* <tr><th id="args"><p style="text-align:left">arguments</p></th>
* <td headers="ri args rec_req_ser_con">no </td>
* <td headers="ri args rec_req">yes<sub>1</sub></td>
* <td headers="ri args send_rep">yes</td>
@ -975,21 +977,21 @@ module PortableInterceptor {
* <td headers="ri args send_oth">no<sub>2</sub>
* </td></tr>
*
* <tr><th id="exps"><p align="left">exceptions</p></th>
* <tr><th id="exps"><p style="text-align:left">exceptions</p></th>
* <td headers="ri exps rec_req_ser_con">no </td>
* <td headers="ri exps rec_req">yes</td>
* <td headers="ri exps send_rep">yes</td>
* <td headers="ri exps send_exc">yes</td>
* <td headers="ri exps send_oth">yes</td></tr>
*
* <tr><th id="contexts"><p align="left">contexts</p></th>
* <tr><th id="contexts"><p style="text-align:left">contexts</p></th>
* <td headers="ri contexts rec_req_ser_con">no </td>
* <td headers="ri contexts rec_req">yes</td>
* <td headers="ri contexts send_rep">yes</td>
* <td headers="ri contexts send_exc">yes</td>
* <td headers="ri contexts send_oth">yes</td></tr>
*
* <tr><th id="op_con"><p align="left">operation_context</p></th>
* <tr><th id="op_con"><p style="text-align:left">operation_context</p></th>
* <td headers="ri op_con rec_req_ser_con">no </td>
* <td headers="ri op_con rec_req">yes</td>
* <td headers="ri op_con send_rep">yes</td>
@ -997,7 +999,7 @@ module PortableInterceptor {
* <td headers="ri op_con send_oth">no </td>
* </tr>
*
* <tr><th id="result"><p align="left">result</p></th>
* <tr><th id="result"><p style="text-align:left">result</p></th>
* <td headers="ri result rec_req_ser_con">no </td>
* <td headers="ri result rec_req">no </td>
* <td headers="ri result send_rep">yes</td>
@ -1005,14 +1007,14 @@ module PortableInterceptor {
* <td headers="ri result send_oth">no </td>
* </tr>
*
* <tr><th id="res_ex"><p align="left">response_expected</p></th>
* <tr><th id="res_ex"><p style="text-align:left">response_expected</p></th>
* <td headers="ri res_ex rec_req_ser_con">yes</td>
* <td headers="ri res_ex rec_req">yes</td>
* <td headers="ri res_ex send_rep">yes</td>
* <td headers="ri res_ex send_exc">yes</td>
* <td headers="ri res_ex send_oth">yes</td></tr>
*
* <tr><th id="syn_scp"><p align="left">sync_scope</p></th>
* <tr><th id="syn_scp"><p style="text-align:left">sync_scope</p></th>
* <td headers="ri syn_scp rec_req_ser_con">yes</td>
* <td headers="ri syn_scp rec_req">yes</td>
* <td headers="ri syn_scp send_rep">yes</td>

View File

@ -1,9 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!doctype html>
<html>
<head>
<!--
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.
This code is free software; you can redistribute it and/or modify it
@ -29,7 +29,7 @@ questions.
-->
</head>
<body bgcolor="white">
<body>
Provides a mechanism to register ORB hooks through which ORB services
can intercept the normal flow of execution of the ORB.
@ -52,7 +52,7 @@ See the javadocs for class <code>
{@link org.omg.PortableInterceptor.ORBInitializer ORBInitializer}</code>
for how to go about registering interceptors.
<a name="unimpl"></a>
<a id="unimpl"></a>
<h2>Known limitations / unimplemented methods in package
<code>org.omg.PortableInterceptor</code></h2>

View File

@ -1,9 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!doctype html>
<html>
<head>
<!--
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.
This code is free software; you can redistribute it and/or modify it
@ -30,7 +30,7 @@
-->
</head>
<body bgcolor="white">
<body>
Provides classes and interfaces for making the server side of your applications
portable across multivendor ORBs.
@ -160,7 +160,7 @@ follows exactly the same pattern as the other holder classes for basic types.
<A HREF="../../../../technotes/guides/idl/index.html">Java IDL home page</A>.
<H2>Example Code</H2>
<a name="sampleserver"></a>
<a id="sampleserver"></a>
<H3>Example Server Code</H3>
<PRE>
import javax.naming.InitialContext;

View File

@ -579,3 +579,6 @@ c92c6416ca03b1464d5ed99cf6201e52b5ba0a70 jdk-9+165
1ca7ed1b17b5776930d641d1379834f3140a74e4 jdk-9+167
fbb9c802649585d19f6d7e81b4a519d44806225a jdk-9+168
16d692be099c5c38eb48cc9aca78b0c900910d5b jdk-9+169
38a240fd58a287acb1963920b92ed4d9c2fd39e3 jdk-9+170
9d4746eca95aec3e5a344bf2520745dcc1d17eed jdk-10+7
f5ded0cf954c770deeecb80f2ba1ba6a05cd979b jdk-10+8

View File

@ -1,22 +0,0 @@
Copyright (c) %YEARS%, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation. Oracle designates this
particular file as subject to the "Classpath" exception as provided
by Oracle in the LICENSE file that accompanied this code.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).
You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any
questions.

View File

@ -1,20 +0,0 @@
Copyright (c) %YEARS%, 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.

View File

@ -1347,6 +1347,16 @@ void LIRGenerator::volatile_field_store(LIR_Opr value, LIR_Address* address,
void LIRGenerator::volatile_field_load(LIR_Address* address, LIR_Opr result,
CodeEmitInfo* info) {
// 8179954: We need to make sure that the code generated for
// volatile accesses forms a sequentially-consistent set of
// operations when combined with STLR and LDAR. Without a leading
// membar it's possible for a simple Dekker test to fail if loads
// use LD;DMB but stores use STLR. This can happen if C2 compiles
// the stores in one method and C1 compiles the loads in another.
if (! UseBarriersForVolatile) {
__ membar();
}
__ volatile_load_mem_reg(address, result, info);
}

View File

@ -2389,17 +2389,31 @@ void TemplateTable::getfield_or_static(int byte_no, bool is_static, RewriteContr
const Register obj = r4;
const Register off = r19;
const Register flags = r0;
const Register raw_flags = r6;
const Register bc = r4; // uses same reg as obj, so don't mix them
resolve_cache_and_index(byte_no, cache, index, sizeof(u2));
jvmti_post_field_access(cache, index, is_static, false);
load_field_cp_cache_entry(obj, cache, index, off, flags, is_static);
load_field_cp_cache_entry(obj, cache, index, off, raw_flags, is_static);
if (!is_static) {
// obj is on the stack
pop_and_check_object(obj);
}
// 8179954: We need to make sure that the code generated for
// volatile accesses forms a sequentially-consistent set of
// operations when combined with STLR and LDAR. Without a leading
// membar it's possible for a simple Dekker test to fail if loads
// use LDR;DMB but stores use STLR. This can happen if C2 compiles
// the stores in one method and we interpret the loads in another.
if (! UseBarriersForVolatile) {
Label notVolatile;
__ tbz(raw_flags, ConstantPoolCacheEntry::is_volatile_shift, notVolatile);
__ membar(MacroAssembler::AnyAny);
__ bind(notVolatile);
}
const Address field(obj, off);
Label Done, notByte, notBool, notInt, notShort, notChar,
@ -2407,7 +2421,8 @@ void TemplateTable::getfield_or_static(int byte_no, bool is_static, RewriteContr
// x86 uses a shift and mask or wings it with a shift plus assert
// the mask is not needed. aarch64 just uses bitfield extract
__ ubfxw(flags, flags, ConstantPoolCacheEntry::tos_state_shift, ConstantPoolCacheEntry::tos_state_bits);
__ ubfxw(flags, raw_flags, ConstantPoolCacheEntry::tos_state_shift,
ConstantPoolCacheEntry::tos_state_bits);
assert(btos == 0, "change code, btos != 0");
__ cbnz(flags, notByte);
@ -2529,9 +2544,11 @@ void TemplateTable::getfield_or_static(int byte_no, bool is_static, RewriteContr
#endif
__ bind(Done);
// It's really not worth bothering to check whether this field
// really is volatile in the slow case.
Label notVolatile;
__ tbz(raw_flags, ConstantPoolCacheEntry::is_volatile_shift, notVolatile);
__ membar(MacroAssembler::LoadLoad | MacroAssembler::LoadStore);
__ bind(notVolatile);
}
@ -2979,6 +2996,19 @@ void TemplateTable::fast_accessfield(TosState state)
__ null_check(r0);
const Address field(r0, r1);
// 8179954: We need to make sure that the code generated for
// volatile accesses forms a sequentially-consistent set of
// operations when combined with STLR and LDAR. Without a leading
// membar it's possible for a simple Dekker test to fail if loads
// use LDR;DMB but stores use STLR. This can happen if C2 compiles
// the stores in one method and we interpret the loads in another.
if (! UseBarriersForVolatile) {
Label notVolatile;
__ tbz(r3, ConstantPoolCacheEntry::is_volatile_shift, notVolatile);
__ membar(MacroAssembler::AnyAny);
__ bind(notVolatile);
}
// access field
switch (bytecode()) {
case Bytecodes::_fast_agetfield:
@ -3027,6 +3057,22 @@ void TemplateTable::fast_xaccess(TosState state)
__ get_cache_and_index_at_bcp(r2, r3, 2);
__ ldr(r1, Address(r2, in_bytes(ConstantPoolCache::base_offset() +
ConstantPoolCacheEntry::f2_offset())));
// 8179954: We need to make sure that the code generated for
// volatile accesses forms a sequentially-consistent set of
// operations when combined with STLR and LDAR. Without a leading
// membar it's possible for a simple Dekker test to fail if loads
// use LDR;DMB but stores use STLR. This can happen if C2 compiles
// the stores in one method and we interpret the loads in another.
if (! UseBarriersForVolatile) {
Label notVolatile;
__ ldrw(r3, Address(r2, in_bytes(ConstantPoolCache::base_offset() +
ConstantPoolCacheEntry::flags_offset())));
__ tbz(r3, ConstantPoolCacheEntry::is_volatile_shift, notVolatile);
__ membar(MacroAssembler::AnyAny);
__ bind(notVolatile);
}
// make sure exception is reported in correct bcp range (getfield is
// next instruction)
__ increment(rbcp);

View File

@ -314,7 +314,11 @@ oop StringTable::intern(const char* utf8_string, TRAPS) {
}
void StringTable::unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int* processed, int* removed) {
buckets_unlink_or_oops_do(is_alive, f, 0, the_table()->table_size(), processed, removed);
BucketUnlinkContext context;
buckets_unlink_or_oops_do(is_alive, f, 0, the_table()->table_size(), &context);
_the_table->bulk_free_entries(&context);
*processed = context._num_processed;
*removed = context._num_removed;
}
void StringTable::possibly_parallel_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int* processed, int* removed) {
@ -323,6 +327,7 @@ void StringTable::possibly_parallel_unlink_or_oops_do(BoolObjectClosure* is_aliv
assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
const int limit = the_table()->table_size();
BucketUnlinkContext context;
for (;;) {
// Grab next set of buckets to scan
int start_idx = Atomic::add(ClaimChunkSize, &_parallel_claimed_idx) - ClaimChunkSize;
@ -332,8 +337,11 @@ void StringTable::possibly_parallel_unlink_or_oops_do(BoolObjectClosure* is_aliv
}
int end_idx = MIN2(limit, start_idx + ClaimChunkSize);
buckets_unlink_or_oops_do(is_alive, f, start_idx, end_idx, processed, removed);
buckets_unlink_or_oops_do(is_alive, f, start_idx, end_idx, &context);
}
_the_table->bulk_free_entries(&context);
*processed = context._num_processed;
*removed = context._num_removed;
}
void StringTable::buckets_oops_do(OopClosure* f, int start_idx, int end_idx) {
@ -359,7 +367,7 @@ void StringTable::buckets_oops_do(OopClosure* f, int start_idx, int end_idx) {
}
}
void StringTable::buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, int* processed, int* removed) {
void StringTable::buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, BucketUnlinkContext* context) {
const int limit = the_table()->table_size();
assert(0 <= start_idx && start_idx <= limit,
@ -383,10 +391,9 @@ void StringTable::buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClos
p = entry->next_addr();
} else {
*p = entry->next();
the_table()->free_entry(entry);
(*removed)++;
context->free_entry(entry);
}
(*processed)++;
context->_num_processed++;
entry = *p;
}
}

View File

@ -61,9 +61,13 @@ private:
// Apply the give oop closure to the entries to the buckets
// in the range [start_idx, end_idx).
static void buckets_oops_do(OopClosure* f, int start_idx, int end_idx);
typedef StringTable::BucketUnlinkContext BucketUnlinkContext;
// Unlink or apply the give oop closure to the entries to the buckets
// in the range [start_idx, end_idx).
static void buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, int* processed, int* removed);
// in the range [start_idx, end_idx). Unlinked bucket entries are collected in the given
// context to be freed later.
// This allows multiple threads to work on the table at once.
static void buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, BucketUnlinkContext* context);
// Hashing algorithm, used as the hash value used by the
// StringTable for bucket selection and comparison (stored in the

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 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
@ -98,7 +98,7 @@ int SymbolTable::_symbols_removed = 0;
int SymbolTable::_symbols_counted = 0;
volatile int SymbolTable::_parallel_claimed_idx = 0;
void SymbolTable::buckets_unlink(int start_idx, int end_idx, int* processed, int* removed) {
void SymbolTable::buckets_unlink(int start_idx, int end_idx, BucketUnlinkContext* context) {
for (int i = start_idx; i < end_idx; ++i) {
HashtableEntry<Symbol*, mtSymbol>** p = the_table()->bucket_addr(i);
HashtableEntry<Symbol*, mtSymbol>* entry = the_table()->bucket(i);
@ -111,15 +111,14 @@ void SymbolTable::buckets_unlink(int start_idx, int end_idx, int* processed, int
break;
}
Symbol* s = entry->literal();
(*processed)++;
context->_num_processed++;
assert(s != NULL, "just checking");
// If reference count is zero, remove.
if (s->refcount() == 0) {
assert(!entry->is_shared(), "shared entries should be kept live");
delete s;
(*removed)++;
*p = entry->next();
the_table()->free_entry(entry);
context->free_entry(entry);
} else {
p = entry->next_addr();
}
@ -132,17 +131,20 @@ void SymbolTable::buckets_unlink(int start_idx, int end_idx, int* processed, int
// Remove unreferenced symbols from the symbol table
// This is done late during GC.
void SymbolTable::unlink(int* processed, int* removed) {
size_t memory_total = 0;
buckets_unlink(0, the_table()->table_size(), processed, removed);
_symbols_removed += *removed;
_symbols_counted += *processed;
BucketUnlinkContext context;
buckets_unlink(0, the_table()->table_size(), &context);
_the_table->bulk_free_entries(&context);
*processed = context._num_processed;
*removed = context._num_removed;
_symbols_removed = context._num_removed;
_symbols_counted = context._num_processed;
}
void SymbolTable::possibly_parallel_unlink(int* processed, int* removed) {
const int limit = the_table()->table_size();
size_t memory_total = 0;
BucketUnlinkContext context;
for (;;) {
// Grab next set of buckets to scan
int start_idx = Atomic::add(ClaimChunkSize, &_parallel_claimed_idx) - ClaimChunkSize;
@ -152,10 +154,15 @@ void SymbolTable::possibly_parallel_unlink(int* processed, int* removed) {
}
int end_idx = MIN2(limit, start_idx + ClaimChunkSize);
buckets_unlink(start_idx, end_idx, processed, removed);
buckets_unlink(start_idx, end_idx, &context);
}
Atomic::add(*processed, &_symbols_counted);
Atomic::add(*removed, &_symbols_removed);
_the_table->bulk_free_entries(&context);
*processed = context._num_processed;
*removed = context._num_removed;
Atomic::add(context._num_processed, &_symbols_counted);
Atomic::add(context._num_removed, &_symbols_removed);
}
// Create a new table and using alternate hash code, populate the new table

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 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
@ -154,8 +154,11 @@ private:
static volatile int _parallel_claimed_idx;
// Release any dead symbols
static void buckets_unlink(int start_idx, int end_idx, int* processed, int* removed);
typedef SymbolTable::BucketUnlinkContext BucketUnlinkContext;
// Release any dead symbols. Unlinked bucket entries are collected in the given
// context to be freed later.
// This allows multiple threads to work on the table at once.
static void buckets_unlink(int start_idx, int end_idx, BucketUnlinkContext* context);
public:
enum {
symbol_alloc_batch_size = 8,

View File

@ -675,7 +675,7 @@ typedef RehashableHashtable<Symbol*, mtSymbol> RehashableSymbolHashtable;
\
nonstatic_field(BasicHashtable<mtInternal>, _table_size, int) \
nonstatic_field(BasicHashtable<mtInternal>, _buckets, HashtableBucket<mtInternal>*) \
nonstatic_field(BasicHashtable<mtInternal>, _free_list, BasicHashtableEntry<mtInternal>*) \
volatile_nonstatic_field(BasicHashtable<mtInternal>, _free_list, BasicHashtableEntry<mtInternal>*) \
nonstatic_field(BasicHashtable<mtInternal>, _first_free_entry, char*) \
nonstatic_field(BasicHashtable<mtInternal>, _end_block, char*) \
nonstatic_field(BasicHashtable<mtInternal>, _entry_size, int) \

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -173,6 +173,35 @@ template <MEMFLAGS F> void BasicHashtable<F>::reverse() {
}
}
template <MEMFLAGS F> void BasicHashtable<F>::BucketUnlinkContext::free_entry(BasicHashtableEntry<F>* entry) {
entry->set_next(_removed_head);
_removed_head = entry;
if (_removed_tail == NULL) {
_removed_tail = entry;
}
_num_removed++;
}
template <MEMFLAGS F> void BasicHashtable<F>::bulk_free_entries(BucketUnlinkContext* context) {
if (context->_num_removed == 0) {
assert(context->_removed_head == NULL && context->_removed_tail == NULL,
"Zero entries in the unlink context, but elements linked from " PTR_FORMAT " to " PTR_FORMAT,
p2i(context->_removed_head), p2i(context->_removed_tail));
return;
}
// MT-safe add of the list of BasicHashTableEntrys from the context to the free list.
BasicHashtableEntry<F>* current = _free_list;
while (true) {
context->_removed_tail->set_next(current);
BasicHashtableEntry<F>* old = (BasicHashtableEntry<F>*)Atomic::cmpxchg_ptr(context->_removed_head, &_free_list, current);
if (old == current) {
break;
}
current = old;
}
Atomic::add(-context->_num_removed, &_number_of_entries);
}
// Copy the table to the shared space.

View File

@ -173,11 +173,11 @@ private:
// Instance variables
int _table_size;
HashtableBucket<F>* _buckets;
BasicHashtableEntry<F>* _free_list;
BasicHashtableEntry<F>* volatile _free_list;
char* _first_free_entry;
char* _end_block;
int _entry_size;
int _number_of_entries;
volatile int _number_of_entries;
protected:
@ -225,6 +225,24 @@ protected:
// Free the buckets in this hashtable
void free_buckets();
// Helper data structure containing context for the bucket entry unlink process,
// storing the unlinked buckets in a linked list.
// Also avoids the need to pass around these four members as parameters everywhere.
struct BucketUnlinkContext {
int _num_processed;
int _num_removed;
// Head and tail pointers for the linked list of removed entries.
BasicHashtableEntry<F>* _removed_head;
BasicHashtableEntry<F>* _removed_tail;
BucketUnlinkContext() : _num_processed(0), _num_removed(0), _removed_head(NULL), _removed_tail(NULL) {
}
void free_entry(BasicHashtableEntry<F>* entry);
};
// Add of bucket entries linked together in the given context to the global free list. This method
// is mt-safe wrt. to other calls of this method.
void bulk_free_entries(BucketUnlinkContext* context);
public:
int table_size() { return _table_size; }
void set_entry(int index, BasicHashtableEntry<F>* entry);

View File

@ -24,7 +24,7 @@
import static jdk.test.lib.Asserts.assertEQ;
import static jdk.test.lib.Asserts.assertFalse;
import static jdk.test.lib.Asserts.assertTrue;
import jdk.test.lib.DynamicVMOption;
import jdk.test.lib.management.DynamicVMOption;
/**
* @test TestDynMaxHeapFreeRatio

View File

@ -38,7 +38,7 @@
import static jdk.test.lib.Asserts.assertEQ;
import static jdk.test.lib.Asserts.assertFalse;
import static jdk.test.lib.Asserts.assertTrue;
import jdk.test.lib.DynamicVMOption;
import jdk.test.lib.management.DynamicVMOption;
public class TestDynMinHeapFreeRatio {

View File

@ -26,7 +26,7 @@ import java.util.List;
import java.util.ArrayList;
import jdk.test.lib.ByteCodeLoader;
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.test.lib.Platform;
import sun.management.ManagementFactoryHelper;

View File

@ -31,7 +31,7 @@
* @library /test/lib /
* @run main/othervm -XX:+UseAdaptiveSizePolicyWithSystemGC -XX:+UseParallelGC -XX:MinHeapFreeRatio=0 -XX:MaxHeapFreeRatio=100 -Xmx1g -verbose:gc TestDynShrinkHeap
*/
import jdk.test.lib.DynamicVMOption;
import jdk.test.lib.management.DynamicVMOption;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryUsage;
import java.util.ArrayList;

View File

@ -31,7 +31,7 @@
* @run main BootstrapRedefine
*/
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.test.lib.process.ProcessTools;
import jdk.test.lib.process.OutputAnalyzer;

View File

@ -34,7 +34,7 @@
*/
import jdk.test.lib.Asserts;
import jdk.test.lib.DynamicVMOption;
import jdk.test.lib.management.DynamicVMOption;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;
import jdk.test.lib.dcmd.PidJcmdExecutor;

View File

@ -29,7 +29,7 @@ import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import jdk.test.lib.DynamicVMOption;
import jdk.test.lib.management.DynamicVMOption;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;
import jdk.test.lib.dcmd.CommandExecutor;

View File

@ -51,7 +51,7 @@ import java.util.List;
import java.util.Properties;
import java.util.Set;
import jdk.test.lib.Asserts;
import jdk.test.lib.DynamicVMOption;
import jdk.test.lib.management.DynamicVMOption;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;

View File

@ -34,15 +34,14 @@
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.lang.NoSuchFieldException;
import java.lang.NoSuchMethodException;
import java.lang.RuntimeException;
import java.lang.instrument.ClassDefinition;
import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.IllegalClassFormatException;
import java.lang.instrument.Instrumentation;
import java.security.ProtectionDomain;
import jdk.test.lib.*;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
public class ModifyAnonymous {

View File

@ -32,8 +32,8 @@
*/
import java.security.ProtectionDomain;
import java.io.InputStream;
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.internal.misc.Unsafe;
import static jdk.test.lib.Asserts.*;

View File

@ -31,12 +31,9 @@
* @run main NestedUnsafe
*/
import java.security.ProtectionDomain;
import java.io.InputStream;
import java.lang.*;
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.internal.misc.Unsafe;
import static jdk.test.lib.Asserts.*;
// package p;

View File

@ -34,11 +34,10 @@
package p;
import java.security.ProtectionDomain;
import java.io.InputStream;
import java.lang.*;
import jdk.test.lib.*;
import jdk.internal.misc.Unsafe;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
// Test that an anonymous class in package 'p' cannot define its own anonymous class

View File

@ -34,11 +34,10 @@
package p;
import java.security.ProtectionDomain;
import java.io.InputStream;
import java.lang.*;
import jdk.test.lib.*;
import jdk.internal.misc.Unsafe;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
// Test that an anonymous class that gets put in its host's package cannot define

View File

@ -33,7 +33,7 @@
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.test.lib.process.ProcessTools;
import jdk.test.lib.process.OutputAnalyzer;

View File

@ -38,8 +38,7 @@
import jdk.test.lib.process.ProcessTools;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.InMemoryJavaCompiler;
import java.io.File;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
public class ModuleStress {

View File

@ -30,10 +30,9 @@
* @run main PatchModule2Dirs
*/
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;
import java.io.File;
public class PatchModule2Dirs {

View File

@ -31,8 +31,7 @@
* @run main PatchModuleCDS
*/
import java.io.File;
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;

View File

@ -33,7 +33,7 @@
import java.nio.file.Files;
import java.nio.file.Paths;
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;

View File

@ -31,7 +31,7 @@
* @run main PatchModuleJavaBase
*/
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;

View File

@ -31,7 +31,7 @@
* @run main PatchModuleTest
*/
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;

View File

@ -31,7 +31,7 @@
* @run main PatchModuleTestJar
*/
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;

View File

@ -32,8 +32,8 @@
*/
import java.io.File;
import java.nio.file.Files;
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;

View File

@ -32,8 +32,7 @@
* @run main PatchModuleTraceCL
*/
import java.io.File;
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;

View File

@ -36,7 +36,7 @@ import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;

View File

@ -31,7 +31,7 @@
* @run main/othervm XbootcpNoVisibility
*/
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.test.lib.process.ProcessTools;
import jdk.test.lib.process.OutputAnalyzer;

View File

@ -36,7 +36,7 @@ import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import jdk.test.lib.InMemoryJavaCompiler;
import jdk.test.lib.compiler.InMemoryJavaCompiler;
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;

View File

@ -419,3 +419,6 @@ d1436b2945383cef15edbdba9bb41ef1656c987b jdk-10+5
7828aedcb525df40b7c8122bcc3f997c75ebaf7f jdk-9+167
e78da9db6299b3fcba49300d52e2359e82fdd218 jdk-9+168
177436a54ca13730ffc725a6e5dbfcd9486f3da3 jdk-9+169
ef9954f6896bb0b95ac62bf769f68b59a7a56ccd jdk-9+170
cbd65760a005766610583949b3b5c9ace92e74b3 jdk-10+7
f0adc10ed8316e6cf316e3208c5ecf6835d22bc4 jdk-10+8

View File

@ -291,9 +291,21 @@ endif
################################################################################
ifneq ($(filter images, $(MAKECMDGOALS)), )
$(eval $(call SetupCopyFiles, COPY_TO_TEST_IMAGE, \
SRC := $(SUPPORT_OUTPUTDIR)/demos/image, \
DEST := $(TEST_IMAGE_DIR)/jdk/demos, \
FILES := $(call DoubleDollar, $(call CacheFind, $(SUPPORT_OUTPUTDIR)/demos/image)), \
))
IMAGES_TARGETS := $(COPY_TO_TEST_IMAGE)
endif
################################################################################
# Hook to include the corresponding custom file, if present.
$(eval $(call IncludeCustomExtension, jdk, CompileDemos.gmk))
all: $(TARGETS)
images: $(IMAGES_TARGETS)
.PHONY: all

View File

@ -23,21 +23,33 @@
# questions.
#
default: all
include $(SPEC)
include MakeBase.gmk
include JavaCompilation.gmk
include SetupJavaCompilers.gmk
################################################################################
TOOLS_CLASSES_DIR := $(BUILDTOOLS_OUTPUTDIR)/tools_jigsaw_classes
$(eval $(call SetupJavaCompilation,BUILD_JIGSAW_TOOLS, \
SETUP := GENERATE_USINGJDKBYTECODE, \
SRC := $(JDK_TOPDIR)/make/src/classes, \
INCLUDES := build/tools/deps \
build/tools/docs \
build/tools/jigsaw, \
COPY := .properties .html, \
BIN := $(TOOLS_CLASSES_DIR), \
ADD_JAVAC_FLAGS := \
--add-modules jdk.jdeps \
--add-exports java.base/jdk.internal.module=ALL-UNNAMED \
--add-exports jdk.jdeps/com.sun.tools.jdeps=ALL-UNNAMED \
))
TARGETS += $(BUILD_JIGSAW_TOOLS)
################################################################################
all: $(TARGETS)

View File

@ -46,6 +46,7 @@ $(eval $(call SetupJavaCompilation,BUILD_TOOLS_JDK, \
SETUP := GENERATE_OLDBYTECODE, \
SRC := $(BUILD_TOOLS_SRC_DIRS), \
EXCLUDES := build/tools/deps \
build/tools/docs \
build/tools/jigsaw, \
BIN := $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes))

View File

@ -49,4 +49,7 @@ TOOL_ADD_PACKAGES_ATTRIBUTE := $(BUILD_JAVA) $(JAVA_FLAGS_SMALL) \
--add-exports java.base/jdk.internal.module=ALL-UNNAMED \
build.tools.jigsaw.AddPackagesAttribute
TOOL_GEN_DOCS_BUNDLE_PAGE := $(BUILD_JAVA) -esa -ea -cp $(TOOLS_CLASSES_DIR) \
build.tools.docs.GenDocsBundlePage
endif # _MODULE_TOOLS_GMK

View File

@ -0,0 +1,186 @@
/*
* 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package build.tools.docs;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.lang.module.ModuleFinder;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* Build tool to generate the docs bundle index page.
*/
public class GenDocsBundlePage {
private static String DOCS_BUNDLE_PAGE = "docs-bundle-page.html";
private static String MODULE_GROUPS_PROPS = "docs-module-groups.properties";
private static String USAGE =
"GenDocsBundlePage --output <file path> --title <title>" +
" [--template <template>]";
public static void main(String... args) throws IOException {
String title = null;
Path outputfile = null;
Path template = null;
for (int i=0; i < args.length; i++) {
String option = args[i];
if (option.equals("--output")) {
outputfile = Paths.get(getArgument(args, option, ++i));
} else if (option.equals("--title")) {
title = getArgument(args, option, ++i);
} else if (option.equals("--template")) {
template = Paths.get(getArgument(args, option, ++i));
} else if (option.startsWith("-")) {
throw new IllegalArgumentException("Invalid option: " + option);
}
}
if (outputfile == null) {
System.err.println("ERROR: must specify --output option");
System.exit(1);
}
if (title == null) {
System.err.println("ERROR: must specify --title option");
System.exit(1);
}
try (InputStream is = readTemplate(template);
BufferedReader reader = new BufferedReader(new InputStreamReader(is)))
{
new GenDocsBundlePage(title, outputfile).run(reader);
}
}
private static String getArgument(String[] args, String option, int index) {
if (index < args.length) {
return args[index];
}
throw new IllegalArgumentException("Argument must be specified for " + option);
}
private static InputStream readTemplate(Path template) throws IOException {
if (template != null) {
return Files.newInputStream(template);
} else {
return GenDocsBundlePage.class.getResourceAsStream(DOCS_BUNDLE_PAGE);
}
}
private static final String HEADER_TITLE = "@HEADER_TITLE@";
final Path outputfile;
final String title;
final Map<String, String> moduleGroups;
GenDocsBundlePage(String title, Path outputfile) throws IOException
{
this.outputfile = outputfile;
this.title = title;
this.moduleGroups = moduleGroups();
}
static Map<String, String> moduleGroups() throws IOException {
ModuleFinder finder = ModuleFinder.ofSystem();
Map<String, String> groups = new HashMap<>();
try (InputStream in = GenDocsBundlePage.class.getResourceAsStream(MODULE_GROUPS_PROPS)) {
Properties props = new Properties();
props.load(in);
for (String key: props.stringPropertyNames()) {
Set<String> mods = Stream.of(props.getProperty(key).split("\\s+"))
.filter(mn -> finder.find(mn).isPresent())
.map(String::trim)
.collect(Collectors.toSet());
// divide into 3 columns: Java SE, JDK, JavaFX
StringBuilder sb = new StringBuilder();
sb.append(mods.stream()
.filter(mn -> mn.startsWith("java."))
.sorted()
.map(GenDocsBundlePage::toHRef)
.collect(Collectors.joining("\n")));
sb.append("</td>\n<td>")
.append(mods.stream()
.filter(mn -> mn.startsWith("jdk."))
.sorted()
.map(GenDocsBundlePage::toHRef)
.collect(Collectors.joining("\n")));
sb.append("</td>\n<td>");
if (mods.stream().anyMatch(mn -> mn.startsWith("javafx."))) {
sb.append(mods.stream()
.filter(mn -> mn.startsWith("javafx."))
.sorted()
.map(GenDocsBundlePage::toHRef)
.collect(Collectors.joining("\n")));
}
String name = "@" + key.toUpperCase(Locale.ENGLISH) + "@";
groups.put(name, sb.toString());
}
}
return groups;
}
static String toHRef(String mn) {
return String.format("<a href=\"api/%s-summary.html\">%s</a><br>", mn, mn);
}
void run(BufferedReader reader) throws IOException {
if (Files.notExists(outputfile.getParent())) {
Files.createDirectories(outputfile.getParent());
}
try (BufferedWriter bw = Files.newBufferedWriter(outputfile, StandardCharsets.UTF_8);
PrintWriter writer = new PrintWriter(bw)) {
reader.lines().map(this::genOutputLine)
.forEach(writer::println);
}
}
String genOutputLine(String line) {
if (line.contains(HEADER_TITLE)) {
line = line.replace(HEADER_TITLE, title);
}
if (line.contains("@")) {
for (Map.Entry<String,String> e: moduleGroups.entrySet()) {
if (line.contains(e.getKey())) {
line = line.replace(e.getKey(), e.getValue());
}
}
}
return line;
}
}

View File

@ -0,0 +1,146 @@
<!--
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. Oracle designates this
particular file as subject to the "Classpath" exception as provided
by Oracle in the LICENSE file that accompanied this code.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).
You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any
questions.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html;" charset="utf-8">
<style type="text/css">
table {
border-collapse: collapse;
}
table {
border: 1px solid black;
}
th ,td {
border: 0px solid black;
}
thead th {
background-color: #DDD;
}
tbody > tr:nth-child(even) {
background-color: #EEE
}
tbody > tr:nth-child(odd) {
background-color: #FFF
}
th, td {
font-family: sans-serif; /* could eventually be DejaVu */
font-size: small;
padding: 5px 10px;
vertical-align:top;
}
td a {
text-decoration: none;
}
tr th {
text-align:left;
}
caption {
font-size: smaller;
font-weight: bold;
}
</style>
<title>@HEADER_TITLE@</title>
</head>
<body>
<h1>@HEADER_TITLE@</h1>
<ul>
<li><a href="api/index.html">JDK API Specification</a></li>
<li>Java Language Specification</li>
<li>Java Virtual Machine Specification</li>
</ul>
<table>
<caption>Modules</caption>
<thead>
<tr>
<th scope="col">Group</th>
<th scope="col">Java SE</th>
<th scope="col">JDK</th>
<th scope="col">JavaFX</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Foundation</th>
<td>@CORE_MODULES@</td>
</tr>
<tr>
<th scope="row">Security</th>
<td>@SECURITY_MODULES@</td>
</tr>
<tr>
<th scope="row">Instrumentation and<br>Management</th>
<td>@INSTRUMENT_MGMT_MODULES@</td>
</tr>
<tr>
<th scope="row">Integration</th>
<td>@INTEGRATION_MODULES@</td>
</tr>
<tr>
<th scope="row">User Interface</th>
<td>@UI_TOOLKITS_MODULES@</td>
</tr>
<tr>
<th scope="row">Compiler and Scripting</th>
<td>@COMPILER_SCRIPTING_MODULES@</td>
</tr>
<tr>
<th scope="row">Debugging</th>
<td>@DEBUG_MODULES@</td>
</tr>
<tr>
<th scope="row">Tools and Tool APIs</th>
<td>@TOOL_MODULES@</td>
</tr>
<tr>
<th scope="row">Incubating Features</th>
<td>@INCUBATOR_MODULES@</td>
</tr>
<tr>
<th scope="row">Java EE</th>
<td>@JAVA_EE_MODULES@</td>
</tr>
<tr>
<th scope="row"></th>
<th scope="row">Outside Java SE</th>
<th scope="row">JDK</th>
<th scope="row">JavaFX</th>
</tr>
<tr>
<th scope="row">Others</th>
<td>@OTHER_MODULES@</td>
</tr>
</tbody>
</table>
<p>
<hr/>
<a href="legal/cpyr.html">Copyright</a>&copy; 1993, 2017, Oracle and/or its affiliates. All rights reserved.</p>
</body>
</html>

View File

@ -0,0 +1,101 @@
# Module Grouping for the docs bundle page
#
core_modules=\
java.base \
jdk.charsets \
jdk.localedata \
jdk.net \
jdk.sctp \
jdk.zipfs
java_ee_modules=\
java.activation \
java.corba \
java.transaction \
java.xml.bind \
java.xml.ws \
java.xml.ws.annotation
security_modules=\
java.security.jgss \
java.security.sasl \
java.xml.crypto \
jdk.security.auth \
jdk.security.jgss \
jdk.crypto.cryptoki \
jdk.crypto.ec \
jdk.crypto.mscapi \
jdk.crypto.ucrypto
instrument_mgmt_modules=\
java.instrument \
java.management \
java.management.rmi \
jdk.jfr \
jdk.management \
jdk.management.agent \
jdk.management.cmm \
jdk.management.jfr \
jdk.management.resource \
integration_modules=\
java.logging \
java.naming \
java.prefs \
java.rmi \
java.sql \
java.sql.rowset \
java.xml \
jdk.httpserver \
jdk.naming.dns \
jdk.naming.rmi
ui_toolkits_modules=\
java.datatransfer \
java.desktop \
javafx.base \
javafx.controls \
javafx.fxml \
javafx.graphics \
javafx.media \
javafx.swing \
javafx.web \
jdk.accessibility
other_modules=\
java.jnlp \
java.smartcardio \
jdk.jsobject \
jdk.xml.dom
debug_modules=\
jdk.jdi \
jdk.jdwp.agent
tool_modules=\
jdk.attach \
jdk.editpad \
jdk.jartool \
jdk.javadoc \
jdk.jcmd \
jdk.jconsole \
jdk.jdeps \
jdk.jlink \
jdk.jshell \
jdk.jstatd \
jdk.pack \
jdk.policytool \
jdk.packager.services \
jdk.rmic
compiler_scripting_modules=\
java.compiler \
java.scripting \
jdk.compiler \
jdk.dynalink \
jdk.scripting.nashorn \
jdk.scripting.nashorn.shell
incubator_modules=\
jdk.incubator.httpclient

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 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
@ -59,8 +59,9 @@ package java.io;
* far left-hand column.
*
* <blockquote>
* <table border="1" cellspacing="0" cellpadding="8"
* summary="Bit values and bytes">
* <table class="plain">
* <caption style="display:none">Bit values and bytes</caption>
* <tbody>
* <tr>
* <th colspan="9"><span style="font-weight:normal">
* All characters in the range {@code '\u005Cu0001'} to
@ -71,7 +72,7 @@ package java.io;
* <th colspan="8" id="bit_a">Bit Values</th>
* </tr>
* <tr>
* <th id="byte1_a">Byte 1</th>
* <th id="byte1_a" style="text-align:left">Byte 1</th>
* <td style="text-align:center">0
* <td colspan="7" style="text-align:center">bits 6-0
* </tr>
@ -86,14 +87,14 @@ package java.io;
* <th colspan="8" id="bit_b">Bit Values</th>
* </tr>
* <tr>
* <th id="byte1_b">Byte 1</th>
* <th id="byte1_b" style="text-align:left">Byte 1</th>
* <td style="text-align:center">1
* <td style="text-align:center">1
* <td style="text-align:center">0
* <td colspan="5" style="text-align:center">bits 10-6
* </tr>
* <tr>
* <th id="byte2_a">Byte 2</th>
* <th id="byte2_a" style="text-align:left">Byte 2</th>
* <td style="text-align:center">1
* <td style="text-align:center">0
* <td colspan="6" style="text-align:center">bits 5-0
@ -108,7 +109,7 @@ package java.io;
* <th colspan="8"id="bit_c">Bit Values</th>
* </tr>
* <tr>
* <th id="byte1_c">Byte 1</th>
* <th id="byte1_c" style="text-align:left">Byte 1</th>
* <td style="text-align:center">1
* <td style="text-align:center">1
* <td style="text-align:center">1
@ -116,17 +117,18 @@ package java.io;
* <td colspan="4" style="text-align:center">bits 15-12
* </tr>
* <tr>
* <th id="byte2_b">Byte 2</th>
* <th id="byte2_b" style="text-align:left">Byte 2</th>
* <td style="text-align:center">1
* <td style="text-align:center">0
* <td colspan="6" style="text-align:center">bits 11-6
* </tr>
* <tr>
* <th id="byte3">Byte 3</th>
* <th id="byte3" style="text-align:left">Byte 3</th>
* <td style="text-align:center">1
* <td style="text-align:center">0
* <td colspan="6" style="text-align:center">bits 5-0
* </tr>
* </tbody>
* </table>
* </blockquote>
* <p>

View File

@ -216,7 +216,8 @@ import sun.reflect.misc.ReflectUtil;
* @see java.io.DataInput
* @see java.io.ObjectOutputStream
* @see java.io.Serializable
* @see <a href="../../../platform/serialization/spec/input.html"> Object Serialization Specification, Section 3, Object Input Classes</a>
* @see <a href="{@docRoot}/../specs/serialization/input.html">
* Object Serialization Specification, Section 3, Object Input Classes</a>
* @since 1.1
*/
public class ObjectInputStream

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1996, 2014, 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
@ -156,7 +156,8 @@ import sun.reflect.misc.ReflectUtil;
* @see java.io.ObjectInputStream
* @see java.io.Serializable
* @see java.io.Externalizable
* @see <a href="../../../platform/serialization/spec/output.html">Object Serialization Specification, Section 2, Object Output Classes</a>
* @see <a href="{@docRoot}/../specs/serialization/output.html">
* Object Serialization Specification, Section 2, Object Output Classes</a>
* @since 1.1
*/
public class ObjectOutputStream

View File

@ -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
@ -62,13 +62,14 @@ import static java.io.ObjectStreamField.*;
* loaded in this Java VM can be found/created using the lookup method.
*
* <p>The algorithm to compute the SerialVersionUID is described in
* <a href="../../../platform/serialization/spec/class.html#4100">Object
* Serialization Specification, Section 4.6, Stream Unique Identifiers</a>.
* <a href="{@docRoot}/../specs/serialization/class.html#stream-unique-identifiers">
* Object Serialization Specification, Section 4.6, Stream Unique Identifiers</a>.
*
* @author Mike Warres
* @author Roger Riggs
* @see ObjectStreamField
* @see <a href="../../../platform/serialization/spec/class.html">Object Serialization Specification, Section 4, Class Descriptors</a>
* @see <a href="{@docRoot}/../specs/serialization/class.html">
* Object Serialization Specification, Section 4, Class Descriptors</a>
* @since 1.1
*/
public class ObjectStreamClass implements Serializable {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1994, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1994, 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
@ -136,8 +136,12 @@ public class RandomAccessFile implements DataOutput, DataInput, Closeable {
* in which the file is to be opened. The permitted values and their
* meanings are:
*
* <table summary="Access mode permitted values and meanings">
* <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>
* </thead>
* <tbody>
* <tr><td style="vertical-align:top">{@code "r"}</td>
* <td> Open for reading only. Invoking any of the {@code write}
* methods of the resulting object will cause an
@ -153,6 +157,7 @@ public class RandomAccessFile implements DataOutput, DataInput, Closeable {
* <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>
* </tbody>
* </table>
*
* The {@code "rws"} and {@code "rwd"} modes work much like the {@link

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 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
@ -44,12 +44,16 @@ import java.util.StringTokenizer;
* and for each provides a description of what the permission allows
* and a discussion of the risks of granting code the permission.
*
* <table border=1 cellpadding=5 summary="Permission target name, what the permission allows, and associated risks">
* <table class="striped">
* <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>
* </tr>
* </thead>
* <tbody>
*
* <tr>
* <td>enableSubclassImplementation</td>
@ -79,7 +83,7 @@ import java.util.StringTokenizer;
* <td>Code could remove a configured filter and remove protections
* already established.</td>
* </tr>
*
* </tbody>
* </table>
*
* @see java.security.BasicPermission

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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,7 +33,8 @@
*
* <h2>Package Specification</h2>
* <ul>
* <li><a href="../../../platform/serialization/spec/serialTOC.html"> Java Object Serialization Specification </a>
* <li><a href="{@docRoot}/../specs/serialization/index.html">
* Java Object Serialization Specification </a>
* </ul>
*
* <h2>Related Documentation</h2>
@ -41,7 +42,8 @@
* For overviews, tutorials, examples, guides, and tool documentation,
* please see:
* <ul>
* <li><a href="../../../technotes/guides/serialization">Serialization Enhancements</a>
* <li>{@extLink serialver_tool_reference The serialver tool}</li>
* <li>{@extLink serialization_guide Serialization Documentation}</li>
* </ul>
*
* @since 1.0

View File

@ -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
@ -123,7 +123,7 @@ public interface CharSequence {
*
* <p>The stream binds to this sequence when the terminal stream operation
* commences (specifically, for mutable sequences the spliterator for the
* stream is <a href="../Spliterator.html#binding"><em>late-binding</em></a>).
* stream is <a href="../util/Spliterator.html#binding"><em>late-binding</em></a>).
* If the sequence is modified during that operation then the result is
* undefined.
*
@ -173,7 +173,7 @@ public interface CharSequence {
*
* <p>The stream binds to this sequence when the terminal stream operation
* commences (specifically, for mutable sequences the spliterator for the
* stream is <a href="../Spliterator.html#binding"><em>late-binding</em></a>).
* stream is <a href="../util/Spliterator.html#binding"><em>late-binding</em></a>).
* If the sequence is modified during that operation then the result is
* undefined.
*

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -9566,7 +9566,9 @@ class Character implements java.io.Serializable, Comparable<Character> {
* Determines if the specified character is ISO-LATIN-1 white space.
* This method returns {@code true} for the following five
* characters only:
* <table summary="truechars">
* <table class="borderless">
* <caption style="display:none">truechars</caption>
* <tbody>
* <tr><td>{@code '\t'}</td> <td>{@code U+0009}</td>
* <td>{@code HORIZONTAL TABULATION}</td></tr>
* <tr><td>{@code '\n'}</td> <td>{@code U+000A}</td>
@ -9577,6 +9579,7 @@ class Character implements java.io.Serializable, Comparable<Character> {
* <td>{@code CARRIAGE RETURN}</td></tr>
* <tr><td>{@code ' '}</td> <td>{@code U+0020}</td>
* <td>{@code SPACE}</td></tr>
* </tbody>
* </table>
*
* @param ch the character to be tested.

View File

@ -724,18 +724,23 @@ public final class Class<T> implements java.io.Serializable,
* one or more '{@code [}' characters representing the depth of the array
* nesting. The encoding of element type names is as follows:
*
* <blockquote><table summary="Element types and encodings">
* <tr><th> Element Type <th> &nbsp;&nbsp;&nbsp; <th> Encoding
* <tr><td> boolean <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> Z
* <tr><td> byte <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> B
* <tr><td> char <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> C
* <blockquote><table class="borderless">
* <caption style="display:none">Element types and encodings</caption>
* <thead>
* <tr><th style="padding-right:3em;"> Element Type <th> Encoding
* </thead>
* <tbody>
* <tr><td> boolean <td style="text-align:center"> Z
* <tr><td> byte <td style="text-align:center"> B
* <tr><td> char <td style="text-align:center"> C
* <tr><td> class or interface
* <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> L<i>classname</i>;
* <tr><td> double <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> D
* <tr><td> float <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> F
* <tr><td> int <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> I
* <tr><td> long <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> J
* <tr><td> short <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> S
* <td style="text-align:center"> L<i>classname</i>;
* <tr><td> double <td style="text-align:center"> D
* <tr><td> float <td style="text-align:center"> F
* <tr><td> int <td style="text-align:center"> I
* <tr><td> long <td style="text-align:center"> J
* <tr><td> short <td style="text-align:center"> S
* </tbody>
* </table></blockquote>
*
* <p> The class or interface name <i>classname</i> is the binary name of

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1994, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1994, 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
@ -255,9 +255,12 @@ public final class Double extends Number implements Comparable<Double> {
*
* </ul>
*
* <table border>
* <table class="plain">
* <caption>Examples</caption>
* <thead>
* <tr><th>Floating-point Value</th><th>Hexadecimal String</th>
* </thead>
* <tbody>
* <tr><td>{@code 1.0}</td> <td>{@code 0x1.0p0}</td>
* <tr><td>{@code -1.0}</td> <td>{@code -0x1.0p0}</td>
* <tr><td>{@code 2.0}</td> <td>{@code 0x1.0p1}</td>
@ -272,6 +275,7 @@ public final class Double extends Number implements Comparable<Double> {
* <td>{@code 0x0.fffffffffffffp-1022}</td>
* <tr><td>{@code Double.MIN_VALUE}</td>
* <td>{@code 0x0.0000000000001p-1022}</td>
* </tbody>
* </table>
* @param d the {@code double} to be converted.
* @return a hex string representation of the argument.

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1994, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1994, 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
@ -256,9 +256,12 @@ public final class Float extends Number implements Comparable<Float> {
*
* </ul>
*
* <table border>
* <table class="plain">
* <caption>Examples</caption>
* <thead>
* <tr><th>Floating-point Value</th><th>Hexadecimal String</th>
* </thead>
* <tbody>
* <tr><td>{@code 1.0}</td> <td>{@code 0x1.0p0}</td>
* <tr><td>{@code -1.0}</td> <td>{@code -0x1.0p0}</td>
* <tr><td>{@code 2.0}</td> <td>{@code 0x1.0p1}</td>
@ -273,6 +276,7 @@ public final class Float extends Number implements Comparable<Float> {
* <td>{@code 0x0.fffffep-126}</td>
* <tr><td>{@code Float.MIN_VALUE}</td>
* <td>{@code 0x0.000002p-126}</td>
* </tbody>
* </table>
* @param f the {@code float} to be converted.
* @return a hex string representation of the argument.

View File

@ -31,16 +31,13 @@ import java.util.Spliterators;
import java.util.function.Consumer;
/**
* Implementing this interface allows an object to be the target of
* the "for-each loop" statement. See
* <strong>
* <a href="{@docRoot}/../technotes/guides/language/foreach.html">For-each Loop</a>
* </strong>
* Implementing this interface allows an object to be the target of the enhanced
* {@code for} statement (sometimes called the "for-each loop" statement).
*
* @param <T> the type of elements returned by the iterator
*
* @since 1.5
* @jls 14.14.2 The enhanced for statement
* @jls 14.14.2 The enhanced {@code for} statement
*/
public interface Iterable<T> {
/**

View File

@ -84,7 +84,7 @@ import sun.security.util.SecurityConstants;
* started. The boot layer contains module {@code java.base} and is the only
* layer in the Java virtual machine with a module named "{@code java.base}".
* The modules in the boot layer are mapped to the bootstrap class loader and
* other class loaders that are <a href="../ClassLoader.html#builtinLoaders">
* other class loaders that are <a href="ClassLoader.html#builtinLoaders">
* built-in</a> into the Java virtual machine. The boot layer will often be
* the {@link #parents() parent} when creating additional layers. </p>
*

View File

@ -43,13 +43,17 @@ import java.lang.module.ModuleFinder;
* target names, and for each provides a description of what the permission
* allows and a discussion of the risks of granting code the permission.
*
* <table border=1 cellpadding=5 summary="permission target name,
* what the target allows,and associated risks">
* <table class="striped">
* <caption style="display:none">permission target name,
* 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>
* </tr>
* </thead>
* <tbody>
*
* <tr>
* <td>createClassLoader</td>
@ -383,6 +387,7 @@ import java.lang.module.ModuleFinder;
* {@linkplain ModuleFinder#ofSystem system modules} in the runtime image.</td>
* </tr>
*
* </tbody>
* </table>
*
* @implNote

View File

@ -203,7 +203,7 @@ public final class String
* Class String is special cased within the Serialization Stream Protocol.
*
* A String instance is written into an ObjectOutputStream according to
* <a href="{@docRoot}/../platform/serialization/spec/output.html">
* <a href="{@docRoot}/../specs/serialization/protocol.html#stream-elements">
* Object Serialization Specification, Section 6.2, "Stream Elements"</a>
*/
private static final ObjectStreamField[] serialPersistentFields =
@ -335,7 +335,7 @@ public final class String
* subarray.
*
* <p> Each {@code byte} in the subarray is converted to a {@code char} as
* specified in the method above.
* specified in the {@link #String(byte[],int) String(byte[],int)} constructor.
*
* @deprecated This method does not properly convert bytes into characters.
* As of JDK&nbsp;1.1, the preferred way to do this is via the
@ -390,7 +390,7 @@ public final class String
/**
* Allocates a new {@code String} containing characters constructed from
* an array of 8-bit integer values. Each character <i>c</i>in the
* an array of 8-bit integer values. Each character <i>c</i> in the
* resulting string is constructed from the corresponding component
* <i>b</i> in the byte array such that:
*
@ -2203,12 +2203,16 @@ public final class String
* <p> The string {@code "boo:and:foo"}, for example, yields the
* following results with these parameters:
*
* <blockquote><table cellpadding=1 cellspacing=0 summary="Split example showing regex, limit, and result">
* <blockquote><table class="plain">
* <caption style="display:none">Split example showing regex, limit, and result</caption>
* <thead>
* <tr>
* <th>Regex</th>
* <th>Limit</th>
* <th>Result</th>
* </tr>
* </thead>
* <tbody>
* <tr><td style="text-align:center">:</td>
* <td style="text-align:center">2</td>
* <td>{@code { "boo", "and:foo" }}</td></tr>
@ -2227,6 +2231,7 @@ public final class String
* <tr><td style="text-align:center">o</td>
* <td style="text-align:center">0</td>
* <td>{@code { "b", "", ":and:f" }}</td></tr>
* </tbody>
* </table></blockquote>
*
* <p> An invocation of this method of the form
@ -2326,15 +2331,20 @@ public final class String
* <p> The string {@code "boo:and:foo"}, for example, yields the following
* results with these expressions:
*
* <blockquote><table cellpadding=1 cellspacing=0 summary="Split examples showing regex and result">
* <blockquote><table class="plain">
* <caption style="display:none">Split examples showing regex and result</caption>
* <thead>
* <tr>
* <th>Regex</th>
* <th>Result</th>
* </tr>
* </thead>
* <tbody>
* <tr><td style="text-align:center">:</td>
* <td>{@code { "boo", "and", "foo" }}</td></tr>
* <tr><td style="text-align:center">o</td>
* <td>{@code { "b", "", ":and:f" }}</td></tr>
* </tbody>
* </table></blockquote>
*
*
@ -2445,13 +2455,17 @@ public final class String
* {@code String} may be a different length than the original {@code String}.
* <p>
* Examples of lowercase mappings are in the following table:
* <table border="1" summary="Lowercase mapping examples showing language code of locale, upper case, lower case, and description">
* <table class="plain">
* <caption style="display:none">Lowercase mapping examples showing language code of locale, upper case, lower case, and description</caption>
* <thead>
* <tr>
* <th>Language Code of Locale</th>
* <th>Upper Case</th>
* <th>Lower Case</th>
* <th>Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
* <td>tr (Turkish)</td>
* <td>&#92;u0130</td>
@ -2480,6 +2494,7 @@ public final class String
* <img src="doc-files/sigma1.gif" alt="sigma"></td>
* <td>lowercased all chars in String</td>
* </tr>
* </tbody>
* </table>
*
* @param locale use the case transformation rules for this locale
@ -2526,13 +2541,17 @@ public final class String
* <p>
* Examples of locale-sensitive and 1:M case mappings are in the following table.
*
* <table border="1" summary="Examples of locale-sensitive and 1:M case mappings. Shows Language code of locale, lower case, upper case, and description.">
* <table class="plain">
* <caption style="display:none">Examples of locale-sensitive and 1:M case mappings. Shows Language code of locale, lower case, upper case, and description.</caption>
* <thead>
* <tr>
* <th>Language Code of Locale</th>
* <th>Lower Case</th>
* <th>Upper Case</th>
* <th>Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
* <td>tr (Turkish)</td>
* <td>&#92;u0069</td>
@ -2557,6 +2576,7 @@ public final class String
* <td>FAHRVERGN&Uuml;GEN</td>
* <td></td>
* </tr>
* </tbody>
* </table>
* @param locale use the case transformation rules for this locale
* @return the {@code String}, converted to uppercase.

View File

@ -577,9 +577,13 @@ public final class System {
* system properties, a set of system properties is first created and
* initialized. This set of system properties always includes values
* for the following keys:
* <table summary="Shows property keys and associated values">
* <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>
* </thead>
* <tbody>
* <tr><td><code>java.version</code></td>
* <td>Java Runtime Environment version which may be interpreted
* as a {@link Runtime.Version}</td></tr>
@ -638,6 +642,7 @@ public final class System {
* <td>User's home directory</td></tr>
* <tr><td><code>user.dir</code></td>
* <td>User's current working directory</td></tr>
* </tbody>
* </table>
* <p>
* Multiple paths in a system property value are separated by the path
@ -649,9 +654,13 @@ public final class System {
*
* @implNote In addition to the standard system properties, the system
* properties may include the following keys:
* <table summary="Shows property keys and associated values">
* <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>
* </thead>
* <tbody>
* <tr><td>{@code jdk.module.path}</td>
* <td>The application module path</td></tr>
* <tr><td>{@code jdk.module.upgrade.path}</td>
@ -660,6 +669,7 @@ public final class System {
* <td>The module name of the initial/main module</td></tr>
* <tr><td>{@code jdk.module.main.class}</td>
* <td>The main class name of the initial module</td></tr>
* </tbody>
* </table>
*
* @return the system properties

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2013, 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
@ -149,8 +149,12 @@ import java.util.Arrays;
* capture argument (corresponding to the receiver) must be non-null.
*
* <p>A type Q is considered adaptable to S as follows:
* <table summary="adaptable types">
* <table class="borderless">
* <caption style="display:none">adaptable types</caption>
* <thead>
* <tr><th>Q</th><th>S</th><th>Link-time checks</th><th>Invocation-time checks</th></tr>
* </thead>
* <tbody>
* <tr>
* <td>Primitive</td><td>Primitive</td>
* <td>Q can be converted to S via a primitive widening conversion</td>
@ -176,6 +180,7 @@ import java.util.Arrays;
* <br>for return types: none</td>
* <td>Cast from Q to S</td>
* </tr>
* </tbody>
* </table>
*
* @apiNote These linkage methods are designed to support the evaluation
@ -213,7 +218,9 @@ import java.util.Arrays;
* methods.
* @since 1.8
*/
public class LambdaMetafactory {
public final class LambdaMetafactory {
private LambdaMetafactory() {}
/** Flag for alternate metafactories indicating the lambda object
* must be serializable */

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2013, 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
@ -81,8 +81,12 @@ import static java.lang.invoke.MethodHandleStatics.*;
* The <a href="MethodHandles.Lookup.html#lookups">Lookup Factory Methods</a>
* correspond to all major use cases for methods, constructors, and fields.
* These use cases may be distinguished using small integers as follows:
* <table border=1 cellpadding=5 summary="reference kinds">
* <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>
* </thead>
* <tbody>
* <tr>
* <td>{@code 1}</td><td>{@code REF_getField}</td><td>{@code class}</td>
* <td>{@code FT f;}</td><td>{@code (T) this.f;}</td>
@ -119,6 +123,7 @@ import static java.lang.invoke.MethodHandleStatics.*;
* <td>{@code 9}</td><td>{@code REF_invokeInterface}</td><td>{@code interface}</td>
* <td>{@code T m(A*);}</td><td>{@code (T) this.m(arg*);}</td>
* </tr>
* </tbody>
* </table>
* @since 1.8
*/

View File

@ -278,12 +278,16 @@ public class MethodHandles {
* (Bytecode behaviors are described in section 5.4.3.5 of the Java Virtual Machine Specification.)
* Here is a summary of the correspondence between these factory methods and
* the behavior of the resulting method handles:
* <table border=1 cellpadding=5 summary="lookup method behaviors">
* <table class="striped">
* <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>
* </tr>
* </thead>
* <tbody>
* <tr>
* <td>{@link java.lang.invoke.MethodHandles.Lookup#findGetter lookup.findGetter(C.class,"f",FT.class)}</td>
* <td>{@code FT f;}</td><td>{@code (T) this.f;}</td>
@ -340,6 +344,7 @@ public class MethodHandles {
* <td>{@link java.lang.invoke.MethodHandles.Lookup#findClass lookup.findClass("C")}</td>
* <td>{@code class C { ... }}</td><td>{@code C.class;}</td>
* </tr>
* </tbody>
* </table>
*
* Here, the type {@code C} is the class or interface being searched for a member,
@ -1670,8 +1675,8 @@ return mh1;
* to the lookup class.
* (Unlike {@code bind}, {@code bindTo} does not preserve variable arity.
* Also, {@code bindTo} may throw a {@code ClassCastException} in instances where {@code bind} would
* throw a {@code IllegalAccessException}, as in the case where the member is {@code protected} and
* the receiver is restricted by {@code findVirtual} to the lookup class)
* throw an {@code IllegalAccessException}, as in the case where the member is {@code protected} and
* the receiver is restricted by {@code findVirtual} to the lookup class.)
* @param receiver the object from which the method is accessed
* @param name the name of the method
* @param type the type of the method, with the receiver argument omitted

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -105,10 +105,13 @@ import sun.reflect.annotation.AnnotationType;
* <p>The table below summarizes which kind of annotation presence
* different methods in this interface examine.
*
* <table border>
* <table class="plain">
* <caption>Overview of kind of presence detected by different AnnotatedElement methods</caption>
* <thead>
* <tr><th colspan=2></th><th colspan=4>Kind of Presence</th>
* <tr><th colspan=2>Method</th><th>Directly Present</th><th>Indirectly Present</th><th>Present</th><th>Associated</th>
* </thead>
* <tbody>
* <tr><td style="text-align:right">{@code T}</td><td>{@link #getAnnotation(Class) getAnnotation(Class&lt;T&gt;)}
* <td></td><td></td><td>X</td><td></td>
* </tr>
@ -127,6 +130,7 @@ import sun.reflect.annotation.AnnotationType;
* <tr><td style="text-align:right">{@code T[]}</td><td>{@link #getDeclaredAnnotationsByType(Class) getDeclaredAnnotationsByType(Class&lt;T&gt;)}
* <td>X</td><td>X</td><td></td><td></td>
* </tr>
* </tbody>
* </table>
*
* <p>For an invocation of {@code get[Declared]AnnotationsByType( Class <

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 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
@ -32,12 +32,16 @@ package java.lang.reflect;
* provides a summary description of what the permission allows,
* and discusses the risks of granting code the permission.
*
* <table border=1 cellpadding=5 summary="Table shows permission target name, what the permission allows, and associated risks">
* <table class="striped">
* <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>
* </tr>
* </thead>
* <tbody>
*
* <tr>
* <td>suppressAccessChecks</td>
@ -58,6 +62,7 @@ package java.lang.reflect;
* help in its attempt to compromise security in the system.</td>
* </tr>
*
* </tbody>
* </table>
*
* @see java.security.Permission

View File

@ -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
@ -120,15 +120,19 @@ import java.util.Arrays;
* preferred scale for representing a result. The preferred
* scale for each operation is listed in the table below.
*
* <table border>
* <table class="plain">
* <caption><b>Preferred Scales for Results of Arithmetic Operations
* </b></caption>
* <thead>
* <tr><th>Operation</th><th>Preferred Scale of Result</th></tr>
* </thead>
* <tbody>
* <tr><td>Add</td><td>max(addend.scale(), augend.scale())</td>
* <tr><td>Subtract</td><td>max(minuend.scale(), subtrahend.scale())</td>
* <tr><td>Multiply</td><td>multiplier.scale() + multiplicand.scale()</td>
* <tr><td>Divide</td><td>dividend.scale() - divisor.scale()</td>
* <tr><td>Square root</td><td>radicand.scale()/2</td>
* </tbody>
* </table>
*
* These scales are the ones used by the methods which return exact

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -51,8 +51,9 @@ package java.math;
* proper {@code MathContext}. A summary table showing the results
* of these rounding operations for all rounding modes appears below.
*
*<table border>
*<table class="plain">
* <caption><b>Summary of Rounding Operations Under Different Rounding Modes</b></caption>
* <thead>
* <tr><th></th><th colspan=8>Result of rounding input to one digit with the given
* rounding mode</th>
* <tr style="vertical-align:top">
@ -64,6 +65,8 @@ package java.math;
* <th>{@code HALF_DOWN}</th>
* <th>{@code HALF_EVEN}</th>
* <th>{@code UNNECESSARY}</th>
* </thead>
* <tbody>
*
* <tr style="text-align:right"><td>5.5</td> <td>6</td> <td>5</td> <td>6</td> <td>5</td> <td>6</td> <td>5</td> <td>6</td> <td>throw {@code ArithmeticException}</td>
* <tr style="text-align:right"><td>2.5</td> <td>3</td> <td>2</td> <td>3</td> <td>2</td> <td>3</td> <td>2</td> <td>2</td> <td>throw {@code ArithmeticException}</td>
@ -75,7 +78,8 @@ package java.math;
* <tr style="text-align:right"><td>-1.6</td> <td>-2</td> <td>-1</td> <td>-1</td> <td>-2</td> <td>-2</td> <td>-2</td> <td>-2</td> <td>throw {@code ArithmeticException}</td>
* <tr style="text-align:right"><td>-2.5</td> <td>-3</td> <td>-2</td> <td>-2</td> <td>-3</td> <td>-3</td> <td>-2</td> <td>-2</td> <td>throw {@code ArithmeticException}</td>
* <tr style="text-align:right"><td>-5.5</td> <td>-6</td> <td>-5</td> <td>-5</td> <td>-6</td> <td>-6</td> <td>-5</td> <td>-6</td> <td>throw {@code ArithmeticException}</td>
*</table>
* </tbody>
* </table>
*
*
* <p>This {@code enum} is intended to replace the integer-based
@ -100,10 +104,13 @@ public enum RoundingMode {
* value.
*
*<p>Example:
*<table border>
*<table class="plain">
* <caption><b>Rounding mode UP Examples</b></caption>
*<thead>
*<tr style="vertical-align:top"><th>Input Number</th>
* <th>Input rounded to one digit<br> with {@code UP} rounding
*</thead>
*<tbody>
*<tr style="text-align:right"><td>5.5</td> <td>6</td>
*<tr style="text-align:right"><td>2.5</td> <td>3</td>
*<tr style="text-align:right"><td>1.6</td> <td>2</td>
@ -114,6 +121,7 @@ public enum RoundingMode {
*<tr style="text-align:right"><td>-1.6</td> <td>-2</td>
*<tr style="text-align:right"><td>-2.5</td> <td>-3</td>
*<tr style="text-align:right"><td>-5.5</td> <td>-6</td>
*</tbody>
*</table>
*/
UP(BigDecimal.ROUND_UP),
@ -124,10 +132,13 @@ public enum RoundingMode {
* rounding mode never increases the magnitude of the calculated value.
*
*<p>Example:
*<table border>
*<table class="plain">
* <caption><b>Rounding mode DOWN Examples</b></caption>
*<thead>
*<tr style="vertical-align:top"><th>Input Number</th>
* <th>Input rounded to one digit<br> with {@code DOWN} rounding
*</thead>
*<tbody>
*<tr style="text-align:right"><td>5.5</td> <td>5</td>
*<tr style="text-align:right"><td>2.5</td> <td>2</td>
*<tr style="text-align:right"><td>1.6</td> <td>1</td>
@ -138,6 +149,7 @@ public enum RoundingMode {
*<tr style="text-align:right"><td>-1.6</td> <td>-1</td>
*<tr style="text-align:right"><td>-2.5</td> <td>-2</td>
*<tr style="text-align:right"><td>-5.5</td> <td>-5</td>
*</tbody>
*</table>
*/
DOWN(BigDecimal.ROUND_DOWN),
@ -149,10 +161,13 @@ public enum RoundingMode {
* that this rounding mode never decreases the calculated value.
*
*<p>Example:
*<table border>
*<table class="plain">
* <caption><b>Rounding mode CEILING Examples</b></caption>
*<thead>
*<tr style="vertical-align:top"><th>Input Number</th>
* <th>Input rounded to one digit<br> with {@code CEILING} rounding
*</thead>
*<tbody>
*<tr style="text-align:right"><td>5.5</td> <td>6</td>
*<tr style="text-align:right"><td>2.5</td> <td>3</td>
*<tr style="text-align:right"><td>1.6</td> <td>2</td>
@ -163,6 +178,7 @@ public enum RoundingMode {
*<tr style="text-align:right"><td>-1.6</td> <td>-1</td>
*<tr style="text-align:right"><td>-2.5</td> <td>-2</td>
*<tr style="text-align:right"><td>-5.5</td> <td>-5</td>
*</tbody>
*</table>
*/
CEILING(BigDecimal.ROUND_CEILING),
@ -174,10 +190,13 @@ public enum RoundingMode {
* this rounding mode never increases the calculated value.
*
*<p>Example:
*<table border>
*<table class="plain">
* <caption><b>Rounding mode FLOOR Examples</b></caption>
*<thead>
*<tr style="vertical-align:top"><th>Input Number</th>
* <th>Input rounded to one digit<br> with {@code FLOOR} rounding
*</thead>
*<tbody>
*<tr style="text-align:right"><td>5.5</td> <td>5</td>
*<tr style="text-align:right"><td>2.5</td> <td>2</td>
*<tr style="text-align:right"><td>1.6</td> <td>1</td>
@ -188,6 +207,7 @@ public enum RoundingMode {
*<tr style="text-align:right"><td>-1.6</td> <td>-2</td>
*<tr style="text-align:right"><td>-2.5</td> <td>-3</td>
*<tr style="text-align:right"><td>-5.5</td> <td>-6</td>
*</tbody>
*</table>
*/
FLOOR(BigDecimal.ROUND_FLOOR),
@ -201,10 +221,13 @@ public enum RoundingMode {
* mode commonly taught at school.
*
*<p>Example:
*<table border>
*<table class="plain">
* <caption><b>Rounding mode HALF_UP Examples</b></caption>
*<thead>
*<tr style="vertical-align:top"><th>Input Number</th>
* <th>Input rounded to one digit<br> with {@code HALF_UP} rounding
*</thead>
*<tbody>
*<tr style="text-align:right"><td>5.5</td> <td>6</td>
*<tr style="text-align:right"><td>2.5</td> <td>3</td>
*<tr style="text-align:right"><td>1.6</td> <td>2</td>
@ -215,6 +238,7 @@ public enum RoundingMode {
*<tr style="text-align:right"><td>-1.6</td> <td>-2</td>
*<tr style="text-align:right"><td>-2.5</td> <td>-3</td>
*<tr style="text-align:right"><td>-5.5</td> <td>-6</td>
*</tbody>
*</table>
*/
HALF_UP(BigDecimal.ROUND_HALF_UP),
@ -227,10 +251,13 @@ public enum RoundingMode {
* {@code RoundingMode.DOWN}.
*
*<p>Example:
*<table border>
*<table class="plain">
* <caption><b>Rounding mode HALF_DOWN Examples</b></caption>
*<thead>
*<tr style="vertical-align:top"><th>Input Number</th>
* <th>Input rounded to one digit<br> with {@code HALF_DOWN} rounding
*</thead>
*<tbody>
*<tr style="text-align:right"><td>5.5</td> <td>5</td>
*<tr style="text-align:right"><td>2.5</td> <td>2</td>
*<tr style="text-align:right"><td>1.6</td> <td>2</td>
@ -241,6 +268,7 @@ public enum RoundingMode {
*<tr style="text-align:right"><td>-1.6</td> <td>-2</td>
*<tr style="text-align:right"><td>-2.5</td> <td>-2</td>
*<tr style="text-align:right"><td>-5.5</td> <td>-5</td>
*</tbody>
*</table>
*/
HALF_DOWN(BigDecimal.ROUND_HALF_DOWN),
@ -260,10 +288,13 @@ public enum RoundingMode {
* arithmetic in Java.
*
*<p>Example:
*<table border>
*<table class="plain">
* <caption><b>Rounding mode HALF_EVEN Examples</b></caption>
*<thead>
*<tr style="vertical-align:top"><th>Input Number</th>
* <th>Input rounded to one digit<br> with {@code HALF_EVEN} rounding
*</thead>
*<tbody>
*<tr style="text-align:right"><td>5.5</td> <td>6</td>
*<tr style="text-align:right"><td>2.5</td> <td>2</td>
*<tr style="text-align:right"><td>1.6</td> <td>2</td>
@ -274,6 +305,7 @@ public enum RoundingMode {
*<tr style="text-align:right"><td>-1.6</td> <td>-2</td>
*<tr style="text-align:right"><td>-2.5</td> <td>-2</td>
*<tr style="text-align:right"><td>-5.5</td> <td>-6</td>
*</tbody>
*</table>
*/
HALF_EVEN(BigDecimal.ROUND_HALF_EVEN),
@ -284,10 +316,13 @@ public enum RoundingMode {
* specified on an operation that yields an inexact result, an
* {@code ArithmeticException} is thrown.
*<p>Example:
*<table border>
*<table class="plain">
* <caption><b>Rounding mode UNNECESSARY Examples</b></caption>
*<thead>
*<tr style="vertical-align:top"><th>Input Number</th>
* <th>Input rounded to one digit<br> with {@code UNNECESSARY} rounding
*</thead>
*<tbody>
*<tr style="text-align:right"><td>5.5</td> <td>throw {@code ArithmeticException}</td>
*<tr style="text-align:right"><td>2.5</td> <td>throw {@code ArithmeticException}</td>
*<tr style="text-align:right"><td>1.6</td> <td>throw {@code ArithmeticException}</td>
@ -298,6 +333,7 @@ public enum RoundingMode {
*<tr style="text-align:right"><td>-1.6</td> <td>throw {@code ArithmeticException}</td>
*<tr style="text-align:right"><td>-2.5</td> <td>throw {@code ArithmeticException}</td>
*<tr style="text-align:right"><td>-5.5</td> <td>throw {@code ArithmeticException}</td>
*</tbody>
*</table>
*/
UNNECESSARY(BigDecimal.ROUND_UNNECESSARY);

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2016, 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
@ -41,12 +41,12 @@ import java.io.ObjectStreamException;
* Textual representation of IPv4 address used as input to methods
* takes one of the following forms:
*
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
* <tr><td>{@code d.d.d.d}</td></tr>
* <tr><td>{@code d.d.d}</td></tr>
* <tr><td>{@code d.d}</td></tr>
* <tr><td>{@code d}</td></tr>
* </table></blockquote>
* <blockquote><ul style="list-style-type:none">
* <li>{@code d.d.d.d}</li>
* <li>{@code d.d.d}</li>
* <li>{@code d.d}</li>
* <li>{@code d}</li>
* </ul></blockquote>
*
* <p> When four parts are specified, each is interpreted as a byte of
* data and assigned, from left to right, to the four bytes of an IPv4

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2016, 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
@ -49,9 +49,9 @@ import java.util.Arrays;
* the hexadecimal values of the eight 16-bit pieces of the
* address. This is the full form. For example,
*
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
* <tr><td>{@code 1080:0:0:0:8:800:200C:417A}<td></tr>
* </table></blockquote>
* <blockquote><ul style="list-style-type:none">
* <li>{@code 1080:0:0:0:8:800:200C:417A}</li>
* </ul></blockquote>
*
* <p> Note that it is not necessary to write the leading zeros in
* an individual field. However, there must be at least one numeral
@ -66,9 +66,9 @@ import java.util.Arrays;
* The "::" can also be used to compress the leading and/or trailing
* zeros in an address. For example,
*
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
* <tr><td>{@code 1080::8:800:200C:417A}<td></tr>
* </table></blockquote>
* <blockquote><ul style="list-style-type:none">
* <li>{@code 1080::8:800:200C:417A}</li>
* </ul></blockquote>
*
* <li><p> An alternative form that is sometimes more convenient
* when dealing with a mixed environment of IPv4 and IPv6 nodes is
@ -77,35 +77,35 @@ import java.util.Arrays;
* are the decimal values of the four low-order 8-bit pieces of the
* standard IPv4 representation address, for example,
*
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
* <tr><td>{@code ::FFFF:129.144.52.38}<td></tr>
* <tr><td>{@code ::129.144.52.38}<td></tr>
* </table></blockquote>
* <blockquote><ul style="list-style-type:none">
* <li>{@code ::FFFF:129.144.52.38}</li>
* <li>{@code ::129.144.52.38}</li>
* </ul></blockquote>
*
* <p> where "::FFFF:d.d.d.d" and "::d.d.d.d" are, respectively, the
* general forms of an IPv4-mapped IPv6 address and an
* IPv4-compatible IPv6 address. Note that the IPv4 portion must be
* in the "d.d.d.d" form. The following forms are invalid:
*
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
* <tr><td>{@code ::FFFF:d.d.d}<td></tr>
* <tr><td>{@code ::FFFF:d.d}<td></tr>
* <tr><td>{@code ::d.d.d}<td></tr>
* <tr><td>{@code ::d.d}<td></tr>
* </table></blockquote>
* <blockquote><ul style="list-style-type:none">
* <li>{@code ::FFFF:d.d.d}</li>
* <li>{@code ::FFFF:d.d}</li>
* <li>{@code ::d.d.d}</li>
* <li>{@code ::d.d}</li>
* </ul></blockquote>
*
* <p> The following form:
*
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
* <tr><td>{@code ::FFFF:d}<td></tr>
* </table></blockquote>
* <blockquote><ul style="list-style-type:none">
* <li>{@code ::FFFF:d}</li>
* </ul></blockquote>
*
* <p> is valid, however it is an unconventional representation of
* the IPv4-compatible IPv6 address,
*
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
* <tr><td>{@code ::255.255.0.d}<td></tr>
* </table></blockquote>
* <blockquote><ul style="list-style-type:none">
* <li>{@code ::255.255.0.d}</li>
* </ul></blockquote>
*
* <p> while "::d" corresponds to the general IPv6 address
* "0:0:0:0:0:0:0:d".</li>
@ -119,9 +119,10 @@ import java.util.Arrays;
* <h4> Special IPv6 address </h4>
*
* <blockquote>
* <table cellspacing=2 summary="Description of IPv4-mapped address">
* <tr><th valign=top><i>IPv4-mapped address</i></th>
* <td>Of the form::ffff:w.x.y.z, this IPv6 address is used to
* <table class="borderless">
* <caption style="display:none">Description of IPv4-mapped address</caption>
* <tr><th style="vertical-align:top; padding-right:2px"><i>IPv4-mapped address</i></th>
* <td>Of the form ::ffff:w.x.y.z, this IPv6 address is used to
* represent an IPv4 address. It allows the native program to
* use the same address data structure and also the same
* socket when communicating with both IPv4 and IPv6 nodes.

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 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
@ -72,7 +72,9 @@ import sun.net.util.IPAddressUtil;
*
* <h3> Address types </h3>
*
* <blockquote><table cellspacing=2 summary="Description of unicast and multicast address types">
* <blockquote><table class="borderless">
* <caption style="display:none">Description of unicast and multicast address types</caption>
* <tbody>
* <tr><th valign=top><i>unicast</i></th>
* <td>An identifier for a single interface. A packet sent to
* a unicast address is delivered to the interface identified by
@ -96,6 +98,7 @@ import sun.net.util.IPAddressUtil;
* <td>An identifier for a set of interfaces (typically belonging
* to different nodes). A packet sent to a multicast address is
* delivered to all interfaces identified by that address.</td></tr>
* </tbody>
* </table></blockquote>
*
* <h4> IP address scope </h4>

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 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
@ -47,12 +47,16 @@ import java.util.StringTokenizer;
* and for each provides a description of what the permission allows
* and a discussion of the risks of granting code the permission.
*
* <table border=1 cellpadding=5 summary="Permission target name, what the permission allows, and associated risks">
* <table class="striped">
* <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>
* </tr>
* </thead>
* <tbody>
* <tr>
* <td>allowHttpTrace</td>
* <td>The ability to use the HTTP TRACE method in HttpURLConnection.</td>
@ -151,6 +155,7 @@ import java.util.StringTokenizer;
* creating a ProtectionDomain/CodeSource for a class even though
* that class really didn't come from that location.</td>
* </tr>
</tbody>
* </table>
*
* @see java.security.BasicPermission

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2016, 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
@ -83,11 +83,11 @@ import java.lang.NullPointerException; // for javadoc
* not begin with a slash character ({@code '/'}). Opaque URIs are not
* subject to further parsing. Some examples of opaque URIs are:
*
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
* <tr><td>{@code mailto:java-net@java.sun.com}<td></tr>
* <tr><td>{@code news:comp.lang.java}<td></tr>
* <tr><td>{@code urn:isbn:096139210x}</td></tr>
* </table></blockquote>
* <blockquote><ul style="list-style-type:none">
* <li>{@code mailto:java-net@java.sun.com}</li>
* <li>{@code news:comp.lang.java}</li>
* <li>{@code urn:isbn:096139210x}</li>
* </ul></blockquote>
*
* <p> A <i>hierarchical</i> URI is either an absolute URI whose
* scheme-specific part begins with a slash character, or a relative URI, that
@ -132,8 +132,12 @@ import java.lang.NullPointerException; // for javadoc
*
* <p> All told, then, a URI instance has the following nine components:
*
* <blockquote><table summary="Describes the components of a URI:scheme,scheme-specific-part,authority,user-info,host,port,path,query,fragment">
* <blockquote><table class="borderless">
* <caption style="display:none">Describes the components of a URI:scheme,scheme-specific-part,authority,user-info,host,port,path,query,fragment</caption>
* <thead>
* <tr><th><i>Component</i></th><th><i>Type</i></th></tr>
* </thead>
* <tbody>
* <tr><td>scheme</td><td>{@code String}</td></tr>
* <tr><td>scheme-specific-part&nbsp;&nbsp;&nbsp;&nbsp;</td><td>{@code String}</td></tr>
* <tr><td>authority</td><td>{@code String}</td></tr>
@ -143,6 +147,7 @@ import java.lang.NullPointerException; // for javadoc
* <tr><td>path</td><td>{@code String}</td></tr>
* <tr><td>query</td><td>{@code String}</td></tr>
* <tr><td>fragment</td><td>{@code String}</td></tr>
* </tbody>
* </table></blockquote>
*
* In a given instance any particular component is either <i>undefined</i> or
@ -248,7 +253,9 @@ import java.lang.NullPointerException; // for javadoc
* which are taken from that specification, are used below to describe these
* constraints:
*
* <blockquote><table cellspacing=2 summary="Describes categories alpha,digit,alphanum,unreserved,punct,reserved,escaped,and other">
* <blockquote><table>
* <caption style="display:none">Describes categories alpha,digit,alphanum,unreserved,punct,reserved,escaped,and other</caption>
* <tbody>
* <tr><th valign=top><i>alpha</i></th>
* <td>The US-ASCII alphabetic characters,
* {@code 'A'}&nbsp;through&nbsp;{@code 'Z'}
@ -279,6 +286,7 @@ import java.lang.NullPointerException; // for javadoc
* java.lang.Character#isSpaceChar(char) Character.isSpaceChar}
* method)&nbsp;&nbsp;<i>(<b>Deviation from RFC 2396</b>, which is
* limited to US-ASCII)</i></td></tr>
* </tbody>
* </table></blockquote>
*
* <p><a id="legal-chars"></a> The set of all legal URI characters consists of

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1995, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 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
@ -54,13 +54,18 @@ import sun.security.action.GetPropertyAction;
* read from and to write to the resource referenced by the URL. In
* general, creating a connection to a URL is a multistep process:
*
* <div style="text-align:center"><table style="margin:0 auto" border=2 summary="Describes the process of creating a connection to a URL: openConnection() and connect() over time.">
* <div style="text-align:center"><table class="plain" style="margin:0 auto">
* <caption style="display:none">Describes the process of creating a connection to a URL: openConnection() and connect() over time.</caption>
* <thead>
* <tr><th>{@code openConnection()}</th>
* <th>{@code connect()}</th></tr>
* </thead>
* <tbody>
* <tr><td>Manipulate parameters that affect the connection to the remote
* resource.</td>
* <td>Interact with the resource; query header fields and
* contents.</td></tr>
* </tbody>
* </table>
* ----------------------------&gt;
* <br>time</div>

View File

@ -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
@ -72,9 +72,12 @@ import java.security.Permission;
* separated by '/' characters. <i>path</i> may also be empty. The path is specified
* in a similar way to the path in {@link java.io.FilePermission}. There are
* three different ways as the following examples show:
* <table border>
* <table class="plain">
* <caption>URL Examples</caption>
* <thead>
* <tr><th>Example url</th><th>Description</th></tr>
* </thead>
* <tbody>
* <tr><td style="white-space:nowrap;">http://www.oracle.com/a/b/c.html</td>
* <td>A url which identifies a specific (single) resource</td>
* </tr>
@ -90,6 +93,7 @@ import java.security.Permission;
* example).
* </td>
* </tr>
* </tbody>
* </table>
* <p>
* The '*' and '-' may only be specified in the final segment of a path and must be
@ -246,9 +250,12 @@ public final class URLPermission extends Permission {
* <li>otherwise, return false</li>
* </ul>
* <p>Some examples of how paths are matched are shown below:
* <table border>
* <table class="plain">
* <caption>Examples of Path Matching</caption>
* <thead>
* <tr><th>this's path</th><th>p's path</th><th>match</th></tr>
* </thead>
* <tbody>
* <tr><td>/a/b</td><td>/a/b</td><td>yes</td></tr>
* <tr><td>/a/b/*</td><td>/a/b/c</td><td>yes</td></tr>
* <tr><td>/a/b/*</td><td>/a/b/c/d</td><td>no</td></tr>
@ -256,6 +263,7 @@ public final class URLPermission extends Permission {
* <tr><td>/a/b/-</td><td>/a/b/c/d/e</td><td>yes</td></tr>
* <tr><td>/a/b/-</td><td>/a/b/c/*</td><td>yes</td></tr>
* <tr><td>/a/b/*</td><td>/a/b/c/-</td><td>no</td></tr>
* </tbody>
* </table>
*/
public boolean implies(Permission p) {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007, 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
@ -60,11 +60,15 @@ import java.util.concurrent.TimeUnit;
* default group is not configured then the pooled threads of the default group
* are {@link Thread#isDaemon daemon} threads.
*
* <table border summary="System properties">
* <table class="striped">
* <caption style="display:none:">System properties</caption>
* <thead>
* <tr>
* <th>System property</th>
* <th>Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
* <td> {@code java.nio.channels.DefaultThreadPool.threadFactory} </td>
* <td> The value of this property is taken to be the fully-qualified name
@ -86,6 +90,7 @@ import java.util.concurrent.TimeUnit;
* unspecified error to be thrown during the construction of the default
* group. </td>
* </tr>
* </tbody>
* </table>
*
* <a id="threading"></a><h2>Threading</h2>

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007, 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
@ -133,8 +133,12 @@ public abstract class AsynchronousFileChannel
* <p> In addition to {@code READ} and {@code WRITE}, the following options
* may be present:
*
* <table border=1 cellpadding=5 summary="">
* <table class="striped">
* <caption style="display:none">additional options</caption>
* <thead>
* <tr> <th>Option</th> <th>Description</th> </tr>
* </thead>
* <tbody>
* <tr>
* <td> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </td>
* <td> When opening an existing file, the file is first truncated to a
@ -186,6 +190,7 @@ public abstract class AsynchronousFileChannel
* href="../file/package-summary.html#integrity"> Synchronized I/O file
* integrity</a>). </td>
* </tr>
* </tbody>
* </table>
*
* <p> An implementation may also support additional options.

Some files were not shown because too many files have changed in this diff Show More