Merge
This commit is contained in:
commit
f87dd6a954
2
.hgtags
2
.hgtags
@ -1,3 +1,4 @@
|
|||||||
|
898cbe31fbdae2d25d141384fac746cc244a730c jdk-9+170
|
||||||
c7efde2b60fc1ec04630be769d9ad60efb39c39c jdk-9+169
|
c7efde2b60fc1ec04630be769d9ad60efb39c39c jdk-9+169
|
||||||
8fd0a4569191f33c98ee90c2709174a342fefb0d jdk-9+167
|
8fd0a4569191f33c98ee90c2709174a342fefb0d jdk-9+167
|
||||||
fcabc74bd44e56c7419d111d59b95669ecb33c55 jdk-9+168
|
fcabc74bd44e56c7419d111d59b95669ecb33c55 jdk-9+168
|
||||||
@ -420,3 +421,4 @@ d1cab6c7e608479be4ebfad48a25b0ed48600f62 jdk-10+3
|
|||||||
f113ce12fe24fbd24acf02711372d9f1e1c12426 jdk-10+5
|
f113ce12fe24fbd24acf02711372d9f1e1c12426 jdk-10+5
|
||||||
1407b19a2ddf6baae162f5a1a5b96af473f4d7d1 jdk-10+6
|
1407b19a2ddf6baae162f5a1a5b96af473f4d7d1 jdk-10+6
|
||||||
30e75693ae99fd8e47fd2f5116527aff1b59aff9 jdk-10+7
|
30e75693ae99fd8e47fd2f5116527aff1b59aff9 jdk-10+7
|
||||||
|
c42dc7b58b4d4301ea676a76326fd9bbd403d595 jdk-10+8
|
||||||
|
@ -419,4 +419,7 @@ ba5b16c9c6d80632b61959a33d424b1c3398ce62 jdk-9+166
|
|||||||
111e2e7d00f45c983cdbc9c59ae40552152fcc23 jdk-10+5
|
111e2e7d00f45c983cdbc9c59ae40552152fcc23 jdk-10+5
|
||||||
03fe61bb7670644cf6e46b5cfafb6b27c0e0157e jdk-10+6
|
03fe61bb7670644cf6e46b5cfafb6b27c0e0157e jdk-10+6
|
||||||
b25838a28195f4b6dab34668411eedd2d366a16c jdk-9+169
|
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
|
#CUSTOM_AUTOCONF_INCLUDE
|
||||||
|
|
||||||
# Do not change or remove the following line, it is needed for consistency checks:
|
# 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.
|
# Check whether --with-jtreg was given.
|
||||||
if test "${with_jtreg+set}" = set; then :
|
if test "${with_jtreg+set}" = set; then :
|
||||||
withval=$with_jtreg;
|
withval=$with_jtreg;
|
||||||
else
|
|
||||||
with_jtreg=no
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
if test "x$with_jtreg" = xno; then
|
if test "x$with_jtreg" = xno; then
|
||||||
# jtreg disabled
|
# jtreg disabled
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg test harness" >&5
|
||||||
$as_echo_n "checking for jtreg... " >&6; }
|
$as_echo_n "checking for jtreg test harness... " >&6; }
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no, disabled" >&5
|
||||||
$as_echo "no" >&6; }
|
$as_echo "no, disabled" >&6; }
|
||||||
else
|
elif test "x$with_jtreg" != xyes && test "x$with_jtreg" != x; then
|
||||||
if test "x$with_jtreg" != xyes; then
|
# An explicit path is specified, use it.
|
||||||
# with path specified.
|
|
||||||
JT_HOME="$with_jtreg"
|
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
|
fi
|
||||||
|
|
||||||
if test "x$JT_HOME" != x; then
|
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg" >&5
|
as_fn_error $? "jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home" "$LINENO" 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
|
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
|
|
||||||
|
|
||||||
|
|
||||||
# jtreg win32 script works for everybody
|
|
||||||
JTREGEXE="$JT_HOME/bin/jtreg"
|
JTREGEXE="$JT_HOME/bin/jtreg"
|
||||||
|
if test ! -x "$JTREGEXE"; then
|
||||||
if test ! -f "$JTREGEXE"; then
|
as_fn_error $? "jtreg home directory from --with-jtreg=$with_jtreg does not contain valid jtreg executable" "$LINENO" 5
|
||||||
as_fn_error $? "JTReg executable does not exist: $JTREGEXE" "$LINENO" 5
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $JTREGEXE" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg test harness" >&5
|
||||||
$as_echo "$JTREGEXE" >&6; }
|
$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
|
else
|
||||||
# try to find jtreg on path
|
# Try to locate jtreg
|
||||||
|
if test "x$JT_HOME" != x; then
|
||||||
|
# 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
|
||||||
|
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
|
||||||
|
|
||||||
|
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.
|
# Publish this variable in the help.
|
||||||
@ -49175,13 +49065,451 @@ $as_echo "$tool_specified" >&6; }
|
|||||||
fi
|
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_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg test harness" >&5
|
||||||
as_fn_error $? "Could not find required tool for JTREGEXE" "$LINENO" 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
|
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
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -271,9 +271,6 @@ BUNDLES_OUTPUTDIR=$(BUILD_OUTPUT)/bundles
|
|||||||
TESTMAKE_OUTPUTDIR=$(BUILD_OUTPUT)/test-make
|
TESTMAKE_OUTPUTDIR=$(BUILD_OUTPUT)/test-make
|
||||||
MAKESUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/make-support
|
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
|
# This does not get overridden in a bootcycle build
|
||||||
CONFIGURESUPPORT_OUTPUTDIR:=@CONFIGURESUPPORT_OUTPUTDIR@
|
CONFIGURESUPPORT_OUTPUTDIR:=@CONFIGURESUPPORT_OUTPUTDIR@
|
||||||
BUILDJDK_OUTPUTDIR=$(BUILD_OUTPUT)/buildjdk
|
BUILDJDK_OUTPUTDIR=$(BUILD_OUTPUT)/buildjdk
|
||||||
@ -819,6 +816,8 @@ INTERIM_IMAGE_DIR := $(SUPPORT_OUTPUTDIR)/interim-image
|
|||||||
# Docs image
|
# Docs image
|
||||||
DOCS_IMAGE_SUBDIR := docs
|
DOCS_IMAGE_SUBDIR := docs
|
||||||
DOCS_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_IMAGE_SUBDIR)
|
DOCS_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_IMAGE_SUBDIR)
|
||||||
|
# Output docs directly into image
|
||||||
|
DOCS_OUTPUTDIR := $(DOCS_IMAGE_DIR)
|
||||||
|
|
||||||
# Macosx bundles directory definitions
|
# Macosx bundles directory definitions
|
||||||
JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle
|
JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle
|
||||||
|
@ -926,41 +926,82 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
|
|||||||
AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG],
|
AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG],
|
||||||
[
|
[
|
||||||
AC_ARG_WITH(jtreg, [AS_HELP_STRING([--with-jtreg],
|
AC_ARG_WITH(jtreg, [AS_HELP_STRING([--with-jtreg],
|
||||||
[Regression Test Harness @<:@probed@:>@])],
|
[Regression Test Harness @<:@probed@:>@])])
|
||||||
[],
|
|
||||||
[with_jtreg=no])
|
|
||||||
|
|
||||||
if test "x$with_jtreg" = xno; then
|
if test "x$with_jtreg" = xno; then
|
||||||
# jtreg disabled
|
# jtreg disabled
|
||||||
AC_MSG_CHECKING([for jtreg])
|
AC_MSG_CHECKING([for jtreg test harness])
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT([no, disabled])
|
||||||
else
|
elif test "x$with_jtreg" != xyes && test "x$with_jtreg" != x; then
|
||||||
if test "x$with_jtreg" != xyes; then
|
# An explicit path is specified, use it.
|
||||||
# with path specified.
|
|
||||||
JT_HOME="$with_jtreg"
|
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
|
fi
|
||||||
|
|
||||||
if test "x$JT_HOME" != x; then
|
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
|
||||||
AC_MSG_CHECKING([for jtreg])
|
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home])
|
||||||
|
fi
|
||||||
|
|
||||||
# use JT_HOME enviroment var.
|
|
||||||
BASIC_FIXUP_PATH([JT_HOME])
|
|
||||||
|
|
||||||
# jtreg win32 script works for everybody
|
|
||||||
JTREGEXE="$JT_HOME/bin/jtreg"
|
JTREGEXE="$JT_HOME/bin/jtreg"
|
||||||
|
if test ! -x "$JTREGEXE"; then
|
||||||
if test ! -f "$JTREGEXE"; then
|
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not contain valid jtreg executable])
|
||||||
AC_MSG_ERROR([JTReg executable does not exist: $JTREGEXE])
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_RESULT($JTREGEXE)
|
AC_MSG_CHECKING([for jtreg test harness])
|
||||||
|
AC_MSG_RESULT([$JT_HOME])
|
||||||
else
|
else
|
||||||
# try to find jtreg on path
|
# Try to locate jtreg
|
||||||
BASIC_REQUIRE_PROGS(JTREGEXE, jtreg)
|
if test "x$JT_HOME" != x; then
|
||||||
JT_HOME="`$DIRNAME $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
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
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
|
||||||
|
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(JT_HOME)
|
||||||
AC_SUBST(JTREGEXE)
|
AC_SUBST(JTREGEXE)
|
||||||
])
|
])
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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"
|
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"
|
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)
|
# Only look in specific locations for possible forests (avoids long searches)
|
||||||
pull_default=""
|
pull_default=""
|
||||||
|
@ -997,7 +997,8 @@ var getJibProfilesDependencies = function (input, common) {
|
|||||||
ext: "tar.gz",
|
ext: "tar.gz",
|
||||||
revision: "2.38.0-1+1.1",
|
revision: "2.38.0-1+1.1",
|
||||||
module: "graphviz-" + input.target_platform,
|
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: {
|
pandoc: {
|
||||||
@ -1005,7 +1006,8 @@ var getJibProfilesDependencies = function (input, common) {
|
|||||||
ext: "tar.gz",
|
ext: "tar.gz",
|
||||||
revision: "1.17.2+1.0",
|
revision: "1.17.2+1.0",
|
||||||
module: "pandoc-" + input.target_platform,
|
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" />
|
<meta name="generator" content="pandoc" />
|
||||||
<title>OpenJDK Build README</title>
|
<title>OpenJDK Build README</title>
|
||||||
<style type="text/css">code{white-space: pre;}</style>
|
<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>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="header">
|
<div id="header">
|
||||||
|
@ -6,9 +6,8 @@
|
|||||||
<meta name="generator" content="pandoc" />
|
<meta name="generator" content="pandoc" />
|
||||||
<title>Testing OpenJDK</title>
|
<title>Testing OpenJDK</title>
|
||||||
<style type="text/css">code{white-space: pre;}</style>
|
<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, code, tt { color: #1d6ae5; }</style>
|
||||||
<style type="text/css">pre { font-size: 10pt; }</style>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="header">
|
<div id="header">
|
||||||
|
@ -419,3 +419,6 @@ c7358d703e1282af3dcd8af6c037dc4342de9054 jdk-10+6
|
|||||||
43de67f51801b9e16507865fcb7e8344f4ca4aa9 jdk-9+167
|
43de67f51801b9e16507865fcb7e8344f4ca4aa9 jdk-9+167
|
||||||
03a2cc9c8a1e8f87924c9863e917bc8b91770d5f jdk-9+168
|
03a2cc9c8a1e8f87924c9863e917bc8b91770d5f jdk-9+168
|
||||||
b2218d41edef02ee8f94bb438f885b2ba79bfa08 jdk-9+169
|
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>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
@ -6,7 +6,7 @@
|
|||||||
<title>package</title>
|
<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.
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
|
||||||
This code is free software; you can redistribute it and/or modify it
|
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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -52,7 +52,7 @@ import org.omg.CORBA.portable.IDLEntity;
|
|||||||
* </OL>
|
* </OL>
|
||||||
*
|
*
|
||||||
* <P>
|
* <P>
|
||||||
* <a name="anyOps"></a>
|
* <a id="anyOps"></a>
|
||||||
* A large part of the <code>Any</code> class consists of pairs of methods
|
* A large part of the <code>Any</code> class consists of pairs of methods
|
||||||
* for inserting values into and extracting values from an
|
* for inserting values into and extracting values from an
|
||||||
* <code>Any</code> object.
|
* <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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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
|
* three {@code init} methods. Two of the three methods use the properties
|
||||||
* (associations of a name with a value) shown in the
|
* (associations of a name with a value) shown in the
|
||||||
* table below.<BR>
|
* table below.<BR>
|
||||||
* <TABLE BORDER=1 SUMMARY="Standard Java CORBA Properties">
|
* <TABLE class="plain">
|
||||||
* <TR><TH>Property Name</TH> <TH>Property Value</TH></TR>
|
|
||||||
* <CAPTION>Standard Java CORBA Properties:</CAPTION>
|
* <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>
|
* <TR><TD>org.omg.CORBA.ORBClass</TD>
|
||||||
* <TD>class name of an ORB implementation</TD></TR>
|
* <TD>class name of an ORB implementation</TD></TR>
|
||||||
* <TR><TD>org.omg.CORBA.ORBSingletonClass</TD>
|
* <TR><TD>org.omg.CORBA.ORBSingletonClass</TD>
|
||||||
* <TD>class name of the ORB returned by {@code init()}</TD></TR>
|
* <TD>class name of the ORB returned by {@code init()}</TD></TR>
|
||||||
|
* </tbody>
|
||||||
* </TABLE>
|
* </TABLE>
|
||||||
* <P>
|
* <P>
|
||||||
* These properties allow a different vendor's {@code ORB}
|
* 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>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html">
|
<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>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html">
|
<meta http-equiv="Content-Type" content="text/html">
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
<!doctype html>
|
||||||
<HTML>
|
<HTML>
|
||||||
<HEAD>
|
<HEAD>
|
||||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||||
@ -6,7 +7,7 @@
|
|||||||
<TITLE>package</TITLE>
|
<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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -31,9 +32,8 @@
|
|||||||
*/
|
*/
|
||||||
-->
|
-->
|
||||||
</HEAD>
|
</HEAD>
|
||||||
<BODY BGCOLOR="#FFFFFF">
|
<BODY>
|
||||||
Provides the mapping of the OMG CORBA APIs to the Java<SUP><FONT
|
Provides the mapping of the OMG CORBA APIs to the Java™
|
||||||
SIZE=-2>TM</FONT></SUP>
|
|
||||||
programming language, including the class <code>ORB</code>, which is implemented
|
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
|
so that a programmer can use it as a fully-functional Object Request Broker
|
||||||
(ORB).
|
(ORB).
|
||||||
@ -427,7 +427,7 @@ will contain the static methods needed for manipulating instances of the type,
|
|||||||
in this case, <code>Account</code> objects.
|
in this case, <code>Account</code> objects.
|
||||||
|
|
||||||
|
|
||||||
<a name="narrow"></a>
|
<a id="narrow"></a>
|
||||||
<h3>The <code>narrow</code> Method</h3>
|
<h3>The <code>narrow</code> Method</h3>
|
||||||
When an object is the return value for a method, it is returned in the
|
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
|
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));
|
helloImpl = HelloHelper.narrow(ncRef.resolve_str(name));
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
<a name="basic"></a>
|
<a id="basic"></a>
|
||||||
<h3>Example of a Basic Helper Class</h3>
|
<h3>Example of a Basic Helper Class</h3>
|
||||||
A basic helper class, for purposes of this explanation, is one with
|
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>
|
the methods that are provided by every helper class, plus a <code>narrow</code>
|
||||||
@ -671,7 +671,7 @@ abstract public class AddressHelper
|
|||||||
WStringSeqHelper
|
WStringSeqHelper
|
||||||
WStringValueHelper
|
WStringValueHelper
|
||||||
</code></PRE>
|
</code></PRE>
|
||||||
<a name="adv"></a>
|
<a id="adv"></a>
|
||||||
<H1>
|
<H1>
|
||||||
Other Classes</H1>
|
Other Classes</H1>
|
||||||
The other classes and interfaces in the <code>CORBA</code> package, which are
|
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>
|
<H1>
|
||||||
CORBA Features Not Implemented in Java IDL</H1>
|
CORBA Features Not Implemented in Java IDL</H1>
|
||||||
|
|
||||||
<P>Some of the API included in <code>org.omg</code> subpackages is provided for
|
<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
|
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
|
other JDK licensees to provide implementations of this API in standard
|
||||||
extensions and products.
|
extensions and products.
|
||||||
|
|
||||||
<P><A NAME="NO_IMPLEMENT"></A>
|
<P><A id="NO_IMPLEMENT"></A>
|
||||||
<h2>Features That Throw NO_IMPLEMENT</h2>
|
<h2>Features That Throw NO_IMPLEMENT</h2>
|
||||||
|
|
||||||
<P>Some of the API included in <code>org.omg</code> subpackages throw
|
<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>
|
<html>
|
||||||
<head>
|
<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.
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
|
||||||
This code is free software; you can redistribute it and/or modify it
|
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.
|
questions.
|
||||||
-->
|
-->
|
||||||
</head>
|
</head>
|
||||||
<body bgcolor="white">
|
<body>
|
||||||
|
|
||||||
Provides a portability layer, that is, a set of ORB APIs
|
Provides a portability layer, that is, a set of ORB APIs
|
||||||
that makes it possible for code generated
|
that makes it possible for code generated
|
||||||
@ -38,7 +38,7 @@ can call into these ORB APIs.
|
|||||||
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<a name="unimpl"></a>
|
<a id="unimpl"></a>
|
||||||
<hr>
|
<hr>
|
||||||
<h1>CORBA Features Throwing NO_IMPLEMENT() Exceptions</h1>
|
<h1>CORBA Features Throwing NO_IMPLEMENT() Exceptions</h1>
|
||||||
<hr>
|
<hr>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
<!doctype html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
@ -6,7 +6,7 @@
|
|||||||
<title>package</title>
|
<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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -31,7 +31,7 @@
|
|||||||
*/
|
*/
|
||||||
-->
|
-->
|
||||||
</head>
|
</head>
|
||||||
<body bgcolor="#FFFFFF">
|
<body>
|
||||||
The CORBA_2_3 package defines additions to existing CORBA interfaces
|
The CORBA_2_3 package defines additions to existing CORBA interfaces
|
||||||
in the Java[tm] Standard Edition 6. These changes occurred in recent
|
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
|
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
|
HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA
|
||||||
support in Java[tm] SE 6</A>.
|
support in Java[tm] SE 6</A>.
|
||||||
<P>
|
<P>
|
||||||
<a name="unimpl"></a>
|
<a id="unimpl"></a>
|
||||||
The following methods in the abstract class
|
The following methods in the abstract class
|
||||||
<code>org.omg.CORBA_2_3.ORB</code> are unimplemented:
|
<code>org.omg.CORBA_2_3.ORB</code> are unimplemented:
|
||||||
<UL>
|
<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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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
|
* 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
|
* may be sent on Reply messages with a reply_status of SYSTEM_EXCEPTION
|
||||||
* or USER_EXCEPTION. The usage of this service context is defined
|
* 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:
|
* IDL/Java: ptc/02-01-22: 1.15.2:
|
||||||
* When a System Exception is marshaled, its GIOP Reply message shall
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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
|
* to access it will result in a <code>BAD_INV_ORDER</code> being thrown
|
||||||
* with a standard minor code of 14.
|
* 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>
|
* <thead>
|
||||||
* <tr>
|
* <tr>
|
||||||
* <th> </th>
|
* <th> </th>
|
||||||
@ -597,42 +598,42 @@ module PortableInterceptor {
|
|||||||
* <td id="ri" colspan=6><i>Inherited from RequestInfo:</i></td>
|
* <td id="ri" colspan=6><i>Inherited from RequestInfo:</i></td>
|
||||||
* </tr>
|
* </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_req">yes</td>
|
||||||
* <td headers="ri req_id send_poll">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_reply">yes</td>
|
||||||
* <td headers="ri req_id rec_ex">yes</td>
|
* <td headers="ri req_id rec_ex">yes</td>
|
||||||
* <td headers="ri req_id rec_oth">yes</td></tr>
|
* <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_req">yes</td>
|
||||||
* <td headers="ri op send_poll">yes</td>
|
* <td headers="ri op send_poll">yes</td>
|
||||||
* <td headers="ri op rec_reply">yes</td>
|
* <td headers="ri op rec_reply">yes</td>
|
||||||
* <td headers="ri op rec_ex">yes</td>
|
* <td headers="ri op rec_ex">yes</td>
|
||||||
* <td headers="ri op rec_oth">yes</td></tr>
|
* <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_req">yes<sub>1</sub></td>
|
||||||
* <td headers="ri arg send_poll">no </td>
|
* <td headers="ri arg send_poll">no </td>
|
||||||
* <td headers="ri arg rec_reply">yes</td>
|
* <td headers="ri arg rec_reply">yes</td>
|
||||||
* <td headers="ri arg rec_ex">no </td>
|
* <td headers="ri arg rec_ex">no </td>
|
||||||
* <td headers="ri arg rec_oth">no </td></tr>
|
* <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_req">yes</td>
|
||||||
* <td headers="ri exc send_poll">no </td>
|
* <td headers="ri exc send_poll">no </td>
|
||||||
* <td headers="ri exc rec_reply">yes</td>
|
* <td headers="ri exc rec_reply">yes</td>
|
||||||
* <td headers="ri exc rec_ex">yes</td>
|
* <td headers="ri exc rec_ex">yes</td>
|
||||||
* <td headers="ri exc rec_oth">yes</td></tr>
|
* <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_req">yes</td>
|
||||||
* <td headers="ri con send_poll">no </td>
|
* <td headers="ri con send_poll">no </td>
|
||||||
* <td headers="ri con rec_reply">yes</td>
|
* <td headers="ri con rec_reply">yes</td>
|
||||||
* <td headers="ri con rec_ex">yes</td>
|
* <td headers="ri con rec_ex">yes</td>
|
||||||
* <td headers="ri con rec_oth">yes</td></tr>
|
* <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_req">yes</td>
|
||||||
* <td headers="ri op_con send_poll">no </td>
|
* <td headers="ri op_con send_poll">no </td>
|
||||||
* <td headers="ri op_con rec_reply">yes</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>
|
* <td headers="ri op_con rec_oth">yes</td>
|
||||||
* </tr>
|
* </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_req">no </td>
|
||||||
* <td headers="ri result send_poll">no </td>
|
* <td headers="ri result send_poll">no </td>
|
||||||
* <td headers="ri result rec_reply">yes</td>
|
* <td headers="ri result rec_reply">yes</td>
|
||||||
@ -648,14 +649,14 @@ module PortableInterceptor {
|
|||||||
* <td headers="ri result rec_oth">no </td>
|
* <td headers="ri result rec_oth">no </td>
|
||||||
* </tr>
|
* </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_req">yes</td>
|
||||||
* <td headers="ri res_exp send_poll">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_reply">yes</td>
|
||||||
* <td headers="ri res_exp rec_ex">yes</td>
|
* <td headers="ri res_exp rec_ex">yes</td>
|
||||||
* <td headers="ri res_exp rec_oth">yes</td></tr>
|
* <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_req">yes</td>
|
||||||
* <td headers="ri sync_sco send_poll">no </td>
|
* <td headers="ri sync_sco send_poll">no </td>
|
||||||
* <td headers="ri sync_sco rec_reply">yes</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>
|
* <td headers="ri sync_sco rec_oth">yes</td>
|
||||||
* </tr>
|
* </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_req">no </td>
|
||||||
* <td headers="ri rep_stat send_poll">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_reply">yes</td>
|
||||||
* <td headers="ri rep_stat rec_ex">yes</td>
|
* <td headers="ri rep_stat rec_ex">yes</td>
|
||||||
* <td headers="ri rep_stat rec_oth">yes</td></tr>
|
* <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_req">no </td>
|
||||||
* <td headers="ri for_ref send_poll">no </td>
|
* <td headers="ri for_ref send_poll">no </td>
|
||||||
* <td headers="ri for_ref rec_reply">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 headers="ri for_ref rec_oth">yes<sub>2</sub>
|
||||||
* </td></tr>
|
* </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_req">yes</td>
|
||||||
* <td headers="ri get_slot send_poll">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_reply">yes</td>
|
||||||
* <td headers="ri get_slot rec_ex">yes</td>
|
* <td headers="ri get_slot rec_ex">yes</td>
|
||||||
* <td headers="ri get_slot rec_oth">yes</td></tr>
|
* <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_req">yes</td>
|
||||||
* <td headers="ri grsc send_poll">no </td>
|
* <td headers="ri grsc send_poll">no </td>
|
||||||
* <td headers="ri grsc rec_reply">yes</td>
|
* <td headers="ri grsc rec_reply">yes</td>
|
||||||
* <td headers="ri grsc rec_ex">yes</td>
|
* <td headers="ri grsc rec_ex">yes</td>
|
||||||
* <td headers="ri grsc rec_oth">yes</td></tr>
|
* <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_req">no </td>
|
||||||
* <td headers="ri gpsc send_poll">no </td>
|
* <td headers="ri gpsc send_poll">no </td>
|
||||||
* <td headers="ri gpsc rec_reply">yes</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>
|
* <td id="cri" colspan=6><i>ClientRequestInfo-specific:</i></td>
|
||||||
* </tr>
|
* </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_req">yes</td>
|
||||||
* <td headers="cri target send_poll">yes</td>
|
* <td headers="cri target send_poll">yes</td>
|
||||||
* <td headers="cri target rec_reply">yes</td>
|
* <td headers="cri target rec_reply">yes</td>
|
||||||
* <td headers="cri target rec_ex">yes</td>
|
* <td headers="cri target rec_ex">yes</td>
|
||||||
* <td headers="cri target rec_oth">yes</td></tr>
|
* <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_req">yes</td>
|
||||||
* <td headers="cri eftarget send_poll">yes</td>
|
* <td headers="cri eftarget send_poll">yes</td>
|
||||||
* <td headers="cri eftarget rec_reply">yes</td>
|
* <td headers="cri eftarget rec_reply">yes</td>
|
||||||
@ -719,49 +720,49 @@ module PortableInterceptor {
|
|||||||
* <td headers="cri eftarget rec_oth">yes</td>
|
* <td headers="cri eftarget rec_oth">yes</td>
|
||||||
* </tr>
|
* </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_req">yes</td>
|
||||||
* <td headers="cri efprof send_poll">yes</td>
|
* <td headers="cri efprof send_poll">yes</td>
|
||||||
* <td headers="cri efprof rec_reply">yes</td>
|
* <td headers="cri efprof rec_reply">yes</td>
|
||||||
* <td headers="cri efprof rec_ex">yes</td>
|
* <td headers="cri efprof rec_ex">yes</td>
|
||||||
* <td headers="cri efprof rec_oth">yes</td></tr>
|
* <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_req">no </td>
|
||||||
* <td headers="cri rxp send_poll">no </td>
|
* <td headers="cri rxp send_poll">no </td>
|
||||||
* <td headers="cri rxp rec_reply">no </td>
|
* <td headers="cri rxp rec_reply">no </td>
|
||||||
* <td headers="cri rxp rec_ex">yes</td>
|
* <td headers="cri rxp rec_ex">yes</td>
|
||||||
* <td headers="cri rxp rec_oth">no </td></tr>
|
* <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_req">no </td>
|
||||||
* <td headers="cri rei send_poll">no </td>
|
* <td headers="cri rei send_poll">no </td>
|
||||||
* <td headers="cri rei rec_reply">no </td>
|
* <td headers="cri rei rec_reply">no </td>
|
||||||
* <td headers="cri rei rec_ex">yes</td>
|
* <td headers="cri rei rec_ex">yes</td>
|
||||||
* <td headers="cri rei rec_oth">no </td></tr>
|
* <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_req">yes</td>
|
||||||
* <td headers="cri gec send_poll">no </td>
|
* <td headers="cri gec send_poll">no </td>
|
||||||
* <td headers="cri gec rec_reply">yes</td>
|
* <td headers="cri gec rec_reply">yes</td>
|
||||||
* <td headers="cri gec rec_ex">yes</td>
|
* <td headers="cri gec rec_ex">yes</td>
|
||||||
* <td headers="cri gec rec_oth">yes</td></tr>
|
* <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_req">yes</td>
|
||||||
* <td headers="cri gecs send_poll">no </td>
|
* <td headers="cri gecs send_poll">no </td>
|
||||||
* <td headers="cri gecs rec_reply">yes</td>
|
* <td headers="cri gecs rec_reply">yes</td>
|
||||||
* <td headers="cri gecs rec_ex">yes</td>
|
* <td headers="cri gecs rec_ex">yes</td>
|
||||||
* <td headers="cri gecs rec_oth">yes</td></tr>
|
* <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_req">yes</td>
|
||||||
* <td headers="cri grpcy send_poll">no </td>
|
* <td headers="cri grpcy send_poll">no </td>
|
||||||
* <td headers="cri grpcy rec_reply">yes</td>
|
* <td headers="cri grpcy rec_reply">yes</td>
|
||||||
* <td headers="cri grpcy rec_ex">yes</td>
|
* <td headers="cri grpcy rec_ex">yes</td>
|
||||||
* <td headers="cri grpcy rec_oth">yes</td></tr>
|
* <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_req">yes</td>
|
||||||
* <td headers="cri arsc send_poll">no </td>
|
* <td headers="cri arsc send_poll">no </td>
|
||||||
* <td headers="cri arsc rec_reply">no </td>
|
* <td headers="cri arsc rec_reply">no </td>
|
||||||
@ -935,7 +936,8 @@ module PortableInterceptor {
|
|||||||
* standard minor code of 14.
|
* 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>
|
* <thead>
|
||||||
* <tr>
|
* <tr>
|
||||||
* <th> </th>
|
* <th> </th>
|
||||||
@ -953,21 +955,21 @@ module PortableInterceptor {
|
|||||||
* <td id="ri" colspan=6><i>Inherited from RequestInfo:</i></td>
|
* <td id="ri" colspan=6><i>Inherited from RequestInfo:</i></td>
|
||||||
* </tr>
|
* </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_ser_con">yes</td>
|
||||||
* <td headers="ri req_id rec_req">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_rep">yes</td>
|
||||||
* <td headers="ri req_id send_exc">yes</td>
|
* <td headers="ri req_id send_exc">yes</td>
|
||||||
* <td headers="ri req_id send_oth">yes</td></tr>
|
* <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_ser_con">yes</td>
|
||||||
* <td headers="ri op rec_req">yes</td>
|
* <td headers="ri op rec_req">yes</td>
|
||||||
* <td headers="ri op send_rep">yes</td>
|
* <td headers="ri op send_rep">yes</td>
|
||||||
* <td headers="ri op send_exc">yes</td>
|
* <td headers="ri op send_exc">yes</td>
|
||||||
* <td headers="ri op send_oth">yes</td></tr>
|
* <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_ser_con">no </td>
|
||||||
* <td headers="ri args rec_req">yes<sub>1</sub></td>
|
* <td headers="ri args rec_req">yes<sub>1</sub></td>
|
||||||
* <td headers="ri args send_rep">yes</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 headers="ri args send_oth">no<sub>2</sub>
|
||||||
* </td></tr>
|
* </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_ser_con">no </td>
|
||||||
* <td headers="ri exps rec_req">yes</td>
|
* <td headers="ri exps rec_req">yes</td>
|
||||||
* <td headers="ri exps send_rep">yes</td>
|
* <td headers="ri exps send_rep">yes</td>
|
||||||
* <td headers="ri exps send_exc">yes</td>
|
* <td headers="ri exps send_exc">yes</td>
|
||||||
* <td headers="ri exps send_oth">yes</td></tr>
|
* <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_ser_con">no </td>
|
||||||
* <td headers="ri contexts rec_req">yes</td>
|
* <td headers="ri contexts rec_req">yes</td>
|
||||||
* <td headers="ri contexts send_rep">yes</td>
|
* <td headers="ri contexts send_rep">yes</td>
|
||||||
* <td headers="ri contexts send_exc">yes</td>
|
* <td headers="ri contexts send_exc">yes</td>
|
||||||
* <td headers="ri contexts send_oth">yes</td></tr>
|
* <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_ser_con">no </td>
|
||||||
* <td headers="ri op_con rec_req">yes</td>
|
* <td headers="ri op_con rec_req">yes</td>
|
||||||
* <td headers="ri op_con send_rep">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>
|
* <td headers="ri op_con send_oth">no </td>
|
||||||
* </tr>
|
* </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_ser_con">no </td>
|
||||||
* <td headers="ri result rec_req">no </td>
|
* <td headers="ri result rec_req">no </td>
|
||||||
* <td headers="ri result send_rep">yes</td>
|
* <td headers="ri result send_rep">yes</td>
|
||||||
@ -1005,14 +1007,14 @@ module PortableInterceptor {
|
|||||||
* <td headers="ri result send_oth">no </td>
|
* <td headers="ri result send_oth">no </td>
|
||||||
* </tr>
|
* </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_ser_con">yes</td>
|
||||||
* <td headers="ri res_ex rec_req">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_rep">yes</td>
|
||||||
* <td headers="ri res_ex send_exc">yes</td>
|
* <td headers="ri res_ex send_exc">yes</td>
|
||||||
* <td headers="ri res_ex send_oth">yes</td></tr>
|
* <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_ser_con">yes</td>
|
||||||
* <td headers="ri syn_scp rec_req">yes</td>
|
* <td headers="ri syn_scp rec_req">yes</td>
|
||||||
* <td headers="ri syn_scp send_rep">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>
|
<html>
|
||||||
<head>
|
<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.
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
|
||||||
This code is free software; you can redistribute it and/or modify it
|
This code is free software; you can redistribute it and/or modify it
|
||||||
@ -29,7 +29,7 @@ questions.
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body bgcolor="white">
|
<body>
|
||||||
|
|
||||||
Provides a mechanism to register ORB hooks through which ORB services
|
Provides a mechanism to register ORB hooks through which ORB services
|
||||||
can intercept the normal flow of execution of the ORB.
|
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>
|
{@link org.omg.PortableInterceptor.ORBInitializer ORBInitializer}</code>
|
||||||
for how to go about registering interceptors.
|
for how to go about registering interceptors.
|
||||||
|
|
||||||
<a name="unimpl"></a>
|
<a id="unimpl"></a>
|
||||||
<h2>Known limitations / unimplemented methods in package
|
<h2>Known limitations / unimplemented methods in package
|
||||||
<code>org.omg.PortableInterceptor</code></h2>
|
<code>org.omg.PortableInterceptor</code></h2>
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
<!doctype html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<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.
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
|
||||||
This code is free software; you can redistribute it and/or modify it
|
This code is free software; you can redistribute it and/or modify it
|
||||||
@ -30,7 +30,7 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body bgcolor="white">
|
<body>
|
||||||
Provides classes and interfaces for making the server side of your applications
|
Provides classes and interfaces for making the server side of your applications
|
||||||
portable across multivendor ORBs.
|
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>.
|
<A HREF="../../../../technotes/guides/idl/index.html">Java IDL home page</A>.
|
||||||
|
|
||||||
<H2>Example Code</H2>
|
<H2>Example Code</H2>
|
||||||
<a name="sampleserver"></a>
|
<a id="sampleserver"></a>
|
||||||
<H3>Example Server Code</H3>
|
<H3>Example Server Code</H3>
|
||||||
<PRE>
|
<PRE>
|
||||||
import javax.naming.InitialContext;
|
import javax.naming.InitialContext;
|
||||||
|
@ -579,3 +579,6 @@ c92c6416ca03b1464d5ed99cf6201e52b5ba0a70 jdk-9+165
|
|||||||
1ca7ed1b17b5776930d641d1379834f3140a74e4 jdk-9+167
|
1ca7ed1b17b5776930d641d1379834f3140a74e4 jdk-9+167
|
||||||
fbb9c802649585d19f6d7e81b4a519d44806225a jdk-9+168
|
fbb9c802649585d19f6d7e81b4a519d44806225a jdk-9+168
|
||||||
16d692be099c5c38eb48cc9aca78b0c900910d5b jdk-9+169
|
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.
|
|
@ -164,7 +164,7 @@ define_pd_global(intx, InitArrayShortSize, 9*BytesPerLong);
|
|||||||
product(bool, ZapMemory, false, "Write 0x0101... to empty memory." \
|
product(bool, ZapMemory, false, "Write 0x0101... to empty memory." \
|
||||||
" Use this to ease debugging.") \
|
" Use this to ease debugging.") \
|
||||||
\
|
\
|
||||||
/* Use Restricted Transactional Memory for lock eliding */ \
|
/* Use Restricted Transactional Memory for lock elision */ \
|
||||||
product(bool, UseRTMLocking, false, \
|
product(bool, UseRTMLocking, false, \
|
||||||
"Enable RTM lock eliding for inflated locks in compiled code") \
|
"Enable RTM lock eliding for inflated locks in compiled code") \
|
||||||
\
|
\
|
||||||
@ -174,24 +174,30 @@ define_pd_global(intx, InitArrayShortSize, 9*BytesPerLong);
|
|||||||
product(bool, UseRTMDeopt, false, \
|
product(bool, UseRTMDeopt, false, \
|
||||||
"Perform deopt and recompilation based on RTM abort ratio") \
|
"Perform deopt and recompilation based on RTM abort ratio") \
|
||||||
\
|
\
|
||||||
product(uintx, RTMRetryCount, 5, \
|
product(int, RTMRetryCount, 5, \
|
||||||
"Number of RTM retries on lock abort or busy") \
|
"Number of RTM retries on lock abort or busy") \
|
||||||
|
range(0, max_jint) \
|
||||||
\
|
\
|
||||||
experimental(intx, RTMSpinLoopCount, 100, \
|
experimental(int, RTMSpinLoopCount, 100, \
|
||||||
"Spin count for lock to become free before RTM retry") \
|
"Spin count for lock to become free before RTM retry") \
|
||||||
|
range(0, 32767) /* immediate operand limit on ppc */ \
|
||||||
\
|
\
|
||||||
experimental(intx, RTMAbortThreshold, 1000, \
|
experimental(int, RTMAbortThreshold, 1000, \
|
||||||
"Calculate abort ratio after this number of aborts") \
|
"Calculate abort ratio after this number of aborts") \
|
||||||
|
range(0, max_jint) \
|
||||||
\
|
\
|
||||||
experimental(intx, RTMLockingThreshold, 10000, \
|
experimental(int, RTMLockingThreshold, 10000, \
|
||||||
"Lock count at which to do RTM lock eliding without " \
|
"Lock count at which to do RTM lock eliding without " \
|
||||||
"abort ratio calculation") \
|
"abort ratio calculation") \
|
||||||
|
range(0, max_jint) \
|
||||||
\
|
\
|
||||||
experimental(intx, RTMAbortRatio, 50, \
|
experimental(int, RTMAbortRatio, 50, \
|
||||||
"Lock abort ratio at which to stop use RTM lock eliding") \
|
"Lock abort ratio at which to stop use RTM lock eliding") \
|
||||||
|
range(0, 100) /* natural range, checked in vm_version_ppc.cpp */ \
|
||||||
\
|
\
|
||||||
experimental(intx, RTMTotalCountIncrRate, 64, \
|
experimental(int, RTMTotalCountIncrRate, 64, \
|
||||||
"Increment total RTM attempted lock count once every n times") \
|
"Increment total RTM attempted lock count once every n times") \
|
||||||
|
range(1, 32767) /* immediate operand limit on ppc */ \
|
||||||
\
|
\
|
||||||
experimental(intx, RTMLockingCalculationDelay, 0, \
|
experimental(intx, RTMLockingCalculationDelay, 0, \
|
||||||
"Number of milliseconds to wait before start calculating aborts " \
|
"Number of milliseconds to wait before start calculating aborts " \
|
||||||
|
@ -2498,14 +2498,20 @@ void MacroAssembler::rtm_abort_ratio_calculation(Register rtm_counters_Reg,
|
|||||||
// All transactions = total_count * RTMTotalCountIncrRate
|
// All transactions = total_count * RTMTotalCountIncrRate
|
||||||
// Set no_rtm bit if (Aborted transactions >= All transactions * RTMAbortRatio)
|
// Set no_rtm bit if (Aborted transactions >= All transactions * RTMAbortRatio)
|
||||||
ld(R0, RTMLockingCounters::abort_count_offset(), rtm_counters_Reg);
|
ld(R0, RTMLockingCounters::abort_count_offset(), rtm_counters_Reg);
|
||||||
|
if (is_simm(RTMAbortThreshold, 16)) { // cmpdi can handle 16bit immediate only.
|
||||||
cmpdi(CCR0, R0, RTMAbortThreshold);
|
cmpdi(CCR0, R0, RTMAbortThreshold);
|
||||||
blt(CCR0, L_check_always_rtm2);
|
blt(CCR0, L_check_always_rtm2); // reload of rtm_counters_Reg not necessary
|
||||||
|
} else {
|
||||||
|
load_const_optimized(rtm_counters_Reg, RTMAbortThreshold);
|
||||||
|
cmpd(CCR0, R0, rtm_counters_Reg);
|
||||||
|
blt(CCR0, L_check_always_rtm1); // reload of rtm_counters_Reg required
|
||||||
|
}
|
||||||
mulli(R0, R0, 100);
|
mulli(R0, R0, 100);
|
||||||
|
|
||||||
const Register tmpReg = rtm_counters_Reg;
|
const Register tmpReg = rtm_counters_Reg;
|
||||||
ld(tmpReg, RTMLockingCounters::total_count_offset(), rtm_counters_Reg);
|
ld(tmpReg, RTMLockingCounters::total_count_offset(), rtm_counters_Reg);
|
||||||
mulli(tmpReg, tmpReg, RTMTotalCountIncrRate);
|
mulli(tmpReg, tmpReg, RTMTotalCountIncrRate); // allowable range: int16
|
||||||
mulli(tmpReg, tmpReg, RTMAbortRatio);
|
mulli(tmpReg, tmpReg, RTMAbortRatio); // allowable range: int16
|
||||||
cmpd(CCR0, R0, tmpReg);
|
cmpd(CCR0, R0, tmpReg);
|
||||||
blt(CCR0, L_check_always_rtm1); // jump to reload
|
blt(CCR0, L_check_always_rtm1); // jump to reload
|
||||||
if (method_data != NULL) {
|
if (method_data != NULL) {
|
||||||
@ -2521,7 +2527,13 @@ void MacroAssembler::rtm_abort_ratio_calculation(Register rtm_counters_Reg,
|
|||||||
load_const_optimized(rtm_counters_Reg, (address)rtm_counters, R0); // reload
|
load_const_optimized(rtm_counters_Reg, (address)rtm_counters, R0); // reload
|
||||||
bind(L_check_always_rtm2);
|
bind(L_check_always_rtm2);
|
||||||
ld(tmpReg, RTMLockingCounters::total_count_offset(), rtm_counters_Reg);
|
ld(tmpReg, RTMLockingCounters::total_count_offset(), rtm_counters_Reg);
|
||||||
cmpdi(CCR0, tmpReg, RTMLockingThreshold / RTMTotalCountIncrRate);
|
int64_t thresholdValue = RTMLockingThreshold / RTMTotalCountIncrRate;
|
||||||
|
if (is_simm(thresholdValue, 16)) { // cmpdi can handle 16bit immediate only.
|
||||||
|
cmpdi(CCR0, tmpReg, thresholdValue);
|
||||||
|
} else {
|
||||||
|
load_const_optimized(R0, thresholdValue);
|
||||||
|
cmpd(CCR0, tmpReg, R0);
|
||||||
|
}
|
||||||
blt(CCR0, L_done);
|
blt(CCR0, L_done);
|
||||||
if (method_data != NULL) {
|
if (method_data != NULL) {
|
||||||
// Set rtm_state to "always rtm" in MDO.
|
// Set rtm_state to "always rtm" in MDO.
|
||||||
@ -2620,7 +2632,7 @@ void MacroAssembler::rtm_stack_locking(ConditionRegister flag,
|
|||||||
if (PrintPreciseRTMLockingStatistics || profile_rtm) {
|
if (PrintPreciseRTMLockingStatistics || profile_rtm) {
|
||||||
Label L_noincrement;
|
Label L_noincrement;
|
||||||
if (RTMTotalCountIncrRate > 1) {
|
if (RTMTotalCountIncrRate > 1) {
|
||||||
branch_on_random_using_tb(tmp, (int)RTMTotalCountIncrRate, L_noincrement);
|
branch_on_random_using_tb(tmp, RTMTotalCountIncrRate, L_noincrement);
|
||||||
}
|
}
|
||||||
assert(stack_rtm_counters != NULL, "should not be NULL when profiling RTM");
|
assert(stack_rtm_counters != NULL, "should not be NULL when profiling RTM");
|
||||||
load_const_optimized(tmp, (address)stack_rtm_counters->total_count_addr(), R0);
|
load_const_optimized(tmp, (address)stack_rtm_counters->total_count_addr(), R0);
|
||||||
@ -2687,7 +2699,7 @@ void MacroAssembler::rtm_inflated_locking(ConditionRegister flag,
|
|||||||
if (PrintPreciseRTMLockingStatistics || profile_rtm) {
|
if (PrintPreciseRTMLockingStatistics || profile_rtm) {
|
||||||
Label L_noincrement;
|
Label L_noincrement;
|
||||||
if (RTMTotalCountIncrRate > 1) {
|
if (RTMTotalCountIncrRate > 1) {
|
||||||
branch_on_random_using_tb(R0, (int)RTMTotalCountIncrRate, L_noincrement);
|
branch_on_random_using_tb(R0, RTMTotalCountIncrRate, L_noincrement);
|
||||||
}
|
}
|
||||||
assert(rtm_counters != NULL, "should not be NULL when profiling RTM");
|
assert(rtm_counters != NULL, "should not be NULL when profiling RTM");
|
||||||
load_const(R0, (address)rtm_counters->total_count_addr(), tmpReg);
|
load_const(R0, (address)rtm_counters->total_count_addr(), tmpReg);
|
||||||
|
@ -3720,7 +3720,7 @@ void TemplateTable::_new() {
|
|||||||
__ bge(CCR0, Lslow_case);
|
__ bge(CCR0, Lslow_case);
|
||||||
|
|
||||||
// Increment waste limit to prevent getting stuck on this slow path.
|
// Increment waste limit to prevent getting stuck on this slow path.
|
||||||
__ addi(RtlabWasteLimitValue, RtlabWasteLimitValue, (int)ThreadLocalAllocBuffer::refill_waste_limit_increment());
|
__ add_const_optimized(RtlabWasteLimitValue, RtlabWasteLimitValue, ThreadLocalAllocBuffer::refill_waste_limit_increment());
|
||||||
__ std(RtlabWasteLimitValue, in_bytes(JavaThread::tlab_refill_waste_limit_offset()), R16_thread);
|
__ std(RtlabWasteLimitValue, in_bytes(JavaThread::tlab_refill_waste_limit_offset()), R16_thread);
|
||||||
}
|
}
|
||||||
// else: No allocation in the shared eden. // fallthru: __ b(Lslow_case);
|
// else: No allocation in the shared eden. // fallthru: __ b(Lslow_case);
|
||||||
|
@ -160,25 +160,30 @@ define_pd_global(intx, InitArrayShortSize, 8*BytesPerLong);
|
|||||||
product(bool, UseRTMDeopt, false, \
|
product(bool, UseRTMDeopt, false, \
|
||||||
"Perform deopt and recompilation based on RTM abort ratio") \
|
"Perform deopt and recompilation based on RTM abort ratio") \
|
||||||
\
|
\
|
||||||
product(uintx, RTMRetryCount, 5, \
|
product(int, RTMRetryCount, 5, \
|
||||||
"Number of RTM retries on lock abort or busy") \
|
"Number of RTM retries on lock abort or busy") \
|
||||||
range(0, max_uintx) \
|
range(0, max_jint) \
|
||||||
\
|
\
|
||||||
experimental(intx, RTMSpinLoopCount, 100, \
|
experimental(int, RTMSpinLoopCount, 100, \
|
||||||
"Spin count for lock to become free before RTM retry") \
|
"Spin count for lock to become free before RTM retry") \
|
||||||
|
range(0, max_jint) \
|
||||||
\
|
\
|
||||||
experimental(intx, RTMAbortThreshold, 1000, \
|
experimental(int, RTMAbortThreshold, 1000, \
|
||||||
"Calculate abort ratio after this number of aborts") \
|
"Calculate abort ratio after this number of aborts") \
|
||||||
|
range(0, max_jint) \
|
||||||
\
|
\
|
||||||
experimental(intx, RTMLockingThreshold, 10000, \
|
experimental(int, RTMLockingThreshold, 10000, \
|
||||||
"Lock count at which to do RTM lock eliding without " \
|
"Lock count at which to do RTM lock eliding without " \
|
||||||
"abort ratio calculation") \
|
"abort ratio calculation") \
|
||||||
|
range(0, max_jint) \
|
||||||
\
|
\
|
||||||
experimental(intx, RTMAbortRatio, 50, \
|
experimental(int, RTMAbortRatio, 50, \
|
||||||
"Lock abort ratio at which to stop use RTM lock eliding") \
|
"Lock abort ratio at which to stop use RTM lock eliding") \
|
||||||
|
range(0, 100) /* natural range, checked in vm_version_x86.cpp */ \
|
||||||
\
|
\
|
||||||
experimental(intx, RTMTotalCountIncrRate, 64, \
|
experimental(int, RTMTotalCountIncrRate, 64, \
|
||||||
"Increment total RTM attempted lock count once every n times") \
|
"Increment total RTM attempted lock count once every n times") \
|
||||||
|
range(1, max_jint) \
|
||||||
\
|
\
|
||||||
experimental(intx, RTMLockingCalculationDelay, 0, \
|
experimental(intx, RTMLockingCalculationDelay, 0, \
|
||||||
"Number of milliseconds to wait before start calculating aborts " \
|
"Number of milliseconds to wait before start calculating aborts " \
|
||||||
|
@ -1492,7 +1492,7 @@ void MacroAssembler::rtm_stack_locking(Register objReg, Register tmpReg, Registe
|
|||||||
Label L_noincrement;
|
Label L_noincrement;
|
||||||
if (RTMTotalCountIncrRate > 1) {
|
if (RTMTotalCountIncrRate > 1) {
|
||||||
// tmpReg, scrReg and flags are killed
|
// tmpReg, scrReg and flags are killed
|
||||||
branch_on_random_using_rdtsc(tmpReg, scrReg, (int)RTMTotalCountIncrRate, L_noincrement);
|
branch_on_random_using_rdtsc(tmpReg, scrReg, RTMTotalCountIncrRate, L_noincrement);
|
||||||
}
|
}
|
||||||
assert(stack_rtm_counters != NULL, "should not be NULL when profiling RTM");
|
assert(stack_rtm_counters != NULL, "should not be NULL when profiling RTM");
|
||||||
atomic_incptr(ExternalAddress((address)stack_rtm_counters->total_count_addr()), scrReg);
|
atomic_incptr(ExternalAddress((address)stack_rtm_counters->total_count_addr()), scrReg);
|
||||||
@ -1553,7 +1553,7 @@ void MacroAssembler::rtm_inflated_locking(Register objReg, Register boxReg, Regi
|
|||||||
Label L_noincrement;
|
Label L_noincrement;
|
||||||
if (RTMTotalCountIncrRate > 1) {
|
if (RTMTotalCountIncrRate > 1) {
|
||||||
// tmpReg, scrReg and flags are killed
|
// tmpReg, scrReg and flags are killed
|
||||||
branch_on_random_using_rdtsc(tmpReg, scrReg, (int)RTMTotalCountIncrRate, L_noincrement);
|
branch_on_random_using_rdtsc(tmpReg, scrReg, RTMTotalCountIncrRate, L_noincrement);
|
||||||
}
|
}
|
||||||
assert(rtm_counters != NULL, "should not be NULL when profiling RTM");
|
assert(rtm_counters != NULL, "should not be NULL when profiling RTM");
|
||||||
atomic_incptr(ExternalAddress((address)rtm_counters->total_count_addr()), scrReg);
|
atomic_incptr(ExternalAddress((address)rtm_counters->total_count_addr()), scrReg);
|
||||||
|
@ -1945,7 +1945,7 @@ void ClassLoader::compile_the_world_in(char* name, Handle loader, TRAPS) {
|
|||||||
if (can_be_compiled(m, comp_level)) {
|
if (can_be_compiled(m, comp_level)) {
|
||||||
if (++_codecache_sweep_counter == CompileTheWorldSafepointInterval) {
|
if (++_codecache_sweep_counter == CompileTheWorldSafepointInterval) {
|
||||||
// Give sweeper a chance to keep up with CTW
|
// Give sweeper a chance to keep up with CTW
|
||||||
VM_ForceSafepoint op;
|
VM_CTWThreshold op;
|
||||||
VMThread::execute(&op);
|
VMThread::execute(&op);
|
||||||
_codecache_sweep_counter = 0;
|
_codecache_sweep_counter = 0;
|
||||||
}
|
}
|
||||||
|
@ -315,7 +315,11 @@ oop StringTable::intern(const char* utf8_string, TRAPS) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void StringTable::unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int* processed, int* removed) {
|
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) {
|
void StringTable::possibly_parallel_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int* processed, int* removed) {
|
||||||
@ -324,6 +328,7 @@ void StringTable::possibly_parallel_unlink_or_oops_do(BoolObjectClosure* is_aliv
|
|||||||
assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
|
assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
|
||||||
const int limit = the_table()->table_size();
|
const int limit = the_table()->table_size();
|
||||||
|
|
||||||
|
BucketUnlinkContext context;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
// Grab next set of buckets to scan
|
// Grab next set of buckets to scan
|
||||||
int start_idx = Atomic::add(ClaimChunkSize, &_parallel_claimed_idx) - ClaimChunkSize;
|
int start_idx = Atomic::add(ClaimChunkSize, &_parallel_claimed_idx) - ClaimChunkSize;
|
||||||
@ -333,8 +338,11 @@ void StringTable::possibly_parallel_unlink_or_oops_do(BoolObjectClosure* is_aliv
|
|||||||
}
|
}
|
||||||
|
|
||||||
int end_idx = MIN2(limit, start_idx + ClaimChunkSize);
|
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) {
|
void StringTable::buckets_oops_do(OopClosure* f, int start_idx, int end_idx) {
|
||||||
@ -360,7 +368,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();
|
const int limit = the_table()->table_size();
|
||||||
|
|
||||||
assert(0 <= start_idx && start_idx <= limit,
|
assert(0 <= start_idx && start_idx <= limit,
|
||||||
@ -384,10 +392,9 @@ void StringTable::buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClos
|
|||||||
p = entry->next_addr();
|
p = entry->next_addr();
|
||||||
} else {
|
} else {
|
||||||
*p = entry->next();
|
*p = entry->next();
|
||||||
the_table()->free_entry(entry);
|
context->free_entry(entry);
|
||||||
(*removed)++;
|
|
||||||
}
|
}
|
||||||
(*processed)++;
|
context->_num_processed++;
|
||||||
entry = *p;
|
entry = *p;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,9 +61,13 @@ private:
|
|||||||
// Apply the give oop closure to the entries to the buckets
|
// Apply the give oop closure to the entries to the buckets
|
||||||
// in the range [start_idx, end_idx).
|
// in the range [start_idx, end_idx).
|
||||||
static void buckets_oops_do(OopClosure* f, int start_idx, int 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
|
// Unlink or apply the give oop closure to the entries to the buckets
|
||||||
// in the range [start_idx, end_idx).
|
// in the range [start_idx, end_idx). Unlinked bucket entries are collected in the given
|
||||||
static void buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, int* processed, int* removed);
|
// 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
|
// Hashing algorithm, used as the hash value used by the
|
||||||
// StringTable for bucket selection and comparison (stored in 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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;
|
int SymbolTable::_symbols_counted = 0;
|
||||||
volatile int SymbolTable::_parallel_claimed_idx = 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) {
|
for (int i = start_idx; i < end_idx; ++i) {
|
||||||
HashtableEntry<Symbol*, mtSymbol>** p = the_table()->bucket_addr(i);
|
HashtableEntry<Symbol*, mtSymbol>** p = the_table()->bucket_addr(i);
|
||||||
HashtableEntry<Symbol*, mtSymbol>* entry = the_table()->bucket(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;
|
break;
|
||||||
}
|
}
|
||||||
Symbol* s = entry->literal();
|
Symbol* s = entry->literal();
|
||||||
(*processed)++;
|
context->_num_processed++;
|
||||||
assert(s != NULL, "just checking");
|
assert(s != NULL, "just checking");
|
||||||
// If reference count is zero, remove.
|
// If reference count is zero, remove.
|
||||||
if (s->refcount() == 0) {
|
if (s->refcount() == 0) {
|
||||||
assert(!entry->is_shared(), "shared entries should be kept live");
|
assert(!entry->is_shared(), "shared entries should be kept live");
|
||||||
delete s;
|
delete s;
|
||||||
(*removed)++;
|
|
||||||
*p = entry->next();
|
*p = entry->next();
|
||||||
the_table()->free_entry(entry);
|
context->free_entry(entry);
|
||||||
} else {
|
} else {
|
||||||
p = entry->next_addr();
|
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
|
// Remove unreferenced symbols from the symbol table
|
||||||
// This is done late during GC.
|
// This is done late during GC.
|
||||||
void SymbolTable::unlink(int* processed, int* removed) {
|
void SymbolTable::unlink(int* processed, int* removed) {
|
||||||
size_t memory_total = 0;
|
BucketUnlinkContext context;
|
||||||
buckets_unlink(0, the_table()->table_size(), processed, removed);
|
buckets_unlink(0, the_table()->table_size(), &context);
|
||||||
_symbols_removed += *removed;
|
_the_table->bulk_free_entries(&context);
|
||||||
_symbols_counted += *processed;
|
*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) {
|
void SymbolTable::possibly_parallel_unlink(int* processed, int* removed) {
|
||||||
const int limit = the_table()->table_size();
|
const int limit = the_table()->table_size();
|
||||||
|
|
||||||
size_t memory_total = 0;
|
BucketUnlinkContext context;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
// Grab next set of buckets to scan
|
// Grab next set of buckets to scan
|
||||||
int start_idx = Atomic::add(ClaimChunkSize, &_parallel_claimed_idx) - ClaimChunkSize;
|
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);
|
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
|
// 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -154,8 +154,11 @@ private:
|
|||||||
|
|
||||||
static volatile int _parallel_claimed_idx;
|
static volatile int _parallel_claimed_idx;
|
||||||
|
|
||||||
// Release any dead symbols
|
typedef SymbolTable::BucketUnlinkContext BucketUnlinkContext;
|
||||||
static void buckets_unlink(int start_idx, int end_idx, int* processed, int* removed);
|
// 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:
|
public:
|
||||||
enum {
|
enum {
|
||||||
symbol_alloc_batch_size = 8,
|
symbol_alloc_batch_size = 8,
|
||||||
|
@ -126,8 +126,8 @@ ICStub* InlineCacheBuffer::new_ic_stub() {
|
|||||||
// We do this by forcing a safepoint
|
// We do this by forcing a safepoint
|
||||||
EXCEPTION_MARK;
|
EXCEPTION_MARK;
|
||||||
|
|
||||||
VM_ForceSafepoint vfs;
|
VM_ICBufferFull ibf;
|
||||||
VMThread::execute(&vfs);
|
VMThread::execute(&ibf);
|
||||||
// We could potential get an async. exception at this point.
|
// We could potential get an async. exception at this point.
|
||||||
// In that case we will rethrow it to ourselvs.
|
// In that case we will rethrow it to ourselvs.
|
||||||
if (HAS_PENDING_EXCEPTION) {
|
if (HAS_PENDING_EXCEPTION) {
|
||||||
|
@ -65,22 +65,6 @@ void Symbol::operator delete(void *p) {
|
|||||||
FreeHeap(p);
|
FreeHeap(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
|
||||||
// Symbol::equals
|
|
||||||
//
|
|
||||||
// Compares the symbol with a string of the given length.
|
|
||||||
bool Symbol::equals(const char* str, int len) const {
|
|
||||||
int l = utf8_length();
|
|
||||||
if (l != len) return false;
|
|
||||||
while (l-- > 0) {
|
|
||||||
if (str[l] != (char) byte_at(l))
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
assert(l == -1, "we should be at the beginning");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
// Symbol::starts_with
|
// Symbol::starts_with
|
||||||
//
|
//
|
||||||
|
@ -175,7 +175,16 @@ class Symbol : public MetaspaceObj {
|
|||||||
int utf8_length() const { return _length; }
|
int utf8_length() const { return _length; }
|
||||||
|
|
||||||
// Compares the symbol with a string.
|
// Compares the symbol with a string.
|
||||||
bool equals(const char* str, int len) const;
|
bool equals(const char* str, int len) const {
|
||||||
|
int l = utf8_length();
|
||||||
|
if (l != len) return false;
|
||||||
|
while (l-- > 0) {
|
||||||
|
if (str[l] != (char) byte_at(l))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
assert(l == -1, "we should be at the beginning");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
bool equals(const char* str) const { return equals(str, (int) strlen(str)); }
|
bool equals(const char* str) const { return equals(str, (int) strlen(str)); }
|
||||||
|
|
||||||
// Tests if the symbol starts with the given prefix.
|
// Tests if the symbol starts with the given prefix.
|
||||||
|
@ -420,37 +420,38 @@
|
|||||||
develop(bool, InlineWarmCalls, false, \
|
develop(bool, InlineWarmCalls, false, \
|
||||||
"Use a heat-based priority queue to govern inlining") \
|
"Use a heat-based priority queue to govern inlining") \
|
||||||
\
|
\
|
||||||
|
/* Max values must not exceed WarmCallInfo::MAX_VALUE(). */ \
|
||||||
develop(intx, HotCallCountThreshold, 999999, \
|
develop(intx, HotCallCountThreshold, 999999, \
|
||||||
"large numbers of calls (per method invocation) force hotness") \
|
"large numbers of calls (per method invocation) force hotness") \
|
||||||
range(0, max_intx) \
|
range(0, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10)))) \
|
||||||
\
|
\
|
||||||
develop(intx, HotCallProfitThreshold, 999999, \
|
develop(intx, HotCallProfitThreshold, 999999, \
|
||||||
"highly profitable inlining opportunities force hotness") \
|
"highly profitable inlining opportunities force hotness") \
|
||||||
range(0, max_intx) \
|
range(0, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10)))) \
|
||||||
\
|
\
|
||||||
develop(intx, HotCallTrivialWork, -1, \
|
develop(intx, HotCallTrivialWork, -1, \
|
||||||
"trivial execution time (no larger than this) forces hotness") \
|
"trivial execution time (no larger than this) forces hotness") \
|
||||||
range(-1, max_intx) \
|
range(-1, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10)))) \
|
||||||
\
|
\
|
||||||
develop(intx, HotCallTrivialSize, -1, \
|
develop(intx, HotCallTrivialSize, -1, \
|
||||||
"trivial methods (no larger than this) force calls to be hot") \
|
"trivial methods (no larger than this) force calls to be hot") \
|
||||||
range(-1, max_intx) \
|
range(-1, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10)))) \
|
||||||
\
|
\
|
||||||
develop(intx, WarmCallMinCount, -1, \
|
develop(intx, WarmCallMinCount, -1, \
|
||||||
"number of calls (per method invocation) to enable inlining") \
|
"number of calls (per method invocation) to enable inlining") \
|
||||||
range(-1, max_intx) \
|
range(-1, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10)))) \
|
||||||
\
|
\
|
||||||
develop(intx, WarmCallMinProfit, -1, \
|
develop(intx, WarmCallMinProfit, -1, \
|
||||||
"number of calls (per method invocation) to enable inlining") \
|
"number of calls (per method invocation) to enable inlining") \
|
||||||
range(-1, max_intx) \
|
range(-1, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10)))) \
|
||||||
\
|
\
|
||||||
develop(intx, WarmCallMaxWork, 999999, \
|
develop(intx, WarmCallMaxWork, 999999, \
|
||||||
"execution time of the largest inlinable method") \
|
"execution time of the largest inlinable method") \
|
||||||
range(0, max_intx) \
|
range(0, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10)))) \
|
||||||
\
|
\
|
||||||
develop(intx, WarmCallMaxSize, 999999, \
|
develop(intx, WarmCallMaxSize, 999999, \
|
||||||
"size of the largest inlinable method") \
|
"size of the largest inlinable method") \
|
||||||
range(0, max_intx) \
|
range(0, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10)))) \
|
||||||
\
|
\
|
||||||
product(intx, MaxNodeLimit, 80000, \
|
product(intx, MaxNodeLimit, 80000, \
|
||||||
"Maximum number of nodes") \
|
"Maximum number of nodes") \
|
||||||
|
@ -985,8 +985,8 @@ JvmtiEnv::SuspendThreadList(jint request_count, const jthread* request_list, jvm
|
|||||||
results[i] = JVMTI_ERROR_NONE; // indicate successful suspend
|
results[i] = JVMTI_ERROR_NONE; // indicate successful suspend
|
||||||
}
|
}
|
||||||
if (needSafepoint > 0) {
|
if (needSafepoint > 0) {
|
||||||
VM_ForceSafepoint vfs;
|
VM_ThreadsSuspendJVMTI tsj;
|
||||||
VMThread::execute(&vfs);
|
VMThread::execute(&tsj);
|
||||||
}
|
}
|
||||||
// per-thread suspend results returned via results parameter
|
// per-thread suspend results returned via results parameter
|
||||||
return JVMTI_ERROR_NONE;
|
return JVMTI_ERROR_NONE;
|
||||||
|
@ -276,14 +276,15 @@ Flag::Error OptoLoopAlignmentConstraintFunc(intx value, bool verbose) {
|
|||||||
return Flag::VIOLATES_CONSTRAINT;
|
return Flag::VIOLATES_CONSTRAINT;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SPARC
|
// Relevant on ppc, s390, sparc. Will be optimized where
|
||||||
|
// addr_unit() == 1.
|
||||||
if (OptoLoopAlignment % relocInfo::addr_unit() != 0) {
|
if (OptoLoopAlignment % relocInfo::addr_unit() != 0) {
|
||||||
CommandLineError::print(verbose,
|
CommandLineError::print(verbose,
|
||||||
"OptoLoopAlignment (" INTX_FORMAT ") must be "
|
"OptoLoopAlignment (" INTX_FORMAT ") must be "
|
||||||
"multiple of NOP size\n");
|
"multiple of NOP size (%d)\n",
|
||||||
|
value, relocInfo::addr_unit());
|
||||||
return Flag::VIOLATES_CONSTRAINT;
|
return Flag::VIOLATES_CONSTRAINT;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
return Flag::SUCCESS;
|
return Flag::SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -396,9 +396,7 @@ void SafepointSynchronize::begin() {
|
|||||||
GCLocker::set_jni_lock_count(_current_jni_active_count);
|
GCLocker::set_jni_lock_count(_current_jni_active_count);
|
||||||
|
|
||||||
if (log_is_enabled(Debug, safepoint)) {
|
if (log_is_enabled(Debug, safepoint)) {
|
||||||
VM_Operation *op = VMThread::vm_operation();
|
log_debug(safepoint)("Entering safepoint region: %s", VMThread::vm_safepoint_description());
|
||||||
log_debug(safepoint)("Entering safepoint region: %s",
|
|
||||||
(op != NULL) ? op->name() : "no vm operation");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RuntimeService::record_safepoint_synchronized();
|
RuntimeService::record_safepoint_synchronized();
|
||||||
@ -845,10 +843,8 @@ void SafepointSynchronize::print_safepoint_timeout(SafepointTimeoutReason reason
|
|||||||
// To debug the long safepoint, specify both DieOnSafepointTimeout &
|
// To debug the long safepoint, specify both DieOnSafepointTimeout &
|
||||||
// ShowMessageBoxOnError.
|
// ShowMessageBoxOnError.
|
||||||
if (DieOnSafepointTimeout) {
|
if (DieOnSafepointTimeout) {
|
||||||
VM_Operation *op = VMThread::vm_operation();
|
|
||||||
fatal("Safepoint sync time longer than " INTX_FORMAT "ms detected when executing %s.",
|
fatal("Safepoint sync time longer than " INTX_FORMAT "ms detected when executing %s.",
|
||||||
SafepointTimeoutDelay,
|
SafepointTimeoutDelay, VMThread::vm_safepoint_description());
|
||||||
op != NULL ? op->name() : "no vm operation");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1063,7 +1063,7 @@ static void InduceScavenge(Thread * Self, const char * Whence) {
|
|||||||
// Must VM_Operation instance be heap allocated as the op will be enqueue and posted
|
// Must VM_Operation instance be heap allocated as the op will be enqueue and posted
|
||||||
// to the VMthread and have a lifespan longer than that of this activation record.
|
// to the VMthread and have a lifespan longer than that of this activation record.
|
||||||
// The VMThread will delete the op when completed.
|
// The VMThread will delete the op when completed.
|
||||||
VMThread::execute(new VM_ForceAsyncSafepoint());
|
VMThread::execute(new VM_ScavengeMonitors());
|
||||||
|
|
||||||
if (ObjectMonitor::Knob_Verbose) {
|
if (ObjectMonitor::Knob_Verbose) {
|
||||||
tty->print_cr("INFO: Monitor scavenge - STW posted @%s (%d)",
|
tty->print_cr("INFO: Monitor scavenge - STW posted @%s (%d)",
|
||||||
|
@ -2275,7 +2275,7 @@ void JavaThread::java_suspend() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VM_ForceSafepoint vm_suspend;
|
VM_ThreadSuspend vm_suspend;
|
||||||
VMThread::execute(&vm_suspend);
|
VMThread::execute(&vm_suspend);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -676,7 +676,7 @@ typedef RehashableHashtable<Symbol*, mtSymbol> RehashableSymbolHashtable;
|
|||||||
\
|
\
|
||||||
nonstatic_field(BasicHashtable<mtInternal>, _table_size, int) \
|
nonstatic_field(BasicHashtable<mtInternal>, _table_size, int) \
|
||||||
nonstatic_field(BasicHashtable<mtInternal>, _buckets, HashtableBucket<mtInternal>*) \
|
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>, _first_free_entry, char*) \
|
||||||
nonstatic_field(BasicHashtable<mtInternal>, _end_block, char*) \
|
nonstatic_field(BasicHashtable<mtInternal>, _end_block, char*) \
|
||||||
nonstatic_field(BasicHashtable<mtInternal>, _entry_size, int) \
|
nonstatic_field(BasicHashtable<mtInternal>, _entry_size, int) \
|
||||||
|
@ -204,6 +204,7 @@ VMThread* VMThread::_vm_thread = NULL;
|
|||||||
VM_Operation* VMThread::_cur_vm_operation = NULL;
|
VM_Operation* VMThread::_cur_vm_operation = NULL;
|
||||||
VMOperationQueue* VMThread::_vm_queue = NULL;
|
VMOperationQueue* VMThread::_vm_queue = NULL;
|
||||||
PerfCounter* VMThread::_perf_accumulated_vm_operation_time = NULL;
|
PerfCounter* VMThread::_perf_accumulated_vm_operation_time = NULL;
|
||||||
|
const char* VMThread::_no_op_reason = NULL;
|
||||||
|
|
||||||
|
|
||||||
void VMThread::create() {
|
void VMThread::create() {
|
||||||
@ -273,6 +274,7 @@ void VMThread::run() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 4526887 let VM thread exit at Safepoint
|
// 4526887 let VM thread exit at Safepoint
|
||||||
|
_no_op_reason = "Halt";
|
||||||
SafepointSynchronize::begin();
|
SafepointSynchronize::begin();
|
||||||
|
|
||||||
if (VerifyBeforeExit) {
|
if (VerifyBeforeExit) {
|
||||||
@ -380,6 +382,25 @@ void VMThread::evaluate_operation(VM_Operation* op) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool VMThread::no_op_safepoint_needed(bool check_time) {
|
||||||
|
if (SafepointALot) {
|
||||||
|
_no_op_reason = "SafepointALot";
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!SafepointSynchronize::is_cleanup_needed()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (check_time) {
|
||||||
|
long interval = SafepointSynchronize::last_non_safepoint_interval();
|
||||||
|
bool max_time_exceeded = GuaranteedSafepointInterval != 0 &&
|
||||||
|
(interval > GuaranteedSafepointInterval);
|
||||||
|
if (!max_time_exceeded) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_no_op_reason = "Cleanup";
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void VMThread::loop() {
|
void VMThread::loop() {
|
||||||
assert(_cur_vm_operation == NULL, "no current one should be executing");
|
assert(_cur_vm_operation == NULL, "no current one should be executing");
|
||||||
@ -418,8 +439,7 @@ void VMThread::loop() {
|
|||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (timedout && (SafepointALot ||
|
if (timedout && VMThread::no_op_safepoint_needed(false)) {
|
||||||
SafepointSynchronize::is_cleanup_needed())) {
|
|
||||||
MutexUnlockerEx mul(VMOperationQueue_lock,
|
MutexUnlockerEx mul(VMOperationQueue_lock,
|
||||||
Mutex::_no_safepoint_check_flag);
|
Mutex::_no_safepoint_check_flag);
|
||||||
// Force a safepoint since we have not had one for at least
|
// Force a safepoint since we have not had one for at least
|
||||||
@ -542,16 +562,12 @@ void VMThread::loop() {
|
|||||||
//
|
//
|
||||||
// We want to make sure that we get to a safepoint regularly.
|
// We want to make sure that we get to a safepoint regularly.
|
||||||
//
|
//
|
||||||
if (SafepointALot || SafepointSynchronize::is_cleanup_needed()) {
|
if (VMThread::no_op_safepoint_needed(true)) {
|
||||||
long interval = SafepointSynchronize::last_non_safepoint_interval();
|
|
||||||
bool max_time_exceeded = GuaranteedSafepointInterval != 0 && (interval > GuaranteedSafepointInterval);
|
|
||||||
if (SafepointALot || max_time_exceeded) {
|
|
||||||
HandleMark hm(VMThread::vm_thread());
|
HandleMark hm(VMThread::vm_thread());
|
||||||
SafepointSynchronize::begin();
|
SafepointSynchronize::begin();
|
||||||
SafepointSynchronize::end();
|
SafepointSynchronize::end();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VMThread::execute(VM_Operation* op) {
|
void VMThread::execute(VM_Operation* op) {
|
||||||
|
@ -99,7 +99,12 @@ class VMThread: public NamedThread {
|
|||||||
static Monitor * _terminate_lock;
|
static Monitor * _terminate_lock;
|
||||||
static PerfCounter* _perf_accumulated_vm_operation_time;
|
static PerfCounter* _perf_accumulated_vm_operation_time;
|
||||||
|
|
||||||
|
static const char* _no_op_reason;
|
||||||
|
|
||||||
|
static bool no_op_safepoint_needed(bool check_time);
|
||||||
|
|
||||||
void evaluate_operation(VM_Operation* op);
|
void evaluate_operation(VM_Operation* op);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
VMThread();
|
VMThread();
|
||||||
@ -128,6 +133,9 @@ class VMThread: public NamedThread {
|
|||||||
// Returns the current vm operation if any.
|
// Returns the current vm operation if any.
|
||||||
static VM_Operation* vm_operation() { return _cur_vm_operation; }
|
static VM_Operation* vm_operation() { return _cur_vm_operation; }
|
||||||
|
|
||||||
|
// Returns the current vm operation name or set reason
|
||||||
|
static const char* vm_safepoint_description() { return _cur_vm_operation != NULL ? _cur_vm_operation->name() : _no_op_reason; };
|
||||||
|
|
||||||
// Returns the single instance of VMThread.
|
// Returns the single instance of VMThread.
|
||||||
static VMThread* vm_thread() { return _vm_thread; }
|
static VMThread* vm_thread() { return _vm_thread; }
|
||||||
|
|
||||||
|
@ -106,6 +106,11 @@
|
|||||||
template(MarkActiveNMethods) \
|
template(MarkActiveNMethods) \
|
||||||
template(PrintCompileQueue) \
|
template(PrintCompileQueue) \
|
||||||
template(PrintClassHierarchy) \
|
template(PrintClassHierarchy) \
|
||||||
|
template(ThreadSuspend) \
|
||||||
|
template(CTWThreshold) \
|
||||||
|
template(ThreadsSuspendJVMTI) \
|
||||||
|
template(ICBufferFull) \
|
||||||
|
template(ScavengeMonitors) \
|
||||||
|
|
||||||
class VM_Operation: public CHeapObj<mtInternal> {
|
class VM_Operation: public CHeapObj<mtInternal> {
|
||||||
public:
|
public:
|
||||||
@ -238,20 +243,41 @@ class VM_ClearICs: public VM_Operation {
|
|||||||
VMOp_Type type() const { return VMOp_ClearICs; }
|
VMOp_Type type() const { return VMOp_ClearICs; }
|
||||||
};
|
};
|
||||||
|
|
||||||
// dummy vm op, evaluated just to force a safepoint
|
// empty vm op, evaluated just to force a safepoint
|
||||||
class VM_ForceSafepoint: public VM_Operation {
|
class VM_ForceSafepoint: public VM_Operation {
|
||||||
public:
|
public:
|
||||||
VM_ForceSafepoint() {}
|
|
||||||
void doit() {}
|
void doit() {}
|
||||||
VMOp_Type type() const { return VMOp_ForceSafepoint; }
|
VMOp_Type type() const { return VMOp_ForceSafepoint; }
|
||||||
};
|
};
|
||||||
|
|
||||||
// dummy vm op, evaluated just to force a safepoint
|
// empty vm op, when forcing a safepoint to suspend a thread
|
||||||
class VM_ForceAsyncSafepoint: public VM_Operation {
|
class VM_ThreadSuspend: public VM_ForceSafepoint {
|
||||||
public:
|
public:
|
||||||
VM_ForceAsyncSafepoint() {}
|
VMOp_Type type() const { return VMOp_ThreadSuspend; }
|
||||||
void doit() {}
|
};
|
||||||
VMOp_Type type() const { return VMOp_ForceAsyncSafepoint; }
|
|
||||||
|
// empty vm op, when forcing a safepoint due to ctw threshold is reached for the sweeper
|
||||||
|
class VM_CTWThreshold: public VM_ForceSafepoint {
|
||||||
|
public:
|
||||||
|
VMOp_Type type() const { return VMOp_CTWThreshold; }
|
||||||
|
};
|
||||||
|
|
||||||
|
// empty vm op, when forcing a safepoint to suspend threads from jvmti
|
||||||
|
class VM_ThreadsSuspendJVMTI: public VM_ForceSafepoint {
|
||||||
|
public:
|
||||||
|
VMOp_Type type() const { return VMOp_ThreadsSuspendJVMTI; }
|
||||||
|
};
|
||||||
|
|
||||||
|
// empty vm op, when forcing a safepoint due to inline cache buffers being full
|
||||||
|
class VM_ICBufferFull: public VM_ForceSafepoint {
|
||||||
|
public:
|
||||||
|
VMOp_Type type() const { return VMOp_ICBufferFull; }
|
||||||
|
};
|
||||||
|
|
||||||
|
// empty asynchronous vm op, when forcing a safepoint to scavenge monitors
|
||||||
|
class VM_ScavengeMonitors: public VM_ForceSafepoint {
|
||||||
|
public:
|
||||||
|
VMOp_Type type() const { return VMOp_ScavengeMonitors; }
|
||||||
Mode evaluation_mode() const { return _async_safepoint; }
|
Mode evaluation_mode() const { return _async_safepoint; }
|
||||||
bool is_cheap_allocated() const { return true; }
|
bool is_cheap_allocated() const { return true; }
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -97,7 +97,7 @@ bool MallocSiteTable::initialize() {
|
|||||||
|
|
||||||
// Instantiate hash entry for hashtable entry allocation callsite
|
// Instantiate hash entry for hashtable entry allocation callsite
|
||||||
MallocSiteHashtableEntry* entry = ::new ((void*)_hash_entry_allocation_site)
|
MallocSiteHashtableEntry* entry = ::new ((void*)_hash_entry_allocation_site)
|
||||||
MallocSiteHashtableEntry(*stack);
|
MallocSiteHashtableEntry(*stack, mtNMT);
|
||||||
|
|
||||||
// Add the allocation site to hashtable.
|
// Add the allocation site to hashtable.
|
||||||
int index = hash_to_index(stack->hash());
|
int index = hash_to_index(stack->hash());
|
||||||
@ -134,14 +134,15 @@ bool MallocSiteTable::walk(MallocSiteWalker* walker) {
|
|||||||
* Under any of above circumstances, caller should handle the situation.
|
* Under any of above circumstances, caller should handle the situation.
|
||||||
*/
|
*/
|
||||||
MallocSite* MallocSiteTable::lookup_or_add(const NativeCallStack& key, size_t* bucket_idx,
|
MallocSite* MallocSiteTable::lookup_or_add(const NativeCallStack& key, size_t* bucket_idx,
|
||||||
size_t* pos_idx) {
|
size_t* pos_idx, MEMFLAGS flags) {
|
||||||
|
assert(flags != mtNone, "Should have a real memory type");
|
||||||
unsigned int index = hash_to_index(key.hash());
|
unsigned int index = hash_to_index(key.hash());
|
||||||
*bucket_idx = (size_t)index;
|
*bucket_idx = (size_t)index;
|
||||||
*pos_idx = 0;
|
*pos_idx = 0;
|
||||||
|
|
||||||
// First entry for this hash bucket
|
// First entry for this hash bucket
|
||||||
if (_table[index] == NULL) {
|
if (_table[index] == NULL) {
|
||||||
MallocSiteHashtableEntry* entry = new_entry(key);
|
MallocSiteHashtableEntry* entry = new_entry(key, flags);
|
||||||
// OOM check
|
// OOM check
|
||||||
if (entry == NULL) return NULL;
|
if (entry == NULL) return NULL;
|
||||||
|
|
||||||
@ -156,13 +157,12 @@ MallocSite* MallocSiteTable::lookup_or_add(const NativeCallStack& key, size_t* b
|
|||||||
MallocSiteHashtableEntry* head = _table[index];
|
MallocSiteHashtableEntry* head = _table[index];
|
||||||
while (head != NULL && (*pos_idx) <= MAX_BUCKET_LENGTH) {
|
while (head != NULL && (*pos_idx) <= MAX_BUCKET_LENGTH) {
|
||||||
MallocSite* site = head->data();
|
MallocSite* site = head->data();
|
||||||
if (site->equals(key)) {
|
if (site->flags() == flags && site->equals(key)) {
|
||||||
// found matched entry
|
|
||||||
return head->data();
|
return head->data();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (head->next() == NULL && (*pos_idx) < MAX_BUCKET_LENGTH) {
|
if (head->next() == NULL && (*pos_idx) < MAX_BUCKET_LENGTH) {
|
||||||
MallocSiteHashtableEntry* entry = new_entry(key);
|
MallocSiteHashtableEntry* entry = new_entry(key, flags);
|
||||||
// OOM check
|
// OOM check
|
||||||
if (entry == NULL) return NULL;
|
if (entry == NULL) return NULL;
|
||||||
if (head->atomic_insert(entry)) {
|
if (head->atomic_insert(entry)) {
|
||||||
@ -191,10 +191,10 @@ MallocSite* MallocSiteTable::malloc_site(size_t bucket_idx, size_t pos_idx) {
|
|||||||
// Allocates MallocSiteHashtableEntry object. Special call stack
|
// Allocates MallocSiteHashtableEntry object. Special call stack
|
||||||
// (pre-installed allocation site) has to be used to avoid infinite
|
// (pre-installed allocation site) has to be used to avoid infinite
|
||||||
// recursion.
|
// recursion.
|
||||||
MallocSiteHashtableEntry* MallocSiteTable::new_entry(const NativeCallStack& key) {
|
MallocSiteHashtableEntry* MallocSiteTable::new_entry(const NativeCallStack& key, MEMFLAGS flags) {
|
||||||
void* p = AllocateHeap(sizeof(MallocSiteHashtableEntry), mtNMT,
|
void* p = AllocateHeap(sizeof(MallocSiteHashtableEntry), mtNMT,
|
||||||
*hash_entry_allocation_stack(), AllocFailStrategy::RETURN_NULL);
|
*hash_entry_allocation_stack(), AllocFailStrategy::RETURN_NULL);
|
||||||
return ::new (p) MallocSiteHashtableEntry(key);
|
return ::new (p) MallocSiteHashtableEntry(key, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MallocSiteTable::reset() {
|
void MallocSiteTable::reset() {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -37,12 +37,16 @@
|
|||||||
// MallocSite represents a code path that eventually calls
|
// MallocSite represents a code path that eventually calls
|
||||||
// os::malloc() to allocate memory
|
// os::malloc() to allocate memory
|
||||||
class MallocSite : public AllocationSite<MemoryCounter> {
|
class MallocSite : public AllocationSite<MemoryCounter> {
|
||||||
|
private:
|
||||||
|
MEMFLAGS _flags;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MallocSite() :
|
MallocSite() :
|
||||||
AllocationSite<MemoryCounter>(NativeCallStack::EMPTY_STACK) { }
|
AllocationSite<MemoryCounter>(NativeCallStack::EMPTY_STACK), _flags(mtNone) {}
|
||||||
|
|
||||||
|
MallocSite(const NativeCallStack& stack, MEMFLAGS flags) :
|
||||||
|
AllocationSite<MemoryCounter>(stack), _flags(flags) {}
|
||||||
|
|
||||||
MallocSite(const NativeCallStack& stack) :
|
|
||||||
AllocationSite<MemoryCounter>(stack) { }
|
|
||||||
|
|
||||||
void allocate(size_t size) { data()->allocate(size); }
|
void allocate(size_t size) { data()->allocate(size); }
|
||||||
void deallocate(size_t size) { data()->deallocate(size); }
|
void deallocate(size_t size) { data()->deallocate(size); }
|
||||||
@ -51,6 +55,7 @@ class MallocSite : public AllocationSite<MemoryCounter> {
|
|||||||
size_t size() const { return peek()->size(); }
|
size_t size() const { return peek()->size(); }
|
||||||
// The number of calls were made
|
// The number of calls were made
|
||||||
size_t count() const { return peek()->count(); }
|
size_t count() const { return peek()->count(); }
|
||||||
|
MEMFLAGS flags() const { return (MEMFLAGS)_flags; }
|
||||||
};
|
};
|
||||||
|
|
||||||
// Malloc site hashtable entry
|
// Malloc site hashtable entry
|
||||||
@ -62,8 +67,10 @@ class MallocSiteHashtableEntry : public CHeapObj<mtNMT> {
|
|||||||
public:
|
public:
|
||||||
MallocSiteHashtableEntry() : _next(NULL) { }
|
MallocSiteHashtableEntry() : _next(NULL) { }
|
||||||
|
|
||||||
MallocSiteHashtableEntry(const NativeCallStack& stack):
|
MallocSiteHashtableEntry(NativeCallStack stack, MEMFLAGS flags):
|
||||||
_malloc_site(stack), _next(NULL) { }
|
_malloc_site(stack, flags), _next(NULL) {
|
||||||
|
assert(flags != mtNone, "Expect a real memory type");
|
||||||
|
}
|
||||||
|
|
||||||
inline const MallocSiteHashtableEntry* next() const {
|
inline const MallocSiteHashtableEntry* next() const {
|
||||||
return _next;
|
return _next;
|
||||||
@ -198,11 +205,11 @@ class MallocSiteTable : AllStatic {
|
|||||||
// 1. out of memory
|
// 1. out of memory
|
||||||
// 2. overflow hash bucket
|
// 2. overflow hash bucket
|
||||||
static inline bool allocation_at(const NativeCallStack& stack, size_t size,
|
static inline bool allocation_at(const NativeCallStack& stack, size_t size,
|
||||||
size_t* bucket_idx, size_t* pos_idx) {
|
size_t* bucket_idx, size_t* pos_idx, MEMFLAGS flags) {
|
||||||
AccessLock locker(&_access_count);
|
AccessLock locker(&_access_count);
|
||||||
if (locker.sharedLock()) {
|
if (locker.sharedLock()) {
|
||||||
NOT_PRODUCT(_peak_count = MAX2(_peak_count, _access_count);)
|
NOT_PRODUCT(_peak_count = MAX2(_peak_count, _access_count);)
|
||||||
MallocSite* site = lookup_or_add(stack, bucket_idx, pos_idx);
|
MallocSite* site = lookup_or_add(stack, bucket_idx, pos_idx, flags);
|
||||||
if (site != NULL) site->allocate(size);
|
if (site != NULL) site->allocate(size);
|
||||||
return site != NULL;
|
return site != NULL;
|
||||||
}
|
}
|
||||||
@ -228,13 +235,13 @@ class MallocSiteTable : AllStatic {
|
|||||||
static bool walk_malloc_site(MallocSiteWalker* walker);
|
static bool walk_malloc_site(MallocSiteWalker* walker);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static MallocSiteHashtableEntry* new_entry(const NativeCallStack& key);
|
static MallocSiteHashtableEntry* new_entry(const NativeCallStack& key, MEMFLAGS flags);
|
||||||
static void reset();
|
static void reset();
|
||||||
|
|
||||||
// Delete a bucket linked list
|
// Delete a bucket linked list
|
||||||
static void delete_linked_list(MallocSiteHashtableEntry* head);
|
static void delete_linked_list(MallocSiteHashtableEntry* head);
|
||||||
|
|
||||||
static MallocSite* lookup_or_add(const NativeCallStack& key, size_t* bucket_idx, size_t* pos_idx);
|
static MallocSite* lookup_or_add(const NativeCallStack& key, size_t* bucket_idx, size_t* pos_idx, MEMFLAGS flags);
|
||||||
static MallocSite* malloc_site(size_t bucket_idx, size_t pos_idx);
|
static MallocSite* malloc_site(size_t bucket_idx, size_t pos_idx);
|
||||||
static bool walk(MallocSiteWalker* walker);
|
static bool walk(MallocSiteWalker* walker);
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -77,8 +77,8 @@ void MallocHeader::release() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool MallocHeader::record_malloc_site(const NativeCallStack& stack, size_t size,
|
bool MallocHeader::record_malloc_site(const NativeCallStack& stack, size_t size,
|
||||||
size_t* bucket_idx, size_t* pos_idx) const {
|
size_t* bucket_idx, size_t* pos_idx, MEMFLAGS flags) const {
|
||||||
bool ret = MallocSiteTable::allocation_at(stack, size, bucket_idx, pos_idx);
|
bool ret = MallocSiteTable::allocation_at(stack, size, bucket_idx, pos_idx, flags);
|
||||||
|
|
||||||
// Something went wrong, could be OOM or overflow malloc site table.
|
// Something went wrong, could be OOM or overflow malloc site table.
|
||||||
// We want to keep tracking data under OOM circumstance, so transition to
|
// We want to keep tracking data under OOM circumstance, so transition to
|
||||||
|
@ -275,7 +275,7 @@ class MallocHeader VALUE_OBJ_CLASS_SPEC {
|
|||||||
if (level == NMT_detail) {
|
if (level == NMT_detail) {
|
||||||
size_t bucket_idx;
|
size_t bucket_idx;
|
||||||
size_t pos_idx;
|
size_t pos_idx;
|
||||||
if (record_malloc_site(stack, size, &bucket_idx, &pos_idx)) {
|
if (record_malloc_site(stack, size, &bucket_idx, &pos_idx, flags)) {
|
||||||
assert(bucket_idx <= MAX_MALLOCSITE_TABLE_SIZE, "Overflow bucket index");
|
assert(bucket_idx <= MAX_MALLOCSITE_TABLE_SIZE, "Overflow bucket index");
|
||||||
assert(pos_idx <= MAX_BUCKET_LENGTH, "Overflow bucket position index");
|
assert(pos_idx <= MAX_BUCKET_LENGTH, "Overflow bucket position index");
|
||||||
_bucket_idx = bucket_idx;
|
_bucket_idx = bucket_idx;
|
||||||
@ -299,7 +299,7 @@ class MallocHeader VALUE_OBJ_CLASS_SPEC {
|
|||||||
_size = size;
|
_size = size;
|
||||||
}
|
}
|
||||||
bool record_malloc_site(const NativeCallStack& stack, size_t size,
|
bool record_malloc_site(const NativeCallStack& stack, size_t size,
|
||||||
size_t* bucket_idx, size_t* pos_idx) const;
|
size_t* bucket_idx, size_t* pos_idx, MEMFLAGS flags) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -43,11 +43,16 @@ void MemReporterBase::print_total(size_t reserved, size_t committed) const {
|
|||||||
amount_in_current_scale(reserved), scale, amount_in_current_scale(committed), scale);
|
amount_in_current_scale(reserved), scale, amount_in_current_scale(committed), scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MemReporterBase::print_malloc(size_t amount, size_t count) const {
|
void MemReporterBase::print_malloc(size_t amount, size_t count, MEMFLAGS flag) const {
|
||||||
const char* scale = current_scale();
|
const char* scale = current_scale();
|
||||||
outputStream* out = output();
|
outputStream* out = output();
|
||||||
|
if (flag != mtNone) {
|
||||||
|
out->print("(malloc=" SIZE_FORMAT "%s type=%s",
|
||||||
|
amount_in_current_scale(amount), scale, NMTUtil::flag_to_name(flag));
|
||||||
|
} else {
|
||||||
out->print("(malloc=" SIZE_FORMAT "%s",
|
out->print("(malloc=" SIZE_FORMAT "%s",
|
||||||
amount_in_current_scale(amount), scale);
|
amount_in_current_scale(amount), scale);
|
||||||
|
}
|
||||||
|
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
out->print(" #" SIZE_FORMAT "", count);
|
out->print(" #" SIZE_FORMAT "", count);
|
||||||
@ -200,7 +205,10 @@ void MemDetailReporter::report_malloc_sites() {
|
|||||||
const NativeCallStack* stack = malloc_site->call_stack();
|
const NativeCallStack* stack = malloc_site->call_stack();
|
||||||
stack->print_on(out);
|
stack->print_on(out);
|
||||||
out->print("%29s", " ");
|
out->print("%29s", " ");
|
||||||
print_malloc(malloc_site->size(), malloc_site->count());
|
MEMFLAGS flag = malloc_site->flags();
|
||||||
|
assert((flag >= 0 && flag < (int)mt_number_of_types) && flag != mtNone,
|
||||||
|
"Must have a valid memory type");
|
||||||
|
print_malloc(malloc_site->size(), malloc_site->count(),flag);
|
||||||
out->print_cr("\n");
|
out->print_cr("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -76,7 +76,7 @@ class MemReporterBase : public StackObj {
|
|||||||
|
|
||||||
// Print summary total, malloc and virtual memory
|
// Print summary total, malloc and virtual memory
|
||||||
void print_total(size_t reserved, size_t committed) const;
|
void print_total(size_t reserved, size_t committed) const;
|
||||||
void print_malloc(size_t amount, size_t count) const;
|
void print_malloc(size_t amount, size_t count, MEMFLAGS flag = mtNone) const;
|
||||||
void print_virtual_memory(size_t reserved, size_t committed) const;
|
void print_virtual_memory(size_t reserved, size_t committed) const;
|
||||||
|
|
||||||
void print_malloc_line(size_t amount, size_t count) const;
|
void print_malloc_line(size_t amount, size_t count) const;
|
||||||
|
@ -159,6 +159,35 @@ template <MEMFLAGS F> void BasicHashtable<F>::free_buckets() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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.
|
// Copy the table to the shared space.
|
||||||
|
|
||||||
@ -192,7 +221,6 @@ template <MEMFLAGS F> void BasicHashtable<F>::copy_table(char** top, char* end)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template <class T, MEMFLAGS F> int RehashableHashtable<T, F>::literal_size(Symbol *symbol) {
|
template <class T, MEMFLAGS F> int RehashableHashtable<T, F>::literal_size(Symbol *symbol) {
|
||||||
return symbol->size() * HeapWordSize;
|
return symbol->size() * HeapWordSize;
|
||||||
}
|
}
|
||||||
|
@ -162,11 +162,11 @@ private:
|
|||||||
// Instance variables
|
// Instance variables
|
||||||
int _table_size;
|
int _table_size;
|
||||||
HashtableBucket<F>* _buckets;
|
HashtableBucket<F>* _buckets;
|
||||||
BasicHashtableEntry<F>* _free_list;
|
BasicHashtableEntry<F>* volatile _free_list;
|
||||||
char* _first_free_entry;
|
char* _first_free_entry;
|
||||||
char* _end_block;
|
char* _end_block;
|
||||||
int _entry_size;
|
int _entry_size;
|
||||||
int _number_of_entries;
|
volatile int _number_of_entries;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
@ -211,6 +211,24 @@ protected:
|
|||||||
// Free the buckets in this hashtable
|
// Free the buckets in this hashtable
|
||||||
void free_buckets();
|
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:
|
public:
|
||||||
int table_size() { return _table_size; }
|
int table_size() { return _table_size; }
|
||||||
void set_entry(int index, BasicHashtableEntry<F>* entry);
|
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.assertEQ;
|
||||||
import static jdk.test.lib.Asserts.assertFalse;
|
import static jdk.test.lib.Asserts.assertFalse;
|
||||||
import static jdk.test.lib.Asserts.assertTrue;
|
import static jdk.test.lib.Asserts.assertTrue;
|
||||||
import jdk.test.lib.DynamicVMOption;
|
import jdk.test.lib.management.DynamicVMOption;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @test TestDynMaxHeapFreeRatio
|
* @test TestDynMaxHeapFreeRatio
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
import static jdk.test.lib.Asserts.assertEQ;
|
import static jdk.test.lib.Asserts.assertEQ;
|
||||||
import static jdk.test.lib.Asserts.assertFalse;
|
import static jdk.test.lib.Asserts.assertFalse;
|
||||||
import static jdk.test.lib.Asserts.assertTrue;
|
import static jdk.test.lib.Asserts.assertTrue;
|
||||||
import jdk.test.lib.DynamicVMOption;
|
import jdk.test.lib.management.DynamicVMOption;
|
||||||
|
|
||||||
public class TestDynMinHeapFreeRatio {
|
public class TestDynMinHeapFreeRatio {
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ import java.util.List;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import jdk.test.lib.ByteCodeLoader;
|
import jdk.test.lib.ByteCodeLoader;
|
||||||
import jdk.test.lib.InMemoryJavaCompiler;
|
import jdk.test.lib.compiler.InMemoryJavaCompiler;
|
||||||
import jdk.test.lib.Platform;
|
import jdk.test.lib.Platform;
|
||||||
|
|
||||||
import sun.management.ManagementFactoryHelper;
|
import sun.management.ManagementFactoryHelper;
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
* @library /test/lib /
|
* @library /test/lib /
|
||||||
* @run main/othervm -XX:+UseAdaptiveSizePolicyWithSystemGC -XX:+UseParallelGC -XX:MinHeapFreeRatio=0 -XX:MaxHeapFreeRatio=100 -Xmx1g -verbose:gc TestDynShrinkHeap
|
* @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.ManagementFactory;
|
||||||
import java.lang.management.MemoryUsage;
|
import java.lang.management.MemoryUsage;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
* @run main BootstrapRedefine
|
* @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.ProcessTools;
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
import jdk.test.lib.process.OutputAnalyzer;
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import jdk.test.lib.Asserts;
|
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.OutputAnalyzer;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
import jdk.test.lib.dcmd.PidJcmdExecutor;
|
import jdk.test.lib.dcmd.PidJcmdExecutor;
|
||||||
|
@ -29,7 +29,7 @@ import java.util.Arrays;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
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.OutputAnalyzer;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
import jdk.test.lib.dcmd.CommandExecutor;
|
import jdk.test.lib.dcmd.CommandExecutor;
|
||||||
@ -383,7 +383,11 @@ public abstract class JVMOption {
|
|||||||
runJava.add(VMType);
|
runJava.add(VMType);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GCType != null) {
|
if (GCType != null &&
|
||||||
|
!(prepend.contains("-XX:+UseConcMarkSweepGC") ||
|
||||||
|
prepend.contains("-XX:+UseSerialGC") ||
|
||||||
|
prepend.contains("-XX:+UseParallelGC") ||
|
||||||
|
prepend.contains("-XX:+UseG1GC"))) {
|
||||||
runJava.add(GCType);
|
runJava.add(GCType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,6 +242,9 @@ public class JVMOptionsUtils {
|
|||||||
option.addPrepend("-XX:SharedArchiveFile=TestOptionsWithRanges.jsa");
|
option.addPrepend("-XX:SharedArchiveFile=TestOptionsWithRanges.jsa");
|
||||||
option.addPrepend("-Xshare:dump");
|
option.addPrepend("-Xshare:dump");
|
||||||
break;
|
break;
|
||||||
|
case "TLABWasteIncrement":
|
||||||
|
option.addPrepend("-XX:+UseParallelGC");
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
/* Do nothing */
|
/* Do nothing */
|
||||||
break;
|
break;
|
||||||
|
@ -51,7 +51,7 @@ import java.util.List;
|
|||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import jdk.test.lib.Asserts;
|
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.OutputAnalyzer;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
|
|
||||||
|
@ -34,15 +34,14 @@
|
|||||||
|
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.lang.NoSuchFieldException;
|
|
||||||
import java.lang.NoSuchMethodException;
|
|
||||||
import java.lang.RuntimeException;
|
import java.lang.RuntimeException;
|
||||||
import java.lang.instrument.ClassDefinition;
|
import java.lang.instrument.ClassDefinition;
|
||||||
import java.lang.instrument.ClassFileTransformer;
|
import java.lang.instrument.ClassFileTransformer;
|
||||||
import java.lang.instrument.IllegalClassFormatException;
|
import java.lang.instrument.IllegalClassFormatException;
|
||||||
import java.lang.instrument.Instrumentation;
|
import java.lang.instrument.Instrumentation;
|
||||||
import java.security.ProtectionDomain;
|
import java.security.ProtectionDomain;
|
||||||
import jdk.test.lib.*;
|
|
||||||
|
import jdk.test.lib.compiler.InMemoryJavaCompiler;
|
||||||
|
|
||||||
public class ModifyAnonymous {
|
public class ModifyAnonymous {
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -30,7 +30,7 @@
|
|||||||
* java.management
|
* java.management
|
||||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions DumpSymbolAndStringTable
|
* @run main/othervm -XX:+UnlockDiagnosticVMOptions DumpSymbolAndStringTable
|
||||||
*/
|
*/
|
||||||
|
import jdk.test.lib.cds.CDSTestUtils;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
import jdk.test.lib.process.OutputAnalyzer;
|
||||||
import jdk.test.lib.JDKToolFinder;
|
import jdk.test.lib.JDKToolFinder;
|
||||||
@ -42,7 +42,7 @@ public class DumpSymbolAndStringTable {
|
|||||||
|
|
||||||
ProcessBuilder pb = new ProcessBuilder();
|
ProcessBuilder pb = new ProcessBuilder();
|
||||||
pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.symboltable", "-verbose"});
|
pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.symboltable", "-verbose"});
|
||||||
OutputAnalyzer output = new OutputAnalyzer(pb.start());
|
OutputAnalyzer output = CDSTestUtils.executeAndLog(pb, "jcmd-symboltable");
|
||||||
try {
|
try {
|
||||||
output.shouldContain("24 2: DumpSymbolAndStringTable\n");
|
output.shouldContain("24 2: DumpSymbolAndStringTable\n");
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
@ -50,7 +50,7 @@ public class DumpSymbolAndStringTable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.stringtable", "-verbose"});
|
pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.stringtable", "-verbose"});
|
||||||
output = new OutputAnalyzer(pb.start());
|
output = CDSTestUtils.executeAndLog(pb, "jcmd-stringtable");
|
||||||
try {
|
try {
|
||||||
output.shouldContain("16: java.lang.String\n");
|
output.shouldContain("16: java.lang.String\n");
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
|
@ -40,7 +40,6 @@ import jdk.test.lib.Platform;
|
|||||||
|
|
||||||
public class LargeSharedSpace {
|
public class LargeSharedSpace {
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
ProcessBuilder pb;
|
|
||||||
OutputAnalyzer output;
|
OutputAnalyzer output;
|
||||||
|
|
||||||
// Test case 1: -XX:SharedMiscCodeSize=1066924031
|
// Test case 1: -XX:SharedMiscCodeSize=1066924031
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -31,6 +31,7 @@
|
|||||||
* @run main LimitSharedSizes
|
* @run main LimitSharedSizes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import jdk.test.lib.cds.CDSTestUtils;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
import jdk.test.lib.process.OutputAnalyzer;
|
||||||
import jdk.test.lib.Platform;
|
import jdk.test.lib.Platform;
|
||||||
@ -150,7 +151,7 @@ public class LimitSharedSizes {
|
|||||||
option,
|
option,
|
||||||
"-Xshare:dump");
|
"-Xshare:dump");
|
||||||
|
|
||||||
OutputAnalyzer output = new OutputAnalyzer(pb.start());
|
OutputAnalyzer output = CDSTestUtils.executeAndLog(pb, "dump" + counter);
|
||||||
|
|
||||||
switch (td.getResult()) {
|
switch (td.getResult()) {
|
||||||
case VALID:
|
case VALID:
|
||||||
@ -167,24 +168,16 @@ public class LimitSharedSizes {
|
|||||||
"-XX:+PrintSharedArchiveAndExit",
|
"-XX:+PrintSharedArchiveAndExit",
|
||||||
"-version");
|
"-version");
|
||||||
|
|
||||||
try {
|
output = CDSTestUtils.executeAndLog(pb, "use" + counter);
|
||||||
output = new OutputAnalyzer(pb.start());
|
if(CDSTestUtils.isUnableToMap(output)) {
|
||||||
output.shouldContain("archive is valid");
|
System.out.println("Unable to use shared archive: " +
|
||||||
} catch (RuntimeException e) {
|
"test not executed; assumed passed");
|
||||||
// if sharing failed due to ASLR or similar reasons,
|
|
||||||
// check whether sharing was attempted at all (UseSharedSpaces)
|
|
||||||
if ((output.getOutput().contains("Unable to use shared archive") ||
|
|
||||||
output.getOutput().contains("Unable to map ReadOnly shared space at required address.") ||
|
|
||||||
output.getOutput().contains("Unable to map ReadWrite shared space at required address.") ||
|
|
||||||
output.getOutput().contains("Unable to reserve shared space at required address")) &&
|
|
||||||
output.getExitValue() == 1) {
|
|
||||||
System.out.println("Unable to use shared archive: test not executed; assumed passed");
|
|
||||||
continue;
|
continue;
|
||||||
}
|
} else {
|
||||||
}
|
|
||||||
output.shouldHaveExitValue(0);
|
output.shouldHaveExitValue(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case TOO_SMALL:
|
case TOO_SMALL:
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -30,15 +30,16 @@
|
|||||||
* java.management
|
* java.management
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import jdk.test.lib.cds.CDSTestUtils;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
|
||||||
|
|
||||||
public class MaxMetaspaceSize {
|
public class MaxMetaspaceSize {
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
|
String msg = "is not large enough.\n" +
|
||||||
|
"Either don't specify the -XX:MaxMetaspaceSize=<size>\n" +
|
||||||
|
"or increase the size to at least";
|
||||||
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
|
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
|
||||||
"-XX:MaxMetaspaceSize=10m", "-Xshare:dump");
|
"-XX:MaxMetaspaceSize=10m", "-Xshare:dump");
|
||||||
OutputAnalyzer output = new OutputAnalyzer(pb.start());
|
CDSTestUtils.executeAndLog(pb, "dump").shouldContain(msg).shouldHaveExitValue(2);
|
||||||
output.shouldContain("is not large enough.\nEither don't specify the -XX:MaxMetaspaceSize=<size>\nor increase the size to at least");
|
|
||||||
output.shouldHaveExitValue(2);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -95,17 +95,11 @@ public class SASymbolTableTest {
|
|||||||
"--add-exports=jdk.hotspot.agent/sun.jvm.hotspot.tools=ALL-UNNAMED",
|
"--add-exports=jdk.hotspot.agent/sun.jvm.hotspot.tools=ALL-UNNAMED",
|
||||||
"SASymbolTableTestAgent",
|
"SASymbolTableTestAgent",
|
||||||
Long.toString(pid));
|
Long.toString(pid));
|
||||||
OutputAnalyzer output = ProcessTools.executeProcess(tool);
|
OutputAnalyzer output = CDSTestUtils.executeAndLog(tool, "tool");
|
||||||
System.out.println("STDOUT[");
|
|
||||||
System.out.println(output.getOutput());
|
|
||||||
if (output.getStdout().contains("connected too early")) {
|
if (output.getStdout().contains("connected too early")) {
|
||||||
System.out.println("SymbolTable not created by VM - test skipped");
|
System.out.println("SymbolTable not created by VM - test skipped");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
System.out.println("]");
|
|
||||||
System.out.println("STDERR[");
|
|
||||||
System.out.print(output.getStderr());
|
|
||||||
System.out.println("]");
|
|
||||||
output.shouldHaveExitValue(0);
|
output.shouldHaveExitValue(0);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
throw new RuntimeException("Test ERROR " + ex, ex);
|
throw new RuntimeException("Test ERROR " + ex, ex);
|
||||||
|
@ -32,8 +32,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import java.security.ProtectionDomain;
|
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 jdk.internal.misc.Unsafe;
|
||||||
import static jdk.test.lib.Asserts.*;
|
import static jdk.test.lib.Asserts.*;
|
||||||
|
|
||||||
|
@ -31,12 +31,9 @@
|
|||||||
* @run main NestedUnsafe
|
* @run main NestedUnsafe
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import java.security.ProtectionDomain;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.lang.*;
|
import java.lang.*;
|
||||||
import jdk.test.lib.InMemoryJavaCompiler;
|
import jdk.test.lib.compiler.InMemoryJavaCompiler;
|
||||||
import jdk.internal.misc.Unsafe;
|
import jdk.internal.misc.Unsafe;
|
||||||
import static jdk.test.lib.Asserts.*;
|
|
||||||
|
|
||||||
// package p;
|
// package p;
|
||||||
|
|
||||||
|
@ -34,11 +34,10 @@
|
|||||||
|
|
||||||
package p;
|
package p;
|
||||||
|
|
||||||
import java.security.ProtectionDomain;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.lang.*;
|
import java.lang.*;
|
||||||
import jdk.test.lib.*;
|
|
||||||
import jdk.internal.misc.Unsafe;
|
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
|
// Test that an anonymous class in package 'p' cannot define its own anonymous class
|
||||||
|
@ -34,11 +34,10 @@
|
|||||||
|
|
||||||
package p;
|
package p;
|
||||||
|
|
||||||
import java.security.ProtectionDomain;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.lang.*;
|
import java.lang.*;
|
||||||
import jdk.test.lib.*;
|
|
||||||
import jdk.internal.misc.Unsafe;
|
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
|
// 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.io.File;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
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.ProcessTools;
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
import jdk.test.lib.process.OutputAnalyzer;
|
||||||
|
|
||||||
|
@ -38,8 +38,7 @@
|
|||||||
|
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
import jdk.test.lib.process.OutputAnalyzer;
|
||||||
import jdk.test.lib.InMemoryJavaCompiler;
|
import jdk.test.lib.compiler.InMemoryJavaCompiler;
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
public class ModuleStress {
|
public class ModuleStress {
|
||||||
|
|
||||||
|
@ -30,10 +30,9 @@
|
|||||||
* @run main PatchModule2Dirs
|
* @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.OutputAnalyzer;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
public class PatchModule2Dirs {
|
public class PatchModule2Dirs {
|
||||||
|
|
||||||
|
@ -31,8 +31,7 @@
|
|||||||
* @run main PatchModuleCDS
|
* @run main PatchModuleCDS
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import java.io.File;
|
import jdk.test.lib.compiler.InMemoryJavaCompiler;
|
||||||
import jdk.test.lib.InMemoryJavaCompiler;
|
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
import jdk.test.lib.process.OutputAnalyzer;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Paths;
|
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.OutputAnalyzer;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
* @run main PatchModuleJavaBase
|
* @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.OutputAnalyzer;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
* @run main PatchModuleTest
|
* @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.OutputAnalyzer;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
* @run main PatchModuleTestJar
|
* @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.OutputAnalyzer;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
|
|
||||||
|
@ -32,8 +32,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import java.io.File;
|
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.OutputAnalyzer;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
|
|
||||||
|
@ -32,8 +32,7 @@
|
|||||||
* @run main PatchModuleTraceCL
|
* @run main PatchModuleTraceCL
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import java.io.File;
|
import jdk.test.lib.compiler.InMemoryJavaCompiler;
|
||||||
import jdk.test.lib.InMemoryJavaCompiler;
|
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
import jdk.test.lib.process.OutputAnalyzer;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ import java.io.File;
|
|||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Paths;
|
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.OutputAnalyzer;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
* @run main/othervm XbootcpNoVisibility
|
* @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.ProcessTools;
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
import jdk.test.lib.process.OutputAnalyzer;
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ import java.io.File;
|
|||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Paths;
|
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.OutputAnalyzer;
|
||||||
import jdk.test.lib.process.ProcessTools;
|
import jdk.test.lib.process.ProcessTools;
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
* @run main/native NoClassDefFoundMsg
|
* @run main/native NoClassDefFoundMsg
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import jdk.test.lib.InMemoryJavaCompiler;
|
import jdk.test.lib.compiler.InMemoryJavaCompiler;
|
||||||
import jdk.internal.misc.Unsafe;
|
import jdk.internal.misc.Unsafe;
|
||||||
|
|
||||||
public class NoClassDefFoundMsg {
|
public class NoClassDefFoundMsg {
|
||||||
|
@ -419,3 +419,6 @@ ac697b2bdf486ef18caad2092bd24036e14946ac jdk-10+5
|
|||||||
646567dcfa64b9a39b33d71330427737d1c1a0d5 jdk-9+167
|
646567dcfa64b9a39b33d71330427737d1c1a0d5 jdk-9+167
|
||||||
23a87f409371fb8ce7b764cccb3a74c3f6b29900 jdk-9+168
|
23a87f409371fb8ce7b764cccb3a74c3f6b29900 jdk-9+168
|
||||||
5d9d2a65fb26aa183019346c11d9314819621665 jdk-9+169
|
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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -22,14 +23,6 @@
|
|||||||
* questions.
|
* 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;
|
package com.sun.org.apache.xerces.internal.util;
|
||||||
|
|
||||||
public class FeatureState {
|
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
|
* 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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -22,13 +23,6 @@
|
|||||||
* questions.
|
* 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;
|
package com.sun.org.apache.xerces.internal.util;
|
||||||
|
|
||||||
public class PropertyState {
|
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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -22,13 +23,6 @@
|
|||||||
* questions.
|
* 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;
|
package com.sun.org.apache.xerces.internal.util;
|
||||||
|
|
||||||
public enum Status {
|
public enum Status {
|
||||||
|
@ -1,32 +1,21 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
|
* 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;
|
package com.sun.xml.internal.stream.dtd.nonvalidating;
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!--
|
<!--
|
||||||
|
Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
|
|
||||||
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
|
||||||
This code is free software; you can redistribute it and/or modify it
|
This code is free software; you can redistribute it and/or modify it
|
||||||
@ -23,7 +22,6 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|||||||
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 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
|
or visit www.oracle.com if you need additional information or have any
|
||||||
questions.
|
questions.
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!DOCTYPE html
|
<!DOCTYPE html
|
||||||
@ -43,28 +41,26 @@ questions.
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
Provides for StAX-specific transformation APIs.
|
This package implements StAX-specific transformation APIs. It provides
|
||||||
TODO: better description(s).
|
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>
|
</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
|
@since 1.6
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
@ -422,3 +422,6 @@ ac7e572a6a6ba5bbd7e6aa94a289f88cc86256a4 jdk-10+4
|
|||||||
1c610f1b4097c64cdd722a7fb59f5a4d9cc15ca9 jdk-9+167
|
1c610f1b4097c64cdd722a7fb59f5a4d9cc15ca9 jdk-9+167
|
||||||
2746716dcc5a8c28ccf41df0c8fb620b1a1e7098 jdk-9+168
|
2746716dcc5a8c28ccf41df0c8fb620b1a1e7098 jdk-9+168
|
||||||
912cf69806d518c5af7fba30b340c4cb5458dd22 jdk-9+169
|
912cf69806d518c5af7fba30b340c4cb5458dd22 jdk-9+169
|
||||||
|
e75d3abe579a7b39b762fc0a1a337c49eb072d82 jdk-9+170
|
||||||
|
b0efae7df1dfa14926058baebaf999e4268c955c jdk-10+7
|
||||||
|
e705867d9989d00e4357f66f18b302c95e13b5e7 jdk-10+8
|
||||||
|
@ -419,3 +419,6 @@ d1436b2945383cef15edbdba9bb41ef1656c987b jdk-10+5
|
|||||||
7828aedcb525df40b7c8122bcc3f997c75ebaf7f jdk-9+167
|
7828aedcb525df40b7c8122bcc3f997c75ebaf7f jdk-9+167
|
||||||
e78da9db6299b3fcba49300d52e2359e82fdd218 jdk-9+168
|
e78da9db6299b3fcba49300d52e2359e82fdd218 jdk-9+168
|
||||||
177436a54ca13730ffc725a6e5dbfcd9486f3da3 jdk-9+169
|
177436a54ca13730ffc725a6e5dbfcd9486f3da3 jdk-9+169
|
||||||
|
ef9954f6896bb0b95ac62bf769f68b59a7a56ccd jdk-9+170
|
||||||
|
cbd65760a005766610583949b3b5c9ace92e74b3 jdk-10+7
|
||||||
|
f0adc10ed8316e6cf316e3208c5ecf6835d22bc4 jdk-10+8
|
||||||
|
@ -291,9 +291,21 @@ endif
|
|||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
ifneq ($(filter images, $(MAKECMDGOALS)), )
|
||||||
|
$(eval $(call SetupCopyFiles, COPY_TO_TEST_IMAGE, \
|
||||||
|
SRC := $(SUPPORT_OUTPUTDIR)/demos/image, \
|
||||||
|
DEST := $(TEST_IMAGE_DIR)/jdk/demos, \
|
||||||
|
FILES := $(call DoubleDollar, $(call CacheFind, $(SUPPORT_OUTPUTDIR)/demos/image)), \
|
||||||
|
))
|
||||||
|
|
||||||
|
IMAGES_TARGETS := $(COPY_TO_TEST_IMAGE)
|
||||||
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
# Hook to include the corresponding custom file, if present.
|
# Hook to include the corresponding custom file, if present.
|
||||||
$(eval $(call IncludeCustomExtension, jdk, CompileDemos.gmk))
|
$(eval $(call IncludeCustomExtension, jdk, CompileDemos.gmk))
|
||||||
|
|
||||||
all: $(TARGETS)
|
all: $(TARGETS)
|
||||||
|
images: $(IMAGES_TARGETS)
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
|
@ -23,21 +23,33 @@
|
|||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
default: all
|
||||||
|
|
||||||
include $(SPEC)
|
include $(SPEC)
|
||||||
include MakeBase.gmk
|
include MakeBase.gmk
|
||||||
include JavaCompilation.gmk
|
include JavaCompilation.gmk
|
||||||
include SetupJavaCompilers.gmk
|
include SetupJavaCompilers.gmk
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
TOOLS_CLASSES_DIR := $(BUILDTOOLS_OUTPUTDIR)/tools_jigsaw_classes
|
TOOLS_CLASSES_DIR := $(BUILDTOOLS_OUTPUTDIR)/tools_jigsaw_classes
|
||||||
|
|
||||||
$(eval $(call SetupJavaCompilation,BUILD_JIGSAW_TOOLS, \
|
$(eval $(call SetupJavaCompilation,BUILD_JIGSAW_TOOLS, \
|
||||||
SETUP := GENERATE_USINGJDKBYTECODE, \
|
SETUP := GENERATE_USINGJDKBYTECODE, \
|
||||||
SRC := $(JDK_TOPDIR)/make/src/classes, \
|
SRC := $(JDK_TOPDIR)/make/src/classes, \
|
||||||
INCLUDES := build/tools/deps \
|
INCLUDES := build/tools/deps \
|
||||||
|
build/tools/docs \
|
||||||
build/tools/jigsaw, \
|
build/tools/jigsaw, \
|
||||||
|
COPY := .properties .html, \
|
||||||
BIN := $(TOOLS_CLASSES_DIR), \
|
BIN := $(TOOLS_CLASSES_DIR), \
|
||||||
ADD_JAVAC_FLAGS := \
|
ADD_JAVAC_FLAGS := \
|
||||||
--add-modules jdk.jdeps \
|
--add-modules jdk.jdeps \
|
||||||
--add-exports java.base/jdk.internal.module=ALL-UNNAMED \
|
--add-exports java.base/jdk.internal.module=ALL-UNNAMED \
|
||||||
--add-exports jdk.jdeps/com.sun.tools.jdeps=ALL-UNNAMED \
|
--add-exports jdk.jdeps/com.sun.tools.jdeps=ALL-UNNAMED \
|
||||||
))
|
))
|
||||||
|
|
||||||
|
TARGETS += $(BUILD_JIGSAW_TOOLS)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
all: $(TARGETS)
|
||||||
|
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