Merge
This commit is contained in:
commit
6fa2b9d1b4
2
.hgtags
2
.hgtags
@ -1,3 +1,4 @@
|
||||
898cbe31fbdae2d25d141384fac746cc244a730c jdk-9+170
|
||||
c7efde2b60fc1ec04630be769d9ad60efb39c39c jdk-9+169
|
||||
8fd0a4569191f33c98ee90c2709174a342fefb0d jdk-9+167
|
||||
fcabc74bd44e56c7419d111d59b95669ecb33c55 jdk-9+168
|
||||
@ -420,3 +421,4 @@ d1cab6c7e608479be4ebfad48a25b0ed48600f62 jdk-10+3
|
||||
f113ce12fe24fbd24acf02711372d9f1e1c12426 jdk-10+5
|
||||
1407b19a2ddf6baae162f5a1a5b96af473f4d7d1 jdk-10+6
|
||||
30e75693ae99fd8e47fd2f5116527aff1b59aff9 jdk-10+7
|
||||
c42dc7b58b4d4301ea676a76326fd9bbd403d595 jdk-10+8
|
||||
|
@ -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 @@ ac697b2bdf486ef18caad2092bd24036e14946ac jdk-10+5
|
||||
646567dcfa64b9a39b33d71330427737d1c1a0d5 jdk-9+167
|
||||
23a87f409371fb8ce7b764cccb3a74c3f6b29900 jdk-9+168
|
||||
5d9d2a65fb26aa183019346c11d9314819621665 jdk-9+169
|
||||
6e78f902f477a093afca85a1042f97410d01eb69 jdk-9+170
|
||||
09cae4c36242734f5450de739b8264523a030809 jdk-10+7
|
||||
856998840907b67b7e1fc49259f785ac085a189b jdk-10+8
|
||||
|
@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -22,14 +23,6 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2009 by Oracle Corporation. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
* $Id: FeatureState.java 3024 2011-03-01 03:46:13Z joehw $
|
||||
*/
|
||||
|
||||
package com.sun.org.apache.xerces.internal.util;
|
||||
|
||||
public class FeatureState {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
*/
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
|
@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -22,13 +23,6 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2009 by Oracle Corporation. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
* $Id: PropertyState.java 3024 2011-03-01 03:46:13Z joehw $
|
||||
*/
|
||||
package com.sun.org.apache.xerces.internal.util;
|
||||
|
||||
public class PropertyState {
|
||||
|
@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -22,13 +23,6 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2009 by Oracle Corporation. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
* $Id: Status.java 3024 2011-03-01 03:46:13Z joehw $
|
||||
*/
|
||||
package com.sun.org.apache.xerces.internal.util;
|
||||
|
||||
public enum Status {
|
||||
|
@ -1,32 +1,21 @@
|
||||
/*
|
||||
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*
|
||||
* THIS FILE WAS MODIFIED BY SUN MICROSYSTEMS, INC.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright 2005 The Apache Software Foundation.
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.sun.xml.internal.stream.dtd.nonvalidating;
|
||||
|
@ -1,7 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2005, 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
|
||||
@ -23,48 +22,45 @@ 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
|
||||
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>javax.xml.transform.stax</title>
|
||||
<head>
|
||||
<title>javax.xml.transform.stax</title>
|
||||
|
||||
<meta name="CVS"
|
||||
content="$Id: package.html,v 1.2 2005/11/03 19:34:28 jeffsuttor Exp $" />
|
||||
<meta name="AUTHOR"
|
||||
content="Jeff.Suttor@Sun.com" />
|
||||
<meta name="AUTHOR"
|
||||
content="Neeraj.Bajaj@Sun.com" />
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Provides for StAX-specific transformation APIs.
|
||||
TODO: better description(s).
|
||||
</p>
|
||||
<meta name="CVS"
|
||||
content="$Id: package.html,v 1.2 2005/11/03 19:34:28 jeffsuttor Exp $" />
|
||||
<meta name="AUTHOR"
|
||||
content="Jeff.Suttor@Sun.com" />
|
||||
<meta name="AUTHOR"
|
||||
content="Neeraj.Bajaj@Sun.com" />
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
This package implements StAX-specific transformation APIs. It provides
|
||||
classes which allow input from a StAX reader, that is,
|
||||
{@link javax.xml.stream.XMLStreamReader} or {@link javax.xml.stream.XMLEventReader},
|
||||
and output to a StAX writer, that is,
|
||||
{@link javax.xml.stream.XMLStreamWriter} or {@link javax.xml.stream.XMLEventWriter}.
|
||||
</p>
|
||||
<p>
|
||||
The {@link javax.xml.transform.stax.StAXSource} class encapsulates a
|
||||
{@link javax.xml.stream.XMLStreamReader} or {@link javax.xml.stream.XMLEventReader}
|
||||
and can be used as an input where a {@link javax.xml.transform.Source}
|
||||
object is accepted.
|
||||
</p>
|
||||
<p>
|
||||
The {@link javax.xml.transform.stax.StAXResult} class encapsulates a
|
||||
{@link javax.xml.stream.XMLStreamWriter} or {@link javax.xml.stream.XMLEventWriter}
|
||||
and can be used as an output where a {@link javax.xml.transform.Result}
|
||||
object is accepted.
|
||||
</p>
|
||||
|
||||
<h2>Package Specification</h2>
|
||||
<ul>
|
||||
<li><a href="http://jcp.org/en/jsr/detail?id=173">JSR 173: Streaming API for XML</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>Related Documentation</h2>
|
||||
|
||||
<p>For overviews, tutorials, examples, guides, and tool documentation, please see:</p>
|
||||
<ul>
|
||||
<li><a href="">TODO: Refer to non-spec documentation</a></li>
|
||||
</ul>
|
||||
|
||||
<!-- Put @see and @since tags down here. -->
|
||||
<ul>
|
||||
<li>@see XMLStreamReader</li>
|
||||
<li>@see XMLEventReader</li>
|
||||
</ul>
|
||||
|
||||
@since 1.6
|
||||
</body>
|
||||
@since 1.6
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
@ -422,3 +422,6 @@ ac7e572a6a6ba5bbd7e6aa94a289f88cc86256a4 jdk-10+4
|
||||
1c610f1b4097c64cdd722a7fb59f5a4d9cc15ca9 jdk-9+167
|
||||
2746716dcc5a8c28ccf41df0c8fb620b1a1e7098 jdk-9+168
|
||||
912cf69806d518c5af7fba30b340c4cb5458dd22 jdk-9+169
|
||||
e75d3abe579a7b39b762fc0a1a337c49eb072d82 jdk-9+170
|
||||
b0efae7df1dfa14926058baebaf999e4268c955c jdk-10+7
|
||||
e705867d9989d00e4357f66f18b302c95e13b5e7 jdk-10+8
|
||||
|
@ -420,3 +420,5 @@ d1436b2945383cef15edbdba9bb41ef1656c987b jdk-10+5
|
||||
e78da9db6299b3fcba49300d52e2359e82fdd218 jdk-9+168
|
||||
177436a54ca13730ffc725a6e5dbfcd9486f3da3 jdk-9+169
|
||||
ef9954f6896bb0b95ac62bf769f68b59a7a56ccd jdk-9+170
|
||||
cbd65760a005766610583949b3b5c9ace92e74b3 jdk-10+7
|
||||
f0adc10ed8316e6cf316e3208c5ecf6835d22bc4 jdk-10+8
|
||||
|
@ -1,122 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package sun.security.ssl;
|
||||
|
||||
/*
|
||||
* enumation of record type
|
||||
*/
|
||||
enum RecordType {
|
||||
|
||||
RECORD_CHANGE_CIPHER_SPEC (Record.ct_change_cipher_spec,
|
||||
HandshakeMessage.ht_not_applicable),
|
||||
RECORD_ALERT (Record.ct_alert,
|
||||
HandshakeMessage.ht_not_applicable),
|
||||
RECORD_HELLO_REQUEST (Record.ct_handshake,
|
||||
HandshakeMessage.ht_hello_request),
|
||||
RECORD_CLIENT_HELLO (Record.ct_handshake,
|
||||
HandshakeMessage.ht_client_hello),
|
||||
RECORD_SERVER_HELLO (Record.ct_handshake,
|
||||
HandshakeMessage.ht_server_hello),
|
||||
RECORD_HELLO_VERIFY_REQUEST (Record.ct_handshake,
|
||||
HandshakeMessage.ht_hello_verify_request),
|
||||
RECORD_NEW_SESSION_TICKET (Record.ct_handshake,
|
||||
HandshakeMessage.ht_new_session_ticket),
|
||||
RECORD_CERTIFICATE (Record.ct_handshake,
|
||||
HandshakeMessage.ht_certificate),
|
||||
RECORD_SERVER_KEY_EXCHANGE (Record.ct_handshake,
|
||||
HandshakeMessage.ht_server_key_exchange),
|
||||
RECORD_CERTIFICATE_REQUEST (Record.ct_handshake,
|
||||
HandshakeMessage.ht_certificate_request),
|
||||
RECORD_SERVER_HELLO_DONE (Record.ct_handshake,
|
||||
HandshakeMessage.ht_server_hello_done),
|
||||
RECORD_CERTIFICATE_VERIFY (Record.ct_handshake,
|
||||
HandshakeMessage.ht_certificate_verify),
|
||||
RECORD_CLIENT_KEY_EXCHANGE (Record.ct_handshake,
|
||||
HandshakeMessage.ht_client_key_exchange),
|
||||
RECORD_FINISHED (Record.ct_handshake,
|
||||
HandshakeMessage.ht_finished),
|
||||
RECORD_CERTIFICATE_URL (Record.ct_handshake,
|
||||
HandshakeMessage.ht_certificate_url),
|
||||
RECORD_CERTIFICATE_STATUS (Record.ct_handshake,
|
||||
HandshakeMessage.ht_certificate_status),
|
||||
RECORD_SUPPLIEMENTAL_DATA (Record.ct_handshake,
|
||||
HandshakeMessage.ht_supplemental_data),
|
||||
RECORD_APPLICATION_DATA (Record.ct_application_data,
|
||||
HandshakeMessage.ht_not_applicable);
|
||||
|
||||
byte contentType;
|
||||
byte handshakeType;
|
||||
|
||||
private RecordType(byte contentType, byte handshakeType) {
|
||||
this.contentType = contentType;
|
||||
this.handshakeType = handshakeType;
|
||||
}
|
||||
|
||||
static RecordType valueOf(byte contentType, byte handshakeType) {
|
||||
if (contentType == Record.ct_change_cipher_spec) {
|
||||
return RECORD_CHANGE_CIPHER_SPEC;
|
||||
} else if (contentType == Record.ct_alert) {
|
||||
return RECORD_ALERT;
|
||||
} else if (contentType == Record.ct_application_data) {
|
||||
return RECORD_APPLICATION_DATA;
|
||||
} else if (handshakeType == HandshakeMessage.ht_hello_request) {
|
||||
return RECORD_HELLO_REQUEST;
|
||||
} else if (handshakeType == HandshakeMessage.ht_client_hello) {
|
||||
return RECORD_CLIENT_HELLO;
|
||||
} else if (handshakeType == HandshakeMessage.ht_server_hello) {
|
||||
return RECORD_SERVER_HELLO;
|
||||
} else if (handshakeType == HandshakeMessage.ht_hello_verify_request) {
|
||||
return RECORD_HELLO_VERIFY_REQUEST;
|
||||
} else if (handshakeType == HandshakeMessage.ht_new_session_ticket) {
|
||||
return RECORD_NEW_SESSION_TICKET;
|
||||
} else if (handshakeType == HandshakeMessage.ht_certificate) {
|
||||
return RECORD_CERTIFICATE;
|
||||
} else if (handshakeType == HandshakeMessage.ht_server_key_exchange) {
|
||||
return RECORD_SERVER_KEY_EXCHANGE;
|
||||
} else if (handshakeType == HandshakeMessage.ht_certificate_request) {
|
||||
return RECORD_CERTIFICATE_REQUEST;
|
||||
} else if (handshakeType == HandshakeMessage.ht_server_hello_done) {
|
||||
return RECORD_SERVER_HELLO_DONE;
|
||||
} else if (handshakeType == HandshakeMessage.ht_certificate_verify) {
|
||||
return RECORD_CERTIFICATE_VERIFY;
|
||||
} else if (handshakeType == HandshakeMessage.ht_client_key_exchange) {
|
||||
return RECORD_CLIENT_KEY_EXCHANGE;
|
||||
} else if (handshakeType == HandshakeMessage.ht_finished) {
|
||||
return RECORD_FINISHED;
|
||||
} else if (handshakeType == HandshakeMessage.ht_certificate_url) {
|
||||
return RECORD_CERTIFICATE_URL;
|
||||
} else if (handshakeType == HandshakeMessage.ht_certificate_status) {
|
||||
return RECORD_CERTIFICATE_STATUS;
|
||||
} else if (handshakeType == HandshakeMessage.ht_supplemental_data) {
|
||||
return RECORD_SUPPLIEMENTAL_DATA;
|
||||
}
|
||||
|
||||
// otherwise, invalid record type
|
||||
throw new IllegalArgumentException(
|
||||
"Invalid record type (ContentType:" + contentType +
|
||||
", HandshakeType:" + handshakeType + ")");
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 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
|
||||
@ -513,7 +513,7 @@ abstract class KeyStore extends KeyStoreSpi {
|
||||
if (entry != null) {
|
||||
// Get end-entity certificate and remove from system cert store
|
||||
X509Certificate[] certChain = entry.getCertificateChain();
|
||||
if (certChain != null) {
|
||||
if (certChain != null && certChain.length > 0) {
|
||||
|
||||
try {
|
||||
|
||||
@ -629,7 +629,9 @@ abstract class KeyStore extends KeyStoreSpi {
|
||||
|
||||
for (Map.Entry<String,KeyEntry> mapEntry : entries.entrySet()) {
|
||||
KeyEntry entry = mapEntry.getValue();
|
||||
if (entry.certChain != null && entry.certChain[0].equals(cert)) {
|
||||
if (entry.certChain != null &&
|
||||
entry.certChain.length > 0 &&
|
||||
entry.certChain[0].equals(cert)) {
|
||||
return entry.getAlias();
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ import java.util.concurrent.TimeoutException;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.locks.LockSupport;
|
||||
|
||||
import jdk.testlibrary.LockFreeLogManager;
|
||||
import jdk.test.lib.LockFreeLogger;
|
||||
import jdk.testlibrary.Utils;
|
||||
|
||||
/**
|
||||
@ -100,7 +100,7 @@ public class ThreadStateController extends Thread {
|
||||
private final AtomicInteger iterations = new AtomicInteger();
|
||||
private final AtomicInteger interrupted = new AtomicInteger();
|
||||
|
||||
private final LockFreeLogManager logManager = new LockFreeLogManager();
|
||||
private final LockFreeLogger logger = new LockFreeLogger();
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
@ -349,7 +349,7 @@ public class ThreadStateController extends Thread {
|
||||
}
|
||||
|
||||
private void log(String msg, Object ... params) {
|
||||
logManager.log(msg, params);
|
||||
logger.log(msg, params);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -361,6 +361,6 @@ public class ThreadStateController extends Thread {
|
||||
public String getLog() throws InterruptedException {
|
||||
this.join();
|
||||
|
||||
return logManager.toString();
|
||||
return logger.toString();
|
||||
}
|
||||
}
|
||||
|
@ -31,6 +31,7 @@ import static java.lang.Thread.State.*;
|
||||
*
|
||||
* @author Mandy Chung
|
||||
* @library /lib/testlibrary
|
||||
* @library /test/lib
|
||||
* @build jdk.testlibrary.*
|
||||
* @build ThreadStateTest ThreadStateController
|
||||
* @run main/othervm -Xmixed ThreadStateTest
|
||||
|
@ -29,17 +29,17 @@
|
||||
* @author Mandy Chung
|
||||
* @author Jaroslav Bachorik
|
||||
*
|
||||
* @library /lib/testlibrary
|
||||
* @library /test/lib
|
||||
*
|
||||
* @build jdk.testlibrary.*
|
||||
* @run main/othervm Locks
|
||||
*/
|
||||
import java.lang.management.*;
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.Phaser;
|
||||
import java.util.function.Predicate;
|
||||
import jdk.testlibrary.LockFreeLogManager;
|
||||
import jdk.test.lib.LockFreeLogger;
|
||||
|
||||
public class Locks {
|
||||
|
||||
@ -47,7 +47,7 @@ public class Locks {
|
||||
private static final Object OBJB = new Object();
|
||||
private static final EnhancedWaiter OBJC = new EnhancedWaiter();
|
||||
private static final ThreadMXBean TM = ManagementFactory.getThreadMXBean();
|
||||
private static final LockFreeLogManager LOGGER = new LockFreeLogManager();
|
||||
private static final LockFreeLogger LOGGER = new LockFreeLogger();
|
||||
|
||||
private static String getLockName(Object lock) {
|
||||
if (lock == null) return null;
|
||||
@ -60,12 +60,12 @@ public class Locks {
|
||||
if (t == null) {
|
||||
return;
|
||||
}
|
||||
Optional<ThreadInfo> result = Arrays.asList(
|
||||
TM.getThreadInfo(TM.getAllThreadIds(), true, true)).
|
||||
stream().
|
||||
filter(tInfo -> (tInfo != null && tInfo.getLockOwnerName() != null)
|
||||
? tInfo.getLockOwnerName().equals(t.getName()) : false).
|
||||
findAny();
|
||||
String name = t.getName();
|
||||
Optional<ThreadInfo> result = Arrays.stream(
|
||||
TM.getThreadInfo(TM.getAllThreadIds(), true, true))
|
||||
.filter(Objects::nonNull)
|
||||
.filter(i -> name.equals(i.getLockOwnerName()))
|
||||
.findAny();
|
||||
if (result.isPresent()) {
|
||||
throw new RuntimeException("Thread " + t.getName() + " is not "
|
||||
+ "supposed to be hold any lock. Currently owning lock : "
|
||||
|
@ -31,6 +31,7 @@
|
||||
*
|
||||
* @library ../../Thread
|
||||
* @library /lib/testlibrary
|
||||
* @library /test/lib
|
||||
*
|
||||
* @build jdk.testlibrary.*
|
||||
* @build ThreadMXBeanStateTest ThreadStateController
|
||||
|
81
jdk/test/sun/security/mscapi/KeyStoreEmptyCertChain.java
Normal file
81
jdk/test/sun/security/mscapi/KeyStoreEmptyCertChain.java
Normal file
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8172244
|
||||
* @summary Verify that no exception is thrown with empty cert chain
|
||||
* in MSCAPI.
|
||||
* @requires os.family == "windows"
|
||||
* @modules java.base/sun.security.tools.keytool java.base/sun.security.x509
|
||||
* @run main/othervm --add-opens java.base/java.security=ALL-UNNAMED
|
||||
* KeyStoreEmptyCertChain
|
||||
*/
|
||||
|
||||
import java.security.KeyStore;
|
||||
import java.security.cert.Certificate;
|
||||
import sun.security.x509.X500Name;
|
||||
import sun.security.tools.keytool.CertAndKeyGen;
|
||||
import java.security.KeyPairGenerator;
|
||||
import java.security.KeyPair;
|
||||
import java.security.PrivateKey;
|
||||
import java.security.KeyStoreSpi;
|
||||
import java.lang.reflect.*;
|
||||
|
||||
public class KeyStoreEmptyCertChain {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
try {
|
||||
|
||||
KeyStore keyStore = KeyStore.getInstance("Windows-MY", "SunMSCAPI");
|
||||
keyStore.load(null, null);
|
||||
|
||||
// Generate a certificate to use for testing
|
||||
CertAndKeyGen gen = new CertAndKeyGen("RSA", "SHA256withRSA");
|
||||
gen.generate(2048);
|
||||
Certificate cert =
|
||||
gen.getSelfCertificate(new X500Name("CN=test"), 3600);
|
||||
String alias = "JDK-8172244";
|
||||
char[] password = "password".toCharArray();
|
||||
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
|
||||
|
||||
// generate a private key for the certificate
|
||||
kpg.initialize(2048);
|
||||
KeyPair keyPair = kpg.generateKeyPair();
|
||||
PrivateKey privKey = keyPair.getPrivate();
|
||||
// need to bypass checks to store the private key without the cert
|
||||
Field spiField = KeyStore.class.getDeclaredField("keyStoreSpi");
|
||||
spiField.setAccessible(true);
|
||||
KeyStoreSpi spi = (KeyStoreSpi) spiField.get(keyStore);
|
||||
spi.engineSetKeyEntry(alias, privKey, password, new Certificate[0]);
|
||||
keyStore.store(null, null);
|
||||
|
||||
keyStore.getCertificateAlias(cert);
|
||||
keyStore.deleteEntry(alias);
|
||||
// test passes if no exception is thrown
|
||||
} catch (Exception ex) {
|
||||
throw new RuntimeException(ex);
|
||||
}
|
||||
}
|
||||
}
|
@ -25,13 +25,12 @@
|
||||
* @test
|
||||
* @bug 8160286
|
||||
* @summary Test the recording and checking of module hashes
|
||||
* @library /lib/testlibrary
|
||||
* @library /test/lib
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* java.base/jdk.internal.module
|
||||
* jdk.compiler
|
||||
* jdk.jartool
|
||||
* jdk.jlink
|
||||
* @build CompilerUtils ModuleInfoMaker
|
||||
* @run testng HashesTest
|
||||
*/
|
||||
|
||||
@ -62,6 +61,8 @@ import jdk.internal.module.ModuleInfo;
|
||||
import jdk.internal.module.ModuleHashes;
|
||||
import jdk.internal.module.ModulePath;
|
||||
|
||||
import jdk.test.lib.compiler.ModuleInfoMaker;
|
||||
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.*;
|
||||
@ -382,7 +383,7 @@ public class HashesTest {
|
||||
makeModule(mn, null, deps);
|
||||
}
|
||||
|
||||
private void makeModule(String mn, ModuleDescriptor.Requires.Modifier mod, String... deps)
|
||||
private void makeModule(String mn, ModuleDescriptor.Requires.Modifier mod, String... deps)
|
||||
throws IOException
|
||||
{
|
||||
if (mod != null && mod != TRANSITIVE && mod != STATIC) {
|
||||
@ -390,23 +391,23 @@ public class HashesTest {
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("module " + mn + " {").append("\n");
|
||||
Arrays.stream(deps).forEach(req -> {
|
||||
sb.append(" requires ");
|
||||
if (mod != null) {
|
||||
sb.append(mod.toString().toLowerCase()).append(" ");
|
||||
}
|
||||
sb.append(req + ";\n");
|
||||
});
|
||||
sb.append("module ")
|
||||
.append(mn)
|
||||
.append(" {")
|
||||
.append("\n");
|
||||
Arrays.stream(deps)
|
||||
.forEach(req -> {
|
||||
sb.append(" requires ");
|
||||
if (mod != null) {
|
||||
sb.append(mod.toString().toLowerCase())
|
||||
.append(" ");
|
||||
}
|
||||
sb.append(req)
|
||||
.append(";\n");
|
||||
});
|
||||
sb.append("}\n");
|
||||
builder.writeJavaFiles(mn, sb.toString());
|
||||
|
||||
compileModule(mn, srcDir);
|
||||
}
|
||||
|
||||
private void compileModule(String moduleName, Path src) throws IOException {
|
||||
Path msrc = src.resolve(moduleName);
|
||||
assertTrue(CompilerUtils.compile(msrc, mods, "--module-source-path", src.toString()));
|
||||
builder.compile(mn, mods);
|
||||
}
|
||||
|
||||
private void jmodHashModules(String moduleName, String hashModulesPattern) {
|
||||
|
@ -25,9 +25,8 @@
|
||||
* @test
|
||||
* @bug 8168836
|
||||
* @summary Basic argument validation for --add-exports
|
||||
* @library /lib/testlibrary
|
||||
* @library /lib/testlibrary /test/lib
|
||||
* @modules jdk.compiler
|
||||
* @build AddExportsTestWarningError CompilerUtils ModuleInfoMaker
|
||||
* @build jdk.testlibrary.*
|
||||
* @run testng AddExportsTestWarningError
|
||||
*/
|
||||
@ -40,6 +39,7 @@ import java.nio.file.Paths;
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import jdk.test.lib.compiler.ModuleInfoMaker;
|
||||
import jdk.testlibrary.OutputAnalyzer;
|
||||
import static jdk.testlibrary.ProcessTools.*;
|
||||
|
||||
@ -48,7 +48,6 @@ import org.testng.annotations.DataProvider;
|
||||
import org.testng.annotations.Test;
|
||||
import static org.testng.Assert.*;
|
||||
|
||||
|
||||
@Test
|
||||
public class AddExportsTestWarningError {
|
||||
|
||||
|
@ -25,9 +25,9 @@
|
||||
* @test
|
||||
* @bug 8168836
|
||||
* @summary Basic argument validation for --add-reads
|
||||
* @library /lib/testlibrary
|
||||
* @library /lib/testlibrary /test/lib
|
||||
* @modules jdk.compiler
|
||||
* @build AddReadsTestWarningError CompilerUtils ModuleInfoMaker
|
||||
* @build AddReadsTestWarningError
|
||||
* @build jdk.testlibrary.*
|
||||
* @run testng AddReadsTestWarningError
|
||||
*/
|
||||
@ -40,6 +40,7 @@ import java.nio.file.Paths;
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import jdk.test.lib.compiler.ModuleInfoMaker;
|
||||
import jdk.testlibrary.OutputAnalyzer;
|
||||
import static jdk.testlibrary.ProcessTools.*;
|
||||
|
||||
@ -48,7 +49,6 @@ import org.testng.annotations.DataProvider;
|
||||
import org.testng.annotations.Test;
|
||||
import static org.testng.Assert.*;
|
||||
|
||||
|
||||
@Test
|
||||
public class AddReadsTestWarningError {
|
||||
|
||||
|
@ -419,3 +419,6 @@ ef9180164e0847387519152d08bbcbcf9da0606d jdk-10+4
|
||||
f260f1a2acf616509a4ee5a29bc7f2acca3853e3 jdk-9+167
|
||||
bc21e5ba6bf1538551093f57fa0f1a6571be05cc jdk-9+168
|
||||
0e522ff8b9f52a9d4929af9a6aa84110f4dcd81d jdk-9+169
|
||||
18355c879c69a33167f1862896738a7b9a4da729 jdk-9+170
|
||||
85581ae8a97f20fd2f817a71eb3cd7b04e492722 jdk-10+7
|
||||
6d9a33d72d0647f3981c9d9c636a6f1290689895 jdk-10+8
|
||||
|
@ -25,10 +25,20 @@
|
||||
|
||||
include JarArchive.gmk
|
||||
include JavaCompilation.gmk
|
||||
include Modules.gmk
|
||||
include SetupJavaCompilers.gmk
|
||||
|
||||
################################################################################
|
||||
|
||||
# This is needed to properly setup DOCS_MODULES.
|
||||
$(eval $(call ReadImportMetaData))
|
||||
|
||||
# Modules that should be visible for 9 - the documented modules:
|
||||
CT_MODULES := $(DOCS_MODULES)
|
||||
|
||||
# Get the complete module source path:
|
||||
CT_MODULESOURCEPATH := $(call GetModuleSrcPath)
|
||||
|
||||
CT_DATA_DESCRIPTION ?= $(LANGTOOLS_TOPDIR)/make/data/symbols/symbols
|
||||
|
||||
$(eval $(call SetupJavaCompilation, COMPILE_CREATE_SYMBOLS, \
|
||||
@ -41,6 +51,8 @@ $(eval $(call SetupJavaCompilation, COMPILE_CREATE_SYMBOLS, \
|
||||
|
||||
ifeq ($(BOOT_JDK_MODULAR), true)
|
||||
COMPILECREATESYMBOLS_ADD_EXPORTS := \
|
||||
--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
|
||||
--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED \
|
||||
--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED \
|
||||
--add-exports=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED \
|
||||
--add-exports=jdk.jdeps/com.sun.tools.classfile=ALL-UNNAMED
|
||||
@ -59,6 +71,14 @@ $(SUPPORT_OUTPUTDIR)/symbols/ct.sym-files/_the.symbols: \
|
||||
build-ctsym \
|
||||
$(CT_DATA_DESCRIPTION) \
|
||||
$(@D)
|
||||
$(MKDIR) $(@D)/9
|
||||
$(JAVA_SMALL) $(INTERIM_LANGTOOLS_ARGS) \
|
||||
$(COMPILECREATESYMBOLS_ADD_EXPORTS) \
|
||||
-classpath $(BUILDTOOLS_OUTPUTDIR)/create_symbols \
|
||||
build.tools.symbolgenerator.TransitiveDependencies \
|
||||
$(CT_MODULESOURCEPATH) \
|
||||
$(CT_MODULES) \
|
||||
>$(@D)/9/system-modules
|
||||
$(TOUCH) $@
|
||||
|
||||
# Can't generate ct.sym directly into modules libs as the SetupJarArchive macro
|
||||
@ -66,7 +86,7 @@ $(SUPPORT_OUTPUTDIR)/symbols/ct.sym-files/_the.symbols: \
|
||||
$(eval $(call SetupJarArchive, CREATE_CTSYM, \
|
||||
DEPENDENCIES := $(SUPPORT_OUTPUTDIR)/symbols/ct.sym-files/_the.symbols, \
|
||||
SRCS := $(SUPPORT_OUTPUTDIR)/symbols/ct.sym-files, \
|
||||
SUFFIXES := .sig, \
|
||||
SUFFIXES := .sig system-modules, \
|
||||
JAR := $(SUPPORT_OUTPUTDIR)/symbols/ct.sym, \
|
||||
))
|
||||
|
||||
|
@ -0,0 +1,103 @@
|
||||
/*
|
||||
* 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.symbolgenerator;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.lang.model.element.ModuleElement.RequiresDirective;
|
||||
import javax.lang.model.util.Elements;
|
||||
import javax.tools.JavaCompiler;
|
||||
import javax.tools.ToolProvider;
|
||||
|
||||
import com.sun.tools.javac.api.JavacTaskImpl;
|
||||
import com.sun.tools.javac.code.Symbol.ModuleSymbol;
|
||||
|
||||
/**
|
||||
* Print reflexive transitive closure of the given modules along their requires transitive edges.
|
||||
*/
|
||||
public class TransitiveDependencies {
|
||||
|
||||
private static void help() {
|
||||
System.err.println("java TransitiveDependencies <module-source-path> <root-modules>");
|
||||
}
|
||||
|
||||
public static void main(String... args) throws IOException {
|
||||
if (args.length < 1) {
|
||||
help();
|
||||
return ;
|
||||
}
|
||||
|
||||
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
|
||||
List<String> options = Arrays.asList("-source", "9",
|
||||
"-target", "9",
|
||||
"--system", "none",
|
||||
"--module-source-path", args[0],
|
||||
"--add-modules", Arrays.stream(args)
|
||||
.skip(1)
|
||||
.collect(Collectors.joining(",")));
|
||||
List<String> jlObjectList = Arrays.asList("java.lang.Object");
|
||||
JavacTaskImpl task = (JavacTaskImpl) compiler.getTask(null, null, d -> {}, options, jlObjectList, null);
|
||||
task.enter();
|
||||
Elements elements = task.getElements();
|
||||
List<String> todo = new LinkedList<>();
|
||||
Arrays.stream(args).skip(1).forEach(todo::add);
|
||||
Set<String> allModules = new HashSet<>();
|
||||
|
||||
while (!todo.isEmpty()) {
|
||||
String current = todo.remove(0);
|
||||
|
||||
if (!allModules.add(current))
|
||||
continue;
|
||||
|
||||
ModuleSymbol mod = (ModuleSymbol) elements.getModuleElement(current);
|
||||
|
||||
if (mod == null) {
|
||||
throw new IllegalStateException("Missing: " + current);
|
||||
}
|
||||
|
||||
//use the internal structure to avoid unnecesarily completing the symbol using the UsesProvidesVisitor:
|
||||
for (RequiresDirective rd : mod.requires) {
|
||||
if (rd.isTransitive()) {
|
||||
todo.add(rd.getDependency().getQualifiedName().toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
allModules.add("java.base");
|
||||
allModules.add("jdk.unsupported");
|
||||
|
||||
allModules.stream()
|
||||
.sorted()
|
||||
.forEach(System.out::println);
|
||||
}
|
||||
|
||||
}
|
@ -1889,10 +1889,13 @@ public class Infer {
|
||||
Type i = n_i.data.first();
|
||||
for (Node n_j : nodes) {
|
||||
Type j = n_j.data.first();
|
||||
UndetVar uv_i = (UndetVar)inferenceContext.asUndetVar(i);
|
||||
if (Type.containsAny(uv_i.getBounds(InferenceBound.values()), List.of(j))) {
|
||||
//update i's bound dependencies
|
||||
n_i.addDependency(n_j);
|
||||
// don't compare a variable to itself
|
||||
if (i != j) {
|
||||
UndetVar uv_i = (UndetVar)inferenceContext.asUndetVar(i);
|
||||
if (Type.containsAny(uv_i.getBounds(InferenceBound.values()), List.of(j))) {
|
||||
//update i's bound dependencies
|
||||
n_i.addDependency(n_j);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -142,6 +142,7 @@ public class Modules extends JCTree.Visitor {
|
||||
private final ModuleFinder moduleFinder;
|
||||
private final Source source;
|
||||
private final boolean allowModules;
|
||||
private final boolean allowAccessIntoSystem;
|
||||
|
||||
public final boolean multiModuleMode;
|
||||
|
||||
@ -192,6 +193,7 @@ public class Modules extends JCTree.Visitor {
|
||||
allowModules = source.allowModules();
|
||||
Options options = Options.instance(context);
|
||||
|
||||
allowAccessIntoSystem = options.isUnset(Option.RELEASE);
|
||||
lintOptions = options.isUnset(Option.XLINT_CUSTOM, "-" + LintCategory.OPTIONS.option);
|
||||
|
||||
Collection<String> xmodules = options.keySet()
|
||||
@ -1221,7 +1223,7 @@ public class Modules extends JCTree.Visitor {
|
||||
for (String limit : extraLimitMods) {
|
||||
limitMods.add(syms.enterModule(names.fromString(limit)));
|
||||
}
|
||||
observable = computeTransitiveClosure(limitMods, null);
|
||||
observable = computeTransitiveClosure(limitMods, rootModules, null);
|
||||
observable.addAll(rootModules);
|
||||
if (lintOptions) {
|
||||
for (ModuleSymbol msym : limitMods) {
|
||||
@ -1301,7 +1303,7 @@ public class Modules extends JCTree.Visitor {
|
||||
}
|
||||
}
|
||||
|
||||
Set<ModuleSymbol> result = computeTransitiveClosure(enabledRoot, observable);
|
||||
Set<ModuleSymbol> result = computeTransitiveClosure(enabledRoot, rootModules, observable);
|
||||
|
||||
result.add(syms.unnamedModule);
|
||||
|
||||
@ -1339,12 +1341,18 @@ public class Modules extends JCTree.Visitor {
|
||||
return allModules == null || allModules.contains(msym);
|
||||
}
|
||||
|
||||
private Set<ModuleSymbol> computeTransitiveClosure(Set<? extends ModuleSymbol> base, Set<ModuleSymbol> observable) {
|
||||
private Set<ModuleSymbol> computeTransitiveClosure(Set<? extends ModuleSymbol> base,
|
||||
Set<? extends ModuleSymbol> rootModules,
|
||||
Set<ModuleSymbol> observable) {
|
||||
List<ModuleSymbol> primaryTodo = List.nil();
|
||||
List<ModuleSymbol> secondaryTodo = List.nil();
|
||||
|
||||
for (ModuleSymbol ms : base) {
|
||||
primaryTodo = primaryTodo.prepend(ms);
|
||||
if (rootModules.contains(ms)) {
|
||||
primaryTodo = primaryTodo.prepend(ms);
|
||||
} else {
|
||||
secondaryTodo = secondaryTodo.prepend(ms);
|
||||
}
|
||||
}
|
||||
|
||||
Set<ModuleSymbol> result = new LinkedHashSet<>();
|
||||
@ -1367,12 +1375,12 @@ public class Modules extends JCTree.Visitor {
|
||||
if (!result.add(current) || current == syms.unnamedModule || ((current.flags_field & Flags.AUTOMATIC_MODULE) != 0))
|
||||
continue;
|
||||
current.complete();
|
||||
if (current.kind == ERR && isPrimaryTodo && warnedMissing.add(current)) {
|
||||
if (current.kind == ERR && (isPrimaryTodo || base.contains(current)) && warnedMissing.add(current)) {
|
||||
log.error(Errors.ModuleNotFound(current));
|
||||
}
|
||||
for (RequiresDirective rd : current.requires) {
|
||||
if (rd.module == syms.java_base) continue;
|
||||
if ((rd.isTransitive() && isPrimaryTodo) || base.contains(current)) {
|
||||
if ((rd.isTransitive() && isPrimaryTodo) || rootModules.contains(current)) {
|
||||
primaryTodo = primaryTodo.prepend(rd.module);
|
||||
} else {
|
||||
secondaryTodo = secondaryTodo.prepend(rd.module);
|
||||
@ -1479,6 +1487,10 @@ public class Modules extends JCTree.Visitor {
|
||||
}
|
||||
}
|
||||
|
||||
if (!allowAccessIntoSystem && (msym.flags() & Flags.SYSTEM_MODULE) != 0 &&
|
||||
msym.patchLocation != null) {
|
||||
log.error(Errors.PatchModuleWithRelease(msym));
|
||||
}
|
||||
}
|
||||
|
||||
private Set<ModuleSymbol> retrieveRequiresTransitive(ModuleSymbol msym) {
|
||||
@ -1604,6 +1616,12 @@ public class Modules extends JCTree.Visitor {
|
||||
|
||||
if (!isValidName(packageName))
|
||||
continue;
|
||||
|
||||
if (!allowAccessIntoSystem && (msym.flags() & Flags.SYSTEM_MODULE) != 0) {
|
||||
log.error(Errors.AddExportsWithRelease(msym));
|
||||
continue;
|
||||
}
|
||||
|
||||
PackageSymbol p = syms.enterPackage(msym, names.fromString(packageName));
|
||||
p.modle = msym; // TODO: do we need this?
|
||||
|
||||
@ -1679,6 +1697,11 @@ public class Modules extends JCTree.Visitor {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!allowAccessIntoSystem && (msym.flags() & Flags.SYSTEM_MODULE) != 0) {
|
||||
log.error(Errors.AddReadsWithRelease(msym));
|
||||
continue;
|
||||
}
|
||||
|
||||
for (String targetName : targetNames.split("[ ,]+", -1)) {
|
||||
ModuleSymbol targetModule;
|
||||
if (targetName.equals("ALL-UNNAMED")) {
|
||||
|
@ -25,6 +25,7 @@
|
||||
|
||||
package com.sun.tools.javac.jvm;
|
||||
|
||||
import com.sun.tools.javac.tree.TreeInfo.PosKind;
|
||||
import com.sun.tools.javac.util.*;
|
||||
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
|
||||
import com.sun.tools.javac.util.List;
|
||||
@ -1399,12 +1400,16 @@ public class Gen extends JCTree.Visitor {
|
||||
catchallpc, 0);
|
||||
startseg = env.info.gaps.next().intValue();
|
||||
}
|
||||
code.statBegin(TreeInfo.finalizerPos(env.tree));
|
||||
code.statBegin(TreeInfo.finalizerPos(env.tree, PosKind.FIRST_STAT_POS));
|
||||
code.markStatBegin();
|
||||
|
||||
Item excVar = makeTemp(syms.throwableType);
|
||||
excVar.store();
|
||||
genFinalizer(env);
|
||||
code.resolvePending();
|
||||
code.statBegin(TreeInfo.finalizerPos(env.tree, PosKind.END_POS));
|
||||
code.markStatBegin();
|
||||
|
||||
excVar.load();
|
||||
registerCatch(body.pos(), startseg,
|
||||
env.info.gaps.next().intValue(),
|
||||
@ -1418,7 +1423,7 @@ public class Gen extends JCTree.Visitor {
|
||||
code.resolve(env.info.cont);
|
||||
|
||||
// Mark statement line number
|
||||
code.statBegin(TreeInfo.finalizerPos(env.tree));
|
||||
code.statBegin(TreeInfo.finalizerPos(env.tree, PosKind.FIRST_STAT_POS));
|
||||
code.markStatBegin();
|
||||
|
||||
// Save return address.
|
||||
|
@ -300,7 +300,8 @@ public class Arguments {
|
||||
Option.XBOOTCLASSPATH_PREPEND,
|
||||
Option.ENDORSEDDIRS, Option.DJAVA_ENDORSED_DIRS,
|
||||
Option.EXTDIRS, Option.DJAVA_EXT_DIRS,
|
||||
Option.SOURCE, Option.TARGET);
|
||||
Option.SOURCE, Option.TARGET,
|
||||
Option.SYSTEM, Option.UPGRADE_MODULE_PATH);
|
||||
|
||||
if (platformString != null) {
|
||||
PlatformDescription platformDescription = PlatformUtils.lookupPlatformDescription(platformString);
|
||||
@ -331,7 +332,12 @@ public class Arguments {
|
||||
try {
|
||||
StandardJavaFileManager sfm = (StandardJavaFileManager) fm;
|
||||
|
||||
sfm.setLocationFromPaths(StandardLocation.PLATFORM_CLASS_PATH, platformCP);
|
||||
if (Source.instance(context).allowModules()) {
|
||||
sfm.handleOption("--system", Arrays.asList("none").iterator());
|
||||
sfm.setLocationFromPaths(StandardLocation.UPGRADE_MODULE_PATH, platformCP);
|
||||
} else {
|
||||
sfm.setLocationFromPaths(StandardLocation.PLATFORM_CLASS_PATH, platformCP);
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
log.printLines(PrefixKind.JAVAC, "msg.io");
|
||||
ex.printStackTrace(log.getWriter(WriterKind.NOTICE));
|
||||
|
@ -26,6 +26,8 @@
|
||||
package com.sun.tools.javac.platform;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.DirectoryStream;
|
||||
import java.nio.file.FileSystem;
|
||||
import java.nio.file.FileSystems;
|
||||
@ -41,6 +43,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import javax.annotation.processing.Processor;
|
||||
|
||||
@ -63,7 +66,7 @@ public class JDKPlatformProvider implements PlatformProvider {
|
||||
|
||||
@Override
|
||||
public PlatformDescription getPlatform(String platformName, String options) {
|
||||
return new PlatformDescriptionImpl(platformName);
|
||||
return new PlatformDescriptionImpl(platformName.equals("10") ? "9" : platformName);
|
||||
}
|
||||
|
||||
private static final String[] symbolFileLocation = { "lib", "ct.sym" };
|
||||
@ -90,9 +93,10 @@ public class JDKPlatformProvider implements PlatformProvider {
|
||||
} catch (IOException | ProviderNotFoundException ex) {
|
||||
}
|
||||
}
|
||||
// Workaround until full support for --release 9 distinct from --release 10
|
||||
SUPPORTED_JAVA_PLATFORM_VERSIONS.add(targetNumericVersion(Target.JDK1_9));
|
||||
SUPPORTED_JAVA_PLATFORM_VERSIONS.add(targetNumericVersion(Target.DEFAULT));
|
||||
|
||||
if (SUPPORTED_JAVA_PLATFORM_VERSIONS.contains("9")) {
|
||||
SUPPORTED_JAVA_PLATFORM_VERSIONS.add("10");
|
||||
}
|
||||
}
|
||||
|
||||
private static String targetNumericVersion(Target target) {
|
||||
@ -110,12 +114,6 @@ public class JDKPlatformProvider implements PlatformProvider {
|
||||
|
||||
@Override
|
||||
public Collection<Path> getPlatformPath() {
|
||||
// Comparison should be == Target.DEFAULT once --release 9
|
||||
// is distinct from 10
|
||||
if (Target.lookup(version).compareTo(Target.JDK1_9) >= 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
List<Path> paths = new ArrayList<>();
|
||||
Path file = findCtSym();
|
||||
// file == ${jdk.home}/lib/ct.sym
|
||||
@ -132,7 +130,21 @@ public class JDKPlatformProvider implements PlatformProvider {
|
||||
try (DirectoryStream<Path> dir = Files.newDirectoryStream(root)) {
|
||||
for (Path section : dir) {
|
||||
if (section.getFileName().toString().contains(version)) {
|
||||
paths.add(section);
|
||||
Path systemModules = section.resolve("system-modules");
|
||||
|
||||
if (Files.isRegularFile(systemModules)) {
|
||||
Path modules =
|
||||
FileSystems.getFileSystem(URI.create("jrt:/"))
|
||||
.getPath("modules");
|
||||
try (Stream<String> lines =
|
||||
Files.lines(systemModules, Charset.forName("UTF-8"))) {
|
||||
lines.map(line -> modules.resolve(line))
|
||||
.filter(mod -> Files.exists(mod))
|
||||
.forEach(mod -> paths.add(mod));
|
||||
}
|
||||
} else {
|
||||
paths.add(section);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
|
@ -3027,6 +3027,18 @@ compiler.warn.module.for.option.not.found=\
|
||||
compiler.err.addmods.all.module.path.invalid=\
|
||||
--add-modules ALL-MODULE-PATH can only be used when compiling the unnamed module
|
||||
|
||||
# 0: symbol
|
||||
compiler.err.add.exports.with.release=\
|
||||
exporting a package from system module {0} is not allowed with --release
|
||||
|
||||
# 0: symbol
|
||||
compiler.err.add.reads.with.release=\
|
||||
adding read edges for system module {0} is not allowed with --release
|
||||
|
||||
# 0: symbol
|
||||
compiler.err.patch.module.with.release=\
|
||||
patching system module {0} is not allowed in combination with --release
|
||||
|
||||
compiler.warn.addopens.ignored=\
|
||||
--add-opens has no effect at compile time
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2016, 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
|
||||
@ -46,6 +46,8 @@ import static com.sun.tools.javac.tree.JCTree.Tag.SYNCHRONIZED;
|
||||
|
||||
import javax.tools.JavaFileObject;
|
||||
|
||||
import java.util.function.ToIntFunction;
|
||||
|
||||
import static com.sun.tools.javac.tree.JCTree.JCOperatorExpression.OperandPos.LEFT;
|
||||
import static com.sun.tools.javac.tree.JCTree.JCOperatorExpression.OperandPos.RIGHT;
|
||||
|
||||
@ -580,13 +582,29 @@ public class TreeInfo {
|
||||
};
|
||||
}
|
||||
|
||||
public enum PosKind {
|
||||
START_POS(TreeInfo::getStartPos),
|
||||
FIRST_STAT_POS(TreeInfo::firstStatPos),
|
||||
END_POS(TreeInfo::endPos);
|
||||
|
||||
final ToIntFunction<JCTree> posFunc;
|
||||
|
||||
PosKind(ToIntFunction<JCTree> posFunc) {
|
||||
this.posFunc = posFunc;
|
||||
}
|
||||
|
||||
int toPos(JCTree tree) {
|
||||
return posFunc.applyAsInt(tree);
|
||||
}
|
||||
}
|
||||
|
||||
/** The position of the finalizer of given try/synchronized statement.
|
||||
*/
|
||||
public static int finalizerPos(JCTree tree) {
|
||||
public static int finalizerPos(JCTree tree, PosKind posKind) {
|
||||
if (tree.hasTag(TRY)) {
|
||||
JCTry t = (JCTry) tree;
|
||||
Assert.checkNonNull(t.finalizer);
|
||||
return firstStatPos(t.finalizer);
|
||||
return posKind.toPos(t.finalizer);
|
||||
} else if (tree.hasTag(SYNCHRONIZED)) {
|
||||
return endPos(((JCSynchronized) tree).body);
|
||||
} else {
|
||||
|
@ -26,7 +26,7 @@
|
||||
/**
|
||||
<p style="font-style: italic; font-size:larger">
|
||||
<b>Note:</b> The declarations in this package have been superseded by those
|
||||
in the package {@code jdk.javadoc.doclet}.
|
||||
in the package {@link jdk.javadoc.doclet}.
|
||||
For more information, see the <i>Migration Guide</i> in the documentation for that package.
|
||||
</p>
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2015, 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
|
||||
@ -26,16 +26,8 @@
|
||||
/**
|
||||
<p style="font-style: italic; font-size:larger">
|
||||
<b>Note:</b> The declarations in this package have been superseded by those
|
||||
in the new package {@code jdk.javadoc.doclet}.
|
||||
in the new package {@link jdk.javadoc.doclet}.
|
||||
</p>
|
||||
|
||||
As of JDK version 1.5, replaced by
|
||||
{@code com.sun.tools.doclets.internal.toolkit.util}.
|
||||
|
||||
<p><b>This is NOT part of any supported API.
|
||||
If you write code that depends on this, you do so at your own risk.
|
||||
This code and its internal interfaces are subject to change or
|
||||
deletion without notice.</b>
|
||||
*/
|
||||
|
||||
package com.sun.tools.doclets;
|
||||
|
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* 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
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
<p style="font-style: italic; font-size:larger">
|
||||
<b>Note:</b> The declarations in this package have been superseded by those
|
||||
in the new package {@link jdk.javadoc.doclet}.
|
||||
</p>
|
||||
*/
|
||||
|
||||
package com.sun.tools.doclets.standard;
|
@ -25,6 +25,7 @@
|
||||
|
||||
package jdk.javadoc.internal.doclets.formats.html;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.SortedMap;
|
||||
@ -101,7 +102,7 @@ public abstract class AbstractModuleIndexWriter extends HtmlDocletWriter {
|
||||
* @param tableSummary summary for the table
|
||||
* @param body the document tree to which the modules list will be added
|
||||
*/
|
||||
protected abstract void addModulesList(Map<ModuleElement, Set<PackageElement>> modules, String text,
|
||||
protected abstract void addModulesList(Collection<ModuleElement> modules, String text,
|
||||
String tableSummary, Content body);
|
||||
|
||||
/**
|
||||
@ -173,7 +174,7 @@ public abstract class AbstractModuleIndexWriter extends HtmlDocletWriter {
|
||||
* @param body the document tree to which the index will be added
|
||||
*/
|
||||
protected void addIndex(Content body) {
|
||||
addIndexContents(modules, "doclet.Module_Summary",
|
||||
addIndexContents(configuration.modules, "doclet.Module_Summary",
|
||||
configuration.getText("doclet.Member_Table_Summary",
|
||||
configuration.getText("doclet.Module_Summary"),
|
||||
configuration.getText("doclet.modules")), body);
|
||||
@ -201,7 +202,7 @@ public abstract class AbstractModuleIndexWriter extends HtmlDocletWriter {
|
||||
* @param tableSummary summary for the table
|
||||
* @param body the document tree to which the index contents will be added
|
||||
*/
|
||||
protected void addIndexContents(Map<ModuleElement, Set<PackageElement>> modules, String text,
|
||||
protected void addIndexContents(Collection<ModuleElement> modules, String text,
|
||||
String tableSummary, Content body) {
|
||||
HtmlTree htmlTree = (configuration.allowTag(HtmlTag.NAV))
|
||||
? HtmlTree.NAV()
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -25,6 +25,7 @@
|
||||
|
||||
package jdk.javadoc.internal.doclets.formats.html;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@ -81,7 +82,7 @@ public class ModuleIndexFrameWriter extends AbstractModuleIndexWriter {
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected void addModulesList(Map<ModuleElement, Set<PackageElement>> modules, String text,
|
||||
protected void addModulesList(Collection<ModuleElement> modules, String text,
|
||||
String tableSummary, Content body) {
|
||||
Content heading = HtmlTree.HEADING(HtmlConstants.MODULE_HEADING, true,
|
||||
contents.modulesLabel);
|
||||
@ -90,7 +91,7 @@ public class ModuleIndexFrameWriter extends AbstractModuleIndexWriter {
|
||||
: HtmlTree.DIV(HtmlStyle.indexContainer, heading);
|
||||
HtmlTree ul = new HtmlTree(HtmlTag.UL);
|
||||
ul.setTitle(contents.modulesLabel);
|
||||
for (ModuleElement mdle: modules.keySet()) {
|
||||
for (ModuleElement mdle: modules) {
|
||||
ul.addContent(getModuleLink(mdle));
|
||||
}
|
||||
htmlTree.addContent(ul);
|
||||
|
@ -30,7 +30,7 @@ import java.util.*;
|
||||
import javax.lang.model.element.ModuleElement;
|
||||
import javax.lang.model.element.PackageElement;
|
||||
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
|
||||
@ -56,11 +56,16 @@ import jdk.javadoc.internal.doclets.toolkit.util.Group;
|
||||
public class ModuleIndexWriter extends AbstractModuleIndexWriter {
|
||||
|
||||
/**
|
||||
* Set representing the modules.
|
||||
* Map representing the group of modules as specified on the command line.
|
||||
*
|
||||
* @see Group
|
||||
*/
|
||||
private final SortedSet<ModuleElement> modules;
|
||||
private final Map<String, SortedSet<ModuleElement>> groupModuleMap;
|
||||
|
||||
/**
|
||||
* List to store the order groups as specified on the command line.
|
||||
*/
|
||||
private final List<String> groupList;
|
||||
|
||||
/**
|
||||
* HTML tree for main tag.
|
||||
@ -74,7 +79,8 @@ public class ModuleIndexWriter extends AbstractModuleIndexWriter {
|
||||
*/
|
||||
public ModuleIndexWriter(ConfigurationImpl configuration, DocPath filename) {
|
||||
super(configuration, filename);
|
||||
modules = configuration.modules;
|
||||
groupModuleMap = configuration.group.groupModules(configuration.modules);
|
||||
groupList = configuration.group.getGroupList();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -96,11 +102,13 @@ public class ModuleIndexWriter extends AbstractModuleIndexWriter {
|
||||
*/
|
||||
@Override
|
||||
protected void addIndex(Content body) {
|
||||
if (modules != null && !modules.isEmpty()) {
|
||||
addIndexContents(configuration.getText("doclet.Modules"),
|
||||
configuration.getText("doclet.Member_Table_Summary",
|
||||
configuration.getText("doclet.Module_Summary"),
|
||||
configuration.getText("doclet.modules")), body);
|
||||
for (String groupname : groupList) {
|
||||
SortedSet<ModuleElement> list = groupModuleMap.get(groupname);
|
||||
if (list != null && !list.isEmpty()) {
|
||||
addIndexContents(list,
|
||||
groupname, configuration.getText("doclet.Member_Table_Summary",
|
||||
groupname, configuration.getText("doclet.modules")), body);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -111,7 +119,7 @@ public class ModuleIndexWriter extends AbstractModuleIndexWriter {
|
||||
* @param tableSummary summary for the table
|
||||
* @param body the document tree to which the index contents will be added
|
||||
*/
|
||||
protected void addIndexContents(String title, String tableSummary, Content body) {
|
||||
protected void addIndexContents(Collection<ModuleElement> modules, String title, String tableSummary, Content body) {
|
||||
HtmlTree htmltree = (configuration.allowTag(HtmlTag.NAV))
|
||||
? HtmlTree.NAV()
|
||||
: new HtmlTree(HtmlTag.DIV);
|
||||
@ -123,7 +131,7 @@ public class ModuleIndexWriter extends AbstractModuleIndexWriter {
|
||||
}
|
||||
htmltree.addContent(ul);
|
||||
body.addContent(htmltree);
|
||||
addModulesList(title, tableSummary, body);
|
||||
addModulesList(modules, title, tableSummary, body);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -133,15 +141,17 @@ public class ModuleIndexWriter extends AbstractModuleIndexWriter {
|
||||
* @param tableSummary the summary of the table tag
|
||||
* @param body the content tree to which the module list will be added
|
||||
*/
|
||||
protected void addModulesList(String text, String tableSummary, Content body) {
|
||||
protected void addModulesList(Collection<ModuleElement> modules, String text, String tableSummary, Content body) {
|
||||
Content table = (configuration.isOutputHtml5())
|
||||
? HtmlTree.TABLE(HtmlStyle.overviewSummary, getTableCaption(new RawHtml(text)))
|
||||
: HtmlTree.TABLE(HtmlStyle.overviewSummary, tableSummary, getTableCaption(new RawHtml(text)));
|
||||
table.addContent(getSummaryTableHeader(moduleTableHeader, "col"));
|
||||
Content tbody = new HtmlTree(HtmlTag.TBODY);
|
||||
addModulesList(tbody);
|
||||
addModulesList(modules, tbody);
|
||||
table.addContent(tbody);
|
||||
Content div = HtmlTree.DIV(HtmlStyle.contentContainer, table);
|
||||
Content anchor = getMarkerAnchor(text);
|
||||
Content div = HtmlTree.DIV(HtmlStyle.contentContainer, anchor);
|
||||
div.addContent(table);
|
||||
if (configuration.allowTag(HtmlTag.MAIN)) {
|
||||
htmlTree.addContent(div);
|
||||
} else {
|
||||
@ -154,7 +164,7 @@ public class ModuleIndexWriter extends AbstractModuleIndexWriter {
|
||||
*
|
||||
* @param tbody the documentation tree to which the list will be added
|
||||
*/
|
||||
protected void addModulesList(Content tbody) {
|
||||
protected void addModulesList(Collection<ModuleElement> modules, Content tbody) {
|
||||
boolean altColor = true;
|
||||
for (ModuleElement mdle : modules) {
|
||||
if (!mdle.isUnnamed()) {
|
||||
@ -260,9 +270,4 @@ public class ModuleIndexWriter extends AbstractModuleIndexWriter {
|
||||
protected void addModulePackagesList(Map<ModuleElement, Set<PackageElement>> modules, String text,
|
||||
String tableSummary, Content body, ModuleElement mdle) {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addModulesList(Map<ModuleElement, Set<PackageElement>> modules, String text,
|
||||
String tableSummary, Content body) {
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,6 +26,7 @@
|
||||
package jdk.javadoc.internal.doclets.formats.html;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@ -175,7 +176,7 @@ public class ModulePackageIndexFrameWriter extends AbstractModuleIndexWriter {
|
||||
protected void addOverviewHeader(Content body) {
|
||||
}
|
||||
|
||||
protected void addModulesList(Map<ModuleElement, Set<PackageElement>> modules, String text,
|
||||
protected void addModulesList(Collection<ModuleElement> modules, String text,
|
||||
String tableSummary, Content body) {
|
||||
}
|
||||
|
||||
|
@ -29,11 +29,12 @@ import java.util.*;
|
||||
|
||||
import javax.lang.model.element.PackageElement;
|
||||
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
|
||||
@ -112,8 +113,8 @@ public class PackageIndexWriter extends AbstractPackageIndexWriter {
|
||||
SortedSet<PackageElement> list = groupPackageMap.get(groupname);
|
||||
if (list != null && !list.isEmpty()) {
|
||||
addIndexContents(list,
|
||||
groupname, configuration.getText("doclet.Member_Table_Summary",
|
||||
groupname, configuration.getText("doclet.packages")), body);
|
||||
groupname, configuration.getText("doclet.Member_Table_Summary",
|
||||
groupname, configuration.getText("doclet.packages")), body);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -131,7 +132,9 @@ public class PackageIndexWriter extends AbstractPackageIndexWriter {
|
||||
Content tbody = new HtmlTree(HtmlTag.TBODY);
|
||||
addPackagesList(packages, tbody);
|
||||
table.addContent(tbody);
|
||||
Content div = HtmlTree.DIV(HtmlStyle.contentContainer, table);
|
||||
Content anchor = getMarkerAnchor(text);
|
||||
Content div = HtmlTree.DIV(HtmlStyle.contentContainer, anchor);
|
||||
div.addContent(table);
|
||||
if (configuration.allowTag(HtmlTag.MAIN)) {
|
||||
htmlTree.addContent(div);
|
||||
} else {
|
||||
|
@ -192,9 +192,9 @@ doclet.ClassUse_No.usage.of.0=No usage of {0}
|
||||
doclet.Window_ClassUse_Header=Uses of {0} {1}
|
||||
doclet.ClassUse_Title=Uses of {0}
|
||||
doclet.navClassUse=Use
|
||||
doclet.Error_in_packagelist=Error in using -group option: {0} {1}
|
||||
doclet.Groupname_already_used=In -group option, groupname already used: {0}
|
||||
doclet.Same_package_name_used=Package name format used twice: {0}
|
||||
doclet.Error_in_grouplist=Bad -group option: {0} {1}
|
||||
doclet.Groupname_already_used=In -group option, group name already used: {0}
|
||||
doclet.Same_element_name_used=Element name or pattern used twice: {0}
|
||||
|
||||
# option specifiers
|
||||
doclet.usage.d.parameters=\
|
||||
@ -274,9 +274,9 @@ doclet.usage.excludedocfilessubdir.description=\
|
||||
Exclude any doc-files subdirectories with given name
|
||||
|
||||
doclet.usage.group.parameters=\
|
||||
<name> <p1>:<p2>..
|
||||
<name> <g1>:<g2>...
|
||||
doclet.usage.group.description=\
|
||||
Group specified packages together in overview page
|
||||
Group specified elements together in overview page
|
||||
|
||||
doclet.usage.nocomment.description=\
|
||||
Suppress description and tags, generate only declarations
|
||||
|
@ -699,7 +699,11 @@ public abstract class Configuration {
|
||||
typeElementCatalog = new TypeElementCatalog(includedTypeElements, this);
|
||||
initTagletManager(customTagStrs);
|
||||
groups.stream().forEach((grp) -> {
|
||||
group.checkPackageGroups(grp.value1, grp.value2);
|
||||
if (showModules) {
|
||||
group.checkModuleGroups(grp.value1, grp.value2);
|
||||
} else {
|
||||
group.checkPackageGroups(grp.value1, grp.value2);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -49,6 +49,7 @@ Use --allow-script-in-comments to allow use of JavaScript.
|
||||
doclet.Packages=Packages
|
||||
doclet.Modules=Modules
|
||||
doclet.Other_Packages=Other Packages
|
||||
doclet.Other_Modules=Other Modules
|
||||
doclet.Notice_taglet_registered=Registered Taglet {0} ...
|
||||
doclet.Notice_taglet_unseen=Note: Custom tags that were not seen: {0}
|
||||
doclet.Notice_taglet_overriden=Note: Custom tags that override standard tags: {0}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user