mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2026-01-04 15:41:38 +01:00
Compare commits
143 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0d0f164600 | ||
|
|
77652db97d | ||
|
|
4221eb48d8 | ||
|
|
82ff76303c | ||
|
|
476f2a457e | ||
|
|
bca4bd4e67 | ||
|
|
2897373636 | ||
|
|
13c7839ccf | ||
|
|
022478636a | ||
|
|
a8ba9773bc | ||
|
|
44e9361690 | ||
|
|
5c98a075b0 | ||
|
|
f600531122 | ||
|
|
c61500476a | ||
|
|
902b559c9a | ||
|
|
b4a1c2c9f9 | ||
|
|
7f7397afc2 | ||
|
|
b0cb30ea09 | ||
|
|
8c0ed98c13 | ||
|
|
411490a7ef | ||
|
|
70eda1ba26 | ||
|
|
18b1dfcafa | ||
|
|
681487c5e0 | ||
|
|
e65e9895d4 | ||
|
|
7b7451a78f | ||
|
|
9ddc858469 | ||
|
|
993c9a0c83 | ||
|
|
bd4100bd5c | ||
|
|
20d68ecb58 | ||
|
|
a944319c4e | ||
|
|
be4b3bd942 | ||
|
|
6cef7d30d1 | ||
|
|
e68df62c6d | ||
|
|
b659d74423 | ||
|
|
3b066f59e5 | ||
|
|
7781ed0fd6 | ||
|
|
75b3070ce1 | ||
|
|
938744edab | ||
|
|
e9fe6f3c6b | ||
|
|
0a843fc371 | ||
|
|
3d902cf92a | ||
|
|
7a520e19a1 | ||
|
|
a171cafd32 | ||
|
|
57cdb9b642 | ||
|
|
08c80bdefc | ||
|
|
76800fef73 | ||
|
|
5e82a2de08 | ||
|
|
848c1f69fb | ||
|
|
0369442aa0 | ||
|
|
fd73998610 | ||
|
|
0e7374e99c | ||
|
|
644aec5212 | ||
|
|
e7a9736953 | ||
|
|
fc92cc69ef | ||
|
|
77532f2533 | ||
|
|
7034b57473 | ||
|
|
8f06089168 | ||
|
|
ac0bf2d401 | ||
|
|
061b09e847 | ||
|
|
c4d86b2455 | ||
|
|
d5fb09f608 | ||
|
|
8031c134aa | ||
|
|
cc296e46f5 | ||
|
|
87be0f2e80 | ||
|
|
578fd1677d | ||
|
|
d0649472fa | ||
|
|
1697e378d3 | ||
|
|
a9c2bc6517 | ||
|
|
b2870f2b5f | ||
|
|
32ec4f19bd | ||
|
|
59744df73d | ||
|
|
63fafe8f4e | ||
|
|
767708c888 | ||
|
|
ecad36f796 | ||
|
|
619406edfe | ||
|
|
87077a671c | ||
|
|
0175ff7a69 | ||
|
|
6d381ad5bb | ||
|
|
84abc71347 | ||
|
|
f3bfb121b2 | ||
|
|
c4a1567a74 | ||
|
|
6498ea1408 | ||
|
|
b45b8855a2 | ||
|
|
eb2e12eefd | ||
|
|
4fff93d5b6 | ||
|
|
3171214a12 | ||
|
|
fc10ff7fe0 | ||
|
|
696328559d | ||
|
|
e0cd6e69c0 | ||
|
|
d2b3d30d6a | ||
|
|
5a44e0f4d1 | ||
|
|
b57ce33394 | ||
|
|
5d2b14d198 | ||
|
|
73b3420b12 | ||
|
|
5fff5a2fd2 | ||
|
|
5bf8bd9a1b | ||
|
|
e0fa8ae189 | ||
|
|
8190890ef7 | ||
|
|
dff24c5402 | ||
|
|
1b9bc71495 | ||
|
|
cd62e1b6a1 | ||
|
|
19aadc8e3b | ||
|
|
31af6b45ea | ||
|
|
5a9513dfca | ||
|
|
38f7b05e1b | ||
|
|
36db7be3a5 | ||
|
|
aa6e6a104a | ||
|
|
7f348b3547 | ||
|
|
34ea5bd979 | ||
|
|
df177f4150 | ||
|
|
db214b049e | ||
|
|
4f8f7b2501 | ||
|
|
aea187fdd2 | ||
|
|
51272f395a | ||
|
|
77d6023200 | ||
|
|
e830b7d68e | ||
|
|
bd80c04cc2 | ||
|
|
83a3e9f114 | ||
|
|
6354698728 | ||
|
|
8c982f3544 | ||
|
|
74ef00df37 | ||
|
|
06d33aa65a | ||
|
|
2f402211d9 | ||
|
|
538f99f6ca | ||
|
|
7f5c2a5718 | ||
|
|
0f5b1f5cf8 | ||
|
|
b518bb5bcd | ||
|
|
edb00726d3 | ||
|
|
a89cb1d937 | ||
|
|
de926ebe30 | ||
|
|
ed2434de14 | ||
|
|
6dd266ef16 | ||
|
|
2e6d1426b2 | ||
|
|
319619e55f | ||
|
|
9b6308c921 | ||
|
|
7eb1822889 | ||
|
|
1df6a97a4d | ||
|
|
8ec46c5612 | ||
|
|
1351bca5b4 | ||
|
|
9f3a70f1fc | ||
|
|
e80ef7a2e0 | ||
|
|
025daa2460 | ||
|
|
e41b775ecd |
3
.hgtags
3
.hgtags
@@ -414,3 +414,6 @@ d3e973f1809606c67412361041ad197e50fe8cec jdk-9+166
|
||||
fcabc74bd44e56c7419d111d59b95669ecb33c55 jdk-9+168
|
||||
c7efde2b60fc1ec04630be769d9ad60efb39c39c jdk-9+169
|
||||
898cbe31fbdae2d25d141384fac746cc244a730c jdk-9+170
|
||||
643b5f18c2656fe91b69fea85b07b98d5fad394d jdk-9+171
|
||||
dad6746278facbbea57dd462cb56fb743dc0a5f0 jdk-9+172
|
||||
6dd7fda42bab7ecf648cafb0a4e9b4ca11b3094f jdk-9+173
|
||||
|
||||
@@ -413,3 +413,6 @@ ba5b16c9c6d80632b61959a33d424b1c3398ce62 jdk-9+166
|
||||
143d4c87bc1ef1ed6dadd613cd9dd4488fdefc29 jdk-9+168
|
||||
b25838a28195f4b6dab34668411eedd2d366a16c jdk-9+169
|
||||
4d163ec59d989a9261ed7f848bc6303f90869af5 jdk-9+170
|
||||
4c12464a907db4656c1033f56fa49cba643ac629 jdk-9+171
|
||||
2c25fc24103251f9711a1c280c31e1e41016d90f jdk-9+172
|
||||
88d7fd969e7df0e07a53b201cfd29393ca33ede9 jdk-9+173
|
||||
|
||||
@@ -688,6 +688,7 @@ LIBFFI_LIBS
|
||||
LIBFFI_CFLAGS
|
||||
ALSA_LIBS
|
||||
ALSA_CFLAGS
|
||||
FREETYPE_LICENSE
|
||||
FREETYPE_BUNDLE_LIB_PATH
|
||||
FREETYPE_LIBS
|
||||
FREETYPE_CFLAGS
|
||||
@@ -1199,6 +1200,7 @@ with_freetype_include
|
||||
with_freetype_lib
|
||||
with_freetype_src
|
||||
enable_freetype_bundling
|
||||
with_freetype_license
|
||||
with_alsa
|
||||
with_alsa_include
|
||||
with_alsa_lib
|
||||
@@ -2151,6 +2153,7 @@ Optional Packages:
|
||||
--with-freetype-src specify directory with freetype sources to
|
||||
automatically build the library (experimental,
|
||||
Windows-only)
|
||||
--with-freetype-license if bundling freetype, also bundle this license file
|
||||
--with-alsa specify prefix directory for the alsa package
|
||||
(expecting the libraries under PATH/lib and the
|
||||
headers under PATH/include)
|
||||
@@ -5183,7 +5186,7 @@ VS_SDK_PLATFORM_NAME_2013=
|
||||
#CUSTOM_AUTOCONF_INCLUDE
|
||||
|
||||
# Do not change or remove the following line, it is needed for consistency checks:
|
||||
DATE_WHEN_GENERATED=1494858828
|
||||
DATE_WHEN_GENERATED=1496926402
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
@@ -57706,6 +57709,12 @@ if test "${enable_freetype_bundling+set}" = set; then :
|
||||
fi
|
||||
|
||||
|
||||
# Check whether --with-freetype-license was given.
|
||||
if test "${with_freetype_license+set}" = set; then :
|
||||
withval=$with_freetype_license;
|
||||
fi
|
||||
|
||||
|
||||
# Need to specify explicitly since it needs to be overridden on some versions of macosx
|
||||
FREETYPE_BASE_NAME=freetype
|
||||
FREETYPE_CFLAGS=
|
||||
@@ -63652,6 +63661,153 @@ $as_echo "$BUNDLE_FREETYPE" >&6; }
|
||||
|
||||
fi # end freetype needed
|
||||
|
||||
FREETYPE_LICENSE=""
|
||||
if test "x$with_freetype_license" = "xyes"; then
|
||||
as_fn_error $? "--with-freetype-license must have a value" "$LINENO" 5
|
||||
elif test "x$with_freetype_license" != "x"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype license" >&5
|
||||
$as_echo_n "checking for freetype license... " >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_freetype_license" >&5
|
||||
$as_echo "$with_freetype_license" >&6; }
|
||||
FREETYPE_LICENSE="$with_freetype_license"
|
||||
|
||||
# Only process if variable expands to non-empty
|
||||
|
||||
if test "x$FREETYPE_LICENSE" != 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="$FREETYPE_LICENSE"
|
||||
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 FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&5
|
||||
$as_echo "$as_me: The path of FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&6;}
|
||||
as_fn_error $? "Cannot locate the the path of FREETYPE_LICENSE" "$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
|
||||
FREETYPE_LICENSE="$new_path"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&5
|
||||
$as_echo "$as_me: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&6;}
|
||||
fi
|
||||
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
|
||||
path="$FREETYPE_LICENSE"
|
||||
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
|
||||
FREETYPE_LICENSE="$new_path"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&5
|
||||
$as_echo "$as_me: Rewriting FREETYPE_LICENSE 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="$FREETYPE_LICENSE"
|
||||
has_space=`$ECHO "$path" | $GREP " "`
|
||||
if test "x$has_space" != x; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&5
|
||||
$as_echo "$as_me: The path of FREETYPE_LICENSE, 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 FREETYPE_LICENSE, which resolves as \"$path\", is not found." "$LINENO" 5
|
||||
fi
|
||||
|
||||
if test -d "$path"; then
|
||||
FREETYPE_LICENSE="`cd "$path"; $THEPWDCMD -L`"
|
||||
else
|
||||
dir="`$DIRNAME "$path"`"
|
||||
base="`$BASENAME "$path"`"
|
||||
FREETYPE_LICENSE="`cd "$dir"; $THEPWDCMD -L`/$base"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test ! -f "$FREETYPE_LICENSE"; then
|
||||
as_fn_error $? "$FREETYPE_LICENSE cannot be found" "$LINENO" 5
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -194,6 +194,8 @@ AC_DEFUN_ONCE([LIB_SETUP_FREETYPE],
|
||||
[specify directory with freetype sources to automatically build the library (experimental, Windows-only)])])
|
||||
AC_ARG_ENABLE(freetype-bundling, [AS_HELP_STRING([--disable-freetype-bundling],
|
||||
[disable bundling of the freetype library with the build result @<:@enabled on Windows or when using --with-freetype, disabled otherwise@:>@])])
|
||||
AC_ARG_WITH(freetype-license, [AS_HELP_STRING([--with-freetype-license],
|
||||
[if bundling freetype, also bundle this license file])])
|
||||
|
||||
# Need to specify explicitly since it needs to be overridden on some versions of macosx
|
||||
FREETYPE_BASE_NAME=freetype
|
||||
@@ -443,7 +445,21 @@ AC_DEFUN_ONCE([LIB_SETUP_FREETYPE],
|
||||
|
||||
fi # end freetype needed
|
||||
|
||||
FREETYPE_LICENSE=""
|
||||
if test "x$with_freetype_license" = "xyes"; then
|
||||
AC_MSG_ERROR([--with-freetype-license must have a value])
|
||||
elif test "x$with_freetype_license" != "x"; then
|
||||
AC_MSG_CHECKING([for freetype license])
|
||||
AC_MSG_RESULT([$with_freetype_license])
|
||||
FREETYPE_LICENSE="$with_freetype_license"
|
||||
BASIC_FIXUP_PATH(FREETYPE_LICENSE)
|
||||
if test ! -f "$FREETYPE_LICENSE"; then
|
||||
AC_MSG_ERROR([$FREETYPE_LICENSE cannot be found])
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(FREETYPE_BUNDLE_LIB_PATH)
|
||||
AC_SUBST(FREETYPE_CFLAGS)
|
||||
AC_SUBST(FREETYPE_LIBS)
|
||||
AC_SUBST(FREETYPE_LICENSE)
|
||||
])
|
||||
|
||||
@@ -312,6 +312,7 @@ DEFAULT_MAKE_TARGET:=@DEFAULT_MAKE_TARGET@
|
||||
FREETYPE_LIBS:=@FREETYPE_LIBS@
|
||||
FREETYPE_CFLAGS:=@FREETYPE_CFLAGS@
|
||||
FREETYPE_BUNDLE_LIB_PATH=@FREETYPE_BUNDLE_LIB_PATH@
|
||||
FREETYPE_LICENSE=@FREETYPE_LICENSE@
|
||||
CUPS_CFLAGS:=@CUPS_CFLAGS@
|
||||
ALSA_LIBS:=@ALSA_LIBS@
|
||||
ALSA_CFLAGS:=@ALSA_CFLAGS@
|
||||
|
||||
@@ -893,6 +893,16 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||
}
|
||||
});
|
||||
|
||||
// The windows ri profile needs to add the freetype license file
|
||||
profilesRiFreetype = {
|
||||
"windows-x86-ri": {
|
||||
configure_args: "--with-freetype-license="
|
||||
+ input.get("freetype", "install_path")
|
||||
+ "/freetype-2.7.1-v120-x86/freetype.md"
|
||||
}
|
||||
};
|
||||
profiles = concatObjects(profiles, profilesRiFreetype);
|
||||
|
||||
// Generate the missing platform attributes
|
||||
profiles = generatePlatformAttributes(profiles);
|
||||
profiles = generateDefaultMakeTargetsConfigureArg(common, profiles);
|
||||
|
||||
@@ -412,3 +412,6 @@ a510b2201154abdd12ede42788086b5283bfb9a6 jdk-9+165
|
||||
43de67f51801b9e16507865fcb7e8344f4ca4aa9 jdk-9+167
|
||||
03a2cc9c8a1e8f87924c9863e917bc8b91770d5f jdk-9+168
|
||||
b2218d41edef02ee8f94bb438f885b2ba79bfa08 jdk-9+169
|
||||
8a4ab3b0ab9a86df73d9a1e337134f2dbe006725 jdk-9+170
|
||||
c62e5964cfcf144d8f72e9ba69757897785349a9 jdk-9+171
|
||||
95ed14547ca9246baed34f90ef3ca13217538a8c jdk-9+172
|
||||
|
||||
@@ -62,6 +62,8 @@ import com.sun.corba.se.impl.orbutil.GetPropertyAction;
|
||||
* attempts to narrow it to conform to
|
||||
* the given interface. If the operation is successful the result will be an
|
||||
* object of the specified type, otherwise an exception will be thrown.
|
||||
*
|
||||
* <p>See also {@extLink rmi_iiop_guides RMI-IIOP developer's guides}.</p>
|
||||
*/
|
||||
public class PortableRemoteObject {
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -33,8 +33,8 @@ package org.omg.CORBA;
|
||||
* the Activity, or that the Activity completed in a manner other than that
|
||||
* originally requested.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since J2SE 1.5
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -31,8 +31,8 @@ package org.omg.CORBA;
|
||||
* Activity context was necessary to perform the invoked operation, but one
|
||||
* was not found associated with the calling thread.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since J2SE 1.5
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -32,8 +32,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -34,8 +34,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -32,8 +32,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -37,10 +37,9 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">meaning of
|
||||
* minor codes</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions},
|
||||
* {@extLink jidlexception_minorcodes meaning of minor codes}
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -30,8 +30,8 @@ package org.omg.CORBA;
|
||||
* support the quality of service required by an invocation parameter that
|
||||
* has a quality of service semantics associated with it.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since J2SE 1.5
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -32,8 +32,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -30,8 +30,8 @@ package org.omg.CORBA;
|
||||
* the legal bounds for the object that a method is trying
|
||||
* to access.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
*/
|
||||
|
||||
public final class Bounds extends org.omg.CORBA.UserException {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -29,8 +29,8 @@ package org.omg.CORBA;
|
||||
* This exception is raised whenever meaningful communication is not possible
|
||||
* between client and server native code sets.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since J2SE 1.5
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -33,11 +33,11 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
* <P>
|
||||
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">meaning
|
||||
* of minor codes</A> to see the minor codes for this exception.
|
||||
* See the section {@extLink jidlexception_minorcodes Minor Code Meanings}
|
||||
* to see the minor codes for this exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">meaning of
|
||||
* minor codes</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -35,11 +35,11 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
* <P>
|
||||
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">meaning
|
||||
* of minor codes</A> to see the minor codes for this exception.
|
||||
* See the section {@extLink jidlexception_minorcodes Minor Code Meanings}
|
||||
* to see the minor codes for this exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -33,8 +33,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -36,8 +36,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -34,8 +34,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -33,11 +33,11 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
* <P>
|
||||
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">meaning
|
||||
* of minor codes</A> to see the minor codes for this exception.
|
||||
* See the section {@extLink jidlexception_minorcodes meaning of minor codes}
|
||||
* to see the minor codes for this exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -34,8 +34,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -32,8 +32,8 @@ package org.omg.CORBA;
|
||||
* suspended. It is also raised when an attempted invocation is made that
|
||||
* is incompatible with the Activity's current state.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since J2SE 1.5
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -34,8 +34,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -33,8 +33,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -34,8 +34,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -37,11 +37,11 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
* <P>
|
||||
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">Minor
|
||||
* Code Meanings</A> to see the minor codes for this exception.
|
||||
* See the section {@extLink jidlexception_minorcodes Minor Code Meanings}
|
||||
* to see the minor codes for this exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -33,8 +33,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
*/
|
||||
|
||||
public final class INV_POLICY extends SystemException {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -39,8 +39,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
* <P>
|
||||
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">Minor
|
||||
* Code Meanings</A> to see the minor codes for this exception.
|
||||
* See the section {@extLink jidlexception_minorcodes Minor Code Meanings}
|
||||
* to see the minor codes for this exception.
|
||||
*
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
@@ -36,8 +36,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
* <P>
|
||||
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">Minor
|
||||
* Code Meanings</A> to see the minor codes for this exception.
|
||||
* See the section {extLink jidlexception_minorcodes Minor Code Meanings}
|
||||
* to see the minor codes for this exception.
|
||||
*
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -32,8 +32,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -32,8 +32,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -33,8 +33,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -33,8 +33,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -39,11 +39,11 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
* <P>
|
||||
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">Minor
|
||||
* Code Meanings</A> to see the minor codes for this exception.
|
||||
* See the section {@extLink jidlexception_minorcodes Minor Code Meanings}
|
||||
* to see the minor codes for this exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -34,11 +34,11 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
* <P>
|
||||
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">Minor
|
||||
* Code Meanings</A> to see the minor codes for this exception.
|
||||
* See the section {@extLink jidlexception_minorcodes Minor Code Meanings}
|
||||
* to see the minor codes for this exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since JDK1.2
|
||||
*/
|
||||
|
||||
|
||||
@@ -184,6 +184,8 @@ import java.security.PrivilegedAction;
|
||||
* Therefore, the implementation first checks the ${java.home}/conf directory for orb.properties,
|
||||
* and thereafter the ${java.home}/lib directory.
|
||||
*
|
||||
* <p>See also {@extLink idl_guides IDL developer's guide}.</p>
|
||||
*
|
||||
* @since JDK1.2
|
||||
*/
|
||||
abstract public class ORB {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -33,8 +33,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
*/
|
||||
|
||||
public final class PERSIST_STORE extends SystemException {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -33,8 +33,8 @@ package org.omg.CORBA;
|
||||
* This exception is also raised if the current effective RebindPolicy has
|
||||
* a value of NO_RECONNECT and a connection must be reopened.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since J2SE 1.5
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -44,8 +44,8 @@ import com.sun.corba.se.impl.util.SUNVMCID;
|
||||
* declared in signatures of the Java methods mapped from operations in
|
||||
* IDL interfaces.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
*/
|
||||
|
||||
public abstract class SystemException extends java.lang.RuntimeException {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -30,8 +30,8 @@ package org.omg.CORBA;
|
||||
* specified time-to-live period has been exceeded. It is a standard system
|
||||
* exception because time-to-live QoS can be applied to any invocation.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @since J2SE 1.5
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -35,8 +35,8 @@ package org.omg.CORBA;
|
||||
* a string describing the exception.
|
||||
* The OMG CORBA core 2.4 specification has details.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
*/
|
||||
|
||||
public final class TRANSACTION_MODE extends SystemException {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -33,8 +33,8 @@ package org.omg.CORBA;
|
||||
* a string describing the exception.
|
||||
* The OMG Transaction Service specfication has details.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
*/
|
||||
|
||||
public final class TRANSACTION_REQUIRED extends SystemException {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -36,8 +36,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
*/
|
||||
|
||||
public final class TRANSACTION_ROLLEDBACK extends SystemException {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -35,8 +35,8 @@ package org.omg.CORBA;
|
||||
* a string describing the exception.
|
||||
* The OMG CORBA core 2.4 specification has details.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
*/
|
||||
|
||||
public final class TRANSACTION_UNAVAILABLE extends SystemException {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -36,8 +36,8 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
*/
|
||||
|
||||
public final class TRANSIENT extends SystemException {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -39,11 +39,11 @@ package org.omg.CORBA;
|
||||
* what caused the exception, and a completion status. It may also contain
|
||||
* a string describing the exception.
|
||||
* <P>
|
||||
* See the section <A href="../../../../technotes/guides/idl/jidlExceptions.html#minorcodemeanings">Minor
|
||||
* Code Meanings</A> to see the minor codes for this exception.
|
||||
* See the section {@extLink jidlexception_minorcodes Minor Code Meaning}
|
||||
* to see the minor codes for this exception.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
*/
|
||||
|
||||
public final class UNKNOWN extends SystemException {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -32,8 +32,8 @@ package org.omg.CORBA;
|
||||
* <code>UnknownUserException</code> object. This is available from the
|
||||
* <code>Environment</code> object returned by the method <code>Request.env</code>.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
* @see Request
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -31,8 +31,8 @@ package org.omg.CORBA;
|
||||
* means that they need to
|
||||
* be declared in method signatures.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
*/
|
||||
public abstract class UserException extends java.lang.Exception implements org.omg.CORBA.portable.IDLEntity {
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -34,8 +34,8 @@ package org.omg.CORBA;
|
||||
* which the client originally sent the request.
|
||||
* See the OMG Transaction Service Specification for details.
|
||||
*
|
||||
* @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on
|
||||
* Java IDL exceptions</A>
|
||||
* <p>See also {@extLink jidlexception documentation on Java IDL exceptions}.
|
||||
* </p>
|
||||
*/
|
||||
|
||||
public final class WrongTransaction extends UserException {
|
||||
|
||||
@@ -42,7 +42,7 @@ is the name of an IDL interface.
|
||||
</UL>
|
||||
|
||||
|
||||
<H2><a name="helper">Helper Files</a></H2>
|
||||
<H2><a id="helper">Helper Files</a></H2>
|
||||
|
||||
<P>Helper files supply several static methods needed to manipulate the type.
|
||||
These include <code>Any</code> insert and extract operations for the type,
|
||||
@@ -57,7 +57,7 @@ the object reference does not support the requested type. A different system exc
|
||||
is raised to indicate other kinds of errors. Trying to narrow
|
||||
a null will always succeed with a return value of null.
|
||||
|
||||
<H2><a name="holder">Holder Files</a></H2>
|
||||
<H2><a id="holder">Holder Files</a></H2>
|
||||
|
||||
<P>Support for out and inout parameter passing modes requires the use of additional holder classes.
|
||||
These classes are available for all of the basic IDL datatypes in the <code>org.omg.CORBA</code> package
|
||||
@@ -74,7 +74,7 @@ false for boolean, 0 for numeric and char types, null for strings, null for obje
|
||||
the <code>org.omg.CORBA.portable.Streamable</code> interface.
|
||||
|
||||
|
||||
<H2><a name="operations">Operations Files</a></H2>
|
||||
<H2><a id="operations">Operations Files</a></H2>
|
||||
|
||||
<P>A non abstract IDL interface is mapped to two public Java interfaces:
|
||||
a <em>signature</em> interface and an <em>operations</em> interface.
|
||||
@@ -96,7 +96,7 @@ expressed in IDL is reflected in both the Java signature
|
||||
interface and operations interface hierarchies.
|
||||
|
||||
|
||||
<H2><a name="stub">Stubs</a></H2>
|
||||
<H2><a id="stub">Stubs</a></H2>
|
||||
|
||||
<P>For the mapping of a non-object-oriented language, there will be
|
||||
a programming interface to the stubs for each interface type. Generally, the stubs
|
||||
|
||||
@@ -147,9 +147,7 @@ resolve initial object references. These are:
|
||||
<code><b>register_initial_reference</b>(String id, org.omg.CORBA.Object obj)</code>
|
||||
</UL>
|
||||
|
||||
<P>An example that uses some of these methods is <A
|
||||
HREF="{@docRoot}/../technotes/guides/idl/GShome.html">
|
||||
<em>Getting Started with Java IDL</em></A>.
|
||||
<P>An example that uses some of these methods is {@extLink idl_getting_started Getting Started with Java IDL}.
|
||||
|
||||
<H2>
|
||||
Exceptions</H2>
|
||||
@@ -158,9 +156,8 @@ Java programming language. If a method is defined to throw an exception,
|
||||
then any code using that method must have a <code>try</code>/<code>catch</code>
|
||||
block and handle that exception when it is thrown.
|
||||
|
||||
<P>The documentation on <A
|
||||
HREF="{@docRoot}/../technotes/guides/idl/jidlExceptions.html"><em>Java
|
||||
IDL exceptions</em></A> has more information and explains the difference between
|
||||
<P>The documentation on {@extLink jidlexception Java IDL exceptions }
|
||||
has more information and explains the difference between
|
||||
system exceptions and user-defined exceptions.
|
||||
|
||||
<P>The following is a list of the system exceptions (which are unchecked
|
||||
@@ -447,8 +444,8 @@ object, whereas the <code>narrow</code> method for an interface that is abstract
|
||||
will take an object in the Java programming language. The helper class for a
|
||||
non-abstract interface that has at least one abstract base interface will provide
|
||||
both versions of the <code>narrow</code> method.
|
||||
<P>The <A HREF="{@docRoot}/../technotes/guides/idl/jidlExample.html"><em>Hello World</em></A>
|
||||
tutorial uses a <code>narrow</code> method that looks like this:
|
||||
<P>The {@extLink idl_guides Hello World tutorial}
|
||||
uses a <code>narrow</code> method that looks like this:
|
||||
<PRE>
|
||||
// create and initialize the ORB
|
||||
ORB orb = ORB.init(args, null);
|
||||
@@ -548,6 +545,7 @@ abstract public class AccountHelper
|
||||
}
|
||||
</PRE>
|
||||
|
||||
<a id="value"></a>
|
||||
<h3>Value Type Helper Classes</h3>
|
||||
A helper class for a value type includes different renderings of
|
||||
the same methods generated for non-value type methods. The main difference
|
||||
@@ -861,8 +859,8 @@ ValueMember
|
||||
Related Documentation</H1>
|
||||
For overviews, guides, and a tutorial, please see:
|
||||
<UL>
|
||||
<LI>
|
||||
<A HREF="{@docRoot}/../technotes/guides/idl/index.html">Java IDL home page</A>
|
||||
<LI> {@extLink idl_guides Java IDL tutorial page}.</LI>
|
||||
<LI> {@extLink rmi_iiop_guides RMI-IIOP developer's guide}.</LI>
|
||||
</UL>
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<!--
|
||||
/*
|
||||
* Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -334,14 +334,12 @@ href="http://www.omg.org/cgi-bin/doc?ptc/00-08-07">ptc/00-08-07</a>)
|
||||
For an overview and examples of how to use the
|
||||
<code>CosNaming</code> API, please see:
|
||||
<ul>
|
||||
<li><a href="../../../../technotes/guides/idl/tnameserv.html">
|
||||
Naming Service</a>
|
||||
<li>{@extLink tnameserv NamingService}
|
||||
</ul>
|
||||
<p>
|
||||
For an overview of Java IDL, please see:
|
||||
<ul>
|
||||
<li><a href="../../../../technotes/guides/idl/index.html">
|
||||
Java IDL home page</a>
|
||||
<li>{@extLink idl_guides Java IDL developer's home page}
|
||||
</ul>
|
||||
|
||||
@since JDK1.3
|
||||
|
||||
@@ -157,7 +157,7 @@ follows exactly the same pattern as the other holder classes for basic types.
|
||||
<H2>Related Documentation</H2>
|
||||
|
||||
<P>For an overview of Java IDL, please see:
|
||||
<A HREF="../../../../technotes/guides/idl/index.html">Java IDL home page</A>.
|
||||
{@extLink idl_guides Java IDL home page}.
|
||||
|
||||
<H2>Example Code</H2>
|
||||
<a id="sampleserver"></a>
|
||||
|
||||
@@ -573,3 +573,6 @@ c92c6416ca03b1464d5ed99cf6201e52b5ba0a70 jdk-9+165
|
||||
fbb9c802649585d19f6d7e81b4a519d44806225a jdk-9+168
|
||||
16d692be099c5c38eb48cc9aca78b0c900910d5b jdk-9+169
|
||||
38a240fd58a287acb1963920b92ed4d9c2fd39e3 jdk-9+170
|
||||
d53171650a2cc6c6f699c966c533b914ca9c0602 jdk-9+171
|
||||
1ae9e84f68b359420d2d153ecfe5ee2903e33a2e jdk-9+172
|
||||
e64b1cb48d6e7703928a9d1da106fc27f8cb65fd jdk-9+173
|
||||
|
||||
@@ -139,7 +139,7 @@ void metadata_Relocation::pd_fix_value(address x) {
|
||||
#ifdef AARCH64
|
||||
#ifdef COMPILER2
|
||||
NativeMovConstReg* ni = nativeMovConstReg_at(addr());
|
||||
if (ni->is_movz()) {
|
||||
if (ni->is_mov_slow()) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -26,6 +26,15 @@
|
||||
/**
|
||||
* Defines the implementation of the HotSpot Serviceability Agent.
|
||||
*
|
||||
* <p> This module includes the <em>{@index jhsdb jhsdb tool}</em> tool to
|
||||
* attach to a running Java Virtual Machine (JVM) or launch a postmortem
|
||||
* debugger to analyze the content of a core-dump from a crashed JVM.
|
||||
*
|
||||
* <dl style="font-family:'DejaVu Sans', Arial, Helvetica, sans serif">
|
||||
* <dt class="simpleTagLabel">Tool Guides:</dt>
|
||||
* <dd> {@extLink jhsdb_tool_reference jhsdb}</dd>
|
||||
* </dl>
|
||||
*
|
||||
* @moduleGraph
|
||||
* @since 9
|
||||
*/
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -246,21 +246,21 @@ public class CheckGraalIntrinsics extends GraalTest {
|
||||
"jdk/internal/misc/Unsafe.allocateUninitializedArray0(Ljava/lang/Class;I)Ljava/lang/Object;",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeByteAcquire(Ljava/lang/Object;JBB)B",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeByteRelease(Ljava/lang/Object;JBB)B",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeByteVolatile(Ljava/lang/Object;JBB)B",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeByte(Ljava/lang/Object;JBB)B",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeIntAcquire(Ljava/lang/Object;JII)I",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeIntRelease(Ljava/lang/Object;JII)I",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeIntVolatile(Ljava/lang/Object;JII)I",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeInt(Ljava/lang/Object;JII)I",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeLongAcquire(Ljava/lang/Object;JJJ)J",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeLongRelease(Ljava/lang/Object;JJJ)J",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeLongVolatile(Ljava/lang/Object;JJJ)J",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeLong(Ljava/lang/Object;JJJ)J",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeObjectAcquire(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeObjectRelease(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeObjectVolatile(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeShortAcquire(Ljava/lang/Object;JSS)S",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeShortRelease(Ljava/lang/Object;JSS)S",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeShortVolatile(Ljava/lang/Object;JSS)S",
|
||||
"jdk/internal/misc/Unsafe.compareAndSwapByte(Ljava/lang/Object;JBB)Z",
|
||||
"jdk/internal/misc/Unsafe.compareAndSwapShort(Ljava/lang/Object;JSS)Z",
|
||||
"jdk/internal/misc/Unsafe.compareAndExchangeShort(Ljava/lang/Object;JSS)S",
|
||||
"jdk/internal/misc/Unsafe.compareAndSetByte(Ljava/lang/Object;JBB)Z",
|
||||
"jdk/internal/misc/Unsafe.compareAndSetShort(Ljava/lang/Object;JSS)Z",
|
||||
"jdk/internal/misc/Unsafe.copyMemory0(Ljava/lang/Object;JLjava/lang/Object;JJ)V",
|
||||
"jdk/internal/misc/Unsafe.getAndAddByte(Ljava/lang/Object;JB)B",
|
||||
"jdk/internal/misc/Unsafe.getAndAddShort(Ljava/lang/Object;JS)S",
|
||||
@@ -295,26 +295,26 @@ public class CheckGraalIntrinsics extends GraalTest {
|
||||
"jdk/internal/misc/Unsafe.putObjectOpaque(Ljava/lang/Object;JLjava/lang/Object;)V",
|
||||
"jdk/internal/misc/Unsafe.putShortOpaque(Ljava/lang/Object;JS)V",
|
||||
"jdk/internal/misc/Unsafe.unpark(Ljava/lang/Object;)V",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapByte(Ljava/lang/Object;JBB)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapByteAcquire(Ljava/lang/Object;JBB)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapByteRelease(Ljava/lang/Object;JBB)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapByteVolatile(Ljava/lang/Object;JBB)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapInt(Ljava/lang/Object;JII)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapIntAcquire(Ljava/lang/Object;JII)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapIntRelease(Ljava/lang/Object;JII)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapIntVolatile(Ljava/lang/Object;JII)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapLong(Ljava/lang/Object;JJJ)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapLongAcquire(Ljava/lang/Object;JJJ)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapLongRelease(Ljava/lang/Object;JJJ)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapLongVolatile(Ljava/lang/Object;JJJ)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapObjectAcquire(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapObjectRelease(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapObjectVolatile(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapShort(Ljava/lang/Object;JSS)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapShortAcquire(Ljava/lang/Object;JSS)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapShortRelease(Ljava/lang/Object;JSS)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSwapShortVolatile(Ljava/lang/Object;JSS)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetBytePlain(Ljava/lang/Object;JBB)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetByteAcquire(Ljava/lang/Object;JBB)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetByteRelease(Ljava/lang/Object;JBB)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetByte(Ljava/lang/Object;JBB)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetIntPlain(Ljava/lang/Object;JII)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetIntAcquire(Ljava/lang/Object;JII)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetIntRelease(Ljava/lang/Object;JII)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetInt(Ljava/lang/Object;JII)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetLongPlain(Ljava/lang/Object;JJJ)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetLongAcquire(Ljava/lang/Object;JJJ)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetLongRelease(Ljava/lang/Object;JJJ)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetLong(Ljava/lang/Object;JJJ)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetObjectPlain(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetObjectAcquire(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetObjectRelease(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetShortPlain(Ljava/lang/Object;JSS)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetShortAcquire(Ljava/lang/Object;JSS)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetShortRelease(Ljava/lang/Object;JSS)Z",
|
||||
"jdk/internal/misc/Unsafe.weakCompareAndSetShort(Ljava/lang/Object;JSS)Z",
|
||||
"jdk/internal/util/Preconditions.checkIndex(IILjava/util/function/BiFunction;)I",
|
||||
"jdk/jfr/internal/JVM.counterTime()J",
|
||||
"jdk/jfr/internal/JVM.getBufferWriter()Ljava/lang/Object;",
|
||||
|
||||
@@ -251,7 +251,13 @@ public class StandardGraphBuilderPlugins {
|
||||
|
||||
for (JavaKind kind : new JavaKind[]{JavaKind.Int, JavaKind.Long, JavaKind.Object}) {
|
||||
Class<?> javaClass = kind == JavaKind.Object ? Object.class : kind.toJavaClass();
|
||||
r.register5("compareAndSwap" + kind.name(), Receiver.class, Object.class, long.class, javaClass, javaClass, new InvocationPlugin() {
|
||||
String casName;
|
||||
if (Java8OrEarlier) {
|
||||
casName = "compareAndSwap";
|
||||
} else {
|
||||
casName = "compareAndSet";
|
||||
}
|
||||
r.register5(casName + kind.name(), Receiver.class, Object.class, long.class, javaClass, javaClass, new InvocationPlugin() {
|
||||
@Override
|
||||
public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver unsafe, ValueNode object, ValueNode offset, ValueNode expected, ValueNode x) {
|
||||
// Emits a null-check for the otherwise unused receiver
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -108,7 +108,7 @@ bool Compiler::is_intrinsic_supported(const methodHandle& method) {
|
||||
}
|
||||
|
||||
switch (id) {
|
||||
case vmIntrinsics::_compareAndSwapLong:
|
||||
case vmIntrinsics::_compareAndSetLong:
|
||||
if (!VM_Version::supports_cx8()) return false;
|
||||
break;
|
||||
case vmIntrinsics::_getAndAddInt:
|
||||
@@ -217,8 +217,8 @@ bool Compiler::is_intrinsic_supported(const methodHandle& method) {
|
||||
case vmIntrinsics::_updateDirectByteBufferCRC32C:
|
||||
#endif
|
||||
case vmIntrinsics::_vectorizedMismatch:
|
||||
case vmIntrinsics::_compareAndSwapInt:
|
||||
case vmIntrinsics::_compareAndSwapObject:
|
||||
case vmIntrinsics::_compareAndSetInt:
|
||||
case vmIntrinsics::_compareAndSetObject:
|
||||
case vmIntrinsics::_getCharStringU:
|
||||
case vmIntrinsics::_putCharStringU:
|
||||
#ifdef TRACE_HAVE_INTRINSICS
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -3500,9 +3500,9 @@ void GraphBuilder::build_graph_for_intrinsic(ciMethod* callee, bool ignore_retur
|
||||
case vmIntrinsics::_putLongVolatile : append_unsafe_put_obj(callee, T_LONG, true); return;
|
||||
case vmIntrinsics::_putFloatVolatile : append_unsafe_put_obj(callee, T_FLOAT, true); return;
|
||||
case vmIntrinsics::_putDoubleVolatile : append_unsafe_put_obj(callee, T_DOUBLE, true); return;
|
||||
case vmIntrinsics::_compareAndSwapLong:
|
||||
case vmIntrinsics::_compareAndSwapInt:
|
||||
case vmIntrinsics::_compareAndSwapObject: append_unsafe_CAS(callee); return;
|
||||
case vmIntrinsics::_compareAndSetLong:
|
||||
case vmIntrinsics::_compareAndSetInt:
|
||||
case vmIntrinsics::_compareAndSetObject: append_unsafe_CAS(callee); return;
|
||||
case vmIntrinsics::_getAndAddInt:
|
||||
case vmIntrinsics::_getAndAddLong : append_unsafe_get_and_set_obj(callee, true); return;
|
||||
case vmIntrinsics::_getAndSetInt :
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -3212,13 +3212,13 @@ void LIRGenerator::do_Intrinsic(Intrinsic* x) {
|
||||
// java.nio.Buffer.checkIndex
|
||||
case vmIntrinsics::_checkIndex: do_NIOCheckIndex(x); break;
|
||||
|
||||
case vmIntrinsics::_compareAndSwapObject:
|
||||
case vmIntrinsics::_compareAndSetObject:
|
||||
do_CompareAndSwap(x, objectType);
|
||||
break;
|
||||
case vmIntrinsics::_compareAndSwapInt:
|
||||
case vmIntrinsics::_compareAndSetInt:
|
||||
do_CompareAndSwap(x, intType);
|
||||
break;
|
||||
case vmIntrinsics::_compareAndSwapLong:
|
||||
case vmIntrinsics::_compareAndSetLong:
|
||||
do_CompareAndSwap(x, longType);
|
||||
break;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -632,25 +632,28 @@ bool vmIntrinsics::is_disabled_by_flags(vmIntrinsics::ID id) {
|
||||
case vmIntrinsics::_loadFence:
|
||||
case vmIntrinsics::_storeFence:
|
||||
case vmIntrinsics::_fullFence:
|
||||
case vmIntrinsics::_compareAndSwapLong:
|
||||
case vmIntrinsics::_weakCompareAndSwapLong:
|
||||
case vmIntrinsics::_weakCompareAndSwapLongAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSwapLongRelease:
|
||||
case vmIntrinsics::_compareAndSwapInt:
|
||||
case vmIntrinsics::_weakCompareAndSwapInt:
|
||||
case vmIntrinsics::_weakCompareAndSwapIntAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSwapIntRelease:
|
||||
case vmIntrinsics::_compareAndSwapObject:
|
||||
case vmIntrinsics::_weakCompareAndSwapObject:
|
||||
case vmIntrinsics::_weakCompareAndSwapObjectAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSwapObjectRelease:
|
||||
case vmIntrinsics::_compareAndExchangeIntVolatile:
|
||||
case vmIntrinsics::_compareAndSetLong:
|
||||
case vmIntrinsics::_weakCompareAndSetLong:
|
||||
case vmIntrinsics::_weakCompareAndSetLongPlain:
|
||||
case vmIntrinsics::_weakCompareAndSetLongAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSetLongRelease:
|
||||
case vmIntrinsics::_compareAndSetInt:
|
||||
case vmIntrinsics::_weakCompareAndSetInt:
|
||||
case vmIntrinsics::_weakCompareAndSetIntPlain:
|
||||
case vmIntrinsics::_weakCompareAndSetIntAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSetIntRelease:
|
||||
case vmIntrinsics::_compareAndSetObject:
|
||||
case vmIntrinsics::_weakCompareAndSetObject:
|
||||
case vmIntrinsics::_weakCompareAndSetObjectPlain:
|
||||
case vmIntrinsics::_weakCompareAndSetObjectAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSetObjectRelease:
|
||||
case vmIntrinsics::_compareAndExchangeInt:
|
||||
case vmIntrinsics::_compareAndExchangeIntAcquire:
|
||||
case vmIntrinsics::_compareAndExchangeIntRelease:
|
||||
case vmIntrinsics::_compareAndExchangeLongVolatile:
|
||||
case vmIntrinsics::_compareAndExchangeLong:
|
||||
case vmIntrinsics::_compareAndExchangeLongAcquire:
|
||||
case vmIntrinsics::_compareAndExchangeLongRelease:
|
||||
case vmIntrinsics::_compareAndExchangeObjectVolatile:
|
||||
case vmIntrinsics::_compareAndExchangeObject:
|
||||
case vmIntrinsics::_compareAndExchangeObjectAcquire:
|
||||
case vmIntrinsics::_compareAndExchangeObjectRelease:
|
||||
if (!InlineUnsafeOps) return true;
|
||||
|
||||
@@ -1244,100 +1244,100 @@
|
||||
do_intrinsic(_putIntUnaligned, jdk_internal_misc_Unsafe, putIntUnaligned_name, putInt_signature, F_R) \
|
||||
do_intrinsic(_putLongUnaligned, jdk_internal_misc_Unsafe, putLongUnaligned_name, putLong_signature, F_R) \
|
||||
\
|
||||
do_signature(compareAndSwapObject_signature, "(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z") \
|
||||
do_signature(compareAndSetObject_signature, "(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z") \
|
||||
do_signature(compareAndExchangeObject_signature, "(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;") \
|
||||
do_signature(compareAndSwapLong_signature, "(Ljava/lang/Object;JJJ)Z") \
|
||||
do_signature(compareAndSetLong_signature, "(Ljava/lang/Object;JJJ)Z") \
|
||||
do_signature(compareAndExchangeLong_signature, "(Ljava/lang/Object;JJJ)J") \
|
||||
do_signature(compareAndSwapInt_signature, "(Ljava/lang/Object;JII)Z") \
|
||||
do_signature(compareAndSetInt_signature, "(Ljava/lang/Object;JII)Z") \
|
||||
do_signature(compareAndExchangeInt_signature, "(Ljava/lang/Object;JII)I") \
|
||||
do_signature(compareAndSwapByte_signature, "(Ljava/lang/Object;JBB)Z") \
|
||||
do_signature(compareAndSetByte_signature, "(Ljava/lang/Object;JBB)Z") \
|
||||
do_signature(compareAndExchangeByte_signature, "(Ljava/lang/Object;JBB)B") \
|
||||
do_signature(compareAndSwapShort_signature, "(Ljava/lang/Object;JSS)Z") \
|
||||
do_signature(compareAndSetShort_signature, "(Ljava/lang/Object;JSS)Z") \
|
||||
do_signature(compareAndExchangeShort_signature, "(Ljava/lang/Object;JSS)S") \
|
||||
\
|
||||
do_name(compareAndSwapObject_name, "compareAndSwapObject") \
|
||||
do_name(compareAndExchangeObjectVolatile_name, "compareAndExchangeObjectVolatile") \
|
||||
do_name(compareAndSetObject_name, "compareAndSetObject") \
|
||||
do_name(compareAndExchangeObject_name, "compareAndExchangeObject") \
|
||||
do_name(compareAndExchangeObjectAcquire_name, "compareAndExchangeObjectAcquire") \
|
||||
do_name(compareAndExchangeObjectRelease_name, "compareAndExchangeObjectRelease") \
|
||||
do_name(compareAndSwapLong_name, "compareAndSwapLong") \
|
||||
do_name(compareAndExchangeLongVolatile_name, "compareAndExchangeLongVolatile") \
|
||||
do_name(compareAndSetLong_name, "compareAndSetLong") \
|
||||
do_name(compareAndExchangeLong_name, "compareAndExchangeLong") \
|
||||
do_name(compareAndExchangeLongAcquire_name, "compareAndExchangeLongAcquire") \
|
||||
do_name(compareAndExchangeLongRelease_name, "compareAndExchangeLongRelease") \
|
||||
do_name(compareAndSwapInt_name, "compareAndSwapInt") \
|
||||
do_name(compareAndExchangeIntVolatile_name, "compareAndExchangeIntVolatile") \
|
||||
do_name(compareAndSetInt_name, "compareAndSetInt") \
|
||||
do_name(compareAndExchangeInt_name, "compareAndExchangeInt") \
|
||||
do_name(compareAndExchangeIntAcquire_name, "compareAndExchangeIntAcquire") \
|
||||
do_name(compareAndExchangeIntRelease_name, "compareAndExchangeIntRelease") \
|
||||
do_name(compareAndSwapByte_name, "compareAndSwapByte") \
|
||||
do_name(compareAndExchangeByteVolatile_name, "compareAndExchangeByteVolatile") \
|
||||
do_name(compareAndSetByte_name, "compareAndSetByte") \
|
||||
do_name(compareAndExchangeByte_name, "compareAndExchangeByte") \
|
||||
do_name(compareAndExchangeByteAcquire_name, "compareAndExchangeByteAcquire") \
|
||||
do_name(compareAndExchangeByteRelease_name, "compareAndExchangeByteRelease") \
|
||||
do_name(compareAndSwapShort_name, "compareAndSwapShort") \
|
||||
do_name(compareAndExchangeShortVolatile_name, "compareAndExchangeShortVolatile") \
|
||||
do_name(compareAndSetShort_name, "compareAndSetShort") \
|
||||
do_name(compareAndExchangeShort_name, "compareAndExchangeShort") \
|
||||
do_name(compareAndExchangeShortAcquire_name, "compareAndExchangeShortAcquire") \
|
||||
do_name(compareAndExchangeShortRelease_name, "compareAndExchangeShortRelease") \
|
||||
\
|
||||
do_name(weakCompareAndSwapObject_name, "weakCompareAndSwapObject") \
|
||||
do_name(weakCompareAndSwapObjectAcquire_name, "weakCompareAndSwapObjectAcquire") \
|
||||
do_name(weakCompareAndSwapObjectRelease_name, "weakCompareAndSwapObjectRelease") \
|
||||
do_name(weakCompareAndSwapObjectVolatile_name, "weakCompareAndSwapObjectVolatile") \
|
||||
do_name(weakCompareAndSwapLong_name, "weakCompareAndSwapLong") \
|
||||
do_name(weakCompareAndSwapLongAcquire_name, "weakCompareAndSwapLongAcquire") \
|
||||
do_name(weakCompareAndSwapLongRelease_name, "weakCompareAndSwapLongRelease") \
|
||||
do_name(weakCompareAndSwapLongVolatile_name, "weakCompareAndSwapLongVolatile") \
|
||||
do_name(weakCompareAndSwapInt_name, "weakCompareAndSwapInt") \
|
||||
do_name(weakCompareAndSwapIntAcquire_name, "weakCompareAndSwapIntAcquire") \
|
||||
do_name(weakCompareAndSwapIntRelease_name, "weakCompareAndSwapIntRelease") \
|
||||
do_name(weakCompareAndSwapIntVolatile_name, "weakCompareAndSwapIntVolatile") \
|
||||
do_name(weakCompareAndSwapByte_name, "weakCompareAndSwapByte") \
|
||||
do_name(weakCompareAndSwapByteAcquire_name, "weakCompareAndSwapByteAcquire") \
|
||||
do_name(weakCompareAndSwapByteRelease_name, "weakCompareAndSwapByteRelease") \
|
||||
do_name(weakCompareAndSwapByteVolatile_name, "weakCompareAndSwapByteVolatile") \
|
||||
do_name(weakCompareAndSwapShort_name, "weakCompareAndSwapShort") \
|
||||
do_name(weakCompareAndSwapShortAcquire_name, "weakCompareAndSwapShortAcquire") \
|
||||
do_name(weakCompareAndSwapShortRelease_name, "weakCompareAndSwapShortRelease") \
|
||||
do_name(weakCompareAndSwapShortVolatile_name, "weakCompareAndSwapShortVolatile") \
|
||||
do_name(weakCompareAndSetObjectPlain_name, "weakCompareAndSetObjectPlain") \
|
||||
do_name(weakCompareAndSetObjectAcquire_name, "weakCompareAndSetObjectAcquire") \
|
||||
do_name(weakCompareAndSetObjectRelease_name, "weakCompareAndSetObjectRelease") \
|
||||
do_name(weakCompareAndSetObject_name, "weakCompareAndSetObject") \
|
||||
do_name(weakCompareAndSetLongPlain_name, "weakCompareAndSetLongPlain") \
|
||||
do_name(weakCompareAndSetLongAcquire_name, "weakCompareAndSetLongAcquire") \
|
||||
do_name(weakCompareAndSetLongRelease_name, "weakCompareAndSetLongRelease") \
|
||||
do_name(weakCompareAndSetLong_name, "weakCompareAndSetLong") \
|
||||
do_name(weakCompareAndSetIntPlain_name, "weakCompareAndSetIntPlain") \
|
||||
do_name(weakCompareAndSetIntAcquire_name, "weakCompareAndSetIntAcquire") \
|
||||
do_name(weakCompareAndSetIntRelease_name, "weakCompareAndSetIntRelease") \
|
||||
do_name(weakCompareAndSetInt_name, "weakCompareAndSetInt") \
|
||||
do_name(weakCompareAndSetBytePlain_name, "weakCompareAndSetBytePlain") \
|
||||
do_name(weakCompareAndSetByteAcquire_name, "weakCompareAndSetByteAcquire") \
|
||||
do_name(weakCompareAndSetByteRelease_name, "weakCompareAndSetByteRelease") \
|
||||
do_name(weakCompareAndSetByte_name, "weakCompareAndSetByte") \
|
||||
do_name(weakCompareAndSetShortPlain_name, "weakCompareAndSetShortPlain") \
|
||||
do_name(weakCompareAndSetShortAcquire_name, "weakCompareAndSetShortAcquire") \
|
||||
do_name(weakCompareAndSetShortRelease_name, "weakCompareAndSetShortRelease") \
|
||||
do_name(weakCompareAndSetShort_name, "weakCompareAndSetShort") \
|
||||
\
|
||||
do_intrinsic(_compareAndSwapObject, jdk_internal_misc_Unsafe, compareAndSwapObject_name, compareAndSwapObject_signature, F_RN) \
|
||||
do_intrinsic(_compareAndExchangeObjectVolatile, jdk_internal_misc_Unsafe, compareAndExchangeObjectVolatile_name, compareAndExchangeObject_signature, F_RN) \
|
||||
do_intrinsic(_compareAndSetObject, jdk_internal_misc_Unsafe, compareAndSetObject_name, compareAndSetObject_signature, F_RN) \
|
||||
do_intrinsic(_compareAndExchangeObject, jdk_internal_misc_Unsafe, compareAndExchangeObject_name, compareAndExchangeObject_signature, F_RN) \
|
||||
do_intrinsic(_compareAndExchangeObjectAcquire, jdk_internal_misc_Unsafe, compareAndExchangeObjectAcquire_name, compareAndExchangeObject_signature, F_R) \
|
||||
do_intrinsic(_compareAndExchangeObjectRelease, jdk_internal_misc_Unsafe, compareAndExchangeObjectRelease_name, compareAndExchangeObject_signature, F_R) \
|
||||
do_intrinsic(_compareAndSwapLong, jdk_internal_misc_Unsafe, compareAndSwapLong_name, compareAndSwapLong_signature, F_RN) \
|
||||
do_intrinsic(_compareAndExchangeLongVolatile, jdk_internal_misc_Unsafe, compareAndExchangeLongVolatile_name, compareAndExchangeLong_signature, F_RN) \
|
||||
do_intrinsic(_compareAndSetLong, jdk_internal_misc_Unsafe, compareAndSetLong_name, compareAndSetLong_signature, F_RN) \
|
||||
do_intrinsic(_compareAndExchangeLong, jdk_internal_misc_Unsafe, compareAndExchangeLong_name, compareAndExchangeLong_signature, F_RN) \
|
||||
do_intrinsic(_compareAndExchangeLongAcquire, jdk_internal_misc_Unsafe, compareAndExchangeLongAcquire_name, compareAndExchangeLong_signature, F_R) \
|
||||
do_intrinsic(_compareAndExchangeLongRelease, jdk_internal_misc_Unsafe, compareAndExchangeLongRelease_name, compareAndExchangeLong_signature, F_R) \
|
||||
do_intrinsic(_compareAndSwapInt, jdk_internal_misc_Unsafe, compareAndSwapInt_name, compareAndSwapInt_signature, F_RN) \
|
||||
do_intrinsic(_compareAndExchangeIntVolatile, jdk_internal_misc_Unsafe, compareAndExchangeIntVolatile_name, compareAndExchangeInt_signature, F_RN) \
|
||||
do_intrinsic(_compareAndSetInt, jdk_internal_misc_Unsafe, compareAndSetInt_name, compareAndSetInt_signature, F_RN) \
|
||||
do_intrinsic(_compareAndExchangeInt, jdk_internal_misc_Unsafe, compareAndExchangeInt_name, compareAndExchangeInt_signature, F_RN) \
|
||||
do_intrinsic(_compareAndExchangeIntAcquire, jdk_internal_misc_Unsafe, compareAndExchangeIntAcquire_name, compareAndExchangeInt_signature, F_R) \
|
||||
do_intrinsic(_compareAndExchangeIntRelease, jdk_internal_misc_Unsafe, compareAndExchangeIntRelease_name, compareAndExchangeInt_signature, F_R) \
|
||||
do_intrinsic(_compareAndSwapByte, jdk_internal_misc_Unsafe, compareAndSwapByte_name, compareAndSwapByte_signature, F_R) \
|
||||
do_intrinsic(_compareAndExchangeByteVolatile, jdk_internal_misc_Unsafe, compareAndExchangeByteVolatile_name, compareAndExchangeByte_signature, F_R) \
|
||||
do_intrinsic(_compareAndSetByte, jdk_internal_misc_Unsafe, compareAndSetByte_name, compareAndSetByte_signature, F_R) \
|
||||
do_intrinsic(_compareAndExchangeByte, jdk_internal_misc_Unsafe, compareAndExchangeByte_name, compareAndExchangeByte_signature, F_R) \
|
||||
do_intrinsic(_compareAndExchangeByteAcquire, jdk_internal_misc_Unsafe, compareAndExchangeByteAcquire_name, compareAndExchangeByte_signature, F_R) \
|
||||
do_intrinsic(_compareAndExchangeByteRelease, jdk_internal_misc_Unsafe, compareAndExchangeByteRelease_name, compareAndExchangeByte_signature, F_R) \
|
||||
do_intrinsic(_compareAndSwapShort, jdk_internal_misc_Unsafe, compareAndSwapShort_name, compareAndSwapShort_signature, F_R) \
|
||||
do_intrinsic(_compareAndExchangeShortVolatile, jdk_internal_misc_Unsafe, compareAndExchangeShortVolatile_name, compareAndExchangeShort_signature, F_R) \
|
||||
do_intrinsic(_compareAndSetShort, jdk_internal_misc_Unsafe, compareAndSetShort_name, compareAndSetShort_signature, F_R) \
|
||||
do_intrinsic(_compareAndExchangeShort, jdk_internal_misc_Unsafe, compareAndExchangeShort_name, compareAndExchangeShort_signature, F_R) \
|
||||
do_intrinsic(_compareAndExchangeShortAcquire, jdk_internal_misc_Unsafe, compareAndExchangeShortAcquire_name, compareAndExchangeShort_signature, F_R) \
|
||||
do_intrinsic(_compareAndExchangeShortRelease, jdk_internal_misc_Unsafe, compareAndExchangeShortRelease_name, compareAndExchangeShort_signature, F_R) \
|
||||
\
|
||||
do_intrinsic(_weakCompareAndSwapObject, jdk_internal_misc_Unsafe, weakCompareAndSwapObject_name, compareAndSwapObject_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapObjectAcquire, jdk_internal_misc_Unsafe, weakCompareAndSwapObjectAcquire_name, compareAndSwapObject_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapObjectRelease, jdk_internal_misc_Unsafe, weakCompareAndSwapObjectRelease_name, compareAndSwapObject_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapObjectVolatile, jdk_internal_misc_Unsafe, weakCompareAndSwapObjectVolatile_name, compareAndSwapObject_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapLong, jdk_internal_misc_Unsafe, weakCompareAndSwapLong_name, compareAndSwapLong_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapLongAcquire, jdk_internal_misc_Unsafe, weakCompareAndSwapLongAcquire_name, compareAndSwapLong_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapLongRelease, jdk_internal_misc_Unsafe, weakCompareAndSwapLongRelease_name, compareAndSwapLong_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapLongVolatile, jdk_internal_misc_Unsafe, weakCompareAndSwapLongVolatile_name, compareAndSwapLong_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapInt, jdk_internal_misc_Unsafe, weakCompareAndSwapInt_name, compareAndSwapInt_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapIntAcquire, jdk_internal_misc_Unsafe, weakCompareAndSwapIntAcquire_name, compareAndSwapInt_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapIntRelease, jdk_internal_misc_Unsafe, weakCompareAndSwapIntRelease_name, compareAndSwapInt_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapIntVolatile, jdk_internal_misc_Unsafe, weakCompareAndSwapIntVolatile_name, compareAndSwapInt_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapByte, jdk_internal_misc_Unsafe, weakCompareAndSwapByte_name, compareAndSwapByte_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapByteAcquire, jdk_internal_misc_Unsafe, weakCompareAndSwapByteAcquire_name, compareAndSwapByte_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapByteRelease, jdk_internal_misc_Unsafe, weakCompareAndSwapByteRelease_name, compareAndSwapByte_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapByteVolatile, jdk_internal_misc_Unsafe, weakCompareAndSwapByteVolatile_name, compareAndSwapByte_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapShort, jdk_internal_misc_Unsafe, weakCompareAndSwapShort_name, compareAndSwapShort_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapShortAcquire, jdk_internal_misc_Unsafe, weakCompareAndSwapShortAcquire_name, compareAndSwapShort_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapShortRelease, jdk_internal_misc_Unsafe, weakCompareAndSwapShortRelease_name, compareAndSwapShort_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSwapShortVolatile, jdk_internal_misc_Unsafe, weakCompareAndSwapShortVolatile_name, compareAndSwapShort_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetObjectPlain, jdk_internal_misc_Unsafe, weakCompareAndSetObjectPlain_name, compareAndSetObject_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetObjectAcquire, jdk_internal_misc_Unsafe, weakCompareAndSetObjectAcquire_name, compareAndSetObject_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetObjectRelease, jdk_internal_misc_Unsafe, weakCompareAndSetObjectRelease_name, compareAndSetObject_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetObject, jdk_internal_misc_Unsafe, weakCompareAndSetObject_name, compareAndSetObject_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetLongPlain, jdk_internal_misc_Unsafe, weakCompareAndSetLongPlain_name, compareAndSetLong_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetLongAcquire, jdk_internal_misc_Unsafe, weakCompareAndSetLongAcquire_name, compareAndSetLong_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetLongRelease, jdk_internal_misc_Unsafe, weakCompareAndSetLongRelease_name, compareAndSetLong_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetLong, jdk_internal_misc_Unsafe, weakCompareAndSetLong_name, compareAndSetLong_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetIntPlain, jdk_internal_misc_Unsafe, weakCompareAndSetIntPlain_name, compareAndSetInt_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetIntAcquire, jdk_internal_misc_Unsafe, weakCompareAndSetIntAcquire_name, compareAndSetInt_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetIntRelease, jdk_internal_misc_Unsafe, weakCompareAndSetIntRelease_name, compareAndSetInt_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetInt, jdk_internal_misc_Unsafe, weakCompareAndSetInt_name, compareAndSetInt_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetBytePlain, jdk_internal_misc_Unsafe, weakCompareAndSetBytePlain_name, compareAndSetByte_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetByteAcquire, jdk_internal_misc_Unsafe, weakCompareAndSetByteAcquire_name, compareAndSetByte_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetByteRelease, jdk_internal_misc_Unsafe, weakCompareAndSetByteRelease_name, compareAndSetByte_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetByte, jdk_internal_misc_Unsafe, weakCompareAndSetByte_name, compareAndSetByte_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetShortPlain, jdk_internal_misc_Unsafe, weakCompareAndSetShortPlain_name, compareAndSetShort_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetShortAcquire, jdk_internal_misc_Unsafe, weakCompareAndSetShortAcquire_name, compareAndSetShort_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetShortRelease, jdk_internal_misc_Unsafe, weakCompareAndSetShortRelease_name, compareAndSetShort_signature, F_R) \
|
||||
do_intrinsic(_weakCompareAndSetShort, jdk_internal_misc_Unsafe, weakCompareAndSetShort_name, compareAndSetShort_signature, F_R) \
|
||||
\
|
||||
do_intrinsic(_getAndAddInt, jdk_internal_misc_Unsafe, getAndAddInt_name, getAndAddInt_signature, F_R) \
|
||||
do_name( getAndAddInt_name, "getAndAddInt") \
|
||||
|
||||
@@ -129,9 +129,9 @@ void RelocIterator::initialize(CompiledMethod* nm, address begin, address limit)
|
||||
if (nm == NULL && begin != NULL) {
|
||||
// allow nmethod to be deduced from beginning address
|
||||
CodeBlob* cb = CodeCache::find_blob(begin);
|
||||
nm = cb->as_compiled_method_or_null();
|
||||
nm = (cb != NULL) ? cb->as_compiled_method_or_null() : NULL;
|
||||
}
|
||||
assert(nm != NULL, "must be able to deduce nmethod from other arguments");
|
||||
guarantee(nm != NULL, "must be able to deduce nmethod from other arguments");
|
||||
|
||||
_code = nm;
|
||||
_current = nm->relocation_begin() - 1;
|
||||
|
||||
@@ -350,16 +350,14 @@ void OopMapSet::all_do(const frame *fr, const RegisterMap *reg_map,
|
||||
omv = oms.current();
|
||||
oop* loc = fr->oopmapreg_to_location(omv.reg(),reg_map);
|
||||
guarantee(loc != NULL, "missing saved register");
|
||||
oop *base_loc = fr->oopmapreg_to_location(omv.content_reg(), reg_map);
|
||||
oop *derived_loc = loc;
|
||||
oop val = *base_loc;
|
||||
if (val == (oop)NULL || Universe::is_narrow_oop_base(val)) {
|
||||
// Ignore NULL oops and decoded NULL narrow oops which
|
||||
// equal to Universe::narrow_oop_base when a narrow oop
|
||||
// implicit null check is used in compiled code.
|
||||
// The narrow_oop_base could be NULL or be the address
|
||||
// of the page below heap depending on compressed oops mode.
|
||||
} else {
|
||||
oop *base_loc = fr->oopmapreg_to_location(omv.content_reg(), reg_map);
|
||||
// Ignore NULL oops and decoded NULL narrow oops which
|
||||
// equal to Universe::narrow_oop_base when a narrow oop
|
||||
// implicit null check is used in compiled code.
|
||||
// The narrow_oop_base could be NULL or be the address
|
||||
// of the page below heap depending on compressed oops mode.
|
||||
if (base_loc != NULL && *base_loc != (oop)NULL && !Universe::is_narrow_oop_base(*base_loc)) {
|
||||
derived_oop_fn(base_loc, derived_loc);
|
||||
}
|
||||
oms.next();
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "precompiled.hpp"
|
||||
#include "opto/arraycopynode.hpp"
|
||||
#include "opto/graphKit.hpp"
|
||||
#include "runtime/sharedRuntime.hpp"
|
||||
|
||||
ArrayCopyNode::ArrayCopyNode(Compile* C, bool alloc_tightly_coupled, bool has_negative_length_guard)
|
||||
: CallNode(arraycopy_type(), NULL, TypeRawPtr::BOTTOM),
|
||||
@@ -631,42 +632,76 @@ bool ArrayCopyNode::may_modify(const TypeOopPtr *t_oop, PhaseTransform *phase) {
|
||||
return CallNode::may_modify_arraycopy_helper(dest_t, t_oop, phase);
|
||||
}
|
||||
|
||||
bool ArrayCopyNode::may_modify_helper(const TypeOopPtr *t_oop, Node* n, PhaseTransform *phase, ArrayCopyNode*& ac) {
|
||||
if (n->Opcode() == Op_StoreCM ||
|
||||
n->Opcode() == Op_StoreB) {
|
||||
// Ignore card mark stores
|
||||
n = n->in(MemNode::Memory);
|
||||
}
|
||||
|
||||
if (n->is_Proj()) {
|
||||
n = n->in(0);
|
||||
if (n->is_Call() && n->as_Call()->may_modify(t_oop, phase)) {
|
||||
if (n->isa_ArrayCopy() != NULL) {
|
||||
ac = n->as_ArrayCopy();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool ArrayCopyNode::may_modify_helper(const TypeOopPtr *t_oop, Node* n, PhaseTransform *phase, CallNode*& call) {
|
||||
if (n != NULL &&
|
||||
n->is_Call() &&
|
||||
n->as_Call()->may_modify(t_oop, phase) &&
|
||||
(n->as_Call()->is_ArrayCopy() || n->as_Call()->is_call_to_arraycopystub())) {
|
||||
call = n->as_Call();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ArrayCopyNode::may_modify(const TypeOopPtr *t_oop, MemBarNode* mb, PhaseTransform *phase, ArrayCopyNode*& ac) {
|
||||
Node* mem = mb->in(TypeFunc::Memory);
|
||||
|
||||
if (mem->is_MergeMem()) {
|
||||
Node* n = mem->as_MergeMem()->memory_at(Compile::AliasIdxRaw);
|
||||
if (may_modify_helper(t_oop, n, phase, ac)) {
|
||||
return true;
|
||||
} else if (n->is_Phi()) {
|
||||
for (uint i = 1; i < n->req(); i++) {
|
||||
if (n->in(i) != NULL) {
|
||||
if (may_modify_helper(t_oop, n->in(i), phase, ac)) {
|
||||
return true;
|
||||
static Node* step_over_gc_barrier(Node* c) {
|
||||
if (UseG1GC && !GraphKit::use_ReduceInitialCardMarks() &&
|
||||
c != NULL && c->is_Region() && c->req() == 3) {
|
||||
for (uint i = 1; i < c->req(); i++) {
|
||||
if (c->in(i) != NULL && c->in(i)->is_Region() &&
|
||||
c->in(i)->req() == 3) {
|
||||
Node* r = c->in(i);
|
||||
for (uint j = 1; j < r->req(); j++) {
|
||||
if (r->in(j) != NULL && r->in(j)->is_Proj() &&
|
||||
r->in(j)->in(0) != NULL &&
|
||||
r->in(j)->in(0)->Opcode() == Op_CallLeaf &&
|
||||
r->in(j)->in(0)->as_Call()->entry_point() == CAST_FROM_FN_PTR(address, SharedRuntime::g1_wb_post)) {
|
||||
Node* call = r->in(j)->in(0);
|
||||
c = c->in(i == 1 ? 2 : 1);
|
||||
if (c != NULL) {
|
||||
c = c->in(0);
|
||||
if (c != NULL) {
|
||||
c = c->in(0);
|
||||
assert(call->in(0) == NULL ||
|
||||
call->in(0)->in(0) == NULL ||
|
||||
call->in(0)->in(0)->in(0) == NULL ||
|
||||
call->in(0)->in(0)->in(0)->in(0) == NULL ||
|
||||
call->in(0)->in(0)->in(0)->in(0)->in(0) == NULL ||
|
||||
c == call->in(0)->in(0)->in(0)->in(0)->in(0), "bad barrier shape");
|
||||
return c;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
bool ArrayCopyNode::may_modify(const TypeOopPtr *t_oop, MemBarNode* mb, PhaseTransform *phase, ArrayCopyNode*& ac) {
|
||||
|
||||
Node* c = mb->in(0);
|
||||
|
||||
// step over g1 gc barrier if we're at a clone with ReduceInitialCardMarks off
|
||||
c = step_over_gc_barrier(c);
|
||||
|
||||
CallNode* call = NULL;
|
||||
if (c != NULL && c->is_Region()) {
|
||||
for (uint i = 1; i < c->req(); i++) {
|
||||
if (c->in(i) != NULL) {
|
||||
Node* n = c->in(i)->in(0);
|
||||
if (may_modify_helper(t_oop, n, phase, call)) {
|
||||
ac = call->isa_ArrayCopy();
|
||||
assert(c == mb->in(0), "only for clone");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (may_modify_helper(t_oop, c->in(0), phase, call)) {
|
||||
ac = call->isa_ArrayCopy();
|
||||
assert(c == mb->in(0) || (ac != NULL && ac->is_clonebasic() && !GraphKit::use_ReduceInitialCardMarks()), "only for clone");
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -677,37 +712,77 @@ bool ArrayCopyNode::may_modify(const TypeOopPtr *t_oop, MemBarNode* mb, PhaseTra
|
||||
// between offset_lo and offset_hi
|
||||
// if must_modify is true, return true if the copy is guaranteed to
|
||||
// write between offset_lo and offset_hi
|
||||
bool ArrayCopyNode::modifies(intptr_t offset_lo, intptr_t offset_hi, PhaseTransform* phase, bool must_modify) {
|
||||
bool ArrayCopyNode::modifies(intptr_t offset_lo, intptr_t offset_hi, PhaseTransform* phase, bool must_modify) const {
|
||||
assert(_kind == ArrayCopy || _kind == CopyOf || _kind == CopyOfRange, "only for real array copies");
|
||||
|
||||
Node* dest = in(ArrayCopyNode::Dest);
|
||||
Node* src_pos = in(ArrayCopyNode::SrcPos);
|
||||
Node* dest_pos = in(ArrayCopyNode::DestPos);
|
||||
Node* len = in(ArrayCopyNode::Length);
|
||||
Node* dest = in(Dest);
|
||||
Node* dest_pos = in(DestPos);
|
||||
Node* len = in(Length);
|
||||
|
||||
const TypeInt *dest_pos_t = phase->type(dest_pos)->isa_int();
|
||||
const TypeInt *len_t = phase->type(len)->isa_int();
|
||||
const TypeAryPtr* ary_t = phase->type(dest)->isa_aryptr();
|
||||
|
||||
if (dest_pos_t != NULL && len_t != NULL && ary_t != NULL) {
|
||||
BasicType ary_elem = ary_t->klass()->as_array_klass()->element_type()->basic_type();
|
||||
uint header = arrayOopDesc::base_offset_in_bytes(ary_elem);
|
||||
uint elemsize = type2aelembytes(ary_elem);
|
||||
if (dest_pos_t == NULL || len_t == NULL || ary_t == NULL) {
|
||||
return !must_modify;
|
||||
}
|
||||
|
||||
jlong dest_pos_plus_len_lo = (((jlong)dest_pos_t->_lo) + len_t->_lo) * elemsize + header;
|
||||
jlong dest_pos_plus_len_hi = (((jlong)dest_pos_t->_hi) + len_t->_hi) * elemsize + header;
|
||||
jlong dest_pos_lo = ((jlong)dest_pos_t->_lo) * elemsize + header;
|
||||
jlong dest_pos_hi = ((jlong)dest_pos_t->_hi) * elemsize + header;
|
||||
BasicType ary_elem = ary_t->klass()->as_array_klass()->element_type()->basic_type();
|
||||
uint header = arrayOopDesc::base_offset_in_bytes(ary_elem);
|
||||
uint elemsize = type2aelembytes(ary_elem);
|
||||
|
||||
if (must_modify) {
|
||||
if (offset_lo >= dest_pos_hi && offset_hi < dest_pos_plus_len_lo) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
if (offset_hi >= dest_pos_lo && offset_lo < dest_pos_plus_len_hi) {
|
||||
return true;
|
||||
}
|
||||
jlong dest_pos_plus_len_lo = (((jlong)dest_pos_t->_lo) + len_t->_lo) * elemsize + header;
|
||||
jlong dest_pos_plus_len_hi = (((jlong)dest_pos_t->_hi) + len_t->_hi) * elemsize + header;
|
||||
jlong dest_pos_lo = ((jlong)dest_pos_t->_lo) * elemsize + header;
|
||||
jlong dest_pos_hi = ((jlong)dest_pos_t->_hi) * elemsize + header;
|
||||
|
||||
if (must_modify) {
|
||||
if (offset_lo >= dest_pos_hi && offset_hi < dest_pos_plus_len_lo) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
if (offset_hi >= dest_pos_lo && offset_lo < dest_pos_plus_len_hi) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// We try to replace a load from the destination of an arraycopy with
|
||||
// a load from the source so the arraycopy has a chance to be
|
||||
// eliminated. It's only valid if the arraycopy doesn't change the
|
||||
// element that would be loaded from the source array.
|
||||
bool ArrayCopyNode::can_replace_dest_load_with_src_load(intptr_t offset_lo, intptr_t offset_hi, PhaseTransform* phase) const {
|
||||
assert(_kind == ArrayCopy || _kind == CopyOf || _kind == CopyOfRange, "only for real array copies");
|
||||
|
||||
Node* src = in(Src);
|
||||
Node* dest = in(Dest);
|
||||
|
||||
// Check whether, assuming source and destination are the same
|
||||
// array, the arraycopy modifies the element from the source we
|
||||
// would load.
|
||||
if ((src != dest && in(SrcPos) == in(DestPos)) || !modifies(offset_lo, offset_hi, phase, false)) {
|
||||
// if not the transformation is legal
|
||||
return true;
|
||||
}
|
||||
|
||||
AllocateNode* src_alloc = AllocateNode::Ideal_allocation(src, phase);
|
||||
AllocateNode* dest_alloc = AllocateNode::Ideal_allocation(dest, phase);
|
||||
|
||||
// Check whether source and destination can be proved to be
|
||||
// different arrays
|
||||
const TypeOopPtr* t_src = phase->type(src)->isa_oopptr();
|
||||
const TypeOopPtr* t_dest = phase->type(dest)->isa_oopptr();
|
||||
|
||||
if (t_src != NULL && t_dest != NULL &&
|
||||
(t_src->is_known_instance() || t_dest->is_known_instance()) &&
|
||||
t_src->instance_id() != t_dest->instance_id()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (MemNode::detect_ptr_independence(src->uncast(), src_alloc, dest->uncast(), dest_alloc, phase)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -108,7 +108,7 @@ private:
|
||||
BasicType copy_type, const Type* value_type, int count);
|
||||
bool finish_transform(PhaseGVN *phase, bool can_reshape,
|
||||
Node* ctl, Node *mem);
|
||||
static bool may_modify_helper(const TypeOopPtr *t_oop, Node* n, PhaseTransform *phase, ArrayCopyNode*& ac);
|
||||
static bool may_modify_helper(const TypeOopPtr *t_oop, Node* n, PhaseTransform *phase, CallNode*& call);
|
||||
|
||||
public:
|
||||
|
||||
@@ -167,7 +167,8 @@ public:
|
||||
bool has_negative_length_guard() const { return _has_negative_length_guard; }
|
||||
|
||||
static bool may_modify(const TypeOopPtr *t_oop, MemBarNode* mb, PhaseTransform *phase, ArrayCopyNode*& ac);
|
||||
bool modifies(intptr_t offset_lo, intptr_t offset_hi, PhaseTransform* phase, bool must_modify);
|
||||
bool modifies(intptr_t offset_lo, intptr_t offset_hi, PhaseTransform* phase, bool must_modify) const;
|
||||
bool can_replace_dest_load_with_src_load(intptr_t offset_lo, intptr_t offset_hi, PhaseTransform* phase) const;
|
||||
|
||||
#ifndef PRODUCT
|
||||
virtual void dump_spec(outputStream *st) const;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -244,8 +244,8 @@ bool C2Compiler::is_intrinsic_supported(const methodHandle& method, bool is_virt
|
||||
if (!Matcher::match_rule_supported(Op_ReverseBytesL)) return false;
|
||||
break;
|
||||
|
||||
/* CompareAndSwap, Object: */
|
||||
case vmIntrinsics::_compareAndSwapObject:
|
||||
/* CompareAndSet, Object: */
|
||||
case vmIntrinsics::_compareAndSetObject:
|
||||
#ifdef _LP64
|
||||
if ( UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndSwapN)) return false;
|
||||
if (!UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndSwapP)) return false;
|
||||
@@ -253,10 +253,10 @@ bool C2Compiler::is_intrinsic_supported(const methodHandle& method, bool is_virt
|
||||
if (!Matcher::match_rule_supported(Op_CompareAndSwapP)) return false;
|
||||
#endif
|
||||
break;
|
||||
case vmIntrinsics::_weakCompareAndSwapObject:
|
||||
case vmIntrinsics::_weakCompareAndSwapObjectAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSwapObjectRelease:
|
||||
case vmIntrinsics::_weakCompareAndSwapObjectVolatile:
|
||||
case vmIntrinsics::_weakCompareAndSetObjectPlain:
|
||||
case vmIntrinsics::_weakCompareAndSetObjectAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSetObjectRelease:
|
||||
case vmIntrinsics::_weakCompareAndSetObject:
|
||||
#ifdef _LP64
|
||||
if ( UseCompressedOops && !Matcher::match_rule_supported(Op_WeakCompareAndSwapN)) return false;
|
||||
if (!UseCompressedOops && !Matcher::match_rule_supported(Op_WeakCompareAndSwapP)) return false;
|
||||
@@ -264,52 +264,52 @@ bool C2Compiler::is_intrinsic_supported(const methodHandle& method, bool is_virt
|
||||
if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapP)) return false;
|
||||
#endif
|
||||
break;
|
||||
/* CompareAndSwap, Long: */
|
||||
case vmIntrinsics::_compareAndSwapLong:
|
||||
/* CompareAndSet, Long: */
|
||||
case vmIntrinsics::_compareAndSetLong:
|
||||
if (!Matcher::match_rule_supported(Op_CompareAndSwapL)) return false;
|
||||
break;
|
||||
case vmIntrinsics::_weakCompareAndSwapLong:
|
||||
case vmIntrinsics::_weakCompareAndSwapLongAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSwapLongRelease:
|
||||
case vmIntrinsics::_weakCompareAndSwapLongVolatile:
|
||||
case vmIntrinsics::_weakCompareAndSetLongPlain:
|
||||
case vmIntrinsics::_weakCompareAndSetLongAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSetLongRelease:
|
||||
case vmIntrinsics::_weakCompareAndSetLong:
|
||||
if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapL)) return false;
|
||||
break;
|
||||
|
||||
/* CompareAndSwap, Int: */
|
||||
case vmIntrinsics::_compareAndSwapInt:
|
||||
/* CompareAndSet, Int: */
|
||||
case vmIntrinsics::_compareAndSetInt:
|
||||
if (!Matcher::match_rule_supported(Op_CompareAndSwapI)) return false;
|
||||
break;
|
||||
case vmIntrinsics::_weakCompareAndSwapInt:
|
||||
case vmIntrinsics::_weakCompareAndSwapIntAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSwapIntRelease:
|
||||
case vmIntrinsics::_weakCompareAndSwapIntVolatile:
|
||||
case vmIntrinsics::_weakCompareAndSetIntPlain:
|
||||
case vmIntrinsics::_weakCompareAndSetIntAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSetIntRelease:
|
||||
case vmIntrinsics::_weakCompareAndSetInt:
|
||||
if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapL)) return false;
|
||||
break;
|
||||
|
||||
/* CompareAndSwap, Byte: */
|
||||
case vmIntrinsics::_compareAndSwapByte:
|
||||
/* CompareAndSet, Byte: */
|
||||
case vmIntrinsics::_compareAndSetByte:
|
||||
if (!Matcher::match_rule_supported(Op_CompareAndSwapB)) return false;
|
||||
break;
|
||||
case vmIntrinsics::_weakCompareAndSwapByte:
|
||||
case vmIntrinsics::_weakCompareAndSwapByteAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSwapByteRelease:
|
||||
case vmIntrinsics::_weakCompareAndSwapByteVolatile:
|
||||
case vmIntrinsics::_weakCompareAndSetBytePlain:
|
||||
case vmIntrinsics::_weakCompareAndSetByteAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSetByteRelease:
|
||||
case vmIntrinsics::_weakCompareAndSetByte:
|
||||
if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapB)) return false;
|
||||
break;
|
||||
|
||||
/* CompareAndSwap, Short: */
|
||||
case vmIntrinsics::_compareAndSwapShort:
|
||||
/* CompareAndSet, Short: */
|
||||
case vmIntrinsics::_compareAndSetShort:
|
||||
if (!Matcher::match_rule_supported(Op_CompareAndSwapS)) return false;
|
||||
break;
|
||||
case vmIntrinsics::_weakCompareAndSwapShort:
|
||||
case vmIntrinsics::_weakCompareAndSwapShortAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSwapShortRelease:
|
||||
case vmIntrinsics::_weakCompareAndSwapShortVolatile:
|
||||
case vmIntrinsics::_weakCompareAndSetShortPlain:
|
||||
case vmIntrinsics::_weakCompareAndSetShortAcquire:
|
||||
case vmIntrinsics::_weakCompareAndSetShortRelease:
|
||||
case vmIntrinsics::_weakCompareAndSetShort:
|
||||
if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapS)) return false;
|
||||
break;
|
||||
|
||||
/* CompareAndExchange, Object: */
|
||||
case vmIntrinsics::_compareAndExchangeObjectVolatile:
|
||||
case vmIntrinsics::_compareAndExchangeObject:
|
||||
case vmIntrinsics::_compareAndExchangeObjectAcquire:
|
||||
case vmIntrinsics::_compareAndExchangeObjectRelease:
|
||||
#ifdef _LP64
|
||||
@@ -321,28 +321,28 @@ bool C2Compiler::is_intrinsic_supported(const methodHandle& method, bool is_virt
|
||||
break;
|
||||
|
||||
/* CompareAndExchange, Long: */
|
||||
case vmIntrinsics::_compareAndExchangeLongVolatile:
|
||||
case vmIntrinsics::_compareAndExchangeLong:
|
||||
case vmIntrinsics::_compareAndExchangeLongAcquire:
|
||||
case vmIntrinsics::_compareAndExchangeLongRelease:
|
||||
if (!Matcher::match_rule_supported(Op_CompareAndExchangeL)) return false;
|
||||
break;
|
||||
|
||||
/* CompareAndExchange, Int: */
|
||||
case vmIntrinsics::_compareAndExchangeIntVolatile:
|
||||
case vmIntrinsics::_compareAndExchangeInt:
|
||||
case vmIntrinsics::_compareAndExchangeIntAcquire:
|
||||
case vmIntrinsics::_compareAndExchangeIntRelease:
|
||||
if (!Matcher::match_rule_supported(Op_CompareAndExchangeI)) return false;
|
||||
break;
|
||||
|
||||
/* CompareAndExchange, Byte: */
|
||||
case vmIntrinsics::_compareAndExchangeByteVolatile:
|
||||
case vmIntrinsics::_compareAndExchangeByte:
|
||||
case vmIntrinsics::_compareAndExchangeByteAcquire:
|
||||
case vmIntrinsics::_compareAndExchangeByteRelease:
|
||||
if (!Matcher::match_rule_supported(Op_CompareAndExchangeB)) return false;
|
||||
break;
|
||||
|
||||
/* CompareAndExchange, Short: */
|
||||
case vmIntrinsics::_compareAndExchangeShortVolatile:
|
||||
case vmIntrinsics::_compareAndExchangeShort:
|
||||
case vmIntrinsics::_compareAndExchangeShortAcquire:
|
||||
case vmIntrinsics::_compareAndExchangeShortRelease:
|
||||
if (!Matcher::match_rule_supported(Op_CompareAndExchangeS)) return false;
|
||||
|
||||
@@ -649,46 +649,46 @@ bool LibraryCallKit::try_to_inline(int predicate) {
|
||||
case vmIntrinsics::_putFloatOpaque: return inline_unsafe_access( is_store, T_FLOAT, Opaque, false);
|
||||
case vmIntrinsics::_putDoubleOpaque: return inline_unsafe_access( is_store, T_DOUBLE, Opaque, false);
|
||||
|
||||
case vmIntrinsics::_compareAndSwapObject: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap, Volatile);
|
||||
case vmIntrinsics::_compareAndSwapByte: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap, Volatile);
|
||||
case vmIntrinsics::_compareAndSwapShort: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap, Volatile);
|
||||
case vmIntrinsics::_compareAndSwapInt: return inline_unsafe_load_store(T_INT, LS_cmp_swap, Volatile);
|
||||
case vmIntrinsics::_compareAndSwapLong: return inline_unsafe_load_store(T_LONG, LS_cmp_swap, Volatile);
|
||||
case vmIntrinsics::_compareAndSetObject: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap, Volatile);
|
||||
case vmIntrinsics::_compareAndSetByte: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap, Volatile);
|
||||
case vmIntrinsics::_compareAndSetShort: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap, Volatile);
|
||||
case vmIntrinsics::_compareAndSetInt: return inline_unsafe_load_store(T_INT, LS_cmp_swap, Volatile);
|
||||
case vmIntrinsics::_compareAndSetLong: return inline_unsafe_load_store(T_LONG, LS_cmp_swap, Volatile);
|
||||
|
||||
case vmIntrinsics::_weakCompareAndSwapObject: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Relaxed);
|
||||
case vmIntrinsics::_weakCompareAndSwapObjectAcquire: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Acquire);
|
||||
case vmIntrinsics::_weakCompareAndSwapObjectRelease: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Release);
|
||||
case vmIntrinsics::_weakCompareAndSwapObjectVolatile: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Volatile);
|
||||
case vmIntrinsics::_weakCompareAndSwapByte: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Relaxed);
|
||||
case vmIntrinsics::_weakCompareAndSwapByteAcquire: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Acquire);
|
||||
case vmIntrinsics::_weakCompareAndSwapByteRelease: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Release);
|
||||
case vmIntrinsics::_weakCompareAndSwapByteVolatile: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Volatile);
|
||||
case vmIntrinsics::_weakCompareAndSwapShort: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Relaxed);
|
||||
case vmIntrinsics::_weakCompareAndSwapShortAcquire: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Acquire);
|
||||
case vmIntrinsics::_weakCompareAndSwapShortRelease: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Release);
|
||||
case vmIntrinsics::_weakCompareAndSwapShortVolatile: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Volatile);
|
||||
case vmIntrinsics::_weakCompareAndSwapInt: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Relaxed);
|
||||
case vmIntrinsics::_weakCompareAndSwapIntAcquire: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Acquire);
|
||||
case vmIntrinsics::_weakCompareAndSwapIntRelease: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Release);
|
||||
case vmIntrinsics::_weakCompareAndSwapIntVolatile: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Volatile);
|
||||
case vmIntrinsics::_weakCompareAndSwapLong: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Relaxed);
|
||||
case vmIntrinsics::_weakCompareAndSwapLongAcquire: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Acquire);
|
||||
case vmIntrinsics::_weakCompareAndSwapLongRelease: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Release);
|
||||
case vmIntrinsics::_weakCompareAndSwapLongVolatile: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Volatile);
|
||||
case vmIntrinsics::_weakCompareAndSetObjectPlain: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Relaxed);
|
||||
case vmIntrinsics::_weakCompareAndSetObjectAcquire: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Acquire);
|
||||
case vmIntrinsics::_weakCompareAndSetObjectRelease: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Release);
|
||||
case vmIntrinsics::_weakCompareAndSetObject: return inline_unsafe_load_store(T_OBJECT, LS_cmp_swap_weak, Volatile);
|
||||
case vmIntrinsics::_weakCompareAndSetBytePlain: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Relaxed);
|
||||
case vmIntrinsics::_weakCompareAndSetByteAcquire: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Acquire);
|
||||
case vmIntrinsics::_weakCompareAndSetByteRelease: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Release);
|
||||
case vmIntrinsics::_weakCompareAndSetByte: return inline_unsafe_load_store(T_BYTE, LS_cmp_swap_weak, Volatile);
|
||||
case vmIntrinsics::_weakCompareAndSetShortPlain: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Relaxed);
|
||||
case vmIntrinsics::_weakCompareAndSetShortAcquire: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Acquire);
|
||||
case vmIntrinsics::_weakCompareAndSetShortRelease: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Release);
|
||||
case vmIntrinsics::_weakCompareAndSetShort: return inline_unsafe_load_store(T_SHORT, LS_cmp_swap_weak, Volatile);
|
||||
case vmIntrinsics::_weakCompareAndSetIntPlain: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Relaxed);
|
||||
case vmIntrinsics::_weakCompareAndSetIntAcquire: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Acquire);
|
||||
case vmIntrinsics::_weakCompareAndSetIntRelease: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Release);
|
||||
case vmIntrinsics::_weakCompareAndSetInt: return inline_unsafe_load_store(T_INT, LS_cmp_swap_weak, Volatile);
|
||||
case vmIntrinsics::_weakCompareAndSetLongPlain: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Relaxed);
|
||||
case vmIntrinsics::_weakCompareAndSetLongAcquire: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Acquire);
|
||||
case vmIntrinsics::_weakCompareAndSetLongRelease: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Release);
|
||||
case vmIntrinsics::_weakCompareAndSetLong: return inline_unsafe_load_store(T_LONG, LS_cmp_swap_weak, Volatile);
|
||||
|
||||
case vmIntrinsics::_compareAndExchangeObjectVolatile: return inline_unsafe_load_store(T_OBJECT, LS_cmp_exchange, Volatile);
|
||||
case vmIntrinsics::_compareAndExchangeObject: return inline_unsafe_load_store(T_OBJECT, LS_cmp_exchange, Volatile);
|
||||
case vmIntrinsics::_compareAndExchangeObjectAcquire: return inline_unsafe_load_store(T_OBJECT, LS_cmp_exchange, Acquire);
|
||||
case vmIntrinsics::_compareAndExchangeObjectRelease: return inline_unsafe_load_store(T_OBJECT, LS_cmp_exchange, Release);
|
||||
case vmIntrinsics::_compareAndExchangeByteVolatile: return inline_unsafe_load_store(T_BYTE, LS_cmp_exchange, Volatile);
|
||||
case vmIntrinsics::_compareAndExchangeByte: return inline_unsafe_load_store(T_BYTE, LS_cmp_exchange, Volatile);
|
||||
case vmIntrinsics::_compareAndExchangeByteAcquire: return inline_unsafe_load_store(T_BYTE, LS_cmp_exchange, Acquire);
|
||||
case vmIntrinsics::_compareAndExchangeByteRelease: return inline_unsafe_load_store(T_BYTE, LS_cmp_exchange, Release);
|
||||
case vmIntrinsics::_compareAndExchangeShortVolatile: return inline_unsafe_load_store(T_SHORT, LS_cmp_exchange, Volatile);
|
||||
case vmIntrinsics::_compareAndExchangeShort: return inline_unsafe_load_store(T_SHORT, LS_cmp_exchange, Volatile);
|
||||
case vmIntrinsics::_compareAndExchangeShortAcquire: return inline_unsafe_load_store(T_SHORT, LS_cmp_exchange, Acquire);
|
||||
case vmIntrinsics::_compareAndExchangeShortRelease: return inline_unsafe_load_store(T_SHORT, LS_cmp_exchange, Release);
|
||||
case vmIntrinsics::_compareAndExchangeIntVolatile: return inline_unsafe_load_store(T_INT, LS_cmp_exchange, Volatile);
|
||||
case vmIntrinsics::_compareAndExchangeInt: return inline_unsafe_load_store(T_INT, LS_cmp_exchange, Volatile);
|
||||
case vmIntrinsics::_compareAndExchangeIntAcquire: return inline_unsafe_load_store(T_INT, LS_cmp_exchange, Acquire);
|
||||
case vmIntrinsics::_compareAndExchangeIntRelease: return inline_unsafe_load_store(T_INT, LS_cmp_exchange, Release);
|
||||
case vmIntrinsics::_compareAndExchangeLongVolatile: return inline_unsafe_load_store(T_LONG, LS_cmp_exchange, Volatile);
|
||||
case vmIntrinsics::_compareAndExchangeLong: return inline_unsafe_load_store(T_LONG, LS_cmp_exchange, Volatile);
|
||||
case vmIntrinsics::_compareAndExchangeLongAcquire: return inline_unsafe_load_store(T_LONG, LS_cmp_exchange, Acquire);
|
||||
case vmIntrinsics::_compareAndExchangeLongRelease: return inline_unsafe_load_store(T_LONG, LS_cmp_exchange, Release);
|
||||
|
||||
@@ -2587,23 +2587,26 @@ bool LibraryCallKit::inline_unsafe_access(bool is_store, const BasicType type, c
|
||||
//
|
||||
// LS_cmp_swap:
|
||||
//
|
||||
// boolean compareAndSwapObject(Object o, long offset, Object expected, Object x);
|
||||
// boolean compareAndSwapInt( Object o, long offset, int expected, int x);
|
||||
// boolean compareAndSwapLong( Object o, long offset, long expected, long x);
|
||||
// boolean compareAndSetObject(Object o, long offset, Object expected, Object x);
|
||||
// boolean compareAndSetInt( Object o, long offset, int expected, int x);
|
||||
// boolean compareAndSetLong( Object o, long offset, long expected, long x);
|
||||
//
|
||||
// LS_cmp_swap_weak:
|
||||
//
|
||||
// boolean weakCompareAndSwapObject( Object o, long offset, Object expected, Object x);
|
||||
// boolean weakCompareAndSwapObjectAcquire(Object o, long offset, Object expected, Object x);
|
||||
// boolean weakCompareAndSwapObjectRelease(Object o, long offset, Object expected, Object x);
|
||||
// boolean weakCompareAndSetObject( Object o, long offset, Object expected, Object x);
|
||||
// boolean weakCompareAndSetObjectPlain( Object o, long offset, Object expected, Object x);
|
||||
// boolean weakCompareAndSetObjectAcquire(Object o, long offset, Object expected, Object x);
|
||||
// boolean weakCompareAndSetObjectRelease(Object o, long offset, Object expected, Object x);
|
||||
//
|
||||
// boolean weakCompareAndSwapInt( Object o, long offset, int expected, int x);
|
||||
// boolean weakCompareAndSwapIntAcquire( Object o, long offset, int expected, int x);
|
||||
// boolean weakCompareAndSwapIntRelease( Object o, long offset, int expected, int x);
|
||||
// boolean weakCompareAndSetInt( Object o, long offset, int expected, int x);
|
||||
// boolean weakCompareAndSetIntPlain( Object o, long offset, int expected, int x);
|
||||
// boolean weakCompareAndSetIntAcquire( Object o, long offset, int expected, int x);
|
||||
// boolean weakCompareAndSetIntRelease( Object o, long offset, int expected, int x);
|
||||
//
|
||||
// boolean weakCompareAndSwapLong( Object o, long offset, long expected, long x);
|
||||
// boolean weakCompareAndSwapLongAcquire( Object o, long offset, long expected, long x);
|
||||
// boolean weakCompareAndSwapLongRelease( Object o, long offset, long expected, long x);
|
||||
// boolean weakCompareAndSetLong( Object o, long offset, long expected, long x);
|
||||
// boolean weakCompareAndSetLongPlain( Object o, long offset, long expected, long x);
|
||||
// boolean weakCompareAndSetLongAcquire( Object o, long offset, long expected, long x);
|
||||
// boolean weakCompareAndSetLongRelease( Object o, long offset, long expected, long x);
|
||||
//
|
||||
// LS_cmp_exchange:
|
||||
//
|
||||
@@ -4965,7 +4968,7 @@ bool LibraryCallKit::inline_arraycopy() {
|
||||
// See arraycopy_restore_alloc_state() comment
|
||||
// if alloc == NULL we don't have to worry about a tightly coupled allocation so we can emit all needed guards
|
||||
// if saved_jvms != NULL (then alloc != NULL) then we can handle guards and a tightly coupled allocation
|
||||
// if saved_jvms == NULL and alloc != NULL, we can’t emit any guards
|
||||
// if saved_jvms == NULL and alloc != NULL, we can't emit any guards
|
||||
bool can_emit_guards = (alloc == NULL || saved_jvms != NULL);
|
||||
|
||||
// The following tests must be performed
|
||||
|
||||
@@ -1860,6 +1860,9 @@ void IdealLoopTree::dump_head( ) const {
|
||||
if (_required_safept != NULL && _required_safept->size() > 0) {
|
||||
tty->print(" req={"); _required_safept->dump_simple(); tty->print(" }");
|
||||
}
|
||||
if (Verbose) {
|
||||
tty->print(" body={"); _body.dump_simple(); tty->print(" }");
|
||||
}
|
||||
tty->cr();
|
||||
}
|
||||
|
||||
|
||||
@@ -913,7 +913,11 @@ Node *PhaseIdealLoop::split_if_with_blocks_pre( Node *n ) {
|
||||
|
||||
if (n->is_ConstraintCast()) {
|
||||
Node* dom_cast = n->as_ConstraintCast()->dominating_cast(this);
|
||||
if (dom_cast != NULL) {
|
||||
// ConstraintCastNode::dominating_cast() uses node control input to determine domination.
|
||||
// Node control inputs don't necessarily agree with loop control info (due to
|
||||
// transformations happened in between), thus additional dominance check is needed
|
||||
// to keep loop info valid.
|
||||
if (dom_cast != NULL && is_dominator(get_ctrl(dom_cast), get_ctrl(n))) {
|
||||
_igvn.replace_node(n, dom_cast);
|
||||
return dom_cast;
|
||||
}
|
||||
|
||||
@@ -1047,7 +1047,9 @@ void PhaseMacroExpand::process_users_of_allocation(CallNode *alloc) {
|
||||
// opportunities for allocation elimination
|
||||
Node* src = ac->in(ArrayCopyNode::Src);
|
||||
ac->replace_edge(src, top());
|
||||
if (src->outcnt() == 0) {
|
||||
// src can be top at this point if src and dest of the
|
||||
// arraycopy were the same
|
||||
if (src->outcnt() == 0 && !src->is_top()) {
|
||||
_igvn.remove_dead_node(src);
|
||||
}
|
||||
|
||||
|
||||
@@ -718,6 +718,15 @@ Node* PhaseMacroExpand::generate_arraycopy(ArrayCopyNode *ac, AllocateArrayNode*
|
||||
_igvn.replace_node(_ioproj_fallthrough, *io);
|
||||
_igvn.replace_node(_fallthroughcatchproj, *ctrl);
|
||||
|
||||
#ifdef ASSERT
|
||||
const TypeOopPtr* dest_t = _igvn.type(dest)->is_oopptr();
|
||||
if (dest_t->is_known_instance()) {
|
||||
ArrayCopyNode* ac = NULL;
|
||||
assert(ArrayCopyNode::may_modify(dest_t, (*ctrl)->in(0)->as_MemBar(), &_igvn, ac), "dependency on arraycopy lost");
|
||||
assert(ac == NULL, "no arraycopy anymore");
|
||||
}
|
||||
#endif
|
||||
|
||||
return out_mem;
|
||||
}
|
||||
|
||||
@@ -1139,8 +1148,25 @@ void PhaseMacroExpand::expand_arraycopy_node(ArrayCopyNode *ac) {
|
||||
const TypeAryPtr* top_src = src_type->isa_aryptr();
|
||||
const TypeAryPtr* top_dest = dest_type->isa_aryptr();
|
||||
|
||||
if (top_src == NULL || top_src->klass() == NULL ||
|
||||
top_dest == NULL || top_dest->klass() == NULL) {
|
||||
BasicType src_elem = T_CONFLICT;
|
||||
BasicType dest_elem = T_CONFLICT;
|
||||
|
||||
if (top_dest != NULL && top_dest->klass() != NULL) {
|
||||
dest_elem = top_dest->klass()->as_array_klass()->element_type()->basic_type();
|
||||
}
|
||||
if (top_src != NULL && top_src->klass() != NULL) {
|
||||
src_elem = top_src->klass()->as_array_klass()->element_type()->basic_type();
|
||||
}
|
||||
if (src_elem == T_ARRAY) src_elem = T_OBJECT;
|
||||
if (dest_elem == T_ARRAY) dest_elem = T_OBJECT;
|
||||
|
||||
if (ac->is_arraycopy_validated() &&
|
||||
dest_elem != T_CONFLICT &&
|
||||
src_elem == T_CONFLICT) {
|
||||
src_elem = dest_elem;
|
||||
}
|
||||
|
||||
if (src_elem == T_CONFLICT || dest_elem == T_CONFLICT) {
|
||||
// Conservatively insert a memory barrier on all memory slices.
|
||||
// Do not let writes into the source float below the arraycopy.
|
||||
{
|
||||
@@ -1169,13 +1195,11 @@ void PhaseMacroExpand::expand_arraycopy_node(ArrayCopyNode *ac) {
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
assert(!ac->is_arraycopy_validated() || (src_elem == dest_elem && dest_elem != T_VOID), "validated but different basic types");
|
||||
|
||||
// (2) src and dest arrays must have elements of the same BasicType
|
||||
// Figure out the size and type of the elements we will be copying.
|
||||
BasicType src_elem = top_src->klass()->as_array_klass()->element_type()->basic_type();
|
||||
BasicType dest_elem = top_dest->klass()->as_array_klass()->element_type()->basic_type();
|
||||
if (src_elem == T_ARRAY) src_elem = T_OBJECT;
|
||||
if (dest_elem == T_ARRAY) dest_elem = T_OBJECT;
|
||||
|
||||
if (src_elem != dest_elem || dest_elem == T_VOID) {
|
||||
// The component types are not the same or are not recognized. Punt.
|
||||
// (But, avoid the native method wrapper to JVM_ArrayCopy.)
|
||||
|
||||
@@ -908,10 +908,11 @@ Node* LoadNode::can_see_arraycopy_value(Node* st, PhaseTransform* phase) const {
|
||||
ld->set_req(0, ld_alloc->in(0));
|
||||
}
|
||||
} else {
|
||||
Node* src = ac->in(ArrayCopyNode::Src);
|
||||
Node* addp = in(MemNode::Address)->clone();
|
||||
assert(addp->in(AddPNode::Base) == addp->in(AddPNode::Address), "should be");
|
||||
addp->set_req(AddPNode::Base, ac->in(ArrayCopyNode::Src));
|
||||
addp->set_req(AddPNode::Address, ac->in(ArrayCopyNode::Src));
|
||||
addp->set_req(AddPNode::Base, src);
|
||||
addp->set_req(AddPNode::Address, src);
|
||||
|
||||
const TypeAryPtr* ary_t = phase->type(in(MemNode::Address))->isa_aryptr();
|
||||
BasicType ary_elem = ary_t->klass()->as_array_klass()->element_type()->basic_type();
|
||||
@@ -928,6 +929,12 @@ Node* LoadNode::can_see_arraycopy_value(Node* st, PhaseTransform* phase) const {
|
||||
addp->set_req(AddPNode::Offset, offset);
|
||||
ld->set_req(MemNode::Address, phase->transform(addp));
|
||||
|
||||
const TypeX *ld_offs_t = phase->type(offset)->isa_intptr_t();
|
||||
|
||||
if (!ac->as_ArrayCopy()->can_replace_dest_load_with_src_load(ld_offs_t->_lo, ld_offs_t->_hi, phase)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (in(0) != NULL) {
|
||||
assert(ac->in(0) != NULL, "alloc must have control");
|
||||
ld->set_req(0, ac->in(0));
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -378,7 +378,7 @@ UNSAFE_ENTRY(jobject, Unsafe_GetUncompressedObject(JNIEnv *env, jobject unsafe,
|
||||
// On platforms which do not support atomic compare-and-swap of jlong (8 byte)
|
||||
// values we have to use a lock-based scheme to enforce atomicity. This has to be
|
||||
// applied to all Unsafe operations that set the value of a jlong field. Even so
|
||||
// the compareAndSwapLong operation will not be atomic with respect to direct stores
|
||||
// the compareAndSetLong operation will not be atomic with respect to direct stores
|
||||
// to the field from Java code. It is important therefore that any Java code that
|
||||
// utilizes these Unsafe jlong operations does not perform direct stores. To permit
|
||||
// direct loads of the field from Java code we must also use Atomic::store within the
|
||||
@@ -1013,7 +1013,7 @@ UNSAFE_ENTRY(jlong, Unsafe_CompareAndExchangeLong(JNIEnv *env, jobject unsafe, j
|
||||
#endif
|
||||
} UNSAFE_END
|
||||
|
||||
UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSwapObject(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jobject e_h, jobject x_h)) {
|
||||
UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSetObject(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jobject e_h, jobject x_h)) {
|
||||
oop x = JNIHandles::resolve(x_h);
|
||||
oop e = JNIHandles::resolve(e_h);
|
||||
oop p = JNIHandles::resolve(obj);
|
||||
@@ -1028,14 +1028,14 @@ UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSwapObject(JNIEnv *env, jobject unsafe,
|
||||
return true;
|
||||
} UNSAFE_END
|
||||
|
||||
UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSwapInt(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jint e, jint x)) {
|
||||
UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSetInt(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jint e, jint x)) {
|
||||
oop p = JNIHandles::resolve(obj);
|
||||
jint* addr = (jint *)index_oop_from_field_offset_long(p, offset);
|
||||
|
||||
return (jint)(Atomic::cmpxchg(x, addr, e)) == e;
|
||||
} UNSAFE_END
|
||||
|
||||
UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSwapLong(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jlong e, jlong x)) {
|
||||
UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSetLong(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jlong e, jlong x)) {
|
||||
Handle p(THREAD, JNIHandles::resolve(obj));
|
||||
jlong* addr = (jlong*)index_oop_from_field_offset_long(p(), offset);
|
||||
|
||||
@@ -1194,12 +1194,12 @@ static JNINativeMethod jdk_internal_misc_Unsafe_methods[] = {
|
||||
{CC "defineClass0", CC "(" DC_Args ")" CLS, FN_PTR(Unsafe_DefineClass0)},
|
||||
{CC "allocateInstance", CC "(" CLS ")" OBJ, FN_PTR(Unsafe_AllocateInstance)},
|
||||
{CC "throwException", CC "(" THR ")V", FN_PTR(Unsafe_ThrowException)},
|
||||
{CC "compareAndSwapObject", CC "(" OBJ "J" OBJ "" OBJ ")Z", FN_PTR(Unsafe_CompareAndSwapObject)},
|
||||
{CC "compareAndSwapInt", CC "(" OBJ "J""I""I"")Z", FN_PTR(Unsafe_CompareAndSwapInt)},
|
||||
{CC "compareAndSwapLong", CC "(" OBJ "J""J""J"")Z", FN_PTR(Unsafe_CompareAndSwapLong)},
|
||||
{CC "compareAndExchangeObjectVolatile", CC "(" OBJ "J" OBJ "" OBJ ")" OBJ, FN_PTR(Unsafe_CompareAndExchangeObject)},
|
||||
{CC "compareAndExchangeIntVolatile", CC "(" OBJ "J""I""I"")I", FN_PTR(Unsafe_CompareAndExchangeInt)},
|
||||
{CC "compareAndExchangeLongVolatile", CC "(" OBJ "J""J""J"")J", FN_PTR(Unsafe_CompareAndExchangeLong)},
|
||||
{CC "compareAndSetObject",CC "(" OBJ "J" OBJ "" OBJ ")Z", FN_PTR(Unsafe_CompareAndSetObject)},
|
||||
{CC "compareAndSetInt", CC "(" OBJ "J""I""I"")Z", FN_PTR(Unsafe_CompareAndSetInt)},
|
||||
{CC "compareAndSetLong", CC "(" OBJ "J""J""J"")Z", FN_PTR(Unsafe_CompareAndSetLong)},
|
||||
{CC "compareAndExchangeObject", CC "(" OBJ "J" OBJ "" OBJ ")" OBJ, FN_PTR(Unsafe_CompareAndExchangeObject)},
|
||||
{CC "compareAndExchangeInt", CC "(" OBJ "J""I""I"")I", FN_PTR(Unsafe_CompareAndExchangeInt)},
|
||||
{CC "compareAndExchangeLong", CC "(" OBJ "J""J""J"")J", FN_PTR(Unsafe_CompareAndExchangeLong)},
|
||||
|
||||
{CC "park", CC "(ZJ)V", FN_PTR(Unsafe_Park)},
|
||||
{CC "unpark", CC "(" OBJ ")V", FN_PTR(Unsafe_Unpark)},
|
||||
|
||||
@@ -549,7 +549,7 @@ address SharedRuntime::get_poll_stub(address pc) {
|
||||
CodeBlob *cb = CodeCache::find_blob(pc);
|
||||
|
||||
// Should be an nmethod
|
||||
assert(cb && cb->is_compiled(), "safepoint polling: pc must refer to an nmethod");
|
||||
guarantee(cb != NULL && cb->is_compiled(), "safepoint polling: pc must refer to an nmethod");
|
||||
|
||||
// Look up the relocation information
|
||||
assert(((CompiledMethod*)cb)->is_at_poll_or_poll_return(pc),
|
||||
@@ -1802,7 +1802,7 @@ bool SharedRuntime::should_fixup_call_destination(address destination, address e
|
||||
if (destination != entry_point) {
|
||||
CodeBlob* callee = CodeCache::find_blob(destination);
|
||||
// callee == cb seems weird. It means calling interpreter thru stub.
|
||||
if (callee == cb || callee->is_adapter_blob()) {
|
||||
if (callee != NULL && (callee == cb || callee->is_adapter_blob())) {
|
||||
// static call or optimized virtual
|
||||
if (TraceCallFixup) {
|
||||
tty->print("fixup callsite at " INTPTR_FORMAT " to compiled code for", p2i(caller_pc));
|
||||
@@ -1851,7 +1851,7 @@ IRT_LEAF(void, SharedRuntime::fixup_callers_callsite(Method* method, address cal
|
||||
// ask me how I know this...
|
||||
|
||||
CodeBlob* cb = CodeCache::find_blob(caller_pc);
|
||||
if (!cb->is_compiled() || entry_point == moop->get_c2i_entry()) {
|
||||
if (cb == NULL || !cb->is_compiled() || entry_point == moop->get_c2i_entry()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2009 Red Hat, Inc.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@@ -66,7 +66,7 @@ bool SharkIntrinsics::is_intrinsic(ciMethod *target) {
|
||||
return true;
|
||||
|
||||
// Unsafe
|
||||
case vmIntrinsics::_compareAndSwapInt:
|
||||
case vmIntrinsics::_compareAndSetInt:
|
||||
return true;
|
||||
|
||||
default:
|
||||
@@ -140,8 +140,8 @@ void SharkIntrinsics::do_intrinsic() {
|
||||
break;
|
||||
|
||||
// Unsafe
|
||||
case vmIntrinsics::_compareAndSwapInt:
|
||||
do_Unsafe_compareAndSwapInt();
|
||||
case vmIntrinsics::_compareAndSetInt:
|
||||
do_Unsafe_compareAndSetInt();
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -241,7 +241,7 @@ void SharkIntrinsics::do_Thread_currentThread() {
|
||||
true));
|
||||
}
|
||||
|
||||
void SharkIntrinsics::do_Unsafe_compareAndSwapInt() {
|
||||
void SharkIntrinsics::do_Unsafe_compareAndSetInt() {
|
||||
// Pop the arguments
|
||||
Value *x = state()->pop()->jint_value();
|
||||
Value *e = state()->pop()->jint_value();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2009 Red Hat, Inc.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@@ -58,7 +58,7 @@ class SharkIntrinsics : public SharkTargetInvariants {
|
||||
void do_Object_getClass();
|
||||
void do_System_currentTimeMillis();
|
||||
void do_Thread_currentThread();
|
||||
void do_Unsafe_compareAndSwapInt();
|
||||
void do_Unsafe_compareAndSetInt();
|
||||
};
|
||||
|
||||
#endif // SHARE_VM_SHARK_SHARKINTRINSICS_HPP
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -1095,8 +1095,11 @@ inline intptr_t bitfield(intptr_t x, int start_bit_no, int field_length) {
|
||||
#undef min
|
||||
#endif
|
||||
|
||||
#define max(a,b) Do_not_use_max_use_MAX2_instead
|
||||
#define min(a,b) Do_not_use_min_use_MIN2_instead
|
||||
// The following defines serve the purpose of preventing use of accidentally
|
||||
// included min max macros from compiling, while continuing to allow innocent
|
||||
// min and max identifiers in the code to compile as intended.
|
||||
#define max max
|
||||
#define min min
|
||||
|
||||
// It is necessary to use templates here. Having normal overloaded
|
||||
// functions does not work because it is necessary to provide both 32-
|
||||
|
||||
106
hotspot/test/compiler/arraycopy/TestACSameSrcDst.java
Normal file
106
hotspot/test/compiler/arraycopy/TestACSameSrcDst.java
Normal file
@@ -0,0 +1,106 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Red Hat, Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 8179678
|
||||
* @summary ArrayCopy with same src and dst can cause incorrect execution or compiler crash
|
||||
*
|
||||
* @run main/othervm -XX:CompileCommand=compileonly,TestACSameSrcDst::test* TestACSameSrcDst
|
||||
*
|
||||
*/
|
||||
|
||||
public class TestACSameSrcDst {
|
||||
|
||||
static int test1(int[] src, int[] dst) {
|
||||
System.arraycopy(src, 5, dst, 0, 10);
|
||||
// this shouldn't be transformed to src[5] because the copy
|
||||
// can modify src[5] if src and dst are the same.
|
||||
return dst[0];
|
||||
}
|
||||
|
||||
static int test2(int[] src) {
|
||||
System.arraycopy(src, 0, src, 0, 10);
|
||||
// same source and destination. If load from destination is
|
||||
// transformed to load of source, the compiler performs that
|
||||
// optimization in an infinite loop.
|
||||
return src[0];
|
||||
}
|
||||
|
||||
static int test3() {
|
||||
int[] src = new int[15];
|
||||
src[5] = 0x42;
|
||||
System.arraycopy(src, 5, src, 0, 10);
|
||||
// That load can't bypass the arraycopy
|
||||
return src[0];
|
||||
}
|
||||
|
||||
static int test4() {
|
||||
int[] src = new int[15];
|
||||
System.arraycopy(src, 0, src, 5, 10);
|
||||
return src[0];
|
||||
}
|
||||
|
||||
// The dst[0] load can't bypass the arraycopy. After ArrayCopyNode
|
||||
// is expanded, C2 looks for a stub call on the control paths of
|
||||
// the array copy subgraph to decide whether the load's memory
|
||||
// input can bypass the arraycopy. This test verifies the case of
|
||||
// a source array that's not declared as an array.
|
||||
static int test5(Object src, int l, boolean flag) {
|
||||
int[] dst = new int[10];
|
||||
if (flag) {
|
||||
dst[0] = 0x42;
|
||||
System.arraycopy(src, 0, dst, 0, l);
|
||||
return dst[0];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
int[] array = new int[15];
|
||||
for (int i = 0; i < 20000; i++) {
|
||||
int res;
|
||||
for (int j = 0; j < array.length; j++) {
|
||||
array[j] = j;
|
||||
}
|
||||
int expected = array[5];
|
||||
res = test1(array, array);
|
||||
if (res != expected) {
|
||||
throw new RuntimeException("bad result: " + res + " != " + expected);
|
||||
}
|
||||
test2(array);
|
||||
res = test3();
|
||||
if (res != 0x42) {
|
||||
throw new RuntimeException("bad result: " + res + " != " + 0x42);
|
||||
}
|
||||
test4();
|
||||
for (int j = 0; j < array.length; j++) {
|
||||
array[j] = j;
|
||||
}
|
||||
res = test5(array, 10, (i%2) == 0);
|
||||
if (res != 0) {
|
||||
throw new RuntimeException("bad result: " + res + " != " + 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -773,221 +773,221 @@ public class TestIntUnsafeCAS {
|
||||
|
||||
static void test_ci(int[] a) {
|
||||
for (int i = 0; i < ARRLEN; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), -1, -123);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), -1, -123);
|
||||
}
|
||||
}
|
||||
static void test_vi(int[] a, int b, int old) {
|
||||
for (int i = 0; i < ARRLEN; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), old, b);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), old, b);
|
||||
}
|
||||
}
|
||||
static void test_cp(int[] a, int[] b) {
|
||||
for (int i = 0; i < ARRLEN; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), -123, b[i]);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), -123, b[i]);
|
||||
}
|
||||
}
|
||||
static void test_2ci(int[] a, int[] b) {
|
||||
for (int i = 0; i < ARRLEN; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), 123, -123);
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i), 123, -103);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), 123, -123);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i), 123, -103);
|
||||
}
|
||||
}
|
||||
static void test_2vi(int[] a, int[] b, int c, int d) {
|
||||
for (int i = 0; i < ARRLEN; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), -123, c);
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i), -103, d);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), -123, c);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i), -103, d);
|
||||
}
|
||||
}
|
||||
static void test_ci_neg(int[] a, int old) {
|
||||
for (int i = ARRLEN-1; i >= 0; i-=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), old, -123);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), old, -123);
|
||||
}
|
||||
}
|
||||
static void test_vi_neg(int[] a, int b, int old) {
|
||||
for (int i = ARRLEN-1; i >= 0; i-=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), old, b);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), old, b);
|
||||
}
|
||||
}
|
||||
static void test_cp_neg(int[] a, int[] b) {
|
||||
for (int i = ARRLEN-1; i >= 0; i-=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), -123, b[i]);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), -123, b[i]);
|
||||
}
|
||||
}
|
||||
static void test_2ci_neg(int[] a, int[] b) {
|
||||
for (int i = ARRLEN-1; i >= 0; i-=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), 123, -123);
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i), 123, -103);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), 123, -123);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i), 123, -103);
|
||||
}
|
||||
}
|
||||
static void test_2vi_neg(int[] a, int[] b, int c, int d) {
|
||||
for (int i = ARRLEN-1; i >= 0; i-=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), -123, c);
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i), -103, d);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), -123, c);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i), -103, d);
|
||||
}
|
||||
}
|
||||
static void test_ci_oppos(int[] a, int old) {
|
||||
int limit = ARRLEN-1;
|
||||
for (int i = 0; i < ARRLEN; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(limit-i), old, -123);
|
||||
unsafe.compareAndSetInt(a, byte_offset(limit-i), old, -123);
|
||||
}
|
||||
}
|
||||
static void test_vi_oppos(int[] a, int b, int old) {
|
||||
int limit = ARRLEN-1;
|
||||
for (int i = limit; i >= 0; i-=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(limit-i), old, b);
|
||||
unsafe.compareAndSetInt(a, byte_offset(limit-i), old, b);
|
||||
}
|
||||
}
|
||||
static void test_cp_oppos(int[] a, int[] b) {
|
||||
int limit = ARRLEN-1;
|
||||
for (int i = 0; i < ARRLEN; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), -123, b[limit-i]);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), -123, b[limit-i]);
|
||||
}
|
||||
}
|
||||
static void test_2ci_oppos(int[] a, int[] b) {
|
||||
int limit = ARRLEN-1;
|
||||
for (int i = 0; i < ARRLEN; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(limit-i), 123, -123);
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i), 123, -103);
|
||||
unsafe.compareAndSetInt(a, byte_offset(limit-i), 123, -123);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i), 123, -103);
|
||||
}
|
||||
}
|
||||
static void test_2vi_oppos(int[] a, int[] b, int c, int d) {
|
||||
int limit = ARRLEN-1;
|
||||
for (int i = limit; i >= 0; i-=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), -123, c);
|
||||
unsafe.compareAndSwapInt(b, byte_offset(limit-i), -103, d);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), -123, c);
|
||||
unsafe.compareAndSetInt(b, byte_offset(limit-i), -103, d);
|
||||
}
|
||||
}
|
||||
static void test_ci_off(int[] a, int old) {
|
||||
for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i+OFFSET), old, -123);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i+OFFSET), old, -123);
|
||||
}
|
||||
}
|
||||
static void test_vi_off(int[] a, int b, int old) {
|
||||
for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i+OFFSET), old, b);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i+OFFSET), old, b);
|
||||
}
|
||||
}
|
||||
static void test_cp_off(int[] a, int[] b) {
|
||||
for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i+OFFSET), -123, b[i+OFFSET]);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i+OFFSET), -123, b[i+OFFSET]);
|
||||
}
|
||||
}
|
||||
static void test_2ci_off(int[] a, int[] b) {
|
||||
for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i+OFFSET), 123, -123);
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i+OFFSET), 123, -103);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i+OFFSET), 123, -123);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i+OFFSET), 123, -103);
|
||||
}
|
||||
}
|
||||
static void test_2vi_off(int[] a, int[] b, int c, int d) {
|
||||
for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i+OFFSET), -123, c);
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i+OFFSET), -103, d);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i+OFFSET), -123, c);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i+OFFSET), -103, d);
|
||||
}
|
||||
}
|
||||
static void test_ci_inv(int[] a, int k, int old) {
|
||||
for (int i = 0; i < ARRLEN-k; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i+k), old, -123);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i+k), old, -123);
|
||||
}
|
||||
}
|
||||
static void test_vi_inv(int[] a, int b, int k, int old) {
|
||||
for (int i = 0; i < ARRLEN-k; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i+k), old, b);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i+k), old, b);
|
||||
}
|
||||
}
|
||||
static void test_cp_inv(int[] a, int[] b, int k) {
|
||||
for (int i = 0; i < ARRLEN-k; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i+k), -123, b[i+k]);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i+k), -123, b[i+k]);
|
||||
}
|
||||
}
|
||||
static void test_2ci_inv(int[] a, int[] b, int k) {
|
||||
for (int i = 0; i < ARRLEN-k; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i+k), 123, -123);
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i+k), 123, -103);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i+k), 123, -123);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i+k), 123, -103);
|
||||
}
|
||||
}
|
||||
static void test_2vi_inv(int[] a, int[] b, int c, int d, int k) {
|
||||
for (int i = 0; i < ARRLEN-k; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i+k), -123, c);
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i+k), -103, d);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i+k), -123, c);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i+k), -103, d);
|
||||
}
|
||||
}
|
||||
static void test_ci_scl(int[] a, int old) {
|
||||
for (int i = 0; i*SCALE < ARRLEN; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i*SCALE), old, -123);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i*SCALE), old, -123);
|
||||
}
|
||||
}
|
||||
static void test_vi_scl(int[] a, int b, int old) {
|
||||
for (int i = 0; i*SCALE < ARRLEN; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i*SCALE), old, b);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i*SCALE), old, b);
|
||||
}
|
||||
}
|
||||
static void test_cp_scl(int[] a, int[] b) {
|
||||
for (int i = 0; i*SCALE < ARRLEN; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i*SCALE), -123, b[i*SCALE]);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i*SCALE), -123, b[i*SCALE]);
|
||||
}
|
||||
}
|
||||
static void test_2ci_scl(int[] a, int[] b) {
|
||||
for (int i = 0; i*SCALE < ARRLEN; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i*SCALE), 123, -123);
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i*SCALE), 123, -103);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i*SCALE), 123, -123);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i*SCALE), 123, -103);
|
||||
}
|
||||
}
|
||||
static void test_2vi_scl(int[] a, int[] b, int c, int d) {
|
||||
for (int i = 0; i*SCALE < ARRLEN; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i*SCALE), -123, c);
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i*SCALE), -103, d);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i*SCALE), -123, c);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i*SCALE), -103, d);
|
||||
}
|
||||
}
|
||||
static void test_cp_alndst(int[] a, int[] b) {
|
||||
for (int i = 0; i < ARRLEN-ALIGN_OFF; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i+ALIGN_OFF), -1, b[i]);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i+ALIGN_OFF), -1, b[i]);
|
||||
}
|
||||
}
|
||||
static void test_cp_alnsrc(int[] a, int[] b) {
|
||||
for (int i = 0; i < ARRLEN-ALIGN_OFF; i+=1) {
|
||||
int old = unsafe.getIntVolatile(a, byte_offset(i));
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), old, b[i+ALIGN_OFF]);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), old, b[i+ALIGN_OFF]);
|
||||
}
|
||||
}
|
||||
static void test_2ci_aln(int[] a, int[] b) {
|
||||
for (int i = 0; i < ARRLEN-ALIGN_OFF; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i+ALIGN_OFF), -1, -123);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i+ALIGN_OFF), -1, -123);
|
||||
int old = unsafe.getIntVolatile(b, byte_offset(i));
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i), old, -103);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i), old, -103);
|
||||
}
|
||||
}
|
||||
static void test_2vi_aln(int[] a, int[] b, int c, int d) {
|
||||
for (int i = 0; i < ARRLEN-ALIGN_OFF; i+=1) {
|
||||
int old = unsafe.getIntVolatile(a, byte_offset(i));
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), old, c);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), old, c);
|
||||
old = unsafe.getIntVolatile(b, byte_offset(i+ALIGN_OFF));
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i+ALIGN_OFF), old, d);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i+ALIGN_OFF), old, d);
|
||||
}
|
||||
}
|
||||
static void test_cp_unalndst(int[] a, int[] b) {
|
||||
for (int i = 0; i < ARRLEN-UNALIGN_OFF; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i+UNALIGN_OFF), -1, b[i]);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i+UNALIGN_OFF), -1, b[i]);
|
||||
}
|
||||
}
|
||||
static void test_cp_unalnsrc(int[] a, int[] b) {
|
||||
for (int i = 0; i < ARRLEN-UNALIGN_OFF; i+=1) {
|
||||
int old = unsafe.getIntVolatile(a, byte_offset(i));
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), old, b[i+UNALIGN_OFF]);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), old, b[i+UNALIGN_OFF]);
|
||||
}
|
||||
}
|
||||
static void test_2ci_unaln(int[] a, int[] b) {
|
||||
for (int i = 0; i < ARRLEN-UNALIGN_OFF; i+=1) {
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i+UNALIGN_OFF), -1, -123);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i+UNALIGN_OFF), -1, -123);
|
||||
int old = unsafe.getIntVolatile(b, byte_offset(i));
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i), old, -103);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i), old, -103);
|
||||
}
|
||||
}
|
||||
static void test_2vi_unaln(int[] a, int[] b, int c, int d) {
|
||||
for (int i = 0; i < ARRLEN-UNALIGN_OFF; i+=1) {
|
||||
int old = unsafe.getIntVolatile(a, byte_offset(i));
|
||||
unsafe.compareAndSwapInt(a, byte_offset(i), old, c);
|
||||
unsafe.compareAndSetInt(a, byte_offset(i), old, c);
|
||||
old = unsafe.getIntVolatile(b, byte_offset(i+UNALIGN_OFF));
|
||||
unsafe.compareAndSwapInt(b, byte_offset(i+UNALIGN_OFF), old, d);
|
||||
unsafe.compareAndSetInt(b, byte_offset(i+UNALIGN_OFF), old, d);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016, Red Hat, Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@@ -53,7 +54,7 @@ public class TestCAEAntiDep {
|
||||
}
|
||||
|
||||
static int m(TestCAEAntiDep test, Object expected, Object x) {
|
||||
C old = (C)UNSAFE.compareAndExchangeObjectVolatile(test, O_OFFSET, expected, x);
|
||||
C old = (C)UNSAFE.compareAndExchangeObject(test, O_OFFSET, expected, x);
|
||||
int res = old.f1;
|
||||
old.f1 = 0x42;
|
||||
return res;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -72,9 +72,8 @@ public class UnsafeTwoCASLong {
|
||||
}
|
||||
|
||||
static void testAccess(Object base, long offset) {
|
||||
UNSAFE.compareAndSwapLong(base, offset, 1L, 2L);
|
||||
UNSAFE.compareAndSwapLong(base, offset, 2L, 1L);
|
||||
UNSAFE.compareAndSetLong(base, offset, 1L, 2L);
|
||||
UNSAFE.compareAndSetLong(base, offset, 2L, 1L);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ public class UnsafeAccess {
|
||||
static Object helperUnsafeLoadStore(Object o, boolean isObjArray) {
|
||||
if (isObjArray) {
|
||||
Object o1 = U.getObject(o, off);
|
||||
U.compareAndSwapObject(o, off, o1, new Object());
|
||||
U.compareAndSetObject(o, off, o1, new Object());
|
||||
}
|
||||
return o;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -151,32 +151,32 @@ public class JdkInternalMiscUnsafeAccessTestBoolean {
|
||||
|
||||
// Compare
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapBoolean(base, offset, true, false);
|
||||
assertEquals(r, true, "success compareAndSwap boolean");
|
||||
boolean r = UNSAFE.compareAndSetBoolean(base, offset, true, false);
|
||||
assertEquals(r, true, "success compareAndSet boolean");
|
||||
boolean x = UNSAFE.getBoolean(base, offset);
|
||||
assertEquals(x, false, "success compareAndSwap boolean value");
|
||||
assertEquals(x, false, "success compareAndSet boolean value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapBoolean(base, offset, true, false);
|
||||
assertEquals(r, false, "failing compareAndSwap boolean");
|
||||
boolean r = UNSAFE.compareAndSetBoolean(base, offset, true, false);
|
||||
assertEquals(r, false, "failing compareAndSet boolean");
|
||||
boolean x = UNSAFE.getBoolean(base, offset);
|
||||
assertEquals(x, false, "failing compareAndSwap boolean value");
|
||||
assertEquals(x, false, "failing compareAndSet boolean value");
|
||||
}
|
||||
|
||||
// Advanced compare
|
||||
{
|
||||
boolean r = UNSAFE.compareAndExchangeBooleanVolatile(base, offset, false, true);
|
||||
assertEquals(r, false, "success compareAndExchangeVolatile boolean");
|
||||
boolean r = UNSAFE.compareAndExchangeBoolean(base, offset, false, true);
|
||||
assertEquals(r, false, "success compareAndExchange boolean");
|
||||
boolean x = UNSAFE.getBoolean(base, offset);
|
||||
assertEquals(x, true, "success compareAndExchangeVolatile boolean value");
|
||||
assertEquals(x, true, "success compareAndExchange boolean value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean r = UNSAFE.compareAndExchangeBooleanVolatile(base, offset, false, false);
|
||||
assertEquals(r, true, "failing compareAndExchangeVolatile boolean");
|
||||
boolean r = UNSAFE.compareAndExchangeBoolean(base, offset, false, false);
|
||||
assertEquals(r, true, "failing compareAndExchange boolean");
|
||||
boolean x = UNSAFE.getBoolean(base, offset);
|
||||
assertEquals(x, true, "failing compareAndExchangeVolatile boolean value");
|
||||
assertEquals(x, true, "failing compareAndExchange boolean value");
|
||||
}
|
||||
|
||||
{
|
||||
@@ -210,41 +210,41 @@ public class JdkInternalMiscUnsafeAccessTestBoolean {
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapBoolean(base, offset, true, false);
|
||||
success = UNSAFE.weakCompareAndSetBooleanPlain(base, offset, true, false);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwap boolean");
|
||||
assertEquals(success, true, "weakCompareAndSetPlain boolean");
|
||||
boolean x = UNSAFE.getBoolean(base, offset);
|
||||
assertEquals(x, false, "weakCompareAndSwap boolean value");
|
||||
assertEquals(x, false, "weakCompareAndSetPlain boolean value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapBooleanAcquire(base, offset, false, true);
|
||||
success = UNSAFE.weakCompareAndSetBooleanAcquire(base, offset, false, true);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapAcquire boolean");
|
||||
assertEquals(success, true, "weakCompareAndSetAcquire boolean");
|
||||
boolean x = UNSAFE.getBoolean(base, offset);
|
||||
assertEquals(x, true, "weakCompareAndSwapAcquire boolean");
|
||||
assertEquals(x, true, "weakCompareAndSetAcquire boolean");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapBooleanRelease(base, offset, true, false);
|
||||
success = UNSAFE.weakCompareAndSetBooleanRelease(base, offset, true, false);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapRelease boolean");
|
||||
assertEquals(success, true, "weakCompareAndSetRelease boolean");
|
||||
boolean x = UNSAFE.getBoolean(base, offset);
|
||||
assertEquals(x, false, "weakCompareAndSwapRelease boolean");
|
||||
assertEquals(x, false, "weakCompareAndSetRelease boolean");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapBooleanVolatile(base, offset, false, true);
|
||||
success = UNSAFE.weakCompareAndSetBoolean(base, offset, false, true);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapVolatile boolean");
|
||||
assertEquals(success, true, "weakCompareAndSet boolean");
|
||||
boolean x = UNSAFE.getBoolean(base, offset);
|
||||
assertEquals(x, true, "weakCompareAndSwapVolatile boolean");
|
||||
assertEquals(x, true, "weakCompareAndSet boolean");
|
||||
}
|
||||
|
||||
UNSAFE.putBoolean(base, offset, false);
|
||||
@@ -260,4 +260,3 @@ public class JdkInternalMiscUnsafeAccessTestBoolean {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -180,32 +180,32 @@ public class JdkInternalMiscUnsafeAccessTestByte {
|
||||
|
||||
// Compare
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapByte(base, offset, (byte)0x01, (byte)0x23);
|
||||
assertEquals(r, true, "success compareAndSwap byte");
|
||||
boolean r = UNSAFE.compareAndSetByte(base, offset, (byte)0x01, (byte)0x23);
|
||||
assertEquals(r, true, "success compareAndSet byte");
|
||||
byte x = UNSAFE.getByte(base, offset);
|
||||
assertEquals(x, (byte)0x23, "success compareAndSwap byte value");
|
||||
assertEquals(x, (byte)0x23, "success compareAndSet byte value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapByte(base, offset, (byte)0x01, (byte)0x45);
|
||||
assertEquals(r, false, "failing compareAndSwap byte");
|
||||
boolean r = UNSAFE.compareAndSetByte(base, offset, (byte)0x01, (byte)0x45);
|
||||
assertEquals(r, false, "failing compareAndSet byte");
|
||||
byte x = UNSAFE.getByte(base, offset);
|
||||
assertEquals(x, (byte)0x23, "failing compareAndSwap byte value");
|
||||
assertEquals(x, (byte)0x23, "failing compareAndSet byte value");
|
||||
}
|
||||
|
||||
// Advanced compare
|
||||
{
|
||||
byte r = UNSAFE.compareAndExchangeByteVolatile(base, offset, (byte)0x23, (byte)0x01);
|
||||
assertEquals(r, (byte)0x23, "success compareAndExchangeVolatile byte");
|
||||
byte r = UNSAFE.compareAndExchangeByte(base, offset, (byte)0x23, (byte)0x01);
|
||||
assertEquals(r, (byte)0x23, "success compareAndExchange byte");
|
||||
byte x = UNSAFE.getByte(base, offset);
|
||||
assertEquals(x, (byte)0x01, "success compareAndExchangeVolatile byte value");
|
||||
assertEquals(x, (byte)0x01, "success compareAndExchange byte value");
|
||||
}
|
||||
|
||||
{
|
||||
byte r = UNSAFE.compareAndExchangeByteVolatile(base, offset, (byte)0x23, (byte)0x45);
|
||||
assertEquals(r, (byte)0x01, "failing compareAndExchangeVolatile byte");
|
||||
byte r = UNSAFE.compareAndExchangeByte(base, offset, (byte)0x23, (byte)0x45);
|
||||
assertEquals(r, (byte)0x01, "failing compareAndExchange byte");
|
||||
byte x = UNSAFE.getByte(base, offset);
|
||||
assertEquals(x, (byte)0x01, "failing compareAndExchangeVolatile byte value");
|
||||
assertEquals(x, (byte)0x01, "failing compareAndExchange byte value");
|
||||
}
|
||||
|
||||
{
|
||||
@@ -239,41 +239,41 @@ public class JdkInternalMiscUnsafeAccessTestByte {
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapByte(base, offset, (byte)0x01, (byte)0x23);
|
||||
success = UNSAFE.weakCompareAndSetBytePlain(base, offset, (byte)0x01, (byte)0x23);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwap byte");
|
||||
assertEquals(success, true, "weakCompareAndSetPlain byte");
|
||||
byte x = UNSAFE.getByte(base, offset);
|
||||
assertEquals(x, (byte)0x23, "weakCompareAndSwap byte value");
|
||||
assertEquals(x, (byte)0x23, "weakCompareAndSetPlain byte value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapByteAcquire(base, offset, (byte)0x23, (byte)0x01);
|
||||
success = UNSAFE.weakCompareAndSetByteAcquire(base, offset, (byte)0x23, (byte)0x01);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapAcquire byte");
|
||||
assertEquals(success, true, "weakCompareAndSetAcquire byte");
|
||||
byte x = UNSAFE.getByte(base, offset);
|
||||
assertEquals(x, (byte)0x01, "weakCompareAndSwapAcquire byte");
|
||||
assertEquals(x, (byte)0x01, "weakCompareAndSetAcquire byte");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapByteRelease(base, offset, (byte)0x01, (byte)0x23);
|
||||
success = UNSAFE.weakCompareAndSetByteRelease(base, offset, (byte)0x01, (byte)0x23);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapRelease byte");
|
||||
assertEquals(success, true, "weakCompareAndSetRelease byte");
|
||||
byte x = UNSAFE.getByte(base, offset);
|
||||
assertEquals(x, (byte)0x23, "weakCompareAndSwapRelease byte");
|
||||
assertEquals(x, (byte)0x23, "weakCompareAndSetRelease byte");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapByteVolatile(base, offset, (byte)0x23, (byte)0x01);
|
||||
success = UNSAFE.weakCompareAndSetByte(base, offset, (byte)0x23, (byte)0x01);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapVolatile byte");
|
||||
assertEquals(success, true, "weakCompareAndSet byte");
|
||||
byte x = UNSAFE.getByte(base, offset);
|
||||
assertEquals(x, (byte)0x01, "weakCompareAndSwapVolatile byte");
|
||||
assertEquals(x, (byte)0x01, "weakCompareAndSet byte");
|
||||
}
|
||||
|
||||
UNSAFE.putByte(base, offset, (byte)0x23);
|
||||
@@ -306,4 +306,3 @@ public class JdkInternalMiscUnsafeAccessTestByte {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -198,32 +198,32 @@ public class JdkInternalMiscUnsafeAccessTestChar {
|
||||
|
||||
// Compare
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapChar(base, offset, '\u0123', '\u4567');
|
||||
assertEquals(r, true, "success compareAndSwap char");
|
||||
boolean r = UNSAFE.compareAndSetChar(base, offset, '\u0123', '\u4567');
|
||||
assertEquals(r, true, "success compareAndSet char");
|
||||
char x = UNSAFE.getChar(base, offset);
|
||||
assertEquals(x, '\u4567', "success compareAndSwap char value");
|
||||
assertEquals(x, '\u4567', "success compareAndSet char value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapChar(base, offset, '\u0123', '\u89AB');
|
||||
assertEquals(r, false, "failing compareAndSwap char");
|
||||
boolean r = UNSAFE.compareAndSetChar(base, offset, '\u0123', '\u89AB');
|
||||
assertEquals(r, false, "failing compareAndSet char");
|
||||
char x = UNSAFE.getChar(base, offset);
|
||||
assertEquals(x, '\u4567', "failing compareAndSwap char value");
|
||||
assertEquals(x, '\u4567', "failing compareAndSet char value");
|
||||
}
|
||||
|
||||
// Advanced compare
|
||||
{
|
||||
char r = UNSAFE.compareAndExchangeCharVolatile(base, offset, '\u4567', '\u0123');
|
||||
assertEquals(r, '\u4567', "success compareAndExchangeVolatile char");
|
||||
char r = UNSAFE.compareAndExchangeChar(base, offset, '\u4567', '\u0123');
|
||||
assertEquals(r, '\u4567', "success compareAndExchange char");
|
||||
char x = UNSAFE.getChar(base, offset);
|
||||
assertEquals(x, '\u0123', "success compareAndExchangeVolatile char value");
|
||||
assertEquals(x, '\u0123', "success compareAndExchange char value");
|
||||
}
|
||||
|
||||
{
|
||||
char r = UNSAFE.compareAndExchangeCharVolatile(base, offset, '\u4567', '\u89AB');
|
||||
assertEquals(r, '\u0123', "failing compareAndExchangeVolatile char");
|
||||
char r = UNSAFE.compareAndExchangeChar(base, offset, '\u4567', '\u89AB');
|
||||
assertEquals(r, '\u0123', "failing compareAndExchange char");
|
||||
char x = UNSAFE.getChar(base, offset);
|
||||
assertEquals(x, '\u0123', "failing compareAndExchangeVolatile char value");
|
||||
assertEquals(x, '\u0123', "failing compareAndExchange char value");
|
||||
}
|
||||
|
||||
{
|
||||
@@ -257,41 +257,41 @@ public class JdkInternalMiscUnsafeAccessTestChar {
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapChar(base, offset, '\u0123', '\u4567');
|
||||
success = UNSAFE.weakCompareAndSetCharPlain(base, offset, '\u0123', '\u4567');
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwap char");
|
||||
assertEquals(success, true, "weakCompareAndSetPlain char");
|
||||
char x = UNSAFE.getChar(base, offset);
|
||||
assertEquals(x, '\u4567', "weakCompareAndSwap char value");
|
||||
assertEquals(x, '\u4567', "weakCompareAndSetPlain char value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapCharAcquire(base, offset, '\u4567', '\u0123');
|
||||
success = UNSAFE.weakCompareAndSetCharAcquire(base, offset, '\u4567', '\u0123');
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapAcquire char");
|
||||
assertEquals(success, true, "weakCompareAndSetAcquire char");
|
||||
char x = UNSAFE.getChar(base, offset);
|
||||
assertEquals(x, '\u0123', "weakCompareAndSwapAcquire char");
|
||||
assertEquals(x, '\u0123', "weakCompareAndSetAcquire char");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapCharRelease(base, offset, '\u0123', '\u4567');
|
||||
success = UNSAFE.weakCompareAndSetCharRelease(base, offset, '\u0123', '\u4567');
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapRelease char");
|
||||
assertEquals(success, true, "weakCompareAndSetRelease char");
|
||||
char x = UNSAFE.getChar(base, offset);
|
||||
assertEquals(x, '\u4567', "weakCompareAndSwapRelease char");
|
||||
assertEquals(x, '\u4567', "weakCompareAndSetRelease char");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapCharVolatile(base, offset, '\u4567', '\u0123');
|
||||
success = UNSAFE.weakCompareAndSetChar(base, offset, '\u4567', '\u0123');
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapVolatile char");
|
||||
assertEquals(success, true, "weakCompareAndSet char");
|
||||
char x = UNSAFE.getChar(base, offset);
|
||||
assertEquals(x, '\u0123', "weakCompareAndSwapVolatile char");
|
||||
assertEquals(x, '\u0123', "weakCompareAndSet char");
|
||||
}
|
||||
|
||||
UNSAFE.putChar(base, offset, '\u4567');
|
||||
@@ -324,4 +324,3 @@ public class JdkInternalMiscUnsafeAccessTestChar {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -180,32 +180,32 @@ public class JdkInternalMiscUnsafeAccessTestDouble {
|
||||
|
||||
// Compare
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapDouble(base, offset, 1.0d, 2.0d);
|
||||
assertEquals(r, true, "success compareAndSwap double");
|
||||
boolean r = UNSAFE.compareAndSetDouble(base, offset, 1.0d, 2.0d);
|
||||
assertEquals(r, true, "success compareAndSet double");
|
||||
double x = UNSAFE.getDouble(base, offset);
|
||||
assertEquals(x, 2.0d, "success compareAndSwap double value");
|
||||
assertEquals(x, 2.0d, "success compareAndSet double value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapDouble(base, offset, 1.0d, 3.0d);
|
||||
assertEquals(r, false, "failing compareAndSwap double");
|
||||
boolean r = UNSAFE.compareAndSetDouble(base, offset, 1.0d, 3.0d);
|
||||
assertEquals(r, false, "failing compareAndSet double");
|
||||
double x = UNSAFE.getDouble(base, offset);
|
||||
assertEquals(x, 2.0d, "failing compareAndSwap double value");
|
||||
assertEquals(x, 2.0d, "failing compareAndSet double value");
|
||||
}
|
||||
|
||||
// Advanced compare
|
||||
{
|
||||
double r = UNSAFE.compareAndExchangeDoubleVolatile(base, offset, 2.0d, 1.0d);
|
||||
assertEquals(r, 2.0d, "success compareAndExchangeVolatile double");
|
||||
double r = UNSAFE.compareAndExchangeDouble(base, offset, 2.0d, 1.0d);
|
||||
assertEquals(r, 2.0d, "success compareAndExchange double");
|
||||
double x = UNSAFE.getDouble(base, offset);
|
||||
assertEquals(x, 1.0d, "success compareAndExchangeVolatile double value");
|
||||
assertEquals(x, 1.0d, "success compareAndExchange double value");
|
||||
}
|
||||
|
||||
{
|
||||
double r = UNSAFE.compareAndExchangeDoubleVolatile(base, offset, 2.0d, 3.0d);
|
||||
assertEquals(r, 1.0d, "failing compareAndExchangeVolatile double");
|
||||
double r = UNSAFE.compareAndExchangeDouble(base, offset, 2.0d, 3.0d);
|
||||
assertEquals(r, 1.0d, "failing compareAndExchange double");
|
||||
double x = UNSAFE.getDouble(base, offset);
|
||||
assertEquals(x, 1.0d, "failing compareAndExchangeVolatile double value");
|
||||
assertEquals(x, 1.0d, "failing compareAndExchange double value");
|
||||
}
|
||||
|
||||
{
|
||||
@@ -239,41 +239,41 @@ public class JdkInternalMiscUnsafeAccessTestDouble {
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapDouble(base, offset, 1.0d, 2.0d);
|
||||
success = UNSAFE.weakCompareAndSetDoublePlain(base, offset, 1.0d, 2.0d);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwap double");
|
||||
assertEquals(success, true, "weakCompareAndSetPlain double");
|
||||
double x = UNSAFE.getDouble(base, offset);
|
||||
assertEquals(x, 2.0d, "weakCompareAndSwap double value");
|
||||
assertEquals(x, 2.0d, "weakCompareAndSetPlain double value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapDoubleAcquire(base, offset, 2.0d, 1.0d);
|
||||
success = UNSAFE.weakCompareAndSetDoubleAcquire(base, offset, 2.0d, 1.0d);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapAcquire double");
|
||||
assertEquals(success, true, "weakCompareAndSetAcquire double");
|
||||
double x = UNSAFE.getDouble(base, offset);
|
||||
assertEquals(x, 1.0d, "weakCompareAndSwapAcquire double");
|
||||
assertEquals(x, 1.0d, "weakCompareAndSetAcquire double");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapDoubleRelease(base, offset, 1.0d, 2.0d);
|
||||
success = UNSAFE.weakCompareAndSetDoubleRelease(base, offset, 1.0d, 2.0d);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapRelease double");
|
||||
assertEquals(success, true, "weakCompareAndSetRelease double");
|
||||
double x = UNSAFE.getDouble(base, offset);
|
||||
assertEquals(x, 2.0d, "weakCompareAndSwapRelease double");
|
||||
assertEquals(x, 2.0d, "weakCompareAndSetRelease double");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapDoubleVolatile(base, offset, 2.0d, 1.0d);
|
||||
success = UNSAFE.weakCompareAndSetDouble(base, offset, 2.0d, 1.0d);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapVolatile double");
|
||||
assertEquals(success, true, "weakCompareAndSet double");
|
||||
double x = UNSAFE.getDouble(base, offset);
|
||||
assertEquals(x, 1.0d, "weakCompareAndSwapVolatile double");
|
||||
assertEquals(x, 1.0d, "weakCompareAndSet double");
|
||||
}
|
||||
|
||||
UNSAFE.putDouble(base, offset, 2.0d);
|
||||
@@ -306,4 +306,3 @@ public class JdkInternalMiscUnsafeAccessTestDouble {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -180,32 +180,32 @@ public class JdkInternalMiscUnsafeAccessTestFloat {
|
||||
|
||||
// Compare
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapFloat(base, offset, 1.0f, 2.0f);
|
||||
assertEquals(r, true, "success compareAndSwap float");
|
||||
boolean r = UNSAFE.compareAndSetFloat(base, offset, 1.0f, 2.0f);
|
||||
assertEquals(r, true, "success compareAndSet float");
|
||||
float x = UNSAFE.getFloat(base, offset);
|
||||
assertEquals(x, 2.0f, "success compareAndSwap float value");
|
||||
assertEquals(x, 2.0f, "success compareAndSet float value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapFloat(base, offset, 1.0f, 3.0f);
|
||||
assertEquals(r, false, "failing compareAndSwap float");
|
||||
boolean r = UNSAFE.compareAndSetFloat(base, offset, 1.0f, 3.0f);
|
||||
assertEquals(r, false, "failing compareAndSet float");
|
||||
float x = UNSAFE.getFloat(base, offset);
|
||||
assertEquals(x, 2.0f, "failing compareAndSwap float value");
|
||||
assertEquals(x, 2.0f, "failing compareAndSet float value");
|
||||
}
|
||||
|
||||
// Advanced compare
|
||||
{
|
||||
float r = UNSAFE.compareAndExchangeFloatVolatile(base, offset, 2.0f, 1.0f);
|
||||
assertEquals(r, 2.0f, "success compareAndExchangeVolatile float");
|
||||
float r = UNSAFE.compareAndExchangeFloat(base, offset, 2.0f, 1.0f);
|
||||
assertEquals(r, 2.0f, "success compareAndExchange float");
|
||||
float x = UNSAFE.getFloat(base, offset);
|
||||
assertEquals(x, 1.0f, "success compareAndExchangeVolatile float value");
|
||||
assertEquals(x, 1.0f, "success compareAndExchange float value");
|
||||
}
|
||||
|
||||
{
|
||||
float r = UNSAFE.compareAndExchangeFloatVolatile(base, offset, 2.0f, 3.0f);
|
||||
assertEquals(r, 1.0f, "failing compareAndExchangeVolatile float");
|
||||
float r = UNSAFE.compareAndExchangeFloat(base, offset, 2.0f, 3.0f);
|
||||
assertEquals(r, 1.0f, "failing compareAndExchange float");
|
||||
float x = UNSAFE.getFloat(base, offset);
|
||||
assertEquals(x, 1.0f, "failing compareAndExchangeVolatile float value");
|
||||
assertEquals(x, 1.0f, "failing compareAndExchange float value");
|
||||
}
|
||||
|
||||
{
|
||||
@@ -239,41 +239,41 @@ public class JdkInternalMiscUnsafeAccessTestFloat {
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapFloat(base, offset, 1.0f, 2.0f);
|
||||
success = UNSAFE.weakCompareAndSetFloatPlain(base, offset, 1.0f, 2.0f);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwap float");
|
||||
assertEquals(success, true, "weakCompareAndSetPlain float");
|
||||
float x = UNSAFE.getFloat(base, offset);
|
||||
assertEquals(x, 2.0f, "weakCompareAndSwap float value");
|
||||
assertEquals(x, 2.0f, "weakCompareAndSetPlain float value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapFloatAcquire(base, offset, 2.0f, 1.0f);
|
||||
success = UNSAFE.weakCompareAndSetFloatAcquire(base, offset, 2.0f, 1.0f);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapAcquire float");
|
||||
assertEquals(success, true, "weakCompareAndSetAcquire float");
|
||||
float x = UNSAFE.getFloat(base, offset);
|
||||
assertEquals(x, 1.0f, "weakCompareAndSwapAcquire float");
|
||||
assertEquals(x, 1.0f, "weakCompareAndSetAcquire float");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapFloatRelease(base, offset, 1.0f, 2.0f);
|
||||
success = UNSAFE.weakCompareAndSetFloatRelease(base, offset, 1.0f, 2.0f);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapRelease float");
|
||||
assertEquals(success, true, "weakCompareAndSetRelease float");
|
||||
float x = UNSAFE.getFloat(base, offset);
|
||||
assertEquals(x, 2.0f, "weakCompareAndSwapRelease float");
|
||||
assertEquals(x, 2.0f, "weakCompareAndSetRelease float");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapFloatVolatile(base, offset, 2.0f, 1.0f);
|
||||
success = UNSAFE.weakCompareAndSetFloat(base, offset, 2.0f, 1.0f);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapVolatile float");
|
||||
assertEquals(success, true, "weakCompareAndSet float");
|
||||
float x = UNSAFE.getFloat(base, offset);
|
||||
assertEquals(x, 1.0f, "weakCompareAndSwapVolatile float");
|
||||
assertEquals(x, 1.0f, "weakCompareAndSet float");
|
||||
}
|
||||
|
||||
UNSAFE.putFloat(base, offset, 2.0f);
|
||||
@@ -306,4 +306,3 @@ public class JdkInternalMiscUnsafeAccessTestFloat {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -198,32 +198,32 @@ public class JdkInternalMiscUnsafeAccessTestInt {
|
||||
|
||||
// Compare
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapInt(base, offset, 0x01234567, 0x89ABCDEF);
|
||||
assertEquals(r, true, "success compareAndSwap int");
|
||||
boolean r = UNSAFE.compareAndSetInt(base, offset, 0x01234567, 0x89ABCDEF);
|
||||
assertEquals(r, true, "success compareAndSet int");
|
||||
int x = UNSAFE.getInt(base, offset);
|
||||
assertEquals(x, 0x89ABCDEF, "success compareAndSwap int value");
|
||||
assertEquals(x, 0x89ABCDEF, "success compareAndSet int value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapInt(base, offset, 0x01234567, 0xCAFEBABE);
|
||||
assertEquals(r, false, "failing compareAndSwap int");
|
||||
boolean r = UNSAFE.compareAndSetInt(base, offset, 0x01234567, 0xCAFEBABE);
|
||||
assertEquals(r, false, "failing compareAndSet int");
|
||||
int x = UNSAFE.getInt(base, offset);
|
||||
assertEquals(x, 0x89ABCDEF, "failing compareAndSwap int value");
|
||||
assertEquals(x, 0x89ABCDEF, "failing compareAndSet int value");
|
||||
}
|
||||
|
||||
// Advanced compare
|
||||
{
|
||||
int r = UNSAFE.compareAndExchangeIntVolatile(base, offset, 0x89ABCDEF, 0x01234567);
|
||||
assertEquals(r, 0x89ABCDEF, "success compareAndExchangeVolatile int");
|
||||
int r = UNSAFE.compareAndExchangeInt(base, offset, 0x89ABCDEF, 0x01234567);
|
||||
assertEquals(r, 0x89ABCDEF, "success compareAndExchange int");
|
||||
int x = UNSAFE.getInt(base, offset);
|
||||
assertEquals(x, 0x01234567, "success compareAndExchangeVolatile int value");
|
||||
assertEquals(x, 0x01234567, "success compareAndExchange int value");
|
||||
}
|
||||
|
||||
{
|
||||
int r = UNSAFE.compareAndExchangeIntVolatile(base, offset, 0x89ABCDEF, 0xCAFEBABE);
|
||||
assertEquals(r, 0x01234567, "failing compareAndExchangeVolatile int");
|
||||
int r = UNSAFE.compareAndExchangeInt(base, offset, 0x89ABCDEF, 0xCAFEBABE);
|
||||
assertEquals(r, 0x01234567, "failing compareAndExchange int");
|
||||
int x = UNSAFE.getInt(base, offset);
|
||||
assertEquals(x, 0x01234567, "failing compareAndExchangeVolatile int value");
|
||||
assertEquals(x, 0x01234567, "failing compareAndExchange int value");
|
||||
}
|
||||
|
||||
{
|
||||
@@ -257,41 +257,41 @@ public class JdkInternalMiscUnsafeAccessTestInt {
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapInt(base, offset, 0x01234567, 0x89ABCDEF);
|
||||
success = UNSAFE.weakCompareAndSetIntPlain(base, offset, 0x01234567, 0x89ABCDEF);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwap int");
|
||||
assertEquals(success, true, "weakCompareAndSetPlain int");
|
||||
int x = UNSAFE.getInt(base, offset);
|
||||
assertEquals(x, 0x89ABCDEF, "weakCompareAndSwap int value");
|
||||
assertEquals(x, 0x89ABCDEF, "weakCompareAndSetPlain int value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapIntAcquire(base, offset, 0x89ABCDEF, 0x01234567);
|
||||
success = UNSAFE.weakCompareAndSetIntAcquire(base, offset, 0x89ABCDEF, 0x01234567);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapAcquire int");
|
||||
assertEquals(success, true, "weakCompareAndSetAcquire int");
|
||||
int x = UNSAFE.getInt(base, offset);
|
||||
assertEquals(x, 0x01234567, "weakCompareAndSwapAcquire int");
|
||||
assertEquals(x, 0x01234567, "weakCompareAndSetAcquire int");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapIntRelease(base, offset, 0x01234567, 0x89ABCDEF);
|
||||
success = UNSAFE.weakCompareAndSetIntRelease(base, offset, 0x01234567, 0x89ABCDEF);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapRelease int");
|
||||
assertEquals(success, true, "weakCompareAndSetRelease int");
|
||||
int x = UNSAFE.getInt(base, offset);
|
||||
assertEquals(x, 0x89ABCDEF, "weakCompareAndSwapRelease int");
|
||||
assertEquals(x, 0x89ABCDEF, "weakCompareAndSetRelease int");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapIntVolatile(base, offset, 0x89ABCDEF, 0x01234567);
|
||||
success = UNSAFE.weakCompareAndSetInt(base, offset, 0x89ABCDEF, 0x01234567);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapVolatile int");
|
||||
assertEquals(success, true, "weakCompareAndSet int");
|
||||
int x = UNSAFE.getInt(base, offset);
|
||||
assertEquals(x, 0x01234567, "weakCompareAndSwapVolatile int");
|
||||
assertEquals(x, 0x01234567, "weakCompareAndSet int");
|
||||
}
|
||||
|
||||
UNSAFE.putInt(base, offset, 0x89ABCDEF);
|
||||
@@ -324,4 +324,3 @@ public class JdkInternalMiscUnsafeAccessTestInt {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -198,32 +198,32 @@ public class JdkInternalMiscUnsafeAccessTestLong {
|
||||
|
||||
// Compare
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapLong(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
|
||||
assertEquals(r, true, "success compareAndSwap long");
|
||||
boolean r = UNSAFE.compareAndSetLong(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
|
||||
assertEquals(r, true, "success compareAndSet long");
|
||||
long x = UNSAFE.getLong(base, offset);
|
||||
assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndSwap long value");
|
||||
assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndSet long value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapLong(base, offset, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
|
||||
assertEquals(r, false, "failing compareAndSwap long");
|
||||
boolean r = UNSAFE.compareAndSetLong(base, offset, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
|
||||
assertEquals(r, false, "failing compareAndSet long");
|
||||
long x = UNSAFE.getLong(base, offset);
|
||||
assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndSwap long value");
|
||||
assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndSet long value");
|
||||
}
|
||||
|
||||
// Advanced compare
|
||||
{
|
||||
long r = UNSAFE.compareAndExchangeLongVolatile(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
|
||||
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchangeVolatile long");
|
||||
long r = UNSAFE.compareAndExchangeLong(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
|
||||
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchange long");
|
||||
long x = UNSAFE.getLong(base, offset);
|
||||
assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchangeVolatile long value");
|
||||
assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchange long value");
|
||||
}
|
||||
|
||||
{
|
||||
long r = UNSAFE.compareAndExchangeLongVolatile(base, offset, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
|
||||
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchangeVolatile long");
|
||||
long r = UNSAFE.compareAndExchangeLong(base, offset, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
|
||||
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchange long");
|
||||
long x = UNSAFE.getLong(base, offset);
|
||||
assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchangeVolatile long value");
|
||||
assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchange long value");
|
||||
}
|
||||
|
||||
{
|
||||
@@ -257,41 +257,41 @@ public class JdkInternalMiscUnsafeAccessTestLong {
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapLong(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
|
||||
success = UNSAFE.weakCompareAndSetLongPlain(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwap long");
|
||||
assertEquals(success, true, "weakCompareAndSetPlain long");
|
||||
long x = UNSAFE.getLong(base, offset);
|
||||
assertEquals(x, 0xCAFEBABECAFEBABEL, "weakCompareAndSwap long value");
|
||||
assertEquals(x, 0xCAFEBABECAFEBABEL, "weakCompareAndSetPlain long value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapLongAcquire(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
|
||||
success = UNSAFE.weakCompareAndSetLongAcquire(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapAcquire long");
|
||||
assertEquals(success, true, "weakCompareAndSetAcquire long");
|
||||
long x = UNSAFE.getLong(base, offset);
|
||||
assertEquals(x, 0x0123456789ABCDEFL, "weakCompareAndSwapAcquire long");
|
||||
assertEquals(x, 0x0123456789ABCDEFL, "weakCompareAndSetAcquire long");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapLongRelease(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
|
||||
success = UNSAFE.weakCompareAndSetLongRelease(base, offset, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapRelease long");
|
||||
assertEquals(success, true, "weakCompareAndSetRelease long");
|
||||
long x = UNSAFE.getLong(base, offset);
|
||||
assertEquals(x, 0xCAFEBABECAFEBABEL, "weakCompareAndSwapRelease long");
|
||||
assertEquals(x, 0xCAFEBABECAFEBABEL, "weakCompareAndSetRelease long");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapLongVolatile(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
|
||||
success = UNSAFE.weakCompareAndSetLong(base, offset, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapVolatile long");
|
||||
assertEquals(success, true, "weakCompareAndSet long");
|
||||
long x = UNSAFE.getLong(base, offset);
|
||||
assertEquals(x, 0x0123456789ABCDEFL, "weakCompareAndSwapVolatile long");
|
||||
assertEquals(x, 0x0123456789ABCDEFL, "weakCompareAndSet long");
|
||||
}
|
||||
|
||||
UNSAFE.putLong(base, offset, 0xCAFEBABECAFEBABEL);
|
||||
@@ -324,4 +324,3 @@ public class JdkInternalMiscUnsafeAccessTestLong {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -151,32 +151,32 @@ public class JdkInternalMiscUnsafeAccessTestObject {
|
||||
|
||||
// Compare
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapObject(base, offset, "foo", "bar");
|
||||
assertEquals(r, true, "success compareAndSwap Object");
|
||||
boolean r = UNSAFE.compareAndSetObject(base, offset, "foo", "bar");
|
||||
assertEquals(r, true, "success compareAndSet Object");
|
||||
Object x = UNSAFE.getObject(base, offset);
|
||||
assertEquals(x, "bar", "success compareAndSwap Object value");
|
||||
assertEquals(x, "bar", "success compareAndSet Object value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapObject(base, offset, "foo", "baz");
|
||||
assertEquals(r, false, "failing compareAndSwap Object");
|
||||
boolean r = UNSAFE.compareAndSetObject(base, offset, "foo", "baz");
|
||||
assertEquals(r, false, "failing compareAndSet Object");
|
||||
Object x = UNSAFE.getObject(base, offset);
|
||||
assertEquals(x, "bar", "failing compareAndSwap Object value");
|
||||
assertEquals(x, "bar", "failing compareAndSet Object value");
|
||||
}
|
||||
|
||||
// Advanced compare
|
||||
{
|
||||
Object r = UNSAFE.compareAndExchangeObjectVolatile(base, offset, "bar", "foo");
|
||||
assertEquals(r, "bar", "success compareAndExchangeVolatile Object");
|
||||
Object r = UNSAFE.compareAndExchangeObject(base, offset, "bar", "foo");
|
||||
assertEquals(r, "bar", "success compareAndExchange Object");
|
||||
Object x = UNSAFE.getObject(base, offset);
|
||||
assertEquals(x, "foo", "success compareAndExchangeVolatile Object value");
|
||||
assertEquals(x, "foo", "success compareAndExchange Object value");
|
||||
}
|
||||
|
||||
{
|
||||
Object r = UNSAFE.compareAndExchangeObjectVolatile(base, offset, "bar", "baz");
|
||||
assertEquals(r, "foo", "failing compareAndExchangeVolatile Object");
|
||||
Object r = UNSAFE.compareAndExchangeObject(base, offset, "bar", "baz");
|
||||
assertEquals(r, "foo", "failing compareAndExchange Object");
|
||||
Object x = UNSAFE.getObject(base, offset);
|
||||
assertEquals(x, "foo", "failing compareAndExchangeVolatile Object value");
|
||||
assertEquals(x, "foo", "failing compareAndExchange Object value");
|
||||
}
|
||||
|
||||
{
|
||||
@@ -210,41 +210,41 @@ public class JdkInternalMiscUnsafeAccessTestObject {
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapObject(base, offset, "foo", "bar");
|
||||
success = UNSAFE.weakCompareAndSetObjectPlain(base, offset, "foo", "bar");
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwap Object");
|
||||
assertEquals(success, true, "weakCompareAndSetPlain Object");
|
||||
Object x = UNSAFE.getObject(base, offset);
|
||||
assertEquals(x, "bar", "weakCompareAndSwap Object value");
|
||||
assertEquals(x, "bar", "weakCompareAndSetPlain Object value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapObjectAcquire(base, offset, "bar", "foo");
|
||||
success = UNSAFE.weakCompareAndSetObjectAcquire(base, offset, "bar", "foo");
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapAcquire Object");
|
||||
assertEquals(success, true, "weakCompareAndSetAcquire Object");
|
||||
Object x = UNSAFE.getObject(base, offset);
|
||||
assertEquals(x, "foo", "weakCompareAndSwapAcquire Object");
|
||||
assertEquals(x, "foo", "weakCompareAndSetAcquire Object");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapObjectRelease(base, offset, "foo", "bar");
|
||||
success = UNSAFE.weakCompareAndSetObjectRelease(base, offset, "foo", "bar");
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapRelease Object");
|
||||
assertEquals(success, true, "weakCompareAndSetRelease Object");
|
||||
Object x = UNSAFE.getObject(base, offset);
|
||||
assertEquals(x, "bar", "weakCompareAndSwapRelease Object");
|
||||
assertEquals(x, "bar", "weakCompareAndSetRelease Object");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapObjectVolatile(base, offset, "bar", "foo");
|
||||
success = UNSAFE.weakCompareAndSetObject(base, offset, "bar", "foo");
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapVolatile Object");
|
||||
assertEquals(success, true, "weakCompareAndSet Object");
|
||||
Object x = UNSAFE.getObject(base, offset);
|
||||
assertEquals(x, "foo", "weakCompareAndSwapVolatile Object");
|
||||
assertEquals(x, "foo", "weakCompareAndSet Object");
|
||||
}
|
||||
|
||||
UNSAFE.putObject(base, offset, "bar");
|
||||
@@ -260,4 +260,3 @@ public class JdkInternalMiscUnsafeAccessTestObject {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -198,32 +198,32 @@ public class JdkInternalMiscUnsafeAccessTestShort {
|
||||
|
||||
// Compare
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapShort(base, offset, (short)0x0123, (short)0x4567);
|
||||
assertEquals(r, true, "success compareAndSwap short");
|
||||
boolean r = UNSAFE.compareAndSetShort(base, offset, (short)0x0123, (short)0x4567);
|
||||
assertEquals(r, true, "success compareAndSet short");
|
||||
short x = UNSAFE.getShort(base, offset);
|
||||
assertEquals(x, (short)0x4567, "success compareAndSwap short value");
|
||||
assertEquals(x, (short)0x4567, "success compareAndSet short value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean r = UNSAFE.compareAndSwapShort(base, offset, (short)0x0123, (short)0x89AB);
|
||||
assertEquals(r, false, "failing compareAndSwap short");
|
||||
boolean r = UNSAFE.compareAndSetShort(base, offset, (short)0x0123, (short)0x89AB);
|
||||
assertEquals(r, false, "failing compareAndSet short");
|
||||
short x = UNSAFE.getShort(base, offset);
|
||||
assertEquals(x, (short)0x4567, "failing compareAndSwap short value");
|
||||
assertEquals(x, (short)0x4567, "failing compareAndSet short value");
|
||||
}
|
||||
|
||||
// Advanced compare
|
||||
{
|
||||
short r = UNSAFE.compareAndExchangeShortVolatile(base, offset, (short)0x4567, (short)0x0123);
|
||||
assertEquals(r, (short)0x4567, "success compareAndExchangeVolatile short");
|
||||
short r = UNSAFE.compareAndExchangeShort(base, offset, (short)0x4567, (short)0x0123);
|
||||
assertEquals(r, (short)0x4567, "success compareAndExchange short");
|
||||
short x = UNSAFE.getShort(base, offset);
|
||||
assertEquals(x, (short)0x0123, "success compareAndExchangeVolatile short value");
|
||||
assertEquals(x, (short)0x0123, "success compareAndExchange short value");
|
||||
}
|
||||
|
||||
{
|
||||
short r = UNSAFE.compareAndExchangeShortVolatile(base, offset, (short)0x4567, (short)0x89AB);
|
||||
assertEquals(r, (short)0x0123, "failing compareAndExchangeVolatile short");
|
||||
short r = UNSAFE.compareAndExchangeShort(base, offset, (short)0x4567, (short)0x89AB);
|
||||
assertEquals(r, (short)0x0123, "failing compareAndExchange short");
|
||||
short x = UNSAFE.getShort(base, offset);
|
||||
assertEquals(x, (short)0x0123, "failing compareAndExchangeVolatile short value");
|
||||
assertEquals(x, (short)0x0123, "failing compareAndExchange short value");
|
||||
}
|
||||
|
||||
{
|
||||
@@ -257,41 +257,41 @@ public class JdkInternalMiscUnsafeAccessTestShort {
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapShort(base, offset, (short)0x0123, (short)0x4567);
|
||||
success = UNSAFE.weakCompareAndSetShortPlain(base, offset, (short)0x0123, (short)0x4567);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwap short");
|
||||
assertEquals(success, true, "weakCompareAndSetPlain short");
|
||||
short x = UNSAFE.getShort(base, offset);
|
||||
assertEquals(x, (short)0x4567, "weakCompareAndSwap short value");
|
||||
assertEquals(x, (short)0x4567, "weakCompareAndSetPlain short value");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapShortAcquire(base, offset, (short)0x4567, (short)0x0123);
|
||||
success = UNSAFE.weakCompareAndSetShortAcquire(base, offset, (short)0x4567, (short)0x0123);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapAcquire short");
|
||||
assertEquals(success, true, "weakCompareAndSetAcquire short");
|
||||
short x = UNSAFE.getShort(base, offset);
|
||||
assertEquals(x, (short)0x0123, "weakCompareAndSwapAcquire short");
|
||||
assertEquals(x, (short)0x0123, "weakCompareAndSetAcquire short");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapShortRelease(base, offset, (short)0x0123, (short)0x4567);
|
||||
success = UNSAFE.weakCompareAndSetShortRelease(base, offset, (short)0x0123, (short)0x4567);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapRelease short");
|
||||
assertEquals(success, true, "weakCompareAndSetRelease short");
|
||||
short x = UNSAFE.getShort(base, offset);
|
||||
assertEquals(x, (short)0x4567, "weakCompareAndSwapRelease short");
|
||||
assertEquals(x, (short)0x4567, "weakCompareAndSetRelease short");
|
||||
}
|
||||
|
||||
{
|
||||
boolean success = false;
|
||||
for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
|
||||
success = UNSAFE.weakCompareAndSwapShortVolatile(base, offset, (short)0x4567, (short)0x0123);
|
||||
success = UNSAFE.weakCompareAndSetShort(base, offset, (short)0x4567, (short)0x0123);
|
||||
}
|
||||
assertEquals(success, true, "weakCompareAndSwapVolatile short");
|
||||
assertEquals(success, true, "weakCompareAndSet short");
|
||||
short x = UNSAFE.getShort(base, offset);
|
||||
assertEquals(x, (short)0x0123, "weakCompareAndSwapVolatile short");
|
||||
assertEquals(x, (short)0x0123, "weakCompareAndSet short");
|
||||
}
|
||||
|
||||
UNSAFE.putShort(base, offset, (short)0x4567);
|
||||
@@ -324,4 +324,3 @@ public class JdkInternalMiscUnsafeAccessTestShort {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -138,4 +138,3 @@ public class SunMiscUnsafeAccessTestBoolean {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -175,4 +175,3 @@ public class SunMiscUnsafeAccessTestByte {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user