mirror of
https://github.com/openjdk/jdk.git
synced 2026-05-23 20:07:58 +00:00
Merge
This commit is contained in:
commit
95fcb61b0b
2
.hgtags
2
.hgtags
@ -368,3 +368,5 @@ caf97b37ebec84288c112d21d3a60cb628cba1e8 jdk-9+119
|
||||
d53037a90c441cb528dc41c30827985de0e67c62 jdk-9+123
|
||||
2a5697a98620c4f40e4a1a71478464399b8878de jdk-9+124
|
||||
3aa52182b3ad7c5b3a61cf05a59dd07e4c5884e5 jdk-9+125
|
||||
03e7b2c5ae345be3caf981d76ceb3efe5ff447f8 jdk-9+126
|
||||
8e45018bde9de4ad15b972ae62874bba52dba2d5 jdk-9+127
|
||||
|
||||
@ -368,3 +368,5 @@ cae471d3b87783e0a3deea658e1e1c84b2485b6c jdk-9+121
|
||||
405d811c0d7b9b48ff718ae6c240b732f098c028 jdk-9+123
|
||||
f80c841ae2545eaf9acd2724bccc305d98cefbe2 jdk-9+124
|
||||
9aa7d40f3a453f51e47f4c1b19eff5740a74a9f8 jdk-9+125
|
||||
3a58466296d36944454756ef01e7513ac5e14a16 jdk-9+126
|
||||
8fa686245bd2a072ece3392743460030f0854520 jdk-9+127
|
||||
|
||||
@ -976,7 +976,6 @@ JVM_VARIANTS
|
||||
DEBUG_LEVEL
|
||||
HOTSPOT_DEBUG_LEVEL
|
||||
JDK_VARIANT
|
||||
SET_OPENJDK
|
||||
USERNAME
|
||||
CANONICAL_TOPDIR
|
||||
ORIGINAL_TOPDIR
|
||||
@ -5095,7 +5094,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=1467223237
|
||||
DATE_WHEN_GENERATED=1467960715
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
@ -16592,41 +16591,17 @@ else
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of closed sources" >&5
|
||||
$as_echo_n "checking for presence of closed sources... " >&6; }
|
||||
if test -d "$SRC_ROOT/jdk/src/closed"; then
|
||||
CLOSED_SOURCE_PRESENT=yes
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if custom source is suppressed (openjdk-only)" >&5
|
||||
$as_echo_n "checking if custom source is suppressed (openjdk-only)... " >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_openjdk_only" >&5
|
||||
$as_echo "$enable_openjdk_only" >&6; }
|
||||
if test "x$enable_openjdk_only" = "xyes"; then
|
||||
SUPPRESS_CUSTOM_EXTENSIONS="true"
|
||||
elif test "x$enable_openjdk_only" = "xno"; then
|
||||
SUPPRESS_CUSTOM_EXTENSIONS="false"
|
||||
else
|
||||
CLOSED_SOURCE_PRESENT=no
|
||||
as_fn_error $? "Invalid value for --enable-openjdk-only: $enable_openjdk_only" "$LINENO" 5
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CLOSED_SOURCE_PRESENT" >&5
|
||||
$as_echo "$CLOSED_SOURCE_PRESENT" >&6; }
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if closed source is suppressed (openjdk-only)" >&5
|
||||
$as_echo_n "checking if closed source is suppressed (openjdk-only)... " >&6; }
|
||||
SUPPRESS_CLOSED_SOURCE="$enable_openjdk_only"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SUPPRESS_CLOSED_SOURCE" >&5
|
||||
$as_echo "$SUPPRESS_CLOSED_SOURCE" >&6; }
|
||||
|
||||
if test "x$CLOSED_SOURCE_PRESENT" = xno; then
|
||||
OPENJDK=true
|
||||
if test "x$SUPPRESS_CLOSED_SOURCE" = "xyes"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No closed source present, --enable-openjdk-only makes no sense" >&5
|
||||
$as_echo "$as_me: WARNING: No closed source present, --enable-openjdk-only makes no sense" >&2;}
|
||||
fi
|
||||
else
|
||||
if test "x$SUPPRESS_CLOSED_SOURCE" = "xyes"; then
|
||||
OPENJDK=true
|
||||
else
|
||||
OPENJDK=false
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$OPENJDK" = "xtrue"; then
|
||||
SET_OPENJDK="OPENJDK=true"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# custom-make-dir is deprecated. Please use your custom-hook.m4 to override
|
||||
# the IncludeCustomExtension macro.
|
||||
@ -53313,11 +53288,7 @@ $as_echo "yes, forced" >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no, forced" >&5
|
||||
$as_echo "no, forced" >&6; }
|
||||
elif test "x$enable_dtrace" = "xauto" || test "x$enable_dtrace" = "x"; then
|
||||
if test "x$OPENJDK_TARGET_OS" = "xlinux" && test "x$OPENJDK" != "xtrue"; then
|
||||
INCLUDE_DTRACE=false
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no, non-open linux build" >&5
|
||||
$as_echo "no, non-open linux build" >&6; }
|
||||
elif test "x$DTRACE_DEP_MISSING" = "xtrue"; then
|
||||
if test "x$DTRACE_DEP_MISSING" = "xtrue"; then
|
||||
INCLUDE_DTRACE=false
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no, missing dependencies" >&5
|
||||
$as_echo "no, missing dependencies" >&6; }
|
||||
@ -53596,11 +53567,9 @@ $as_echo "yes" >&6; }
|
||||
NEEDS_LIB_CUPS=true
|
||||
fi
|
||||
|
||||
# Check if freetype is needed
|
||||
if test "x$OPENJDK" = "xtrue"; then
|
||||
# A custom hook may have set this already
|
||||
if test "x$NEEDS_LIB_FREETYPE" = "x"; then
|
||||
NEEDS_LIB_FREETYPE=true
|
||||
else
|
||||
NEEDS_LIB_FREETYPE=false
|
||||
fi
|
||||
|
||||
# Check if alsa is needed
|
||||
|
||||
@ -161,10 +161,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_DTRACE],
|
||||
INCLUDE_DTRACE=false
|
||||
AC_MSG_RESULT([no, forced])
|
||||
elif test "x$enable_dtrace" = "xauto" || test "x$enable_dtrace" = "x"; then
|
||||
if test "x$OPENJDK_TARGET_OS" = "xlinux" && test "x$OPENJDK" != "xtrue"; then
|
||||
INCLUDE_DTRACE=false
|
||||
AC_MSG_RESULT([no, non-open linux build])
|
||||
elif test "x$DTRACE_DEP_MISSING" = "xtrue"; then
|
||||
if test "x$DTRACE_DEP_MISSING" = "xtrue"; then
|
||||
INCLUDE_DTRACE=false
|
||||
AC_MSG_RESULT([no, missing dependencies])
|
||||
else
|
||||
|
||||
@ -117,36 +117,15 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_OPEN_OR_CUSTOM],
|
||||
AC_ARG_ENABLE([openjdk-only], [AS_HELP_STRING([--enable-openjdk-only],
|
||||
[suppress building custom source even if present @<:@disabled@:>@])],,[enable_openjdk_only="no"])
|
||||
|
||||
AC_MSG_CHECKING([for presence of closed sources])
|
||||
if test -d "$SRC_ROOT/jdk/src/closed"; then
|
||||
CLOSED_SOURCE_PRESENT=yes
|
||||
AC_MSG_CHECKING([if custom source is suppressed (openjdk-only)])
|
||||
AC_MSG_RESULT([$enable_openjdk_only])
|
||||
if test "x$enable_openjdk_only" = "xyes"; then
|
||||
SUPPRESS_CUSTOM_EXTENSIONS="true"
|
||||
elif test "x$enable_openjdk_only" = "xno"; then
|
||||
SUPPRESS_CUSTOM_EXTENSIONS="false"
|
||||
else
|
||||
CLOSED_SOURCE_PRESENT=no
|
||||
AC_MSG_ERROR([Invalid value for --enable-openjdk-only: $enable_openjdk_only])
|
||||
fi
|
||||
AC_MSG_RESULT([$CLOSED_SOURCE_PRESENT])
|
||||
|
||||
AC_MSG_CHECKING([if closed source is suppressed (openjdk-only)])
|
||||
SUPPRESS_CLOSED_SOURCE="$enable_openjdk_only"
|
||||
AC_MSG_RESULT([$SUPPRESS_CLOSED_SOURCE])
|
||||
|
||||
if test "x$CLOSED_SOURCE_PRESENT" = xno; then
|
||||
OPENJDK=true
|
||||
if test "x$SUPPRESS_CLOSED_SOURCE" = "xyes"; then
|
||||
AC_MSG_WARN([No closed source present, --enable-openjdk-only makes no sense])
|
||||
fi
|
||||
else
|
||||
if test "x$SUPPRESS_CLOSED_SOURCE" = "xyes"; then
|
||||
OPENJDK=true
|
||||
else
|
||||
OPENJDK=false
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$OPENJDK" = "xtrue"; then
|
||||
SET_OPENJDK="OPENJDK=true"
|
||||
fi
|
||||
|
||||
AC_SUBST(SET_OPENJDK)
|
||||
|
||||
# custom-make-dir is deprecated. Please use your custom-hook.m4 to override
|
||||
# the IncludeCustomExtension macro.
|
||||
|
||||
@ -59,11 +59,9 @@ AC_DEFUN_ONCE([LIB_DETERMINE_DEPENDENCIES],
|
||||
NEEDS_LIB_CUPS=true
|
||||
fi
|
||||
|
||||
# Check if freetype is needed
|
||||
if test "x$OPENJDK" = "xtrue"; then
|
||||
# A custom hook may have set this already
|
||||
if test "x$NEEDS_LIB_FREETYPE" = "x"; then
|
||||
NEEDS_LIB_FREETYPE=true
|
||||
else
|
||||
NEEDS_LIB_FREETYPE=false
|
||||
fi
|
||||
|
||||
# Check if alsa is needed
|
||||
|
||||
@ -108,7 +108,6 @@ OPENJDK_BUILD_CPU_ENDIAN:=@OPENJDK_BUILD_CPU_ENDIAN@
|
||||
REQUIRED_OS_NAME:=@REQUIRED_OS_NAME@
|
||||
REQUIRED_OS_VERSION:=@REQUIRED_OS_VERSION@
|
||||
|
||||
@SET_OPENJDK@
|
||||
LIBM:=@LIBM@
|
||||
LIBDL:=@LIBDL@
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -6,7 +6,7 @@
|
||||
<name>OpenJDK (Native)</name>
|
||||
<c-extensions>c,m</c-extensions>
|
||||
<cpp-extensions>cc,cpp</cpp-extensions>
|
||||
<header-extensions>ad,h,hpp,in_out</header-extensions>
|
||||
<header-extensions>ad,h,hh,hpp,in_out,map,txt</header-extensions>
|
||||
<sourceEncoding>UTF-8</sourceEncoding>
|
||||
<make-dep-projects/>
|
||||
<sourceRootList>
|
||||
@ -26,6 +26,9 @@
|
||||
<type>0</type>
|
||||
</confElem>
|
||||
</confList>
|
||||
<formatting>
|
||||
<project-formatting-style>false</project-formatting-style>
|
||||
</formatting>
|
||||
</data>
|
||||
</configuration>
|
||||
</project>
|
||||
|
||||
@ -368,3 +368,5 @@ a39131aafc51a6fd8836e6ebe1b04458702ce7d6 jdk-9+122
|
||||
e33a34cc551907617d8129c4faaf1a5a7e61d21c jdk-9+123
|
||||
45121d5afb9d5bfadab75378572ad96832e0809e jdk-9+124
|
||||
1d48e67d1b91eb9f72e49e69a4021edb85e357fc jdk-9+125
|
||||
c7f5ba08fcd4b8416e62c21229f9a07c95498919 jdk-9+126
|
||||
8fab452b6f4710762ba1d8e55fd62db00b1355fe jdk-9+127
|
||||
|
||||
@ -529,3 +529,4 @@ af6b4ad908e732d23021f12e8322b204433d5cf6 jdk-9+122
|
||||
479631362b4930be985245ea063d87d821a472eb jdk-9+124
|
||||
bb640b49741af3f57f9994129934c46fc173219f jdk-9+125
|
||||
adc8c84b7cf8c540d920182f78a2bc982366432a jdk-9+126
|
||||
352357128f602dcf0426b1cbe011a4685a4d9f97 jdk-9+127
|
||||
|
||||
@ -16,9 +16,9 @@
|
||||
* 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*
|
||||
*/
|
||||
package com.sun.hotspot.tools.compiler;
|
||||
|
||||
@ -368,3 +368,5 @@ f8899b1884e2c4a000dbcc5b1a80954245fe462e jdk-9+122
|
||||
3c19ab8742c196ac267b3d87e1d19ec3472c708d jdk-9+123
|
||||
e04a15153cc293f05fcd60bc98236f50e16af46a jdk-9+124
|
||||
493eb91ec32a6dea7604cfbd86c10045ad9af15b jdk-9+125
|
||||
15722f71281f034bc696d8b96136da2ef34da44f jdk-9+126
|
||||
bdc3c0b737efbf899709eb3121ce760dcfb51151 jdk-9+127
|
||||
|
||||
@ -145,6 +145,7 @@
|
||||
MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = Leerstelle nach "<!DOCTYPE" in der Dokumenttypdeklaration erforderlich.
|
||||
MSG_ROOT_ELEMENT_TYPE_REQUIRED = Root-Elementtyp muss nach "<!DOCTYPE" in der Dokumenttypdeklaration enthalten sein.
|
||||
DoctypedeclUnterminated = Dokumenttypdeklaration f\u00FCr Root-Elementtyp "{0}" muss mit ">" enden.
|
||||
DoctypedeclNotClosed = Dokumenttypdeklaration f\u00FCr Root-Elementtyp "{0}" muss mit '']'' enden.
|
||||
PEReferenceWithinMarkup = Parameterentityreferenz "%{0};" darf nicht in Markup in der internen Teilmenge der DTD vorkommen.
|
||||
MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = Die Markup-Deklarationen, die in der Dokumenttypdeklaration enthalten sind bzw. auf die von der Dokumenttypdeklaration verwiesen wird, m\u00FCssen ordnungsgem\u00E4\u00DF formatiert sein.
|
||||
# 2.10 White Space Handling
|
||||
|
||||
@ -145,6 +145,7 @@
|
||||
MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = Es necesario un espacio en blanco despu\u00E9s de "<!DOCTYPE" en la declaraci\u00F3n de tipo de documento.
|
||||
MSG_ROOT_ELEMENT_TYPE_REQUIRED = El tipo de elemento ra\u00EDz debe aparecer despu\u00E9s de "<!DOCTYPE" en la declaraci\u00F3n de tipo de documento.
|
||||
DoctypedeclUnterminated = La declaraci\u00F3n de tipo de documento para el tipo de elemento ra\u00EDz "{0}" debe finalizar en ''>''.
|
||||
DoctypedeclNotClosed = La declaraci\u00F3n de tipo de documento para el tipo de elemento ra\u00EDz "{0}" debe finalizar en '']''.
|
||||
PEReferenceWithinMarkup = La referencia de entidad del par\u00E1metro "%{0};" no puede producirse en el marcador en el subconjunto interno del DTD.
|
||||
MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = Las declaraciones de marcador que se incluyen o a las que apunta la declaraci\u00F3n de tipo de documento deben tener el formato correcto.
|
||||
# 2.10 White Space Handling
|
||||
|
||||
@ -145,6 +145,7 @@
|
||||
MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = Un espace est obligatoire apr\u00E8s "<!DOCTYPE" dans la d\u00E9claration de type de document.
|
||||
MSG_ROOT_ELEMENT_TYPE_REQUIRED = Le type d'\u00E9l\u00E9ment racine doit figurer apr\u00E8s "<!DOCTYPE" dans la d\u00E9claration de type de document.
|
||||
DoctypedeclUnterminated = La d\u00E9claration de type de document pour le type d''\u00E9l\u00E9ment racine "{0}" doit se terminer par ''>''.
|
||||
DoctypedeclNotClosed = La d\u00E9claration de type de document pour le type d''\u00E9l\u00E9ment racine "{0}" doit se terminer par '']''.
|
||||
PEReferenceWithinMarkup = La r\u00E9f\u00E9rence d''entit\u00E9 de param\u00E8tre "%{0};" ne peut pas survenir dans le balisage du sous-ensemble interne de la DTD.
|
||||
MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = Les d\u00E9clarations de balisage contenues dans la d\u00E9claration de type de document ou sur lesquelles pointe cette derni\u00E8re doivent avoir un format correct.
|
||||
# 2.10 White Space Handling
|
||||
|
||||
@ -145,6 +145,7 @@
|
||||
MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \u00C8 richiesto uno spazio dopo "<!DOCTYPE" nella dichiarazione del tipo di documento.
|
||||
MSG_ROOT_ELEMENT_TYPE_REQUIRED = Il tipo di elemento radice deve comparire dopo "<!DOCTYPE" nella dichiarazione del tipo di documento.
|
||||
DoctypedeclUnterminated = La dichiarazione del tipo di documento per il tipo di elemento radice "{0}" deve terminare con ''>''.
|
||||
DoctypedeclNotClosed = La dichiarazione del tipo di documento per il tipo di elemento radice "{0}" deve terminare con '']''.
|
||||
PEReferenceWithinMarkup = Il riferimento di entit\u00E0 di parametro "%{0};" non pu\u00F2 essere presente nel markup del set secondario interno del DTD.
|
||||
MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = Le dichiarazioni di markup contenute o indicate dalla dichiarazione del tipo di documento devono avere un formato corretto.
|
||||
# 2.10 White Space Handling
|
||||
|
||||
@ -145,6 +145,7 @@
|
||||
MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7\u5BA3\u8A00\u3067\u306F\u3001"<!DOCTYPE"\u306E\u5F8C\u306B\u7A7A\u767D\u304C\u5FC5\u8981\u3067\u3059\u3002
|
||||
MSG_ROOT_ELEMENT_TYPE_REQUIRED = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7\u5BA3\u8A00\u3067\u306F\u3001"<!DOCTYPE"\u306E\u5F8C\u306B\u30EB\u30FC\u30C8\u8981\u7D20\u30BF\u30A4\u30D7\u304C\u5FC5\u8981\u3067\u3059\u3002
|
||||
DoctypedeclUnterminated = \u30EB\u30FC\u30C8\u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7\u5BA3\u8A00\u306F''>''\u3067\u7D42\u4E86\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
|
||||
DoctypedeclNotClosed = \u30EB\u30FC\u30C8\u8981\u7D20\u30BF\u30A4\u30D7"{0}"\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7\u5BA3\u8A00\u306F'']''\u3067\u9589\u3058\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
|
||||
PEReferenceWithinMarkup = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167"%{0};"\u306F\u3001DTD\u306E\u5185\u90E8\u30B5\u30D6\u30BB\u30C3\u30C8\u306E\u30DE\u30FC\u30AF\u30A2\u30C3\u30D7\u5185\u306B\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002
|
||||
MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7\u5BA3\u8A00\u306B\u542B\u307E\u308C\u308B\u304B\u3001\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7\u5BA3\u8A00\u304C\u6307\u3057\u3066\u3044\u308B\u30DE\u30FC\u30AF\u30A2\u30C3\u30D7\u5BA3\u8A00\u306F\u6574\u5F62\u5F0F\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
|
||||
# 2.10 White Space Handling
|
||||
|
||||
@ -145,6 +145,7 @@
|
||||
MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \uBB38\uC11C \uC720\uD615 \uC120\uC5B8\uC5D0\uC11C\uB294 "<!DOCTYPE" \uB2E4\uC74C\uC5D0 \uACF5\uBC31\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
|
||||
MSG_ROOT_ELEMENT_TYPE_REQUIRED = \uBB38\uC11C \uC720\uD615 \uC120\uC5B8\uC5D0\uC11C\uB294 "<!DOCTYPE" \uB2E4\uC74C\uC5D0 \uB8E8\uD2B8 \uC694\uC18C \uC720\uD615\uC774 \uB098\uD0C0\uB098\uC57C \uD569\uB2C8\uB2E4.
|
||||
DoctypedeclUnterminated = \uB8E8\uD2B8 \uC694\uC18C \uC720\uD615 "{0}"\uC5D0 \uB300\uD55C \uBB38\uC11C \uC720\uD615 \uC120\uC5B8\uC740 ''>''\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
|
||||
DoctypedeclNotClosed = \uB8E8\uD2B8 \uC694\uC18C \uC720\uD615 "{0}"\uC5D0 \uB300\uD55C \uBB38\uC11C \uC720\uD615 \uC120\uC5B8\uC740 '']''\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4.
|
||||
PEReferenceWithinMarkup = \uB9E4\uAC1C\uBCC0\uC218 \uC5D4\uD2F0\uD2F0 \uCC38\uC870 "%{0};"\uC740 DTD\uC758 \uB0B4\uBD80 \uBD80\uBD84 \uC9D1\uD569\uC5D0 \uC788\uB294 \uB9C8\uD06C\uC5C5 \uC548\uC5D0 \uD45C\uC2DC\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
|
||||
MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = \uBB38\uC11C \uC720\uD615 \uC120\uC5B8\uC744 \uD3EC\uD568\uD558\uAC70\uB098 \uBB38\uC11C \uC720\uD615 \uC120\uC5B8\uC774 \uAC00\uB9AC\uD0A4\uB294 \uB9C8\uD06C\uC5C5 \uC120\uC5B8\uC740 \uC62C\uBC14\uB978 \uD615\uC2DD\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
|
||||
# 2.10 White Space Handling
|
||||
|
||||
@ -145,6 +145,7 @@
|
||||
MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = O espa\u00E7o em branco \u00E9 necess\u00E1rio ap\u00F3s "<!DOCTYPE" na declara\u00E7\u00E3o do tipo de documento.
|
||||
MSG_ROOT_ELEMENT_TYPE_REQUIRED = O tipo de elemento-raiz deve aparecer ap\u00F3s "<!DOCTYPE" na declara\u00E7\u00E3o do tipo de documento.
|
||||
DoctypedeclUnterminated = A declara\u00E7\u00E3o do tipo de documento do tipo de elemento "{0}" deve terminar com ''>''.
|
||||
DoctypedeclNotClosed = A declara\u00E7\u00E3o do tipo de documento do tipo de elemento "{0}" deve terminar com '']''.
|
||||
PEReferenceWithinMarkup = A refer\u00EAncia da entidade do par\u00E2metro "%{0};" n\u00E3o pode ocorrer na marca\u00E7\u00E3o no subconjunto interno do DTD.
|
||||
MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = As declara\u00E7\u00F5es de marca\u00E7\u00E3o contidas ou apontadas pela declara\u00E7\u00E3o do tipo de documento devem estar corretas.
|
||||
# 2.10 White Space Handling
|
||||
|
||||
@ -145,6 +145,7 @@
|
||||
MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = Tomt utrymme kr\u00E4vs efter "<!DOCTYPE" i dokumenttypdeklarationen.
|
||||
MSG_ROOT_ELEMENT_TYPE_REQUIRED = Rotelementtyp m\u00E5ste anges efter "<!DOCTYPE" i dokumenttypdeklarationen.
|
||||
DoctypedeclUnterminated = Dokumenttypdeklarationen f\u00F6r rotelementtyp "{0}" m\u00E5ste avslutas med ''>''.
|
||||
DoctypedeclNotClosed = Dokumenttypsdeklarationen f\u00F6r rotelementtypen "{0}" m\u00E5ste st\u00E4ngas med '']''.
|
||||
PEReferenceWithinMarkup = Parameterreferensen "%{0};" f\u00E5r inte f\u00F6rekomma i kodtexten i den interna delm\u00E4ngden i DTD.
|
||||
MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = Kodtextdeklarationerna som finns med eller pekas till fr\u00E5n dokumenttypdeklarationen m\u00E5ste vara v\u00E4lformulerade.
|
||||
# 2.10 White Space Handling
|
||||
|
||||
@ -145,6 +145,7 @@
|
||||
MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \u5728\u6587\u6863\u7C7B\u578B\u58F0\u660E\u4E2D\u7684 "<!DOCTYPE" \u540E\u9762\u9700\u8981\u6709\u7A7A\u683C\u3002
|
||||
MSG_ROOT_ELEMENT_TYPE_REQUIRED = \u5728\u6587\u6863\u7C7B\u578B\u58F0\u660E\u4E2D, \u6839\u5143\u7D20\u7C7B\u578B\u5FC5\u987B\u51FA\u73B0\u5728 "<!DOCTYPE" \u540E\u9762\u3002
|
||||
DoctypedeclUnterminated = \u6839\u5143\u7D20\u7C7B\u578B "{0}" \u7684\u6587\u6863\u7C7B\u578B\u58F0\u660E\u5FC5\u987B\u4EE5 ''>'' \u7ED3\u5C3E\u3002
|
||||
DoctypedeclNotClosed = \u6839\u5143\u7D20\u7C7B\u578B "{0}" \u7684\u6587\u6863\u7C7B\u578B\u58F0\u660E\u5FC5\u987B\u4EE5 '']'' \u7ED3\u5C3E\u3002
|
||||
PEReferenceWithinMarkup = \u53C2\u6570\u5B9E\u4F53\u5F15\u7528 "%{0};" \u4E0D\u80FD\u51FA\u73B0\u5728 DTD \u7684\u5185\u90E8\u5B50\u96C6\u4E2D\u7684\u6807\u8BB0\u5185\u3002
|
||||
MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = \u6587\u6863\u7C7B\u578B\u58F0\u660E\u5305\u542B\u6216\u6307\u5411\u7684\u6807\u8BB0\u58F0\u660E\u5FC5\u987B\u683C\u5F0F\u6B63\u786E\u3002
|
||||
# 2.10 White Space Handling
|
||||
|
||||
@ -145,6 +145,7 @@
|
||||
MSG_SPACE_REQUIRED_BEFORE_ROOT_ELEMENT_TYPE_IN_DOCTYPEDECL = \u5728\u6587\u4EF6\u985E\u578B\u5BA3\u544A\u4E2D "<!DOCTYPE" \u4E4B\u5F8C\u9700\u8981\u7A7A\u683C\u3002
|
||||
MSG_ROOT_ELEMENT_TYPE_REQUIRED = \u5728\u6587\u4EF6\u985E\u578B\u5BA3\u544A\u4E2D\uFF0C\u6839\u5143\u7D20\u985E\u578B\u5FC5\u9808\u51FA\u73FE\u5728 "<!DOCTYPE" \u4E4B\u5F8C\u3002
|
||||
DoctypedeclUnterminated = \u6839\u5143\u7D20\u985E\u578B "{0}" \u7684\u6587\u4EF6\u985E\u578B\u5BA3\u544A\u7D50\u5C3E\u5FC5\u9808\u70BA ''>''\u3002
|
||||
DoctypedeclNotClosed = \u6839\u5143\u7D20\u985E\u578B "{0}" \u7684\u6587\u4EF6\u985E\u578B\u5BA3\u544A\u7D50\u5C3E\u5FC5\u9808\u70BA '']''\u3002
|
||||
PEReferenceWithinMarkup = DTD \u5167\u90E8\u5B57\u96C6\u7684\u6A19\u8A18\u5167\u4E0D\u80FD\u51FA\u73FE\u53C3\u6578\u5BE6\u9AD4\u53C3\u7167 "%{0};"\u3002
|
||||
MSG_MARKUP_NOT_RECOGNIZED_IN_DTD = \u6587\u4EF6\u985E\u578B\u5BA3\u544A\u5305\u542B\u6216\u6307\u5411\u7684\u6A19\u8A18\u5BA3\u544A\u5FC5\u9808\u683C\u5F0F\u6B63\u78BA\u3002
|
||||
# 2.10 White Space Handling
|
||||
@ -254,7 +255,7 @@
|
||||
RootElementTypeMustMatchDoctypedecl = \u6587\u4EF6\u6839\u5143\u7D20 "{1}" \u5FC5\u9808\u914D\u5C0D DOCTYPE \u6839 "{0}"\u3002
|
||||
UndeclaredElementInContentSpec = \u5143\u7D20 "{0}" \u7684\u5167\u5BB9\u6A21\u578B\u53C3\u7167\u672A\u5BA3\u544A\u7684\u5143\u7D20 "{1}"\u3002
|
||||
UniqueNotationName = \u8868\u793A\u6CD5 "{0}" \u7684\u5BA3\u544A\u4E26\u975E\u552F\u4E00\u3002\u6307\u5B9A\u7684 Name \u4E0D\u80FD\u5728\u4E00\u500B\u4EE5\u4E0A\u7684\u8868\u793A\u6CD5\u5BA3\u544A\u4E2D\u5BA3\u544A\u3002
|
||||
ENTITYFailedInitializeGrammar = ENTITYDatatype \u9A57\u8B49\u7A0B\u5F0F: \u5931\u6557\u3002\u9700\u8981\u4F7F\u7528\u6709\u6548\u7684\u6587\u6CD5\u53C3\u7167\u4F86\u547C\u53EB\u8D77\u59CB\u65B9\u6CD5\u3002 \t
|
||||
ENTITYFailedInitializeGrammar = ENTITYDatatype \u9A57\u8B49\u7A0B\u5F0F: \u5931\u6557\u3002\u9700\u8981\u4F7F\u7528\u6709\u6548\u7684\u6587\u6CD5\u53C3\u7167\u4F86\u547C\u53EB\u8D77\u59CB\u65B9\u6CD5\u3002\t
|
||||
ENTITYNotUnparsed = ENTITY "{0}" \u4E26\u975E\u672A\u7D93\u5256\u6790\u3002
|
||||
ENTITYNotValid = ENTITY "{0}" \u7121\u6548\u3002
|
||||
EmptyList = \u985E\u578B ENTITIES\u3001IDREFS \u8207 NMTOKENS \u7684\u503C\u4E0D\u53EF\u70BA\u7A7A\u767D\u6E05\u55AE\u3002
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
# This file contains error and warning messages related to XML Schema
|
||||
# The messages are arranged in key and value tuples in a ListResourceBundle.
|
||||
#
|
||||
# @version $Id: XMLSchemaMessages_de.properties /st_wptg_1.9.0.0.0jdk/2 2016/04/13 06:43:54 gmolloy Exp $
|
||||
# @version $Id: XMLSchemaMessages_de.properties /st_wptg_1.9.dev.jdk/2 2016/06/08 01:51:09 gmolloy Exp $
|
||||
|
||||
BadMessageKey = Die zum Meldungsschl\u00FCssel geh\u00F6rige Fehlermeldung kann nicht gefunden werden.
|
||||
FormatFailed = Beim Formatieren der folgenden Meldung ist ein interner Fehler aufgetreten:\n
|
||||
@ -309,7 +309,7 @@
|
||||
c-fields-xpaths = c-fields-xpaths: Feldwert = ''{0}'' ist ung\u00FCltig.
|
||||
c-general-xpath = c-general-xpath: Ausdruck ''{0}'' ist ung\u00FCltig in Bezug auf die vom XML-Schema unterst\u00FCtzte XPath-Teilmenge.
|
||||
c-general-xpath-ns = c-general-xpath-ns: Namespace-Pr\u00E4fix in XPath-Ausdruck ''{0}'' war an einen Namespace gebunden.
|
||||
c-selector-xpath = c-selector-xpath: Selector-Wert = ''{0}'' ist ung\u00FCltig. Selektor-XPaths k\u00F6nnen keine Attribute enthalten.
|
||||
c-selector-xpath = c-selector-xpath: Selektor-Wert = ''{0}'' ist ung\u00FCltig. Selektor-XPaths k\u00F6nnen keine Attribute enthalten.
|
||||
EmptyTargetNamespace = EmptyTargetNamespace: In Schemadokument ''{0}'' kann der Wert des ''targetNamespace''-Attributs keine leere Zeichenfolge sein.
|
||||
FacetValueFromBase = FacetValueFromBase: In der Deklaration von Typ ''{0}'' muss der Wert ''{1}'' von Facet ''{2}'' aus dem Wertebereich des Basistyps ''{3}'' stammen.
|
||||
FixedFacetValue = FixedFacetValue: In der Definition von {3} ist der Wert ''{1}'' f\u00FCr Facet ''{0}'' ung\u00FCltig, da der Wert f\u00FCr ''{0}'' in einem der Vorg\u00E4ngertypen auf ''{2}'' gesetzt wurde und ''{''fixed'}''' = true ist.
|
||||
|
||||
@ -371,3 +371,5 @@ fb771fa3a986ccfcb00d743b1956b98c380d1dd8 jdk-9+121
|
||||
c42decd28bbfa817347112ed6053b5fbd30517a2 jdk-9+123
|
||||
1600da1665cd2cc127014e8c002b328ec33a9147 jdk-9+124
|
||||
5b0570e3db29f6b8c80a4beac70d51284507b203 jdk-9+125
|
||||
264a44128cd6286e598d5a849ceeb613c06269d0 jdk-9+126
|
||||
06d706c70634775418dc79a2671780ba1c624fd2 jdk-9+127
|
||||
|
||||
@ -368,3 +368,5 @@ ee29aaab5889555ea56e4c0ed690aabb7613529d jdk-9+121
|
||||
c40c8739bcdc88892ff58ebee3fd8a3f287be94d jdk-9+123
|
||||
7ff61c55b5c6c124592f09b18953222009a204a6 jdk-9+124
|
||||
073ab1d4edf5590cf1af7b6d819350c14e425c1a jdk-9+125
|
||||
6fda66a5bdf2da8994032b9da2078a4137f4d954 jdk-9+126
|
||||
7a97b89ba83077ca62e4aa5a05437adc8f315343 jdk-9+127
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -23,16 +23,14 @@
|
||||
# questions.
|
||||
#
|
||||
|
||||
GENDATA_BLACKLISTED_CERTS_SRC := $(JDK_TOPDIR)/make/data/blacklistedcertsconverter/blacklisted.certs.pem
|
||||
$(eval $(call IncludeCustomExtension, jdk, gendata/GendataBlacklistedCerts.gmk))
|
||||
|
||||
GENDATA_BLACKLISTED_CERTS_SRC += $(JDK_TOPDIR)/make/data/blacklistedcertsconverter/blacklisted.certs.pem
|
||||
GENDATA_BLACKLISTED_CERTS := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/security/blacklisted.certs
|
||||
|
||||
ifndef OPENJDK
|
||||
GENDATA_BLACKLISTED_CERTS_SRC += $(wildcard $(JDK_TOPDIR)/make/closed/data/blacklistedcertsconverter/blacklisted.certs.pem)
|
||||
endif
|
||||
|
||||
$(GENDATA_BLACKLISTED_CERTS): $(BUILD_TOOLS) $(GENDATA_BLACKLISTED_CERTS_SRC)
|
||||
$(ECHO) "Generating blacklisted certs"
|
||||
$(MKDIR) -p $(@D)
|
||||
$(call LogInfo, Generating blacklisted certs)
|
||||
$(call MakeDir, $(@D))
|
||||
($(CAT) $(GENDATA_BLACKLISTED_CERTS_SRC) | $(TOOL_BLACKLISTED_CERTS) > $@) || exit 1
|
||||
|
||||
TARGETS += $(GENDATA_BLACKLISTED_CERTS)
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -23,14 +23,11 @@
|
||||
# questions.
|
||||
#
|
||||
|
||||
$(eval $(call IncludeCustomExtension, jdk, gendata/GendataFontConfig.gmk))
|
||||
|
||||
GENDATA_FONT_CONFIG_DST := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)
|
||||
|
||||
GENDATA_FONT_CONFIG_DATA_DIR := $(JDK_TOPDIR)/make/data/fontconfig
|
||||
ifndef OPENJDK
|
||||
ifeq ($(OPENJDK_TARGET_OS), linux)
|
||||
GENDATA_FONT_CONFIG_DATA_DIR := $(JDK_TOPDIR)/make/closed/data/fontconfig
|
||||
endif
|
||||
endif
|
||||
GENDATA_FONT_CONFIG_DATA_DIR ?= $(JDK_TOPDIR)/make/data/fontconfig
|
||||
|
||||
GENDATA_FONT_CONFIG_SRC_FILES := \
|
||||
$(wildcard $(GENDATA_FONT_CONFIG_DATA_DIR)/$(OPENJDK_TARGET_OS).*)
|
||||
@ -55,4 +52,3 @@ GENDATA_BFONT_CONFIGS := $(patsubst $(GENDATA_FONT_CONFIG_DATA_DIR)/$(OPENJDK_TA
|
||||
$(GENDATA_FONT_CONFIG_DST)/%.bfc, $(GENDATA_FONT_CONFIG_SRC_FILES))
|
||||
|
||||
TARGETS := $(GENDATA_FONT_CONFIGS) $(GENDATA_BFONT_CONFIGS)
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2013, 2016, 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
|
||||
@ -40,22 +40,6 @@ US_EXPORT_POLICY_JAR_LIMITED := \
|
||||
US_EXPORT_POLICY_JAR_UNLIMITED := \
|
||||
$(SUPPORT_OUTPUTDIR)/jce/policy/unlimited/US_export_policy.jar
|
||||
|
||||
ifndef OPENJDK
|
||||
#
|
||||
# In past releases, Oracle JDK has had a separately downloadable set of
|
||||
# policy files which has been a nightmare for deployment.
|
||||
#
|
||||
# Now if we're closed and limited (default for Oracle JDK), create
|
||||
# an "unlimited_policy" directory that contains the unlimited policy
|
||||
# files. It will be up to the user/deployer to make an informed choice
|
||||
# as to whether they are legally entitled to use the unlimited policy
|
||||
# file in their environment. Users/deployers simply need to overwrite
|
||||
# the files. Consult README.txt (below) for more info.
|
||||
#
|
||||
UNLIMITED_POLICY_DIR := \
|
||||
$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/security/unlimited_policy
|
||||
endif
|
||||
|
||||
#
|
||||
# TODO fix so that SetupJarArchive does not write files into SRCS
|
||||
# then we don't need this extra copying
|
||||
@ -100,15 +84,6 @@ else
|
||||
$(install-file)
|
||||
endif
|
||||
|
||||
ifndef OPENJDK
|
||||
ifneq ($(UNLIMITED_CRYPTO), true)
|
||||
$(UNLIMITED_POLICY_DIR)/US_export_policy.jar: \
|
||||
$(US_EXPORT_POLICY_JAR_UNLIMITED)
|
||||
$(install-file)
|
||||
TARGETS += $(UNLIMITED_POLICY_DIR)/US_export_policy.jar
|
||||
endif
|
||||
endif
|
||||
|
||||
POLICY_JARS += $(US_EXPORT_POLICY_JAR_DST)
|
||||
|
||||
################################################################################
|
||||
@ -159,31 +134,12 @@ $(eval $(call SetupJarArchive, BUILD_LOCAL_POLICY_JAR_UNLIMITED, \
|
||||
|
||||
TARGETS += $(LOCAL_POLICY_JAR_LIMITED) $(LOCAL_POLICY_JAR_UNLIMITED)
|
||||
|
||||
ifndef OPENJDK
|
||||
ifneq ($(UNLIMITED_CRYPTO), true)
|
||||
$(UNLIMITED_POLICY_DIR)/README.txt: \
|
||||
$(JDK_TOPDIR)/make/closed/data/cryptopolicy/README.txt
|
||||
$(install-file)
|
||||
|
||||
TARGETS += $(UNLIMITED_POLICY_DIR)/README.txt
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(UNLIMITED_CRYPTO), true)
|
||||
$(LOCAL_POLICY_JAR_DST): $(LOCAL_POLICY_JAR_UNLIMITED)
|
||||
$(install-file)
|
||||
else
|
||||
else
|
||||
$(LOCAL_POLICY_JAR_DST): $(LOCAL_POLICY_JAR_LIMITED)
|
||||
$(install-file)
|
||||
endif
|
||||
|
||||
ifndef OPENJDK
|
||||
ifneq ($(UNLIMITED_CRYPTO), true)
|
||||
$(UNLIMITED_POLICY_DIR)/local_policy.jar: \
|
||||
$(LOCAL_POLICY_JAR_UNLIMITED)
|
||||
$(install-file)
|
||||
TARGETS += $(UNLIMITED_POLICY_DIR)/local_policy.jar
|
||||
endif
|
||||
endif
|
||||
|
||||
POLICY_JARS += $(LOCAL_POLICY_JAR_DST)
|
||||
@ -191,3 +147,4 @@ TARGETS += $(POLICY_JARS)
|
||||
|
||||
################################################################################
|
||||
|
||||
$(eval $(call IncludeCustomExtension, jdk, gendata/GendataPolicyJars.gmk))
|
||||
|
||||
@ -23,16 +23,15 @@
|
||||
# questions.
|
||||
#
|
||||
|
||||
$(eval $(call IncludeCustomExtension, jdk, gensrc/GensrcIcons.gmk))
|
||||
|
||||
GENSRC_AWT_ICONS :=
|
||||
GENSRC_AWT_ICONS_SRC :=
|
||||
GENSRC_AWT_ICONS_TMP := $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop
|
||||
GENSRC_AWT_ICONS_DST := $(GENSRC_AWT_ICONS_TMP)/sun/awt/
|
||||
|
||||
ifdef OPENJDK
|
||||
X11_ICONS_PATH_PREFIX := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)
|
||||
else
|
||||
X11_ICONS_PATH_PREFIX := $(JDK_TOPDIR)/src/closed/java.desktop/$(OPENJDK_TARGET_OS_TYPE)
|
||||
endif
|
||||
# Allow this to be overridden from a custom makefile
|
||||
X11_ICONS_PATH_PREFIX ?= $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)
|
||||
|
||||
GENSRC_AWT_ICONS_SRC += \
|
||||
$(X11_ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon16.png \
|
||||
@ -114,11 +113,8 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
GENSRC_OSX_ICONS_DST := $(SUPPORT_OUTPUTDIR)/headers/java.desktop
|
||||
GENSRC_OSX_ICONS := $(GENSRC_OSX_ICONS_DST)/AWTIconData.h
|
||||
|
||||
ifdef OPENJDK
|
||||
GENSRC_OSX_ICONS_SRC := $(JDK_TOPDIR)/make/data/macosxicons/JavaApp.icns
|
||||
else
|
||||
GENSRC_OSX_ICONS_SRC := $(JDK_TOPDIR)/make/closed/data/macosxicons/JavaApp.icns
|
||||
endif
|
||||
GENSRC_OSX_ICONS_SRC ?= $(JDK_TOPDIR)/make/data/macosxicons/JavaApp.icns
|
||||
|
||||
|
||||
$(GENSRC_OSX_ICONS): $(GENSRC_OSX_ICONS_SRC) $(BUILD_TOOLS_JDK)
|
||||
$(call LogInfo, Generating $(patsubst $(OUTPUT_ROOT)/%, %, $@))
|
||||
|
||||
@ -38,12 +38,14 @@ define GenerateVarHandle
|
||||
|
||||
$1_FILENAME := $(VARHANDLES_GENSRC_DIR)/VarHandle$$($1_Type)s.java
|
||||
|
||||
ifneq ($$(findstring $$($1_Type), Object Int Long), )
|
||||
$1_ARGS += -KCAS
|
||||
$1_ARGS += -KCAS
|
||||
|
||||
ifneq ($$(findstring $$($1_Type), Byte Short Char Int Long Float Double), )
|
||||
$1_ARGS += -KAtomicAdd
|
||||
endif
|
||||
|
||||
ifneq ($$(findstring $$($1_Type), Int Long), )
|
||||
$1_ARGS += -KAtomicAdd
|
||||
ifneq ($$(findstring $$($1_Type), Byte Short Char), )
|
||||
$1_ARGS += -KShorterThanInt
|
||||
endif
|
||||
|
||||
$$($1_FILENAME): $(VARHANDLES_SRC_DIR)/X-VarHandle.java.template $(BUILD_TOOLS_JDK)
|
||||
|
||||
@ -25,12 +25,10 @@
|
||||
|
||||
include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call IncludeCustomExtension, jdk, launcher/Launcher-java.base.gmk))
|
||||
|
||||
JAVA_RC_FLAGS += -I $(JDK_TOPDIR)/src/java.base/windows/native/common
|
||||
ifdef OPENJDK
|
||||
JAVA_RC_FLAGS += -I $(JDK_TOPDIR)/src/java.base/windows/native/launcher/icons
|
||||
else
|
||||
JAVA_RC_FLAGS += -I $(JDK_TOPDIR)/src/closed/java.base/windows/native/launcher/icons
|
||||
endif
|
||||
JAVA_RC_FLAGS += -I $(JDK_TOPDIR)/src/java.base/windows/native/launcher/icons
|
||||
|
||||
################################################################################
|
||||
|
||||
|
||||
@ -23,6 +23,8 @@
|
||||
# questions.
|
||||
#
|
||||
|
||||
$(eval $(call IncludeCustomExtension, jdk, lib/Awt2dLibraries-pre.gmk))
|
||||
|
||||
WIN_AWT_LIB := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt/awt.lib
|
||||
|
||||
################################################################################
|
||||
@ -212,11 +214,7 @@ ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
LIBAWT_CFLAGS += -DMLIB_OS64BIT
|
||||
endif
|
||||
|
||||
ifdef OPENJDK
|
||||
LIBAWT_RC_FLAGS := -I $(JDK_TOPDIR)/src/java.base/windows/native/launcher/icons
|
||||
else
|
||||
LIBAWT_RC_FLAGS := -I $(JDK_TOPDIR)/src/closed/java.base/windows/native/launcher/icons
|
||||
endif
|
||||
LIBAWT_RC_FLAGS ?= -I $(JDK_TOPDIR)/src/java.base/windows/native/launcher/icons
|
||||
LIBAWT_VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/java.desktop/windows/native/libawt/windows/awt.rc
|
||||
endif
|
||||
|
||||
@ -426,7 +424,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBLCMS, \
|
||||
$(LCMS_CFLAGS), \
|
||||
CFLAGS_solaris := -xc99=no_lib, \
|
||||
CFLAGS_windows := -DCMS_IS_WINDOWS_, \
|
||||
DISABLED_WARNINGS_gcc := format-nonliteral type-limits, \
|
||||
DISABLED_WARNINGS_gcc := format-nonliteral type-limits misleading-indentation, \
|
||||
DISABLED_WARNINGS_clang := tautological-compare, \
|
||||
DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
|
||||
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/liblcms/mapfile-vers, \
|
||||
@ -454,13 +452,6 @@ $(BUILD_LIBLCMS): $(BUILD_LIBAWT)
|
||||
|
||||
################################################################################
|
||||
|
||||
ifdef OPENJDK
|
||||
BUILD_LIBJAVAJPEG_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjpeg/mapfile-vers
|
||||
else
|
||||
BUILD_LIBJAVAJPEG_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjpeg/mapfile-vers-closed
|
||||
LIBJAVAJPEG_SRC += $(JDK_TOPDIR)/src/closed/java.desktop/share/native/libjavajpeg
|
||||
endif
|
||||
|
||||
LIBJAVAJPEG_SRC += $(JDK_TOPDIR)/src/java.desktop/share/native/libjavajpeg
|
||||
|
||||
BUILD_LIBJAVAJPEG_REORDER :=
|
||||
@ -507,10 +498,10 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJAVAJPEG, \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) $(BUILD_LIBJAVAJPEG_HEADERS) \
|
||||
$(LIBJAVA_HEADER_FLAGS) \
|
||||
-I$(SUPPORT_OUTPUTDIR)/headers/java.desktop, \
|
||||
DISABLED_WARNINGS_gcc := clobbered parentheses array-bounds, \
|
||||
DISABLED_WARNINGS_gcc := clobbered parentheses array-bounds shift-negative-value, \
|
||||
DISABLED_WARNINGS_clang := logical-op-parentheses, \
|
||||
DISABLED_WARNINGS_microsoft := 4267, \
|
||||
MAPFILE := $(BUILD_LIBJAVAJPEG_MAPFILE), \
|
||||
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjpeg/mapfile-vers, \
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LIBS := $(LIBJPEG_LIBS) $(JDKLIB_LIBS), \
|
||||
@ -645,15 +636,10 @@ LIBFONTMANAGER_CFLAGS += $(HARFBUZZ_CFLAGS)
|
||||
|
||||
#### End harfbuzz configuration
|
||||
|
||||
ifndef OPENJDK
|
||||
LIBFONTMANAGER_CFLAGS += -I$(JDK_TOPDIR)/src/closed/java.desktop/share/native/libt2k
|
||||
BUILD_LIBFONTMANAGER_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libfontmanager/mapfile-vers
|
||||
LIBFONTMANAGER_EXCLUDE_FILES += freetypeScaler.c
|
||||
else
|
||||
LIBFONTMANAGER_CFLAGS += $(FREETYPE_CFLAGS)
|
||||
BUILD_LIBFONTMANAGER_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libfontmanager/mapfile-vers.openjdk
|
||||
BUILD_LIBFONTMANAGER_FONTLIB := $(FREETYPE_LIBS)
|
||||
endif
|
||||
LIBFONTMANAGER_CFLAGS += $(FREETYPE_CFLAGS)
|
||||
# This may be overridden in a custom makefile
|
||||
BUILD_LIBFONTMANAGER_MAPFILE ?= $(JDK_TOPDIR)/make/mapfiles/libfontmanager/mapfile-vers
|
||||
BUILD_LIBFONTMANAGER_FONTLIB += $(FREETYPE_LIBS)
|
||||
|
||||
LIBFONTMANAGER_OPTIMIZATION := HIGH
|
||||
|
||||
@ -943,7 +929,7 @@ ifndef BUILD_HEADLESS_ONLY
|
||||
OPTIMIZATION := LOW, \
|
||||
CFLAGS := $(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB) \
|
||||
$(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS), \
|
||||
DISABLED_WARNINGS_gcc := sign-compare type-limits unused-result maybe-uninitialized, \
|
||||
DISABLED_WARNINGS_gcc := sign-compare type-limits unused-result maybe-uninitialized shift-negative-value, \
|
||||
DISABLED_WARNINGS_clang := incompatible-pointer-types, \
|
||||
DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST E_DECLARATION_IN_CODE \
|
||||
E_STATEMENT_NOT_REACHED, \
|
||||
|
||||
@ -1,93 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# Define public interface.
|
||||
|
||||
SUNWprivate_1.1 {
|
||||
global:
|
||||
Java_sun_dc_pr_PathDasher_beginPath;
|
||||
Java_sun_dc_pr_PathFiller_getTileState;
|
||||
Java_sun_dc_pr_PathStroker_setCaps;
|
||||
Java_sun_dc_pr_PathStroker_setCorners;
|
||||
Java_sun_dc_pr_PathFiller_writeAlpha16;
|
||||
Java_sun_dc_pr_PathFiller_closedSubpath;
|
||||
Java_sun_dc_pr_PathStroker_beginPath;
|
||||
Java_sun_dc_pr_PathDasher_setDashT4;
|
||||
Java_sun_dc_pr_PathFiller_dispose;
|
||||
Java_sun_dc_pr_PathStroker_closedSubpath;
|
||||
Java_sun_dc_pr_PathDasher_appendLine;
|
||||
Java_sun_dc_pr_PathStroker_dispose;
|
||||
Java_sun_dc_pr_PathDasher_setOutputConsumer;
|
||||
Java_sun_dc_pr_PathStroker_reset;
|
||||
Java_sun_dc_pr_PathFiller_beginSubpath;
|
||||
Java_sun_dc_pr_PathFiller_writeAlpha8;
|
||||
Java_sun_dc_pr_PathDasher_closedSubpath;
|
||||
Java_sun_dc_pr_PathFiller_appendQuadratic;
|
||||
Java_sun_dc_pr_PathDasher_setOutputT6;
|
||||
Java_sun_dc_pr_PathStroker_setPenFitting;
|
||||
Java_sun_dc_pr_PathStroker_endPath;
|
||||
Java_sun_dc_pr_PathDasher_setDash;
|
||||
Java_sun_dc_pr_PathFiller_nextTile;
|
||||
Java_sun_dc_pr_PathStroker_setOutputConsumer;
|
||||
Java_sun_dc_pr_PathFiller_setFillMode;
|
||||
Java_sun_dc_pr_PathFiller_appendLine;
|
||||
Java_sun_dc_pr_PathStroker_appendQuadratic;
|
||||
Java_sun_dc_pr_PathFiller_endPath;
|
||||
Java_sun_dc_pr_PathStroker_appendCubic;
|
||||
Java_sun_dc_pr_PathDasher_appendCubic;
|
||||
Java_sun_dc_pr_PathStroker_setPenDiameter;
|
||||
Java_sun_dc_pr_PathFiller_setOutputArea;
|
||||
Java_sun_dc_pr_PathFiller_getAlphaBox;
|
||||
Java_sun_dc_pr_PathStroker_appendLine;
|
||||
Java_sun_dc_pr_PathStroker_setOutputT6;
|
||||
Java_sun_dc_pr_PathFiller_beginPath;
|
||||
Java_sun_dc_pr_PathDasher_dispose;
|
||||
Java_sun_dc_pr_PathDasher_reset;
|
||||
Java_sun_dc_pr_PathFiller_reset;
|
||||
Java_sun_dc_pr_PathDasher_endPath;
|
||||
Java_sun_dc_pr_PathStroker_beginSubpath;
|
||||
Java_sun_dc_pr_PathStroker_setPenT4;
|
||||
Java_sun_dc_pr_PathDasher_appendQuadratic;
|
||||
Java_sun_dc_pr_PathDasher_beginSubpath;
|
||||
Java_sun_dc_pr_PathFiller_appendCubic;
|
||||
|
||||
Java_sun_dc_pr_PathDasher_cClassFinalize;
|
||||
Java_sun_dc_pr_PathDasher_cClassInitialize;
|
||||
Java_sun_dc_pr_PathDasher_cInitialize;
|
||||
Java_sun_dc_pr_PathFiller_cClassFinalize;
|
||||
Java_sun_dc_pr_PathFiller_cClassInitialize;
|
||||
Java_sun_dc_pr_PathFiller_cInitialize;
|
||||
Java_sun_dc_pr_PathStroker_cClassFinalize;
|
||||
Java_sun_dc_pr_PathStroker_cClassInitialize;
|
||||
Java_sun_dc_pr_PathStroker_cInitialize;
|
||||
Java_sun_dc_pr_PathStroker_cInitialize2D;
|
||||
|
||||
Java_sun_dc_pr_PathDasher_getCPathConsumer;
|
||||
Java_sun_dc_pr_PathFiller_getCPathConsumer;
|
||||
Java_sun_dc_pr_PathStroker_getCPathConsumer;
|
||||
|
||||
local:
|
||||
*;
|
||||
};
|
||||
@ -25,6 +25,8 @@
|
||||
|
||||
# Define public interface.
|
||||
|
||||
# In addition to regular symbols also include Freetype scaler
|
||||
|
||||
SUNWprivate_1.1 {
|
||||
global:
|
||||
getSunFontIDs;
|
||||
@ -57,6 +59,23 @@ SUNWprivate_1.1 {
|
||||
Java_sun_font_NativeFont_getGlyphImage;
|
||||
Java_sun_font_NativeFont_getGlyphImageNoDefault;
|
||||
Java_sun_font_NativeFont_getFontMetrics;
|
||||
Java_sun_font_FreetypeFontScaler_initIDs;
|
||||
Java_sun_font_FreetypeFontScaler_createScalerContextNative;
|
||||
Java_sun_font_FreetypeFontScaler_disposeNativeScaler;
|
||||
Java_sun_font_FreetypeFontScaler_getFontMetricsNative;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphAdvanceNative;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphCodeNative;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphImageNative;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphMetricsNative;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphOutlineBoundsNative;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphOutlineNative;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphVectorOutlineNative;
|
||||
Java_sun_font_FreetypeFontScaler_getLayoutTableCacheNative;
|
||||
Java_sun_font_FreetypeFontScaler_getMissingGlyphCodeNative;
|
||||
Java_sun_font_FreetypeFontScaler_getNumGlyphsNative;
|
||||
Java_sun_font_FreetypeFontScaler_getUnitsPerEMNative;
|
||||
Java_sun_font_FreetypeFontScaler_initNativeScaler;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphPointNative;
|
||||
local:
|
||||
*;
|
||||
};
|
||||
|
||||
@ -1,81 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# Define public interface.
|
||||
|
||||
# In addition to regular symbols also include Freetype scaler
|
||||
|
||||
SUNWprivate_1.1 {
|
||||
global:
|
||||
getSunFontIDs;
|
||||
newLayoutTableCache;
|
||||
freeLayoutTableCache;
|
||||
isNullScalerContext;
|
||||
Java_sun_font_NullFontScaler_getNullScalerContext;
|
||||
Java_sun_font_NullFontScaler_getGlyphImage;
|
||||
Java_sun_font_SunFontManager_initIDs;
|
||||
Java_sun_font_StrikeCache_getGlyphCacheDescription;
|
||||
Java_sun_font_StrikeCache_freeIntPointer;
|
||||
Java_sun_font_StrikeCache_freeLongPointer;
|
||||
Java_sun_font_StrikeCache_freeIntMemory;
|
||||
Java_sun_font_StrikeCache_freeLongMemory;
|
||||
Java_sun_font_SunLayoutEngine_initGVIDs;
|
||||
Java_sun_font_SunLayoutEngine_nativeLayout;
|
||||
Java_sun_font_SunLayoutEngine_shape;
|
||||
Java_sun_font_X11TextRenderer_doDrawGlyphList;
|
||||
Java_sun_java2d_loops_DrawGlyphListAA_DrawGlyphListAA;
|
||||
Java_sun_java2d_loops_DrawGlyphListLCD_DrawGlyphListLCD;
|
||||
Java_sun_java2d_loops_DrawGlyphList_DrawGlyphList;
|
||||
Java_sun_font_NativeStrikeDisposer_freeNativeScalerContext;
|
||||
Java_sun_font_NativeStrike_createNullScalerContext;
|
||||
Java_sun_font_NativeStrike_createScalerContext;
|
||||
Java_sun_font_NativeStrike_getMaxGlyph;
|
||||
Java_sun_font_NativeFont_fontExists;
|
||||
Java_sun_font_NativeFont_haveBitmapFonts;
|
||||
Java_sun_font_NativeFont_countGlyphs;
|
||||
Java_sun_font_NativeFont_getGlyphAdvance;
|
||||
Java_sun_font_NativeFont_getGlyphImage;
|
||||
Java_sun_font_NativeFont_getGlyphImageNoDefault;
|
||||
Java_sun_font_NativeFont_getFontMetrics;
|
||||
Java_sun_font_FreetypeFontScaler_initIDs;
|
||||
Java_sun_font_FreetypeFontScaler_createScalerContextNative;
|
||||
Java_sun_font_FreetypeFontScaler_disposeNativeScaler;
|
||||
Java_sun_font_FreetypeFontScaler_getFontMetricsNative;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphAdvanceNative;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphCodeNative;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphImageNative;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphMetricsNative;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphOutlineBoundsNative;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphOutlineNative;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphVectorOutlineNative;
|
||||
Java_sun_font_FreetypeFontScaler_getLayoutTableCacheNative;
|
||||
Java_sun_font_FreetypeFontScaler_getMissingGlyphCodeNative;
|
||||
Java_sun_font_FreetypeFontScaler_getNumGlyphsNative;
|
||||
Java_sun_font_FreetypeFontScaler_getUnitsPerEMNative;
|
||||
Java_sun_font_FreetypeFontScaler_initNativeScaler;
|
||||
Java_sun_font_FreetypeFontScaler_getGlyphPointNative;
|
||||
local:
|
||||
*;
|
||||
};
|
||||
@ -1,55 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# Define public interface.
|
||||
|
||||
SUNWprivate_1.1 {
|
||||
global:
|
||||
JNI_OnLoad;
|
||||
|
||||
Java_sun_awt_image_JPEGImageDecoder_initIDs;
|
||||
Java_sun_awt_image_JPEGImageDecoder_readImage;
|
||||
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_initReaderIDs;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_initJPEGImageReader;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_setSource;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImageHeader;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_setOutColorSpace;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_abortRead;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_resetReader;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_disposeReader;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_resetLibraryState;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_initWriterIDs;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_initJPEGImageWriter;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_setDest;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeTables;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_writeImage;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_abortWrite;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_resetWriter;
|
||||
Java_com_sun_imageio_plugins_jpeg_JPEGImageWriter_disposeWriter;
|
||||
local:
|
||||
*;
|
||||
};
|
||||
@ -1,47 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# Define public interface.
|
||||
|
||||
SUNWprivate_1.1 {
|
||||
global:
|
||||
Java_sun_java2d_cmm_kcms_CMM_cmmGetTagSize;
|
||||
Java_sun_java2d_cmm_kcms_CMM_cmmGetNumComponents;
|
||||
Java_sun_java2d_cmm_kcms_CMM_cmmColorConvert;
|
||||
Java_sun_java2d_cmm_kcms_CMM_cmmInit;
|
||||
Java_sun_java2d_cmm_kcms_CMM_cmmCombineTransforms;
|
||||
Java_sun_java2d_cmm_kcms_CMM_cmmGetTagData;
|
||||
Java_sun_java2d_cmm_kcms_CMM_cmmSetTagData;
|
||||
Java_sun_java2d_cmm_kcms_CMM_cmmGetProfileData;
|
||||
Java_sun_java2d_cmm_kcms_CMM_cmmFreeProfile;
|
||||
Java_sun_java2d_cmm_kcms_CMM_cmmTerminate;
|
||||
Java_sun_java2d_cmm_kcms_CMM_cmmLoadProfile;
|
||||
Java_sun_java2d_cmm_kcms_CMM_cmmGetTransform;
|
||||
Java_sun_java2d_cmm_kcms_CMM_cmmFreeTransform;
|
||||
Java_sun_java2d_cmm_kcms_CMM_cmmGetProfileSize;
|
||||
|
||||
local:
|
||||
*;
|
||||
};
|
||||
@ -1,49 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# Define public interface.
|
||||
|
||||
SUNWprivate_1.1 {
|
||||
global:
|
||||
Java_sun_font_T2KFontScaler_createScalerContextNative;
|
||||
Java_sun_font_T2KFontScaler_disposeNativeScaler;
|
||||
Java_sun_font_T2KFontScaler_getFontMetricsNative;
|
||||
Java_sun_font_T2KFontScaler_getGlyphAdvanceNative;
|
||||
Java_sun_font_T2KFontScaler_getGlyphCodeNative;
|
||||
Java_sun_font_T2KFontScaler_getGlyphImageNative;
|
||||
Java_sun_font_T2KFontScaler_getGlyphMetricsNative;
|
||||
Java_sun_font_T2KFontScaler_getGlyphOutlineBoundsNative;
|
||||
Java_sun_font_T2KFontScaler_getGlyphOutlineNative;
|
||||
Java_sun_font_T2KFontScaler_getGlyphVectorOutlineNative;
|
||||
Java_sun_font_T2KFontScaler_getLayoutTableCacheNative;
|
||||
Java_sun_font_T2KFontScaler_getMissingGlyphCodeNative;
|
||||
Java_sun_font_T2KFontScaler_getNumGlyphsNative;
|
||||
Java_sun_font_T2KFontScaler_getUnitsPerEMNative;
|
||||
Java_sun_font_T2KFontScaler_initIDs;
|
||||
Java_sun_font_T2KFontScaler_initNativeScaler;
|
||||
Java_sun_font_T2KFontScaler_getGlyphPointNative;
|
||||
local:
|
||||
*;
|
||||
};
|
||||
@ -693,6 +693,8 @@ public class CLDRConverter {
|
||||
"field.weekday",
|
||||
"field.dayperiod",
|
||||
"field.hour",
|
||||
"timezone.hourFormat",
|
||||
"timezone.gmtFormat",
|
||||
"field.minute",
|
||||
"field.second",
|
||||
"field.zone",
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -41,12 +41,12 @@ class CopyrightHeaders {
|
||||
" * Copyright (c) 2012, %d, Oracle and/or its affiliates. All rights reserved.\n" +
|
||||
" */\n";
|
||||
|
||||
// Last updated: - 1/16/2015, 1:42:31 PM
|
||||
// Last updated: - 6/06/2016, 1:42:31 PM
|
||||
private static final String UNICODE =
|
||||
"/*\n" +
|
||||
" * COPYRIGHT AND PERMISSION NOTICE\n" +
|
||||
" *\n" +
|
||||
" * Copyright (C) 1991-2015 Unicode, Inc. All rights reserved.\n" +
|
||||
" * Copyright (C) 1991-2016 Unicode, Inc. All rights reserved.\n" +
|
||||
" * Distributed under the Terms of Use in \n" +
|
||||
" * http://www.unicode.org/copyright.html.\n" +
|
||||
" *\n" +
|
||||
|
||||
@ -417,6 +417,12 @@ class LDMLParseHandler extends AbstractLDMLHandler<Object> {
|
||||
case "timeZoneNames":
|
||||
pushContainer(qName, attributes);
|
||||
break;
|
||||
case "hourFormat":
|
||||
pushStringEntry(qName, attributes, "timezone.hourFormat");
|
||||
break;
|
||||
case "gmtFormat":
|
||||
pushStringEntry(qName, attributes, "timezone.gmtFormat");
|
||||
break;
|
||||
case "zone":
|
||||
{
|
||||
String tzid = attributes.getValue("type"); // Olson tz id
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2008, 2016, 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
|
||||
@ -91,7 +91,6 @@ Java_sun_nio_fs_GioFileTypeDetector_initializeGio
|
||||
}
|
||||
|
||||
g_type_init = (g_type_init_func)dlsym(gio_handle, "g_type_init");
|
||||
(*g_type_init)();
|
||||
|
||||
g_object_unref = (g_object_unref_func)dlsym(gio_handle, "g_object_unref");
|
||||
|
||||
@ -104,9 +103,7 @@ Java_sun_nio_fs_GioFileTypeDetector_initializeGio
|
||||
g_file_info_get_content_type = (g_file_info_get_content_type_func)
|
||||
dlsym(gio_handle, "g_file_info_get_content_type");
|
||||
|
||||
|
||||
if (g_type_init == NULL ||
|
||||
g_object_unref == NULL ||
|
||||
if (g_object_unref == NULL ||
|
||||
g_file_new_for_path == NULL ||
|
||||
g_file_query_info == NULL ||
|
||||
g_file_info_get_content_type == NULL)
|
||||
@ -115,7 +112,10 @@ Java_sun_nio_fs_GioFileTypeDetector_initializeGio
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
(*g_type_init)();
|
||||
if (g_type_init != NULL) {
|
||||
(*g_type_init)();
|
||||
}
|
||||
|
||||
return JNI_TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2015 Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -1053,32 +1053,6 @@ SetXStartOnFirstThreadArg()
|
||||
setenv(envVar, "1", 1);
|
||||
}
|
||||
|
||||
/* This class is made for performSelectorOnMainThread when java main
|
||||
* should be launched on main thread.
|
||||
* We cannot use dispatch_sync here, because it blocks the main dispatch queue
|
||||
* which is used inside Cocoa
|
||||
*/
|
||||
@interface JavaLaunchHelper : NSObject {
|
||||
int _returnValue;
|
||||
}
|
||||
- (void) launchJava:(NSValue*)argsValue;
|
||||
- (int) getReturnValue;
|
||||
@end
|
||||
|
||||
@implementation JavaLaunchHelper
|
||||
|
||||
- (void) launchJava:(NSValue*)argsValue
|
||||
{
|
||||
_returnValue = JavaMain([argsValue pointerValue]);
|
||||
}
|
||||
|
||||
- (int) getReturnValue
|
||||
{
|
||||
return _returnValue;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
// MacOSX we may continue in the same thread
|
||||
int
|
||||
JVMInit(InvocationFunctions* ifn, jlong threadStackSize,
|
||||
@ -1088,20 +1062,26 @@ JVMInit(InvocationFunctions* ifn, jlong threadStackSize,
|
||||
JLI_TraceLauncher("In same thread\n");
|
||||
// need to block this thread against the main thread
|
||||
// so signals get caught correctly
|
||||
JavaMainArgs args;
|
||||
args.argc = argc;
|
||||
args.argv = argv;
|
||||
args.mode = mode;
|
||||
args.what = what;
|
||||
args.ifn = *ifn;
|
||||
int rslt;
|
||||
__block int rslt = 0;
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
{
|
||||
JavaLaunchHelper* launcher = [[[JavaLaunchHelper alloc] init] autorelease];
|
||||
[launcher performSelectorOnMainThread:@selector(launchJava:)
|
||||
withObject:[NSValue valueWithPointer:(void*)&args]
|
||||
waitUntilDone:YES];
|
||||
rslt = [launcher getReturnValue];
|
||||
NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock: ^{
|
||||
JavaMainArgs args;
|
||||
args.argc = argc;
|
||||
args.argv = argv;
|
||||
args.mode = mode;
|
||||
args.what = what;
|
||||
args.ifn = *ifn;
|
||||
rslt = JavaMain(&args);
|
||||
}];
|
||||
|
||||
/*
|
||||
* We cannot use dispatch_sync here, because it blocks the main dispatch queue.
|
||||
* Using the main NSRunLoop allows the dispatch queue to run properly once
|
||||
* SWT (or whatever toolkit this is needed for) kicks off it's own NSRunLoop
|
||||
* and starts running.
|
||||
*/
|
||||
[op performSelectorOnMainThread:@selector(start) withObject:nil waitUntilDone:YES];
|
||||
}
|
||||
[pool drain];
|
||||
return rslt;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2016, 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
|
||||
@ -38,8 +38,9 @@ package com.sun.net.ssl;
|
||||
* @deprecated As of JDK 1.4, this implementation-specific class was
|
||||
* replaced by {@link javax.net.ssl.HostnameVerifier} and
|
||||
* {@link javax.net.ssl.CertificateHostnameVerifier}.
|
||||
* This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="1.4", forRemoval=true)
|
||||
public interface HostnameVerifier {
|
||||
/**
|
||||
* Verify that the hostname from the URL is an acceptable
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2016, 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,9 @@ import javax.net.ssl.SSLPeerUnverifiedException;
|
||||
*
|
||||
* @deprecated As of JDK 1.4, this implementation-specific class was
|
||||
* replaced by {@link javax.net.ssl.HttpsURLConnection}.
|
||||
* This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="1.4", forRemoval=true)
|
||||
public abstract
|
||||
class HttpsURLConnection extends HttpURLConnection
|
||||
{
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2016, 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,7 +36,8 @@ package com.sun.net.ssl;
|
||||
*
|
||||
* @deprecated As of JDK 1.4, this implementation-specific class was
|
||||
* replaced by {@link javax.net.ssl.KeyManager}.
|
||||
* This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="1.4", forRemoval=true)
|
||||
public interface KeyManager {
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2016, 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,9 @@ import java.security.*;
|
||||
*
|
||||
* @deprecated As of JDK 1.4, this implementation-specific class was
|
||||
* replaced by {@link javax.net.ssl.KeyManagerFactory}.
|
||||
* This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="1.4", forRemoval=true)
|
||||
public class KeyManagerFactory {
|
||||
// The provider
|
||||
private Provider provider;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -41,8 +41,9 @@ import java.security.*;
|
||||
*
|
||||
* @deprecated As of JDK 1.4, this implementation-specific class was
|
||||
* replaced by {@link javax.net.ssl.KeyManagerFactorySpi}.
|
||||
* This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="1.4", forRemoval=true)
|
||||
public abstract class KeyManagerFactorySpi {
|
||||
/**
|
||||
* Initializes this factory with a source of key material. The
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2016, 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,9 @@ import sun.security.ssl.SSLServerSocketFactoryImpl;
|
||||
*
|
||||
* @deprecated As of JDK 1.4, this implementation-specific class was
|
||||
* replaced by {@link javax.net.ssl.SSLContext}.
|
||||
* This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="1.4", forRemoval=true)
|
||||
public class SSLContext {
|
||||
private Provider provider;
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2016, 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
|
||||
@ -43,8 +43,9 @@ import javax.net.ssl.*;
|
||||
*
|
||||
* @deprecated As of JDK 1.4, this implementation-specific class was
|
||||
* replaced by {@link javax.net.ssl.SSLContextSpi}.
|
||||
* This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="1.4", forRemoval=true)
|
||||
public abstract class SSLContextSpi {
|
||||
/**
|
||||
* Initializes this context.
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2016, 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
|
||||
@ -97,8 +97,9 @@ import java.lang.SecurityManager;
|
||||
*
|
||||
* @deprecated As of JDK 1.4, this implementation-specific class was
|
||||
* replaced by {@link javax.net.ssl.SSLPermission}.
|
||||
* This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="1.4", forRemoval=true)
|
||||
public final class SSLPermission extends BasicPermission {
|
||||
|
||||
private static final long serialVersionUID = -2583684302506167542L;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2016, 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,7 +36,8 @@ package com.sun.net.ssl;
|
||||
*
|
||||
* @deprecated As of JDK 1.4, this implementation-specific class was
|
||||
* replaced by {@link javax.net.ssl.TrustManager}.
|
||||
* This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="1.4", forRemoval=true)
|
||||
public interface TrustManager {
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2016, 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,9 @@ import java.security.*;
|
||||
*
|
||||
* @deprecated As of JDK 1.4, this implementation-specific class was
|
||||
* replaced by {@link javax.net.ssl.TrustManagerFactory}.
|
||||
* This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="1.4", forRemoval=true)
|
||||
public class TrustManagerFactory {
|
||||
// The provider
|
||||
private Provider provider;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -41,8 +41,9 @@ import java.security.*;
|
||||
*
|
||||
* @deprecated As of JDK 1.4, this implementation-specific class was
|
||||
* replaced by {@link javax.net.ssl.TrustManagerFactorySpi}.
|
||||
* This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="1.4", forRemoval=true)
|
||||
public abstract class TrustManagerFactorySpi {
|
||||
/**
|
||||
* Initializes this factory with a source of certificate
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -41,8 +41,9 @@ import java.security.cert.X509Certificate;
|
||||
*
|
||||
* @deprecated As of JDK 1.4, this implementation-specific class was
|
||||
* replaced by {@link javax.net.ssl.X509KeyManager}.
|
||||
* This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="1.4", forRemoval=true)
|
||||
public interface X509KeyManager extends KeyManager {
|
||||
/**
|
||||
* Get the matching aliases for authenticating the client side of a secure
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2016, 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
|
||||
@ -40,8 +40,9 @@ import java.security.cert.X509Certificate;
|
||||
*
|
||||
* @deprecated As of JDK 1.4, this implementation-specific class was
|
||||
* replaced by {@link javax.net.ssl.X509TrustManager}.
|
||||
* This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="1.4", forRemoval=true)
|
||||
public interface X509TrustManager extends TrustManager {
|
||||
/**
|
||||
* Given the partial or complete certificate chain
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -31,7 +31,10 @@ import sun.security.ssl.SunJSSE;
|
||||
* Main class for the SunJSSE provider. The actual code was moved to the
|
||||
* class sun.security.ssl.SunJSSE, but for backward compatibility we
|
||||
* continue to use this class as the main Provider class.
|
||||
*
|
||||
* @deprecated This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated(since="9", forRemoval=true)
|
||||
public final class Provider extends SunJSSE {
|
||||
|
||||
private static final long serialVersionUID = 3231825739635378733L;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -54,7 +54,9 @@ import java.security.cert.CertificateException;
|
||||
*
|
||||
* @since 1.6
|
||||
* @author Xuelei Fan
|
||||
* @deprecated This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated(since="9", forRemoval=true)
|
||||
public abstract class X509ExtendedTrustManager implements X509TrustManager {
|
||||
/**
|
||||
* Constructor used by subclasses only.
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -52,7 +52,9 @@ import sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection;
|
||||
* of protocol implementation (this one)
|
||||
* com.sun.net.ssl.HttpURLConnection is used in the com.sun version.
|
||||
*
|
||||
* @deprecated This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated(since="9", forRemoval=true)
|
||||
@SuppressWarnings("deprecation") // HttpsURLConnection is deprecated
|
||||
public class DelegateHttpsURLConnection extends AbstractDelegateHttpsURLConnection {
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 2016, 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,7 +34,9 @@ import java.net.Proxy;
|
||||
* only. The HTTPS implementation can now be found in
|
||||
* sun.net.www.protocol.https.
|
||||
*
|
||||
* @deprecated This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
@Deprecated(since="9", forRemoval=true)
|
||||
public class Handler extends sun.net.www.protocol.https.Handler {
|
||||
|
||||
public Handler() {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -59,11 +59,13 @@ import sun.net.www.http.HttpClient;
|
||||
* needs to implement all public methods in it's super class and all
|
||||
* the way to Object.
|
||||
*
|
||||
* @deprecated This class is subject to removal in a future version of JDK.
|
||||
*/
|
||||
|
||||
// For both copies of the file, uncomment one line and comment the other
|
||||
// public class HttpsURLConnectionImpl
|
||||
// extends javax.net.ssl.HttpsURLConnection {
|
||||
@Deprecated(since="9", forRemoval=true)
|
||||
@SuppressWarnings("deprecation") // HttpsURLConnection is deprecated
|
||||
public class HttpsURLConnectionOldImpl
|
||||
extends com.sun.net.ssl.HttpsURLConnection {
|
||||
|
||||
@ -169,7 +169,7 @@ class NTLM {
|
||||
|
||||
byte[] readSecurityBuffer(int offset) throws NTLMException {
|
||||
int pos = readInt(offset+4);
|
||||
if (pos == 0) return null;
|
||||
if (pos == 0) return new byte[0];
|
||||
try {
|
||||
return Arrays.copyOfRange(
|
||||
internal, pos, pos + readShort(offset));
|
||||
|
||||
@ -1613,6 +1613,8 @@ public final class Math {
|
||||
* @return (<i>a</i> × <i>b</i> + <i>c</i>)
|
||||
* computed, as if with unlimited range and precision, and rounded
|
||||
* once to the nearest {@code double} value
|
||||
*
|
||||
* @since 9
|
||||
*/
|
||||
// @HotSpotIntrinsicCandidate
|
||||
public static double fma(double a, double b, double c) {
|
||||
@ -1728,6 +1730,8 @@ public final class Math {
|
||||
* @return (<i>a</i> × <i>b</i> + <i>c</i>)
|
||||
* computed, as if with unlimited range and precision, and rounded
|
||||
* once to the nearest {@code float} value
|
||||
*
|
||||
* @since 9
|
||||
*/
|
||||
// @HotSpotIntrinsicCandidate
|
||||
public static float fma(float a, float b, float c) {
|
||||
|
||||
@ -1276,6 +1276,8 @@ public final class StrictMath {
|
||||
* @return (<i>a</i> × <i>b</i> + <i>c</i>)
|
||||
* computed, as if with unlimited range and precision, and rounded
|
||||
* once to the nearest {@code double} value
|
||||
*
|
||||
* @since 9
|
||||
*/
|
||||
public static double fma(double a, double b, double c) {
|
||||
return Math.fma(a, b, c);
|
||||
@ -1328,6 +1330,8 @@ public final class StrictMath {
|
||||
* @return (<i>a</i> × <i>b</i> + <i>c</i>)
|
||||
* computed, as if with unlimited range and precision, and rounded
|
||||
* once to the nearest {@code float} value
|
||||
*
|
||||
* @since 9
|
||||
*/
|
||||
public static float fma(float a, float b, float c) {
|
||||
return Math.fma(a, b, c);
|
||||
|
||||
@ -60,7 +60,6 @@ class ThreadGroup implements Thread.UncaughtExceptionHandler {
|
||||
int maxPriority;
|
||||
boolean destroyed;
|
||||
boolean daemon;
|
||||
boolean vmAllowSuspension;
|
||||
|
||||
int nUnstartedThreads = 0;
|
||||
int nthreads;
|
||||
@ -121,7 +120,6 @@ class ThreadGroup implements Thread.UncaughtExceptionHandler {
|
||||
this.name = name;
|
||||
this.maxPriority = parent.maxPriority;
|
||||
this.daemon = parent.daemon;
|
||||
this.vmAllowSuspension = parent.vmAllowSuspension;
|
||||
this.parent = parent;
|
||||
parent.add(this);
|
||||
}
|
||||
@ -1075,10 +1073,6 @@ class ThreadGroup implements Thread.UncaughtExceptionHandler {
|
||||
*/
|
||||
@Deprecated(since="1.2")
|
||||
public boolean allowThreadSuspension(boolean b) {
|
||||
this.vmAllowSuspension = b;
|
||||
if (!b) {
|
||||
VM.unsuspendSomeThreads();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -67,19 +67,35 @@ class VersionProps {
|
||||
System.setProperty("java.runtime.name", java_runtime_name);
|
||||
}
|
||||
|
||||
static List<Integer> versionNumbers() {
|
||||
List<Integer> versionNumbers = new ArrayList<>(4);
|
||||
private static int parseVersionNumber(String version, int prevIndex, int index) {
|
||||
if (index - prevIndex > 1 &&
|
||||
Character.digit(version.charAt(prevIndex), 10) <= 0)
|
||||
throw new IllegalArgumentException("Leading zeros not supported (" +
|
||||
version.substring(prevIndex, index) + ")");
|
||||
return Integer.parseInt(version, prevIndex, index, 10);
|
||||
}
|
||||
|
||||
// This method is reflectively used by regression tests.
|
||||
static List<Integer> parseVersionNumbers(String version) {
|
||||
List<Integer> verNumbers = new ArrayList<>(4);
|
||||
int prevIndex = 0;
|
||||
int index = VERSION_NUMBER.indexOf('.');
|
||||
int index = version.indexOf('.');
|
||||
while (index > 0) {
|
||||
versionNumbers.add(
|
||||
Integer.parseInt(VERSION_NUMBER, prevIndex, index, 10));
|
||||
verNumbers.add(parseVersionNumber(version, prevIndex, index));
|
||||
prevIndex = index + 1; // Skip the period
|
||||
index = VERSION_NUMBER.indexOf('.', prevIndex);
|
||||
index = version.indexOf('.', prevIndex);
|
||||
}
|
||||
versionNumbers.add(Integer.parseInt(VERSION_NUMBER,
|
||||
prevIndex, VERSION_NUMBER.length(), 10));
|
||||
return versionNumbers;
|
||||
verNumbers.add(parseVersionNumber(version, prevIndex, version.length()));
|
||||
|
||||
if (verNumbers.get(0) == 0 || verNumbers.get(verNumbers.size() - 1) == 0)
|
||||
throw new IllegalArgumentException("Leading/trailing zeros not supported (" +
|
||||
verNumbers + ")");
|
||||
|
||||
return verNumbers;
|
||||
}
|
||||
|
||||
static List<Integer> versionNumbers() {
|
||||
return parseVersionNumbers(VERSION_NUMBER);
|
||||
}
|
||||
|
||||
static Optional<String> pre() {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2016, 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,7 +44,7 @@ public class AnnotationTypeMismatchException extends RuntimeException {
|
||||
/**
|
||||
* The {@code Method} object for the annotation element.
|
||||
*/
|
||||
private final Method element;
|
||||
private final transient Method element;
|
||||
|
||||
/**
|
||||
* The (erroneous) type of data found in the annotation. This string
|
||||
@ -57,10 +57,12 @@ public class AnnotationTypeMismatchException extends RuntimeException {
|
||||
* Constructs an AnnotationTypeMismatchException for the specified
|
||||
* annotation type element and found data type.
|
||||
*
|
||||
* @param element the {@code Method} object for the annotation element
|
||||
* @param element the {@code Method} object for the annotation
|
||||
* element, may be {@code null}
|
||||
* @param foundType the (erroneous) type of data found in the annotation.
|
||||
* This string may, but is not required to, contain the value
|
||||
* as well. The exact format of the string is unspecified.
|
||||
* as well. The exact format of the string is unspecified,
|
||||
* may be {@code null}.
|
||||
*/
|
||||
public AnnotationTypeMismatchException(Method element, String foundType) {
|
||||
super("Incorrectly typed data found for annotation element " + element
|
||||
@ -71,8 +73,11 @@ public class AnnotationTypeMismatchException extends RuntimeException {
|
||||
|
||||
/**
|
||||
* Returns the {@code Method} object for the incorrectly typed element.
|
||||
* The value may be unavailable if this exception has been
|
||||
* serialized and then read back in.
|
||||
*
|
||||
* @return the {@code Method} object for the incorrectly typed element
|
||||
* @return the {@code Method} object for the incorrectly typed
|
||||
* element, or {@code null} if unavailable
|
||||
*/
|
||||
public Method element() {
|
||||
return this.element;
|
||||
@ -81,7 +86,8 @@ public class AnnotationTypeMismatchException extends RuntimeException {
|
||||
/**
|
||||
* Returns the type of data found in the incorrectly typed element.
|
||||
* The returned string may, but is not required to, contain the value
|
||||
* as well. The exact format of the string is unspecified.
|
||||
* as well. The exact format of the string is unspecified and the string
|
||||
* may be {@code null}.
|
||||
*
|
||||
* @return the type of data found in the incorrectly typed element
|
||||
*/
|
||||
|
||||
@ -751,11 +751,25 @@ class InvokerBytecodeGenerator {
|
||||
classFileEpilogue();
|
||||
bogusMethod(lambdaForm);
|
||||
|
||||
final byte[] classFile = cw.toByteArray();
|
||||
final byte[] classFile;
|
||||
try {
|
||||
classFile = cw.toByteArray();
|
||||
} catch (RuntimeException e) {
|
||||
// ASM throws RuntimeException if something goes wrong - capture these and wrap them in a meaningful
|
||||
// exception to support falling back to LambdaForm interpretation
|
||||
throw new BytecodeGenerationException(e);
|
||||
}
|
||||
maybeDump(className, classFile);
|
||||
return classFile;
|
||||
}
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
static final class BytecodeGenerationException extends RuntimeException {
|
||||
BytecodeGenerationException(Exception cause) {
|
||||
super(cause);
|
||||
}
|
||||
}
|
||||
|
||||
void emitArrayLoad(Name name) { emitArrayOp(name, Opcodes.AALOAD); }
|
||||
void emitArrayStore(Name name) { emitArrayOp(name, Opcodes.AASTORE); }
|
||||
void emitArrayLength(Name name) { emitArrayOp(name, Opcodes.ARRAYLENGTH); }
|
||||
|
||||
@ -25,6 +25,7 @@
|
||||
|
||||
package java.lang.invoke;
|
||||
|
||||
import jdk.internal.perf.PerfCounter;
|
||||
import jdk.internal.vm.annotation.DontInline;
|
||||
import jdk.internal.vm.annotation.Stable;
|
||||
import sun.invoke.util.Wrapper;
|
||||
@ -39,8 +40,7 @@ import java.util.HashMap;
|
||||
|
||||
import static java.lang.invoke.LambdaForm.BasicType.*;
|
||||
import static java.lang.invoke.MethodHandleNatives.Constants.REF_invokeStatic;
|
||||
import static java.lang.invoke.MethodHandleStatics.debugEnabled;
|
||||
import static java.lang.invoke.MethodHandleStatics.newInternalError;
|
||||
import static java.lang.invoke.MethodHandleStatics.*;
|
||||
|
||||
/**
|
||||
* The symbolic, non-executable form of a method handle's invocation semantics.
|
||||
@ -396,7 +396,7 @@ class LambdaForm {
|
||||
/** Customize LambdaForm for a particular MethodHandle */
|
||||
LambdaForm customize(MethodHandle mh) {
|
||||
LambdaForm customForm = new LambdaForm(debugName, arity, names, result, forceInline, mh);
|
||||
if (COMPILE_THRESHOLD > 0 && isCompiled) {
|
||||
if (COMPILE_THRESHOLD >= 0 && isCompiled) {
|
||||
// If shared LambdaForm has been compiled, compile customized version as well.
|
||||
customForm.compileToBytecode();
|
||||
}
|
||||
@ -411,7 +411,7 @@ class LambdaForm {
|
||||
}
|
||||
assert(transformCache != null); // Customized LambdaForm should always has a link to uncustomized version.
|
||||
LambdaForm uncustomizedForm = (LambdaForm)transformCache;
|
||||
if (COMPILE_THRESHOLD > 0 && isCompiled) {
|
||||
if (COMPILE_THRESHOLD >= 0 && isCompiled) {
|
||||
// If customized LambdaForm has been compiled, compile uncustomized version as well.
|
||||
uncustomizedForm.compileToBytecode();
|
||||
}
|
||||
@ -717,7 +717,7 @@ class LambdaForm {
|
||||
* as a sort of pre-invocation linkage step.)
|
||||
*/
|
||||
public void prepare() {
|
||||
if (COMPILE_THRESHOLD == 0 && !isCompiled) {
|
||||
if (COMPILE_THRESHOLD == 0 && !forceInterpretation() && !isCompiled) {
|
||||
compileToBytecode();
|
||||
}
|
||||
if (this.vmentry != null) {
|
||||
@ -736,10 +736,22 @@ class LambdaForm {
|
||||
// TO DO: Maybe add invokeGeneric, invokeWithArguments
|
||||
}
|
||||
|
||||
private static @Stable PerfCounter LF_FAILED;
|
||||
|
||||
private static PerfCounter failedCompilationCounter() {
|
||||
if (LF_FAILED == null) {
|
||||
LF_FAILED = PerfCounter.newPerfCounter("java.lang.invoke.failedLambdaFormCompilations");
|
||||
}
|
||||
return LF_FAILED;
|
||||
}
|
||||
|
||||
/** Generate optimizable bytecode for this form. */
|
||||
MemberName compileToBytecode() {
|
||||
void compileToBytecode() {
|
||||
if (forceInterpretation()) {
|
||||
return; // this should not be compiled
|
||||
}
|
||||
if (vmentry != null && isCompiled) {
|
||||
return vmentry; // already compiled somehow
|
||||
return; // already compiled somehow
|
||||
}
|
||||
MethodType invokerType = methodType();
|
||||
assert(vmentry == null || vmentry.getMethodType().basicType().equals(invokerType));
|
||||
@ -748,9 +760,16 @@ class LambdaForm {
|
||||
if (TRACE_INTERPRETER)
|
||||
traceInterpreter("compileToBytecode", this);
|
||||
isCompiled = true;
|
||||
return vmentry;
|
||||
} catch (Error | Exception ex) {
|
||||
throw newInternalError(this.toString(), ex);
|
||||
} catch (InvokerBytecodeGenerator.BytecodeGenerationException bge) {
|
||||
// bytecode generation failed - mark this LambdaForm as to be run in interpretation mode only
|
||||
invocationCounter = -1;
|
||||
failedCompilationCounter().increment();
|
||||
if (LOG_LF_COMPILATION_FAILURE) {
|
||||
System.out.println("LambdaForm compilation failed: " + this);
|
||||
bge.printStackTrace(System.out);
|
||||
}
|
||||
} catch (Error | Exception e) {
|
||||
throw newInternalError(this.toString(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@ -856,7 +875,11 @@ class LambdaForm {
|
||||
static {
|
||||
COMPILE_THRESHOLD = Math.max(-1, MethodHandleStatics.COMPILE_THRESHOLD);
|
||||
}
|
||||
private int invocationCounter = 0;
|
||||
private int invocationCounter = 0; // a value of -1 indicates LambdaForm interpretation mode forever
|
||||
|
||||
private boolean forceInterpretation() {
|
||||
return invocationCounter == -1;
|
||||
}
|
||||
|
||||
@Hidden
|
||||
@DontInline
|
||||
@ -896,7 +919,7 @@ class LambdaForm {
|
||||
|
||||
private void checkInvocationCounter() {
|
||||
if (COMPILE_THRESHOLD != 0 &&
|
||||
invocationCounter < COMPILE_THRESHOLD) {
|
||||
!forceInterpretation() && invocationCounter < COMPILE_THRESHOLD) {
|
||||
invocationCounter++; // benign race
|
||||
if (invocationCounter >= COMPILE_THRESHOLD) {
|
||||
// Replace vmentry with a bytecode version of this LF.
|
||||
@ -906,7 +929,7 @@ class LambdaForm {
|
||||
}
|
||||
Object interpretWithArgumentsTracing(Object... argumentValues) throws Throwable {
|
||||
traceInterpreter("[ interpretWithArguments", this, argumentValues);
|
||||
if (invocationCounter < COMPILE_THRESHOLD) {
|
||||
if (!forceInterpretation() && invocationCounter < COMPILE_THRESHOLD) {
|
||||
int ctr = invocationCounter++; // benign race
|
||||
traceInterpreter("| invocationCounter", ctr);
|
||||
if (invocationCounter >= COMPILE_THRESHOLD) {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -25,10 +25,11 @@
|
||||
|
||||
package java.lang.invoke;
|
||||
|
||||
import java.util.Properties;
|
||||
import jdk.internal.misc.Unsafe;
|
||||
import sun.security.action.GetPropertyAction;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* This class consists exclusively of static names internal to the
|
||||
* method handle implementation.
|
||||
@ -46,6 +47,7 @@ import sun.security.action.GetPropertyAction;
|
||||
static final boolean TRACE_INTERPRETER;
|
||||
static final boolean TRACE_METHOD_LINKAGE;
|
||||
static final int COMPILE_THRESHOLD;
|
||||
static final boolean LOG_LF_COMPILATION_FAILURE;
|
||||
static final int DONT_INLINE_THRESHOLD;
|
||||
static final int PROFILE_LEVEL;
|
||||
static final boolean PROFILE_GWT;
|
||||
@ -64,6 +66,8 @@ import sun.security.action.GetPropertyAction;
|
||||
props.getProperty("java.lang.invoke.MethodHandle.TRACE_METHOD_LINKAGE"));
|
||||
COMPILE_THRESHOLD = Integer.parseInt(
|
||||
props.getProperty("java.lang.invoke.MethodHandle.COMPILE_THRESHOLD", "0"));
|
||||
LOG_LF_COMPILATION_FAILURE = Boolean.parseBoolean(
|
||||
props.getProperty("java.lang.invoke.MethodHandle.LOG_LF_COMPILATION_FAILURE", "false"));
|
||||
DONT_INLINE_THRESHOLD = Integer.parseInt(
|
||||
props.getProperty("java.lang.invoke.MethodHandle.DONT_INLINE_THRESHOLD", "30"));
|
||||
PROFILE_LEVEL = Integer.parseInt(
|
||||
@ -87,7 +91,8 @@ import sun.security.action.GetPropertyAction;
|
||||
return (DEBUG_METHOD_HANDLE_NAMES |
|
||||
DUMP_CLASS_FILES |
|
||||
TRACE_INTERPRETER |
|
||||
TRACE_METHOD_LINKAGE);
|
||||
TRACE_METHOD_LINKAGE |
|
||||
LOG_LF_COMPILATION_FAILURE);
|
||||
}
|
||||
|
||||
// handy shared exception makers (they simplify the common case code)
|
||||
|
||||
@ -1208,22 +1208,43 @@ assertEquals(""+l, (String) MH_this.invokeExact(subl)); // Listie method
|
||||
* <ul>
|
||||
* <li>if the field is declared {@code final}, then the write, atomic
|
||||
* update, and numeric atomic update access modes are unsupported.
|
||||
* <li>if the field type is anything other than {@code int},
|
||||
* {@code long} or a reference type, then atomic update access modes
|
||||
* are unsupported. (Future major platform releases of the JDK may
|
||||
* support additional types for certain currently unsupported access
|
||||
* modes.)
|
||||
* <li>if the field type is anything other than {@code int} or
|
||||
* {@code long}, then numeric atomic update access modes are
|
||||
* unsupported. (Future major platform releases of the JDK may
|
||||
* support additional numeric types for certain currently
|
||||
* unsupported access modes.)
|
||||
* <li>if the field type is anything other than {@code byte},
|
||||
* {@code short}, {@code char}, {@code int} or {@code long},
|
||||
* {@code float}, or {@code double} then numeric atomic update
|
||||
* access modes are unsupported.
|
||||
* </ul>
|
||||
* <p>
|
||||
* If the field is declared {@code volatile} then the returned VarHandle
|
||||
* will override access to the field (effectively ignore the
|
||||
* {@code volatile} declaration) in accordance to it's specified
|
||||
* access modes.
|
||||
* <p>
|
||||
* If the field type is {@code float} or {@code double} then numeric
|
||||
* and atomic update access modes compare values using their bitwise
|
||||
* representation (see {@link Float#floatToRawIntBits} and
|
||||
* {@link Double#doubleToRawLongBits}, respectively).
|
||||
* @apiNote
|
||||
* Bitwise comparison of {@code float} values or {@code double} values,
|
||||
* as performed by the numeric and atomic update access modes, differ
|
||||
* from the primitive {@code ==} operator and the {@link Float#equals}
|
||||
* and {@link Double#equals} methods, specifically with respect to
|
||||
* comparing NaN values or comparing {@code -0.0} with {@code +0.0}.
|
||||
* Care should be taken when performing a compare and set or a compare
|
||||
* and exchange operation with such values since the operation may
|
||||
* unexpectedly fail.
|
||||
* There are many possible NaN values that are considered to be
|
||||
* {@code NaN} in Java, although no IEEE 754 floating-point operation
|
||||
* provided by Java can distinguish between them. Operation failure can
|
||||
* occur if the expected or witness value is a NaN value and it is
|
||||
* transformed (perhaps in a platform specific manner) into another NaN
|
||||
* value, and thus has a different bitwise representation (see
|
||||
* {@link Float#intBitsToFloat} or {@link Double#longBitsToDouble} for more
|
||||
* details).
|
||||
* The values {@code -0.0} and {@code +0.0} have different bitwise
|
||||
* representations but are considered equal when using the primitive
|
||||
* {@code ==} operator. Operation failure can occur if, for example, a
|
||||
* numeric algorithm computes an expected value to be say {@code -0.0}
|
||||
* and previously computed the witness value to be say {@code +0.0}.
|
||||
* @param recv the receiver class, of type {@code R}, that declares the
|
||||
* non-static field
|
||||
* @param name the field's name
|
||||
@ -1306,22 +1327,43 @@ assertEquals(""+l, (String) MH_this.invokeExact(subl)); // Listie method
|
||||
* <ul>
|
||||
* <li>if the field is declared {@code final}, then the write, atomic
|
||||
* update, and numeric atomic update access modes are unsupported.
|
||||
* <li>if the field type is anything other than {@code int},
|
||||
* {@code long} or a reference type, then atomic update access modes
|
||||
* are unsupported. (Future major platform releases of the JDK may
|
||||
* support additional types for certain currently unsupported access
|
||||
* modes.)
|
||||
* <li>if the field type is anything other than {@code int} or
|
||||
* {@code long}, then numeric atomic update access modes are
|
||||
* unsupported. (Future major platform releases of the JDK may
|
||||
* support additional numeric types for certain currently
|
||||
* unsupported access modes.)
|
||||
* <li>if the field type is anything other than {@code byte},
|
||||
* {@code short}, {@code char}, {@code int} or {@code long},
|
||||
* {@code float}, or {@code double}, then numeric atomic update
|
||||
* access modes are unsupported.
|
||||
* </ul>
|
||||
* <p>
|
||||
* If the field is declared {@code volatile} then the returned VarHandle
|
||||
* will override access to the field (effectively ignore the
|
||||
* {@code volatile} declaration) in accordance to it's specified
|
||||
* access modes.
|
||||
* <p>
|
||||
* If the field type is {@code float} or {@code double} then numeric
|
||||
* and atomic update access modes compare values using their bitwise
|
||||
* representation (see {@link Float#floatToRawIntBits} and
|
||||
* {@link Double#doubleToRawLongBits}, respectively).
|
||||
* @apiNote
|
||||
* Bitwise comparison of {@code float} values or {@code double} values,
|
||||
* as performed by the numeric and atomic update access modes, differ
|
||||
* from the primitive {@code ==} operator and the {@link Float#equals}
|
||||
* and {@link Double#equals} methods, specifically with respect to
|
||||
* comparing NaN values or comparing {@code -0.0} with {@code +0.0}.
|
||||
* Care should be taken when performing a compare and set or a compare
|
||||
* and exchange operation with such values since the operation may
|
||||
* unexpectedly fail.
|
||||
* There are many possible NaN values that are considered to be
|
||||
* {@code NaN} in Java, although no IEEE 754 floating-point operation
|
||||
* provided by Java can distinguish between them. Operation failure can
|
||||
* occur if the expected or witness value is a NaN value and it is
|
||||
* transformed (perhaps in a platform specific manner) into another NaN
|
||||
* value, and thus has a different bitwise representation (see
|
||||
* {@link Float#intBitsToFloat} or {@link Double#longBitsToDouble} for more
|
||||
* details).
|
||||
* The values {@code -0.0} and {@code +0.0} have different bitwise
|
||||
* representations but are considered equal when using the primitive
|
||||
* {@code ==} operator. Operation failure can occur if, for example, a
|
||||
* numeric algorithm computes an expected value to be say {@code -0.0}
|
||||
* and previously computed the witness value to be say {@code +0.0}.
|
||||
* @param decl the class that declares the static field
|
||||
* @param name the field's name
|
||||
* @param type the field's type, of type {@code T}
|
||||
@ -1590,22 +1632,43 @@ return mh1;
|
||||
* <ul>
|
||||
* <li>if the field is declared {@code final}, then the write, atomic
|
||||
* update, and numeric atomic update access modes are unsupported.
|
||||
* <li>if the field type is anything other than {@code int},
|
||||
* {@code long} or a reference type, then atomic update access modes
|
||||
* are unsupported. (Future major platform releases of the JDK may
|
||||
* support additional types for certain currently unsupported access
|
||||
* modes.)
|
||||
* <li>if the field type is anything other than {@code int} or
|
||||
* {@code long}, then numeric atomic update access modes are
|
||||
* unsupported. (Future major platform releases of the JDK may
|
||||
* support additional numeric types for certain currently
|
||||
* unsupported access modes.)
|
||||
* <li>if the field type is anything other than {@code byte},
|
||||
* {@code short}, {@code char}, {@code int} or {@code long},
|
||||
* {@code float}, or {@code double} then numeric atomic update
|
||||
* access modes are unsupported.
|
||||
* </ul>
|
||||
* <p>
|
||||
* If the field is declared {@code volatile} then the returned VarHandle
|
||||
* will override access to the field (effectively ignore the
|
||||
* {@code volatile} declaration) in accordance to it's specified
|
||||
* access modes.
|
||||
* <p>
|
||||
* If the field type is {@code float} or {@code double} then numeric
|
||||
* and atomic update access modes compare values using their bitwise
|
||||
* representation (see {@link Float#floatToRawIntBits} and
|
||||
* {@link Double#doubleToRawLongBits}, respectively).
|
||||
* @apiNote
|
||||
* Bitwise comparison of {@code float} values or {@code double} values,
|
||||
* as performed by the numeric and atomic update access modes, differ
|
||||
* from the primitive {@code ==} operator and the {@link Float#equals}
|
||||
* and {@link Double#equals} methods, specifically with respect to
|
||||
* comparing NaN values or comparing {@code -0.0} with {@code +0.0}.
|
||||
* Care should be taken when performing a compare and set or a compare
|
||||
* and exchange operation with such values since the operation may
|
||||
* unexpectedly fail.
|
||||
* There are many possible NaN values that are considered to be
|
||||
* {@code NaN} in Java, although no IEEE 754 floating-point operation
|
||||
* provided by Java can distinguish between them. Operation failure can
|
||||
* occur if the expected or witness value is a NaN value and it is
|
||||
* transformed (perhaps in a platform specific manner) into another NaN
|
||||
* value, and thus has a different bitwise representation (see
|
||||
* {@link Float#intBitsToFloat} or {@link Double#longBitsToDouble} for more
|
||||
* details).
|
||||
* The values {@code -0.0} and {@code +0.0} have different bitwise
|
||||
* representations but are considered equal when using the primitive
|
||||
* {@code ==} operator. Operation failure can occur if, for example, a
|
||||
* numeric algorithm computes an expected value to be say {@code -0.0}
|
||||
* and previously computed the witness value to be say {@code +0.0}.
|
||||
* @param f the reflected field, with a field of type {@code T}, and
|
||||
* a declaring class of type {@code R}
|
||||
* @return a VarHandle giving access to non-static fields or a static
|
||||
@ -2289,17 +2352,38 @@ return mh1;
|
||||
* Certain access modes of the returned VarHandle are unsupported under
|
||||
* the following conditions:
|
||||
* <ul>
|
||||
* <li>if the component type is anything other than {@code int},
|
||||
* {@code long} or a reference type, then atomic update access modes
|
||||
* are unsupported. (Future major platform releases of the JDK may
|
||||
* support additional types for certain currently unsupported access
|
||||
* modes.)
|
||||
* <li>if the component type is anything other than {@code int} or
|
||||
* {@code long}, then numeric atomic update access modes are
|
||||
* unsupported. (Future major platform releases of the JDK may
|
||||
* support additional numeric types for certain currently
|
||||
* unsupported access modes.)
|
||||
* <li>if the component type is anything other than {@code byte},
|
||||
* {@code short}, {@code char}, {@code int} or {@code long},
|
||||
* {@code float}, or {@code double} then numeric atomic update access
|
||||
* modes are unsupported.
|
||||
* </ul>
|
||||
* <p>
|
||||
* If the component type is {@code float} or {@code double} then numeric
|
||||
* and atomic update access modes compare values using their bitwise
|
||||
* representation (see {@link Float#floatToRawIntBits} and
|
||||
* {@link Double#doubleToRawLongBits}, respectively).
|
||||
* @apiNote
|
||||
* Bitwise comparison of {@code float} values or {@code double} values,
|
||||
* as performed by the numeric and atomic update access modes, differ
|
||||
* from the primitive {@code ==} operator and the {@link Float#equals}
|
||||
* and {@link Double#equals} methods, specifically with respect to
|
||||
* comparing NaN values or comparing {@code -0.0} with {@code +0.0}.
|
||||
* Care should be taken when performing a compare and set or a compare
|
||||
* and exchange operation with such values since the operation may
|
||||
* unexpectedly fail.
|
||||
* There are many possible NaN values that are considered to be
|
||||
* {@code NaN} in Java, although no IEEE 754 floating-point operation
|
||||
* provided by Java can distinguish between them. Operation failure can
|
||||
* occur if the expected or witness value is a NaN value and it is
|
||||
* transformed (perhaps in a platform specific manner) into another NaN
|
||||
* value, and thus has a different bitwise representation (see
|
||||
* {@link Float#intBitsToFloat} or {@link Double#longBitsToDouble} for more
|
||||
* details).
|
||||
* The values {@code -0.0} and {@code +0.0} have different bitwise
|
||||
* representations but are considered equal when using the primitive
|
||||
* {@code ==} operator. Operation failure can occur if, for example, a
|
||||
* numeric algorithm computes an expected value to be say {@code -0.0}
|
||||
* and previously computed the witness value to be say {@code +0.0}.
|
||||
* @param arrayClass the class of an array, of type {@code T[]}
|
||||
* @return a VarHandle giving access to elements of an array
|
||||
* @throws NullPointerException if the arrayClass is null
|
||||
@ -2363,16 +2447,11 @@ return mh1;
|
||||
* int misalignedAtIndex = (misalignedAtZeroIndex + index) % sizeOfT;
|
||||
* boolean isMisaligned = misalignedAtIndex != 0;
|
||||
* }</pre>
|
||||
*
|
||||
* @implNote
|
||||
* The variable types {@code float} and {@code double} are supported as if
|
||||
* by transformation to and access with the variable types {@code int} and
|
||||
* {@code long} respectively. For example, the transformation of a
|
||||
* {@code double} value to a long value is performed as if using
|
||||
* {@link Double#doubleToRawLongBits(double)}, and the reverse
|
||||
* transformation is performed as if using
|
||||
* {@link Double#longBitsToDouble(long)}.
|
||||
*
|
||||
* <p>
|
||||
* If the variable type is {@code float} or {@code double} then atomic
|
||||
* update access modes compare values using their bitwise representation
|
||||
* (see {@link Float#floatToRawIntBits} and
|
||||
* {@link Double#doubleToRawLongBits}, respectively).
|
||||
* @param viewArrayClass the view array class, with a component type of
|
||||
* type {@code T}
|
||||
* @param byteOrder the endianness of the view array elements, as
|
||||
@ -2449,16 +2528,11 @@ return mh1;
|
||||
* int misalignedAtIndex = bb.alignmentOffset(index, sizeOfT);
|
||||
* boolean isMisaligned = misalignedAtIndex != 0;
|
||||
* }</pre>
|
||||
*
|
||||
* @implNote
|
||||
* The variable types {@code float} and {@code double} are supported as if
|
||||
* by transformation to and access with the variable types {@code int} and
|
||||
* {@code long} respectively. For example, the transformation of a
|
||||
* {@code double} value to a long value is performed as if using
|
||||
* {@link Double#doubleToRawLongBits(double)}, and the reverse
|
||||
* transformation is performed as if using
|
||||
* {@link Double#longBitsToDouble(long)}.
|
||||
*
|
||||
* <p>
|
||||
* If the variable type is {@code float} or {@code double} then atomic
|
||||
* update access modes compare values using their bitwise representation
|
||||
* (see {@link Float#floatToRawIntBits} and
|
||||
* {@link Double#doubleToRawLongBits}, respectively).
|
||||
* @param viewArrayClass the view array class, with a component type of
|
||||
* type {@code T}
|
||||
* @param byteOrder the endianness of the view array elements, as
|
||||
@ -3353,7 +3427,8 @@ assertEquals("xy", h3.invoke("x", "y", 1, "a", "b", "c"));
|
||||
* @return a possibly adapted method handle
|
||||
* @throws NullPointerException if either argument is null
|
||||
* @throws IllegalArgumentException if any element of {@code newTypes} is {@code void.class},
|
||||
* or if either index is out of range in its corresponding list,
|
||||
* or if {@code skip} is negative or greater than the arity of the target,
|
||||
* or if {@code pos} is negative or greater than the newTypes list size,
|
||||
* or if the non-skipped target parameter types match the new types at {@code pos}
|
||||
* @since 9
|
||||
*/
|
||||
|
||||
@ -139,7 +139,7 @@ import static java.lang.invoke.MethodHandleStatics.newInternalError;
|
||||
* {@link #weakCompareAndSetAcquire weakCompareAndSetAcquire},
|
||||
* {@link #weakCompareAndSetRelease weakCompareAndSetRelease},
|
||||
* {@link #compareAndExchangeAcquire compareAndExchangeAcquire},
|
||||
* {@link #compareAndExchangeVolatile compareAndExchangeVolatile},
|
||||
* {@link #compareAndExchange compareAndExchange},
|
||||
* {@link #compareAndExchangeRelease compareAndExchangeRelease},
|
||||
* {@link #getAndSet getAndSet}.
|
||||
* <li>numeric atomic update access modes that, for example, atomically get and
|
||||
@ -706,9 +706,9 @@ public abstract class VarHandle {
|
||||
* <p>The method signature is of the form {@code (CT, T expectedValue, T newValue)T}.
|
||||
*
|
||||
* <p>The symbolic type descriptor at the call site of {@code
|
||||
* compareAndExchangeVolatile}
|
||||
* compareAndExchange}
|
||||
* must match the access mode type that is the result of calling
|
||||
* {@code accessModeType(VarHandle.AccessMode.COMPARE_AND_EXCHANGE_VOLATILE)}
|
||||
* {@code accessModeType(VarHandle.AccessMode.COMPARE_AND_EXCHANGE)}
|
||||
* on this VarHandle.
|
||||
*
|
||||
* @param args the signature-polymorphic parameter list of the form
|
||||
@ -729,7 +729,7 @@ public abstract class VarHandle {
|
||||
public final native
|
||||
@MethodHandle.PolymorphicSignature
|
||||
@HotSpotIntrinsicCandidate
|
||||
Object compareAndExchangeVolatile(Object... args);
|
||||
Object compareAndExchange(Object... args);
|
||||
|
||||
/**
|
||||
* Atomically sets the value of a variable to the {@code newValue} with the
|
||||
@ -1199,9 +1199,9 @@ public abstract class VarHandle {
|
||||
/**
|
||||
* The access mode whose access is specified by the corresponding
|
||||
* method
|
||||
* {@link VarHandle#compareAndExchangeVolatile VarHandle.compareAndExchangeVolatile}
|
||||
* {@link VarHandle#compareAndExchange VarHandle.compareAndExchange}
|
||||
*/
|
||||
COMPARE_AND_EXCHANGE_VOLATILE("compareAndExchangeVolatile", AccessType.COMPARE_AND_EXCHANGE),
|
||||
COMPARE_AND_EXCHANGE("compareAndExchange", AccessType.COMPARE_AND_EXCHANGE),
|
||||
/**
|
||||
* The access mode whose access is specified by the corresponding
|
||||
* method
|
||||
|
||||
@ -132,7 +132,7 @@ final class VarHandle$Type$s {
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
static $type$ compareAndExchangeVolatile(FieldInstanceReadWrite handle, Object holder, $type$ expected, $type$ value) {
|
||||
static $type$ compareAndExchange(FieldInstanceReadWrite handle, Object holder, $type$ expected, $type$ value) {
|
||||
return UNSAFE.compareAndExchange$Type$Volatile(Objects.requireNonNull(handle.receiverType.cast(holder)),
|
||||
handle.fieldOffset,
|
||||
{#if[Object]?handle.fieldType.cast(expected):expected},
|
||||
@ -205,9 +205,9 @@ final class VarHandle$Type$s {
|
||||
|
||||
@ForceInline
|
||||
static $type$ addAndGet(FieldInstanceReadWrite handle, Object holder, $type$ value) {
|
||||
return UNSAFE.getAndAdd$Type$(Objects.requireNonNull(handle.receiverType.cast(holder)),
|
||||
return {#if[ShorterThanInt]?($type$)}(UNSAFE.getAndAdd$Type$(Objects.requireNonNull(handle.receiverType.cast(holder)),
|
||||
handle.fieldOffset,
|
||||
value) + value;
|
||||
value) + value);
|
||||
}
|
||||
#end[AtomicAdd]
|
||||
|
||||
@ -313,7 +313,7 @@ final class VarHandle$Type$s {
|
||||
|
||||
|
||||
@ForceInline
|
||||
static $type$ compareAndExchangeVolatile(FieldStaticReadWrite handle, $type$ expected, $type$ value) {
|
||||
static $type$ compareAndExchange(FieldStaticReadWrite handle, $type$ expected, $type$ value) {
|
||||
return UNSAFE.compareAndExchange$Type$Volatile(handle.base,
|
||||
handle.fieldOffset,
|
||||
{#if[Object]?handle.fieldType.cast(expected):expected},
|
||||
@ -386,9 +386,9 @@ final class VarHandle$Type$s {
|
||||
|
||||
@ForceInline
|
||||
static $type$ addAndGet(FieldStaticReadWrite handle, $type$ value) {
|
||||
return UNSAFE.getAndAdd$Type$(handle.base,
|
||||
return {#if[ShorterThanInt]?($type$)}(UNSAFE.getAndAdd$Type$(handle.base,
|
||||
handle.fieldOffset,
|
||||
value) + value;
|
||||
value) + value);
|
||||
}
|
||||
#end[AtomicAdd]
|
||||
|
||||
@ -523,7 +523,7 @@ final class VarHandle$Type$s {
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
static $type$ compareAndExchangeVolatile(Array handle, Object oarray, int index, $type$ expected, $type$ value) {
|
||||
static $type$ compareAndExchange(Array handle, Object oarray, int index, $type$ expected, $type$ value) {
|
||||
#if[Object]
|
||||
Object[] array = (Object[]) handle.arrayType.cast(oarray);
|
||||
#else[Object]
|
||||
@ -646,9 +646,9 @@ final class VarHandle$Type$s {
|
||||
#else[Object]
|
||||
$type$[] array = ($type$[]) oarray;
|
||||
#end[Object]
|
||||
return UNSAFE.getAndAdd$Type$(array,
|
||||
return {#if[ShorterThanInt]?($type$)}(UNSAFE.getAndAdd$Type$(array,
|
||||
(((long) Preconditions.checkIndex(index, array.length, AIOOBE_SUPPLIER)) << handle.ashift) + handle.abase,
|
||||
value) + value;
|
||||
value) + value);
|
||||
}
|
||||
#end[AtomicAdd]
|
||||
|
||||
|
||||
@ -193,7 +193,7 @@ final class VarHandleByteArrayAs$Type$s extends VarHandleByteArrayBase {
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
static $type$ compareAndExchangeVolatile(ArrayHandle handle, Object oba, int index, $type$ expected, $type$ value) {
|
||||
static $type$ compareAndExchange(ArrayHandle handle, Object oba, int index, $type$ expected, $type$ value) {
|
||||
byte[] ba = (byte[]) oba;
|
||||
return convEndian(handle.be,
|
||||
UNSAFE.compareAndExchange$RawType$Volatile(
|
||||
@ -436,7 +436,7 @@ final class VarHandleByteArrayAs$Type$s extends VarHandleByteArrayBase {
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
static $type$ compareAndExchangeVolatile(ByteBufferHandle handle, Object obb, int index, $type$ expected, $type$ value) {
|
||||
static $type$ compareAndExchange(ByteBufferHandle handle, Object obb, int index, $type$ expected, $type$ value) {
|
||||
ByteBuffer bb = (ByteBuffer) obb;
|
||||
return convEndian(handle.be,
|
||||
UNSAFE.compareAndExchange$RawType$Volatile(
|
||||
|
||||
@ -523,7 +523,7 @@ class ModulePath implements ConfigurableModuleFinder {
|
||||
try (JarFile jf = new JarFile(file.toFile(),
|
||||
true, // verify
|
||||
ZipFile.OPEN_READ,
|
||||
JarFile.Release.RUNTIME))
|
||||
JarFile.runtimeVersion()))
|
||||
{
|
||||
ModuleDescriptor md;
|
||||
JarEntry entry = jf.getJarEntry(MODULE_INFO);
|
||||
|
||||
@ -201,7 +201,7 @@ class ModuleReferences {
|
||||
return new JarFile(path.toFile(),
|
||||
true, // verify
|
||||
ZipFile.OPEN_READ,
|
||||
JarFile.Release.RUNTIME);
|
||||
JarFile.runtimeVersion());
|
||||
} catch (IOException ioe) {
|
||||
throw new UncheckedIOException(ioe);
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2016 Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
||||
@ -59,9 +59,11 @@ import sun.security.util.SecurityConstants;
|
||||
|
||||
/**
|
||||
* This class loader is used to load classes and resources from a search
|
||||
* path of URLs referring to both JAR files and directories. Any URL that
|
||||
* ends with a '/' is assumed to refer to a directory. Otherwise, the URL
|
||||
* is assumed to refer to a JAR file which will be opened as needed.
|
||||
* path of URLs referring to both JAR files and directories. Any {@code jar:}
|
||||
* scheme URL (see {@link java.net.JarURLConnection}) is assumed to refer to a
|
||||
* JAR file. Any {@code file:} scheme URL that ends with a '/' is assumed to
|
||||
* refer to a directory. Otherwise, the URL is assumed to refer to a JAR file
|
||||
* which will be opened as needed.
|
||||
* <p>
|
||||
* The AccessControlContext of the thread that created the instance of
|
||||
* URLClassLoader will be used when subsequently loading classes and
|
||||
@ -83,9 +85,11 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
|
||||
/**
|
||||
* Constructs a new URLClassLoader for the given URLs. The URLs will be
|
||||
* searched in the order specified for classes and resources after first
|
||||
* searching in the specified parent class loader. Any URL that ends with
|
||||
* a '/' is assumed to refer to a directory. Otherwise, the URL is assumed
|
||||
* to refer to a JAR file which will be downloaded and opened as needed.
|
||||
* searching in the specified parent class loader. Any {@code jar:}
|
||||
* scheme URL is assumed to refer to a JAR file. Any {@code file:} scheme
|
||||
* URL that ends with a '/' is assumed to refer to a directory. Otherwise,
|
||||
* the URL is assumed to refer to a JAR file which will be downloaded and
|
||||
* opened as needed.
|
||||
*
|
||||
* <p>If there is a security manager, this method first
|
||||
* calls the security manager's {@code checkCreateClassLoader} method
|
||||
|
||||
@ -3290,8 +3290,8 @@ public final class Files {
|
||||
* a size of {@code 0}. All bytes in the byte array are written to the file.
|
||||
* The method ensures that the file is closed when all bytes have been
|
||||
* written (or an I/O error or other runtime exception is thrown). If an I/O
|
||||
* error occurs then it may do so after the file has created or truncated,
|
||||
* or after some bytes have been written to the file.
|
||||
* error occurs then it may do so after the file has been created or
|
||||
* truncated, or after some bytes have been written to the file.
|
||||
*
|
||||
* <p> <b>Usage example</b>: By default the method creates a new file or
|
||||
* overwrites an existing file. Suppose you instead want to append bytes
|
||||
@ -3360,7 +3360,8 @@ public final class Files {
|
||||
* a size of {@code 0}. The method ensures that the file is closed when all
|
||||
* lines have been written (or an I/O error or other runtime exception is
|
||||
* thrown). If an I/O error occurs then it may do so after the file has
|
||||
* created or truncated, or after some bytes have been written to the file.
|
||||
* been created or truncated, or after some bytes have been written to the
|
||||
* file.
|
||||
*
|
||||
* @param path
|
||||
* the path to the file
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2016, 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
|
||||
@ -86,10 +86,9 @@ public class CodeSource implements java.io.Serializable {
|
||||
* Constructs a CodeSource and associates it with the specified
|
||||
* location and set of certificates.
|
||||
*
|
||||
* @param url the location (URL).
|
||||
*
|
||||
* @param certs the certificate(s). It may be null. The contents of the
|
||||
* array are copied to protect against subsequent modification.
|
||||
* @param url the location (URL). It may be {@code null}.
|
||||
* @param certs the certificate(s). It may be {@code null}. The contents
|
||||
* of the array are copied to protect against subsequent modification.
|
||||
*/
|
||||
public CodeSource(URL url, java.security.cert.Certificate[] certs) {
|
||||
this.location = url;
|
||||
@ -107,9 +106,9 @@ public class CodeSource implements java.io.Serializable {
|
||||
* Constructs a CodeSource and associates it with the specified
|
||||
* location and set of code signers.
|
||||
*
|
||||
* @param url the location (URL).
|
||||
* @param signers the code signers. It may be null. The contents of the
|
||||
* array are copied to protect against subsequent modification.
|
||||
* @param url the location (URL). It may be {@code null}.
|
||||
* @param signers the code signers. It may be {@code null}. The contents
|
||||
* of the array are copied to protect against subsequent modification.
|
||||
*
|
||||
* @since 1.5
|
||||
*/
|
||||
@ -176,7 +175,8 @@ public class CodeSource implements java.io.Serializable {
|
||||
/**
|
||||
* Returns the location associated with this CodeSource.
|
||||
*
|
||||
* @return the location (URL).
|
||||
* @return the location (URL), or {@code null} if no URL was supplied
|
||||
* during construction.
|
||||
*/
|
||||
public final URL getLocation() {
|
||||
/* since URL is practically immutable, returning itself is not
|
||||
@ -203,7 +203,8 @@ public class CodeSource implements java.io.Serializable {
|
||||
* bottom-to-top (i.e., with the signer certificate first and the (root)
|
||||
* certificate authority last).
|
||||
*
|
||||
* @return A copy of the certificates array, or null if there is none.
|
||||
* @return a copy of the certificate array, or {@code null} if there
|
||||
* is none.
|
||||
*/
|
||||
public final java.security.cert.Certificate[] getCertificates() {
|
||||
if (certs != null) {
|
||||
@ -235,7 +236,8 @@ public class CodeSource implements java.io.Serializable {
|
||||
* create an array of CodeSigner objects. Note that only X.509 certificates
|
||||
* are examined - all other certificate types are ignored.
|
||||
*
|
||||
* @return A copy of the code signer array, or null if there is none.
|
||||
* @return a copy of the code signer array, or {@code null} if there
|
||||
* is none.
|
||||
*
|
||||
* @since 1.5
|
||||
*/
|
||||
@ -322,7 +324,6 @@ public class CodeSource implements java.io.Serializable {
|
||||
* @return true if the specified codesource is implied by this codesource,
|
||||
* false if not.
|
||||
*/
|
||||
|
||||
public boolean implies(CodeSource codesource)
|
||||
{
|
||||
if (codesource == null)
|
||||
@ -336,7 +337,7 @@ public class CodeSource implements java.io.Serializable {
|
||||
* CodeSource are also in <i>that</i>.
|
||||
*
|
||||
* @param that the CodeSource to check against.
|
||||
* @param strict If true then a strict equality match is performed.
|
||||
* @param strict if true then a strict equality match is performed.
|
||||
* Otherwise a subset match is performed.
|
||||
*/
|
||||
boolean matchCerts(CodeSource that, boolean strict)
|
||||
@ -622,7 +623,7 @@ public class CodeSource implements java.io.Serializable {
|
||||
* The array of certificates is a concatenation of certificate chains
|
||||
* where the initial certificate in each chain is the end-entity cert.
|
||||
*
|
||||
* @return An array of code signers or null if none are generated.
|
||||
* @return an array of code signers or null if none are generated.
|
||||
*/
|
||||
private CodeSigner[] convertCertArrayToSignerArray(
|
||||
java.security.cert.Certificate[] certs) {
|
||||
|
||||
@ -439,7 +439,12 @@ public abstract class MessageDigest extends MessageDigestSpi {
|
||||
}
|
||||
|
||||
/**
|
||||
* Compares two digests for equality. Does a simple byte compare.
|
||||
* Compares two digests for equality. Two digests are equal if they have
|
||||
* the same length and all bytes at corresponding positions are equal.
|
||||
*
|
||||
* @implNote
|
||||
* If the digests are the same length, all bytes are examined to
|
||||
* determine equality.
|
||||
*
|
||||
* @param digesta one of the digests to compare.
|
||||
*
|
||||
|
||||
@ -418,7 +418,7 @@ public class DateFormatSymbols implements Serializable, Cloneable {
|
||||
* Gets short month strings. For example: "Jan", "Feb", etc.
|
||||
*
|
||||
* <p>If the language requires different forms for formatting and
|
||||
* stand-alone usages, This method returns short month names in
|
||||
* stand-alone usages, this method returns short month names in
|
||||
* the formatting form. For example, the preferred abbreviation
|
||||
* for January in the Catalan language is <em>de gen.</em> in the
|
||||
* formatting form, while it is <em>gen.</em> in the stand-alone
|
||||
|
||||
@ -276,9 +276,16 @@ import sun.util.locale.provider.LocaleProviderAdapter;
|
||||
* it is interpreted as a <a href="#number">number</a>.<br>
|
||||
* <ul>
|
||||
* <li>Letter <em>M</em> produces context-sensitive month names, such as the
|
||||
* embedded form of names. If a {@code DateFormatSymbols} has been set
|
||||
* explicitly with constructor {@link #SimpleDateFormat(String,
|
||||
* DateFormatSymbols)} or method {@link
|
||||
* embedded form of names. Letter <em>M</em> is context-sensitive in the
|
||||
* sense that when it is used in the standalone pattern, for example,
|
||||
* "MMMM", it gives the standalone form of a month name and when it is
|
||||
* used in the pattern containing other field(s), for example, "d MMMM",
|
||||
* it gives the format form of a month name. For example, January in the
|
||||
* Catalan language is "de gener" in the format form while it is "gener"
|
||||
* in the standalone form. In this case, "MMMM" will produce "gener" and
|
||||
* the month part of the "d MMMM" will produce "de gener". If a
|
||||
* {@code DateFormatSymbols} has been set explicitly with constructor
|
||||
* {@link #SimpleDateFormat(String,DateFormatSymbols)} or method {@link
|
||||
* #setDateFormatSymbols(DateFormatSymbols)}, the month names given by
|
||||
* the {@code DateFormatSymbols} are used.</li>
|
||||
* <li>Letter <em>L</em> produces the standalone form of month names.</li>
|
||||
|
||||
@ -25,6 +25,8 @@
|
||||
|
||||
package java.util;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
* This class provides a skeletal implementation of the {@link List}
|
||||
* interface to minimize the effort required to implement this interface
|
||||
@ -634,6 +636,115 @@ public abstract class AbstractList<E> extends AbstractCollection<E> implements L
|
||||
return "Index: "+index+", Size: "+size();
|
||||
}
|
||||
|
||||
/**
|
||||
* An index-based split-by-two, lazily initialized Spliterator covering
|
||||
* a List that access elements via {@link List#get}.
|
||||
*
|
||||
* If access results in an IndexOutOfBoundsException then a
|
||||
* ConcurrentModificationException is thrown instead (since the list has
|
||||
* been structurally modified while traversing).
|
||||
*
|
||||
* If the List is an instance of AbstractList then concurrent modification
|
||||
* checking is performed using the AbstractList's modCount field.
|
||||
*/
|
||||
static final class RandomAccessSpliterator<E> implements Spliterator<E> {
|
||||
|
||||
private final List<E> list;
|
||||
private int index; // current index, modified on advance/split
|
||||
private int fence; // -1 until used; then one past last index
|
||||
|
||||
// The following fields are valid if covering an AbstractList
|
||||
private final AbstractList<E> alist;
|
||||
private int expectedModCount; // initialized when fence set
|
||||
|
||||
RandomAccessSpliterator(List<E> list) {
|
||||
assert list instanceof RandomAccess;
|
||||
|
||||
this.list = list;
|
||||
this.index = 0;
|
||||
this.fence = -1;
|
||||
|
||||
this.alist = list instanceof AbstractList ? (AbstractList<E>) list : null;
|
||||
this.expectedModCount = alist != null ? alist.modCount : 0;
|
||||
}
|
||||
|
||||
/** Create new spliterator covering the given range */
|
||||
private RandomAccessSpliterator(RandomAccessSpliterator<E> parent,
|
||||
int origin, int fence) {
|
||||
this.list = parent.list;
|
||||
this.index = origin;
|
||||
this.fence = fence;
|
||||
|
||||
this.alist = parent.alist;
|
||||
this.expectedModCount = parent.expectedModCount;
|
||||
}
|
||||
|
||||
private int getFence() { // initialize fence to size on first use
|
||||
int hi;
|
||||
List<E> lst = list;
|
||||
if ((hi = fence) < 0) {
|
||||
if (alist != null) {
|
||||
expectedModCount = alist.modCount;
|
||||
}
|
||||
hi = fence = lst.size();
|
||||
}
|
||||
return hi;
|
||||
}
|
||||
|
||||
public Spliterator<E> trySplit() {
|
||||
int hi = getFence(), lo = index, mid = (lo + hi) >>> 1;
|
||||
return (lo >= mid) ? null : // divide range in half unless too small
|
||||
new RandomAccessSpliterator<>(this, lo, index = mid);
|
||||
}
|
||||
|
||||
public boolean tryAdvance(Consumer<? super E> action) {
|
||||
if (action == null)
|
||||
throw new NullPointerException();
|
||||
int hi = getFence(), i = index;
|
||||
if (i < hi) {
|
||||
index = i + 1;
|
||||
action.accept(get(list, i));
|
||||
checkAbstractListModCount(alist, expectedModCount);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void forEachRemaining(Consumer<? super E> action) {
|
||||
Objects.requireNonNull(action);
|
||||
List<E> lst = list;
|
||||
int hi = getFence();
|
||||
int i = index;
|
||||
index = hi;
|
||||
for (; i < hi; i++) {
|
||||
action.accept(get(lst, i));
|
||||
}
|
||||
checkAbstractListModCount(alist, expectedModCount);
|
||||
}
|
||||
|
||||
public long estimateSize() {
|
||||
return (long) (getFence() - index);
|
||||
}
|
||||
|
||||
public int characteristics() {
|
||||
return Spliterator.ORDERED | Spliterator.SIZED | Spliterator.SUBSIZED;
|
||||
}
|
||||
|
||||
private static <E> E get(List<E> list, int i) {
|
||||
try {
|
||||
return list.get(i);
|
||||
} catch (IndexOutOfBoundsException ex) {
|
||||
throw new ConcurrentModificationException();
|
||||
}
|
||||
}
|
||||
|
||||
static void checkAbstractListModCount(AbstractList<?> alist, int expectedModCount) {
|
||||
if (alist != null && alist.modCount != expectedModCount) {
|
||||
throw new ConcurrentModificationException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class SubList<E> extends AbstractList<E> {
|
||||
private final AbstractList<E> root;
|
||||
private final SubList<E> parent;
|
||||
|
||||
@ -741,9 +741,22 @@ public interface List<E> extends Collection<E> {
|
||||
*
|
||||
* @implSpec
|
||||
* The default implementation creates a
|
||||
* <em><a href="Spliterator.html#binding">late-binding</a></em> spliterator
|
||||
* from the list's {@code Iterator}. The spliterator inherits the
|
||||
* <em>fail-fast</em> properties of the list's iterator.
|
||||
* <em><a href="Spliterator.html#binding">late-binding</a></em>
|
||||
* spliterator as follows:
|
||||
* <ul>
|
||||
* <li>If the list is an instance of {@link RandomAccess} then the default
|
||||
* implementation creates a spliterator that traverses elements by
|
||||
* invoking the method {@link List#get}. If such invocation results or
|
||||
* would result in an {@code IndexOutOfBoundsException} then the
|
||||
* spliterator will <em>fail-fast</em> and throw a
|
||||
* {@code ConcurrentModificationException}.
|
||||
* If the list is also an instance of {@link AbstractList} then the
|
||||
* spliterator will use the list's {@link AbstractList#modCount modCount}
|
||||
* field to provide additional <em>fail-fast</em> behavior.
|
||||
* <li>Otherwise, the default implementation creates a spliterator from the
|
||||
* list's {@code Iterator}. The spliterator inherits the
|
||||
* <em>fail-fast</em> of the list's iterator.
|
||||
* </ul>
|
||||
*
|
||||
* @implNote
|
||||
* The created {@code Spliterator} additionally reports
|
||||
@ -754,7 +767,11 @@ public interface List<E> extends Collection<E> {
|
||||
*/
|
||||
@Override
|
||||
default Spliterator<E> spliterator() {
|
||||
return Spliterators.spliterator(this, Spliterator.ORDERED);
|
||||
if (this instanceof RandomAccess) {
|
||||
return new AbstractList.RandomAccessSpliterator<>(this);
|
||||
} else {
|
||||
return Spliterators.spliterator(this, Spliterator.ORDERED);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -64,8 +64,8 @@ import sun.security.util.SignatureFileVerifier;
|
||||
* file, and as such an entry name is associated with at most one base entry.
|
||||
* The {@code JarFile} may be configured to process a multi-release jar file by
|
||||
* creating the {@code JarFile} with the
|
||||
* {@link JarFile#JarFile(File, boolean, int, Release)} constructor. The
|
||||
* {@code Release} object sets a maximum version used when searching for
|
||||
* {@link JarFile#JarFile(File, boolean, int, Runtime.Version)} constructor. The
|
||||
* {@code Runtime.Version} object sets a maximum version used when searching for
|
||||
* versioned entries. When so configured, an entry name
|
||||
* can correspond with at most one base entry and zero or more versioned
|
||||
* entries. A search is required to associate the entry name with the latest
|
||||
@ -74,8 +74,8 @@ import sun.security.util.SignatureFileVerifier;
|
||||
*
|
||||
* <p>Class loaders that utilize {@code JarFile} to load classes from the
|
||||
* contents of {@code JarFile} entries should construct the {@code JarFile}
|
||||
* by invoking the {@link JarFile#JarFile(File, boolean, int, Release)}
|
||||
* constructor with the value {@code Release.RUNTIME} assigned to the last
|
||||
* by invoking the {@link JarFile#JarFile(File, boolean, int, Runtime.Version)}
|
||||
* constructor with the value {@code Runtime.version()} assigned to the last
|
||||
* argument. This assures that classes compatible with the major
|
||||
* version of the running JVM are loaded from multi-release jar files.
|
||||
*
|
||||
@ -99,12 +99,12 @@ import sun.security.util.SignatureFileVerifier;
|
||||
* <li>
|
||||
* {@code jdk.util.jar.version} can be assigned a value that is the
|
||||
* {@code String} representation of a non-negative integer
|
||||
* {@code <= Version.current().major()}. The value is used to set the effective
|
||||
* {@code <= Runtime.version().major()}. The value is used to set the effective
|
||||
* runtime version to something other than the default value obtained by
|
||||
* evaluating {@code Version.current().major()}. The effective runtime version
|
||||
* is the version that the {@link JarFile#JarFile(File, boolean, int, Release)}
|
||||
* evaluating {@code Runtime.version().major()}. The effective runtime version
|
||||
* is the version that the {@link JarFile#JarFile(File, boolean, int, Runtime.Version)}
|
||||
* constructor uses when the value of the last argument is
|
||||
* {@code Release.RUNTIME}.
|
||||
* {@code JarFile.runtimeVersion()}.
|
||||
* </li>
|
||||
* <li>
|
||||
* {@code jdk.util.jar.enableMultiRelease} can be assigned one of the three
|
||||
@ -116,7 +116,7 @@ import sun.security.util.SignatureFileVerifier;
|
||||
* the method {@link JarFile#isMultiRelease()} returns <em>false</em>. The value
|
||||
* <em>force</em> causes the {@code JarFile} to be initialized to runtime
|
||||
* versioning after construction. It effectively does the same as this code:
|
||||
* {@code (new JarFile(File, boolean, int, Release.RUNTIME)}.
|
||||
* {@code (new JarFile(File, boolean, int, JarFile.runtimeVersion())}.
|
||||
* </li>
|
||||
* </ul>
|
||||
* </div>
|
||||
@ -129,8 +129,9 @@ import sun.security.util.SignatureFileVerifier;
|
||||
*/
|
||||
public
|
||||
class JarFile extends ZipFile {
|
||||
private final static int BASE_VERSION;
|
||||
private final static int RUNTIME_VERSION;
|
||||
private final static Runtime.Version BASE_VERSION;
|
||||
private final static int BASE_VERSION_MAJOR;
|
||||
private final static Runtime.Version RUNTIME_VERSION;
|
||||
private final static boolean MULTI_RELEASE_ENABLED;
|
||||
private final static boolean MULTI_RELEASE_FORCED;
|
||||
private SoftReference<Manifest> manRef;
|
||||
@ -138,10 +139,10 @@ class JarFile extends ZipFile {
|
||||
private JarVerifier jv;
|
||||
private boolean jvInitialized;
|
||||
private boolean verify;
|
||||
private final int version;
|
||||
private boolean notVersioned;
|
||||
private final boolean runtimeVersioned;
|
||||
private boolean isMultiRelease; // is jar multi-release?
|
||||
private final Runtime.Version version; // current version
|
||||
private final int versionMajor; // version.major()
|
||||
private boolean notVersioned; // legacy constructor called
|
||||
private boolean isMultiRelease; // is jar multi-release?
|
||||
|
||||
// indicates if Class-Path attribute present
|
||||
private boolean hasClassPathAttribute;
|
||||
@ -151,17 +152,18 @@ class JarFile extends ZipFile {
|
||||
static {
|
||||
// Set up JavaUtilJarAccess in SharedSecrets
|
||||
SharedSecrets.setJavaUtilJarAccess(new JavaUtilJarAccessImpl());
|
||||
|
||||
BASE_VERSION = 8; // one less than lowest version for versioned entries
|
||||
// multi-release jar file versions >= 9
|
||||
BASE_VERSION = Runtime.Version.parse(Integer.toString(8));
|
||||
BASE_VERSION_MAJOR = BASE_VERSION.major();
|
||||
String jarVersion = GetPropertyAction.privilegedGetProperty("jdk.util.jar.version");
|
||||
int runtimeVersion = Runtime.version().major();
|
||||
String jarVersion =
|
||||
GetPropertyAction.privilegedGetProperty("jdk.util.jar.version");
|
||||
if (jarVersion != null) {
|
||||
int jarVer = Integer.parseInt(jarVersion);
|
||||
runtimeVersion = (jarVer > runtimeVersion)
|
||||
? runtimeVersion : Math.max(jarVer, 0);
|
||||
? runtimeVersion
|
||||
: Math.max(jarVer, BASE_VERSION_MAJOR);
|
||||
}
|
||||
RUNTIME_VERSION = runtimeVersion;
|
||||
RUNTIME_VERSION = Runtime.Version.parse(Integer.toString(runtimeVersion));
|
||||
String enableMultiRelease = GetPropertyAction
|
||||
.privilegedGetProperty("jdk.util.jar.enableMultiRelease", "true");
|
||||
switch (enableMultiRelease) {
|
||||
@ -181,61 +183,6 @@ class JarFile extends ZipFile {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A set of constants that represent the entries in either the base directory
|
||||
* or one of the versioned directories in a multi-release jar file. It's
|
||||
* possible for a multi-release jar file to contain versioned directories
|
||||
* that are not represented by the constants of the {@code Release} enum.
|
||||
* In those cases, the entries will not be located by this {@code JarFile}
|
||||
* through the aliasing mechanism, but they can be directly accessed by
|
||||
* specifying the full path name of the entry.
|
||||
*
|
||||
* @since 9
|
||||
*/
|
||||
public enum Release {
|
||||
/**
|
||||
* Represents unversioned entries, or entries in "regular", as opposed
|
||||
* to multi-release jar files.
|
||||
*/
|
||||
BASE(BASE_VERSION),
|
||||
|
||||
/**
|
||||
* Represents entries found in the META-INF/versions/9 directory of a
|
||||
* multi-release jar file.
|
||||
*/
|
||||
VERSION_9(9),
|
||||
|
||||
// fill in the "blanks" for future releases
|
||||
|
||||
/**
|
||||
* Represents entries found in the META-INF/versions/{n} directory of a
|
||||
* multi-release jar file, where {@code n} is the effective runtime
|
||||
* version of the jar file.
|
||||
*
|
||||
* @implNote
|
||||
* <div class="block">
|
||||
* The effective runtime version is determined
|
||||
* by evaluating {@code Version.current().major()} or by using the value
|
||||
* of the {@code jdk.util.jar.version} System property if it exists.
|
||||
* </div>
|
||||
*/
|
||||
RUNTIME(RUNTIME_VERSION);
|
||||
|
||||
Release(int version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
private static Release valueOf(int version) {
|
||||
return version <= BASE.value() ? BASE : valueOf("VERSION_" + version);
|
||||
}
|
||||
|
||||
private final int version;
|
||||
|
||||
private int value() {
|
||||
return this.version;
|
||||
}
|
||||
}
|
||||
|
||||
private static final String META_INF = "META-INF/";
|
||||
|
||||
private static final String META_INF_VERSIONS = META_INF + "versions/";
|
||||
@ -245,6 +192,32 @@ class JarFile extends ZipFile {
|
||||
*/
|
||||
public static final String MANIFEST_NAME = META_INF + "MANIFEST.MF";
|
||||
|
||||
/**
|
||||
* The version that represents the unversioned configuration of a multi-release jar file.
|
||||
*
|
||||
* @return Runtime.Version that represents the unversioned configuration
|
||||
*
|
||||
* @since 9
|
||||
*/
|
||||
public static Runtime.Version baseVersion() {
|
||||
return BASE_VERSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* The version that represents the effective runtime versioned configuration of a
|
||||
* multi-release jar file. In most cases, {@code runtimeVersion()} is equal to
|
||||
* {@code Runtime.version()}. However, if the {@code jdk.util.jar.version} property is set,
|
||||
* {@code runtimeVersion()} is derived from that property and may not be equal to
|
||||
* {@code Runtime.version()}.
|
||||
*
|
||||
* @return Runtime.Version that represents the runtime versioned configuration
|
||||
*
|
||||
* @since 9
|
||||
*/
|
||||
public static Runtime.Version runtimeVersion() {
|
||||
return RUNTIME_VERSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new {@code JarFile} to read from the specified
|
||||
* file {@code name}. The {@code JarFile} will be verified if
|
||||
@ -316,7 +289,7 @@ class JarFile extends ZipFile {
|
||||
* @since 1.3
|
||||
*/
|
||||
public JarFile(File file, boolean verify, int mode) throws IOException {
|
||||
this(file, verify, mode, Release.BASE);
|
||||
this(file, verify, mode, BASE_VERSION);
|
||||
this.notVersioned = true;
|
||||
}
|
||||
|
||||
@ -324,8 +297,13 @@ class JarFile extends ZipFile {
|
||||
* Creates a new {@code JarFile} to read from the specified
|
||||
* {@code File} object in the specified mode. The mode argument
|
||||
* must be either {@code OPEN_READ} or {@code OPEN_READ | OPEN_DELETE}.
|
||||
* The version argument configures the {@code JarFile} for processing
|
||||
* The version argument, after being converted to a canonical form, is
|
||||
* used to configure the {@code JarFile} for processing
|
||||
* multi-release jar files.
|
||||
* <p>
|
||||
* The canonical form derived from the version parameter is
|
||||
* {@code Runtime.Version.parse(Integer.toString(n))} where {@code n} is
|
||||
* {@code Math.max(version.major(), JarFile.baseVersion().major())}.
|
||||
*
|
||||
* @param file the jar file to be opened for reading
|
||||
* @param verify whether or not to verify the jar file if
|
||||
@ -340,47 +318,31 @@ class JarFile extends ZipFile {
|
||||
* @throws NullPointerException if {@code version} is {@code null}
|
||||
* @since 9
|
||||
*/
|
||||
public JarFile(File file, boolean verify, int mode, Release version) throws IOException {
|
||||
public JarFile(File file, boolean verify, int mode, Runtime.Version version) throws IOException {
|
||||
super(file, mode);
|
||||
Objects.requireNonNull(version);
|
||||
this.verify = verify;
|
||||
// version applies to multi-release jar files, ignored for regular jar files
|
||||
if (MULTI_RELEASE_FORCED) {
|
||||
Objects.requireNonNull(version);
|
||||
if (MULTI_RELEASE_FORCED || version.major() == RUNTIME_VERSION.major()) {
|
||||
// This deals with the common case where the value from JarFile.runtimeVersion() is passed
|
||||
this.version = RUNTIME_VERSION;
|
||||
version = Release.RUNTIME;
|
||||
} else if (version.major() <= BASE_VERSION_MAJOR) {
|
||||
// This also deals with the common case where the value from JarFile.baseVersion() is passed
|
||||
this.version = BASE_VERSION;
|
||||
} else {
|
||||
this.version = version.value();
|
||||
}
|
||||
this.runtimeVersioned = version == Release.RUNTIME;
|
||||
|
||||
assert runtimeVersionExists();
|
||||
}
|
||||
|
||||
private boolean runtimeVersionExists() {
|
||||
int version = Runtime.version().major();
|
||||
try {
|
||||
Release.valueOf(version);
|
||||
return true;
|
||||
} catch (IllegalArgumentException x) {
|
||||
System.err.println("No JarFile.Release object for release " + version);
|
||||
return false;
|
||||
// Canonicalize
|
||||
this.version = Runtime.Version.parse(Integer.toString(version.major()));
|
||||
}
|
||||
this.versionMajor = this.version.major();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the maximum version used when searching for versioned entries.
|
||||
*
|
||||
* @return the maximum version, or {@code Release.BASE} if this jar file is
|
||||
* processed as if it is an unversioned jar file or is not a
|
||||
* multi-release jar file
|
||||
* @return the maximum version
|
||||
* @since 9
|
||||
*/
|
||||
public final Release getVersion() {
|
||||
if (isMultiRelease()) {
|
||||
return runtimeVersioned ? Release.RUNTIME : Release.valueOf(version);
|
||||
} else {
|
||||
return Release.BASE;
|
||||
}
|
||||
public final Runtime.Version getVersion() {
|
||||
return isMultiRelease() ? this.version : BASE_VERSION;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -393,7 +355,7 @@ class JarFile extends ZipFile {
|
||||
if (isMultiRelease) {
|
||||
return true;
|
||||
}
|
||||
if (MULTI_RELEASE_ENABLED && version != BASE_VERSION) {
|
||||
if (MULTI_RELEASE_ENABLED && versionMajor != BASE_VERSION_MAJOR) {
|
||||
try {
|
||||
checkForSpecialAttributes();
|
||||
} catch (IOException io) {
|
||||
@ -639,7 +601,7 @@ class JarFile extends ZipFile {
|
||||
ZipEntry vze = null;
|
||||
String sname = "/" + name;
|
||||
int i = version;
|
||||
while (i > BASE_VERSION) {
|
||||
while (i > BASE_VERSION_MAJOR) {
|
||||
vze = super.getEntry(META_INF_VERSIONS + i + sname);
|
||||
if (vze != null) break;
|
||||
i--;
|
||||
@ -649,10 +611,10 @@ class JarFile extends ZipFile {
|
||||
|
||||
private ZipEntry getVersionedEntry(ZipEntry ze) {
|
||||
ZipEntry vze = null;
|
||||
if (version > BASE_VERSION && !ze.isDirectory()) {
|
||||
if (BASE_VERSION_MAJOR < versionMajor && !ze.isDirectory()) {
|
||||
String name = ze.getName();
|
||||
if (!name.startsWith(META_INF)) {
|
||||
vze = searchForVersionedEntry(version, name);
|
||||
vze = searchForVersionedEntry(versionMajor, name);
|
||||
}
|
||||
}
|
||||
return vze == null ? ze : vze;
|
||||
@ -1038,7 +1000,7 @@ class JarFile extends ZipFile {
|
||||
hasClassPathAttribute = match(CLASSPATH_CHARS, b,
|
||||
CLASSPATH_LASTOCC) != -1;
|
||||
// is this a multi-release jar file
|
||||
if (MULTI_RELEASE_ENABLED && version != BASE_VERSION) {
|
||||
if (MULTI_RELEASE_ENABLED && versionMajor != BASE_VERSION_MAJOR) {
|
||||
int i = match(MULTIRELEASE_CHARS, b, MULTIRELEASE_LASTOCC);
|
||||
if (i != -1) {
|
||||
i += MULTIRELEASE_CHARS.length;
|
||||
|
||||
@ -417,7 +417,10 @@ class Deflater {
|
||||
* <p>In the case of {@link #FULL_FLUSH} or {@link #SYNC_FLUSH}, if
|
||||
* the return value is {@code len}, the space available in output
|
||||
* buffer {@code b}, this method should be invoked again with the same
|
||||
* {@code flush} parameter and more output space.
|
||||
* {@code flush} parameter and more output space. Make sure that
|
||||
* {@code len} is greater than 6 to avoid flush marker (5 bytes) being
|
||||
* repeatedly output to the output buffer every time this method is
|
||||
* invoked.
|
||||
*
|
||||
* @param b the buffer for the compressed data
|
||||
* @param off the start offset of the data
|
||||
|
||||
@ -179,6 +179,10 @@ class InflaterInputStream extends FilterInputStream {
|
||||
ensureOpen();
|
||||
if (reachEOF) {
|
||||
return 0;
|
||||
} else if (inf.finished()) {
|
||||
// the end of the compressed data stream has been reached
|
||||
reachEOF = true;
|
||||
return 0;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -482,13 +482,4 @@ public class ExemptionMechanism {
|
||||
done = true;
|
||||
return n;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures that the key stored away by this ExemptionMechanism
|
||||
* object will be wiped out when there are no more references to it.
|
||||
*/
|
||||
protected void finalize() {
|
||||
keyStored = null;
|
||||
// Are there anything else we could do?
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2016, 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
|
||||
@ -58,10 +58,11 @@ import java.security.SignatureException;
|
||||
* @since 1.4
|
||||
* @see X509Certificate
|
||||
* @deprecated Use the classes in {@code java.security.cert} instead.
|
||||
* This class is subject to removal in a future version of Java SE.
|
||||
*
|
||||
* @author Hemma Prafullchandra
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="9", forRemoval=true)
|
||||
public abstract class Certificate {
|
||||
|
||||
/**
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2016, 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,9 @@ package javax.security.cert;
|
||||
* @since 1.4
|
||||
* @author Hemma Prafullchandra
|
||||
* @deprecated Use the classes in {@code java.security.cert} instead.
|
||||
* This class is subject to removal in a future version of Java SE.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="9", forRemoval=true)
|
||||
public class CertificateEncodingException extends CertificateException {
|
||||
|
||||
private static final long serialVersionUID = -8187642723048403470L;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 2016, 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,9 @@ package javax.security.cert;
|
||||
* @since 1.4
|
||||
* @see Certificate
|
||||
* @deprecated Use the classes in {@code java.security.cert} instead.
|
||||
* This class is subject to removal in a future version of Java SE.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="9", forRemoval=true)
|
||||
public class CertificateException extends Exception {
|
||||
|
||||
private static final long serialVersionUID = -5757213374030785290L;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -41,8 +41,9 @@ package javax.security.cert;
|
||||
* @since 1.4
|
||||
* @author Hemma Prafullchandra
|
||||
* @deprecated Use the classes in {@code java.security.cert} instead.
|
||||
* This class is subject to removal in a future version of Java SE.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="9", forRemoval=true)
|
||||
public class CertificateExpiredException extends CertificateException {
|
||||
|
||||
private static final long serialVersionUID = 5091601212177261883L;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -41,8 +41,9 @@ package javax.security.cert;
|
||||
* @since 1.4
|
||||
* @author Hemma Prafullchandra
|
||||
* @deprecated Use the classes in {@code java.security.cert} instead.
|
||||
* This class is subject to removal in a future version of Java SE.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="9", forRemoval=true)
|
||||
public class CertificateNotYetValidException extends CertificateException {
|
||||
|
||||
private static final long serialVersionUID = -8976172474266822818L;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2016, 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
|
||||
@ -40,8 +40,9 @@ package javax.security.cert;
|
||||
* @since 1.4
|
||||
* @author Hemma Prafullchandra
|
||||
* @deprecated Use the classes in {@code java.security.cert} instead.
|
||||
* This class is subject to removal in a future version of Java SE.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="9", forRemoval=true)
|
||||
public class CertificateParsingException extends CertificateException {
|
||||
|
||||
private static final long serialVersionUID = -8449352422951136229L;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2016, 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
|
||||
@ -125,8 +125,9 @@ import java.util.Date;
|
||||
* @see java.security.cert.X509Extension
|
||||
* @see java.security.Security security properties
|
||||
* @deprecated Use the classes in {@code java.security.cert} instead.
|
||||
* This class is subject to removal in a future version of Java SE.
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since="9", forRemoval=true)
|
||||
public abstract class X509Certificate extends Certificate {
|
||||
|
||||
/*
|
||||
|
||||
@ -695,7 +695,7 @@ public class URLClassPath {
|
||||
throw new FileNotFoundException(p.getPath());
|
||||
}
|
||||
return checkJar(new JarFile(new File(p.getPath()), true, ZipFile.OPEN_READ,
|
||||
JarFile.Release.RUNTIME));
|
||||
JarFile.runtimeVersion()));
|
||||
}
|
||||
URLConnection uc = (new URL(getBaseURL(), "#runtime")).openConnection();
|
||||
uc.setRequestProperty(USER_AGENT_JAVA_VERSION, JAVA_VERSION);
|
||||
|
||||
@ -25,16 +25,14 @@
|
||||
|
||||
package jdk.internal.misc;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.security.ProtectionDomain;
|
||||
|
||||
import jdk.internal.HotSpotIntrinsicCandidate;
|
||||
import jdk.internal.reflect.CallerSensitive;
|
||||
import jdk.internal.reflect.Reflection;
|
||||
import jdk.internal.misc.VM;
|
||||
|
||||
import jdk.internal.HotSpotIntrinsicCandidate;
|
||||
import jdk.internal.vm.annotation.ForceInline;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.security.ProtectionDomain;
|
||||
|
||||
|
||||
/**
|
||||
* A collection of methods for performing low-level, unsafe operations.
|
||||
@ -1400,6 +1398,453 @@ public final class Unsafe {
|
||||
return compareAndSwapInt(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final byte compareAndExchangeByteVolatile(Object o, long offset,
|
||||
byte expected,
|
||||
byte x) {
|
||||
long wordOffset = offset & ~3;
|
||||
int shift = (int) (offset & 3) << 3;
|
||||
if (BE) {
|
||||
shift = 24 - shift;
|
||||
}
|
||||
int mask = 0xFF << shift;
|
||||
int maskedExpected = (expected & 0xFF) << shift;
|
||||
int maskedX = (x & 0xFF) << shift;
|
||||
int fullWord;
|
||||
do {
|
||||
fullWord = getIntVolatile(o, wordOffset);
|
||||
if ((fullWord & mask) != maskedExpected)
|
||||
return (byte) ((fullWord & mask) >> shift);
|
||||
} while (!weakCompareAndSwapIntVolatile(o, wordOffset,
|
||||
fullWord, (fullWord & ~mask) | maskedX));
|
||||
return expected;
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean compareAndSwapByte(Object o, long offset,
|
||||
byte expected,
|
||||
byte x) {
|
||||
return compareAndExchangeByteVolatile(o, offset, expected, x) == expected;
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapByteVolatile(Object o, long offset,
|
||||
byte expected,
|
||||
byte x) {
|
||||
return compareAndSwapByte(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapByteAcquire(Object o, long offset,
|
||||
byte expected,
|
||||
byte x) {
|
||||
return weakCompareAndSwapByteVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapByteRelease(Object o, long offset,
|
||||
byte expected,
|
||||
byte x) {
|
||||
return weakCompareAndSwapByteVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapByte(Object o, long offset,
|
||||
byte expected,
|
||||
byte x) {
|
||||
return weakCompareAndSwapByteVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final byte compareAndExchangeByteAcquire(Object o, long offset,
|
||||
byte expected,
|
||||
byte x) {
|
||||
return compareAndExchangeByteVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final byte compareAndExchangeByteRelease(Object o, long offset,
|
||||
byte expected,
|
||||
byte x) {
|
||||
return compareAndExchangeByteVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final short compareAndExchangeShortVolatile(Object o, long offset,
|
||||
short expected,
|
||||
short x) {
|
||||
if ((offset & 3) == 3) {
|
||||
throw new IllegalArgumentException("Update spans the word, not supported");
|
||||
}
|
||||
long wordOffset = offset & ~3;
|
||||
int shift = (int) (offset & 3) << 3;
|
||||
if (BE) {
|
||||
shift = 16 - shift;
|
||||
}
|
||||
int mask = 0xFFFF << shift;
|
||||
int maskedExpected = (expected & 0xFFFF) << shift;
|
||||
int maskedX = (x & 0xFFFF) << shift;
|
||||
int fullWord;
|
||||
do {
|
||||
fullWord = getIntVolatile(o, wordOffset);
|
||||
if ((fullWord & mask) != maskedExpected) {
|
||||
return (short) ((fullWord & mask) >> shift);
|
||||
}
|
||||
} while (!weakCompareAndSwapIntVolatile(o, wordOffset,
|
||||
fullWord, (fullWord & ~mask) | maskedX));
|
||||
return expected;
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean compareAndSwapShort(Object o, long offset,
|
||||
short expected,
|
||||
short x) {
|
||||
return compareAndExchangeShortVolatile(o, offset, expected, x) == expected;
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapShortVolatile(Object o, long offset,
|
||||
short expected,
|
||||
short x) {
|
||||
return compareAndSwapShort(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapShortAcquire(Object o, long offset,
|
||||
short expected,
|
||||
short x) {
|
||||
return weakCompareAndSwapShortVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapShortRelease(Object o, long offset,
|
||||
short expected,
|
||||
short x) {
|
||||
return weakCompareAndSwapShortVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapShort(Object o, long offset,
|
||||
short expected,
|
||||
short x) {
|
||||
return weakCompareAndSwapShortVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final short compareAndExchangeShortAcquire(Object o, long offset,
|
||||
short expected,
|
||||
short x) {
|
||||
return compareAndExchangeShortVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final short compareAndExchangeShortRelease(Object o, long offset,
|
||||
short expected,
|
||||
short x) {
|
||||
return compareAndExchangeShortVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
private char s2c(short s) {
|
||||
return (char) s;
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
private short c2s(char s) {
|
||||
return (short) s;
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean compareAndSwapChar(Object o, long offset,
|
||||
char expected,
|
||||
char x) {
|
||||
return compareAndSwapShort(o, offset, c2s(expected), c2s(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final char compareAndExchangeCharVolatile(Object o, long offset,
|
||||
char expected,
|
||||
char x) {
|
||||
return s2c(compareAndExchangeShortVolatile(o, offset, c2s(expected), c2s(x)));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final char compareAndExchangeCharAcquire(Object o, long offset,
|
||||
char expected,
|
||||
char x) {
|
||||
return s2c(compareAndExchangeShortAcquire(o, offset, c2s(expected), c2s(x)));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final char compareAndExchangeCharRelease(Object o, long offset,
|
||||
char expected,
|
||||
char x) {
|
||||
return s2c(compareAndExchangeShortRelease(o, offset, c2s(expected), c2s(x)));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapCharVolatile(Object o, long offset,
|
||||
char expected,
|
||||
char x) {
|
||||
return weakCompareAndSwapShortVolatile(o, offset, c2s(expected), c2s(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapCharAcquire(Object o, long offset,
|
||||
char expected,
|
||||
char x) {
|
||||
return weakCompareAndSwapShortAcquire(o, offset, c2s(expected), c2s(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapCharRelease(Object o, long offset,
|
||||
char expected,
|
||||
char x) {
|
||||
return weakCompareAndSwapShortRelease(o, offset, c2s(expected), c2s(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapChar(Object o, long offset,
|
||||
char expected,
|
||||
char x) {
|
||||
return weakCompareAndSwapShort(o, offset, c2s(expected), c2s(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
private boolean byte2bool(byte b) {
|
||||
return b > 0;
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
private byte bool2byte(boolean b) {
|
||||
return b ? (byte)1 : (byte)0;
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean compareAndSwapBoolean(Object o, long offset,
|
||||
boolean expected,
|
||||
boolean x) {
|
||||
return compareAndSwapByte(o, offset, bool2byte(expected), bool2byte(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean compareAndExchangeBooleanVolatile(Object o, long offset,
|
||||
boolean expected,
|
||||
boolean x) {
|
||||
return byte2bool(compareAndExchangeByteVolatile(o, offset, bool2byte(expected), bool2byte(x)));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean compareAndExchangeBooleanAcquire(Object o, long offset,
|
||||
boolean expected,
|
||||
boolean x) {
|
||||
return byte2bool(compareAndExchangeByteAcquire(o, offset, bool2byte(expected), bool2byte(x)));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean compareAndExchangeBooleanRelease(Object o, long offset,
|
||||
boolean expected,
|
||||
boolean x) {
|
||||
return byte2bool(compareAndExchangeByteRelease(o, offset, bool2byte(expected), bool2byte(x)));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapBooleanVolatile(Object o, long offset,
|
||||
boolean expected,
|
||||
boolean x) {
|
||||
return weakCompareAndSwapByteVolatile(o, offset, bool2byte(expected), bool2byte(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapBooleanAcquire(Object o, long offset,
|
||||
boolean expected,
|
||||
boolean x) {
|
||||
return weakCompareAndSwapByteAcquire(o, offset, bool2byte(expected), bool2byte(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapBooleanRelease(Object o, long offset,
|
||||
boolean expected,
|
||||
boolean x) {
|
||||
return weakCompareAndSwapByteRelease(o, offset, bool2byte(expected), bool2byte(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapBoolean(Object o, long offset,
|
||||
boolean expected,
|
||||
boolean x) {
|
||||
return weakCompareAndSwapByte(o, offset, bool2byte(expected), bool2byte(x));
|
||||
}
|
||||
|
||||
/**
|
||||
* Atomically updates Java variable to {@code x} if it is currently
|
||||
* holding {@code expected}.
|
||||
*
|
||||
* <p>This operation has memory semantics of a {@code volatile} read
|
||||
* and write. Corresponds to C11 atomic_compare_exchange_strong.
|
||||
*
|
||||
* @return {@code true} if successful
|
||||
*/
|
||||
@ForceInline
|
||||
public final boolean compareAndSwapFloat(Object o, long offset,
|
||||
float expected,
|
||||
float x) {
|
||||
return compareAndSwapInt(o, offset,
|
||||
Float.floatToRawIntBits(expected),
|
||||
Float.floatToRawIntBits(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final float compareAndExchangeFloatVolatile(Object o, long offset,
|
||||
float expected,
|
||||
float x) {
|
||||
int w = compareAndExchangeIntVolatile(o, offset,
|
||||
Float.floatToRawIntBits(expected),
|
||||
Float.floatToRawIntBits(x));
|
||||
return Float.intBitsToFloat(w);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final float compareAndExchangeFloatAcquire(Object o, long offset,
|
||||
float expected,
|
||||
float x) {
|
||||
int w = compareAndExchangeIntAcquire(o, offset,
|
||||
Float.floatToRawIntBits(expected),
|
||||
Float.floatToRawIntBits(x));
|
||||
return Float.intBitsToFloat(w);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final float compareAndExchangeFloatRelease(Object o, long offset,
|
||||
float expected,
|
||||
float x) {
|
||||
int w = compareAndExchangeIntRelease(o, offset,
|
||||
Float.floatToRawIntBits(expected),
|
||||
Float.floatToRawIntBits(x));
|
||||
return Float.intBitsToFloat(w);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapFloat(Object o, long offset,
|
||||
float expected,
|
||||
float x) {
|
||||
return weakCompareAndSwapInt(o, offset,
|
||||
Float.floatToRawIntBits(expected),
|
||||
Float.floatToRawIntBits(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapFloatAcquire(Object o, long offset,
|
||||
float expected,
|
||||
float x) {
|
||||
return weakCompareAndSwapIntAcquire(o, offset,
|
||||
Float.floatToRawIntBits(expected),
|
||||
Float.floatToRawIntBits(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapFloatRelease(Object o, long offset,
|
||||
float expected,
|
||||
float x) {
|
||||
return weakCompareAndSwapIntRelease(o, offset,
|
||||
Float.floatToRawIntBits(expected),
|
||||
Float.floatToRawIntBits(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapFloatVolatile(Object o, long offset,
|
||||
float expected,
|
||||
float x) {
|
||||
return weakCompareAndSwapIntVolatile(o, offset,
|
||||
Float.floatToRawIntBits(expected),
|
||||
Float.floatToRawIntBits(x));
|
||||
}
|
||||
|
||||
/**
|
||||
* Atomically updates Java variable to {@code x} if it is currently
|
||||
* holding {@code expected}.
|
||||
*
|
||||
* <p>This operation has memory semantics of a {@code volatile} read
|
||||
* and write. Corresponds to C11 atomic_compare_exchange_strong.
|
||||
*
|
||||
* @return {@code true} if successful
|
||||
*/
|
||||
@ForceInline
|
||||
public final boolean compareAndSwapDouble(Object o, long offset,
|
||||
double expected,
|
||||
double x) {
|
||||
return compareAndSwapLong(o, offset,
|
||||
Double.doubleToRawLongBits(expected),
|
||||
Double.doubleToRawLongBits(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final double compareAndExchangeDoubleVolatile(Object o, long offset,
|
||||
double expected,
|
||||
double x) {
|
||||
long w = compareAndExchangeLongVolatile(o, offset,
|
||||
Double.doubleToRawLongBits(expected),
|
||||
Double.doubleToRawLongBits(x));
|
||||
return Double.longBitsToDouble(w);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final double compareAndExchangeDoubleAcquire(Object o, long offset,
|
||||
double expected,
|
||||
double x) {
|
||||
long w = compareAndExchangeLongAcquire(o, offset,
|
||||
Double.doubleToRawLongBits(expected),
|
||||
Double.doubleToRawLongBits(x));
|
||||
return Double.longBitsToDouble(w);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final double compareAndExchangeDoubleRelease(Object o, long offset,
|
||||
double expected,
|
||||
double x) {
|
||||
long w = compareAndExchangeLongRelease(o, offset,
|
||||
Double.doubleToRawLongBits(expected),
|
||||
Double.doubleToRawLongBits(x));
|
||||
return Double.longBitsToDouble(w);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapDouble(Object o, long offset,
|
||||
double expected,
|
||||
double x) {
|
||||
return weakCompareAndSwapLong(o, offset,
|
||||
Double.doubleToRawLongBits(expected),
|
||||
Double.doubleToRawLongBits(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapDoubleAcquire(Object o, long offset,
|
||||
double expected,
|
||||
double x) {
|
||||
return weakCompareAndSwapLongAcquire(o, offset,
|
||||
Double.doubleToRawLongBits(expected),
|
||||
Double.doubleToRawLongBits(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapDoubleRelease(Object o, long offset,
|
||||
double expected,
|
||||
double x) {
|
||||
return weakCompareAndSwapLongRelease(o, offset,
|
||||
Double.doubleToRawLongBits(expected),
|
||||
Double.doubleToRawLongBits(x));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean weakCompareAndSwapDoubleVolatile(Object o, long offset,
|
||||
double expected,
|
||||
double x) {
|
||||
return weakCompareAndSwapLongVolatile(o, offset,
|
||||
Double.doubleToRawLongBits(expected),
|
||||
Double.doubleToRawLongBits(x));
|
||||
}
|
||||
|
||||
/**
|
||||
* Atomically updates Java variable to {@code x} if it is currently
|
||||
* holding {@code expected}.
|
||||
@ -1840,7 +2285,7 @@ public final class Unsafe {
|
||||
int v;
|
||||
do {
|
||||
v = getIntVolatile(o, offset);
|
||||
} while (!compareAndSwapInt(o, offset, v, v + delta));
|
||||
} while (!weakCompareAndSwapIntVolatile(o, offset, v, v + delta));
|
||||
return v;
|
||||
}
|
||||
|
||||
@ -1860,7 +2305,60 @@ public final class Unsafe {
|
||||
long v;
|
||||
do {
|
||||
v = getLongVolatile(o, offset);
|
||||
} while (!compareAndSwapLong(o, offset, v, v + delta));
|
||||
} while (!weakCompareAndSwapLongVolatile(o, offset, v, v + delta));
|
||||
return v;
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final byte getAndAddByte(Object o, long offset, byte delta) {
|
||||
byte v;
|
||||
do {
|
||||
v = getByteVolatile(o, offset);
|
||||
} while (!weakCompareAndSwapByteVolatile(o, offset, v, (byte) (v + delta)));
|
||||
return v;
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final short getAndAddShort(Object o, long offset, short delta) {
|
||||
short v;
|
||||
do {
|
||||
v = getShortVolatile(o, offset);
|
||||
} while (!weakCompareAndSwapShortVolatile(o, offset, v, (short) (v + delta)));
|
||||
return v;
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final char getAndAddChar(Object o, long offset, char delta) {
|
||||
return (char) getAndAddShort(o, offset, (short) delta);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final float getAndAddFloat(Object o, long offset, float delta) {
|
||||
int expectedBits;
|
||||
float v;
|
||||
do {
|
||||
// Load and CAS with the raw bits to avoid issues with NaNs and
|
||||
// possible bit conversion from signaling NaNs to quiet NaNs that
|
||||
// may result in the loop not terminating.
|
||||
expectedBits = getIntVolatile(o, offset);
|
||||
v = Float.intBitsToFloat(expectedBits);
|
||||
} while (!weakCompareAndSwapIntVolatile(o, offset,
|
||||
expectedBits, Float.floatToRawIntBits(v + delta)));
|
||||
return v;
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final double getAndAddDouble(Object o, long offset, double delta) {
|
||||
long expectedBits;
|
||||
double v;
|
||||
do {
|
||||
// Load and CAS with the raw bits to avoid issues with NaNs and
|
||||
// possible bit conversion from signaling NaNs to quiet NaNs that
|
||||
// may result in the loop not terminating.
|
||||
expectedBits = getLongVolatile(o, offset);
|
||||
v = Double.longBitsToDouble(expectedBits);
|
||||
} while (!weakCompareAndSwapLongVolatile(o, offset,
|
||||
expectedBits, Double.doubleToRawLongBits(v + delta)));
|
||||
return v;
|
||||
}
|
||||
|
||||
@ -1880,7 +2378,7 @@ public final class Unsafe {
|
||||
int v;
|
||||
do {
|
||||
v = getIntVolatile(o, offset);
|
||||
} while (!compareAndSwapInt(o, offset, v, newValue));
|
||||
} while (!weakCompareAndSwapIntVolatile(o, offset, v, newValue));
|
||||
return v;
|
||||
}
|
||||
|
||||
@ -1900,7 +2398,7 @@ public final class Unsafe {
|
||||
long v;
|
||||
do {
|
||||
v = getLongVolatile(o, offset);
|
||||
} while (!compareAndSwapLong(o, offset, v, newValue));
|
||||
} while (!weakCompareAndSwapLongVolatile(o, offset, v, newValue));
|
||||
return v;
|
||||
}
|
||||
|
||||
@ -1920,10 +2418,49 @@ public final class Unsafe {
|
||||
Object v;
|
||||
do {
|
||||
v = getObjectVolatile(o, offset);
|
||||
} while (!compareAndSwapObject(o, offset, v, newValue));
|
||||
} while (!weakCompareAndSwapObjectVolatile(o, offset, v, newValue));
|
||||
return v;
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final byte getAndSetByte(Object o, long offset, byte newValue) {
|
||||
byte v;
|
||||
do {
|
||||
v = getByteVolatile(o, offset);
|
||||
} while (!weakCompareAndSwapByteVolatile(o, offset, v, newValue));
|
||||
return v;
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final boolean getAndSetBoolean(Object o, long offset, boolean newValue) {
|
||||
return byte2bool(getAndSetByte(o, offset, bool2byte(newValue)));
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final short getAndSetShort(Object o, long offset, short newValue) {
|
||||
short v;
|
||||
do {
|
||||
v = getShortVolatile(o, offset);
|
||||
} while (!weakCompareAndSwapShortVolatile(o, offset, v, newValue));
|
||||
return v;
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final char getAndSetChar(Object o, long offset, char newValue) {
|
||||
return s2c(getAndSetShort(o, offset, c2s(newValue)));
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final float getAndSetFloat(Object o, long offset, float newValue) {
|
||||
int v = getAndSetInt(o, offset, Float.floatToRawIntBits(newValue));
|
||||
return Float.intBitsToFloat(v);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
public final double getAndSetDouble(Object o, long offset, double newValue) {
|
||||
long v = getAndSetLong(o, offset, Double.doubleToRawLongBits(newValue));
|
||||
return Double.longBitsToDouble(v);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures that loads before the fence will not be reordered with loads and
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user