This commit is contained in:
Alejandro Murillo 2016-07-15 09:10:36 -07:00
commit 95fcb61b0b
725 changed files with 87674 additions and 42150 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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>

View File

@ -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

View File

@ -529,3 +529,4 @@ af6b4ad908e732d23021f12e8322b204433d5cf6 jdk-9+122
479631362b4930be985245ea063d87d821a472eb jdk-9+124
bb640b49741af3f57f9994129934c46fc173219f jdk-9+125
adc8c84b7cf8c540d920182f78a2bc982366432a jdk-9+126
352357128f602dcf0426b1cbe011a4685a4d9f97 jdk-9+127

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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))

View File

@ -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)/%, %, $@))

View File

@ -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)

View File

@ -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
################################################################################

View File

@ -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, \

View File

@ -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:
*;
};

View File

@ -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:
*;
};

View File

@ -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:
*;
};

View File

@ -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:
*;
};

View File

@ -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:
*;
};

View File

@ -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:
*;
};

View File

@ -693,6 +693,8 @@ public class CLDRConverter {
"field.weekday",
"field.dayperiod",
"field.hour",
"timezone.hourFormat",
"timezone.gmtFormat",
"field.minute",
"field.second",
"field.zone",

View File

@ -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" +

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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
{

View File

@ -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 {
}

View File

@ -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;

View File

@ -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

View File

@ -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;

View File

@ -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.

View File

@ -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;

View File

@ -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 {
}

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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.

View File

@ -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 {

View File

@ -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() {

View File

@ -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 {

View File

@ -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));

View File

@ -1613,6 +1613,8 @@ public final class Math {
* @return (<i>a</i>&nbsp;&times;&nbsp;<i>b</i>&nbsp;+&nbsp;<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>&nbsp;&times;&nbsp;<i>b</i>&nbsp;+&nbsp;<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) {

View File

@ -1276,6 +1276,8 @@ public final class StrictMath {
* @return (<i>a</i>&nbsp;&times;&nbsp;<i>b</i>&nbsp;+&nbsp;<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>&nbsp;&times;&nbsp;<i>b</i>&nbsp;+&nbsp;<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);

View File

@ -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;
}

View File

@ -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() {

View File

@ -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
*/

View File

@ -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); }

View File

@ -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) {

View File

@ -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)

View File

@ -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
*/

View File

@ -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

View File

@ -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]

View File

@ -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(

View File

@ -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);

View File

@ -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);
}

View File

@ -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

View File

@ -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

View File

@ -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

View 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) {

View File

@ -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.
*

View File

@ -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

View File

@ -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>

View File

@ -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;

View File

@ -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);
}
}
/**

View File

@ -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;

View File

@ -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

View File

@ -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;
}

View File

@ -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?
}
}

View 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
@ -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 {
/**

View 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
@ -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;

View File

@ -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;

View 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
@ -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;

View 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
@ -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;

View 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
@ -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;

View 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
@ -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 {
/*

View File

@ -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);

View File

@ -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