Merge
This commit is contained in:
commit
24252e72e4
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
])
|
||||
|
@ -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=""
|
||||
|
@ -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"
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -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">
|
||||
|
@ -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">
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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}
|
||||
|
@ -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">
|
||||
|
@ -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">
|
||||
|
@ -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™
|
||||
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
|
||||
WStringSeqHelper
|
||||
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™. 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
|
||||
|
@ -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>
|
||||
|
@ -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. These changes occurred in recent
|
||||
revisions to the CORBA API defined by the OMG. 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>
|
||||
|
@ -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
|
||||
|
@ -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> </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> </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>
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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.
|
@ -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.
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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) \
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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.*;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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))
|
||||
|
||||
|
@ -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
|
||||
|
186
jdk/make/src/classes/build/tools/docs/GenDocsBundlePage.java
Normal file
186
jdk/make/src/classes/build/tools/docs/GenDocsBundlePage.java
Normal 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;
|
||||
}
|
||||
}
|
146
jdk/make/src/classes/build/tools/docs/docs-bundle-page.html
Normal file
146
jdk/make/src/classes/build/tools/docs/docs-bundle-page.html
Normal 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>© 1993, 2017, Oracle and/or its affiliates. All rights reserved.</p>
|
||||
</body>
|
||||
</html>
|
@ -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
|
@ -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>
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
*
|
||||
|
@ -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.
|
||||
|
@ -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> <th> Encoding
|
||||
* <tr><td> boolean <td> <td style="text-align:center"> Z
|
||||
* <tr><td> byte <td> <td style="text-align:center"> B
|
||||
* <tr><td> char <td> <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> <td style="text-align:center"> L<i>classname</i>;
|
||||
* <tr><td> double <td> <td style="text-align:center"> D
|
||||
* <tr><td> float <td> <td style="text-align:center"> F
|
||||
* <tr><td> int <td> <td style="text-align:center"> I
|
||||
* <tr><td> long <td> <td style="text-align:center"> J
|
||||
* <tr><td> short <td> <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
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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> {
|
||||
/**
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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
|
||||
|
@ -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 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>\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>\u0069</td>
|
||||
@ -2557,6 +2576,7 @@ public final class String
|
||||
* <td>FAHRVERGNÜGEN</td>
|
||||
* <td></td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
* @param locale use the case transformation rules for this locale
|
||||
* @return the {@code String}, converted to uppercase.
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
|
@ -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<T>)}
|
||||
* <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<T>)}
|
||||
* <td>X</td><td>X</td><td></td><td></td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
*
|
||||
* <p>For an invocation of {@code get[Declared]AnnotationsByType( Class <
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
|
@ -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 </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'} through {@code 'Z'}
|
||||
@ -279,6 +286,7 @@ import java.lang.NullPointerException; // for javadoc
|
||||
* java.lang.Character#isSpaceChar(char) Character.isSpaceChar}
|
||||
* method) <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
|
||||
|
@ -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>
|
||||
* ---------------------------->
|
||||
* <br>time</div>
|
||||
|
@ -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) {
|
||||
|
@ -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>
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user