From 2304036211ee002d8fc430e2d0190dd3b73da447 Mon Sep 17 00:00:00 2001 From: Volker Simonis Date: Tue, 2 Jul 2013 17:38:10 -0700 Subject: [PATCH 001/158] 8017568: PPC64: Generic build preparations needed to enable new build on Linux/PPC64 Enable new build on Linux/PPC64 Reviewed-by: erikj --- common/autoconf/boot-jdk.m4 | 2 +- common/autoconf/configure.ac | 1 + common/autoconf/generated-configure.sh | 118 ++++++++++++++++++++----- common/autoconf/hotspot-spec.gmk.in | 5 ++ common/autoconf/jdk-options.m4 | 45 +++++++++- common/autoconf/spec.gmk.in | 6 ++ common/autoconf/toolchain.m4 | 18 ++++ 7 files changed, 166 insertions(+), 29 deletions(-) diff --git a/common/autoconf/boot-jdk.m4 b/common/autoconf/boot-jdk.m4 index 4a4ea36b50d..c275f2bdd49 100644 --- a/common/autoconf/boot-jdk.m4 +++ b/common/autoconf/boot-jdk.m4 @@ -316,7 +316,7 @@ if test "x$with_boot_jdk_jvmargs" = x; then # Minimum amount of heap memory. ADD_JVM_ARG_IF_OK([-Xms64M],boot_jdk_jvmargs,[$JAVA]) - if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then + if test "x$OPENJDK_TARGET_OS" = "xmacosx" || test "x$OPENJDK_TARGET_CPU" = "xppc64" ; then # Why does macosx need more heap? Its the huge JDK batch. ADD_JVM_ARG_IF_OK([-Xmx1600M],boot_jdk_jvmargs,[$JAVA]) else diff --git a/common/autoconf/configure.ac b/common/autoconf/configure.ac index fcaf12fc422..8f8a8e6426c 100644 --- a/common/autoconf/configure.ac +++ b/common/autoconf/configure.ac @@ -88,6 +88,7 @@ JDKOPT_SETUP_OPEN_OR_CUSTOM # These are needed to be able to create a configuration name (and thus the output directory) JDKOPT_SETUP_JDK_VARIANT +JDKOPT_SETUP_JVM_INTERPRETER JDKOPT_SETUP_JVM_VARIANTS JDKOPT_SETUP_DEBUG_LEVEL diff --git a/common/autoconf/generated-configure.sh b/common/autoconf/generated-configure.sh index e41a488f336..b5619bf0d5f 100644 --- a/common/autoconf/generated-configure.sh +++ b/common/autoconf/generated-configure.sh @@ -638,6 +638,7 @@ CXXFLAGS_DEBUG_SYMBOLS CFLAGS_DEBUG_SYMBOLS ZIP_DEBUGINFO_FILES ENABLE_DEBUG_SYMBOLS +USING_BROKEN_SUSE_LD COMPILER_SUPPORTS_TARGET_BITS_FLAG ZERO_ARCHFLAG LDFLAGS_CXX_JDK @@ -824,6 +825,7 @@ VARIANT DEBUG_LEVEL MACOSX_UNIVERSAL INCLUDE_SA +JVM_VARIANT_CORE JVM_VARIANT_ZEROSHARK JVM_VARIANT_ZERO JVM_VARIANT_KERNEL @@ -831,6 +833,7 @@ JVM_VARIANT_MINIMAL1 JVM_VARIANT_CLIENT JVM_VARIANT_SERVER JVM_VARIANTS +JVM_INTERPRETER JDK_VARIANT SET_OPENJDK BUILD_LOG_WRAPPER @@ -975,6 +978,7 @@ with_tools_dir with_devkit enable_openjdk_only with_jdk_variant +with_jvm_interpreter with_jvm_variants enable_debug with_debug_level @@ -1713,8 +1717,10 @@ Optional Packages: --with-devkit use this directory as base for tools-dir and sys-root (for cross-compiling) --with-jdk-variant JDK variant to build (normal) [normal] + --with-jvm-interpreter JVM interpreter to build (template, cpp) [template] --with-jvm-variants JVM variants (separated by commas) to build (server, - client, minimal1, kernel, zero, zeroshark) [server] + client, minimal1, kernel, zero, zeroshark, core) + [server] --with-debug-level set the debug level (release, fastdebug, slowdebug) [release] --with-conf-name use this as the name of the configuration [generated @@ -2845,7 +2851,7 @@ $as_echo "$as_me: loading site script $ac_site_file" >&6;} || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } fi done @@ -3505,6 +3511,8 @@ pkgadd_help() { + + ############################################################################### # # Should we build only OpenJDK even if closed sources are present? @@ -3782,7 +3790,7 @@ fi #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1371547824 +DATE_WHEN_GENERATED=1372808067 ############################################################################### # @@ -6560,7 +6568,7 @@ fi $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' @@ -6593,7 +6601,7 @@ fi $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' @@ -6626,7 +6634,7 @@ fi $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; -*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5 ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' @@ -7572,6 +7580,37 @@ fi $as_echo "$JDK_VARIANT" >&6; } +############################################################################### +# +# Check which interpreter of the JVM we want to build. +# Currently we have: +# template: Template interpreter (the default) +# cpp : C++ interpreter +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which interpreter of the JVM to build" >&5 +$as_echo_n "checking which interpreter of the JVM to build... " >&6; } + +# Check whether --with-jvm-interpreter was given. +if test "${with_jvm_interpreter+set}" = set; then : + withval=$with_jvm_interpreter; +fi + + +if test "x$with_jvm_interpreter" = x; then + with_jvm_interpreter="template" +fi + +JVM_INTERPRETER="$with_jvm_interpreter" + +if test "x$JVM_INTERPRETER" != xtemplate && test "x$JVM_INTERPRETER" != xcpp; then + as_fn_error $? "The available JVM interpreters are: template, cpp" "$LINENO" 5 +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_jvm_interpreter" >&5 +$as_echo "$with_jvm_interpreter" >&6; } + + ############################################################################### # @@ -7584,6 +7623,7 @@ $as_echo "$JDK_VARIANT" >&6; } # ie normal interpreter and C1, only the serial GC, kernel jvmti etc # zero: no machine code interpreter, no compiler # zeroshark: zero interpreter and shark/llvm compiler backend +# core: interpreter only, no compiler (only works on some platforms) { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variants of the JVM to build" >&5 $as_echo_n "checking which variants of the JVM to build... " >&6; } @@ -7598,10 +7638,10 @@ if test "x$with_jvm_variants" = x; then fi JVM_VARIANTS=",$with_jvm_variants," -TEST_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,//' -e 's/client,//' -e 's/minimal1,//' -e 's/kernel,//' -e 's/zero,//' -e 's/zeroshark,//'` +TEST_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,//' -e 's/client,//' -e 's/minimal1,//' -e 's/kernel,//' -e 's/zero,//' -e 's/zeroshark,//' -e 's/core,//'` if test "x$TEST_VARIANTS" != "x,"; then - as_fn_error $? "The available JVM variants are: server, client, minimal1, kernel, zero, zeroshark" "$LINENO" 5 + as_fn_error $? "The available JVM variants are: server, client, minimal1, kernel, zero, zeroshark, core" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_jvm_variants" >&5 $as_echo "$with_jvm_variants" >&6; } @@ -7612,6 +7652,7 @@ JVM_VARIANT_MINIMAL1=`$ECHO "$JVM_VARIANTS" | $SED -e '/,minimal1,/!s/.*/false/g JVM_VARIANT_KERNEL=`$ECHO "$JVM_VARIANTS" | $SED -e '/,kernel,/!s/.*/false/g' -e '/,kernel,/s/.*/true/g'` JVM_VARIANT_ZERO=`$ECHO "$JVM_VARIANTS" | $SED -e '/,zero,/!s/.*/false/g' -e '/,zero,/s/.*/true/g'` JVM_VARIANT_ZEROSHARK=`$ECHO "$JVM_VARIANTS" | $SED -e '/,zeroshark,/!s/.*/false/g' -e '/,zeroshark,/s/.*/true/g'` +JVM_VARIANT_CORE=`$ECHO "$JVM_VARIANTS" | $SED -e '/,core,/!s/.*/false/g' -e '/,core,/s/.*/true/g'` if test "x$JVM_VARIANT_CLIENT" = xtrue; then if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then @@ -7631,7 +7672,7 @@ fi # Replace the commas with AND for use in the build directory name. ANDED_JVM_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/^,//' -e 's/,$//' -e 's/,/AND/'` -COUNT_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,/1/' -e 's/client,/1/' -e 's/minimal1,/1/' -e 's/kernel,/1/' -e 's/zero,/1/' -e 's/zeroshark,/1/'` +COUNT_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,/1/' -e 's/client,/1/' -e 's/minimal1,/1/' -e 's/kernel,/1/' -e 's/zero,/1/' -e 's/zeroshark,/1/' -e 's/core,/1/'` if test "x$COUNT_VARIANTS" != "x,1"; then BUILDING_MULTIPLE_JVM_VARIANTS=yes else @@ -7646,6 +7687,7 @@ fi + INCLUDE_SA=true if test "x$JVM_VARIANT_ZERO" = xtrue ; then INCLUDE_SA=false @@ -7653,6 +7695,9 @@ fi if test "x$JVM_VARIANT_ZEROSHARK" = xtrue ; then INCLUDE_SA=false fi +if test "x$VAR_CPU" = xppc64 ; then + INCLUDE_SA=false +fi if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then @@ -7769,6 +7814,10 @@ if test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}shark " fi +if test "x$JVM_VARIANT_CORE" = xtrue; then + HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}core " +fi + HOTSPOT_TARGET="$HOTSPOT_TARGET docs export_$HOTSPOT_EXPORT" # On Macosx universal binaries are produced, but they only contain @@ -15718,7 +15767,7 @@ if test "x$with_boot_jdk_jvmargs" = x; then JVM_ARG_OK=false fi - if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then + if test "x$OPENJDK_TARGET_OS" = "xmacosx" || test "x$OPENJDK_TARGET_CPU" = "xppc64" ; then # Why does macosx need more heap? Its the huge JDK batch. $ECHO "Check if jvm arg is ok: -Xmx1600M" >&5 @@ -20041,7 +20090,7 @@ fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 @@ -20156,7 +20205,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -20199,7 +20248,7 @@ else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 @@ -20258,7 +20307,7 @@ $as_echo "$ac_try_echo"; } >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } fi fi fi @@ -20310,7 +20359,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi @@ -24485,7 +24534,7 @@ else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp @@ -24885,7 +24934,7 @@ else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp @@ -28722,7 +28771,7 @@ else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (int *) -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_int_p=0 fi @@ -29724,6 +29773,27 @@ $as_echo "$supports" >&6; } + # Check for broken SuSE 'ld' for which 'Only anonymous version tag is allowed in executable.' + USING_BROKEN_SUSE_LD=no + if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$GCC" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken SuSE 'ld' which only understands anonymous version tags in executables" >&5 +$as_echo_n "checking for broken SuSE 'ld' which only understands anonymous version tags in executables... " >&6; } + echo "SUNWprivate_1.1 { local: *; };" > version-script.map + echo "int main() { }" > main.c + if $CXX -Xlinker -version-script=version-script.map main.c 2>&5 >&5; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + USING_BROKEN_SUSE_LD=no + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + USING_BROKEN_SUSE_LD=yes + fi + rm -rf version-script.map main.c + fi + + + # Setup debug symbols (need objcopy from the toolchain for that) # @@ -29945,7 +30015,7 @@ if test "x$with_x" = xno; then have_x=disabled else case $x_includes,$x_libraries in #( - *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5 ;; #( + *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then : $as_echo_n "(cached) " >&6 else @@ -32605,7 +32675,7 @@ and LIBFFI_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . -See \`config.log' for more details" "$LINENO" 5 ; } +See \`config.log' for more details" "$LINENO" 5; } else LIBFFI_CFLAGS=$pkg_cv_LIBFFI_CFLAGS LIBFFI_LIBS=$pkg_cv_LIBFFI_LIBS @@ -34134,7 +34204,7 @@ do "$OUTPUT_ROOT/spec.sh") CONFIG_FILES="$CONFIG_FILES $OUTPUT_ROOT/spec.sh:$AUTOCONF_DIR/spec.sh.in" ;; "$OUTPUT_ROOT/Makefile") CONFIG_FILES="$CONFIG_FILES $OUTPUT_ROOT/Makefile:$AUTOCONF_DIR/Makefile.in" ;; - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;; + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done @@ -34449,7 +34519,7 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -34477,7 +34547,7 @@ do [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;; + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" @@ -34504,7 +34574,7 @@ $as_echo "$as_me: creating $ac_file" >&6;} case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac diff --git a/common/autoconf/hotspot-spec.gmk.in b/common/autoconf/hotspot-spec.gmk.in index 17b404a5902..e89e4941cd0 100644 --- a/common/autoconf/hotspot-spec.gmk.in +++ b/common/autoconf/hotspot-spec.gmk.in @@ -91,6 +91,11 @@ LLVM_LDFLAGS=@LLVM_LDFLAGS@ ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR) ALT_EXPORT_PATH=$(HOTSPOT_DIST) +JVM_INTERPRETER:=@JVM_INTERPRETER@ +ifeq ($(JVM_INTERPRETER), cpp) + CC_INTERP=true +endif + HOTSPOT_MAKE_ARGS:=@HOTSPOT_MAKE_ARGS@ @STATIC_CXX_SETTING@ # This is used from the libjvm build for C/C++ code. HOTSPOT_BUILD_JOBS:=$(JOBS) diff --git a/common/autoconf/jdk-options.m4 b/common/autoconf/jdk-options.m4 index ba14373e593..e0afe5d5fe7 100644 --- a/common/autoconf/jdk-options.m4 +++ b/common/autoconf/jdk-options.m4 @@ -51,6 +51,33 @@ AC_SUBST(JDK_VARIANT) AC_MSG_RESULT([$JDK_VARIANT]) ]) +AC_DEFUN_ONCE([JDKOPT_SETUP_JVM_INTERPRETER], +[ +############################################################################### +# +# Check which interpreter of the JVM we want to build. +# Currently we have: +# template: Template interpreter (the default) +# cpp : C++ interpreter +AC_MSG_CHECKING([which interpreter of the JVM to build]) +AC_ARG_WITH([jvm-interpreter], [AS_HELP_STRING([--with-jvm-interpreter], + [JVM interpreter to build (template, cpp) @<:@template@:>@])]) + +if test "x$with_jvm_interpreter" = x; then + with_jvm_interpreter="template" +fi + +JVM_INTERPRETER="$with_jvm_interpreter" + +if test "x$JVM_INTERPRETER" != xtemplate && test "x$JVM_INTERPRETER" != xcpp; then + AC_MSG_ERROR([The available JVM interpreters are: template, cpp]) +fi + +AC_SUBST(JVM_INTERPRETER) + +AC_MSG_RESULT([$with_jvm_interpreter]) +]) + AC_DEFUN_ONCE([JDKOPT_SETUP_JVM_VARIANTS], [ @@ -65,19 +92,20 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JVM_VARIANTS], # ie normal interpreter and C1, only the serial GC, kernel jvmti etc # zero: no machine code interpreter, no compiler # zeroshark: zero interpreter and shark/llvm compiler backend +# core: interpreter only, no compiler (only works on some platforms) AC_MSG_CHECKING([which variants of the JVM to build]) AC_ARG_WITH([jvm-variants], [AS_HELP_STRING([--with-jvm-variants], - [JVM variants (separated by commas) to build (server, client, minimal1, kernel, zero, zeroshark) @<:@server@:>@])]) + [JVM variants (separated by commas) to build (server, client, minimal1, kernel, zero, zeroshark, core) @<:@server@:>@])]) if test "x$with_jvm_variants" = x; then with_jvm_variants="server" fi JVM_VARIANTS=",$with_jvm_variants," -TEST_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,//' -e 's/client,//' -e 's/minimal1,//' -e 's/kernel,//' -e 's/zero,//' -e 's/zeroshark,//'` +TEST_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,//' -e 's/client,//' -e 's/minimal1,//' -e 's/kernel,//' -e 's/zero,//' -e 's/zeroshark,//' -e 's/core,//'` if test "x$TEST_VARIANTS" != "x,"; then - AC_MSG_ERROR([The available JVM variants are: server, client, minimal1, kernel, zero, zeroshark]) + AC_MSG_ERROR([The available JVM variants are: server, client, minimal1, kernel, zero, zeroshark, core]) fi AC_MSG_RESULT([$with_jvm_variants]) @@ -87,6 +115,7 @@ JVM_VARIANT_MINIMAL1=`$ECHO "$JVM_VARIANTS" | $SED -e '/,minimal1,/!s/.*/false/g JVM_VARIANT_KERNEL=`$ECHO "$JVM_VARIANTS" | $SED -e '/,kernel,/!s/.*/false/g' -e '/,kernel,/s/.*/true/g'` JVM_VARIANT_ZERO=`$ECHO "$JVM_VARIANTS" | $SED -e '/,zero,/!s/.*/false/g' -e '/,zero,/s/.*/true/g'` JVM_VARIANT_ZEROSHARK=`$ECHO "$JVM_VARIANTS" | $SED -e '/,zeroshark,/!s/.*/false/g' -e '/,zeroshark,/s/.*/true/g'` +JVM_VARIANT_CORE=`$ECHO "$JVM_VARIANTS" | $SED -e '/,core,/!s/.*/false/g' -e '/,core,/s/.*/true/g'` if test "x$JVM_VARIANT_CLIENT" = xtrue; then if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then @@ -106,7 +135,7 @@ fi # Replace the commas with AND for use in the build directory name. ANDED_JVM_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/^,//' -e 's/,$//' -e 's/,/AND/'` -COUNT_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,/1/' -e 's/client,/1/' -e 's/minimal1,/1/' -e 's/kernel,/1/' -e 's/zero,/1/' -e 's/zeroshark,/1/'` +COUNT_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,/1/' -e 's/client,/1/' -e 's/minimal1,/1/' -e 's/kernel,/1/' -e 's/zero,/1/' -e 's/zeroshark,/1/' -e 's/core,/1/'` if test "x$COUNT_VARIANTS" != "x,1"; then BUILDING_MULTIPLE_JVM_VARIANTS=yes else @@ -120,6 +149,7 @@ AC_SUBST(JVM_VARIANT_MINIMAL1) AC_SUBST(JVM_VARIANT_KERNEL) AC_SUBST(JVM_VARIANT_ZERO) AC_SUBST(JVM_VARIANT_ZEROSHARK) +AC_SUBST(JVM_VARIANT_CORE) INCLUDE_SA=true if test "x$JVM_VARIANT_ZERO" = xtrue ; then @@ -128,6 +158,9 @@ fi if test "x$JVM_VARIANT_ZEROSHARK" = xtrue ; then INCLUDE_SA=false fi +if test "x$VAR_CPU" = xppc64 ; then + INCLUDE_SA=false +fi AC_SUBST(INCLUDE_SA) if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then @@ -237,6 +270,10 @@ if test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}shark " fi +if test "x$JVM_VARIANT_CORE" = xtrue; then + HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}core " +fi + HOTSPOT_TARGET="$HOTSPOT_TARGET docs export_$HOTSPOT_EXPORT" # On Macosx universal binaries are produced, but they only contain diff --git a/common/autoconf/spec.gmk.in b/common/autoconf/spec.gmk.in index 272a003673f..6114233c6e8 100644 --- a/common/autoconf/spec.gmk.in +++ b/common/autoconf/spec.gmk.in @@ -206,6 +206,7 @@ JVM_VARIANT_MINIMAL1:=@JVM_VARIANT_MINIMAL1@ JVM_VARIANT_KERNEL:=@JVM_VARIANT_KERNEL@ JVM_VARIANT_ZERO:=@JVM_VARIANT_ZERO@ JVM_VARIANT_ZEROSHARK:=@JVM_VARIANT_ZEROSHARK@ +JVM_VARIANT_CORE:=@JVM_VARIANT_CORE@ # Universal binaries on macosx MACOSX_UNIVERSAL=@MACOSX_UNIVERSAL@ @@ -347,6 +348,11 @@ CPP:=@FIXPATH@ @CPP@ # The linker can be gcc or ld on posix systems, or link.exe on windows systems. LD:=@FIXPATH@ @LD@ +# The linker on older SuSE distros (e.g. on SLES 10) complains with: +# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." +# if feeded with a version script which contains named tags. +USING_BROKEN_SUSE_LD:=@USING_BROKEN_SUSE_LD@ + # LDFLAGS used to link the jdk native libraries (C-code) LDFLAGS_JDKLIB:=@LDFLAGS_JDKLIB@ LDFLAGS_JDKLIB_SUFFIX:=@LDFLAGS_JDKLIB_SUFFIX@ diff --git a/common/autoconf/toolchain.m4 b/common/autoconf/toolchain.m4 index 10d7728cc33..16c1740220f 100644 --- a/common/autoconf/toolchain.m4 +++ b/common/autoconf/toolchain.m4 @@ -1093,6 +1093,24 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_COMPILER_FLAGS_MISC], [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true], [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false]) AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG) + + + # Check for broken SuSE 'ld' for which 'Only anonymous version tag is allowed in executable.' + USING_BROKEN_SUSE_LD=no + if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$GCC" = xyes; then + AC_MSG_CHECKING([for broken SuSE 'ld' which only understands anonymous version tags in executables]) + echo "SUNWprivate_1.1 { local: *; };" > version-script.map + echo "int main() { }" > main.c + if $CXX -Xlinker -version-script=version-script.map main.c 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD; then + AC_MSG_RESULT(no) + USING_BROKEN_SUSE_LD=no + else + AC_MSG_RESULT(yes) + USING_BROKEN_SUSE_LD=yes + fi + rm -rf version-script.map main.c + fi + AC_SUBST(USING_BROKEN_SUSE_LD) ]) # Setup the JTREG paths From 4a47ea2602921c35d83d75351dd853d8d904a389 Mon Sep 17 00:00:00 2001 From: Volker Simonis Date: Tue, 2 Jul 2013 17:38:40 -0700 Subject: [PATCH 002/158] 8017568: PPC64: Generic build preparations needed to enable new build on Linux/PPC64 Enable new build on Linux/PPC64 Reviewed-by: erikj --- jdk/makefiles/CompileLaunchers.gmk | 31 ++++++++++-- jdk/makefiles/CompileNativeLibraries.gmk | 17 +++++-- .../mapfiles/launchers/mapfile-ppc64 | 39 +++++++++++++++ .../launchers/mapfile-ppc64.anonymous | 40 +++++++++++++++ .../mapfiles/launchers/mapfile-x86.anonymous | 49 +++++++++++++++++++ .../launchers/mapfile-x86_64.anonymous | 40 +++++++++++++++ .../mapfile-vers-unpack200.anonymous | 34 +++++++++++++ jdk/src/solaris/bin/ppc64/jvm.cfg | 33 +++++++++++++ 8 files changed, 273 insertions(+), 10 deletions(-) create mode 100644 jdk/makefiles/mapfiles/launchers/mapfile-ppc64 create mode 100644 jdk/makefiles/mapfiles/launchers/mapfile-ppc64.anonymous create mode 100644 jdk/makefiles/mapfiles/launchers/mapfile-x86.anonymous create mode 100644 jdk/makefiles/mapfiles/launchers/mapfile-x86_64.anonymous create mode 100644 jdk/makefiles/mapfiles/libunpack/mapfile-vers-unpack200.anonymous create mode 100644 jdk/src/solaris/bin/ppc64/jvm.cfg diff --git a/jdk/makefiles/CompileLaunchers.gmk b/jdk/makefiles/CompileLaunchers.gmk index 90348b6360f..cc7008eefa3 100644 --- a/jdk/makefiles/CompileLaunchers.gmk +++ b/jdk/makefiles/CompileLaunchers.gmk @@ -23,7 +23,7 @@ # questions. # -defalt: all +default: all include $(SPEC) include MakeBase.gmk @@ -128,10 +128,21 @@ define SetupLauncher $1_CFLAGS:=$(filter-out -MD,$(CFLAGS_JDKEXE)) endif - ifneq ($(wildcard $(JDK_TOPDIR)/makefiles/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU)),) - $1_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU) + # The linker on older SuSE distros (e.g. on SLES 10) complains with: + # "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." + # if feeded with a version script which contains named tags. + ifeq ($(USING_BROKEN_SUSE_LD),yes) + ifneq ($(wildcard $(JDK_TOPDIR)/makefiles/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU).anonymous),) + $1_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU).anonymous + else + $1_MAPFILE:= + endif else - $1_MAPFILE:= + ifneq ($(wildcard $(JDK_TOPDIR)/makefiles/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU)),) + $1_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU) + else + $1_MAPFILE:= + endif endif $(call SetupNativeCompilation,BUILD_LAUNCHER_$1,\ @@ -448,6 +459,16 @@ ifeq ($(OPENJDK_TARGET_OS),windows) EXE_OUT_OPTION_save:=$(EXE_OUT_OPTION) EXE_OUT_OPTION:=-Fe endif + +# The linker on older SuSE distros (e.g. on SLES 10) complains with: +# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." +# if feeded with a version script which contains named tags. +ifeq ($(USING_BROKEN_SUSE_LD),yes) + UNPACK_MAPFILE=$(JDK_TOPDIR)/makefiles/mapfiles/libunpack/mapfile-vers-unpack200.anonymous +else + UNPACK_MAPFILE=$(JDK_TOPDIR)/makefiles/mapfiles/libunpack/mapfile-vers-unpack200 +endif + $(eval $(call SetupNativeCompilation,BUILD_UNPACKEXE,\ SRC:=$(JDK_TOPDIR)/src/share/native/com/sun/java/util/jar/pack,\ EXCLUDE_FILES:=jni.cpp,\ @@ -459,7 +480,7 @@ $(eval $(call SetupNativeCompilation,BUILD_UNPACKEXE,\ CFLAGS_linux:=-fPIC,\ CFLAGS_solaris:=-KPIC, \ CFLAGS_macosx:=-fPIC, \ - MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libunpack/mapfile-vers-unpack200,\ + MAPFILE:=$(UNPACK_MAPFILE),\ LDFLAGS:=$(UNPACKEXE_ZIPOBJS),\ LDFLAGS_windows:=$(CXXFLAGS_JDKEXE),\ LDFLAGS_posix:=$(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \ diff --git a/jdk/makefiles/CompileNativeLibraries.gmk b/jdk/makefiles/CompileNativeLibraries.gmk index 4fcb6e84695..68a36e90640 100644 --- a/jdk/makefiles/CompileNativeLibraries.gmk +++ b/jdk/makefiles/CompileNativeLibraries.gmk @@ -23,7 +23,7 @@ # questions. # -defalt: all +default: all include $(SPEC) include MakeBase.gmk @@ -2478,11 +2478,14 @@ ifeq ($(OPENJDK_TARGET_OS), macosx) -framework Cocoa \ -F/System/Library/Frameworks/JavaVM.framework/Frameworks \ -framework JavaNativeFoundation -else ifneq ($(OPENJDK_TARGET_OS), windows) - LIBSPLASHSCREEN_LDFLAGS_SUFFIX += -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -lX11 -lXext $(LIBM) -lpthread -else # OPENJDK_TARGET_OS +else ifeq ($(OPENJDK_TARGET_OS), windows) LIBSPLASHSCREEN_LDFLAGS_SUFFIX += kernel32.lib user32.lib gdi32.lib delayimp.lib -DELAYLOAD:user32.dll -endif # OPENJDK_TARGET_OS +else ifeq ($(OPENJDK_TARGET_OS), solaris) + # Solaris still uses OPENWIN_LIB .. + LIBSPLASHSCREEN_LDFLAGS_SUFFIX += -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -lX11 -lXext $(LIBM) -lpthread +else # .. all other Unixes can use X_LIBS + LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread +endif $(eval $(call SetupNativeCompilation,LIBSPLASHSCREEN,\ LIBRARY:=splashscreen,\ @@ -2862,6 +2865,10 @@ else ifeq ($(OPENJDK_TARGET_CPU), ppc) LIBJSOUND_CFLAGS += -DX_ARCH=X_PPC endif + + ifeq ($(OPENJDK_TARGET_CPU), ppc64) + LIBJSOUND_CFLAGS += -DX_ARCH=X_PPC64 + endif endif LIBJSOUND_CFLAGS += -DEXTRA_SOUND_JNI_LIBS='"$(EXTRA_SOUND_JNI_LIBS)"' diff --git a/jdk/makefiles/mapfiles/launchers/mapfile-ppc64 b/jdk/makefiles/mapfiles/launchers/mapfile-ppc64 new file mode 100644 index 00000000000..fb4ceb5cd3a --- /dev/null +++ b/jdk/makefiles/mapfiles/launchers/mapfile-ppc64 @@ -0,0 +1,39 @@ +# +# Copyright (c) 2004, 2012, 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. +# +# +# Specify what global symbols we export. Note that we're not really +# interested in declaring a version, simply scoping the file is sufficient. +# + +SUNWprivate_1.1 { + global: + main; # Provides basic adb symbol offsets + environ; # Public symbols and required by Java run time + _environ; + __environ_lock; + + local: + *; +}; diff --git a/jdk/makefiles/mapfiles/launchers/mapfile-ppc64.anonymous b/jdk/makefiles/mapfiles/launchers/mapfile-ppc64.anonymous new file mode 100644 index 00000000000..4fcde94d1d8 --- /dev/null +++ b/jdk/makefiles/mapfiles/launchers/mapfile-ppc64.anonymous @@ -0,0 +1,40 @@ +# +# Copyright (c) 2004, 2012, 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 anonymous library interface (i.e. without a version tag) for broken SuSE ld because +# the linker on older SuSE distros (e.g. on SLES 10) complains with: +# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." +# if feeded with a version script which contains named tags. + +{ + global: + main; # Provides basic adb symbol offsets + environ; # Public symbols and required by Java run time + _environ; + __environ_lock; + + local: + *; +}; diff --git a/jdk/makefiles/mapfiles/launchers/mapfile-x86.anonymous b/jdk/makefiles/mapfiles/launchers/mapfile-x86.anonymous new file mode 100644 index 00000000000..49032cd10df --- /dev/null +++ b/jdk/makefiles/mapfiles/launchers/mapfile-x86.anonymous @@ -0,0 +1,49 @@ +# +# Copyright (c) 2004, 2012, 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 anonymous library interface (i.e. without a version tag) for broken SuSE ld because +# the linker on older SuSE distros (e.g. on SLES 10) complains with: +# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." +# if feeded with a version script which contains named tags. + +{ + global: + main; # Provides basic adb symbol offsets + environ; # Public symbols and required by Java run time + _environ; + __environ_lock; + ___Argv; # The following are private, but as they are + _start; # exported from ctr1/crtn, the clever hacker + _init; # might know about them. However note, that + _fini; # their use is strictly not supported. + _lib_version; +# _mcount; + __fsr; + __fsr_init_value; + __longdouble_used; + + local: + *; +}; diff --git a/jdk/makefiles/mapfiles/launchers/mapfile-x86_64.anonymous b/jdk/makefiles/mapfiles/launchers/mapfile-x86_64.anonymous new file mode 100644 index 00000000000..4fcde94d1d8 --- /dev/null +++ b/jdk/makefiles/mapfiles/launchers/mapfile-x86_64.anonymous @@ -0,0 +1,40 @@ +# +# Copyright (c) 2004, 2012, 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 anonymous library interface (i.e. without a version tag) for broken SuSE ld because +# the linker on older SuSE distros (e.g. on SLES 10) complains with: +# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." +# if feeded with a version script which contains named tags. + +{ + global: + main; # Provides basic adb symbol offsets + environ; # Public symbols and required by Java run time + _environ; + __environ_lock; + + local: + *; +}; diff --git a/jdk/makefiles/mapfiles/libunpack/mapfile-vers-unpack200.anonymous b/jdk/makefiles/mapfiles/libunpack/mapfile-vers-unpack200.anonymous new file mode 100644 index 00000000000..7f3a07934bd --- /dev/null +++ b/jdk/makefiles/mapfiles/libunpack/mapfile-vers-unpack200.anonymous @@ -0,0 +1,34 @@ +# +# Copyright (c) 2011, 2012, 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 anonymous library interface (i.e. without a version tag) for broken SuSE ld because +# the linker on older SuSE distros (e.g. on SLES 10) complains with: +# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." +# if feeded with a version script which contains named tags. + +{ + local: + *; +}; diff --git a/jdk/src/solaris/bin/ppc64/jvm.cfg b/jdk/src/solaris/bin/ppc64/jvm.cfg new file mode 100644 index 00000000000..2fc1214175b --- /dev/null +++ b/jdk/src/solaris/bin/ppc64/jvm.cfg @@ -0,0 +1,33 @@ +# Copyright (c) 2011, 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. +# +# List of JVMs that can be used as an option to java, javac, etc. +# Order is important -- first in this list is the default JVM. +# NOTE that this both this file and its format are UNSUPPORTED and +# WILL GO AWAY in a future release. +# +# You may also select a JVM in an arbitrary location with the +# "-XXaltjvm=" option, but that too is unsupported +# and may not be available in a future release. +# +-server KNOWN From 988aff4a2b8fd3cd7c0c0383dfc83097af9a1b3b Mon Sep 17 00:00:00 2001 From: Volker Simonis Date: Thu, 12 Sep 2013 12:29:17 -0700 Subject: [PATCH 003/158] 8024265: Enable new build on AIX Reviewed-by: ihse --- common/autoconf/build-aux/config.guess | 16 ++ common/autoconf/build-performance.m4 | 7 +- common/autoconf/generated-configure.sh | 314 +++++++++++++++++++------ common/autoconf/help.m4 | 10 +- common/autoconf/libraries.m4 | 8 + common/autoconf/platform.m4 | 58 +++-- common/autoconf/spec.gmk.in | 3 +- common/autoconf/toolchain.m4 | 100 +++++++- common/makefiles/JavaCompilation.gmk | 18 +- common/makefiles/NativeCompilation.gmk | 2 +- 10 files changed, 409 insertions(+), 127 deletions(-) diff --git a/common/autoconf/build-aux/config.guess b/common/autoconf/build-aux/config.guess index 572ed2be3e8..0d33ce04b86 100644 --- a/common/autoconf/build-aux/config.guess +++ b/common/autoconf/build-aux/config.guess @@ -60,4 +60,20 @@ if test $? = 0; then esac fi +# Test and fix architecture string on AIX +# On AIX 'config.guess' returns 'powerpc' as architecture but 'powerpc' is +# implicitely handled as 32-bit architecture in 'platform.m4' so we check +# for the kernel mode rewrite it to 'powerpc64' if we'Re running in 64-bit mode. +# The check could also be done with `/usr/sbin/prtconf | grep "Kernel Type" | grep "64-bit"` +echo $OUT | grep powerpc-ibm-aix > /dev/null 2> /dev/null +if test $? = 0; then + if [ -x /bin/getconf ] ; then + KERNEL_BITMODE=`getconf KERNEL_BITMODE` + if [ "$KERNEL_BITMODE" = "32" ]; then + KERNEL_BITMODE="" + fi + fi + OUT=powerpc$KERNEL_BITMODE`echo $OUT | sed -e 's/[^-]*//'` +fi + echo $OUT diff --git a/common/autoconf/build-performance.m4 b/common/autoconf/build-performance.m4 index 9c4868ad822..e3e82d5a3ac 100644 --- a/common/autoconf/build-performance.m4 +++ b/common/autoconf/build-performance.m4 @@ -41,6 +41,9 @@ AC_DEFUN([BPERF_CHECK_CORES], # Looks like a MacOSX system NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk '{print [$]5}'` FOUND_CORES=yes + elif test "x$OPENJDK_BUILD_OS" = xaix ; then + NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print [$]4 }'` + FOUND_CORES=yes elif test -n "$NUMBER_OF_PROCESSORS"; then # On windows, look in the env NUM_CORES=$NUMBER_OF_PROCESSORS @@ -69,8 +72,8 @@ AC_DEFUN([BPERF_CHECK_MEMORY_SIZE], MEMORY_SIZE=`expr $MEMORY_SIZE / 1024` FOUND_MEM=yes elif test -x /usr/sbin/prtconf; then - # Looks like a Solaris system - MEMORY_SIZE=`/usr/sbin/prtconf | grep "Memory size" | awk '{ print [$]3 }'` + # Looks like a Solaris or AIX system + MEMORY_SIZE=`/usr/sbin/prtconf | grep "^Memory [[Ss]]ize" | awk '{ print [$]3 }'` FOUND_MEM=yes elif test -x /usr/sbin/system_profiler; then # Looks like a MacOSX system diff --git a/common/autoconf/generated-configure.sh b/common/autoconf/generated-configure.sh index 484fce196e0..b862e1f8932 100644 --- a/common/autoconf/generated-configure.sh +++ b/common/autoconf/generated-configure.sh @@ -710,7 +710,6 @@ STATIC_LIBRARY SHARED_LIBRARY OBJ_SUFFIX COMPILER_NAME -TARGET_BITS_FLAG JT_HOME JTREGEXE LIPO @@ -752,6 +751,7 @@ ac_ct_PROPER_COMPILER_CXX PROPER_COMPILER_CXX POTENTIAL_CXX TOOLS_DIR_CXX +COMPILER_TARGET_BITS_FLAG OBJEXT EXEEXT ac_ct_CC @@ -3450,8 +3450,6 @@ cygwin_help() { PKGHANDLER_COMMAND="cd && cmd /c setup -q -P zip" ;; make) PKGHANDLER_COMMAND="cd && cmd /c setup -q -P make" ;; - * ) - break ;; esac } @@ -3473,8 +3471,6 @@ apt_help() { PKGHANDLER_COMMAND="sudo apt-get install libX11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;; ccache) PKGHANDLER_COMMAND="sudo apt-get install ccache" ;; - * ) - break ;; esac } @@ -3496,8 +3492,6 @@ yum_help() { PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel" ;; ccache) PKGHANDLER_COMMAND="sudo yum install ccache" ;; - * ) - break ;; esac } @@ -3826,7 +3820,7 @@ fi #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1378403883 +DATE_WHEN_GENERATED=1379014108 ############################################################################### # @@ -6745,6 +6739,11 @@ test -n "$target_alias" && VAR_OS_API=winapi VAR_OS_ENV=windows.msys ;; + *aix*) + VAR_OS=aix + VAR_OS_API=posix + VAR_OS_ENV=aix + ;; *) as_fn_error $? "unsupported operating system $build_os" "$LINENO" 5 ;; @@ -6853,6 +6852,11 @@ $as_echo "$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU" >&6; } VAR_OS_API=winapi VAR_OS_ENV=windows.msys ;; + *aix*) + VAR_OS=aix + VAR_OS_API=posix + VAR_OS_ENV=aix + ;; *) as_fn_error $? "unsupported operating system $host_os" "$LINENO" 5 ;; @@ -15749,7 +15753,7 @@ if test "x$BOOT_JDK_FOUND" = xno; then case $PKGHANDLER in apt-get) apt_help $MISSING_DEPENDENCY ;; - yum) + yum) yum_help $MISSING_DEPENDENCY ;; port) port_help $MISSING_DEPENDENCY ;; @@ -15757,8 +15761,6 @@ if test "x$BOOT_JDK_FOUND" = xno; then pkgutil_help $MISSING_DEPENDENCY ;; pkgadd) pkgadd_help $MISSING_DEPENDENCY ;; - * ) - break ;; esac if test "x$PKGHANDLER_COMMAND" != x; then @@ -19177,6 +19179,9 @@ elif test "x$OPENJDK_TARGET_OS" = "xwindows"; then COMPILER_CHECK_LIST="cl" elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then COMPILER_CHECK_LIST="cc gcc" +elif test "x$OPENJDK_TARGET_OS" = "xaix"; then + # Do not probe for cc on AIX. + COMPILER_CHECK_LIST="xlc_r" else COMPILER_CHECK_LIST="gcc cc" fi @@ -19300,7 +19305,7 @@ done case $PKGHANDLER in apt-get) apt_help $MISSING_DEPENDENCY ;; - yum) + yum) yum_help $MISSING_DEPENDENCY ;; port) port_help $MISSING_DEPENDENCY ;; @@ -19308,8 +19313,6 @@ done pkgutil_help $MISSING_DEPENDENCY ;; pkgadd) pkgadd_help $MISSING_DEPENDENCY ;; - * ) - break ;; esac if test "x$PKGHANDLER_COMMAND" != x; then @@ -19584,9 +19587,12 @@ $as_echo "$as_me: This might be caused by spaces in the path, which is not allow $as_echo "$as_me: Rewriting CC to \"$new_complete\"" >&6;} fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking resolved symbolic links for CC" >&5 -$as_echo_n "checking resolved symbolic links for CC... " >&6; } TEST_COMPILER="$CC" + # Don't remove symbolic links on AIX because 'xlc_r' and 'xlC_r' may all be links + # to 'xlc' but it is crucial that we invoke the compiler with the right name! + if test "x$OPENJDK_BUILD_OS" != xaix; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking resolved symbolic links for CC" >&5 +$as_echo_n "checking resolved symbolic links for CC... " >&6; } if test "x$OPENJDK_BUILD_OS" != xwindows; then # Follow a chain of symbolic links. Use readlink @@ -19635,8 +19641,9 @@ $as_echo_n "checking resolved symbolic links for CC... " >&6; } fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEST_COMPILER" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEST_COMPILER" >&5 $as_echo "$TEST_COMPILER" >&6; } + fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if CC is disguised ccache" >&5 $as_echo_n "checking if CC is disguised ccache... " >&6; } @@ -20100,6 +20107,15 @@ $as_echo "$as_me: The result from running with -V was: \"$COMPILER_VERSION_TEST\ COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*[ ,\t]$COMPILER_NAME[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p"` COMPILER_VENDOR="Sun Studio" fi + elif test "x$OPENJDK_TARGET_OS" = xaix; then + COMPILER_VERSION_TEST=`$COMPILER -qversion 2>&1 | $TAIL -n 1` + $ECHO $COMPILER_VERSION_TEST | $GREP "^Version: " > /dev/null + if test $? -ne 0; then + as_fn_error $? "Failed to detect the compiler version of $COMPILER ...." "$LINENO" 5 + else + COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n 's/Version: \(0-90-9\.0-90-9*\).*/\1/p'` + COMPILER_VENDOR='IBM' + fi elif test "x$OPENJDK_TARGET_OS" = xwindows; then # First line typically looks something like: # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86 @@ -20741,6 +20757,14 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +# Option used to tell the compiler whether to create 32- or 64-bit executables +# Notice that CC contains the full compiler path at this point. +case $CC in + *xlc_r) COMPILER_TARGET_BITS_FLAG="-q";; + *) COMPILER_TARGET_BITS_FLAG="-m";; +esac + + ### Locate C++ compiler (CXX) if test "x$CXX" != x; then @@ -20749,6 +20773,9 @@ elif test "x$OPENJDK_TARGET_OS" = "xwindows"; then COMPILER_CHECK_LIST="cl" elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then COMPILER_CHECK_LIST="CC g++" +elif test "x$OPENJDK_TARGET_OS" = "xaix"; then + # Do not probe for CC on AIX . + COMPILER_CHECK_LIST="xlC_r" else COMPILER_CHECK_LIST="g++ CC" fi @@ -20872,7 +20899,7 @@ done case $PKGHANDLER in apt-get) apt_help $MISSING_DEPENDENCY ;; - yum) + yum) yum_help $MISSING_DEPENDENCY ;; port) port_help $MISSING_DEPENDENCY ;; @@ -20880,8 +20907,6 @@ done pkgutil_help $MISSING_DEPENDENCY ;; pkgadd) pkgadd_help $MISSING_DEPENDENCY ;; - * ) - break ;; esac if test "x$PKGHANDLER_COMMAND" != x; then @@ -21156,9 +21181,12 @@ $as_echo "$as_me: This might be caused by spaces in the path, which is not allow $as_echo "$as_me: Rewriting CXX to \"$new_complete\"" >&6;} fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking resolved symbolic links for CXX" >&5 -$as_echo_n "checking resolved symbolic links for CXX... " >&6; } TEST_COMPILER="$CXX" + # Don't remove symbolic links on AIX because 'xlc_r' and 'xlC_r' may all be links + # to 'xlc' but it is crucial that we invoke the compiler with the right name! + if test "x$OPENJDK_BUILD_OS" != xaix; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking resolved symbolic links for CXX" >&5 +$as_echo_n "checking resolved symbolic links for CXX... " >&6; } if test "x$OPENJDK_BUILD_OS" != xwindows; then # Follow a chain of symbolic links. Use readlink @@ -21207,8 +21235,9 @@ $as_echo_n "checking resolved symbolic links for CXX... " >&6; } fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEST_COMPILER" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEST_COMPILER" >&5 $as_echo "$TEST_COMPILER" >&6; } + fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if CXX is disguised ccache" >&5 $as_echo_n "checking if CXX is disguised ccache... " >&6; } @@ -21672,6 +21701,15 @@ $as_echo "$as_me: The result from running with -V was: \"$COMPILER_VERSION_TEST\ COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*[ ,\t]$COMPILER_NAME[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p"` COMPILER_VENDOR="Sun Studio" fi + elif test "x$OPENJDK_TARGET_OS" = xaix; then + COMPILER_VERSION_TEST=`$COMPILER -qversion 2>&1 | $TAIL -n 1` + $ECHO $COMPILER_VERSION_TEST | $GREP "^Version: " > /dev/null + if test $? -ne 0; then + as_fn_error $? "Failed to detect the compiler version of $COMPILER ...." "$LINENO" 5 + else + COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n 's/Version: \(0-90-9\.0-90-9*\).*/\1/p'` + COMPILER_VENDOR='IBM' + fi elif test "x$OPENJDK_TARGET_OS" = xwindows; then # First line typically looks something like: # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86 @@ -22877,6 +22915,8 @@ $as_echo "$as_me: Rewriting AR to \"$new_complete\"" >&6;} fi if test "x$OPENJDK_TARGET_OS" = xmacosx; then ARFLAGS="-r" +elif test "x$OPENJDK_TARGET_OS" = xaix; then + ARFLAGS="-X64" else ARFLAGS="" fi @@ -28852,21 +28892,23 @@ done # is made at runtime.) # -if test "x$OPENJDK_TARGET_OS" = xsolaris; then - # Always specify -m flags on Solaris +if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xaix; then + # Always specify -m flag on Solaris + # And -q on AIX because otherwise the compiler produces 32-bit objects by default # keep track of c/cxx flags that we added outselves... # to prevent emitting warning... - TARGET_BITS_FLAG="-m${OPENJDK_TARGET_CPU_BITS}" + ADDED_CFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" + ADDED_CXXFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" + ADDED_LDFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" + CFLAGS="${CFLAGS}${ADDED_CFLAGS}" + CXXFLAGS="${CXXFLAGS}${ADDED_CXXFLAGS}" + LDFLAGS="${LDFLAGS}${ADDED_LDFLAGS}" - CFLAGS="${CFLAGS} ${TARGET_BITS_FLAG}" - CXXFLAGS="${CXXFLAGS} ${TARGET_BITS_FLAG}" - LDFLAGS="${LDFLAGS} ${TARGET_BITS_FLAG}" - - CFLAGS_JDK="${CFLAGS_JDK} ${TARGET_BITS_FLAG}" - CXXFLAGS_JDK="${CXXFLAGS_JDK} ${TARGET_BITS_FLAG}" - LDFLAGS_JDK="${LDFLAGS_JDK} ${TARGET_BITS_FLAG}" + CFLAGS_JDK="${CFLAGS_JDK}${ADDED_CFLAGS}" + CXXFLAGS_JDK="${CXXFLAGS_JDK}${ADDED_CXXFLAGS}" + LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}" elif test "x$COMPILE_TYPE" = xreduced; then if test "x$OPENJDK_TARGET_OS" != xwindows; then @@ -28874,16 +28916,17 @@ elif test "x$COMPILE_TYPE" = xreduced; then # keep track of c/cxx flags that we added outselves... # to prevent emitting warning... - TARGET_BITS_FLAG="-m${OPENJDK_TARGET_CPU_BITS}" + ADDED_CFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" + ADDED_CXXFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" + ADDED_LDFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" + CFLAGS="${CFLAGS}${ADDED_CFLAGS}" + CXXFLAGS="${CXXFLAGS}${ADDED_CXXFLAGS}" + LDFLAGS="${LDFLAGS}${ADDED_LDFLAGS}" - CFLAGS="${CFLAGS} ${TARGET_BITS_FLAG}" - CXXFLAGS="${CXXFLAGS} ${TARGET_BITS_FLAG}" - LDFLAGS="${LDFLAGS} ${TARGET_BITS_FLAG}" - - CFLAGS_JDK="${CFLAGS_JDK} ${TARGET_BITS_FLAG}" - CXXFLAGS_JDK="${CXXFLAGS_JDK} ${TARGET_BITS_FLAG}" - LDFLAGS_JDK="${LDFLAGS_JDK} ${TARGET_BITS_FLAG}" + CFLAGS_JDK="${CFLAGS_JDK}${ADDED_CFLAGS}" + CXXFLAGS_JDK="${CXXFLAGS_JDK}${ADDED_CXXFLAGS}" + LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}" fi fi @@ -28949,20 +28992,83 @@ _ACEOF -if test "x$SIZEOF_INT_P" != "x$ac_cv_sizeof_int_p"; then - # Workaround autoconf bug, see http://lists.gnu.org/archive/html/autoconf/2010-07/msg00004.html - SIZEOF_INT_P="$ac_cv_sizeof_int_p" -fi - -if test "x$SIZEOF_INT_P" = x; then +# AC_CHECK_SIZEOF defines 'ac_cv_sizeof_int_p' to hold the number of bytes used by an 'int*' +if test "x$ac_cv_sizeof_int_p" = x; then # The test failed, lets stick to the assumed value. { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The number of bits in the target could not be determined, using $OPENJDK_TARGET_CPU_BITS." >&5 $as_echo "$as_me: WARNING: The number of bits in the target could not be determined, using $OPENJDK_TARGET_CPU_BITS." >&2;} else - TESTED_TARGET_CPU_BITS=`expr 8 \* $SIZEOF_INT_P` + TESTED_TARGET_CPU_BITS=`expr 8 \* $ac_cv_sizeof_int_p` if test "x$TESTED_TARGET_CPU_BITS" != "x$OPENJDK_TARGET_CPU_BITS"; then - as_fn_error $? "The tested number of bits in the target ($TESTED_TARGET_CPU_BITS) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS)" "$LINENO" 5 + # This situation may happen on 64-bit platforms where the compiler by default only generates 32-bit objects + # Let's try to implicitely set the compilers target architecture and retry the test + { $as_echo "$as_me:${as_lineno-$LINENO}: The tested number of bits in the target ($TESTED_TARGET_CPU_BITS) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS)." >&5 +$as_echo "$as_me: The tested number of bits in the target ($TESTED_TARGET_CPU_BITS) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS)." >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: I'll retry after setting the platforms compiler target bits flag to ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" >&5 +$as_echo "$as_me: I'll retry after setting the platforms compiler target bits flag to ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" >&6;} + + # keep track of c/cxx flags that we added outselves... + # to prevent emitting warning... + ADDED_CFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" + ADDED_CXXFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" + ADDED_LDFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" + + CFLAGS="${CFLAGS}${ADDED_CFLAGS}" + CXXFLAGS="${CXXFLAGS}${ADDED_CXXFLAGS}" + LDFLAGS="${LDFLAGS}${ADDED_LDFLAGS}" + + CFLAGS_JDK="${CFLAGS_JDK}${ADDED_CFLAGS}" + CXXFLAGS_JDK="${CXXFLAGS_JDK}${ADDED_CXXFLAGS}" + LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}" + + + # We have to unset 'ac_cv_sizeof_int_p' first, otherwise AC_CHECK_SIZEOF will use the previously cached value! + unset ac_cv_sizeof_int_p + # And we have to undef the definition of SIZEOF_INT_P in confdefs.h by the previous invocation of AC_CHECK_SIZEOF + cat >>confdefs.h <<_ACEOF +#undef SIZEOF_INT_P +_ACEOF + + # The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int *" >&5 +$as_echo_n "checking size of int *... " >&6; } +if ${ac_cv_sizeof_int_p+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (int *))" "ac_cv_sizeof_int_p" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_int_p" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (int *) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_int_p=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int_p" >&5 +$as_echo "$ac_cv_sizeof_int_p" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INT_P $ac_cv_sizeof_int_p +_ACEOF + + + + TESTED_TARGET_CPU_BITS=`expr 8 \* $ac_cv_sizeof_int_p` + + if test "x$TESTED_TARGET_CPU_BITS" != "x$OPENJDK_TARGET_CPU_BITS"; then + as_fn_error $? "The tested number of bits in the target ($TESTED_TARGET_CPU_BITS) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS)" "$LINENO" 5 + fi fi fi @@ -29275,6 +29381,29 @@ else POST_STRIP_CMD="$STRIP -x" POST_MCS_CMD="$MCS -d -a \"JDK $FULL_VERSION\"" fi + if test "x$OPENJDK_TARGET_OS" = xaix; then + COMPILER_NAME=xlc + PICFLAG="-qpic=large" + LIBRARY_PREFIX=lib + SHARED_LIBRARY='lib$1.so' + STATIC_LIBRARY='lib$1.a' + SHARED_LIBRARY_FLAGS="-qmkshrobj" + SHARED_LIBRARY_SUFFIX='.so' + STATIC_LIBRARY_SUFFIX='.a' + OBJ_SUFFIX='.o' + EXE_SUFFIX='' + SET_SHARED_LIBRARY_NAME='' + SET_SHARED_LIBRARY_MAPFILE='' + C_FLAG_REORDER='' + CXX_FLAG_REORDER='' + SET_SHARED_LIBRARY_ORIGIN='' + SET_EXECUTABLE_ORIGIN="" + CFLAGS_JDK="" + CXXFLAGS_JDK="" + CFLAGS_JDKLIB_EXTRA='' + POST_STRIP_CMD="$STRIP -X32_64" + POST_MCS_CMD="" + fi if test "x$OPENJDK_TARGET_OS" = xwindows; then # If it is not gcc, then assume it is the MS Visual Studio compiler COMPILER_NAME=cl @@ -29457,8 +29586,26 @@ case $COMPILER_TYPE in ;; esac - CFLAGS_DEBUG_SYMBOLS="-g -xs" - CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs" + CFLAGS_DEBUG_SYMBOLS="-g -xs" + CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs" + ;; + xlc ) + C_FLAG_DEPS="-qmakedep=gcc -MF" + CXX_FLAG_DEPS="-qmakedep=gcc -MF" + C_O_FLAG_HIGHEST="-O3" + C_O_FLAG_HI="-O3 -qstrict" + C_O_FLAG_NORM="-O2" + C_O_FLAG_NONE="" + CXX_O_FLAG_HIGHEST="-O3" + CXX_O_FLAG_HI="-O3 -qstrict" + CXX_O_FLAG_NORM="-O2" + CXX_O_FLAG_NONE="" + CFLAGS_DEBUG_SYMBOLS="-g" + CXXFLAGS_DEBUG_SYMBOLS="-g" + LDFLAGS_JDK="${LDFLAGS_JDK} -q64 -brtl -bnolibpath -liconv -bexpall" + CFLAGS_JDK="${CFLAGS_JDK} -qchars=signed -q64 -qfullpath -qsaveopt" + CXXFLAGS_JDK="${CXXFLAGS_JDK} -qchars=signed -q64 -qfullpath -qsaveopt" + ;; esac ;; CL ) @@ -29582,6 +29729,13 @@ case $COMPILER_NAME in LDFLAGS_JDK="$LDFLAGS_JDK -z defs -xildoff -ztext" LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib" ;; + xlc ) + CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" + CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" + + LDFLAGS_JDK="$LDFLAGS_JDK" + LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK" + ;; cl ) CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \ -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \ @@ -29651,6 +29805,9 @@ fi if test "x$OPENJDK_TARGET_OS" = xsolaris; then CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DSOLARIS" fi +if test "x$OPENJDK_TARGET_OS" = xaix; then + CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DAIX -DPPC64" +fi if test "x$OPENJDK_TARGET_OS" = xmacosx; then CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" # Setting these parameters makes it an error to link to macosx APIs that are @@ -29783,10 +29940,10 @@ fi # ZERO_ARCHFLAG tells the compiler which mode to build for case "${OPENJDK_TARGET_CPU}" in s390) - ZERO_ARCHFLAG="-m31" + ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}31" ;; *) - ZERO_ARCHFLAG="-m${OPENJDK_TARGET_CPU_BITS}" + ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler supports \"$ZERO_ARCHFLAG\"" >&5 @@ -29859,15 +30016,15 @@ $as_echo "$supports" >&6; } - # Check that the compiler supports -mX flags + # Check that the compiler supports -mX (or -qX on AIX) flags # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler supports \"-m${OPENJDK_TARGET_CPU_BITS}\"" >&5 -$as_echo_n "checking if compiler supports \"-m${OPENJDK_TARGET_CPU_BITS}\"... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"" >&5 +$as_echo_n "checking if compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"... " >&6; } supports=yes saved_cflags="$CFLAGS" - CFLAGS="$CFLAGS -m${OPENJDK_TARGET_CPU_BITS}" + CFLAGS="$CFLAGS ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -29895,7 +30052,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu CFLAGS="$saved_cflags" saved_cxxflags="$CXXFLAGS" - CXXFLAGS="$CXXFLAG -m${OPENJDK_TARGET_CPU_BITS}" + CXXFLAGS="$CXXFLAG ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -30050,6 +30207,16 @@ $as_echo_n "checking what is not needed on Solaris?... " >&6; } $as_echo "alsa pulse" >&6; } fi +if test "x$OPENJDK_TARGET_OS" = xaix; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking what is not needed on AIX?" >&5 +$as_echo_n "checking what is not needed on AIX?... " >&6; } + ALSA_NOT_NEEDED=yes + PULSE_NOT_NEEDED=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: alsa pulse" >&5 +$as_echo "alsa pulse" >&6; } +fi + + if test "x$OPENJDK_TARGET_OS" = xwindows; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking what is not needed on Windows?" >&5 $as_echo_n "checking what is not needed on Windows?... " >&6; } @@ -30860,7 +31027,7 @@ if test "x$no_x" = xyes && test "x$X11_NOT_NEEDED" != xyes; then case $PKGHANDLER in apt-get) apt_help $MISSING_DEPENDENCY ;; - yum) + yum) yum_help $MISSING_DEPENDENCY ;; port) port_help $MISSING_DEPENDENCY ;; @@ -30868,8 +31035,6 @@ if test "x$no_x" = xyes && test "x$X11_NOT_NEEDED" != xyes; then pkgutil_help $MISSING_DEPENDENCY ;; pkgadd) pkgadd_help $MISSING_DEPENDENCY ;; - * ) - break ;; esac if test "x$PKGHANDLER_COMMAND" != x; then @@ -30953,7 +31118,7 @@ if test "x$X11_A_OK" = xno && test "x$X11_NOT_NEEDED" != xyes; then case $PKGHANDLER in apt-get) apt_help $MISSING_DEPENDENCY ;; - yum) + yum) yum_help $MISSING_DEPENDENCY ;; port) port_help $MISSING_DEPENDENCY ;; @@ -30961,8 +31126,6 @@ if test "x$X11_A_OK" = xno && test "x$X11_NOT_NEEDED" != xyes; then pkgutil_help $MISSING_DEPENDENCY ;; pkgadd) pkgadd_help $MISSING_DEPENDENCY ;; - * ) - break ;; esac if test "x$PKGHANDLER_COMMAND" != x; then @@ -31205,7 +31368,7 @@ $as_echo "$CUPS_FOUND" >&6; } case $PKGHANDLER in apt-get) apt_help $MISSING_DEPENDENCY ;; - yum) + yum) yum_help $MISSING_DEPENDENCY ;; port) port_help $MISSING_DEPENDENCY ;; @@ -31213,8 +31376,6 @@ $as_echo "$CUPS_FOUND" >&6; } pkgutil_help $MISSING_DEPENDENCY ;; pkgadd) pkgadd_help $MISSING_DEPENDENCY ;; - * ) - break ;; esac if test "x$PKGHANDLER_COMMAND" != x; then @@ -31828,7 +31989,7 @@ $as_echo "$FREETYPE2_FOUND" >&6; } case $PKGHANDLER in apt-get) apt_help $MISSING_DEPENDENCY ;; - yum) + yum) yum_help $MISSING_DEPENDENCY ;; port) port_help $MISSING_DEPENDENCY ;; @@ -31836,8 +31997,6 @@ $as_echo "$FREETYPE2_FOUND" >&6; } pkgutil_help $MISSING_DEPENDENCY ;; pkgadd) pkgadd_help $MISSING_DEPENDENCY ;; - * ) - break ;; esac if test "x$PKGHANDLER_COMMAND" != x; then @@ -32200,7 +32359,7 @@ done case $PKGHANDLER in apt-get) apt_help $MISSING_DEPENDENCY ;; - yum) + yum) yum_help $MISSING_DEPENDENCY ;; port) port_help $MISSING_DEPENDENCY ;; @@ -32208,8 +32367,6 @@ done pkgutil_help $MISSING_DEPENDENCY ;; pkgadd) pkgadd_help $MISSING_DEPENDENCY ;; - * ) - break ;; esac if test "x$PKGHANDLER_COMMAND" != x; then @@ -33073,6 +33230,9 @@ $as_echo_n "checking for number of cores... " >&6; } # Looks like a MacOSX system NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk '{print $5}'` FOUND_CORES=yes + elif test "x$OPENJDK_BUILD_OS" = xaix ; then + NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print $4 }'` + FOUND_CORES=yes elif test -n "$NUMBER_OF_PROCESSORS"; then # On windows, look in the env NUM_CORES=$NUMBER_OF_PROCESSORS @@ -33118,8 +33278,8 @@ $as_echo_n "checking for memory size... " >&6; } MEMORY_SIZE=`expr $MEMORY_SIZE / 1024` FOUND_MEM=yes elif test -x /usr/sbin/prtconf; then - # Looks like a Solaris system - MEMORY_SIZE=`/usr/sbin/prtconf | grep "Memory size" | awk '{ print $3 }'` + # Looks like a Solaris or AIX system + MEMORY_SIZE=`/usr/sbin/prtconf | grep "^Memory [Ss]ize" | awk '{ print $3 }'` FOUND_MEM=yes elif test -x /usr/sbin/system_profiler; then # Looks like a MacOSX system @@ -35013,7 +35173,7 @@ if test "x$CCACHE_HELP_MSG" != x && test "x$HIDE_PERFORMANCE_HINTS" = "xno"; the case $PKGHANDLER in apt-get) apt_help $MISSING_DEPENDENCY ;; - yum) + yum) yum_help $MISSING_DEPENDENCY ;; port) port_help $MISSING_DEPENDENCY ;; @@ -35021,8 +35181,6 @@ if test "x$CCACHE_HELP_MSG" != x && test "x$HIDE_PERFORMANCE_HINTS" = "xno"; the pkgutil_help $MISSING_DEPENDENCY ;; pkgadd) pkgadd_help $MISSING_DEPENDENCY ;; - * ) - break ;; esac if test "x$PKGHANDLER_COMMAND" != x; then diff --git a/common/autoconf/help.m4 b/common/autoconf/help.m4 index 15e8b955303..00e4653d3ad 100644 --- a/common/autoconf/help.m4 +++ b/common/autoconf/help.m4 @@ -38,7 +38,7 @@ AC_DEFUN([HELP_MSG_MISSING_DEPENDENCY], case $PKGHANDLER in apt-get) apt_help $MISSING_DEPENDENCY ;; - yum) + yum) yum_help $MISSING_DEPENDENCY ;; port) port_help $MISSING_DEPENDENCY ;; @@ -46,8 +46,6 @@ AC_DEFUN([HELP_MSG_MISSING_DEPENDENCY], pkgutil_help $MISSING_DEPENDENCY ;; pkgadd) pkgadd_help $MISSING_DEPENDENCY ;; - * ) - break ;; esac if test "x$PKGHANDLER_COMMAND" != x; then @@ -63,8 +61,6 @@ cygwin_help() { PKGHANDLER_COMMAND="cd && cmd /c setup -q -P zip" ;; make) PKGHANDLER_COMMAND="cd && cmd /c setup -q -P make" ;; - * ) - break ;; esac } @@ -86,8 +82,6 @@ apt_help() { PKGHANDLER_COMMAND="sudo apt-get install libX11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;; ccache) PKGHANDLER_COMMAND="sudo apt-get install ccache" ;; - * ) - break ;; esac } @@ -109,8 +103,6 @@ yum_help() { PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel" ;; ccache) PKGHANDLER_COMMAND="sudo yum install ccache" ;; - * ) - break ;; esac } diff --git a/common/autoconf/libraries.m4 b/common/autoconf/libraries.m4 index 1d53f04d203..cb242e5797c 100644 --- a/common/autoconf/libraries.m4 +++ b/common/autoconf/libraries.m4 @@ -43,6 +43,14 @@ if test "x$OPENJDK_TARGET_OS" = xsolaris; then AC_MSG_RESULT([alsa pulse]) fi +if test "x$OPENJDK_TARGET_OS" = xaix; then + AC_MSG_CHECKING([what is not needed on AIX?]) + ALSA_NOT_NEEDED=yes + PULSE_NOT_NEEDED=yes + AC_MSG_RESULT([alsa pulse]) +fi + + if test "x$OPENJDK_TARGET_OS" = xwindows; then AC_MSG_CHECKING([what is not needed on Windows?]) CUPS_NOT_NEEDED=yes diff --git a/common/autoconf/platform.m4 b/common/autoconf/platform.m4 index ed2581c1005..2e3d0bc8523 100644 --- a/common/autoconf/platform.m4 +++ b/common/autoconf/platform.m4 @@ -114,6 +114,11 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_OS], VAR_OS_API=winapi VAR_OS_ENV=windows.msys ;; + *aix*) + VAR_OS=aix + VAR_OS_API=posix + VAR_OS_ENV=aix + ;; *) AC_MSG_ERROR([unsupported operating system $1]) ;; @@ -412,16 +417,17 @@ AC_DEFUN([PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS], [ # keep track of c/cxx flags that we added outselves... # to prevent emitting warning... - TARGET_BITS_FLAG="-m${OPENJDK_TARGET_CPU_BITS}" - AC_SUBST(TARGET_BITS_FLAG) + ADDED_CFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" + ADDED_CXXFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" + ADDED_LDFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" - CFLAGS="${CFLAGS} ${TARGET_BITS_FLAG}" - CXXFLAGS="${CXXFLAGS} ${TARGET_BITS_FLAG}" - LDFLAGS="${LDFLAGS} ${TARGET_BITS_FLAG}" + CFLAGS="${CFLAGS}${ADDED_CFLAGS}" + CXXFLAGS="${CXXFLAGS}${ADDED_CXXFLAGS}" + LDFLAGS="${LDFLAGS}${ADDED_LDFLAGS}" - CFLAGS_JDK="${CFLAGS_JDK} ${TARGET_BITS_FLAG}" - CXXFLAGS_JDK="${CXXFLAGS_JDK} ${TARGET_BITS_FLAG}" - LDFLAGS_JDK="${LDFLAGS_JDK} ${TARGET_BITS_FLAG}" + CFLAGS_JDK="${CFLAGS_JDK}${ADDED_CFLAGS}" + CXXFLAGS_JDK="${CXXFLAGS_JDK}${ADDED_CXXFLAGS}" + LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}" ]) AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_BITS], @@ -433,8 +439,9 @@ AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_BITS], # is made at runtime.) # -if test "x$OPENJDK_TARGET_OS" = xsolaris; then - # Always specify -m flags on Solaris +if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xaix; then + # Always specify -m flag on Solaris + # And -q on AIX because otherwise the compiler produces 32-bit objects by default PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS elif test "x$COMPILE_TYPE" = xreduced; then if test "x$OPENJDK_TARGET_OS" != xwindows; then @@ -456,19 +463,34 @@ AC_CHECK_HEADERS([stdio.h], , [ AC_CHECK_SIZEOF([int *], [1111]) -if test "x$SIZEOF_INT_P" != "x$ac_cv_sizeof_int_p"; then - # Workaround autoconf bug, see http://lists.gnu.org/archive/html/autoconf/2010-07/msg00004.html - SIZEOF_INT_P="$ac_cv_sizeof_int_p" -fi - -if test "x$SIZEOF_INT_P" = x; then +# AC_CHECK_SIZEOF defines 'ac_cv_sizeof_int_p' to hold the number of bytes used by an 'int*' +if test "x$ac_cv_sizeof_int_p" = x; then # The test failed, lets stick to the assumed value. AC_MSG_WARN([The number of bits in the target could not be determined, using $OPENJDK_TARGET_CPU_BITS.]) else - TESTED_TARGET_CPU_BITS=`expr 8 \* $SIZEOF_INT_P` + TESTED_TARGET_CPU_BITS=`expr 8 \* $ac_cv_sizeof_int_p` if test "x$TESTED_TARGET_CPU_BITS" != "x$OPENJDK_TARGET_CPU_BITS"; then - AC_MSG_ERROR([The tested number of bits in the target ($TESTED_TARGET_CPU_BITS) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS)]) + # This situation may happen on 64-bit platforms where the compiler by default only generates 32-bit objects + # Let's try to implicitely set the compilers target architecture and retry the test + AC_MSG_NOTICE([The tested number of bits in the target ($TESTED_TARGET_CPU_BITS) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS).]) + AC_MSG_NOTICE([I'll retry after setting the platforms compiler target bits flag to ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}]) + PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS + + # We have to unset 'ac_cv_sizeof_int_p' first, otherwise AC_CHECK_SIZEOF will use the previously cached value! + unset ac_cv_sizeof_int_p + # And we have to undef the definition of SIZEOF_INT_P in confdefs.h by the previous invocation of AC_CHECK_SIZEOF + cat >>confdefs.h <<_ACEOF +#undef SIZEOF_INT_P +_ACEOF + + AC_CHECK_SIZEOF([int *], [1111]) + + TESTED_TARGET_CPU_BITS=`expr 8 \* $ac_cv_sizeof_int_p` + + if test "x$TESTED_TARGET_CPU_BITS" != "x$OPENJDK_TARGET_CPU_BITS"; then + AC_MSG_ERROR([The tested number of bits in the target ($TESTED_TARGET_CPU_BITS) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS)]) + fi fi fi diff --git a/common/autoconf/spec.gmk.in b/common/autoconf/spec.gmk.in index d801516d64f..6424271a54b 100644 --- a/common/autoconf/spec.gmk.in +++ b/common/autoconf/spec.gmk.in @@ -305,7 +305,8 @@ MACOSX_VERSION_MIN=@MACOSX_VERSION_MIN@ COMPILER_TYPE:=@COMPILER_TYPE@ COMPILER_NAME:=@COMPILER_NAME@ -TARGET_BITS_FLAG=@TARGET_BITS_FLAG@ +# Option used to tell the compiler whether to create 32- or 64-bit executables +COMPILER_TARGET_BITS_FLAG:=@COMPILER_TARGET_BITS_FLAG@ COMPILER_SUPPORTS_TARGET_BITS_FLAG=@COMPILER_SUPPORTS_TARGET_BITS_FLAG@ CC_OUT_OPTION:=@CC_OUT_OPTION@ diff --git a/common/autoconf/toolchain.m4 b/common/autoconf/toolchain.m4 index c895b1b4717..f7a10e3599d 100644 --- a/common/autoconf/toolchain.m4 +++ b/common/autoconf/toolchain.m4 @@ -44,6 +44,15 @@ AC_DEFUN([TOOLCHAIN_CHECK_COMPILER_VERSION], COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*@<:@ ,\t@:>@$COMPILER_NAME@<:@ ,\t@:>@\(@<:@1-9@:>@\.@<:@0-9@:>@@<:@0-9@:>@*\).*/\1/p"` COMPILER_VENDOR="Sun Studio" fi + elif test "x$OPENJDK_TARGET_OS" = xaix; then + COMPILER_VERSION_TEST=`$COMPILER -qversion 2>&1 | $TAIL -n 1` + $ECHO $COMPILER_VERSION_TEST | $GREP "^Version: " > /dev/null + if test $? -ne 0; then + AC_MSG_ERROR([Failed to detect the compiler version of $COMPILER ....]) + else + COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n 's/Version: \([0-9][0-9]\.[0-9][0-9]*\).*/\1/p'` + COMPILER_VENDOR='IBM' + fi elif test "x$OPENJDK_TARGET_OS" = xwindows; then # First line typically looks something like: # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86 @@ -137,10 +146,14 @@ AC_DEFUN([TOOLCHAIN_FIND_COMPILER], AC_MSG_ERROR([Could not find a $COMPILER_NAME compiler. $HELP_MSG]) fi BASIC_FIXUP_EXECUTABLE($1) - AC_MSG_CHECKING([resolved symbolic links for $1]) TEST_COMPILER="[$]$1" - BASIC_REMOVE_SYMBOLIC_LINKS(TEST_COMPILER) - AC_MSG_RESULT([$TEST_COMPILER]) + # Don't remove symbolic links on AIX because 'xlc_r' and 'xlC_r' may all be links + # to 'xlc' but it is crucial that we invoke the compiler with the right name! + if test "x$OPENJDK_BUILD_OS" != xaix; then + AC_MSG_CHECKING([resolved symbolic links for $1]) + BASIC_REMOVE_SYMBOLIC_LINKS(TEST_COMPILER) + AC_MSG_RESULT([$TEST_COMPILER]) + fi AC_MSG_CHECKING([if $1 is disguised ccache]) COMPILER_BASENAME=`$BASENAME "$TEST_COMPILER"` @@ -250,6 +263,9 @@ elif test "x$OPENJDK_TARGET_OS" = "xwindows"; then COMPILER_CHECK_LIST="cl" elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then COMPILER_CHECK_LIST="cc gcc" +elif test "x$OPENJDK_TARGET_OS" = "xaix"; then + # Do not probe for cc on AIX. + COMPILER_CHECK_LIST="xlc_r" else COMPILER_CHECK_LIST="gcc cc" fi @@ -258,6 +274,14 @@ TOOLCHAIN_FIND_COMPILER([CC],[C],[$COMPILER_CHECK_LIST]) # Now that we have resolved CC ourself, let autoconf have its go at it AC_PROG_CC([$CC]) +# Option used to tell the compiler whether to create 32- or 64-bit executables +# Notice that CC contains the full compiler path at this point. +case $CC in + *xlc_r) COMPILER_TARGET_BITS_FLAG="-q";; + *) COMPILER_TARGET_BITS_FLAG="-m";; +esac +AC_SUBST(COMPILER_TARGET_BITS_FLAG) + ### Locate C++ compiler (CXX) if test "x$CXX" != x; then @@ -266,6 +290,9 @@ elif test "x$OPENJDK_TARGET_OS" = "xwindows"; then COMPILER_CHECK_LIST="cl" elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then COMPILER_CHECK_LIST="CC g++" +elif test "x$OPENJDK_TARGET_OS" = "xaix"; then + # Do not probe for CC on AIX . + COMPILER_CHECK_LIST="xlC_r" else COMPILER_CHECK_LIST="g++ CC" fi @@ -307,6 +334,8 @@ if test "x$OPENJDK_TARGET_OS" != xwindows; then fi if test "x$OPENJDK_TARGET_OS" = xmacosx; then ARFLAGS="-r" +elif test "x$OPENJDK_TARGET_OS" = xaix; then + ARFLAGS="-X64" else ARFLAGS="" fi @@ -371,7 +400,7 @@ AS_IF([test "x$OPENJDK_TARGET_OS" = xwindows], [ ]) # The version variables used to create RC_FLAGS may be overridden - # in a custom configure script, or possibly the command line. + # in a custom configure script, or possibly the command line. # Let those variables be expanded at make time in spec.gmk. # The \$ are escaped to the shell, and the $(...) variables # are evaluated by make. @@ -550,6 +579,29 @@ else POST_STRIP_CMD="$STRIP -x" POST_MCS_CMD="$MCS -d -a \"JDK $FULL_VERSION\"" fi + if test "x$OPENJDK_TARGET_OS" = xaix; then + COMPILER_NAME=xlc + PICFLAG="-qpic=large" + LIBRARY_PREFIX=lib + SHARED_LIBRARY='lib[$]1.so' + STATIC_LIBRARY='lib[$]1.a' + SHARED_LIBRARY_FLAGS="-qmkshrobj" + SHARED_LIBRARY_SUFFIX='.so' + STATIC_LIBRARY_SUFFIX='.a' + OBJ_SUFFIX='.o' + EXE_SUFFIX='' + SET_SHARED_LIBRARY_NAME='' + SET_SHARED_LIBRARY_MAPFILE='' + C_FLAG_REORDER='' + CXX_FLAG_REORDER='' + SET_SHARED_LIBRARY_ORIGIN='' + SET_EXECUTABLE_ORIGIN="" + CFLAGS_JDK="" + CXXFLAGS_JDK="" + CFLAGS_JDKLIB_EXTRA='' + POST_STRIP_CMD="$STRIP -X32_64" + POST_MCS_CMD="" + fi if test "x$OPENJDK_TARGET_OS" = xwindows; then # If it is not gcc, then assume it is the MS Visual Studio compiler COMPILER_NAME=cl @@ -723,8 +775,26 @@ case $COMPILER_TYPE in ;; esac - CFLAGS_DEBUG_SYMBOLS="-g -xs" - CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs" + CFLAGS_DEBUG_SYMBOLS="-g -xs" + CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs" + ;; + xlc ) + C_FLAG_DEPS="-qmakedep=gcc -MF" + CXX_FLAG_DEPS="-qmakedep=gcc -MF" + C_O_FLAG_HIGHEST="-O3" + C_O_FLAG_HI="-O3 -qstrict" + C_O_FLAG_NORM="-O2" + C_O_FLAG_NONE="" + CXX_O_FLAG_HIGHEST="-O3" + CXX_O_FLAG_HI="-O3 -qstrict" + CXX_O_FLAG_NORM="-O2" + CXX_O_FLAG_NONE="" + CFLAGS_DEBUG_SYMBOLS="-g" + CXXFLAGS_DEBUG_SYMBOLS="-g" + LDFLAGS_JDK="${LDFLAGS_JDK} -q64 -brtl -bnolibpath -liconv -bexpall" + CFLAGS_JDK="${CFLAGS_JDK} -qchars=signed -q64 -qfullpath -qsaveopt" + CXXFLAGS_JDK="${CXXFLAGS_JDK} -qchars=signed -q64 -qfullpath -qsaveopt" + ;; esac ;; CL ) @@ -835,6 +905,13 @@ case $COMPILER_NAME in LDFLAGS_JDK="$LDFLAGS_JDK -z defs -xildoff -ztext" LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib" ;; + xlc ) + CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" + CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" + + LDFLAGS_JDK="$LDFLAGS_JDK" + LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK" + ;; cl ) CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \ -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \ @@ -904,6 +981,9 @@ fi if test "x$OPENJDK_TARGET_OS" = xsolaris; then CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DSOLARIS" fi +if test "x$OPENJDK_TARGET_OS" = xaix; then + CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DAIX -DPPC64" +fi if test "x$OPENJDK_TARGET_OS" = xmacosx; then CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" # Setting these parameters makes it an error to link to macosx APIs that are @@ -1073,17 +1153,17 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_COMPILER_FLAGS_MISC], # ZERO_ARCHFLAG tells the compiler which mode to build for case "${OPENJDK_TARGET_CPU}" in s390) - ZERO_ARCHFLAG="-m31" + ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}31" ;; *) - ZERO_ARCHFLAG="-m${OPENJDK_TARGET_CPU_BITS}" + ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" esac TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$ZERO_ARCHFLAG], [], [ZERO_ARCHFLAG=""]) AC_SUBST(ZERO_ARCHFLAG) - # Check that the compiler supports -mX flags + # Check that the compiler supports -mX (or -qX on AIX) flags # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does - TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([-m${OPENJDK_TARGET_CPU_BITS}], + TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}], [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true], [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false]) AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG) diff --git a/common/makefiles/JavaCompilation.gmk b/common/makefiles/JavaCompilation.gmk index 50b05865f00..539e0493377 100644 --- a/common/makefiles/JavaCompilation.gmk +++ b/common/makefiles/JavaCompilation.gmk @@ -163,11 +163,12 @@ define SetupArchive # The capture contents macro finds all files (matching the patterns, typically # .class and .prp) that are newer than the jar-file, ie the new content to be put into the jar. + # NOTICE: please leave the parentheses space separated otherwise the AIX build will break! $1_CAPTURE_CONTENTS=$$(foreach src,$$($1_SRCS),\ - (($(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) -a -newer $$@ $$($1_GREP_INCLUDES) \ + ( ( $(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) -a -newer $$@ $$($1_GREP_INCLUDES) \ $$($1_GREP_EXCLUDES) | $(SED) 's|$$(src)/||g' &&\ - $(ECHO) $$(subst $$(src)/,,$$($1_EXTRA_FILES))) > \ - $$(src)/_the.$$($1_JARNAME)_contents) $$(NEWLINE)) + $(ECHO) $$(subst $$(src)/,,$$($1_EXTRA_FILES) ) ) > \ + $$(src)/_the.$$($1_JARNAME)_contents) $$(NEWLINE) ) # The capture metainf macro finds all files below the META-INF directory that are newer than the jar-file. ifeq (,$$($1_SKIP_METAINF)) $1_CAPTURE_METAINF =$$(foreach src,$$($1_SRCS),($(FIND) $$(src)/META-INF -type f -a -newer $$@ 2> /dev/null | $(SED) 's|$$(src)/||g' >> $$(src)/_the.$$($1_JARNAME)_contents ) $$(NEWLINE)) @@ -176,19 +177,20 @@ define SetupArchive # tells us what to remove from the jar-file. $1_CAPTURE_DELETES=$$(foreach src,$$($1_SRCS),($(FIND) $$(src) -name _the.package.deleted -newer $$@ -exec $(SED) 's|$$(src)||g' \{\} >> $$($1_DELETES_FILE) \;) $$(NEWLINE)) # The update contents macro updates the jar file with the previously capture contents. - # xargs is used to trim the whitespace from the contents file, to see if it is empty. + # Use 'wc -w' to see if the contents file is empty. $1_UPDATE_CONTENTS=$$(foreach src,$$($1_SRCS),\ (cd $$(src) && \ - if [ -n "`$(CAT) _the.$$($1_JARNAME)_contents | $(XARGS)`" ]; then \ + if [ "`$(WC) -w _the.$$($1_JARNAME)_contents | $(AWK) '{ print $$$$1 }'`" -gt "0" ]; then \ $(ECHO) " updating" `$(WC) -l _the.$$($1_JARNAME)_contents | $(AWK) '{ print $$$$1 }'` files && \ $(JAR) $$($1_JAR_UPDATE_OPTIONS) $$@ @_the.$$($1_JARNAME)_contents; \ fi) $$(NEWLINE)) # The s-variants of the above macros are used when the jar is created from scratch. + # NOTICE: please leave the parentheses space separated otherwise the AIX build will break! $1_SCAPTURE_CONTENTS=$$(foreach src,$$($1_SRCS),\ - (($(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) $$($1_GREP_INCLUDES) \ + ( ( $(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) $$($1_GREP_INCLUDES) \ $$($1_GREP_EXCLUDES) | $(SED) 's|$$(src)/||g' &&\ - $$(subst $$(src)/,,$(ECHO) $$($1_EXTRA_FILES))) > \ - $$(src)/_the.$$($1_JARNAME)_contents) $$(NEWLINE)) + $$(subst $$(src)/,,$(ECHO) $$($1_EXTRA_FILES) ) ) > \ + $$(src)/_the.$$($1_JARNAME)_contents) $$(NEWLINE) ) ifeq (,$$($1_SKIP_METAINF)) $1_SCAPTURE_METAINF=$$(foreach src,$$($1_SRCS),\ diff --git a/common/makefiles/NativeCompilation.gmk b/common/makefiles/NativeCompilation.gmk index 24448e86ebc..cafdefdb670 100644 --- a/common/makefiles/NativeCompilation.gmk +++ b/common/makefiles/NativeCompilation.gmk @@ -495,7 +495,7 @@ define SetupNativeCompilation # Generating a static library, ie object file archive. $$($1_TARGET) : $$($1_EXPECTED_OBJS) $$($1_RES) $$(call ARCHIVING_MSG,$$($1_LIBRARY)) - $(AR) $$($1_AR_FLAGS) $(AR_OUT_OPTION)$$($1_TARGET) $$($1_EXPECTED_OBJS) \ + $(AR) $$($1_ARFLAGS) $(AR_OUT_OPTION)$$($1_TARGET) $$($1_EXPECTED_OBJS) \ $$($1_RES) $$($1_LDFLAGS_SUFFIX) $$($1_EXTRA_LDFLAGS_SUFFIX) endif From 4b46c35df36e8e9fde4413a6f1d0169c09e457d2 Mon Sep 17 00:00:00 2001 From: Volker Simonis Date: Tue, 17 Sep 2013 14:48:14 +0200 Subject: [PATCH 004/158] 8024900: PPC64: Enable new build on AIX (jdk part) Reviewed-by: erikj --- jdk/make/tools/sharing/classlist.aix | 2406 ++++++++++++++++++ jdk/makefiles/CompileJavaClasses.gmk | 9 + jdk/makefiles/CompileLaunchers.gmk | 6 +- jdk/makefiles/CompileNativeLibraries.gmk | 60 +- jdk/makefiles/GendataFontConfig.gmk | 7 + jdk/makefiles/GensrcX11Wrappers.gmk | 2 +- jdk/makefiles/mapfiles/libattach/mapfile-aix | 39 + jdk/makefiles/mapfiles/libnio/mapfile-aix | 33 + 8 files changed, 2555 insertions(+), 7 deletions(-) create mode 100644 jdk/make/tools/sharing/classlist.aix create mode 100644 jdk/makefiles/mapfiles/libattach/mapfile-aix create mode 100644 jdk/makefiles/mapfiles/libnio/mapfile-aix diff --git a/jdk/make/tools/sharing/classlist.aix b/jdk/make/tools/sharing/classlist.aix new file mode 100644 index 00000000000..d07236da9e9 --- /dev/null +++ b/jdk/make/tools/sharing/classlist.aix @@ -0,0 +1,2406 @@ +java/lang/Object +java/lang/String +java/io/Serializable +java/lang/Comparable +java/lang/CharSequence +java/lang/Class +java/lang/reflect/GenericDeclaration +java/lang/reflect/Type +java/lang/reflect/AnnotatedElement +java/lang/Cloneable +java/lang/ClassLoader +java/lang/System +java/lang/Throwable +java/lang/Error +java/lang/ThreadDeath +java/lang/Exception +java/lang/RuntimeException +java/security/ProtectionDomain +java/security/AccessControlContext +java/lang/ClassNotFoundException +java/lang/NoClassDefFoundError +java/lang/LinkageError +java/lang/ClassCastException +java/lang/ArrayStoreException +java/lang/VirtualMachineError +java/lang/OutOfMemoryError +java/lang/StackOverflowError +java/lang/IllegalMonitorStateException +java/lang/ref/Reference +java/lang/ref/SoftReference +java/lang/ref/WeakReference +java/lang/ref/FinalReference +java/lang/ref/PhantomReference +java/lang/ref/Finalizer +java/lang/Thread +java/lang/Runnable +java/lang/ThreadGroup +java/lang/Thread$UncaughtExceptionHandler +java/util/Properties +java/util/Hashtable +java/util/Map +java/util/Dictionary +java/lang/reflect/AccessibleObject +java/lang/reflect/Field +java/lang/reflect/Member +java/lang/reflect/Method +java/lang/reflect/Constructor +sun/reflect/MagicAccessorImpl +sun/reflect/MethodAccessorImpl +sun/reflect/MethodAccessor +sun/reflect/ConstructorAccessorImpl +sun/reflect/ConstructorAccessor +sun/reflect/DelegatingClassLoader +sun/reflect/ConstantPool +sun/reflect/UnsafeStaticFieldAccessorImpl +sun/reflect/UnsafeFieldAccessorImpl +sun/reflect/FieldAccessorImpl +sun/reflect/FieldAccessor +java/util/Vector +java/util/List +java/util/Collection +java/lang/Iterable +java/util/RandomAccess +java/util/AbstractList +java/util/AbstractCollection +java/lang/StringBuffer +java/lang/AbstractStringBuilder +java/lang/Appendable +java/lang/StackTraceElement +java/nio/Buffer +java/lang/Boolean +java/lang/Character +java/lang/Float +java/lang/Number +java/lang/Double +java/lang/Byte +java/lang/Short +java/lang/Integer +java/lang/Long +java/lang/NullPointerException +java/lang/ArithmeticException +java/io/ObjectStreamField +java/lang/String$CaseInsensitiveComparator +java/util/Comparator +java/lang/RuntimePermission +java/security/BasicPermission +java/security/Permission +java/security/Guard +sun/misc/SoftCache +java/util/AbstractMap +java/lang/ref/ReferenceQueue +java/lang/ref/ReferenceQueue$Null +java/lang/ref/ReferenceQueue$Lock +java/util/HashMap +java/lang/annotation/Annotation +java/util/HashMap$Entry +java/util/Map$Entry +java/security/AccessController +java/lang/reflect/ReflectPermission +sun/reflect/ReflectionFactory$GetReflectionFactoryAction +java/security/PrivilegedAction +java/util/Stack +sun/reflect/ReflectionFactory +java/lang/ref/Reference$Lock +java/lang/ref/Reference$ReferenceHandler +java/lang/ref/Finalizer$FinalizerThread +java/util/Hashtable$EmptyEnumerator +java/util/Enumeration +java/util/Hashtable$EmptyIterator +java/util/Iterator +java/util/Hashtable$Entry +java/nio/charset/Charset +sun/nio/cs/StandardCharsets +sun/nio/cs/FastCharsetProvider +java/nio/charset/spi/CharsetProvider +sun/nio/cs/StandardCharsets$Aliases +sun/util/PreHashedMap +sun/nio/cs/StandardCharsets$Classes +sun/nio/cs/StandardCharsets$Cache +java/lang/ThreadLocal +java/util/concurrent/atomic/AtomicInteger +sun/misc/Unsafe +java/lang/NoSuchMethodError +java/lang/IncompatibleClassChangeError +sun/reflect/Reflection +java/util/Collections +java/util/Collections$EmptySet +java/util/AbstractSet +java/util/Set +java/util/Collections$EmptyList +java/util/Collections$EmptyMap +java/util/Collections$ReverseComparator +java/util/Collections$SynchronizedMap +java/lang/Class$3 +java/lang/reflect/Modifier +java/lang/reflect/ReflectAccess +sun/reflect/LangReflectAccess +java/util/Arrays +java/lang/Math +sun/nio/cs/US_ASCII +sun/nio/cs/HistoricallyNamedCharset +sun/misc/VM +java/lang/StringCoding +java/lang/ThreadLocal$ThreadLocalMap +java/lang/ThreadLocal$ThreadLocalMap$Entry +java/lang/StringCoding$StringDecoder +sun/nio/cs/US_ASCII$Decoder +java/nio/charset/CharsetDecoder +java/nio/charset/CodingErrorAction +java/nio/ByteBuffer +java/nio/HeapByteBuffer +java/nio/Bits +java/nio/ByteOrder +java/nio/CharBuffer +java/lang/Readable +java/nio/HeapCharBuffer +java/nio/charset/CoderResult +java/nio/charset/CoderResult$1 +java/nio/charset/CoderResult$Cache +java/nio/charset/CoderResult$2 +sun/misc/Version +java/io/FileInputStream +java/io/InputStream +java/io/Closeable +java/io/FileDescriptor +java/io/FileOutputStream +java/io/OutputStream +java/io/Flushable +java/io/BufferedInputStream +java/io/FilterInputStream +java/util/concurrent/atomic/AtomicReferenceFieldUpdater +java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl +sun/reflect/misc/ReflectUtil +java/io/PrintStream +java/io/FilterOutputStream +java/io/BufferedOutputStream +java/io/OutputStreamWriter +java/io/Writer +sun/nio/cs/StreamEncoder +sun/security/action/GetPropertyAction +sun/nio/cs/US_ASCII$Encoder +java/nio/charset/CharsetEncoder +sun/nio/cs/Surrogate$Parser +sun/nio/cs/Surrogate +java/io/BufferedWriter +java/lang/Runtime +java/io/File +java/io/FileSystem +java/io/UnixFileSystem +java/io/ExpiringCache +java/io/ExpiringCache$1 +java/util/LinkedHashMap +java/util/LinkedHashMap$Entry +java/lang/StringBuilder +java/io/File$1 +sun/misc/JavaIODeleteOnExitAccess +sun/misc/SharedSecrets +java/lang/ClassLoader$3 +java/lang/StringCoding$StringEncoder +java/io/ExpiringCache$Entry +java/lang/ClassLoader$NativeLibrary +java/lang/Terminator +java/lang/Terminator$1 +sun/misc/SignalHandler +sun/misc/Signal +sun/misc/NativeSignalHandler +java/io/Console +java/io/Console$1 +sun/misc/JavaIOAccess +java/io/Console$1$1 +java/lang/Shutdown +java/util/ArrayList +java/lang/Shutdown$Lock +java/lang/ApplicationShutdownHooks +java/util/IdentityHashMap +sun/misc/OSEnvironment +java/lang/System$2 +sun/misc/JavaLangAccess +java/lang/Compiler +java/lang/Compiler$1 +sun/misc/Launcher +sun/misc/Launcher$Factory +java/net/URLStreamHandlerFactory +sun/misc/Launcher$ExtClassLoader +java/net/URLClassLoader +java/security/SecureClassLoader +sun/security/util/Debug +java/net/URLClassLoader$7 +sun/misc/JavaNetAccess +java/util/StringTokenizer +sun/misc/Launcher$ExtClassLoader$1 +java/security/PrivilegedExceptionAction +sun/misc/MetaIndex +java/io/BufferedReader +java/io/Reader +java/io/FileReader +java/io/InputStreamReader +sun/nio/cs/StreamDecoder +java/lang/reflect/Array +sun/net/www/ParseUtil +java/util/BitSet +java/io/ObjectStreamClass +java/net/URL +java/util/Locale +java/util/concurrent/ConcurrentHashMap +java/util/concurrent/ConcurrentMap +java/util/concurrent/ConcurrentHashMap$Segment +java/util/concurrent/locks/ReentrantLock +java/util/concurrent/locks/Lock +java/util/concurrent/locks/ReentrantLock$NonfairSync +java/util/concurrent/locks/ReentrantLock$Sync +java/util/concurrent/locks/AbstractQueuedSynchronizer +java/util/concurrent/locks/AbstractOwnableSynchronizer +java/util/concurrent/locks/AbstractQueuedSynchronizer$Node +java/util/concurrent/ConcurrentHashMap$HashEntry +java/lang/CharacterDataLatin1 +java/net/Parts +sun/net/www/protocol/file/Handler +java/net/URLStreamHandler +java/lang/Class$1 +sun/reflect/ReflectionFactory$1 +sun/reflect/NativeConstructorAccessorImpl +sun/reflect/DelegatingConstructorAccessorImpl +java/util/HashSet +sun/misc/URLClassPath +sun/net/www/protocol/jar/Handler +sun/misc/Launcher$AppClassLoader +sun/misc/Launcher$AppClassLoader$1 +java/lang/SystemClassLoaderAction +java/net/URLClassLoader$1 +sun/misc/URLClassPath$3 +sun/misc/URLClassPath$JarLoader +sun/misc/URLClassPath$Loader +java/security/PrivilegedActionException +sun/misc/URLClassPath$FileLoader +sun/misc/URLClassPath$FileLoader$1 +sun/misc/Resource +sun/nio/ByteBuffered +java/security/CodeSource +java/security/Permissions +java/security/PermissionCollection +sun/net/www/protocol/file/FileURLConnection +sun/net/www/URLConnection +java/net/URLConnection +java/net/UnknownContentHandler +java/net/ContentHandler +sun/net/www/MessageHeader +java/io/FilePermission +java/io/FilePermission$1 +sun/security/provider/PolicyFile +java/security/Policy +java/security/Policy$UnsupportedEmptyCollection +java/io/FilePermissionCollection +java/security/AllPermission +java/security/UnresolvedPermission +java/security/BasicPermissionCollection +java/security/Principal +java/security/cert/Certificate +java/util/AbstractList$Itr +java/util/IdentityHashMap$KeySet +java/util/IdentityHashMap$KeyIterator +java/util/IdentityHashMap$IdentityHashMapIterator +java/io/DeleteOnExitHook +java/util/LinkedHashSet +java/util/HashMap$KeySet +java/util/LinkedHashMap$KeyIterator +java/util/LinkedHashMap$LinkedHashIterator +java/awt/Frame +java/awt/MenuContainer +java/awt/Window +javax/accessibility/Accessible +java/awt/Container +java/awt/Component +java/awt/image/ImageObserver +java/lang/InterruptedException +java/awt/Label +java/util/logging/Logger +java/util/logging/Handler +java/util/logging/Level +java/util/logging/LogManager +java/util/logging/LogManager$1 +java/beans/PropertyChangeSupport +java/util/logging/LogManager$LogNode +java/util/logging/LoggingPermission +java/util/logging/LogManager$Cleaner +java/util/logging/LogManager$RootLogger +java/util/logging/LogManager$2 +java/util/Properties$LineReader +java/util/Hashtable$Enumerator +java/beans/PropertyChangeEvent +java/util/EventObject +java/awt/Component$AWTTreeLock +sun/awt/DebugHelper +sun/awt/NativeLibLoader +sun/security/action/LoadLibraryAction +java/awt/GraphicsEnvironment +java/awt/GraphicsEnvironment$1 +java/lang/ProcessEnvironment +java/lang/ProcessEnvironment$Variable +java/lang/ProcessEnvironment$ExternalData +java/lang/ProcessEnvironment$Value +java/lang/ProcessEnvironment$StringEnvironment +java/util/Collections$UnmodifiableMap +sun/awt/DebugHelperStub +java/awt/Toolkit +java/awt/Toolkit$3 +sun/util/CoreResourceBundleControl +java/util/ResourceBundle$Control +java/util/Arrays$ArrayList +java/util/Collections$UnmodifiableRandomAccessList +java/util/Collections$UnmodifiableList +java/util/Collections$UnmodifiableCollection +java/util/ResourceBundle +java/util/ResourceBundle$1 +java/util/ResourceBundle$RBClassLoader +java/util/ResourceBundle$RBClassLoader$1 +java/util/ResourceBundle$CacheKey +java/util/ResourceBundle$LoaderReference +java/util/ResourceBundle$CacheKeyReference +java/util/ResourceBundle$SingleFormatControl +sun/awt/resources/awt +java/util/ListResourceBundle +java/awt/Toolkit$1 +java/io/FileNotFoundException +java/io/IOException +java/awt/event/KeyEvent +java/awt/event/InputEvent +java/awt/event/ComponentEvent +java/awt/AWTEvent +java/awt/event/NativeLibLoader +java/util/WeakHashMap +java/util/WeakHashMap$Entry +java/awt/Component$DummyRequestFocusController +sun/awt/RequestFocusController +java/awt/LayoutManager +java/awt/LightweightDispatcher +java/awt/event/AWTEventListener +java/util/EventListener +java/awt/Dimension +java/awt/geom/Dimension2D +java/util/concurrent/atomic/AtomicBoolean +java/awt/ComponentOrientation +java/awt/Component$2 +java/lang/NoSuchMethodException +sun/awt/AppContext +sun/awt/AppContext$1 +sun/awt/AppContext$2 +sun/awt/MostRecentKeyValue +java/awt/Cursor +sun/awt/X11GraphicsEnvironment +sun/java2d/SunGraphicsEnvironment +sun/java2d/FontSupport +sun/awt/DisplayChangedListener +sun/java2d/SunGraphicsEnvironment$TTFilter +java/io/FilenameFilter +sun/java2d/SunGraphicsEnvironment$T1Filter +sun/awt/X11GraphicsEnvironment$1 +sun/awt/SunToolkit +sun/awt/WindowClosingSupport +sun/awt/WindowClosingListener +sun/awt/ComponentFactory +sun/awt/InputMethodSupport +java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject +java/util/concurrent/locks/Condition +sun/awt/AWTAutoShutdown +sun/awt/AWTAutoShutdown$PeerMap +sun/awt/SunToolkit$6 +java/awt/Dialog$ModalExclusionType +java/lang/Enum +java/awt/Dialog +java/awt/Dialog$ModalityType +java/awt/ModalEventFilter +java/awt/EventFilter +sun/reflect/UnsafeFieldAccessorFactory +sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl +sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl +sun/awt/SunDisplayChanger +sun/java2d/SunGraphicsEnvironment$1 +java/io/StreamTokenizer +sun/font/FontManager +sun/font/FileFont +sun/font/PhysicalFont +sun/font/Font2D +sun/font/CompositeFont +java/util/HashMap$Values +java/util/HashMap$ValueIterator +java/util/HashMap$HashIterator +sun/font/FontManager$1 +java/awt/Font +java/awt/geom/AffineTransform +sun/font/AttributeValues +sun/font/EAttribute +java/text/AttributedCharacterIterator$Attribute +java/lang/Class$4 +sun/reflect/NativeMethodAccessorImpl +sun/reflect/DelegatingMethodAccessorImpl +java/awt/font/TextAttribute +java/lang/Integer$IntegerCache +sun/font/TrueTypeFont +java/awt/font/FontRenderContext +java/awt/RenderingHints +sun/awt/SunHints +sun/awt/SunHints$Key +java/awt/RenderingHints$Key +sun/awt/SunHints$Value +sun/awt/SunHints$LCDContrastKey +sun/font/Type1Font +java/awt/geom/Point2D$Float +java/awt/geom/Point2D +sun/font/StrikeMetrics +java/awt/geom/Rectangle2D$Float +java/awt/geom/Rectangle2D +java/awt/geom/RectangularShape +java/awt/Shape +java/awt/geom/GeneralPath +java/awt/geom/Path2D$Float +java/awt/geom/Path2D +sun/font/CharToGlyphMapper +sun/font/PhysicalStrike +sun/font/FontStrike +sun/font/GlyphList +sun/font/StrikeCache +sun/java2d/Disposer +sun/java2d/Disposer$1 +sun/font/StrikeCache$1 +sun/font/FontManager$FontRegistrationInfo +sun/awt/motif/MFontConfiguration +sun/awt/FontConfiguration +sun/awt/FontDescriptor +java/util/Scanner +java/util/regex/Pattern +java/util/regex/Pattern$8 +java/util/regex/Pattern$Node +java/util/regex/Pattern$LastNode +java/util/regex/Pattern$GroupHead +java/util/regex/Pattern$CharPropertyNames +java/util/regex/Pattern$CharPropertyNames$1 +java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory +java/util/regex/Pattern$CharPropertyNames$2 +java/util/regex/Pattern$CharPropertyNames$5 +java/util/regex/Pattern$CharPropertyNames$3 +java/util/regex/Pattern$CharPropertyNames$6 +java/util/regex/Pattern$CharPropertyNames$CloneableProperty +java/util/regex/Pattern$CharProperty +java/util/regex/Pattern$CharPropertyNames$4 +java/util/regex/Pattern$CharPropertyNames$7 +java/util/regex/Pattern$CharPropertyNames$8 +java/util/regex/Pattern$CharPropertyNames$9 +java/util/regex/Pattern$CharPropertyNames$10 +java/util/regex/Pattern$CharPropertyNames$11 +java/util/regex/Pattern$CharPropertyNames$12 +java/util/regex/Pattern$CharPropertyNames$13 +java/util/regex/Pattern$CharPropertyNames$14 +java/util/regex/Pattern$CharPropertyNames$15 +java/util/regex/Pattern$CharPropertyNames$16 +java/util/regex/Pattern$CharPropertyNames$17 +java/util/regex/Pattern$CharPropertyNames$18 +java/util/regex/Pattern$CharPropertyNames$19 +java/util/regex/Pattern$CharPropertyNames$20 +java/util/regex/Pattern$CharPropertyNames$21 +java/util/regex/Pattern$Curly +java/util/regex/Pattern$Slice +java/util/regex/Pattern$Begin +java/util/regex/Pattern$First +java/util/regex/Pattern$Start +java/util/regex/Pattern$TreeInfo +java/util/regex/Pattern$All +java/util/regex/Pattern$BitClass +java/util/regex/Pattern$BmpCharProperty +java/util/regex/Pattern$6 +java/util/regex/Pattern$CharProperty$1 +java/util/regex/Pattern$10 +sun/nio/ch/FileChannelImpl +java/nio/channels/FileChannel +java/nio/channels/ByteChannel +java/nio/channels/ReadableByteChannel +java/nio/channels/Channel +java/nio/channels/WritableByteChannel +java/nio/channels/GatheringByteChannel +java/nio/channels/ScatteringByteChannel +java/nio/channels/spi/AbstractInterruptibleChannel +java/nio/channels/InterruptibleChannel +sun/nio/ch/Util +sun/nio/ch/IOUtil +sun/nio/ch/FileDispatcher +sun/nio/ch/NativeDispatcher +sun/nio/ch/Reflect +java/nio/MappedByteBuffer +sun/nio/ch/Reflect$1 +sun/nio/ch/NativeThreadSet +java/nio/channels/Channels +java/util/Scanner$1 +sun/misc/LRUCache +java/util/regex/Matcher +java/util/regex/MatchResult +java/text/NumberFormat +java/text/Format +java/text/spi/NumberFormatProvider +java/util/spi/LocaleServiceProvider +sun/util/LocaleServiceProviderPool +sun/util/LocaleServiceProviderPool$1 +java/util/ServiceLoader +java/util/ServiceLoader$LazyIterator +java/util/ServiceLoader$1 +java/util/HashMap$EntrySet +java/util/LinkedHashMap$EntryIterator +sun/misc/Launcher$1 +sun/misc/URLClassPath$2 +java/lang/ClassLoader$2 +sun/misc/URLClassPath$1 +java/net/URLClassLoader$3 +sun/misc/CompoundEnumeration +sun/misc/URLClassPath$JarLoader$1 +sun/misc/FileURLMapper +java/net/URLClassLoader$3$1 +sun/util/resources/LocaleData +sun/util/resources/LocaleData$1 +sun/util/resources/LocaleData$LocaleDataResourceBundleControl +sun/util/LocaleDataMetaInfo +sun/text/resources/FormatData +java/util/ResourceBundle$BundleReference +sun/text/resources/FormatData_en +sun/text/resources/FormatData_en_US +java/text/DecimalFormatSymbols +java/text/spi/DecimalFormatSymbolsProvider +java/util/Currency +java/util/Currency$1 +java/util/CurrencyData +java/util/spi/CurrencyNameProvider +sun/util/resources/CurrencyNames +sun/util/resources/LocaleNamesBundle +sun/util/resources/OpenListResourceBundle +sun/util/resources/CurrencyNames_en_US +java/text/DecimalFormat +java/text/FieldPosition +java/text/DigitList +java/math/RoundingMode +java/util/regex/Pattern$GroupTail +java/util/regex/Pattern$Ctype +java/util/regex/Pattern$Ques +java/util/regex/Pattern$GroupCurly +java/util/regex/Pattern$5 +java/util/regex/Pattern$Loop +java/util/regex/Pattern$Prolog +java/util/regex/Pattern$9 +java/util/regex/Pattern$BranchConn +java/util/regex/Pattern$Branch +java/nio/channels/spi/AbstractInterruptibleChannel$1 +sun/nio/ch/Interruptible +sun/nio/ch/NativeThread +sun/nio/ch/DirectBuffer +java/nio/DirectByteBuffer +java/nio/DirectByteBuffer$Deallocator +sun/misc/Cleaner +sun/nio/ch/IOStatus +java/util/regex/ASCII +java/io/DataInputStream +java/io/DataInput +java/lang/Short$ShortCache +java/util/HashMap$KeyIterator +sun/font/CompositeFontDescriptor +sun/font/Font2DHandle +sun/font/FontFamily +java/awt/GraphicsDevice +sun/awt/X11GraphicsDevice +sun/awt/X11GraphicsConfig +java/awt/GraphicsConfiguration +java/awt/ImageCapabilities +sun/java2d/x11/X11SurfaceData +sun/java2d/SurfaceData +java/awt/Transparency +sun/java2d/DisposerTarget +sun/java2d/InvalidPipeException +java/lang/IllegalStateException +sun/java2d/NullSurfaceData +sun/java2d/loops/SurfaceType +sun/awt/image/PixelConverter +sun/awt/image/PixelConverter$Xrgb +sun/awt/image/PixelConverter$Argb +sun/awt/image/PixelConverter$ArgbPre +sun/awt/image/PixelConverter$Xbgr +sun/awt/image/PixelConverter$Rgba +sun/awt/image/PixelConverter$RgbaPre +sun/awt/image/PixelConverter$Ushort565Rgb +sun/awt/image/PixelConverter$Ushort555Rgb +sun/awt/image/PixelConverter$Ushort555Rgbx +sun/awt/image/PixelConverter$Ushort4444Argb +sun/awt/image/PixelConverter$ByteGray +sun/awt/image/PixelConverter$UshortGray +sun/awt/image/PixelConverter$Rgbx +sun/awt/image/PixelConverter$Bgrx +sun/awt/image/PixelConverter$ArgbBm +java/awt/image/ColorModel +java/awt/image/DirectColorModel +java/awt/image/PackedColorModel +java/awt/color/ColorSpace +java/awt/color/ICC_Profile +sun/awt/color/ProfileDeferralInfo +sun/awt/color/ProfileDeferralMgr +java/awt/color/ICC_ProfileRGB +java/awt/color/ICC_Profile$1 +sun/awt/color/ProfileActivator +java/awt/color/ICC_ColorSpace +sun/java2d/pipe/NullPipe +sun/java2d/pipe/PixelDrawPipe +sun/java2d/pipe/PixelFillPipe +sun/java2d/pipe/ShapeDrawPipe +sun/java2d/pipe/TextPipe +sun/java2d/pipe/DrawImagePipe +java/awt/image/IndexColorModel +sun/java2d/pipe/LoopPipe +sun/java2d/pipe/OutlineTextRenderer +sun/java2d/pipe/SolidTextRenderer +sun/java2d/pipe/GlyphListLoopPipe +sun/java2d/pipe/GlyphListPipe +sun/java2d/pipe/AATextRenderer +sun/java2d/pipe/LCDTextRenderer +sun/java2d/pipe/AlphaColorPipe +sun/java2d/pipe/CompositePipe +sun/java2d/pipe/PixelToShapeConverter +sun/java2d/pipe/TextRenderer +sun/java2d/pipe/SpanClipRenderer +sun/java2d/pipe/Region +sun/java2d/pipe/RegionIterator +sun/java2d/pipe/DuctusShapeRenderer +sun/java2d/pipe/DuctusRenderer +sun/java2d/pipe/AlphaPaintPipe +sun/java2d/pipe/SpanShapeRenderer$Composite +sun/java2d/pipe/SpanShapeRenderer +sun/java2d/pipe/GeneralCompositePipe +sun/java2d/pipe/DrawImage +sun/java2d/loops/RenderCache +sun/java2d/loops/RenderCache$Entry +sun/java2d/loops/XORComposite +java/awt/Composite +sun/font/X11TextRenderer +sun/java2d/loops/GraphicsPrimitive +sun/java2d/x11/X11PMBlitLoops +sun/java2d/loops/Blit +sun/java2d/loops/GraphicsPrimitiveMgr +sun/java2d/loops/CompositeType +sun/java2d/SunGraphics2D +sun/awt/ConstrainableGraphics +java/awt/Graphics2D +java/awt/Graphics +java/awt/Color +java/awt/Paint +java/awt/AlphaComposite +sun/java2d/loops/BlitBg +sun/java2d/loops/ScaledBlit +sun/java2d/loops/FillRect +sun/java2d/loops/FillSpans +sun/java2d/loops/DrawLine +sun/java2d/loops/DrawRect +sun/java2d/loops/DrawPolygons +sun/java2d/loops/DrawPath +sun/java2d/loops/FillPath +sun/java2d/loops/MaskBlit +sun/java2d/loops/MaskFill +sun/java2d/loops/DrawGlyphList +sun/java2d/loops/DrawGlyphListAA +sun/java2d/loops/DrawGlyphListLCD +sun/java2d/loops/TransformHelper +java/awt/BasicStroke +java/awt/Stroke +sun/misc/PerformanceLogger +sun/misc/PerformanceLogger$TimeData +sun/java2d/pipe/ValidatePipe +sun/java2d/loops/CustomComponent +sun/java2d/loops/GraphicsPrimitiveProxy +sun/java2d/loops/GeneralRenderer +sun/java2d/loops/GraphicsPrimitiveMgr$1 +sun/java2d/loops/GraphicsPrimitiveMgr$2 +sun/java2d/x11/X11PMBlitLoops$DelegateBlitLoop +sun/java2d/x11/X11PMBlitBgLoops +sun/java2d/x11/X11SurfaceData$LazyPipe +sun/awt/X11GraphicsConfig$X11GCDisposerRecord +sun/java2d/DisposerRecord +java/awt/BorderLayout +java/awt/LayoutManager2 +java/awt/Rectangle +java/awt/Toolkit$2 +sun/awt/X11/XToolkit +sun/awt/X11/XConstants +sun/awt/UNIXToolkit +java/util/TreeMap +java/util/NavigableMap +java/util/SortedMap +sun/awt/X11/XlibWrapper +sun/awt/X11/XUtilConstants +sun/awt/X11/XProtocolConstants +sun/awt/X11/XCursorFontConstants +sun/awt/X11/XlibWrapper$1 +sun/awt/X11/XToolkit$4 +sun/awt/X11/XModifierKeymap +sun/awt/X11/XWrapperBase +sun/awt/X11/Native +sun/awt/X11/Native$1 +java/awt/EventQueue +sun/awt/X11/XToolkit$7 +java/util/EmptyStackException +java/lang/reflect/InvocationTargetException +java/awt/EventDispatchThread +java/awt/event/PaintEvent +java/awt/event/MouseEvent +sun/awt/PeerEvent +java/awt/event/InvocationEvent +java/awt/ActiveEvent +java/awt/EventQueueItem +sun/awt/X11/XToolkit$1 +sun/awt/X11/XToolkit$XErrorHandler +sun/awt/X11/XToolkit$5 +sun/awt/X11/XEventDispatcher +sun/awt/SunToolkit$ModalityListenerList +sun/awt/ModalityListener +sun/awt/SunToolkit$1 +java/util/MissingResourceException +java/awt/Queue +sun/awt/PostEventQueue +java/util/LinkedList +java/util/Deque +java/util/Queue +java/util/AbstractSequentialList +java/util/LinkedList$Entry +sun/awt/X11/AwtScreenData +sun/awt/X11/XWM +sun/awt/X11/MWMConstants +sun/awt/X11/XAtom +java/awt/Insets +sun/awt/X11/XWM$1 +sun/awt/X11/XWM$2 +sun/awt/X11/XSetWindowAttributes +sun/awt/X11/XErrorEvent +sun/awt/X11/XNETProtocol +sun/awt/X11/XStateProtocol +sun/awt/X11/XLayerProtocol +sun/awt/X11/XProtocol +sun/awt/X11/XProtocol$1 +sun/awt/X11/WindowPropertyGetter +sun/awt/X11/UnsafeXDisposerRecord +sun/awt/X11/XPropertyCache +sun/awt/X11/XWINProtocol +sun/awt/X11/XAtomList +sun/awt/X11/XToolkit$3 +sun/awt/X11/XAnyEvent +sun/awt/X11/IXAnyEvent +java/awt/Window$WindowDisposerRecord +java/awt/KeyboardFocusManager +java/awt/KeyEventDispatcher +java/awt/KeyEventPostProcessor +java/awt/AWTKeyStroke +java/awt/AWTKeyStroke$1 +java/awt/DefaultKeyboardFocusManager +java/awt/DefaultFocusTraversalPolicy +java/awt/ContainerOrderFocusTraversalPolicy +java/awt/FocusTraversalPolicy +java/awt/MutableBoolean +java/util/Collections$UnmodifiableSet +sun/awt/HeadlessToolkit +sun/awt/X11/XKeyboardFocusManagerPeer +java/awt/peer/KeyboardFocusManagerPeer +sun/awt/X11/XKeyboardFocusManagerPeer$1 +sun/awt/X11/XFramePeer +java/awt/peer/FramePeer +java/awt/peer/WindowPeer +java/awt/peer/ContainerPeer +java/awt/peer/ComponentPeer +sun/awt/X11/XDecoratedPeer +sun/awt/X11/XWindowPeer +sun/awt/X11/XPanelPeer +java/awt/peer/PanelPeer +sun/awt/X11/XCanvasPeer +java/awt/peer/CanvasPeer +sun/awt/X11/XComponentPeer +java/awt/dnd/peer/DropTargetPeer +sun/awt/X11/XWindow +sun/awt/X11ComponentPeer +sun/awt/X11/XBaseWindow +sun/awt/X11/XCreateWindowParams +java/lang/Long$LongCache +sun/awt/X11/XBaseWindow$InitialiseState +sun/awt/X11/XBaseWindow$StateLock +sun/awt/X11/AwtGraphicsConfigData +sun/awt/X11/XVisualInfo +java/awt/SystemColor +sun/awt/X11/MotifColorUtilities +java/lang/StrictMath +sun/awt/X11/XRepaintArea +sun/awt/RepaintArea +sun/awt/X11/XWindowAttributesData +java/util/concurrent/locks/LockSupport +sun/awt/X11/WindowDimensions +java/awt/Point +java/util/TreeMap$Entry +sun/nio/cs/UTF_8 +sun/nio/cs/Unicode +sun/nio/cs/UTF_8$Encoder +sun/nio/cs/UTF_8$Decoder +sun/nio/cs/Surrogate$Generator +sun/awt/X11/XPropertyEvent +sun/awt/X11/XDropTargetEventProcessor +sun/awt/X11/XDragSourceContextPeer +sun/awt/X11/XDragSourceProtocolListener +sun/awt/dnd/SunDragSourceContextPeer +java/awt/dnd/peer/DragSourceContextPeer +sun/awt/X11/XAwtState +sun/awt/X11/XBaseWindow$1 +sun/awt/X11/XRootWindow +sun/nio/cs/ISO_8859_1 +sun/nio/cs/ISO_8859_1$Encoder +sun/nio/cs/ISO_8859_1$Decoder +sun/java2d/x11/X11SurfaceData$X11WindowSurfaceData +sun/java2d/loops/RenderLoops +sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec +sun/java2d/DefaultDisposerRecord +sun/java2d/x11/X11Renderer +sun/awt/X11/XGlobalCursorManager +sun/awt/GlobalCursorManager +sun/awt/X11/XToolkit$6 +java/awt/Cursor$CursorDisposer +java/awt/AWTException +java/awt/HeadlessException +java/lang/UnsupportedOperationException +sun/reflect/UnsafeLongFieldAccessorImpl +sun/reflect/UnsafeIntegerFieldAccessorImpl +sun/awt/X11/XClientMessageEvent +sun/awt/X11/XIconInfo +sun/awt/X11/XAWTIcon32_java_icon16_png +sun/awt/X11/XAWTIcon32_java_icon24_png +sun/awt/X11/XAWTIcon32_java_icon32_png +sun/awt/X11/XAWTIcon32_java_icon48_png +sun/awt/X11/XSizeHints +sun/awt/X11/XContentWindow +sun/awt/X11/XFocusProxyWindow +sun/awt/X11/XWMHints +java/util/LinkedList$ListItr +java/util/ListIterator +sun/awt/SunToolkit$2 +java/awt/image/BufferStrategy +java/awt/dnd/DropTarget +java/awt/dnd/DropTargetListener +java/awt/event/ComponentListener +java/awt/event/FocusListener +java/awt/event/HierarchyListener +java/awt/event/HierarchyBoundsListener +java/awt/event/KeyListener +java/awt/event/MouseListener +java/awt/event/MouseMotionListener +java/awt/event/MouseWheelListener +java/awt/event/InputMethodListener +java/awt/Component$NativeInLightFixer +java/awt/event/ContainerListener +javax/accessibility/AccessibleContext +sun/reflect/UnsafeObjectFieldAccessorImpl +java/awt/peer/LightweightPeer +sun/awt/X11/XLabelPeer +java/awt/peer/LabelPeer +sun/awt/X11/XMapEvent +sun/awt/X11/XQueryTree +sun/awt/X11/XConfigureEvent +sun/awt/X11/PropMwmHints +sun/awt/GlobalCursorManager$NativeUpdater +javax/swing/JFrame +javax/swing/WindowConstants +javax/swing/RootPaneContainer +javax/swing/TransferHandler$HasGetTransferHandler +javax/swing/JLabel +javax/swing/SwingConstants +javax/swing/JComponent +javax/swing/JComponent$1 +javax/swing/SwingUtilities +javax/swing/JRootPane +sun/security/action/GetBooleanAction +javax/swing/event/EventListenerList +javax/swing/JPanel +java/awt/FlowLayout +javax/swing/UIManager +javax/swing/UIManager$LookAndFeelInfo +sun/swing/SwingUtilities2 +sun/swing/SwingUtilities2$LSBCacheEntry +javax/swing/UIManager$LAFState +javax/swing/UIDefaults +javax/swing/MultiUIDefaults +javax/swing/UIManager$1 +javax/swing/plaf/metal/MetalLookAndFeel +javax/swing/plaf/basic/BasicLookAndFeel +javax/swing/LookAndFeel +sun/swing/DefaultLookup +javax/swing/plaf/metal/OceanTheme +javax/swing/plaf/metal/DefaultMetalTheme +javax/swing/plaf/metal/MetalTheme +javax/swing/plaf/ColorUIResource +javax/swing/plaf/UIResource +sun/swing/PrintColorUIResource +javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate +javax/swing/plaf/FontUIResource +sun/swing/SwingLazyValue +javax/swing/UIDefaults$LazyValue +javax/swing/UIDefaults$ActiveValue +javax/swing/plaf/InsetsUIResource +sun/swing/SwingUtilities2$2 +javax/swing/plaf/basic/BasicLookAndFeel$2 +javax/swing/plaf/DimensionUIResource +javax/swing/UIDefaults$LazyInputMap +java/lang/Character$CharacterCache +javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue +javax/swing/plaf/metal/MetalLookAndFeel$FontActiveValue +java/awt/print/PrinterJob +sun/swing/SwingUtilities2$AATextInfo +sun/awt/X11/XAWTXSettings +sun/awt/X11/XMSelectionListener +sun/awt/XSettings +sun/awt/X11/XMSelection +sun/awt/X11/XMSelection$1 +javax/swing/plaf/metal/MetalLookAndFeel$AATextListener +java/beans/PropertyChangeListener +java/beans/PropertyChangeListenerProxy +java/util/EventListenerProxy +sun/awt/EventListenerAggregate +javax/swing/UIDefaults$ProxyLazyValue +javax/swing/plaf/metal/OceanTheme$1 +javax/swing/plaf/metal/OceanTheme$2 +javax/swing/plaf/metal/OceanTheme$3 +javax/swing/plaf/metal/OceanTheme$4 +javax/swing/plaf/metal/OceanTheme$5 +javax/swing/plaf/metal/OceanTheme$6 +javax/swing/RepaintManager +javax/swing/RepaintManager$DisplayChangedHandler +javax/swing/SwingPaintEventDispatcher +sun/awt/PaintEventDispatcher +javax/swing/UIManager$2 +javax/swing/UIManager$3 +java/awt/PopupMenu +java/awt/Menu +java/awt/MenuItem +java/awt/MenuComponent +java/io/ObjectOutputStream +java/io/ObjectOutput +java/io/DataOutput +java/io/ObjectStreamConstants +java/io/PrintWriter +java/io/ObjectInputStream +java/io/ObjectInput +java/awt/Event +java/awt/im/InputContext +java/awt/event/MouseWheelEvent +java/awt/BufferCapabilities +sun/awt/CausedFocusEvent$Cause +java/awt/PointerInfo +java/awt/Component$BaselineResizeBehavior +java/awt/FontMetrics +java/awt/Image +java/awt/image/ImageProducer +java/awt/image/VolatileImage +java/awt/im/InputMethodRequests +java/awt/event/FocusEvent +java/awt/event/InputMethodEvent +java/awt/event/HierarchyEvent +javax/accessibility/AccessibleStateSet +com/sun/swing/internal/plaf/metal/resources/metal +sun/util/ResourceBundleEnumeration +com/sun/swing/internal/plaf/basic/resources/basic +javax/swing/plaf/basic/BasicPanelUI +javax/swing/plaf/PanelUI +javax/swing/plaf/ComponentUI +sun/reflect/misc/MethodUtil +sun/reflect/misc/MethodUtil$1 +java/util/jar/JarFile +java/util/zip/ZipFile +java/util/zip/ZipConstants +java/util/jar/JavaUtilJarAccessImpl +sun/misc/JavaUtilJarAccess +sun/misc/JarIndex +java/util/zip/ZipEntry +java/util/jar/JarFile$JarFileEntry +java/util/jar/JarEntry +sun/misc/URLClassPath$JarLoader$2 +sun/net/www/protocol/jar/JarURLConnection +java/net/JarURLConnection +sun/net/www/protocol/jar/JarFileFactory +sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController +java/net/HttpURLConnection +sun/net/www/protocol/jar/URLJarFile +sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry +sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream +java/util/zip/ZipFile$ZipFileInputStream +java/security/AllPermissionCollection +java/lang/IllegalAccessException +javax/swing/JPasswordField +javax/swing/JTextField +javax/swing/text/JTextComponent +javax/swing/Scrollable +javax/swing/JLayeredPane +javax/swing/JRootPane$1 +javax/swing/ArrayTable +javax/swing/JInternalFrame +javax/swing/JRootPane$RootLayout +javax/swing/BufferStrategyPaintManager +javax/swing/RepaintManager$PaintManager +javax/swing/plaf/metal/MetalRootPaneUI +javax/swing/plaf/basic/BasicRootPaneUI +javax/swing/plaf/RootPaneUI +javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap +javax/swing/plaf/ComponentInputMapUIResource +javax/swing/ComponentInputMap +javax/swing/InputMap +javax/swing/plaf/InputMapUIResource +javax/swing/KeyStroke +java/awt/VKCollection +sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl +javax/swing/plaf/basic/LazyActionMap +javax/swing/plaf/ActionMapUIResource +javax/swing/ActionMap +javax/swing/LayoutFocusTraversalPolicy +javax/swing/SortingFocusTraversalPolicy +javax/swing/InternalFrameFocusTraversalPolicy +javax/swing/SwingContainerOrderFocusTraversalPolicy +javax/swing/SwingDefaultFocusTraversalPolicy +javax/swing/LayoutComparator +javax/swing/plaf/metal/MetalLabelUI +javax/swing/plaf/basic/BasicLabelUI +javax/swing/plaf/LabelUI +javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1 +javax/swing/plaf/basic/BasicHTML +javax/swing/SystemEventQueueUtilities +javax/swing/SystemEventQueueUtilities$SystemEventQueue +sun/awt/NullComponentPeer +java/awt/event/WindowEvent +java/awt/EventQueue$1 +java/awt/EventDispatchThread$1 +java/awt/Conditional +java/awt/EventDispatchThread$HierarchyEventFilter +java/awt/EventFilter$FilterAction +sun/awt/dnd/SunDropTargetEvent +java/awt/event/ActionEvent +java/util/jar/Manifest +java/io/ByteArrayInputStream +java/util/jar/Attributes +java/util/jar/Manifest$FastInputStream +java/util/jar/Attributes$Name +sun/misc/ASCIICaseInsensitiveComparator +java/util/jar/JarVerifier +java/io/ByteArrayOutputStream +sun/misc/ExtensionDependency +java/lang/Package +sun/security/util/ManifestEntryVerifier +sun/security/provider/Sun +java/security/Provider +java/security/Provider$ServiceKey +java/security/Provider$EngineDescription +sun/security/provider/Sun$1 +java/security/Security +java/security/Security$1 +sun/misc/FloatingDecimal +sun/misc/FloatingDecimal$1 +sun/security/provider/NativePRNG +java/security/SecureRandomSpi +sun/security/provider/NativePRNG$1 +sun/security/provider/NativePRNG$RandomIO +sun/misc/BASE64Decoder +sun/misc/CharacterDecoder +sun/security/util/SignatureFileVerifier +java/awt/event/KeyAdapter +java/lang/NumberFormatException +java/lang/IllegalArgumentException +java/io/FileWriter +java/net/Authenticator +java/net/MalformedURLException +javax/swing/text/Element +javax/swing/text/Document +javax/swing/text/PlainDocument +javax/swing/text/AbstractDocument +javax/swing/text/GapContent +javax/swing/text/AbstractDocument$Content +javax/swing/text/GapVector +javax/swing/text/GapContent$MarkVector +javax/swing/text/GapContent$MarkData +javax/swing/text/StyleContext +javax/swing/text/AbstractDocument$AttributeContext +javax/swing/text/StyleConstants +javax/swing/text/StyleConstants$CharacterConstants +javax/swing/text/AttributeSet$CharacterAttribute +javax/swing/text/StyleConstants$FontConstants +javax/swing/text/AttributeSet$FontAttribute +javax/swing/text/StyleConstants$ColorConstants +javax/swing/text/AttributeSet$ColorAttribute +javax/swing/text/StyleConstants$ParagraphConstants +javax/swing/text/AttributeSet$ParagraphAttribute +javax/swing/text/StyleContext$FontKey +javax/swing/text/SimpleAttributeSet +javax/swing/text/MutableAttributeSet +javax/swing/text/AttributeSet +javax/swing/text/SimpleAttributeSet$EmptyAttributeSet +javax/swing/text/StyleContext$NamedStyle +javax/swing/text/Style +javax/swing/text/SimpleAttributeSet$1 +javax/swing/text/StyleContext$SmallAttributeSet +javax/swing/text/AbstractDocument$BidiRootElement +javax/swing/text/AbstractDocument$BranchElement +javax/swing/text/AbstractDocument$AbstractElement +javax/swing/tree/TreeNode +javax/swing/text/AbstractDocument$1 +javax/swing/text/AbstractDocument$BidiElement +javax/swing/text/AbstractDocument$LeafElement +javax/swing/text/GapContent$StickyPosition +javax/swing/text/Position +javax/swing/text/StyleContext$KeyEnumeration +javax/swing/text/GapContent$InsertUndo +javax/swing/undo/AbstractUndoableEdit +javax/swing/undo/UndoableEdit +javax/swing/text/AbstractDocument$DefaultDocumentEvent +javax/swing/event/DocumentEvent +javax/swing/undo/CompoundEdit +javax/swing/event/DocumentEvent$EventType +javax/swing/text/Segment +java/text/CharacterIterator +javax/swing/text/Utilities +javax/swing/text/SegmentCache +javax/swing/text/SegmentCache$CachedSegment +javax/swing/event/UndoableEditEvent +javax/swing/text/AbstractDocument$ElementEdit +javax/swing/event/DocumentEvent$ElementChange +java/net/Socket +java/net/InetAddress +java/net/InetAddress$Cache +java/net/InetAddress$Cache$Type +java/net/InetAddressImplFactory +java/net/Inet4AddressImpl +java/net/InetAddressImpl +java/net/InetAddress$1 +sun/net/spi/nameservice/NameService +sun/net/util/IPAddressUtil +java/util/RandomAccessSubList +java/util/SubList +java/util/SubList$1 +java/util/AbstractList$ListItr +java/net/Inet4Address +java/net/InetSocketAddress +java/net/SocketAddress +java/net/SocksSocketImpl +java/net/SocksConsts +java/net/PlainSocketImpl +java/net/SocketImpl +java/net/SocketOptions +java/net/SocketException +java/net/SocksSocketImpl$5 +java/net/ProxySelector +sun/net/spi/DefaultProxySelector +sun/net/spi/DefaultProxySelector$1 +sun/net/NetProperties +sun/net/NetProperties$1 +sun/net/spi/DefaultProxySelector$NonProxyInfo +java/net/Inet6Address +java/net/URI +java/net/URI$Parser +java/net/Proxy +java/net/Proxy$Type +java/net/ConnectException +javax/swing/JMenu +javax/swing/MenuElement +javax/swing/JMenuItem +javax/swing/AbstractButton +java/awt/ItemSelectable +javax/swing/event/MenuListener +javax/swing/JCheckBoxMenuItem +javax/swing/Icon +javax/swing/JButton +java/awt/event/WindowListener +java/net/URLClassLoader$2 +javax/swing/ImageIcon +javax/swing/ImageIcon$1 +java/awt/MediaTracker +sun/misc/SoftCache$ValueCell +sun/awt/image/URLImageSource +sun/awt/image/InputStreamImageSource +sun/awt/image/ImageFetchable +sun/awt/image/ToolkitImage +java/awt/Image$1 +sun/awt/image/SurfaceManager$ImageAccessor +sun/awt/image/SurfaceManager +sun/awt/image/NativeLibLoader +java/awt/ImageMediaEntry +java/awt/MediaEntry +sun/awt/image/ImageRepresentation +java/awt/image/ImageConsumer +sun/awt/image/ImageWatched +sun/awt/image/ImageWatched$Link +sun/awt/image/ImageWatched$WeakLink +sun/awt/image/ImageConsumerQueue +sun/awt/image/ImageFetcher +sun/awt/image/FetcherInfo +sun/awt/image/ImageFetcher$1 +sun/awt/image/GifImageDecoder +sun/awt/image/ImageDecoder +sun/awt/image/GifFrame +java/awt/image/Raster +java/awt/image/DataBufferByte +java/awt/image/DataBuffer +java/awt/image/PixelInterleavedSampleModel +java/awt/image/ComponentSampleModel +java/awt/image/SampleModel +sun/awt/image/ByteInterleavedRaster +sun/awt/image/ByteComponentRaster +sun/awt/image/SunWritableRaster +java/awt/image/WritableRaster +java/awt/image/BufferedImage +java/awt/image/WritableRenderedImage +java/awt/image/RenderedImage +sun/awt/image/IntegerComponentRaster +sun/awt/image/BytePackedRaster +java/awt/Canvas +sun/font/FontDesignMetrics +sun/font/FontStrikeDesc +sun/font/CompositeStrike +sun/font/FontStrikeDisposer +sun/font/StrikeCache$SoftDisposerRef +sun/font/StrikeCache$DisposableStrike +sun/font/TrueTypeFont$TTDisposerRecord +sun/font/TrueTypeFont$1 +java/io/RandomAccessFile +java/nio/ByteBufferAsIntBufferB +java/nio/IntBuffer +sun/font/TrueTypeFont$DirectoryEntry +java/nio/ByteBufferAsShortBufferB +java/nio/ShortBuffer +sun/nio/cs/UTF_16 +sun/nio/cs/UTF_16$Decoder +sun/nio/cs/UnicodeDecoder +sun/font/FileFontStrike +sun/font/FileFont$FileFontDisposer +sun/font/TrueTypeGlyphMapper +sun/font/CMap +sun/font/CMap$NullCMapClass +sun/font/CMap$CMapFormat4 +java/nio/ByteBufferAsCharBufferB +sun/font/FontDesignMetrics$KeyReference +sun/awt/image/PNGImageDecoder +sun/awt/image/PNGFilterInputStream +java/util/zip/InflaterInputStream +java/util/zip/Inflater +sun/awt/EventQueueItem +sun/awt/SunToolkit$3 +sun/awt/X11/XExposeEvent +sun/awt/X11/ComponentAccessor +sun/awt/X11/ComponentAccessor$1 +sun/reflect/UnsafeBooleanFieldAccessorImpl +sun/awt/event/IgnorePaintEvent +java/awt/image/DataBufferInt +java/awt/image/SinglePixelPackedSampleModel +sun/awt/image/IntegerInterleavedRaster +sun/java2d/x11/X11RemoteOffScreenImage +sun/awt/image/RemoteOffScreenImage +sun/awt/image/OffScreenImage +sun/java2d/x11/X11RemoteOffScreenImage$X11RemoteSurfaceManager +sun/awt/image/OffScreenSurfaceManager +sun/awt/image/CachingSurfaceManager +sun/awt/image/RasterListener +sun/awt/image/BufImgSurfaceData +sun/java2d/opengl/GLXGraphicsConfig +sun/java2d/opengl/OGLGraphicsConfig +sun/java2d/x11/X11SurfaceData$X11PixmapSurfaceData +sun/awt/image/WritableRasterNative +sun/awt/image/DataBufferNative +sun/java2d/SurfaceManagerFactory +sun/java2d/x11/X11CachingSurfaceManager +sun/java2d/opengl/GLXSurfaceData +sun/java2d/opengl/OGLSurfaceData +sun/font/CompositeGlyphMapper +sun/java2d/loops/FontInfo +java/util/Date +sun/util/calendar/CalendarSystem +sun/util/calendar/Gregorian +sun/util/calendar/BaseCalendar +sun/util/calendar/AbstractCalendar +java/util/TimeZone +java/lang/InheritableThreadLocal +sun/util/calendar/ZoneInfo +sun/util/calendar/ZoneInfoFile +sun/util/calendar/ZoneInfoFile$1 +java/util/TimeZone$1 +sun/util/calendar/Gregorian$Date +sun/util/calendar/BaseCalendar$Date +sun/util/calendar/CalendarDate +sun/util/calendar/CalendarUtils +java/util/TimeZone$DisplayNames +sun/util/TimeZoneNameUtility +sun/util/resources/TimeZoneNames +sun/util/resources/TimeZoneNamesBundle +sun/util/resources/TimeZoneNames_en +java/util/spi/TimeZoneNameProvider +java/lang/ProcessBuilder +java/lang/ProcessImpl +java/lang/UNIXProcess +java/lang/Process +java/lang/UNIXProcess$Gate +java/lang/UNIXProcess$1 +java/lang/UNIXProcess$1$1 +java/lang/UNIXProcess$1$1$1 +java/net/ServerSocket +java/util/Random +java/util/concurrent/atomic/AtomicLong +java/lang/InternalError +java/io/StringReader +java/lang/SecurityException +java/io/FilterReader +java/lang/reflect/Proxy +java/lang/reflect/InvocationHandler +java/lang/NoSuchFieldException +java/lang/InstantiationException +java/lang/ArrayIndexOutOfBoundsException +java/lang/IndexOutOfBoundsException +javax/swing/JDialog +sun/awt/X11/XClipboard +sun/awt/datatransfer/SunClipboard +java/awt/datatransfer/Clipboard +java/awt/datatransfer/SystemFlavorMap +java/awt/datatransfer/FlavorMap +java/awt/datatransfer/FlavorTable +java/awt/datatransfer/SystemFlavorMap$1 +sun/net/ProgressMonitor +sun/net/DefaultProgressMeteringPolicy +sun/net/ProgressMeteringPolicy +java/awt/datatransfer/SystemFlavorMap$2 +java/awt/datatransfer/MimeType +java/io/Externalizable +java/awt/datatransfer/MimeTypeParameterList +sun/awt/datatransfer/DataTransferer +java/util/Collections$SynchronizedSet +java/util/Collections$SynchronizedCollection +java/awt/datatransfer/DataFlavor +java/awt/datatransfer/DataFlavor$1 +sun/awt/datatransfer/DataTransferer$CharsetComparator +sun/awt/datatransfer/DataTransferer$IndexedComparator +sun/nio/cs/UTF_16LE +sun/nio/cs/UTF_16BE +sun/awt/datatransfer/DataTransferer$DataFlavorComparator +java/rmi/Remote +sun/awt/datatransfer/DataTransferer$1 +sun/awt/X11/XDataTransferer +sun/awt/datatransfer/ToolkitThreadBlockedHandler +javax/imageio/ImageTypeSpecifier +sun/awt/X11/XSelection +sun/security/action/GetIntegerAction +sun/awt/X11/XSelection$IncrementalTransferHandler +sun/awt/X11/XSelection$SelectionEventHandler +java/awt/datatransfer/Transferable +java/io/EOFException +java/util/Vector$1 +java/util/zip/ZipFile$1 +java/util/zip/ZipFile$2 +java/util/jar/JarFile$1 +java/util/PropertyResourceBundle +java/util/ResourceBundle$Control$1 +java/util/Hashtable$EntrySet +java/lang/IllegalAccessError +java/text/MessageFormat +java/text/MessageFormat$Field +java/text/Format$Field +java/lang/CloneNotSupportedException +sun/reflect/MethodAccessorGenerator +sun/reflect/AccessorGenerator +sun/reflect/ClassFileConstants +java/lang/Void +sun/reflect/ByteVectorFactory +sun/reflect/ByteVectorImpl +sun/reflect/ByteVector +sun/reflect/ClassFileAssembler +sun/reflect/UTF8 +sun/reflect/Label +sun/reflect/Label$PatchInfo +sun/reflect/MethodAccessorGenerator$1 +sun/reflect/ClassDefiner +sun/reflect/ClassDefiner$1 +sun/reflect/BootstrapConstructorAccessorImpl +java/awt/event/ActionListener +javax/swing/Timer +javax/swing/Timer$DoPostEvent +javax/swing/TimerQueue +javax/swing/TimerQueue$1 +javax/swing/ToolTipManager +java/awt/event/MouseAdapter +javax/swing/ToolTipManager$insideTimerAction +javax/swing/ToolTipManager$outsideTimerAction +javax/swing/ToolTipManager$stillInsideTimerAction +javax/swing/ToolTipManager$Actions +sun/swing/UIAction +javax/swing/Action +javax/swing/ToolTipManager$MoveBeforeEnterListener +java/awt/event/MouseMotionAdapter +java/util/Hashtable$ValueCollection +javax/swing/event/CaretListener +javax/swing/JToolBar +javax/swing/JSplitPane +javax/swing/border/Border +javax/swing/JToggleButton +javax/swing/border/EmptyBorder +javax/swing/border/AbstractBorder +javax/swing/DefaultButtonModel +javax/swing/ButtonModel +javax/swing/AbstractButton$Handler +javax/swing/event/ChangeListener +java/awt/event/ItemListener +javax/swing/plaf/metal/MetalButtonUI +javax/swing/plaf/basic/BasicButtonUI +javax/swing/plaf/ButtonUI +javax/swing/plaf/metal/MetalBorders +javax/swing/plaf/BorderUIResource$CompoundBorderUIResource +javax/swing/border/CompoundBorder +javax/swing/plaf/metal/MetalBorders$ButtonBorder +javax/swing/plaf/basic/BasicBorders$MarginBorder +javax/swing/plaf/basic/BasicButtonListener +java/awt/AWTEventMulticaster +java/awt/event/WindowFocusListener +java/awt/event/WindowStateListener +java/awt/event/AdjustmentListener +java/awt/event/TextListener +javax/swing/event/AncestorListener +java/beans/VetoableChangeListener +javax/swing/ButtonGroup +javax/swing/JToggleButton$ToggleButtonModel +javax/swing/plaf/metal/MetalToggleButtonUI +javax/swing/plaf/basic/BasicToggleButtonUI +javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder +java/awt/CardLayout +javax/swing/Box +javax/swing/plaf/metal/MetalBorders$TextFieldBorder +javax/swing/plaf/metal/MetalBorders$Flush3DBorder +javax/swing/BoxLayout +javax/swing/JMenuBar +javax/swing/DefaultSingleSelectionModel +javax/swing/SingleSelectionModel +javax/swing/plaf/basic/BasicMenuBarUI +javax/swing/plaf/MenuBarUI +javax/swing/plaf/basic/DefaultMenuLayout +javax/swing/plaf/metal/MetalBorders$MenuBarBorder +javax/swing/plaf/basic/BasicMenuBarUI$Handler +javax/swing/KeyboardManager +javax/swing/event/MenuEvent +javax/swing/JMenu$MenuChangeListener +javax/swing/JMenuItem$MenuItemFocusListener +javax/swing/plaf/basic/BasicMenuUI +javax/swing/plaf/basic/BasicMenuItemUI +javax/swing/plaf/MenuItemUI +javax/swing/plaf/metal/MetalBorders$MenuItemBorder +javax/swing/plaf/metal/MetalIconFactory +javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon +javax/swing/plaf/basic/BasicMenuUI$Handler +javax/swing/event/MenuKeyListener +javax/swing/plaf/basic/BasicMenuItemUI$Handler +javax/swing/event/MenuDragMouseListener +javax/swing/event/MouseInputListener +javax/swing/event/ChangeEvent +java/awt/event/ContainerEvent +javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon +javax/swing/JPopupMenu +javax/swing/plaf/basic/BasicPopupMenuUI +javax/swing/plaf/PopupMenuUI +javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper +java/awt/event/AWTEventListenerProxy +java/awt/Toolkit$SelectiveAWTEventListener +java/awt/Toolkit$ToolkitEventMulticaster +javax/swing/plaf/basic/BasicLookAndFeel$1 +javax/swing/plaf/metal/MetalBorders$PopupMenuBorder +javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener +javax/swing/event/PopupMenuListener +javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener +javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber +javax/swing/MenuSelectionManager +javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper +javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1 +java/awt/event/FocusAdapter +javax/swing/JMenu$WinListener +java/awt/event/WindowAdapter +javax/swing/JPopupMenu$Separator +javax/swing/JSeparator +javax/swing/plaf/metal/MetalPopupMenuSeparatorUI +javax/swing/plaf/metal/MetalSeparatorUI +javax/swing/plaf/basic/BasicSeparatorUI +javax/swing/plaf/SeparatorUI +javax/swing/JComboBox +javax/swing/event/ListDataListener +javax/swing/event/CaretEvent +javax/swing/text/TabExpander +javax/swing/JScrollBar +java/awt/Adjustable +javax/swing/event/MouseInputAdapter +javax/swing/JScrollBar$ModelListener +javax/swing/DefaultBoundedRangeModel +javax/swing/BoundedRangeModel +javax/swing/plaf/metal/MetalScrollBarUI +javax/swing/plaf/basic/BasicScrollBarUI +javax/swing/plaf/ScrollBarUI +javax/swing/plaf/metal/MetalBumps +javax/swing/plaf/metal/MetalScrollButton +javax/swing/plaf/basic/BasicArrowButton +javax/swing/plaf/basic/BasicScrollBarUI$TrackListener +javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener +javax/swing/plaf/basic/BasicScrollBarUI$ModelListener +javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener +javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler +javax/swing/plaf/basic/BasicScrollBarUI$Handler +javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener +javax/swing/CellRendererPane +java/util/HashMap$EntryIterator +javax/swing/border/MatteBorder +sun/font/StandardGlyphVector +java/awt/font/GlyphVector +sun/font/StandardGlyphVector$GlyphStrike +sun/font/CoreMetrics +sun/font/FontLineMetrics +java/awt/font/LineMetrics +javax/swing/ComboBoxModel +javax/swing/ListModel +javax/swing/ListCellRenderer +javax/swing/DefaultComboBoxModel +javax/swing/MutableComboBoxModel +javax/swing/AbstractListModel +javax/swing/JComboBox$1 +javax/swing/AncestorNotifier +javax/swing/plaf/metal/MetalComboBoxUI +javax/swing/plaf/basic/BasicComboBoxUI +javax/swing/plaf/ComboBoxUI +javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager +javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager +javax/swing/plaf/basic/BasicComboPopup +javax/swing/plaf/basic/ComboPopup +javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass +javax/swing/border/LineBorder +javax/swing/plaf/basic/BasicComboPopup$1 +javax/swing/JList +javax/swing/DropMode +javax/swing/DefaultListSelectionModel +javax/swing/ListSelectionModel +javax/swing/plaf/basic/BasicListUI +javax/swing/plaf/ListUI +javax/swing/plaf/basic/BasicListUI$ListTransferHandler +javax/swing/TransferHandler +javax/swing/TransferHandler$TransferAction +javax/swing/DefaultListCellRenderer$UIResource +javax/swing/DefaultListCellRenderer +javax/swing/TransferHandler$SwingDropTarget +java/awt/dnd/DropTargetContext +javax/swing/TransferHandler$DropHandler +javax/swing/TransferHandler$TransferSupport +javax/swing/plaf/basic/BasicListUI$Handler +javax/swing/event/ListSelectionListener +javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag +javax/swing/plaf/basic/BasicComboPopup$Handler +javax/swing/JScrollPane +javax/swing/ScrollPaneConstants +javax/swing/ScrollPaneLayout$UIResource +javax/swing/ScrollPaneLayout +javax/swing/JViewport +javax/swing/ViewportLayout +javax/swing/plaf/basic/BasicViewportUI +javax/swing/plaf/ViewportUI +javax/swing/JScrollPane$ScrollBar +javax/swing/JViewport$ViewListener +java/awt/event/ComponentAdapter +javax/swing/plaf/metal/MetalScrollPaneUI +javax/swing/plaf/basic/BasicScrollPaneUI +javax/swing/plaf/ScrollPaneUI +javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder +javax/swing/plaf/basic/BasicScrollPaneUI$Handler +javax/swing/plaf/metal/MetalScrollPaneUI$1 +javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource +javax/swing/plaf/basic/BasicComboBoxRenderer +javax/swing/plaf/metal/MetalComboBoxEditor$UIResource +javax/swing/plaf/metal/MetalComboBoxEditor +javax/swing/plaf/basic/BasicComboBoxEditor +javax/swing/ComboBoxEditor +javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField +javax/swing/JTextField$NotifyAction +javax/swing/text/TextAction +javax/swing/AbstractAction +javax/swing/text/JTextComponent$MutableCaretEvent +javax/swing/plaf/metal/MetalTextFieldUI +javax/swing/plaf/basic/BasicTextFieldUI +javax/swing/plaf/basic/BasicTextUI +javax/swing/text/ViewFactory +javax/swing/plaf/TextUI +javax/swing/plaf/basic/BasicTextUI$BasicCursor +javax/swing/text/DefaultEditorKit +javax/swing/text/EditorKit +javax/swing/text/DefaultEditorKit$InsertContentAction +javax/swing/text/DefaultEditorKit$DeletePrevCharAction +javax/swing/text/DefaultEditorKit$DeleteNextCharAction +javax/swing/text/DefaultEditorKit$ReadOnlyAction +javax/swing/text/DefaultEditorKit$DeleteWordAction +javax/swing/text/DefaultEditorKit$WritableAction +javax/swing/text/DefaultEditorKit$CutAction +javax/swing/text/DefaultEditorKit$CopyAction +javax/swing/text/DefaultEditorKit$PasteAction +javax/swing/text/DefaultEditorKit$VerticalPageAction +javax/swing/text/DefaultEditorKit$PageAction +javax/swing/text/DefaultEditorKit$InsertBreakAction +javax/swing/text/DefaultEditorKit$BeepAction +javax/swing/text/DefaultEditorKit$NextVisualPositionAction +javax/swing/text/DefaultEditorKit$BeginWordAction +javax/swing/text/DefaultEditorKit$EndWordAction +javax/swing/text/DefaultEditorKit$PreviousWordAction +javax/swing/text/DefaultEditorKit$NextWordAction +javax/swing/text/DefaultEditorKit$BeginLineAction +javax/swing/text/DefaultEditorKit$EndLineAction +javax/swing/text/DefaultEditorKit$BeginParagraphAction +javax/swing/text/DefaultEditorKit$EndParagraphAction +javax/swing/text/DefaultEditorKit$BeginAction +javax/swing/text/DefaultEditorKit$EndAction +javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction +javax/swing/text/DefaultEditorKit$InsertTabAction +javax/swing/text/DefaultEditorKit$SelectWordAction +javax/swing/text/DefaultEditorKit$SelectLineAction +javax/swing/text/DefaultEditorKit$SelectParagraphAction +javax/swing/text/DefaultEditorKit$SelectAllAction +javax/swing/text/DefaultEditorKit$UnselectAction +javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction +javax/swing/text/DefaultEditorKit$DumpModelAction +javax/swing/plaf/basic/BasicTextUI$TextTransferHandler +javax/swing/text/Position$Bias +javax/swing/plaf/basic/BasicTextUI$RootView +javax/swing/text/View +javax/swing/plaf/basic/BasicTextUI$UpdateHandler +javax/swing/event/DocumentListener +javax/swing/plaf/basic/BasicTextUI$DragListener +javax/swing/plaf/basic/BasicComboBoxEditor$UIResource +javax/swing/plaf/basic/BasicTextUI$BasicCaret +javax/swing/text/DefaultCaret +javax/swing/text/Caret +javax/swing/text/DefaultCaret$Handler +java/awt/datatransfer/ClipboardOwner +javax/swing/plaf/basic/BasicTextUI$BasicHighlighter +javax/swing/text/DefaultHighlighter +javax/swing/text/LayeredHighlighter +javax/swing/text/Highlighter +javax/swing/text/Highlighter$Highlight +javax/swing/text/DefaultHighlighter$DefaultHighlightPainter +javax/swing/text/LayeredHighlighter$LayerPainter +javax/swing/text/Highlighter$HighlightPainter +javax/swing/text/DefaultHighlighter$SafeDamager +javax/swing/text/FieldView +javax/swing/text/PlainView +javax/swing/text/JTextComponent$DefaultKeymap +javax/swing/text/Keymap +javax/swing/text/JTextComponent$KeymapWrapper +javax/swing/text/JTextComponent$KeymapActionMap +javax/swing/plaf/basic/BasicTextUI$FocusAction +javax/swing/plaf/basic/BasicTextUI$TextActionWrapper +javax/swing/JTextArea +javax/swing/JEditorPane +javax/swing/JTextField$ScrollRepainter +javax/swing/plaf/metal/MetalComboBoxEditor$1 +javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder +javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener +javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler +javax/swing/plaf/basic/BasicComboBoxUI$Handler +javax/swing/plaf/metal/MetalComboBoxButton +javax/swing/plaf/metal/MetalComboBoxIcon +javax/swing/plaf/metal/MetalComboBoxButton$1 +javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager +javax/swing/JComboBox$KeySelectionManager +javax/swing/JToolBar$DefaultToolBarLayout +javax/swing/plaf/metal/MetalToolBarUI +javax/swing/plaf/basic/BasicToolBarUI +javax/swing/plaf/ToolBarUI +javax/swing/plaf/metal/MetalBorders$ToolBarBorder +javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1 +javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder +javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder +javax/swing/plaf/basic/BasicBorders$RadioButtonBorder +javax/swing/plaf/basic/BasicBorders$ButtonBorder +javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder +javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener +javax/swing/plaf/basic/BasicToolBarUI$DockingListener +javax/swing/plaf/basic/BasicToolBarUI$Handler +javax/swing/border/EtchedBorder +javax/swing/JToolBar$Separator +javax/swing/plaf/basic/BasicToolBarSeparatorUI +sun/awt/color/CMM +java/applet/Applet +java/awt/Panel +com/sun/awt/AWTUtilities +javax/swing/KeyboardManager$ComponentKeyStrokePair +sun/awt/EmbeddedFrame +sun/awt/im/InputMethodContext +java/awt/im/spi/InputMethodContext +sun/awt/im/InputContext +sun/awt/im/InputMethodManager +sun/awt/im/ExecutableInputMethodManager +sun/awt/X11/XInputMethodDescriptor +sun/awt/X11InputMethodDescriptor +java/awt/im/spi/InputMethodDescriptor +sun/awt/im/InputMethodLocator +sun/awt/im/ExecutableInputMethodManager$2 +sun/misc/Service +sun/misc/Service$LazyIterator +java/util/TreeSet +java/util/NavigableSet +java/util/SortedSet +javax/swing/SizeRequirements +javax/swing/plaf/basic/BasicGraphicsUtils +java/awt/event/AdjustmentEvent +java/awt/MenuBar +sun/awt/X11/XComponentPeer$2 +java/awt/SequencedEvent +java/beans/PropertyVetoException +java/awt/DefaultKeyboardFocusManager$TypeAheadMarker +java/awt/KeyboardFocusManager$HeavyweightFocusRequest +java/awt/KeyboardFocusManager$LightweightFocusRequest +sun/awt/KeyboardFocusManagerPeerImpl +sun/awt/SunToolkit$7 +java/awt/Window$1DisposeAction +java/awt/LightweightDispatcher$2 +sun/awt/X11/XReparentEvent +sun/awt/X11/XWindowAttributes +javax/swing/SystemEventQueueUtilities$ComponentWorkRequest +sun/awt/X11/XFocusChangeEvent +sun/awt/X11/XComponentPeer$1 +sun/awt/X11/XUnmapEvent +java/io/StringWriter +javax/swing/JWindow +java/io/UnsupportedEncodingException +java/net/UnknownHostException +java/nio/channels/SocketChannel +java/nio/channels/spi/AbstractSelectableChannel +java/nio/channels/SelectableChannel +java/net/SocketImplFactory +javax/swing/UnsupportedLookAndFeelException +java/lang/UnsatisfiedLinkError +javax/swing/Box$Filler +javax/swing/JComponent$2 +sun/net/www/MimeTable +java/net/FileNameMap +sun/net/www/MimeTable$1 +sun/net/www/MimeTable$2 +sun/net/www/MimeEntry +java/net/URLConnection$1 +java/text/SimpleDateFormat +java/text/DateFormat +java/text/DateFormat$Field +java/util/Calendar +java/util/GregorianCalendar +sun/util/resources/CalendarData +sun/util/resources/CalendarData_en +java/text/DateFormatSymbols +java/text/spi/DateFormatSymbolsProvider +java/text/DontCareFieldPosition +java/text/DontCareFieldPosition$1 +java/text/Format$FieldDelegate +javax/swing/plaf/BorderUIResource +javax/swing/BorderFactory +javax/swing/border/BevelBorder +javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon +javax/swing/plaf/metal/MetalIconFactory$FolderIcon16 +java/util/zip/ZipInputStream +java/io/PushbackInputStream +java/util/zip/CRC32 +java/util/zip/Checksum +java/lang/Thread$State +javax/swing/SwingUtilities$SharedOwnerFrame +javax/swing/JTable +javax/swing/event/TableModelListener +javax/swing/event/TableColumnModelListener +javax/swing/event/CellEditorListener +javax/swing/event/RowSorterListener +javax/swing/BufferStrategyPaintManager$BufferInfo +java/awt/Component$BltSubRegionBufferStrategy +sun/awt/SubRegionShowable +java/awt/Component$BltBufferStrategy +sun/awt/image/SunVolatileImage +sun/awt/image/BufferedImageGraphicsConfig +sun/print/PrinterGraphicsConfig +sun/java2d/x11/X11VolatileSurfaceManager +sun/awt/image/VolatileSurfaceManager +java/awt/print/PrinterGraphics +java/awt/PrintGraphics +java/awt/GraphicsCallback$PaintCallback +java/awt/GraphicsCallback +sun/awt/SunGraphicsCallback +javax/swing/JRadioButton +java/lang/ClassFormatError +javax/swing/JTabbedPane +javax/swing/JTabbedPane$ModelListener +javax/swing/plaf/metal/MetalTabbedPaneUI +javax/swing/plaf/basic/BasicTabbedPaneUI +javax/swing/plaf/TabbedPaneUI +javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout +javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout +javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout +javax/swing/plaf/basic/BasicTabbedPaneUI$Handler +sun/swing/ImageIconUIResource +javax/swing/GrayFilter +java/awt/image/RGBImageFilter +java/awt/image/ImageFilter +java/awt/image/FilteredImageSource +org/w3c/dom/Node +org/xml/sax/SAXException +javax/xml/parsers/ParserConfigurationException +org/xml/sax/EntityResolver +java/security/NoSuchAlgorithmException +java/security/GeneralSecurityException +java/util/zip/GZIPInputStream +java/util/zip/DeflaterOutputStream +org/xml/sax/InputSource +javax/xml/parsers/DocumentBuilderFactory +javax/xml/parsers/FactoryFinder +javax/xml/parsers/SecuritySupport +javax/xml/parsers/SecuritySupport$2 +javax/xml/parsers/SecuritySupport$5 +javax/xml/parsers/SecuritySupport$1 +javax/xml/parsers/SecuritySupport$4 +javax/xml/parsers/DocumentBuilder +org/w3c/dom/Document +org/xml/sax/helpers/DefaultHandler +org/xml/sax/DTDHandler +org/xml/sax/ContentHandler +org/xml/sax/ErrorHandler +org/xml/sax/SAXNotSupportedException +org/xml/sax/Locator +org/xml/sax/SAXNotRecognizedException +org/xml/sax/SAXParseException +org/w3c/dom/NodeList +org/w3c/dom/events/EventTarget +org/w3c/dom/traversal/DocumentTraversal +org/w3c/dom/events/DocumentEvent +org/w3c/dom/ranges/DocumentRange +org/w3c/dom/Entity +org/w3c/dom/Element +org/w3c/dom/CharacterData +org/w3c/dom/CDATASection +org/w3c/dom/Text +org/xml/sax/AttributeList +org/w3c/dom/DOMException +org/w3c/dom/Notation +org/w3c/dom/DocumentType +org/w3c/dom/Attr +org/w3c/dom/EntityReference +org/w3c/dom/ProcessingInstruction +org/w3c/dom/Comment +org/w3c/dom/DocumentFragment +org/w3c/dom/events/Event +org/w3c/dom/events/MutationEvent +org/w3c/dom/traversal/TreeWalker +org/w3c/dom/ranges/Range +org/w3c/dom/traversal/NodeIterator +org/w3c/dom/events/EventException +org/w3c/dom/NamedNodeMap +java/lang/StringIndexOutOfBoundsException +java/awt/GridLayout +javax/swing/plaf/metal/MetalRadioButtonUI +javax/swing/plaf/basic/BasicRadioButtonUI +javax/swing/plaf/basic/BasicBorders +javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon +java/awt/event/ItemEvent +java/awt/CardLayout$Card +javax/swing/JCheckBox +javax/swing/event/ListSelectionEvent +javax/swing/plaf/metal/MetalCheckBoxUI +javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon +java/lang/ExceptionInInitializerError +com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI +javax/swing/JProgressBar +javax/swing/JProgressBar$ModelListener +javax/swing/plaf/metal/MetalProgressBarUI +javax/swing/plaf/basic/BasicProgressBarUI +javax/swing/plaf/ProgressBarUI +javax/swing/plaf/BorderUIResource$LineBorderUIResource +javax/swing/plaf/basic/BasicProgressBarUI$Handler +javax/swing/tree/TreeModel +javax/swing/table/TableCellRenderer +javax/swing/table/JTableHeader +javax/swing/event/TreeExpansionListener +javax/swing/table/AbstractTableModel +javax/swing/table/TableModel +javax/swing/table/DefaultTableCellRenderer +javax/swing/JTree +javax/swing/tree/TreeSelectionModel +javax/swing/tree/DefaultTreeCellRenderer +javax/swing/tree/TreeCellRenderer +javax/swing/table/TableCellEditor +javax/swing/CellEditor +javax/swing/JToolTip +javax/swing/table/TableColumn +javax/swing/table/DefaultTableColumnModel +javax/swing/table/TableColumnModel +javax/swing/table/DefaultTableModel +javax/swing/event/TableModelEvent +sun/swing/table/DefaultTableCellHeaderRenderer +javax/swing/plaf/basic/BasicTableHeaderUI +javax/swing/plaf/TableHeaderUI +javax/swing/plaf/basic/BasicTableHeaderUI$1 +javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler +javax/swing/DefaultCellEditor +javax/swing/tree/TreeCellEditor +javax/swing/AbstractCellEditor +javax/swing/plaf/basic/BasicTableUI +javax/swing/plaf/TableUI +javax/swing/plaf/basic/BasicTableUI$TableTransferHandler +javax/swing/plaf/basic/BasicTableUI$Handler +javax/swing/tree/DefaultTreeSelectionModel +javax/swing/tree/TreePath +javax/swing/plaf/metal/MetalTreeUI +javax/swing/plaf/basic/BasicTreeUI +javax/swing/plaf/TreeUI +javax/swing/plaf/basic/BasicTreeUI$Actions +javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler +javax/swing/plaf/metal/MetalTreeUI$LineListener +javax/swing/plaf/basic/BasicTreeUI$Handler +javax/swing/event/TreeModelListener +javax/swing/event/TreeSelectionListener +javax/swing/event/SwingPropertyChangeSupport +javax/swing/tree/VariableHeightLayoutCache +javax/swing/tree/AbstractLayoutCache +javax/swing/tree/RowMapper +javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler +javax/swing/tree/AbstractLayoutCache$NodeDimensions +javax/swing/JTree$TreeModelHandler +javax/swing/tree/VariableHeightLayoutCache$TreeStateNode +javax/swing/tree/DefaultMutableTreeNode +javax/swing/tree/MutableTreeNode +javax/swing/tree/DefaultMutableTreeNode$1 +javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration +javax/swing/event/TableColumnModelEvent +java/text/ParseException +java/text/NumberFormat$Field +javax/swing/event/UndoableEditListener +javax/swing/filechooser/FileFilter +javax/swing/tree/DefaultTreeModel +javax/swing/tree/DefaultTreeCellEditor +javax/swing/tree/DefaultTreeCellEditor$1 +javax/swing/tree/DefaultTreeCellEditor$DefaultTextField +javax/swing/DefaultCellEditor$1 +javax/swing/DefaultCellEditor$EditorDelegate +javax/swing/tree/DefaultTreeCellEditor$EditorContainer +javax/swing/JTree$TreeSelectionRedirector +javax/swing/event/TreeModelEvent +javax/swing/plaf/metal/MetalSplitPaneUI +javax/swing/plaf/basic/BasicSplitPaneUI +javax/swing/plaf/SplitPaneUI +javax/swing/plaf/basic/BasicSplitPaneDivider +javax/swing/plaf/basic/BasicBorders$SplitPaneBorder +javax/swing/plaf/metal/MetalSplitPaneDivider +javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout +javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler +javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder +javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager +javax/swing/plaf/basic/BasicSplitPaneUI$1 +javax/swing/plaf/basic/BasicSplitPaneUI$Handler +javax/swing/plaf/metal/MetalSplitPaneDivider$1 +javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler +javax/swing/plaf/metal/MetalSplitPaneDivider$2 +javax/swing/border/TitledBorder +javax/swing/plaf/basic/BasicTextAreaUI +java/util/Collections$UnmodifiableCollection$1 +java/io/InterruptedIOException +java/net/NoRouteToHostException +java/net/BindException +javax/swing/tree/PathPlaceHolder +javax/swing/event/TreeSelectionEvent +javax/swing/JList$3 +javax/swing/JList$ListSelectionHandler +javax/swing/JSlider +javax/swing/JSlider$ModelListener +javax/swing/plaf/metal/MetalSliderUI +javax/swing/plaf/basic/BasicSliderUI +javax/swing/plaf/SliderUI +javax/swing/plaf/basic/BasicSliderUI$Actions +javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon +javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon +javax/swing/plaf/basic/BasicSliderUI$TrackListener +javax/swing/plaf/basic/BasicSliderUI$Handler +javax/swing/plaf/basic/BasicSliderUI$ScrollListener +javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener +javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler +sun/java2d/HeadlessGraphicsEnvironment +java/util/Hashtable$KeySet +java/awt/FontFormatException +sun/java2d/SunGraphicsEnvironment$2 +sun/font/Type1Font$1 +java/nio/channels/FileChannel$MapMode +sun/nio/ch/FileChannelImpl$Unmapper +sun/nio/ch/Util$3 +java/nio/DirectByteBufferR +java/nio/charset/Charset$3 +sun/nio/cs/ext/ExtendedCharsets +sun/nio/cs/AbstractCharsetProvider +sun/nio/cs/ext/SJIS +sun/nio/cs/ext/SJIS$Decoder +sun/nio/cs/ext/DelegatableDecoder +sun/nio/cs/ext/JIS_X_0208_Decoder +sun/nio/cs/ext/DoubleByteDecoder +sun/nio/cs/ext/JIS_X_0201$Decoder +sun/nio/cs/SingleByteDecoder +java/lang/CharacterData00 +javax/swing/DefaultListModel +javax/swing/event/ListDataEvent +javax/sound/sampled/DataLine +javax/sound/sampled/Line +javax/sound/sampled/Line$Info +javax/sound/sampled/DataLine$Info +javax/sound/sampled/Control$Type +javax/sound/sampled/FloatControl$Type +javax/sound/sampled/LineUnavailableException +javax/sound/sampled/UnsupportedAudioFileException +javax/swing/JRadioButtonMenuItem +javax/swing/JMenuItem$AccessibleJMenuItem +javax/swing/AbstractButton$AccessibleAbstractButton +javax/accessibility/AccessibleAction +javax/accessibility/AccessibleValue +javax/accessibility/AccessibleText +javax/accessibility/AccessibleExtendedComponent +javax/accessibility/AccessibleComponent +javax/swing/JComponent$AccessibleJComponent +java/awt/Container$AccessibleAWTContainer +java/awt/Component$AccessibleAWTComponent +javax/accessibility/AccessibleRelationSet +javax/accessibility/AccessibleState +javax/accessibility/AccessibleBundle +javax/swing/plaf/basic/BasicCheckBoxMenuItemUI +javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon +javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem +javax/swing/plaf/basic/BasicRadioButtonMenuItemUI +javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon +sun/awt/image/ImageDecoder$1 +javax/swing/JTabbedPane$Page +java/net/DatagramSocket +java/net/MulticastSocket +java/net/DatagramPacket +sun/net/InetAddressCachePolicy +sun/net/InetAddressCachePolicy$1 +sun/net/InetAddressCachePolicy$2 +java/net/InetAddress$CacheEntry +java/net/PlainDatagramSocketImpl +java/net/DatagramSocketImpl +java/net/NetworkInterface +java/net/InterfaceAddress +java/text/Collator +java/text/spi/CollatorProvider +sun/text/resources/CollationData +sun/text/resources/CollationData_en +sun/util/EmptyListResourceBundle +java/text/RuleBasedCollator +java/text/CollationRules +java/text/RBCollationTables +java/text/RBTableBuilder +java/text/RBCollationTables$BuildAPI +sun/text/IntHashtable +sun/text/UCompactIntArray +sun/text/normalizer/NormalizerImpl +sun/text/normalizer/ICUData +sun/text/normalizer/NormalizerDataReader +sun/text/normalizer/ICUBinary$Authenticate +sun/text/normalizer/ICUBinary +sun/text/normalizer/NormalizerImpl$FCDTrieImpl +sun/text/normalizer/Trie$DataManipulate +sun/text/normalizer/NormalizerImpl$NormTrieImpl +sun/text/normalizer/NormalizerImpl$AuxTrieImpl +sun/text/normalizer/IntTrie +sun/text/normalizer/Trie +sun/text/normalizer/CharTrie +sun/text/normalizer/CharTrie$FriendAgent +sun/text/normalizer/UnicodeSet +sun/text/normalizer/UnicodeMatcher +sun/text/normalizer/NormalizerImpl$DecomposeArgs +java/text/MergeCollation +java/text/PatternEntry$Parser +java/text/PatternEntry +java/text/EntryPair +sun/text/ComposedCharIter +sun/text/normalizer/UTF16 +sun/net/www/protocol/http/Handler +java/io/ObjectInputStream$BlockDataInputStream +java/io/ObjectInputStream$PeekInputStream +java/io/ObjectInputStream$HandleTable +java/io/ObjectInputStream$ValidationList +java/io/Bits +java/io/ObjectStreamClass$Caches +java/io/ObjectStreamClass$WeakClassKey +java/io/ObjectStreamClass$EntryFuture +java/io/ObjectStreamClass$2 +sun/reflect/SerializationConstructorAccessorImpl +java/io/ObjectStreamClass$FieldReflectorKey +java/io/ObjectStreamClass$FieldReflector +java/io/ObjectStreamClass$1 +java/io/DataOutputStream +java/io/ObjectStreamClass$MemberSignature +java/io/ObjectStreamClass$3 +java/io/ObjectStreamClass$4 +java/io/ObjectStreamClass$5 +java/security/MessageDigest +java/security/MessageDigestSpi +sun/security/jca/GetInstance +sun/security/jca/Providers +sun/security/jca/ProviderList +sun/security/jca/ProviderConfig +sun/security/jca/ProviderList$3 +sun/security/jca/ProviderList$1 +sun/security/jca/ProviderList$2 +sun/security/jca/ProviderConfig$1 +sun/security/jca/ProviderConfig$3 +java/security/Provider$Service +java/security/Provider$UString +sun/security/provider/SHA +sun/security/provider/DigestBase +sun/security/jca/GetInstance$Instance +java/security/MessageDigest$Delegate +sun/security/provider/ByteArrayAccess +java/io/ObjectStreamClass$ClassDataSlot +java/io/ObjectInputStream$CallbackContext +sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl +java/security/SignatureException +java/security/InvalidKeyException +java/security/KeyException +java/security/Signature +java/security/SignatureSpi +java/io/ObjectOutputStream$BlockDataOutputStream +sun/security/provider/DSAPublicKey +java/security/interfaces/DSAPublicKey +java/security/interfaces/DSAKey +java/security/PublicKey +java/security/Key +sun/security/x509/X509Key +java/io/ObjectOutputStream$HandleTable +java/io/ObjectOutputStream$ReplaceTable +sun/security/x509/AlgorithmId +sun/security/util/DerEncoder +sun/security/util/BitArray +sun/security/util/DerOutputStream +sun/security/util/DerValue +java/math/BigInteger +java/security/interfaces/DSAParams +sun/security/util/DerInputStream +sun/security/util/DerInputBuffer +sun/security/util/ObjectIdentifier +java/security/AlgorithmParameters +java/security/AlgorithmParametersSpi +sun/security/provider/DSAParameters +sun/security/util/ByteArrayLexOrder +sun/security/util/ByteArrayTagOrder +sun/security/util/DerIndefLenConverter +java/io/InvalidClassException +java/io/ObjectStreamException +java/io/ObjectInputStream$GetFieldImpl +java/io/ObjectInputStream$GetField +sun/security/jca/ServiceId +sun/security/jca/ProviderList$ServiceList +sun/security/jca/ProviderList$ServiceList$1 +java/security/Signature$Delegate +java/security/interfaces/DSAPrivateKey +java/security/PrivateKey +sun/security/provider/DSA$SHA1withDSA +sun/security/provider/DSA +java/security/spec/DSAParameterSpec +java/security/spec/AlgorithmParameterSpec +java/math/MutableBigInteger +java/math/SignedMutableBigInteger +java/awt/EventQueue$1AWTInvocationLock +javax/swing/SystemEventQueueUtilities$RunnableCanvas +javax/swing/SystemEventQueueUtilities$RunnableCanvasGraphics +java/awt/Component$FlipBufferStrategy +java/awt/SentEvent +sun/awt/X11/XDestroyWindowEvent +sun/awt/X11/XDropTargetRegistry +sun/awt/X11/XEmbeddedFramePeer +sun/awt/X11/XDragAndDropProtocols +sun/awt/X11/XDropTargetContextPeer +sun/awt/dnd/SunDropTargetContextPeer +java/awt/dnd/peer/DropTargetContextPeer +sun/awt/X11/XDropTargetContextPeer$XDropTargetProtocolListenerImpl +sun/awt/X11/XDropTargetProtocolListener +sun/awt/X11/XDnDDragSourceProtocol +sun/awt/X11/XDragSourceProtocol +sun/awt/X11/MotifDnDDragSourceProtocol +sun/awt/X11/XDnDDropTargetProtocol +sun/awt/X11/XDropTargetProtocol +sun/awt/X11/MotifDnDDropTargetProtocol +sun/awt/X11/XDnDConstants +sun/awt/X11/MotifDnDConstants +javax/swing/JTable$2 +javax/swing/JTable$Resizable3 +javax/swing/JTable$Resizable2 +javax/swing/JTable$5 +javax/swing/event/AncestorEvent +sun/font/FontDesignMetrics$MetricsKey +java/awt/geom/Line2D$Float +java/awt/geom/Line2D +com/sun/java/swing/plaf/gtk/GTKLookAndFeel +javax/swing/plaf/synth/SynthLookAndFeel +javax/swing/plaf/synth/DefaultSynthStyleFactory +javax/swing/plaf/synth/SynthStyleFactory +sun/swing/BakedArrayList +javax/swing/plaf/synth/SynthLookAndFeel$Handler +javax/swing/plaf/synth/SynthDefaultLookup +com/sun/java/swing/plaf/gtk/GTKEngine +com/sun/java/swing/plaf/gtk/GTKDefaultEngine +com/sun/java/swing/plaf/gtk/GTKEngine$Settings +com/sun/java/swing/plaf/gtk/GTKStyleFactory +com/sun/java/swing/plaf/gtk/PangoFonts +sun/font/FontManager$FontConfigInfo +com/sun/java/swing/plaf/gtk/GTKLookAndFeel$WeakPCL +javax/swing/plaf/synth/Region +javax/swing/plaf/synth/SynthLookAndFeel$AATextListener +com/sun/java/swing/plaf/gtk/GTKNativeEngine +com/sun/java/swing/plaf/gtk/GTKNativeEngine$WidgetType +com/sun/java/swing/plaf/gtk/GTKRegion +com/sun/java/swing/plaf/gtk/GTKDefaultStyle +com/sun/java/swing/plaf/gtk/GTKStyle +com/sun/java/swing/plaf/gtk/GTKConstants +javax/swing/plaf/synth/SynthStyle +javax/swing/plaf/synth/SynthGraphicsUtils +com/sun/java/swing/plaf/gtk/GTKGraphicsUtils +com/sun/java/swing/plaf/gtk/GTKStyle$GTKStockIcon +sun/swing/plaf/synth/SynthIcon +com/sun/java/swing/plaf/gtk/GTKColorType +javax/swing/plaf/synth/ColorType +com/sun/java/swing/plaf/gtk/resources/gtk +com/sun/swing/internal/plaf/synth/resources/synth +com/sun/java/swing/plaf/gtk/GTKStyle$GTKLazyValue +com/sun/java/swing/plaf/gtk/GTKLookAndFeel$1FontLazyValue +com/sun/java/swing/plaf/gtk/GTKLookAndFeel$2 +com/sun/java/swing/plaf/gtk/GTKLookAndFeel$3 +javax/swing/plaf/synth/SynthPanelUI +javax/swing/plaf/synth/SynthConstants +javax/swing/plaf/synth/SynthContext +javax/swing/plaf/synth/SynthBorder +javax/swing/plaf/synth/SynthRootPaneUI +javax/swing/plaf/synth/SynthLabelUI +javax/swing/plaf/synth/SynthButtonUI +javax/swing/plaf/synth/SynthToggleButtonUI +javax/swing/plaf/basic/BasicBorders$FieldBorder +javax/swing/plaf/synth/SynthMenuBarUI +javax/swing/plaf/synth/DefaultMenuLayout +javax/swing/plaf/synth/SynthMenuUI +javax/swing/plaf/synth/SynthUI +com/sun/java/swing/plaf/gtk/GTKIconFactory +com/sun/java/swing/plaf/gtk/GTKIconFactory$MenuArrowIcon +com/sun/java/swing/plaf/gtk/GTKIconFactory$DelegatingIcon +com/sun/java/swing/plaf/gtk/GTKConstants$ArrowType +javax/swing/plaf/basic/BasicIconFactory +javax/swing/plaf/basic/BasicIconFactory$MenuItemCheckIcon +javax/swing/plaf/synth/SynthMenuItemUI +javax/swing/plaf/synth/SynthPopupMenuUI +javax/swing/plaf/synth/SynthSeparatorUI +javax/swing/plaf/synth/SynthScrollBarUI +javax/swing/plaf/synth/SynthArrowButton +javax/swing/plaf/synth/SynthArrowButton$SynthArrowButtonUI +javax/swing/plaf/synth/SynthComboBoxUI +javax/swing/plaf/synth/SynthComboPopup +javax/swing/plaf/synth/SynthListUI +javax/swing/plaf/synth/SynthListUI$SynthListCellRenderer +javax/swing/plaf/synth/SynthViewportUI +javax/swing/plaf/synth/SynthScrollPaneUI +javax/swing/plaf/synth/SynthScrollPaneUI$ViewportBorder +javax/swing/plaf/synth/SynthComboBoxUI$SynthComboBoxRenderer +javax/swing/plaf/synth/SynthComboBoxUI$SynthComboBoxEditor +javax/swing/plaf/synth/SynthTextFieldUI +javax/swing/plaf/synth/SynthToolBarUI +javax/swing/plaf/synth/SynthToolBarUI$SynthToolBarLayoutManager +com/sun/java/swing/plaf/gtk/GTKIconFactory$ToolBarHandleIcon +com/sun/java/swing/plaf/gtk/GTKConstants$Orientation +sun/awt/X11/XTranslateCoordinates +com/sun/java/swing/plaf/gtk/GTKPainter +javax/swing/plaf/synth/SynthPainter +javax/swing/plaf/synth/SynthPainter$1 +com/sun/java/swing/plaf/gtk/GTKConstants$PositionType +com/sun/java/swing/plaf/gtk/GTKConstants$ShadowType +java/io/ObjectInputStream$HandleTable$HandleList +sun/java2d/pipe/ShapeSpanIterator +sun/java2d/pipe/SpanIterator +sun/dc/path/PathConsumer +sun/dc/pr/PathStroker +sun/dc/pr/PathDasher +java/awt/geom/LineIterator +java/awt/geom/PathIterator +sun/applet/Main +sun/applet/AppletMessageHandler +sun/applet/resources/MsgAppletViewer +sun/applet/AppletSecurity +sun/awt/AWTSecurityManager +java/lang/SecurityManager +java/security/DomainCombiner +sun/applet/AppletSecurity$1 +java/lang/SecurityManager$1 +java/security/SecurityPermission +java/util/PropertyPermission +sun/applet/AppletViewer +java/applet/AppletContext +java/awt/print/Printable +sun/security/util/SecurityConstants +java/awt/AWTPermission +java/net/NetPermission +java/net/SocketPermission +javax/security/auth/AuthPermission +java/lang/Thread$1 +java/util/logging/LogManager$5 +java/util/logging/LogManager$6 +sun/applet/StdAppletViewerFactory +sun/applet/AppletViewerFactory +sun/applet/AppletViewer$UserActionListener +sun/applet/AppletViewerPanel +sun/applet/AppletPanel +java/applet/AppletStub +sun/misc/MessageUtils +sun/applet/AppletPanel$10 +java/security/Policy$1 +sun/security/provider/PolicyFile$1 +sun/security/provider/PolicyInfo +sun/security/provider/PolicyFile$3 +sun/security/util/PropertyExpander +sun/security/provider/PolicyParser +sun/security/util/PolicyUtil +sun/security/provider/PolicyParser$GrantEntry +sun/security/provider/PolicyParser$PermissionEntry +sun/security/provider/PolicyFile$PolicyEntry +sun/security/provider/PolicyFile$6 +sun/security/provider/PolicyFile$7 +sun/security/provider/SelfPermission +java/net/SocketPermissionCollection +java/util/PropertyPermissionCollection +sun/applet/AppletPanel$9 +sun/applet/AppletClassLoader +sun/applet/AppletClassLoader$4 +sun/applet/AppletThreadGroup +sun/applet/AppContextCreator +sun/applet/AppletPanel$1 +sun/awt/X11/XMenuBarPeer +java/awt/peer/MenuBarPeer +java/awt/peer/MenuComponentPeer +sun/awt/X11/XBaseMenuWindow +sun/awt/X11/XMenuPeer +java/awt/peer/MenuPeer +java/awt/peer/MenuItemPeer +sun/awt/X11/XMenuItemPeer +java/awt/MenuShortcut +sun/awt/X11/XMenuWindow +sun/awt/X11/XMenuBarPeer$1 +sun/awt/X11/XMenuItemPeer$TextMetrics +sun/awt/AppContext$3 +sun/awt/MostRecentThreadAppContext +sun/awt/X11/XMenuBarPeer$MappingData +sun/awt/X11/XBaseMenuWindow$MappingData +sun/applet/AppletViewer$1 +sun/applet/AppletViewer$1AppletEventListener +sun/applet/AppletListener +sun/applet/AppletEventMulticaster +sun/misc/Queue +sun/misc/QueueElement +sun/applet/AppletEvent +sun/applet/AppletClassLoader$1 +sun/awt/X11/XBaseMenuWindow$3 +java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent +sun/awt/CausedFocusEvent +sun/awt/X11/XWindow$1 +java/net/URLClassLoader$4 +sun/applet/AppletClassLoader$2 +javax/swing/JApplet +java/lang/ClassLoader$1 +sun/security/provider/PolicyFile$5 +java/security/PermissionsEnumerator +java/util/Collections$1 +sun/applet/AppletPanel$11 +sun/applet/AppletPanel$8 +sun/applet/AppletPanel$2 +sun/applet/AppletPanel$3 +sun/applet/AppletPanel$6 +javax/swing/BufferStrategyPaintManager$1 +# f3ac8b467e7f8c49 diff --git a/jdk/makefiles/CompileJavaClasses.gmk b/jdk/makefiles/CompileJavaClasses.gmk index 0b3e70dd914..619b5e8df33 100644 --- a/jdk/makefiles/CompileJavaClasses.gmk +++ b/jdk/makefiles/CompileJavaClasses.gmk @@ -149,6 +149,15 @@ ifneq ($(OPENJDK_TARGET_OS),macosx) sun/tools/attach/BsdVirtualMachine.java endif +ifneq ($(OPENJDK_TARGET_OS),aix) + EXFILES+=sun/nio/ch/AixAsynchronousChannelProvider.java \ + sun/nio/ch/AixPollPort.java \ + sun/nio/fs/AixFileStore.java \ + sun/nio/fs/AixFileSystem.java \ + sun/nio/fs/AixFileSystemProvider.java \ + sun/nio/fs/AixNativeDispatcher.java +endif + # Exclude BreakIterator classes that are just used in compile process to generate # data files and shouldn't go in the product EXFILES+=sun/text/resources/BreakIteratorRules.java \ diff --git a/jdk/makefiles/CompileLaunchers.gmk b/jdk/makefiles/CompileLaunchers.gmk index bf9e072a3fa..545bd36d832 100644 --- a/jdk/makefiles/CompileLaunchers.gmk +++ b/jdk/makefiles/CompileLaunchers.gmk @@ -106,6 +106,10 @@ define SetupLauncher $1_LDFLAGS_SUFFIX += -pthread endif + ifeq ($(OPENJDK_TARGET_OS), aix) + $1_LDFLAGS_SUFFIX += -L$(JDK_OUTPUTDIR)/objs -ljli_static + endif + ifeq ($(USE_EXTERNAL_LIBZ), true) $1_LDFLAGS_SUFFIX += -lz endif @@ -193,7 +197,7 @@ define SetupLauncher BUILD_LAUNCHERS += $$(BUILD_LAUNCHER_$1) - ifeq ($(OPENJDK_TARGET_OS),macosx) + ifneq (,$(filter $(OPENJDK_TARGET_OS), macosx aix)) $$(BUILD_LAUNCHER_$1) : $(JDK_OUTPUTDIR)/objs/libjli_static.a endif diff --git a/jdk/makefiles/CompileNativeLibraries.gmk b/jdk/makefiles/CompileNativeLibraries.gmk index 53f84762332..cf79fe34f40 100644 --- a/jdk/makefiles/CompileNativeLibraries.gmk +++ b/jdk/makefiles/CompileNativeLibraries.gmk @@ -95,6 +95,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFDLIBM,\ CFLAGS:=$(CFLAGS_JDKLIB) \ -I$(JDK_TOPDIR)/src/share/native/java/lang/fdlibm/include,\ CFLAGS_windows_debug:=-DLOGGING,\ + CFLAGS_aix:=-qfloat=nomaf,\ ARFLAGS:=$(ARFLAGS),\ OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libfdlibm,\ DEBUG_SYMBOLS:=$(DEBUG_ALL_BINARIES))) @@ -250,6 +251,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJAVA,\ LDFLAGS_SUFFIX_posix:=-ljvm -lverify, \ LDFLAGS_SUFFIX_solaris:=-lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM) -lc,\ LDFLAGS_SUFFIX_linux:=$(LIBDL) $(BUILD_LIBFDLIBM),\ + LDFLAGS_SUFFIX_aix:=$(LIBDL) $(BUILD_LIBFDLIBM) -lm,\ LDFLAGS_SUFFIX_macosx:=-L$(JDK_OUTPUTDIR)/objs/ -lfdlibm \ -framework CoreFoundation \ -framework Security -framework SystemConfiguration, \ @@ -552,7 +554,7 @@ LIBAWT_FILES:=\ debug_trace.c \ debug_util.c -ifneq (,$(filter $(OPENJDK_TARGET_OS), solaris linux)) +ifneq (,$(filter $(OPENJDK_TARGET_OS), solaris linux aix)) LIBAWT_FILES += awt_LoadLibrary.c initIDs.c img_colors.c endif @@ -723,6 +725,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBAWT,\ LDFLAGS_solaris:=-R/usr/dt/lib$(OPENJDK_TARGET_CPU_ISADIR) -R$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR),\ LDFLAGS_SUFFIX_linux:=-ljvm $(LIBM) $(LIBDL) -ljava,\ LDFLAGS_SUFFIX_solaris:=-ljvm $(LIBM) $(LIBDL) -ljava -lc,\ + LDFLAGS_SUFFIX_aix:=-ljvm $(LIBM) $(LIBDL) -ljava -lm,\ LDFLAGS_SUFFIX_macosx:=-lmlib_image -ljvm $(LIBM) \ -framework Cocoa \ -framework OpenGL \ @@ -968,6 +971,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBZIP,\ $(WIN_JAVA_LIB),\ LDFLAGS_SUFFIX_linux:=-ljvm -ljava $(LIBZ),\ LDFLAGS_SUFFIX_solaris:=-ljvm -ljava $(LIBZ) -lc,\ + LDFLAGS_SUFFIX_aix:=-ljvm -ljava $(LIBZ),\ LDFLAGS_SUFFIX_macosx:=$(LIBZ) -ljava -ljvm,\ VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\ RC_FLAGS:=$(RC_FLAGS)\ @@ -1033,6 +1037,9 @@ endif ifneq ($(OPENJDK_TARGET_OS),macosx) LIBATTACH_EXCLUDE_FILES+=BsdVirtualMachine.c endif +ifneq ($(OPENJDK_TARGET_OS),aix) + LIBATTACH_EXCLUDE_FILES+=AixVirtualMachine.c +endif $(eval $(call SetupNativeCompilation,BUILD_LIBATTACH,\ LIBRARY:=attach, \ @@ -1255,6 +1262,7 @@ BUILD_LIBRARIES += $(BUILD_LIBJSDT) LDFLAGS_SUFFIX_solaris:=-lawt -ljava -ljvm -lc,\ LDFLAGS_SUFFIX_macosx:=$(LIBM) -lawt -ljava -ljvm,\ LDFLAGS_SUFFIX_linux:=-lm -lawt -ljava -ljvm,\ + LDFLAGS_SUFFIX_aix:=-lm -lawt -ljava -ljvm,\ VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\ RC_FLAGS:=$(RC_FLAGS)\ -D "JDK_FNAME=lcms.dll" \ @@ -1388,6 +1396,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER,\ LDFLAGS_SUFFIX:=$(BUILD_LIBFONTMANAGER_FONTLIB),\ LDFLAGS_SUFFIX_linux:=-lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc,\ LDFLAGS_SUFFIX_solaris:=-lawt -lawt_xawt -lc $(LIBM) $(LIBCXX) -ljava -ljvm,\ + LDFLAGS_SUFFIX_aix:=-lawt -lawt_xawt $(LIBM) $(LIBCXX) -ljava -ljvm,\ LDFLAGS_SUFFIX_macosx:=-lawt $(LIBM) $(LIBCXX) -undefined dynamic_lookup \ -ljava -ljvm,\ LDFLAGS_SUFFIX_windows:=$(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \ @@ -1402,7 +1411,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER,\ $(BUILD_LIBFONTMANAGER) : $(BUILD_LIBAWT) -ifneq (,$(findstring $(OPENJDK_TARGET_OS),solaris macosx)) +ifneq (,$(findstring $(OPENJDK_TARGET_OS),solaris macosx aix)) $(BUILD_LIBFONTMANAGER) : $(BUILD_LIBAWT_XAWT) endif @@ -1539,6 +1548,7 @@ else # OPENJDK_TARGET_OS not windows $(call SET_SHARED_LIBRARY_ORIGIN),\ LDFLAGS_solaris:=-L$(OPENWIN_HOME)/sfw/lib$(OPENJDK_TARGET_CPU_ISADIR) -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR),\ LDFLAGS_SUFFIX_linux:=$(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX),\ + LDFLAGS_SUFFIX_aix:=$(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX),\ LDFLAGS_SUFFIX_solaris:=$(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX) -lXrender,\ LDFLAGS_SUFFIX_macosx:=-Xlinker -rpath -Xlinker @loader_path $(JAWT_LIBS) \ -framework Cocoa $(LDFLAGS_JDKLIB_SUFFIX),\ @@ -1622,6 +1632,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBINSTRUMENT,\ LDFLAGS_SUFFIX_macosx:=-liconv $(LIBZ),\ LDFLAGS_SUFFIX_solaris:=$(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL) -lc,\ LDFLAGS_SUFFIX_linux:=$(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL),\ + LDFLAGS_SUFFIX_aix:=$(LIBZ) -L$(JDK_OUTPUTDIR)/objs -ljli_static $(LIBDL),\ VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\ RC_FLAGS:=$(RC_FLAGS)\ -D "JDK_FNAME=instrument.dll" \ @@ -1630,7 +1641,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBINSTRUMENT,\ OBJECT_DIR:=$(LIBINSTRUMENT_DIR),\ DEBUG_SYMBOLS:=true)) -ifneq (,$(findstring $(OPENJDK_TARGET_OS), macosx windows)) +ifneq (,$(findstring $(OPENJDK_TARGET_OS), macosx windows aix)) $(BUILD_LIBINSTRUMENT) : $(JDK_OUTPUTDIR)/objs/$(LIBRARY_PREFIX)jli_static$(STATIC_LIBRARY_SUFFIX) else $(BUILD_LIBINSTRUMENT) : $(INSTALL_LIBRARIES_HERE)/jli/$(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX) @@ -1688,6 +1699,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBMANAGEMENT,\ LDFLAGS_solaris:=-lkstat,\ LDFLAGS_SUFFIX:=$(LDFLAGS_JDKLIB_SUFFIX),\ LDFLAGS_SUFFIX_windows:=jvm.lib psapi.lib $(WIN_JAVA_LIB) advapi32.lib,\ + LDFLAGS_SUFFIX_aix:=-lperfstat,\ VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\ RC_FLAGS:=$(RC_FLAGS)\ -D "JDK_FNAME=management.dll" \ @@ -1810,7 +1822,7 @@ endif LIBNET_CFLAGS:=$(foreach dir,$(LIBNET_SRC_DIRS),-I$(dir)) LIBNET_EXCLUDE_FILES:= -ifneq ($(OPENJDK_TARGET_OS),linux) +ifeq (,$(filter $(OPENJDK_TARGET_OS), linux aix)) LIBNET_EXCLUDE_FILES += linux_close.c endif @@ -1841,6 +1853,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBNET,\ LDFLAGS_SUFFIX_macosx:=-ljvm -ljava,\ LDFLAGS_SUFFIX_solaris:=-ljvm -ljava -lnsl -lsocket $(LIBDL) -lc ,\ LDFLAGS_SUFFIX_linux:=$(LIBDL) -ljvm -lpthread -ljava,\ + LDFLAGS_SUFFIX_aix:=$(LIBDL) -ljvm -ljava,\ LDFLAGS_SUFFIX_windows:=ws2_32.lib jvm.lib secur32.lib iphlpapi.lib \ delayimp.lib $(WIN_JAVA_LIB) advapi32.lib \ -DELAYLOAD:secur32.dll -DELAYLOAD:iphlpapi.dll, \ @@ -1961,6 +1974,21 @@ ifeq ($(OPENJDK_TARGET_OS), solaris) UnixNativeDispatcher.c endif +ifeq ($(OPENJDK_TARGET_OS), aix) + BUILD_LIBNIO_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS) + BUILD_LIBNIO_FILES += \ + AixPollPort.c \ + InheritedChannel.c \ + NativeThread.c \ + PollArrayWrapper.c \ + UnixAsynchronousServerSocketChannelImpl.c \ + UnixAsynchronousSocketChannelImpl.c \ + GnomeFileTypeDetector.c \ + UnixCopyFile.c \ + AixNativeDispatcher.c \ + UnixNativeDispatcher.c +endif + $(eval $(call SetupNativeCompilation,BUILD_LIBNIO,\ LIBRARY:=nio,\ OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\ @@ -1974,6 +2002,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBNIO,\ LDFLAGS:=$(LDFLAGS_JDKLIB) $(BUILD_LIBNIO_LDFLAGS) \ $(call SET_SHARED_LIBRARY_ORIGIN),\ LDFLAGS_SUFFIX_linux:=-ljava -lnet -lpthread $(LIBDL),\ + LDFLAGS_SUFFIX_aix:=-ljava -lnet $(LIBDL),\ LDFLAGS_SUFFIX_solaris:=-ljvm -lsocket -lposix4 $(LIBDL) \ -lsendfile -ljava -lnet -lc,\ LDFLAGS_SUFFIX_windows:=jvm.lib ws2_32.lib $(WIN_JAVA_LIB) \ @@ -1997,7 +2026,7 @@ $(BUILD_LIBNIO) : $(BUILD_LIBNET) ifeq ($(OPENJDK_TARGET_OS_API),posix) - ifneq ($(OPENJDK_TARGET_OS),macosx) + ifeq (,$(filter $(OPENJDK_TARGET_OS), macosx aix)) SCTP_WERROR := -Werror ifeq ($(OPENJDK_TARGET_CPU_ARCH), ppc) @@ -2127,6 +2156,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJLI,\ LDFLAGS_macosx:=-framework Cocoa -framework Security -framework ApplicationServices,\ LDFLAGS_SUFFIX_solaris:=$(LIBZ) $(LIBDL) -lc,\ LDFLAGS_SUFFIX_linux:=$(LIBZ) $(LIBDL) -lc -lpthread,\ + LDFLAGS_SUFFIX_aix:=$(LIBZ) $(LIBDL),\ LDFLAGS_SUFFIX_macosx:=$(LIBZ),\ LDFLAGS_SUFFIX_windows:=\ -export:JLI_Launch \ @@ -2192,6 +2222,21 @@ $(JDK_OUTPUTDIR)/objs/libjli_static.a : $(BUILD_LIBJLI_STATIC) $(call install-file) BUILD_LIBRARIES += $(JDK_OUTPUTDIR)/objs/libjli_static.a + +else ifeq ($(OPENJDK_TARGET_OS), aix) + $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC,\ + STATIC_LIBRARY:=jli_static,\ + OUTPUT_DIR:=$(JDK_OUTPUTDIR)/objs,\ + SRC:=$(BUILD_LIBJLI_SRC_DIRS),\ + INCLUDE_FILES:=$(BUILD_LIBJLI_FILES),\ + LANG:=C,\ + OPTIMIZATION:=HIGH, \ + CFLAGS:=$(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS),\ + ARFLAGS:=$(ARFLAGS),\ + OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjli_static)) + +BUILD_LIBRARIES += $(JDK_OUTPUTDIR)/objs/libjli_static.a + endif ########################################################################################## @@ -2413,6 +2458,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBAWT_HEADLESS,\ LDFLAGS_macosx:=$(call SET_SHARED_LIBRARY_ORIGIN).,\ REORDER:=$(LIBAWT_HEADLESS_REORDER), \ LDFLAGS_SUFFIX_linux:=-ljvm -lawt -lm $(LIBDL) -ljava,\ + LDFLAGS_SUFFIX_aix:=-ljvm -lawt -ljava,\ LDFLAGS_SUFFIX_solaris:=$(LIBDL) -ljvm -lawt -lm -ljava $(LIBCXX) -lc,\ LDFLAGS_SUFFIX_macosx:=-ljvm $(LIBCXX) -lawt $(LIBDL) -ljava \ -framework Accelerate \ @@ -2817,6 +2863,10 @@ ifeq ($(OPENJDK_TARGET_OS), linux) LIBJSOUND_CFLAGS += -DX_PLATFORM=X_LINUX endif # OPENJDK_TARGET_OS linux +ifeq ($(OPENJDK_TARGET_OS), aix) + LIBJSOUND_CFLAGS += -DX_PLATFORM=X_AIX +endif # OPENJDK_TARGET_OS linux + ifeq ($(OPENJDK_TARGET_OS), macosx) LIBJSOUND_LANG:=C++ LIBJSOUND_CFLAGS += -DX_PLATFORM=X_MACOSX \ diff --git a/jdk/makefiles/GendataFontConfig.gmk b/jdk/makefiles/GendataFontConfig.gmk index 08d30faeacb..de7e93295b8 100644 --- a/jdk/makefiles/GendataFontConfig.gmk +++ b/jdk/makefiles/GendataFontConfig.gmk @@ -66,6 +66,13 @@ ifeq ($(OPENJDK_TARGET_OS), macosx) GENDATA_FONT_CONFIG_SRC_PREFIX := macosx. endif +ifeq ($(OPENJDK_TARGET_OS), aix) + GENDATA_FONT_CONFIG_SRC_DIR := \ + $(JDK_TOPDIR)/src/solaris/classes/sun/awt/fontconfigs + GENDATA_FONT_CONFIG_SRC_FILES := fontconfig.properties + GENDATA_FONT_CONFIG_SRC_PREFIX := aix. +endif + ### $(GENDATA_FONT_CONFIG_DST)/%.src : \ diff --git a/jdk/makefiles/GensrcX11Wrappers.gmk b/jdk/makefiles/GensrcX11Wrappers.gmk index 934ddbed32b..060217733b4 100644 --- a/jdk/makefiles/GensrcX11Wrappers.gmk +++ b/jdk/makefiles/GensrcX11Wrappers.gmk @@ -88,7 +88,7 @@ ifneq ($(COMPILE_TYPE),cross) # use -m32/-m64 only if the compiler supports it ifeq ($(COMPILER_SUPPORTS_TARGET_BITS_FLAG),true) - MEMORY_MODEL_FLAG="-m$*" + MEMORY_MODEL_FLAG="$(COMPILER_TARGET_BITS_FLAG)$*" endif # Compile the C code into an executable. diff --git a/jdk/makefiles/mapfiles/libattach/mapfile-aix b/jdk/makefiles/mapfiles/libattach/mapfile-aix new file mode 100644 index 00000000000..4c02da01fce --- /dev/null +++ b/jdk/makefiles/mapfiles/libattach/mapfile-aix @@ -0,0 +1,39 @@ +# +# Copyright (c) 2005, 2012, 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_tools_attach_AixVirtualMachine_socket + Java_sun_tools_attach_AixVirtualMachine_connect + Java_sun_tools_attach_AixVirtualMachine_sendQuitTo + Java_sun_tools_attach_AixVirtualMachine_checkPermissions + Java_sun_tools_attach_AixVirtualMachine_close + Java_sun_tools_attach_AixVirtualMachine_read + Java_sun_tools_attach_AixVirtualMachine_write + local: + *; +}; diff --git a/jdk/makefiles/mapfiles/libnio/mapfile-aix b/jdk/makefiles/mapfiles/libnio/mapfile-aix new file mode 100644 index 00000000000..72f54cf93d7 --- /dev/null +++ b/jdk/makefiles/mapfiles/libnio/mapfile-aix @@ -0,0 +1,33 @@ +# +# Copyright (c) 2001, 2012, 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. +# + +# TODO: implement for AIX + +SUNWprivate_1.1 { + global: + + local: + *; +}; From 5829e8952b66567e0e8bfed42904e684d1a5b0dd Mon Sep 17 00:00:00 2001 From: Volker Simonis Date: Fri, 8 Nov 2013 18:17:06 +0100 Subject: [PATCH 005/158] 8028066: PPC64: 8025715 changes broke AIX build after sync Fixes the build on AIX again after the latest sync from jdk8 Reviewed-by: kvn --- jdk/makefiles/CompileJavaClasses.gmk | 10 +++++++++- jdk/makefiles/CompileLaunchers.gmk | 6 +++--- jdk/makefiles/gendata/GendataFontConfig.gmk | 4 ++-- jdk/makefiles/lib/Awt2dLibraries.gmk | 9 +++++++-- jdk/makefiles/lib/CoreLibraries.gmk | 19 ++++++++++++++++++- jdk/makefiles/lib/NetworkingLibraries.gmk | 3 ++- jdk/makefiles/lib/NioLibraries.gmk | 19 ++++++++++++++++++- jdk/makefiles/lib/ServiceabilityLibraries.gmk | 14 ++++++++++++-- jdk/makefiles/lib/SoundLibraries.gmk | 4 ++-- 9 files changed, 73 insertions(+), 15 deletions(-) diff --git a/jdk/makefiles/CompileJavaClasses.gmk b/jdk/makefiles/CompileJavaClasses.gmk index ddefbd8043e..bf3d42fb817 100644 --- a/jdk/makefiles/CompileJavaClasses.gmk +++ b/jdk/makefiles/CompileJavaClasses.gmk @@ -152,7 +152,9 @@ ifneq ($(OPENJDK_TARGET_OS),aix) sun/nio/fs/AixFileStore.java \ sun/nio/fs/AixFileSystem.java \ sun/nio/fs/AixFileSystemProvider.java \ - sun/nio/fs/AixNativeDispatcher.java + sun/nio/fs/AixNativeDispatcher.java \ + sun/tools/attach/AixAttachProvider.java \ + sun/tools/attach/AixVirtualMachine.java endif # Exclude BreakIterator classes that are just used in compile process to generate @@ -303,6 +305,11 @@ SECURITY_PKGS := \ sun/security/pkcs11 \ # +AIX_SRC_DIRS := +ifeq ($(OPENJDK_TARGET_OS),aix) + AIX_SRC_DIRS += $(JDK_TOPDIR)/src/aix/classes +endif + # The exception handling of swing beaninfo # These resources violates the convention of having code and resources together under # $(JDK_TOPDIR)/src/.../classes directories @@ -327,6 +334,7 @@ $(eval $(call SetupJavaCompilation,BUILD_JDK,\ SRC:=$(JDK_TOPDIR)/src/share/classes \ $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/classes \ $(MACOSX_SRC_DIRS) \ + $(AIX_SRC_DIRS) \ $(JDK_OUTPUTDIR)/gensrc \ $(JDK_OUTPUTDIR)/gensrc_no_srczip \ $(CLOSED_SRC_DIRS),\ diff --git a/jdk/makefiles/CompileLaunchers.gmk b/jdk/makefiles/CompileLaunchers.gmk index 33e8bdd6b20..bda75a32b04 100644 --- a/jdk/makefiles/CompileLaunchers.gmk +++ b/jdk/makefiles/CompileLaunchers.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 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 @@ -626,7 +626,7 @@ BUILD_JSPAWNHELPER_DST_DIR := $(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR) LINK_JSPAWNHELPER_OBJECTS := $(JDK_OUTPUTDIR)/objs/libjava/childproc.o LINK_JSPAWNHELPER_FLAGS := -ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris), ) +ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris aix), ) BUILD_JSPAWNHELPER := 1 endif @@ -635,7 +635,7 @@ ifeq ($(OPENJDK_TARGET_OS), macosx) endif ifeq ($(OPENJDK_TARGET_CPU_BITS), 64) - LINK_JSPAWNHELPER_FLAGS += -m64 + LINK_JSPAWNHELPER_FLAGS += $(COMPILER_TARGET_BITS_FLAG)64 endif ifeq ($(BUILD_JSPAWNHELPER), 1) diff --git a/jdk/makefiles/gendata/GendataFontConfig.gmk b/jdk/makefiles/gendata/GendataFontConfig.gmk index b75e37fbf37..35b502d1c36 100644 --- a/jdk/makefiles/gendata/GendataFontConfig.gmk +++ b/jdk/makefiles/gendata/GendataFontConfig.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 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 @@ -68,7 +68,7 @@ endif ifeq ($(OPENJDK_TARGET_OS), aix) GENDATA_FONT_CONFIG_SRC_DIR := \ - $(JDK_TOPDIR)/src/solaris/classes/sun/awt/fontconfigs + $(JDK_TOPDIR)/src/aix/classes/sun/awt/fontconfigs GENDATA_FONT_CONFIG_SRC_FILES := fontconfig.properties GENDATA_FONT_CONFIG_SRC_PREFIX := aix. endif diff --git a/jdk/makefiles/lib/Awt2dLibraries.gmk b/jdk/makefiles/lib/Awt2dLibraries.gmk index c58187a2340..8c786cc5a7c 100644 --- a/jdk/makefiles/lib/Awt2dLibraries.gmk +++ b/jdk/makefiles/lib/Awt2dLibraries.gmk @@ -305,7 +305,7 @@ LIBAWT_FILES := \ debug_trace.c \ debug_util.c -ifneq (, $(filter $(OPENJDK_TARGET_OS), solaris linux)) +ifneq (, $(filter $(OPENJDK_TARGET_OS), solaris linux aix)) LIBAWT_FILES += awt_LoadLibrary.c initIDs.c img_colors.c endif @@ -473,6 +473,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBAWT, \ LDFLAGS_solaris := -R/usr/dt/lib$(OPENJDK_TARGET_CPU_ISADIR) -R$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR), \ LDFLAGS_SUFFIX_linux := -ljvm $(LIBM) $(LIBDL) -ljava, \ LDFLAGS_SUFFIX_solaris := -ljvm $(LIBM) $(LIBDL) -ljava -lc, \ + LDFLAGS_SUFFIX_aix :=-ljvm $(LIBM) $(LIBDL) -ljava -lm,\ LDFLAGS_SUFFIX_macosx := -lmlib_image -ljvm $(LIBM) \ -framework Cocoa \ -framework OpenGL \ @@ -681,6 +682,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBLCMS, \ LDFLAGS_SUFFIX_solaris := -lawt -ljava -ljvm -lc, \ LDFLAGS_SUFFIX_macosx := $(LIBM) -lawt -ljava -ljvm, \ LDFLAGS_SUFFIX_linux := -lm -lawt -ljava -ljvm, \ + LDFLAGS_SUFFIX_aix := -lm -lawt -ljava -ljvm,\ VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ RC_FLAGS := $(RC_FLAGS) \ -D "JDK_FNAME=lcms.dll" \ @@ -819,6 +821,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \ LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \ LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \ LDFLAGS_SUFFIX_solaris := -lawt -lawt_xawt -lc $(LIBM) $(LIBCXX) -ljava -ljvm, \ + LDFLAGS_SUFFIX_aix := -lawt -lawt_xawt $(LIBM) $(LIBCXX) -ljava -ljvm,\ LDFLAGS_SUFFIX_macosx := -lawt $(LIBM) $(LIBCXX) -undefined dynamic_lookup \ -ljava -ljvm, \ LDFLAGS_SUFFIX_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \ @@ -833,7 +836,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \ $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT) -ifeq ($(OPENJDK_TARGET_OS), solaris) +ifneq (, $(findstring $(OPENJDK_TARGET_OS), solaris aix)) $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT_XAWT) endif @@ -968,6 +971,7 @@ else # OPENJDK_TARGET_OS not windows $(call SET_SHARED_LIBRARY_ORIGIN), \ LDFLAGS_solaris := -L$(OPENWIN_HOME)/sfw/lib$(OPENJDK_TARGET_CPU_ISADIR) -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR), \ LDFLAGS_SUFFIX_linux := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \ + LDFLAGS_SUFFIX_aix := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX),\ LDFLAGS_SUFFIX_solaris := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX) -lXrender, \ LDFLAGS_SUFFIX_macosx := -Xlinker -rpath -Xlinker @loader_path $(JAWT_LIBS) \ -framework Cocoa $(LDFLAGS_JDKLIB_SUFFIX), \ @@ -1168,6 +1172,7 @@ ifeq ($(BUILD_HEADLESS), true) LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_ORIGIN)., \ REORDER := $(LIBAWT_HEADLESS_REORDER), \ LDFLAGS_SUFFIX_linux := -ljvm -lawt -lm $(LIBDL) -ljava, \ + LDFLAGS_SUFFIX_aix := -ljvm -lawt -ljava,\ LDFLAGS_SUFFIX_solaris := $(LIBDL) -ljvm -lawt -lm -ljava $(LIBCXX) -lc, \ OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libawt_headless, \ DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) diff --git a/jdk/makefiles/lib/CoreLibraries.gmk b/jdk/makefiles/lib/CoreLibraries.gmk index f83f918ea48..86070a07c85 100644 --- a/jdk/makefiles/lib/CoreLibraries.gmk +++ b/jdk/makefiles/lib/CoreLibraries.gmk @@ -269,7 +269,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBZIP, \ $(WIN_JAVA_LIB), \ LDFLAGS_SUFFIX_linux := -ljvm -ljava $(LIBZ), \ LDFLAGS_SUFFIX_solaris := -ljvm -ljava $(LIBZ) -lc, \ - LDFLAGS_SUFFIX_aix: = -ljvm -ljava $(LIBZ),\ + LDFLAGS_SUFFIX_aix := -ljvm -ljava $(LIBZ),\ LDFLAGS_SUFFIX_macosx := $(LIBZ) -ljava -ljvm, \ VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ RC_FLAGS := $(RC_FLAGS) \ @@ -418,6 +418,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJLI, \ LDFLAGS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \ LDFLAGS_SUFFIX_solaris := $(LIBZ) $(LIBDL) -lc, \ LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread, \ + LDFLAGS_SUFFIX_aix := $(LIBZ) $(LIBDL),\ LDFLAGS_SUFFIX_macosx := $(LIBZ), \ LDFLAGS_SUFFIX_windows := \ -export:JLI_Launch \ @@ -483,6 +484,22 @@ else ifeq ($(OPENJDK_TARGET_OS), macosx) $(call install-file) BUILD_LIBRARIES += $(JDK_OUTPUTDIR)/objs/libjli_static.a + +else ifeq ($(OPENJDK_TARGET_OS), aix) + # AIX also requires a static libjli because the compiler doesn't support '-rpath' + $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC,\ + STATIC_LIBRARY:=jli_static,\ + OUTPUT_DIR:=$(JDK_OUTPUTDIR)/objs,\ + SRC:=$(BUILD_LIBJLI_SRC_DIRS),\ + INCLUDE_FILES:=$(BUILD_LIBJLI_FILES),\ + LANG:=C,\ + OPTIMIZATION:=HIGH, \ + CFLAGS:=$(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS),\ + ARFLAGS:=$(ARFLAGS),\ + OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjli_static)) + + BUILD_LIBRARIES += $(JDK_OUTPUTDIR)/objs/libjli_static.a + endif ########################################################################################## diff --git a/jdk/makefiles/lib/NetworkingLibraries.gmk b/jdk/makefiles/lib/NetworkingLibraries.gmk index 546565af91b..e597f1b373f 100644 --- a/jdk/makefiles/lib/NetworkingLibraries.gmk +++ b/jdk/makefiles/lib/NetworkingLibraries.gmk @@ -37,7 +37,7 @@ endif LIBNET_CFLAGS := $(foreach dir, $(LIBNET_SRC_DIRS), -I$(dir)) LIBNET_EXCLUDE_FILES := -ifneq ($(OPENJDK_TARGET_OS), linux) +ifeq (, $(filter $(OPENJDK_TARGET_OS), linux aix)) LIBNET_EXCLUDE_FILES += linux_close.c endif @@ -68,6 +68,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBNET, \ LDFLAGS_SUFFIX_macosx := -ljvm -ljava, \ LDFLAGS_SUFFIX_solaris := -ljvm -ljava -lnsl -lsocket $(LIBDL) -lc, \ LDFLAGS_SUFFIX_linux := $(LIBDL) -ljvm -lpthread -ljava, \ + LDFLAGS_SUFFIX_aix := $(LIBDL) -ljvm -ljava,\ LDFLAGS_SUFFIX_windows := ws2_32.lib jvm.lib secur32.lib iphlpapi.lib \ delayimp.lib $(WIN_JAVA_LIB) advapi32.lib \ -DELAYLOAD:secur32.dll -DELAYLOAD:iphlpapi.dll, \ diff --git a/jdk/makefiles/lib/NioLibraries.gmk b/jdk/makefiles/lib/NioLibraries.gmk index afab1c9c29c..26b0f251f41 100644 --- a/jdk/makefiles/lib/NioLibraries.gmk +++ b/jdk/makefiles/lib/NioLibraries.gmk @@ -112,6 +112,22 @@ ifeq ($(OPENJDK_TARGET_OS), solaris) UnixNativeDispatcher.c endif +ifeq ($(OPENJDK_TARGET_OS), aix) + BUILD_LIBNIO_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS) + BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/aix/native/sun/nio/ch + BUILD_LIBNIO_FILES += \ + AixPollPort.c \ + InheritedChannel.c \ + NativeThread.c \ + PollArrayWrapper.c \ + UnixAsynchronousServerSocketChannelImpl.c \ + UnixAsynchronousSocketChannelImpl.c \ + GnomeFileTypeDetector.c \ + UnixCopyFile.c \ + AixNativeDispatcher.c \ + UnixNativeDispatcher.c +endif + $(eval $(call SetupNativeCompilation,BUILD_LIBNIO, \ LIBRARY := nio, \ OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ @@ -125,6 +141,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBNIO, \ LDFLAGS := $(LDFLAGS_JDKLIB) $(BUILD_LIBNIO_LDFLAGS) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ LDFLAGS_SUFFIX_linux := -ljava -lnet -lpthread $(LIBDL), \ + LDFLAGS_SUFFIX_aix := -ljava -lnet $(LIBDL),\ LDFLAGS_SUFFIX_solaris := -ljvm -lsocket -lposix4 $(LIBDL) \ -lsendfile -ljava -lnet -lc, \ LDFLAGS_SUFFIX_windows := jvm.lib ws2_32.lib $(WIN_JAVA_LIB) \ @@ -148,7 +165,7 @@ $(BUILD_LIBNIO): $(BUILD_LIBNET) ifeq ($(OPENJDK_TARGET_OS_API), posix) - ifneq ($(OPENJDK_TARGET_OS), macosx) + ifeq (, $(filter $(OPENJDK_TARGET_OS), macosx aix)) # Suppress unused parameters required by exported JNI functions. SCTP_WERROR := -Werror -Wno-error=unused-parameter diff --git a/jdk/makefiles/lib/ServiceabilityLibraries.gmk b/jdk/makefiles/lib/ServiceabilityLibraries.gmk index 0cc5ad96a88..54662e6bb31 100644 --- a/jdk/makefiles/lib/ServiceabilityLibraries.gmk +++ b/jdk/makefiles/lib/ServiceabilityLibraries.gmk @@ -33,11 +33,19 @@ endif ifneq ($(OPENJDK_TARGET_OS), macosx) LIBATTACH_EXCLUDE_FILES += BsdVirtualMachine.c endif +ifneq ($(OPENJDK_TARGET_OS),aix) + LIBATTACH_EXCLUDE_FILES += AixVirtualMachine.c +endif + +LIBATTACH_SRC_FILES := $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/tools/attach +ifeq ($(OPENJDK_TARGET_OS),aix) + LIBATTACH_SRC_FILES += $(JDK_TOPDIR)/src/aix/native/sun/tools/attach +endif $(eval $(call SetupNativeCompilation,BUILD_LIBATTACH, \ LIBRARY := attach, \ OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ - SRC := $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/tools/attach, \ + SRC := $(LIBATTACH_SRC_FILES), \ EXCLUDE_FILES := $(LIBATTACH_EXCLUDE_FILES), \ LANG := C, \ OPTIMIZATION := LOW, \ @@ -255,6 +263,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBINSTRUMENT, \ LDFLAGS_SUFFIX_macosx := -liconv $(LIBZ), \ LDFLAGS_SUFFIX_solaris := $(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL) -lc, \ LDFLAGS_SUFFIX_linux := $(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL), \ + LDFLAGS_SUFFIX_aix := $(LIBZ) -L$(JDK_OUTPUTDIR)/objs -ljli_static $(LIBDL),\ VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ RC_FLAGS := $(RC_FLAGS) \ -D "JDK_FNAME=instrument.dll" \ @@ -263,7 +272,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBINSTRUMENT, \ OBJECT_DIR := $(LIBINSTRUMENT_DIR), \ DEBUG_SYMBOLS := true)) -ifneq (, $(findstring $(OPENJDK_TARGET_OS), macosx windows)) +ifneq (, $(findstring $(OPENJDK_TARGET_OS), macosx windows aix)) $(BUILD_LIBINSTRUMENT): $(JDK_OUTPUTDIR)/objs/$(LIBRARY_PREFIX)jli_static$(STATIC_LIBRARY_SUFFIX) else $(BUILD_LIBINSTRUMENT): $(INSTALL_LIBRARIES_HERE)/jli/$(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX) @@ -321,6 +330,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBMANAGEMENT, \ LDFLAGS_solaris := -lkstat, \ LDFLAGS_SUFFIX := $(LDFLAGS_JDKLIB_SUFFIX), \ LDFLAGS_SUFFIX_windows := jvm.lib psapi.lib $(WIN_JAVA_LIB) advapi32.lib, \ + LDFLAGS_SUFFIX_aix := -lperfstat,\ VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \ RC_FLAGS := $(RC_FLAGS) \ -D "JDK_FNAME=management.dll" \ diff --git a/jdk/makefiles/lib/SoundLibraries.gmk b/jdk/makefiles/lib/SoundLibraries.gmk index 5e0ad7ab3f6..3e3f7e3c732 100644 --- a/jdk/makefiles/lib/SoundLibraries.gmk +++ b/jdk/makefiles/lib/SoundLibraries.gmk @@ -72,8 +72,8 @@ ifeq ($(OPENJDK_TARGET_OS), linux) endif # OPENJDK_TARGET_OS linux ifeq ($(OPENJDK_TARGET_OS), aix) - LIBJSOUND_CFLAGS += -DX_PLATFORM=X_AIX -endif # OPENJDK_TARGET_OS linux + LIBJSOUND_CFLAGS += -DX_PLATFORM=X_AIX +endif # OPENJDK_TARGET_OS aix ifeq ($(OPENJDK_TARGET_OS), macosx) LIBJSOUND_LANG := C++ From 780a13433f8043fc890902c41d3e5abcb2330ba6 Mon Sep 17 00:00:00 2001 From: Jonathan Lu Date: Tue, 26 Nov 2013 16:40:31 +0100 Subject: [PATCH 006/158] 8024854: PPC64: Basic changes and files to build the class library on AIX Co-authored-by: Steve Poole Co-authored-by: Thomas Stuefe Reviewed-by: alanb, prr, sla, chegar, michaelm, mullan, art --- jdk/makefiles/CompileDemos.gmk | 19 +- jdk/makefiles/lib/Awt2dLibraries.gmk | 8 + jdk/makefiles/lib/NetworkingLibraries.gmk | 6 +- jdk/makefiles/lib/NioLibraries.gmk | 4 +- jdk/makefiles/lib/ServiceabilityLibraries.gmk | 5 + .../awt/fontconfigs/aix.fontconfig.properties | 77 +++ .../ch/AixAsynchronousChannelProvider.java | 91 +++ .../aix/classes/sun/nio/ch/AixPollPort.java | 536 ++++++++++++++++++ .../aix/classes/sun/nio/fs/AixFileStore.java | 106 ++++ .../aix/classes/sun/nio/fs/AixFileSystem.java | 94 +++ .../sun/nio/fs/AixFileSystemProvider.java | 52 ++ .../sun/nio/fs/AixNativeDispatcher.java | 56 ++ .../sun/tools/attach/AixAttachProvider.java | 88 +++ .../sun/tools/attach/AixVirtualMachine.java | 317 +++++++++++ jdk/src/aix/native/java/net/aix_close.c | 427 ++++++++++++++ jdk/src/aix/native/sun/nio/ch/AixPollPort.c | 175 ++++++ .../native/sun/nio/fs/AixNativeDispatcher.c | 227 ++++++++ .../sun/tools/attach/AixVirtualMachine.c | 283 +++++++++ jdk/src/aix/porting/porting_aix.c | 86 +++ jdk/src/aix/porting/porting_aix.h | 59 ++ jdk/src/share/bin/jli_util.h | 3 + jdk/src/share/lib/security/java.security-aix | 497 ++++++++++++++++ jdk/src/share/native/common/check_code.c | 35 ++ jdk/src/share/native/java/net/net_util.c | 4 +- jdk/src/share/native/java/net/net_util.h | 2 +- .../share/native/sun/awt/medialib/mlib_sys.c | 7 +- .../native/sun/awt/medialib/mlib_types.h | 4 +- .../native/sun/font/layout/KernTable.cpp | 14 +- .../native/sun/security/ec/impl/ecc_impl.h | 7 + jdk/src/solaris/back/exec_md.c | 6 +- jdk/src/solaris/bin/java_md_solinux.c | 31 +- jdk/src/solaris/bin/java_md_solinux.h | 20 +- .../classes/java/lang/UNIXProcess.java.aix | 419 ++++++++++++++ .../DefaultAsynchronousChannelProvider.java | 2 + jdk/src/solaris/classes/sun/nio/ch/Port.java | 10 + .../sun/nio/fs/DefaultFileSystemProvider.java | 2 + jdk/src/solaris/demo/jvmti/hprof/hprof_md.c | 18 +- jdk/src/solaris/native/common/jdk_util_md.h | 4 + jdk/src/solaris/native/java/io/io_util_md.c | 2 +- .../solaris/native/java/lang/UNIXProcess_md.c | 8 +- jdk/src/solaris/native/java/lang/childproc.c | 9 + .../native/java/net/NetworkInterface.c | 170 +++++- .../solaris/native/java/net/PlainSocketImpl.c | 2 +- jdk/src/solaris/native/java/net/net_util_md.c | 40 +- jdk/src/solaris/native/java/net/net_util_md.h | 12 +- .../solaris/native/java/util/TimeZone_md.c | 14 +- .../solaris/native/sun/awt/awt_LoadLibrary.c | 4 + jdk/src/solaris/native/sun/awt/fontpath.c | 39 +- .../native/sun/java2d/x11/X11SurfaceData.c | 12 +- .../native/sun/java2d/x11/XRBackendNative.c | 8 +- .../sun/management/OperatingSystemImpl.c | 22 +- jdk/src/solaris/native/sun/nio/ch/Net.c | 82 ++- .../native/sun/nio/fs/UnixNativeDispatcher.c | 29 +- .../native/sun/security/pkcs11/j2secmod_md.c | 6 +- jdk/src/windows/native/java/net/net_util_md.c | 4 +- jdk/test/java/lang/ProcessBuilder/Basic.java | 75 ++- .../java/lang/ProcessBuilder/DestroyTest.java | 3 + 57 files changed, 4239 insertions(+), 103 deletions(-) create mode 100644 jdk/src/aix/classes/sun/awt/fontconfigs/aix.fontconfig.properties create mode 100644 jdk/src/aix/classes/sun/nio/ch/AixAsynchronousChannelProvider.java create mode 100644 jdk/src/aix/classes/sun/nio/ch/AixPollPort.java create mode 100644 jdk/src/aix/classes/sun/nio/fs/AixFileStore.java create mode 100644 jdk/src/aix/classes/sun/nio/fs/AixFileSystem.java create mode 100644 jdk/src/aix/classes/sun/nio/fs/AixFileSystemProvider.java create mode 100644 jdk/src/aix/classes/sun/nio/fs/AixNativeDispatcher.java create mode 100644 jdk/src/aix/classes/sun/tools/attach/AixAttachProvider.java create mode 100644 jdk/src/aix/classes/sun/tools/attach/AixVirtualMachine.java create mode 100644 jdk/src/aix/native/java/net/aix_close.c create mode 100644 jdk/src/aix/native/sun/nio/ch/AixPollPort.c create mode 100644 jdk/src/aix/native/sun/nio/fs/AixNativeDispatcher.c create mode 100644 jdk/src/aix/native/sun/tools/attach/AixVirtualMachine.c create mode 100644 jdk/src/aix/porting/porting_aix.c create mode 100644 jdk/src/aix/porting/porting_aix.h create mode 100644 jdk/src/share/lib/security/java.security-aix create mode 100644 jdk/src/solaris/classes/java/lang/UNIXProcess.java.aix diff --git a/jdk/makefiles/CompileDemos.gmk b/jdk/makefiles/CompileDemos.gmk index beef573275c..2b6c059969d 100644 --- a/jdk/makefiles/CompileDemos.gmk +++ b/jdk/makefiles/CompileDemos.gmk @@ -210,9 +210,12 @@ define SetupJVMTIDemo # Param 5 = libs for posix # Param 6 = libs for windows # Param 7 = libs for solaris + # Param 8 = libs for linux + # Param 9 = extra directories with required sources BUILD_DEMO_JVMTI_$1_EXTRA_SRC := \ $$(wildcard $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/demo/jvmti/$1) \ - $$(wildcard $$(addprefix $(JDK_TOPDIR)/src/share/demo/jvmti/, $2)) + $$(wildcard $$(addprefix $(JDK_TOPDIR)/src/share/demo/jvmti/, $2)) \ + $9 BUILD_DEMO_JVMTI_$1_EXTRA_SRC_EXCLUDE := \ $$(wildcard $$(addprefix $(JDK_TOPDIR)/src/share/demo/jvmti/, $2)/README.txt) \ $$(wildcard $$(addprefix $(JDK_TOPDIR)/src/share/demo/jvmti/, $2)/sample.makefile.txt) @@ -304,9 +307,19 @@ $(eval $(call SetupJVMTIDemo,compiledMethodLoad, agent_util)) $(eval $(call SetupJVMTIDemo,gctest, agent_util)) $(eval $(call SetupJVMTIDemo,heapTracker, agent_util java_crw_demo)) $(eval $(call SetupJVMTIDemo,heapViewer, agent_util)) + +# On AIX, hprof requires 'dladdr' from src/aix/porting/porting_aix.cpp +BUILD_LIBHPROF_AIX_EXTRA_SRC := +BUILD_LIBHPROF_AIX_EXTRA_CFLAGS := +ifeq ($(OPENJDK_TARGET_OS), aix) + BUILD_LIBHPROF_AIX_EXTRA_SRC += $(JDK_TOPDIR)/src/aix/porting + BUILD_LIBHPROF_AIX_EXTRA_CFLAGS += -I$(JDK_TOPDIR)/src/aix/porting +endif + $(eval $(call SetupJVMTIDemo,hprof, java_crw_demo, \ - -I$(JDK_TOPDIR)/src/share/npt -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt, C, \ - -ldl, ws2_32.lib winmm.lib, -lsocket -lnsl, -lpthread)) + -I$(JDK_TOPDIR)/src/share/npt -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt \ + $(BUILD_LIBHPROF_AIX_EXTRA_CFLAGS), C, \ + -ldl, ws2_32.lib winmm.lib, -lsocket -lnsl, -lpthread, $(BUILD_LIBHPROF_AIX_EXTRA_SRC))) $(eval $(call SetupJVMTIDemo,minst, agent_util java_crw_demo)) $(eval $(call SetupJVMTIDemo,mtrace, agent_util java_crw_demo)) diff --git a/jdk/makefiles/lib/Awt2dLibraries.gmk b/jdk/makefiles/lib/Awt2dLibraries.gmk index 8c786cc5a7c..a18ed24c694 100644 --- a/jdk/makefiles/lib/Awt2dLibraries.gmk +++ b/jdk/makefiles/lib/Awt2dLibraries.gmk @@ -231,6 +231,10 @@ else ifneq ($(OPENJDK_TARGET_OS), macosx) $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d/x11 endif +ifeq ($(OPENJDK_TARGET_OS), aix) + LIBAWT_DIRS += $(JDK_TOPDIR)/src/aix/porting +endif + LIBAWT_CFLAGS += -D__MEDIALIB_OLD_NAMES -D__USE_J2D_NAMES \ $(X_CFLAGS) \ $(foreach dir, $(LIBAWT_DIRS), -I$(dir)) @@ -309,6 +313,10 @@ ifneq (, $(filter $(OPENJDK_TARGET_OS), solaris linux aix)) LIBAWT_FILES += awt_LoadLibrary.c initIDs.c img_colors.c endif +ifeq ($(OPENJDK_TARGET_OS), aix) + LIBAWT_FILES += porting_aix.c +endif + ifeq ($(OPENJDK_TARGET_OS), macosx) LIBAWT_FILES += awt_LoadLibrary.c img_colors.c LIBAWT_CFLAGS += -F/System/Library/Frameworks/JavaVM.framework/Frameworks diff --git a/jdk/makefiles/lib/NetworkingLibraries.gmk b/jdk/makefiles/lib/NetworkingLibraries.gmk index e597f1b373f..84bf25a3ee8 100644 --- a/jdk/makefiles/lib/NetworkingLibraries.gmk +++ b/jdk/makefiles/lib/NetworkingLibraries.gmk @@ -37,7 +37,7 @@ endif LIBNET_CFLAGS := $(foreach dir, $(LIBNET_SRC_DIRS), -I$(dir)) LIBNET_EXCLUDE_FILES := -ifeq (, $(filter $(OPENJDK_TARGET_OS), linux aix)) +ifneq ($(OPENJDK_TARGET_OS), linux) LIBNET_EXCLUDE_FILES += linux_close.c endif @@ -45,6 +45,10 @@ ifneq ($(OPENJDK_TARGET_OS), macosx) LIBNET_EXCLUDE_FILES += bsd_close.c endif +ifeq ($(OPENJDK_TARGET_OS), aix) + LIBNET_SRC_DIRS += $(JDK_TOPDIR)/src/aix/native/java/net/ +endif + ifeq ($(OPENJDK_TARGET_OS), windows) LIBNET_EXCLUDE_FILES += PlainSocketImpl.c PlainDatagramSocketImpl.c SdpSupport.c else diff --git a/jdk/makefiles/lib/NioLibraries.gmk b/jdk/makefiles/lib/NioLibraries.gmk index 26b0f251f41..c111b75e849 100644 --- a/jdk/makefiles/lib/NioLibraries.gmk +++ b/jdk/makefiles/lib/NioLibraries.gmk @@ -114,7 +114,9 @@ endif ifeq ($(OPENJDK_TARGET_OS), aix) BUILD_LIBNIO_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS) - BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/aix/native/sun/nio/ch + BUILD_LIBNIO_SRC += \ + $(JDK_TOPDIR)/src/aix/native/sun/nio/ch \ + $(JDK_TOPDIR)/src/aix/native/sun/nio/fs BUILD_LIBNIO_FILES += \ AixPollPort.c \ InheritedChannel.c \ diff --git a/jdk/makefiles/lib/ServiceabilityLibraries.gmk b/jdk/makefiles/lib/ServiceabilityLibraries.gmk index c6a23339af3..9b7233768f0 100644 --- a/jdk/makefiles/lib/ServiceabilityLibraries.gmk +++ b/jdk/makefiles/lib/ServiceabilityLibraries.gmk @@ -344,6 +344,11 @@ BUILD_LIBHPROF_CFLAGS := -I$(JDK_TOPDIR)/src/share/demo/jvmti/hprof \ -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt \ -I$(JDK_TOPDIR)/src/share/demo/jvmti/java_crw_demo +ifeq ($(OPENJDK_TARGET_OS), aix) + BUILD_LIBHPROF_SRC += $(JDK_TOPDIR)/src/aix/porting + BUILD_LIBHPROF_CFLAGS += -I$(JDK_TOPDIR)/src/aix/porting +endif + BUILD_LIBHPROF_LDFLAGS := LIBHPROF_OPTIMIZATION := HIGHEST diff --git a/jdk/src/aix/classes/sun/awt/fontconfigs/aix.fontconfig.properties b/jdk/src/aix/classes/sun/awt/fontconfigs/aix.fontconfig.properties new file mode 100644 index 00000000000..29e7c7d9510 --- /dev/null +++ b/jdk/src/aix/classes/sun/awt/fontconfigs/aix.fontconfig.properties @@ -0,0 +1,77 @@ +# +# +# Copyright 2013 SAP AG. 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. +# + +# Minimal version for AIX using the standard Latin Type1 Fonts from the +# package X11.fnt.iso_T1. These fonts are installed by default into +# "/usr/lpp/X11/lib/X11/fonts/Type1" and sym-linked to "/usr/lib/X11/fonts/Type1" + +# Version + +version=1 + +# Component Font Mappings + +dialog.plain.latin-1=-*-helvetica-medium-r-normal--*-%d-100-100-p-*-iso10646-1 +dialog.bold.latin-1=-*-helvetica-bold-r-normal--*-%d-100-100-p-*-iso10646-1 +dialog.italic.latin-1=-*-helvetica-medium-o-normal--*-%d-100-100-p-*-iso10646-1 +dialog.bolditalic.latin-1=-*-helvetica-bold-o-normal--*-%d-100-100-p-*-iso10646-1 + +dialoginput.plain.latin-1=-*-courier-medium-r-normal--*-%d-100-100-m-*-iso10646-1 +dialoginput.bold.latin-1=-*-courier-bold-r-normal--*-%d-100-100-m-*-iso10646-1 +dialoginput.italic.latin-1=-*-courier-medium-o-normal--*-%d-100-100-m-*-iso10646-1 +dialoginput.bolditalic.latin-1=-*-courier-bold-o-normal--*-%d-100-100-m-*-iso10646-1 + +sansserif.plain.latin-1=-*-helvetica-medium-r-normal--*-%d-100-100-p-*-iso10646-1 +sansserif.bold.latin-1=-*-helvetica-bold-r-normal--*-%d-100-100-p-*-iso10646-1 +sansserif.italic.latin-1=-*-helvetica-medium-o-normal--*-%d-100-100-p-*-iso10646-1 +sansserif.bolditalic.latin-1=-*-helvetica-bold-o-normal--*-%d-100-100-p-*-iso10646-1 + +serif.plain.latin-1=-*-times new roman-medium-r-normal--*-%d-100-100-p-*-iso10646-1 +serif.bold.latin-1=-*-times new roman-bold-r-normal--*-%d-100-100-p-*-iso10646-1 +serif.italic.latin-1=-*-times new roman-medium-i-normal--*-%d-100-100-p-*-iso10646-1 +serif.bolditalic.latin-1=-*-times new roman-bold-i-normal--*-%d-100-100-p-*-iso10646-1 + +monospaced.plain.latin-1=-*-courier-medium-r-normal--*-%d-100-100-m-*-iso10646-1 +monospaced.bold.latin-1=-*-courier-bold-r-normal--*-%d-100-100-m-*-iso10646-1 +monospaced.italic.latin-1=-*-courier-medium-o-normal--*-%d-100-100-m-*-iso10646-1 +monospaced.bolditalic.latin-1=-*-courier-bold-o-normal--*-%d-100-100-m-*-iso10646-1 + +# Search Sequences + +sequence.allfonts=latin-1 + +filename.-*-courier-medium-r-normal--*-%d-100-100-m-*-iso10646-1=/usr/lpp/X11/lib/X11/fonts/Type1/cour.pfa +filename.-*-courier-bold-r-normal--*-%d-100-100-m-*-iso10646-1=/usr/lpp/X11/lib/X11/fonts/Type1/courb.pfa +filename.-*-courier-medium-o-normal--*-%d-100-100-m-*-iso10646-1=/usr/lpp/X11/lib/X11/fonts/Type1/couri.pfa +filename.-*-courier-bold-o-normal--*-%d-100-100-m-*-iso10646-1=/usr/lpp/X11/lib/X11/fonts/Type1/courbi.pfa +filename.-*-helvetica-medium-r-normal--*-%d-100-100-p-*-iso10646-1=/usr/lpp/X11/lib/X11/fonts/Type1/helv.pfa +filename.-*-helvetica-bold-r-normal--*-%d-100-100-p-*-iso10646-1=/usr/lpp/X11/lib/X11/fonts/Type1/helvb.pfa +filename.-*-helvetica-medium-o-normal--*-%d-100-100-p-*-iso10646-1=/usr/lpp/X11/lib/X11/fonts/Type1/helvi.pfa +filename.-*-helvetica-bold-o-normal--*-%d-100-100-p-*-iso10646-1=/usr/lpp/X11/lib/X11/fonts/Type1/helvbi.pfa +filename.-*-times_new_roman-medium-r-normal--*-%d-100-100-p-*-iso10646-1=/usr/lpp/X11/lib/X11/fonts/Type1/tnr.pfa +filename.-*-times_new_roman-bold-r-normal--*-%d-100-100-p-*-iso10646-1=/usr/lpp/X11/lib/X11/fonts/Type1/tnrb.pfa +filename.-*-times_new_roman-medium-i-normal--*-%d-100-100-p-*-iso10646-1=/usr/lpp/X11/lib/X11/fonts/Type1/tnri.pfa +filename.-*-times_new_roman-bold-i-normal--*-%d-100-100-p-*-iso10646-1=/usr/lpp/X11/lib/X11/fonts/Type1/tnrbi.pfa diff --git a/jdk/src/aix/classes/sun/nio/ch/AixAsynchronousChannelProvider.java b/jdk/src/aix/classes/sun/nio/ch/AixAsynchronousChannelProvider.java new file mode 100644 index 00000000000..4c2c3d317bf --- /dev/null +++ b/jdk/src/aix/classes/sun/nio/ch/AixAsynchronousChannelProvider.java @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright 2012 SAP AG. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package sun.nio.ch; + +import java.nio.channels.*; +import java.nio.channels.spi.AsynchronousChannelProvider; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.ThreadFactory; +import java.io.IOException; + +public class AixAsynchronousChannelProvider + extends AsynchronousChannelProvider +{ + private static volatile AixPollPort defaultPort; + + private AixPollPort defaultEventPort() throws IOException { + if (defaultPort == null) { + synchronized (AixAsynchronousChannelProvider.class) { + if (defaultPort == null) { + defaultPort = new AixPollPort(this, ThreadPool.getDefault()).start(); + } + } + } + return defaultPort; + } + + public AixAsynchronousChannelProvider() { + } + + @Override + public AsynchronousChannelGroup openAsynchronousChannelGroup(int nThreads, ThreadFactory factory) + throws IOException + { + return new AixPollPort(this, ThreadPool.create(nThreads, factory)).start(); + } + + @Override + public AsynchronousChannelGroup openAsynchronousChannelGroup(ExecutorService executor, int initialSize) + throws IOException + { + return new AixPollPort(this, ThreadPool.wrap(executor, initialSize)).start(); + } + + private Port toPort(AsynchronousChannelGroup group) throws IOException { + if (group == null) { + return defaultEventPort(); + } else { + if (!(group instanceof AixPollPort)) + throw new IllegalChannelGroupException(); + return (Port)group; + } + } + + @Override + public AsynchronousServerSocketChannel openAsynchronousServerSocketChannel(AsynchronousChannelGroup group) + throws IOException + { + return new UnixAsynchronousServerSocketChannelImpl(toPort(group)); + } + + @Override + public AsynchronousSocketChannel openAsynchronousSocketChannel(AsynchronousChannelGroup group) + throws IOException + { + return new UnixAsynchronousSocketChannelImpl(toPort(group)); + } +} diff --git a/jdk/src/aix/classes/sun/nio/ch/AixPollPort.java b/jdk/src/aix/classes/sun/nio/ch/AixPollPort.java new file mode 100644 index 00000000000..82c101434df --- /dev/null +++ b/jdk/src/aix/classes/sun/nio/ch/AixPollPort.java @@ -0,0 +1,536 @@ +/* + * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright 2012 SAP AG. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package sun.nio.ch; + +import java.nio.channels.spi.AsynchronousChannelProvider; +import java.io.IOException; +import java.util.HashSet; +import java.util.Iterator; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.RejectedExecutionException; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.locks.ReentrantLock; +import sun.misc.Unsafe; + +/** + * AsynchronousChannelGroup implementation based on the AIX pollset framework. + */ +final class AixPollPort + extends Port +{ + private static final Unsafe unsafe = Unsafe.getUnsafe(); + + static { + IOUtil.load(); + init(); + } + + /** + * struct pollfd { + * int fd; + * short events; + * short revents; + * } + */ + private static final int SIZEOF_POLLFD = eventSize(); + private static final int OFFSETOF_EVENTS = eventsOffset(); + private static final int OFFSETOF_REVENTS = reventsOffset(); + private static final int OFFSETOF_FD = fdOffset(); + + // opcodes + private static final int PS_ADD = 0x0; + private static final int PS_MOD = 0x1; + private static final int PS_DELETE = 0x2; + + // maximum number of events to poll at a time + private static final int MAX_POLL_EVENTS = 512; + + // pollset ID + private final int pollset; + + // true if port is closed + private boolean closed; + + // socket pair used for wakeup + private final int sp[]; + + // socket pair used to indicate pending pollsetCtl calls + // Background info: pollsetCtl blocks when another thread is in a pollsetPoll call. + private final int ctlSp[]; + + // number of wakeups pending + private final AtomicInteger wakeupCount = new AtomicInteger(); + + // address of the poll array passed to pollset_poll + private final long address; + + // encapsulates an event for a channel + static class Event { + final PollableChannel channel; + final int events; + + Event(PollableChannel channel, int events) { + this.channel = channel; + this.events = events; + } + + PollableChannel channel() { return channel; } + int events() { return events; } + } + + // queue of events for cases that a polling thread dequeues more than one + // event + private final ArrayBlockingQueue queue; + private final Event NEED_TO_POLL = new Event(null, 0); + private final Event EXECUTE_TASK_OR_SHUTDOWN = new Event(null, 0); + + // encapsulates a pollset control event for a file descriptor + static class ControlEvent { + final int fd; + final int events; + final boolean removeOnly; + int error = 0; + + ControlEvent(int fd, int events, boolean removeOnly) { + this.fd = fd; + this.events = events; + this.removeOnly = removeOnly; + } + + int fd() { return fd; } + int events() { return events; } + boolean removeOnly() { return removeOnly; } + int error() { return error; } + void setError(int error) { this.error = error; } + } + + // queue of control events that need to be processed + // (this object is also used for synchronization) + private final HashSet controlQueue = new HashSet(); + + // lock used to check whether a poll operation is ongoing + private final ReentrantLock controlLock = new ReentrantLock(); + + AixPollPort(AsynchronousChannelProvider provider, ThreadPool pool) + throws IOException + { + super(provider, pool); + + // open pollset + this.pollset = pollsetCreate(); + + // create socket pair for wakeup mechanism + int[] sv = new int[2]; + try { + socketpair(sv); + // register one end with pollset + pollsetCtl(pollset, PS_ADD, sv[0], POLLIN); + } catch (IOException x) { + pollsetDestroy(pollset); + throw x; + } + this.sp = sv; + + // create socket pair for pollset control mechanism + sv = new int[2]; + try { + socketpair(sv); + // register one end with pollset + pollsetCtl(pollset, PS_ADD, sv[0], POLLIN); + } catch (IOException x) { + pollsetDestroy(pollset); + throw x; + } + this.ctlSp = sv; + + // allocate the poll array + this.address = allocatePollArray(MAX_POLL_EVENTS); + + // create the queue and offer the special event to ensure that the first + // threads polls + this.queue = new ArrayBlockingQueue(MAX_POLL_EVENTS); + this.queue.offer(NEED_TO_POLL); + } + + AixPollPort start() { + startThreads(new EventHandlerTask()); + return this; + } + + /** + * Release all resources + */ + private void implClose() { + synchronized (this) { + if (closed) + return; + closed = true; + } + freePollArray(address); + close0(sp[0]); + close0(sp[1]); + close0(ctlSp[0]); + close0(ctlSp[1]); + pollsetDestroy(pollset); + } + + private void wakeup() { + if (wakeupCount.incrementAndGet() == 1) { + // write byte to socketpair to force wakeup + try { + interrupt(sp[1]); + } catch (IOException x) { + throw new AssertionError(x); + } + } + } + + @Override + void executeOnHandlerTask(Runnable task) { + synchronized (this) { + if (closed) + throw new RejectedExecutionException(); + offerTask(task); + wakeup(); + } + } + + @Override + void shutdownHandlerTasks() { + /* + * If no tasks are running then just release resources; otherwise + * write to the one end of the socketpair to wakeup any polling threads. + */ + int nThreads = threadCount(); + if (nThreads == 0) { + implClose(); + } else { + // send interrupt to each thread + while (nThreads-- > 0) { + wakeup(); + } + } + } + + // invoke by clients to register a file descriptor + @Override + void startPoll(int fd, int events) { + queueControlEvent(new ControlEvent(fd, events, false)); + } + + // Callback method for implementations that need special handling when fd is removed + @Override + protected void preUnregister(int fd) { + queueControlEvent(new ControlEvent(fd, 0, true)); + } + + // Add control event into queue and wait for completion. + // In case the control lock is free, this method also tries to apply the control change directly. + private void queueControlEvent(ControlEvent ev) { + // pollsetCtl blocks when a poll call is ongoing. This is very probable. + // Therefore we let the polling thread do the pollsetCtl call. + synchronized (controlQueue) { + controlQueue.add(ev); + // write byte to socketpair to force wakeup + try { + interrupt(ctlSp[1]); + } catch (IOException x) { + throw new AssertionError(x); + } + do { + // Directly empty queue if no poll call is ongoing. + if (controlLock.tryLock()) { + try { + processControlQueue(); + } finally { + controlLock.unlock(); + } + } else { + try { + // Do not starve in case the polling thread returned before + // we could write to ctlSp[1] but the polling thread did not + // release the control lock until we checked. Therefore, use + // a timed wait for the time being. + controlQueue.wait(100); + } catch (InterruptedException e) { + // ignore exception and try again + } + } + } while (controlQueue.contains(ev)); + } + if (ev.error() != 0) { + throw new AssertionError(); + } + } + + // Process all events currently stored in the control queue. + private void processControlQueue() { + synchronized (controlQueue) { + // On Aix it is only possible to set the event + // bits on the first call of pollsetCtl. Later + // calls only add bits, but cannot remove them. + // Therefore, we always remove the file + // descriptor ignoring the error and then add it. + Iterator iter = controlQueue.iterator(); + while (iter.hasNext()) { + ControlEvent ev = iter.next(); + pollsetCtl(pollset, PS_DELETE, ev.fd(), 0); + if (!ev.removeOnly()) { + ev.setError(pollsetCtl(pollset, PS_MOD, ev.fd(), ev.events())); + } + iter.remove(); + } + controlQueue.notifyAll(); + } + } + + /* + * Task to process events from pollset and dispatch to the channel's + * onEvent handler. + * + * Events are retreived from pollset in batch and offered to a BlockingQueue + * where they are consumed by handler threads. A special "NEED_TO_POLL" + * event is used to signal one consumer to re-poll when all events have + * been consumed. + */ + private class EventHandlerTask implements Runnable { + private Event poll() throws IOException { + try { + for (;;) { + int n; + controlLock.lock(); + try { + n = pollsetPoll(pollset, address, MAX_POLL_EVENTS); + } finally { + controlLock.unlock(); + } + /* + * 'n' events have been read. Here we map them to their + * corresponding channel in batch and queue n-1 so that + * they can be handled by other handler threads. The last + * event is handled by this thread (and so is not queued). + */ + fdToChannelLock.readLock().lock(); + try { + while (n-- > 0) { + long eventAddress = getEvent(address, n); + int fd = getDescriptor(eventAddress); + + // To emulate one shot semantic we need to remove + // the file descriptor here. + pollsetCtl(pollset, PS_DELETE, fd, 0); + + // wakeup + if (fd == sp[0]) { + if (wakeupCount.decrementAndGet() == 0) { + // no more wakeups so drain pipe + drain1(sp[0]); + } + + // This is the only file descriptor without + // one shot semantic => register it again. + pollsetCtl(pollset, PS_ADD, sp[0], POLLIN); + + // queue special event if there are more events + // to handle. + if (n > 0) { + queue.offer(EXECUTE_TASK_OR_SHUTDOWN); + continue; + } + return EXECUTE_TASK_OR_SHUTDOWN; + } + + // wakeup to process control event + if (fd == ctlSp[0]) { + synchronized (controlQueue) { + drain1(ctlSp[0]); + // This file descriptor does not have + // one shot semantic => register it again. + pollsetCtl(pollset, PS_ADD, ctlSp[0], POLLIN); + processControlQueue(); + } + continue; + } + + PollableChannel channel = fdToChannel.get(fd); + if (channel != null) { + int events = getRevents(eventAddress); + Event ev = new Event(channel, events); + + // n-1 events are queued; This thread handles + // the last one except for the wakeup + if (n > 0) { + queue.offer(ev); + } else { + return ev; + } + } + } + } finally { + fdToChannelLock.readLock().unlock(); + } + } + } finally { + // to ensure that some thread will poll when all events have + // been consumed + queue.offer(NEED_TO_POLL); + } + } + + public void run() { + Invoker.GroupAndInvokeCount myGroupAndInvokeCount = + Invoker.getGroupAndInvokeCount(); + final boolean isPooledThread = (myGroupAndInvokeCount != null); + boolean replaceMe = false; + Event ev; + try { + for (;;) { + // reset invoke count + if (isPooledThread) + myGroupAndInvokeCount.resetInvokeCount(); + + try { + replaceMe = false; + ev = queue.take(); + + // no events and this thread has been "selected" to + // poll for more. + if (ev == NEED_TO_POLL) { + try { + ev = poll(); + } catch (IOException x) { + x.printStackTrace(); + return; + } + } + } catch (InterruptedException x) { + continue; + } + + // handle wakeup to execute task or shutdown + if (ev == EXECUTE_TASK_OR_SHUTDOWN) { + Runnable task = pollTask(); + if (task == null) { + // shutdown request + return; + } + // run task (may throw error/exception) + replaceMe = true; + task.run(); + continue; + } + + // process event + try { + ev.channel().onEvent(ev.events(), isPooledThread); + } catch (Error x) { + replaceMe = true; throw x; + } catch (RuntimeException x) { + replaceMe = true; throw x; + } + } + } finally { + // last handler to exit when shutdown releases resources + int remaining = threadExit(this, replaceMe); + if (remaining == 0 && isShutdown()) { + implClose(); + } + } + } + } + + /** + * Allocates a poll array to handle up to {@code count} events. + */ + private static long allocatePollArray(int count) { + return unsafe.allocateMemory(count * SIZEOF_POLLFD); + } + + /** + * Free a poll array + */ + private static void freePollArray(long address) { + unsafe.freeMemory(address); + } + + /** + * Returns event[i]; + */ + private static long getEvent(long address, int i) { + return address + (SIZEOF_POLLFD*i); + } + + /** + * Returns event->fd + */ + private static int getDescriptor(long eventAddress) { + return unsafe.getInt(eventAddress + OFFSETOF_FD); + } + + /** + * Returns event->events + */ + private static int getEvents(long eventAddress) { + return unsafe.getChar(eventAddress + OFFSETOF_EVENTS); + } + + /** + * Returns event->revents + */ + private static int getRevents(long eventAddress) { + return unsafe.getChar(eventAddress + OFFSETOF_REVENTS); + } + + // -- Native methods -- + + private static native void init(); + + private static native int eventSize(); + + private static native int eventsOffset(); + + private static native int reventsOffset(); + + private static native int fdOffset(); + + private static native int pollsetCreate() throws IOException; + + private static native int pollsetCtl(int pollset, int opcode, int fd, int events); + + private static native int pollsetPoll(int pollset, long pollAddress, int numfds) + throws IOException; + + private static native void pollsetDestroy(int pollset); + + private static native void socketpair(int[] sv) throws IOException; + + private static native void interrupt(int fd) throws IOException; + + private static native void drain1(int fd) throws IOException; + + private static native void close0(int fd); +} diff --git a/jdk/src/aix/classes/sun/nio/fs/AixFileStore.java b/jdk/src/aix/classes/sun/nio/fs/AixFileStore.java new file mode 100644 index 00000000000..c38cb46a760 --- /dev/null +++ b/jdk/src/aix/classes/sun/nio/fs/AixFileStore.java @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright 2013 SAP AG. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package sun.nio.fs; + +import java.nio.file.attribute.*; +import java.util.*; +import java.io.IOException; + +/** + * AIX implementation of FileStore + */ + +class AixFileStore + extends UnixFileStore +{ + + AixFileStore(UnixPath file) throws IOException { + super(file); + } + + AixFileStore(UnixFileSystem fs, UnixMountEntry entry) throws IOException { + super(fs, entry); + } + + /** + * Finds, and returns, the mount entry for the file system where the file + * resides. + */ + @Override + UnixMountEntry findMountEntry() throws IOException { + AixFileSystem fs = (AixFileSystem)file().getFileSystem(); + + // step 1: get realpath + UnixPath path = null; + try { + byte[] rp = UnixNativeDispatcher.realpath(file()); + path = new UnixPath(fs, rp); + } catch (UnixException x) { + x.rethrowAsIOException(file()); + } + + // step 2: find mount point + UnixPath parent = path.getParent(); + while (parent != null) { + UnixFileAttributes attrs = null; + try { + attrs = UnixFileAttributes.get(parent, true); + } catch (UnixException x) { + x.rethrowAsIOException(parent); + } + if (attrs.dev() != dev()) + break; + path = parent; + parent = parent.getParent(); + } + + // step 3: lookup mounted file systems + byte[] dir = path.asByteArray(); + for (UnixMountEntry entry: fs.getMountEntries()) { + if (Arrays.equals(dir, entry.dir())) + return entry; + } + + throw new IOException("Mount point not found"); + } + + // returns true if extended attributes enabled on file system where given + // file resides, returns false if disabled or unable to determine. + private boolean isExtendedAttributesEnabled(UnixPath path) { + return false; + } + + @Override + public boolean supportsFileAttributeView(Class type) { + return super.supportsFileAttributeView(type); + } + + @Override + public boolean supportsFileAttributeView(String name) { + return super.supportsFileAttributeView(name); + } +} diff --git a/jdk/src/aix/classes/sun/nio/fs/AixFileSystem.java b/jdk/src/aix/classes/sun/nio/fs/AixFileSystem.java new file mode 100644 index 00000000000..1169dd31606 --- /dev/null +++ b/jdk/src/aix/classes/sun/nio/fs/AixFileSystem.java @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright 2013 SAP AG. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package sun.nio.fs; + +import java.nio.file.*; +import java.nio.file.attribute.*; +import java.io.IOException; +import java.util.*; +import static sun.nio.fs.AixNativeDispatcher.*; + +/** + * AIX implementation of FileSystem + */ + +class AixFileSystem extends UnixFileSystem { + + AixFileSystem(UnixFileSystemProvider provider, String dir) { + super(provider, dir); + } + + @Override + public WatchService newWatchService() + throws IOException + { + return new PollingWatchService(); + } + + // lazy initialization of the list of supported attribute views + private static class SupportedFileFileAttributeViewsHolder { + static final Set supportedFileAttributeViews = + supportedFileAttributeViews(); + private static Set supportedFileAttributeViews() { + Set result = new HashSet(); + result.addAll(UnixFileSystem.standardFileAttributeViews()); + return Collections.unmodifiableSet(result); + } + } + + @Override + public Set supportedFileAttributeViews() { + return SupportedFileFileAttributeViewsHolder.supportedFileAttributeViews; + } + + @Override + void copyNonPosixAttributes(int ofd, int nfd) { + // TODO: Implement if needed. + } + + /** + * Returns object to iterate over the mount entries returned by mntctl + */ + @Override + Iterable getMountEntries() { + UnixMountEntry[] entries = null; + try { + entries = getmntctl(); + } catch (UnixException x) { + // nothing we can do + } + if (entries == null) { + return Collections.emptyList(); + } + return Arrays.asList(entries); + } + + @Override + FileStore getFileStore(UnixMountEntry entry) throws IOException { + return new AixFileStore(this, entry); + } +} diff --git a/jdk/src/aix/classes/sun/nio/fs/AixFileSystemProvider.java b/jdk/src/aix/classes/sun/nio/fs/AixFileSystemProvider.java new file mode 100644 index 00000000000..5718d87b387 --- /dev/null +++ b/jdk/src/aix/classes/sun/nio/fs/AixFileSystemProvider.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright 2013 SAP AG. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package sun.nio.fs; + +import java.io.IOException; + +/** + * AIX implementation of FileSystemProvider + */ + +public class AixFileSystemProvider extends UnixFileSystemProvider { + public AixFileSystemProvider() { + super(); + } + + @Override + AixFileSystem newFileSystem(String dir) { + return new AixFileSystem(this, dir); + } + + /** + * @see sun.nio.fs.UnixFileSystemProvider#getFileStore(sun.nio.fs.UnixPath) + */ + @Override + AixFileStore getFileStore(UnixPath path) throws IOException { + return new AixFileStore(path); + } +} diff --git a/jdk/src/aix/classes/sun/nio/fs/AixNativeDispatcher.java b/jdk/src/aix/classes/sun/nio/fs/AixNativeDispatcher.java new file mode 100644 index 00000000000..d46d80fc97f --- /dev/null +++ b/jdk/src/aix/classes/sun/nio/fs/AixNativeDispatcher.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright 2013 SAP AG. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package sun.nio.fs; + +import java.security.AccessController; +import java.security.PrivilegedAction; + +/** + * AIX specific system calls. + */ + +class AixNativeDispatcher extends UnixNativeDispatcher { + private AixNativeDispatcher() { } + + /** + * Special implementation of 'getextmntent' (see SolarisNativeDispatcher) + * that returns all entries at once. + */ + static native UnixMountEntry[] getmntctl() throws UnixException; + + // initialize + private static native int init(); + + static { + AccessController.doPrivileged(new PrivilegedAction() { + public Void run() { + System.loadLibrary("nio"); + return null; + }}); + init(); + } +} diff --git a/jdk/src/aix/classes/sun/tools/attach/AixAttachProvider.java b/jdk/src/aix/classes/sun/tools/attach/AixAttachProvider.java new file mode 100644 index 00000000000..a78c6609720 --- /dev/null +++ b/jdk/src/aix/classes/sun/tools/attach/AixAttachProvider.java @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright 2013 SAP AG. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package sun.tools.attach; + +import com.sun.tools.attach.VirtualMachine; +import com.sun.tools.attach.VirtualMachineDescriptor; +import com.sun.tools.attach.AttachNotSupportedException; +import com.sun.tools.attach.spi.AttachProvider; + +import java.io.IOException; + +// Based on 'LinuxAttachProvider.java'. All occurrences of the string +// "Linux" have been textually replaced by "Aix" to avoid confusion. + +/* + * An AttachProvider implementation for Aix that uses a UNIX domain + * socket. + */ +public class AixAttachProvider extends HotSpotAttachProvider { + + // perf counter for the JVM version + private static final String JVM_VERSION = "java.property.java.vm.version"; + + public AixAttachProvider() { + } + + public String name() { + return "sun"; + } + + public String type() { + return "socket"; + } + + public VirtualMachine attachVirtualMachine(String vmid) + throws AttachNotSupportedException, IOException + { + checkAttachPermission(); + + // AttachNotSupportedException will be thrown if the target VM can be determined + // to be not attachable. + testAttachable(vmid); + + return new AixVirtualMachine(this, vmid); + } + + public VirtualMachine attachVirtualMachine(VirtualMachineDescriptor vmd) + throws AttachNotSupportedException, IOException + { + if (vmd.provider() != this) { + throw new AttachNotSupportedException("provider mismatch"); + } + // To avoid re-checking if the VM if attachable, we check if the descriptor + // is for a hotspot VM - these descriptors are created by the listVirtualMachines + // implementation which only returns a list of attachable VMs. + if (vmd instanceof HotSpotVirtualMachineDescriptor) { + assert ((HotSpotVirtualMachineDescriptor)vmd).isAttachable(); + checkAttachPermission(); + return new AixVirtualMachine(this, vmd.id()); + } else { + return attachVirtualMachine(vmd.id()); + } + } + +} diff --git a/jdk/src/aix/classes/sun/tools/attach/AixVirtualMachine.java b/jdk/src/aix/classes/sun/tools/attach/AixVirtualMachine.java new file mode 100644 index 00000000000..714f5c0d570 --- /dev/null +++ b/jdk/src/aix/classes/sun/tools/attach/AixVirtualMachine.java @@ -0,0 +1,317 @@ +/* + * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright 2013 SAP AG. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package sun.tools.attach; + +import com.sun.tools.attach.VirtualMachine; +import com.sun.tools.attach.AgentLoadException; +import com.sun.tools.attach.AttachNotSupportedException; +import com.sun.tools.attach.spi.AttachProvider; +import java.io.InputStream; +import java.io.IOException; +import java.io.File; +import java.util.Properties; + +// Based on 'LinuxVirtualMachine.java'. All occurrences of the string +// "Linux" have been textually replaced by "Aix" to avoid confusion. + +/* + * Aix implementation of HotSpotVirtualMachine + */ +public class AixVirtualMachine extends HotSpotVirtualMachine { + // "/tmp" is used as a global well-known location for the files + // .java_pid. and .attach_pid. It is important that this + // location is the same for all processes, otherwise the tools + // will not be able to find all Hotspot processes. + // Any changes to this needs to be synchronized with HotSpot. + private static final String tmpdir = "/tmp"; + + // The patch to the socket file created by the target VM + String path; + + /** + * Attaches to the target VM + */ + AixVirtualMachine(AttachProvider provider, String vmid) + throws AttachNotSupportedException, IOException + { + super(provider, vmid); + + // This provider only understands pids + int pid; + try { + pid = Integer.parseInt(vmid); + } catch (NumberFormatException x) { + throw new AttachNotSupportedException("Invalid process identifier"); + } + + // Find the socket file. If not found then we attempt to start the + // attach mechanism in the target VM by sending it a QUIT signal. + // Then we attempt to find the socket file again. + path = findSocketFile(pid); + if (path == null) { + File f = createAttachFile(pid); + try { + sendQuitTo(pid); + + // give the target VM time to start the attach mechanism + int i = 0; + long delay = 200; + int retries = (int)(attachTimeout() / delay); + do { + try { + Thread.sleep(delay); + } catch (InterruptedException x) { } + path = findSocketFile(pid); + i++; + } while (i <= retries && path == null); + if (path == null) { + throw new AttachNotSupportedException( + "Unable to open socket file: target process not responding " + + "or HotSpot VM not loaded"); + } + } finally { + f.delete(); + } + } + + // Check that the file owner/permission to avoid attaching to + // bogus process + checkPermissions(path); + + // Check that we can connect to the process + // - this ensures we throw the permission denied error now rather than + // later when we attempt to enqueue a command. + int s = socket(); + try { + connect(s, path); + } finally { + close(s); + } + } + + /** + * Detach from the target VM + */ + public void detach() throws IOException { + synchronized (this) { + if (this.path != null) { + this.path = null; + } + } + } + + // protocol version + private final static String PROTOCOL_VERSION = "1"; + + // known errors + private final static int ATTACH_ERROR_BADVERSION = 101; + + /** + * Execute the given command in the target VM. + */ + InputStream execute(String cmd, Object ... args) throws AgentLoadException, IOException { + assert args.length <= 3; // includes null + + // did we detach? + String p; + synchronized (this) { + if (this.path == null) { + throw new IOException("Detached from target VM"); + } + p = this.path; + } + + // create UNIX socket + int s = socket(); + + // connect to target VM + try { + connect(s, p); + } catch (IOException x) { + close(s); + throw x; + } + + IOException ioe = null; + + // connected - write request + // + try { + writeString(s, PROTOCOL_VERSION); + writeString(s, cmd); + + for (int i=0; i<3; i++) { + if (i < args.length && args[i] != null) { + writeString(s, (String)args[i]); + } else { + writeString(s, ""); + } + } + } catch (IOException x) { + ioe = x; + } + + + // Create an input stream to read reply + SocketInputStream sis = new SocketInputStream(s); + + // Read the command completion status + int completionStatus; + try { + completionStatus = readInt(sis); + } catch (IOException x) { + sis.close(); + if (ioe != null) { + throw ioe; + } else { + throw x; + } + } + + if (completionStatus != 0) { + sis.close(); + + // In the event of a protocol mismatch then the target VM + // returns a known error so that we can throw a reasonable + // error. + if (completionStatus == ATTACH_ERROR_BADVERSION) { + throw new IOException("Protocol mismatch with target VM"); + } + + // Special-case the "load" command so that the right exception is + // thrown. + if (cmd.equals("load")) { + throw new AgentLoadException("Failed to load agent library"); + } else { + throw new IOException("Command failed in target VM"); + } + } + + // Return the input stream so that the command output can be read + return sis; + } + + /* + * InputStream for the socket connection to get target VM + */ + private class SocketInputStream extends InputStream { + int s; + + public SocketInputStream(int s) { + this.s = s; + } + + public synchronized int read() throws IOException { + byte b[] = new byte[1]; + int n = this.read(b, 0, 1); + if (n == 1) { + return b[0] & 0xff; + } else { + return -1; + } + } + + public synchronized int read(byte[] bs, int off, int len) throws IOException { + if ((off < 0) || (off > bs.length) || (len < 0) || + ((off + len) > bs.length) || ((off + len) < 0)) { + throw new IndexOutOfBoundsException(); + } else if (len == 0) + return 0; + + return AixVirtualMachine.read(s, bs, off, len); + } + + public void close() throws IOException { + AixVirtualMachine.close(s); + } + } + + // Return the socket file for the given process. + private String findSocketFile(int pid) { + File f = new File(tmpdir, ".java_pid" + pid); + if (!f.exists()) { + return null; + } + return f.getPath(); + } + + // On Solaris/Linux/Aix a simple handshake is used to start the attach mechanism + // if not already started. The client creates a .attach_pid file in the + // target VM's working directory (or temp directory), and the SIGQUIT handler + // checks for the file. + private File createAttachFile(int pid) throws IOException { + String fn = ".attach_pid" + pid; + String path = "/proc/" + pid + "/cwd/" + fn; + File f = new File(path); + try { + f.createNewFile(); + } catch (IOException x) { + f = new File(tmpdir, fn); + f.createNewFile(); + } + return f; + } + + /* + * Write/sends the given to the target VM. String is transmitted in + * UTF-8 encoding. + */ + private void writeString(int fd, String s) throws IOException { + if (s.length() > 0) { + byte b[]; + try { + b = s.getBytes("UTF-8"); + } catch (java.io.UnsupportedEncodingException x) { + throw new InternalError(x); + } + AixVirtualMachine.write(fd, b, 0, b.length); + } + byte b[] = new byte[1]; + b[0] = 0; + write(fd, b, 0, 1); + } + + + //-- native methods + + static native void sendQuitTo(int pid) throws IOException; + + static native void checkPermissions(String path) throws IOException; + + static native int socket() throws IOException; + + static native void connect(int fd, String path) throws IOException; + + static native void close(int fd) throws IOException; + + static native int read(int fd, byte buf[], int off, int bufLen) throws IOException; + + static native void write(int fd, byte buf[], int off, int bufLen) throws IOException; + + static { + System.loadLibrary("attach"); + } +} diff --git a/jdk/src/aix/native/java/net/aix_close.c b/jdk/src/aix/native/java/net/aix_close.c new file mode 100644 index 00000000000..d62ffe772df --- /dev/null +++ b/jdk/src/aix/native/java/net/aix_close.c @@ -0,0 +1,427 @@ +/* + * Copyright (c) 2001, 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. + */ + +/* + * This file contains implementations of NET_... functions. The NET_.. functions are + * wrappers for common file- and socket functions plus provisions for non-blocking IO. + * + * (basically, the layers remember all file descriptors waiting for a particular fd; + * all threads waiting on a certain fd can be woken up by sending them a signal; this + * is done e.g. when the fd is closed.) + * + * This was originally copied from the linux_close.c implementation. + * + * Side Note: This coding needs initialization. Under Linux this is done + * automatically via __attribute((constructor)), on AIX this is done manually + * (see aix_close_init). + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +/* + * Stack allocated by thread when doing blocking operation + */ +typedef struct threadEntry { + pthread_t thr; /* this thread */ + struct threadEntry *next; /* next thread */ + int intr; /* interrupted */ +} threadEntry_t; + +/* + * Heap allocated during initialized - one entry per fd + */ +typedef struct { + pthread_mutex_t lock; /* fd lock */ + threadEntry_t *threads; /* threads blocked on fd */ +} fdEntry_t; + +/* + * Signal to unblock thread + */ +static int sigWakeup = (SIGRTMAX - 1); + +/* + * The fd table and the number of file descriptors + */ +static fdEntry_t *fdTable = NULL; +static int fdCount = 0; + +/* + * Null signal handler + */ +static void sig_wakeup(int sig) { +} + +/* + * Initialization routine (executed when library is loaded) + * Allocate fd tables and sets up signal handler. + * + * On AIX we don't have __attribute((constructor)) so we need to initialize + * manually (from JNI_OnLoad() in 'src/share/native/java/net/net_util.c') + */ +void aix_close_init() { + struct rlimit nbr_files; + sigset_t sigset; + struct sigaction sa; + + /* Check already initialized */ + if (fdCount > 0 && fdTable != NULL) { + return; + } + + /* + * Allocate table based on the maximum number of + * file descriptors. + */ + if (-1 == getrlimit(RLIMIT_NOFILE, &nbr_files)) { + fprintf(stderr, "library initialization failed - " + "unable to get max # of allocated fds\n"); + abort(); + } + fdCount = nbr_files.rlim_max; + /* + * We have a conceptual problem here, when the number of files is + * unlimited. As a kind of workaround, we ensure the table is big + * enough for handle even a large number of files. Since SAP itself + * recommends a limit of 32000 files, we just use 64000 as 'infinity'. + */ + if (nbr_files.rlim_max == RLIM_INFINITY) { + fdCount = 64000; + } + fdTable = (fdEntry_t *)calloc(fdCount, sizeof(fdEntry_t)); + if (fdTable == NULL) { + fprintf(stderr, "library initialization failed - " + "unable to allocate file descriptor table - out of memory"); + abort(); + } + + { + int i; + for (i=0; i < fdCount; i++) { + pthread_mutex_init(&fdTable[i].lock, NULL); + } + } + + /* + * Setup the signal handler + */ + sa.sa_handler = sig_wakeup; + sa.sa_flags = 0; + sigemptyset(&sa.sa_mask); + sigaction(sigWakeup, &sa, NULL); + + sigemptyset(&sigset); + sigaddset(&sigset, sigWakeup); + sigprocmask(SIG_UNBLOCK, &sigset, NULL); +} + +/* + * Return the fd table for this fd or NULL is fd out + * of range. + */ +static inline fdEntry_t *getFdEntry(int fd) +{ + if (fd < 0 || fd >= fdCount) { + return NULL; + } + return &fdTable[fd]; +} + +/* + * Start a blocking operation :- + * Insert thread onto thread list for the fd. + */ +static inline void startOp(fdEntry_t *fdEntry, threadEntry_t *self) +{ + self->thr = pthread_self(); + self->intr = 0; + + pthread_mutex_lock(&(fdEntry->lock)); + { + self->next = fdEntry->threads; + fdEntry->threads = self; + } + pthread_mutex_unlock(&(fdEntry->lock)); +} + +/* + * End a blocking operation :- + * Remove thread from thread list for the fd + * If fd has been interrupted then set errno to EBADF + */ +static inline void endOp + (fdEntry_t *fdEntry, threadEntry_t *self) +{ + int orig_errno = errno; + pthread_mutex_lock(&(fdEntry->lock)); + { + threadEntry_t *curr, *prev=NULL; + curr = fdEntry->threads; + while (curr != NULL) { + if (curr == self) { + if (curr->intr) { + orig_errno = EBADF; + } + if (prev == NULL) { + fdEntry->threads = curr->next; + } else { + prev->next = curr->next; + } + break; + } + prev = curr; + curr = curr->next; + } + } + pthread_mutex_unlock(&(fdEntry->lock)); + errno = orig_errno; +} + +/* + * Close or dup2 a file descriptor ensuring that all threads blocked on + * the file descriptor are notified via a wakeup signal. + * + * fd1 < 0 => close(fd2) + * fd1 >= 0 => dup2(fd1, fd2) + * + * Returns -1 with errno set if operation fails. + */ +static int closefd(int fd1, int fd2) { + int rv, orig_errno; + fdEntry_t *fdEntry = getFdEntry(fd2); + if (fdEntry == NULL) { + errno = EBADF; + return -1; + } + + /* + * Lock the fd to hold-off additional I/O on this fd. + */ + pthread_mutex_lock(&(fdEntry->lock)); + + { + /* + * And close/dup the file descriptor + * (restart if interrupted by signal) + */ + do { + if (fd1 < 0) { + rv = close(fd2); + } else { + rv = dup2(fd1, fd2); + } + } while (rv == -1 && errno == EINTR); + + /* + * Send a wakeup signal to all threads blocked on this + * file descriptor. + */ + threadEntry_t *curr = fdEntry->threads; + while (curr != NULL) { + curr->intr = 1; + pthread_kill( curr->thr, sigWakeup ); + curr = curr->next; + } + } + + /* + * Unlock without destroying errno + */ + orig_errno = errno; + pthread_mutex_unlock(&(fdEntry->lock)); + errno = orig_errno; + + return rv; +} + +/* + * Wrapper for dup2 - same semantics as dup2 system call except + * that any threads blocked in an I/O system call on fd2 will be + * preempted and return -1/EBADF; + */ +int NET_Dup2(int fd, int fd2) { + if (fd < 0) { + errno = EBADF; + return -1; + } + return closefd(fd, fd2); +} + +/* + * Wrapper for close - same semantics as close system call + * except that any threads blocked in an I/O on fd will be + * preempted and the I/O system call will return -1/EBADF. + */ +int NET_SocketClose(int fd) { + return closefd(-1, fd); +} + +/************** Basic I/O operations here ***************/ + +/* + * Macro to perform a blocking IO operation. Restarts + * automatically if interrupted by signal (other than + * our wakeup signal) + */ +#define BLOCKING_IO_RETURN_INT(FD, FUNC) { \ + int ret; \ + threadEntry_t self; \ + fdEntry_t *fdEntry = getFdEntry(FD); \ + if (fdEntry == NULL) { \ + errno = EBADF; \ + return -1; \ + } \ + do { \ + startOp(fdEntry, &self); \ + ret = FUNC; \ + endOp(fdEntry, &self); \ + } while (ret == -1 && errno == EINTR); \ + return ret; \ +} + +int NET_Read(int s, void* buf, size_t len) { + BLOCKING_IO_RETURN_INT( s, recv(s, buf, len, 0) ); +} + +int NET_ReadV(int s, const struct iovec * vector, int count) { + BLOCKING_IO_RETURN_INT( s, readv(s, vector, count) ); +} + +int NET_RecvFrom(int s, void *buf, int len, unsigned int flags, + struct sockaddr *from, int *fromlen) { + socklen_t socklen = *fromlen; + BLOCKING_IO_RETURN_INT( s, recvfrom(s, buf, len, flags, from, &socklen) ); + *fromlen = socklen; +} + +int NET_Send(int s, void *msg, int len, unsigned int flags) { + BLOCKING_IO_RETURN_INT( s, send(s, msg, len, flags) ); +} + +int NET_WriteV(int s, const struct iovec * vector, int count) { + BLOCKING_IO_RETURN_INT( s, writev(s, vector, count) ); +} + +int NET_SendTo(int s, const void *msg, int len, unsigned int + flags, const struct sockaddr *to, int tolen) { + BLOCKING_IO_RETURN_INT( s, sendto(s, msg, len, flags, to, tolen) ); +} + +int NET_Accept(int s, struct sockaddr *addr, int *addrlen) { + socklen_t socklen = *addrlen; + BLOCKING_IO_RETURN_INT( s, accept(s, addr, &socklen) ); + *addrlen = socklen; +} + +int NET_Connect(int s, struct sockaddr *addr, int addrlen) { + BLOCKING_IO_RETURN_INT( s, connect(s, addr, addrlen) ); +} + +#ifndef USE_SELECT +int NET_Poll(struct pollfd *ufds, unsigned int nfds, int timeout) { + BLOCKING_IO_RETURN_INT( ufds[0].fd, poll(ufds, nfds, timeout) ); +} +#else +int NET_Select(int s, fd_set *readfds, fd_set *writefds, + fd_set *exceptfds, struct timeval *timeout) { + BLOCKING_IO_RETURN_INT( s-1, + select(s, readfds, writefds, exceptfds, timeout) ); +} +#endif + +/* + * Wrapper for poll(s, timeout). + * Auto restarts with adjusted timeout if interrupted by + * signal other than our wakeup signal. + */ +int NET_Timeout(int s, long timeout) { + long prevtime = 0, newtime; + struct timeval t; + fdEntry_t *fdEntry = getFdEntry(s); + + /* + * Check that fd hasn't been closed. + */ + if (fdEntry == NULL) { + errno = EBADF; + return -1; + } + + /* + * Pick up current time as may need to adjust timeout + */ + if (timeout > 0) { + gettimeofday(&t, NULL); + prevtime = t.tv_sec * 1000 + t.tv_usec / 1000; + } + + for(;;) { + struct pollfd pfd; + int rv; + threadEntry_t self; + + /* + * Poll the fd. If interrupted by our wakeup signal + * errno will be set to EBADF. + */ + pfd.fd = s; + pfd.events = POLLIN | POLLERR; + + startOp(fdEntry, &self); + rv = poll(&pfd, 1, timeout); + endOp(fdEntry, &self); + + /* + * If interrupted then adjust timeout. If timeout + * has expired return 0 (indicating timeout expired). + */ + if (rv < 0 && errno == EINTR) { + if (timeout > 0) { + gettimeofday(&t, NULL); + newtime = t.tv_sec * 1000 + t.tv_usec / 1000; + timeout -= newtime - prevtime; + if (timeout <= 0) { + return 0; + } + prevtime = newtime; + } + } else { + return rv; + } + + } +} diff --git a/jdk/src/aix/native/sun/nio/ch/AixPollPort.c b/jdk/src/aix/native/sun/nio/ch/AixPollPort.c new file mode 100644 index 00000000000..70064b890ef --- /dev/null +++ b/jdk/src/aix/native/sun/nio/ch/AixPollPort.c @@ -0,0 +1,175 @@ +/* + * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright 2012 SAP AG. 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. + */ + +#include "jni.h" +#include "jni_util.h" +#include "jvm.h" +#include "jlong.h" + +#include "sun_nio_ch_AixPollPort.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* Initially copied from src/solaris/native/sun/nio/ch/nio_util.h */ +#define RESTARTABLE(_cmd, _result) do { \ + do { \ + _result = _cmd; \ + } while((_result == -1) && (errno == EINTR)); \ +} while(0) + +typedef pollset_t pollset_create_func(int maxfd); +typedef int pollset_destroy_func(pollset_t ps); +typedef int pollset_ctl_func(pollset_t ps, struct poll_ctl *pollctl_array, int array_length); +typedef int pollset_poll_func(pollset_t ps, struct pollfd *polldata_array, int array_length, int timeout); +static pollset_create_func* _pollset_create = NULL; +static pollset_destroy_func* _pollset_destroy = NULL; +static pollset_ctl_func* _pollset_ctl = NULL; +static pollset_poll_func* _pollset_poll = NULL; + +JNIEXPORT void JNICALL +Java_sun_nio_ch_AixPollPort_init(JNIEnv* env, jclass this) { + _pollset_create = (pollset_create_func*) dlsym(RTLD_DEFAULT, "pollset_create"); + _pollset_destroy = (pollset_destroy_func*) dlsym(RTLD_DEFAULT, "pollset_destroy"); + _pollset_ctl = (pollset_ctl_func*) dlsym(RTLD_DEFAULT, "pollset_ctl"); + _pollset_poll = (pollset_poll_func*) dlsym(RTLD_DEFAULT, "pollset_poll"); + if (_pollset_create == NULL || _pollset_destroy == NULL || + _pollset_ctl == NULL || _pollset_poll == NULL) { + JNU_ThrowInternalError(env, "unable to get address of pollset functions"); + } +} + +JNIEXPORT jint JNICALL +Java_sun_nio_ch_AixPollPort_eventSize(JNIEnv* env, jclass this) { + return sizeof(struct pollfd); +} + +JNIEXPORT jint JNICALL +Java_sun_nio_ch_AixPollPort_eventsOffset(JNIEnv* env, jclass this) { + return offsetof(struct pollfd, events); +} + +JNIEXPORT jint JNICALL +Java_sun_nio_ch_AixPollPort_reventsOffset(JNIEnv* env, jclass this) { + return offsetof(struct pollfd, revents); +} + +JNIEXPORT jint JNICALL +Java_sun_nio_ch_AixPollPort_fdOffset(JNIEnv* env, jclass this) { + return offsetof(struct pollfd, fd); +} + +JNIEXPORT jint JNICALL +Java_sun_nio_ch_AixPollPort_pollsetCreate(JNIEnv *env, jclass c) { + /* pollset_create can take the maximum number of fds, but we + * cannot predict this number so we leave it at OPEN_MAX. */ + pollset_t ps = _pollset_create(-1); + if (ps < 0) { + JNU_ThrowIOExceptionWithLastError(env, "pollset_create failed"); + } + return (int)ps; +} + +JNIEXPORT jint JNICALL +Java_sun_nio_ch_AixPollPort_pollsetCtl(JNIEnv *env, jclass c, jint ps, + jint opcode, jint fd, jint events) { + struct poll_ctl event; + int res; + + event.cmd = opcode; + event.events = events; + event.fd = fd; + + RESTARTABLE(_pollset_ctl((pollset_t)ps, &event, 1 /* length */), res); + + return (res == 0) ? 0 : errno; +} + +JNIEXPORT jint JNICALL +Java_sun_nio_ch_AixPollPort_pollsetPoll(JNIEnv *env, jclass c, + jint ps, jlong address, jint numfds) { + struct pollfd *events = jlong_to_ptr(address); + int res; + + RESTARTABLE(_pollset_poll(ps, events, numfds, -1), res); + if (res < 0) { + JNU_ThrowIOExceptionWithLastError(env, "pollset_poll failed"); + } + return res; +} + +JNIEXPORT void JNICALL +Java_sun_nio_ch_AixPollPort_pollsetDestroy(JNIEnv *env, jclass c, jint ps) { + int res; + RESTARTABLE(_pollset_destroy((pollset_t)ps), res); +} + +JNIEXPORT void JNICALL +Java_sun_nio_ch_AixPollPort_socketpair(JNIEnv* env, jclass clazz, jintArray sv) { + int sp[2]; + if (socketpair(PF_UNIX, SOCK_STREAM, 0, sp) == -1) { + JNU_ThrowIOExceptionWithLastError(env, "socketpair failed"); + } else { + jint res[2]; + res[0] = (jint)sp[0]; + res[1] = (jint)sp[1]; + (*env)->SetIntArrayRegion(env, sv, 0, 2, &res[0]); + } +} + +JNIEXPORT void JNICALL +Java_sun_nio_ch_AixPollPort_interrupt(JNIEnv *env, jclass c, jint fd) { + int res; + int buf[1]; + buf[0] = 1; + RESTARTABLE(write(fd, buf, 1), res); + if (res < 0) { + JNU_ThrowIOExceptionWithLastError(env, "write failed"); + } +} + +JNIEXPORT void JNICALL +Java_sun_nio_ch_AixPollPort_drain1(JNIEnv *env, jclass cl, jint fd) { + int res; + char buf[1]; + RESTARTABLE(read(fd, buf, 1), res); + if (res < 0) { + JNU_ThrowIOExceptionWithLastError(env, "drain1 failed"); + } +} + +JNIEXPORT void JNICALL +Java_sun_nio_ch_AixPollPort_close0(JNIEnv *env, jclass c, jint fd) { + int res; + RESTARTABLE(close(fd), res); +} diff --git a/jdk/src/aix/native/sun/nio/fs/AixNativeDispatcher.c b/jdk/src/aix/native/sun/nio/fs/AixNativeDispatcher.c new file mode 100644 index 00000000000..82d8f6203e7 --- /dev/null +++ b/jdk/src/aix/native/sun/nio/fs/AixNativeDispatcher.c @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright 2013 SAP AG. 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. + */ + +#include +#include +#include +#include + +#include "jni.h" +#include "jni_util.h" + +#include "sun_nio_fs_AixNativeDispatcher.h" + +static jfieldID entry_name; +static jfieldID entry_dir; +static jfieldID entry_fstype; +static jfieldID entry_options; + +static jclass entry_cls; + +/** + * Call this to throw an internal UnixException when a system/library + * call fails + */ +static void throwUnixException(JNIEnv* env, int errnum) { + jobject x = JNU_NewObjectByName(env, "sun/nio/fs/UnixException", + "(I)V", errnum); + if (x != NULL) { + (*env)->Throw(env, x); + } +} + +/** + * Initialization + */ +JNIEXPORT jint JNICALL +Java_sun_nio_fs_AixNativeDispatcher_init(JNIEnv* env, jclass this) +{ + jint flags = 0; + jclass clazz; + + clazz = (*env)->FindClass(env, "sun/nio/fs/UnixMountEntry"); + if (clazz == NULL) { + return 0; + } + entry_name = (*env)->GetFieldID(env, clazz, "name", "[B"); + entry_dir = (*env)->GetFieldID(env, clazz, "dir", "[B"); + entry_fstype = (*env)->GetFieldID(env, clazz, "fstype", "[B"); + entry_options = (*env)->GetFieldID(env, clazz, "opts", "[B"); + entry_cls = (*env)->NewGlobalRef(env, clazz); + + return 0; +} + +/** + * Special implementation of getextmntent (see SolarisNativeDispatcher.c) + * that returns all entries at once. + */ +JNIEXPORT jobjectArray JNICALL +Java_sun_nio_fs_AixNativeDispatcher_getmntctl(JNIEnv* env, jclass this) +{ + int must_free_buf = 0; + char stack_buf[1024]; + char* buffer = stack_buf; + size_t buffer_size = 1024; + int num_entries; + int i; + jobjectArray ret; + struct vmount * vm; + + for (i = 0; i < 5; i++) { + num_entries = mntctl(MCTL_QUERY, buffer_size, buffer); + if (num_entries != 0) { + break; + } + if (must_free_buf) { + free(buffer); + } + buffer_size *= 8; + buffer = malloc(buffer_size); + must_free_buf = 1; + } + /* Treat zero entries like errors. */ + if (num_entries <= 0) { + if (must_free_buf) { + free(buffer); + } + throwUnixException(env, errno); + return NULL; + } + ret = (*env)->NewObjectArray(env, num_entries, entry_cls, NULL); + if (ret == NULL) { + if (must_free_buf) { + free(buffer); + } + return NULL; + } + vm = (struct vmount*)buffer; + for (i = 0; i < num_entries; i++) { + jsize len; + jbyteArray bytes; + const char* fstype; + /* We set all relevant attributes so there is no need to call constructor. */ + jobject entry = (*env)->AllocObject(env, entry_cls); + if (entry == NULL) { + if (must_free_buf) { + free(buffer); + } + return NULL; + } + (*env)->SetObjectArrayElement(env, ret, i, entry); + + /* vm->vmt_data[...].vmt_size is 32 bit aligned and also includes NULL byte. */ + /* Since we only need the characters, it is necessary to check string size manually. */ + len = strlen((char*)vm + vm->vmt_data[VMT_OBJECT].vmt_off); + bytes = (*env)->NewByteArray(env, len); + if (bytes == NULL) { + if (must_free_buf) { + free(buffer); + } + return NULL; + } + (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)((char *)vm + vm->vmt_data[VMT_OBJECT].vmt_off)); + (*env)->SetObjectField(env, entry, entry_name, bytes); + + len = strlen((char*)vm + vm->vmt_data[VMT_STUB].vmt_off); + bytes = (*env)->NewByteArray(env, len); + if (bytes == NULL) { + if (must_free_buf) { + free(buffer); + } + return NULL; + } + (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)((char *)vm + vm->vmt_data[VMT_STUB].vmt_off)); + (*env)->SetObjectField(env, entry, entry_dir, bytes); + + switch (vm->vmt_gfstype) { + case MNT_J2: + fstype = "jfs2"; + break; + case MNT_NAMEFS: + fstype = "namefs"; + break; + case MNT_NFS: + fstype = "nfs"; + break; + case MNT_JFS: + fstype = "jfs"; + break; + case MNT_CDROM: + fstype = "cdrom"; + break; + case MNT_PROCFS: + fstype = "procfs"; + break; + case MNT_NFS3: + fstype = "nfs3"; + break; + case MNT_AUTOFS: + fstype = "autofs"; + break; + case MNT_UDF: + fstype = "udfs"; + break; + case MNT_NFS4: + fstype = "nfs4"; + break; + case MNT_CIFS: + fstype = "smbfs"; + break; + default: + fstype = "unknown"; + } + len = strlen(fstype); + bytes = (*env)->NewByteArray(env, len); + if (bytes == NULL) { + if (must_free_buf) { + free(buffer); + } + return NULL; + } + (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)fstype); + (*env)->SetObjectField(env, entry, entry_fstype, bytes); + + len = strlen((char*)vm + vm->vmt_data[VMT_ARGS].vmt_off); + bytes = (*env)->NewByteArray(env, len); + if (bytes == NULL) { + if (must_free_buf) { + free(buffer); + } + return NULL; + } + (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)((char *)vm + vm->vmt_data[VMT_ARGS].vmt_off)); + (*env)->SetObjectField(env, entry, entry_options, bytes); + + /* goto the next vmount structure: */ + vm = (struct vmount *)((char *)vm + vm->vmt_length); + } + + if (must_free_buf) { + free(buffer); + } + return ret; +} diff --git a/jdk/src/aix/native/sun/tools/attach/AixVirtualMachine.c b/jdk/src/aix/native/sun/tools/attach/AixVirtualMachine.c new file mode 100644 index 00000000000..a5ba1605132 --- /dev/null +++ b/jdk/src/aix/native/sun/tools/attach/AixVirtualMachine.c @@ -0,0 +1,283 @@ +/* + * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright 2013 SAP AG. 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. + */ + +#include "jni.h" +#include "jni_util.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Based on 'LinuxVirtualMachine.c'. Non-relevant code has been removed and all + * occurrences of the string "Linux" have been replaced by "Aix". + */ + +#include "sun_tools_attach_AixVirtualMachine.h" + +#define RESTARTABLE(_cmd, _result) do { \ + do { \ + _result = _cmd; \ + } while((_result == -1) && (errno == EINTR)); \ +} while(0) + + +/* + * Class: sun_tools_attach_AixVirtualMachine + * Method: socket + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_sun_tools_attach_AixVirtualMachine_socket + (JNIEnv *env, jclass cls) +{ + int fd = socket(PF_UNIX, SOCK_STREAM, 0); + if (fd == -1) { + JNU_ThrowIOExceptionWithLastError(env, "socket"); + } + /* added time out values */ + else { + struct timeval tv; + tv.tv_sec = 2 * 60; + tv.tv_usec = 0; + + setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, (char*)&tv, sizeof(tv)); + setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, (char*)&tv, sizeof(tv)); + } + return (jint)fd; +} + +/* + * Class: sun_tools_attach_AixVirtualMachine + * Method: connect + * Signature: (ILjava/lang/String;)I + */ +JNIEXPORT void JNICALL Java_sun_tools_attach_AixVirtualMachine_connect + (JNIEnv *env, jclass cls, jint fd, jstring path) +{ + jboolean isCopy; + const char* p = GetStringPlatformChars(env, path, &isCopy); + if (p != NULL) { + struct sockaddr_un addr; + int err = 0; + + /* added missing structure initialization */ + memset(&addr,0, sizeof(addr)); + addr.sun_family = AF_UNIX; + strcpy(addr.sun_path, p); + /* We must call bind with the actual socketaddr length. This is obligatory for AS400. */ + if (connect(fd, (struct sockaddr*)&addr, SUN_LEN(&addr)) == -1) { + err = errno; + } + + if (isCopy) { + JNU_ReleaseStringPlatformChars(env, path, p); + } + + /* + * If the connect failed then we throw the appropriate exception + * here (can't throw it before releasing the string as can't call + * JNI with pending exception) + */ + if (err != 0) { + if (err == ENOENT) { + JNU_ThrowByName(env, "java/io/FileNotFoundException", NULL); + } else { + char* msg = strdup(strerror(err)); + JNU_ThrowIOException(env, msg); + if (msg != NULL) { + free(msg); + } + } + } + } +} + + +/* + * Structure and callback function used to send a QUIT signal to all + * children of a given process + */ +typedef struct { + pid_t ppid; +} SendQuitContext; + +static void SendQuitCallback(const pid_t pid, void* user_data) { + SendQuitContext* context = (SendQuitContext*)user_data; + pid_t parent = getParent(pid); + if (parent == context->ppid) { + kill(pid, SIGQUIT); + } +} + +/* + * Class: sun_tools_attach_AixVirtualMachine + * Method: sendQuitTo + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_sun_tools_attach_AixVirtualMachine_sendQuitTo + (JNIEnv *env, jclass cls, jint pid) +{ + if (kill((pid_t)pid, SIGQUIT)) { + JNU_ThrowIOExceptionWithLastError(env, "kill"); + } +} + +/* + * Class: sun_tools_attach_AixVirtualMachine + * Method: checkPermissions + * Signature: (Ljava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_sun_tools_attach_AixVirtualMachine_checkPermissions + (JNIEnv *env, jclass cls, jstring path) +{ + jboolean isCopy; + const char* p = GetStringPlatformChars(env, path, &isCopy); + if (p != NULL) { + struct stat64 sb; + uid_t uid, gid; + int res; + /* added missing initialization of the stat64 buffer */ + memset(&sb, 0, sizeof(struct stat64)); + + /* + * Check that the path is owned by the effective uid/gid of this + * process. Also check that group/other access is not allowed. + */ + uid = geteuid(); + gid = getegid(); + + res = stat64(p, &sb); + if (res != 0) { + /* save errno */ + res = errno; + } + + /* release p here before we throw an I/O exception */ + if (isCopy) { + JNU_ReleaseStringPlatformChars(env, path, p); + } + + if (res == 0) { + if ( (sb.st_uid != uid) || (sb.st_gid != gid) || + ((sb.st_mode & (S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)) != 0) ) { + JNU_ThrowIOException(env, "well-known file is not secure"); + } + } else { + char* msg = strdup(strerror(res)); + JNU_ThrowIOException(env, msg); + if (msg != NULL) { + free(msg); + } + } + } +} + +/* + * Class: sun_tools_attach_AixVirtualMachine + * Method: close + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_sun_tools_attach_AixVirtualMachine_close + (JNIEnv *env, jclass cls, jint fd) +{ + int res; + /* Fixed deadlock when this call of close by the client is not seen by the attach server + * which has accepted the (very short) connection already and is waiting for the request. But read don't get a byte, + * because the close is lost without shutdown. + */ + shutdown(fd, 2); + RESTARTABLE(close(fd), res); +} + +/* + * Class: sun_tools_attach_AixVirtualMachine + * Method: read + * Signature: (I[BI)I + */ +JNIEXPORT jint JNICALL Java_sun_tools_attach_AixVirtualMachine_read + (JNIEnv *env, jclass cls, jint fd, jbyteArray ba, jint off, jint baLen) +{ + unsigned char buf[128]; + size_t len = sizeof(buf); + ssize_t n; + + size_t remaining = (size_t)(baLen - off); + if (len > remaining) { + len = remaining; + } + + RESTARTABLE(read(fd, buf+off, len), n); + if (n == -1) { + JNU_ThrowIOExceptionWithLastError(env, "read"); + } else { + if (n == 0) { + n = -1; // EOF + } else { + (*env)->SetByteArrayRegion(env, ba, off, (jint)n, (jbyte *)(buf+off)); + } + } + return n; +} + +/* + * Class: sun_tools_attach_AixVirtualMachine + * Method: write + * Signature: (I[B)V + */ +JNIEXPORT void JNICALL Java_sun_tools_attach_AixVirtualMachine_write + (JNIEnv *env, jclass cls, jint fd, jbyteArray ba, jint off, jint bufLen) +{ + size_t remaining = bufLen; + do { + unsigned char buf[128]; + size_t len = sizeof(buf); + int n; + + if (len > remaining) { + len = remaining; + } + (*env)->GetByteArrayRegion(env, ba, off, len, (jbyte *)buf); + + RESTARTABLE(write(fd, buf, len), n); + if (n > 0) { + off += n; + remaining -= n; + } else { + JNU_ThrowIOExceptionWithLastError(env, "write"); + return; + } + + } while (remaining > 0); +} diff --git a/jdk/src/aix/porting/porting_aix.c b/jdk/src/aix/porting/porting_aix.c new file mode 100644 index 00000000000..659d9c4c06b --- /dev/null +++ b/jdk/src/aix/porting/porting_aix.c @@ -0,0 +1,86 @@ +/* + * Copyright 2012, 2013 SAP AG. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#include +#include +#include + +#include "porting_aix.h" + +static unsigned char dladdr_buffer[0x4000]; + +static void fill_dll_info(void) { + int rc = loadquery(L_GETINFO,dladdr_buffer, sizeof(dladdr_buffer)); + if (rc == -1) { + fprintf(stderr, "loadquery failed (%d %s)", errno, strerror(errno)); + fflush(stderr); + } +} + +static int dladdr_dont_reload(void* addr, Dl_info* info) { + const struct ld_info* p = (struct ld_info*) dladdr_buffer; + info->dli_fbase = 0; info->dli_fname = 0; + info->dli_sname = 0; info->dli_saddr = 0; + for (;;) { + if (addr >= p->ldinfo_textorg && + addr < (((char*)p->ldinfo_textorg) + p->ldinfo_textsize)) { + info->dli_fname = p->ldinfo_filename; + info->dli_fbase = p->ldinfo_textorg; + return 1; /* [sic] */ + } + if (!p->ldinfo_next) { + break; + } + p = (struct ld_info*)(((char*)p) + p->ldinfo_next); + } + return 0; /* [sic] */ +} + +#ifdef __cplusplus +extern "C" +#endif +int dladdr(void *addr, Dl_info *info) { + static int loaded = 0; + if (!loaded) { + fill_dll_info(); + loaded = 1; + } + if (!addr) { + return 0; /* [sic] */ + } + /* Address could be AIX function descriptor? */ + void* const addr0 = *( (void**) addr ); + int rc = dladdr_dont_reload(addr, info); + if (rc == 0) { + rc = dladdr_dont_reload(addr0, info); + if (rc == 0) { /* [sic] */ + fill_dll_info(); /* refill, maybe loadquery info is outdated */ + rc = dladdr_dont_reload(addr, info); + if (rc == 0) { + rc = dladdr_dont_reload(addr0, info); + } + } + } + return rc; +} diff --git a/jdk/src/aix/porting/porting_aix.h b/jdk/src/aix/porting/porting_aix.h new file mode 100644 index 00000000000..79d1062dd67 --- /dev/null +++ b/jdk/src/aix/porting/porting_aix.h @@ -0,0 +1,59 @@ +/* + * Copyright 2012, 2013 SAP AG. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +/* + * Header file to contain porting-relevant code which does not have a + * home anywhere else. + * This is intially based on hotspot/src/os/aix/vm/{loadlib,porting}_aix.{hpp,cpp} + */ + +/* + * Aix' own version of dladdr(). + * This function tries to mimick dladdr(3) on Linux + * (see http://linux.die.net/man/3/dladdr) + * dladdr(3) is not POSIX but a GNU extension, and is not available on AIX. + * + * Differences between AIX dladdr and Linux dladdr: + * + * 1) Dl_info.dli_fbase: can never work, is disabled. + * A loaded image on AIX is divided in multiple segments, at least two + * (text and data) but potentially also far more. This is because the loader may + * load each member into an own segment, as for instance happens with the libC.a + * 2) Dl_info.dli_sname: This only works for code symbols (functions); for data, a + * zero-length string is returned (""). + * 3) Dl_info.dli_saddr: For code, this will return the entry point of the function, + * not the function descriptor. + */ + +typedef struct { + const char *dli_fname; /* file path of loaded library */ + void *dli_fbase; /* doesn't make sence on AIX */ + const char *dli_sname; /* symbol name; "" if not known */ + void *dli_saddr; /* address of *entry* of function; not function descriptor; */ +} Dl_info; + +#ifdef __cplusplus +extern "C" +#endif +int dladdr(void *addr, Dl_info *info); diff --git a/jdk/src/share/bin/jli_util.h b/jdk/src/share/bin/jli_util.h index 388910407ff..d3c9f0ff8f2 100644 --- a/jdk/src/share/bin/jli_util.h +++ b/jdk/src/share/bin/jli_util.h @@ -85,6 +85,9 @@ void JLI_CmdToArgs(char *cmdline); #ifdef MACOSX #define JLI_Lseek lseek #endif +#ifdef _AIX +#define JLI_Lseek lseek +#endif #endif /* _WIN32 */ /* diff --git a/jdk/src/share/lib/security/java.security-aix b/jdk/src/share/lib/security/java.security-aix new file mode 100644 index 00000000000..fd49537f609 --- /dev/null +++ b/jdk/src/share/lib/security/java.security-aix @@ -0,0 +1,497 @@ +# +# This is the "master security properties file". +# +# An alternate java.security properties file may be specified +# from the command line via the system property +# +# -Djava.security.properties= +# +# This properties file appends to the master security properties file. +# If both properties files specify values for the same key, the value +# from the command-line properties file is selected, as it is the last +# one loaded. +# +# Also, if you specify +# +# -Djava.security.properties== (2 equals), +# +# then that properties file completely overrides the master security +# properties file. +# +# To disable the ability to specify an additional properties file from +# the command line, set the key security.overridePropertiesFile +# to false in the master security properties file. It is set to true +# by default. + +# In this file, various security properties are set for use by +# java.security classes. This is where users can statically register +# Cryptography Package Providers ("providers" for short). The term +# "provider" refers to a package or set of packages that supply a +# concrete implementation of a subset of the cryptography aspects of +# the Java Security API. A provider may, for example, implement one or +# more digital signature algorithms or message digest algorithms. +# +# Each provider must implement a subclass of the Provider class. +# To register a provider in this master security properties file, +# specify the Provider subclass name and priority in the format +# +# security.provider.= +# +# This declares a provider, and specifies its preference +# order n. The preference order is the order in which providers are +# searched for requested algorithms (when no specific provider is +# requested). The order is 1-based; 1 is the most preferred, followed +# by 2, and so on. +# +# must specify the subclass of the Provider class whose +# constructor sets the values of various properties that are required +# for the Java Security API to look up the algorithms or other +# facilities implemented by the provider. +# +# There must be at least one provider specification in java.security. +# There is a default provider that comes standard with the JDK. It +# is called the "SUN" provider, and its Provider subclass +# named Sun appears in the sun.security.provider package. Thus, the +# "SUN" provider is registered via the following: +# +# security.provider.1=sun.security.provider.Sun +# +# (The number 1 is used for the default provider.) +# +# Note: Providers can be dynamically registered instead by calls to +# either the addProvider or insertProviderAt method in the Security +# class. + +# +# List of providers and their preference orders (see above): +# +security.provider.1=sun.security.provider.Sun +security.provider.2=sun.security.rsa.SunRsaSign +security.provider.3=sun.security.ec.SunEC +security.provider.4=com.sun.net.ssl.internal.ssl.Provider +security.provider.5=com.sun.crypto.provider.SunJCE +security.provider.6=sun.security.jgss.SunProvider +security.provider.7=com.sun.security.sasl.Provider +security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI +security.provider.9=sun.security.smartcardio.SunPCSC + +# +# Sun Provider SecureRandom seed source. +# +# Select the primary source of seed data for the "SHA1PRNG" and +# "NativePRNG" SecureRandom implementations in the "Sun" provider. +# (Other SecureRandom implementations might also use this property.) +# +# On Unix-like systems (for example, Solaris/Linux/MacOS), the +# "NativePRNG" and "SHA1PRNG" implementations obtains seed data from +# special device files such as file:/dev/random. +# +# On Windows systems, specifying the URLs "file:/dev/random" or +# "file:/dev/urandom" will enable the native Microsoft CryptoAPI seeding +# mechanism for SHA1PRNG. +# +# By default, an attempt is made to use the entropy gathering device +# specified by the "securerandom.source" Security property. If an +# exception occurs while accessing the specified URL: +# +# SHA1PRNG: +# the traditional system/thread activity algorithm will be used. +# +# NativePRNG: +# a default value of /dev/random will be used. If neither +# are available, the implementation will be disabled. +# "file" is the only currently supported protocol type. +# +# The entropy gathering device can also be specified with the System +# property "java.security.egd". For example: +# +# % java -Djava.security.egd=file:/dev/random MainClass +# +# Specifying this System property will override the +# "securerandom.source" Security property. +# +# In addition, if "file:/dev/random" or "file:/dev/urandom" is +# specified, the "NativePRNG" implementation will be more preferred than +# SHA1PRNG in the Sun provider. +# +securerandom.source=file:/dev/random + +# +# A list of known strong SecureRandom implementations. +# +# To help guide applications in selecting a suitable strong +# java.security.SecureRandom implementation, Java distributions should +# indicate a list of known strong implementations using the property. +# +# This is a comma-separated list of algorithm and/or algorithm:provider +# entries. +# +securerandom.strongAlgorithms=NativePRNGBlocking:SUN + +# +# Class to instantiate as the javax.security.auth.login.Configuration +# provider. +# +login.configuration.provider=sun.security.provider.ConfigFile + +# +# Default login configuration file +# +#login.config.url.1=file:${user.home}/.java.login.config + +# +# Class to instantiate as the system Policy. This is the name of the class +# that will be used as the Policy object. +# +policy.provider=sun.security.provider.PolicyFile + +# The default is to have a single system-wide policy file, +# and a policy file in the user's home directory. +policy.url.1=file:${java.home}/lib/security/java.policy +policy.url.2=file:${user.home}/.java.policy + +# whether or not we expand properties in the policy file +# if this is set to false, properties (${...}) will not be expanded in policy +# files. +policy.expandProperties=true + +# whether or not we allow an extra policy to be passed on the command line +# with -Djava.security.policy=somefile. Comment out this line to disable +# this feature. +policy.allowSystemProperty=true + +# whether or not we look into the IdentityScope for trusted Identities +# when encountering a 1.1 signed JAR file. If the identity is found +# and is trusted, we grant it AllPermission. +policy.ignoreIdentityScope=false + +# +# Default keystore type. +# +keystore.type=jks + +# +# List of comma-separated packages that start with or equal this string +# will cause a security exception to be thrown when +# passed to checkPackageAccess unless the +# corresponding RuntimePermission ("accessClassInPackage."+package) has +# been granted. +package.access=sun.,\ + com.sun.xml.internal.,\ + com.sun.imageio.,\ + com.sun.istack.internal.,\ + com.sun.jmx.,\ + com.sun.media.sound.,\ + com.sun.proxy.,\ + com.sun.corba.se.,\ + com.sun.org.apache.bcel.internal.,\ + com.sun.org.apache.regexp.internal.,\ + com.sun.org.apache.xerces.internal.,\ + com.sun.org.apache.xpath.internal.,\ + com.sun.org.apache.xalan.internal.extensions.,\ + com.sun.org.apache.xalan.internal.lib.,\ + com.sun.org.apache.xalan.internal.res.,\ + com.sun.org.apache.xalan.internal.templates.,\ + com.sun.org.apache.xalan.internal.utils.,\ + com.sun.org.apache.xalan.internal.xslt.,\ + com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ + com.sun.org.apache.xalan.internal.xsltc.compiler.,\ + com.sun.org.apache.xalan.internal.xsltc.trax.,\ + com.sun.org.apache.xalan.internal.xsltc.util.,\ + com.sun.org.apache.xml.internal.res.,\ + com.sun.org.apache.xml.internal.security.,\ + com.sun.org.apache.xml.internal.serializer.utils.,\ + com.sun.org.apache.xml.internal.utils.,\ + com.sun.org.glassfish.,\ + com.oracle.xmlns.internal.,\ + com.oracle.webservices.internal.,\ + oracle.jrockit.jfr.,\ + org.jcp.xml.dsig.internal.,\ + jdk.internal.,\ + jdk.nashorn.internal.,\ + jdk.nashorn.tools. + + +# +# List of comma-separated packages that start with or equal this string +# will cause a security exception to be thrown when +# passed to checkPackageDefinition unless the +# corresponding RuntimePermission ("defineClassInPackage."+package) has +# been granted. +# +# by default, none of the class loaders supplied with the JDK call +# checkPackageDefinition. +# +package.definition=sun.,\ + com.sun.xml.internal.,\ + com.sun.imageio.,\ + com.sun.istack.internal.,\ + com.sun.jmx.,\ + com.sun.media.sound.,\ + com.sun.proxy.,\ + com.sun.corba.se.,\ + com.sun.org.apache.bcel.internal.,\ + com.sun.org.apache.regexp.internal.,\ + com.sun.org.apache.xerces.internal.,\ + com.sun.org.apache.xpath.internal.,\ + com.sun.org.apache.xalan.internal.extensions.,\ + com.sun.org.apache.xalan.internal.lib.,\ + com.sun.org.apache.xalan.internal.res.,\ + com.sun.org.apache.xalan.internal.templates.,\ + com.sun.org.apache.xalan.internal.utils.,\ + com.sun.org.apache.xalan.internal.xslt.,\ + com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ + com.sun.org.apache.xalan.internal.xsltc.compiler.,\ + com.sun.org.apache.xalan.internal.xsltc.trax.,\ + com.sun.org.apache.xalan.internal.xsltc.util.,\ + com.sun.org.apache.xml.internal.res.,\ + com.sun.org.apache.xml.internal.security.,\ + com.sun.org.apache.xml.internal.serializer.utils.,\ + com.sun.org.apache.xml.internal.utils.,\ + com.sun.org.glassfish.,\ + com.oracle.xmlns.internal.,\ + com.oracle.webservices.internal.,\ + oracle.jrockit.jfr.,\ + org.jcp.xml.dsig.internal.,\ + jdk.internal.,\ + jdk.nashorn.internal.,\ + jdk.nashorn.tools. + + +# +# Determines whether this properties file can be appended to +# or overridden on the command line via -Djava.security.properties +# +security.overridePropertiesFile=true + +# +# Determines the default key and trust manager factory algorithms for +# the javax.net.ssl package. +# +ssl.KeyManagerFactory.algorithm=SunX509 +ssl.TrustManagerFactory.algorithm=PKIX + +# +# The Java-level namelookup cache policy for successful lookups: +# +# any negative value: caching forever +# any positive value: the number of seconds to cache an address for +# zero: do not cache +# +# default value is forever (FOREVER). For security reasons, this +# caching is made forever when a security manager is set. When a security +# manager is not set, the default behavior in this implementation +# is to cache for 30 seconds. +# +# NOTE: setting this to anything other than the default value can have +# serious security implications. Do not set it unless +# you are sure you are not exposed to DNS spoofing attack. +# +#networkaddress.cache.ttl=-1 + +# The Java-level namelookup cache policy for failed lookups: +# +# any negative value: cache forever +# any positive value: the number of seconds to cache negative lookup results +# zero: do not cache +# +# In some Microsoft Windows networking environments that employ +# the WINS name service in addition to DNS, name service lookups +# that fail may take a noticeably long time to return (approx. 5 seconds). +# For this reason the default caching policy is to maintain these +# results for 10 seconds. +# +# +networkaddress.cache.negative.ttl=10 + +# +# Properties to configure OCSP for certificate revocation checking +# + +# Enable OCSP +# +# By default, OCSP is not used for certificate revocation checking. +# This property enables the use of OCSP when set to the value "true". +# +# NOTE: SocketPermission is required to connect to an OCSP responder. +# +# Example, +# ocsp.enable=true + +# +# Location of the OCSP responder +# +# By default, the location of the OCSP responder is determined implicitly +# from the certificate being validated. This property explicitly specifies +# the location of the OCSP responder. The property is used when the +# Authority Information Access extension (defined in RFC 3280) is absent +# from the certificate or when it requires overriding. +# +# Example, +# ocsp.responderURL=http://ocsp.example.net:80 + +# +# Subject name of the OCSP responder's certificate +# +# By default, the certificate of the OCSP responder is that of the issuer +# of the certificate being validated. This property identifies the certificate +# of the OCSP responder when the default does not apply. Its value is a string +# distinguished name (defined in RFC 2253) which identifies a certificate in +# the set of certificates supplied during cert path validation. In cases where +# the subject name alone is not sufficient to uniquely identify the certificate +# then both the "ocsp.responderCertIssuerName" and +# "ocsp.responderCertSerialNumber" properties must be used instead. When this +# property is set then those two properties are ignored. +# +# Example, +# ocsp.responderCertSubjectName="CN=OCSP Responder, O=XYZ Corp" + +# +# Issuer name of the OCSP responder's certificate +# +# By default, the certificate of the OCSP responder is that of the issuer +# of the certificate being validated. This property identifies the certificate +# of the OCSP responder when the default does not apply. Its value is a string +# distinguished name (defined in RFC 2253) which identifies a certificate in +# the set of certificates supplied during cert path validation. When this +# property is set then the "ocsp.responderCertSerialNumber" property must also +# be set. When the "ocsp.responderCertSubjectName" property is set then this +# property is ignored. +# +# Example, +# ocsp.responderCertIssuerName="CN=Enterprise CA, O=XYZ Corp" + +# +# Serial number of the OCSP responder's certificate +# +# By default, the certificate of the OCSP responder is that of the issuer +# of the certificate being validated. This property identifies the certificate +# of the OCSP responder when the default does not apply. Its value is a string +# of hexadecimal digits (colon or space separators may be present) which +# identifies a certificate in the set of certificates supplied during cert path +# validation. When this property is set then the "ocsp.responderCertIssuerName" +# property must also be set. When the "ocsp.responderCertSubjectName" property +# is set then this property is ignored. +# +# Example, +# ocsp.responderCertSerialNumber=2A:FF:00 + +# +# Policy for failed Kerberos KDC lookups: +# +# When a KDC is unavailable (network error, service failure, etc), it is +# put inside a blacklist and accessed less often for future requests. The +# value (case-insensitive) for this policy can be: +# +# tryLast +# KDCs in the blacklist are always tried after those not on the list. +# +# tryLess[:max_retries,timeout] +# KDCs in the blacklist are still tried by their order in the configuration, +# but with smaller max_retries and timeout values. max_retries and timeout +# are optional numerical parameters (default 1 and 5000, which means once +# and 5 seconds). Please notes that if any of the values defined here is +# more than what is defined in krb5.conf, it will be ignored. +# +# Whenever a KDC is detected as available, it is removed from the blacklist. +# The blacklist is reset when krb5.conf is reloaded. You can add +# refreshKrb5Config=true to a JAAS configuration file so that krb5.conf is +# reloaded whenever a JAAS authentication is attempted. +# +# Example, +# krb5.kdc.bad.policy = tryLast +# krb5.kdc.bad.policy = tryLess:2,2000 +krb5.kdc.bad.policy = tryLast + +# Algorithm restrictions for certification path (CertPath) processing +# +# In some environments, certain algorithms or key lengths may be undesirable +# for certification path building and validation. For example, "MD2" is +# generally no longer considered to be a secure hash algorithm. This section +# describes the mechanism for disabling algorithms based on algorithm name +# and/or key length. This includes algorithms used in certificates, as well +# as revocation information such as CRLs and signed OCSP Responses. +# +# The syntax of the disabled algorithm string is described as this Java +# BNF-style: +# DisabledAlgorithms: +# " DisabledAlgorithm { , DisabledAlgorithm } " +# +# DisabledAlgorithm: +# AlgorithmName [Constraint] +# +# AlgorithmName: +# (see below) +# +# Constraint: +# KeySizeConstraint +# +# KeySizeConstraint: +# keySize Operator DecimalInteger +# +# Operator: +# <= | < | == | != | >= | > +# +# DecimalInteger: +# DecimalDigits +# +# DecimalDigits: +# DecimalDigit {DecimalDigit} +# +# DecimalDigit: one of +# 1 2 3 4 5 6 7 8 9 0 +# +# The "AlgorithmName" is the standard algorithm name of the disabled +# algorithm. See "Java Cryptography Architecture Standard Algorithm Name +# Documentation" for information about Standard Algorithm Names. Matching +# is performed using a case-insensitive sub-element matching rule. (For +# example, in "SHA1withECDSA" the sub-elements are "SHA1" for hashing and +# "ECDSA" for signatures.) If the assertion "AlgorithmName" is a +# sub-element of the certificate algorithm name, the algorithm will be +# rejected during certification path building and validation. For example, +# the assertion algorithm name "DSA" will disable all certificate algorithms +# that rely on DSA, such as NONEwithDSA, SHA1withDSA. However, the assertion +# will not disable algorithms related to "ECDSA". +# +# A "Constraint" provides further guidance for the algorithm being specified. +# The "KeySizeConstraint" requires a key of a valid size range if the +# "AlgorithmName" is of a key algorithm. The "DecimalInteger" indicates the +# key size specified in number of bits. For example, "RSA keySize <= 1024" +# indicates that any RSA key with key size less than or equal to 1024 bits +# should be disabled, and "RSA keySize < 1024, RSA keySize > 2048" indicates +# that any RSA key with key size less than 1024 or greater than 2048 should +# be disabled. Note that the "KeySizeConstraint" only makes sense to key +# algorithms. +# +# Note: This property is currently used by Oracle's PKIX implementation. It +# is not guaranteed to be examined and used by other implementations. +# +# Example: +# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048 +# +# +jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024 + +# Algorithm restrictions for Secure Socket Layer/Transport Layer Security +# (SSL/TLS) processing +# +# In some environments, certain algorithms or key lengths may be undesirable +# when using SSL/TLS. This section describes the mechanism for disabling +# algorithms during SSL/TLS security parameters negotiation, including cipher +# suites selection, peer authentication and key exchange mechanisms. +# +# For PKI-based peer authentication and key exchange mechanisms, this list +# of disabled algorithms will also be checked during certification path +# building and validation, including algorithms used in certificates, as +# well as revocation information such as CRLs and signed OCSP Responses. +# This is in addition to the jdk.certpath.disabledAlgorithms property above. +# +# See the specification of "jdk.certpath.disabledAlgorithms" for the +# syntax of the disabled algorithm string. +# +# Note: This property is currently used by Oracle's JSSE implementation. +# It is not guaranteed to be examined and used by other implementations. +# +# Example: +# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048 + diff --git a/jdk/src/share/native/common/check_code.c b/jdk/src/share/native/common/check_code.c index 6a114f1f02b..92d96b19675 100644 --- a/jdk/src/share/native/common/check_code.c +++ b/jdk/src/share/native/common/check_code.c @@ -90,6 +90,41 @@ #include "classfile_constants.h" #include "opcodes.in_out" +/* On AIX malloc(0) and calloc(0, ...) return a NULL pointer, which is legal, + * but the code here does not handles it. So we wrap the methods and return non-NULL + * pointers even if we allocate 0 bytes. + */ +#ifdef _AIX +static int aix_dummy; +static void* aix_malloc(size_t len) { + if (len == 0) { + return &aix_dummy; + } + return malloc(len); +} + +static void* aix_calloc(size_t n, size_t size) { + if (n == 0) { + return &aix_dummy; + } + return calloc(n, size); +} + +static void aix_free(void* p) { + if (p == &aix_dummy) { + return; + } + free(p); +} + +#undef malloc +#undef calloc +#undef free +#define malloc aix_malloc +#define calloc aix_calloc +#define free aix_free +#endif + #ifdef __APPLE__ /* use setjmp/longjmp versions that do not save/restore the signal mask */ #define setjmp _setjmp diff --git a/jdk/src/share/native/java/net/net_util.c b/jdk/src/share/native/java/net/net_util.c index 54aef661bc2..f8a0e90b532 100644 --- a/jdk/src/share/native/java/net/net_util.c +++ b/jdk/src/share/native/java/net/net_util.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 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 @@ -67,7 +67,7 @@ JNI_OnLoad(JavaVM *vm, void *reserved) supporting socket APIs are available */ IPv6_available = IPv6_supported() & (!preferIPv4Stack); - initLocalAddrTable (); + platformInit(); parseExclusiveBindProperty(env); return JNI_VERSION_1_2; diff --git a/jdk/src/share/native/java/net/net_util.h b/jdk/src/share/native/java/net/net_util.h index d38a5f52fcf..c7224945566 100644 --- a/jdk/src/share/native/java/net/net_util.h +++ b/jdk/src/share/native/java/net/net_util.h @@ -140,7 +140,7 @@ NET_InetAddressToSockaddr(JNIEnv *env, jobject iaObj, int port, struct sockaddr JNIEXPORT jobject JNICALL NET_SockaddrToInetAddress(JNIEnv *env, struct sockaddr *him, int *port); -void initLocalAddrTable (); +void platformInit(); void parseExclusiveBindProperty(JNIEnv *env); void diff --git a/jdk/src/share/native/sun/awt/medialib/mlib_sys.c b/jdk/src/share/native/sun/awt/medialib/mlib_sys.c index 70d052051fd..2c07527cd0b 100644 --- a/jdk/src/share/native/sun/awt/medialib/mlib_sys.c +++ b/jdk/src/share/native/sun/awt/medialib/mlib_sys.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved. + * 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 @@ -86,10 +86,13 @@ __typeof__ ( __mlib_sincosf) mlib_sincosf void *__mlib_malloc(mlib_u32 size) { -#ifdef _MSC_VER +#if defined(_MSC_VER) || defined(AIX) /* * Currently, all MS C compilers for Win32 platforms default to 8 byte * alignment. -- from stdlib.h of MS VC++5.0. + * + * On AIX, the malloc subroutine returns a pointer to space suitably + * aligned for the storage of any type of object (see 'man malloc'). */ return (void *) malloc(size); #elif defined(MACOSX) diff --git a/jdk/src/share/native/sun/awt/medialib/mlib_types.h b/jdk/src/share/native/sun/awt/medialib/mlib_types.h index 10c3cd3039e..aba0394ffd4 100644 --- a/jdk/src/share/native/sun/awt/medialib/mlib_types.h +++ b/jdk/src/share/native/sun/awt/medialib/mlib_types.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved. + * 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 @@ -57,7 +57,7 @@ typedef unsigned int mlib_u32; typedef float mlib_f32; typedef double mlib_d64; -#if defined(__SUNPRO_C) || defined(__SUNPRO_CC) || defined(__GNUC__) +#if defined(__SUNPRO_C) || defined(__SUNPRO_CC) || defined(__GNUC__) || defined(_AIX) #include #include diff --git a/jdk/src/share/native/sun/font/layout/KernTable.cpp b/jdk/src/share/native/sun/font/layout/KernTable.cpp index 2d946513fb8..b0750f56269 100644 --- a/jdk/src/share/native/sun/font/layout/KernTable.cpp +++ b/jdk/src/share/native/sun/font/layout/KernTable.cpp @@ -39,7 +39,7 @@ #include -#define DEBUG 0 +#define DEBUG_KERN_TABLE 0 U_NAMESPACE_BEGIN @@ -99,14 +99,14 @@ KernTable::KernTable(const LETableReference& base, LEErrorCode &success) : pairsSwapped(NULL), fTable(base) { if(LE_FAILURE(success) || (fTable.isEmpty())) { -#if DEBUG +#if DEBUG_KERN_TABLE fprintf(stderr, "no kern data\n"); #endif return; } LEReferenceTo header(fTable, success); -#if DEBUG +#if DEBUG_KERN_TABLE // dump first 32 bytes of header for (int i = 0; i < 64; ++i) { fprintf(stderr, "%0.2x ", ((const char*)header.getAlias())[i]&0xff); @@ -171,7 +171,7 @@ KernTable::KernTable(const LETableReference& base, LEErrorCode &success) fprintf(stderr, " searchRange: %d entrySelector: %d rangeShift: %d\n", searchRange, entrySelector, rangeShift); fprintf(stderr, "[[ ignored font table entries: range %d selector %d shift %d ]]\n", SWAPW(table->searchRange), SWAPW(table->entrySelector), SWAPW(table->rangeShift)); #endif -#if DEBUG +#if DEBUG_KERN_TABLE fprintf(stderr, "coverage: %0.4x nPairs: %d pairs 0x%x\n", coverage, nPairs, pairsSwapped); fprintf(stderr, " searchRange(pairs): %d entrySelector: %d rangeShift(pairs): %d\n", @@ -242,7 +242,7 @@ void KernTable::process(LEGlyphStorage& storage, LEErrorCode &success) p = tp; } -#if DEBUG +#if DEBUG_KERN_TABLE fprintf(stderr, "binary search for %0.8x\n", key); #endif @@ -251,13 +251,13 @@ void KernTable::process(LEGlyphStorage& storage, LEErrorCode &success) probe >>= 1; tp = (const PairInfo*)(p + (probe/KERN_PAIRINFO_SIZE)); le_uint32 tkey = tp->key; -#if DEBUG +#if DEBUG_KERN_TABLE fprintf(stdout, " %.3d (%0.8x)\n", (tp - pairsSwapped), tkey); #endif if (tkey <= key) { if (tkey == key) { le_int16 value = SWAPW(tp->value); -#if DEBUG +#if DEBUG_KERN_TABLE fprintf(stdout, "binary found kerning pair %x:%x at %d, value: 0x%x (%g)\n", storage[i-1], storage[i], i, value & 0xffff, font->xUnitsToPoints(value)); fflush(stdout); diff --git a/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h b/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h index 8a8acfc688e..40d2e335514 100644 --- a/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h +++ b/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h @@ -65,6 +65,13 @@ typedef unsigned long ulong_t; typedef enum boolean { B_FALSE, B_TRUE } boolean_t; #endif /* _ALLBSD_SOURCE */ +#ifdef AIX +#define B_FALSE FALSE +#define B_TRUE TRUE +typedef unsigned char uint8_t; +typedef unsigned long ulong_t; +#endif /* AIX */ + #ifdef _WIN32 typedef unsigned char uint8_t; typedef unsigned long ulong_t; diff --git a/jdk/src/solaris/back/exec_md.c b/jdk/src/solaris/back/exec_md.c index eebfae1f7e7..b756be3297a 100644 --- a/jdk/src/solaris/back/exec_md.c +++ b/jdk/src/solaris/back/exec_md.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 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 @@ -30,8 +30,8 @@ #include "sys.h" #include "util.h" -#if defined(LINUX) || defined(_ALLBSD_SOURCE) - /* Linux */ +#if defined(LINUX) || defined(_ALLBSD_SOURCE) || defined(AIX) + /* Linux, BSD, AIX */ #define FORK() fork() #else /* Solaris (make sure we always get the POSIX-specified behavior) */ diff --git a/jdk/src/solaris/bin/java_md_solinux.c b/jdk/src/solaris/bin/java_md_solinux.c index 52f9cfe468a..d2337d7120f 100644 --- a/jdk/src/solaris/bin/java_md_solinux.c +++ b/jdk/src/solaris/bin/java_md_solinux.c @@ -41,7 +41,11 @@ #define JVM_DLL "libjvm.so" #define JAVA_DLL "libjava.so" +#ifdef AIX +#define LD_LIBRARY_PATH "LIBPATH" +#else #define LD_LIBRARY_PATH "LD_LIBRARY_PATH" +#endif /* help jettison the LD_LIBRARY_PATH settings in the future */ #ifndef SETENV_REQUIRED @@ -287,6 +291,11 @@ RequiresSetenv(int wanted, const char *jvmpath) { char *dmllp = NULL; char *p; /* a utility pointer */ +#ifdef AIX + /* We always have to set the LIBPATH on AIX because ld doesn't support $ORIGIN. */ + return JNI_TRUE; +#endif + llp = getenv("LD_LIBRARY_PATH"); #ifdef __solaris__ dmllp = (CURRENT_DATA_MODEL == 32) @@ -598,7 +607,7 @@ CreateExecutionEnvironment(int *pargc, char ***pargv, * If not on Solaris, assume only a single LD_LIBRARY_PATH * variable. */ - runpath = getenv("LD_LIBRARY_PATH"); + runpath = getenv(LD_LIBRARY_PATH); #endif /* __solaris__ */ /* runpath contains current effective LD_LIBRARY_PATH setting */ @@ -606,8 +615,12 @@ CreateExecutionEnvironment(int *pargc, char ***pargv, jvmpath = JLI_StringDup(jvmpath); new_runpath = JLI_MemAlloc(((runpath != NULL) ? JLI_StrLen(runpath) : 0) + 2 * JLI_StrLen(jrepath) + 2 * JLI_StrLen(arch) + +#ifdef AIX + /* On AIX we additionally need 'jli' in the path because ld doesn't support $ORIGIN. */ + JLI_StrLen(jrepath) + JLI_StrLen(arch) + JLI_StrLen("/lib//jli:") + +#endif JLI_StrLen(jvmpath) + 52); - newpath = new_runpath + JLI_StrLen("LD_LIBRARY_PATH="); + newpath = new_runpath + JLI_StrLen(LD_LIBRARY_PATH "="); /* @@ -619,9 +632,12 @@ CreateExecutionEnvironment(int *pargc, char ***pargv, if (lastslash) *lastslash = '\0'; - sprintf(new_runpath, "LD_LIBRARY_PATH=" + sprintf(new_runpath, LD_LIBRARY_PATH "=" "%s:" "%s/lib/%s:" +#ifdef AIX + "%s/lib/%s/jli:" /* Needed on AIX because ld doesn't support $ORIGIN. */ +#endif "%s/../lib/%s", jvmpath, #ifdef DUAL_MODE @@ -629,6 +645,9 @@ CreateExecutionEnvironment(int *pargc, char ***pargv, jrepath, GetArchPath(wanted) #else /* !DUAL_MODE */ jrepath, arch, +#ifdef AIX + jrepath, arch, +#endif jrepath, arch #endif /* DUAL_MODE */ ); @@ -1000,7 +1019,7 @@ void SplashFreeLibrary() { int ContinueInNewThread0(int (JNICALL *continuation)(void *), jlong stack_size, void * args) { int rslt; -#ifdef __linux__ +#ifndef __solaris__ pthread_t tid; pthread_attr_t attr; pthread_attr_init(&attr); @@ -1025,7 +1044,7 @@ ContinueInNewThread0(int (JNICALL *continuation)(void *), jlong stack_size, void } pthread_attr_destroy(&attr); -#else /* ! __linux__ */ +#else /* __solaris__ */ thread_t tid; long flags = 0; if (thr_create(NULL, stack_size, (void *(*)(void *))continuation, args, flags, &tid) == 0) { @@ -1036,7 +1055,7 @@ ContinueInNewThread0(int (JNICALL *continuation)(void *), jlong stack_size, void /* See above. Continue in current thread if thr_create() failed */ rslt = continuation(args); } -#endif /* __linux__ */ +#endif /* !__solaris__ */ return rslt; } diff --git a/jdk/src/solaris/bin/java_md_solinux.h b/jdk/src/solaris/bin/java_md_solinux.h index a9e4438a5e2..3f1dc115b4d 100644 --- a/jdk/src/solaris/bin/java_md_solinux.h +++ b/jdk/src/solaris/bin/java_md_solinux.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 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 @@ -45,23 +45,19 @@ extern char **environ; * A collection of useful strings. One should think of these as #define * entries, but actual strings can be more efficient (with many compilers). */ -#ifdef __linux__ -static const char *system_dir = "/usr/java"; -static const char *user_dir = "/java"; -#else /* Solaris */ +#ifdef __solaris__ static const char *system_dir = "/usr/jdk"; static const char *user_dir = "/jdk"; +#else /* !__solaris__, i.e. Linux, AIX,.. */ +static const char *system_dir = "/usr/java"; +static const char *user_dir = "/java"; #endif #include -#ifdef __linux__ -#include -#else +#ifdef __solaris__ #include +#else +#include #endif -#define JVM_DLL "libjvm.so" -#define JAVA_DLL "libjava.so" -#define LD_LIBRARY_PATH "LD_LIBRARY_PATH" - #endif /* JAVA_MD_SOLINUX_H */ diff --git a/jdk/src/solaris/classes/java/lang/UNIXProcess.java.aix b/jdk/src/solaris/classes/java/lang/UNIXProcess.java.aix new file mode 100644 index 00000000000..ad90d069409 --- /dev/null +++ b/jdk/src/solaris/classes/java/lang/UNIXProcess.java.aix @@ -0,0 +1,419 @@ +/* + * Copyright (c) 1995, 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. + */ + +package java.lang; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.ByteArrayInputStream; +import java.io.FileDescriptor; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Arrays; +import java.util.concurrent.Executors; +import java.util.concurrent.Executor; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.TimeUnit; +import java.security.AccessController; +import static java.security.AccessController.doPrivileged; +import java.security.PrivilegedAction; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; + +/** + * java.lang.Process subclass in the UNIX environment. + * + * @author Mario Wolczko and Ross Knippel. + * @author Konstantin Kladko (ported to Linux) + * @author Martin Buchholz + * @author Volker Simonis (ported to AIX) + */ +final class UNIXProcess extends Process { + private static final sun.misc.JavaIOFileDescriptorAccess fdAccess + = sun.misc.SharedSecrets.getJavaIOFileDescriptorAccess(); + + private final int pid; + private int exitcode; + private boolean hasExited; + + private /* final */ OutputStream stdin; + private /* final */ InputStream stdout; + private /* final */ InputStream stderr; + + private static enum LaunchMechanism { + FORK(1), + POSIX_SPAWN(2); + + private int value; + LaunchMechanism(int x) {value = x;} + }; + + /* On AIX, the default is to spawn */ + private static final LaunchMechanism launchMechanism; + private static byte[] helperpath; + + private static byte[] toCString(String s) { + if (s == null) + return null; + byte[] bytes = s.getBytes(); + byte[] result = new byte[bytes.length + 1]; + System.arraycopy(bytes, 0, + result, 0, + bytes.length); + result[result.length-1] = (byte)0; + return result; + } + + static { + launchMechanism = AccessController.doPrivileged( + new PrivilegedAction() + { + public LaunchMechanism run() { + String javahome = System.getProperty("java.home"); + String osArch = System.getProperty("os.arch"); + + helperpath = toCString(javahome + "/lib/" + osArch + "/jspawnhelper"); + String s = System.getProperty( + "jdk.lang.Process.launchMechanism", "posix_spawn"); + + try { + return LaunchMechanism.valueOf(s.toUpperCase()); + } catch (IllegalArgumentException e) { + throw new Error(s + " is not a supported " + + "process launch mechanism on this platform."); + } + } + }); + } + + /* this is for the reaping thread */ + private native int waitForProcessExit(int pid); + + /** + * Create a process. Depending on the mode flag, this is done by + * one of the following mechanisms. + * - fork(2) and exec(2) + * - clone(2) and exec(2) + * - vfork(2) and exec(2) + * + * @param fds an array of three file descriptors. + * Indexes 0, 1, and 2 correspond to standard input, + * standard output and standard error, respectively. On + * input, a value of -1 means to create a pipe to connect + * child and parent processes. On output, a value which + * is not -1 is the parent pipe fd corresponding to the + * pipe which has been created. An element of this array + * is -1 on input if and only if it is not -1 on + * output. + * @return the pid of the subprocess + */ + private native int forkAndExec(int mode, byte[] helperpath, + byte[] prog, + byte[] argBlock, int argc, + byte[] envBlock, int envc, + byte[] dir, + int[] fds, + boolean redirectErrorStream) + throws IOException; + + /** + * The thread factory used to create "process reaper" daemon threads. + */ + private static class ProcessReaperThreadFactory implements ThreadFactory { + private final static ThreadGroup group = getRootThreadGroup(); + + private static ThreadGroup getRootThreadGroup() { + return doPrivileged(new PrivilegedAction () { + public ThreadGroup run() { + ThreadGroup root = Thread.currentThread().getThreadGroup(); + while (root.getParent() != null) + root = root.getParent(); + return root; + }}); + } + + public Thread newThread(Runnable grimReaper) { + // Our thread stack requirement is quite modest. + Thread t = new Thread(group, grimReaper, "process reaper", 32768); + t.setDaemon(true); + // A small attempt (probably futile) to avoid priority inversion + t.setPriority(Thread.MAX_PRIORITY); + return t; + } + } + + /** + * The thread pool of "process reaper" daemon threads. + */ + private static final Executor processReaperExecutor = + doPrivileged(new PrivilegedAction() { + public Executor run() { + return Executors.newCachedThreadPool + (new ProcessReaperThreadFactory()); + }}); + + UNIXProcess(final byte[] prog, + final byte[] argBlock, final int argc, + final byte[] envBlock, final int envc, + final byte[] dir, + final int[] fds, + final boolean redirectErrorStream) + throws IOException { + + pid = forkAndExec(launchMechanism.value, + helperpath, + prog, + argBlock, argc, + envBlock, envc, + dir, + fds, + redirectErrorStream); + + try { + doPrivileged(new PrivilegedExceptionAction() { + public Void run() throws IOException { + initStreams(fds); + return null; + }}); + } catch (PrivilegedActionException ex) { + throw (IOException) ex.getException(); + } + } + + static FileDescriptor newFileDescriptor(int fd) { + FileDescriptor fileDescriptor = new FileDescriptor(); + fdAccess.set(fileDescriptor, fd); + return fileDescriptor; + } + + void initStreams(int[] fds) throws IOException { + stdin = (fds[0] == -1) ? + ProcessBuilder.NullOutputStream.INSTANCE : + new ProcessPipeOutputStream(fds[0]); + + stdout = (fds[1] == -1) ? + ProcessBuilder.NullInputStream.INSTANCE : + new ProcessPipeInputStream(fds[1]); + + stderr = (fds[2] == -1) ? + ProcessBuilder.NullInputStream.INSTANCE : + new ProcessPipeInputStream(fds[2]); + + processReaperExecutor.execute(new Runnable() { + public void run() { + int exitcode = waitForProcessExit(pid); + UNIXProcess.this.processExited(exitcode); + }}); + } + + void processExited(int exitcode) { + synchronized (this) { + this.exitcode = exitcode; + hasExited = true; + notifyAll(); + } + + if (stdout instanceof ProcessPipeInputStream) + ((ProcessPipeInputStream) stdout).processExited(); + + if (stderr instanceof ProcessPipeInputStream) + ((ProcessPipeInputStream) stderr).processExited(); + + if (stdin instanceof ProcessPipeOutputStream) + ((ProcessPipeOutputStream) stdin).processExited(); + } + + public OutputStream getOutputStream() { + return stdin; + } + + public InputStream getInputStream() { + return stdout; + } + + public InputStream getErrorStream() { + return stderr; + } + + public synchronized int waitFor() throws InterruptedException { + while (!hasExited) { + wait(); + } + return exitcode; + } + + @Override + public synchronized boolean waitFor(long timeout, TimeUnit unit) + throws InterruptedException + { + if (hasExited) return true; + if (timeout <= 0) return false; + + long timeoutAsNanos = unit.toNanos(timeout); + long startTime = System.nanoTime(); + long rem = timeoutAsNanos; + + while (!hasExited && (rem > 0)) { + wait(Math.max(TimeUnit.NANOSECONDS.toMillis(rem), 1)); + rem = timeoutAsNanos - (System.nanoTime() - startTime); + } + return hasExited; + } + + public synchronized int exitValue() { + if (!hasExited) { + throw new IllegalThreadStateException("process hasn't exited"); + } + return exitcode; + } + + private static native void destroyProcess(int pid, boolean force); + private void destroy(boolean force) { + // There is a risk that pid will be recycled, causing us to + // kill the wrong process! So we only terminate processes + // that appear to still be running. Even with this check, + // there is an unavoidable race condition here, but the window + // is very small, and OSes try hard to not recycle pids too + // soon, so this is quite safe. + synchronized (this) { + if (!hasExited) + destroyProcess(pid, force); + } + try { stdin.close(); } catch (IOException ignored) {} + try { stdout.close(); } catch (IOException ignored) {} + try { stderr.close(); } catch (IOException ignored) {} + } + + public void destroy() { + destroy(false); + } + + @Override + public Process destroyForcibly() { + destroy(true); + return this; + } + + @Override + public synchronized boolean isAlive() { + return !hasExited; + } + + private static native void init(); + + static { + init(); + } + + /** + * A buffered input stream for a subprocess pipe file descriptor + * that allows the underlying file descriptor to be reclaimed when + * the process exits, via the processExited hook. + * + * This is tricky because we do not want the user-level InputStream to be + * closed until the user invokes close(), and we need to continue to be + * able to read any buffered data lingering in the OS pipe buffer. + */ + static class ProcessPipeInputStream extends BufferedInputStream { + private final Object closeLock = new Object(); + + ProcessPipeInputStream(int fd) { + super(new FileInputStream(newFileDescriptor(fd))); + } + + private InputStream drainInputStream(InputStream in) + throws IOException { + int n = 0; + int j; + byte[] a = null; + synchronized (closeLock) { + if (buf == null) // asynchronous close()? + return null; // discard + j = in.available(); + } + while (j > 0) { + a = (a == null) ? new byte[j] : Arrays.copyOf(a, n + j); + synchronized (closeLock) { + if (buf == null) // asynchronous close()? + return null; // discard + n += in.read(a, n, j); + j = in.available(); + } + } + return (a == null) ? + ProcessBuilder.NullInputStream.INSTANCE : + new ByteArrayInputStream(n == a.length ? a : Arrays.copyOf(a, n)); + } + + /** Called by the process reaper thread when the process exits. */ + synchronized void processExited() { + try { + InputStream in = this.in; + if (in != null) { + InputStream stragglers = drainInputStream(in); + in.close(); + this.in = stragglers; + } + } catch (IOException ignored) { } + } + + @Override + public void close() throws IOException { + // BufferedInputStream#close() is not synchronized unlike most other methods. + // Synchronizing helps avoid racing with drainInputStream(). + synchronized (closeLock) { + super.close(); + } + } + } + + /** + * A buffered output stream for a subprocess pipe file descriptor + * that allows the underlying file descriptor to be reclaimed when + * the process exits, via the processExited hook. + */ + static class ProcessPipeOutputStream extends BufferedOutputStream { + ProcessPipeOutputStream(int fd) { + super(new FileOutputStream(newFileDescriptor(fd))); + } + + /** Called by the process reaper thread when the process exits. */ + synchronized void processExited() { + OutputStream out = this.out; + if (out != null) { + try { + out.close(); + } catch (IOException ignored) { + // We know of no reason to get an IOException, but if + // we do, there's nothing else to do but carry on. + } + this.out = ProcessBuilder.NullOutputStream.INSTANCE; + } + } + } +} diff --git a/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java b/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java index 667c51ab59f..7a0ce392299 100644 --- a/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java +++ b/jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java @@ -68,6 +68,8 @@ public class DefaultAsynchronousChannelProvider { return createProvider("sun.nio.ch.LinuxAsynchronousChannelProvider"); if (osname.contains("OS X")) return createProvider("sun.nio.ch.BsdAsynchronousChannelProvider"); + if (osname.equals("AIX")) + return createProvider("sun.nio.ch.AixAsynchronousChannelProvider"); throw new InternalError("platform not recognized"); } } diff --git a/jdk/src/solaris/classes/sun/nio/ch/Port.java b/jdk/src/solaris/classes/sun/nio/ch/Port.java index 94025089933..a644a0f75b9 100644 --- a/jdk/src/solaris/classes/sun/nio/ch/Port.java +++ b/jdk/src/solaris/classes/sun/nio/ch/Port.java @@ -76,12 +76,22 @@ abstract class Port extends AsynchronousChannelGroupImpl { } } + /** + * Callback method for implementations that need special handling when fd is + * removed (currently only needed in the AIX-Port - see AixPollPort.java). + */ + protected void preUnregister(int fd) { + // Do nothing by default. + } + /** * Unregister channel identified by its file descriptor */ final void unregister(int fd) { boolean checkForShutdown = false; + preUnregister(fd); + fdToChannelLock.writeLock().lock(); try { fdToChannel.remove(Integer.valueOf(fd)); diff --git a/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java b/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java index d909916450e..595f3c6d187 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java +++ b/jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java @@ -63,6 +63,8 @@ public class DefaultFileSystemProvider { return createProvider("sun.nio.fs.LinuxFileSystemProvider"); if (osname.contains("OS X")) return createProvider("sun.nio.fs.MacOSXFileSystemProvider"); + if (osname.equals("AIX")) + return createProvider("sun.nio.fs.AixFileSystemProvider"); throw new AssertionError("Platform not recognized"); } } diff --git a/jdk/src/solaris/demo/jvmti/hprof/hprof_md.c b/jdk/src/solaris/demo/jvmti/hprof/hprof_md.c index 9cfcc592c3a..78a4f606735 100644 --- a/jdk/src/solaris/demo/jvmti/hprof/hprof_md.c +++ b/jdk/src/solaris/demo/jvmti/hprof/hprof_md.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -42,7 +42,7 @@ #include #include -#if !defined(LINUX) && !defined(_ALLBSD_SOURCE) +#if !defined(LINUX) && !defined(_ALLBSD_SOURCE) && !defined(AIX) #include #endif @@ -65,6 +65,10 @@ #include "jvm_md.h" #include "hprof.h" +#ifdef AIX +#include "porting_aix.h" /* For the 'dladdr' function. */ +#endif + int md_getpid(void) { @@ -86,7 +90,7 @@ md_sleep(unsigned seconds) void md_init(void) { -#if defined(LINUX) || defined(_ALLBSD_SOURCE) +#if defined(LINUX) || defined(_ALLBSD_SOURCE) || defined(AIX) /* No Hi-Res timer option? */ #else if ( gdata->micro_state_accounting ) { @@ -253,7 +257,7 @@ md_timeofday(void) jlong md_get_microsecs(void) { -#if defined(LINUX) || defined(_ALLBSD_SOURCE) +#if defined(LINUX) || defined(_ALLBSD_SOURCE) || defined(AIX) return (jlong)(md_timeofday() * (jlong)1000); /* Milli to micro */ #else return (jlong)(gethrtime()/(hrtime_t)1000); /* Nano seconds to micro seconds */ @@ -271,7 +275,7 @@ md_get_timemillis(void) jlong md_get_thread_cpu_timemillis(void) { -#if defined(LINUX) || defined(_ALLBSD_SOURCE) +#if defined(LINUX) || defined(_ALLBSD_SOURCE) || defined(AIX) return md_timeofday(); #else return (jlong)(gethrvtime()/1000); /* Nano seconds to milli seconds */ @@ -286,7 +290,7 @@ md_get_prelude_path(char *path, int path_len, char *filename) Dl_info dlinfo; libdir[0] = 0; -#if defined(LINUX) || defined(_ALLBSD_SOURCE) +#if defined(LINUX) || defined(_ALLBSD_SOURCE) || defined(AIX) addr = (void*)&Agent_OnLoad; #else /* Just using &Agent_OnLoad will get the first external symbol with @@ -457,3 +461,5 @@ md_find_library_entry(void *handle, const char *name) sym = dlsym(handle, name); return sym; } + + diff --git a/jdk/src/solaris/native/common/jdk_util_md.h b/jdk/src/solaris/native/common/jdk_util_md.h index d9fd2a2557f..c13bb7794e4 100644 --- a/jdk/src/solaris/native/common/jdk_util_md.h +++ b/jdk/src/solaris/native/common/jdk_util_md.h @@ -39,6 +39,10 @@ #include #define ISNANF(f) isnanf(f) #define ISNAND(d) isnan(d) +#elif defined(_AIX) +#include +#define ISNANF(f) _isnanf(f) +#define ISNAND(d) _isnan(d) #else #error "missing platform-specific definition here" #endif diff --git a/jdk/src/solaris/native/java/io/io_util_md.c b/jdk/src/solaris/native/java/io/io_util_md.c index e74bc127102..5899a410347 100644 --- a/jdk/src/solaris/native/java/io/io_util_md.c +++ b/jdk/src/solaris/native/java/io/io_util_md.c @@ -35,7 +35,7 @@ #include #endif -#if defined(__linux__) || defined(_ALLBSD_SOURCE) +#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(_AIX) #include #endif diff --git a/jdk/src/solaris/native/java/lang/UNIXProcess_md.c b/jdk/src/solaris/native/java/lang/UNIXProcess_md.c index 177031e5c74..ec85b685dc6 100644 --- a/jdk/src/solaris/native/java/lang/UNIXProcess_md.c +++ b/jdk/src/solaris/native/java/lang/UNIXProcess_md.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 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 @@ -44,7 +44,7 @@ #include #include -#if defined(__solaris__) || defined(_ALLBSD_SOURCE) +#if defined(__solaris__) || defined(_ALLBSD_SOURCE) || defined(_AIX) #include #endif @@ -455,7 +455,7 @@ forkChild(ChildStuff *c) { return resultPid; } -#if defined(__solaris__) || defined(_ALLBSD_SOURCE) +#if defined(__solaris__) || defined(_ALLBSD_SOURCE) || defined(_AIX) static pid_t spawnChild(JNIEnv *env, jobject process, ChildStuff *c, const char *helperpath) { pid_t resultPid; @@ -551,7 +551,7 @@ startChild(JNIEnv *env, jobject process, ChildStuff *c, const char *helperpath) return vforkChild(c); case MODE_FORK: return forkChild(c); -#if defined(__solaris__) || defined(_ALLBSD_SOURCE) +#if defined(__solaris__) || defined(_ALLBSD_SOURCE) || defined(_AIX) case MODE_POSIX_SPAWN: return spawnChild(env, process, c, helperpath); #endif diff --git a/jdk/src/solaris/native/java/lang/childproc.c b/jdk/src/solaris/native/java/lang/childproc.c index 0cfcf6fe9a8..1d183cf1fb2 100644 --- a/jdk/src/solaris/native/java/lang/childproc.c +++ b/jdk/src/solaris/native/java/lang/childproc.c @@ -66,6 +66,9 @@ isAsciiDigit(char c) #define FD_DIR "/dev/fd" #define dirent64 dirent #define readdir64 readdir +#elif defined(_AIX) +/* AIX does not understand '/proc/self' - it requires the real process ID */ +#define FD_DIR aix_fd_dir #else #define FD_DIR "/proc/self/fd" #endif @@ -87,6 +90,12 @@ closeDescriptors(void) close(from_fd); /* for possible use by opendir() */ close(from_fd + 1); /* another one for good luck */ +#if defined(_AIX) + /* AIX does not understand '/proc/self' - it requires the real process ID */ + char aix_fd_dir[32]; /* the pid has at most 19 digits */ + snprintf(aix_fd_dir, 32, "/proc/%d/fd", getpid()); +#endif + if ((dp = opendir(FD_DIR)) == NULL) return 0; diff --git a/jdk/src/solaris/native/java/net/NetworkInterface.c b/jdk/src/solaris/native/java/net/NetworkInterface.c index b2ebd8e222b..51f8e41dfb1 100644 --- a/jdk/src/solaris/native/java/net/NetworkInterface.c +++ b/jdk/src/solaris/native/java/net/NetworkInterface.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 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 @@ -52,6 +52,13 @@ #include #endif +#if defined(_AIX) +#include +#include +#include +#include +#endif + #ifdef __linux__ #define _PATH_PROCNET_IFINET6 "/proc/net/if_inet6" #endif @@ -1041,8 +1048,8 @@ static int openSocket(JNIEnv *env, int proto){ } -/** Linux **/ -#ifdef __linux__ +/** Linux, AIX **/ +#if defined(__linux__) || defined(_AIX) /* Open socket for further ioct calls, try v4 socket first and * if it falls return v6 socket */ @@ -1080,11 +1087,13 @@ static int openSocketWithFallback(JNIEnv *env, const char *ifname){ static netif *enumIPv4Interfaces(JNIEnv *env, int sock, netif *ifs) { struct ifconf ifc; struct ifreq *ifreqP; - char *buf; + char *buf = NULL; int numifs; unsigned i; + int siocgifconfRequest = SIOCGIFCONF; +#if defined(__linux__) /* need to do a dummy SIOCGIFCONF to determine the buffer size. * SIOCGIFCOUNT doesn't work */ @@ -1093,11 +1102,21 @@ static netif *enumIPv4Interfaces(JNIEnv *env, int sock, netif *ifs) { NET_ThrowByNameWithLastError(env , JNU_JAVANETPKG "SocketException", "ioctl SIOCGIFCONF failed"); return ifs; } +#elif defined(_AIX) + ifc.ifc_buf = NULL; + if (ioctl(sock, SIOCGSIZIFCONF, &(ifc.ifc_len)) < 0) { + NET_ThrowByNameWithLastError(env , JNU_JAVANETPKG "SocketException", "ioctl SIOCGSIZIFCONF failed"); + return ifs; + } +#endif /* __linux__ */ CHECKED_MALLOC3(buf,char *, ifc.ifc_len); ifc.ifc_buf = buf; - if (ioctl(sock, SIOCGIFCONF, (char *)&ifc) < 0) { +#if defined(_AIX) + siocgifconfRequest = CSIOCGIFCONF; +#endif + if (ioctl(sock, siocgifconfRequest, (char *)&ifc) < 0) { NET_ThrowByNameWithLastError(env , JNU_JAVANETPKG "SocketException", "ioctl SIOCGIFCONF failed"); (void) free(buf); return ifs; @@ -1108,6 +1127,9 @@ static netif *enumIPv4Interfaces(JNIEnv *env, int sock, netif *ifs) { */ ifreqP = ifc.ifc_req; for (i=0; iifr_addr.sa_family != AF_INET) continue; +#endif /* * Add to the list */ @@ -1135,7 +1157,7 @@ static netif *enumIPv4Interfaces(JNIEnv *env, int sock, netif *ifs) { * Enumerates and returns all IPv6 interfaces on Linux */ -#ifdef AF_INET6 +#if defined(AF_INET6) && defined(__linux__) static netif *enumIPv6Interfaces(JNIEnv *env, int sock, netif *ifs) { FILE *f; char addr6[40], devname[21]; @@ -1179,11 +1201,103 @@ static netif *enumIPv6Interfaces(JNIEnv *env, int sock, netif *ifs) { #endif +/* + * Enumerates and returns all IPv6 interfaces on AIX + */ + +#if defined(AF_INET6) && defined(_AIX) +static netif *enumIPv6Interfaces(JNIEnv *env, int sock, netif *ifs) { + struct ifconf ifc; + struct ifreq *ifreqP; + char *buf; + int numifs; + unsigned i; + unsigned bufsize; + char *cp, *cplimit; + + /* use SIOCGSIZIFCONF to get size for SIOCGIFCONF */ + + ifc.ifc_buf = NULL; + if (ioctl(sock, SIOCGSIZIFCONF, &(ifc.ifc_len)) < 0) { + NET_ThrowByNameWithLastError(env , JNU_JAVANETPKG "SocketException", + "ioctl SIOCGSIZIFCONF failed"); + return ifs; + } + bufsize = ifc.ifc_len; + + buf = (char *)malloc(bufsize); + if (!buf) { + JNU_ThrowOutOfMemoryError(env, "Network interface native buffer allocation failed"); + return ifs; + } + ifc.ifc_len = bufsize; + ifc.ifc_buf = buf; + if (ioctl(sock, SIOCGIFCONF, (char *)&ifc) < 0) { + NET_ThrowByNameWithLastError(env , JNU_JAVANETPKG "SocketException", + "ioctl CSIOCGIFCONF failed"); + free(buf); + return ifs; + } + + /* + * Iterate through each interface + */ + ifreqP = ifc.ifc_req; + cp = (char *)ifc.ifc_req; + cplimit = cp + ifc.ifc_len; + + for ( ; cp < cplimit; cp += (sizeof(ifreqP->ifr_name) + MAX((ifreqP->ifr_addr).sa_len, sizeof(ifreqP->ifr_addr)))) { + ifreqP = (struct ifreq *)cp; + struct ifreq if2; + + memset((char *)&if2, 0, sizeof(if2)); + strcpy(if2.ifr_name, ifreqP->ifr_name); + + /* + * Skip interface that aren't UP + */ + if (ioctl(sock, SIOCGIFFLAGS, (char *)&if2) >= 0) { + if (!(if2.ifr_flags & IFF_UP)) { + continue; + } + } + + if (ifreqP->ifr_addr.sa_family != AF_INET6) + continue; + + /* + * Add to the list + */ + ifs = addif(env, sock, ifreqP->ifr_name, ifs, + (struct sockaddr *)&(ifreqP->ifr_addr), + AF_INET6, 0); + + /* + * If an exception occurred then free the list + */ + if ((*env)->ExceptionOccurred(env)) { + free(buf); + freeif(ifs); + return NULL; + } + } + + /* + * Free socket and buffer + */ + free(buf); + return ifs; +} +#endif + + static int getIndex(int sock, const char *name){ /* * Try to get the interface index - * (Not supported on Solaris 2.6 or 7) */ +#if defined(_AIX) + return if_nametoindex(name); +#else struct ifreq if2; strcpy(if2.ifr_name, name); @@ -1192,6 +1306,7 @@ static int getIndex(int sock, const char *name){ } return if2.ifr_ifindex; +#endif } /** @@ -1258,6 +1373,46 @@ static short getSubnet(JNIEnv *env, int sock, const char *ifname) { * MAC address. Returns -1 if there is no hardware address on that interface. */ static int getMacAddress(JNIEnv *env, int sock, const char* ifname, const struct in_addr* addr, unsigned char *buf) { +#if defined (_AIX) + int size; + struct kinfo_ndd *nddp; + void *end; + + size = getkerninfo(KINFO_NDD, 0, 0, 0); + if (size == 0) { + return -1; + } + + if (size < 0) { + perror("getkerninfo 1"); + return -1; + } + + nddp = (struct kinfo_ndd *)malloc(size); + + if (!nddp) { + return -1; + } + + if (getkerninfo(KINFO_NDD, nddp, &size, 0) < 0) { + perror("getkerninfo 2"); + return -1; + } + + end = (void *)nddp + size; + while ((void *)nddp < end) { + if (!strcmp(nddp->ndd_alias, ifname) || + !strcmp(nddp->ndd_name, ifname)) { + bcopy(nddp->ndd_addr, buf, 6); + return 6; + } else { + nddp++; + } + } + + return -1; + +#elif defined(__linux__) static struct ifreq ifr; int i; @@ -1279,6 +1434,7 @@ static int getMacAddress(JNIEnv *env, int sock, const char* ifname, const struct } return -1; +#endif } static int getMTU(JNIEnv *env, int sock, const char *ifname) { diff --git a/jdk/src/solaris/native/java/net/PlainSocketImpl.c b/jdk/src/solaris/native/java/net/PlainSocketImpl.c index b6f78b9c158..a4958efc512 100644 --- a/jdk/src/solaris/native/java/net/PlainSocketImpl.c +++ b/jdk/src/solaris/native/java/net/PlainSocketImpl.c @@ -963,7 +963,7 @@ Java_java_net_PlainSocketImpl_socketSetOption(JNIEnv *env, jobject this, } if (NET_SetSockOpt(fd, level, optname, (const void *)&optval, optlen) < 0) { -#ifdef __solaris__ +#if defined(__solaris__) || defined(_AIX) if (errno == EINVAL) { // On Solaris setsockopt will set errno to EINVAL if the socket // is closed. The default error message is then confusing diff --git a/jdk/src/solaris/native/java/net/net_util_md.c b/jdk/src/solaris/native/java/net/net_util_md.c index d7ebbd5a7c9..9822de01908 100644 --- a/jdk/src/solaris/native/java/net/net_util_md.c +++ b/jdk/src/solaris/native/java/net/net_util_md.c @@ -738,14 +738,23 @@ static int getLocalScopeID (char *addr) { return 0; } -void initLocalAddrTable () { +void platformInit () { initLoopbackRoutes(); initLocalIfs(); } +#elif defined(_AIX) + +/* Initialize stubs for blocking I/O workarounds (see src/solaris/native/java/net/linux_close.c) */ +extern void aix_close_init(); + +void platformInit () { + aix_close_init(); +} + #else -void initLocalAddrTable () {} +void platformInit () {} #endif @@ -987,7 +996,11 @@ NET_MapSocketOption(jint cmd, int *level, int *optname) { { java_net_SocketOptions_SO_SNDBUF, SOL_SOCKET, SO_SNDBUF }, { java_net_SocketOptions_SO_RCVBUF, SOL_SOCKET, SO_RCVBUF }, { java_net_SocketOptions_SO_KEEPALIVE, SOL_SOCKET, SO_KEEPALIVE }, +#if defined(_AIX) + { java_net_SocketOptions_SO_REUSEADDR, SOL_SOCKET, SO_REUSEPORT }, +#else { java_net_SocketOptions_SO_REUSEADDR, SOL_SOCKET, SO_REUSEADDR }, +#endif { java_net_SocketOptions_SO_BROADCAST, SOL_SOCKET, SO_BROADCAST }, { java_net_SocketOptions_IP_TOS, IPPROTO_IP, IP_TOS }, { java_net_SocketOptions_IP_MULTICAST_IF, IPPROTO_IP, IP_MULTICAST_IF }, @@ -1387,6 +1400,29 @@ NET_SetSockOpt(int fd, int level, int opt, const void *arg, } #endif +#ifdef _AIX + if (level == SOL_SOCKET) { + if (opt == SO_SNDBUF || opt == SO_RCVBUF) { + /* + * Just try to set the requested size. If it fails we will leave the + * socket option as is. Setting the buffer size means only a hint in + * the jse2/java software layer, see javadoc. In the previous + * solution the buffer has always been truncated to a length of + * 0x100000 Byte, even if the technical limit has not been reached. + * This kind of absolute truncation was unexpected in the jck tests. + */ + int ret = setsockopt(fd, level, opt, arg, len); + if ((ret == 0) || (ret == -1 && errno == ENOBUFS)) { + // Accept failure because of insufficient buffer memory resources. + return 0; + } else { + // Deliver all other kinds of errors. + return ret; + } + } + } +#endif + /* * On Linux the receive buffer is used for both socket * structures and the the packet payload. The implication diff --git a/jdk/src/solaris/native/java/net/net_util_md.h b/jdk/src/solaris/native/java/net/net_util_md.h index 4470a49b1e2..f3ab0c0fc2d 100644 --- a/jdk/src/solaris/native/java/net/net_util_md.h +++ b/jdk/src/solaris/native/java/net/net_util_md.h @@ -37,7 +37,17 @@ #endif -#if defined(__linux__) || defined(MACOSX) +/* + AIX needs a workaround for I/O cancellation, see: + http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.basetechref/doc/basetrf1/close.htm + ... + The close subroutine is blocked until all subroutines which use the file + descriptor return to usr space. For example, when a thread is calling close + and another thread is calling select with the same file descriptor, the + close subroutine does not return until the select call returns. + ... +*/ +#if defined(__linux__) || defined(MACOSX) || defined (_AIX) extern int NET_Timeout(int s, long timeout); extern int NET_Read(int s, void* buf, size_t len); extern int NET_RecvFrom(int s, void *buf, int len, unsigned int flags, diff --git a/jdk/src/solaris/native/java/util/TimeZone_md.c b/jdk/src/solaris/native/java/util/TimeZone_md.c index ce2fa5aca8c..e1af8f92556 100644 --- a/jdk/src/solaris/native/java/util/TimeZone_md.c +++ b/jdk/src/solaris/native/java/util/TimeZone_md.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 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 @@ -123,7 +123,7 @@ findZoneinfoFile(char *buf, size_t size, const char *dir) return NULL; } -#if defined(__linux__) || defined(MACOSX) || (defined(__solaris__) \ +#if defined(_AIX) || defined(__linux__) || defined(MACOSX) || (defined(__solaris__) \ && (defined(_POSIX_PTHREAD_SEMANTICS) || defined(_LP64))) while (readdir_r(dirp, entry, &dp) == 0 && dp != NULL) { #else @@ -615,6 +615,14 @@ getSolarisDefaultZoneID() { #endif /*__solaris__*/ #endif /*__linux__*/ +#ifdef _AIX +static char * +getPlatformTimeZoneID() +{ + return NULL; +} +#endif + /* * findJavaTZ_md() maps platform time zone ID to Java time zone ID * using /lib/tzmappings. If the TZ value is not found, it @@ -635,7 +643,7 @@ findJavaTZ_md(const char *java_home_dir, const char *country) #if defined(__linux__) || defined(_ALLBSD_SOURCE) if (tz == NULL) { #else -#ifdef __solaris__ +#if defined (__solaris__) || defined(_AIX) if (tz == NULL || *tz == '\0') { #endif #endif diff --git a/jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c b/jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c index c056e8eac87..f7ac70df393 100644 --- a/jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c +++ b/jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c @@ -37,6 +37,10 @@ #include "awt_Plugin.h" +#ifdef AIX +#include "porting_aix.h" /* For the 'dladdr' function. */ +#endif + #ifdef DEBUG #define VERBOSE_AWT_DEBUG #endif diff --git a/jdk/src/solaris/native/sun/awt/fontpath.c b/jdk/src/solaris/native/sun/awt/fontpath.c index 12c8405beae..19e5d9bf8d8 100644 --- a/jdk/src/solaris/native/sun/awt/fontpath.c +++ b/jdk/src/solaris/native/sun/awt/fontpath.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 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 @@ -64,7 +64,7 @@ extern Display *awt_display; #define MAXFDIRS 512 /* Max number of directories that contain fonts */ -#if !defined(__linux__) +#if defined(__solaris__) /* * This can be set in the makefile to "/usr/X11" if so desired. */ @@ -114,7 +114,7 @@ static char *fullSolarisFontPath[] = { NULL, /* terminates the list */ }; -#else /* __linux */ +#elif defined( __linux__) /* All the known interesting locations we have discovered on * various flavors of Linux */ @@ -134,6 +134,12 @@ static char *fullLinuxFontPath[] = { "/usr/share/fonts/default/Type1", /* RH 9.0 */ NULL, /* terminates the list */ }; +#elif defined(_AIX) +static char *fullAixFontPath[] = { + "/usr/lpp/X11/lib/X11/fonts/Type1", /* from X11.fnt.iso_T1 */ + "/usr/lpp/X11/lib/X11/fonts/TrueType", /* from X11.fnt.ucs.ttf */ + NULL, /* terminates the list */ +}; #endif static char **getFontConfigLocations(); @@ -497,10 +503,11 @@ static char *getPlatformFontPathChars(JNIEnv *env, jboolean noType1) { #if defined(__linux__) knowndirs = fullLinuxFontPath; -#else /* IF SOLARIS */ +#elif defined(__solaris__) knowndirs = fullSolarisFontPath; +#elif defined(_AIX) + knowndirs = fullAixFontPath; #endif - /* REMIND: this code requires to be executed when the GraphicsEnvironment * is already initialised. That is always true, but if it were not so, * this code could throw an exception and the fontpath would fail to @@ -592,6 +599,25 @@ static void* openFontConfig() { } } #endif + +#if defined(_AIX) + /* On AIX, fontconfig is not a standard package supported by IBM. + * instead it has to be installed from the "AIX Toolbox for Linux Applications" + * site http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/alpha.html + * and will be installed under /opt/freeware/lib/libfontconfig.a. + * Notice that the archive contains the real 32- and 64-bit shared libraries. + * We first try to load 'libfontconfig.so' from the default library path in the + * case the user has installed a private version of the library and if that + * doesn't succeed, we try the version from /opt/freeware/lib/libfontconfig.a + */ + libfontconfig = dlopen("libfontconfig.so", RTLD_LOCAL|RTLD_LAZY); + if (libfontconfig == NULL) { + libfontconfig = dlopen("/opt/freeware/lib/libfontconfig.a(libfontconfig.so.1)", RTLD_MEMBER|RTLD_LOCAL|RTLD_LAZY); + if (libfontconfig == NULL) { + return NULL; + } + } +#else /* 64 bit sparc should pick up the right version from the lib path. * New features may be added to libfontconfig, this is expected to * be compatible with old features, but we may need to start @@ -606,6 +632,7 @@ static void* openFontConfig() { return NULL; } } +#endif /* Version 1.0 of libfontconfig crashes if HOME isn't defined in * the environment. This should generally never happen, but we can't @@ -1203,7 +1230,7 @@ Java_sun_font_FontConfigManager_getFontConfig */ if (fontformat != NULL && (strcmp((char*)fontformat, "TrueType") != 0) -#ifdef __linux__ +#if defined(__linux__) || defined(_AIX) && (strcmp((char*)fontformat, "Type 1") != 0) #endif ) { diff --git a/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c b/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c index a35d6fd3065..c0d508958a5 100644 --- a/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c +++ b/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c @@ -56,8 +56,8 @@ typedef struct _X11RIPrivate { int x, y; } X11RIPrivate; -#define MAX(a,b) ((a) > (b) ? (a) : (b)) -#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#define XSD_MAX(a,b) ((a) > (b) ? (a) : (b)) +#define XSD_MIN(a,b) ((a) < (b) ? (a) : (b)) static LockFunc X11SD_Lock; static GetRasInfoFunc X11SD_GetRasInfo; @@ -1090,10 +1090,10 @@ X11SD_ClipToRoot(SurfaceDataBounds *b, SurfaceDataBounds *bounds, x2 = x1 + DisplayWidth(awt_display, xsdo->configData->awt_visInfo.screen); y2 = y1 + DisplayHeight(awt_display, xsdo->configData->awt_visInfo.screen); - x1 = MAX(bounds->x1, x1); - y1 = MAX(bounds->y1, y1); - x2 = MIN(bounds->x2, x2); - y2 = MIN(bounds->y2, y2); + x1 = XSD_MAX(bounds->x1, x1); + y1 = XSD_MAX(bounds->y1, y1); + x2 = XSD_MIN(bounds->x2, x2); + y2 = XSD_MIN(bounds->y2, y2); if ((x1 >= x2) || (y1 >= y2)) { return FALSE; } diff --git a/jdk/src/solaris/native/sun/java2d/x11/XRBackendNative.c b/jdk/src/solaris/native/sun/java2d/x11/XRBackendNative.c index e2554b3209e..733606ec444 100644 --- a/jdk/src/solaris/native/sun/java2d/x11/XRBackendNative.c +++ b/jdk/src/solaris/native/sun/java2d/x11/XRBackendNative.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 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 @@ -72,8 +72,8 @@ typedef struct _XRadialGradient { #include -#ifdef __solaris__ -/* Solaris 10 will not have these symbols at runtime */ +#if defined(__solaris__) || defined(_AIX) +/* Solaris 10 and AIX will not have these symbols at runtime */ typedef Picture (*XRenderCreateLinearGradientFuncType) (Display *dpy, @@ -147,7 +147,7 @@ static jboolean IsXRenderAvailable(jboolean verbose, jboolean ignoreLinuxVersion return JNI_FALSE; } -#ifdef __solaris__ +#if defined(__solaris__) || defined(_AIX) xrenderlib = dlopen("libXrender.so",RTLD_GLOBAL|RTLD_LAZY); if (xrenderlib != NULL) { diff --git a/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c b/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c index f1322ebd90b..c25fd9dcccf 100644 --- a/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c +++ b/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 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 @@ -41,7 +41,7 @@ #include #include #endif -#else +#elif !defined(_AIX) #include #endif #include @@ -57,9 +57,13 @@ #include #include +#if defined(_AIX) +#include +#endif + static jlong page_size = 0; -#if defined(_ALLBSD_SOURCE) +#if defined(_ALLBSD_SOURCE) || defined(_AIX) #define MB (1024UL * 1024UL) #else @@ -326,6 +330,12 @@ Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize */ // throw_internal_error(env, "unimplemented in FreeBSD") return (128 * MB); +#elif defined(_AIX) + perfstat_memory_total_t memory_info; + if (-1 != perfstat_memory_total(NULL, &memory_info, sizeof(perfstat_memory_total_t), 1)) { + return (jlong)(memory_info.real_free * 4L * 1024L); + } + return -1; #else // solaris / linux jlong num_avail_physical_pages = sysconf(_SC_AVPHYS_PAGES); return (num_avail_physical_pages * page_size); @@ -349,6 +359,12 @@ Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize return -1; } return result; +#elif defined(_AIX) + perfstat_memory_total_t memory_info; + if (-1 != perfstat_memory_total(NULL, &memory_info, sizeof(perfstat_memory_total_t), 1)) { + return (jlong)(memory_info.real_total * 4L * 1024L); + } + return -1; #else // solaris / linux jlong num_physical_pages = sysconf(_SC_PHYS_PAGES); return (num_physical_pages * page_size); diff --git a/jdk/src/solaris/native/sun/nio/ch/Net.c b/jdk/src/solaris/native/sun/nio/ch/Net.c index 679a9d8d0da..214f0f76300 100644 --- a/jdk/src/solaris/native/sun/nio/ch/Net.c +++ b/jdk/src/solaris/native/sun/nio/ch/Net.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 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 @@ -40,6 +40,9 @@ #include "nio.h" #include "sun_nio_ch_PollArrayWrapper.h" +#ifdef _AIX +#include +#endif /** * IP_MULTICAST_ALL supported since 2.6.31 but may not be available at @@ -51,24 +54,46 @@ #endif #endif -#ifdef _ALLBSD_SOURCE +#if defined(_ALLBSD_SOURCE) || defined(_AIX) #ifndef IP_BLOCK_SOURCE +#if defined(_AIX) + +#define IP_BLOCK_SOURCE 58 /* Block data from a given source to a given group */ +#define IP_UNBLOCK_SOURCE 59 /* Unblock data from a given source to a given group */ +#define IP_ADD_SOURCE_MEMBERSHIP 60 /* Join a source-specific group */ +#define IP_DROP_SOURCE_MEMBERSHIP 61 /* Leave a source-specific group */ + +#else + #define IP_ADD_SOURCE_MEMBERSHIP 70 /* join a source-specific group */ #define IP_DROP_SOURCE_MEMBERSHIP 71 /* drop a single source */ #define IP_BLOCK_SOURCE 72 /* block a source */ #define IP_UNBLOCK_SOURCE 73 /* unblock a source */ +#endif /* _AIX */ + #endif /* IP_BLOCK_SOURCE */ #ifndef MCAST_BLOCK_SOURCE +#if defined(_AIX) + +#define MCAST_BLOCK_SOURCE 64 +#define MCAST_UNBLOCK_SOURCE 65 +#define MCAST_JOIN_SOURCE_GROUP 66 +#define MCAST_LEAVE_SOURCE_GROUP 67 + +#else + #define MCAST_JOIN_SOURCE_GROUP 82 /* join a source-specific group */ #define MCAST_LEAVE_SOURCE_GROUP 83 /* leave a single source */ #define MCAST_BLOCK_SOURCE 84 /* block a source */ #define MCAST_UNBLOCK_SOURCE 85 /* unblock a source */ +#endif /* _AIX */ + #endif /* MCAST_BLOCK_SOURCE */ #ifndef IPV6_ADD_MEMBERSHIP @@ -123,6 +148,36 @@ static void initGroupSourceReq(JNIEnv* env, jbyteArray group, jint index, } #endif +#ifdef _AIX + +/* + * Checks whether or not "socket extensions for multicast source filters" is supported. + * Returns JNI_TRUE if it is supported, JNI_FALSE otherwise + */ +static jboolean isSourceFilterSupported(){ + static jboolean alreadyChecked = JNI_FALSE; + static jboolean result = JNI_TRUE; + if (alreadyChecked != JNI_TRUE){ + struct utsname uts; + memset(&uts, 0, sizeof(uts)); + strcpy(uts.sysname, "?"); + const int utsRes = uname(&uts); + int major = -1; + int minor = -1; + major = atoi(uts.version); + minor = atoi(uts.release); + if (strcmp(uts.sysname, "AIX") == 0) { + if (major < 6 || (major == 6 && minor < 1)) {// unsupported on aix < 6.1 + result = JNI_FALSE; + } + } + alreadyChecked = JNI_TRUE; + } + return result; +} + +#endif /* _AIX */ + JNIEXPORT void JNICALL Java_sun_nio_ch_Net_initIDs(JNIEnv *env, jclass clazz) { @@ -475,6 +530,14 @@ Java_sun_nio_ch_Net_joinOrDrop4(JNIEnv *env, jobject this, jboolean join, jobjec /* no IPv4 include-mode filtering for now */ return IOS_UNAVAILABLE; #else + +#ifdef _AIX + /* check AIX for support of source filtering */ + if (isSourceFilterSupported() != JNI_TRUE){ + return IOS_UNAVAILABLE; + } +#endif + mreq_source.imr_multiaddr.s_addr = htonl(group); mreq_source.imr_sourceaddr.s_addr = htonl(source); mreq_source.imr_interface.s_addr = htonl(interf); @@ -486,7 +549,7 @@ Java_sun_nio_ch_Net_joinOrDrop4(JNIEnv *env, jobject this, jboolean join, jobjec n = setsockopt(fdval(env,fdo), IPPROTO_IP, opt, optval, optlen); if (n < 0) { - if (join && (errno == ENOPROTOOPT)) + if (join && (errno == ENOPROTOOPT || errno == EOPNOTSUPP)) return IOS_UNAVAILABLE; handleSocketError(env, errno); } @@ -505,6 +568,13 @@ Java_sun_nio_ch_Net_blockOrUnblock4(JNIEnv *env, jobject this, jboolean block, j int n; int opt = (block) ? IP_BLOCK_SOURCE : IP_UNBLOCK_SOURCE; +#ifdef _AIX + /* check AIX for support of source filtering */ + if (isSourceFilterSupported() != JNI_TRUE){ + return IOS_UNAVAILABLE; + } +#endif + mreq_source.imr_multiaddr.s_addr = htonl(group); mreq_source.imr_sourceaddr.s_addr = htonl(source); mreq_source.imr_interface.s_addr = htonl(interf); @@ -512,7 +582,7 @@ Java_sun_nio_ch_Net_blockOrUnblock4(JNIEnv *env, jobject this, jboolean block, j n = setsockopt(fdval(env,fdo), IPPROTO_IP, opt, (void*)&mreq_source, sizeof(mreq_source)); if (n < 0) { - if (block && (errno == ENOPROTOOPT)) + if (block && (errno == ENOPROTOOPT || errno == EOPNOTSUPP)) return IOS_UNAVAILABLE; handleSocketError(env, errno); } @@ -550,7 +620,7 @@ Java_sun_nio_ch_Net_joinOrDrop6(JNIEnv *env, jobject this, jboolean join, jobjec n = setsockopt(fdval(env,fdo), IPPROTO_IPV6, opt, optval, optlen); if (n < 0) { - if (join && (errno == ENOPROTOOPT)) + if (join && (errno == ENOPROTOOPT || errno == EOPNOTSUPP)) return IOS_UNAVAILABLE; handleSocketError(env, errno); } @@ -579,7 +649,7 @@ Java_sun_nio_ch_Net_blockOrUnblock6(JNIEnv *env, jobject this, jboolean block, j n = setsockopt(fdval(env,fdo), IPPROTO_IPV6, opt, (void*)&req, sizeof(req)); if (n < 0) { - if (block && (errno == ENOPROTOOPT)) + if (block && (errno == ENOPROTOOPT || errno == EOPNOTSUPP)) return IOS_UNAVAILABLE; handleSocketError(env, errno); } diff --git a/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c b/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c index 8f408951e77..12f399d8512 100644 --- a/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c +++ b/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c @@ -42,7 +42,7 @@ #include #endif -#ifdef __linux__ +#if defined(__linux__) || defined(_AIX) #include #endif @@ -294,7 +294,13 @@ Java_sun_nio_fs_UnixNativeDispatcher_strerror(JNIEnv* env, jclass this, jint err jsize len; jbyteArray bytes; +#ifdef _AIX + /* strerror() is not thread-safe on AIX so we have to use strerror_r() */ + char buffer[256]; + msg = (strerror_r((int)error, buffer, 256) == 0) ? buffer : "Error while calling strerror_r"; +#else msg = strerror((int)error); +#endif len = strlen(msg); bytes = (*env)->NewByteArray(env, len); if (bytes != NULL) { @@ -674,6 +680,15 @@ Java_sun_nio_fs_UnixNativeDispatcher_readdir(JNIEnv* env, jclass this, jlong val /* EINTR not listed as a possible error */ /* TDB: reentrant version probably not required here */ res = readdir64_r(dirp, ptr, &result); + +#ifdef _AIX + /* On AIX, readdir_r() returns EBADF (i.e. '9') and sets 'result' to NULL for the */ + /* directory stream end. Otherwise, 'errno' will contain the error code. */ + if (res != 0) { + res = (result == NULL && res == EBADF) ? 0 : errno; + } +#endif + if (res != 0) { throwUnixException(env, res); return NULL; @@ -877,6 +892,18 @@ Java_sun_nio_fs_UnixNativeDispatcher_statvfs0(JNIEnv* env, jclass this, if (err == -1) { throwUnixException(env, errno); } else { +#ifdef _AIX + /* AIX returns ULONG_MAX in buf.f_blocks for the /proc file system. */ + /* This is too big for a Java signed long and fools various tests. */ + if (buf.f_blocks == ULONG_MAX) { + buf.f_blocks = 0; + } + /* The number of free or available blocks can never exceed the total number of blocks */ + if (buf.f_blocks == 0) { + buf.f_bfree = 0; + buf.f_bavail = 0; + } +#endif (*env)->SetLongField(env, attrs, attrs_f_frsize, long_to_jlong(buf.f_frsize)); (*env)->SetLongField(env, attrs, attrs_f_blocks, long_to_jlong(buf.f_blocks)); (*env)->SetLongField(env, attrs, attrs_f_bfree, long_to_jlong(buf.f_bfree)); diff --git a/jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c b/jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c index f509c42b559..8b3a62bfdc6 100644 --- a/jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c +++ b/jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 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 @@ -50,7 +50,11 @@ JNIEXPORT jlong JNICALL Java_sun_security_pkcs11_Secmod_nssGetLibraryHandle { const char *libName = (*env)->GetStringUTFChars(env, jLibName, NULL); // look up existing handle only, do not load +#if defined(AIX) + void *hModule = dlopen(libName, RTLD_LAZY); +#else void *hModule = dlopen(libName, RTLD_NOLOAD); +#endif dprintf2("-handle for %s: %u\n", libName, hModule); (*env)->ReleaseStringUTFChars(env, jLibName, libName); return ptr_to_jlong(hModule); diff --git a/jdk/src/windows/native/java/net/net_util_md.c b/jdk/src/windows/native/java/net/net_util_md.c index 6ddb2bcfd78..1cacb57386b 100644 --- a/jdk/src/windows/native/java/net/net_util_md.c +++ b/jdk/src/windows/native/java/net/net_util_md.c @@ -125,8 +125,8 @@ DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) return TRUE; } -void initLocalAddrTable () {} -void parseExclusiveBindProperty (JNIEnv *env) {} +void platformInit() {} +void parseExclusiveBindProperty(JNIEnv *env) {} /* * Since winsock doesn't have the equivalent of strerror(errno) diff --git a/jdk/test/java/lang/ProcessBuilder/Basic.java b/jdk/test/java/lang/ProcessBuilder/Basic.java index 5a55cb6f0f4..1a62298721a 100644 --- a/jdk/test/java/lang/ProcessBuilder/Basic.java +++ b/jdk/test/java/lang/ProcessBuilder/Basic.java @@ -58,6 +58,9 @@ public class Basic { /* used for Mac OS X only */ static final String cfUserTextEncoding = System.getenv("__CF_USER_TEXT_ENCODING"); + /* used for AIX only */ + static final String libpath = System.getenv("LIBPATH"); + private static String commandOutput(Reader r) throws Throwable { StringBuilder sb = new StringBuilder(); int c; @@ -75,7 +78,11 @@ public class Basic { String output = commandOutput(r); equal(p.waitFor(), 0); equal(p.exitValue(), 0); - return output; + // The debug/fastdebug versions of the VM may write some warnings to stdout + // (i.e. "Warning: Cannot open log file: hotspot.log" if the VM is started + // in a directory without write permissions). These warnings will confuse tests + // which match the entire output of the child process so better filter them out. + return output.replaceAll("Warning:.*\\n", ""); } private static String commandOutput(ProcessBuilder pb) { @@ -584,6 +591,12 @@ public class Basic { System.getProperty("os.name").startsWith("Windows"); } + static class AIX { + public static boolean is() { return is; } + private static final boolean is = + System.getProperty("os.name").equals("AIX"); + } + static class Unix { public static boolean is() { return is; } private static final boolean is = @@ -637,7 +650,7 @@ public class Basic { private static boolean isEnglish(String envvar) { String val = getenv(envvar); - return (val == null) || val.matches("en.*"); + return (val == null) || val.matches("en.*") || val.matches("C"); } /** Returns true if we can expect English OS error strings */ @@ -712,6 +725,14 @@ public class Basic { return cleanedVars.replace(javaMainClassStr,""); } + /* Only used for AIX -- + * AIX adds the variable AIXTHREAD_GUARDPAGES=0 to the environment. + * Remove it from the list of env variables + */ + private static String removeAixExpectedVars(String vars) { + return vars.replace("AIXTHREAD_GUARDPAGES=0,",""); + } + private static String sortByLinesWindowsly(String text) { String[] lines = text.split("\n"); Arrays.sort(lines, new WindowsComparator()); @@ -1160,13 +1181,20 @@ public class Basic { ProcessBuilder pb = new ProcessBuilder(); pb.environment().clear(); String expected = Windows.is() ? "SystemRoot="+systemRoot+",": ""; + expected = AIX.is() ? "LIBPATH="+libpath+",": expected; if (Windows.is()) { pb.environment().put("SystemRoot", systemRoot); } + if (AIX.is()) { + pb.environment().put("LIBPATH", libpath); + } String result = getenvInChild(pb); if (MacOSX.is()) { result = removeMacExpectedVars(result); } + if (AIX.is()) { + result = removeAixExpectedVars(result); + } equal(result, expected); } catch (Throwable t) { unexpected(t); } @@ -1681,10 +1709,14 @@ public class Basic { } Process p = Runtime.getRuntime().exec(cmdp, envp); String expected = Windows.is() ? "=C:=\\,=ExitValue=3,SystemRoot="+systemRoot+"," : "=C:=\\,"; + expected = AIX.is() ? expected + "LIBPATH="+libpath+",": expected; String commandOutput = commandOutput(p); if (MacOSX.is()) { commandOutput = removeMacExpectedVars(commandOutput); } + if (AIX.is()) { + commandOutput = removeAixExpectedVars(commandOutput); + } equal(commandOutput, expected); if (Windows.is()) { ProcessBuilder pb = new ProcessBuilder(childArgs); @@ -1736,9 +1768,14 @@ public class Basic { if (MacOSX.is()) { commandOutput = removeMacExpectedVars(commandOutput); } + if (AIX.is()) { + commandOutput = removeAixExpectedVars(commandOutput); + } check(commandOutput.equals(Windows.is() ? "LC_ALL=C,SystemRoot="+systemRoot+"," - : "LC_ALL=C,"), + : AIX.is() + ? "LC_ALL=C,LIBPATH="+libpath+"," + : "LC_ALL=C,"), "Incorrect handling of envstrings containing NULs"); } catch (Throwable t) { unexpected(t); } @@ -2015,7 +2052,12 @@ public class Basic { if (Unix.is() && new File("/bin/bash").exists() && new File("/bin/sleep").exists()) { - final String[] cmd = { "/bin/bash", "-c", "(/bin/sleep 6666)" }; + // Notice that we only destroy the process created by us (i.e. + // our child) but not our grandchild (i.e. '/bin/sleep'). So + // pay attention that the grandchild doesn't run too long to + // avoid polluting the process space with useless processes. + // Running the grandchild for 60s should be more than enough. + final String[] cmd = { "/bin/bash", "-c", "(/bin/sleep 60)" }; final ProcessBuilder pb = new ProcessBuilder(cmd); final Process p = pb.start(); final InputStream stdout = p.getInputStream(); @@ -2037,12 +2079,26 @@ public class Basic { reader.start(); Thread.sleep(100); p.destroy(); - // Subprocess is now dead, but file descriptors remain open. check(p.waitFor() != 0); check(p.exitValue() != 0); + // Subprocess is now dead, but file descriptors remain open. + // Make sure the test will fail if we don't manage to close + // the open streams within 30 seconds. Notice that this time + // must be shorter than the sleep time of the grandchild. + Timer t = new Timer("test/java/lang/ProcessBuilder/Basic.java process reaper", true); + t.schedule(new TimerTask() { + public void run() { + fail("Subprocesses which create subprocesses of " + + "their own caused the parent to hang while " + + "waiting for file descriptors to be closed."); + System.exit(-1); + } + }, 30000); stdout.close(); stderr.close(); stdin.close(); + // All streams successfully closed so we can cancel the timer. + t.cancel(); //---------------------------------------------------------- // There remain unsolved issues with asynchronous close. // Here's a highly non-portable experiment to demonstrate: @@ -2188,8 +2244,9 @@ public class Basic { } long end = System.nanoTime(); // give waitFor(timeout) a wide berth (100ms) - if ((end - start) > 100000000) - fail("Test failed: waitFor took too long"); + // Old AIX machines my need a little longer. + if ((end - start) > 100000000L * (AIX.is() ? 4 : 1)) + fail("Test failed: waitFor took too long (" + (end - start) + "ns)"); p.destroy(); p.waitFor(); @@ -2216,7 +2273,7 @@ public class Basic { long end = System.nanoTime(); if ((end - start) < 500000000) - fail("Test failed: waitFor didn't take long enough"); + fail("Test failed: waitFor didn't take long enough (" + (end - start) + "ns)"); p.destroy(); @@ -2224,7 +2281,7 @@ public class Basic { p.waitFor(1000, TimeUnit.MILLISECONDS); end = System.nanoTime(); if ((end - start) > 900000000) - fail("Test failed: waitFor took too long on a dead process."); + fail("Test failed: waitFor took too long on a dead process. (" + (end - start) + "ns)"); } catch (Throwable t) { unexpected(t); } //---------------------------------------------------------------- diff --git a/jdk/test/java/lang/ProcessBuilder/DestroyTest.java b/jdk/test/java/lang/ProcessBuilder/DestroyTest.java index ebf00e32b79..401bd146c28 100644 --- a/jdk/test/java/lang/ProcessBuilder/DestroyTest.java +++ b/jdk/test/java/lang/ProcessBuilder/DestroyTest.java @@ -154,6 +154,9 @@ public class DestroyTest { } else if (osName.equals("SunOS")) { return new UnixTest( File.createTempFile("ProcessTrap-", ".sh",null)); + } else if (osName.equals("AIX")) { + return new UnixTest( + File.createTempFile("ProcessTrap-", ".sh",null)); } return null; } From f3dbbd9d4ff4d3291ddd8fbeb1f37a9feab5bf86 Mon Sep 17 00:00:00 2001 From: Volker Simonis Date: Fri, 6 Dec 2013 14:22:34 +0100 Subject: [PATCH 007/158] 8029669: PPC64: 8027566 changes broke AIX build after sync Reviewed-by: alanb, ihse --- .../{non-build-utils/sharing => data/classlist}/classlist.aix | 0 jdk/make/lib/NioLibraries.gmk | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename jdk/make/{non-build-utils/sharing => data/classlist}/classlist.aix (100%) diff --git a/jdk/make/non-build-utils/sharing/classlist.aix b/jdk/make/data/classlist/classlist.aix similarity index 100% rename from jdk/make/non-build-utils/sharing/classlist.aix rename to jdk/make/data/classlist/classlist.aix diff --git a/jdk/make/lib/NioLibraries.gmk b/jdk/make/lib/NioLibraries.gmk index 9cf07fe2334..5c648c2dbe6 100644 --- a/jdk/make/lib/NioLibraries.gmk +++ b/jdk/make/lib/NioLibraries.gmk @@ -113,7 +113,7 @@ ifeq ($(OPENJDK_TARGET_OS), solaris) endif ifeq ($(OPENJDK_TARGET_OS), aix) - BUILD_LIBNIO_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS) + BUILD_LIBNIO_MAPFILE:=$(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS) BUILD_LIBNIO_SRC += \ $(JDK_TOPDIR)/src/aix/native/sun/nio/ch \ $(JDK_TOPDIR)/src/aix/native/sun/nio/fs From 783155575c78b94ae969f3ce7a1f9f30f1a84e65 Mon Sep 17 00:00:00 2001 From: Jeremy Manson Date: Wed, 8 Jan 2014 08:34:02 +0100 Subject: [PATCH 008/158] 8031376: TraceClassLoading expects there to be a (Java) caller when you load a class with the bootstrap class loader Reviewed-by: sla, dholmes --- hotspot/src/share/vm/classfile/classFileParser.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hotspot/src/share/vm/classfile/classFileParser.cpp b/hotspot/src/share/vm/classfile/classFileParser.cpp index db41756d1b9..66d6785a1c6 100644 --- a/hotspot/src/share/vm/classfile/classFileParser.cpp +++ b/hotspot/src/share/vm/classfile/classFileParser.cpp @@ -4098,8 +4098,12 @@ instanceKlassHandle ClassFileParser::parseClassFile(Symbol* name, tty->print("[Loaded %s from %s]\n", this_klass->external_name(), cfs->source()); } else if (class_loader.is_null()) { - if (THREAD->is_Java_thread()) { - Klass* caller = ((JavaThread*)THREAD)->security_get_caller_class(1); + Klass* caller = + THREAD->is_Java_thread() + ? ((JavaThread*)THREAD)->security_get_caller_class(1) + : NULL; + // caller can be NULL, for example, during a JVMTI VM_Init hook + if (caller != NULL) { tty->print("[Loaded %s by instance of %s]\n", this_klass->external_name(), InstanceKlass::cast(caller)->external_name()); From 2352ce8d9cbe148cddf2df879d7971fa02d0cb1e Mon Sep 17 00:00:00 2001 From: Staffan Larsen Date: Wed, 8 Jan 2014 13:20:33 +0100 Subject: [PATCH 009/158] 8030184: Remove unneeded "content_type" declarations from tracetypes.xml Reviewed-by: dholmes, jbachorik, egahlin, mgronlun --- hotspot/src/share/vm/trace/tracetypes.xml | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/hotspot/src/share/vm/trace/tracetypes.xml b/hotspot/src/share/vm/trace/tracetypes.xml index ab9a95b77d5..e9ea27da00a 100644 --- a/hotspot/src/share/vm/trace/tracetypes.xml +++ b/hotspot/src/share/vm/trace/tracetypes.xml @@ -85,12 +85,6 @@ Now we can use the content + data type in declaring event fields. - - - - - @@ -116,17 +110,6 @@ Now we can use the content + data type in declaring event fields. - - - - - - - - - - From 3d84ac9ef1597258faa0190eab52f2c4dfcaf55d Mon Sep 17 00:00:00 2001 From: Zhengyu Gu Date: Thu, 9 Jan 2014 14:06:53 -0500 Subject: [PATCH 010/158] 7012961: runtime/jni/WindowsExceptionFilter/WindowsExceptionFilter01 crashes on windows-amd64 VM needs to handle EXCEPTION_FLT_* exceptions on Win64 Reviewed-by: coleenp, ccheung --- hotspot/src/os/windows/vm/os_windows.cpp | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/hotspot/src/os/windows/vm/os_windows.cpp b/hotspot/src/os/windows/vm/os_windows.cpp index 7daee35632e..fe800d7a284 100644 --- a/hotspot/src/os/windows/vm/os_windows.cpp +++ b/hotspot/src/os/windows/vm/os_windows.cpp @@ -166,12 +166,10 @@ void os::run_periodic_checks() { return; } -#ifndef _WIN64 // previous UnhandledExceptionFilter, if there is one static LPTOP_LEVEL_EXCEPTION_FILTER prev_uef_handler = NULL; LONG WINAPI Handle_FLT_Exception(struct _EXCEPTION_POINTERS* exceptionInfo); -#endif void os::init_system_properties_values() { /* sysclasspath, java_home, dll_dir */ { @@ -2240,11 +2238,11 @@ LONG Handle_IDiv_Exception(struct _EXCEPTION_POINTERS* exceptionInfo) { return EXCEPTION_CONTINUE_EXECUTION; } -#ifndef _WIN64 //----------------------------------------------------------------------------- LONG WINAPI Handle_FLT_Exception(struct _EXCEPTION_POINTERS* exceptionInfo) { - // handle exception caused by native method modifying control word PCONTEXT ctx = exceptionInfo->ContextRecord; +#ifndef _WIN64 + // handle exception caused by native method modifying control word DWORD exception_code = exceptionInfo->ExceptionRecord->ExceptionCode; switch (exception_code) { @@ -2270,17 +2268,11 @@ LONG WINAPI Handle_FLT_Exception(struct _EXCEPTION_POINTERS* exceptionInfo) { // UnhandledExceptionFilter. return (prev_uef_handler)(exceptionInfo); } - - return EXCEPTION_CONTINUE_SEARCH; -} -#else //_WIN64 +#else // !_WIN64 /* On Windows, the mxcsr control bits are non-volatile across calls See also CR 6192333 - If EXCEPTION_FLT_* happened after some native method modified - mxcsr - it is not a jvm fault. - However should we decide to restore of mxcsr after a faulty - native method we can uncomment following code + */ jint MxCsr = INITIAL_MXCSR; // we can't use StubRoutines::addr_mxcsr_std() // because in Win64 mxcsr is not saved there @@ -2288,10 +2280,10 @@ LONG WINAPI Handle_FLT_Exception(struct _EXCEPTION_POINTERS* exceptionInfo) { ctx->MxCsr = MxCsr; return EXCEPTION_CONTINUE_EXECUTION; } +#endif // !_WIN64 -*/ -#endif //_WIN64 - + return EXCEPTION_CONTINUE_SEARCH; +} // Fatal error reporting is single threaded so we can make this a // static and preallocated. If it's more than MAX_PATH silently ignore @@ -2640,7 +2632,6 @@ LONG WINAPI topLevelExceptionFilter(struct _EXCEPTION_POINTERS* exceptionInfo) { } // switch } -#ifndef _WIN64 if (((thread->thread_state() == _thread_in_Java) || (thread->thread_state() == _thread_in_native)) && exception_code != EXCEPTION_UNCAUGHT_CXX_EXCEPTION) @@ -2648,7 +2639,6 @@ LONG WINAPI topLevelExceptionFilter(struct _EXCEPTION_POINTERS* exceptionInfo) { LONG result=Handle_FLT_Exception(exceptionInfo); if (result==EXCEPTION_CONTINUE_EXECUTION) return result; } -#endif //_WIN64 } if (exception_code != EXCEPTION_BREAKPOINT) { From 9d16ac7083d2c94d9b5645aa5a2d71ab7ca99eff Mon Sep 17 00:00:00 2001 From: Calvin Cheung Date: Thu, 9 Jan 2014 15:48:00 -0800 Subject: [PATCH 011/158] 8022301: [TESTBUG] runtime/jsig/Test8017498.sh incorrectly compiles native code Added the '-m32' compile option and the '-z noexecstack' link option Reviewed-by: mseledtsov, zgu --- hotspot/test/runtime/jsig/Test8017498.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/hotspot/test/runtime/jsig/Test8017498.sh b/hotspot/test/runtime/jsig/Test8017498.sh index bcf05205bff..0c3c2dbcfe1 100644 --- a/hotspot/test/runtime/jsig/Test8017498.sh +++ b/hotspot/test/runtime/jsig/Test8017498.sh @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,7 @@ ## @bug 8017498 ## @bug 8020791 ## @bug 8021296 +## @bug 8022301 ## @summary sigaction(sig) results in process hang/timed-out if sig is much greater than SIGRTMAX ## @run shell/timeout=30 Test8017498.sh ## @@ -42,6 +43,8 @@ echo "TESTSRC=${TESTSRC}" ## Adding common setup Variables for running shell tests. . ${TESTSRC}/../../test_env.sh +EXTRA_CFLAG= + # set platform-dependent variables OS=`uname -s` case "$OS" in @@ -57,6 +60,7 @@ case "$OS" in MY_LD_PRELOAD=${TESTJAVA}${FS}jre${FS}lib${FS}amd64${FS}libjsig.so else MY_LD_PRELOAD=${TESTJAVA}${FS}jre${FS}lib${FS}i386${FS}libjsig.so + EXTRA_CFLAG=-m32 fi echo MY_LD_PRELOAD = ${MY_LD_PRELOAD} ;; @@ -72,6 +76,7 @@ cp ${TESTSRC}${FS}*.java ${THIS_DIR} ${TESTJAVA}${FS}bin${FS}javac *.java $gcc_cmd -DLINUX -fPIC -shared \ + ${EXTRA_CFLAG} -z noexecstack \ -o ${TESTSRC}${FS}libTestJNI.so \ -I${TESTJAVA}${FS}include \ -I${TESTJAVA}${FS}include${FS}linux \ From ce8f2a52fca6c65dce9e3bcda3258721569955dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Lid=C3=A9n?= Date: Fri, 10 Jan 2014 09:53:53 +0100 Subject: [PATCH 012/158] 8029255: G1: Reference processing should not enqueue references on the shared SATB queue Reviewed-by: brutisso, tschatzl --- .../share/vm/memory/referenceProcessor.cpp | 44 +++++++------------ .../share/vm/memory/referenceProcessor.hpp | 20 --------- 2 files changed, 17 insertions(+), 47 deletions(-) diff --git a/hotspot/src/share/vm/memory/referenceProcessor.cpp b/hotspot/src/share/vm/memory/referenceProcessor.cpp index f5e7fadae72..681ecdc0e7d 100644 --- a/hotspot/src/share/vm/memory/referenceProcessor.cpp +++ b/hotspot/src/share/vm/memory/referenceProcessor.cpp @@ -100,7 +100,6 @@ ReferenceProcessor::ReferenceProcessor(MemRegion span, _enqueuing_is_done(false), _is_alive_non_header(is_alive_non_header), _discovered_list_needs_barrier(discovered_list_needs_barrier), - _bs(NULL), _processing_is_mt(mt_processing), _next_id(0) { @@ -126,10 +125,6 @@ ReferenceProcessor::ReferenceProcessor(MemRegion span, _discovered_refs[i].set_length(0); } - // If we do barriers, cache a copy of the barrier set. - if (discovered_list_needs_barrier) { - _bs = Universe::heap()->barrier_set(); - } setup_policy(false /* default soft ref policy */); } @@ -317,13 +312,9 @@ bool enqueue_discovered_ref_helper(ReferenceProcessor* ref, // Enqueue references that are not made active again, and // clear the decks for the next collection (cycle). ref->enqueue_discovered_reflists((HeapWord*)pending_list_addr, task_executor); - // Do the oop-check on pending_list_addr missed in - // enqueue_discovered_reflist. We should probably - // do a raw oop_check so that future such idempotent - // oop_stores relying on the oop-check side-effect - // may be elided automatically and safely without - // affecting correctness. - oop_store(pending_list_addr, oopDesc::load_decode_heap_oop(pending_list_addr)); + // Do the post-barrier on pending_list_addr missed in + // enqueue_discovered_reflist. + oopDesc::bs()->write_ref_field(pending_list_addr, oopDesc::load_decode_heap_oop(pending_list_addr)); // Stop treating discovered references specially. ref->disable_discovery(); @@ -372,15 +363,17 @@ void ReferenceProcessor::enqueue_discovered_reflist(DiscoveredList& refs_list, assert(java_lang_ref_Reference::next(obj) == NULL, "Reference not active; should not be discovered"); // Self-loop next, so as to make Ref not active. - java_lang_ref_Reference::set_next(obj, obj); + // Post-barrier not needed when looping to self. + java_lang_ref_Reference::set_next_raw(obj, obj); if (next_d == obj) { // obj is last // Swap refs_list into pendling_list_addr and // set obj's discovered to what we read from pending_list_addr. oop old = oopDesc::atomic_exchange_oop(refs_list.head(), pending_list_addr); - // Need oop_check on pending_list_addr above; - // see special oop-check code at the end of + // Need post-barrier on pending_list_addr above; + // see special post-barrier code at the end of // enqueue_discovered_reflists() further below. - java_lang_ref_Reference::set_discovered(obj, old); // old may be NULL + java_lang_ref_Reference::set_discovered_raw(obj, old); // old may be NULL + oopDesc::bs()->write_ref_field(java_lang_ref_Reference::discovered_addr(obj), old); } } } else { // Old behaviour @@ -516,13 +509,11 @@ void DiscoveredListIterator::make_active() { // the reference object and will fail // CT verification. if (UseG1GC) { - BarrierSet* bs = oopDesc::bs(); HeapWord* next_addr = java_lang_ref_Reference::next_addr(_ref); - if (UseCompressedOops) { - bs->write_ref_field_pre((narrowOop*)next_addr, NULL); + oopDesc::bs()->write_ref_field_pre((narrowOop*)next_addr, NULL); } else { - bs->write_ref_field_pre((oop*)next_addr, NULL); + oopDesc::bs()->write_ref_field_pre((oop*)next_addr, NULL); } java_lang_ref_Reference::set_next_raw(_ref, NULL); } else { @@ -790,10 +781,9 @@ private: }; void ReferenceProcessor::set_discovered(oop ref, oop value) { + java_lang_ref_Reference::set_discovered_raw(ref, value); if (_discovered_list_needs_barrier) { - java_lang_ref_Reference::set_discovered(ref, value); - } else { - java_lang_ref_Reference::set_discovered_raw(ref, value); + oopDesc::bs()->write_ref_field(ref, value); } } @@ -1085,7 +1075,7 @@ ReferenceProcessor::add_to_discovered_list_mt(DiscoveredList& refs_list, // so this will expand to nothing. As a result, we have manually // elided this out for G1, but left in the test for some future // collector that might have need for a pre-barrier here, e.g.:- - // _bs->write_ref_field_pre((oop* or narrowOop*)discovered_addr, next_discovered); + // oopDesc::bs()->write_ref_field_pre((oop* or narrowOop*)discovered_addr, next_discovered); assert(!_discovered_list_needs_barrier || UseG1GC, "Need to check non-G1 collector: " "may need a pre-write-barrier for CAS from NULL below"); @@ -1098,7 +1088,7 @@ ReferenceProcessor::add_to_discovered_list_mt(DiscoveredList& refs_list, refs_list.set_head(obj); refs_list.inc_length(1); if (_discovered_list_needs_barrier) { - _bs->write_ref_field((void*)discovered_addr, next_discovered); + oopDesc::bs()->write_ref_field((void*)discovered_addr, next_discovered); } if (TraceReferenceGC) { @@ -1260,13 +1250,13 @@ bool ReferenceProcessor::discover_reference(oop obj, ReferenceType rt) { // As in the case further above, since we are over-writing a NULL // pre-value, we can safely elide the pre-barrier here for the case of G1. - // e.g.:- _bs->write_ref_field_pre((oop* or narrowOop*)discovered_addr, next_discovered); + // e.g.:- oopDesc::bs()->write_ref_field_pre((oop* or narrowOop*)discovered_addr, next_discovered); assert(discovered == NULL, "control point invariant"); assert(!_discovered_list_needs_barrier || UseG1GC, "For non-G1 collector, may need a pre-write-barrier for CAS from NULL below"); oop_store_raw(discovered_addr, next_discovered); if (_discovered_list_needs_barrier) { - _bs->write_ref_field((void*)discovered_addr, next_discovered); + oopDesc::bs()->write_ref_field((void*)discovered_addr, next_discovered); } list->set_head(obj); list->inc_length(1); diff --git a/hotspot/src/share/vm/memory/referenceProcessor.hpp b/hotspot/src/share/vm/memory/referenceProcessor.hpp index 252cc6d6240..ea5f374fa12 100644 --- a/hotspot/src/share/vm/memory/referenceProcessor.hpp +++ b/hotspot/src/share/vm/memory/referenceProcessor.hpp @@ -235,7 +235,6 @@ class ReferenceProcessor : public CHeapObj { // discovery.) bool _discovered_list_needs_barrier; - BarrierSet* _bs; // Cached copy of BarrierSet. bool _enqueuing_is_done; // true if all weak references enqueued bool _processing_is_mt; // true during phases when // reference processing is MT. @@ -420,25 +419,6 @@ class ReferenceProcessor : public CHeapObj { void update_soft_ref_master_clock(); public: - // constructor - ReferenceProcessor(): - _span((HeapWord*)NULL, (HeapWord*)NULL), - _discovered_refs(NULL), - _discoveredSoftRefs(NULL), _discoveredWeakRefs(NULL), - _discoveredFinalRefs(NULL), _discoveredPhantomRefs(NULL), - _discovering_refs(false), - _discovery_is_atomic(true), - _enqueuing_is_done(false), - _discovery_is_mt(false), - _discovered_list_needs_barrier(false), - _bs(NULL), - _is_alive_non_header(NULL), - _num_q(0), - _max_num_q(0), - _processing_is_mt(false), - _next_id(0) - { } - // Default parameters give you a vanilla reference processor. ReferenceProcessor(MemRegion span, bool mt_processing = false, uint mt_processing_degree = 1, From ca035a4040d05a86429b8d7c3a95a4ffd434dcab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Lid=C3=A9n?= Date: Fri, 10 Jan 2014 09:54:25 +0100 Subject: [PATCH 013/158] 8029162: G1: Shared SATB queue never enabled Reviewed-by: brutisso, mgerdin, tschatzl --- .../vm/gc_implementation/g1/satbQueue.cpp | 82 +++++++++---------- .../vm/gc_implementation/g1/satbQueue.hpp | 7 +- 2 files changed, 42 insertions(+), 47 deletions(-) diff --git a/hotspot/src/share/vm/gc_implementation/g1/satbQueue.cpp b/hotspot/src/share/vm/gc_implementation/g1/satbQueue.cpp index ac215841144..ec6581431b3 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/satbQueue.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/satbQueue.cpp @@ -219,58 +219,52 @@ void SATBMarkQueueSet::handle_zero_index_for_thread(JavaThread* t) { } #ifdef ASSERT -void SATBMarkQueueSet::dump_active_values(JavaThread* first, - bool expected_active) { - gclog_or_tty->print_cr("SATB queue active values for Java Threads"); - gclog_or_tty->print_cr(" SATB queue set: active is %s", - (is_active()) ? "TRUE" : "FALSE"); - gclog_or_tty->print_cr(" expected_active is %s", - (expected_active) ? "TRUE" : "FALSE"); - for (JavaThread* t = first; t; t = t->next()) { - bool active = t->satb_mark_queue().is_active(); - gclog_or_tty->print_cr(" thread %s, active is %s", - t->name(), (active) ? "TRUE" : "FALSE"); +void SATBMarkQueueSet::dump_active_states(bool expected_active) { + gclog_or_tty->print_cr("Expected SATB active state: %s", + expected_active ? "ACTIVE" : "INACTIVE"); + gclog_or_tty->print_cr("Actual SATB active states:"); + gclog_or_tty->print_cr(" Queue set: %s", is_active() ? "ACTIVE" : "INACTIVE"); + for (JavaThread* t = Threads::first(); t; t = t->next()) { + gclog_or_tty->print_cr(" Thread \"%s\" queue: %s", t->name(), + t->satb_mark_queue().is_active() ? "ACTIVE" : "INACTIVE"); + } + gclog_or_tty->print_cr(" Shared queue: %s", + shared_satb_queue()->is_active() ? "ACTIVE" : "INACTIVE"); +} + +void SATBMarkQueueSet::verify_active_states(bool expected_active) { + // Verify queue set state + if (is_active() != expected_active) { + dump_active_states(expected_active); + guarantee(false, "SATB queue set has an unexpected active state"); + } + + // Verify thread queue states + for (JavaThread* t = Threads::first(); t; t = t->next()) { + if (t->satb_mark_queue().is_active() != expected_active) { + dump_active_states(expected_active); + guarantee(false, "Thread SATB queue has an unexpected active state"); + } + } + + // Verify shared queue state + if (shared_satb_queue()->is_active() != expected_active) { + dump_active_states(expected_active); + guarantee(false, "Shared SATB queue has an unexpected active state"); } } #endif // ASSERT -void SATBMarkQueueSet::set_active_all_threads(bool b, - bool expected_active) { +void SATBMarkQueueSet::set_active_all_threads(bool active, bool expected_active) { assert(SafepointSynchronize::is_at_safepoint(), "Must be at safepoint."); - JavaThread* first = Threads::first(); - #ifdef ASSERT - if (_all_active != expected_active) { - dump_active_values(first, expected_active); - - // I leave this here as a guarantee, instead of an assert, so - // that it will still be compiled in if we choose to uncomment - // the #ifdef ASSERT in a product build. The whole block is - // within an #ifdef ASSERT so the guarantee will not be compiled - // in a product build anyway. - guarantee(false, - "SATB queue set has an unexpected active value"); - } + verify_active_states(expected_active); #endif // ASSERT - _all_active = b; - - for (JavaThread* t = first; t; t = t->next()) { -#ifdef ASSERT - bool active = t->satb_mark_queue().is_active(); - if (active != expected_active) { - dump_active_values(first, expected_active); - - // I leave this here as a guarantee, instead of an assert, so - // that it will still be compiled in if we choose to uncomment - // the #ifdef ASSERT in a product build. The whole block is - // within an #ifdef ASSERT so the guarantee will not be compiled - // in a product build anyway. - guarantee(false, - "thread has an unexpected active value in its SATB queue"); - } -#endif // ASSERT - t->satb_mark_queue().set_active(b); + _all_active = active; + for (JavaThread* t = Threads::first(); t; t = t->next()) { + t->satb_mark_queue().set_active(active); } + shared_satb_queue()->set_active(active); } void SATBMarkQueueSet::filter_thread_buffers() { diff --git a/hotspot/src/share/vm/gc_implementation/g1/satbQueue.hpp b/hotspot/src/share/vm/gc_implementation/g1/satbQueue.hpp index adce5ff687e..8cad181c804 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/satbQueue.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/satbQueue.hpp @@ -87,7 +87,8 @@ class SATBMarkQueueSet: public PtrQueueSet { bool apply_closure_to_completed_buffer_work(bool par, int worker); #ifdef ASSERT - void dump_active_values(JavaThread* first, bool expected_active); + void dump_active_states(bool expected_active); + void verify_active_states(bool expected_active); #endif // ASSERT public: @@ -99,11 +100,11 @@ public: static void handle_zero_index_for_thread(JavaThread* t); - // Apply "set_active(b)" to all Java threads' SATB queues. It should be + // Apply "set_active(active)" to all SATB queues in the set. It should be // called only with the world stopped. The method will assert that the // SATB queues of all threads it visits, as well as the SATB queue // set itself, has an active value same as expected_active. - void set_active_all_threads(bool b, bool expected_active); + void set_active_all_threads(bool active, bool expected_active); // Filter all the currently-active SATB buffers. void filter_thread_buffers(); From 6c1b243c0ec5c2c40a5070c1f739c5638c77d082 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Tue, 14 Jan 2014 15:27:01 +0100 Subject: [PATCH 014/158] 8031304: Add dcmd to print all loaded dynamic libraries Adding VM.dynlibs as a dcmd to dump all loaded dynamic libraries. Reviewed-by: sla, fparain, mgronlun, dsamersoff --- .../share/vm/services/diagnosticCommand.cpp | 15 +++- .../share/vm/services/diagnosticCommand.hpp | 23 ++++++ hotspot/test/TEST.groups | 3 +- .../test/serviceability/dcmd/DcmdUtil.java | 73 +++++++++++++++++++ .../serviceability/dcmd/DynLibDcmdTest.java | 67 +++++++++++++++++ 5 files changed, 177 insertions(+), 4 deletions(-) create mode 100644 hotspot/test/serviceability/dcmd/DcmdUtil.java create mode 100644 hotspot/test/serviceability/dcmd/DynLibDcmdTest.java diff --git a/hotspot/src/share/vm/services/diagnosticCommand.cpp b/hotspot/src/share/vm/services/diagnosticCommand.cpp index 71b552801aa..daa09f36ff4 100644 --- a/hotspot/src/share/vm/services/diagnosticCommand.cpp +++ b/hotspot/src/share/vm/services/diagnosticCommand.cpp @@ -25,6 +25,7 @@ #include "precompiled.hpp" #include "gc_implementation/shared/vmGCOperations.hpp" #include "runtime/javaCalls.hpp" +#include "runtime/os.hpp" #include "services/diagnosticArgument.hpp" #include "services/diagnosticCommand.hpp" #include "services/diagnosticFramework.hpp" @@ -44,6 +45,7 @@ void DCmdRegistrant::register_dcmds(){ DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl(full_export, true, false)); DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl(full_export, true, false)); DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl(full_export, true, false)); + DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl(full_export, true, false)); DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl(full_export, true, false)); DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl(full_export, true, false)); DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl(full_export, true, false)); @@ -610,8 +612,7 @@ void JMXStartRemoteDCmd::execute(DCmdSource source, TRAPS) { } JMXStartLocalDCmd::JMXStartLocalDCmd(outputStream *output, bool heap_allocated) : - DCmd(output, heap_allocated) -{ + DCmd(output, heap_allocated) { // do nothing } @@ -632,7 +633,6 @@ void JMXStartLocalDCmd::execute(DCmdSource source, TRAPS) { JavaCalls::call_static(&result, ik, vmSymbols::startLocalAgent_name(), vmSymbols::void_method_signature(), CHECK); } - void JMXStopRemoteDCmd::execute(DCmdSource source, TRAPS) { ResourceMark rm(THREAD); HandleMark hm(THREAD); @@ -650,3 +650,12 @@ void JMXStopRemoteDCmd::execute(DCmdSource source, TRAPS) { JavaCalls::call_static(&result, ik, vmSymbols::stopRemoteAgent_name(), vmSymbols::void_method_signature(), CHECK); } +VMDynamicLibrariesDCmd::VMDynamicLibrariesDCmd(outputStream *output, bool heap_allocated) : + DCmd(output, heap_allocated) { + // do nothing +} + +void VMDynamicLibrariesDCmd::execute(DCmdSource source, TRAPS) { + os::print_dll_info(output()); + output()->cr(); +} diff --git a/hotspot/src/share/vm/services/diagnosticCommand.hpp b/hotspot/src/share/vm/services/diagnosticCommand.hpp index 5485b119dec..a23af05aa09 100644 --- a/hotspot/src/share/vm/services/diagnosticCommand.hpp +++ b/hotspot/src/share/vm/services/diagnosticCommand.hpp @@ -132,6 +132,29 @@ public: virtual void execute(DCmdSource source, TRAPS); }; +class VMDynamicLibrariesDCmd : public DCmd { +public: + VMDynamicLibrariesDCmd(outputStream* output, bool heap); + static const char* name() { + return "VM.dynlibs"; + } + static const char* description() { + return "Print loaded dynamic libraries."; + } + static const char* impact() { + return "Low"; + } + static const JavaPermission permission() { + JavaPermission p = {"java.lang.management.ManagementPermission", + "monitor", NULL}; + return p; + } + static int num_arguments() { + return 0; + }; + virtual void execute(DCmdSource source, TRAPS); +}; + class VMUptimeDCmd : public DCmdWithParser { protected: DCmdArgument _date; diff --git a/hotspot/test/TEST.groups b/hotspot/test/TEST.groups index ee67fe938c7..ae74a76a868 100644 --- a/hotspot/test/TEST.groups +++ b/hotspot/test/TEST.groups @@ -86,7 +86,8 @@ needs_jdk = \ runtime/RedefineObject/TestRedefineObject.java \ runtime/XCheckJniJsig/XCheckJSig.java \ serviceability/attach/AttachWithStalePidFile.java \ - serviceability/sa/jmap-hprof/JMapHProfLargeHeapTest.java + serviceability/sa/jmap-hprof/JMapHProfLargeHeapTest.java \ + serviceability/dcmd/DynLibDcmdTest.java # JRE adds further tests to compact3 diff --git a/hotspot/test/serviceability/dcmd/DcmdUtil.java b/hotspot/test/serviceability/dcmd/DcmdUtil.java new file mode 100644 index 00000000000..39ddb06b274 --- /dev/null +++ b/hotspot/test/serviceability/dcmd/DcmdUtil.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 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. + * + * 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. + */ + +import sun.management.ManagementFactoryHelper; + +import com.sun.management.DiagnosticCommandMBean; + +public class DcmdUtil +{ + public static String executeDcmd(String cmd, String ... args) { + DiagnosticCommandMBean dcmd = ManagementFactoryHelper.getDiagnosticCommandMBean(); + Object[] dcmdArgs = {args}; + String[] signature = {String[].class.getName()}; + + try { + System.out.print("> " + cmd + " "); + for (String s : args) { + System.out.print(s + " "); + } + System.out.println(":"); + String result = (String) dcmd.invoke(transform(cmd), dcmdArgs, signature); + System.out.println(result); + return result; + } catch(Exception ex) { + ex.printStackTrace(); + } + return null; + } + + private static String transform(String name) { + StringBuilder sb = new StringBuilder(); + boolean toLower = true; + boolean toUpper = false; + for (int i = 0; i < name.length(); i++) { + char c = name.charAt(i); + if (c == '.' || c == '_') { + toLower = false; + toUpper = true; + } else { + if (toUpper) { + toUpper = false; + sb.append(Character.toUpperCase(c)); + } else if(toLower) { + sb.append(Character.toLowerCase(c)); + } else { + sb.append(c); + } + } + } + return sb.toString(); + } + +} diff --git a/hotspot/test/serviceability/dcmd/DynLibDcmdTest.java b/hotspot/test/serviceability/dcmd/DynLibDcmdTest.java new file mode 100644 index 00000000000..a5c71839952 --- /dev/null +++ b/hotspot/test/serviceability/dcmd/DynLibDcmdTest.java @@ -0,0 +1,67 @@ +import java.util.HashSet; +import java.util.Set; +import com.oracle.java.testlibrary.Platform; + +/* + * Copyright (c) 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @summary Test of VM.dynlib diagnostic command via MBean + * @library /testlibrary + * @compile DcmdUtil.java + * @run main DynLibDcmdTest + */ + +public class DynLibDcmdTest { + + public static void main(String[] args) throws Exception { + String result = DcmdUtil.executeDcmd("VM.dynlibs"); + + String osDependentBaseString = null; + if (Platform.isSolaris()) { + osDependentBaseString = "lib%s.so"; + } else if (Platform.isWindows()) { + osDependentBaseString = "%s.dll"; + } else if (Platform.isOSX()) { + osDependentBaseString = "lib%s.dylib"; + } else if (Platform.isLinux()) { + osDependentBaseString = "lib%s.so"; + } + + if (osDependentBaseString == null) { + throw new Exception("Unsupported OS"); + } + + Set expectedContent = new HashSet<>(); + expectedContent.add(String.format(osDependentBaseString, "jvm")); + expectedContent.add(String.format(osDependentBaseString, "java")); + expectedContent.add(String.format(osDependentBaseString, "management")); + + for(String expected : expectedContent) { + if (!result.contains(expected)) { + throw new Exception("Dynamic library list output did not contain the expected string: '" + expected + "'"); + } + } + } +} From 509d617369bf8cabb8c81bf8a4604372472e7a07 Mon Sep 17 00:00:00 2001 From: Zhengyu Gu Date: Mon, 13 Jan 2014 10:05:37 -0500 Subject: [PATCH 015/158] 8031530: [TESTBUG] Enable test runtime/LoadClass/LoadClassNegative.java Re-enabled the test. The issue that prevents this test from running was fixed by 8020675 Reviewed-by: sla, ccheung --- hotspot/test/runtime/LoadClass/LoadClassNegative.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hotspot/test/runtime/LoadClass/LoadClassNegative.java b/hotspot/test/runtime/LoadClass/LoadClassNegative.java index 02b7c8c6101..43d5a923f3e 100644 --- a/hotspot/test/runtime/LoadClass/LoadClassNegative.java +++ b/hotspot/test/runtime/LoadClass/LoadClassNegative.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,7 +22,6 @@ */ /* - * @ignore 8028095 * @test * @key regression * @bug 8020675 From 14578d5ae97ae713000d5b351512c014de2e31fe Mon Sep 17 00:00:00 2001 From: Roland Westrelin Date: Mon, 13 Jan 2014 16:16:25 -0800 Subject: [PATCH 016/158] 8029464: assert(ft == ttkp->cast_to_ptr_type(jtkp->ptr()) || ft->isa_narrowoop() Fix the assert check for narrow klass pointer. Reviewed-by: twisti, kvn --- hotspot/src/share/vm/opto/cfgnode.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hotspot/src/share/vm/opto/cfgnode.cpp b/hotspot/src/share/vm/opto/cfgnode.cpp index 36347fb9202..36818b75b13 100644 --- a/hotspot/src/share/vm/opto/cfgnode.cpp +++ b/hotspot/src/share/vm/opto/cfgnode.cpp @@ -1018,7 +1018,7 @@ const Type *PhiNode::Value( PhaseTransform *phase ) const { !jtkp->klass_is_exact() && // Keep exact interface klass (6894807) ttkp->is_loaded() && !ttkp->klass()->is_interface() ) { assert(ft == ttkp->cast_to_ptr_type(jtkp->ptr()) || - ft->isa_narrowoop() && ft->make_ptr() == ttkp->cast_to_ptr_type(jtkp->ptr()), ""); + ft->isa_narrowklass() && ft->make_ptr() == ttkp->cast_to_ptr_type(jtkp->ptr()), ""); jt = ft; } } From 927369db433849a7e3ebe986d24d1c0acc480bbc Mon Sep 17 00:00:00 2001 From: Mikael Gerdin Date: Tue, 14 Jan 2014 09:44:45 +0100 Subject: [PATCH 017/158] 8028764: dtrace/hotspot_jni/ALL/ALL001 crashes the vm on Solaris-amd64, SIGSEGV in MarkSweep::follow_stack()+0x8a C1 generates code to encode compressed oop into tmp register before runtime call for patching where GC may happen Reviewed-by: iveresov, twisti, kvn --- hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp b/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp index af13192330b..bf9c9347380 100644 --- a/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp +++ b/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp @@ -38,6 +38,7 @@ #include "nativeInst_x86.hpp" #include "oops/objArrayKlass.hpp" #include "runtime/sharedRuntime.hpp" +#include "vmreg_x86.inline.hpp" // These masks are used to provide 128-bit aligned bitmasks to the XMM @@ -1006,6 +1007,9 @@ void LIR_Assembler::reg2mem(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_Patch if (UseCompressedOops && !wide) { __ movptr(compressed_src, src->as_register()); __ encode_heap_oop(compressed_src); + if (patch_code != lir_patch_none) { + info->oop_map()->set_narrowoop(compressed_src->as_VMReg()); + } } #endif } From bff5f5c875de40c10a6841bc3608e4b2938df1e1 Mon Sep 17 00:00:00 2001 From: Roland Westrelin Date: Tue, 14 Jan 2014 12:44:12 +0100 Subject: [PATCH 018/158] 8030662: "assert(counter_changed) failed: failed dependencies, but counter didn't change" still fails Erroneously removed call to SystemDictionary::notice_modification() from jvmti with fix for 8029383 Reviewed-by: iveresov, twisti, kvn --- hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp index 4a57b20569b..1c3bbbfeed0 100644 --- a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp +++ b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp @@ -147,6 +147,9 @@ void VM_RedefineClasses::doit() { _scratch_classes[i] = NULL; } + // Disable any dependent concurrent compilations + SystemDictionary::notice_modification(); + // Set flag indicating that some invariants are no longer true. // See jvmtiExport.hpp for detailed explanation. JvmtiExport::set_has_redefined_a_class(); From b1c92a140b47cd6c66d671296073700af4a930a7 Mon Sep 17 00:00:00 2001 From: Roland Westrelin Date: Tue, 14 Jan 2014 14:51:47 +0100 Subject: [PATCH 019/158] 8026253: New type profiling points: sparc support C1 and interpreter support for new type profiling on sparc Reviewed-by: kvn, twisti --- .../cpu/sparc/vm/c1_LIRAssembler_sparc.cpp | 151 +++++++++++- .../src/cpu/sparc/vm/interp_masm_sparc.cpp | 214 ++++++++++++++++++ .../src/cpu/sparc/vm/interp_masm_sparc.hpp | 5 + .../sparc/vm/templateInterpreter_sparc.cpp | 5 + .../src/cpu/sparc/vm/templateTable_sparc.cpp | 9 +- hotspot/src/cpu/x86/vm/interp_masm_x86.cpp | 4 +- hotspot/src/share/vm/c1/c1_LIRGenerator.cpp | 5 +- hotspot/src/share/vm/runtime/arguments.cpp | 4 - 8 files changed, 385 insertions(+), 12 deletions(-) diff --git a/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp b/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp index 22ab05f7c9f..488a53d9b6e 100644 --- a/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp @@ -1315,7 +1315,7 @@ void LIR_Assembler::const2reg(LIR_Opr src, LIR_Opr dest, LIR_PatchCode patch_cod } Address LIR_Assembler::as_Address(LIR_Address* addr) { - Register reg = addr->base()->as_register(); + Register reg = addr->base()->as_pointer_register(); LIR_Opr index = addr->index(); if (index->is_illegal()) { return Address(reg, addr->disp()); @@ -3101,7 +3101,145 @@ void LIR_Assembler::emit_profile_call(LIR_OpProfileCall* op) { } void LIR_Assembler::emit_profile_type(LIR_OpProfileType* op) { - fatal("Type profiling not implemented on this platform"); + Register obj = op->obj()->as_register(); + Register tmp1 = op->tmp()->as_pointer_register(); + Register tmp2 = G1; + Address mdo_addr = as_Address(op->mdp()->as_address_ptr()); + ciKlass* exact_klass = op->exact_klass(); + intptr_t current_klass = op->current_klass(); + bool not_null = op->not_null(); + bool no_conflict = op->no_conflict(); + + Label update, next, none; + + bool do_null = !not_null; + bool exact_klass_set = exact_klass != NULL && ciTypeEntries::valid_ciklass(current_klass) == exact_klass; + bool do_update = !TypeEntries::is_type_unknown(current_klass) && !exact_klass_set; + + assert(do_null || do_update, "why are we here?"); + assert(!TypeEntries::was_null_seen(current_klass) || do_update, "why are we here?"); + + __ verify_oop(obj); + + if (tmp1 != obj) { + __ mov(obj, tmp1); + } + if (do_null) { + __ br_notnull_short(tmp1, Assembler::pt, update); + if (!TypeEntries::was_null_seen(current_klass)) { + __ ld_ptr(mdo_addr, tmp1); + __ or3(tmp1, TypeEntries::null_seen, tmp1); + __ st_ptr(tmp1, mdo_addr); + } + if (do_update) { + __ ba(next); + __ delayed()->nop(); + } +#ifdef ASSERT + } else { + __ br_notnull_short(tmp1, Assembler::pt, update); + __ stop("unexpect null obj"); +#endif + } + + __ bind(update); + + if (do_update) { +#ifdef ASSERT + if (exact_klass != NULL) { + Label ok; + __ load_klass(tmp1, tmp1); + metadata2reg(exact_klass->constant_encoding(), tmp2); + __ cmp_and_br_short(tmp1, tmp2, Assembler::equal, Assembler::pt, ok); + __ stop("exact klass and actual klass differ"); + __ bind(ok); + } +#endif + + Label do_update; + __ ld_ptr(mdo_addr, tmp2); + + if (!no_conflict) { + if (exact_klass == NULL || TypeEntries::is_type_none(current_klass)) { + if (exact_klass != NULL) { + metadata2reg(exact_klass->constant_encoding(), tmp1); + } else { + __ load_klass(tmp1, tmp1); + } + + __ xor3(tmp1, tmp2, tmp1); + __ btst(TypeEntries::type_klass_mask, tmp1); + // klass seen before, nothing to do. The unknown bit may have been + // set already but no need to check. + __ brx(Assembler::zero, false, Assembler::pt, next); + __ delayed()-> + + btst(TypeEntries::type_unknown, tmp1); + // already unknown. Nothing to do anymore. + __ brx(Assembler::notZero, false, Assembler::pt, next); + + if (TypeEntries::is_type_none(current_klass)) { + __ delayed()->btst(TypeEntries::type_mask, tmp2); + __ brx(Assembler::zero, true, Assembler::pt, do_update); + // first time here. Set profile type. + __ delayed()->or3(tmp2, tmp1, tmp2); + } else { + __ delayed()->nop(); + } + } else { + assert(ciTypeEntries::valid_ciklass(current_klass) != NULL && + ciTypeEntries::valid_ciklass(current_klass) != exact_klass, "conflict only"); + + __ btst(TypeEntries::type_unknown, tmp2); + // already unknown. Nothing to do anymore. + __ brx(Assembler::notZero, false, Assembler::pt, next); + __ delayed()->nop(); + } + + // different than before. Cannot keep accurate profile. + __ or3(tmp2, TypeEntries::type_unknown, tmp2); + } else { + // There's a single possible klass at this profile point + assert(exact_klass != NULL, "should be"); + if (TypeEntries::is_type_none(current_klass)) { + metadata2reg(exact_klass->constant_encoding(), tmp1); + __ xor3(tmp1, tmp2, tmp1); + __ btst(TypeEntries::type_klass_mask, tmp1); + __ brx(Assembler::zero, false, Assembler::pt, next); +#ifdef ASSERT + + { + Label ok; + __ delayed()->btst(TypeEntries::type_mask, tmp2); + __ brx(Assembler::zero, true, Assembler::pt, ok); + __ delayed()->nop(); + + __ stop("unexpected profiling mismatch"); + __ bind(ok); + } + // first time here. Set profile type. + __ or3(tmp2, tmp1, tmp2); +#else + // first time here. Set profile type. + __ delayed()->or3(tmp2, tmp1, tmp2); +#endif + + } else { + assert(ciTypeEntries::valid_ciklass(current_klass) != NULL && + ciTypeEntries::valid_ciklass(current_klass) != exact_klass, "inconsistent"); + + // already unknown. Nothing to do anymore. + __ btst(TypeEntries::type_unknown, tmp2); + __ brx(Assembler::notZero, false, Assembler::pt, next); + __ delayed()->or3(tmp2, TypeEntries::type_unknown, tmp2); + } + } + + __ bind(do_update); + __ st_ptr(tmp2, mdo_addr); + + __ bind(next); + } } void LIR_Assembler::align_backward_branch_target() { @@ -3321,9 +3459,14 @@ void LIR_Assembler::unpack64(LIR_Opr src, LIR_Opr dst) { void LIR_Assembler::leal(LIR_Opr addr_opr, LIR_Opr dest) { LIR_Address* addr = addr_opr->as_address_ptr(); - assert(addr->index()->is_illegal() && addr->scale() == LIR_Address::times_1 && Assembler::is_simm13(addr->disp()), "can't handle complex addresses yet"); + assert(addr->index()->is_illegal() && addr->scale() == LIR_Address::times_1, "can't handle complex addresses yet"); - __ add(addr->base()->as_pointer_register(), addr->disp(), dest->as_pointer_register()); + if (Assembler::is_simm13(addr->disp())) { + __ add(addr->base()->as_pointer_register(), addr->disp(), dest->as_pointer_register()); + } else { + __ set(addr->disp(), G3_scratch); + __ add(addr->base()->as_pointer_register(), G3_scratch, dest->as_pointer_register()); + } } diff --git a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp index 454b23c920b..c22f20a23d4 100644 --- a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp @@ -1892,6 +1892,220 @@ void InterpreterMacroAssembler::profile_switch_case(Register index, } } +void InterpreterMacroAssembler::profile_obj_type(Register obj, const Address& mdo_addr, Register tmp) { + Label not_null, do_nothing, do_update; + + assert_different_registers(obj, mdo_addr.base(), tmp); + + verify_oop(obj); + + ld_ptr(mdo_addr, tmp); + + br_notnull_short(obj, pt, not_null); + or3(tmp, TypeEntries::null_seen, tmp); + ba_short(do_update); + + bind(not_null); + load_klass(obj, obj); + + xor3(obj, tmp, obj); + btst(TypeEntries::type_klass_mask, obj); + // klass seen before, nothing to do. The unknown bit may have been + // set already but no need to check. + brx(zero, false, pt, do_nothing); + delayed()-> + + btst(TypeEntries::type_unknown, obj); + // already unknown. Nothing to do anymore. + brx(notZero, false, pt, do_nothing); + delayed()-> + + btst(TypeEntries::type_mask, tmp); + brx(zero, true, pt, do_update); + // first time here. Set profile type. + delayed()->or3(tmp, obj, tmp); + + // different than before. Cannot keep accurate profile. + or3(tmp, TypeEntries::type_unknown, tmp); + + bind(do_update); + // update profile + st_ptr(tmp, mdo_addr); + + bind(do_nothing); +} + +void InterpreterMacroAssembler::profile_arguments_type(Register callee, Register tmp1, Register tmp2, bool is_virtual) { + if (!ProfileInterpreter) { + return; + } + + assert_different_registers(callee, tmp1, tmp2, ImethodDataPtr); + + if (MethodData::profile_arguments() || MethodData::profile_return()) { + Label profile_continue; + + test_method_data_pointer(profile_continue); + + int off_to_start = is_virtual ? in_bytes(VirtualCallData::virtual_call_data_size()) : in_bytes(CounterData::counter_data_size()); + + ldub(ImethodDataPtr, in_bytes(DataLayout::tag_offset()) - off_to_start, tmp1); + cmp_and_br_short(tmp1, is_virtual ? DataLayout::virtual_call_type_data_tag : DataLayout::call_type_data_tag, notEqual, pn, profile_continue); + + if (MethodData::profile_arguments()) { + Label done; + int off_to_args = in_bytes(TypeEntriesAtCall::args_data_offset()); + add(ImethodDataPtr, off_to_args, ImethodDataPtr); + + for (int i = 0; i < TypeProfileArgsLimit; i++) { + if (i > 0 || MethodData::profile_return()) { + // If return value type is profiled we may have no argument to profile + ld_ptr(ImethodDataPtr, in_bytes(TypeEntriesAtCall::cell_count_offset())-off_to_args, tmp1); + sub(tmp1, i*TypeStackSlotEntries::per_arg_count(), tmp1); + cmp_and_br_short(tmp1, TypeStackSlotEntries::per_arg_count(), less, pn, done); + } + ld_ptr(Address(callee, Method::const_offset()), tmp1); + lduh(Address(tmp1, ConstMethod::size_of_parameters_offset()), tmp1); + // stack offset o (zero based) from the start of the argument + // list, for n arguments translates into offset n - o - 1 from + // the end of the argument list. But there's an extra slot at + // the stop of the stack. So the offset is n - o from Lesp. + ld_ptr(ImethodDataPtr, in_bytes(TypeEntriesAtCall::stack_slot_offset(i))-off_to_args, tmp2); + sub(tmp1, tmp2, tmp1); + + // Can't use MacroAssembler::argument_address() which needs Gargs to be set up + sll(tmp1, Interpreter::logStackElementSize, tmp1); + ld_ptr(Lesp, tmp1, tmp1); + + Address mdo_arg_addr(ImethodDataPtr, in_bytes(TypeEntriesAtCall::argument_type_offset(i))-off_to_args); + profile_obj_type(tmp1, mdo_arg_addr, tmp2); + + int to_add = in_bytes(TypeStackSlotEntries::per_arg_size()); + add(ImethodDataPtr, to_add, ImethodDataPtr); + off_to_args += to_add; + } + + if (MethodData::profile_return()) { + ld_ptr(ImethodDataPtr, in_bytes(TypeEntriesAtCall::cell_count_offset())-off_to_args, tmp1); + sub(tmp1, TypeProfileArgsLimit*TypeStackSlotEntries::per_arg_count(), tmp1); + } + + bind(done); + + if (MethodData::profile_return()) { + // We're right after the type profile for the last + // argument. tmp1 is the number of cells left in the + // CallTypeData/VirtualCallTypeData to reach its end. Non null + // if there's a return to profile. + assert(ReturnTypeEntry::static_cell_count() < TypeStackSlotEntries::per_arg_count(), "can't move past ret type"); + sll(tmp1, exact_log2(DataLayout::cell_size), tmp1); + add(ImethodDataPtr, tmp1, ImethodDataPtr); + } + } else { + assert(MethodData::profile_return(), "either profile call args or call ret"); + update_mdp_by_constant(in_bytes(ReturnTypeEntry::size())); + } + + // mdp points right after the end of the + // CallTypeData/VirtualCallTypeData, right after the cells for the + // return value type if there's one. + + bind(profile_continue); + } +} + +void InterpreterMacroAssembler::profile_return_type(Register ret, Register tmp1, Register tmp2) { + assert_different_registers(ret, tmp1, tmp2); + if (ProfileInterpreter && MethodData::profile_return()) { + Label profile_continue, done; + + test_method_data_pointer(profile_continue); + + if (MethodData::profile_return_jsr292_only()) { + // If we don't profile all invoke bytecodes we must make sure + // it's a bytecode we indeed profile. We can't go back to the + // begining of the ProfileData we intend to update to check its + // type because we're right after it and we don't known its + // length. + Label do_profile; + ldub(Lbcp, 0, tmp1); + cmp_and_br_short(tmp1, Bytecodes::_invokedynamic, equal, pn, do_profile); + cmp(tmp1, Bytecodes::_invokehandle); + br(equal, false, pn, do_profile); + delayed()->ldub(Lmethod, Method::intrinsic_id_offset_in_bytes(), tmp1); + cmp_and_br_short(tmp1, vmIntrinsics::_compiledLambdaForm, notEqual, pt, profile_continue); + + bind(do_profile); + } + + Address mdo_ret_addr(ImethodDataPtr, -in_bytes(ReturnTypeEntry::size())); + mov(ret, tmp1); + profile_obj_type(tmp1, mdo_ret_addr, tmp2); + + bind(profile_continue); + } +} + +void InterpreterMacroAssembler::profile_parameters_type(Register tmp1, Register tmp2, Register tmp3, Register tmp4) { + if (ProfileInterpreter && MethodData::profile_parameters()) { + Label profile_continue, done; + + test_method_data_pointer(profile_continue); + + // Load the offset of the area within the MDO used for + // parameters. If it's negative we're not profiling any parameters. + lduw(ImethodDataPtr, in_bytes(MethodData::parameters_type_data_di_offset()) - in_bytes(MethodData::data_offset()), tmp1); + cmp_and_br_short(tmp1, 0, less, pn, profile_continue); + + // Compute a pointer to the area for parameters from the offset + // and move the pointer to the slot for the last + // parameters. Collect profiling from last parameter down. + // mdo start + parameters offset + array length - 1 + + // Pointer to the parameter area in the MDO + Register mdp = tmp1; + add(ImethodDataPtr, tmp1, mdp); + + // offset of the current profile entry to update + Register entry_offset = tmp2; + // entry_offset = array len in number of cells + ld_ptr(mdp, ArrayData::array_len_offset(), entry_offset); + + int off_base = in_bytes(ParametersTypeData::stack_slot_offset(0)); + assert(off_base % DataLayout::cell_size == 0, "should be a number of cells"); + + // entry_offset (number of cells) = array len - size of 1 entry + offset of the stack slot field + sub(entry_offset, TypeStackSlotEntries::per_arg_count() - (off_base / DataLayout::cell_size), entry_offset); + // entry_offset in bytes + sll(entry_offset, exact_log2(DataLayout::cell_size), entry_offset); + + Label loop; + bind(loop); + + // load offset on the stack from the slot for this parameter + ld_ptr(mdp, entry_offset, tmp3); + sll(tmp3,Interpreter::logStackElementSize, tmp3); + neg(tmp3); + // read the parameter from the local area + ld_ptr(Llocals, tmp3, tmp3); + + // make entry_offset now point to the type field for this parameter + int type_base = in_bytes(ParametersTypeData::type_offset(0)); + assert(type_base > off_base, "unexpected"); + add(entry_offset, type_base - off_base, entry_offset); + + // profile the parameter + Address arg_type(mdp, entry_offset); + profile_obj_type(tmp3, arg_type, tmp4); + + // go to next parameter + sub(entry_offset, TypeStackSlotEntries::per_arg_count() * DataLayout::cell_size + (type_base - off_base), entry_offset); + cmp_and_br_short(entry_offset, off_base, greaterEqual, pt, loop); + + bind(profile_continue); + } +} + // add a InterpMonitorElem to stack (see frame_sparc.hpp) void InterpreterMacroAssembler::add_monitor_to_stack( bool stack_is_empty, diff --git a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.hpp b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.hpp index 1a7901526ad..5ba547d2241 100644 --- a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.hpp +++ b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.hpp @@ -323,6 +323,11 @@ class InterpreterMacroAssembler: public MacroAssembler { Register scratch2, Register scratch3); + void profile_obj_type(Register obj, const Address& mdo_addr, Register tmp); + void profile_arguments_type(Register callee, Register tmp1, Register tmp2, bool is_virtual); + void profile_return_type(Register ret, Register tmp1, Register tmp2); + void profile_parameters_type(Register tmp1, Register tmp2, Register tmp3, Register tmp4); + // Debugging void interp_verify_oop(Register reg, TosState state, const char * file, int line); // only if +VerifyOops && state == atos void verify_oop_or_return_address(Register reg, Register rtmp); // for astore diff --git a/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp b/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp index 40847f8c2df..5fd629a4f1e 100644 --- a/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp @@ -156,6 +156,10 @@ address TemplateInterpreterGenerator::generate_StackOverflowError_handler() { address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, size_t index_size) { address entry = __ pc(); + if (state == atos) { + __ profile_return_type(O0, G3_scratch, G1_scratch); + } + #if !defined(_LP64) && defined(COMPILER2) // All return values are where we want them, except for Longs. C2 returns // longs in G1 in the 32-bit build whereas the interpreter wants them in O0/O1. @@ -1333,6 +1337,7 @@ address InterpreterGenerator::generate_normal_entry(bool synchronized) { __ movbool(true, G3_scratch); __ stbool(G3_scratch, do_not_unlock_if_synchronized); + __ profile_parameters_type(G1_scratch, G3_scratch, G4_scratch, Lscratch); // increment invocation counter and check for overflow // // Note: checking for negative value instead of overflow diff --git a/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp b/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp index 92098113cca..83e083ec1c5 100644 --- a/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp @@ -2942,12 +2942,12 @@ void TemplateTable::prepare_invoke(int byte_no, void TemplateTable::generate_vtable_call(Register Rrecv, Register Rindex, Register Rret) { - Register Rtemp = G4_scratch; Register Rcall = Rindex; assert_different_registers(Rcall, G5_method, Gargs, Rret); // get target Method* & entry point __ lookup_virtual_method(Rrecv, Rindex, G5_method); + __ profile_arguments_type(G5_method, Rcall, Gargs, true); __ call_from_interpreter(Rcall, Gargs, Rret); } @@ -3022,6 +3022,7 @@ void TemplateTable::invokevfinal_helper(Register Rscratch, Register Rret) { __ null_check(O0); __ profile_final_call(O4); + __ profile_arguments_type(G5_method, Rscratch, Gargs, true); // get return address AddressLiteral table(Interpreter::invoke_return_entry_table()); @@ -3051,6 +3052,7 @@ void TemplateTable::invokespecial(int byte_no) { // do the call __ profile_call(O4); + __ profile_arguments_type(G5_method, Rscratch, Gargs, false); __ call_from_interpreter(Rscratch, Gargs, Rret); } @@ -3066,6 +3068,7 @@ void TemplateTable::invokestatic(int byte_no) { // do the call __ profile_call(O4); + __ profile_arguments_type(G5_method, Rscratch, Gargs, false); __ call_from_interpreter(Rscratch, Gargs, Rret); } @@ -3091,6 +3094,7 @@ void TemplateTable::invokeinterface_object_method(Register RKlass, // do the call - the index (f2) contains the Method* assert_different_registers(G5_method, Gargs, Rcall); __ mov(Rindex, G5_method); + __ profile_arguments_type(G5_method, Rcall, Gargs, true); __ call_from_interpreter(Rcall, Gargs, Rret); __ bind(notFinal); @@ -3197,6 +3201,7 @@ void TemplateTable::invokeinterface(int byte_no) { Register Rcall = Rinterface; assert_different_registers(Rcall, G5_method, Gargs, Rret); + __ profile_arguments_type(G5_method, Rcall, Gargs, true); __ call_from_interpreter(Rcall, Gargs, Rret); } @@ -3226,6 +3231,7 @@ void TemplateTable::invokehandle(int byte_no) { // do the call __ verify_oop(G4_mtype); __ profile_final_call(O4); // FIXME: profile the LambdaForm also + __ profile_arguments_type(G5_method, Rscratch, Gargs, true); __ call_from_interpreter(Rscratch, Gargs, Rret); } @@ -3262,6 +3268,7 @@ void TemplateTable::invokedynamic(int byte_no) { // do the call __ verify_oop(G4_callsite); + __ profile_arguments_type(G5_method, Rscratch, Gargs, false); __ call_from_interpreter(Rscratch, Gargs, Rret); } diff --git a/hotspot/src/cpu/x86/vm/interp_masm_x86.cpp b/hotspot/src/cpu/x86/vm/interp_masm_x86.cpp index f47c0b1bb0c..799be13037f 100644 --- a/hotspot/src/cpu/x86/vm/interp_masm_x86.cpp +++ b/hotspot/src/cpu/x86/vm/interp_masm_x86.cpp @@ -127,7 +127,7 @@ void InterpreterMacroAssembler::profile_arguments_type(Register mdp, Register ca if (MethodData::profile_return()) { // We're right after the type profile for the last - // argument. tmp is the number of cell left in the + // argument. tmp is the number of cells left in the // CallTypeData/VirtualCallTypeData to reach its end. Non null // if there's a return to profile. assert(ReturnTypeEntry::static_cell_count() < TypeStackSlotEntries::per_arg_count(), "can't move past ret type"); @@ -198,7 +198,7 @@ void InterpreterMacroAssembler::profile_parameters_type(Register mdp, Register t // parameters. Collect profiling from last parameter down. // mdo start + parameters offset + array length - 1 addptr(mdp, tmp1); - movptr(tmp1, Address(mdp, in_bytes(ArrayData::array_len_offset()))); + movptr(tmp1, Address(mdp, ArrayData::array_len_offset())); decrement(tmp1, TypeStackSlotEntries::per_arg_count()); Label loop; diff --git a/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp b/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp index 8eb0189881c..5ed04765618 100644 --- a/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp +++ b/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp @@ -3288,7 +3288,10 @@ void LIRGenerator::do_ProfileReturnType(ProfileReturnType* x) { ciSignature* signature_at_call = NULL; x->method()->get_method_at_bci(bci, ignored_will_link, &signature_at_call); - ciKlass* exact = profile_type(md, 0, md->byte_offset_of_slot(data, ret->type_offset()), + // The offset within the MDO of the entry to update may be too large + // to be used in load/store instructions on some platforms. So have + // profile_type() compute the address of the profile in a register. + ciKlass* exact = profile_type(md, md->byte_offset_of_slot(data, ret->type_offset()), 0, ret->type(), x->ret(), mdp, !x->needs_null_check(), signature_at_call->return_type()->as_klass(), diff --git a/hotspot/src/share/vm/runtime/arguments.cpp b/hotspot/src/share/vm/runtime/arguments.cpp index 5a8ea0dbdd8..2769eece609 100644 --- a/hotspot/src/share/vm/runtime/arguments.cpp +++ b/hotspot/src/share/vm/runtime/arguments.cpp @@ -3727,10 +3727,6 @@ jint Arguments::apply_ergo() { // Doing the replace in parent maps helps speculation FLAG_SET_DEFAULT(ReplaceInParentMaps, true); } -#ifndef X86 - // Only on x86 for now - FLAG_SET_DEFAULT(TypeProfileLevel, 0); -#endif #endif if (PrintAssembly && FLAG_IS_DEFAULT(DebugNonSafepoints)) { From 4bb363185501fe86584ae6fb3debdb62d9edc513 Mon Sep 17 00:00:00 2001 From: Thomas Schatzl Date: Mon, 20 Jan 2014 11:47:07 +0100 Subject: [PATCH 020/158] 8027476: Improve performance of Stringtable unlink 8027455: Improve symbol table scan times during gc pauses Parallelize string table and symbol table scan during remark and full GC. Some additional statistics output if the experimental flag G1TraceStringSymbolTableScrubbing is set. Reviewed-by: mgerdin, coleenp, brutisso --- .../src/share/vm/classfile/symbolTable.cpp | 147 +++++++++++++----- .../src/share/vm/classfile/symbolTable.hpp | 50 ++++-- .../gc_implementation/g1/concurrentMark.cpp | 6 +- .../gc_implementation/g1/g1CollectedHeap.cpp | 93 +++++++++++ .../gc_implementation/g1/g1CollectedHeap.hpp | 4 + .../vm/gc_implementation/g1/g1MarkSweep.cpp | 7 +- .../vm/gc_implementation/g1/g1_globals.hpp | 3 + .../gc/g1/TestStringSymbolTableStats.java | 57 +++++++ 8 files changed, 306 insertions(+), 61 deletions(-) create mode 100644 hotspot/test/gc/g1/TestStringSymbolTableStats.java diff --git a/hotspot/src/share/vm/classfile/symbolTable.cpp b/hotspot/src/share/vm/classfile/symbolTable.cpp index d9cd2c809df..d20673b1a19 100644 --- a/hotspot/src/share/vm/classfile/symbolTable.cpp +++ b/hotspot/src/share/vm/classfile/symbolTable.cpp @@ -38,6 +38,9 @@ // -------------------------------------------------------------------------- +// the number of buckets a thread claims +const int ClaimChunkSize = 32; + SymbolTable* SymbolTable::_the_table = NULL; // Static arena for symbols that are not deallocated Arena* SymbolTable::_arena = NULL; @@ -83,16 +86,12 @@ void SymbolTable::symbols_do(SymbolClosure *cl) { } } -int SymbolTable::symbols_removed = 0; -int SymbolTable::symbols_counted = 0; +int SymbolTable::_symbols_removed = 0; +int SymbolTable::_symbols_counted = 0; +volatile int SymbolTable::_parallel_claimed_idx = 0; -// Remove unreferenced symbols from the symbol table -// This is done late during GC. -void SymbolTable::unlink() { - int removed = 0; - int total = 0; - size_t memory_total = 0; - for (int i = 0; i < the_table()->table_size(); ++i) { +void SymbolTable::buckets_unlink(int start_idx, int end_idx, int* processed, int* removed, size_t* memory_total) { + for (int i = start_idx; i < end_idx; ++i) { HashtableEntry** p = the_table()->bucket_addr(i); HashtableEntry* entry = the_table()->bucket(i); while (entry != NULL) { @@ -104,14 +103,14 @@ void SymbolTable::unlink() { break; } Symbol* s = entry->literal(); - memory_total += s->size(); - total++; + (*memory_total) += s->size(); + (*processed)++; assert(s != NULL, "just checking"); // If reference count is zero, remove. if (s->refcount() == 0) { assert(!entry->is_shared(), "shared entries should be kept live"); delete s; - removed++; + (*removed)++; *p = entry->next(); the_table()->free_entry(entry); } else { @@ -121,12 +120,45 @@ void SymbolTable::unlink() { entry = (HashtableEntry*)HashtableEntry::make_ptr(*p); } } - symbols_removed += removed; - symbols_counted += total; +} + +// Remove unreferenced symbols from the symbol table +// This is done late during GC. +void SymbolTable::unlink(int* processed, int* removed) { + size_t memory_total = 0; + buckets_unlink(0, the_table()->table_size(), processed, removed, &memory_total); + _symbols_removed += *removed; + _symbols_counted += *processed; // Exclude printing for normal PrintGCDetails because people parse // this output. if (PrintGCDetails && Verbose && WizardMode) { - gclog_or_tty->print(" [Symbols=%d size=" SIZE_FORMAT "K] ", total, + gclog_or_tty->print(" [Symbols=%d size=" SIZE_FORMAT "K] ", *processed, + (memory_total*HeapWordSize)/1024); + } +} + +void SymbolTable::possibly_parallel_unlink(int* processed, int* removed) { + const int limit = the_table()->table_size(); + + size_t memory_total = 0; + + for (;;) { + // Grab next set of buckets to scan + int start_idx = Atomic::add(ClaimChunkSize, &_parallel_claimed_idx) - ClaimChunkSize; + if (start_idx >= limit) { + // End of table + break; + } + + int end_idx = MIN2(limit, start_idx + ClaimChunkSize); + buckets_unlink(start_idx, end_idx, processed, removed, &memory_total); + } + Atomic::add(*processed, &_symbols_counted); + Atomic::add(*removed, &_symbols_removed); + // Exclude printing for normal PrintGCDetails because people parse + // this output. + if (PrintGCDetails && Verbose && WizardMode) { + gclog_or_tty->print(" [Symbols: scanned=%d removed=%d size=" SIZE_FORMAT "K] ", *processed, *removed, (memory_total*HeapWordSize)/1024); } } @@ -494,11 +526,11 @@ void SymbolTable::print_histogram() { tty->print_cr("Total number of symbols %5d", count); tty->print_cr("Total size in memory %5dK", (memory_total*HeapWordSize)/1024); - tty->print_cr("Total counted %5d", symbols_counted); - tty->print_cr("Total removed %5d", symbols_removed); - if (symbols_counted > 0) { + tty->print_cr("Total counted %5d", _symbols_counted); + tty->print_cr("Total removed %5d", _symbols_removed); + if (_symbols_counted > 0) { tty->print_cr("Percent removed %3.2f", - ((float)symbols_removed/(float)symbols_counted)* 100); + ((float)_symbols_removed/(float)_symbols_counted)* 100); } tty->print_cr("Reference counts %5d", Symbol::_total_count); tty->print_cr("Symbol arena size %5d used %5d", @@ -739,39 +771,38 @@ oop StringTable::intern(const char* utf8_string, TRAPS) { return result; } -void StringTable::unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f) { +void StringTable::unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int* processed, int* removed) { + buckets_unlink_or_oops_do(is_alive, f, 0, the_table()->table_size(), processed, removed); +} + +void StringTable::possibly_parallel_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int* processed, int* removed) { // Readers of the table are unlocked, so we should only be removing // entries at a safepoint. assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint"); - for (int i = 0; i < the_table()->table_size(); ++i) { - HashtableEntry** p = the_table()->bucket_addr(i); - HashtableEntry* entry = the_table()->bucket(i); - while (entry != NULL) { - assert(!entry->is_shared(), "CDS not used for the StringTable"); + const int limit = the_table()->table_size(); - if (is_alive->do_object_b(entry->literal())) { - if (f != NULL) { - f->do_oop((oop*)entry->literal_addr()); - } - p = entry->next_addr(); - } else { - *p = entry->next(); - the_table()->free_entry(entry); - } - entry = *p; + for (;;) { + // Grab next set of buckets to scan + int start_idx = Atomic::add(ClaimChunkSize, &_parallel_claimed_idx) - ClaimChunkSize; + if (start_idx >= limit) { + // End of table + break; } + + int end_idx = MIN2(limit, start_idx + ClaimChunkSize); + buckets_unlink_or_oops_do(is_alive, f, start_idx, end_idx, processed, removed); } } -void StringTable::buckets_do(OopClosure* f, int start_idx, int end_idx) { +void StringTable::buckets_oops_do(OopClosure* f, int start_idx, int end_idx) { const int limit = the_table()->table_size(); assert(0 <= start_idx && start_idx <= limit, - err_msg("start_idx (" INT32_FORMAT ") oob?", start_idx)); + err_msg("start_idx (" INT32_FORMAT ") is out of bounds", start_idx)); assert(0 <= end_idx && end_idx <= limit, - err_msg("end_idx (" INT32_FORMAT ") oob?", end_idx)); + err_msg("end_idx (" INT32_FORMAT ") is out of bounds", end_idx)); assert(start_idx <= end_idx, - err_msg("Ordering: start_idx=" INT32_FORMAT", end_idx=" INT32_FORMAT, + err_msg("Index ordering: start_idx=" INT32_FORMAT", end_idx=" INT32_FORMAT, start_idx, end_idx)); for (int i = start_idx; i < end_idx; i += 1) { @@ -786,12 +817,44 @@ void StringTable::buckets_do(OopClosure* f, int start_idx, int end_idx) { } } +void StringTable::buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, int* processed, int* removed) { + const int limit = the_table()->table_size(); + + assert(0 <= start_idx && start_idx <= limit, + err_msg("start_idx (" INT32_FORMAT ") is out of bounds", start_idx)); + assert(0 <= end_idx && end_idx <= limit, + err_msg("end_idx (" INT32_FORMAT ") is out of bounds", end_idx)); + assert(start_idx <= end_idx, + err_msg("Index ordering: start_idx=" INT32_FORMAT", end_idx=" INT32_FORMAT, + start_idx, end_idx)); + + for (int i = start_idx; i < end_idx; ++i) { + HashtableEntry** p = the_table()->bucket_addr(i); + HashtableEntry* entry = the_table()->bucket(i); + while (entry != NULL) { + assert(!entry->is_shared(), "CDS not used for the StringTable"); + + if (is_alive->do_object_b(entry->literal())) { + if (f != NULL) { + f->do_oop((oop*)entry->literal_addr()); + } + p = entry->next_addr(); + } else { + *p = entry->next(); + the_table()->free_entry(entry); + (*removed)++; + } + (*processed)++; + entry = *p; + } + } +} + void StringTable::oops_do(OopClosure* f) { - buckets_do(f, 0, the_table()->table_size()); + buckets_oops_do(f, 0, the_table()->table_size()); } void StringTable::possibly_parallel_oops_do(OopClosure* f) { - const int ClaimChunkSize = 32; const int limit = the_table()->table_size(); for (;;) { @@ -803,7 +866,7 @@ void StringTable::possibly_parallel_oops_do(OopClosure* f) { } int end_idx = MIN2(limit, start_idx + ClaimChunkSize); - buckets_do(f, start_idx, end_idx); + buckets_oops_do(f, start_idx, end_idx); } } diff --git a/hotspot/src/share/vm/classfile/symbolTable.hpp b/hotspot/src/share/vm/classfile/symbolTable.hpp index 50cde69d8b0..b0a2fcb38b8 100644 --- a/hotspot/src/share/vm/classfile/symbolTable.hpp +++ b/hotspot/src/share/vm/classfile/symbolTable.hpp @@ -86,8 +86,8 @@ private: static bool _needs_rehashing; // For statistics - static int symbols_removed; - static int symbols_counted; + static int _symbols_removed; + static int _symbols_counted; Symbol* allocate_symbol(const u1* name, int len, bool c_heap, TRAPS); // Assumes no characters larger than 0x7F @@ -121,6 +121,11 @@ private: static Arena* arena() { return _arena; } // called for statistics static void initialize_symbols(int arena_alloc_size = 0); + + static volatile int _parallel_claimed_idx; + + // Release any dead symbols + static void buckets_unlink(int start_idx, int end_idx, int* processed, int* removed, size_t* memory_total); public: enum { symbol_alloc_batch_size = 8, @@ -177,7 +182,14 @@ public: unsigned int* hashValues, TRAPS); // Release any dead symbols - static void unlink(); + static void unlink() { + int processed = 0; + int removed = 0; + unlink(&processed, &removed); + } + static void unlink(int* processed, int* removed); + // Release any dead symbols, possibly parallel version + static void possibly_parallel_unlink(int* processed, int* removed); // iterate over symbols static void symbols_do(SymbolClosure *cl); @@ -235,6 +247,9 @@ public: // Rehash the symbol table if it gets out of balance static void rehash_table(); static bool needs_rehashing() { return _needs_rehashing; } + // Parallel chunked scanning + static void clear_parallel_claimed_index() { _parallel_claimed_idx = 0; } + static int parallel_claimed_index() { return _parallel_claimed_idx; } }; class StringTable : public Hashtable { @@ -258,7 +273,10 @@ private: // Apply the give oop closure to the entries to the buckets // in the range [start_idx, end_idx). - static void buckets_do(OopClosure* f, int start_idx, int end_idx); + static void buckets_oops_do(OopClosure* f, int start_idx, int end_idx); + // Unlink or apply the give oop closure to the entries to the buckets + // in the range [start_idx, end_idx). + static void buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, int* processed, int* removed); StringTable() : Hashtable((int)StringTableSize, sizeof (HashtableEntry)) {} @@ -280,15 +298,28 @@ public: // GC support // Delete pointers to otherwise-unreachable objects. - static void unlink_or_oops_do(BoolObjectClosure* cl, OopClosure* f); - static void unlink(BoolObjectClosure* cl) { - unlink_or_oops_do(cl, NULL); + static void unlink_or_oops_do(BoolObjectClosure* cl, OopClosure* f) { + int processed = 0; + int removed = 0; + unlink_or_oops_do(cl, f, &processed, &removed); + } + static void unlink(BoolObjectClosure* cl) { + int processed = 0; + int removed = 0; + unlink_or_oops_do(cl, NULL, &processed, &removed); + } + static void unlink_or_oops_do(BoolObjectClosure* cl, OopClosure* f, int* processed, int* removed); + static void unlink(BoolObjectClosure* cl, int* processed, int* removed) { + unlink_or_oops_do(cl, NULL, processed, removed); } - // Serially invoke "f->do_oop" on the locations of all oops in the table. static void oops_do(OopClosure* f); - // Possibly parallel version of the above + // Possibly parallel versions of the above + static void possibly_parallel_unlink_or_oops_do(BoolObjectClosure* cl, OopClosure* f, int* processed, int* removed); + static void possibly_parallel_unlink(BoolObjectClosure* cl, int* processed, int* removed) { + possibly_parallel_unlink_or_oops_do(cl, NULL, processed, removed); + } static void possibly_parallel_oops_do(OopClosure* f); // Hashing algorithm, used as the hash value used by the @@ -349,5 +380,6 @@ public: // Parallel chunked scanning static void clear_parallel_claimed_index() { _parallel_claimed_idx = 0; } + static int parallel_claimed_index() { return _parallel_claimed_idx; } }; #endif // SHARE_VM_CLASSFILE_SYMBOLTABLE_HPP diff --git a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp index 4e458312666..f8248174962 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp @@ -1619,7 +1619,6 @@ public: } }; - class G1ParVerifyFinalCountTask: public AbstractGangTask { protected: G1CollectedHeap* _g1h; @@ -2529,10 +2528,7 @@ void ConcurrentMark::weakRefsWork(bool clear_all_soft_refs) { assert(!rp->discovery_enabled(), "Post condition"); } - // Now clean up stale oops in StringTable - StringTable::unlink(&g1_is_alive); - // Clean up unreferenced symbols in symbol table. - SymbolTable::unlink(); + g1h->unlink_string_and_symbol_table(&g1_is_alive); } void ConcurrentMark::swapMarkBitMaps() { diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp index 775f6465d66..29cd3a4da8c 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -5193,6 +5193,99 @@ G1CollectedHeap::g1_process_weak_roots(OopClosure* root_closure) { SharedHeap::process_weak_roots(root_closure, &roots_in_blobs); } +class G1StringSymbolTableUnlinkTask : public AbstractGangTask { +private: + BoolObjectClosure* _is_alive; + int _initial_string_table_size; + int _initial_symbol_table_size; + + bool _process_strings; + int _strings_processed; + int _strings_removed; + + bool _process_symbols; + int _symbols_processed; + int _symbols_removed; +public: + G1StringSymbolTableUnlinkTask(BoolObjectClosure* is_alive, bool process_strings, bool process_symbols) : + AbstractGangTask("Par String/Symbol table unlink"), _is_alive(is_alive), + _process_strings(process_strings), _strings_processed(0), _strings_removed(0), + _process_symbols(process_symbols), _symbols_processed(0), _symbols_removed(0) { + + _initial_string_table_size = StringTable::the_table()->table_size(); + _initial_symbol_table_size = SymbolTable::the_table()->table_size(); + if (process_strings) { + StringTable::clear_parallel_claimed_index(); + } + if (process_symbols) { + SymbolTable::clear_parallel_claimed_index(); + } + } + + ~G1StringSymbolTableUnlinkTask() { + guarantee(!_process_strings || StringTable::parallel_claimed_index() >= _initial_string_table_size, + err_msg("claim value "INT32_FORMAT" after unlink less than initial string table size "INT32_FORMAT, + StringTable::parallel_claimed_index(), _initial_string_table_size)); + guarantee(!_process_strings || SymbolTable::parallel_claimed_index() >= _initial_symbol_table_size, + err_msg("claim value "INT32_FORMAT" after unlink less than initial symbol table size "INT32_FORMAT, + SymbolTable::parallel_claimed_index(), _initial_symbol_table_size)); + } + + void work(uint worker_id) { + if (G1CollectedHeap::use_parallel_gc_threads()) { + int strings_processed = 0; + int strings_removed = 0; + int symbols_processed = 0; + int symbols_removed = 0; + if (_process_strings) { + StringTable::possibly_parallel_unlink(_is_alive, &strings_processed, &strings_removed); + Atomic::add(strings_processed, &_strings_processed); + Atomic::add(strings_removed, &_strings_removed); + } + if (_process_symbols) { + SymbolTable::possibly_parallel_unlink(&symbols_processed, &symbols_removed); + Atomic::add(symbols_processed, &_symbols_processed); + Atomic::add(symbols_removed, &_symbols_removed); + } + } else { + if (_process_strings) { + StringTable::unlink(_is_alive, &_strings_processed, &_strings_removed); + } + if (_process_symbols) { + SymbolTable::unlink(&_symbols_processed, &_symbols_removed); + } + } + } + + size_t strings_processed() const { return (size_t)_strings_processed; } + size_t strings_removed() const { return (size_t)_strings_removed; } + + size_t symbols_processed() const { return (size_t)_symbols_processed; } + size_t symbols_removed() const { return (size_t)_symbols_removed; } +}; + +void G1CollectedHeap::unlink_string_and_symbol_table(BoolObjectClosure* is_alive, + bool process_strings, bool process_symbols) { + uint n_workers = (G1CollectedHeap::use_parallel_gc_threads() ? + _g1h->workers()->active_workers() : 1); + + G1StringSymbolTableUnlinkTask g1_unlink_task(is_alive, process_strings, process_symbols); + if (G1CollectedHeap::use_parallel_gc_threads()) { + set_par_threads(n_workers); + workers()->run_task(&g1_unlink_task); + set_par_threads(0); + } else { + g1_unlink_task.work(0); + } + if (G1TraceStringSymbolTableScrubbing) { + gclog_or_tty->print_cr("Cleaned string and symbol table, " + "strings: "SIZE_FORMAT" processed, "SIZE_FORMAT" removed, " + "symbols: "SIZE_FORMAT" processed, "SIZE_FORMAT" removed", + g1_unlink_task.strings_processed(), g1_unlink_task.strings_removed(), + g1_unlink_task.symbols_processed(), g1_unlink_task.symbols_removed()); + } +} + // Weak Reference Processing support // An always "is_alive" closure that is used to preserve referents. diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp index 072013efb64..cf2c85cdcfa 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @@ -1668,6 +1668,10 @@ public: // after a full GC void rebuild_strong_code_roots(); + // Delete entries for dead interned string and clean up unreferenced symbols + // in symbol table, possibly in parallel. + void unlink_string_and_symbol_table(BoolObjectClosure* is_alive, bool unlink_strings = true, bool unlink_symbols = true); + // Verification // The following is just to alert the verification code diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp index 87650103d60..2add92e6869 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp @@ -163,11 +163,8 @@ void G1MarkSweep::mark_sweep_phase1(bool& marked_for_unloading, // Prune dead klasses from subklass/sibling/implementor lists. Klass::clean_weak_klass_links(&GenMarkSweep::is_alive); - // Delete entries for dead interned strings. - StringTable::unlink(&GenMarkSweep::is_alive); - - // Clean up unreferenced symbols in symbol table. - SymbolTable::unlink(); + // Delete entries for dead interned string and clean up unreferenced symbols in symbol table. + G1CollectedHeap::heap()->unlink_string_and_symbol_table(&GenMarkSweep::is_alive); if (VerifyDuringGC) { HandleMark hm; // handle scope diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp index c7d8049fea0..f82fda912c9 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp @@ -71,6 +71,9 @@ diagnostic(bool, G1TraceConcRefinement, false, \ "Trace G1 concurrent refinement") \ \ + experimental(bool, G1TraceStringSymbolTableScrubbing, false, \ + "Trace information string and symbol table scrubbing.") \ + \ product(double, G1ConcMarkStepDurationMillis, 10.0, \ "Target duration of individual concurrent marking steps " \ "in milliseconds.") \ diff --git a/hotspot/test/gc/g1/TestStringSymbolTableStats.java b/hotspot/test/gc/g1/TestStringSymbolTableStats.java new file mode 100644 index 00000000000..f95aea87d00 --- /dev/null +++ b/hotspot/test/gc/g1/TestStringSymbolTableStats.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test TestStringSymbolTableStats.java + * @bug 8027476 8027455 + * @summary Ensure that the G1TraceStringSymbolTableScrubbing prints the expected message. + * @key gc + * @library /testlibrary + */ + +import com.oracle.java.testlibrary.ProcessTools; +import com.oracle.java.testlibrary.OutputAnalyzer; + +public class TestStringSymbolTableStats { + public static void main(String[] args) throws Exception { + + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC", + "-XX:+UnlockExperimentalVMOptions", + "-XX:+G1TraceStringSymbolTableScrubbing", + SystemGCTest.class.getName()); + + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + + System.out.println("Output:\n" + output.getOutput()); + + output.shouldContain("Cleaned string and symbol table"); + output.shouldHaveExitValue(0); + } + + static class SystemGCTest { + public static void main(String [] args) { + System.out.println("Calling System.gc()"); + System.gc(); + } + } +} From aeba3a8119a935fb3be06d0d97518f6cf85cb0e7 Mon Sep 17 00:00:00 2001 From: Thomas Schatzl Date: Mon, 20 Jan 2014 11:47:29 +0100 Subject: [PATCH 021/158] 8027454: Do not traverse string table during G1 remark when treating them as strong roots during initial mark Do not try to unlink string table entries unconditionally during remark. This is without side effects as the preceding initial mark always uses the string table as strong roots. Needs to be fixed with class unloading during concurrent mark. Reviewed-by: brutisso, mgerdin --- hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp index f8248174962..bf7a7714d3d 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp @@ -2528,7 +2528,9 @@ void ConcurrentMark::weakRefsWork(bool clear_all_soft_refs) { assert(!rp->discovery_enabled(), "Post condition"); } - g1h->unlink_string_and_symbol_table(&g1_is_alive); + g1h->unlink_string_and_symbol_table(&g1_is_alive, + /* process_strings */ false, // currently strings are always roots + /* process_symbols */ true); } void ConcurrentMark::swapMarkBitMaps() { From 70fd1802a0d57cf832ffcab745c599bfadd072b3 Mon Sep 17 00:00:00 2001 From: Thomas Schatzl Date: Mon, 20 Jan 2014 11:47:53 +0100 Subject: [PATCH 022/158] 8027746: Remove do_gen_barrier template parameter in G1ParCopyClosure Remove the above mentioned template parameter and related unused code. Also remove some classes that are never used. Reviewed-by: stefank, mgerdin, jwilhelm --- .../g1/bufferingOopClosure.hpp | 112 ------------------ .../gc_implementation/g1/g1CollectedHeap.cpp | 41 +++---- .../gc_implementation/g1/g1CollectedHeap.hpp | 2 +- .../vm/gc_implementation/g1/g1OopClosures.hpp | 22 ++-- .../g1/g1_specialized_oop_closures.hpp | 5 +- 5 files changed, 25 insertions(+), 157 deletions(-) diff --git a/hotspot/src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp b/hotspot/src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp index 1ceca1734c5..cde213284a8 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp @@ -98,116 +98,4 @@ public: _closure_app_seconds(0.0) { } }; -class BufferingOopsInGenClosure: public OopsInGenClosure { - BufferingOopClosure _boc; - OopsInGenClosure* _oc; - protected: - template inline void do_oop_work(T* p) { - assert(generation()->is_in_reserved((void*)p), "Must be in!"); - _boc.do_oop(p); - } - public: - BufferingOopsInGenClosure(OopsInGenClosure *oc) : - _boc(oc), _oc(oc) {} - - virtual void do_oop(narrowOop* p) { do_oop_work(p); } - virtual void do_oop(oop* p) { do_oop_work(p); } - - void done() { - _boc.done(); - } - - double closure_app_seconds () { - return _boc.closure_app_seconds(); - } - - void set_generation(Generation* gen) { - OopsInGenClosure::set_generation(gen); - _oc->set_generation(gen); - } - - void reset_generation() { - // Make sure we finish the current work with the current generation. - _boc.done(); - OopsInGenClosure::reset_generation(); - _oc->reset_generation(); - } - -}; - - -class BufferingOopsInHeapRegionClosure: public OopsInHeapRegionClosure { -private: - enum PrivateConstants { - BufferLength = 1024 - }; - - StarTask _buffer[BufferLength]; - StarTask* _buffer_top; - StarTask* _buffer_curr; - - HeapRegion* _hr_buffer[BufferLength]; - HeapRegion** _hr_curr; - - OopsInHeapRegionClosure* _oc; - double _closure_app_seconds; - - void process_buffer () { - - assert((_hr_curr - _hr_buffer) == (_buffer_curr - _buffer), - "the two lengths should be the same"); - - double start = os::elapsedTime(); - HeapRegion** hr_curr = _hr_buffer; - HeapRegion* hr_prev = NULL; - for (StarTask* curr = _buffer; curr < _buffer_curr; ++curr) { - HeapRegion* region = *hr_curr; - if (region != hr_prev) { - _oc->set_region(region); - hr_prev = region; - } - if (curr->is_narrow()) { - assert(UseCompressedOops, "Error"); - _oc->do_oop((narrowOop*)(*curr)); - } else { - _oc->do_oop((oop*)(*curr)); - } - ++hr_curr; - } - _buffer_curr = _buffer; - _hr_curr = _hr_buffer; - _closure_app_seconds += (os::elapsedTime() - start); - } - -public: - virtual void do_oop(narrowOop* p) { do_oop_work(p); } - virtual void do_oop( oop* p) { do_oop_work(p); } - - template void do_oop_work(T* p) { - if (_buffer_curr == _buffer_top) { - assert(_hr_curr > _hr_buffer, "_hr_curr should be consistent with _buffer_curr"); - process_buffer(); - } - StarTask new_ref(p); - *_buffer_curr = new_ref; - ++_buffer_curr; - *_hr_curr = _from; - ++_hr_curr; - } - void done () { - if (_buffer_curr > _buffer) { - assert(_hr_curr > _hr_buffer, "_hr_curr should be consistent with _buffer_curr"); - process_buffer(); - } - } - double closure_app_seconds () { - return _closure_app_seconds; - } - BufferingOopsInHeapRegionClosure (OopsInHeapRegionClosure *oc) : - _oc(oc), - _buffer_curr(_buffer), _buffer_top(_buffer + BufferLength), - _hr_curr(_hr_buffer), - _closure_app_seconds(0.0) { } -}; - #endif // SHARE_VM_GC_IMPLEMENTATION_G1_BUFFERINGOOPCLOSURE_HPP diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp index 29cd3a4da8c..358a5227137 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -50,8 +50,8 @@ #include "gc_implementation/shared/gcTraceTime.hpp" #include "gc_implementation/shared/isGCActiveMark.hpp" #include "memory/gcLocker.inline.hpp" -#include "memory/genOopClosures.inline.hpp" #include "memory/generationSpec.hpp" +#include "memory/iterator.hpp" #include "memory/referenceProcessor.hpp" #include "oops/oop.inline.hpp" #include "oops/oop.pcgc.inline.hpp" @@ -3077,11 +3077,7 @@ const char* G1CollectedHeap::top_at_mark_start_str(VerifyOption vo) { return NULL; // keep some compilers happy } -// TODO: VerifyRootsClosure extends OopsInGenClosure so that we can -// pass it as the perm_blk to SharedHeap::process_strong_roots. -// When process_strong_roots stop calling perm_blk->younger_refs_iterate -// we can change this closure to extend the simpler OopClosure. -class VerifyRootsClosure: public OopsInGenClosure { +class VerifyRootsClosure: public OopClosure { private: G1CollectedHeap* _g1h; VerifyOption _vo; @@ -3117,7 +3113,7 @@ public: void do_oop(narrowOop* p) { do_oop_nv(p); } }; -class G1VerifyCodeRootOopClosure: public OopsInGenClosure { +class G1VerifyCodeRootOopClosure: public OopClosure { G1CollectedHeap* _g1h; OopClosure* _root_cl; nmethod* _nm; @@ -4651,8 +4647,8 @@ G1ParClosureSuper::G1ParClosureSuper(G1CollectedHeap* g1, _during_initial_mark(_g1->g1_policy()->during_initial_mark_pause()), _mark_in_progress(_g1->mark_in_progress()) { } -template -void G1ParCopyClosure::mark_object(oop obj) { +template +void G1ParCopyClosure::mark_object(oop obj) { #ifdef ASSERT HeapRegion* hr = _g1->heap_region_containing(obj); assert(hr != NULL, "sanity"); @@ -4663,8 +4659,8 @@ void G1ParCopyClosure::mark_object(oop _cm->grayRoot(obj, (size_t) obj->size(), _worker_id); } -template -void G1ParCopyClosure +template +void G1ParCopyClosure ::mark_forwarded_object(oop from_obj, oop to_obj) { #ifdef ASSERT assert(from_obj->is_forwarded(), "from obj should be forwarded"); @@ -4687,8 +4683,8 @@ void G1ParCopyClosure _cm->grayRoot(to_obj, (size_t) from_obj->size(), _worker_id); } -template -oop G1ParCopyClosure +template +oop G1ParCopyClosure ::copy_to_survivor_space(oop old) { size_t word_sz = old->size(); HeapRegion* from_region = _g1->heap_region_containing_raw(old); @@ -4784,13 +4780,11 @@ void G1ParCopyHelper::do_klass_barrier(T* p, oop new_obj) { } } -template +template template -void G1ParCopyClosure +void G1ParCopyClosure ::do_oop_work(T* p) { oop obj = oopDesc::load_decode_heap_oop(p); - assert(barrier != G1BarrierRS || obj != NULL, - "Precondition: G1BarrierRS implies obj is non-NULL"); assert(_worker_id == _par_scan_state->queue_num(), "sanity"); @@ -4810,10 +4804,7 @@ void G1ParCopyClosure mark_forwarded_object(obj, forwardee); } - // When scanning the RS, we only care about objs in CS. - if (barrier == G1BarrierRS) { - _par_scan_state->update_rs(_from, p, _worker_id); - } else if (barrier == G1BarrierKlass) { + if (barrier == G1BarrierKlass) { do_klass_barrier(p, forwardee); } } else { @@ -4828,14 +4819,10 @@ void G1ParCopyClosure if (barrier == G1BarrierEvac && obj != NULL) { _par_scan_state->update_rs(_from, p, _worker_id); } - - if (do_gen_barrier && obj != NULL) { - par_do_barrier(p); - } } -template void G1ParCopyClosure::do_oop_work(oop* p); -template void G1ParCopyClosure::do_oop_work(narrowOop* p); +template void G1ParCopyClosure::do_oop_work(oop* p); +template void G1ParCopyClosure::do_oop_work(narrowOop* p); template void G1ParScanPartialArrayClosure::do_oop_nv(T* p) { assert(has_partial_array_mask(p), "invariant"); diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp index cf2c85cdcfa..0529507e585 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @@ -209,7 +209,7 @@ class G1CollectedHeap : public SharedHeap { friend class OldGCAllocRegion; // Closures used in implementation. - template + template friend class G1ParCopyClosure; friend class G1IsAliveClosure; friend class G1EvacuateFollowersClosure; diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.hpp index b616cb9eb4c..414b82f95bc 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.hpp @@ -38,7 +38,7 @@ class ReferenceProcessor; // A class that scans oops in a given heap region (much as OopsInGenClosure // scans oops in a generation.) -class OopsInHeapRegionClosure: public OopsInGenClosure { +class OopsInHeapRegionClosure: public ExtendedOopClosure { protected: HeapRegion* _from; public: @@ -131,7 +131,7 @@ class G1ParCopyHelper : public G1ParClosureSuper { template void do_klass_barrier(T* p, oop new_obj); }; -template +template class G1ParCopyClosure : public G1ParCopyHelper { G1ParScanClosure _scanner; template void do_oop_work(T* p); @@ -166,22 +166,16 @@ public: virtual void do_oop(narrowOop* p) { do_oop_nv(p); } }; -typedef G1ParCopyClosure G1ParScanExtRootClosure; -typedef G1ParCopyClosure G1ParScanMetadataClosure; +typedef G1ParCopyClosure G1ParScanExtRootClosure; +typedef G1ParCopyClosure G1ParScanMetadataClosure; -typedef G1ParCopyClosure G1ParScanAndMarkExtRootClosure; -typedef G1ParCopyClosure G1ParScanAndMarkClosure; -typedef G1ParCopyClosure G1ParScanAndMarkMetadataClosure; - -// The following closure types are no longer used but are retained -// for historical reasons: -// typedef G1ParCopyClosure G1ParScanHeapRSClosure; -// typedef G1ParCopyClosure G1ParScanAndMarkHeapRSClosure; +typedef G1ParCopyClosure G1ParScanAndMarkExtRootClosure; +typedef G1ParCopyClosure G1ParScanAndMarkMetadataClosure; // The following closure type is defined in g1_specialized_oop_closures.hpp: // -// typedef G1ParCopyClosure G1ParScanHeapEvacClosure; +// typedef G1ParCopyClosure G1ParScanHeapEvacClosure; // We use a separate closure to handle references during evacuation // failure processing. @@ -189,7 +183,7 @@ typedef G1ParCopyClosure G1ParScanAndMarkMetadataCl // (since that closure no longer assumes that the references it // handles point into the collection set). -typedef G1ParCopyClosure G1ParScanHeapEvacFailureClosure; +typedef G1ParCopyClosure G1ParScanHeapEvacFailureClosure; class FilterIntoCSClosure: public ExtendedOopClosure { G1CollectedHeap* _g1; diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1_specialized_oop_closures.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1_specialized_oop_closures.hpp index e16561ccce3..e10a658a543 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1_specialized_oop_closures.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1_specialized_oop_closures.hpp @@ -33,18 +33,17 @@ // Forward declarations. enum G1Barrier { G1BarrierNone, - G1BarrierRS, G1BarrierEvac, G1BarrierKlass }; -template +template class G1ParCopyClosure; class G1ParScanClosure; class G1ParPushHeapRSClosure; -typedef G1ParCopyClosure G1ParScanHeapEvacClosure; +typedef G1ParCopyClosure G1ParScanHeapEvacClosure; class FilterIntoCSClosure; class FilterOutOfRegionClosure; From ba54cfdf885c20f98058dbcbccd74d46ee081ece Mon Sep 17 00:00:00 2001 From: Erik Helin Date: Mon, 20 Jan 2014 17:15:55 +0100 Subject: [PATCH 023/158] 8031776: Remove the unnecessary enum GenRemSet::Name Reviewed-by: stefank, tschatzl, jwilhelm --- .../vm/gc_implementation/g1/g1CollectorPolicy.cpp | 2 +- hotspot/src/share/vm/memory/cardTableRS.hpp | 2 -- hotspot/src/share/vm/memory/collectorPolicy.cpp | 5 +---- hotspot/src/share/vm/memory/defNewGeneration.cpp | 1 - .../src/share/vm/memory/genOopClosures.inline.hpp | 1 - hotspot/src/share/vm/memory/genRemSet.cpp | 3 +-- hotspot/src/share/vm/memory/genRemSet.hpp | 14 +++----------- 7 files changed, 6 insertions(+), 22 deletions(-) diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp index b4f9a0b0007..86f6c369f88 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp @@ -318,7 +318,7 @@ G1CollectorPolicy::G1CollectorPolicy() : void G1CollectorPolicy::initialize_alignments() { _space_alignment = HeapRegion::GrainBytes; - size_t card_table_alignment = GenRemSet::max_alignment_constraint(GenRemSet::CardTable); + size_t card_table_alignment = GenRemSet::max_alignment_constraint(); size_t page_size = UseLargePages ? os::large_page_size() : os::vm_page_size(); _heap_alignment = MAX3(card_table_alignment, _space_alignment, page_size); } diff --git a/hotspot/src/share/vm/memory/cardTableRS.hpp b/hotspot/src/share/vm/memory/cardTableRS.hpp index 25884feac8b..873b3f62f94 100644 --- a/hotspot/src/share/vm/memory/cardTableRS.hpp +++ b/hotspot/src/share/vm/memory/cardTableRS.hpp @@ -105,8 +105,6 @@ public: ~CardTableRS(); // *** GenRemSet functions. - GenRemSet::Name rs_kind() { return GenRemSet::CardTable; } - CardTableRS* as_CardTableRS() { return this; } CardTableModRefBS* ct_bs() { return _ct_bs; } diff --git a/hotspot/src/share/vm/memory/collectorPolicy.cpp b/hotspot/src/share/vm/memory/collectorPolicy.cpp index 204011b689e..5975c0d134d 100644 --- a/hotspot/src/share/vm/memory/collectorPolicy.cpp +++ b/hotspot/src/share/vm/memory/collectorPolicy.cpp @@ -178,10 +178,7 @@ size_t CollectorPolicy::compute_heap_alignment() { // byte entry and the os page size is 4096, the maximum heap size should // be 512*4096 = 2MB aligned. - // There is only the GenRemSet in Hotspot and only the GenRemSet::CardTable - // is supported. - // Requirements of any new remembered set implementations must be added here. - size_t alignment = GenRemSet::max_alignment_constraint(GenRemSet::CardTable); + size_t alignment = GenRemSet::max_alignment_constraint(); // Parallel GC does its own alignment of the generations to avoid requiring a // large page (256M on some platforms) for the permanent generation. The diff --git a/hotspot/src/share/vm/memory/defNewGeneration.cpp b/hotspot/src/share/vm/memory/defNewGeneration.cpp index 51c672e4e7c..841fe4500a1 100644 --- a/hotspot/src/share/vm/memory/defNewGeneration.cpp +++ b/hotspot/src/share/vm/memory/defNewGeneration.cpp @@ -61,7 +61,6 @@ bool DefNewGeneration::IsAliveClosure::do_object_b(oop p) { DefNewGeneration::KeepAliveClosure:: KeepAliveClosure(ScanWeakRefClosure* cl) : _cl(cl) { GenRemSet* rs = GenCollectedHeap::heap()->rem_set(); - assert(rs->rs_kind() == GenRemSet::CardTable, "Wrong rem set kind."); _rs = (CardTableRS*)rs; } diff --git a/hotspot/src/share/vm/memory/genOopClosures.inline.hpp b/hotspot/src/share/vm/memory/genOopClosures.inline.hpp index b7a1ac99bef..30c77dba0ea 100644 --- a/hotspot/src/share/vm/memory/genOopClosures.inline.hpp +++ b/hotspot/src/share/vm/memory/genOopClosures.inline.hpp @@ -45,7 +45,6 @@ inline void OopsInGenClosure::set_generation(Generation* gen) { // Barrier set for the heap, must be set after heap is initialized if (_rs == NULL) { GenRemSet* rs = SharedHeap::heap()->rem_set(); - assert(rs->rs_kind() == GenRemSet::CardTable, "Wrong rem set kind"); _rs = (CardTableRS*)rs; } } diff --git a/hotspot/src/share/vm/memory/genRemSet.cpp b/hotspot/src/share/vm/memory/genRemSet.cpp index bb3149f5a85..c21a1634e5b 100644 --- a/hotspot/src/share/vm/memory/genRemSet.cpp +++ b/hotspot/src/share/vm/memory/genRemSet.cpp @@ -31,8 +31,7 @@ // enumerate ref fields that have been modified (since the last // enumeration.) -uintx GenRemSet::max_alignment_constraint(Name nm) { - assert(nm == GenRemSet::CardTable, "Unrecognized GenRemSet type."); +uintx GenRemSet::max_alignment_constraint() { return CardTableRS::ct_max_alignment_constraint(); } diff --git a/hotspot/src/share/vm/memory/genRemSet.hpp b/hotspot/src/share/vm/memory/genRemSet.hpp index a275320c8da..5959434d30d 100644 --- a/hotspot/src/share/vm/memory/genRemSet.hpp +++ b/hotspot/src/share/vm/memory/genRemSet.hpp @@ -53,16 +53,9 @@ class GenRemSet: public CHeapObj { KlassRemSet _klass_rem_set; public: - enum Name { - CardTable, - Other - }; - GenRemSet(BarrierSet * bs) : _bs(bs) {} GenRemSet() : _bs(NULL) {} - virtual Name rs_kind() = 0; - // These are for dynamic downcasts. Unfortunately that it names the // possible subtypes (but not that they are subtypes!) Return NULL if // the cast is invalide. @@ -106,10 +99,9 @@ public: // within the heap, this function tells whether they are met. virtual bool is_aligned(HeapWord* addr) = 0; - // If the RS (or BS) imposes an aligment constraint on maximum heap size. - // (This must be static, and dispatch on "nm", because it is called - // before an RS is created.) - static uintx max_alignment_constraint(Name nm); + // Returns any alignment constraint that the remembered set imposes upon the + // heap. + static uintx max_alignment_constraint(); virtual void verify() = 0; From 8ce7c46ec7f908b51799761c6c6523deaba1f4de Mon Sep 17 00:00:00 2001 From: Stefan Johansson Date: Mon, 20 Jan 2014 12:56:18 +0100 Subject: [PATCH 024/158] 8020277: Young GC could be extremely slow due to assertion in ObjectStartArray::object_starts_in_range 8009462: Young GC's (ParNewGC and SerialGC) have unexpected variances Removed the assertion slowing down GC. Reviewed-by: stefank, mgerdin --- .../parallelScavenge/objectStartArray.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp index 8dfcf1889e7..753c3e3d4f0 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp @@ -139,11 +139,6 @@ bool ObjectStartArray::object_starts_in_range(HeapWord* start_addr, return true; } } - // No object starts in this slice; verify this using - // more traditional methods: Note that no object can - // start before the start_addr. - assert(end_addr == start_addr || - object_start(end_addr - 1) <= start_addr, - "Oops an object does start in this slice?"); + return false; } From 4c7c3f06137af1a2718c6426c66a92aa09f84a1b Mon Sep 17 00:00:00 2001 From: Mikael Gerdin Date: Tue, 14 Jan 2014 16:40:33 +0100 Subject: [PATCH 025/158] 8032379: Remove the is_scavenging flag to process_strong_roots Refactor the strong root processing to avoid using a boolean in addition to the ScanOption enum. Reviewed-by: stefank, tschatzl, ehelin, jmasa --- .../concurrentMarkSweepGeneration.cpp | 20 +++++-------- .../gc_implementation/g1/g1CollectedHeap.cpp | 10 +++---- .../vm/gc_implementation/g1/g1MarkSweep.cpp | 2 -- .../parNew/parNewGeneration.cpp | 3 +- .../src/share/vm/memory/defNewGeneration.cpp | 3 +- .../src/share/vm/memory/genCollectedHeap.cpp | 5 ++-- .../src/share/vm/memory/genCollectedHeap.hpp | 1 - hotspot/src/share/vm/memory/genMarkSweep.cpp | 2 -- hotspot/src/share/vm/memory/sharedHeap.cpp | 30 ++++++++++--------- hotspot/src/share/vm/memory/sharedHeap.hpp | 7 +++-- 10 files changed, 35 insertions(+), 48 deletions(-) diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp index 0c6397a6e02..097df480ce9 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp @@ -3033,7 +3033,6 @@ void CMSCollector::verify_after_remark_work_1() { gch->gen_process_strong_roots(_cmsGen->level(), true, // younger gens are roots true, // activate StrongRootsScope - false, // not scavenging SharedHeap::ScanningOption(roots_scanning_options()), ¬Older, true, // walk code active on stacks @@ -3101,7 +3100,6 @@ void CMSCollector::verify_after_remark_work_2() { gch->gen_process_strong_roots(_cmsGen->level(), true, // younger gens are roots true, // activate StrongRootsScope - false, // not scavenging SharedHeap::ScanningOption(roots_scanning_options()), ¬Older, true, // walk code active on stacks @@ -3303,7 +3301,7 @@ bool ConcurrentMarkSweepGeneration::is_too_full() const { void CMSCollector::setup_cms_unloading_and_verification_state() { const bool should_verify = VerifyBeforeGC || VerifyAfterGC || VerifyDuringGC || VerifyBeforeExit; - const int rso = SharedHeap::SO_Strings | SharedHeap::SO_CodeCache; + const int rso = SharedHeap::SO_Strings | SharedHeap::SO_AllCodeCache; // We set the proper root for this CMS cycle here. if (should_unload_classes()) { // Should unload classes this cycle @@ -3738,10 +3736,9 @@ void CMSCollector::checkpointRootsInitialWork(bool asynch) { gch->gen_process_strong_roots(_cmsGen->level(), true, // younger gens are roots true, // activate StrongRootsScope - false, // not scavenging SharedHeap::ScanningOption(roots_scanning_options()), ¬Older, - true, // walk all of code cache if (so & SO_CodeCache) + true, // walk all of code cache if (so & SO_AllCodeCache) NULL, &klass_closure); } @@ -5238,14 +5235,13 @@ void CMSParInitialMarkTask::work(uint worker_id) { gch->gen_process_strong_roots(_collector->_cmsGen->level(), false, // yg was scanned above false, // this is parallel code - false, // not scavenging SharedHeap::ScanningOption(_collector->CMSCollector::roots_scanning_options()), &par_mri_cl, - true, // walk all of code cache if (so & SO_CodeCache) + true, // walk all of code cache if (so & SO_AllCodeCache) NULL, &klass_closure); assert(_collector->should_unload_classes() - || (_collector->CMSCollector::roots_scanning_options() & SharedHeap::SO_CodeCache), + || (_collector->CMSCollector::roots_scanning_options() & SharedHeap::SO_AllCodeCache), "if we didn't scan the code cache, we have to be ready to drop nmethods with expired weak oops"); _timer.stop(); if (PrintCMSStatistics != 0) { @@ -5375,14 +5371,13 @@ void CMSParRemarkTask::work(uint worker_id) { gch->gen_process_strong_roots(_collector->_cmsGen->level(), false, // yg was scanned above false, // this is parallel code - false, // not scavenging SharedHeap::ScanningOption(_collector->CMSCollector::roots_scanning_options()), &par_mrias_cl, - true, // walk all of code cache if (so & SO_CodeCache) + true, // walk all of code cache if (so & SO_AllCodeCache) NULL, NULL); // The dirty klasses will be handled below assert(_collector->should_unload_classes() - || (_collector->CMSCollector::roots_scanning_options() & SharedHeap::SO_CodeCache), + || (_collector->CMSCollector::roots_scanning_options() & SharedHeap::SO_AllCodeCache), "if we didn't scan the code cache, we have to be ready to drop nmethods with expired weak oops"); _timer.stop(); if (PrintCMSStatistics != 0) { @@ -5966,7 +5961,6 @@ void CMSCollector::do_remark_non_parallel() { gch->gen_process_strong_roots(_cmsGen->level(), true, // younger gens as roots false, // use the local StrongRootsScope - false, // not scavenging SharedHeap::ScanningOption(roots_scanning_options()), &mrias_cl, true, // walk code active on stacks @@ -5974,7 +5968,7 @@ void CMSCollector::do_remark_non_parallel() { NULL); // The dirty klasses will be handled below assert(should_unload_classes() - || (roots_scanning_options() & SharedHeap::SO_CodeCache), + || (roots_scanning_options() & SharedHeap::SO_AllCodeCache), "if we didn't scan the code cache, we have to be ready to drop nmethods with expired weak oops"); } diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp index 358a5227137..a0c7db3b4a1 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -3392,14 +3392,12 @@ void G1CollectedHeap::verify(bool silent, VerifyOption vo) { // We apply the relevant closures to all the oops in the // system dictionary, the string table and the code cache. - const int so = SO_AllClasses | SO_Strings | SO_CodeCache; + const int so = SO_AllClasses | SO_Strings | SO_AllCodeCache; // Need cleared claim bits for the strong roots processing ClassLoaderDataGraph::clear_claimed_marks(); process_strong_roots(true, // activate StrongRootsScope - false, // we set "is scavenging" to false, - // so we don't reset the dirty cards. ScanningOption(so), // roots scanning options &rootsCl, &blobsCl, @@ -5106,13 +5104,13 @@ g1_process_strong_roots(bool is_scavenging, BufferingOopClosure buf_scan_non_heap_roots(scan_non_heap_roots); - assert(so & SO_CodeCache || scan_rs != NULL, "must scan code roots somehow"); + assert(so & SO_AllCodeCache || scan_rs != NULL, "must scan code roots somehow"); // Walk the code cache/strong code roots w/o buffering, because StarTask // cannot handle unaligned oop locations. CodeBlobToOopClosure eager_scan_code_roots(scan_non_heap_roots, true /* do_marking */); process_strong_roots(false, // no scoping; this is parallel code - is_scavenging, so, + so, &buf_scan_non_heap_roots, &eager_scan_code_roots, scan_klasses @@ -5160,7 +5158,7 @@ g1_process_strong_roots(bool is_scavenging, // the collection set. // Note all threads participate in this set of root tasks. double mark_strong_code_roots_ms = 0.0; - if (g1_policy()->during_initial_mark_pause() && !(so & SO_CodeCache)) { + if (g1_policy()->during_initial_mark_pause() && !(so & SO_AllCodeCache)) { double mark_strong_roots_start = os::elapsedTime(); mark_strong_code_roots(worker_i); mark_strong_code_roots_ms = (os::elapsedTime() - mark_strong_roots_start) * 1000.0; diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp index 2add92e6869..ca385549269 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp @@ -131,7 +131,6 @@ void G1MarkSweep::mark_sweep_phase1(bool& marked_for_unloading, ClassLoaderDataGraph::clear_claimed_marks(); sh->process_strong_roots(true, // activate StrongRootsScope - false, // not scavenging. SharedHeap::SO_SystemClasses, &GenMarkSweep::follow_root_closure, &GenMarkSweep::follow_code_root_closure, @@ -308,7 +307,6 @@ void G1MarkSweep::mark_sweep_phase3() { ClassLoaderDataGraph::clear_claimed_marks(); sh->process_strong_roots(true, // activate StrongRootsScope - false, // not scavenging. SharedHeap::SO_AllClasses, &GenMarkSweep::adjust_pointer_closure, NULL, // do not touch code cache here diff --git a/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp b/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp index 5ecb60c323a..0b5e950418e 100644 --- a/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp +++ b/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp @@ -612,14 +612,13 @@ void ParNewGenTask::work(uint worker_id) { KlassScanClosure klass_scan_closure(&par_scan_state.to_space_root_closure(), gch->rem_set()->klass_rem_set()); - int so = SharedHeap::SO_AllClasses | SharedHeap::SO_Strings | SharedHeap::SO_CodeCache; + int so = SharedHeap::SO_AllClasses | SharedHeap::SO_Strings | SharedHeap::SO_ScavengeCodeCache; par_scan_state.start_strong_roots(); gch->gen_process_strong_roots(_gen->level(), true, // Process younger gens, if any, // as strong roots. false, // no scope; this is parallel code - true, // is scavenging SharedHeap::ScanningOption(so), &par_scan_state.to_space_root_closure(), true, // walk *all* scavengable nmethods diff --git a/hotspot/src/share/vm/memory/defNewGeneration.cpp b/hotspot/src/share/vm/memory/defNewGeneration.cpp index 841fe4500a1..d656f400704 100644 --- a/hotspot/src/share/vm/memory/defNewGeneration.cpp +++ b/hotspot/src/share/vm/memory/defNewGeneration.cpp @@ -618,13 +618,12 @@ void DefNewGeneration::collect(bool full, assert(gch->no_allocs_since_save_marks(0), "save marks have not been newly set."); - int so = SharedHeap::SO_AllClasses | SharedHeap::SO_Strings | SharedHeap::SO_CodeCache; + int so = SharedHeap::SO_AllClasses | SharedHeap::SO_Strings | SharedHeap::SO_ScavengeCodeCache; gch->gen_process_strong_roots(_level, true, // Process younger gens, if any, // as strong roots. true, // activate StrongRootsScope - true, // is scavenging SharedHeap::ScanningOption(so), &fsc_with_no_gc_barrier, true, // walk *all* scavengable nmethods diff --git a/hotspot/src/share/vm/memory/genCollectedHeap.cpp b/hotspot/src/share/vm/memory/genCollectedHeap.cpp index 49c5965a89b..a5856a1e952 100644 --- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp +++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp @@ -592,7 +592,6 @@ void GenCollectedHeap:: gen_process_strong_roots(int level, bool younger_gens_as_roots, bool activate_scope, - bool is_scavenging, SharedHeap::ScanningOption so, OopsInGenClosure* not_older_gens, bool do_code_roots, @@ -601,12 +600,12 @@ gen_process_strong_roots(int level, // General strong roots. if (!do_code_roots) { - SharedHeap::process_strong_roots(activate_scope, is_scavenging, so, + SharedHeap::process_strong_roots(activate_scope, so, not_older_gens, NULL, klass_closure); } else { bool do_code_marking = (activate_scope || nmethod::oops_do_marking_is_active()); CodeBlobToOopClosure code_roots(not_older_gens, /*do_marking=*/ do_code_marking); - SharedHeap::process_strong_roots(activate_scope, is_scavenging, so, + SharedHeap::process_strong_roots(activate_scope, so, not_older_gens, &code_roots, klass_closure); } diff --git a/hotspot/src/share/vm/memory/genCollectedHeap.hpp b/hotspot/src/share/vm/memory/genCollectedHeap.hpp index b80fd718bd8..27ae0e10eda 100644 --- a/hotspot/src/share/vm/memory/genCollectedHeap.hpp +++ b/hotspot/src/share/vm/memory/genCollectedHeap.hpp @@ -411,7 +411,6 @@ public: // The remaining arguments are in an order // consistent with SharedHeap::process_strong_roots: bool activate_scope, - bool is_scavenging, SharedHeap::ScanningOption so, OopsInGenClosure* not_older_gens, bool do_code_roots, diff --git a/hotspot/src/share/vm/memory/genMarkSweep.cpp b/hotspot/src/share/vm/memory/genMarkSweep.cpp index fdeba2adaf9..75362fb00fe 100644 --- a/hotspot/src/share/vm/memory/genMarkSweep.cpp +++ b/hotspot/src/share/vm/memory/genMarkSweep.cpp @@ -210,7 +210,6 @@ void GenMarkSweep::mark_sweep_phase1(int level, gch->gen_process_strong_roots(level, false, // Younger gens are not roots. true, // activate StrongRootsScope - false, // not scavenging SharedHeap::SO_SystemClasses, &follow_root_closure, true, // walk code active on stacks @@ -296,7 +295,6 @@ void GenMarkSweep::mark_sweep_phase3(int level) { gch->gen_process_strong_roots(level, false, // Younger gens are not roots. true, // activate StrongRootsScope - false, // not scavenging SharedHeap::SO_AllClasses, &adjust_pointer_closure, false, // do not walk code diff --git a/hotspot/src/share/vm/memory/sharedHeap.cpp b/hotspot/src/share/vm/memory/sharedHeap.cpp index 47ebc180c8e..2dbf43ef156 100644 --- a/hotspot/src/share/vm/memory/sharedHeap.cpp +++ b/hotspot/src/share/vm/memory/sharedHeap.cpp @@ -137,7 +137,6 @@ SharedHeap::StrongRootsScope::~StrongRootsScope() { } void SharedHeap::process_strong_roots(bool activate_scope, - bool is_scavenging, ScanningOption so, OopClosure* roots, CodeBlobClosure* code_roots, @@ -157,9 +156,11 @@ void SharedHeap::process_strong_roots(bool activate_scope, if (!_process_strong_tasks->is_task_claimed(SH_PS_JNIHandles_oops_do)) JNIHandles::oops_do(roots); - // All threads execute this; the individual threads are task groups. CLDToOopClosure roots_from_clds(roots); - CLDToOopClosure* roots_from_clds_p = (is_scavenging ? NULL : &roots_from_clds); + // If we limit class scanning to SO_SystemClasses we need to apply a CLD closure to + // CLDs which are strongly reachable from the thread stacks. + CLDToOopClosure* roots_from_clds_p = ((so & SO_SystemClasses) ? &roots_from_clds : NULL); + // All threads execute this; the individual threads are task groups. if (CollectedHeap::use_parallel_gc_threads()) { Threads::possibly_parallel_oops_do(roots, roots_from_clds_p, code_roots); } else { @@ -187,9 +188,9 @@ void SharedHeap::process_strong_roots(bool activate_scope, if (!_process_strong_tasks->is_task_claimed(SH_PS_ClassLoaderDataGraph_oops_do)) { if (so & SO_AllClasses) { - ClassLoaderDataGraph::oops_do(roots, klass_closure, !is_scavenging); + ClassLoaderDataGraph::oops_do(roots, klass_closure, /* must_claim */ false); } else if (so & SO_SystemClasses) { - ClassLoaderDataGraph::always_strong_oops_do(roots, klass_closure, !is_scavenging); + ClassLoaderDataGraph::always_strong_oops_do(roots, klass_closure, /* must_claim */ true); } } @@ -204,17 +205,18 @@ void SharedHeap::process_strong_roots(bool activate_scope, } if (!_process_strong_tasks->is_task_claimed(SH_PS_CodeCache_oops_do)) { - if (so & SO_CodeCache) { + if (so & SO_ScavengeCodeCache) { assert(code_roots != NULL, "must supply closure for code cache"); - if (is_scavenging) { - // We only visit parts of the CodeCache when scavenging. - CodeCache::scavenge_root_nmethods_do(code_roots); - } else { - // CMSCollector uses this to do intermediate-strength collections. - // We scan the entire code cache, since CodeCache::do_unloading is not called. - CodeCache::blobs_do(code_roots); - } + // We only visit parts of the CodeCache when scavenging. + CodeCache::scavenge_root_nmethods_do(code_roots); + } + if (so & SO_AllCodeCache) { + assert(code_roots != NULL, "must supply closure for code cache"); + + // CMSCollector uses this to do intermediate-strength collections. + // We scan the entire code cache, since CodeCache::do_unloading is not called. + CodeCache::blobs_do(code_roots); } // Verify that the code cache contents are not subject to // movement by a scavenging collection. diff --git a/hotspot/src/share/vm/memory/sharedHeap.hpp b/hotspot/src/share/vm/memory/sharedHeap.hpp index f5d9e05f0cf..5bf1dc44a6f 100644 --- a/hotspot/src/share/vm/memory/sharedHeap.hpp +++ b/hotspot/src/share/vm/memory/sharedHeap.hpp @@ -221,7 +221,8 @@ public: SO_AllClasses = 0x1, SO_SystemClasses = 0x2, SO_Strings = 0x4, - SO_CodeCache = 0x8 + SO_AllCodeCache = 0x8, + SO_ScavengeCodeCache = 0x10 }; FlexibleWorkGang* workers() const { return _workers; } @@ -232,9 +233,9 @@ public: // "SO_AllClasses" applies the closure to all entries in the SystemDictionary; // "SO_SystemClasses" to all the "system" classes and loaders; // "SO_Strings" applies the closure to all entries in StringTable; - // "SO_CodeCache" applies the closure to all elements of the CodeCache. + // "SO_AllCodeCache" applies the closure to all elements of the CodeCache. + // "SO_ScavengeCodeCache" applies the closure to elements on the scavenge root list in the CodeCache. void process_strong_roots(bool activate_scope, - bool is_scavenging, ScanningOption so, OopClosure* roots, CodeBlobClosure* code_roots, From e5a5aefdfb5bdc8556e5e300f1be6709dae7a745 Mon Sep 17 00:00:00 2001 From: George Triantafillou Date: Tue, 14 Jan 2014 13:51:47 -0500 Subject: [PATCH 026/158] 8028398: [TESTBUG]: test/runtime/memory/ReadFromNoaccessArea.java failed with EXCEPTION_ACCESS_VIOLATION Remove ignore label Reviewed-by: sla, mseledtsov --- hotspot/test/runtime/memory/ReadFromNoaccessArea.java | 1 - 1 file changed, 1 deletion(-) diff --git a/hotspot/test/runtime/memory/ReadFromNoaccessArea.java b/hotspot/test/runtime/memory/ReadFromNoaccessArea.java index c80fab9efe4..1078dd2e4ea 100644 --- a/hotspot/test/runtime/memory/ReadFromNoaccessArea.java +++ b/hotspot/test/runtime/memory/ReadFromNoaccessArea.java @@ -22,7 +22,6 @@ */ /* - * @ignore 8028398 * @test * @summary Test that touching noaccess area in class ReservedHeapSpace results in SIGSEGV/ACCESS_VIOLATION * @library /testlibrary /testlibrary/whitebox From 44a8bf65f35fb7b929990e8ad29098772271b93c Mon Sep 17 00:00:00 2001 From: Harold Seigel Date: Tue, 14 Jan 2014 16:27:35 -0500 Subject: [PATCH 027/158] 8031059: invokestatic: ICCE trying to invoke static method when it clashes with an abstract method inherited from an interface Do not create AME overpass if there is a matching static method Reviewed-by: lfoltan, coleenp, kamg --- .../src/share/vm/classfile/defaultMethods.cpp | 41 ++++++++++++++----- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/hotspot/src/share/vm/classfile/defaultMethods.cpp b/hotspot/src/share/vm/classfile/defaultMethods.cpp index 0ebeecc624b..72020ba78a8 100644 --- a/hotspot/src/share/vm/classfile/defaultMethods.cpp +++ b/hotspot/src/share/vm/classfile/defaultMethods.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014, 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 @@ -390,6 +390,20 @@ class MethodFamily : public ResourceObj { Symbol* get_exception_message() { return _exception_message; } Symbol* get_exception_name() { return _exception_name; } + // Return true if the specified klass has a static method that matches + // the name and signature of the target method. + bool has_matching_static(InstanceKlass* root) { + if (_members.length() > 0) { + Pair entry = _members.at(0); + Method* impl = root->find_method(entry.first->name(), + entry.first->signature()); + if ((impl != NULL) && impl->is_static()) { + return true; + } + } + return false; + } + // Either sets the target or the exception error message void determine_target(InstanceKlass* root, TRAPS) { if (has_target() || throws_exception()) { @@ -416,19 +430,26 @@ class MethodFamily : public ResourceObj { } if (num_defaults == 0) { - if (qualified_methods.length() == 0) { - _exception_message = generate_no_defaults_message(CHECK); - } else { - assert(root != NULL, "Null root class"); - _exception_message = generate_method_message(root->name(), qualified_methods.at(0), CHECK); + // If the root klass has a static method with matching name and signature + // then do not generate an overpass method because it will hide the + // static method during resolution. + if (!has_matching_static(root)) { + if (qualified_methods.length() == 0) { + _exception_message = generate_no_defaults_message(CHECK); + } else { + assert(root != NULL, "Null root class"); + _exception_message = generate_method_message(root->name(), qualified_methods.at(0), CHECK); + } + _exception_name = vmSymbols::java_lang_AbstractMethodError(); } - _exception_name = vmSymbols::java_lang_AbstractMethodError(); + // If only one qualified method is default, select that } else if (num_defaults == 1) { _selected_target = qualified_methods.at(default_index); - } else if (num_defaults > 1) { - _exception_message = generate_conflicts_message(&qualified_methods,CHECK); - _exception_name = vmSymbols::java_lang_IncompatibleClassChangeError(); + + } else if (num_defaults > 1 && !has_matching_static(root)) { + _exception_message = generate_conflicts_message(&qualified_methods,CHECK); + _exception_name = vmSymbols::java_lang_IncompatibleClassChangeError(); if (TraceDefaultMethods) { _exception_message->print_value_on(tty); tty->print_cr(""); From 5289bda8e590dfcb2be8517fa10fef90a3ce1804 Mon Sep 17 00:00:00 2001 From: Dmitry Samersoff Date: Wed, 15 Jan 2014 02:02:47 +0400 Subject: [PATCH 028/158] 8030941: Darwin mapfile-vers doesnt work for other BSDs Changed makefile to use generic mapfile for non Darwin BSDs Reviewed-by: dholmes, sla --- hotspot/make/bsd/makefiles/debug.make | 3 + hotspot/make/bsd/makefiles/fastdebug.make | 3 + .../bsd/makefiles/mapfile-vers-darwin-debug | 256 ++++++++++ .../bsd/makefiles/mapfile-vers-darwin-product | 256 ++++++++++ hotspot/make/bsd/makefiles/mapfile-vers-debug | 462 +++++++++--------- .../make/bsd/makefiles/mapfile-vers-product | 462 +++++++++--------- hotspot/make/bsd/makefiles/optimized.make | 3 + hotspot/make/bsd/makefiles/product.make | 3 + 8 files changed, 998 insertions(+), 450 deletions(-) create mode 100644 hotspot/make/bsd/makefiles/mapfile-vers-darwin-debug create mode 100644 hotspot/make/bsd/makefiles/mapfile-vers-darwin-product diff --git a/hotspot/make/bsd/makefiles/debug.make b/hotspot/make/bsd/makefiles/debug.make index c14d974fbfb..1c4ef1418b1 100644 --- a/hotspot/make/bsd/makefiles/debug.make +++ b/hotspot/make/bsd/makefiles/debug.make @@ -36,6 +36,9 @@ CFLAGS += $(DEBUG_CFLAGS/BYFILE) -D_NMT_NOINLINE_ # Linker mapfile MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug +ifeq ($(OS_VENDOR), Darwin) +MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-darwin-debug +endif VERSION = debug SYSDEFS += -DASSERT diff --git a/hotspot/make/bsd/makefiles/fastdebug.make b/hotspot/make/bsd/makefiles/fastdebug.make index d1019f07d3f..9ff25742f21 100644 --- a/hotspot/make/bsd/makefiles/fastdebug.make +++ b/hotspot/make/bsd/makefiles/fastdebug.make @@ -57,6 +57,9 @@ CFLAGS$(HOTSPARC_GENERIC) += $(OPT_CFLAGS/BYFILE) # Linker mapfile MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug +ifeq ($(OS_VENDOR), Darwin) +MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-darwin-debug +endif VERSION = fastdebug SYSDEFS += -DASSERT -DCHECK_UNHANDLED_OOPS diff --git a/hotspot/make/bsd/makefiles/mapfile-vers-darwin-debug b/hotspot/make/bsd/makefiles/mapfile-vers-darwin-debug new file mode 100644 index 00000000000..d446cc81d84 --- /dev/null +++ b/hotspot/make/bsd/makefiles/mapfile-vers-darwin-debug @@ -0,0 +1,256 @@ +# +# Copyright (c) 2002, 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. +# +# 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. +# +# +# Only used for OSX/Darwin builds + +# Define public interface. + # _JNI + _JNI_CreateJavaVM + _JNI_GetCreatedJavaVMs + _JNI_GetDefaultJavaVMInitArgs + + # _JVM + _JVM_Accept + _JVM_ActiveProcessorCount + _JVM_AllocateNewArray + _JVM_AllocateNewObject + _JVM_ArrayCopy + _JVM_AssertionStatusDirectives + _JVM_Available + _JVM_Bind + _JVM_ClassDepth + _JVM_ClassLoaderDepth + _JVM_Clone + _JVM_Close + _JVM_CX8Field + _JVM_CompileClass + _JVM_CompileClasses + _JVM_CompilerCommand + _JVM_Connect + _JVM_ConstantPoolGetClassAt + _JVM_ConstantPoolGetClassAtIfLoaded + _JVM_ConstantPoolGetDoubleAt + _JVM_ConstantPoolGetFieldAt + _JVM_ConstantPoolGetFieldAtIfLoaded + _JVM_ConstantPoolGetFloatAt + _JVM_ConstantPoolGetIntAt + _JVM_ConstantPoolGetLongAt + _JVM_ConstantPoolGetMethodAt + _JVM_ConstantPoolGetMethodAtIfLoaded + _JVM_ConstantPoolGetMemberRefInfoAt + _JVM_ConstantPoolGetSize + _JVM_ConstantPoolGetStringAt + _JVM_ConstantPoolGetUTF8At + _JVM_CountStackFrames + _JVM_CurrentClassLoader + _JVM_CurrentLoadedClass + _JVM_CurrentThread + _JVM_CurrentTimeMillis + _JVM_DefineClass + _JVM_DefineClassWithSource + _JVM_DefineClassWithSourceCond + _JVM_DesiredAssertionStatus + _JVM_DisableCompiler + _JVM_DoPrivileged + _JVM_DTraceGetVersion + _JVM_DTraceActivate + _JVM_DTraceIsProbeEnabled + _JVM_DTraceIsSupported + _JVM_DTraceDispose + _JVM_DumpAllStacks + _JVM_DumpThreads + _JVM_EnableCompiler + _JVM_Exit + _JVM_FillInStackTrace + _JVM_FindClassFromClass + _JVM_FindClassFromClassLoader + _JVM_FindClassFromBootLoader + _JVM_FindLibraryEntry + _JVM_FindLoadedClass + _JVM_FindPrimitiveClass + _JVM_FindSignal + _JVM_FreeMemory + _JVM_GC + _JVM_GetAllThreads + _JVM_GetArrayElement + _JVM_GetArrayLength + _JVM_GetCPClassNameUTF + _JVM_GetCPFieldClassNameUTF + _JVM_GetCPFieldModifiers + _JVM_GetCPFieldNameUTF + _JVM_GetCPFieldSignatureUTF + _JVM_GetCPMethodClassNameUTF + _JVM_GetCPMethodModifiers + _JVM_GetCPMethodNameUTF + _JVM_GetCPMethodSignatureUTF + _JVM_GetCallerClass + _JVM_GetClassAccessFlags + _JVM_GetClassAnnotations + _JVM_GetClassCPEntriesCount + _JVM_GetClassCPTypes + _JVM_GetClassConstantPool + _JVM_GetClassContext + _JVM_GetClassDeclaredConstructors + _JVM_GetClassDeclaredFields + _JVM_GetClassDeclaredMethods + _JVM_GetClassFieldsCount + _JVM_GetClassInterfaces + _JVM_GetClassLoader + _JVM_GetClassMethodsCount + _JVM_GetClassModifiers + _JVM_GetClassName + _JVM_GetClassNameUTF + _JVM_GetClassSignature + _JVM_GetClassSigners + _JVM_GetClassTypeAnnotations + _JVM_GetComponentType + _JVM_GetDeclaredClasses + _JVM_GetDeclaringClass + _JVM_GetEnclosingMethodInfo + _JVM_GetFieldAnnotations + _JVM_GetFieldIxModifiers + _JVM_GetFieldTypeAnnotations + _JVM_GetHostName + _JVM_GetInheritedAccessControlContext + _JVM_GetInterfaceVersion + _JVM_GetLastErrorString + _JVM_GetManagement + _JVM_GetMethodAnnotations + _JVM_GetMethodDefaultAnnotationValue + _JVM_GetMethodIxArgsSize + _JVM_GetMethodIxByteCode + _JVM_GetMethodIxByteCodeLength + _JVM_GetMethodIxExceptionIndexes + _JVM_GetMethodIxExceptionTableEntry + _JVM_GetMethodIxExceptionTableLength + _JVM_GetMethodIxExceptionsCount + _JVM_GetMethodIxLocalsCount + _JVM_GetMethodIxMaxStack + _JVM_GetMethodIxModifiers + _JVM_GetMethodIxNameUTF + _JVM_GetMethodIxSignatureUTF + _JVM_GetMethodParameterAnnotations + _JVM_GetMethodParameters + _JVM_GetMethodTypeAnnotations + _JVM_GetPrimitiveArrayElement + _JVM_GetProtectionDomain + _JVM_GetSockName + _JVM_GetSockOpt + _JVM_GetStackAccessControlContext + _JVM_GetStackTraceDepth + _JVM_GetStackTraceElement + _JVM_GetSystemPackage + _JVM_GetSystemPackages + _JVM_GetThreadStateNames + _JVM_GetThreadStateValues + _JVM_GetVersionInfo + _JVM_Halt + _JVM_HoldsLock + _JVM_IHashCode + _JVM_InitAgentProperties + _JVM_InitProperties + _JVM_InitializeCompiler + _JVM_InitializeSocketLibrary + _JVM_InternString + _JVM_Interrupt + _JVM_InvokeMethod + _JVM_IsArrayClass + _JVM_IsConstructorIx + _JVM_IsInterface + _JVM_IsInterrupted + _JVM_IsNaN + _JVM_IsPrimitiveClass + _JVM_IsSameClassPackage + _JVM_IsSilentCompiler + _JVM_IsSupportedJNIVersion + _JVM_IsThreadAlive + _JVM_IsVMGeneratedMethodIx + _JVM_LatestUserDefinedLoader + _JVM_Listen + _JVM_LoadClass0 + _JVM_LoadLibrary + _JVM_Lseek + _JVM_MaxObjectInspectionAge + _JVM_MaxMemory + _JVM_MonitorNotify + _JVM_MonitorNotifyAll + _JVM_MonitorWait + _JVM_NanoTime + _JVM_NativePath + _JVM_NewArray + _JVM_NewInstanceFromConstructor + _JVM_NewMultiArray + _JVM_OnExit + _JVM_Open + _JVM_RaiseSignal + _JVM_RawMonitorCreate + _JVM_RawMonitorDestroy + _JVM_RawMonitorEnter + _JVM_RawMonitorExit + _JVM_Read + _JVM_Recv + _JVM_RecvFrom + _JVM_RegisterSignal + _JVM_ReleaseUTF + _JVM_ResolveClass + _JVM_ResumeThread + _JVM_Send + _JVM_SendTo + _JVM_SetArrayElement + _JVM_SetClassSigners + _JVM_SetLength + _JVM_SetNativeThreadName + _JVM_SetPrimitiveArrayElement + _JVM_SetSockOpt + _JVM_SetThreadPriority + _JVM_Sleep + _JVM_Socket + _JVM_SocketAvailable + _JVM_SocketClose + _JVM_SocketShutdown + _JVM_StartThread + _JVM_StopThread + _JVM_SuspendThread + _JVM_SupportsCX8 + _JVM_Sync + _JVM_Timeout + _JVM_TotalMemory + _JVM_TraceInstructions + _JVM_TraceMethodCalls + _JVM_UnloadLibrary + _JVM_Write + _JVM_Yield + _JVM_handle_bsd_signal + + # miscellaneous functions + _jio_fprintf + _jio_printf + _jio_snprintf + _jio_vfprintf + _jio_vsnprintf + + # This is for Forte Analyzer profiling support. + _AsyncGetCallTrace + + # INSERT VTABLE SYMBOLS HERE + diff --git a/hotspot/make/bsd/makefiles/mapfile-vers-darwin-product b/hotspot/make/bsd/makefiles/mapfile-vers-darwin-product new file mode 100644 index 00000000000..d446cc81d84 --- /dev/null +++ b/hotspot/make/bsd/makefiles/mapfile-vers-darwin-product @@ -0,0 +1,256 @@ +# +# Copyright (c) 2002, 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. +# +# 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. +# +# +# Only used for OSX/Darwin builds + +# Define public interface. + # _JNI + _JNI_CreateJavaVM + _JNI_GetCreatedJavaVMs + _JNI_GetDefaultJavaVMInitArgs + + # _JVM + _JVM_Accept + _JVM_ActiveProcessorCount + _JVM_AllocateNewArray + _JVM_AllocateNewObject + _JVM_ArrayCopy + _JVM_AssertionStatusDirectives + _JVM_Available + _JVM_Bind + _JVM_ClassDepth + _JVM_ClassLoaderDepth + _JVM_Clone + _JVM_Close + _JVM_CX8Field + _JVM_CompileClass + _JVM_CompileClasses + _JVM_CompilerCommand + _JVM_Connect + _JVM_ConstantPoolGetClassAt + _JVM_ConstantPoolGetClassAtIfLoaded + _JVM_ConstantPoolGetDoubleAt + _JVM_ConstantPoolGetFieldAt + _JVM_ConstantPoolGetFieldAtIfLoaded + _JVM_ConstantPoolGetFloatAt + _JVM_ConstantPoolGetIntAt + _JVM_ConstantPoolGetLongAt + _JVM_ConstantPoolGetMethodAt + _JVM_ConstantPoolGetMethodAtIfLoaded + _JVM_ConstantPoolGetMemberRefInfoAt + _JVM_ConstantPoolGetSize + _JVM_ConstantPoolGetStringAt + _JVM_ConstantPoolGetUTF8At + _JVM_CountStackFrames + _JVM_CurrentClassLoader + _JVM_CurrentLoadedClass + _JVM_CurrentThread + _JVM_CurrentTimeMillis + _JVM_DefineClass + _JVM_DefineClassWithSource + _JVM_DefineClassWithSourceCond + _JVM_DesiredAssertionStatus + _JVM_DisableCompiler + _JVM_DoPrivileged + _JVM_DTraceGetVersion + _JVM_DTraceActivate + _JVM_DTraceIsProbeEnabled + _JVM_DTraceIsSupported + _JVM_DTraceDispose + _JVM_DumpAllStacks + _JVM_DumpThreads + _JVM_EnableCompiler + _JVM_Exit + _JVM_FillInStackTrace + _JVM_FindClassFromClass + _JVM_FindClassFromClassLoader + _JVM_FindClassFromBootLoader + _JVM_FindLibraryEntry + _JVM_FindLoadedClass + _JVM_FindPrimitiveClass + _JVM_FindSignal + _JVM_FreeMemory + _JVM_GC + _JVM_GetAllThreads + _JVM_GetArrayElement + _JVM_GetArrayLength + _JVM_GetCPClassNameUTF + _JVM_GetCPFieldClassNameUTF + _JVM_GetCPFieldModifiers + _JVM_GetCPFieldNameUTF + _JVM_GetCPFieldSignatureUTF + _JVM_GetCPMethodClassNameUTF + _JVM_GetCPMethodModifiers + _JVM_GetCPMethodNameUTF + _JVM_GetCPMethodSignatureUTF + _JVM_GetCallerClass + _JVM_GetClassAccessFlags + _JVM_GetClassAnnotations + _JVM_GetClassCPEntriesCount + _JVM_GetClassCPTypes + _JVM_GetClassConstantPool + _JVM_GetClassContext + _JVM_GetClassDeclaredConstructors + _JVM_GetClassDeclaredFields + _JVM_GetClassDeclaredMethods + _JVM_GetClassFieldsCount + _JVM_GetClassInterfaces + _JVM_GetClassLoader + _JVM_GetClassMethodsCount + _JVM_GetClassModifiers + _JVM_GetClassName + _JVM_GetClassNameUTF + _JVM_GetClassSignature + _JVM_GetClassSigners + _JVM_GetClassTypeAnnotations + _JVM_GetComponentType + _JVM_GetDeclaredClasses + _JVM_GetDeclaringClass + _JVM_GetEnclosingMethodInfo + _JVM_GetFieldAnnotations + _JVM_GetFieldIxModifiers + _JVM_GetFieldTypeAnnotations + _JVM_GetHostName + _JVM_GetInheritedAccessControlContext + _JVM_GetInterfaceVersion + _JVM_GetLastErrorString + _JVM_GetManagement + _JVM_GetMethodAnnotations + _JVM_GetMethodDefaultAnnotationValue + _JVM_GetMethodIxArgsSize + _JVM_GetMethodIxByteCode + _JVM_GetMethodIxByteCodeLength + _JVM_GetMethodIxExceptionIndexes + _JVM_GetMethodIxExceptionTableEntry + _JVM_GetMethodIxExceptionTableLength + _JVM_GetMethodIxExceptionsCount + _JVM_GetMethodIxLocalsCount + _JVM_GetMethodIxMaxStack + _JVM_GetMethodIxModifiers + _JVM_GetMethodIxNameUTF + _JVM_GetMethodIxSignatureUTF + _JVM_GetMethodParameterAnnotations + _JVM_GetMethodParameters + _JVM_GetMethodTypeAnnotations + _JVM_GetPrimitiveArrayElement + _JVM_GetProtectionDomain + _JVM_GetSockName + _JVM_GetSockOpt + _JVM_GetStackAccessControlContext + _JVM_GetStackTraceDepth + _JVM_GetStackTraceElement + _JVM_GetSystemPackage + _JVM_GetSystemPackages + _JVM_GetThreadStateNames + _JVM_GetThreadStateValues + _JVM_GetVersionInfo + _JVM_Halt + _JVM_HoldsLock + _JVM_IHashCode + _JVM_InitAgentProperties + _JVM_InitProperties + _JVM_InitializeCompiler + _JVM_InitializeSocketLibrary + _JVM_InternString + _JVM_Interrupt + _JVM_InvokeMethod + _JVM_IsArrayClass + _JVM_IsConstructorIx + _JVM_IsInterface + _JVM_IsInterrupted + _JVM_IsNaN + _JVM_IsPrimitiveClass + _JVM_IsSameClassPackage + _JVM_IsSilentCompiler + _JVM_IsSupportedJNIVersion + _JVM_IsThreadAlive + _JVM_IsVMGeneratedMethodIx + _JVM_LatestUserDefinedLoader + _JVM_Listen + _JVM_LoadClass0 + _JVM_LoadLibrary + _JVM_Lseek + _JVM_MaxObjectInspectionAge + _JVM_MaxMemory + _JVM_MonitorNotify + _JVM_MonitorNotifyAll + _JVM_MonitorWait + _JVM_NanoTime + _JVM_NativePath + _JVM_NewArray + _JVM_NewInstanceFromConstructor + _JVM_NewMultiArray + _JVM_OnExit + _JVM_Open + _JVM_RaiseSignal + _JVM_RawMonitorCreate + _JVM_RawMonitorDestroy + _JVM_RawMonitorEnter + _JVM_RawMonitorExit + _JVM_Read + _JVM_Recv + _JVM_RecvFrom + _JVM_RegisterSignal + _JVM_ReleaseUTF + _JVM_ResolveClass + _JVM_ResumeThread + _JVM_Send + _JVM_SendTo + _JVM_SetArrayElement + _JVM_SetClassSigners + _JVM_SetLength + _JVM_SetNativeThreadName + _JVM_SetPrimitiveArrayElement + _JVM_SetSockOpt + _JVM_SetThreadPriority + _JVM_Sleep + _JVM_Socket + _JVM_SocketAvailable + _JVM_SocketClose + _JVM_SocketShutdown + _JVM_StartThread + _JVM_StopThread + _JVM_SuspendThread + _JVM_SupportsCX8 + _JVM_Sync + _JVM_Timeout + _JVM_TotalMemory + _JVM_TraceInstructions + _JVM_TraceMethodCalls + _JVM_UnloadLibrary + _JVM_Write + _JVM_Yield + _JVM_handle_bsd_signal + + # miscellaneous functions + _jio_fprintf + _jio_printf + _jio_snprintf + _jio_vfprintf + _jio_vsnprintf + + # This is for Forte Analyzer profiling support. + _AsyncGetCallTrace + + # INSERT VTABLE SYMBOLS HERE + diff --git a/hotspot/make/bsd/makefiles/mapfile-vers-debug b/hotspot/make/bsd/makefiles/mapfile-vers-debug index d446cc81d84..4936ba711f9 100644 --- a/hotspot/make/bsd/makefiles/mapfile-vers-debug +++ b/hotspot/make/bsd/makefiles/mapfile-vers-debug @@ -19,238 +19,250 @@ # 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. +# # -# -# Only used for OSX/Darwin builds # Define public interface. - # _JNI - _JNI_CreateJavaVM - _JNI_GetCreatedJavaVMs - _JNI_GetDefaultJavaVMInitArgs - # _JVM - _JVM_Accept - _JVM_ActiveProcessorCount - _JVM_AllocateNewArray - _JVM_AllocateNewObject - _JVM_ArrayCopy - _JVM_AssertionStatusDirectives - _JVM_Available - _JVM_Bind - _JVM_ClassDepth - _JVM_ClassLoaderDepth - _JVM_Clone - _JVM_Close - _JVM_CX8Field - _JVM_CompileClass - _JVM_CompileClasses - _JVM_CompilerCommand - _JVM_Connect - _JVM_ConstantPoolGetClassAt - _JVM_ConstantPoolGetClassAtIfLoaded - _JVM_ConstantPoolGetDoubleAt - _JVM_ConstantPoolGetFieldAt - _JVM_ConstantPoolGetFieldAtIfLoaded - _JVM_ConstantPoolGetFloatAt - _JVM_ConstantPoolGetIntAt - _JVM_ConstantPoolGetLongAt - _JVM_ConstantPoolGetMethodAt - _JVM_ConstantPoolGetMethodAtIfLoaded - _JVM_ConstantPoolGetMemberRefInfoAt - _JVM_ConstantPoolGetSize - _JVM_ConstantPoolGetStringAt - _JVM_ConstantPoolGetUTF8At - _JVM_CountStackFrames - _JVM_CurrentClassLoader - _JVM_CurrentLoadedClass - _JVM_CurrentThread - _JVM_CurrentTimeMillis - _JVM_DefineClass - _JVM_DefineClassWithSource - _JVM_DefineClassWithSourceCond - _JVM_DesiredAssertionStatus - _JVM_DisableCompiler - _JVM_DoPrivileged - _JVM_DTraceGetVersion - _JVM_DTraceActivate - _JVM_DTraceIsProbeEnabled - _JVM_DTraceIsSupported - _JVM_DTraceDispose - _JVM_DumpAllStacks - _JVM_DumpThreads - _JVM_EnableCompiler - _JVM_Exit - _JVM_FillInStackTrace - _JVM_FindClassFromClass - _JVM_FindClassFromClassLoader - _JVM_FindClassFromBootLoader - _JVM_FindLibraryEntry - _JVM_FindLoadedClass - _JVM_FindPrimitiveClass - _JVM_FindSignal - _JVM_FreeMemory - _JVM_GC - _JVM_GetAllThreads - _JVM_GetArrayElement - _JVM_GetArrayLength - _JVM_GetCPClassNameUTF - _JVM_GetCPFieldClassNameUTF - _JVM_GetCPFieldModifiers - _JVM_GetCPFieldNameUTF - _JVM_GetCPFieldSignatureUTF - _JVM_GetCPMethodClassNameUTF - _JVM_GetCPMethodModifiers - _JVM_GetCPMethodNameUTF - _JVM_GetCPMethodSignatureUTF - _JVM_GetCallerClass - _JVM_GetClassAccessFlags - _JVM_GetClassAnnotations - _JVM_GetClassCPEntriesCount - _JVM_GetClassCPTypes - _JVM_GetClassConstantPool - _JVM_GetClassContext - _JVM_GetClassDeclaredConstructors - _JVM_GetClassDeclaredFields - _JVM_GetClassDeclaredMethods - _JVM_GetClassFieldsCount - _JVM_GetClassInterfaces - _JVM_GetClassLoader - _JVM_GetClassMethodsCount - _JVM_GetClassModifiers - _JVM_GetClassName - _JVM_GetClassNameUTF - _JVM_GetClassSignature - _JVM_GetClassSigners - _JVM_GetClassTypeAnnotations - _JVM_GetComponentType - _JVM_GetDeclaredClasses - _JVM_GetDeclaringClass - _JVM_GetEnclosingMethodInfo - _JVM_GetFieldAnnotations - _JVM_GetFieldIxModifiers - _JVM_GetFieldTypeAnnotations - _JVM_GetHostName - _JVM_GetInheritedAccessControlContext - _JVM_GetInterfaceVersion - _JVM_GetLastErrorString - _JVM_GetManagement - _JVM_GetMethodAnnotations - _JVM_GetMethodDefaultAnnotationValue - _JVM_GetMethodIxArgsSize - _JVM_GetMethodIxByteCode - _JVM_GetMethodIxByteCodeLength - _JVM_GetMethodIxExceptionIndexes - _JVM_GetMethodIxExceptionTableEntry - _JVM_GetMethodIxExceptionTableLength - _JVM_GetMethodIxExceptionsCount - _JVM_GetMethodIxLocalsCount - _JVM_GetMethodIxMaxStack - _JVM_GetMethodIxModifiers - _JVM_GetMethodIxNameUTF - _JVM_GetMethodIxSignatureUTF - _JVM_GetMethodParameterAnnotations - _JVM_GetMethodParameters - _JVM_GetMethodTypeAnnotations - _JVM_GetPrimitiveArrayElement - _JVM_GetProtectionDomain - _JVM_GetSockName - _JVM_GetSockOpt - _JVM_GetStackAccessControlContext - _JVM_GetStackTraceDepth - _JVM_GetStackTraceElement - _JVM_GetSystemPackage - _JVM_GetSystemPackages - _JVM_GetThreadStateNames - _JVM_GetThreadStateValues - _JVM_GetVersionInfo - _JVM_Halt - _JVM_HoldsLock - _JVM_IHashCode - _JVM_InitAgentProperties - _JVM_InitProperties - _JVM_InitializeCompiler - _JVM_InitializeSocketLibrary - _JVM_InternString - _JVM_Interrupt - _JVM_InvokeMethod - _JVM_IsArrayClass - _JVM_IsConstructorIx - _JVM_IsInterface - _JVM_IsInterrupted - _JVM_IsNaN - _JVM_IsPrimitiveClass - _JVM_IsSameClassPackage - _JVM_IsSilentCompiler - _JVM_IsSupportedJNIVersion - _JVM_IsThreadAlive - _JVM_IsVMGeneratedMethodIx - _JVM_LatestUserDefinedLoader - _JVM_Listen - _JVM_LoadClass0 - _JVM_LoadLibrary - _JVM_Lseek - _JVM_MaxObjectInspectionAge - _JVM_MaxMemory - _JVM_MonitorNotify - _JVM_MonitorNotifyAll - _JVM_MonitorWait - _JVM_NanoTime - _JVM_NativePath - _JVM_NewArray - _JVM_NewInstanceFromConstructor - _JVM_NewMultiArray - _JVM_OnExit - _JVM_Open - _JVM_RaiseSignal - _JVM_RawMonitorCreate - _JVM_RawMonitorDestroy - _JVM_RawMonitorEnter - _JVM_RawMonitorExit - _JVM_Read - _JVM_Recv - _JVM_RecvFrom - _JVM_RegisterSignal - _JVM_ReleaseUTF - _JVM_ResolveClass - _JVM_ResumeThread - _JVM_Send - _JVM_SendTo - _JVM_SetArrayElement - _JVM_SetClassSigners - _JVM_SetLength - _JVM_SetNativeThreadName - _JVM_SetPrimitiveArrayElement - _JVM_SetSockOpt - _JVM_SetThreadPriority - _JVM_Sleep - _JVM_Socket - _JVM_SocketAvailable - _JVM_SocketClose - _JVM_SocketShutdown - _JVM_StartThread - _JVM_StopThread - _JVM_SuspendThread - _JVM_SupportsCX8 - _JVM_Sync - _JVM_Timeout - _JVM_TotalMemory - _JVM_TraceInstructions - _JVM_TraceMethodCalls - _JVM_UnloadLibrary - _JVM_Write - _JVM_Yield - _JVM_handle_bsd_signal +SUNWprivate_1.1 { + global: + # JNI + JNI_CreateJavaVM; + JNI_GetCreatedJavaVMs; + JNI_GetDefaultJavaVMInitArgs; + + # JVM + JVM_Accept; + JVM_ActiveProcessorCount; + JVM_AllocateNewArray; + JVM_AllocateNewObject; + JVM_ArrayCopy; + JVM_AssertionStatusDirectives; + JVM_Available; + JVM_Bind; + JVM_ClassDepth; + JVM_ClassLoaderDepth; + JVM_Clone; + JVM_Close; + JVM_CX8Field; + JVM_CompileClass; + JVM_CompileClasses; + JVM_CompilerCommand; + JVM_Connect; + JVM_ConstantPoolGetClassAt; + JVM_ConstantPoolGetClassAtIfLoaded; + JVM_ConstantPoolGetDoubleAt; + JVM_ConstantPoolGetFieldAt; + JVM_ConstantPoolGetFieldAtIfLoaded; + JVM_ConstantPoolGetFloatAt; + JVM_ConstantPoolGetIntAt; + JVM_ConstantPoolGetLongAt; + JVM_ConstantPoolGetMethodAt; + JVM_ConstantPoolGetMethodAtIfLoaded; + JVM_ConstantPoolGetMemberRefInfoAt; + JVM_ConstantPoolGetSize; + JVM_ConstantPoolGetStringAt; + JVM_ConstantPoolGetUTF8At; + JVM_CountStackFrames; + JVM_CurrentClassLoader; + JVM_CurrentLoadedClass; + JVM_CurrentThread; + JVM_CurrentTimeMillis; + JVM_DefineClass; + JVM_DefineClassWithSource; + JVM_DefineClassWithSourceCond; + JVM_DesiredAssertionStatus; + JVM_DisableCompiler; + JVM_DoPrivileged; + JVM_DTraceGetVersion; + JVM_DTraceActivate; + JVM_DTraceIsProbeEnabled; + JVM_DTraceIsSupported; + JVM_DTraceDispose; + JVM_DumpAllStacks; + JVM_DumpThreads; + JVM_EnableCompiler; + JVM_Exit; + JVM_FillInStackTrace; + JVM_FindClassFromClass; + JVM_FindClassFromClassLoader; + JVM_FindClassFromBootLoader; + JVM_FindLibraryEntry; + JVM_FindLoadedClass; + JVM_FindPrimitiveClass; + JVM_FindSignal; + JVM_FreeMemory; + JVM_GC; + JVM_GetAllThreads; + JVM_GetArrayElement; + JVM_GetArrayLength; + JVM_GetCPClassNameUTF; + JVM_GetCPFieldClassNameUTF; + JVM_GetCPFieldModifiers; + JVM_GetCPFieldNameUTF; + JVM_GetCPFieldSignatureUTF; + JVM_GetCPMethodClassNameUTF; + JVM_GetCPMethodModifiers; + JVM_GetCPMethodNameUTF; + JVM_GetCPMethodSignatureUTF; + JVM_GetCallerClass; + JVM_GetClassAccessFlags; + JVM_GetClassAnnotations; + JVM_GetClassCPEntriesCount; + JVM_GetClassCPTypes; + JVM_GetClassConstantPool; + JVM_GetClassContext; + JVM_GetClassDeclaredConstructors; + JVM_GetClassDeclaredFields; + JVM_GetClassDeclaredMethods; + JVM_GetClassFieldsCount; + JVM_GetClassInterfaces; + JVM_GetClassLoader; + JVM_GetClassMethodsCount; + JVM_GetClassModifiers; + JVM_GetClassName; + JVM_GetClassNameUTF; + JVM_GetClassSignature; + JVM_GetClassSigners; + JVM_GetClassTypeAnnotations; + JVM_GetComponentType; + JVM_GetDeclaredClasses; + JVM_GetDeclaringClass; + JVM_GetEnclosingMethodInfo; + JVM_GetFieldAnnotations; + JVM_GetFieldIxModifiers; + JVM_GetFieldTypeAnnotations; + JVM_GetHostName; + JVM_GetInheritedAccessControlContext; + JVM_GetInterfaceVersion; + JVM_GetLastErrorString; + JVM_GetManagement; + JVM_GetMethodAnnotations; + JVM_GetMethodDefaultAnnotationValue; + JVM_GetMethodIxArgsSize; + JVM_GetMethodIxByteCode; + JVM_GetMethodIxByteCodeLength; + JVM_GetMethodIxExceptionIndexes; + JVM_GetMethodIxExceptionTableEntry; + JVM_GetMethodIxExceptionTableLength; + JVM_GetMethodIxExceptionsCount; + JVM_GetMethodIxLocalsCount; + JVM_GetMethodIxMaxStack; + JVM_GetMethodIxModifiers; + JVM_GetMethodIxNameUTF; + JVM_GetMethodIxSignatureUTF; + JVM_GetMethodParameterAnnotations; + JVM_GetMethodParameters; + JVM_GetMethodTypeAnnotations; + JVM_GetPrimitiveArrayElement; + JVM_GetProtectionDomain; + JVM_GetSockName; + JVM_GetSockOpt; + JVM_GetStackAccessControlContext; + JVM_GetStackTraceDepth; + JVM_GetStackTraceElement; + JVM_GetSystemPackage; + JVM_GetSystemPackages; + JVM_GetThreadStateNames; + JVM_GetThreadStateValues; + JVM_GetVersionInfo; + JVM_Halt; + JVM_HoldsLock; + JVM_IHashCode; + JVM_InitAgentProperties; + JVM_InitProperties; + JVM_InitializeCompiler; + JVM_InitializeSocketLibrary; + JVM_InternString; + JVM_Interrupt; + JVM_InvokeMethod; + JVM_IsArrayClass; + JVM_IsConstructorIx; + JVM_IsInterface; + JVM_IsInterrupted; + JVM_IsNaN; + JVM_IsPrimitiveClass; + JVM_IsSameClassPackage; + JVM_IsSilentCompiler; + JVM_IsSupportedJNIVersion; + JVM_IsThreadAlive; + JVM_IsVMGeneratedMethodIx; + JVM_LatestUserDefinedLoader; + JVM_Listen; + JVM_LoadClass0; + JVM_LoadLibrary; + JVM_Lseek; + JVM_MaxObjectInspectionAge; + JVM_MaxMemory; + JVM_MonitorNotify; + JVM_MonitorNotifyAll; + JVM_MonitorWait; + JVM_NanoTime; + JVM_NativePath; + JVM_NewArray; + JVM_NewInstanceFromConstructor; + JVM_NewMultiArray; + JVM_OnExit; + JVM_Open; + JVM_RaiseSignal; + JVM_RawMonitorCreate; + JVM_RawMonitorDestroy; + JVM_RawMonitorEnter; + JVM_RawMonitorExit; + JVM_Read; + JVM_Recv; + JVM_RecvFrom; + JVM_RegisterSignal; + JVM_ReleaseUTF; + JVM_ResolveClass; + JVM_ResumeThread; + JVM_Send; + JVM_SendTo; + JVM_SetArrayElement; + JVM_SetClassSigners; + JVM_SetLength; + JVM_SetNativeThreadName; + JVM_SetPrimitiveArrayElement; + JVM_SetSockOpt; + JVM_SetThreadPriority; + JVM_Sleep; + JVM_Socket; + JVM_SocketAvailable; + JVM_SocketClose; + JVM_SocketShutdown; + JVM_StartThread; + JVM_StopThread; + JVM_SuspendThread; + JVM_SupportsCX8; + JVM_Sync; + JVM_Timeout; + JVM_TotalMemory; + JVM_TraceInstructions; + JVM_TraceMethodCalls; + JVM_UnloadLibrary; + JVM_Write; + JVM_Yield; + JVM_handle_linux_signal; # miscellaneous functions - _jio_fprintf - _jio_printf - _jio_snprintf - _jio_vfprintf - _jio_vsnprintf + jio_fprintf; + jio_printf; + jio_snprintf; + jio_vfprintf; + jio_vsnprintf; + fork1; + numa_warn; + numa_error; + + # Needed because there is no JVM interface for this. + sysThreadAvailableStackWithSlack; # This is for Forte Analyzer profiling support. - _AsyncGetCallTrace + AsyncGetCallTrace; - # INSERT VTABLE SYMBOLS HERE + # INSERT VTABLE SYMBOLS HERE + + local: + *; +}; diff --git a/hotspot/make/bsd/makefiles/mapfile-vers-product b/hotspot/make/bsd/makefiles/mapfile-vers-product index d446cc81d84..4641af0af20 100644 --- a/hotspot/make/bsd/makefiles/mapfile-vers-product +++ b/hotspot/make/bsd/makefiles/mapfile-vers-product @@ -19,238 +19,250 @@ # 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. +# # -# -# Only used for OSX/Darwin builds # Define public interface. - # _JNI - _JNI_CreateJavaVM - _JNI_GetCreatedJavaVMs - _JNI_GetDefaultJavaVMInitArgs - # _JVM - _JVM_Accept - _JVM_ActiveProcessorCount - _JVM_AllocateNewArray - _JVM_AllocateNewObject - _JVM_ArrayCopy - _JVM_AssertionStatusDirectives - _JVM_Available - _JVM_Bind - _JVM_ClassDepth - _JVM_ClassLoaderDepth - _JVM_Clone - _JVM_Close - _JVM_CX8Field - _JVM_CompileClass - _JVM_CompileClasses - _JVM_CompilerCommand - _JVM_Connect - _JVM_ConstantPoolGetClassAt - _JVM_ConstantPoolGetClassAtIfLoaded - _JVM_ConstantPoolGetDoubleAt - _JVM_ConstantPoolGetFieldAt - _JVM_ConstantPoolGetFieldAtIfLoaded - _JVM_ConstantPoolGetFloatAt - _JVM_ConstantPoolGetIntAt - _JVM_ConstantPoolGetLongAt - _JVM_ConstantPoolGetMethodAt - _JVM_ConstantPoolGetMethodAtIfLoaded - _JVM_ConstantPoolGetMemberRefInfoAt - _JVM_ConstantPoolGetSize - _JVM_ConstantPoolGetStringAt - _JVM_ConstantPoolGetUTF8At - _JVM_CountStackFrames - _JVM_CurrentClassLoader - _JVM_CurrentLoadedClass - _JVM_CurrentThread - _JVM_CurrentTimeMillis - _JVM_DefineClass - _JVM_DefineClassWithSource - _JVM_DefineClassWithSourceCond - _JVM_DesiredAssertionStatus - _JVM_DisableCompiler - _JVM_DoPrivileged - _JVM_DTraceGetVersion - _JVM_DTraceActivate - _JVM_DTraceIsProbeEnabled - _JVM_DTraceIsSupported - _JVM_DTraceDispose - _JVM_DumpAllStacks - _JVM_DumpThreads - _JVM_EnableCompiler - _JVM_Exit - _JVM_FillInStackTrace - _JVM_FindClassFromClass - _JVM_FindClassFromClassLoader - _JVM_FindClassFromBootLoader - _JVM_FindLibraryEntry - _JVM_FindLoadedClass - _JVM_FindPrimitiveClass - _JVM_FindSignal - _JVM_FreeMemory - _JVM_GC - _JVM_GetAllThreads - _JVM_GetArrayElement - _JVM_GetArrayLength - _JVM_GetCPClassNameUTF - _JVM_GetCPFieldClassNameUTF - _JVM_GetCPFieldModifiers - _JVM_GetCPFieldNameUTF - _JVM_GetCPFieldSignatureUTF - _JVM_GetCPMethodClassNameUTF - _JVM_GetCPMethodModifiers - _JVM_GetCPMethodNameUTF - _JVM_GetCPMethodSignatureUTF - _JVM_GetCallerClass - _JVM_GetClassAccessFlags - _JVM_GetClassAnnotations - _JVM_GetClassCPEntriesCount - _JVM_GetClassCPTypes - _JVM_GetClassConstantPool - _JVM_GetClassContext - _JVM_GetClassDeclaredConstructors - _JVM_GetClassDeclaredFields - _JVM_GetClassDeclaredMethods - _JVM_GetClassFieldsCount - _JVM_GetClassInterfaces - _JVM_GetClassLoader - _JVM_GetClassMethodsCount - _JVM_GetClassModifiers - _JVM_GetClassName - _JVM_GetClassNameUTF - _JVM_GetClassSignature - _JVM_GetClassSigners - _JVM_GetClassTypeAnnotations - _JVM_GetComponentType - _JVM_GetDeclaredClasses - _JVM_GetDeclaringClass - _JVM_GetEnclosingMethodInfo - _JVM_GetFieldAnnotations - _JVM_GetFieldIxModifiers - _JVM_GetFieldTypeAnnotations - _JVM_GetHostName - _JVM_GetInheritedAccessControlContext - _JVM_GetInterfaceVersion - _JVM_GetLastErrorString - _JVM_GetManagement - _JVM_GetMethodAnnotations - _JVM_GetMethodDefaultAnnotationValue - _JVM_GetMethodIxArgsSize - _JVM_GetMethodIxByteCode - _JVM_GetMethodIxByteCodeLength - _JVM_GetMethodIxExceptionIndexes - _JVM_GetMethodIxExceptionTableEntry - _JVM_GetMethodIxExceptionTableLength - _JVM_GetMethodIxExceptionsCount - _JVM_GetMethodIxLocalsCount - _JVM_GetMethodIxMaxStack - _JVM_GetMethodIxModifiers - _JVM_GetMethodIxNameUTF - _JVM_GetMethodIxSignatureUTF - _JVM_GetMethodParameterAnnotations - _JVM_GetMethodParameters - _JVM_GetMethodTypeAnnotations - _JVM_GetPrimitiveArrayElement - _JVM_GetProtectionDomain - _JVM_GetSockName - _JVM_GetSockOpt - _JVM_GetStackAccessControlContext - _JVM_GetStackTraceDepth - _JVM_GetStackTraceElement - _JVM_GetSystemPackage - _JVM_GetSystemPackages - _JVM_GetThreadStateNames - _JVM_GetThreadStateValues - _JVM_GetVersionInfo - _JVM_Halt - _JVM_HoldsLock - _JVM_IHashCode - _JVM_InitAgentProperties - _JVM_InitProperties - _JVM_InitializeCompiler - _JVM_InitializeSocketLibrary - _JVM_InternString - _JVM_Interrupt - _JVM_InvokeMethod - _JVM_IsArrayClass - _JVM_IsConstructorIx - _JVM_IsInterface - _JVM_IsInterrupted - _JVM_IsNaN - _JVM_IsPrimitiveClass - _JVM_IsSameClassPackage - _JVM_IsSilentCompiler - _JVM_IsSupportedJNIVersion - _JVM_IsThreadAlive - _JVM_IsVMGeneratedMethodIx - _JVM_LatestUserDefinedLoader - _JVM_Listen - _JVM_LoadClass0 - _JVM_LoadLibrary - _JVM_Lseek - _JVM_MaxObjectInspectionAge - _JVM_MaxMemory - _JVM_MonitorNotify - _JVM_MonitorNotifyAll - _JVM_MonitorWait - _JVM_NanoTime - _JVM_NativePath - _JVM_NewArray - _JVM_NewInstanceFromConstructor - _JVM_NewMultiArray - _JVM_OnExit - _JVM_Open - _JVM_RaiseSignal - _JVM_RawMonitorCreate - _JVM_RawMonitorDestroy - _JVM_RawMonitorEnter - _JVM_RawMonitorExit - _JVM_Read - _JVM_Recv - _JVM_RecvFrom - _JVM_RegisterSignal - _JVM_ReleaseUTF - _JVM_ResolveClass - _JVM_ResumeThread - _JVM_Send - _JVM_SendTo - _JVM_SetArrayElement - _JVM_SetClassSigners - _JVM_SetLength - _JVM_SetNativeThreadName - _JVM_SetPrimitiveArrayElement - _JVM_SetSockOpt - _JVM_SetThreadPriority - _JVM_Sleep - _JVM_Socket - _JVM_SocketAvailable - _JVM_SocketClose - _JVM_SocketShutdown - _JVM_StartThread - _JVM_StopThread - _JVM_SuspendThread - _JVM_SupportsCX8 - _JVM_Sync - _JVM_Timeout - _JVM_TotalMemory - _JVM_TraceInstructions - _JVM_TraceMethodCalls - _JVM_UnloadLibrary - _JVM_Write - _JVM_Yield - _JVM_handle_bsd_signal +SUNWprivate_1.1 { + global: + # JNI + JNI_CreateJavaVM; + JNI_GetCreatedJavaVMs; + JNI_GetDefaultJavaVMInitArgs; + + # JVM + JVM_Accept; + JVM_ActiveProcessorCount; + JVM_AllocateNewArray; + JVM_AllocateNewObject; + JVM_ArrayCopy; + JVM_AssertionStatusDirectives; + JVM_Available; + JVM_Bind; + JVM_ClassDepth; + JVM_ClassLoaderDepth; + JVM_Clone; + JVM_Close; + JVM_CX8Field; + JVM_CompileClass; + JVM_CompileClasses; + JVM_CompilerCommand; + JVM_Connect; + JVM_ConstantPoolGetClassAt; + JVM_ConstantPoolGetClassAtIfLoaded; + JVM_ConstantPoolGetDoubleAt; + JVM_ConstantPoolGetFieldAt; + JVM_ConstantPoolGetFieldAtIfLoaded; + JVM_ConstantPoolGetFloatAt; + JVM_ConstantPoolGetIntAt; + JVM_ConstantPoolGetLongAt; + JVM_ConstantPoolGetMethodAt; + JVM_ConstantPoolGetMethodAtIfLoaded; + JVM_ConstantPoolGetMemberRefInfoAt; + JVM_ConstantPoolGetSize; + JVM_ConstantPoolGetStringAt; + JVM_ConstantPoolGetUTF8At; + JVM_CountStackFrames; + JVM_CurrentClassLoader; + JVM_CurrentLoadedClass; + JVM_CurrentThread; + JVM_CurrentTimeMillis; + JVM_DefineClass; + JVM_DefineClassWithSource; + JVM_DefineClassWithSourceCond; + JVM_DesiredAssertionStatus; + JVM_DisableCompiler; + JVM_DoPrivileged; + JVM_DTraceGetVersion; + JVM_DTraceActivate; + JVM_DTraceIsProbeEnabled; + JVM_DTraceIsSupported; + JVM_DTraceDispose; + JVM_DumpAllStacks; + JVM_DumpThreads; + JVM_EnableCompiler; + JVM_Exit; + JVM_FillInStackTrace; + JVM_FindClassFromClass; + JVM_FindClassFromClassLoader; + JVM_FindClassFromBootLoader; + JVM_FindLibraryEntry; + JVM_FindLoadedClass; + JVM_FindPrimitiveClass; + JVM_FindSignal; + JVM_FreeMemory; + JVM_GC; + JVM_GetAllThreads; + JVM_GetArrayElement; + JVM_GetArrayLength; + JVM_GetCPClassNameUTF; + JVM_GetCPFieldClassNameUTF; + JVM_GetCPFieldModifiers; + JVM_GetCPFieldNameUTF; + JVM_GetCPFieldSignatureUTF; + JVM_GetCPMethodClassNameUTF; + JVM_GetCPMethodModifiers; + JVM_GetCPMethodNameUTF; + JVM_GetCPMethodSignatureUTF; + JVM_GetCallerClass; + JVM_GetClassAccessFlags; + JVM_GetClassAnnotations; + JVM_GetClassCPEntriesCount; + JVM_GetClassCPTypes; + JVM_GetClassConstantPool; + JVM_GetClassContext; + JVM_GetClassDeclaredConstructors; + JVM_GetClassDeclaredFields; + JVM_GetClassDeclaredMethods; + JVM_GetClassFieldsCount; + JVM_GetClassInterfaces; + JVM_GetClassLoader; + JVM_GetClassMethodsCount; + JVM_GetClassModifiers; + JVM_GetClassName; + JVM_GetClassNameUTF; + JVM_GetClassSignature; + JVM_GetClassSigners; + JVM_GetClassTypeAnnotations; + JVM_GetComponentType; + JVM_GetDeclaredClasses; + JVM_GetDeclaringClass; + JVM_GetEnclosingMethodInfo; + JVM_GetFieldAnnotations; + JVM_GetFieldIxModifiers; + JVM_GetFieldTypeAnnotations; + JVM_GetHostName; + JVM_GetInheritedAccessControlContext; + JVM_GetInterfaceVersion; + JVM_GetLastErrorString; + JVM_GetManagement; + JVM_GetMethodAnnotations; + JVM_GetMethodDefaultAnnotationValue; + JVM_GetMethodIxArgsSize; + JVM_GetMethodIxByteCode; + JVM_GetMethodIxByteCodeLength; + JVM_GetMethodIxExceptionIndexes; + JVM_GetMethodIxExceptionTableEntry; + JVM_GetMethodIxExceptionTableLength; + JVM_GetMethodIxExceptionsCount; + JVM_GetMethodIxLocalsCount; + JVM_GetMethodIxMaxStack; + JVM_GetMethodIxModifiers; + JVM_GetMethodIxNameUTF; + JVM_GetMethodIxSignatureUTF; + JVM_GetMethodParameterAnnotations; + JVM_GetMethodParameters; + JVM_GetMethodTypeAnnotations; + JVM_GetPrimitiveArrayElement; + JVM_GetProtectionDomain; + JVM_GetSockName; + JVM_GetSockOpt; + JVM_GetStackAccessControlContext; + JVM_GetStackTraceDepth; + JVM_GetStackTraceElement; + JVM_GetSystemPackage; + JVM_GetSystemPackages; + JVM_GetThreadStateNames; + JVM_GetThreadStateValues; + JVM_GetVersionInfo; + JVM_Halt; + JVM_HoldsLock; + JVM_IHashCode; + JVM_InitAgentProperties; + JVM_InitProperties; + JVM_InitializeCompiler; + JVM_InitializeSocketLibrary; + JVM_InternString; + JVM_Interrupt; + JVM_InvokeMethod; + JVM_IsArrayClass; + JVM_IsConstructorIx; + JVM_IsInterface; + JVM_IsInterrupted; + JVM_IsNaN; + JVM_IsPrimitiveClass; + JVM_IsSameClassPackage; + JVM_IsSilentCompiler; + JVM_IsSupportedJNIVersion; + JVM_IsThreadAlive; + JVM_IsVMGeneratedMethodIx; + JVM_LatestUserDefinedLoader; + JVM_Listen; + JVM_LoadClass0; + JVM_LoadLibrary; + JVM_Lseek; + JVM_MaxObjectInspectionAge; + JVM_MaxMemory; + JVM_MonitorNotify; + JVM_MonitorNotifyAll; + JVM_MonitorWait; + JVM_NanoTime; + JVM_NativePath; + JVM_NewArray; + JVM_NewInstanceFromConstructor; + JVM_NewMultiArray; + JVM_OnExit; + JVM_Open; + JVM_RaiseSignal; + JVM_RawMonitorCreate; + JVM_RawMonitorDestroy; + JVM_RawMonitorEnter; + JVM_RawMonitorExit; + JVM_Read; + JVM_Recv; + JVM_RecvFrom; + JVM_RegisterSignal; + JVM_ReleaseUTF; + JVM_ResolveClass; + JVM_ResumeThread; + JVM_Send; + JVM_SendTo; + JVM_SetArrayElement; + JVM_SetClassSigners; + JVM_SetLength; + JVM_SetNativeThreadName; + JVM_SetPrimitiveArrayElement; + JVM_SetSockOpt; + JVM_SetThreadPriority; + JVM_Sleep; + JVM_Socket; + JVM_SocketAvailable; + JVM_SocketClose; + JVM_SocketShutdown; + JVM_StartThread; + JVM_StopThread; + JVM_SuspendThread; + JVM_SupportsCX8; + JVM_Sync; + JVM_Timeout; + JVM_TotalMemory; + JVM_TraceInstructions; + JVM_TraceMethodCalls; + JVM_UnloadLibrary; + JVM_Write; + JVM_Yield; + JVM_handle_linux_signal; # miscellaneous functions - _jio_fprintf - _jio_printf - _jio_snprintf - _jio_vfprintf - _jio_vsnprintf + jio_fprintf; + jio_printf; + jio_snprintf; + jio_vfprintf; + jio_vsnprintf; + fork1; + numa_warn; + numa_error; + + # Needed because there is no JVM interface for this. + sysThreadAvailableStackWithSlack; # This is for Forte Analyzer profiling support. - _AsyncGetCallTrace + AsyncGetCallTrace; - # INSERT VTABLE SYMBOLS HERE + # INSERT VTABLE SYMBOLS HERE + + local: + *; +}; diff --git a/hotspot/make/bsd/makefiles/optimized.make b/hotspot/make/bsd/makefiles/optimized.make index 6930997923e..c89c3461ea5 100644 --- a/hotspot/make/bsd/makefiles/optimized.make +++ b/hotspot/make/bsd/makefiles/optimized.make @@ -39,5 +39,8 @@ CFLAGS$(HOTSPARC_GENERIC) += $(OPT_CFLAGS/BYFILE) # Linker mapfile MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug +ifeq ($(OS_VENDOR), Darwin) +MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-darwin-debug +endif VERSION = optimized diff --git a/hotspot/make/bsd/makefiles/product.make b/hotspot/make/bsd/makefiles/product.make index 55515469311..c67528eec79 100644 --- a/hotspot/make/bsd/makefiles/product.make +++ b/hotspot/make/bsd/makefiles/product.make @@ -39,6 +39,9 @@ CFLAGS$(HOTSPARC_GENERIC) += $(OPT_CFLAGS/BYFILE) # Linker mapfile MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-product +ifeq ($(OS_VENDOR), Darwin) +MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-darwin-product +endif SYSDEFS += -DPRODUCT VERSION = optimized From d4c9d3889b924c80bac2a33fe35e1d4f4dff792e Mon Sep 17 00:00:00 2001 From: Shrinivas Joshi Date: Tue, 14 Jan 2014 17:46:48 -0800 Subject: [PATCH 029/158] 8002074: Support for AES on SPARC Add intrinsics/stub routines support for single-block and multi-block (as used by Cipher Block Chaining mode) AES encryption and decryption operations on the SPARC platform. Reviewed-by: kvn, roland --- hotspot/src/cpu/sparc/vm/assembler_sparc.hpp | 106 ++- hotspot/src/cpu/sparc/vm/sparc.ad | 6 + .../src/cpu/sparc/vm/stubGenerator_sparc.cpp | 777 ++++++++++++++++++ hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp | 38 +- hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp | 5 +- .../src/cpu/x86/vm/stubGenerator_x86_32.cpp | 10 +- .../src/cpu/x86/vm/stubGenerator_x86_64.cpp | 23 +- hotspot/src/cpu/x86/vm/x86.ad | 6 + .../vm/vm_version_solaris_sparc.cpp | 5 + hotspot/src/share/vm/classfile/vmSymbols.hpp | 2 +- hotspot/src/share/vm/opto/library_call.cpp | 59 +- hotspot/src/share/vm/opto/matcher.hpp | 3 + hotspot/src/share/vm/opto/runtime.cpp | 18 +- .../test/compiler/7184394/TestAESMain.java | 18 +- 14 files changed, 1022 insertions(+), 54 deletions(-) diff --git a/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp b/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp index ccbc43e5a92..11547cde98f 100644 --- a/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp +++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp @@ -88,6 +88,7 @@ class Assembler : public AbstractAssembler { orncc_op3 = 0x16, xnorcc_op3 = 0x17, addccc_op3 = 0x18, + aes4_op3 = 0x19, umulcc_op3 = 0x1a, smulcc_op3 = 0x1b, subccc_op3 = 0x1c, @@ -121,6 +122,8 @@ class Assembler : public AbstractAssembler { fpop1_op3 = 0x34, fpop2_op3 = 0x35, impdep1_op3 = 0x36, + aes3_op3 = 0x36, + flog3_op3 = 0x36, impdep2_op3 = 0x37, jmpl_op3 = 0x38, rett_op3 = 0x39, @@ -172,41 +175,56 @@ class Assembler : public AbstractAssembler { enum opfs { // selected opfs - fmovs_opf = 0x01, - fmovd_opf = 0x02, + fmovs_opf = 0x01, + fmovd_opf = 0x02, - fnegs_opf = 0x05, - fnegd_opf = 0x06, + fnegs_opf = 0x05, + fnegd_opf = 0x06, - fadds_opf = 0x41, - faddd_opf = 0x42, - fsubs_opf = 0x45, - fsubd_opf = 0x46, + fadds_opf = 0x41, + faddd_opf = 0x42, + fsubs_opf = 0x45, + fsubd_opf = 0x46, - fmuls_opf = 0x49, - fmuld_opf = 0x4a, - fdivs_opf = 0x4d, - fdivd_opf = 0x4e, + fmuls_opf = 0x49, + fmuld_opf = 0x4a, + fdivs_opf = 0x4d, + fdivd_opf = 0x4e, - fcmps_opf = 0x51, - fcmpd_opf = 0x52, + fcmps_opf = 0x51, + fcmpd_opf = 0x52, - fstox_opf = 0x81, - fdtox_opf = 0x82, - fxtos_opf = 0x84, - fxtod_opf = 0x88, - fitos_opf = 0xc4, - fdtos_opf = 0xc6, - fitod_opf = 0xc8, - fstod_opf = 0xc9, - fstoi_opf = 0xd1, - fdtoi_opf = 0xd2, + fstox_opf = 0x81, + fdtox_opf = 0x82, + fxtos_opf = 0x84, + fxtod_opf = 0x88, + fitos_opf = 0xc4, + fdtos_opf = 0xc6, + fitod_opf = 0xc8, + fstod_opf = 0xc9, + fstoi_opf = 0xd1, + fdtoi_opf = 0xd2, - mdtox_opf = 0x110, - mstouw_opf = 0x111, - mstosw_opf = 0x113, - mxtod_opf = 0x118, - mwtos_opf = 0x119 + mdtox_opf = 0x110, + mstouw_opf = 0x111, + mstosw_opf = 0x113, + mxtod_opf = 0x118, + mwtos_opf = 0x119, + + aes_kexpand0_opf = 0x130, + aes_kexpand2_opf = 0x131 + }; + + enum op5s { + aes_eround01_op5 = 0x00, + aes_eround23_op5 = 0x01, + aes_dround01_op5 = 0x02, + aes_dround23_op5 = 0x03, + aes_eround01_l_op5 = 0x04, + aes_eround23_l_op5 = 0x05, + aes_dround01_l_op5 = 0x06, + aes_dround23_l_op5 = 0x07, + aes_kexpand1_op5 = 0x08 }; enum RCondition { rc_z = 1, rc_lez = 2, rc_lz = 3, rc_nz = 5, rc_gz = 6, rc_gez = 7, rc_last = rc_gez }; @@ -427,6 +445,7 @@ class Assembler : public AbstractAssembler { static int immed( bool i) { return u_field(i ? 1 : 0, 13, 13); } static int opf_low6( int w) { return u_field(w, 10, 5); } static int opf_low5( int w) { return u_field(w, 9, 5); } + static int op5( int x) { return u_field(x, 8, 5); } static int trapcc( CC cc) { return u_field(cc, 12, 11); } static int sx( int i) { return u_field(i, 12, 12); } // shift x=1 means 64-bit static int opf( int x) { return u_field(x, 13, 5); } @@ -451,6 +470,7 @@ class Assembler : public AbstractAssembler { static int fd( FloatRegister r, FloatRegisterImpl::Width fwa) { return u_field(r->encoding(fwa), 29, 25); }; static int fs1(FloatRegister r, FloatRegisterImpl::Width fwa) { return u_field(r->encoding(fwa), 18, 14); }; static int fs2(FloatRegister r, FloatRegisterImpl::Width fwa) { return u_field(r->encoding(fwa), 4, 0); }; + static int fs3(FloatRegister r, FloatRegisterImpl::Width fwa) { return u_field(r->encoding(fwa), 13, 9); }; // some float instructions use this encoding on the op3 field static int alt_op3(int op, FloatRegisterImpl::Width w) { @@ -559,6 +579,12 @@ class Assembler : public AbstractAssembler { return x & ((1 << 10) - 1); } + // AES crypto instructions supported only on certain processors + static void aes_only() { assert( VM_Version::has_aes(), "This instruction only works on SPARC with AES instructions support"); } + + // instruction only in VIS1 + static void vis1_only() { assert( VM_Version::has_vis1(), "This instruction only works on SPARC with VIS1"); } + // instruction only in VIS3 static void vis3_only() { assert( VM_Version::has_vis3(), "This instruction only works on SPARC with VIS3"); } @@ -682,6 +708,24 @@ public: void addccc( Register s1, int simm13a, Register d ) { emit_int32( op(arith_op) | rd(d) | op3(addc_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13) ); } + // 4-operand AES instructions + + void aes_eround01( FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d ) { aes_only(); emit_int32( op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_eround01_op5) | fs2(s2, FloatRegisterImpl::D) ); } + void aes_eround23( FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d ) { aes_only(); emit_int32( op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_eround23_op5) | fs2(s2, FloatRegisterImpl::D) ); } + void aes_dround01( FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d ) { aes_only(); emit_int32( op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_dround01_op5) | fs2(s2, FloatRegisterImpl::D) ); } + void aes_dround23( FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d ) { aes_only(); emit_int32( op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_dround23_op5) | fs2(s2, FloatRegisterImpl::D) ); } + void aes_eround01_l( FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d ) { aes_only(); emit_int32( op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_eround01_l_op5) | fs2(s2, FloatRegisterImpl::D) ); } + void aes_eround23_l( FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d ) { aes_only(); emit_int32( op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_eround23_l_op5) | fs2(s2, FloatRegisterImpl::D) ); } + void aes_dround01_l( FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d ) { aes_only(); emit_int32( op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_dround01_l_op5) | fs2(s2, FloatRegisterImpl::D) ); } + void aes_dround23_l( FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d ) { aes_only(); emit_int32( op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_dround23_l_op5) | fs2(s2, FloatRegisterImpl::D) ); } + void aes_kexpand1( FloatRegister s1, FloatRegister s2, int imm5a, FloatRegister d ) { aes_only(); emit_int32( op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | u_field(imm5a, 13, 9) | op5(aes_kexpand1_op5) | fs2(s2, FloatRegisterImpl::D) ); } + + + // 3-operand AES instructions + + void aes_kexpand0( FloatRegister s1, FloatRegister s2, FloatRegister d ) { aes_only(); emit_int32( op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes3_op3) | fs1(s1, FloatRegisterImpl::D) | opf(aes_kexpand0_opf) | fs2(s2, FloatRegisterImpl::D) ); } + void aes_kexpand2( FloatRegister s1, FloatRegister s2, FloatRegister d ) { aes_only(); emit_int32( op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes3_op3) | fs1(s1, FloatRegisterImpl::D) | opf(aes_kexpand2_opf) | fs2(s2, FloatRegisterImpl::D) ); } + // pp 136 inline void bpr(RCondition c, bool a, Predict p, Register s1, address d, relocInfo::relocType rt = relocInfo::none); @@ -784,6 +828,10 @@ public: void fmul( FloatRegisterImpl::Width sw, FloatRegisterImpl::Width dw, FloatRegister s1, FloatRegister s2, FloatRegister d ) { emit_int32( op(arith_op) | fd(d, dw) | op3(fpop1_op3) | fs1(s1, sw) | opf(0x60 + sw + dw*4) | fs2(s2, sw)); } void fdiv( FloatRegisterImpl::Width w, FloatRegister s1, FloatRegister s2, FloatRegister d ) { emit_int32( op(arith_op) | fd(d, w) | op3(fpop1_op3) | fs1(s1, w) | opf(0x4c + w) | fs2(s2, w)); } + // FXORs/FXORd instructions + + void fxor( FloatRegisterImpl::Width w, FloatRegister s1, FloatRegister s2, FloatRegister d ) { vis1_only(); emit_int32( op(arith_op) | fd(d, w) | op3(flog3_op3) | fs1(s1, w) | opf(0x6E - w) | fs2(s2, w)); } + // pp 164 void fsqrt( FloatRegisterImpl::Width w, FloatRegister s, FloatRegister d ) { emit_int32( op(arith_op) | fd(d, w) | op3(fpop1_op3) | opf(0x28 + w) | fs2(s, w)); } diff --git a/hotspot/src/cpu/sparc/vm/sparc.ad b/hotspot/src/cpu/sparc/vm/sparc.ad index 19283874280..938993b4285 100644 --- a/hotspot/src/cpu/sparc/vm/sparc.ad +++ b/hotspot/src/cpu/sparc/vm/sparc.ad @@ -1848,6 +1848,12 @@ const bool Matcher::misaligned_vectors_ok() { return false; } +// Current (2013) SPARC platforms need to read original key +// to construct decryption expanded key +const bool Matcher::pass_original_key_for_aes() { + return true; +} + // USII supports fxtof through the whole range of number, USIII doesn't const bool Matcher::convL2FSupported(void) { return VM_Version::has_fast_fxtof(); diff --git a/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp index b9911828174..25023404db8 100644 --- a/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp @@ -3304,6 +3304,775 @@ class StubGenerator: public StubCodeGenerator { } } + address generate_aescrypt_encryptBlock() { + __ align(CodeEntryAlignment); + StubCodeMark mark(this, "StubRoutines", "aesencryptBlock"); + Label L_doLast128bit, L_storeOutput; + address start = __ pc(); + Register from = O0; // source byte array + Register to = O1; // destination byte array + Register key = O2; // expanded key array + const Register keylen = O4; //reg for storing expanded key array length + + // read expanded key length + __ ldsw(Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)), keylen, 0); + + // load input into F54-F56; F30-F31 used as temp + __ ldf(FloatRegisterImpl::S, from, 0, F30); + __ ldf(FloatRegisterImpl::S, from, 4, F31); + __ fmov(FloatRegisterImpl::D, F30, F54); + __ ldf(FloatRegisterImpl::S, from, 8, F30); + __ ldf(FloatRegisterImpl::S, from, 12, F31); + __ fmov(FloatRegisterImpl::D, F30, F56); + + // load expanded key + for ( int i = 0; i <= 38; i += 2 ) { + __ ldf(FloatRegisterImpl::D, key, i*4, as_FloatRegister(i)); + } + + // perform cipher transformation + __ fxor(FloatRegisterImpl::D, F0, F54, F54); + __ fxor(FloatRegisterImpl::D, F2, F56, F56); + // rounds 1 through 8 + for ( int i = 4; i <= 28; i += 8 ) { + __ aes_eround01(as_FloatRegister(i), F54, F56, F58); + __ aes_eround23(as_FloatRegister(i+2), F54, F56, F60); + __ aes_eround01(as_FloatRegister(i+4), F58, F60, F54); + __ aes_eround23(as_FloatRegister(i+6), F58, F60, F56); + } + __ aes_eround01(F36, F54, F56, F58); //round 9 + __ aes_eround23(F38, F54, F56, F60); + + // 128-bit original key size + __ cmp_and_brx_short(keylen, 44, Assembler::equal, Assembler::pt, L_doLast128bit); + + for ( int i = 40; i <= 50; i += 2 ) { + __ ldf(FloatRegisterImpl::D, key, i*4, as_FloatRegister(i) ); + } + __ aes_eround01(F40, F58, F60, F54); //round 10 + __ aes_eround23(F42, F58, F60, F56); + __ aes_eround01(F44, F54, F56, F58); //round 11 + __ aes_eround23(F46, F54, F56, F60); + + // 192-bit original key size + __ cmp_and_brx_short(keylen, 52, Assembler::equal, Assembler::pt, L_storeOutput); + + __ ldf(FloatRegisterImpl::D, key, 208, F52); + __ aes_eround01(F48, F58, F60, F54); //round 12 + __ aes_eround23(F50, F58, F60, F56); + __ ldf(FloatRegisterImpl::D, key, 216, F46); + __ ldf(FloatRegisterImpl::D, key, 224, F48); + __ ldf(FloatRegisterImpl::D, key, 232, F50); + __ aes_eround01(F52, F54, F56, F58); //round 13 + __ aes_eround23(F46, F54, F56, F60); + __ br(Assembler::always, false, Assembler::pt, L_storeOutput); + __ delayed()->nop(); + + __ BIND(L_doLast128bit); + __ ldf(FloatRegisterImpl::D, key, 160, F48); + __ ldf(FloatRegisterImpl::D, key, 168, F50); + + __ BIND(L_storeOutput); + // perform last round of encryption common for all key sizes + __ aes_eround01_l(F48, F58, F60, F54); //last round + __ aes_eround23_l(F50, F58, F60, F56); + + // store output into the destination array, F0-F1 used as temp + __ fmov(FloatRegisterImpl::D, F54, F0); + __ stf(FloatRegisterImpl::S, F0, to, 0); + __ stf(FloatRegisterImpl::S, F1, to, 4); + __ fmov(FloatRegisterImpl::D, F56, F0); + __ stf(FloatRegisterImpl::S, F0, to, 8); + __ retl(); + __ delayed()->stf(FloatRegisterImpl::S, F1, to, 12); + + return start; + } + + address generate_aescrypt_decryptBlock() { + __ align(CodeEntryAlignment); + StubCodeMark mark(this, "StubRoutines", "aesdecryptBlock"); + address start = __ pc(); + Label L_expand192bit, L_expand256bit, L_common_transform; + Register from = O0; // source byte array + Register to = O1; // destination byte array + Register key = O2; // expanded key array + Register original_key = O3; // original key array only required during decryption + const Register keylen = O4; // reg for storing expanded key array length + + // read expanded key array length + __ ldsw(Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)), keylen, 0); + + // load input into F52-F54; F30,F31 used as temp + __ ldf(FloatRegisterImpl::S, from, 0, F30); + __ ldf(FloatRegisterImpl::S, from, 4, F31); + __ fmov(FloatRegisterImpl::D, F30, F52); + __ ldf(FloatRegisterImpl::S, from, 8, F30); + __ ldf(FloatRegisterImpl::S, from, 12, F31); + __ fmov(FloatRegisterImpl::D, F30, F54); + + // load original key from SunJCE expanded decryption key + for ( int i = 0; i <= 3; i++ ) { + __ ldf(FloatRegisterImpl::S, original_key, i*4, as_FloatRegister(i)); + } + + // 256-bit original key size + __ cmp_and_brx_short(keylen, 60, Assembler::equal, Assembler::pn, L_expand256bit); + + // 192-bit original key size + __ cmp_and_brx_short(keylen, 52, Assembler::equal, Assembler::pn, L_expand192bit); + + // 128-bit original key size + // perform key expansion since SunJCE decryption-key expansion is not compatible with SPARC crypto instructions + for ( int i = 0; i <= 36; i += 4 ) { + __ aes_kexpand1(as_FloatRegister(i), as_FloatRegister(i+2), i/4, as_FloatRegister(i+4)); + __ aes_kexpand2(as_FloatRegister(i+2), as_FloatRegister(i+4), as_FloatRegister(i+6)); + } + + // perform 128-bit key specific inverse cipher transformation + __ fxor(FloatRegisterImpl::D, F42, F54, F54); + __ fxor(FloatRegisterImpl::D, F40, F52, F52); + __ br(Assembler::always, false, Assembler::pt, L_common_transform); + __ delayed()->nop(); + + __ BIND(L_expand192bit); + + // start loading rest of the 192-bit key + __ ldf(FloatRegisterImpl::S, original_key, 16, F4); + __ ldf(FloatRegisterImpl::S, original_key, 20, F5); + + // perform key expansion since SunJCE decryption-key expansion is not compatible with SPARC crypto instructions + for ( int i = 0; i <= 36; i += 6 ) { + __ aes_kexpand1(as_FloatRegister(i), as_FloatRegister(i+4), i/6, as_FloatRegister(i+6)); + __ aes_kexpand2(as_FloatRegister(i+2), as_FloatRegister(i+6), as_FloatRegister(i+8)); + __ aes_kexpand2(as_FloatRegister(i+4), as_FloatRegister(i+8), as_FloatRegister(i+10)); + } + __ aes_kexpand1(F42, F46, 7, F48); + __ aes_kexpand2(F44, F48, F50); + + // perform 192-bit key specific inverse cipher transformation + __ fxor(FloatRegisterImpl::D, F50, F54, F54); + __ fxor(FloatRegisterImpl::D, F48, F52, F52); + __ aes_dround23(F46, F52, F54, F58); + __ aes_dround01(F44, F52, F54, F56); + __ aes_dround23(F42, F56, F58, F54); + __ aes_dround01(F40, F56, F58, F52); + __ br(Assembler::always, false, Assembler::pt, L_common_transform); + __ delayed()->nop(); + + __ BIND(L_expand256bit); + + // load rest of the 256-bit key + for ( int i = 4; i <= 7; i++ ) { + __ ldf(FloatRegisterImpl::S, original_key, i*4, as_FloatRegister(i)); + } + + // perform key expansion since SunJCE decryption-key expansion is not compatible with SPARC crypto instructions + for ( int i = 0; i <= 40; i += 8 ) { + __ aes_kexpand1(as_FloatRegister(i), as_FloatRegister(i+6), i/8, as_FloatRegister(i+8)); + __ aes_kexpand2(as_FloatRegister(i+2), as_FloatRegister(i+8), as_FloatRegister(i+10)); + __ aes_kexpand0(as_FloatRegister(i+4), as_FloatRegister(i+10), as_FloatRegister(i+12)); + __ aes_kexpand2(as_FloatRegister(i+6), as_FloatRegister(i+12), as_FloatRegister(i+14)); + } + __ aes_kexpand1(F48, F54, 6, F56); + __ aes_kexpand2(F50, F56, F58); + + for ( int i = 0; i <= 6; i += 2 ) { + __ fmov(FloatRegisterImpl::D, as_FloatRegister(58-i), as_FloatRegister(i)); + } + + // load input into F52-F54 + __ ldf(FloatRegisterImpl::D, from, 0, F52); + __ ldf(FloatRegisterImpl::D, from, 8, F54); + + // perform 256-bit key specific inverse cipher transformation + __ fxor(FloatRegisterImpl::D, F0, F54, F54); + __ fxor(FloatRegisterImpl::D, F2, F52, F52); + __ aes_dround23(F4, F52, F54, F58); + __ aes_dround01(F6, F52, F54, F56); + __ aes_dround23(F50, F56, F58, F54); + __ aes_dround01(F48, F56, F58, F52); + __ aes_dround23(F46, F52, F54, F58); + __ aes_dround01(F44, F52, F54, F56); + __ aes_dround23(F42, F56, F58, F54); + __ aes_dround01(F40, F56, F58, F52); + + for ( int i = 0; i <= 7; i++ ) { + __ ldf(FloatRegisterImpl::S, original_key, i*4, as_FloatRegister(i)); + } + + // perform inverse cipher transformations common for all key sizes + __ BIND(L_common_transform); + for ( int i = 38; i >= 6; i -= 8 ) { + __ aes_dround23(as_FloatRegister(i), F52, F54, F58); + __ aes_dround01(as_FloatRegister(i-2), F52, F54, F56); + if ( i != 6) { + __ aes_dround23(as_FloatRegister(i-4), F56, F58, F54); + __ aes_dround01(as_FloatRegister(i-6), F56, F58, F52); + } else { + __ aes_dround23_l(as_FloatRegister(i-4), F56, F58, F54); + __ aes_dround01_l(as_FloatRegister(i-6), F56, F58, F52); + } + } + + // store output to destination array, F0-F1 used as temp + __ fmov(FloatRegisterImpl::D, F52, F0); + __ stf(FloatRegisterImpl::S, F0, to, 0); + __ stf(FloatRegisterImpl::S, F1, to, 4); + __ fmov(FloatRegisterImpl::D, F54, F0); + __ stf(FloatRegisterImpl::S, F0, to, 8); + __ retl(); + __ delayed()->stf(FloatRegisterImpl::S, F1, to, 12); + + return start; + } + + address generate_cipherBlockChaining_encryptAESCrypt() { + __ align(CodeEntryAlignment); + StubCodeMark mark(this, "StubRoutines", "cipherBlockChaining_encryptAESCrypt"); + Label L_cbcenc128, L_cbcenc192, L_cbcenc256; + address start = __ pc(); + Register from = O0; // source byte array + Register to = O1; // destination byte array + Register key = O2; // expanded key array + Register rvec = O3; // init vector + const Register len_reg = O4; // cipher length + const Register keylen = O5; // reg for storing expanded key array length + + // save cipher len to return in the end + __ mov(len_reg, L1); + + // read expanded key length + __ ldsw(Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)), keylen, 0); + + // load init vector + __ ldf(FloatRegisterImpl::D, rvec, 0, F60); + __ ldf(FloatRegisterImpl::D, rvec, 8, F62); + __ ldx(key,0,G1); + __ ldx(key,8,G2); + + // start loading expanded key + for ( int i = 0, j = 16; i <= 38; i += 2, j += 8 ) { + __ ldf(FloatRegisterImpl::D, key, j, as_FloatRegister(i)); + } + + // 128-bit original key size + __ cmp_and_brx_short(keylen, 44, Assembler::equal, Assembler::pt, L_cbcenc128); + + for ( int i = 40, j = 176; i <= 46; i += 2, j += 8 ) { + __ ldf(FloatRegisterImpl::D, key, j, as_FloatRegister(i)); + } + + // 192-bit original key size + __ cmp_and_brx_short(keylen, 52, Assembler::equal, Assembler::pt, L_cbcenc192); + + for ( int i = 48, j = 208; i <= 54; i += 2, j += 8 ) { + __ ldf(FloatRegisterImpl::D, key, j, as_FloatRegister(i)); + } + + // 256-bit original key size + __ br(Assembler::always, false, Assembler::pt, L_cbcenc256); + __ delayed()->nop(); + + __ align(OptoLoopAlignment); + __ BIND(L_cbcenc128); + __ ldx(from,0,G3); + __ ldx(from,8,G4); + __ xor3(G1,G3,G3); + __ xor3(G2,G4,G4); + __ movxtod(G3,F56); + __ movxtod(G4,F58); + __ fxor(FloatRegisterImpl::D, F60, F56, F60); + __ fxor(FloatRegisterImpl::D, F62, F58, F62); + + // TEN_EROUNDS + for ( int i = 0; i <= 32; i += 8 ) { + __ aes_eround01(as_FloatRegister(i), F60, F62, F56); + __ aes_eround23(as_FloatRegister(i+2), F60, F62, F58); + if (i != 32 ) { + __ aes_eround01(as_FloatRegister(i+4), F56, F58, F60); + __ aes_eround23(as_FloatRegister(i+6), F56, F58, F62); + } else { + __ aes_eround01_l(as_FloatRegister(i+4), F56, F58, F60); + __ aes_eround23_l(as_FloatRegister(i+6), F56, F58, F62); + } + } + + __ stf(FloatRegisterImpl::D, F60, to, 0); + __ stf(FloatRegisterImpl::D, F62, to, 8); + __ add(from, 16, from); + __ add(to, 16, to); + __ subcc(len_reg, 16, len_reg); + __ br(Assembler::notEqual, false, Assembler::pt, L_cbcenc128); + __ delayed()->nop(); + __ stf(FloatRegisterImpl::D, F60, rvec, 0); + __ stf(FloatRegisterImpl::D, F62, rvec, 8); + __ retl(); + __ delayed()->mov(L1, O0); + + __ align(OptoLoopAlignment); + __ BIND(L_cbcenc192); + __ ldx(from,0,G3); + __ ldx(from,8,G4); + __ xor3(G1,G3,G3); + __ xor3(G2,G4,G4); + __ movxtod(G3,F56); + __ movxtod(G4,F58); + __ fxor(FloatRegisterImpl::D, F60, F56, F60); + __ fxor(FloatRegisterImpl::D, F62, F58, F62); + + // TWELEVE_EROUNDS + for ( int i = 0; i <= 40; i += 8 ) { + __ aes_eround01(as_FloatRegister(i), F60, F62, F56); + __ aes_eround23(as_FloatRegister(i+2), F60, F62, F58); + if (i != 40 ) { + __ aes_eround01(as_FloatRegister(i+4), F56, F58, F60); + __ aes_eround23(as_FloatRegister(i+6), F56, F58, F62); + } else { + __ aes_eround01_l(as_FloatRegister(i+4), F56, F58, F60); + __ aes_eround23_l(as_FloatRegister(i+6), F56, F58, F62); + } + } + + __ stf(FloatRegisterImpl::D, F60, to, 0); + __ stf(FloatRegisterImpl::D, F62, to, 8); + __ add(from, 16, from); + __ subcc(len_reg, 16, len_reg); + __ add(to, 16, to); + __ br(Assembler::notEqual, false, Assembler::pt, L_cbcenc192); + __ delayed()->nop(); + __ stf(FloatRegisterImpl::D, F60, rvec, 0); + __ stf(FloatRegisterImpl::D, F62, rvec, 8); + __ retl(); + __ delayed()->mov(L1, O0); + + __ align(OptoLoopAlignment); + __ BIND(L_cbcenc256); + __ ldx(from,0,G3); + __ ldx(from,8,G4); + __ xor3(G1,G3,G3); + __ xor3(G2,G4,G4); + __ movxtod(G3,F56); + __ movxtod(G4,F58); + __ fxor(FloatRegisterImpl::D, F60, F56, F60); + __ fxor(FloatRegisterImpl::D, F62, F58, F62); + + // FOURTEEN_EROUNDS + for ( int i = 0; i <= 48; i += 8 ) { + __ aes_eround01(as_FloatRegister(i), F60, F62, F56); + __ aes_eround23(as_FloatRegister(i+2), F60, F62, F58); + if (i != 48 ) { + __ aes_eround01(as_FloatRegister(i+4), F56, F58, F60); + __ aes_eround23(as_FloatRegister(i+6), F56, F58, F62); + } else { + __ aes_eround01_l(as_FloatRegister(i+4), F56, F58, F60); + __ aes_eround23_l(as_FloatRegister(i+6), F56, F58, F62); + } + } + + __ stf(FloatRegisterImpl::D, F60, to, 0); + __ stf(FloatRegisterImpl::D, F62, to, 8); + __ add(from, 16, from); + __ subcc(len_reg, 16, len_reg); + __ add(to, 16, to); + __ br(Assembler::notEqual, false, Assembler::pt, L_cbcenc256); + __ delayed()->nop(); + __ stf(FloatRegisterImpl::D, F60, rvec, 0); + __ stf(FloatRegisterImpl::D, F62, rvec, 8); + __ retl(); + __ delayed()->mov(L1, O0); + + return start; + } + + address generate_cipherBlockChaining_decryptAESCrypt_Parallel() { + __ align(CodeEntryAlignment); + StubCodeMark mark(this, "StubRoutines", "cipherBlockChaining_decryptAESCrypt"); + Label L_cbcdec_end, L_expand192bit, L_expand256bit, L_dec_first_block_start; + Label L_dec_first_block128, L_dec_first_block192, L_dec_next2_blocks128, L_dec_next2_blocks192, L_dec_next2_blocks256; + address start = __ pc(); + Register from = I0; // source byte array + Register to = I1; // destination byte array + Register key = I2; // expanded key array + Register rvec = I3; // init vector + const Register len_reg = I4; // cipher length + const Register original_key = I5; // original key array only required during decryption + const Register keylen = L6; // reg for storing expanded key array length + + // save cipher len before save_frame, to return in the end + __ mov(O4, L0); + __ save_frame(0); //args are read from I* registers since we save the frame in the beginning + + // load original key from SunJCE expanded decryption key + for ( int i = 0; i <= 3; i++ ) { + __ ldf(FloatRegisterImpl::S, original_key, i*4, as_FloatRegister(i)); + } + + // load initial vector + __ ldx(rvec,0,L0); + __ ldx(rvec,8,L1); + + // read expanded key array length + __ ldsw(Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)), keylen, 0); + + // 256-bit original key size + __ cmp_and_brx_short(keylen, 60, Assembler::equal, Assembler::pn, L_expand256bit); + + // 192-bit original key size + __ cmp_and_brx_short(keylen, 52, Assembler::equal, Assembler::pn, L_expand192bit); + + // 128-bit original key size + // perform key expansion since SunJCE decryption-key expansion is not compatible with SPARC crypto instructions + for ( int i = 0; i <= 36; i += 4 ) { + __ aes_kexpand1(as_FloatRegister(i), as_FloatRegister(i+2), i/4, as_FloatRegister(i+4)); + __ aes_kexpand2(as_FloatRegister(i+2), as_FloatRegister(i+4), as_FloatRegister(i+6)); + } + + // load expanded key[last-1] and key[last] elements + __ movdtox(F40,L2); + __ movdtox(F42,L3); + + __ and3(len_reg, 16, L4); + __ br_null(L4, false, Assembler::pt, L_dec_next2_blocks128); + __ delayed()->nop(); + + __ br(Assembler::always, false, Assembler::pt, L_dec_first_block_start); + __ delayed()->nop(); + + __ BIND(L_expand192bit); + // load rest of the 192-bit key + __ ldf(FloatRegisterImpl::S, original_key, 16, F4); + __ ldf(FloatRegisterImpl::S, original_key, 20, F5); + + // perform key expansion since SunJCE decryption-key expansion is not compatible with SPARC crypto instructions + for ( int i = 0; i <= 36; i += 6 ) { + __ aes_kexpand1(as_FloatRegister(i), as_FloatRegister(i+4), i/6, as_FloatRegister(i+6)); + __ aes_kexpand2(as_FloatRegister(i+2), as_FloatRegister(i+6), as_FloatRegister(i+8)); + __ aes_kexpand2(as_FloatRegister(i+4), as_FloatRegister(i+8), as_FloatRegister(i+10)); + } + __ aes_kexpand1(F42, F46, 7, F48); + __ aes_kexpand2(F44, F48, F50); + + // load expanded key[last-1] and key[last] elements + __ movdtox(F48,L2); + __ movdtox(F50,L3); + + __ and3(len_reg, 16, L4); + __ br_null(L4, false, Assembler::pt, L_dec_next2_blocks192); + __ delayed()->nop(); + + __ br(Assembler::always, false, Assembler::pt, L_dec_first_block_start); + __ delayed()->nop(); + + __ BIND(L_expand256bit); + // load rest of the 256-bit key + for ( int i = 4; i <= 7; i++ ) { + __ ldf(FloatRegisterImpl::S, original_key, i*4, as_FloatRegister(i)); + } + + // perform key expansion since SunJCE decryption-key expansion is not compatible with SPARC crypto instructions + for ( int i = 0; i <= 40; i += 8 ) { + __ aes_kexpand1(as_FloatRegister(i), as_FloatRegister(i+6), i/8, as_FloatRegister(i+8)); + __ aes_kexpand2(as_FloatRegister(i+2), as_FloatRegister(i+8), as_FloatRegister(i+10)); + __ aes_kexpand0(as_FloatRegister(i+4), as_FloatRegister(i+10), as_FloatRegister(i+12)); + __ aes_kexpand2(as_FloatRegister(i+6), as_FloatRegister(i+12), as_FloatRegister(i+14)); + } + __ aes_kexpand1(F48, F54, 6, F56); + __ aes_kexpand2(F50, F56, F58); + + // load expanded key[last-1] and key[last] elements + __ movdtox(F56,L2); + __ movdtox(F58,L3); + + __ and3(len_reg, 16, L4); + __ br_null(L4, false, Assembler::pt, L_dec_next2_blocks256); + __ delayed()->nop(); + + __ BIND(L_dec_first_block_start); + __ ldx(from,0,L4); + __ ldx(from,8,L5); + __ xor3(L2,L4,G1); + __ movxtod(G1,F60); + __ xor3(L3,L5,G1); + __ movxtod(G1,F62); + + // 128-bit original key size + __ cmp_and_brx_short(keylen, 44, Assembler::equal, Assembler::pn, L_dec_first_block128); + + // 192-bit original key size + __ cmp_and_brx_short(keylen, 52, Assembler::equal, Assembler::pn, L_dec_first_block192); + + __ aes_dround23(F54, F60, F62, F58); + __ aes_dround01(F52, F60, F62, F56); + __ aes_dround23(F50, F56, F58, F62); + __ aes_dround01(F48, F56, F58, F60); + + __ BIND(L_dec_first_block192); + __ aes_dround23(F46, F60, F62, F58); + __ aes_dround01(F44, F60, F62, F56); + __ aes_dround23(F42, F56, F58, F62); + __ aes_dround01(F40, F56, F58, F60); + + __ BIND(L_dec_first_block128); + for ( int i = 38; i >= 6; i -= 8 ) { + __ aes_dround23(as_FloatRegister(i), F60, F62, F58); + __ aes_dround01(as_FloatRegister(i-2), F60, F62, F56); + if ( i != 6) { + __ aes_dround23(as_FloatRegister(i-4), F56, F58, F62); + __ aes_dround01(as_FloatRegister(i-6), F56, F58, F60); + } else { + __ aes_dround23_l(as_FloatRegister(i-4), F56, F58, F62); + __ aes_dround01_l(as_FloatRegister(i-6), F56, F58, F60); + } + } + + __ movxtod(L0,F56); + __ movxtod(L1,F58); + __ mov(L4,L0); + __ mov(L5,L1); + __ fxor(FloatRegisterImpl::D, F56, F60, F60); + __ fxor(FloatRegisterImpl::D, F58, F62, F62); + + __ stf(FloatRegisterImpl::D, F60, to, 0); + __ stf(FloatRegisterImpl::D, F62, to, 8); + + __ add(from, 16, from); + __ add(to, 16, to); + __ subcc(len_reg, 16, len_reg); + __ br(Assembler::equal, false, Assembler::pt, L_cbcdec_end); + __ delayed()->nop(); + + // 256-bit original key size + __ cmp_and_brx_short(keylen, 60, Assembler::equal, Assembler::pn, L_dec_next2_blocks256); + + // 192-bit original key size + __ cmp_and_brx_short(keylen, 52, Assembler::equal, Assembler::pn, L_dec_next2_blocks192); + + __ align(OptoLoopAlignment); + __ BIND(L_dec_next2_blocks128); + __ nop(); + + // F40:F42 used for first 16-bytes + __ ldx(from,0,G4); + __ ldx(from,8,G5); + __ xor3(L2,G4,G1); + __ movxtod(G1,F40); + __ xor3(L3,G5,G1); + __ movxtod(G1,F42); + + // F60:F62 used for next 16-bytes + __ ldx(from,16,L4); + __ ldx(from,24,L5); + __ xor3(L2,L4,G1); + __ movxtod(G1,F60); + __ xor3(L3,L5,G1); + __ movxtod(G1,F62); + + for ( int i = 38; i >= 6; i -= 8 ) { + __ aes_dround23(as_FloatRegister(i), F40, F42, F44); + __ aes_dround01(as_FloatRegister(i-2), F40, F42, F46); + __ aes_dround23(as_FloatRegister(i), F60, F62, F58); + __ aes_dround01(as_FloatRegister(i-2), F60, F62, F56); + if (i != 6 ) { + __ aes_dround23(as_FloatRegister(i-4), F46, F44, F42); + __ aes_dround01(as_FloatRegister(i-6), F46, F44, F40); + __ aes_dround23(as_FloatRegister(i-4), F56, F58, F62); + __ aes_dround01(as_FloatRegister(i-6), F56, F58, F60); + } else { + __ aes_dround23_l(as_FloatRegister(i-4), F46, F44, F42); + __ aes_dround01_l(as_FloatRegister(i-6), F46, F44, F40); + __ aes_dround23_l(as_FloatRegister(i-4), F56, F58, F62); + __ aes_dround01_l(as_FloatRegister(i-6), F56, F58, F60); + } + } + + __ movxtod(L0,F46); + __ movxtod(L1,F44); + __ fxor(FloatRegisterImpl::D, F46, F40, F40); + __ fxor(FloatRegisterImpl::D, F44, F42, F42); + + __ stf(FloatRegisterImpl::D, F40, to, 0); + __ stf(FloatRegisterImpl::D, F42, to, 8); + + __ movxtod(G4,F56); + __ movxtod(G5,F58); + __ mov(L4,L0); + __ mov(L5,L1); + __ fxor(FloatRegisterImpl::D, F56, F60, F60); + __ fxor(FloatRegisterImpl::D, F58, F62, F62); + + __ stf(FloatRegisterImpl::D, F60, to, 16); + __ stf(FloatRegisterImpl::D, F62, to, 24); + + __ add(from, 32, from); + __ add(to, 32, to); + __ subcc(len_reg, 32, len_reg); + __ br(Assembler::notEqual, false, Assembler::pt, L_dec_next2_blocks128); + __ delayed()->nop(); + __ br(Assembler::always, false, Assembler::pt, L_cbcdec_end); + __ delayed()->nop(); + + __ align(OptoLoopAlignment); + __ BIND(L_dec_next2_blocks192); + __ nop(); + + // F48:F50 used for first 16-bytes + __ ldx(from,0,G4); + __ ldx(from,8,G5); + __ xor3(L2,G4,G1); + __ movxtod(G1,F48); + __ xor3(L3,G5,G1); + __ movxtod(G1,F50); + + // F60:F62 used for next 16-bytes + __ ldx(from,16,L4); + __ ldx(from,24,L5); + __ xor3(L2,L4,G1); + __ movxtod(G1,F60); + __ xor3(L3,L5,G1); + __ movxtod(G1,F62); + + for ( int i = 46; i >= 6; i -= 8 ) { + __ aes_dround23(as_FloatRegister(i), F48, F50, F52); + __ aes_dround01(as_FloatRegister(i-2), F48, F50, F54); + __ aes_dround23(as_FloatRegister(i), F60, F62, F58); + __ aes_dround01(as_FloatRegister(i-2), F60, F62, F56); + if (i != 6 ) { + __ aes_dround23(as_FloatRegister(i-4), F54, F52, F50); + __ aes_dround01(as_FloatRegister(i-6), F54, F52, F48); + __ aes_dround23(as_FloatRegister(i-4), F56, F58, F62); + __ aes_dround01(as_FloatRegister(i-6), F56, F58, F60); + } else { + __ aes_dround23_l(as_FloatRegister(i-4), F54, F52, F50); + __ aes_dround01_l(as_FloatRegister(i-6), F54, F52, F48); + __ aes_dround23_l(as_FloatRegister(i-4), F56, F58, F62); + __ aes_dround01_l(as_FloatRegister(i-6), F56, F58, F60); + } + } + + __ movxtod(L0,F54); + __ movxtod(L1,F52); + __ fxor(FloatRegisterImpl::D, F54, F48, F48); + __ fxor(FloatRegisterImpl::D, F52, F50, F50); + + __ stf(FloatRegisterImpl::D, F48, to, 0); + __ stf(FloatRegisterImpl::D, F50, to, 8); + + __ movxtod(G4,F56); + __ movxtod(G5,F58); + __ mov(L4,L0); + __ mov(L5,L1); + __ fxor(FloatRegisterImpl::D, F56, F60, F60); + __ fxor(FloatRegisterImpl::D, F58, F62, F62); + + __ stf(FloatRegisterImpl::D, F60, to, 16); + __ stf(FloatRegisterImpl::D, F62, to, 24); + + __ add(from, 32, from); + __ add(to, 32, to); + __ subcc(len_reg, 32, len_reg); + __ br(Assembler::notEqual, false, Assembler::pt, L_dec_next2_blocks192); + __ delayed()->nop(); + __ br(Assembler::always, false, Assembler::pt, L_cbcdec_end); + __ delayed()->nop(); + + __ align(OptoLoopAlignment); + __ BIND(L_dec_next2_blocks256); + __ nop(); + + // F0:F2 used for first 16-bytes + __ ldx(from,0,G4); + __ ldx(from,8,G5); + __ xor3(L2,G4,G1); + __ movxtod(G1,F0); + __ xor3(L3,G5,G1); + __ movxtod(G1,F2); + + // F60:F62 used for next 16-bytes + __ ldx(from,16,L4); + __ ldx(from,24,L5); + __ xor3(L2,L4,G1); + __ movxtod(G1,F60); + __ xor3(L3,L5,G1); + __ movxtod(G1,F62); + + __ aes_dround23(F54, F0, F2, F4); + __ aes_dround01(F52, F0, F2, F6); + __ aes_dround23(F54, F60, F62, F58); + __ aes_dround01(F52, F60, F62, F56); + __ aes_dround23(F50, F6, F4, F2); + __ aes_dround01(F48, F6, F4, F0); + __ aes_dround23(F50, F56, F58, F62); + __ aes_dround01(F48, F56, F58, F60); + // save F48:F54 in temp registers + __ movdtox(F54,G2); + __ movdtox(F52,G3); + __ movdtox(F50,G6); + __ movdtox(F48,G1); + for ( int i = 46; i >= 14; i -= 8 ) { + __ aes_dround23(as_FloatRegister(i), F0, F2, F4); + __ aes_dround01(as_FloatRegister(i-2), F0, F2, F6); + __ aes_dround23(as_FloatRegister(i), F60, F62, F58); + __ aes_dround01(as_FloatRegister(i-2), F60, F62, F56); + __ aes_dround23(as_FloatRegister(i-4), F6, F4, F2); + __ aes_dround01(as_FloatRegister(i-6), F6, F4, F0); + __ aes_dround23(as_FloatRegister(i-4), F56, F58, F62); + __ aes_dround01(as_FloatRegister(i-6), F56, F58, F60); + } + // init F48:F54 with F0:F6 values (original key) + __ ldf(FloatRegisterImpl::D, original_key, 0, F48); + __ ldf(FloatRegisterImpl::D, original_key, 8, F50); + __ ldf(FloatRegisterImpl::D, original_key, 16, F52); + __ ldf(FloatRegisterImpl::D, original_key, 24, F54); + __ aes_dround23(F54, F0, F2, F4); + __ aes_dround01(F52, F0, F2, F6); + __ aes_dround23(F54, F60, F62, F58); + __ aes_dround01(F52, F60, F62, F56); + __ aes_dround23_l(F50, F6, F4, F2); + __ aes_dround01_l(F48, F6, F4, F0); + __ aes_dround23_l(F50, F56, F58, F62); + __ aes_dround01_l(F48, F56, F58, F60); + // re-init F48:F54 with their original values + __ movxtod(G2,F54); + __ movxtod(G3,F52); + __ movxtod(G6,F50); + __ movxtod(G1,F48); + + __ movxtod(L0,F6); + __ movxtod(L1,F4); + __ fxor(FloatRegisterImpl::D, F6, F0, F0); + __ fxor(FloatRegisterImpl::D, F4, F2, F2); + + __ stf(FloatRegisterImpl::D, F0, to, 0); + __ stf(FloatRegisterImpl::D, F2, to, 8); + + __ movxtod(G4,F56); + __ movxtod(G5,F58); + __ mov(L4,L0); + __ mov(L5,L1); + __ fxor(FloatRegisterImpl::D, F56, F60, F60); + __ fxor(FloatRegisterImpl::D, F58, F62, F62); + + __ stf(FloatRegisterImpl::D, F60, to, 16); + __ stf(FloatRegisterImpl::D, F62, to, 24); + + __ add(from, 32, from); + __ add(to, 32, to); + __ subcc(len_reg, 32, len_reg); + __ br(Assembler::notEqual, false, Assembler::pt, L_dec_next2_blocks256); + __ delayed()->nop(); + + __ BIND(L_cbcdec_end); + __ stx(L0, rvec, 0); + __ stx(L1, rvec, 8); + __ restore(); + __ mov(L0, O0); + __ retl(); + __ delayed()->nop(); + + return start; + } + void generate_initial() { // Generates all stubs and initializes the entry points @@ -3368,6 +4137,14 @@ class StubGenerator: public StubCodeGenerator { generate_safefetch("SafeFetchN", sizeof(intptr_t), &StubRoutines::_safefetchN_entry, &StubRoutines::_safefetchN_fault_pc, &StubRoutines::_safefetchN_continuation_pc); + + // generate AES intrinsics code + if (UseAESIntrinsics) { + StubRoutines::_aescrypt_encryptBlock = generate_aescrypt_encryptBlock(); + StubRoutines::_aescrypt_decryptBlock = generate_aescrypt_decryptBlock(); + StubRoutines::_cipherBlockChaining_encryptAESCrypt = generate_cipherBlockChaining_encryptAESCrypt(); + StubRoutines::_cipherBlockChaining_decryptAESCrypt = generate_cipherBlockChaining_decryptAESCrypt_Parallel(); + } } diff --git a/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp b/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp index bae7b3510cd..b75d21f98de 100644 --- a/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp @@ -234,7 +234,7 @@ void VM_Version::initialize() { assert((OptoLoopAlignment % relocInfo::addr_unit()) == 0, "alignment is not a multiple of NOP size"); char buf[512]; - jio_snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s", + jio_snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", (has_v9() ? ", v9" : (has_v8() ? ", v8" : "")), (has_hardware_popc() ? ", popc" : ""), (has_vis1() ? ", vis1" : ""), @@ -242,6 +242,7 @@ void VM_Version::initialize() { (has_vis3() ? ", vis3" : ""), (has_blk_init() ? ", blk_init" : ""), (has_cbcond() ? ", cbcond" : ""), + (has_aes() ? ", aes" : ""), (is_ultra3() ? ", ultra3" : ""), (is_sun4v() ? ", sun4v" : ""), (is_niagara_plus() ? ", niagara_plus" : (is_niagara() ? ", niagara" : "")), @@ -265,6 +266,41 @@ void VM_Version::initialize() { if (!has_vis1()) // Drop to 0 if no VIS1 support UseVIS = 0; + // T2 and above should have support for AES instructions + if (has_aes()) { + if (UseVIS > 0) { // AES intrinsics use FXOR instruction which is VIS1 + if (FLAG_IS_DEFAULT(UseAES)) { + FLAG_SET_DEFAULT(UseAES, true); + } + if (FLAG_IS_DEFAULT(UseAESIntrinsics)) { + FLAG_SET_DEFAULT(UseAESIntrinsics, true); + } + // we disable both the AES flags if either of them is disabled on the command line + if (!UseAES || !UseAESIntrinsics) { + FLAG_SET_DEFAULT(UseAES, false); + FLAG_SET_DEFAULT(UseAESIntrinsics, false); + } + } else { + if (UseAES || UseAESIntrinsics) { + warning("SPARC AES intrinsics require VIS1 instruction support. Intrinsics will be disabled."); + if (UseAES) { + FLAG_SET_DEFAULT(UseAES, false); + } + if (UseAESIntrinsics) { + FLAG_SET_DEFAULT(UseAESIntrinsics, false); + } + } + } + } else if (UseAES || UseAESIntrinsics) { + warning("AES instructions are not available on this CPU"); + if (UseAES) { + FLAG_SET_DEFAULT(UseAES, false); + } + if (UseAESIntrinsics) { + FLAG_SET_DEFAULT(UseAESIntrinsics, false); + } + } + if (FLAG_IS_DEFAULT(ContendedPaddingWidth) && (cache_line_size > ContendedPaddingWidth)) ContendedPaddingWidth = cache_line_size; diff --git a/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp b/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp index b8d63f4f862..6ddf5700734 100644 --- a/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp +++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp @@ -48,7 +48,8 @@ protected: sparc64_family = 14, M_family = 15, T_family = 16, - T1_model = 17 + T1_model = 17, + aes_instructions = 18 }; enum Feature_Flag_Set { @@ -73,6 +74,7 @@ protected: M_family_m = 1 << M_family, T_family_m = 1 << T_family, T1_model_m = 1 << T1_model, + aes_instructions_m = 1 << aes_instructions, generic_v8_m = v8_instructions_m | hardware_mul32_m | hardware_div32_m | hardware_fsmuld_m, generic_v9_m = generic_v8_m | v9_instructions_m, @@ -123,6 +125,7 @@ public: static bool has_vis3() { return (_features & vis3_instructions_m) != 0; } static bool has_blk_init() { return (_features & blk_init_instructions_m) != 0; } static bool has_cbcond() { return (_features & cbcond_instructions_m) != 0; } + static bool has_aes() { return (_features & aes_instructions_m) != 0; } static bool supports_compare_and_exchange() { return has_v9(); } diff --git a/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp b/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp index 12fccf9ddd3..1622fe5ffc5 100644 --- a/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp +++ b/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp @@ -2403,6 +2403,9 @@ class StubGenerator: public StubCodeGenerator { // c_rarg3 - r vector byte array address // c_rarg4 - input length // + // Output: + // rax - input length + // address generate_cipherBlockChaining_encryptAESCrypt() { assert(UseAES, "need AES instructions and misaligned SSE support"); __ align(CodeEntryAlignment); @@ -2483,7 +2486,7 @@ class StubGenerator: public StubCodeGenerator { __ movdqu(Address(rvec, 0), xmm_result); // final value of r stored in rvec of CipherBlockChaining object handleSOERegisters(false /*restoring*/); - __ movl(rax, 0); // return 0 (why?) + __ movptr(rax, len_param); // return length __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); @@ -2557,6 +2560,9 @@ class StubGenerator: public StubCodeGenerator { // c_rarg3 - r vector byte array address // c_rarg4 - input length // + // Output: + // rax - input length + // address generate_cipherBlockChaining_decryptAESCrypt() { assert(UseAES, "need AES instructions and misaligned SSE support"); @@ -2650,7 +2656,7 @@ class StubGenerator: public StubCodeGenerator { __ movptr(rvec , rvec_param); // restore this since used in loop __ movdqu(Address(rvec, 0), xmm_temp); // final value of r stored in rvec of CipherBlockChaining object handleSOERegisters(false /*restoring*/); - __ movl(rax, 0); // return 0 (why?) + __ movptr(rax, len_param); // return length __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); diff --git a/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp b/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp index a16611280fb..0adb0d31e72 100644 --- a/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp +++ b/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp @@ -3217,6 +3217,9 @@ class StubGenerator: public StubCodeGenerator { // c_rarg3 - r vector byte array address // c_rarg4 - input length // + // Output: + // rax - input length + // address generate_cipherBlockChaining_encryptAESCrypt() { assert(UseAES, "need AES instructions and misaligned SSE support"); __ align(CodeEntryAlignment); @@ -3232,7 +3235,7 @@ class StubGenerator: public StubCodeGenerator { #ifndef _WIN64 const Register len_reg = c_rarg4; // src len (must be multiple of blocksize 16) #else - const Address len_mem(rsp, 6 * wordSize); // length is on stack on Win64 + const Address len_mem(rbp, 6 * wordSize); // length is on stack on Win64 const Register len_reg = r10; // pick the first volatile windows register #endif const Register pos = rax; @@ -3259,6 +3262,8 @@ class StubGenerator: public StubCodeGenerator { for (int i = 6; i <= XMM_REG_NUM_KEY_LAST; i++) { __ movdqu(xmm_save(i), as_XMMRegister(i)); } +#else + __ push(len_reg); // Save #endif const XMMRegister xmm_key_shuf_mask = xmm_temp; // used temporarily to swap key bytes up front @@ -3301,8 +3306,10 @@ class StubGenerator: public StubCodeGenerator { for (int i = 6; i <= XMM_REG_NUM_KEY_LAST; i++) { __ movdqu(as_XMMRegister(i), xmm_save(i)); } + __ movl(rax, len_mem); +#else + __ pop(rax); // return length #endif - __ movl(rax, 0); // return 0 (why?) __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); @@ -3409,6 +3416,9 @@ class StubGenerator: public StubCodeGenerator { // c_rarg3 - r vector byte array address // c_rarg4 - input length // + // Output: + // rax - input length + // address generate_cipherBlockChaining_decryptAESCrypt_Parallel() { assert(UseAES, "need AES instructions and misaligned SSE support"); @@ -3427,7 +3437,7 @@ class StubGenerator: public StubCodeGenerator { #ifndef _WIN64 const Register len_reg = c_rarg4; // src len (must be multiple of blocksize 16) #else - const Address len_mem(rsp, 6 * wordSize); // length is on stack on Win64 + const Address len_mem(rbp, 6 * wordSize); // length is on stack on Win64 const Register len_reg = r10; // pick the first volatile windows register #endif const Register pos = rax; @@ -3448,7 +3458,10 @@ class StubGenerator: public StubCodeGenerator { for (int i = 6; i <= XMM_REG_NUM_KEY_LAST; i++) { __ movdqu(xmm_save(i), as_XMMRegister(i)); } +#else + __ push(len_reg); // Save #endif + // the java expanded key ordering is rotated one position from what we want // so we start from 0x10 here and hit 0x00 last const XMMRegister xmm_key_shuf_mask = xmm1; // used temporarily to swap key bytes up front @@ -3554,8 +3567,10 @@ class StubGenerator: public StubCodeGenerator { for (int i = 6; i <= XMM_REG_NUM_KEY_LAST; i++) { __ movdqu(as_XMMRegister(i), xmm_save(i)); } + __ movl(rax, len_mem); +#else + __ pop(rax); // return length #endif - __ movl(rax, 0); // return 0 (why?) __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(0); diff --git a/hotspot/src/cpu/x86/vm/x86.ad b/hotspot/src/cpu/x86/vm/x86.ad index c49d0e6c31c..b0077a5f58c 100644 --- a/hotspot/src/cpu/x86/vm/x86.ad +++ b/hotspot/src/cpu/x86/vm/x86.ad @@ -581,6 +581,12 @@ const bool Matcher::misaligned_vectors_ok() { return !AlignVector; // can be changed by flag } +// x86 AES instructions are compatible with SunJCE expanded +// keys, hence we do not need to pass the original key to stubs +const bool Matcher::pass_original_key_for_aes() { + return false; +} + // Helper methods for MachSpillCopyNode::implementation(). static int vec_mov_helper(CodeBuffer *cbuf, bool do_size, int src_lo, int dst_lo, int src_hi, int dst_hi, uint ireg, outputStream* st) { diff --git a/hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp b/hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp index e46e2150095..6dca05f91f1 100644 --- a/hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp +++ b/hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp @@ -119,6 +119,11 @@ int VM_Version::platform_features(int features) { #endif if (av & AV_SPARC_CBCOND) features |= cbcond_instructions_m; +#ifndef AV_SPARC_AES +#define AV_SPARC_AES 0x00020000 /* aes instrs supported */ +#endif + if (av & AV_SPARC_AES) features |= aes_instructions_m; + } else { // getisax(2) failed, use the old legacy code. #ifndef PRODUCT diff --git a/hotspot/src/share/vm/classfile/vmSymbols.hpp b/hotspot/src/share/vm/classfile/vmSymbols.hpp index 58485959f66..ed3c0dbcb0c 100644 --- a/hotspot/src/share/vm/classfile/vmSymbols.hpp +++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp @@ -787,7 +787,7 @@ do_intrinsic(_cipherBlockChaining_decryptAESCrypt, com_sun_crypto_provider_cipherBlockChaining, decrypt_name, byteArray_int_int_byteArray_int_signature, F_R) \ do_name( encrypt_name, "encrypt") \ do_name( decrypt_name, "decrypt") \ - do_signature(byteArray_int_int_byteArray_int_signature, "([BII[BI)V") \ + do_signature(byteArray_int_int_byteArray_int_signature, "([BII[BI)I") \ \ /* support for java.util.zip */ \ do_class(java_util_zip_CRC32, "java/util/zip/CRC32") \ diff --git a/hotspot/src/share/vm/opto/library_call.cpp b/hotspot/src/share/vm/opto/library_call.cpp index df6c29f5766..564aa7c1fa9 100644 --- a/hotspot/src/share/vm/opto/library_call.cpp +++ b/hotspot/src/share/vm/opto/library_call.cpp @@ -304,6 +304,7 @@ class LibraryCallKit : public GraphKit { bool inline_cipherBlockChaining_AESCrypt(vmIntrinsics::ID id); Node* inline_cipherBlockChaining_AESCrypt_predicate(bool decrypting); Node* get_key_start_from_aescrypt_object(Node* aescrypt_object); + Node* get_original_key_start_from_aescrypt_object(Node* aescrypt_object); bool inline_encodeISOArray(); bool inline_updateCRC32(); bool inline_updateBytesCRC32(); @@ -5936,10 +5937,22 @@ bool LibraryCallKit::inline_aescrypt_Block(vmIntrinsics::ID id) { Node* k_start = get_key_start_from_aescrypt_object(aescrypt_object); if (k_start == NULL) return false; - // Call the stub. - make_runtime_call(RC_LEAF|RC_NO_FP, OptoRuntime::aescrypt_block_Type(), - stubAddr, stubName, TypePtr::BOTTOM, - src_start, dest_start, k_start); + if (Matcher::pass_original_key_for_aes()) { + // on SPARC we need to pass the original key since key expansion needs to happen in intrinsics due to + // compatibility issues between Java key expansion and SPARC crypto instructions + Node* original_k_start = get_original_key_start_from_aescrypt_object(aescrypt_object); + if (original_k_start == NULL) return false; + + // Call the stub. + make_runtime_call(RC_LEAF|RC_NO_FP, OptoRuntime::aescrypt_block_Type(), + stubAddr, stubName, TypePtr::BOTTOM, + src_start, dest_start, k_start, original_k_start); + } else { + // Call the stub. + make_runtime_call(RC_LEAF|RC_NO_FP, OptoRuntime::aescrypt_block_Type(), + stubAddr, stubName, TypePtr::BOTTOM, + src_start, dest_start, k_start); + } return true; } @@ -6017,14 +6030,29 @@ bool LibraryCallKit::inline_cipherBlockChaining_AESCrypt(vmIntrinsics::ID id) { if (objRvec == NULL) return false; Node* r_start = array_element_address(objRvec, intcon(0), T_BYTE); - // Call the stub, passing src_start, dest_start, k_start, r_start and src_len - make_runtime_call(RC_LEAF|RC_NO_FP, - OptoRuntime::cipherBlockChaining_aescrypt_Type(), - stubAddr, stubName, TypePtr::BOTTOM, - src_start, dest_start, k_start, r_start, len); + Node* cbcCrypt; + if (Matcher::pass_original_key_for_aes()) { + // on SPARC we need to pass the original key since key expansion needs to happen in intrinsics due to + // compatibility issues between Java key expansion and SPARC crypto instructions + Node* original_k_start = get_original_key_start_from_aescrypt_object(aescrypt_object); + if (original_k_start == NULL) return false; - // return is void so no result needs to be pushed + // Call the stub, passing src_start, dest_start, k_start, r_start, src_len and original_k_start + cbcCrypt = make_runtime_call(RC_LEAF|RC_NO_FP, + OptoRuntime::cipherBlockChaining_aescrypt_Type(), + stubAddr, stubName, TypePtr::BOTTOM, + src_start, dest_start, k_start, r_start, len, original_k_start); + } else { + // Call the stub, passing src_start, dest_start, k_start, r_start and src_len + cbcCrypt = make_runtime_call(RC_LEAF|RC_NO_FP, + OptoRuntime::cipherBlockChaining_aescrypt_Type(), + stubAddr, stubName, TypePtr::BOTTOM, + src_start, dest_start, k_start, r_start, len); + } + // return cipher length (int) + Node* retvalue = _gvn.transform(new (C) ProjNode(cbcCrypt, TypeFunc::Parms)); + set_result(retvalue); return true; } @@ -6039,6 +6067,17 @@ Node * LibraryCallKit::get_key_start_from_aescrypt_object(Node *aescrypt_object) return k_start; } +//------------------------------get_original_key_start_from_aescrypt_object----------------------- +Node * LibraryCallKit::get_original_key_start_from_aescrypt_object(Node *aescrypt_object) { + Node* objAESCryptKey = load_field_from_object(aescrypt_object, "lastKey", "[B", /*is_exact*/ false); + assert (objAESCryptKey != NULL, "wrong version of com.sun.crypto.provider.AESCrypt"); + if (objAESCryptKey == NULL) return (Node *) NULL; + + // now have the array, need to get the start address of the lastKey array + Node* original_k_start = array_element_address(objAESCryptKey, intcon(0), T_BYTE); + return original_k_start; +} + //----------------------------inline_cipherBlockChaining_AESCrypt_predicate---------------------------- // Return node representing slow path of predicate check. // the pseudo code we want to emulate with this predicate is: diff --git a/hotspot/src/share/vm/opto/matcher.hpp b/hotspot/src/share/vm/opto/matcher.hpp index f840d0c6edc..c2997170919 100644 --- a/hotspot/src/share/vm/opto/matcher.hpp +++ b/hotspot/src/share/vm/opto/matcher.hpp @@ -286,6 +286,9 @@ public: // CPU supports misaligned vectors store/load. static const bool misaligned_vectors_ok(); + // Should original key array reference be passed to AES stubs + static const bool pass_original_key_for_aes(); + // Used to determine a "low complexity" 64-bit constant. (Zero is simple.) // The standard of comparison is one (StoreL ConL) vs. two (StoreI ConI). // Depends on the details of 64-bit constant generation on the CPU. diff --git a/hotspot/src/share/vm/opto/runtime.cpp b/hotspot/src/share/vm/opto/runtime.cpp index 6e09cb7dff9..3ec8e7b6963 100644 --- a/hotspot/src/share/vm/opto/runtime.cpp +++ b/hotspot/src/share/vm/opto/runtime.cpp @@ -814,12 +814,18 @@ const TypeFunc* OptoRuntime::array_fill_Type() { const TypeFunc* OptoRuntime::aescrypt_block_Type() { // create input type (domain) int num_args = 3; + if (Matcher::pass_original_key_for_aes()) { + num_args = 4; + } int argcnt = num_args; const Type** fields = TypeTuple::fields(argcnt); int argp = TypeFunc::Parms; fields[argp++] = TypePtr::NOTNULL; // src fields[argp++] = TypePtr::NOTNULL; // dest fields[argp++] = TypePtr::NOTNULL; // k array + if (Matcher::pass_original_key_for_aes()) { + fields[argp++] = TypePtr::NOTNULL; // original k array + } assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); @@ -856,6 +862,9 @@ const TypeFunc* OptoRuntime::updateBytesCRC32_Type() { const TypeFunc* OptoRuntime::cipherBlockChaining_aescrypt_Type() { // create input type (domain) int num_args = 5; + if (Matcher::pass_original_key_for_aes()) { + num_args = 6; + } int argcnt = num_args; const Type** fields = TypeTuple::fields(argcnt); int argp = TypeFunc::Parms; @@ -864,13 +873,16 @@ const TypeFunc* OptoRuntime::cipherBlockChaining_aescrypt_Type() { fields[argp++] = TypePtr::NOTNULL; // k array fields[argp++] = TypePtr::NOTNULL; // r array fields[argp++] = TypeInt::INT; // src len + if (Matcher::pass_original_key_for_aes()) { + fields[argp++] = TypePtr::NOTNULL; // original k array + } assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); - // no result type needed + // returning cipher len (int) fields = TypeTuple::fields(1); - fields[TypeFunc::Parms+0] = NULL; // void - const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); + fields[TypeFunc::Parms+0] = TypeInt::INT; + const TypeTuple* range = TypeTuple::make(TypeFunc::Parms+1, fields); return TypeFunc::make(domain, range); } diff --git a/hotspot/test/compiler/7184394/TestAESMain.java b/hotspot/test/compiler/7184394/TestAESMain.java index 48baf572b3e..ff9e12bcd38 100644 --- a/hotspot/test/compiler/7184394/TestAESMain.java +++ b/hotspot/test/compiler/7184394/TestAESMain.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014 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,20 +39,32 @@ public class TestAESMain { System.out.println(iters + " iterations"); TestAESEncode etest = new TestAESEncode(); etest.prepare(); + // warm-up for 20K iterations + System.out.println("Starting encryption warm-up"); + for (int i=0; i<20000; i++) { + etest.run(); + } + System.out.println("Finished encryption warm-up"); long start = System.nanoTime(); for (int i=0; i Date: Wed, 15 Jan 2014 06:16:55 +0100 Subject: [PATCH 030/158] 7194669: CodeCache::mark_for_deoptimization should avoid verifying dependencies multiple times Avoid verifying dependencies multiple times by caching verified dependencies Reviewed-by: kvn, twisti, roland --- hotspot/src/share/vm/code/codeCache.cpp | 52 ++++++------------ hotspot/src/share/vm/code/dependencies.cpp | 62 ++++++++++++++++++++++ hotspot/src/share/vm/code/dependencies.hpp | 35 ++++++++++++ hotspot/src/share/vm/code/nmethod.cpp | 41 +++++++++++--- hotspot/src/share/vm/code/nmethod.hpp | 2 +- 5 files changed, 148 insertions(+), 44 deletions(-) diff --git a/hotspot/src/share/vm/code/codeCache.cpp b/hotspot/src/share/vm/code/codeCache.cpp index fcdab3d5af4..5e9b343cd2b 100644 --- a/hotspot/src/share/vm/code/codeCache.cpp +++ b/hotspot/src/share/vm/code/codeCache.cpp @@ -596,20 +596,13 @@ void CodeCache::clear_inline_caches() { } #ifndef PRODUCT -// used to keep track of how much time is spent in mark_for_deoptimization +// Keeps track of time spent for checking dependencies static elapsedTimer dependentCheckTime; -static int dependentCheckCount = 0; -#endif // PRODUCT +#endif int CodeCache::mark_for_deoptimization(DepChange& changes) { MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); - -#ifndef PRODUCT - dependentCheckTime.start(); - dependentCheckCount++; -#endif // PRODUCT - int number_of_marked_CodeBlobs = 0; // search the hierarchy looking for nmethods which are affected by the loading of this class @@ -617,32 +610,23 @@ int CodeCache::mark_for_deoptimization(DepChange& changes) { // then search the interfaces this class implements looking for nmethods // which might be dependent of the fact that an interface only had one // implementor. - - { No_Safepoint_Verifier nsv; - for (DepChange::ContextStream str(changes, nsv); str.next(); ) { - Klass* d = str.klass(); - number_of_marked_CodeBlobs += InstanceKlass::cast(d)->mark_dependent_nmethods(changes); - } - } - - if (VerifyDependencies) { - // Turn off dependency tracing while actually testing deps. - NOT_PRODUCT( FlagSetting fs(TraceDependencies, false) ); - FOR_ALL_ALIVE_NMETHODS(nm) { - if (!nm->is_marked_for_deoptimization() && - nm->check_all_dependencies()) { - ResourceMark rm; - tty->print_cr("Should have been marked for deoptimization:"); - changes.print(); - nm->print(); - nm->print_dependencies(); - } - } + // nmethod::check_all_dependencies works only correctly, if no safepoint + // can happen + No_Safepoint_Verifier nsv; + for (DepChange::ContextStream str(changes, nsv); str.next(); ) { + Klass* d = str.klass(); + number_of_marked_CodeBlobs += InstanceKlass::cast(d)->mark_dependent_nmethods(changes); } #ifndef PRODUCT - dependentCheckTime.stop(); -#endif // PRODUCT + if (VerifyDependencies) { + // Object pointers are used as unique identifiers for dependency arguments. This + // is only possible if no safepoint, i.e., GC occurs during the verification code. + dependentCheckTime.start(); + nmethod::check_all_dependencies(changes); + dependentCheckTime.stop(); + } +#endif return number_of_marked_CodeBlobs; } @@ -899,9 +883,7 @@ void CodeCache::print() { } tty->print_cr("CodeCache:"); - - tty->print_cr("nmethod dependency checking time %f", dependentCheckTime.seconds(), - dependentCheckTime.seconds() / dependentCheckCount); + tty->print_cr("nmethod dependency checking time %fs", dependentCheckTime.seconds()); if (!live.is_empty()) { live.print("live"); diff --git a/hotspot/src/share/vm/code/dependencies.cpp b/hotspot/src/share/vm/code/dependencies.cpp index 4419bdd986c..fa209ded55b 100644 --- a/hotspot/src/share/vm/code/dependencies.cpp +++ b/hotspot/src/share/vm/code/dependencies.cpp @@ -680,6 +680,17 @@ Metadata* Dependencies::DepStream::argument(int i) { return result; } +/** + * Returns a unique identifier for each dependency argument. + */ +uintptr_t Dependencies::DepStream::get_identifier(int i) { + if (has_oop_argument()) { + return (uintptr_t)(oopDesc*)argument_oop(i); + } else { + return (uintptr_t)argument(i); + } +} + oop Dependencies::DepStream::argument_oop(int i) { oop result = recorded_oop_at(argument_index(i)); assert(result == NULL || result->is_oop(), "must be"); @@ -715,6 +726,57 @@ Klass* Dependencies::DepStream::context_type() { return NULL; } +// ----------------- DependencySignature -------------------------------------- +bool DependencySignature::equals(const DependencySignature& sig) const { + if (type() != sig.type()) { + return false; + } + + if (args_count() != sig.args_count()) { + return false; + } + + for (int i = 0; i < sig.args_count(); i++) { + if (arg(i) != sig.arg(i)) { + return false; + } + } + return true; +} + + +// ----------------- DependencySignatureBuffer -------------------------------------- +DependencySignatureBuffer::DependencySignatureBuffer() { + _signatures = NEW_RESOURCE_ARRAY(GrowableArray*, Dependencies::TYPE_LIMIT); + memset(_signatures, 0, sizeof(DependencySignature*) * Dependencies::TYPE_LIMIT); +} + +/* Check if arguments are identical. Two dependency signatures are considered + * identical, if the type as well as all argument identifiers are identical. + * If the dependency has not already been checked, the dependency signature is + * added to the checked dependencies of the same type. The function returns + * false, which causes the dependency to be checked in the caller. + */ +bool DependencySignatureBuffer::add_if_missing(const DependencySignature& sig) { + const int index = sig.type(); + GrowableArray* buffer = _signatures[index]; + if (buffer == NULL) { + buffer = new GrowableArray(); + _signatures[index] = buffer; + } + + // Check if we have already checked the dependency + for (int i = 0; i < buffer->length(); i++) { + DependencySignature* checked_signature = buffer->at(i); + if (checked_signature->equals(sig)) { + return true; + } + } + buffer->append((DependencySignature*)&sig); + return false; +} + + /// Checking dependencies: // This hierarchy walker inspects subtypes of a given type, diff --git a/hotspot/src/share/vm/code/dependencies.hpp b/hotspot/src/share/vm/code/dependencies.hpp index a91e1f1306c..5b5d467b238 100644 --- a/hotspot/src/share/vm/code/dependencies.hpp +++ b/hotspot/src/share/vm/code/dependencies.hpp @@ -480,6 +480,9 @@ class Dependencies: public ResourceObj { bool next(); DepType type() { return _type; } + bool has_oop_argument() { return type() == call_site_target_value; } + uintptr_t get_identifier(int i); + int argument_count() { return dep_args(type()); } int argument_index(int i) { assert(0 <= i && i < argument_count(), "oob"); return _xi[i]; } @@ -523,6 +526,38 @@ class Dependencies: public ResourceObj { }; +class DependencySignature : public ResourceObj { + private: + int _args_count; + uintptr_t _argument_hash[Dependencies::max_arg_count]; + Dependencies::DepType _type; + + + public: + DependencySignature(Dependencies::DepStream& dep) { + _args_count = dep.argument_count(); + _type = dep.type(); + for (int i = 0; i < _args_count; i++) { + _argument_hash[i] = dep.get_identifier(i); + } + } + + bool equals(const DependencySignature& sig) const; + + int args_count() const { return _args_count; } + uintptr_t arg(int idx) const { return _argument_hash[idx]; } + Dependencies::DepType type() const { return _type; } +}; + +class DependencySignatureBuffer : public StackObj { + private: + GrowableArray** _signatures; + + public: + DependencySignatureBuffer(); + bool add_if_missing(const DependencySignature& sig); +}; + // Every particular DepChange is a sub-class of this class. class DepChange : public StackObj { public: diff --git a/hotspot/src/share/vm/code/nmethod.cpp b/hotspot/src/share/vm/code/nmethod.cpp index b9dd9903440..50ee61adfab 100644 --- a/hotspot/src/share/vm/code/nmethod.cpp +++ b/hotspot/src/share/vm/code/nmethod.cpp @@ -2161,16 +2161,41 @@ PcDesc* nmethod::find_pc_desc_internal(address pc, bool approximate) { } -bool nmethod::check_all_dependencies() { - bool found_check = false; - // wholesale check of all dependencies - for (Dependencies::DepStream deps(this); deps.next(); ) { - if (deps.check_dependency() != NULL) { - found_check = true; - NOT_DEBUG(break); +void nmethod::check_all_dependencies(DepChange& changes) { + // Checked dependencies are allocated into this ResourceMark + ResourceMark rm; + + // Turn off dependency tracing while actually testing dependencies. + NOT_PRODUCT( FlagSetting fs(TraceDependencies, false) ); + + // 'dep_signature_buffers' caches already checked dependencies. + DependencySignatureBuffer dep_signature_buffers; + + // Iterate over live nmethods and check dependencies of all nmethods that are not + // marked for deoptimization. A particular dependency is only checked once. + for(nmethod* nm = CodeCache::alive_nmethod(CodeCache::first()); nm != NULL; nm = CodeCache::alive_nmethod(CodeCache::next(nm))) { + if (!nm->is_marked_for_deoptimization()) { + for (Dependencies::DepStream deps(nm); deps.next(); ) { + // Construct abstraction of a dependency. + const DependencySignature* current_sig = new DependencySignature(deps); + // Determine if 'deps' is already checked. If it is not checked, + // 'add_if_missing()' adds the dependency signature and returns + // false. + if (!dep_signature_buffers.add_if_missing(*current_sig)) { + if (deps.check_dependency() != NULL) { + // Dependency checking failed. Print out information about the failed + // dependency and finally fail with an assert. We can fail here, since + // dependency checking is never done in a product build. + ResourceMark rm; + changes.print(); + nm->print(); + nm->print_dependencies(); + assert(false, "Should have been marked for deoptimization"); + } + } + } } } - return found_check; // tell caller if we found anything } bool nmethod::check_dependency_on(DepChange& changes) { diff --git a/hotspot/src/share/vm/code/nmethod.hpp b/hotspot/src/share/vm/code/nmethod.hpp index 4e1afcc046b..294160cdd3b 100644 --- a/hotspot/src/share/vm/code/nmethod.hpp +++ b/hotspot/src/share/vm/code/nmethod.hpp @@ -679,7 +679,7 @@ public: // tells if any of this method's dependencies have been invalidated // (this is expensive!) - bool check_all_dependencies(); + static void check_all_dependencies(DepChange& changes); // tells if this compiled method is dependent on the given changes, // and the changes have invalidated it From 3529de993d57d2f59208a86f178ecbac1ff83fc1 Mon Sep 17 00:00:00 2001 From: David Simms Date: Wed, 15 Jan 2014 11:46:19 +0100 Subject: [PATCH 031/158] 6945460: [TESTBUG] runtime/6929067/Test6929067.sh Change link order for the test Reviewed-by: coleenp, mgerdin --- hotspot/test/runtime/6929067/Test6929067.sh | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/hotspot/test/runtime/6929067/Test6929067.sh b/hotspot/test/runtime/6929067/Test6929067.sh index 4f21bcfea18..4fa7fe2b51d 100644 --- a/hotspot/test/runtime/6929067/Test6929067.sh +++ b/hotspot/test/runtime/6929067/Test6929067.sh @@ -1,15 +1,13 @@ #!/bin/sh ## -## @ignore 8028740 ## @test Test6929067.sh ## @bug 6929067 ## @bug 8021296 ## @summary Stack guard pages should be removed when thread is detached -## @compile T.java ## @run shell Test6929067.sh ## -set -x + if [ "${TESTSRC}" = "" ] then TESTSRC=${PWD} @@ -114,10 +112,8 @@ fi LD_LIBRARY_PATH=.:${COMPILEJAVA}/jre/lib/${ARCH}/${VMTYPE}:/usr/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH -cp ${TESTSRC}${FS}invoke.c . - -# Copy the result of our @compile action: -cp ${TESTCLASSES}${FS}T.class . +cp ${TESTSRC}${FS}*.java ${THIS_DIR} +${TESTJAVA}${FS}bin${FS}javac *.java echo "Architecture: ${ARCH}" echo "Compilation flag: ${COMP_FLAG}" @@ -127,9 +123,9 @@ echo "VM type: ${VMTYPE}" # for /usr/lib/`uname -m`-linux-gnu version ensure to add that path to below compilation. $gcc_cmd -DLINUX ${COMP_FLAG} -o invoke \ - -I${COMPILEJAVA}/include -I${COMPILEJAVA}/include/linux \ - -L${COMPILEJAVA}/jre/lib/${ARCH}/${VMTYPE} \ - -ljvm -lpthread invoke.c + -I${TESTJAVA}/include -I${TESTJAVA}/include/linux \ + -L${TESTJAVA}/jre/lib/${ARCH}/${VMTYPE} \ + ${TESTSRC}${FS}invoke.c -ljvm -lpthread ./invoke exit $? From 81ba2e32c05319acc0a1b065b1edf178b1a7cdfc Mon Sep 17 00:00:00 2001 From: Jesper Wilhelmsson Date: Thu, 23 Jan 2014 14:47:23 +0100 Subject: [PATCH 032/158] 8025856: Fix typos in the GC code Fix about 440 typos in comments in the VM code Reviewed-by: mgerdin, tschatzl, coleenp, kmo, jcoomes --- hotspot/src/share/vm/ci/ciField.cpp | 14 +-- hotspot/src/share/vm/ci/ciField.hpp | 4 +- .../cmsAdaptiveSizePolicy.cpp | 10 +- .../cmsAdaptiveSizePolicy.hpp | 2 +- .../cmsGCAdaptivePolicyCounters.hpp | 10 +- .../concurrentMarkSweep/cmsOopClosures.hpp | 6 +- .../compactibleFreeListSpace.cpp | 14 +-- .../compactibleFreeListSpace.hpp | 53 +++++---- .../concurrentMarkSweepGeneration.cpp | 50 ++++---- .../concurrentMarkSweepGeneration.hpp | 111 +++++++++--------- .../concurrentMarkSweepGeneration.inline.hpp | 4 +- .../concurrentMarkSweepThread.hpp | 2 +- .../concurrentMarkSweep/promotionInfo.cpp | 2 +- .../g1/bufferingOopClosure.hpp | 2 +- .../g1/concurrentG1Refine.cpp | 2 +- .../g1/concurrentG1RefineThread.cpp | 4 +- .../gc_implementation/g1/concurrentMark.cpp | 26 ++-- .../gc_implementation/g1/concurrentMark.hpp | 78 ++++++------ .../g1/concurrentMark.inline.hpp | 4 +- .../g1/g1AllocRegion.inline.hpp | 2 +- .../g1/g1BlockOffsetTable.cpp | 2 +- .../vm/gc_implementation/g1/g1CardCounts.cpp | 2 +- .../gc_implementation/g1/g1CollectedHeap.hpp | 14 +-- .../g1/g1CollectorPolicy.cpp | 4 +- .../g1/g1CollectorPolicy.hpp | 8 +- .../vm/gc_implementation/g1/g1MMUTracker.hpp | 2 +- .../vm/gc_implementation/g1/g1MarkSweep.cpp | 2 +- .../g1/g1MonitoringSupport.cpp | 6 +- .../g1/g1MonitoringSupport.hpp | 2 +- .../g1/g1OopClosures.inline.hpp | 2 +- .../vm/gc_implementation/g1/g1RemSet.cpp | 4 +- .../vm/gc_implementation/g1/heapRegion.cpp | 4 +- .../vm/gc_implementation/g1/heapRegionSeq.hpp | 2 +- .../vm/gc_implementation/g1/ptrQueue.cpp | 6 +- .../vm/gc_implementation/g1/sparsePRT.hpp | 7 +- .../parNew/asParNewGeneration.cpp | 2 +- .../parNew/parCardTableModRefBS.cpp | 6 +- .../parNew/parNewGeneration.cpp | 4 +- .../parallelScavenge/adjoiningGenerations.cpp | 4 +- .../parallelScavenge/adjoiningGenerations.hpp | 2 +- .../parallelScavenge/cardTableExtension.cpp | 4 +- .../parallelScavenge/gcTaskManager.cpp | 4 +- .../parallelScavenge/gcTaskManager.hpp | 2 +- .../parallelScavenge/parallelScavengeHeap.cpp | 4 +- .../parallelScavenge/pcTasks.hpp | 2 +- .../parallelScavenge/psAdaptiveSizePolicy.cpp | 4 +- .../parallelScavenge/psAdaptiveSizePolicy.hpp | 4 +- .../psGCAdaptivePolicyCounters.hpp | 2 +- .../parallelScavenge/psMarkSweep.cpp | 4 +- .../parallelScavenge/psOldGen.cpp | 2 +- .../parallelScavenge/psOldGen.hpp | 2 +- .../parallelScavenge/psParallelCompact.cpp | 6 +- .../parallelScavenge/psParallelCompact.hpp | 2 +- .../parallelScavenge/psPromotionLAB.hpp | 2 +- .../parallelScavenge/psScavenge.cpp | 2 +- .../parallelScavenge/psVirtualspace.hpp | 2 +- .../parallelScavenge/psYoungGen.cpp | 4 +- .../shared/adaptiveSizePolicy.cpp | 4 +- .../shared/adaptiveSizePolicy.hpp | 46 ++++---- .../shared/allocationStats.hpp | 6 +- .../shared/concurrentGCThread.cpp | 2 +- .../vm/gc_implementation/shared/gcUtil.cpp | 2 +- .../vm/gc_implementation/shared/gcUtil.hpp | 2 +- .../shared/mutableNUMASpace.cpp | 6 +- .../gc_implementation/shared/mutableSpace.hpp | 4 +- .../shared/parGCAllocBuffer.cpp | 2 +- .../shared/parGCAllocBuffer.hpp | 2 +- .../shared/spaceDecorator.hpp | 2 +- .../shared/vmGCOperations.cpp | 2 +- hotspot/src/share/vm/gc_interface/gcCause.hpp | 2 +- hotspot/src/share/vm/memory/allocation.hpp | 4 +- hotspot/src/share/vm/memory/barrierSet.hpp | 4 +- .../share/vm/memory/binaryTreeDictionary.cpp | 6 +- .../share/vm/memory/binaryTreeDictionary.hpp | 2 +- .../src/share/vm/memory/blockOffsetTable.cpp | 2 +- .../src/share/vm/memory/blockOffsetTable.hpp | 2 +- .../src/share/vm/memory/cardTableModRefBS.cpp | 6 +- hotspot/src/share/vm/memory/cardTableRS.cpp | 2 +- .../src/share/vm/memory/collectorPolicy.cpp | 66 +++++------ .../src/share/vm/memory/collectorPolicy.hpp | 17 ++- .../src/share/vm/memory/genCollectedHeap.cpp | 4 +- .../src/share/vm/memory/genCollectedHeap.hpp | 2 +- hotspot/src/share/vm/memory/genMarkSweep.cpp | 4 +- hotspot/src/share/vm/memory/genRemSet.hpp | 4 +- hotspot/src/share/vm/memory/generation.hpp | 4 +- hotspot/src/share/vm/memory/heap.cpp | 4 +- hotspot/src/share/vm/memory/heap.hpp | 4 +- .../src/share/vm/memory/heapInspection.hpp | 2 +- hotspot/src/share/vm/memory/metaspace.cpp | 4 +- .../src/share/vm/memory/metaspaceShared.cpp | 4 +- .../src/share/vm/memory/modRefBarrierSet.hpp | 2 +- .../share/vm/memory/referenceProcessor.cpp | 16 +-- .../share/vm/memory/referenceProcessor.hpp | 2 +- hotspot/src/share/vm/memory/resourceArea.hpp | 2 +- hotspot/src/share/vm/memory/sharedHeap.hpp | 2 +- hotspot/src/share/vm/memory/space.cpp | 8 +- hotspot/src/share/vm/memory/space.hpp | 16 +-- .../src/share/vm/memory/tenuredGeneration.cpp | 2 +- hotspot/src/share/vm/memory/universe.cpp | 8 +- hotspot/src/share/vm/oops/method.hpp | 12 +- hotspot/src/share/vm/opto/runtime.cpp | 3 +- .../vm/runtime/advancedThresholdPolicy.cpp | 2 +- hotspot/src/share/vm/runtime/arguments.cpp | 12 +- hotspot/src/share/vm/runtime/arguments.hpp | 4 +- .../share/vm/runtime/compilationPolicy.cpp | 6 +- .../share/vm/runtime/compilationPolicy.hpp | 2 +- .../src/share/vm/runtime/deoptimization.cpp | 4 +- .../src/share/vm/runtime/deoptimization.hpp | 2 +- hotspot/src/share/vm/runtime/frame.cpp | 4 +- hotspot/src/share/vm/runtime/globals.hpp | 2 +- .../share/vm/runtime/globals_extension.hpp | 2 +- hotspot/src/share/vm/runtime/handles.hpp | 2 +- hotspot/src/share/vm/runtime/javaCalls.cpp | 2 +- hotspot/src/share/vm/runtime/jniHandles.cpp | 4 +- hotspot/src/share/vm/runtime/jniHandles.hpp | 2 +- hotspot/src/share/vm/runtime/mutex.cpp | 6 +- hotspot/src/share/vm/runtime/mutex.hpp | 4 +- hotspot/src/share/vm/runtime/mutexLocker.hpp | 8 +- .../src/share/vm/runtime/objectMonitor.cpp | 6 +- .../src/share/vm/runtime/objectMonitor.hpp | 4 +- hotspot/src/share/vm/runtime/orderAccess.hpp | 8 +- hotspot/src/share/vm/runtime/os.cpp | 8 +- hotspot/src/share/vm/runtime/os.hpp | 4 +- hotspot/src/share/vm/runtime/park.cpp | 2 +- hotspot/src/share/vm/runtime/perfData.cpp | 2 +- hotspot/src/share/vm/runtime/perfData.hpp | 12 +- hotspot/src/share/vm/runtime/perfMemory.hpp | 2 +- hotspot/src/share/vm/runtime/reflection.cpp | 2 +- hotspot/src/share/vm/runtime/reflection.hpp | 4 +- hotspot/src/share/vm/runtime/registerMap.hpp | 2 +- hotspot/src/share/vm/runtime/relocator.cpp | 8 +- hotspot/src/share/vm/runtime/safepoint.cpp | 10 +- hotspot/src/share/vm/runtime/safepoint.hpp | 12 +- .../src/share/vm/runtime/sharedRuntime.cpp | 10 +- .../src/share/vm/runtime/sharedRuntime.hpp | 8 +- .../share/vm/runtime/sharedRuntimeTrans.cpp | 2 +- .../share/vm/runtime/sharedRuntimeTrig.cpp | 6 +- hotspot/src/share/vm/runtime/signature.cpp | 2 +- .../vm/runtime/simpleThresholdPolicy.cpp | 2 +- hotspot/src/share/vm/runtime/statSampler.cpp | 6 +- .../share/vm/runtime/stubCodeGenerator.hpp | 2 +- hotspot/src/share/vm/runtime/synchronizer.cpp | 4 +- hotspot/src/share/vm/runtime/synchronizer.hpp | 2 +- hotspot/src/share/vm/runtime/thread.cpp | 16 +-- hotspot/src/share/vm/runtime/thread.hpp | 2 +- .../src/share/vm/runtime/unhandledOops.hpp | 2 +- hotspot/src/share/vm/runtime/vframeArray.hpp | 4 +- hotspot/src/share/vm/runtime/virtualspace.cpp | 4 +- .../src/share/vm/runtime/vm_operations.hpp | 2 +- .../share/vm/utilities/globalDefinitions.hpp | 2 +- 150 files changed, 524 insertions(+), 545 deletions(-) diff --git a/hotspot/src/share/vm/ci/ciField.cpp b/hotspot/src/share/vm/ci/ciField.cpp index b08ec3616fa..cd04c9ff135 100644 --- a/hotspot/src/share/vm/ci/ciField.cpp +++ b/hotspot/src/share/vm/ci/ciField.cpp @@ -201,16 +201,10 @@ void ciField::initialize_from(fieldDescriptor* fd) { return; } - // This field just may be constant. The only cases where it will - // not be constant are: - // - // 1. The field holds a non-perm-space oop. The field is, strictly - // speaking, constant but we cannot embed non-perm-space oops into - // generated code. For the time being we need to consider the - // field to be not constant. - // 2. The field is a *special* static&final field whose value - // may change. The three examples are java.lang.System.in, - // java.lang.System.out, and java.lang.System.err. + // This field just may be constant. The only case where it will + // not be constant is when the field is a *special* static&final field + // whose value may change. The three examples are java.lang.System.in, + // java.lang.System.out, and java.lang.System.err. KlassHandle k = _holder->get_Klass(); assert( SystemDictionary::System_klass() != NULL, "Check once per vm"); diff --git a/hotspot/src/share/vm/ci/ciField.hpp b/hotspot/src/share/vm/ci/ciField.hpp index 75263e3f217..cdd5cf40c55 100644 --- a/hotspot/src/share/vm/ci/ciField.hpp +++ b/hotspot/src/share/vm/ci/ciField.hpp @@ -130,9 +130,7 @@ public: // 1. The field is both static and final // 2. The canonical holder of the field has undergone // static initialization. - // 3. If the field is an object or array, then the oop - // in question is allocated in perm space. - // 4. The field is not one of the special static/final + // 3. The field is not one of the special static/final // non-constant fields. These are java.lang.System.in // and java.lang.System.out. Abomination. // diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.cpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.cpp index d60fe806892..999b1f8ca53 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.cpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.cpp @@ -466,7 +466,7 @@ void CMSAdaptiveSizePolicy::checkpoint_roots_initial_end( void CMSAdaptiveSizePolicy::checkpoint_roots_final_begin() { _STW_timer.stop(); _latest_cms_initial_mark_end_to_remark_start_secs = _STW_timer.seconds(); - // Start accumumlating time for the remark in the STW timer. + // Start accumulating time for the remark in the STW timer. _STW_timer.reset(); _STW_timer.start(); } @@ -537,8 +537,8 @@ void CMSAdaptiveSizePolicy::msc_collection_end(GCCause::Cause gc_cause) { avg_msc_pause()->sample(msc_pause_in_seconds); double mutator_time_in_seconds = 0.0; if (_latest_cms_collection_end_to_collection_start_secs == 0.0) { - // This assertion may fail because of time stamp gradularity. - // Comment it out and investiage it at a later time. The large + // This assertion may fail because of time stamp granularity. + // Comment it out and investigate it at a later time. The large // time stamp granularity occurs on some older linux systems. #ifndef CLOCK_GRANULARITY_TOO_LARGE assert((_latest_cms_concurrent_marking_time_secs == 0.0) && @@ -836,7 +836,7 @@ double CMSAdaptiveSizePolicy::cms_gc_cost() const { void CMSAdaptiveSizePolicy::ms_collection_marking_begin() { _STW_timer.stop(); - // Start accumumlating time for the marking in the STW timer. + // Start accumulating time for the marking in the STW timer. _STW_timer.reset(); _STW_timer.start(); } @@ -1227,7 +1227,7 @@ uint CMSAdaptiveSizePolicy::compute_survivor_space_size_and_threshold( // We use the tenuring threshold to equalize the cost of major // and minor collections. // ThresholdTolerance is used to indicate how sensitive the - // tenuring threshold is to differences in cost betweent the + // tenuring threshold is to differences in cost between the // collection types. // Get the times of interest. This involves a little work, so diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp index 00a4f8fd781..1bf4ca34cf1 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.hpp @@ -356,7 +356,7 @@ class CMSAdaptiveSizePolicy : public AdaptiveSizePolicy { void concurrent_sweeping_begin(); void concurrent_sweeping_end(); // Similar to the above (e.g., concurrent_marking_end()) and - // is used for both the precleaning an abortable precleaing + // is used for both the precleaning an abortable precleaning // phases. void concurrent_precleaning_begin(); void concurrent_precleaning_end(); diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp index 3fe7d136f23..b6e91c1b349 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp @@ -88,8 +88,7 @@ class CMSGCAdaptivePolicyCounters : public GCAdaptivePolicyCounters { // of the tenured generation. PerfVariable* _avg_msc_pause_counter; // Average for the time between the most recent end of a - // MSC collection and the beginning of the next - // MSC collection. + // MSC collection and the beginning of the next MSC collection. PerfVariable* _avg_msc_interval_counter; // Average for the GC cost of a MSC collection based on // _avg_msc_pause_counter and _avg_msc_interval_counter. @@ -99,8 +98,7 @@ class CMSGCAdaptivePolicyCounters : public GCAdaptivePolicyCounters { // of the tenured generation. PerfVariable* _avg_ms_pause_counter; // Average for the time between the most recent end of a - // MS collection and the beginning of the next - // MS collection. + // MS collection and the beginning of the next MS collection. PerfVariable* _avg_ms_interval_counter; // Average for the GC cost of a MS collection based on // _avg_ms_pause_counter and _avg_ms_interval_counter. @@ -108,9 +106,9 @@ class CMSGCAdaptivePolicyCounters : public GCAdaptivePolicyCounters { // Average of the bytes promoted per minor collection. PerfVariable* _promoted_avg_counter; - // Average of the deviation of the promoted average + // Average of the deviation of the promoted average. PerfVariable* _promoted_avg_dev_counter; - // Padded average of the bytes promoted per minor colleciton + // Padded average of the bytes promoted per minor collection. PerfVariable* _promoted_padded_avg_counter; // See description of the _change_young_gen_for_maj_pauses diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp index b910dd6e367..6c911328a77 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp @@ -258,10 +258,10 @@ class MarkRefsIntoAndScanClosure: public CMSOopsInGenClosure { bool take_from_overflow_list(); }; -// Tn this, the parallel avatar of MarkRefsIntoAndScanClosure, the revisit +// In this, the parallel avatar of MarkRefsIntoAndScanClosure, the revisit // stack and the bitMap are shared, so access needs to be suitably -// sycnhronized. An OopTaskQueue structure, supporting efficient -// workstealing, replaces a CMSMarkStack for storing grey objects. +// synchronized. An OopTaskQueue structure, supporting efficient +// work stealing, replaces a CMSMarkStack for storing grey objects. class Par_MarkRefsIntoAndScanClosure: public CMSOopsInGenClosure { private: MemRegion _span; diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp index b87efd7bc2a..58a2d871317 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp @@ -407,8 +407,8 @@ size_t CompactibleFreeListSpace::max_alloc_in_words() const { res = MAX2(res, MIN2(_smallLinearAllocBlock._word_size, (size_t) SmallForLinearAlloc - 1)); // XXX the following could potentially be pretty slow; - // should one, pesimally for the rare cases when res - // caclulated above is less than IndexSetSize, + // should one, pessimistically for the rare cases when res + // calculated above is less than IndexSetSize, // just return res calculated above? My reasoning was that // those cases will be so rare that the extra time spent doesn't // really matter.... @@ -759,7 +759,7 @@ CompactibleFreeListSpace::new_dcto_cl(ExtendedOopClosure* cl, // Note on locking for the space iteration functions: // since the collector's iteration activities are concurrent with // allocation activities by mutators, absent a suitable mutual exclusion -// mechanism the iterators may go awry. For instace a block being iterated +// mechanism the iterators may go awry. For instance a block being iterated // may suddenly be allocated or divided up and part of it allocated and // so on. @@ -2090,7 +2090,7 @@ CompactibleFreeListSpace::refillLinearAllocBlock(LinearAllocBlock* blk) { // Support for concurrent collection policy decisions. bool CompactibleFreeListSpace::should_concurrent_collect() const { - // In the future we might want to add in frgamentation stats -- + // In the future we might want to add in fragmentation stats -- // including erosion of the "mountain" into this decision as well. return !adaptive_freelists() && linearAllocationWouldFail(); } @@ -2099,7 +2099,7 @@ bool CompactibleFreeListSpace::should_concurrent_collect() const { void CompactibleFreeListSpace::prepare_for_compaction(CompactPoint* cp) { SCAN_AND_FORWARD(cp,end,block_is_obj,block_size); - // prepare_for_compaction() uses the space between live objects + // Prepare_for_compaction() uses the space between live objects // so that later phase can skip dead space quickly. So verification // of the free lists doesn't work after. } @@ -2122,7 +2122,7 @@ void CompactibleFreeListSpace::compact() { SCAN_AND_COMPACT(obj_size); } -// fragmentation_metric = 1 - [sum of (fbs**2) / (sum of fbs)**2] +// Fragmentation metric = 1 - [sum of (fbs**2) / (sum of fbs)**2] // where fbs is free block sizes double CompactibleFreeListSpace::flsFrag() const { size_t itabFree = totalSizeInIndexedFreeLists(); @@ -2651,7 +2651,7 @@ void CFLS_LAB::get_from_global_pool(size_t word_sz, AdaptiveFreeList* // changes on-the-fly during a scavenge and avoid such a phase-change // pothole. The following code is a heuristic attempt to do that. // It is protected by a product flag until we have gained - // enough experience with this heuristic and fine-tuned its behaviour. + // enough experience with this heuristic and fine-tuned its behavior. // WARNING: This might increase fragmentation if we overreact to // small spikes, so some kind of historical smoothing based on // previous experience with the greater reactivity might be useful. diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp index e625d3a18e6..59ea6c30fb8 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp @@ -58,7 +58,7 @@ class LinearAllocBlock VALUE_OBJ_CLASS_SPEC { HeapWord* _ptr; size_t _word_size; size_t _refillSize; - size_t _allocation_size_limit; // largest size that will be allocated + size_t _allocation_size_limit; // Largest size that will be allocated void print_on(outputStream* st) const; }; @@ -116,14 +116,14 @@ class CompactibleFreeListSpace: public CompactibleSpace { PromotionInfo _promoInfo; - // helps to impose a global total order on freelistLock ranks; + // Helps to impose a global total order on freelistLock ranks; // assumes that CFLSpace's are allocated in global total order static int _lockRank; - // a lock protecting the free lists and free blocks; + // A lock protecting the free lists and free blocks; // mutable because of ubiquity of locking even for otherwise const methods mutable Mutex _freelistLock; - // locking verifier convenience function + // Locking verifier convenience function void assert_locked() const PRODUCT_RETURN; void assert_locked(const Mutex* lock) const PRODUCT_RETURN; @@ -131,12 +131,13 @@ class CompactibleFreeListSpace: public CompactibleSpace { LinearAllocBlock _smallLinearAllocBlock; FreeBlockDictionary::DictionaryChoice _dictionaryChoice; - AFLBinaryTreeDictionary* _dictionary; // ptr to dictionary for large size blocks + AFLBinaryTreeDictionary* _dictionary; // Pointer to dictionary for large size blocks + // Indexed array for small size blocks AdaptiveFreeList _indexedFreeList[IndexSetSize]; - // indexed array for small size blocks - // allocation stategy - bool _fitStrategy; // Use best fit strategy. + + // Allocation strategy + bool _fitStrategy; // Use best fit strategy bool _adaptive_freelists; // Use adaptive freelists // This is an address close to the largest free chunk in the heap. @@ -157,7 +158,7 @@ class CompactibleFreeListSpace: public CompactibleSpace { // Extra stuff to manage promotion parallelism. - // a lock protecting the dictionary during par promotion allocation. + // A lock protecting the dictionary during par promotion allocation. mutable Mutex _parDictionaryAllocLock; Mutex* parDictionaryAllocLock() const { return &_parDictionaryAllocLock; } @@ -275,26 +276,26 @@ class CompactibleFreeListSpace: public CompactibleSpace { } protected: - // reset the indexed free list to its initial empty condition. + // Reset the indexed free list to its initial empty condition. void resetIndexedFreeListArray(); - // reset to an initial state with a single free block described + // Reset to an initial state with a single free block described // by the MemRegion parameter. void reset(MemRegion mr); // Return the total number of words in the indexed free lists. size_t totalSizeInIndexedFreeLists() const; public: - // Constructor... + // Constructor CompactibleFreeListSpace(BlockOffsetSharedArray* bs, MemRegion mr, bool use_adaptive_freelists, FreeBlockDictionary::DictionaryChoice); - // accessors + // Accessors bool bestFitFirst() { return _fitStrategy == FreeBlockBestFitFirst; } FreeBlockDictionary* dictionary() const { return _dictionary; } HeapWord* nearLargestChunk() const { return _nearLargestChunk; } void set_nearLargestChunk(HeapWord* v) { _nearLargestChunk = v; } - // Set CMS global values + // Set CMS global values. static void set_cms_values(); // Return the free chunk at the end of the space. If no such @@ -305,7 +306,7 @@ class CompactibleFreeListSpace: public CompactibleSpace { void set_collector(CMSCollector* collector) { _collector = collector; } - // Support for parallelization of rescan and marking + // Support for parallelization of rescan and marking. const size_t rescan_task_size() const { return _rescan_task_size; } const size_t marking_task_size() const { return _marking_task_size; } SequentialSubTasksDone* conc_par_seq_tasks() {return &_conc_par_seq_tasks; } @@ -346,7 +347,7 @@ class CompactibleFreeListSpace: public CompactibleSpace { // Resizing support void set_end(HeapWord* value); // override - // mutual exclusion support + // Mutual exclusion support Mutex* freelistLock() const { return &_freelistLock; } // Iteration support @@ -370,7 +371,7 @@ class CompactibleFreeListSpace: public CompactibleSpace { // If the iteration encounters an unparseable portion of the region, // terminate the iteration and return the address of the start of the // subregion that isn't done. Return of "NULL" indicates that the - // interation completed. + // iteration completed. virtual HeapWord* object_iterate_careful_m(MemRegion mr, ObjectClosureCareful* cl); @@ -393,11 +394,11 @@ class CompactibleFreeListSpace: public CompactibleSpace { size_t block_size_nopar(const HeapWord* p) const; bool block_is_obj_nopar(const HeapWord* p) const; - // iteration support for promotion + // Iteration support for promotion void save_marks(); bool no_allocs_since_save_marks(); - // iteration support for sweeping + // Iteration support for sweeping void save_sweep_limit() { _sweep_limit = BlockOffsetArrayUseUnallocatedBlock ? unallocated_block() : end(); @@ -457,7 +458,7 @@ class CompactibleFreeListSpace: public CompactibleSpace { FreeChunk* allocateScratch(size_t size); - // returns true if either the small or large linear allocation buffer is empty. + // Returns true if either the small or large linear allocation buffer is empty. bool linearAllocationWouldFail() const; // Adjust the chunk for the minimum size. This version is called in @@ -477,18 +478,18 @@ class CompactibleFreeListSpace: public CompactibleSpace { void addChunkAndRepairOffsetTable(HeapWord* chunk, size_t size, bool coalesced); - // Support for decisions regarding concurrent collection policy + // Support for decisions regarding concurrent collection policy. bool should_concurrent_collect() const; - // Support for compaction + // Support for compaction. void prepare_for_compaction(CompactPoint* cp); void adjust_pointers(); void compact(); - // reset the space to reflect the fact that a compaction of the + // Reset the space to reflect the fact that a compaction of the // space has been done. virtual void reset_after_compaction(); - // Debugging support + // Debugging support. void print() const; void print_on(outputStream* st) const; void prepare_for_verify(); @@ -500,7 +501,7 @@ class CompactibleFreeListSpace: public CompactibleSpace { // i.e. either the binary tree dictionary, the indexed free lists // or the linear allocation block. bool verify_chunk_in_free_list(FreeChunk* fc) const; - // Verify that the given chunk is the linear allocation block + // Verify that the given chunk is the linear allocation block. bool verify_chunk_is_linear_alloc_block(FreeChunk* fc) const; // Do some basic checks on the the free lists. void check_free_list_consistency() const PRODUCT_RETURN; @@ -516,7 +517,7 @@ class CompactibleFreeListSpace: public CompactibleSpace { size_t sumIndexedFreeListArrayReturnedBytes(); // Return the total number of chunks in the indexed free lists. size_t totalCountInIndexedFreeLists() const; - // Return the total numberof chunks in the space. + // Return the total number of chunks in the space. size_t totalCount(); ) diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp index 097df480ce9..c6f608f5da6 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp @@ -117,10 +117,10 @@ GCCause::Cause CMSCollector::_full_gc_cause = GCCause::_no_gc; // hide the naked CGC_lock manipulation in the baton-passing code // further below. That's something we should try to do. Also, the proof // of correctness of this 2-level locking scheme is far from obvious, -// and potentially quite slippery. We have an uneasy supsicion, for instance, +// and potentially quite slippery. We have an uneasy suspicion, for instance, // that there may be a theoretical possibility of delay/starvation in the // low-level lock/wait/notify scheme used for the baton-passing because of -// potential intereference with the priority scheme embodied in the +// potential interference with the priority scheme embodied in the // CMS-token-passing protocol. See related comments at a CGC_lock->wait() // invocation further below and marked with "XXX 20011219YSR". // Indeed, as we note elsewhere, this may become yet more slippery @@ -259,7 +259,7 @@ ConcurrentMarkSweepGeneration::ConcurrentMarkSweepGeneration( // Ideally, in the calculation below, we'd compute the dilatation // factor as: MinChunkSize/(promoting_gen's min object size) // Since we do not have such a general query interface for the - // promoting generation, we'll instead just use the mimimum + // promoting generation, we'll instead just use the minimum // object size (which today is a header's worth of space); // note that all arithmetic is in units of HeapWords. assert(MinChunkSize >= CollectedHeap::min_fill_size(), "just checking"); @@ -274,7 +274,7 @@ ConcurrentMarkSweepGeneration::ConcurrentMarkSweepGeneration( // // Let "f" be MinHeapFreeRatio in // -// _intiating_occupancy = 100-f + +// _initiating_occupancy = 100-f + // f * (CMSTriggerRatio/100) // where CMSTriggerRatio is the argument "tr" below. // @@ -2671,7 +2671,7 @@ bool CMSCollector::waitForForegroundGC() { // that it's responsible for collecting, while itself doing any // work common to all generations it's responsible for. A similar // comment applies to the gc_epilogue()'s. -// The role of the varaible _between_prologue_and_epilogue is to +// The role of the variable _between_prologue_and_epilogue is to // enforce the invocation protocol. void CMSCollector::gc_prologue(bool full) { // Call gc_prologue_work() for the CMSGen @@ -2878,10 +2878,10 @@ bool CMSCollector::have_cms_token() { // Check reachability of the given heap address in CMS generation, // treating all other generations as roots. bool CMSCollector::is_cms_reachable(HeapWord* addr) { - // We could "guarantee" below, rather than assert, but i'll + // We could "guarantee" below, rather than assert, but I'll // leave these as "asserts" so that an adventurous debugger // could try this in the product build provided some subset of - // the conditions were met, provided they were intersted in the + // the conditions were met, provided they were interested in the // results and knew that the computation below wouldn't interfere // with other concurrent computations mutating the structures // being read or written. @@ -2982,7 +2982,7 @@ bool CMSCollector::verify_after_remark(bool silent) { // This is as intended, because by this time // GC must already have cleared any refs that need to be cleared, // and traced those that need to be marked; moreover, - // the marking done here is not going to intefere in any + // the marking done here is not going to interfere in any // way with the marking information used by GC. NoRefDiscovery no_discovery(ref_processor()); @@ -3000,7 +3000,7 @@ bool CMSCollector::verify_after_remark(bool silent) { if (CMSRemarkVerifyVariant == 1) { // In this first variant of verification, we complete - // all marking, then check if the new marks-verctor is + // all marking, then check if the new marks-vector is // a subset of the CMS marks-vector. verify_after_remark_work_1(); } else if (CMSRemarkVerifyVariant == 2) { @@ -3399,7 +3399,7 @@ HeapWord* ConcurrentMarkSweepGeneration::expand_and_par_lab_allocate(CMSParGCThr CMSExpansionCause::_allocate_par_lab); // Now go around the loop and try alloc again; // A competing par_promote might beat us to the expansion space, - // so we may go around the loop again if promotion fails agaion. + // so we may go around the loop again if promotion fails again. if (GCExpandToAllocateDelayMillis > 0) { os::sleep(Thread::current(), GCExpandToAllocateDelayMillis, false); } @@ -4370,7 +4370,7 @@ void CMSConcMarkingTask::coordinator_yield() { // should really use wait/notify, which is the recommended // way of doing this type of interaction. Additionally, we should // consolidate the eight methods that do the yield operation and they - // are almost identical into one for better maintenability and + // are almost identical into one for better maintainability and // readability. See 6445193. // // Tony 2006.06.29 @@ -4538,7 +4538,7 @@ void CMSCollector::abortable_preclean() { // If Eden's current occupancy is below this threshold, // immediately schedule the remark; else preclean // past the next scavenge in an effort to - // schedule the pause as described avove. By choosing + // schedule the pause as described above. By choosing // CMSScheduleRemarkEdenSizeThreshold >= max eden size // we will never do an actual abortable preclean cycle. if (get_eden_used() > CMSScheduleRemarkEdenSizeThreshold) { @@ -5532,8 +5532,8 @@ CMSParRemarkTask::do_dirty_card_rescan_tasks( // CAUTION! CAUTION! CAUTION! CAUTION! CAUTION! CAUTION! CAUTION! // CAUTION: This closure has state that persists across calls to // the work method dirty_range_iterate_clear() in that it has - // imbedded in it a (subtype of) UpwardsObjectClosure. The - // use of that state in the imbedded UpwardsObjectClosure instance + // embedded in it a (subtype of) UpwardsObjectClosure. The + // use of that state in the embedded UpwardsObjectClosure instance // assumes that the cards are always iterated (even if in parallel // by several threads) in monotonically increasing order per each // thread. This is true of the implementation below which picks @@ -5548,7 +5548,7 @@ CMSParRemarkTask::do_dirty_card_rescan_tasks( // sure that the changes there do not run counter to the // assumptions made here and necessary for correctness and // efficiency. Note also that this code might yield inefficient - // behaviour in the case of very large objects that span one or + // behavior in the case of very large objects that span one or // more work chunks. Such objects would potentially be scanned // several times redundantly. Work on 4756801 should try and // address that performance anomaly if at all possible. XXX @@ -5574,7 +5574,7 @@ CMSParRemarkTask::do_dirty_card_rescan_tasks( while (!pst->is_task_claimed(/* reference */ nth_task)) { // Having claimed the nth_task, compute corresponding mem-region, - // which is a-fortiori aligned correctly (i.e. at a MUT bopundary). + // which is a-fortiori aligned correctly (i.e. at a MUT boundary). // The alignment restriction ensures that we do not need any // synchronization with other gang-workers while setting or // clearing bits in thus chunk of the MUT. @@ -6365,7 +6365,7 @@ void CMSCollector::sweep(bool asynch) { _inter_sweep_timer.reset(); _inter_sweep_timer.start(); - // We need to use a monotonically non-deccreasing time in ms + // We need to use a monotonically non-decreasing time in ms // or we will see time-warp warnings and os::javaTimeMillis() // does not guarantee monotonicity. jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC; @@ -6726,7 +6726,7 @@ bool CMSBitMap::allocate(MemRegion mr) { warning("CMS bit map allocation failure"); return false; } - // For now we'll just commit all of the bit map up fromt. + // For now we'll just commit all of the bit map up front. // Later on we'll try to be more parsimonious with swap. if (!_virtual_space.initialize(brs, brs.size())) { warning("CMS bit map backing store failure"); @@ -6833,8 +6833,8 @@ bool CMSMarkStack::allocate(size_t size) { // XXX FIX ME !!! In the MT case we come in here holding a // leaf lock. For printing we need to take a further lock -// which has lower rank. We need to recallibrate the two -// lock-ranks involved in order to be able to rpint the +// which has lower rank. We need to recalibrate the two +// lock-ranks involved in order to be able to print the // messages below. (Or defer the printing to the caller. // For now we take the expedient path of just disabling the // messages for the problematic case.) @@ -7174,7 +7174,7 @@ size_t ScanMarkedObjectsAgainCarefullyClosure::do_object_careful_m( } #endif // ASSERT } else { - // an unitialized object + // An uninitialized object. assert(_bitMap->isMarked(addr+1), "missing Printezis mark?"); HeapWord* nextOneAddr = _bitMap->getNextMarkedWordAddress(addr + 2); size = pointer_delta(nextOneAddr + 1, addr); @@ -7182,7 +7182,7 @@ size_t ScanMarkedObjectsAgainCarefullyClosure::do_object_careful_m( "alignment problem"); // Note that pre-cleaning needn't redirty the card. OopDesc::set_klass() // will dirty the card when the klass pointer is installed in the - // object (signalling the completion of initialization). + // object (signaling the completion of initialization). } } else { // Either a not yet marked object or an uninitialized object @@ -7993,7 +7993,7 @@ void PushAndMarkClosure::do_oop(oop obj) { // we need to dirty all of the cards that the object spans, // since the rescan of object arrays will be limited to the // dirty cards. - // Note that no one can be intefering with us in this action + // Note that no one can be interfering with us in this action // of dirtying the mod union table, so no locking or atomics // are required. if (obj->is_objArray()) { @@ -9019,7 +9019,7 @@ void CMSParDrainMarkingStackClosure::trim_queue(uint max) { // It's OK to call this multi-threaded; the worst thing // that can happen is that we'll get a bunch of closely -// spaced simulated oveflows, but that's OK, in fact +// spaced simulated overflows, but that's OK, in fact // probably good as it would exercise the overflow code // under contention. bool CMSCollector::simulate_overflow() { @@ -9139,7 +9139,7 @@ bool CMSCollector::par_take_from_overflow_list(size_t num, (void) Atomic::cmpxchg_ptr(NULL, &_overflow_list, BUSY); } } else { - // Chop off the suffix and rerturn it to the global list. + // Chop off the suffix and return it to the global list. assert(cur->mark() != BUSY, "Error"); oop suffix_head = cur->mark(); // suffix will be put back on global list cur->set_mark(NULL); // break off suffix diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp index 2c87671dfe2..e98e8b6ce28 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp @@ -171,19 +171,19 @@ class CMSBitMap VALUE_OBJ_CLASS_SPEC { // Ideally this should be GrowableArray<> just like MSC's marking stack(s). class CMSMarkStack: public CHeapObj { // - friend class CMSCollector; // to get at expasion stats further below + friend class CMSCollector; // To get at expansion stats further below. // - VirtualSpace _virtual_space; // space for the stack - oop* _base; // bottom of stack - size_t _index; // one more than last occupied index - size_t _capacity; // max #elements - Mutex _par_lock; // an advisory lock used in case of parallel access - NOT_PRODUCT(size_t _max_depth;) // max depth plumbed during run + VirtualSpace _virtual_space; // Space for the stack + oop* _base; // Bottom of stack + size_t _index; // One more than last occupied index + size_t _capacity; // Max #elements + Mutex _par_lock; // An advisory lock used in case of parallel access + NOT_PRODUCT(size_t _max_depth;) // Max depth plumbed during run protected: - size_t _hit_limit; // we hit max stack size limit - size_t _failed_double; // we failed expansion before hitting limit + size_t _hit_limit; // We hit max stack size limit + size_t _failed_double; // We failed expansion before hitting limit public: CMSMarkStack(): @@ -238,7 +238,7 @@ class CMSMarkStack: public CHeapObj { _index = 0; } - // Expand the stack, typically in response to an overflow condition + // Expand the stack, typically in response to an overflow condition. void expand(); // Compute the least valued stack element. @@ -250,7 +250,7 @@ class CMSMarkStack: public CHeapObj { return least; } - // Exposed here to allow stack expansion in || case + // Exposed here to allow stack expansion in || case. Mutex* par_lock() { return &_par_lock; } }; @@ -557,7 +557,7 @@ class CMSCollector: public CHeapObj { // Manipulated with CAS in the parallel/multi-threaded case. oop _overflow_list; // The following array-pair keeps track of mark words - // displaced for accomodating overflow list above. + // displaced for accommodating overflow list above. // This code will likely be revisited under RFE#4922830. Stack _preserved_oop_stack; Stack _preserved_mark_stack; @@ -599,7 +599,7 @@ class CMSCollector: public CHeapObj { void verify_after_remark_work_1(); void verify_after_remark_work_2(); - // true if any verification flag is on. + // True if any verification flag is on. bool _verifying; bool verifying() const { return _verifying; } void set_verifying(bool v) { _verifying = v; } @@ -611,9 +611,9 @@ class CMSCollector: public CHeapObj { void set_did_compact(bool v); // XXX Move these to CMSStats ??? FIX ME !!! - elapsedTimer _inter_sweep_timer; // time between sweeps - elapsedTimer _intra_sweep_timer; // time _in_ sweeps - // padded decaying average estimates of the above + elapsedTimer _inter_sweep_timer; // Time between sweeps + elapsedTimer _intra_sweep_timer; // Time _in_ sweeps + // Padded decaying average estimates of the above AdaptivePaddedAverage _inter_sweep_estimate; AdaptivePaddedAverage _intra_sweep_estimate; @@ -632,16 +632,16 @@ class CMSCollector: public CHeapObj { void report_heap_summary(GCWhen::Type when); protected: - ConcurrentMarkSweepGeneration* _cmsGen; // old gen (CMS) - MemRegion _span; // span covering above two - CardTableRS* _ct; // card table + ConcurrentMarkSweepGeneration* _cmsGen; // Old gen (CMS) + MemRegion _span; // Span covering above two + CardTableRS* _ct; // Card table // CMS marking support structures CMSBitMap _markBitMap; CMSBitMap _modUnionTable; CMSMarkStack _markStack; - HeapWord* _restart_addr; // in support of marking stack overflow + HeapWord* _restart_addr; // In support of marking stack overflow void lower_restart_addr(HeapWord* low); // Counters in support of marking stack / work queue overflow handling: @@ -656,12 +656,12 @@ class CMSCollector: public CHeapObj { size_t _par_kac_ovflw; NOT_PRODUCT(ssize_t _num_par_pushes;) - // ("Weak") Reference processing support + // ("Weak") Reference processing support. ReferenceProcessor* _ref_processor; CMSIsAliveClosure _is_alive_closure; - // keep this textually after _markBitMap and _span; c'tor dependency + // Keep this textually after _markBitMap and _span; c'tor dependency. - ConcurrentMarkSweepThread* _cmsThread; // the thread doing the work + ConcurrentMarkSweepThread* _cmsThread; // The thread doing the work ModUnionClosure _modUnionClosure; ModUnionClosurePar _modUnionClosurePar; @@ -697,7 +697,7 @@ class CMSCollector: public CHeapObj { // State related to prologue/epilogue invocation for my generations bool _between_prologue_and_epilogue; - // Signalling/State related to coordination between fore- and backgroud GC + // Signaling/State related to coordination between fore- and background GC // Note: When the baton has been passed from background GC to foreground GC, // _foregroundGCIsActive is true and _foregroundGCShouldWait is false. static bool _foregroundGCIsActive; // true iff foreground collector is active or @@ -712,13 +712,13 @@ class CMSCollector: public CHeapObj { int _numYields; size_t _numDirtyCards; size_t _sweep_count; - // number of full gc's since the last concurrent gc. + // Number of full gc's since the last concurrent gc. uint _full_gcs_since_conc_gc; - // occupancy used for bootstrapping stats + // Occupancy used for bootstrapping stats double _bootstrap_occupancy; - // timer + // Timer elapsedTimer _timer; // Timing, allocation and promotion statistics, used for scheduling. @@ -770,7 +770,7 @@ class CMSCollector: public CHeapObj { int no_of_gc_threads); void push_on_overflow_list(oop p); void par_push_on_overflow_list(oop p); - // the following is, obviously, not, in general, "MT-stable" + // The following is, obviously, not, in general, "MT-stable" bool overflow_list_is_empty() const; void preserve_mark_if_necessary(oop p); @@ -778,24 +778,24 @@ class CMSCollector: public CHeapObj { void preserve_mark_work(oop p, markOop m); void restore_preserved_marks_if_any(); NOT_PRODUCT(bool no_preserved_marks() const;) - // in support of testing overflow code + // In support of testing overflow code NOT_PRODUCT(int _overflow_counter;) - NOT_PRODUCT(bool simulate_overflow();) // sequential + NOT_PRODUCT(bool simulate_overflow();) // Sequential NOT_PRODUCT(bool par_simulate_overflow();) // MT version // CMS work methods - void checkpointRootsInitialWork(bool asynch); // initial checkpoint work + void checkpointRootsInitialWork(bool asynch); // Initial checkpoint work - // a return value of false indicates failure due to stack overflow - bool markFromRootsWork(bool asynch); // concurrent marking work + // A return value of false indicates failure due to stack overflow + bool markFromRootsWork(bool asynch); // Concurrent marking work public: // FIX ME!!! only for testing - bool do_marking_st(bool asynch); // single-threaded marking - bool do_marking_mt(bool asynch); // multi-threaded marking + bool do_marking_st(bool asynch); // Single-threaded marking + bool do_marking_mt(bool asynch); // Multi-threaded marking private: - // concurrent precleaning work + // Concurrent precleaning work size_t preclean_mod_union_table(ConcurrentMarkSweepGeneration* gen, ScanMarkedObjectsAgainCarefullyClosure* cl); size_t preclean_card_table(ConcurrentMarkSweepGeneration* gen, @@ -811,26 +811,26 @@ class CMSCollector: public CHeapObj { // Resets (i.e. clears) the per-thread plab sample vectors void reset_survivor_plab_arrays(); - // final (second) checkpoint work + // Final (second) checkpoint work void checkpointRootsFinalWork(bool asynch, bool clear_all_soft_refs, bool init_mark_was_synchronous); - // work routine for parallel version of remark + // Work routine for parallel version of remark void do_remark_parallel(); - // work routine for non-parallel version of remark + // Work routine for non-parallel version of remark void do_remark_non_parallel(); - // reference processing work routine (during second checkpoint) + // Reference processing work routine (during second checkpoint) void refProcessingWork(bool asynch, bool clear_all_soft_refs); - // concurrent sweeping work + // Concurrent sweeping work void sweepWork(ConcurrentMarkSweepGeneration* gen, bool asynch); - // (concurrent) resetting of support data structures + // (Concurrent) resetting of support data structures void reset(bool asynch); // Clear _expansion_cause fields of constituent generations void clear_expansion_cause(); - // An auxilliary method used to record the ends of + // An auxiliary method used to record the ends of // used regions of each generation to limit the extent of sweep void save_sweep_limits(); @@ -854,7 +854,7 @@ class CMSCollector: public CHeapObj { bool is_external_interruption(); void report_concurrent_mode_interruption(); - // If the backgrould GC is active, acquire control from the background + // If the background GC is active, acquire control from the background // GC and do the collection. void acquire_control_and_collect(bool full, bool clear_all_soft_refs); @@ -893,7 +893,7 @@ class CMSCollector: public CHeapObj { ConcurrentMarkSweepGeneration* cmsGen() { return _cmsGen; } - // locking checks + // Locking checks NOT_PRODUCT(static bool have_cms_token();) // XXXPERM bool should_collect(bool full, size_t size, bool tlab); @@ -958,7 +958,7 @@ class CMSCollector: public CHeapObj { CMSBitMap* markBitMap() { return &_markBitMap; } void directAllocated(HeapWord* start, size_t size); - // main CMS steps and related support + // Main CMS steps and related support void checkpointRootsInitial(bool asynch); bool markFromRoots(bool asynch); // a return value of false indicates failure // due to stack overflow @@ -977,7 +977,7 @@ class CMSCollector: public CHeapObj { // Performance Counter Support CollectorCounters* counters() { return _gc_counters; } - // timer stuff + // Timer stuff void startTimer() { assert(!_timer.is_active(), "Error"); _timer.start(); } void stopTimer() { assert( _timer.is_active(), "Error"); _timer.stop(); } void resetTimer() { assert(!_timer.is_active(), "Error"); _timer.reset(); } @@ -1014,18 +1014,18 @@ class CMSCollector: public CHeapObj { static void print_on_error(outputStream* st); - // debugging + // Debugging void verify(); bool verify_after_remark(bool silent = VerifySilently); void verify_ok_to_terminate() const PRODUCT_RETURN; void verify_work_stacks_empty() const PRODUCT_RETURN; void verify_overflow_empty() const PRODUCT_RETURN; - // convenience methods in support of debugging + // Convenience methods in support of debugging static const size_t skip_header_HeapWords() PRODUCT_RETURN0; HeapWord* block_start(const void* p) const PRODUCT_RETURN0; - // accessors + // Accessors CMSMarkStack* verification_mark_stack() { return &_markStack; } CMSBitMap* verification_mark_bm() { return &_verification_mark_bm; } @@ -1109,7 +1109,7 @@ class ConcurrentMarkSweepGeneration: public CardGeneration { CollectionTypes _debug_collection_type; - // True if a compactiing collection was done. + // True if a compacting collection was done. bool _did_compact; bool did_compact() { return _did_compact; } @@ -1203,7 +1203,7 @@ class ConcurrentMarkSweepGeneration: public CardGeneration { // Support for compaction CompactibleSpace* first_compaction_space() const; - // Adjust quantites in the generation affected by + // Adjust quantities in the generation affected by // the compaction. void reset_after_compaction(); @@ -1301,7 +1301,7 @@ class ConcurrentMarkSweepGeneration: public CardGeneration { void setNearLargestChunk(); bool isNearLargestChunk(HeapWord* addr); - // Get the chunk at the end of the space. Delagates to + // Get the chunk at the end of the space. Delegates to // the space. FreeChunk* find_chunk_at_end(); @@ -1422,7 +1422,6 @@ class MarkFromRootsClosure: public BitMapClosure { // marking from the roots following the first checkpoint. // XXX This should really be a subclass of The serial version // above, but i have not had the time to refactor things cleanly. -// That willbe done for Dolphin. class Par_MarkFromRootsClosure: public BitMapClosure { CMSCollector* _collector; MemRegion _whole_span; @@ -1780,7 +1779,7 @@ class SweepClosure: public BlkClosureCareful { void do_already_free_chunk(FreeChunk *fc); // Work method called when processing an already free or a // freshly garbage chunk to do a lookahead and possibly a - // premptive flush if crossing over _limit. + // preemptive flush if crossing over _limit. void lookahead_and_flush(FreeChunk* fc, size_t chunkSize); // Process a garbage chunk during sweeping. size_t do_garbage_chunk(FreeChunk *fc); @@ -1879,7 +1878,7 @@ class CMSParDrainMarkingStackClosure: public VoidClosure { }; // Allow yielding or short-circuiting of reference list -// prelceaning work. +// precleaning work. class CMSPrecleanRefsYieldClosure: public YieldClosure { CMSCollector* _collector; void do_yield_work(); diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp index 313edcd69e4..46c518e4b64 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp @@ -197,13 +197,13 @@ inline HeapWord* CMSBitMap::getNextMarkedWordAddress( } -// Return the HeapWord address corrsponding to the next "0" bit +// Return the HeapWord address corresponding to the next "0" bit // (inclusive). inline HeapWord* CMSBitMap::getNextUnmarkedWordAddress(HeapWord* addr) const { return getNextUnmarkedWordAddress(addr, endWord()); } -// Return the HeapWord address corrsponding to the next "0" bit +// Return the HeapWord address corresponding to the next "0" bit // (inclusive). inline HeapWord* CMSBitMap::getNextUnmarkedWordAddress( HeapWord* start_addr, HeapWord* end_addr) const { diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp index cbb59df0e77..6de07f235bb 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp @@ -164,7 +164,7 @@ class ConcurrentMarkSweepThread: public ConcurrentGCThread { // _pending_yields that holds the sum (of both sync and async requests), and // a second counter _pending_decrements that only holds the async requests, // for greater efficiency, since in a typical CMS run, there are many more - // pontential (i.e. static) yield points than there are actual + // potential (i.e. static) yield points than there are actual // (i.e. dynamic) yields because of requests, which are few and far between. // // Note that, while "_pending_yields >= _pending_decrements" is an invariant, diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.cpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.cpp index 062974edbb7..40626ee2f66 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.cpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.cpp @@ -279,7 +279,7 @@ void PromotionInfo::print_statistics(uint worker_id) const { // When _spoolTail is NULL, then the set of slots with displaced headers // is all those starting at the slot <_spoolHead, _firstIndex> and // going up to the last slot of last block in the linked list. -// In this lartter case, _splice_point points to the tail block of +// In this latter case, _splice_point points to the tail block of // this linked list of blocks holding displaced headers. void PromotionInfo::verify() const { // Verify the following: diff --git a/hotspot/src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp b/hotspot/src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp index cde213284a8..9d8d8704d33 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp @@ -39,7 +39,7 @@ // up, the wrapped closure is applied to all elements, keeping track of // this elapsed time of this process, and leaving the array empty. // The caller must be sure to call "done" to process any unprocessed -// buffered entriess. +// buffered entries. class Generation; class HeapRegion; diff --git a/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp b/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp index 2a6acd4a7ee..1934159f9bb 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp @@ -33,7 +33,7 @@ ConcurrentG1Refine::ConcurrentG1Refine(G1CollectedHeap* g1h) : _threads(NULL), _n_threads(0), _hot_card_cache(g1h) { - // Ergomonically select initial concurrent refinement parameters + // Ergonomically select initial concurrent refinement parameters if (FLAG_IS_DEFAULT(G1ConcRefinementGreenZone)) { FLAG_SET_DEFAULT(G1ConcRefinementGreenZone, MAX2(ParallelGCThreads, 1)); } diff --git a/hotspot/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp b/hotspot/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp index ee9a1b67aae..72ce48ec580 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp @@ -44,8 +44,8 @@ ConcurrentG1RefineThread(ConcurrentG1Refine* cg1r, ConcurrentG1RefineThread *nex _vtime_accum(0.0) { - // Each thread has its own monitor. The i-th thread is responsible for signalling - // to thread i+1 if the number of buffers in the queue exceeds a threashold for this + // Each thread has its own monitor. The i-th thread is responsible for signaling + // to thread i+1 if the number of buffers in the queue exceeds a threshold for this // thread. Monitors are also used to wake up the threads during termination. // The 0th worker in notified by mutator threads and has a special monitor. // The last worker is used for young gen rset size sampling. diff --git a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp index bf7a7714d3d..c874f56d3c2 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp @@ -909,7 +909,7 @@ void ConcurrentMark::checkpointRootsInitialPre() { } #endif - // Initialise marking structures. This has to be done in a STW phase. + // Initialize marking structures. This has to be done in a STW phase. reset(); // For each region note start of marking. @@ -923,8 +923,8 @@ void ConcurrentMark::checkpointRootsInitialPost() { // If we force an overflow during remark, the remark operation will // actually abort and we'll restart concurrent marking. If we always - // force an oveflow during remark we'll never actually complete the - // marking phase. So, we initilize this here, at the start of the + // force an overflow during remark we'll never actually complete the + // marking phase. So, we initialize this here, at the start of the // cycle, so that at the remaining overflow number will decrease at // every remark and we'll eventually not need to cause one. force_overflow_stw()->init(); @@ -959,7 +959,7 @@ void ConcurrentMark::checkpointRootsInitialPost() { * * Note, however, that this code is also used during remark and in * this case we should not attempt to leave / enter the STS, otherwise - * we'll either hit an asseert (debug / fastdebug) or deadlock + * we'll either hit an assert (debug / fastdebug) or deadlock * (product). So we should only leave / enter the STS if we are * operating concurrently. * @@ -1001,7 +1001,7 @@ void ConcurrentMark::enter_first_sync_barrier(uint worker_id) { // task 0 is responsible for clearing the global data structures // We should be here because of an overflow. During STW we should // not clear the overflow flag since we rely on it being true when - // we exit this method to abort the pause and restart concurent + // we exit this method to abort the pause and restart concurrent // marking. reset_marking_state(true /* clear_overflow */); force_overflow()->update(); @@ -1251,7 +1251,7 @@ void ConcurrentMark::markFromRoots() { CMConcurrentMarkingTask markingTask(this, cmThread()); if (use_parallel_marking_threads()) { _parallel_workers->set_active_workers((int)active_workers); - // Don't set _n_par_threads because it affects MT in proceess_strong_roots() + // Don't set _n_par_threads because it affects MT in process_strong_roots() // and the decisions on that MT processing is made elsewhere. assert(_parallel_workers->active_workers() > 0, "Should have been set"); _parallel_workers->run_task(&markingTask); @@ -1484,7 +1484,7 @@ public: } // Set the marked bytes for the current region so that - // it can be queried by a calling verificiation routine + // it can be queried by a calling verification routine _region_marked_bytes = marked_bytes; return false; @@ -2306,7 +2306,7 @@ class G1CMDrainMarkingStackClosure: public VoidClosure { // oop closure (an instance of G1CMKeepAliveAndDrainClosure above). // // CMTask::do_marking_step() is called in a loop, which we'll exit - // if there's nothing more to do (i.e. we'completely drained the + // if there's nothing more to do (i.e. we've completely drained the // entries that were pushed as a a result of applying the 'keep alive' // closure to the entries on the discovered ref lists) or we overflow // the global marking stack. @@ -2469,7 +2469,7 @@ void ConcurrentMark::weakRefsWork(bool clear_all_soft_refs) { // reference processing is not multi-threaded and is thus // performed by the current thread instead of a gang worker). // - // The gang tasks involved in parallel reference procssing create + // The gang tasks involved in parallel reference processing create // their own instances of these closures, which do their own // synchronization among themselves. G1CMKeepAliveAndDrainClosure g1_keep_alive(this, task(0), true /* is_serial */); @@ -2546,7 +2546,7 @@ private: public: void work(uint worker_id) { // Since all available tasks are actually started, we should - // only proceed if we're supposed to be actived. + // only proceed if we're supposed to be active. if (worker_id < _cm->active_tasks()) { CMTask* task = _cm->task(worker_id); task->record_start_time(); @@ -3066,7 +3066,7 @@ class AggregateCountDataHRClosure: public HeapRegionClosure { // 'start' should be in the heap. assert(_g1h->is_in_g1_reserved(start) && _ct_bs->is_card_aligned(start), "sanity"); - // 'end' *may* be just beyone the end of the heap (if hr is the last region) + // 'end' *may* be just beyond the end of the heap (if hr is the last region) assert(!_g1h->is_in_g1_reserved(end) || _ct_bs->is_card_aligned(end), "sanity"); BitMap::idx_t start_idx = _cm->card_bitmap_index_for(start); @@ -4414,7 +4414,7 @@ void CMTask::do_marking_step(double time_target_ms, // overflow was raised. This means we have to restart the // marking phase and start iterating over regions. However, in // order to do this we have to make sure that all tasks stop - // what they are doing and re-initialise in a safe manner. We + // what they are doing and re-initialize in a safe manner. We // will achieve this with the use of two barrier sync points. if (_cm->verbose_low()) { @@ -4428,7 +4428,7 @@ void CMTask::do_marking_step(double time_target_ms, // When we exit this sync barrier we know that all tasks have // stopped doing marking work. So, it's now safe to - // re-initialise our data structures. At the end of this method, + // re-initialize our data structures. At the end of this method, // task 0 will clear the global data structures. } diff --git a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp index a01024fcb9f..383bb4a6be2 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp @@ -378,19 +378,19 @@ class ConcurrentMark: public CHeapObj { friend class G1CMDrainMarkingStackClosure; protected: - ConcurrentMarkThread* _cmThread; // the thread doing the work - G1CollectedHeap* _g1h; // the heap. - uint _parallel_marking_threads; // the number of marking - // threads we're use - uint _max_parallel_marking_threads; // max number of marking - // threads we'll ever use - double _sleep_factor; // how much we have to sleep, with + ConcurrentMarkThread* _cmThread; // The thread doing the work + G1CollectedHeap* _g1h; // The heap + uint _parallel_marking_threads; // The number of marking + // threads we're using + uint _max_parallel_marking_threads; // Max number of marking + // threads we'll ever use + double _sleep_factor; // How much we have to sleep, with // respect to the work we just did, to // meet the marking overhead goal - double _marking_task_overhead; // marking target overhead for + double _marking_task_overhead; // Marking target overhead for // a single task - // same as the two above, but for the cleanup task + // Same as the two above, but for the cleanup task double _cleanup_sleep_factor; double _cleanup_task_overhead; @@ -399,8 +399,8 @@ protected: // Concurrent marking support structures CMBitMap _markBitMap1; CMBitMap _markBitMap2; - CMBitMapRO* _prevMarkBitMap; // completed mark bitmap - CMBitMap* _nextMarkBitMap; // under-construction mark bitmap + CMBitMapRO* _prevMarkBitMap; // Completed mark bitmap + CMBitMap* _nextMarkBitMap; // Under-construction mark bitmap BitMap _region_bm; BitMap _card_bm; @@ -409,43 +409,43 @@ protected: HeapWord* _heap_start; HeapWord* _heap_end; - // Root region tracking and claiming. + // Root region tracking and claiming CMRootRegions _root_regions; // For gray objects - CMMarkStack _markStack; // Grey objects behind global finger. - HeapWord* volatile _finger; // the global finger, region aligned, + CMMarkStack _markStack; // Grey objects behind global finger + HeapWord* volatile _finger; // The global finger, region aligned, // always points to the end of the // last claimed region - // marking tasks - uint _max_worker_id;// maximum worker id - uint _active_tasks; // task num currently active - CMTask** _tasks; // task queue array (max_worker_id len) - CMTaskQueueSet* _task_queues; // task queue set - ParallelTaskTerminator _terminator; // for termination + // Marking tasks + uint _max_worker_id;// Maximum worker id + uint _active_tasks; // Task num currently active + CMTask** _tasks; // Task queue array (max_worker_id len) + CMTaskQueueSet* _task_queues; // Task queue set + ParallelTaskTerminator _terminator; // For termination - // Two sync barriers that are used to synchronise tasks when an + // Two sync barriers that are used to synchronize tasks when an // overflow occurs. The algorithm is the following. All tasks enter // the first one to ensure that they have all stopped manipulating - // the global data structures. After they exit it, they re-initialise - // their data structures and task 0 re-initialises the global data + // the global data structures. After they exit it, they re-initialize + // their data structures and task 0 re-initializes the global data // structures. Then, they enter the second sync barrier. This // ensure, that no task starts doing work before all data - // structures (local and global) have been re-initialised. When they + // structures (local and global) have been re-initialized. When they // exit it, they are free to start working again. WorkGangBarrierSync _first_overflow_barrier_sync; WorkGangBarrierSync _second_overflow_barrier_sync; - // this is set by any task, when an overflow on the global data - // structures is detected. + // This is set by any task, when an overflow on the global data + // structures is detected volatile bool _has_overflown; - // true: marking is concurrent, false: we're in remark + // True: marking is concurrent, false: we're in remark volatile bool _concurrent; - // set at the end of a Full GC so that marking aborts + // Set at the end of a Full GC so that marking aborts volatile bool _has_aborted; - // used when remark aborts due to an overflow to indicate that + // Used when remark aborts due to an overflow to indicate that // another concurrent marking phase should start volatile bool _restart_for_overflow; @@ -455,10 +455,10 @@ protected: // time of remark. volatile bool _concurrent_marking_in_progress; - // verbose level + // Verbose level CMVerboseLevel _verbose_level; - // All of these times are in ms. + // All of these times are in ms NumberSeq _init_times; NumberSeq _remark_times; NumberSeq _remark_mark_times; @@ -467,7 +467,7 @@ protected: double _total_counting_time; double _total_rs_scrub_time; - double* _accum_task_vtime; // accumulated task vtime + double* _accum_task_vtime; // Accumulated task vtime FlexibleWorkGang* _parallel_workers; @@ -487,7 +487,7 @@ protected: void reset_marking_state(bool clear_overflow = true); // We do this after we're done with marking so that the marking data - // structures are initialised to a sensible and predictable state. + // structures are initialized to a sensible and predictable state. void set_non_marking_state(); // Called to indicate how many threads are currently active. @@ -497,14 +497,14 @@ protected: // mark or remark) and how many threads are currently active. void set_concurrency_and_phase(uint active_tasks, bool concurrent); - // prints all gathered CM-related statistics + // Prints all gathered CM-related statistics void print_stats(); bool cleanup_list_is_empty() { return _cleanup_list.is_empty(); } - // accessor methods + // Accessor methods uint parallel_marking_threads() const { return _parallel_marking_threads; } uint max_parallel_marking_threads() const { return _max_parallel_marking_threads;} double sleep_factor() { return _sleep_factor; } @@ -542,7 +542,7 @@ protected: // frequently. HeapRegion* claim_region(uint worker_id); - // It determines whether we've run out of regions to scan. + // It determines whether we've run out of regions to scan bool out_of_regions() { return _finger == _heap_end; } // Returns the task with the given id @@ -816,7 +816,7 @@ public: inline bool do_yield_check(uint worker_i = 0); inline bool should_yield(); - // Called to abort the marking cycle after a Full GC takes palce. + // Called to abort the marking cycle after a Full GC takes place. void abort(); bool has_aborted() { return _has_aborted; } @@ -933,11 +933,11 @@ public: // Similar to the above routine but there are times when we cannot // safely calculate the size of obj due to races and we, therefore, - // pass the size in as a parameter. It is the caller's reponsibility + // pass the size in as a parameter. It is the caller's responsibility // to ensure that the size passed in for obj is valid. inline bool par_mark_and_count(oop obj, size_t word_size, uint worker_id); - // Unconditionally mark the given object, and unconditinally count + // Unconditionally mark the given object, and unconditionally count // the object in the counting structures for worker id 0. // Should *not* be called from parallel code. inline bool mark_and_count(oop obj, HeapRegion* hr); diff --git a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.inline.hpp b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.inline.hpp index ea45f2d6466..e4ca5ecee5e 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.inline.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.inline.hpp @@ -105,7 +105,7 @@ inline void ConcurrentMark::count_region(MemRegion mr, HeapRegion* hr, // will then correspond to a (non-existent) card that is also // just beyond the heap. if (g1h->is_in_g1_reserved(end) && !ct_bs->is_card_aligned(end)) { - // end of region is not card aligned - incremement to cover + // end of region is not card aligned - increment to cover // all the cards spanned by the region. end_idx += 1; } @@ -222,7 +222,7 @@ inline bool ConcurrentMark::par_mark_and_count(oop obj, return false; } -// Unconditionally mark the given object, and unconditinally count +// Unconditionally mark the given object, and unconditionally count // the object in the counting structures for worker id 0. // Should *not* be called from parallel code. inline bool ConcurrentMark::mark_and_count(oop obj, HeapRegion* hr) { diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1AllocRegion.inline.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1AllocRegion.inline.hpp index c096de3837a..05efc6ebc3d 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1AllocRegion.inline.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1AllocRegion.inline.hpp @@ -70,7 +70,7 @@ inline HeapWord* G1AllocRegion::attempt_allocation(size_t word_size, inline HeapWord* G1AllocRegion::attempt_allocation_locked(size_t word_size, bool bot_updates) { - // First we have to tedo the allocation, assuming we're holding the + // First we have to redo the allocation, assuming we're holding the // appropriate lock, in case another thread changed the region while // we were waiting to get the lock. HeapWord* result = attempt_allocation(word_size, bot_updates); diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp index c35681f959c..d1188fe3c37 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp @@ -448,7 +448,7 @@ HeapWord* G1BlockOffsetArray::block_start_careful(const void* addr) const { // Otherwise, find the block start using the table, but taking // care (cf block_start_unsafe() above) not to parse any objects/blocks - // on the cards themsleves. + // on the cards themselves. size_t index = _array->index_for(addr); assert(_array->address_for_index(index) == addr, "arg should be start of card"); diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CardCounts.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1CardCounts.cpp index 59041d34ae2..ccb7c3f10b3 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CardCounts.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CardCounts.cpp @@ -169,7 +169,7 @@ void G1CardCounts::clear_region(HeapRegion* hr) { // We use the last address in hr as hr could be the // last region in the heap. In which case trying to find - // the card for hr->end() will be an OOB accesss to the + // the card for hr->end() will be an OOB access to the // card table. HeapWord* last = hr->end() - 1; assert(_g1h->g1_committed().contains(last), diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp index 0529507e585..4c6a0d7af67 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @@ -1373,7 +1373,7 @@ public: // Divide the heap region sequence into "chunks" of some size (the number // of regions divided by the number of parallel threads times some // overpartition factor, currently 4). Assumes that this will be called - // in parallel by ParallelGCThreads worker threads with discinct worker + // in parallel by ParallelGCThreads worker threads with distinct worker // ids in the range [0..max(ParallelGCThreads-1, 1)], that all parallel // calls will use the same "claim_value", and that that claim value is // different from the claim_value of any heap region before the start of @@ -1518,7 +1518,7 @@ public: // Returns "true" iff the given word_size is "very large". static bool isHumongous(size_t word_size) { // Note this has to be strictly greater-than as the TLABs - // are capped at the humongous thresold and we want to + // are capped at the humongous threshold and we want to // ensure that we don't try to allocate a TLAB as // humongous and that we don't allocate a humongous // object in a TLAB. @@ -1648,24 +1648,24 @@ public: // Optimized nmethod scanning support routines - // Register the given nmethod with the G1 heap + // Register the given nmethod with the G1 heap. virtual void register_nmethod(nmethod* nm); - // Unregister the given nmethod from the G1 heap + // Unregister the given nmethod from the G1 heap. virtual void unregister_nmethod(nmethod* nm); // Migrate the nmethods in the code root lists of the regions // in the collection set to regions in to-space. In the event // of an evacuation failure, nmethods that reference objects - // that were not successfullly evacuated are not migrated. + // that were not successfully evacuated are not migrated. void migrate_strong_code_roots(); // During an initial mark pause, mark all the code roots that // point into regions *not* in the collection set. void mark_strong_code_roots(uint worker_id); - // Rebuild the stong code root lists for each region - // after a full GC + // Rebuild the strong code root lists for each region + // after a full GC. void rebuild_strong_code_roots(); // Delete entries for dead interned string and clean up unreferenced symbols diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp index 86f6c369f88..109b40debed 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp @@ -1075,7 +1075,7 @@ void G1CollectorPolicy::record_collection_pause_end(double pause_time_ms, Evacua } _short_lived_surv_rate_group->start_adding_regions(); - // do that for any other surv rate groupsx + // Do that for any other surv rate groups if (update_stats) { double cost_per_card_ms = 0.0; @@ -1741,7 +1741,7 @@ void G1CollectorPolicy::add_to_incremental_cset_info(HeapRegion* hr, size_t rs_l _inc_cset_predicted_elapsed_time_ms += region_elapsed_time_ms; _inc_cset_bytes_used_before += used_bytes; - // Cache the values we have added to the aggregated informtion + // Cache the values we have added to the aggregated information // in the heap region in case we have to remove this region from // the incremental collection set, or it is updated by the // rset sampling code diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp index 438bec82c51..b7469279c8d 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp @@ -116,7 +116,7 @@ class TraceGen1TimeData : public CHeapObj { // If only -XX:NewRatio is set we should use the specified ratio of the heap // as both min and max. This will be interpreted as "fixed" just like the // NewSize==MaxNewSize case above. But we will update the min and max -// everytime the heap size changes. +// every time the heap size changes. // // NewSize and MaxNewSize override NewRatio. So, NewRatio is ignored if it is // combined with either NewSize or MaxNewSize. (A warning message is printed.) @@ -523,9 +523,9 @@ private: // synchronize updates to this field. size_t _inc_cset_recorded_rs_lengths; - // A concurrent refinement thread periodcially samples the young + // A concurrent refinement thread periodically samples the young // region RSets and needs to update _inc_cset_recorded_rs_lengths as - // the RSets grow. Instead of having to syncronize updates to that + // the RSets grow. Instead of having to synchronize updates to that // field we accumulate them in this field and add it to // _inc_cset_recorded_rs_lengths_diffs at the start of a GC. ssize_t _inc_cset_recorded_rs_lengths_diffs; @@ -604,7 +604,7 @@ private: // Calculate and return the maximum young list target length that // can fit into the pause time goal. The parameters are: rs_lengths // represent the prediction of how large the young RSet lengths will - // be, base_min_length is the alreay existing number of regions in + // be, base_min_length is the already existing number of regions in // the young list, min_length and max_length are the desired min and // max young list length according to the user's inputs. uint calculate_young_list_target_length(size_t rs_lengths, diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1MMUTracker.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1MMUTracker.hpp index b8ca02c4d5e..956b23e0450 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1MMUTracker.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1MMUTracker.hpp @@ -103,7 +103,7 @@ private: // The data structure implemented is a circular queue. // Head "points" to the most recent addition, tail to the oldest one. // The array is of fixed size and I don't think we'll need more than - // two or three entries with the current behaviour of G1 pauses. + // two or three entries with the current behavior of G1 pauses. // If the array is full, an easy fix is to look for the pauses with // the shortest gap between them and consolidate them. // For now, we have taken the expedient alternative of forgetting diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp index ca385549269..2cc0f46a2cc 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp @@ -176,7 +176,7 @@ void G1MarkSweep::mark_sweep_phase1(bool& marked_for_unloading, // any hash values from the mark word. These hash values are // used when verifying the dictionaries and so removing them // from the mark word can make verification of the dictionaries - // fail. At the end of the GC, the orginal mark word values + // fail. At the end of the GC, the original mark word values // (including hash values) are restored to the appropriate // objects. if (!VerifySilently) { diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1MonitoringSupport.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1MonitoringSupport.cpp index 8bbe4ff94ca..1c4f29d88c3 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1MonitoringSupport.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1MonitoringSupport.cpp @@ -112,7 +112,7 @@ G1MonitoringSupport::G1MonitoringSupport(G1CollectedHeap* g1h) : // take_sample() only returns "used". When sampling was used, there // were some anomolous values emitted which may have been the consequence // of not updating all values simultaneously (i.e., see the calculation done - // in eden_space_used(), is it possbile that the values used to + // in eden_space_used(), is it possible that the values used to // calculate either eden_used or survivor_used are being updated by // the collector when the sample is being done?). const bool sampled = false; @@ -135,7 +135,7 @@ G1MonitoringSupport::G1MonitoringSupport(G1CollectedHeap* g1h) : // Young collection set // name "generation.0". This is logically the young generation. - // The "0, 3" are paremeters for the n-th genertaion (=0) with 3 spaces. + // The "0, 3" are parameters for the n-th generation (=0) with 3 spaces. // See _old_collection_counters for additional counters _young_collection_counters = new G1YoungGenerationCounters(this, "young"); @@ -254,7 +254,7 @@ void G1MonitoringSupport::update_sizes() { eden_counters()->update_capacity(pad_capacity(eden_space_committed())); eden_counters()->update_used(eden_space_used()); // only the to survivor space (s1) is active, so we don't need to - // update the counteres for the from survivor space (s0) + // update the counters for the from survivor space (s0) to_counters()->update_capacity(pad_capacity(survivor_space_committed())); to_counters()->update_used(survivor_space_used()); old_space_counters()->update_capacity(pad_capacity(old_space_committed())); diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1MonitoringSupport.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1MonitoringSupport.hpp index 03b7300ae51..d354c746cb0 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1MonitoringSupport.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1MonitoringSupport.hpp @@ -108,7 +108,7 @@ class G1CollectedHeap; // is that all the above sizes need to be recalculated when the old // gen changes capacity (after a GC or after a humongous allocation) // but only the eden occupancy changes when a new eden region is -// allocated. So, in the latter case we have minimal recalcuation to +// allocated. So, in the latter case we have minimal recalculation to // do which is important as we want to keep the eden region allocation // path as low-overhead as possible. diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp index e26d2a6951d..ab1bd83eab4 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp @@ -177,7 +177,7 @@ inline void G1UpdateRSOrPushRefOopClosure::do_oop_nv(T* p) { // The _record_refs_into_cset flag is true during the RSet // updating part of an evacuation pause. It is false at all // other times: - // * rebuilding the rembered sets after a full GC + // * rebuilding the remembered sets after a full GC // * during concurrent refinement. // * updating the remembered sets of regions in the collection // set in the event of an evacuation failure (when deferred diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp index a11be17ef53..44437fcdb7a 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp @@ -195,7 +195,7 @@ public: HeapRegionRemSetIterator iter(hrrs); size_t card_index; - // We claim cards in block so as to recude the contention. The block size is determined by + // We claim cards in block so as to reduce the contention. The block size is determined by // the G1RSetScanBlockSize parameter. size_t jump_to_card = hrrs->iter_claimed_next(_block_size); for (size_t current_card = 0; iter.has_next(card_index); current_card++) { @@ -587,7 +587,7 @@ bool G1RemSet::refine_card(jbyte* card_ptr, int worker_i, // While we are processing RSet buffers during the collection, we // actually don't want to scan any cards on the collection set, - // since we don't want to update remebered sets with entries that + // since we don't want to update remembered sets with entries that // point into the collection set, given that live objects from the // collection set are about to move and such entries will be stale // very soon. This change also deals with a reliability issue which diff --git a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp index 47a7a7a088f..587ad1e1812 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp @@ -1027,7 +1027,7 @@ void HeapRegion::verify(VerifyOption vo, } } - // Loook up end - 1 + // Look up end - 1 HeapWord* addr_4 = the_end - 1; HeapWord* b_start_4 = _offsets.block_start_const(addr_4); if (b_start_4 != p) { @@ -1111,7 +1111,7 @@ void G1OffsetTableContigSpace::set_saved_mark() { // will be false, and it will pick up top() as the high water mark // of region. If it does so after _gc_time_stamp = ..., then it // will pick up the right saved_mark_word() as the high water mark - // of the region. Either way, the behaviour will be correct. + // of the region. Either way, the behavior will be correct. ContiguousSpace::set_saved_mark(); OrderAccess::storestore(); _gc_time_stamp = curr_gc_time_stamp; diff --git a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.hpp b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.hpp index f58c4f94711..4f14926f34f 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.hpp @@ -97,7 +97,7 @@ class HeapRegionSeq: public CHeapObj { HeapWord* heap_end() const {return _regions.end_address_mapped(); } public: - // Empty contructor, we'll initialize it with the initialize() method. + // Empty constructor, we'll initialize it with the initialize() method. HeapRegionSeq() : _regions(), _committed_length(0), _next_search_index(0), _allocated_length(0) { } void initialize(HeapWord* bottom, HeapWord* end); diff --git a/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp b/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp index aa8718e9952..c8aeb086766 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp @@ -71,7 +71,7 @@ void PtrQueue::locking_enqueue_completed_buffer(void** buf) { assert(_lock->owned_by_self(), "Required."); // We have to unlock _lock (which may be Shared_DirtyCardQ_lock) before - // we acquire DirtyCardQ_CBL_mon inside enqeue_complete_buffer as they + // we acquire DirtyCardQ_CBL_mon inside enqueue_complete_buffer as they // have the same rank and we may get the "possible deadlock" message _lock->unlock(); @@ -151,7 +151,7 @@ void PtrQueue::handle_zero_index() { // The current PtrQ may be the shared dirty card queue and // may be being manipulated by more than one worker thread - // during a pause. Since the enqueuing of the completed + // during a pause. Since the enqueueing of the completed // buffer unlocks the Shared_DirtyCardQ_lock more than one // worker thread can 'race' on reading the shared queue attributes // (_buf and _index) and multiple threads can call into this @@ -170,7 +170,7 @@ void PtrQueue::handle_zero_index() { locking_enqueue_completed_buffer(buf); // enqueue completed buffer - // While the current thread was enqueuing the buffer another thread + // While the current thread was enqueueing the buffer another thread // may have a allocated a new buffer and inserted it into this pointer // queue. If that happens then we just return so that the current // thread doesn't overwrite the buffer allocated by the other thread diff --git a/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.hpp b/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.hpp index 86d5db16298..ccd51c92ec1 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.hpp @@ -144,7 +144,7 @@ public: // Attempts to ensure that the given card_index in the given region is in // the sparse table. If successful (because the card was already - // present, or because it was successfullly added) returns "true". + // present, or because it was successfully added) returns "true". // Otherwise, returns "false" to indicate that the addition would // overflow the entry for the region. The caller must transfer these // entries to a larger-capacity representation. @@ -201,8 +201,7 @@ public: bool has_next(size_t& card_index); }; -// Concurrent accesss to a SparsePRT must be serialized by some external -// mutex. +// Concurrent access to a SparsePRT must be serialized by some external mutex. class SparsePRTIter; class SparsePRTCleanupTask; @@ -248,7 +247,7 @@ public: // Attempts to ensure that the given card_index in the given region is in // the sparse table. If successful (because the card was already - // present, or because it was successfullly added) returns "true". + // present, or because it was successfully added) returns "true". // Otherwise, returns "false" to indicate that the addition would // overflow the entry for the region. The caller must transfer these // entries to a larger-capacity representation. diff --git a/hotspot/src/share/vm/gc_implementation/parNew/asParNewGeneration.cpp b/hotspot/src/share/vm/gc_implementation/parNew/asParNewGeneration.cpp index 2925b9d439d..6d0e1a2243c 100644 --- a/hotspot/src/share/vm/gc_implementation/parNew/asParNewGeneration.cpp +++ b/hotspot/src/share/vm/gc_implementation/parNew/asParNewGeneration.cpp @@ -154,7 +154,7 @@ bool ASParNewGeneration::resize_generation(size_t eden_size, // There used to be this guarantee there. // guarantee ((eden_size + 2*survivor_size) <= _max_gen_size, "incorrect input arguments"); // Code below forces this requirement. In addition the desired eden - // size and disired survivor sizes are desired goals and may + // size and desired survivor sizes are desired goals and may // exceed the total generation size. assert(min_gen_size() <= orig_size && orig_size <= max_gen_size(), diff --git a/hotspot/src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp b/hotspot/src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp index dd975440033..64bf6f03458 100644 --- a/hotspot/src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp +++ b/hotspot/src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp @@ -213,7 +213,7 @@ process_chunk_boundaries(Space* sp, && sp->block_is_obj(first_block) // first block is an object && !(oop(first_block)->is_objArray() // first block is not an array (arrays are precisely dirtied) || oop(first_block)->is_typeArray())) { - // Find our least non-clean card, so that a left neighbour + // Find our least non-clean card, so that a left neighbor // does not scan an object straddling the mutual boundary // too far to the right, and attempt to scan a portion of // that object twice. @@ -247,14 +247,14 @@ process_chunk_boundaries(Space* sp, } NOISY(else { tty->print_cr(" LNC: Found no dirty card in current chunk; leaving LNC entry NULL"); // In the future, we could have this thread look for a non-NULL value to copy from its - // right neighbour (up to the end of the first object). + // right neighbor (up to the end of the first object). if (last_card_of_cur_chunk < last_card_of_first_obj) { tty->print_cr(" LNC: BEWARE!!! first obj straddles past right end of chunk:\n" " might be efficient to get value from right neighbour?"); } }) } else { - // In this case we can help our neighbour by just asking them + // In this case we can help our neighbor by just asking them // to stop at our first card (even though it may not be dirty). NOISY(tty->print_cr(" LNC: first block is not a non-array object; setting LNC to first card of current chunk");) assert(lowest_non_clean[cur_chunk_index] == NULL, "Write once : value should be stable hereafter"); diff --git a/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp b/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp index 0b5e950418e..d97cc0dceb0 100644 --- a/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp +++ b/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp @@ -1070,7 +1070,7 @@ void ParNewGeneration::collect(bool full, size_policy->avg_survived()->sample(from()->used()); } - // We need to use a monotonically non-deccreasing time in ms + // We need to use a monotonically non-decreasing time in ms // or we will see time-warp warnings and os::javaTimeMillis() // does not guarantee monotonicity. jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC; @@ -1402,7 +1402,7 @@ oop ParNewGeneration::copy_to_survivor_space_with_undo( #ifndef PRODUCT // It's OK to call this multi-threaded; the worst thing // that can happen is that we'll get a bunch of closely -// spaced simulated oveflows, but that's OK, in fact +// spaced simulated overflows, but that's OK, in fact // probably good as it would exercise the overflow code // under contention. bool ParNewGeneration::should_simulate_overflow() { diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp index ee9ce8b89d4..c3e1231353b 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp @@ -118,8 +118,8 @@ size_t AdjoiningGenerations::reserved_byte_size() { // Make checks on the current sizes of the generations and -// the contraints on the sizes of the generations. Push -// up the boundary within the contraints. A partial +// the constraints on the sizes of the generations. Push +// up the boundary within the constraints. A partial // push can occur. void AdjoiningGenerations::request_old_gen_expansion(size_t expand_in_bytes) { assert(UseAdaptiveSizePolicy && UseAdaptiveGCBoundary, "runtime check"); diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp index e80877e2606..238802070d5 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp @@ -69,7 +69,7 @@ class AdjoiningGenerations : public CHeapObj { // the available space and attempt to move the boundary if more space // is needed. The growth is not guaranteed to occur. void adjust_boundary_for_old_gen_needs(size_t desired_change_in_bytes); - // Similary for a growth of the young generation. + // Similarly for a growth of the young generation. void adjust_boundary_for_young_gen_needs(size_t eden_size, size_t survivor_size); // Return the total byte size of the reserved space diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp index 82ea39b525a..b49ccb05c1e 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp @@ -65,7 +65,7 @@ class CheckForUnmarkedOops : public OopClosure { } }; -// Checks all objects for the existance of some type of mark, +// Checks all objects for the existence of some type of mark, // precise or imprecise, dirty or newgen. class CheckForUnmarkedObjects : public ObjectClosure { private: @@ -84,7 +84,7 @@ class CheckForUnmarkedObjects : public ObjectClosure { } // Card marks are not precise. The current system can leave us with - // a mismash of precise marks and beginning of object marks. This means + // a mismatch of precise marks and beginning of object marks. This means // we test for missing precise marks first. If any are found, we don't // fail unless the object head is also unmarked. virtual void do_object(oop obj) { diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.cpp index 08c75e14677..331c4e70f99 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.cpp @@ -202,12 +202,12 @@ void GCTaskQueue::enqueue(GCTaskQueue* list) { list->print("list:"); } if (list->is_empty()) { - // Enqueuing the empty list: nothing to do. + // Enqueueing the empty list: nothing to do. return; } uint list_length = list->length(); if (is_empty()) { - // Enqueuing to empty list: just acquire elements. + // Enqueueing to empty list: just acquire elements. set_insert_end(list->insert_end()); set_remove_end(list->remove_end()); set_length(list_length); diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.hpp index 76b0ec92dd8..01e3c9363de 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.hpp @@ -303,7 +303,7 @@ protected: // load balancing (i.e., over partitioning). The last task to be // executed by a GC thread in a job is a work stealing task. A // GC thread that gets a work stealing task continues to execute -// that task until the job is done. In the static number of GC theads +// that task until the job is done. In the static number of GC threads // case, tasks are added to a queue (FIFO). The work stealing tasks are // the last to be added. Once the tasks are added, the GC threads grab // a task and go. A single thread can do all the non-work stealing tasks diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp index 6a46f9fd13f..2c1c57b4d40 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp @@ -673,7 +673,7 @@ ParallelScavengeHeap* ParallelScavengeHeap::heap() { // Before delegating the resize to the young generation, // the reserved space for the young and old generations -// may be changed to accomodate the desired resize. +// may be changed to accommodate the desired resize. void ParallelScavengeHeap::resize_young_gen(size_t eden_size, size_t survivor_size) { if (UseAdaptiveGCBoundary) { @@ -690,7 +690,7 @@ void ParallelScavengeHeap::resize_young_gen(size_t eden_size, // Before delegating the resize to the old generation, // the reserved space for the young and old generations -// may be changed to accomodate the desired resize. +// may be changed to accommodate the desired resize. void ParallelScavengeHeap::resize_old_gen(size_t desired_free_space) { if (UseAdaptiveGCBoundary) { if (size_policy()->bytes_absorbed_from_eden() != 0) { diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp index f530945e350..40e7fb9d3db 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp @@ -45,7 +45,7 @@ // the do_it() method of a ThreadRootsMarkingTask is executed, it // starts marking from the thread's roots. // -// The enqueuing of the MarkFromRootsTask and ThreadRootsMarkingTask +// The enqueueing of the MarkFromRootsTask and ThreadRootsMarkingTask // do little more than create the task and put it on a queue. The // queue is a GCTaskQueue and threads steal tasks from this GCTaskQueue. // diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp index a2f2fa722bf..a1b84ced957 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp @@ -482,7 +482,7 @@ void PSAdaptiveSizePolicy::compute_old_gen_free_space( // adjust down the total heap size. Adjust down the larger of the // generations. - // Add some checks for a threshhold for a change. For example, + // Add some checks for a threshold for a change. For example, // a change less than the necessary alignment is probably not worth // attempting. @@ -1161,7 +1161,7 @@ uint PSAdaptiveSizePolicy::compute_survivor_space_size_and_threshold( // We use the tenuring threshold to equalize the cost of major // and minor collections. // ThresholdTolerance is used to indicate how sensitive the - // tenuring threshold is to differences in cost betweent the + // tenuring threshold is to differences in cost between the // collection types. // Get the times of interest. This involves a little work, so diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp index 3389911876f..674773b243f 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp @@ -37,7 +37,7 @@ // // It also computes an optimal tenuring threshold between the young // and old generations, so as to equalize the cost of collections -// of those generations, as well as optimial survivor space sizes +// of those generations, as well as optimal survivor space sizes // for the young generation. // // While this class is specifically intended for a generational system @@ -113,7 +113,7 @@ class PSAdaptiveSizePolicy : public AdaptiveSizePolicy { // Changing the generation sizing depends on the data that is // gathered about the effects of changes on the pause times and // throughput. These variable count the number of data points - // gathered. The policy may use these counters as a threshhold + // gathered. The policy may use these counters as a threshold // for reliable data. julong _young_gen_change_for_major_pause_count; diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp index 1db22443178..4c8bd4a7fd7 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp @@ -195,7 +195,7 @@ class PSGCAdaptivePolicyCounters : public GCAdaptivePolicyCounters { // Update all the counters that can be updated from the size policy. // This should be called after all policy changes have been made - // and reflected internall in the size policy. + // and reflected internally in the size policy. void update_counters_from_policy(); // Update counters that can be updated from fields internal to the diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp index 65f9ece3b51..39d88816718 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp @@ -661,7 +661,7 @@ void PSMarkSweep::mark_sweep_phase4() { } jlong PSMarkSweep::millis_since_last_gc() { - // We need a monotonically non-deccreasing time in ms but + // We need a monotonically non-decreasing time in ms but // os::javaTimeMillis() does not guarantee monotonicity. jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC; jlong ret_val = now - _time_of_last_gc; @@ -674,7 +674,7 @@ jlong PSMarkSweep::millis_since_last_gc() { } void PSMarkSweep::reset_millis_since_last_gc() { - // We need a monotonically non-deccreasing time in ms but + // We need a monotonically non-decreasing time in ms but // os::javaTimeMillis() does not guarantee monotonicity. _time_of_last_gc = os::javaTimeNanos() / NANOSECS_PER_MILLISEC; } diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp index 5e970eed4c4..8ffdb0fbb37 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp @@ -280,7 +280,7 @@ bool PSOldGen::expand_by(size_t bytes) { "Should be true before post_resize()"); MemRegion mangle_region(object_space()->end(), virtual_space_high); // Note that the object space has not yet been updated to - // coincede with the new underlying virtual space. + // coincide with the new underlying virtual space. SpaceMangler::mangle_region(mangle_region); } post_resize(); diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp index 90fa0d5632d..0dbd4732f72 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp @@ -187,7 +187,7 @@ class PSOldGen : public CHeapObj { void space_invariants() PRODUCT_RETURN; - // Performace Counter support + // Performance Counter support void update_counters(); // Printing support diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp index 8b4f0bd46f1..f2e83ca21df 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp @@ -2176,7 +2176,7 @@ bool PSParallelCompact::invoke_no_policy(bool maximum_heap_compaction) { heap->resize_all_tlabs(); - // Resize the metaspace capactiy after a collection + // Resize the metaspace capacity after a collection MetaspaceGC::compute_new_size(); if (TraceGen1Time) accumulated_time()->stop(); @@ -3285,7 +3285,7 @@ PSParallelCompact::move_and_update(ParCompactionManager* cm, SpaceId space_id) { } jlong PSParallelCompact::millis_since_last_gc() { - // We need a monotonically non-deccreasing time in ms but + // We need a monotonically non-decreasing time in ms but // os::javaTimeMillis() does not guarantee monotonicity. jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC; jlong ret_val = now - _time_of_last_gc; @@ -3298,7 +3298,7 @@ jlong PSParallelCompact::millis_since_last_gc() { } void PSParallelCompact::reset_millis_since_last_gc() { - // We need a monotonically non-deccreasing time in ms but + // We need a monotonically non-decreasing time in ms but // os::javaTimeMillis() does not guarantee monotonicity. _time_of_last_gc = os::javaTimeNanos() / NANOSECS_PER_MILLISEC; } diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp index 0f1b77b92f2..9d37b133b05 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp @@ -877,7 +877,7 @@ inline void ParMarkBitMapClosure::decrement_words_remaining(size_t words) { // The summary phase calculates the total live data to the left of each region // XXX. Based on that total and the bottom of the space, it can calculate the // starting location of the live data in XXX. The summary phase calculates for -// each region XXX quantites such as +// each region XXX quantities such as // // - the amount of live data at the beginning of a region from an object // entering the region. diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp index e0427ef18e9..e87529c734d 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp @@ -78,7 +78,7 @@ class PSPromotionLAB : public CHeapObj { // Returns a subregion containing all objects in this space. MemRegion used_region() { return MemRegion(bottom(), top()); } - // Boolean querries. + // Boolean queries. bool is_empty() const { return used() == 0; } bool not_empty() const { return used() > 0; } bool contains(const void* p) const { return _bottom <= p && p < _end; } diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp index 8f47d582fd6..ed2c32155c5 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp @@ -558,7 +558,7 @@ bool PSScavenge::invoke_no_policy() { ((gc_cause != GCCause::_java_lang_system_gc) || UseAdaptiveSizePolicyWithSystemGC)) { - // Calculate optimial free space amounts + // Calculate optimal free space amounts assert(young_gen->max_size() > young_gen->from_space()->capacity_in_bytes() + young_gen->to_space()->capacity_in_bytes(), diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp index 02e36ac291d..a8530f0a6a7 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp @@ -35,7 +35,7 @@ class PSVirtualSpace : public CHeapObj { friend class VMStructs; protected: - // The space is committed/uncommited in chunks of size _alignment. The + // The space is committed/uncommitted in chunks of size _alignment. The // ReservedSpace passed to initialize() must be aligned to this value. const size_t _alignment; diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp index 74ac4477c96..1ea30b4027f 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp @@ -136,7 +136,7 @@ void PSYoungGen::initialize_work() { // generation - the less space committed, the smaller the survivor // space, possibly as small as an alignment. However, we are interested // in the case where the young generation is 100% committed, as this - // is the point where eden reachs its maximum size. At this point, + // is the point where eden reaches its maximum size. At this point, // the size of a survivor space is max_survivor_size. max_eden_size = size - 2 * max_survivor_size; } @@ -288,7 +288,7 @@ bool PSYoungGen::resize_generation(size_t eden_size, size_t survivor_size) { // There used to be this guarantee there. // guarantee ((eden_size + 2*survivor_size) <= _max_gen_size, "incorrect input arguments"); // Code below forces this requirement. In addition the desired eden - // size and disired survivor sizes are desired goals and may + // size and desired survivor sizes are desired goals and may // exceed the total generation size. assert(min_gen_size() <= orig_size && orig_size <= max_size(), "just checking"); diff --git a/hotspot/src/share/vm/gc_implementation/shared/adaptiveSizePolicy.cpp b/hotspot/src/share/vm/gc_implementation/shared/adaptiveSizePolicy.cpp index 3e7c716d481..ada9cbb3490 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/adaptiveSizePolicy.cpp +++ b/hotspot/src/share/vm/gc_implementation/shared/adaptiveSizePolicy.cpp @@ -121,7 +121,7 @@ int AdaptiveSizePolicy::calc_default_active_workers(uintx total_workers, // Choose a number of GC threads based on the current size // of the heap. This may be complicated because the size of - // the heap depends on factors such as the thoughput goal. + // the heap depends on factors such as the throughput goal. // Still a large heap should be collected by more GC threads. active_workers_by_heap_size = MAX2((size_t) 2U, Universe::heap()->capacity() / HeapSizePerGCThread); @@ -445,7 +445,7 @@ void AdaptiveSizePolicy::check_gc_overhead_limit( // into account (i.e., don't trigger if the amount of free // space has suddenly jumped up). If the current is much // higher than the average, use the average since it represents - // the longer term behavor. + // the longer term behavior. const size_t live_in_eden = MIN2(eden_live, (size_t) avg_eden_live()->average()); const size_t free_in_eden = max_eden_size > live_in_eden ? diff --git a/hotspot/src/share/vm/gc_implementation/shared/adaptiveSizePolicy.hpp b/hotspot/src/share/vm/gc_implementation/shared/adaptiveSizePolicy.hpp index 2fca75fce54..f2f4b53c7f5 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/adaptiveSizePolicy.hpp +++ b/hotspot/src/share/vm/gc_implementation/shared/adaptiveSizePolicy.hpp @@ -74,7 +74,7 @@ class AdaptiveSizePolicy : public CHeapObj { }; // Goal for the fraction of the total time during which application - // threads run. + // threads run const double _throughput_goal; // Last calculated sizes, in bytes, and aligned @@ -83,21 +83,21 @@ class AdaptiveSizePolicy : public CHeapObj { size_t _survivor_size; // calculated survivor size in bytes - // This is a hint for the heap: we've detected that gc times + // This is a hint for the heap: we've detected that GC times // are taking longer than GCTimeLimit allows. bool _gc_overhead_limit_exceeded; // Use for diagnostics only. If UseGCOverheadLimit is false, // this variable is still set. bool _print_gc_overhead_limit_would_be_exceeded; // Count of consecutive GC that have exceeded the - // GC time limit criterion. + // GC time limit criterion uint _gc_overhead_limit_count; // This flag signals that GCTimeLimit is being exceeded - // but may not have done so for the required number of consequetive - // collections. + // but may not have done so for the required number of consecutive + // collections // Minor collection timers used to determine both - // pause and interval times for collections. + // pause and interval times for collections static elapsedTimer _minor_timer; // Major collection timers, used to determine both @@ -120,7 +120,7 @@ class AdaptiveSizePolicy : public CHeapObj { // Statistics for survivor space calculation for young generation AdaptivePaddedAverage* _avg_survived; - // Objects that have been directly allocated in the old generation. + // Objects that have been directly allocated in the old generation AdaptivePaddedNoZeroDevAverage* _avg_pretenured; // Variable for estimating the major and minor pause times. @@ -142,33 +142,33 @@ class AdaptiveSizePolicy : public CHeapObj { // for making ergonomic decisions. double _latest_minor_mutator_interval_seconds; - // Allowed difference between major and minor gc times, used - // for computing tenuring_threshold. + // Allowed difference between major and minor GC times, used + // for computing tenuring_threshold const double _threshold_tolerance_percent; - const double _gc_pause_goal_sec; // goal for maximum gc pause + const double _gc_pause_goal_sec; // Goal for maximum GC pause // Flag indicating that the adaptive policy is ready to use bool _young_gen_policy_is_ready; - // decrease/increase the young generation for minor pause time + // Decrease/increase the young generation for minor pause time int _change_young_gen_for_min_pauses; - // decrease/increase the old generation for major pause time + // Decrease/increase the old generation for major pause time int _change_old_gen_for_maj_pauses; - // change old geneneration for throughput + // change old generation for throughput int _change_old_gen_for_throughput; // change young generation for throughput int _change_young_gen_for_throughput; // Flag indicating that the policy would - // increase the tenuring threshold because of the total major gc cost - // is greater than the total minor gc cost + // increase the tenuring threshold because of the total major GC cost + // is greater than the total minor GC cost bool _increment_tenuring_threshold_for_gc_cost; - // decrease the tenuring threshold because of the the total minor gc - // cost is greater than the total major gc cost + // decrease the tenuring threshold because of the the total minor GC + // cost is greater than the total major GC cost bool _decrement_tenuring_threshold_for_gc_cost; // decrease due to survivor size limit bool _decrement_tenuring_threshold_for_survivor_limit; @@ -182,7 +182,7 @@ class AdaptiveSizePolicy : public CHeapObj { // Changing the generation sizing depends on the data that is // gathered about the effects of changes on the pause times and // throughput. These variable count the number of data points - // gathered. The policy may use these counters as a threshhold + // gathered. The policy may use these counters as a threshold // for reliable data. julong _young_gen_change_for_minor_throughput; julong _old_gen_change_for_major_throughput; @@ -225,7 +225,7 @@ class AdaptiveSizePolicy : public CHeapObj { // larger than 1.0 if just the sum of the minor cost the // the major cost is used. Worse than that is the // fact that the minor cost and the major cost each - // tend toward 1.0 in the extreme of high gc costs. + // tend toward 1.0 in the extreme of high GC costs. // Limit the value of gc_cost to 1.0 so that the mutator // cost stays non-negative. virtual double gc_cost() const { @@ -238,23 +238,23 @@ class AdaptiveSizePolicy : public CHeapObj { virtual double time_since_major_gc() const; // Average interval between major collections to be used - // in calculating the decaying major gc cost. An overestimate + // in calculating the decaying major GC cost. An overestimate // of this time would be a conservative estimate because // this time is used to decide if the major GC cost // should be decayed (i.e., if the time since the last - // major gc is long compared to the time returned here, + // major GC is long compared to the time returned here, // then the major GC cost will be decayed). See the // implementations for the specifics. virtual double major_gc_interval_average_for_decay() const { return _avg_major_interval->average(); } - // Return the cost of the GC where the major gc cost + // Return the cost of the GC where the major GC cost // has been decayed based on the time since the last // major collection. double decaying_gc_cost() const; - // Decay the major gc cost. Use this only for decisions on + // Decay the major GC cost. Use this only for decisions on // whether to adjust, not to determine by how much to adjust. // This approximation is crude and may not be good enough for the // latter. diff --git a/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp b/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp index 0fb6d7fa23e..87ced750d35 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp +++ b/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp @@ -49,11 +49,11 @@ class AllocationStats VALUE_OBJ_CLASS_SPEC { // estimates. AdaptivePaddedAverage _demand_rate_estimate; - ssize_t _desired; // Demand stimate computed as described above + ssize_t _desired; // Demand estimate computed as described above ssize_t _coal_desired; // desired +/- small-percent for tuning coalescing - ssize_t _surplus; // count - (desired +/- small-percent), - // used to tune splitting in best fit + ssize_t _surplus; // count - (desired +/- small-percent), + // used to tune splitting in best fit ssize_t _bfr_surp; // surplus at start of current sweep ssize_t _prev_sweep; // count from end of previous sweep ssize_t _before_sweep; // count from before current sweep diff --git a/hotspot/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp b/hotspot/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp index 7b755cb0427..0aba69e2a64 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp +++ b/hotspot/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp @@ -54,7 +54,7 @@ void ConcurrentGCThread::safepoint_desynchronize() { void ConcurrentGCThread::create_and_start() { if (os::create_thread(this, os::cgc_thread)) { // XXX: need to set this to low priority - // unless "agressive mode" set; priority + // unless "aggressive mode" set; priority // should be just less than that of VMThread. os::set_priority(this, NearMaxPriority); if (!_should_terminate && !DisableStartThread) { diff --git a/hotspot/src/share/vm/gc_implementation/shared/gcUtil.cpp b/hotspot/src/share/vm/gc_implementation/shared/gcUtil.cpp index 62492359527..fc1662e8b65 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/gcUtil.cpp +++ b/hotspot/src/share/vm/gc_implementation/shared/gcUtil.cpp @@ -159,7 +159,7 @@ double LinearLeastSquareFit::y(double x) { // that no calculation of the slope has yet been done. Returning true // for a slope equal to 0 reflects the intuitive expectation of the // dependence on the slope. Don't use the complement of these functions -// since that untuitive expectation is not built into the complement. +// since that intuitive expectation is not built into the complement. bool LinearLeastSquareFit::decrement_will_decrease() { return (_slope >= 0.00); } diff --git a/hotspot/src/share/vm/gc_implementation/shared/gcUtil.hpp b/hotspot/src/share/vm/gc_implementation/shared/gcUtil.hpp index ad3075c9023..0e32e2a970f 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/gcUtil.hpp +++ b/hotspot/src/share/vm/gc_implementation/shared/gcUtil.hpp @@ -210,7 +210,7 @@ class LinearLeastSquareFit : public CHeapObj { double y(double x); double slope() { return _slope; } // Methods to decide if a change in the dependent variable will - // achive a desired goal. Note that these methods are not + // achieve a desired goal. Note that these methods are not // complementary and both are needed. bool decrement_will_decrease(); bool increment_will_decrease(); diff --git a/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp b/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp index ba7d00d68ba..566e619cfb7 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp +++ b/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp @@ -72,7 +72,7 @@ void MutableNUMASpace::check_mangled_unused_area_complete() { #endif // NOT_PRODUCT // There may be unallocated holes in the middle chunks -// that should be filled with dead objects to ensure parseability. +// that should be filled with dead objects to ensure parsability. void MutableNUMASpace::ensure_parsability() { for (int i = 0; i < lgrp_spaces()->length(); i++) { LGRPSpace *ls = lgrp_spaces()->at(i); @@ -880,8 +880,8 @@ void MutableNUMASpace::print_on(outputStream* st) const { } void MutableNUMASpace::verify() { - // This can be called after setting an arbitary value to the space's top, - // so an object can cross the chunk boundary. We ensure the parsablity + // This can be called after setting an arbitrary value to the space's top, + // so an object can cross the chunk boundary. We ensure the parsability // of the space and just walk the objects in linear fashion. ensure_parsability(); MutableSpace::verify(); diff --git a/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.hpp b/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.hpp index ea2ddec4f02..78cc761f80b 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.hpp +++ b/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.hpp @@ -31,7 +31,7 @@ // A MutableSpace is a subtype of ImmutableSpace that supports the // concept of allocation. This includes the concepts that a space may -// be only partially full, and the querry methods that go with such +// be only partially full, and the query methods that go with such // an assumption. MutableSpace is also responsible for minimizing the // page allocation time by having the memory pretouched (with // AlwaysPretouch) and for optimizing page placement on NUMA systems @@ -111,7 +111,7 @@ class MutableSpace: public ImmutableSpace { virtual void mangle_region(MemRegion mr) PRODUCT_RETURN; - // Boolean querries. + // Boolean queries. bool is_empty() const { return used_in_words() == 0; } bool not_empty() const { return used_in_words() > 0; } bool contains(const void* p) const { return _bottom <= p && p < _end; } diff --git a/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.cpp b/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.cpp index 87f74484ab8..18df2dd2ce5 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.cpp +++ b/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.cpp @@ -152,7 +152,7 @@ ParGCAllocBufferWithBOT::ParGCAllocBufferWithBOT(size_t word_sz, // The buffer comes with its own BOT, with a shared (obviously) underlying // BlockOffsetSharedArray. We manipulate this BOT in the normal way -// as we would for any contiguous space. However, on accasion we +// as we would for any contiguous space. However, on occasion we // need to do some buffer surgery at the extremities before we // start using the body of the buffer for allocations. Such surgery // (as explained elsewhere) is to prevent allocation on a card that diff --git a/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp b/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp index 80a4a223cbd..4759cbb3b7c 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp +++ b/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp @@ -92,7 +92,7 @@ public: } // The total (word) size of the buffer, including both allocated and - // unallocted space. + // unallocated space. size_t word_sz() { return _word_sz; } // Should only be done if we are about to reset with a new buffer of the diff --git a/hotspot/src/share/vm/gc_implementation/shared/spaceDecorator.hpp b/hotspot/src/share/vm/gc_implementation/shared/spaceDecorator.hpp index 8d500ae50bf..43bb04911a6 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/spaceDecorator.hpp +++ b/hotspot/src/share/vm/gc_implementation/shared/spaceDecorator.hpp @@ -75,7 +75,7 @@ class SpaceMangler: public CHeapObj { // High water mark for allocations. Typically, the space above // this point have been mangle previously and don't need to be - // touched again. Space belows this point has been allocated + // touched again. Space below this point has been allocated // and remangling is needed between the current top and this // high water mark. HeapWord* _top_for_allocations; diff --git a/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.cpp b/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.cpp index 6f535034346..51b0df489ad 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.cpp +++ b/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.cpp @@ -82,7 +82,7 @@ void VM_GC_Operation::release_and_notify_pending_list_lock() { // Allocations may fail in several threads at about the same time, // resulting in multiple gc requests. We only want to do one of them. -// In case a GC locker is active and the need for a GC is already signalled, +// In case a GC locker is active and the need for a GC is already signaled, // we want to skip this GC attempt altogether, without doing a futile // safepoint operation. bool VM_GC_Operation::skip_operation() const { diff --git a/hotspot/src/share/vm/gc_interface/gcCause.hpp b/hotspot/src/share/vm/gc_interface/gcCause.hpp index 809bab4c46d..1df82dba700 100644 --- a/hotspot/src/share/vm/gc_interface/gcCause.hpp +++ b/hotspot/src/share/vm/gc_interface/gcCause.hpp @@ -31,7 +31,7 @@ // This class exposes implementation details of the various // collector(s), and we need to be very careful with it. If // use of this class grows, we should split it into public -// and implemenation-private "causes". +// and implementation-private "causes". // class GCCause : public AllStatic { diff --git a/hotspot/src/share/vm/memory/allocation.hpp b/hotspot/src/share/vm/memory/allocation.hpp index 590b74f5ddf..aeed2fab75c 100644 --- a/hotspot/src/share/vm/memory/allocation.hpp +++ b/hotspot/src/share/vm/memory/allocation.hpp @@ -576,8 +576,8 @@ class ResourceObj ALLOCATION_SUPER_CLASS_SPEC { bool allocated_on_res_area() const { return get_allocation_type() == RESOURCE_AREA; } bool allocated_on_C_heap() const { return get_allocation_type() == C_HEAP; } bool allocated_on_arena() const { return get_allocation_type() == ARENA; } - ResourceObj(); // default construtor - ResourceObj(const ResourceObj& r); // default copy construtor + ResourceObj(); // default constructor + ResourceObj(const ResourceObj& r); // default copy constructor ResourceObj& operator=(const ResourceObj& r); // default copy assignment ~ResourceObj(); #endif // ASSERT diff --git a/hotspot/src/share/vm/memory/barrierSet.hpp b/hotspot/src/share/vm/memory/barrierSet.hpp index 4fa307d3d09..825f82446c1 100644 --- a/hotspot/src/share/vm/memory/barrierSet.hpp +++ b/hotspot/src/share/vm/memory/barrierSet.hpp @@ -124,7 +124,7 @@ public: virtual bool has_read_region_opt() = 0; virtual bool has_write_region_opt() = 0; - // These operations should assert false unless the correponding operation + // These operations should assert false unless the corresponding operation // above returns true. Otherwise, they should perform an appropriate // barrier for an array whose elements are all in the given memory region. virtual void read_ref_array(MemRegion mr) = 0; @@ -165,7 +165,7 @@ public: // normally reserve space for such tables, and commit parts of the table // "covering" parts of the heap that are committed. The constructor is // passed the maximum number of independently committable subregions to - // be covered, and the "resize_covoered_region" function allows the + // be covered, and the "resize_covered_region" function allows the // sub-parts of the heap to inform the barrier set of changes of their // sizes. BarrierSet(int max_covered_regions) : diff --git a/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp b/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp index 30b0382992c..9f2dcebfc14 100644 --- a/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp +++ b/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp @@ -56,7 +56,7 @@ TreeChunk* TreeChunk::as_TreeChunk(Chu template class FreeList_t> void TreeChunk::verify_tree_chunk_list() const { TreeChunk* nextTC = (TreeChunk*)next(); - if (prev() != NULL) { // interior list node shouldn'r have tree fields + if (prev() != NULL) { // interior list node shouldn't have tree fields guarantee(embedded_list()->parent() == NULL && embedded_list()->left() == NULL && embedded_list()->right() == NULL, "should be clear"); } @@ -247,7 +247,7 @@ TreeList* TreeList::remove_chunk_repla prevFC->link_after(nextTC); } - // Below this point the embeded TreeList being used for the + // Below this point the embedded TreeList being used for the // tree node may have changed. Don't use "this" // TreeList*. // chunk should still be a free chunk (bit set in _prev) @@ -703,7 +703,7 @@ TreeList* BinaryTreeDictionary::remove // The only use of this method would not pass the root of the // tree (as indicated by the assertion above that the tree list // has a parent) but the specification does not explicitly exclude the - // passing of the root so accomodate it. + // passing of the root so accommodate it. set_root(NULL); } debug_only( diff --git a/hotspot/src/share/vm/memory/binaryTreeDictionary.hpp b/hotspot/src/share/vm/memory/binaryTreeDictionary.hpp index 23d7fe0ae24..1867ed2ae22 100644 --- a/hotspot/src/share/vm/memory/binaryTreeDictionary.hpp +++ b/hotspot/src/share/vm/memory/binaryTreeDictionary.hpp @@ -322,7 +322,7 @@ class BinaryTreeDictionary: public FreeBlockDictionary { void set_tree_hints(void); // Reset statistics for all the lists in the tree. void clear_tree_census(void); - // Print the statistcis for all the lists in the tree. Also may + // Print the statistics for all the lists in the tree. Also may // print out summaries. void print_dict_census(void) const; void print_free_lists(outputStream* st) const; diff --git a/hotspot/src/share/vm/memory/blockOffsetTable.cpp b/hotspot/src/share/vm/memory/blockOffsetTable.cpp index c0b35cdde0f..7a54e147790 100644 --- a/hotspot/src/share/vm/memory/blockOffsetTable.cpp +++ b/hotspot/src/share/vm/memory/blockOffsetTable.cpp @@ -590,7 +590,7 @@ HeapWord* BlockOffsetArrayNonContigSpace::block_start_careful( // Otherwise, find the block start using the table, but taking // care (cf block_start_unsafe() above) not to parse any objects/blocks - // on the cards themsleves. + // on the cards themselves. size_t index = _array->index_for(addr); assert(_array->address_for_index(index) == addr, "arg should be start of card"); diff --git a/hotspot/src/share/vm/memory/blockOffsetTable.hpp b/hotspot/src/share/vm/memory/blockOffsetTable.hpp index d434536c5e4..2730bee618c 100644 --- a/hotspot/src/share/vm/memory/blockOffsetTable.hpp +++ b/hotspot/src/share/vm/memory/blockOffsetTable.hpp @@ -424,7 +424,7 @@ class BlockOffsetArrayNonContigSpace: public BlockOffsetArray { BlockOffsetArray(array, mr, false), _unallocated_block(_bottom) { } - // accessor + // Accessor HeapWord* unallocated_block() const { assert(BlockOffsetArrayUseUnallocatedBlock, "_unallocated_block is not being maintained"); diff --git a/hotspot/src/share/vm/memory/cardTableModRefBS.cpp b/hotspot/src/share/vm/memory/cardTableModRefBS.cpp index 5e9d843ff52..2f23b3a7617 100644 --- a/hotspot/src/share/vm/memory/cardTableModRefBS.cpp +++ b/hotspot/src/share/vm/memory/cardTableModRefBS.cpp @@ -98,7 +98,7 @@ CardTableModRefBS::CardTableModRefBS(MemRegion whole_heap, "card marking array"); } - // The assember store_check code will do an unsigned shift of the oop, + // The assembler store_check code will do an unsigned shift of the oop, // then add it to byte_map_base, i.e. // // _byte_map = byte_map_base + (uintptr_t(low_bound) >> card_shift) @@ -243,7 +243,7 @@ void CardTableModRefBS::resize_covered_region(MemRegion new_region) { if (new_region.word_size() != old_region.word_size()) { // Commit new or uncommit old pages, if necessary. MemRegion cur_committed = _committed[ind]; - // Extend the end of this _commited region + // Extend the end of this _committed region // to cover the end of any lower _committed regions. // This forms overlapping regions, but never interior regions. HeapWord* const max_prev_end = largest_prev_committed_end(ind); @@ -448,7 +448,7 @@ void CardTableModRefBS::non_clean_card_iterate_possibly_parallel(Space* sp, // off parallelism is used, then active_workers can be used in // place of n_par_threads. // This is an example of a path where n_par_threads is - // set to 0 to turn off parallism. + // set to 0 to turn off parallelism. // [7] CardTableModRefBS::non_clean_card_iterate() // [8] CardTableRS::younger_refs_in_space_iterate() // [9] Generation::younger_refs_in_space_iterate() diff --git a/hotspot/src/share/vm/memory/cardTableRS.cpp b/hotspot/src/share/vm/memory/cardTableRS.cpp index ddd65d42083..d79b4b92ec8 100644 --- a/hotspot/src/share/vm/memory/cardTableRS.cpp +++ b/hotspot/src/share/vm/memory/cardTableRS.cpp @@ -590,7 +590,7 @@ void CardTableRS::verify_space(Space* s, HeapWord* gen_boundary) { // Then, the case analysis above reveals that, in the worst case, // any such stale card will be scanned unnecessarily at most twice. // - // It is nonethelss advisable to try and get rid of some of this + // It is nonetheless advisable to try and get rid of some of this // redundant work in a subsequent (low priority) re-design of // the card-scanning code, if only to simplify the underlying // state machine analysis/proof. ysr 1/28/2002. XXX diff --git a/hotspot/src/share/vm/memory/collectorPolicy.cpp b/hotspot/src/share/vm/memory/collectorPolicy.cpp index 5975c0d134d..17a88c08a86 100644 --- a/hotspot/src/share/vm/memory/collectorPolicy.cpp +++ b/hotspot/src/share/vm/memory/collectorPolicy.cpp @@ -45,7 +45,7 @@ #include "gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp" #endif // INCLUDE_ALL_GCS -// CollectorPolicy methods. +// CollectorPolicy methods CollectorPolicy::CollectorPolicy() : _space_alignment(0), @@ -185,7 +185,7 @@ size_t CollectorPolicy::compute_heap_alignment() { // other collectors should also be updated to do their own alignment and then // this use of lcm() should be removed. if (UseLargePages && !UseParallelGC) { - // in presence of large pages we have to make sure that our + // In presence of large pages we have to make sure that our // alignment is large page aware alignment = lcm(os::large_page_size(), alignment); } @@ -193,7 +193,7 @@ size_t CollectorPolicy::compute_heap_alignment() { return alignment; } -// GenCollectorPolicy methods. +// GenCollectorPolicy methods GenCollectorPolicy::GenCollectorPolicy() : _min_gen0_size(0), @@ -375,10 +375,10 @@ void TwoGenerationCollectorPolicy::initialize_flags() { _initial_heap_byte_size = InitialHeapSize; } - // adjust max heap size if necessary + // Adjust NewSize and OldSize or MaxHeapSize to match each other if (NewSize + OldSize > MaxHeapSize) { if (_max_heap_size_cmdline) { - // somebody set a maximum heap size with the intention that we should not + // Somebody has set a maximum heap size with the intention that we should not // exceed it. Adjust New/OldSize as necessary. uintx calculated_size = NewSize + OldSize; double shrink_factor = (double) MaxHeapSize / calculated_size; @@ -439,9 +439,8 @@ void GenCollectorPolicy::initialize_size_info() { // minimum gen0 sizes. if (_max_heap_byte_size == _min_heap_byte_size) { - // The maximum and minimum heap sizes are the same so - // the generations minimum and initial must be the - // same as its maximum. + // The maximum and minimum heap sizes are the same so the generations + // minimum and initial must be the same as its maximum. _min_gen0_size = max_new_size; _initial_gen0_size = max_new_size; _max_gen0_size = max_new_size; @@ -463,8 +462,7 @@ void GenCollectorPolicy::initialize_size_info() { // For the case where NewSize is the default, use NewRatio // to size the minimum and initial generation sizes. // Use the default NewSize as the floor for these values. If - // NewRatio is overly large, the resulting sizes can be too - // small. + // NewRatio is overly large, the resulting sizes can be too small. _min_gen0_size = MAX2(scale_by_NewRatio_aligned(_min_heap_byte_size), NewSize); desired_new_size = MAX2(scale_by_NewRatio_aligned(_initial_heap_byte_size), NewSize); @@ -483,8 +481,7 @@ void GenCollectorPolicy::initialize_size_info() { _max_gen0_size = bound_minus_alignment(_max_gen0_size, _max_heap_byte_size); // At this point all three sizes have been checked against the - // maximum sizes but have not been checked for consistency - // among the three. + // maximum sizes but have not been checked for consistency among the three. // Final check min <= initial <= max _min_gen0_size = MIN2(_min_gen0_size, _max_gen0_size); @@ -492,7 +489,7 @@ void GenCollectorPolicy::initialize_size_info() { _min_gen0_size = MIN2(_min_gen0_size, _initial_gen0_size); } - // Write back to flags if necessary + // Write back to flags if necessary. if (NewSize != _initial_gen0_size) { FLAG_SET_ERGO(uintx, NewSize, _initial_gen0_size); } @@ -538,7 +535,7 @@ bool TwoGenerationCollectorPolicy::adjust_gen0_sizes(size_t* gen0_size_ptr, } // Minimum sizes of the generations may be different than -// the initial sizes. An inconsistently is permitted here +// the initial sizes. An inconsistency is permitted here // in the total size that can be specified explicitly by // command line specification of OldSize and NewSize and // also a command line specification of -Xms. Issue a warning @@ -550,12 +547,12 @@ void TwoGenerationCollectorPolicy::initialize_size_info() { // At this point the minimum, initial and maximum sizes // of the overall heap and of gen0 have been determined. // The maximum gen1 size can be determined from the maximum gen0 - // and maximum heap size since no explicit flags exits + // and maximum heap size since no explicit flags exist // for setting the gen1 maximum. _max_gen1_size = MAX2(_max_heap_byte_size - _max_gen0_size, _gen_alignment); // If no explicit command line flag has been set for the - // gen1 size, use what is left for gen1. + // gen1 size, use what is left for gen1 if (!FLAG_IS_CMDLINE(OldSize)) { // The user has not specified any value but the ergonomics // may have chosen a value (which may or may not be consistent @@ -567,14 +564,14 @@ void TwoGenerationCollectorPolicy::initialize_size_info() { // _max_gen1_size has already been made consistent above FLAG_SET_ERGO(uintx, OldSize, _initial_gen1_size); } else { - // It's been explicitly set on the command line. Use the + // OldSize has been explicitly set on the command line. Use the // OldSize and then determine the consequences. _min_gen1_size = MIN2(OldSize, _min_heap_byte_size - _min_gen0_size); _initial_gen1_size = OldSize; // If the user has explicitly set an OldSize that is inconsistent // with other command line flags, issue a warning. - // The generation minimums and the overall heap mimimum should + // The generation minimums and the overall heap minimum should // be within one generation alignment. if ((_min_gen1_size + _min_gen0_size + _gen_alignment) < _min_heap_byte_size) { warning("Inconsistency between minimum heap size and minimum " @@ -596,7 +593,7 @@ void TwoGenerationCollectorPolicy::initialize_size_info() { _min_gen0_size, _initial_gen0_size, _max_gen0_size); } } - // Initial size + // The same as above for the old gen initial size. if (adjust_gen0_sizes(&_initial_gen0_size, &_initial_gen1_size, _initial_heap_byte_size)) { if (PrintGCDetails && Verbose) { @@ -606,10 +603,10 @@ void TwoGenerationCollectorPolicy::initialize_size_info() { } } } - // Enforce the maximum gen1 size. + _min_gen1_size = MIN2(_min_gen1_size, _max_gen1_size); - // Check that min gen1 <= initial gen1 <= max gen1 + // Make sure that min gen1 <= initial gen1 <= max gen1. _initial_gen1_size = MAX2(_initial_gen1_size, _min_gen1_size); _initial_gen1_size = MIN2(_initial_gen1_size, _max_gen1_size); @@ -650,10 +647,9 @@ HeapWord* GenCollectorPolicy::mem_allocate_work(size_t size, HeapWord* result = NULL; - // Loop until the allocation is satisified, - // or unsatisfied after GC. + // Loop until the allocation is satisfied, or unsatisfied after GC. for (int try_count = 1, gclocker_stalled_count = 0; /* return or throw */; try_count += 1) { - HandleMark hm; // discard any handles allocated in each iteration + HandleMark hm; // Discard any handles allocated in each iteration. // First allocation attempt is lock-free. Generation *gen0 = gch->get_gen(0); @@ -666,7 +662,7 @@ HeapWord* GenCollectorPolicy::mem_allocate_work(size_t size, return result; } } - unsigned int gc_count_before; // read inside the Heap_lock locked region + unsigned int gc_count_before; // Read inside the Heap_lock locked region. { MutexLocker ml(Heap_lock); if (PrintGC && Verbose) { @@ -685,19 +681,19 @@ HeapWord* GenCollectorPolicy::mem_allocate_work(size_t size, if (GC_locker::is_active_and_needs_gc()) { if (is_tlab) { - return NULL; // Caller will retry allocating individual object + return NULL; // Caller will retry allocating individual object. } if (!gch->is_maximal_no_gc()) { - // Try and expand heap to satisfy request + // Try and expand heap to satisfy request. result = expand_heap_and_allocate(size, is_tlab); - // result could be null if we are out of space + // Result could be null if we are out of space. if (result != NULL) { return result; } } if (gclocker_stalled_count > GCLockerRetryAllocationCount) { - return NULL; // we didn't get to do a GC and we didn't get any memory + return NULL; // We didn't get to do a GC and we didn't get any memory. } // If this thread is not in a jni critical section, we stall @@ -732,7 +728,7 @@ HeapWord* GenCollectorPolicy::mem_allocate_work(size_t size, result = op.result(); if (op.gc_locked()) { assert(result == NULL, "must be NULL if gc_locked() is true"); - continue; // retry and/or stall as necessary + continue; // Retry and/or stall as necessary. } // Allocation has failed and a collection @@ -793,7 +789,7 @@ HeapWord* GenCollectorPolicy::satisfy_failed_allocation(size_t size, if (!gch->is_maximal_no_gc()) { result = expand_heap_and_allocate(size, is_tlab); } - return result; // could be null if we are out of space + return result; // Could be null if we are out of space. } else if (!gch->incremental_collection_will_fail(false /* don't consult_young */)) { // Do an incremental collection. gch->do_collection(false /* full */, @@ -915,10 +911,8 @@ MetaWord* CollectorPolicy::satisfy_failed_metadata_allocation( GCCause::_metadata_GC_threshold); VMThread::execute(&op); - // If GC was locked out, try again. Check - // before checking success because the prologue - // could have succeeded and the GC still have - // been locked out. + // If GC was locked out, try again. Check before checking success because the + // prologue could have succeeded and the GC still have been locked out. if (op.gc_locked()) { continue; } @@ -979,7 +973,7 @@ void MarkSweepPolicy::initialize_generations() { } void MarkSweepPolicy::initialize_gc_policy_counters() { - // initialize the policy counters - 2 collectors, 3 generations + // Initialize the policy counters - 2 collectors, 3 generations. if (UseParNewGC) { _gc_policy_counters = new GCPolicyCounters("ParNew:MSC", 2, 3); } else { diff --git a/hotspot/src/share/vm/memory/collectorPolicy.hpp b/hotspot/src/share/vm/memory/collectorPolicy.hpp index b72030113c4..815f1555726 100644 --- a/hotspot/src/share/vm/memory/collectorPolicy.hpp +++ b/hotspot/src/share/vm/memory/collectorPolicy.hpp @@ -76,10 +76,10 @@ class CollectorPolicy : public CHeapObj { size_t _heap_alignment; // Needed to keep information if MaxHeapSize was set on the command line - // when the flag value is aligned etc by ergonomics + // when the flag value is aligned etc by ergonomics. bool _max_heap_size_cmdline; - // The sizing of the heap are controlled by a sizing policy. + // The sizing of the heap is controlled by a sizing policy. AdaptiveSizePolicy* _size_policy; // Set to true when policy wants soft refs cleared. @@ -102,7 +102,7 @@ class CollectorPolicy : public CHeapObj { initialize_size_info(); } - // Return maximum heap alignment that may be imposed by the policy + // Return maximum heap alignment that may be imposed by the policy. static size_t compute_heap_alignment(); size_t space_alignment() { return _space_alignment; } @@ -180,7 +180,7 @@ class CollectorPolicy : public CHeapObj { size_t size, Metaspace::MetadataType mdtype); - // Performace Counter support + // Performance Counter support GCPolicyCounters* counters() { return _gc_policy_counters; } // Create the jstat counters for the GC policy. By default, policy's @@ -231,9 +231,8 @@ class GenCollectorPolicy : public CollectorPolicy { GenerationSpec **_generations; - // Return true if an allocation should be attempted in the older - // generation if it fails in the younger generation. Return - // false, otherwise. + // Return true if an allocation should be attempted in the older generation + // if it fails in the younger generation. Return false, otherwise. virtual bool should_try_older_generation_allocation(size_t word_size) const; void initialize_flags(); @@ -245,7 +244,7 @@ class GenCollectorPolicy : public CollectorPolicy { // Try to allocate space by expanding the heap. virtual HeapWord* expand_heap_and_allocate(size_t size, bool is_tlab); - // Compute max heap alignment + // Compute max heap alignment. size_t compute_max_alignment(); // Scale the base_size by NewRatio according to @@ -253,7 +252,7 @@ class GenCollectorPolicy : public CollectorPolicy { // and align by min_alignment() size_t scale_by_NewRatio_aligned(size_t base_size); - // Bound the value by the given maximum minus the min_alignment + // Bound the value by the given maximum minus the min_alignment. size_t bound_minus_alignment(size_t desired_size, size_t maximum_size); public: diff --git a/hotspot/src/share/vm/memory/genCollectedHeap.cpp b/hotspot/src/share/vm/memory/genCollectedHeap.cpp index a5856a1e952..f3043c7d2a4 100644 --- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp +++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp @@ -126,7 +126,7 @@ jint GenCollectedHeap::initialize() { (HeapWord*)(heap_rs.base() + heap_rs.size())); // It is important to do this in a way such that concurrent readers can't - // temporarily think somethings in the heap. (Seen this happen in asserts.) + // temporarily think something is in the heap. (Seen this happen in asserts.) _reserved.set_word_size(0); _reserved.set_start((HeapWord*)heap_rs.base()); size_t actual_heap_size = heap_rs.size(); @@ -1262,7 +1262,7 @@ class GenTimeOfLastGCClosure: public GenCollectedHeap::GenClosure { }; jlong GenCollectedHeap::millis_since_last_gc() { - // We need a monotonically non-deccreasing time in ms but + // We need a monotonically non-decreasing time in ms but // os::javaTimeMillis() does not guarantee monotonicity. jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC; GenTimeOfLastGCClosure tolgc_cl(now); diff --git a/hotspot/src/share/vm/memory/genCollectedHeap.hpp b/hotspot/src/share/vm/memory/genCollectedHeap.hpp index 27ae0e10eda..da6ebf30587 100644 --- a/hotspot/src/share/vm/memory/genCollectedHeap.hpp +++ b/hotspot/src/share/vm/memory/genCollectedHeap.hpp @@ -315,7 +315,7 @@ public: } // Update the gc statistics for each generation. - // "level" is the level of the lastest collection + // "level" is the level of the latest collection. void update_gc_stats(int current_level, bool full) { for (int i = 0; i < _n_gens; i++) { _gens[i]->update_gc_stats(current_level, full); diff --git a/hotspot/src/share/vm/memory/genMarkSweep.cpp b/hotspot/src/share/vm/memory/genMarkSweep.cpp index 75362fb00fe..2ae8b3dc6e2 100644 --- a/hotspot/src/share/vm/memory/genMarkSweep.cpp +++ b/hotspot/src/share/vm/memory/genMarkSweep.cpp @@ -148,8 +148,8 @@ void GenMarkSweep::invoke_at_safepoint(int level, ReferenceProcessor* rp, bool c Universe::update_heap_info_at_gc(); // Update time of last gc for all generations we collected - // (which curently is all the generations in the heap). - // We need to use a monotonically non-deccreasing time in ms + // (which currently is all the generations in the heap). + // We need to use a monotonically non-decreasing time in ms // or we will see time-warp warnings and os::javaTimeMillis() // does not guarantee monotonicity. jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC; diff --git a/hotspot/src/share/vm/memory/genRemSet.hpp b/hotspot/src/share/vm/memory/genRemSet.hpp index 5959434d30d..d0a79a3371e 100644 --- a/hotspot/src/share/vm/memory/genRemSet.hpp +++ b/hotspot/src/share/vm/memory/genRemSet.hpp @@ -27,7 +27,7 @@ #include "oops/oop.hpp" -// A GenRemSet provides ways of iterating over pointers accross generations. +// A GenRemSet provides ways of iterating over pointers across generations. // (This is especially useful for older-to-younger.) class Generation; @@ -58,7 +58,7 @@ public: // These are for dynamic downcasts. Unfortunately that it names the // possible subtypes (but not that they are subtypes!) Return NULL if - // the cast is invalide. + // the cast is invalid. virtual CardTableRS* as_CardTableRS() { return NULL; } // Return the barrier set associated with "this." diff --git a/hotspot/src/share/vm/memory/generation.hpp b/hotspot/src/share/vm/memory/generation.hpp index e3bceb4446c..ff92d5b63ba 100644 --- a/hotspot/src/share/vm/memory/generation.hpp +++ b/hotspot/src/share/vm/memory/generation.hpp @@ -289,7 +289,7 @@ class Generation: public CHeapObj { // These functions return the addresses of the fields that define the // boundaries of the contiguous allocation area. (These fields should be - // physicall near to one another.) + // physically near to one another.) virtual HeapWord** top_addr() const { return NULL; } virtual HeapWord** end_addr() const { return NULL; } @@ -485,7 +485,7 @@ class Generation: public CHeapObj { // General signature... virtual void oop_since_save_marks_iterate_v(OopsInGenClosure* cl) = 0; // ...and specializations for de-virtualization. (The general - // implemention of the _nv versions call the virtual version. + // implementation of the _nv versions call the virtual version. // Note that the _nv suffix is not really semantically necessary, // but it avoids some not-so-useful warnings on Solaris.) #define Generation_SINCE_SAVE_MARKS_DECL(OopClosureType, nv_suffix) \ diff --git a/hotspot/src/share/vm/memory/heap.cpp b/hotspot/src/share/vm/memory/heap.cpp index f00709684b4..a241af2eee9 100644 --- a/hotspot/src/share/vm/memory/heap.cpp +++ b/hotspot/src/share/vm/memory/heap.cpp @@ -183,7 +183,7 @@ void* CodeHeap::allocate(size_t instance_size, bool is_critical) { size_t number_of_segments = size_to_segments(instance_size + sizeof(HeapBlock)); assert(segments_to_size(number_of_segments) >= sizeof(FreeBlock), "not enough room for FreeList"); - // First check if we can satify request from freelist + // First check if we can satisfy request from freelist debug_only(verify()); HeapBlock* block = search_freelist(number_of_segments, is_critical); debug_only(if (VerifyCodeCacheOften) verify()); @@ -372,7 +372,7 @@ void CodeHeap::add_to_freelist(HeapBlock *a) { } // Scan for right place to put into list. List - // is sorted by increasing addresseses + // is sorted by increasing addresses FreeBlock* prev = NULL; FreeBlock* cur = _freelist; while(cur != NULL && cur < b) { diff --git a/hotspot/src/share/vm/memory/heap.hpp b/hotspot/src/share/vm/memory/heap.hpp index 29e76d7dc62..e271d1be2fc 100644 --- a/hotspot/src/share/vm/memory/heap.hpp +++ b/hotspot/src/share/vm/memory/heap.hpp @@ -127,8 +127,8 @@ class CodeHeap : public CHeapObj { // Heap extents bool reserve(size_t reserved_size, size_t committed_size, size_t segment_size); void release(); // releases all allocated memory - bool expand_by(size_t size); // expands commited memory by size - void shrink_by(size_t size); // shrinks commited memory by size + bool expand_by(size_t size); // expands committed memory by size + void shrink_by(size_t size); // shrinks committed memory by size void clear(); // clears all heap contents // Memory allocation diff --git a/hotspot/src/share/vm/memory/heapInspection.hpp b/hotspot/src/share/vm/memory/heapInspection.hpp index 25e438981d3..8cdd4ccdf65 100644 --- a/hotspot/src/share/vm/memory/heapInspection.hpp +++ b/hotspot/src/share/vm/memory/heapInspection.hpp @@ -347,7 +347,7 @@ class KlassInfoHisto : public StackObj { #endif // INCLUDE_SERVICES -// These declarations are needed since teh declaration of KlassInfoTable and +// These declarations are needed since the declaration of KlassInfoTable and // KlassInfoClosure are guarded by #if INLCUDE_SERVICES class KlassInfoTable; class KlassInfoClosure; diff --git a/hotspot/src/share/vm/memory/metaspace.cpp b/hotspot/src/share/vm/memory/metaspace.cpp index 1648b71704a..73da1c74ef8 100644 --- a/hotspot/src/share/vm/memory/metaspace.cpp +++ b/hotspot/src/share/vm/memory/metaspace.cpp @@ -2399,7 +2399,7 @@ bool SpaceManager::contains(const void *ptr) { void SpaceManager::verify() { // If there are blocks in the dictionary, then - // verfication of chunks does not work since + // verification of chunks does not work since // being in the dictionary alters a chunk. if (block_freelists()->total_size() == 0) { for (ChunkIndex i = ZeroIndex; i < NumberOfInUseLists; i = next_chunk_index(i)) { @@ -2868,7 +2868,7 @@ void Metaspace::set_narrow_klass_base_and_shift(address metaspace_base, address uint64_t klass_encoding_max = UnscaledClassSpaceMax << LogKlassAlignmentInBytes; // If compressed class space fits in lower 32G, we don't need a base. if (higher_address <= (address)klass_encoding_max) { - lower_base = 0; // effectively lower base is zero. + lower_base = 0; // Effectively lower base is zero. } } diff --git a/hotspot/src/share/vm/memory/metaspaceShared.cpp b/hotspot/src/share/vm/memory/metaspaceShared.cpp index ef51c926662..8421b12d7f1 100644 --- a/hotspot/src/share/vm/memory/metaspaceShared.cpp +++ b/hotspot/src/share/vm/memory/metaspaceShared.cpp @@ -487,7 +487,7 @@ void VM_PopulateDumpSharedSpace::doit() { NOT_PRODUCT(SystemDictionary::verify();) // Copy the the symbol table, and the system dictionary to the shared - // space in usable form. Copy the hastable + // space in usable form. Copy the hashtable // buckets first [read-write], then copy the linked lists of entries // [read-only]. @@ -953,7 +953,7 @@ void MetaspaceShared::initialize_shared_spaces() { // The following data in the shared misc data region are the linked // list elements (HashtableEntry objects) for the symbol table, string - // table, and shared dictionary. The heap objects refered to by the + // table, and shared dictionary. The heap objects referred to by the // symbol table, string table, and shared dictionary are permanent and // unmovable. Since new entries added to the string and symbol tables // are always added at the beginning of the linked lists, THESE LINKED diff --git a/hotspot/src/share/vm/memory/modRefBarrierSet.hpp b/hotspot/src/share/vm/memory/modRefBarrierSet.hpp index 6c272b7b18b..501c294ec3a 100644 --- a/hotspot/src/share/vm/memory/modRefBarrierSet.hpp +++ b/hotspot/src/share/vm/memory/modRefBarrierSet.hpp @@ -72,7 +72,7 @@ public: bool has_read_region_opt() { return false; } - // These operations should assert false unless the correponding operation + // These operations should assert false unless the corresponding operation // above returns true. void read_ref_array(MemRegion mr) { assert(false, "can't call"); diff --git a/hotspot/src/share/vm/memory/referenceProcessor.cpp b/hotspot/src/share/vm/memory/referenceProcessor.cpp index 681ecdc0e7d..f6a48ee99b9 100644 --- a/hotspot/src/share/vm/memory/referenceProcessor.cpp +++ b/hotspot/src/share/vm/memory/referenceProcessor.cpp @@ -45,7 +45,7 @@ void referenceProcessor_init() { } void ReferenceProcessor::init_statics() { - // We need a monotonically non-deccreasing time in ms but + // We need a monotonically non-decreasing time in ms but // os::javaTimeMillis() does not guarantee monotonicity. jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC; @@ -152,7 +152,7 @@ void ReferenceProcessor::update_soft_ref_master_clock() { // Update (advance) the soft ref master clock field. This must be done // after processing the soft ref list. - // We need a monotonically non-deccreasing time in ms but + // We need a monotonically non-decreasing time in ms but // os::javaTimeMillis() does not guarantee monotonicity. jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC; jlong soft_ref_clock = java_lang_ref_SoftReference::clock(); @@ -168,7 +168,7 @@ void ReferenceProcessor::update_soft_ref_master_clock() { // javaTimeNanos(), which is guaranteed to be monotonically // non-decreasing provided the underlying platform provides such // a time source (and it is bug free). - // In product mode, however, protect ourselves from non-monotonicty. + // In product mode, however, protect ourselves from non-monotonicity. if (now > _soft_ref_timestamp_clock) { _soft_ref_timestamp_clock = now; java_lang_ref_SoftReference::set_clock(now); @@ -349,7 +349,7 @@ void ReferenceProcessor::enqueue_discovered_reflist(DiscoveredList& refs_list, oop obj = NULL; oop next_d = refs_list.head(); - if (pending_list_uses_discovered_field()) { // New behaviour + if (pending_list_uses_discovered_field()) { // New behavior // Walk down the list, self-looping the next field // so that the References are not considered active. while (obj != next_d) { @@ -366,7 +366,7 @@ void ReferenceProcessor::enqueue_discovered_reflist(DiscoveredList& refs_list, // Post-barrier not needed when looping to self. java_lang_ref_Reference::set_next_raw(obj, obj); if (next_d == obj) { // obj is last - // Swap refs_list into pendling_list_addr and + // Swap refs_list into pending_list_addr and // set obj's discovered to what we read from pending_list_addr. oop old = oopDesc::atomic_exchange_oop(refs_list.head(), pending_list_addr); // Need post-barrier on pending_list_addr above; @@ -376,7 +376,7 @@ void ReferenceProcessor::enqueue_discovered_reflist(DiscoveredList& refs_list, oopDesc::bs()->write_ref_field(java_lang_ref_Reference::discovered_addr(obj), old); } } - } else { // Old behaviour + } else { // Old behavior // Walk down the list, copying the discovered field into // the next field and clearing the discovered field. while (obj != next_d) { @@ -390,7 +390,7 @@ void ReferenceProcessor::enqueue_discovered_reflist(DiscoveredList& refs_list, assert(java_lang_ref_Reference::next(obj) == NULL, "The reference should not be enqueued"); if (next_d == obj) { // obj is last - // Swap refs_list into pendling_list_addr and + // Swap refs_list into pending_list_addr and // set obj's next to what we read from pending_list_addr. oop old = oopDesc::atomic_exchange_oop(refs_list.head(), pending_list_addr); // Need oop_check on pending_list_addr above; @@ -1341,7 +1341,7 @@ void ReferenceProcessor::preclean_discovered_references( // whose referents are still alive, whose referents are NULL or which // are not active (have a non-NULL next field). NOTE: When we are // thus precleaning the ref lists (which happens single-threaded today), -// we do not disable refs discovery to honour the correct semantics of +// we do not disable refs discovery to honor the correct semantics of // java.lang.Reference. As a result, we need to be careful below // that ref removal steps interleave safely with ref discovery steps // (in this thread). diff --git a/hotspot/src/share/vm/memory/referenceProcessor.hpp b/hotspot/src/share/vm/memory/referenceProcessor.hpp index ea5f374fa12..63b3556bfdd 100644 --- a/hotspot/src/share/vm/memory/referenceProcessor.hpp +++ b/hotspot/src/share/vm/memory/referenceProcessor.hpp @@ -474,7 +474,7 @@ class ReferenceProcessor : public CHeapObj { bool processing_is_mt() const { return _processing_is_mt; } void set_mt_processing(bool mt) { _processing_is_mt = mt; } - // whether all enqueuing of weak references is complete + // whether all enqueueing of weak references is complete bool enqueuing_is_done() { return _enqueuing_is_done; } void set_enqueuing_is_done(bool v) { _enqueuing_is_done = v; } diff --git a/hotspot/src/share/vm/memory/resourceArea.hpp b/hotspot/src/share/vm/memory/resourceArea.hpp index 1357081fd67..e1cafe7f048 100644 --- a/hotspot/src/share/vm/memory/resourceArea.hpp +++ b/hotspot/src/share/vm/memory/resourceArea.hpp @@ -196,7 +196,7 @@ protected: // leveraging existing data structures if we simply create a way to manage this one // special need for a ResourceMark. If ResourceMark simply inherited from CHeapObj // then existing ResourceMarks would work fine since no one use new to allocate them -// and they would be stack allocated. This leaves open the possibilty of accidental +// and they would be stack allocated. This leaves open the possibility of accidental // misuse so we simple duplicate the ResourceMark functionality here. class DeoptResourceMark: public CHeapObj { diff --git a/hotspot/src/share/vm/memory/sharedHeap.hpp b/hotspot/src/share/vm/memory/sharedHeap.hpp index 5bf1dc44a6f..398e593cc10 100644 --- a/hotspot/src/share/vm/memory/sharedHeap.hpp +++ b/hotspot/src/share/vm/memory/sharedHeap.hpp @@ -92,7 +92,7 @@ class KlassClosure; // 0 is a "special" value in set_n_threads() which translates to // setting _n_threads to 1. // -// Some code uses _n_terminiation to decide if work should be done in +// Some code uses _n_termination to decide if work should be done in // parallel. The notorious possibly_parallel_oops_do() in threads.cpp // is an example of such code. Look for variable "is_par" for other // examples. diff --git a/hotspot/src/share/vm/memory/space.cpp b/hotspot/src/share/vm/memory/space.cpp index 8f844df81f1..7858a668293 100644 --- a/hotspot/src/share/vm/memory/space.cpp +++ b/hotspot/src/share/vm/memory/space.cpp @@ -112,7 +112,7 @@ void DirtyCardToOopClosure::do_MemRegion(MemRegion mr) { // cards are processed. For instance, CMS must remember mutator updates // (i.e. dirty cards) so as to re-scan mutated objects. // Such work can be piggy-backed here on dirty card scanning, so as to make - // it slightly more efficient than doing a complete non-detructive pre-scan + // it slightly more efficient than doing a complete non-destructive pre-scan // of the card table. MemRegionClosure* pCl = _sp->preconsumptionDirtyCardClosure(); if (pCl != NULL) { @@ -324,8 +324,8 @@ void OffsetTableContigSpace::set_bottom(HeapWord* new_bottom) { } void OffsetTableContigSpace::set_end(HeapWord* new_end) { - // Space should not advertize an increase in size - // until after the underlying offest table has been enlarged. + // Space should not advertise an increase in size + // until after the underlying offset table has been enlarged. _offsets.resize(pointer_delta(new_end, bottom())); Space::set_end(new_end); } @@ -729,7 +729,7 @@ void ContiguousSpace::object_iterate(ObjectClosure* blk) { object_iterate_from(bm, blk); } -// For a continguous space object_iterate() and safe_object_iterate() +// For a ContiguousSpace object_iterate() and safe_object_iterate() // are the same. void ContiguousSpace::safe_object_iterate(ObjectClosure* blk) { object_iterate(blk); diff --git a/hotspot/src/share/vm/memory/space.hpp b/hotspot/src/share/vm/memory/space.hpp index 04efc7da593..1adb1d33344 100644 --- a/hotspot/src/share/vm/memory/space.hpp +++ b/hotspot/src/share/vm/memory/space.hpp @@ -56,7 +56,7 @@ // Here's the Space hierarchy: // -// - Space -- an asbtract base class describing a heap area +// - Space -- an abstract base class describing a heap area // - CompactibleSpace -- a space supporting compaction // - CompactibleFreeListSpace -- (used for CMS generation) // - ContiguousSpace -- a compactible space in which all free space @@ -159,7 +159,7 @@ class Space: public CHeapObj { // (that is, if the space is contiguous), then this region must contain only // such objects: the memregion will be from the bottom of the region to the // saved mark. Otherwise, the "obj_allocated_since_save_marks" method of - // the space must distiguish between objects in the region allocated before + // the space must distinguish between objects in the region allocated before // and after the call to save marks. virtual MemRegion used_region_at_save_marks() const { return MemRegion(bottom(), saved_mark_word()); @@ -190,7 +190,7 @@ class Space: public CHeapObj { // Returns true iff the given the space contains the // given address as part of an allocated object. For - // ceratin kinds of spaces, this might be a potentially + // certain kinds of spaces, this might be a potentially // expensive operation. To prevent performance problems // on account of its inadvertent use in product jvm's, // we restrict its use to assertion checks only. @@ -244,13 +244,13 @@ class Space: public CHeapObj { // Return an address indicating the extent of the iteration in the // event that the iteration had to return because of finding an // uninitialized object in the space, or if the closure "cl" - // signalled early termination. + // signaled early termination. virtual HeapWord* object_iterate_careful(ObjectClosureCareful* cl); virtual HeapWord* object_iterate_careful_m(MemRegion mr, ObjectClosureCareful* cl); // Create and return a new dirty card to oop closure. Can be - // overriden to return the appropriate type of closure + // overridden to return the appropriate type of closure // depending on the type of space in which the closure will // operate. ResourceArea allocated. virtual DirtyCardToOopClosure* new_dcto_cl(ExtendedOopClosure* cl, @@ -474,13 +474,13 @@ public: // be one, since compaction must succeed -- we go to the first space of // the previous generation if necessary, updating "cp"), reset compact_top // and then forward. In either case, returns the new value of "compact_top". - // If the forwarding crosses "cp->threshold", invokes the "cross_threhold" + // If the forwarding crosses "cp->threshold", invokes the "cross_threshold" // function of the then-current compaction space, and updates "cp->threshold // accordingly". virtual HeapWord* forward(oop q, size_t size, CompactPoint* cp, HeapWord* compact_top); - // Return a size with adjusments as required of the space. + // Return a size with adjustments as required of the space. virtual size_t adjust_object_size_v(size_t size) const { return size; } protected: @@ -500,7 +500,7 @@ protected: // Requires "allowed_deadspace_words > 0", that "q" is the start of a // free block of the given "word_len", and that "q", were it an object, - // would not move if forwared. If the size allows, fill the free + // would not move if forwarded. If the size allows, fill the free // block with an object, to prevent excessive compaction. Returns "true" // iff the free region was made deadspace, and modifies // "allowed_deadspace_words" to reflect the number of available deadspace diff --git a/hotspot/src/share/vm/memory/tenuredGeneration.cpp b/hotspot/src/share/vm/memory/tenuredGeneration.cpp index a18d6813e2f..bc3f19cf849 100644 --- a/hotspot/src/share/vm/memory/tenuredGeneration.cpp +++ b/hotspot/src/share/vm/memory/tenuredGeneration.cpp @@ -135,7 +135,7 @@ bool TenuredGeneration::should_collect(bool full, free()); } } - // If we had to expand to accomodate promotions from younger generations + // If we had to expand to accommodate promotions from younger generations if (!result && _capacity_at_prologue < capacity()) { result = true; if (PrintGC && Verbose) { diff --git a/hotspot/src/share/vm/memory/universe.cpp b/hotspot/src/share/vm/memory/universe.cpp index d022ae17913..417ce04072a 100644 --- a/hotspot/src/share/vm/memory/universe.cpp +++ b/hotspot/src/share/vm/memory/universe.cpp @@ -1136,7 +1136,7 @@ bool universe_post_init() { SystemDictionary::ProtectionDomain_klass(), m);; } - // The folowing is initializing converter functions for serialization in + // The following is initializing converter functions for serialization in // JVM.cpp. If we clean up the StrictMath code above we may want to find // a better solution for this as well. initialize_converter_functions(); @@ -1178,7 +1178,7 @@ void Universe::flush_dependents_on(instanceKlassHandle dependee) { if (CodeCache::number_of_nmethods_with_dependencies() == 0) return; // CodeCache can only be updated by a thread_in_VM and they will all be - // stopped dring the safepoint so CodeCache will be safe to update without + // stopped during the safepoint so CodeCache will be safe to update without // holding the CodeCache_lock. KlassDepChange changes(dependee); @@ -1199,7 +1199,7 @@ void Universe::flush_dependents_on(Handle call_site, Handle method_handle) { if (CodeCache::number_of_nmethods_with_dependencies() == 0) return; // CodeCache can only be updated by a thread_in_VM and they will all be - // stopped dring the safepoint so CodeCache will be safe to update without + // stopped during the safepoint so CodeCache will be safe to update without // holding the CodeCache_lock. CallSiteDepChange changes(call_site(), method_handle()); @@ -1230,7 +1230,7 @@ void Universe::flush_evol_dependents_on(instanceKlassHandle ev_k_h) { if (CodeCache::number_of_nmethods_with_dependencies() == 0) return; // CodeCache can only be updated by a thread_in_VM and they will all be - // stopped dring the safepoint so CodeCache will be safe to update without + // stopped during the safepoint so CodeCache will be safe to update without // holding the CodeCache_lock. // Compute the dependent nmethods diff --git a/hotspot/src/share/vm/oops/method.hpp b/hotspot/src/share/vm/oops/method.hpp index 63705b3cc26..458c394295b 100644 --- a/hotspot/src/share/vm/oops/method.hpp +++ b/hotspot/src/share/vm/oops/method.hpp @@ -38,13 +38,11 @@ #include "utilities/accessFlags.hpp" #include "utilities/growableArray.hpp" -// A Method* represents a Java method. +// A Method represents a Java method. // // Memory layout (each line represents a word). Note that most applications load thousands of methods, // so keeping the size of this structure small has a big impact on footprint. // -// We put all oops and method_size first for better gc cache locality. -// // The actual bytecodes are inlined after the end of the Method struct. // // There are bits in the access_flags telling whether inlined tables are present. @@ -64,17 +62,17 @@ // | header | // | klass | // |------------------------------------------------------| -// | ConstMethod* (oop) | +// | ConstMethod* (metadata) | // |------------------------------------------------------| -// | methodData (oop) | -// | methodCounters | +// | MethodData* (metadata) | +// | MethodCounters | // |------------------------------------------------------| // | access_flags | // | vtable_index | // |------------------------------------------------------| // | result_index (C++ interpreter only) | // |------------------------------------------------------| -// | method_size | intrinsic_id| flags | +// | method_size | intrinsic_id | flags | // |------------------------------------------------------| // | code (pointer) | // | i2i (pointer) | diff --git a/hotspot/src/share/vm/opto/runtime.cpp b/hotspot/src/share/vm/opto/runtime.cpp index 3ec8e7b6963..da74b499a33 100644 --- a/hotspot/src/share/vm/opto/runtime.cpp +++ b/hotspot/src/share/vm/opto/runtime.cpp @@ -568,8 +568,7 @@ const TypeFunc *OptoRuntime::g1_wb_post_Type() { const TypeFunc *OptoRuntime::uncommon_trap_Type() { // create input type (domain) const Type **fields = TypeTuple::fields(1); - // Symbol* name of class to be loaded - fields[TypeFunc::Parms+0] = TypeInt::INT; + fields[TypeFunc::Parms+0] = TypeInt::INT; // trap_reason (deopt reason and action) const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields); // create result type (range) diff --git a/hotspot/src/share/vm/runtime/advancedThresholdPolicy.cpp b/hotspot/src/share/vm/runtime/advancedThresholdPolicy.cpp index 7d72ca7f3ea..4c36c44afc2 100644 --- a/hotspot/src/share/vm/runtime/advancedThresholdPolicy.cpp +++ b/hotspot/src/share/vm/runtime/advancedThresholdPolicy.cpp @@ -306,7 +306,7 @@ void AdvancedThresholdPolicy::create_mdo(methodHandle mh, JavaThread* THREAD) { * profiling can start at level 0 and finish at level 3. * * b. 0 -> 2 -> 3 -> 4. - * This case occures when the load on C2 is deemed too high. So, instead of transitioning + * This case occurs when the load on C2 is deemed too high. So, instead of transitioning * into state 3 directly and over-profiling while a method is in the C2 queue we transition to * level 2 and wait until the load on C2 decreases. This path is disabled for OSRs. * diff --git a/hotspot/src/share/vm/runtime/arguments.cpp b/hotspot/src/share/vm/runtime/arguments.cpp index 2769eece609..0ba3e4e33a1 100644 --- a/hotspot/src/share/vm/runtime/arguments.cpp +++ b/hotspot/src/share/vm/runtime/arguments.cpp @@ -178,7 +178,7 @@ void Arguments::init_system_properties() { PropertyList_add(&_system_properties, new SystemProperty("java.vm.name", VM_Version::vm_name(), false)); PropertyList_add(&_system_properties, new SystemProperty("java.vm.info", VM_Version::vm_info_string(), true)); - // following are JVMTI agent writeable properties. + // Following are JVMTI agent writable properties. // Properties values are set to NULL and they are // os specific they are initialized in os::init_system_properties_values(). _java_ext_dirs = new SystemProperty("java.ext.dirs", NULL, true); @@ -1306,7 +1306,7 @@ void Arguments::set_cms_and_parnew_gc_flags() { if (!FLAG_IS_DEFAULT(OldPLABSize)) { if (FLAG_IS_DEFAULT(CMSParPromoteBlocksToClaim)) { // OldPLABSize is not the default value but CMSParPromoteBlocksToClaim - // is. In this situtation let CMSParPromoteBlocksToClaim follow + // is. In this situation let CMSParPromoteBlocksToClaim follow // the value (either from the command line or ergonomics) of // OldPLABSize. Following OldPLABSize is an ergonomics decision. FLAG_SET_ERGO(uintx, CMSParPromoteBlocksToClaim, OldPLABSize); @@ -3666,18 +3666,18 @@ jint Arguments::apply_ergo() { assert(verify_serial_gc_flags(), "SerialGC unset"); #endif // INCLUDE_ALL_GCS - // Initialize Metaspace flags and alignments. + // Initialize Metaspace flags and alignments Metaspace::ergo_initialize(); // Set bytecode rewriting flags set_bytecode_flags(); - // Set flags if Aggressive optimization flags (-XX:+AggressiveOpts) enabled. + // Set flags if Aggressive optimization flags (-XX:+AggressiveOpts) enabled set_aggressive_opts_flags(); // Turn off biased locking for locking debug mode flags, - // which are subtlely different from each other but neither works with - // biased locking. + // which are subtly different from each other but neither works with + // biased locking if (UseHeavyMonitors #ifdef COMPILER1 || !UseFastLocking diff --git a/hotspot/src/share/vm/runtime/arguments.hpp b/hotspot/src/share/vm/runtime/arguments.hpp index d016e22f22e..d6a6466f73c 100644 --- a/hotspot/src/share/vm/runtime/arguments.hpp +++ b/hotspot/src/share/vm/runtime/arguments.hpp @@ -444,7 +444,7 @@ class Arguments : AllStatic { static bool check_gc_consistency(); static void check_deprecated_gcs(); static void check_deprecated_gc_flags(); - // Check consistecy or otherwise of VM argument settings + // Check consistency or otherwise of VM argument settings static bool check_vm_args_consistency(); // Check stack pages settings static bool check_stack_pages(); @@ -494,7 +494,7 @@ class Arguments : AllStatic { // -Xprof static bool has_profile() { return _has_profile; } - // -Xms, -Xmx + // -Xms static uintx min_heap_size() { return _min_heap_size; } static void set_min_heap_size(uintx v) { _min_heap_size = v; } diff --git a/hotspot/src/share/vm/runtime/compilationPolicy.cpp b/hotspot/src/share/vm/runtime/compilationPolicy.cpp index 23fbc87f766..117850963e3 100644 --- a/hotspot/src/share/vm/runtime/compilationPolicy.cpp +++ b/hotspot/src/share/vm/runtime/compilationPolicy.cpp @@ -233,7 +233,7 @@ void NonTieredCompPolicy::reset_counter_for_invocation_event(methodHandle m) { } void NonTieredCompPolicy::reset_counter_for_back_branch_event(methodHandle m) { - // Delay next back-branch event but pump up invocation counter to triger + // Delay next back-branch event but pump up invocation counter to trigger // whole method compilation. MethodCounters* mcs = m->method_counters(); assert(mcs != NULL, "MethodCounters cannot be NULL for profiling"); @@ -251,7 +251,7 @@ void NonTieredCompPolicy::reset_counter_for_back_branch_event(methodHandle m) { // // CounterDecay // -// Interates through invocation counters and decrements them. This +// Iterates through invocation counters and decrements them. This // is done at each safepoint. // class CounterDecay : public AllStatic { @@ -321,7 +321,7 @@ void NonTieredCompPolicy::reprofile(ScopeDesc* trap_scope, bool is_osr) { } // This method can be called by any component of the runtime to notify the policy -// that it's recommended to delay the complation of this method. +// that it's recommended to delay the compilation of this method. void NonTieredCompPolicy::delay_compilation(Method* method) { MethodCounters* mcs = method->method_counters(); if (mcs != NULL) { diff --git a/hotspot/src/share/vm/runtime/compilationPolicy.hpp b/hotspot/src/share/vm/runtime/compilationPolicy.hpp index 6d0f1b6a9e4..62df7ece209 100644 --- a/hotspot/src/share/vm/runtime/compilationPolicy.hpp +++ b/hotspot/src/share/vm/runtime/compilationPolicy.hpp @@ -72,7 +72,7 @@ public: // reprofile request virtual void reprofile(ScopeDesc* trap_scope, bool is_osr) = 0; // delay_compilation(method) can be called by any component of the runtime to notify the policy - // that it's recommended to delay the complation of this method. + // that it's recommended to delay the compilation of this method. virtual void delay_compilation(Method* method) = 0; // disable_compilation() is called whenever the runtime decides to disable compilation of the // specified method. diff --git a/hotspot/src/share/vm/runtime/deoptimization.cpp b/hotspot/src/share/vm/runtime/deoptimization.cpp index 8b6fc334db9..4c124bd0099 100644 --- a/hotspot/src/share/vm/runtime/deoptimization.cpp +++ b/hotspot/src/share/vm/runtime/deoptimization.cpp @@ -380,7 +380,7 @@ Deoptimization::UnrollBlock* Deoptimization::fetch_unroll_info_helper(JavaThread frame deopt_sender = stub_frame.sender(&dummy_map); // First is the deoptee frame deopt_sender = deopt_sender.sender(&dummy_map); // Now deoptee caller - // It's possible that the number of paramters at the call site is + // It's possible that the number of parameters at the call site is // different than number of arguments in the callee when method // handles are used. If the caller is interpreted get the real // value so that the proper amount of space can be added to it's @@ -540,7 +540,7 @@ void Deoptimization::cleanup_deopt_info(JavaThread *thread, // popframe condition bit set, we should always clear it now thread->clear_popframe_condition(); #else - // C++ interpeter will clear has_pending_popframe when it enters + // C++ interpreter will clear has_pending_popframe when it enters // with method_resume. For deopt_resume2 we clear it now. if (thread->popframe_forcing_deopt_reexecution()) thread->clear_popframe_condition(); diff --git a/hotspot/src/share/vm/runtime/deoptimization.hpp b/hotspot/src/share/vm/runtime/deoptimization.hpp index b70a478b328..a32e33ca928 100644 --- a/hotspot/src/share/vm/runtime/deoptimization.hpp +++ b/hotspot/src/share/vm/runtime/deoptimization.hpp @@ -206,7 +206,7 @@ class Deoptimization : AllStatic { // Called by assembly stub after execution has returned to // deoptimized frame and after the stack unrolling. // @argument thread. Thread where stub_frame resides. - // @argument exec_mode. Determines how execution should be continuted in top frame. + // @argument exec_mode. Determines how execution should be continued in top frame. // 0 means continue after current byte code // 1 means exception has happened, handle exception // 2 means reexecute current bytecode (for uncommon traps). diff --git a/hotspot/src/share/vm/runtime/frame.cpp b/hotspot/src/share/vm/runtime/frame.cpp index e2269a34367..4bffc40833f 100644 --- a/hotspot/src/share/vm/runtime/frame.cpp +++ b/hotspot/src/share/vm/runtime/frame.cpp @@ -649,7 +649,7 @@ void frame::interpreter_frame_print_on(outputStream* st) const { #endif } -// Return whether the frame is in the VM or os indicating a Hotspot problem. +// Print whether the frame is in the VM or OS indicating a HotSpot problem. // Otherwise, it's likely a bug in the native library that the Java code calls, // hopefully indicating where to submit bugs. void frame::print_C_frame(outputStream* st, char* buf, int buflen, address pc) { @@ -928,7 +928,7 @@ void frame::oops_interpreted_do(OopClosure* f, CLDToOopClosure* cld_f, // klass, and the klass needs to be kept alive while executing. The GCs // don't trace through method pointers, so typically in similar situations // the mirror or the class loader of the klass are installed as a GC root. - // To minimze the overhead of doing that here, we ask the GC to pass down a + // To minimize the overhead of doing that here, we ask the GC to pass down a // closure that knows how to keep klasses alive given a ClassLoaderData. cld_f->do_cld(m->method_holder()->class_loader_data()); } diff --git a/hotspot/src/share/vm/runtime/globals.hpp b/hotspot/src/share/vm/runtime/globals.hpp index 5f72d40a276..da65a146848 100644 --- a/hotspot/src/share/vm/runtime/globals.hpp +++ b/hotspot/src/share/vm/runtime/globals.hpp @@ -3639,7 +3639,7 @@ class CommandLineFlags { product(uintx, MaxDirectMemorySize, 0, \ "Maximum total size of NIO direct-buffer allocations") \ \ - /* temporary developer defined flags */ \ + /* Flags used for temporary code during development */ \ \ diagnostic(bool, UseNewCode, false, \ "Testing Only: Use the new version while testing") \ diff --git a/hotspot/src/share/vm/runtime/globals_extension.hpp b/hotspot/src/share/vm/runtime/globals_extension.hpp index b746bebe882..468d4bb87fa 100644 --- a/hotspot/src/share/vm/runtime/globals_extension.hpp +++ b/hotspot/src/share/vm/runtime/globals_extension.hpp @@ -31,7 +31,7 @@ // Construct enum of Flag_ constants. -// Parens left off in the following for the enum decl below. +// Parenthesis left off in the following for the enum decl below. #define FLAG_MEMBER(flag) Flag_##flag #define RUNTIME_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), diff --git a/hotspot/src/share/vm/runtime/handles.hpp b/hotspot/src/share/vm/runtime/handles.hpp index c2ce4b38c5a..e7212214a14 100644 --- a/hotspot/src/share/vm/runtime/handles.hpp +++ b/hotspot/src/share/vm/runtime/handles.hpp @@ -267,7 +267,7 @@ class HandleArea: public Arena { // HandleMarks manually. // // A HandleMark constructor will record the current handle area top, and the -// desctructor will reset the top, destroying all handles allocated in between. +// destructor will reset the top, destroying all handles allocated in between. // The following code will therefore NOT work: // // Handle h; diff --git a/hotspot/src/share/vm/runtime/javaCalls.cpp b/hotspot/src/share/vm/runtime/javaCalls.cpp index 2de958d6f0e..027d8d9b50f 100644 --- a/hotspot/src/share/vm/runtime/javaCalls.cpp +++ b/hotspot/src/share/vm/runtime/javaCalls.cpp @@ -302,7 +302,7 @@ void JavaCalls::call(JavaValue* result, methodHandle method, JavaCallArguments* // Check if we need to wrap a potential OS exception handler around thread // This is used for e.g. Win32 structured exception handlers assert(THREAD->is_Java_thread(), "only JavaThreads can make JavaCalls"); - // Need to wrap each and everytime, since there might be native code down the + // Need to wrap each and every time, since there might be native code down the // stack that has installed its own exception handlers os::os_exception_wrapper(call_helper, result, &method, args, THREAD); } diff --git a/hotspot/src/share/vm/runtime/jniHandles.cpp b/hotspot/src/share/vm/runtime/jniHandles.cpp index 7a3fb8b4c51..fd17232e5c4 100644 --- a/hotspot/src/share/vm/runtime/jniHandles.cpp +++ b/hotspot/src/share/vm/runtime/jniHandles.cpp @@ -461,7 +461,7 @@ jobject JNIHandleBlock::allocate_handle(oop obj) { // Append new block Thread* thread = Thread::current(); Handle obj_handle(thread, obj); - // This can block, so we need to preserve obj accross call. + // This can block, so we need to preserve obj across call. _last->_next = JNIHandleBlock::allocate_block(thread); _last = _last->_next; _allocate_before_rebuild--; @@ -528,7 +528,7 @@ int JNIHandleBlock::length() const { return result; } -// This method is not thread-safe, i.e., must be called whule holding a lock on the +// This method is not thread-safe, i.e., must be called while holding a lock on the // structure. long JNIHandleBlock::memory_usage() const { return length() * sizeof(JNIHandleBlock); diff --git a/hotspot/src/share/vm/runtime/jniHandles.hpp b/hotspot/src/share/vm/runtime/jniHandles.hpp index 1b6b6b81f67..1bd97c3cf09 100644 --- a/hotspot/src/share/vm/runtime/jniHandles.hpp +++ b/hotspot/src/share/vm/runtime/jniHandles.hpp @@ -106,7 +106,7 @@ class JNIHandleBlock : public CHeapObj { JNIHandleBlock* _next; // Link to next block // The following instance variables are only used by the first block in a chain. - // Having two types of blocks complicates the code and the space overhead in negligble. + // Having two types of blocks complicates the code and the space overhead in negligible. JNIHandleBlock* _last; // Last block in use JNIHandleBlock* _pop_frame_link; // Block to restore on PopLocalFrame call oop* _free_list; // Handle free list diff --git a/hotspot/src/share/vm/runtime/mutex.cpp b/hotspot/src/share/vm/runtime/mutex.cpp index 91d9de9ddce..4cd55e7d6f9 100644 --- a/hotspot/src/share/vm/runtime/mutex.cpp +++ b/hotspot/src/share/vm/runtime/mutex.cpp @@ -507,7 +507,7 @@ void Monitor::ILock (Thread * Self) { _OnDeck = NULL ; // Note that we current drop the inner lock (clear OnDeck) in the slow-path - // epilog immediately after having acquired the outer lock. + // epilogue immediately after having acquired the outer lock. // But instead we could consider the following optimizations: // A. Shift or defer dropping the inner lock until the subsequent IUnlock() operation. // This might avoid potential reacquisition of the inner lock in IUlock(). @@ -931,7 +931,7 @@ void Monitor::lock (Thread * Self) { check_block_state(Self); if (Self->is_Java_thread()) { - // Horribile dictu - we suffer through a state transition + // Horrible dictu - we suffer through a state transition assert(rank() > Mutex::special, "Potential deadlock with special or lesser rank mutex"); ThreadBlockInVM tbivm ((JavaThread *) Self) ; ILock (Self) ; @@ -963,7 +963,7 @@ void Monitor::lock_without_safepoint_check () { } -// Returns true if thread succeceed [sic] in grabbing the lock, otherwise false. +// Returns true if thread succeeds in grabbing the lock, otherwise false. bool Monitor::try_lock() { Thread * const Self = Thread::current(); diff --git a/hotspot/src/share/vm/runtime/mutex.hpp b/hotspot/src/share/vm/runtime/mutex.hpp index fc2c434f9f2..dbd32669549 100644 --- a/hotspot/src/share/vm/runtime/mutex.hpp +++ b/hotspot/src/share/vm/runtime/mutex.hpp @@ -90,7 +90,7 @@ class Monitor : public CHeapObj { // A special lock: Is a lock where you are guaranteed not to block while you are // holding it, i.e., no vm operation can happen, taking other locks, etc. // NOTE: It is critical that the rank 'special' be the lowest (earliest) - // (except for "event"?) for the deadlock dection to work correctly. + // (except for "event"?) for the deadlock detection to work correctly. // The rank native is only for use in Mutex's created by JVM_RawMonitorCreate, // which being external to the VM are not subject to deadlock detection. // The rank safepoint is used only for synchronization in reaching a @@ -241,7 +241,7 @@ class Monitor : public CHeapObj { // // Currently, however, the base object is a monitor. Monitor contains all the // logic for wait(), notify(), etc. Mutex extends monitor and restricts the -// visiblity of wait(), notify(), and notify_all(). +// visibility of wait(), notify(), and notify_all(). // // Another viable alternative would have been to have Monitor extend Mutex and // implement all the normal mutex and wait()-notify() logic in Mutex base class. diff --git a/hotspot/src/share/vm/runtime/mutexLocker.hpp b/hotspot/src/share/vm/runtime/mutexLocker.hpp index 361febdcdb8..9e35c03fbed 100644 --- a/hotspot/src/share/vm/runtime/mutexLocker.hpp +++ b/hotspot/src/share/vm/runtime/mutexLocker.hpp @@ -43,7 +43,7 @@ // Mutexes used in the VM. extern Mutex* Patching_lock; // a lock used to guard code patching of compiled code -extern Monitor* SystemDictionary_lock; // a lock on the system dictonary +extern Monitor* SystemDictionary_lock; // a lock on the system dictionary extern Mutex* PackageTable_lock; // a lock on the class loader package table extern Mutex* CompiledIC_lock; // a lock used to guard compiled IC patching and access extern Mutex* InlineCacheBuffer_lock; // a lock used to guard the InlineCacheBuffer @@ -345,8 +345,8 @@ class MutexUnlockerEx: StackObj { // - reentrant locking // - locking out of order // -// Only too be used for verify code, where we can relaxe out dead-lock -// dection code a bit (unsafe, but probably ok). This code is NEVER to +// Only to be used for verify code, where we can relax out dead-lock +// detection code a bit (unsafe, but probably ok). This code is NEVER to // be included in a product version. // class VerifyMutexLocker: StackObj { @@ -358,7 +358,7 @@ class VerifyMutexLocker: StackObj { _mutex = mutex; _reentrant = mutex->owned_by_self(); if (!_reentrant) { - // We temp. diable strict safepoint checking, while we require the lock + // We temp. disable strict safepoint checking, while we require the lock FlagSetting fs(StrictSafepointChecks, false); _mutex->lock(); } diff --git a/hotspot/src/share/vm/runtime/objectMonitor.cpp b/hotspot/src/share/vm/runtime/objectMonitor.cpp index 523887502ca..5ab77844195 100644 --- a/hotspot/src/share/vm/runtime/objectMonitor.cpp +++ b/hotspot/src/share/vm/runtime/objectMonitor.cpp @@ -234,7 +234,7 @@ static volatile int InitDone = 0 ; // * Taken together, the cxq and the EntryList constitute or form a // single logical queue of threads stalled trying to acquire the lock. // We use two distinct lists to improve the odds of a constant-time -// dequeue operation after acquisition (in the ::enter() epilog) and +// dequeue operation after acquisition (in the ::enter() epilogue) and // to reduce heat on the list ends. (c.f. Michael Scott's "2Q" algorithm). // A key desideratum is to minimize queue & monitor metadata manipulation // that occurs while holding the monitor lock -- that is, we want to @@ -677,7 +677,7 @@ void ATTR ObjectMonitor::EnterI (TRAPS) { // non-null and elect a new "Responsible" timer thread. // // This thread executes: - // ST Responsible=null; MEMBAR (in enter epilog - here) + // ST Responsible=null; MEMBAR (in enter epilogue - here) // LD cxq|EntryList (in subsequent exit) // // Entering threads in the slow/contended path execute: @@ -2031,7 +2031,7 @@ int ObjectMonitor::TrySpin_VaryDuration (Thread * Self) { TEVENT (Spin abort -- too many spinners) ; return 0 ; } - // Slighty racy, but benign ... + // Slightly racy, but benign ... Adjust (&_Spinner, 1) ; } diff --git a/hotspot/src/share/vm/runtime/objectMonitor.hpp b/hotspot/src/share/vm/runtime/objectMonitor.hpp index 10b3609c0bb..5a2756826cb 100644 --- a/hotspot/src/share/vm/runtime/objectMonitor.hpp +++ b/hotspot/src/share/vm/runtime/objectMonitor.hpp @@ -101,7 +101,7 @@ class ObjectMonitor { static int Spinner_offset_in_bytes() { return offset_of(ObjectMonitor, _Spinner); } public: - // Eventaully we'll make provisions for multiple callbacks, but + // Eventually we'll make provisions for multiple callbacks, but // now one will suffice. static int (*SpinCallbackFunction)(intptr_t, int) ; static intptr_t SpinCallbackArgument ; @@ -272,7 +272,7 @@ public: // type int, or int32_t but not intptr_t. There's no reason // to use 64-bit fields for these variables on a 64-bit JVM. - volatile intptr_t _count; // reference count to prevent reclaimation/deflation + volatile intptr_t _count; // reference count to prevent reclamation/deflation // at stop-the-world time. See deflate_idle_monitors(). // _count is approximately |_WaitSet| + |_EntryList| protected: diff --git a/hotspot/src/share/vm/runtime/orderAccess.hpp b/hotspot/src/share/vm/runtime/orderAccess.hpp index b59b4642c2c..faf8d2a50c9 100644 --- a/hotspot/src/share/vm/runtime/orderAccess.hpp +++ b/hotspot/src/share/vm/runtime/orderAccess.hpp @@ -61,13 +61,13 @@ // // Ensures that Load1 completes before Store2 and any subsequent store // operations. Loads before Load1 may *not* float below Store2 and any -// subseqeuent store operations. +// subsequent store operations. // // StoreLoad: Store1(s); StoreLoad; Load2 // // Ensures that Store1 completes before Load2 and any subsequent load // operations. Stores before Store1 may *not* float below Load2 and any -// subseqeuent load operations. +// subsequent load operations. // // // We define two further operations, 'release' and 'acquire'. They are @@ -176,7 +176,7 @@ // compilers that we currently use (SunStudio, gcc and VC++) respect the // semantics of volatile here. If you build HotSpot using other // compilers, you may need to verify that no compiler reordering occurs -// across the sequence point respresented by the volatile access. +// across the sequence point represented by the volatile access. // // // os::is_MP Considered Redundant @@ -311,7 +311,7 @@ class OrderAccess : AllStatic { private: // This is a helper that invokes the StubRoutines::fence_entry() // routine if it exists, It should only be used by platforms that - // don't another way to do the inline eassembly. + // don't have another way to do the inline assembly. static void StubRoutines_fence(); }; diff --git a/hotspot/src/share/vm/runtime/os.cpp b/hotspot/src/share/vm/runtime/os.cpp index e2ea94275e0..e812911ef2e 100644 --- a/hotspot/src/share/vm/runtime/os.cpp +++ b/hotspot/src/share/vm/runtime/os.cpp @@ -236,7 +236,7 @@ static void signal_thread_entry(JavaThread* thread, TRAPS) { while (true) { int sig; { - // FIXME : Currently we have not decieded what should be the status + // FIXME : Currently we have not decided what should be the status // for this java thread blocked here. Once we decide about // that we should fix this. sig = os::signal_wait(); @@ -583,7 +583,7 @@ void print_neighbor_blocks(void* ptr) { ptrdiff_t size = *size_addr_from_base(start_of_prev_block); u_char* obj = start_of_prev_block + space_before; if (size <= 0 ) { - // start is bad; mayhave been confused by OS data inbetween objects + // start is bad; may have been confused by OS data in between objects // search one more backwards start_of_prev_block = find_cushion_backwards(start_of_prev_block); size = *size_addr_from_base(start_of_prev_block); @@ -1011,7 +1011,7 @@ void os::print_location(outputStream* st, intptr_t x, bool verbose) { if (Universe::heap()->is_in(addr)) { HeapWord* p = Universe::heap()->block_start(addr); bool print = false; - // If we couldn't find it it just may mean that heap wasn't parseable + // If we couldn't find it it just may mean that heap wasn't parsable // See if we were just given an oop directly if (p != NULL && Universe::heap()->block_is_obj(p)) { print = true; @@ -1446,7 +1446,7 @@ void os::trace_page_sizes(const char* str, const size_t region_min_size, // >= 2 physical CPU's and >=2GB of memory, with some fuzz // because the graphics memory (?) sometimes masks physical memory. // If you want to change the definition of a server class machine -// on some OS or platform, e.g., >=4GB on Windohs platforms, +// on some OS or platform, e.g., >=4GB on Windows platforms, // then you'll have to parameterize this method based on that state, // as was done for logical processors here, or replicate and // specialize this method for each platform. (Or fix os to have diff --git a/hotspot/src/share/vm/runtime/os.hpp b/hotspot/src/share/vm/runtime/os.hpp index 17fcd3bdd79..3d5c69904c6 100644 --- a/hotspot/src/share/vm/runtime/os.hpp +++ b/hotspot/src/share/vm/runtime/os.hpp @@ -395,7 +395,7 @@ class os: AllStatic { // was equal. However, some platforms mask off faulting addresses // to the page size, so now we just check that the address is // within the page. This makes the thread argument unnecessary, - // but we retain the NULL check to preserve existing behaviour. + // but we retain the NULL check to preserve existing behavior. if (thread == NULL) return false; address page = (address) _mem_serialize_page; return addr >= page && addr < (page + os::vm_page_size()); @@ -540,7 +540,7 @@ class os: AllStatic { // Loads .dll/.so and // in case of error it checks if .dll/.so was built for the - // same architecture as Hotspot is running on + // same architecture as HotSpot is running on static void* dll_load(const char *name, char *ebuf, int ebuflen); // lookup symbol in a shared library diff --git a/hotspot/src/share/vm/runtime/park.cpp b/hotspot/src/share/vm/runtime/park.cpp index 6380570ef50..acac654d88f 100644 --- a/hotspot/src/share/vm/runtime/park.cpp +++ b/hotspot/src/share/vm/runtime/park.cpp @@ -152,7 +152,7 @@ void ParkEvent::operator delete (void * a) { // 6399321 As a temporary measure we copied & modified the ParkEvent:: // allocate() and release() code for use by Parkers. The Parker:: forms -// will eventually be removed as we consolide and shift over to ParkEvents +// will eventually be removed as we consolidate and shift over to ParkEvents // for both builtin synchronization and JSR166 operations. volatile int Parker::ListLock = 0 ; diff --git a/hotspot/src/share/vm/runtime/perfData.cpp b/hotspot/src/share/vm/runtime/perfData.cpp index 60b71fde184..f2152ab1c64 100644 --- a/hotspot/src/share/vm/runtime/perfData.cpp +++ b/hotspot/src/share/vm/runtime/perfData.cpp @@ -39,7 +39,7 @@ PerfDataList* PerfDataManager::_sampled = NULL; PerfDataList* PerfDataManager::_constants = NULL; /* - * The jvmstat global and subsysem jvmstat counter name spaces. The top + * The jvmstat global and subsystem jvmstat counter name spaces. The top * level name spaces imply the interface stability level of the counter, * which generally follows the Java package, class, and property naming * conventions. The CounterNS enumeration values should be used to index diff --git a/hotspot/src/share/vm/runtime/perfData.hpp b/hotspot/src/share/vm/runtime/perfData.hpp index 9ba4e4b71e4..f9836ac08ff 100644 --- a/hotspot/src/share/vm/runtime/perfData.hpp +++ b/hotspot/src/share/vm/runtime/perfData.hpp @@ -116,7 +116,7 @@ enum CounterNS { * * A PerfData subtype is not required to provide an implementation for * each variability classification. For example, the String type provides - * Variable and Constant variablility classifications in the PerfStringVariable + * Variable and Constant variability classifications in the PerfStringVariable * and PerfStringConstant classes, but does not provide a counter type. * * Performance data are also described by a unit of measure. Units allow @@ -172,10 +172,10 @@ enum CounterNS { * foo_counter->inc(); * * Creating a performance counter that holds a variably change long - * data value with untis specified in U_Bytes in the "com.sun.ci + * data value with units specified in U_Bytes in the "com.sun.ci * name space. * - * PerfLongVariable* bar_varible; + * PerfLongVariable* bar_variable; * bar_variable = PerfDataManager::create_long_variable(COM_CI, "bar", .* PerfData::U_Bytes, * optionalInitialValue, @@ -203,7 +203,7 @@ enum CounterNS { * In this example, the PerfData pointer can be ignored as the caller * is relying on the StatSampler PeriodicTask to sample the given * address at a regular interval. The interval is defined by the - * PerfDataSamplingInterval global variable, and is applyied on + * PerfDataSamplingInterval global variable, and is applied on * a system wide basis, not on an per-counter basis. * * Creating a performance counter in an arbitrary name space that utilizes @@ -234,7 +234,7 @@ enum CounterNS { * the UsePerfData flag. Counters will be created on the c-heap * if UsePerfData is false. * - * Until further noice, all PerfData objects should be created and + * Until further notice, all PerfData objects should be created and * manipulated within a guarded block. The guard variable is * UsePerfData, a product flag set to true by default. This flag may * be removed from the product in the future. @@ -586,7 +586,7 @@ class PerfStringVariable : public PerfString { * * The abstraction is not complete. A more general container class * would provide an Iterator abstraction that could be used to - * traverse the lists. This implementation still relys upon integer + * traverse the lists. This implementation still relies upon integer * iterators and the at(int index) method. However, the GrowableArray * is not directly visible outside this class and can be replaced by * some other implementation, as long as that implementation provides diff --git a/hotspot/src/share/vm/runtime/perfMemory.hpp b/hotspot/src/share/vm/runtime/perfMemory.hpp index d1256fb2e87..18a2efd2f55 100644 --- a/hotspot/src/share/vm/runtime/perfMemory.hpp +++ b/hotspot/src/share/vm/runtime/perfMemory.hpp @@ -55,7 +55,7 @@ * of the fields must be changed along with their counterparts in the * PerfDataBuffer Java class. The first four bytes of this structure * should never change, or compatibility problems between the monitoring - * applications and Hotspot VMs will result. The reserved fields are + * applications and HotSpot VMs will result. The reserved fields are * available for future enhancements. */ typedef struct { diff --git a/hotspot/src/share/vm/runtime/reflection.cpp b/hotspot/src/share/vm/runtime/reflection.cpp index a8d24fa6d10..dadcf60263f 100644 --- a/hotspot/src/share/vm/runtime/reflection.cpp +++ b/hotspot/src/share/vm/runtime/reflection.cpp @@ -482,7 +482,7 @@ static bool under_host_klass(InstanceKlass* ik, Klass* host_klass) { ik = InstanceKlass::cast(hc); // There's no way to make a host class loop short of patching memory. - // Therefore there cannot be a loop here unles there's another bug. + // Therefore there cannot be a loop here unless there's another bug. // Still, let's check for it. assert(--inf_loop_check > 0, "no host_klass loop"); } diff --git a/hotspot/src/share/vm/runtime/reflection.hpp b/hotspot/src/share/vm/runtime/reflection.hpp index 418c300faf9..d8694948cd7 100644 --- a/hotspot/src/share/vm/runtime/reflection.hpp +++ b/hotspot/src/share/vm/runtime/reflection.hpp @@ -138,9 +138,9 @@ private: static BasicType basic_type_mirror_to_basic_type(oop basic_type_mirror, TRAPS); public: - // Method invokation through java.lang.reflect.Method + // Method invocation through java.lang.reflect.Method static oop invoke_method(oop method_mirror, Handle receiver, objArrayHandle args, TRAPS); - // Method invokation through java.lang.reflect.Constructor + // Method invocation through java.lang.reflect.Constructor static oop invoke_constructor(oop method_mirror, objArrayHandle args, TRAPS); }; diff --git a/hotspot/src/share/vm/runtime/registerMap.hpp b/hotspot/src/share/vm/runtime/registerMap.hpp index 5dd677ac4e1..b0f536fb95c 100644 --- a/hotspot/src/share/vm/runtime/registerMap.hpp +++ b/hotspot/src/share/vm/runtime/registerMap.hpp @@ -70,7 +70,7 @@ class JavaThread; // 3) The RegisterMap keeps track of the values of callee-saved registers // from frame to frame (hence, the name). For some stack traversal the // values of the callee-saved registers does not matter, e.g., if you -// only need the static properies such as frame type, pc, and such. +// only need the static properties such as frame type, pc, and such. // Updating of the RegisterMap can be turned off by instantiating the // register map as: RegisterMap map(thread, false); diff --git a/hotspot/src/share/vm/runtime/relocator.cpp b/hotspot/src/share/vm/runtime/relocator.cpp index 450bcf28a94..73b1ce3eed4 100644 --- a/hotspot/src/share/vm/runtime/relocator.cpp +++ b/hotspot/src/share/vm/runtime/relocator.cpp @@ -141,7 +141,7 @@ Relocator::Relocator(methodHandle m, RelocatorListener* listener) { } // size is the new size of the instruction at bci. Hence, if size is less than the current -// instruction sice, we will shrink the code. +// instruction size, we will shrink the code. methodHandle Relocator::insert_space_at(int bci, int size, u_char inst_buffer[], TRAPS) { _changes = new GrowableArray (10); _changes->push(new ChangeWiden(bci, size, inst_buffer)); @@ -192,7 +192,7 @@ bool Relocator::handle_code_changes() { // Execute operation if (!ci->handle_code_change(this)) return false; - // Shuffel items up + // Shuffle items up for (int index = 1; index < _changes->length(); index++) { _changes->at_put(index-1, _changes->at(index)); } @@ -214,7 +214,7 @@ bool Relocator::is_opcode_lookupswitch(Bytecodes::Code bc) { } // We need a special instruction size method, since lookupswitches and tableswitches might not be -// properly alligned during relocation +// properly aligned during relocation int Relocator::rc_instr_len(int bci) { Bytecodes::Code bc= code_at(bci); switch (bc) { @@ -611,7 +611,7 @@ bool Relocator::relocate_code(int bci, int ilen, int delta) { // In case we have shrunken a tableswitch/lookupswitch statement, we store the last // bytes that get overwritten. We have to copy the bytes after the change_jumps method - // has been called, since it is likly to update last offset in a tableswitch/lookupswitch + // has been called, since it is likely to update last offset in a tableswitch/lookupswitch if (delta < 0) { assert(delta>=-3, "we cannot overwrite more than 3 bytes"); memcpy(_overwrite, addr_at(bci + ilen + delta), -delta); diff --git a/hotspot/src/share/vm/runtime/safepoint.cpp b/hotspot/src/share/vm/runtime/safepoint.cpp index 48e523f5aa0..5e04b0ba73d 100644 --- a/hotspot/src/share/vm/runtime/safepoint.cpp +++ b/hotspot/src/share/vm/runtime/safepoint.cpp @@ -156,7 +156,7 @@ void SafepointSynchronize::begin() { // stopped by different mechanisms: // // 1. Running interpreted - // The interpeter dispatch table is changed to force it to + // The interpreter dispatch table is changed to force it to // check for a safepoint condition between bytecodes. // 2. Running in native code // When returning from the native code, a Java thread must check @@ -282,7 +282,7 @@ void SafepointSynchronize::begin() { // See the comments in synchronizer.cpp for additional remarks on spinning. // // In the future we might: - // 1. Modify the safepoint scheme to avoid potentally unbounded spinning. + // 1. Modify the safepoint scheme to avoid potentially unbounded spinning. // This is tricky as the path used by a thread exiting the JVM (say on // on JNI call-out) simply stores into its state field. The burden // is placed on the VM thread, which must poll (spin). @@ -489,7 +489,7 @@ void SafepointSynchronize::end() { ConcurrentGCThread::safepoint_desynchronize(); } #endif // INCLUDE_ALL_GCS - // record this time so VMThread can keep track how much time has elasped + // record this time so VMThread can keep track how much time has elapsed // since last safepoint. _end_of_last_safepoint = os::javaTimeMillis(); } @@ -826,7 +826,7 @@ void SafepointSynchronize::handle_polling_page_exception(JavaThread *thread) { void SafepointSynchronize::print_safepoint_timeout(SafepointTimeoutReason reason) { if (!timeout_error_printed) { timeout_error_printed = true; - // Print out the thread infor which didn't reach the safepoint for debugging + // Print out the thread info which didn't reach the safepoint for debugging // purposes (useful when there are lots of threads in the debugger). tty->print_cr(""); tty->print_cr("# SafepointSynchronize::begin: Timeout detected:"); @@ -1093,7 +1093,7 @@ void ThreadSafepointState::handle_polling_page_exception() { if (caller_fr.is_deoptimized_frame()) { // The exception patch will destroy registers that are still // live and will be needed during deoptimization. Defer the - // Async exception should have defered the exception until the + // Async exception should have deferred the exception until the // next safepoint which will be detected when we get into // the interpreter so if we have an exception now things // are messed up. diff --git a/hotspot/src/share/vm/runtime/safepoint.hpp b/hotspot/src/share/vm/runtime/safepoint.hpp index 005ea4d0360..e43eef4df96 100644 --- a/hotspot/src/share/vm/runtime/safepoint.hpp +++ b/hotspot/src/share/vm/runtime/safepoint.hpp @@ -59,7 +59,7 @@ class SafepointSynchronize : AllStatic { public: enum SynchronizeState { _not_synchronized = 0, // Threads not synchronized at a safepoint - // Keep this value 0. See the coment in do_call_back() + // Keep this value 0. See the comment in do_call_back() _synchronizing = 1, // Synchronizing in progress _synchronized = 2 // All Java threads are stopped at a safepoint. Only VM thread is running }; @@ -91,7 +91,7 @@ class SafepointSynchronize : AllStatic { } SafepointStats; private: - static volatile SynchronizeState _state; // Threads might read this flag directly, without acquireing the Threads_lock + static volatile SynchronizeState _state; // Threads might read this flag directly, without acquiring the Threads_lock static volatile int _waiting_to_block; // number of threads we are waiting for to block static int _current_jni_active_count; // Counts the number of active critical natives during the safepoint @@ -106,7 +106,7 @@ public: private: static long _end_of_last_safepoint; // Time of last safepoint in milliseconds - // statistics + // Statistics static jlong _safepoint_begin_time; // time when safepoint begins static SafepointStats* _safepoint_stats; // array of SafepointStats struct static int _cur_stat_index; // current index to the above array @@ -155,7 +155,7 @@ public: _current_jni_active_count++; } - // Called when a thread volantary blocks + // Called when a thread voluntarily blocks static void block(JavaThread *thread); static void signal_thread_at_safepoint() { _waiting_to_block--; } @@ -172,7 +172,7 @@ public: static bool is_cleanup_needed(); static void do_cleanup_tasks(); - // debugging + // Debugging static void print_state() PRODUCT_RETURN; static void safepoint_msg(const char* format, ...) PRODUCT_RETURN; @@ -183,7 +183,7 @@ public: static void set_is_at_safepoint() { _state = _synchronized; } static void set_is_not_at_safepoint() { _state = _not_synchronized; } - // assembly support + // Assembly support static address address_of_state() { return (address)&_state; } static address safepoint_counter_addr() { return (address)&_safepoint_counter; } diff --git a/hotspot/src/share/vm/runtime/sharedRuntime.cpp b/hotspot/src/share/vm/runtime/sharedRuntime.cpp index fc89af6c45e..698c8d2336a 100644 --- a/hotspot/src/share/vm/runtime/sharedRuntime.cpp +++ b/hotspot/src/share/vm/runtime/sharedRuntime.cpp @@ -472,7 +472,7 @@ JRT_LEAF(jdouble, SharedRuntime::l2d(jlong x)) return (jdouble)x; JRT_END -// Exception handling accross interpreter/compiler boundaries +// Exception handling across interpreter/compiler boundaries // // exception_handler_for_return_address(...) returns the continuation address. // The continuation address is the entry point of the exception handler of the @@ -694,8 +694,8 @@ address SharedRuntime::compute_compiled_exc_handler(nmethod* nm, address ret_pc, // Allow abbreviated catch tables. The idea is to allow a method // to materialize its exceptions without committing to the exact // routing of exceptions. In particular this is needed for adding - // a synthethic handler to unlock monitors when inlining - // synchonized methods since the unlock path isn't represented in + // a synthetic handler to unlock monitors when inlining + // synchronized methods since the unlock path isn't represented in // the bytecodes. t = table.entry_for(catch_pco, -1, 0); } @@ -819,7 +819,7 @@ address SharedRuntime::continuation_for_implicit_exception(JavaThread* thread, // Exception happened in CodeCache. Must be either: // 1. Inline-cache check in C2I handler blob, // 2. Inline-cache check in nmethod, or - // 3. Implict null exception in nmethod + // 3. Implicit null exception in nmethod if (!cb->is_nmethod()) { bool is_in_blob = cb->is_adapter_blob() || cb->is_method_handles_adapter_blob(); @@ -2850,7 +2850,7 @@ VMRegPair *SharedRuntime::find_callee_arguments(Symbol* sig, bool has_receiver, // called from very start of a compiled OSR nmethod. A temp array is // allocated to hold the interesting bits of the interpreter frame. All // active locks are inflated to allow them to move. The displaced headers and -// active interpeter locals are copied into the temp buffer. Then we return +// active interpreter locals are copied into the temp buffer. Then we return // back to the compiled code. The compiled code then pops the current // interpreter frame off the stack and pushes a new compiled frame. Then it // copies the interpreter locals and displaced headers where it wants. diff --git a/hotspot/src/share/vm/runtime/sharedRuntime.hpp b/hotspot/src/share/vm/runtime/sharedRuntime.hpp index 6fc9424528e..1b696b0d97f 100644 --- a/hotspot/src/share/vm/runtime/sharedRuntime.hpp +++ b/hotspot/src/share/vm/runtime/sharedRuntime.hpp @@ -382,7 +382,7 @@ class SharedRuntime: AllStatic { // present if we see that compiled code is present the compiled call site // will be patched/re-resolved so that later calls will run compiled. - // Aditionally a c2i blob need to have a unverified entry because it can be reached + // Additionally a c2i blob need to have a unverified entry because it can be reached // in situations where the call site is an inlined cache site and may go megamorphic. // A i2c adapter is simpler than the c2i adapter. This is because it is assumed @@ -576,7 +576,7 @@ class SharedRuntime: AllStatic { // arguments for a Java-compiled call, and jumps to Rmethod-> code()-> // code_begin(). It is broken to call it without an nmethod assigned. // The usual behavior is to lift any register arguments up out of the -// stack and possibly re-pack the extra arguments to be contigious. +// stack and possibly re-pack the extra arguments to be contiguous. // I2C adapters will save what the interpreter's stack pointer will be // after arguments are popped, then adjust the interpreter's frame // size to force alignment and possibly to repack the arguments. @@ -593,7 +593,7 @@ class SharedRuntime: AllStatic { // outgoing stack args will be dead after the copy. // // Native wrappers, like adapters, marshal arguments. Unlike adapters they -// also perform an offical frame push & pop. They have a call to the native +// also perform an official frame push & pop. They have a call to the native // routine in their middles and end in a return (instead of ending in a jump). // The native wrappers are stored in real nmethods instead of the BufferBlobs // used by the adapters. The code generation happens here because it's very @@ -610,7 +610,7 @@ class AdapterHandlerEntry : public BasicHashtableEntry { #ifdef ASSERT // Captures code and signature used to generate this adapter when - // verifing adapter equivalence. + // verifying adapter equivalence. unsigned char* _saved_code; int _saved_code_length; #endif diff --git a/hotspot/src/share/vm/runtime/sharedRuntimeTrans.cpp b/hotspot/src/share/vm/runtime/sharedRuntimeTrans.cpp index 6390ae1a045..5173a6176ab 100644 --- a/hotspot/src/share/vm/runtime/sharedRuntimeTrans.cpp +++ b/hotspot/src/share/vm/runtime/sharedRuntimeTrans.cpp @@ -113,7 +113,7 @@ double scalbn (double x, int n) { } /* __ieee754_log(x) - * Return the logrithm of x + * Return the logarithm of x * * Method : * 1. Argument Reduction: find k and f such that diff --git a/hotspot/src/share/vm/runtime/sharedRuntimeTrig.cpp b/hotspot/src/share/vm/runtime/sharedRuntimeTrig.cpp index 74ed30cb003..f085664cbfb 100644 --- a/hotspot/src/share/vm/runtime/sharedRuntimeTrig.cpp +++ b/hotspot/src/share/vm/runtime/sharedRuntimeTrig.cpp @@ -223,7 +223,7 @@ static double scalbnA (double x, int n) { * * fq[] final product of x*(2/pi) in fq[0],..,fq[jk] * - * ih integer. If >0 it indicats q[] is >= 0.5, hence + * ih integer. If >0 it indicates q[] is >= 0.5, hence * it also indicates the *sign* of the result. * */ @@ -347,7 +347,7 @@ recompute: if(z==0.0) { jz -= 1; q0 -= 24; while(iq[jz]==0) { jz--; q0-=24;} - } else { /* break z into 24-bit if neccessary */ + } else { /* break z into 24-bit if necessary */ z = scalbnA(z,-q0); if(z>=two24B) { fw = (double)((int)(twon24*z)); @@ -409,7 +409,7 @@ recompute: /* * ==================================================== - * Copyright (c) 1993 Oracle and/or its affilates. All rights reserved. + * Copyright (c) 1993 Oracle and/or its affiliates. All rights reserved. * * Developed at SunPro, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this diff --git a/hotspot/src/share/vm/runtime/signature.cpp b/hotspot/src/share/vm/runtime/signature.cpp index ceaef3f56fd..3bad97a71d9 100644 --- a/hotspot/src/share/vm/runtime/signature.cpp +++ b/hotspot/src/share/vm/runtime/signature.cpp @@ -152,7 +152,7 @@ void SignatureIterator::iterate_parameters() { _parameter_index = 0; } -// Optimized version of iterat_parameters when fingerprint is known +// Optimized version of iterate_parameters when fingerprint is known void SignatureIterator::iterate_parameters( uint64_t fingerprint ) { uint64_t saved_fingerprint = fingerprint; diff --git a/hotspot/src/share/vm/runtime/simpleThresholdPolicy.cpp b/hotspot/src/share/vm/runtime/simpleThresholdPolicy.cpp index ad4c27cf29e..85b34bbd671 100644 --- a/hotspot/src/share/vm/runtime/simpleThresholdPolicy.cpp +++ b/hotspot/src/share/vm/runtime/simpleThresholdPolicy.cpp @@ -387,7 +387,7 @@ void SimpleThresholdPolicy::method_back_branch_event(methodHandle mh, methodHand int bci, CompLevel level, nmethod* nm, JavaThread* thread) { // If the method is already compiling, quickly bail out. if (is_compilation_enabled() && !CompileBroker::compilation_is_in_queue(mh, bci)) { - // Use loop event as an opportinity to also check there's been + // Use loop event as an opportunity to also check there's been // enough calls. CompLevel cur_level = comp_level(mh()); CompLevel next_level = call_event(mh(), cur_level); diff --git a/hotspot/src/share/vm/runtime/statSampler.cpp b/hotspot/src/share/vm/runtime/statSampler.cpp index 0b24def2497..082cc4ec45e 100644 --- a/hotspot/src/share/vm/runtime/statSampler.cpp +++ b/hotspot/src/share/vm/runtime/statSampler.cpp @@ -222,8 +222,8 @@ const char* StatSampler::get_system_property(const char* name, TRAPS) { * The list of System Properties that have corresponding PerfData * string instrumentation created by retrieving the named property's * value from System.getProperty() and unconditionally creating a - * PerfStringConstant object initialized to the retreived value. This - * is not an exhustive list of Java properties with corresponding string + * PerfStringConstant object initialized to the retrieved value. This + * is not an exhaustive list of Java properties with corresponding string * instrumentation as the create_system_property_instrumentation() method * creates other property based instrumentation conditionally. */ @@ -325,7 +325,7 @@ void StatSampler::create_misc_perfdata() { // create string instrumentation for various Java properties. create_system_property_instrumentation(CHECK); - // hotspot flags (from .hotspotrc) and args (from command line) + // HotSpot flags (from .hotspotrc) and args (from command line) // PerfDataManager::create_string_constant(JAVA_RT, "vmFlags", Arguments::jvm_flags(), CHECK); diff --git a/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp b/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp index d9f81b1d5cc..820ad469efc 100644 --- a/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp +++ b/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp @@ -111,7 +111,7 @@ class StubCodeGenerator: public StackObj { }; -// Stack-allocated helper class used to assciate a stub code with a name. +// Stack-allocated helper class used to associate a stub code with a name. // All stub code generating functions that use a StubCodeMark will be registered // in the global StubCodeDesc list and the generated stub code can be identified // later via an address pointing into it. diff --git a/hotspot/src/share/vm/runtime/synchronizer.cpp b/hotspot/src/share/vm/runtime/synchronizer.cpp index 8ea34005b03..75e81704122 100644 --- a/hotspot/src/share/vm/runtime/synchronizer.cpp +++ b/hotspot/src/share/vm/runtime/synchronizer.cpp @@ -737,10 +737,10 @@ bool ObjectSynchronizer::current_thread_holds_lock(JavaThread* thread, } // Be aware of this method could revoke bias of the lock object. -// This method querys the ownership of the lock handle specified by 'h_obj'. +// This method queries the ownership of the lock handle specified by 'h_obj'. // If the current thread owns the lock, it returns owner_self. If no // thread owns the lock, it returns owner_none. Otherwise, it will return -// ower_other. +// owner_other. ObjectSynchronizer::LockOwnership ObjectSynchronizer::query_lock_ownership (JavaThread *self, Handle h_obj) { // The caller must beware this method can revoke bias, and diff --git a/hotspot/src/share/vm/runtime/synchronizer.hpp b/hotspot/src/share/vm/runtime/synchronizer.hpp index af8df338a5c..4908c559c78 100644 --- a/hotspot/src/share/vm/runtime/synchronizer.hpp +++ b/hotspot/src/share/vm/runtime/synchronizer.hpp @@ -49,7 +49,7 @@ class ObjectSynchronizer : AllStatic { // to use enter() and exit() in order to make sure user be ware // of the performance and semantics difference. They are normally // used by ObjectLocker etc. The interpreter and compiler use - // assembly copies of these routines. Please keep them synchornized. + // assembly copies of these routines. Please keep them synchronized. // // attempt_rebias flag is used by UseBiasedLocking implementation static void fast_enter (Handle obj, BasicLock* lock, bool attempt_rebias, TRAPS); diff --git a/hotspot/src/share/vm/runtime/thread.cpp b/hotspot/src/share/vm/runtime/thread.cpp index a7b8068e211..7286aaeaac7 100644 --- a/hotspot/src/share/vm/runtime/thread.cpp +++ b/hotspot/src/share/vm/runtime/thread.cpp @@ -767,7 +767,7 @@ bool JavaThread::wait_for_ext_suspend_completion(int retries, int delay, void JavaThread::record_jump(address target, address instr, const char* file, int line) { // This should not need to be atomic as the only way for simultaneous - // updates is via interrupts. Even then this should be rare or non-existant + // updates is via interrupts. Even then this should be rare or non-existent // and we don't care that much anyway. int index = _jmp_ring_index; @@ -925,10 +925,10 @@ void Thread::check_for_valid_safepoint_state(bool potential_vm_operation) { // Threads_lock is special, since the safepoint synchronization will not start before this is // acquired. Hence, a JavaThread cannot be holding it at a safepoint. So is VMOperationRequest_lock, // since it is used to transfer control between JavaThreads and the VMThread - // Do not *exclude* any locks unless you are absolutly sure it is correct. Ask someone else first! + // Do not *exclude* any locks unless you are absolutely sure it is correct. Ask someone else first! if ( (cur->allow_vm_block() && cur != Threads_lock && - cur != Compile_lock && // Temporary: should not be necessary when we get spearate compilation + cur != Compile_lock && // Temporary: should not be necessary when we get separate compilation cur != VMOperationRequest_lock && cur != VMOperationQueue_lock) || cur->rank() == Mutex::special) { @@ -1271,7 +1271,7 @@ int WatcherThread::sleep() const { time_slept = 0; time_before_loop = now; } else { - // need to recalulate since we might have new tasks in _tasks + // need to recalculate since we might have new tasks in _tasks time_slept = (int) ((now - time_before_loop) / 1000000); } @@ -1638,7 +1638,7 @@ void JavaThread::run() { // initialize thread-local alloc buffer related fields this->initialize_tlab(); - // used to test validitity of stack trace backs + // used to test validity of stack trace backs this->record_base_of_stack_pointer(); // Record real stack base and size. @@ -3320,7 +3320,7 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { // Initialize system properties. Arguments::init_system_properties(); - // So that JDK version can be used as a discrimintor when parsing arguments + // So that JDK version can be used as a discriminator when parsing arguments JDK_Version_init(); // Update/Initialize System properties after JDK version number is known @@ -3359,7 +3359,7 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { jint adjust_after_os_result = Arguments::adjust_after_os(); if (adjust_after_os_result != JNI_OK) return adjust_after_os_result; - // intialize TLS + // initialize TLS ThreadLocalStorage::init(); // Bootstrap native memory tracking, so it can start recording memory @@ -4156,7 +4156,7 @@ bool Threads::includes(JavaThread* p) { // but the garbage collector must provide a safe context for them to run. // In particular, these things should never be called when the Threads_lock // is held by some other thread. (Note: the Safepoint abstraction also -// uses the Threads_lock to gurantee this property. It also makes sure that +// uses the Threads_lock to guarantee this property. It also makes sure that // all threads gets blocked when exiting or starting). void Threads::oops_do(OopClosure* f, CLDToOopClosure* cld_f, CodeBlobClosure* cf) { diff --git a/hotspot/src/share/vm/runtime/thread.hpp b/hotspot/src/share/vm/runtime/thread.hpp index d655df4f1da..7e6fed76f42 100644 --- a/hotspot/src/share/vm/runtime/thread.hpp +++ b/hotspot/src/share/vm/runtime/thread.hpp @@ -1231,7 +1231,7 @@ class JavaThread: public Thread { void set_vframe_array_head(vframeArray* value) { _vframe_array_head = value; } vframeArray* vframe_array_head() const { return _vframe_array_head; } - // Side structure for defering update of java frame locals until deopt occurs + // Side structure for deferring update of java frame locals until deopt occurs GrowableArray* deferred_locals() const { return _deferred_locals_updates; } void set_deferred_locals(GrowableArray* vf) { _deferred_locals_updates = vf; } diff --git a/hotspot/src/share/vm/runtime/unhandledOops.hpp b/hotspot/src/share/vm/runtime/unhandledOops.hpp index 8381b62be12..73572646706 100644 --- a/hotspot/src/share/vm/runtime/unhandledOops.hpp +++ b/hotspot/src/share/vm/runtime/unhandledOops.hpp @@ -34,7 +34,7 @@ // destructor. The constructor adds the oop address on a list // off each thread and the destructor removes the oop. At a potential // safepoint, the stack addresses of the local variable oops are trashed -// with a recognizeable value. If the local variable is used again, it +// with a recognizable value. If the local variable is used again, it // will segfault, indicating an unsafe use of that oop. // eg: // oop o; //register &o on list diff --git a/hotspot/src/share/vm/runtime/vframeArray.hpp b/hotspot/src/share/vm/runtime/vframeArray.hpp index 1d3dbd605b7..e828eb53237 100644 --- a/hotspot/src/share/vm/runtime/vframeArray.hpp +++ b/hotspot/src/share/vm/runtime/vframeArray.hpp @@ -53,7 +53,7 @@ class vframeArrayElement : public _ValueObj { frame _frame; // the interpreter frame we will unpack into int _bci; // raw bci for this vframe - bool _reexecute; // whether sould we reexecute this bytecode + bool _reexecute; // whether we should reexecute this bytecode Method* _method; // the method for this vframe MonitorChunk* _monitors; // active monitors for this vframe StackValueCollection* _locals; @@ -158,7 +158,7 @@ class vframeArray: public CHeapObj { // Tells whether index is within bounds. bool is_within_bounds(int index) const { return 0 <= index && index < frames(); } - // Accessores for instance variable + // Accessories for instance variable int frames() const { return _frames; } static vframeArray* allocate(JavaThread* thread, int frame_size, GrowableArray* chunk, diff --git a/hotspot/src/share/vm/runtime/virtualspace.cpp b/hotspot/src/share/vm/runtime/virtualspace.cpp index 24650f39f04..45730fa49fc 100644 --- a/hotspot/src/share/vm/runtime/virtualspace.cpp +++ b/hotspot/src/share/vm/runtime/virtualspace.cpp @@ -551,10 +551,10 @@ bool VirtualSpace::expand_by(size_t bytes, bool pre_touch) { // Determine which regions need to grow in this expand_by call. // If you are growing in the lower region, high() must be in that - // region so calcuate the size based on high(). For the middle and + // region so calculate the size based on high(). For the middle and // upper regions, determine the starting point of growth based on the // location of high(). By getting the MAX of the region's low address - // (or the prevoius region's high address) and high(), we can tell if it + // (or the previous region's high address) and high(), we can tell if it // is an intra or inter region growth. size_t lower_needs = 0; if (aligned_lower_new_high > lower_high()) { diff --git a/hotspot/src/share/vm/runtime/vm_operations.hpp b/hotspot/src/share/vm/runtime/vm_operations.hpp index ca616a52cf4..005fc11780b 100644 --- a/hotspot/src/share/vm/runtime/vm_operations.hpp +++ b/hotspot/src/share/vm/runtime/vm_operations.hpp @@ -154,7 +154,7 @@ class VM_Operation: public CHeapObj { void set_next(VM_Operation *next) { _next = next; } void set_prev(VM_Operation *prev) { _prev = prev; } - // Configuration. Override these appropriatly in subclasses. + // Configuration. Override these appropriately in subclasses. virtual VMOp_Type type() const = 0; virtual Mode evaluation_mode() const { return _safepoint; } virtual bool allow_nested_vm_operations() const { return false; } diff --git a/hotspot/src/share/vm/utilities/globalDefinitions.hpp b/hotspot/src/share/vm/utilities/globalDefinitions.hpp index ecb5429c783..8986f53a272 100644 --- a/hotspot/src/share/vm/utilities/globalDefinitions.hpp +++ b/hotspot/src/share/vm/utilities/globalDefinitions.hpp @@ -149,7 +149,7 @@ const int LogHeapWordsPerLong = LogBytesPerLong - LogHeapWordSize; // The larger HeapWordSize for 64bit requires larger heaps // for the same application running in 64bit. See bug 4967770. // The minimum alignment to a heap word size is done. Other -// parts of the memory system may required additional alignment +// parts of the memory system may require additional alignment // and are responsible for those alignments. #ifdef _LP64 #define ScaleForWordSize(x) align_size_down_((x) * 13 / 10, HeapWordSize) From 9b29efeb6377c961ab8b69bb97f1e12b87c08e99 Mon Sep 17 00:00:00 2001 From: Bengt Rutisson Date: Mon, 27 Jan 2014 13:14:53 +0100 Subject: [PATCH 033/158] 8030177: G1: Enable TLAB resizing Reviewed-by: tschatzl, stefank, jmasa --- .../gc_implementation/g1/g1CollectedHeap.cpp | 21 ++++- .../gc_implementation/g1/g1CollectedHeap.hpp | 10 ++- .../g1/g1CollectorPolicy.hpp | 2 + .../parallelScavenge/parallelScavengeHeap.cpp | 4 + .../parallelScavenge/parallelScavengeHeap.hpp | 1 + .../shared/mutableNUMASpace.cpp | 20 +++++ .../shared/mutableNUMASpace.hpp | 1 + .../gc_implementation/shared/mutableSpace.hpp | 1 + .../shared/parGCAllocBuffer.cpp | 4 + .../shared/parGCAllocBuffer.hpp | 11 +-- .../share/vm/gc_interface/collectedHeap.cpp | 15 ++++ .../share/vm/gc_interface/collectedHeap.hpp | 16 ++-- .../src/share/vm/memory/defNewGeneration.cpp | 4 + .../src/share/vm/memory/defNewGeneration.hpp | 1 + .../src/share/vm/memory/genCollectedHeap.cpp | 10 +++ .../src/share/vm/memory/genCollectedHeap.hpp | 1 + hotspot/src/share/vm/memory/generation.hpp | 4 + .../vm/memory/threadLocalAllocBuffer.cpp | 80 ++++++++----------- .../vm/memory/threadLocalAllocBuffer.hpp | 7 +- hotspot/src/share/vm/memory/universe.cpp | 2 + 20 files changed, 141 insertions(+), 74 deletions(-) diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp index a0c7db3b4a1..e3e9303871f 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -2996,7 +2996,17 @@ bool G1CollectedHeap::supports_tlab_allocation() const { } size_t G1CollectedHeap::tlab_capacity(Thread* ignored) const { - return HeapRegion::GrainBytes; + return (_g1_policy->young_list_target_length() - young_list()->survivor_length()) * HeapRegion::GrainBytes; +} + +size_t G1CollectedHeap::tlab_used(Thread* ignored) const { + return young_list()->eden_used_bytes(); +} + +// For G1 TLABs should not contain humongous objects, so the maximum TLAB size +// must be smaller than the humongous object limit. +size_t G1CollectedHeap::max_tlab_size() const { + return align_size_down(_humongous_object_threshold_in_words - 1, MinObjAlignment); } size_t G1CollectedHeap::unsafe_max_tlab_alloc(Thread* ignored) const { @@ -3008,11 +3018,11 @@ size_t G1CollectedHeap::unsafe_max_tlab_alloc(Thread* ignored) const { // humongous objects. HeapRegion* hr = _mutator_alloc_region.get(); - size_t max_tlab_size = _humongous_object_threshold_in_words * wordSize; + size_t max_tlab = max_tlab_size() * wordSize; if (hr == NULL) { - return max_tlab_size; + return max_tlab; } else { - return MIN2(MAX2(hr->free(), (size_t) MinTLABSize), max_tlab_size); + return MIN2(MAX2(hr->free(), (size_t) MinTLABSize), max_tlab); } } @@ -3649,6 +3659,7 @@ void G1CollectedHeap::gc_prologue(bool full /* Ignored */) { // always_do_update_barrier = false; assert(InlineCacheBuffer::is_empty(), "should have cleaned up ICBuffer"); // Fill TLAB's and such + accumulate_statistics_all_tlabs(); ensure_parsability(true); if (G1SummarizeRSetStats && (G1SummarizeRSetStatsPeriod > 0) && @@ -3673,6 +3684,8 @@ void G1CollectedHeap::gc_epilogue(bool full /* Ignored */) { "derived pointer present")); // always_do_update_barrier = true; + resize_all_tlabs(); + // We have just completed a GC. Update the soft reference // policy with the new heap occupancy Universe::update_heap_info_at_gc(); diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp index 4c6a0d7af67..07bbe275788 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @@ -1470,9 +1470,11 @@ public: // Section on thread-local allocation buffers (TLABs) // See CollectedHeap for semantics. - virtual bool supports_tlab_allocation() const; - virtual size_t tlab_capacity(Thread* thr) const; - virtual size_t unsafe_max_tlab_alloc(Thread* thr) const; + bool supports_tlab_allocation() const; + size_t tlab_capacity(Thread* ignored) const; + size_t tlab_used(Thread* ignored) const; + size_t max_tlab_size() const; + size_t unsafe_max_tlab_alloc(Thread* ignored) const; // Can a compiler initialize a new object without store barriers? // This permission only extends from the creation of a new object @@ -1557,7 +1559,7 @@ public: void set_region_short_lived_locked(HeapRegion* hr); // add appropriate methods for any other surv rate groups - YoungList* young_list() { return _young_list; } + YoungList* young_list() const { return _young_list; } // debugging bool check_young_list_well_formed() { diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp index b7469279c8d..f2905097190 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp @@ -820,6 +820,8 @@ public: // do that for any other surv rate groups } + size_t young_list_target_length() const { return _young_list_target_length; } + bool is_young_list_full() { uint young_list_length = _g1->young_list()->length(); uint young_list_target_length = _young_list_target_length; diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp index 2c1c57b4d40..da0e569e869 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp @@ -488,6 +488,10 @@ size_t ParallelScavengeHeap::tlab_capacity(Thread* thr) const { return young_gen()->eden_space()->tlab_capacity(thr); } +size_t ParallelScavengeHeap::tlab_used(Thread* thr) const { + return young_gen()->eden_space()->tlab_used(thr); +} + size_t ParallelScavengeHeap::unsafe_max_tlab_alloc(Thread* thr) const { return young_gen()->eden_space()->unsafe_max_tlab_alloc(thr); } diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp index d4c2a1e72e7..5173ff94ece 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp @@ -187,6 +187,7 @@ class ParallelScavengeHeap : public CollectedHeap { bool supports_tlab_allocation() const { return true; } size_t tlab_capacity(Thread* thr) const; + size_t tlab_used(Thread* thr) const; size_t unsafe_max_tlab_alloc(Thread* thr) const; // Can a compiler initialize a new object without store barriers? diff --git a/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp b/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp index 566e619cfb7..f27cf5155d0 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp +++ b/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp @@ -173,6 +173,26 @@ size_t MutableNUMASpace::tlab_capacity(Thread *thr) const { return lgrp_spaces()->at(i)->space()->capacity_in_bytes(); } +size_t MutableNUMASpace::tlab_used(Thread *thr) const { + // Please see the comments for tlab_capacity(). + guarantee(thr != NULL, "No thread"); + int lgrp_id = thr->lgrp_id(); + if (lgrp_id == -1) { + if (lgrp_spaces()->length() > 0) { + return (used_in_bytes()) / lgrp_spaces()->length(); + } else { + assert(false, "There should be at least one locality group"); + return 0; + } + } + int i = lgrp_spaces()->find(&lgrp_id, LGRPSpace::equals); + if (i == -1) { + return 0; + } + return lgrp_spaces()->at(i)->space()->used_in_bytes(); +} + + size_t MutableNUMASpace::unsafe_max_tlab_alloc(Thread *thr) const { // Please see the comments for tlab_capacity(). guarantee(thr != NULL, "No thread"); diff --git a/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp b/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp index c79f2465ac1..fcc68a99029 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp +++ b/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp @@ -217,6 +217,7 @@ class MutableNUMASpace : public MutableSpace { using MutableSpace::capacity_in_words; virtual size_t capacity_in_words(Thread* thr) const; virtual size_t tlab_capacity(Thread* thr) const; + virtual size_t tlab_used(Thread* thr) const; virtual size_t unsafe_max_tlab_alloc(Thread* thr) const; // Allocation (return NULL if full) diff --git a/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.hpp b/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.hpp index 78cc761f80b..09e3f316fca 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.hpp +++ b/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.hpp @@ -124,6 +124,7 @@ class MutableSpace: public ImmutableSpace { virtual size_t used_in_words() const { return pointer_delta(top(), bottom()); } virtual size_t free_in_words() const { return pointer_delta(end(), top()); } virtual size_t tlab_capacity(Thread* thr) const { return capacity_in_bytes(); } + virtual size_t tlab_used(Thread* thr) const { return used_in_bytes(); } virtual size_t unsafe_max_tlab_alloc(Thread* thr) const { return free_in_bytes(); } // Allocation (return NULL if full) diff --git a/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.cpp b/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.cpp index 18df2dd2ce5..acea112174f 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.cpp +++ b/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.cpp @@ -89,6 +89,10 @@ void ParGCAllocBuffer::flush_stats(PLABStats* stats) { // scavenge; it clears the sensor accumulators. void PLABStats::adjust_desired_plab_sz(uint no_of_gc_workers) { assert(ResizePLAB, "Not set"); + + assert(is_object_aligned(max_size()) && min_size() <= max_size(), + "PLAB clipping computation may be incorrect"); + if (_allocated == 0) { assert(_unused == 0, err_msg("Inconsistency in PLAB stats: " diff --git a/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp b/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp index 4759cbb3b7c..f1c0fbf64fe 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp +++ b/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp @@ -181,16 +181,7 @@ class PLABStats VALUE_OBJ_CLASS_SPEC { _used(0), _desired_plab_sz(desired_plab_sz_), _filter(wt) - { - size_t min_sz = min_size(); - size_t max_sz = max_size(); - size_t aligned_min_sz = align_object_size(min_sz); - size_t aligned_max_sz = align_object_size(max_sz); - assert(min_sz <= aligned_min_sz && max_sz >= aligned_max_sz && - min_sz <= max_sz, - "PLAB clipping computation in adjust_desired_plab_sz()" - " may be incorrect"); - } + { } static const size_t min_size() { return ParGCAllocBuffer::min_size(); diff --git a/hotspot/src/share/vm/gc_interface/collectedHeap.cpp b/hotspot/src/share/vm/gc_interface/collectedHeap.cpp index 742e3b73be8..4efb5651b03 100644 --- a/hotspot/src/share/vm/gc_interface/collectedHeap.cpp +++ b/hotspot/src/share/vm/gc_interface/collectedHeap.cpp @@ -320,6 +320,21 @@ void CollectedHeap::flush_deferred_store_barrier(JavaThread* thread) { assert(thread->deferred_card_mark().is_empty(), "invariant"); } +size_t CollectedHeap::max_tlab_size() const { + // TLABs can't be bigger than we can fill with a int[Integer.MAX_VALUE]. + // This restriction could be removed by enabling filling with multiple arrays. + // If we compute that the reasonable way as + // header_size + ((sizeof(jint) * max_jint) / HeapWordSize) + // we'll overflow on the multiply, so we do the divide first. + // We actually lose a little by dividing first, + // but that just makes the TLAB somewhat smaller than the biggest array, + // which is fine, since we'll be able to fill that. + size_t max_int_size = typeArrayOopDesc::header_size(T_INT) + + sizeof(jint) * + ((juint) max_jint / (size_t) HeapWordSize); + return align_size_down(max_int_size, MinObjAlignment); +} + // Helper for ReduceInitialCardMarks. For performance, // compiled code may elide card-marks for initializing stores // to a newly allocated object along the fast-path. We diff --git a/hotspot/src/share/vm/gc_interface/collectedHeap.hpp b/hotspot/src/share/vm/gc_interface/collectedHeap.hpp index 1563b9ef743..adcf6dd07f4 100644 --- a/hotspot/src/share/vm/gc_interface/collectedHeap.hpp +++ b/hotspot/src/share/vm/gc_interface/collectedHeap.hpp @@ -394,14 +394,16 @@ class CollectedHeap : public CHeapObj { // the following methods: // Returns "true" iff the heap supports thread-local allocation buffers. // The default is "no". - virtual bool supports_tlab_allocation() const { - return false; - } + virtual bool supports_tlab_allocation() const = 0; + // The amount of space available for thread-local allocation buffers. - virtual size_t tlab_capacity(Thread *thr) const { - guarantee(false, "thread-local allocation buffers not supported"); - return 0; - } + virtual size_t tlab_capacity(Thread *thr) const = 0; + + // The amount of used space for thread-local allocation buffers for the given thread. + virtual size_t tlab_used(Thread *thr) const = 0; + + virtual size_t max_tlab_size() const; + // An estimate of the maximum allocation that could be performed // for thread-local allocation buffers without triggering any // collection or expansion activity. diff --git a/hotspot/src/share/vm/memory/defNewGeneration.cpp b/hotspot/src/share/vm/memory/defNewGeneration.cpp index d656f400704..1e3cb9aaa3c 100644 --- a/hotspot/src/share/vm/memory/defNewGeneration.cpp +++ b/hotspot/src/share/vm/memory/defNewGeneration.cpp @@ -1084,6 +1084,10 @@ size_t DefNewGeneration::tlab_capacity() const { return eden()->capacity(); } +size_t DefNewGeneration::tlab_used() const { + return eden()->used(); +} + size_t DefNewGeneration::unsafe_max_tlab_alloc() const { return unsafe_max_alloc_nogc(); } diff --git a/hotspot/src/share/vm/memory/defNewGeneration.hpp b/hotspot/src/share/vm/memory/defNewGeneration.hpp index 0623d446ad3..a5c0eb30951 100644 --- a/hotspot/src/share/vm/memory/defNewGeneration.hpp +++ b/hotspot/src/share/vm/memory/defNewGeneration.hpp @@ -239,6 +239,7 @@ protected: // Thread-local allocation buffers bool supports_tlab_allocation() const { return true; } size_t tlab_capacity() const; + size_t tlab_used() const; size_t unsafe_max_tlab_alloc() const; // Grow the generation by the specified number of bytes. diff --git a/hotspot/src/share/vm/memory/genCollectedHeap.cpp b/hotspot/src/share/vm/memory/genCollectedHeap.cpp index f3043c7d2a4..5e0572e4ba7 100644 --- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp +++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp @@ -932,6 +932,16 @@ size_t GenCollectedHeap::tlab_capacity(Thread* thr) const { return result; } +size_t GenCollectedHeap::tlab_used(Thread* thr) const { + size_t result = 0; + for (int i = 0; i < _n_gens; i += 1) { + if (_gens[i]->supports_tlab_allocation()) { + result += _gens[i]->tlab_used(); + } + } + return result; +} + size_t GenCollectedHeap::unsafe_max_tlab_alloc(Thread* thr) const { size_t result = 0; for (int i = 0; i < _n_gens; i += 1) { diff --git a/hotspot/src/share/vm/memory/genCollectedHeap.hpp b/hotspot/src/share/vm/memory/genCollectedHeap.hpp index da6ebf30587..7bea23d68e4 100644 --- a/hotspot/src/share/vm/memory/genCollectedHeap.hpp +++ b/hotspot/src/share/vm/memory/genCollectedHeap.hpp @@ -248,6 +248,7 @@ public: // Section on TLAB's. virtual bool supports_tlab_allocation() const; virtual size_t tlab_capacity(Thread* thr) const; + virtual size_t tlab_used(Thread* thr) const; virtual size_t unsafe_max_tlab_alloc(Thread* thr) const; virtual HeapWord* allocate_new_tlab(size_t size); diff --git a/hotspot/src/share/vm/memory/generation.hpp b/hotspot/src/share/vm/memory/generation.hpp index ff92d5b63ba..e7cbd2c1226 100644 --- a/hotspot/src/share/vm/memory/generation.hpp +++ b/hotspot/src/share/vm/memory/generation.hpp @@ -299,6 +299,10 @@ class Generation: public CHeapObj { guarantee(false, "Generation doesn't support thread local allocation buffers"); return 0; } + virtual size_t tlab_used() const { + guarantee(false, "Generation doesn't support thread local allocation buffers"); + return 0; + } virtual size_t unsafe_max_tlab_alloc() const { guarantee(false, "Generation doesn't support thread local allocation buffers"); return 0; diff --git a/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp b/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp index 9006398ebe2..715e6214c9b 100644 --- a/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp +++ b/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp @@ -34,6 +34,7 @@ // Thread-Local Edens support // static member initialization +size_t ThreadLocalAllocBuffer::_max_size = 0; unsigned ThreadLocalAllocBuffer::_target_refills = 0; GlobalTLABStats* ThreadLocalAllocBuffer::_global_stats = NULL; @@ -45,7 +46,7 @@ void ThreadLocalAllocBuffer::clear_before_allocation() { void ThreadLocalAllocBuffer::accumulate_statistics_before_gc() { global_stats()->initialize(); - for(JavaThread *thread = Threads::first(); thread; thread = thread->next()) { + for (JavaThread *thread = Threads::first(); thread != NULL; thread = thread->next()) { thread->tlab().accumulate_statistics(); thread->tlab().initialize_statistics(); } @@ -60,28 +61,32 @@ void ThreadLocalAllocBuffer::accumulate_statistics_before_gc() { } void ThreadLocalAllocBuffer::accumulate_statistics() { - size_t capacity = Universe::heap()->tlab_capacity(myThread()) / HeapWordSize; - size_t unused = Universe::heap()->unsafe_max_tlab_alloc(myThread()) / HeapWordSize; - size_t used = capacity - unused; - - // Update allocation history if a reasonable amount of eden was allocated. - bool update_allocation_history = used > 0.5 * capacity; + Thread* thread = myThread(); + size_t capacity = Universe::heap()->tlab_capacity(thread); + size_t used = Universe::heap()->tlab_used(thread); _gc_waste += (unsigned)remaining(); + size_t total_allocated = thread->allocated_bytes(); + size_t allocated_since_last_gc = total_allocated - _allocated_before_last_gc; + _allocated_before_last_gc = total_allocated; if (PrintTLAB && (_number_of_refills > 0 || Verbose)) { print_stats("gc"); } if (_number_of_refills > 0) { + // Update allocation history if a reasonable amount of eden was allocated. + bool update_allocation_history = used > 0.5 * capacity; if (update_allocation_history) { // Average the fraction of eden allocated in a tlab by this // thread for use in the next resize operation. // _gc_waste is not subtracted because it's included in // "used". - size_t allocation = _number_of_refills * desired_size(); - double alloc_frac = allocation / (double) used; + // The result can be larger than 1.0 due to direct to old allocations. + // These allocations should ideally not be counted but since it is not possible + // to filter them out here we just cap the fraction to be at most 1.0. + double alloc_frac = MIN2(1.0, (double) allocated_since_last_gc / used); _allocation_fraction.sample(alloc_frac); } global_stats()->update_allocating_threads(); @@ -126,33 +131,32 @@ void ThreadLocalAllocBuffer::make_parsable(bool retire) { } void ThreadLocalAllocBuffer::resize_all_tlabs() { - for(JavaThread *thread = Threads::first(); thread; thread = thread->next()) { - thread->tlab().resize(); + if (ResizeTLAB) { + for (JavaThread *thread = Threads::first(); thread != NULL; thread = thread->next()) { + thread->tlab().resize(); + } } } void ThreadLocalAllocBuffer::resize() { + // Compute the next tlab size using expected allocation amount + assert(ResizeTLAB, "Should not call this otherwise"); + size_t alloc = (size_t)(_allocation_fraction.average() * + (Universe::heap()->tlab_capacity(myThread()) / HeapWordSize)); + size_t new_size = alloc / _target_refills; - if (ResizeTLAB) { - // Compute the next tlab size using expected allocation amount - size_t alloc = (size_t)(_allocation_fraction.average() * - (Universe::heap()->tlab_capacity(myThread()) / HeapWordSize)); - size_t new_size = alloc / _target_refills; + new_size = MIN2(MAX2(new_size, min_size()), max_size()); - new_size = MIN2(MAX2(new_size, min_size()), max_size()); + size_t aligned_new_size = align_object_size(new_size); - size_t aligned_new_size = align_object_size(new_size); - - if (PrintTLAB && Verbose) { - gclog_or_tty->print("TLAB new size: thread: " INTPTR_FORMAT " [id: %2d]" - " refills %d alloc: %8.6f desired_size: " SIZE_FORMAT " -> " SIZE_FORMAT "\n", - myThread(), myThread()->osthread()->thread_id(), - _target_refills, _allocation_fraction.average(), desired_size(), aligned_new_size); - } - set_desired_size(aligned_new_size); - - set_refill_waste_limit(initial_refill_waste_limit()); + if (PrintTLAB && Verbose) { + gclog_or_tty->print("TLAB new size: thread: " INTPTR_FORMAT " [id: %2d]" + " refills %d alloc: %8.6f desired_size: " SIZE_FORMAT " -> " SIZE_FORMAT "\n", + myThread(), myThread()->osthread()->thread_id(), + _target_refills, _allocation_fraction.average(), desired_size(), aligned_new_size); } + set_desired_size(aligned_new_size); + set_refill_waste_limit(initial_refill_waste_limit()); } void ThreadLocalAllocBuffer::initialize_statistics() { @@ -248,31 +252,13 @@ size_t ThreadLocalAllocBuffer::initial_desired_size() { return init_sz; } -const size_t ThreadLocalAllocBuffer::max_size() { - - // TLABs can't be bigger than we can fill with a int[Integer.MAX_VALUE]. - // This restriction could be removed by enabling filling with multiple arrays. - // If we compute that the reasonable way as - // header_size + ((sizeof(jint) * max_jint) / HeapWordSize) - // we'll overflow on the multiply, so we do the divide first. - // We actually lose a little by dividing first, - // but that just makes the TLAB somewhat smaller than the biggest array, - // which is fine, since we'll be able to fill that. - - size_t unaligned_max_size = typeArrayOopDesc::header_size(T_INT) + - sizeof(jint) * - ((juint) max_jint / (size_t) HeapWordSize); - return align_size_down(unaligned_max_size, MinObjAlignment); -} - void ThreadLocalAllocBuffer::print_stats(const char* tag) { Thread* thrd = myThread(); size_t waste = _gc_waste + _slow_refill_waste + _fast_refill_waste; size_t alloc = _number_of_refills * _desired_size; double waste_percent = alloc == 0 ? 0.0 : 100.0 * waste / alloc; - size_t tlab_used = Universe::heap()->tlab_capacity(thrd) - - Universe::heap()->unsafe_max_tlab_alloc(thrd); + size_t tlab_used = Universe::heap()->tlab_used(thrd); gclog_or_tty->print("TLAB: %s thread: " INTPTR_FORMAT " [id: %2d]" " desired_size: " SIZE_FORMAT "KB" " slow allocs: %d refill waste: " SIZE_FORMAT "B" diff --git a/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp b/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp index f8acf536ee3..e0dc61a73f6 100644 --- a/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp +++ b/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp @@ -45,7 +45,9 @@ private: HeapWord* _end; // allocation end (excluding alignment_reserve) size_t _desired_size; // desired size (including alignment_reserve) size_t _refill_waste_limit; // hold onto tlab if free() is larger than this + size_t _allocated_before_last_gc; // total bytes allocated up until the last gc + static size_t _max_size; // maximum size of any TLAB static unsigned _target_refills; // expected number of refills between GCs unsigned _number_of_refills; @@ -99,12 +101,13 @@ private: static GlobalTLABStats* global_stats() { return _global_stats; } public: - ThreadLocalAllocBuffer() : _allocation_fraction(TLABAllocationWeight) { + ThreadLocalAllocBuffer() : _allocation_fraction(TLABAllocationWeight), _allocated_before_last_gc(0) { // do nothing. tlabs must be inited by initialize() calls } static const size_t min_size() { return align_object_size(MinTLABSize / HeapWordSize); } - static const size_t max_size(); + static const size_t max_size() { assert(_max_size != 0, "max_size not set up"); return _max_size; } + static void set_max_size(size_t max_size) { _max_size = max_size; } HeapWord* start() const { return _start; } HeapWord* end() const { return _end; } diff --git a/hotspot/src/share/vm/memory/universe.cpp b/hotspot/src/share/vm/memory/universe.cpp index 417ce04072a..eecf3a93847 100644 --- a/hotspot/src/share/vm/memory/universe.cpp +++ b/hotspot/src/share/vm/memory/universe.cpp @@ -816,6 +816,8 @@ jint Universe::initialize_heap() { Universe::_collectedHeap = new GenCollectedHeap(gc_policy); } + ThreadLocalAllocBuffer::set_max_size(Universe::heap()->max_tlab_size()); + jint status = Universe::heap()->initialize(); if (status != JNI_OK) { return status; From a23ee6de8ddbde5efba5c5635f588ce60bc7f3e6 Mon Sep 17 00:00:00 2001 From: Stefan Johansson Date: Mon, 20 Jan 2014 10:55:54 +0100 Subject: [PATCH 034/158] 8031686: G1: assert(_hrs.max_length() == _expansion_regions) failed Using pointer_delta to avoid overflowing pointer calculation. Reviewed-by: jmasa, tschatzl --- .../vm/gc_implementation/g1/g1BiasedArray.hpp | 2 +- hotspot/test/gc/g1/Test2GbHeap.java | 62 +++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 hotspot/test/gc/g1/Test2GbHeap.java diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1BiasedArray.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1BiasedArray.hpp index f80c70b4e36..6b19f708556 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1BiasedArray.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1BiasedArray.hpp @@ -79,7 +79,7 @@ protected: assert((uintptr_t)end % mapping_granularity_in_bytes == 0, err_msg("end mapping area address must be a multiple of mapping granularity %zd, is "PTR_FORMAT, mapping_granularity_in_bytes, end)); - size_t num_target_elems = (end - bottom) / (mapping_granularity_in_bytes / HeapWordSize); + size_t num_target_elems = pointer_delta(end, bottom, mapping_granularity_in_bytes); idx_t bias = (uintptr_t)bottom / mapping_granularity_in_bytes; address base = create_new_base_array(num_target_elems, target_elem_size_in_bytes); initialize_base(base, num_target_elems, bias, target_elem_size_in_bytes, log2_intptr(mapping_granularity_in_bytes)); diff --git a/hotspot/test/gc/g1/Test2GbHeap.java b/hotspot/test/gc/g1/Test2GbHeap.java new file mode 100644 index 00000000000..6b0cd3b8de2 --- /dev/null +++ b/hotspot/test/gc/g1/Test2GbHeap.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test Test2GbHeap + * @bug 8031686 + * @summary Regression test to ensure we can start G1 with 2gb heap. + * @key gc + * @key regression + * @library /testlibrary + */ + +import java.util.ArrayList; + +import com.oracle.java.testlibrary.OutputAnalyzer; +import com.oracle.java.testlibrary.ProcessTools; + +public class Test2GbHeap { + public static void main(String[] args) throws Exception { + ArrayList testArguments = new ArrayList(); + + testArguments.add("-XX:+UseG1GC"); + testArguments.add("-Xmx2g"); + testArguments.add("-version"); + + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(testArguments.toArray(new String[0])); + + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + + // Avoid failing test for setups not supported. + if (output.getOutput().contains("Could not reserve enough space for 2097152KB object heap")) { + // Will fail on machines with too little memory (and Windows 32-bit VM), ignore such failures. + output.shouldHaveExitValue(1); + } else if (output.getOutput().contains("G1 GC is disabled in this release")) { + // G1 is not supported on embedded, ignore such failures. + output.shouldHaveExitValue(1); + } else { + // Normally everything should be fine. + output.shouldHaveExitValue(0); + } + } +} From 9d4f3dfd4f9adc549161f6c12398aa0248903110 Mon Sep 17 00:00:00 2001 From: Jon Masamitsu Date: Wed, 15 Jan 2014 07:20:04 -0800 Subject: [PATCH 035/158] 8031290: Adjust call to getisax() for additional words returned Reviewed-by: kvn, iveresov, twisti --- hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp | 8 +++++-- .../vm/vm_version_solaris_sparc.cpp | 23 +++++++++++++++---- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp b/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp index 6ddf5700734..eafb4856280 100644 --- a/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp +++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp @@ -49,7 +49,8 @@ protected: M_family = 15, T_family = 16, T1_model = 17, - aes_instructions = 18 + sparc5_instructions = 18, + aes_instructions = 19 }; enum Feature_Flag_Set { @@ -74,6 +75,7 @@ protected: M_family_m = 1 << M_family, T_family_m = 1 << T_family, T1_model_m = 1 << T1_model, + sparc5_instructions_m = 1 << sparc5_instructions, aes_instructions_m = 1 << aes_instructions, generic_v8_m = v8_instructions_m | hardware_mul32_m | hardware_div32_m | hardware_fsmuld_m, @@ -125,6 +127,7 @@ public: static bool has_vis3() { return (_features & vis3_instructions_m) != 0; } static bool has_blk_init() { return (_features & blk_init_instructions_m) != 0; } static bool has_cbcond() { return (_features & cbcond_instructions_m) != 0; } + static bool has_sparc5_instr() { return (_features & sparc5_instructions_m) != 0; } static bool has_aes() { return (_features & aes_instructions_m) != 0; } static bool supports_compare_and_exchange() @@ -136,6 +139,7 @@ public: static bool is_M_series() { return is_M_family(_features); } static bool is_T4() { return is_T_family(_features) && has_cbcond(); } + static bool is_T7() { return is_T_family(_features) && has_sparc5_instr(); } // Fujitsu SPARC64 static bool is_sparc64() { return (_features & sparc64_family_m) != 0; } @@ -155,7 +159,7 @@ public: static const char* cpu_features() { return _features_str; } static intx prefetch_data_size() { - return is_T4() ? 32 : 64; // default prefetch block size on sparc + return is_T4() && !is_T7() ? 32 : 64; // default prefetch block size on sparc } // Prefetch diff --git a/hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp b/hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp index 6dca05f91f1..b6639c90b14 100644 --- a/hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp +++ b/hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp @@ -75,13 +75,19 @@ int VM_Version::platform_features(int features) { do_sysinfo(SI_ARCHITECTURE_64, "sparcv9", &features, generic_v9_m); // Extract valid instruction set extensions. - uint_t av; - uint_t avn = os::Solaris::getisax(&av, 1); - assert(avn == 1, "should only return one av"); + uint_t avs[2]; + uint_t avn = os::Solaris::getisax(avs, 2); + assert(avn <= 2, "should return two or less av's"); + uint_t av = avs[0]; #ifndef PRODUCT - if (PrintMiscellaneous && Verbose) - tty->print_cr("getisax(2) returned: " PTR32_FORMAT, av); + if (PrintMiscellaneous && Verbose) { + tty->print("getisax(2) returned: " PTR32_FORMAT, av); + if (avn > 1) { + tty->print(", " PTR32_FORMAT, avs[1]); + } + tty->cr(); + } #endif if (av & AV_SPARC_MUL32) features |= hardware_mul32_m; @@ -91,6 +97,13 @@ int VM_Version::platform_features(int features) { if (av & AV_SPARC_POPC) features |= hardware_popc_m; if (av & AV_SPARC_VIS) features |= vis1_instructions_m; if (av & AV_SPARC_VIS2) features |= vis2_instructions_m; + if (avn > 1) { + uint_t av2 = avs[1]; +#ifndef AV2_SPARC_SPARC5 +#define AV2_SPARC_SPARC5 0x00000008 /* The 29 new fp and sub instructions */ +#endif + if (av2 & AV2_SPARC_SPARC5) features |= sparc5_instructions_m; + } // Next values are not defined before Solaris 10 // but Solaris 8 is used for jdk6 update builds. From 735887477fdc3a1ee5ffd4efce671a4a4a097306 Mon Sep 17 00:00:00 2001 From: Mikhailo Seledtsov Date: Wed, 15 Jan 2014 19:12:45 -0500 Subject: [PATCH 036/158] 8031151: Add basic CDS tests Added new tests to cover missing CDS basic funtions Reviewed-by: zgu, hseigel --- .../ArchiveDoesNotExist.java | 68 ++++++++++++++++ .../SharedArchiveFile/CdsWriteError.java | 78 +++++++++++++++++++ .../DefaultUseWithClient.java | 64 +++++++++++++++ 3 files changed, 210 insertions(+) create mode 100644 hotspot/test/runtime/SharedArchiveFile/ArchiveDoesNotExist.java create mode 100644 hotspot/test/runtime/SharedArchiveFile/CdsWriteError.java create mode 100644 hotspot/test/runtime/SharedArchiveFile/DefaultUseWithClient.java diff --git a/hotspot/test/runtime/SharedArchiveFile/ArchiveDoesNotExist.java b/hotspot/test/runtime/SharedArchiveFile/ArchiveDoesNotExist.java new file mode 100644 index 00000000000..ba0cb013b58 --- /dev/null +++ b/hotspot/test/runtime/SharedArchiveFile/ArchiveDoesNotExist.java @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test ArchiveDoesNotExist + * @summary Test how VM handles "file does not exist" situation while + * attempting to use CDS archive. JVM should exit gracefully + * when sharing mode is ON, and continue w/o sharing if sharing + * mode is AUTO. + * @library /testlibrary + * @run main ArchiveDoesNotExist + */ + +import com.oracle.java.testlibrary.*; +import java.io.File; + +public class ArchiveDoesNotExist { + public static void main(String[] args) throws Exception { + String fileName = "test.jsa"; + + File cdsFile = new File(fileName); + if (cdsFile.exists()) + throw new RuntimeException("Test error: cds file already exists"); + + // Sharing: on + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( + "-XX:+UnlockDiagnosticVMOptions", + "-XX:SharedArchiveFile=./" + fileName, + "-Xshare:on", + "-version"); + + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + output.shouldContain("Specified shared archive not found"); + output.shouldHaveExitValue(1); + + // Sharing: auto + pb = ProcessTools.createJavaProcessBuilder( + "-XX:+UnlockDiagnosticVMOptions", + "-XX:SharedArchiveFile=./" + fileName, + "-Xshare:auto", + "-version"); + + output = new OutputAnalyzer(pb.start()); + output.shouldContain("java version"); + output.shouldNotContain("sharing"); + output.shouldHaveExitValue(0); + } +} diff --git a/hotspot/test/runtime/SharedArchiveFile/CdsWriteError.java b/hotspot/test/runtime/SharedArchiveFile/CdsWriteError.java new file mode 100644 index 00000000000..09189b9881a --- /dev/null +++ b/hotspot/test/runtime/SharedArchiveFile/CdsWriteError.java @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test CdsWriteError + * @summary Test how VM handles situation when it is impossible to write the + * CDS archive. VM is expected to exit gracefully and display the + * correct reason for the error. + * @library /testlibrary + * @run main CdsWriteError + */ + +import com.oracle.java.testlibrary.*; +import java.io.File; + +public class CdsWriteError { + public static void main(String[] args) throws Exception { + + if (Platform.isWindows()) { + System.out.println("This test is ignored on Windows. This test " + + "manipulates folder writable attribute, which is known to be " + + "often ignored by Windows"); + + return; + } + + String folderName = "tmp"; + String fileName = folderName + File.separator + "empty.jsa"; + + // create an empty archive file and make it read only + File folder = new File(folderName); + if (!folder.mkdir()) + throw new RuntimeException("Error when creating a tmp folder"); + + File cdsFile = new File(fileName); + if (!cdsFile.createNewFile()) + throw new RuntimeException("Error when creating an empty CDS file"); + if (!cdsFile.setWritable(false)) + throw new RuntimeException("Error: could not set writable attribute on cds file"); + if (!folder.setWritable(false)) + throw new RuntimeException("Error: could not set writable attribute on the cds folder"); + + try { + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( + "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./" + fileName, "-Xshare:dump"); + + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + output.shouldContain("Unable to create shared archive file"); + output.shouldHaveExitValue(1); + } finally { + // doing this, just in case, to make sure that files can be deleted by the harness + // on any subsequent run + folder.setWritable(true); + cdsFile.setWritable(true); + } + } +} + diff --git a/hotspot/test/runtime/SharedArchiveFile/DefaultUseWithClient.java b/hotspot/test/runtime/SharedArchiveFile/DefaultUseWithClient.java new file mode 100644 index 00000000000..9cbed20a04e --- /dev/null +++ b/hotspot/test/runtime/SharedArchiveFile/DefaultUseWithClient.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test DefaultUseWithClient + * @summary Test default behavior of sharing with -client + * @library /testlibrary + * @run main DefaultUseWithClient + */ + +import com.oracle.java.testlibrary.*; +import java.io.File; + +public class DefaultUseWithClient { + public static void main(String[] args) throws Exception { + String fileName = "test.jsa"; + + // On 32-bit windows CDS should be on by default in "-client" config + // Skip this test on any other platform + boolean is32BitWindows = (Platform.isWindows() && Platform.is32bit()); + if (!is32BitWindows) { + System.out.println("Test only applicable on 32-bit Windows. Skipping"); + return; + } + + // create the archive + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( + "-XX:+UnlockDiagnosticVMOptions", + "-XX:SharedArchiveFile=./" + fileName, + "-Xshare:dump"); + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + output.shouldHaveExitValue(0); + + pb = ProcessTools.createJavaProcessBuilder( + "-XX:+UnlockDiagnosticVMOptions", + "-XX:SharedArchiveFile=./" + fileName, + "-client", + "-version"); + + output = new OutputAnalyzer(pb.start()); + output.shouldContain("sharing"); + output.shouldHaveExitValue(0); + } +} From 3cd01085cd71ff1a7fc149528436e39a9539aba6 Mon Sep 17 00:00:00 2001 From: Erik Helin Date: Thu, 16 Jan 2014 17:22:35 +0100 Subject: [PATCH 037/158] 8031779: Assert in MetaspaceGC is always true Reviewed-by: jmasa, jwilhelm --- hotspot/src/share/vm/memory/metaspace.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hotspot/src/share/vm/memory/metaspace.cpp b/hotspot/src/share/vm/memory/metaspace.cpp index 5a7e4ec2fb1..1648b71704a 100644 --- a/hotspot/src/share/vm/memory/metaspace.cpp +++ b/hotspot/src/share/vm/memory/metaspace.cpp @@ -1455,9 +1455,10 @@ void MetaspaceGC::compute_new_size() { // No expansion, now see if we want to shrink // We would never want to shrink more than this + assert(capacity_until_GC >= minimum_desired_capacity, + err_msg(SIZE_FORMAT " >= " SIZE_FORMAT, + capacity_until_GC, minimum_desired_capacity)); size_t max_shrink_bytes = capacity_until_GC - minimum_desired_capacity; - assert(max_shrink_bytes >= 0, err_msg("max_shrink_bytes " SIZE_FORMAT, - max_shrink_bytes)); // Should shrinking be considered? if (MaxMetaspaceFreeRatio < 100) { From 7f34fe7eee6e7974d53d39e7d115ac1e06dbd45d Mon Sep 17 00:00:00 2001 From: Calvin Cheung Date: Thu, 16 Jan 2014 10:51:16 -0800 Subject: [PATCH 038/158] 8027314: Java should recognize Diagnostic options if -XX:+UnlockDiagnosticVMOptions is not specified and print an informative message Clarifying the error messages associated with vm options of type diagnostic, experimental, develop, and notproduct Reviewed-by: kvn, twisti, ctornqvi --- hotspot/src/share/vm/runtime/arguments.cpp | 2 +- hotspot/src/share/vm/runtime/globals.cpp | 33 ++++++++++- hotspot/src/share/vm/runtime/globals.hpp | 2 +- .../CompilerConfigFileWarning.java | 5 +- .../CommandLine/ConfigFileWarning.java | 5 +- .../runtime/CommandLine/VMOptionWarning.java | 56 +++++++++++++++++++ 6 files changed, 93 insertions(+), 10 deletions(-) create mode 100644 hotspot/test/runtime/CommandLine/VMOptionWarning.java diff --git a/hotspot/src/share/vm/runtime/arguments.cpp b/hotspot/src/share/vm/runtime/arguments.cpp index 5a8ea0dbdd8..a190b594aed 100644 --- a/hotspot/src/share/vm/runtime/arguments.cpp +++ b/hotspot/src/share/vm/runtime/arguments.cpp @@ -878,7 +878,7 @@ bool Arguments::process_argument(const char* arg, arg_len = equal_sign - argname; } - Flag* found_flag = Flag::find_flag((const char*)argname, arg_len, true); + Flag* found_flag = Flag::find_flag((const char*)argname, arg_len, true, true); if (found_flag != NULL) { char locked_message_buf[BUFLEN]; found_flag->get_locked_message(locked_message_buf, BUFLEN); diff --git a/hotspot/src/share/vm/runtime/globals.cpp b/hotspot/src/share/vm/runtime/globals.cpp index f1783af15d4..f3c1b29f3cc 100644 --- a/hotspot/src/share/vm/runtime/globals.cpp +++ b/hotspot/src/share/vm/runtime/globals.cpp @@ -62,6 +62,14 @@ ARCH_FLAGS(MATERIALIZE_DEVELOPER_FLAG, MATERIALIZE_PRODUCT_FLAG, \ MATERIALIZE_FLAGS_EXT +static bool is_product_build() { +#ifdef PRODUCT + return true; +#else + return false; +#endif +} + void Flag::check_writable() { if (is_constant_in_binary()) { fatal(err_msg("flag is constant: %s", _name)); @@ -235,6 +243,27 @@ bool Flag::is_unlocked() const { // Get custom message for this locked flag, or return NULL if // none is available. void Flag::get_locked_message(char* buf, int buflen) const { + buf[0] = '\0'; + if (is_diagnostic() && !is_unlocked()) { + jio_snprintf(buf, buflen, "Error: VM option '%s' is diagnostic and must be enabled via -XX:+UnlockDiagnosticVMOptions.\n", + _name); + return; + } + if (is_experimental() && !is_unlocked()) { + jio_snprintf(buf, buflen, "Error: VM option '%s' is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions.\n", + _name); + return; + } + if (is_develop() && is_product_build()) { + jio_snprintf(buf, buflen, "Error: VM option '%s' is develop and is available only in debug version of VM.\n", + _name); + return; + } + if (is_notproduct() && is_product_build()) { + jio_snprintf(buf, buflen, "Error: VM option '%s' is notproduct and is available only in debug version of VM.\n", + _name); + return; + } get_locked_message_ext(buf, buflen); } @@ -464,13 +493,13 @@ inline bool str_equal(const char* s, const char* q, size_t len) { } // Search the flag table for a named flag -Flag* Flag::find_flag(const char* name, size_t length, bool allow_locked) { +Flag* Flag::find_flag(const char* name, size_t length, bool allow_locked, bool return_flag) { for (Flag* current = &flagTable[0]; current->_name != NULL; current++) { if (str_equal(current->_name, name, length)) { // Found a matching entry. // Don't report notproduct and develop flags in product builds. if (current->is_constant_in_binary()) { - return NULL; + return (return_flag == true ? current : NULL); } // Report locked flags only if allowed. if (!(current->is_unlocked() || current->is_unlocker())) { diff --git a/hotspot/src/share/vm/runtime/globals.hpp b/hotspot/src/share/vm/runtime/globals.hpp index 5f72d40a276..5e532580cbd 100644 --- a/hotspot/src/share/vm/runtime/globals.hpp +++ b/hotspot/src/share/vm/runtime/globals.hpp @@ -241,7 +241,7 @@ struct Flag { // number of flags static size_t numFlags; - static Flag* find_flag(const char* name, size_t length, bool allow_locked = false); + static Flag* find_flag(const char* name, size_t length, bool allow_locked = false, bool return_flag = false); static Flag* fuzzy_match(const char* name, size_t length, bool allow_locked = false); void check_writable(); diff --git a/hotspot/test/runtime/CommandLine/CompilerConfigFileWarning.java b/hotspot/test/runtime/CommandLine/CompilerConfigFileWarning.java index 1f1894419ab..e5df0c9450b 100644 --- a/hotspot/test/runtime/CommandLine/CompilerConfigFileWarning.java +++ b/hotspot/test/runtime/CommandLine/CompilerConfigFileWarning.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,8 +33,7 @@ import com.oracle.java.testlibrary.*; public class CompilerConfigFileWarning { public static void main(String[] args) throws Exception { - String vmVersion = System.getProperty("java.vm.version"); - if (vmVersion.toLowerCase().contains("debug") || vmVersion.toLowerCase().contains("jvmg")) { + if (Platform.isDebugBuild()) { System.out.println("Skip on debug builds since we'll always read the file there"); return; } diff --git a/hotspot/test/runtime/CommandLine/ConfigFileWarning.java b/hotspot/test/runtime/CommandLine/ConfigFileWarning.java index 470808eaff3..b81da5923fd 100644 --- a/hotspot/test/runtime/CommandLine/ConfigFileWarning.java +++ b/hotspot/test/runtime/CommandLine/ConfigFileWarning.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,8 +33,7 @@ import com.oracle.java.testlibrary.*; public class ConfigFileWarning { public static void main(String[] args) throws Exception { - String vmVersion = System.getProperty("java.vm.version"); - if (vmVersion.toLowerCase().contains("debug") || vmVersion.toLowerCase().contains("jvmg")) { + if (Platform.isDebugBuild()) { System.out.println("Skip on debug builds since we'll always read the file there"); return; } diff --git a/hotspot/test/runtime/CommandLine/VMOptionWarning.java b/hotspot/test/runtime/CommandLine/VMOptionWarning.java new file mode 100644 index 00000000000..164cec00975 --- /dev/null +++ b/hotspot/test/runtime/CommandLine/VMOptionWarning.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8027314 + * @summary Warn if diagnostic or experimental vm option is used and -XX:+UnlockDiagnosticVMOptions or -XX:+UnlockExperimentalVMOptions, respectively, isn't specified. Warn if develop or notproduct vm option is used with product version of VM. + * @library /testlibrary + */ + +import com.oracle.java.testlibrary.*; + +public class VMOptionWarning { + public static void main(String[] args) throws Exception { + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:+PredictedLoadedClassCount", "-version"); + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + output.shouldContain("Error: VM option 'PredictedLoadedClassCount' is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions."); + + if (Platform.isDebugBuild()) { + System.out.println("Skip the rest of the tests on debug builds since diagnostic, develop, and notproduct options are available on debug builds."); + return; + } + + pb = ProcessTools.createJavaProcessBuilder("-XX:+PrintInlining", "-version"); + output = new OutputAnalyzer(pb.start()); + output.shouldContain("Error: VM option 'PrintInlining' is diagnostic and must be enabled via -XX:+UnlockDiagnosticVMOptions."); + + pb = ProcessTools.createJavaProcessBuilder("-XX:+TraceJNICalls", "-version"); + output = new OutputAnalyzer(pb.start()); + output.shouldContain("Error: VM option 'TraceJNICalls' is develop and is available only in debug version of VM."); + + pb = ProcessTools.createJavaProcessBuilder("-XX:+TraceJVMCalls", "-version"); + output = new OutputAnalyzer(pb.start()); + output.shouldContain("Error: VM option 'TraceJVMCalls' is notproduct and is available only in debug version of VM."); + } +} From 0aac4235b380f0e0dcaa25b074c7222ab329d386 Mon Sep 17 00:00:00 2001 From: Serguei Spitsyn Date: Fri, 17 Jan 2014 02:13:40 -0800 Subject: [PATCH 039/158] 8030027: nsk/jvmti/scenarios/hotswap/HS101/hs101t006 Crashed the vm on Linux-amd64: SIGSEGV in JavaThread::last_java_vframe(RegisterMap*)+0xfa Add a safe guard to VMOp_GetCurrentLocation against non-walkable stack of target thread exiting from Java execution Reviewed-by: mgronlun, dholmes, sla, dcubed --- hotspot/src/share/vm/prims/jvmtiEnvThreadState.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hotspot/src/share/vm/prims/jvmtiEnvThreadState.cpp b/hotspot/src/share/vm/prims/jvmtiEnvThreadState.cpp index 0f9135f4abf..ab3c5f445b3 100644 --- a/hotspot/src/share/vm/prims/jvmtiEnvThreadState.cpp +++ b/hotspot/src/share/vm/prims/jvmtiEnvThreadState.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -272,7 +272,7 @@ class VM_GetCurrentLocation : public VM_Operation { // There can be a race condition between a VM_Operation reaching a safepoint // and the target thread exiting from Java execution. // We must recheck the last Java frame still exists. - if (_thread->has_last_Java_frame()) { + if (!_thread->is_exiting() && _thread->has_last_Java_frame()) { javaVFrame* vf = _thread->last_java_vframe(&rm); assert(vf != NULL, "must have last java frame"); Method* method = vf->method(); From b35fb5f8c0c8d1e1cf762a6b6d2def4ab5fc1789 Mon Sep 17 00:00:00 2001 From: Staffan Larsen Date: Thu, 16 Jan 2014 20:14:21 +0100 Subject: [PATCH 040/158] 8030812: Change the solaris DTrace implementation to use USDT2 instead of USDT1 Reviewed-by: coleenp, sspitsyn, dsamersoff --- hotspot/make/bsd/makefiles/dtrace.make | 82 +--- hotspot/make/solaris/makefiles/buildtree.make | 12 +- hotspot/make/solaris/makefiles/dtrace.make | 18 + hotspot/make/solaris/makefiles/top.make | 5 +- hotspot/src/os/bsd/dtrace/hotspot.d | 2 +- hotspot/src/os/solaris/dtrace/hotspot.d | 2 +- hotspot/src/os/solaris/dtrace/hotspot_jni.d | 2 +- .../src/share/vm/compiler/compileBroker.cpp | 4 +- .../concurrentMarkSweep/vmCMSOperations.cpp | 12 +- .../shared/vmGCOperations.cpp | 5 +- hotspot/src/share/vm/prims/jni.cpp | 393 ++++++------------ hotspot/src/share/vm/runtime/java.cpp | 1 + hotspot/src/share/vm/utilities/dtrace.hpp | 5 +- 13 files changed, 182 insertions(+), 361 deletions(-) diff --git a/hotspot/make/bsd/makefiles/dtrace.make b/hotspot/make/bsd/makefiles/dtrace.make index 9374062d115..7bef4f8a616 100644 --- a/hotspot/make/bsd/makefiles/dtrace.make +++ b/hotspot/make/bsd/makefiles/dtrace.make @@ -68,11 +68,9 @@ endif # Use mapfile with libjvm_db.so LIBJVM_DB_MAPFILE = # no mapfile for usdt2 # $(MAKEFILES_DIR)/mapfile-vers-jvm_db -#LFLAGS_JVM_DB += $(MAPFLAG:FILENAME=$(LIBJVM_DB_MAPFILE)) # Use mapfile with libjvm_dtrace.so LIBJVM_DTRACE_MAPFILE = # no mapfile for usdt2 # $(MAKEFILES_DIR)/mapfile-vers-jvm_dtrace -#LFLAGS_JVM_DTRACE += $(MAPFLAG:FILENAME=$(LIBJVM_DTRACE_MAPFILE)) LFLAGS_JVM_DB += $(PICFLAG) # -D_REENTRANT LFLAGS_JVM_DTRACE += $(PICFLAG) # -D_REENTRANT @@ -260,9 +258,6 @@ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) endif endif -#$(DTRACE).d: $(DTRACE_SRCDIR)/hotspot.d $(DTRACE_SRCDIR)/hotspot_jni.d \ -# $(DTRACE_SRCDIR)/hs_private.d $(DTRACE_SRCDIR)/jhelper.d -# $(QUIETLY) cat $^ > $@ $(DtraceOutDir): mkdir $(DtraceOutDir) @@ -276,100 +271,25 @@ $(DtraceOutDir)/hotspot_jni.h: $(DTRACE_SRCDIR)/hotspot_jni.d | $(DtraceOutDir) $(DtraceOutDir)/hs_private.h: $(DTRACE_SRCDIR)/hs_private.d | $(DtraceOutDir) $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_SRCDIR)/hs_private.d -$(DtraceOutDir)/jhelper.h: $(DTRACE_SRCDIR)/jhelper.d $(JVMOFFS).o | $(DtraceOutDir) - $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_SRCDIR)/jhelper.d - -# jhelper currently disabled dtrace_gen_headers: $(DtraceOutDir)/hotspot.h $(DtraceOutDir)/hotspot_jni.h $(DtraceOutDir)/hs_private.h -DTraced_Files = ciEnv.o \ - classLoadingService.o \ - compileBroker.o \ - hashtable.o \ - instanceKlass.o \ - java.o \ - jni.o \ - jvm.o \ - memoryManager.o \ - nmethod.o \ - objectMonitor.o \ - runtimeService.o \ - sharedRuntime.o \ - synchronizer.o \ - thread.o \ - unsafe.o \ - vmThread.o \ - vmCMSOperations.o \ - vmPSOperations.o \ - vmGCOperations.o \ - -# Dtrace is available, so we build $(DTRACE.o) -#$(DTRACE.o): $(DTRACE).d $(JVMOFFS).h $(JVMOFFS)Index.h $(DTraced_Files) -# @echo Compiling $(DTRACE).d - -# $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -G -xlazyload -o $@ -s $(DTRACE).d \ -# $(DTraced_Files) ||\ -# STATUS=$$?;\ -# if [ x"$$STATUS" = x"1" -a \ -# x`uname -r` = x"5.10" -a \ -# x`uname -p` = x"sparc" ]; then\ -# echo "*****************************************************************";\ -# echo "* If you are building server compiler, and the error message is ";\ -# echo "* \"incorrect ELF machine type...\", you have run into solaris bug ";\ -# echo "* 6213962, \"dtrace -G doesn't work on sparcv8+ object files\".";\ -# echo "* Either patch/upgrade your system (>= S10u1_15), or set the ";\ -# echo "* environment variable HOTSPOT_DISABLE_DTRACE_PROBES to disable ";\ -# echo "* dtrace probes for this build.";\ -# echo "*****************************************************************";\ -# fi;\ -# exit $$STATUS - # Since some DTraced_Files are in LIBJVM.o and they are touched by this - # command, and libgenerateJvmOffsets.so depends on LIBJVM.o, 'make' will - # think it needs to rebuild libgenerateJvmOffsets.so and thus JvmOffsets* - # files, but it doesn't, so we touch the necessary files to prevent later - # recompilation. Note: we only touch the necessary files if they already - # exist in order to close a race where an empty file can be created - # before the real build rule is executed. - # But, we can't touch the *.h files: This rule depends - # on them, and that would cause an infinite cycle of rebuilding. - # Neither the *.h or *.ccp files need to be touched, since they have - # rules which do not update them when the generator file has not - # changed their contents. -# $(QUIETLY) if [ -f lib$(GENOFFS).so ]; then touch lib$(GENOFFS).so; fi -# $(QUIETLY) if [ -f $(GENOFFS) ]; then touch $(GENOFFS); fi -# $(QUIETLY) if [ -f $(JVMOFFS.o) ]; then touch $(JVMOFFS.o); fi .PHONY: dtraceCheck -#SYSTEM_DTRACE_H = /usr/include/dtrace.h SYSTEM_DTRACE_PROG = /usr/sbin/dtrace -#PATCH_DTRACE_PROG = /opt/SUNWdtrd/sbin/dtrace systemDtraceFound := $(wildcard ${SYSTEM_DTRACE_PROG}) -#patchDtraceFound := $(wildcard ${PATCH_DTRACE_PROG}) -#systemDtraceHdrFound := $(wildcard $(SYSTEM_DTRACE_H)) -#ifneq ("$(systemDtraceHdrFound)", "") -#CFLAGS += -DHAVE_DTRACE_H -#endif - -#ifneq ("$(patchDtraceFound)", "") -#DTRACE_PROG=$(PATCH_DTRACE_PROG) -#DTRACE_INCL=-I/opt/SUNWdtrd/include -#else ifneq ("$(systemDtraceFound)", "") DTRACE_PROG=$(SYSTEM_DTRACE_PROG) else -endif # ifneq ("$(systemDtraceFound)", "") -#endif # ifneq ("$(patchDtraceFound)", "") +endif ifneq ("${DTRACE_PROG}", "") ifeq ("${HOTSPOT_DISABLE_DTRACE_PROBES}", "") DTRACE_OBJS = $(DTRACE.o) #$(JVMOFFS.o) CFLAGS += -DDTRACE_ENABLED #$(DTRACE_INCL) -#clangCFLAGS += -DDTRACE_ENABLED -fno-optimize-sibling-calls -#MAPFILE_DTRACE_OPT = $(MAPFILE_DTRACE) dtraceCheck: diff --git a/hotspot/make/solaris/makefiles/buildtree.make b/hotspot/make/solaris/makefiles/buildtree.make index ca602a81e3c..731e6ca5137 100644 --- a/hotspot/make/solaris/makefiles/buildtree.make +++ b/hotspot/make/solaris/makefiles/buildtree.make @@ -117,7 +117,7 @@ SUBMAKE_DIRS = $(addprefix $(PLATFORM_DIR)/,$(TARGETS)) # For dependencies and recursive makes. BUILDTREE_MAKE = $(GAMMADIR)/make/$(OS_FAMILY)/makefiles/buildtree.make -BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make sa.make +BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make sa.make dtrace.make BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OS_FAMILY) \ ARCH=$(ARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT) @@ -349,6 +349,16 @@ sa.make: $(BUILDTREE_MAKE) echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \ ) > $@ +dtrace.make: $(BUILDTREE_MAKE) + @echo Creating $@ ... + $(QUIETLY) ( \ + $(BUILDTREE_COMMENT); \ + echo; \ + echo include flags.make; \ + echo; \ + echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \ + ) > $@ + FORCE: .PHONY: all FORCE diff --git a/hotspot/make/solaris/makefiles/dtrace.make b/hotspot/make/solaris/makefiles/dtrace.make index 48f9b295b73..3b32385ecad 100644 --- a/hotspot/make/solaris/makefiles/dtrace.make +++ b/hotspot/make/solaris/makefiles/dtrace.make @@ -36,6 +36,8 @@ dtraceCheck: else +DtraceOutDir = $(GENERATED)/dtracefiles + JVM_DB = libjvm_db LIBJVM_DB = libjvm_db.so @@ -326,6 +328,22 @@ $(DTRACE.o): $(DTRACE).d $(JVMOFFS).h $(JVMOFFS)Index.h $(DTraced_Files) $(QUIETLY) if [ -f $(GENOFFS) ]; then touch $(GENOFFS); fi $(QUIETLY) if [ -f $(JVMOFFS.o) ]; then touch $(JVMOFFS.o); fi + +$(DtraceOutDir): + mkdir $(DtraceOutDir) + +$(DtraceOutDir)/hotspot.h: $(DTRACE_SRCDIR)/hotspot.d | $(DtraceOutDir) + $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_SRCDIR)/hotspot.d + +$(DtraceOutDir)/hotspot_jni.h: $(DTRACE_SRCDIR)/hotspot_jni.d | $(DtraceOutDir) + $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_SRCDIR)/hotspot_jni.d + +$(DtraceOutDir)/hs_private.h: $(DTRACE_SRCDIR)/hs_private.d | $(DtraceOutDir) + $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_SRCDIR)/hs_private.d + +dtrace_gen_headers: $(DtraceOutDir)/hotspot.h $(DtraceOutDir)/hotspot_jni.h $(DtraceOutDir)/hs_private.h + + .PHONY: dtraceCheck SYSTEM_DTRACE_H = /usr/include/dtrace.h diff --git a/hotspot/make/solaris/makefiles/top.make b/hotspot/make/solaris/makefiles/top.make index 81e34afdee5..19060bdd501 100644 --- a/hotspot/make/solaris/makefiles/top.make +++ b/hotspot/make/solaris/makefiles/top.make @@ -73,7 +73,7 @@ default: vm_build_preliminaries the_vm @echo All done. # This is an explicit dependency for the sake of parallel makes. -vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) jvmti_stuff trace_stuff sa_stuff +vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) jvmti_stuff trace_stuff sa_stuff dtrace_stuff @# We need a null action here, so implicit rules don't get consulted. $(Cached_plat): $(Plat_File) @@ -95,6 +95,9 @@ trace_stuff: jvmti_stuff $(Cached_plat) $(adjust-mflags) sa_stuff: @$(MAKE) -f sa.make $(MFLAGS-adjusted) +dtrace_stuff: $(Cached_plat) $(adjust-mflags) + @$(MAKE) -f dtrace.make dtrace_gen_headers $(MFLAGS-adjusted) GENERATED=$(GENERATED) + # and the VM: must use other makefile with dependencies included # We have to go to great lengths to get control over the -jN argument diff --git a/hotspot/src/os/bsd/dtrace/hotspot.d b/hotspot/src/os/bsd/dtrace/hotspot.d index 996e1d782e5..b3679eaba62 100644 --- a/hotspot/src/os/bsd/dtrace/hotspot.d +++ b/hotspot/src/os/bsd/dtrace/hotspot.d @@ -56,7 +56,7 @@ provider hotspot { probe thread__park__end(uintptr_t); probe thread__unpark(uintptr_t); probe method__compile__begin( - const char*, uintptr_t, const char*, uintptr_t, const char*, uintptr_t, const char*, uintptr_t); + char*, uintptr_t, char*, uintptr_t, char*, uintptr_t, char*, uintptr_t); probe method__compile__end( char*, uintptr_t, char*, uintptr_t, char*, uintptr_t, char*, uintptr_t, uintptr_t); diff --git a/hotspot/src/os/solaris/dtrace/hotspot.d b/hotspot/src/os/solaris/dtrace/hotspot.d index 1f7d51b8cec..b3679eaba62 100644 --- a/hotspot/src/os/solaris/dtrace/hotspot.d +++ b/hotspot/src/os/solaris/dtrace/hotspot.d @@ -25,7 +25,7 @@ provider hotspot { probe class__loaded(char*, uintptr_t, void*, uintptr_t); probe class__unloaded(char*, uintptr_t, void*, uintptr_t); - probe class__initialization__required(char*, uintptr_t, void*, intptr_t,int); + probe class__initialization__required(char*, uintptr_t, void*, intptr_t); probe class__initialization__recursive(char*, uintptr_t, void*, intptr_t,int); probe class__initialization__concurrent(char*, uintptr_t, void*, intptr_t,int); probe class__initialization__erroneous(char*, uintptr_t, void*, intptr_t, int); diff --git a/hotspot/src/os/solaris/dtrace/hotspot_jni.d b/hotspot/src/os/solaris/dtrace/hotspot_jni.d index 837415f0e18..cca1c517650 100644 --- a/hotspot/src/os/solaris/dtrace/hotspot_jni.d +++ b/hotspot/src/os/solaris/dtrace/hotspot_jni.d @@ -211,7 +211,7 @@ provider hotspot_jni { probe CallVoidMethodV__return(); probe CreateJavaVM__entry(void**, void**, void*); probe CreateJavaVM__return(uint32_t); - probe DefineClass__entry(void*, const char*, void*, char, uintptr_t); + probe DefineClass__entry(void*, const char*, void*, char*, uintptr_t); probe DefineClass__return(void*); probe DeleteGlobalRef__entry(void*, void*); probe DeleteGlobalRef__return(); diff --git a/hotspot/src/share/vm/compiler/compileBroker.cpp b/hotspot/src/share/vm/compiler/compileBroker.cpp index a6c9117e946..57eee0b91e3 100644 --- a/hotspot/src/share/vm/compiler/compileBroker.cpp +++ b/hotspot/src/share/vm/compiler/compileBroker.cpp @@ -98,7 +98,7 @@ HS_DTRACE_PROBE_DECL9(hotspot, method__compile__end, Symbol* name = (method)->name(); \ Symbol* signature = (method)->signature(); \ HOTSPOT_METHOD_COMPILE_BEGIN( \ - comp_name, strlen(comp_name), \ + (char *) comp_name, strlen(comp_name), \ (char *) klass_name->bytes(), klass_name->utf8_length(), \ (char *) name->bytes(), name->utf8_length(), \ (char *) signature->bytes(), signature->utf8_length()); \ @@ -110,7 +110,7 @@ HS_DTRACE_PROBE_DECL9(hotspot, method__compile__end, Symbol* name = (method)->name(); \ Symbol* signature = (method)->signature(); \ HOTSPOT_METHOD_COMPILE_END( \ - comp_name, strlen(comp_name), \ + (char *) comp_name, strlen(comp_name), \ (char *) klass_name->bytes(), klass_name->utf8_length(), \ (char *) name->bytes(), name->utf8_length(), \ (char *) signature->bytes(), signature->utf8_length(), (success)); \ diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp index 24ca71c035b..0860369e706 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp @@ -141,8 +141,7 @@ void VM_CMS_Initial_Mark::doit() { #ifndef USDT2 HS_DTRACE_PROBE(hs_private, cms__initmark__begin); #else /* USDT2 */ - HS_PRIVATE_CMS_INITMARK_BEGIN( - ); + HS_PRIVATE_CMS_INITMARK_BEGIN(); #endif /* USDT2 */ _collector->_gc_timer_cm->register_gc_pause_start("Initial Mark"); @@ -162,8 +161,7 @@ void VM_CMS_Initial_Mark::doit() { #ifndef USDT2 HS_DTRACE_PROBE(hs_private, cms__initmark__end); #else /* USDT2 */ - HS_PRIVATE_CMS_INITMARK_END( - ); + HS_PRIVATE_CMS_INITMARK_END(); #endif /* USDT2 */ } @@ -178,8 +176,7 @@ void VM_CMS_Final_Remark::doit() { #ifndef USDT2 HS_DTRACE_PROBE(hs_private, cms__remark__begin); #else /* USDT2 */ - HS_PRIVATE_CMS_REMARK_BEGIN( - ); + HS_PRIVATE_CMS_REMARK_BEGIN(); #endif /* USDT2 */ _collector->_gc_timer_cm->register_gc_pause_start("Final Mark"); @@ -200,8 +197,7 @@ void VM_CMS_Final_Remark::doit() { #ifndef USDT2 HS_DTRACE_PROBE(hs_private, cms__remark__end); #else /* USDT2 */ - HS_PRIVATE_CMS_REMARK_END( - ); + HS_PRIVATE_CMS_REMARK_END(); #endif /* USDT2 */ } diff --git a/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.cpp b/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.cpp index 6f535034346..bb9ff635849 100644 --- a/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.cpp +++ b/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.cpp @@ -56,6 +56,7 @@ void VM_GC_Operation::notify_gc_begin(bool full) { #else /* USDT2 */ HOTSPOT_GC_BEGIN( full); + HS_DTRACE_WORKAROUND_TAIL_CALL_BUG(); #endif /* USDT2 */ } @@ -64,8 +65,8 @@ void VM_GC_Operation::notify_gc_end() { HS_DTRACE_PROBE(hotspot, gc__end); HS_DTRACE_WORKAROUND_TAIL_CALL_BUG(); #else /* USDT2 */ - HOTSPOT_GC_END( -); + HOTSPOT_GC_END(); + HS_DTRACE_WORKAROUND_TAIL_CALL_BUG(); #endif /* USDT2 */ } diff --git a/hotspot/src/share/vm/prims/jni.cpp b/hotspot/src/share/vm/prims/jni.cpp index 449ed679847..9ced092e7ab 100644 --- a/hotspot/src/share/vm/prims/jni.cpp +++ b/hotspot/src/share/vm/prims/jni.cpp @@ -433,8 +433,7 @@ JNI_ENTRY(jclass, jni_FindClass(JNIEnv *env, const char *name)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, FindClass__entry, env, name); #else /* USDT2 */ - HOTSPOT_JNI_FINDCLASS_ENTRY( - env, (char *)name); + HOTSPOT_JNI_FINDCLASS_ENTRY(env, (char *)name); #endif /* USDT2 */ jclass result = NULL; @@ -511,8 +510,7 @@ JNI_ENTRY(jmethodID, jni_FromReflectedMethod(JNIEnv *env, jobject method)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, FromReflectedMethod__entry, env, method); #else /* USDT2 */ - HOTSPOT_JNI_FROMREFLECTEDMETHOD_ENTRY( - env, method); + HOTSPOT_JNI_FROMREFLECTEDMETHOD_ENTRY(env, method); #endif /* USDT2 */ jmethodID ret = NULL; DT_RETURN_MARK(FromReflectedMethod, jmethodID, (const jmethodID&)ret); @@ -552,8 +550,7 @@ JNI_ENTRY(jfieldID, jni_FromReflectedField(JNIEnv *env, jobject field)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, FromReflectedField__entry, env, field); #else /* USDT2 */ - HOTSPOT_JNI_FROMREFLECTEDFIELD_ENTRY( - env, field); + HOTSPOT_JNI_FROMREFLECTEDFIELD_ENTRY(env, field); #endif /* USDT2 */ jfieldID ret = NULL; DT_RETURN_MARK(FromReflectedField, jfieldID, (const jfieldID&)ret); @@ -601,8 +598,7 @@ JNI_ENTRY(jobject, jni_ToReflectedMethod(JNIEnv *env, jclass cls, jmethodID meth #ifndef USDT2 DTRACE_PROBE4(hotspot_jni, ToReflectedMethod__entry, env, cls, method_id, isStatic); #else /* USDT2 */ - HOTSPOT_JNI_TOREFLECTEDMETHOD_ENTRY( - env, cls, (uintptr_t) method_id, isStatic); + HOTSPOT_JNI_TOREFLECTEDMETHOD_ENTRY(env, cls, (uintptr_t) method_id, isStatic); #endif /* USDT2 */ jobject ret = NULL; DT_RETURN_MARK(ToReflectedMethod, jobject, (const jobject&)ret); @@ -631,8 +627,7 @@ JNI_ENTRY(jclass, jni_GetSuperclass(JNIEnv *env, jclass sub)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, GetSuperclass__entry, env, sub); #else /* USDT2 */ - HOTSPOT_JNI_GETSUPERCLASS_ENTRY( - env, sub); + HOTSPOT_JNI_GETSUPERCLASS_ENTRY(env, sub); #endif /* USDT2 */ jclass obj = NULL; DT_RETURN_MARK(GetSuperclass, jclass, (const jclass&)obj); @@ -665,8 +660,7 @@ JNI_QUICK_ENTRY(jboolean, jni_IsAssignableFrom(JNIEnv *env, jclass sub, jclass s #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, IsAssignableFrom__entry, env, sub, super); #else /* USDT2 */ - HOTSPOT_JNI_ISASSIGNABLEFROM_ENTRY( - env, sub, super); + HOTSPOT_JNI_ISASSIGNABLEFROM_ENTRY(env, sub, super); #endif /* USDT2 */ oop sub_mirror = JNIHandles::resolve_non_null(sub); oop super_mirror = JNIHandles::resolve_non_null(super); @@ -676,8 +670,7 @@ JNI_QUICK_ENTRY(jboolean, jni_IsAssignableFrom(JNIEnv *env, jclass sub, jclass s #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, IsAssignableFrom__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN( - ret); + HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN(ret); #endif /* USDT2 */ return ret; } @@ -689,8 +682,7 @@ JNI_QUICK_ENTRY(jboolean, jni_IsAssignableFrom(JNIEnv *env, jclass sub, jclass s #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, IsAssignableFrom__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN( - ret); + HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -707,8 +699,7 @@ JNI_ENTRY(jint, jni_Throw(JNIEnv *env, jthrowable obj)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, Throw__entry, env, obj); #else /* USDT2 */ - HOTSPOT_JNI_THROW_ENTRY( - env, obj); + HOTSPOT_JNI_THROW_ENTRY(env, obj); #endif /* USDT2 */ jint ret = JNI_OK; DT_RETURN_MARK(Throw, jint, (const jint&)ret); @@ -729,8 +720,7 @@ JNI_ENTRY(jint, jni_ThrowNew(JNIEnv *env, jclass clazz, const char *message)) #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, ThrowNew__entry, env, clazz, message); #else /* USDT2 */ - HOTSPOT_JNI_THROWNEW_ENTRY( - env, clazz, (char *) message); + HOTSPOT_JNI_THROWNEW_ENTRY(env, clazz, (char *) message); #endif /* USDT2 */ jint ret = JNI_OK; DT_RETURN_MARK(ThrowNew, jint, (const jint&)ret); @@ -763,8 +753,7 @@ JNI_ENTRY_NO_PRESERVE(jthrowable, jni_ExceptionOccurred(JNIEnv *env)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, ExceptionOccurred__entry, env); #else /* USDT2 */ - HOTSPOT_JNI_EXCEPTIONOCCURRED_ENTRY( - env); + HOTSPOT_JNI_EXCEPTIONOCCURRED_ENTRY(env); #endif /* USDT2 */ jni_check_async_exceptions(thread); oop exception = thread->pending_exception(); @@ -772,8 +761,7 @@ JNI_ENTRY_NO_PRESERVE(jthrowable, jni_ExceptionOccurred(JNIEnv *env)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, ExceptionOccurred__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_EXCEPTIONOCCURRED_RETURN( - ret); + HOTSPOT_JNI_EXCEPTIONOCCURRED_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -784,8 +772,7 @@ JNI_ENTRY_NO_PRESERVE(void, jni_ExceptionDescribe(JNIEnv *env)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, ExceptionDescribe__entry, env); #else /* USDT2 */ - HOTSPOT_JNI_EXCEPTIONDESCRIBE_ENTRY( - env); + HOTSPOT_JNI_EXCEPTIONDESCRIBE_ENTRY(env); #endif /* USDT2 */ if (thread->has_pending_exception()) { Handle ex(thread, thread->pending_exception()); @@ -825,8 +812,7 @@ JNI_ENTRY_NO_PRESERVE(void, jni_ExceptionDescribe(JNIEnv *env)) #ifndef USDT2 DTRACE_PROBE(hotspot_jni, ExceptionDescribe__return); #else /* USDT2 */ - HOTSPOT_JNI_EXCEPTIONDESCRIBE_RETURN( - ); + HOTSPOT_JNI_EXCEPTIONDESCRIBE_RETURN(); #endif /* USDT2 */ JNI_END @@ -836,8 +822,7 @@ JNI_QUICK_ENTRY(void, jni_ExceptionClear(JNIEnv *env)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, ExceptionClear__entry, env); #else /* USDT2 */ - HOTSPOT_JNI_EXCEPTIONCLEAR_ENTRY( - env); + HOTSPOT_JNI_EXCEPTIONCLEAR_ENTRY(env); #endif /* USDT2 */ // The jni code might be using this API to clear java thrown exception. @@ -850,8 +835,7 @@ JNI_QUICK_ENTRY(void, jni_ExceptionClear(JNIEnv *env)) #ifndef USDT2 DTRACE_PROBE(hotspot_jni, ExceptionClear__return); #else /* USDT2 */ - HOTSPOT_JNI_EXCEPTIONCLEAR_RETURN( - ); + HOTSPOT_JNI_EXCEPTIONCLEAR_RETURN(); #endif /* USDT2 */ JNI_END @@ -861,8 +845,7 @@ JNI_ENTRY(void, jni_FatalError(JNIEnv *env, const char *msg)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, FatalError__entry, env, msg); #else /* USDT2 */ - HOTSPOT_JNI_FATALERROR_ENTRY( - env, (char *) msg); + HOTSPOT_JNI_FATALERROR_ENTRY(env, (char *) msg); #endif /* USDT2 */ tty->print_cr("FATAL ERROR in native method: %s", msg); thread->print_stack(); @@ -875,16 +858,14 @@ JNI_ENTRY(jint, jni_PushLocalFrame(JNIEnv *env, jint capacity)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, PushLocalFrame__entry, env, capacity); #else /* USDT2 */ - HOTSPOT_JNI_PUSHLOCALFRAME_ENTRY( - env, capacity); + HOTSPOT_JNI_PUSHLOCALFRAME_ENTRY(env, capacity); #endif /* USDT2 */ //%note jni_11 if (capacity < 0 || capacity > MAX_REASONABLE_LOCAL_CAPACITY) { #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, PushLocalFrame__return, JNI_ERR); #else /* USDT2 */ - HOTSPOT_JNI_PUSHLOCALFRAME_RETURN( - (uint32_t)JNI_ERR); + HOTSPOT_JNI_PUSHLOCALFRAME_RETURN((uint32_t)JNI_ERR); #endif /* USDT2 */ return JNI_ERR; } @@ -897,8 +878,7 @@ JNI_ENTRY(jint, jni_PushLocalFrame(JNIEnv *env, jint capacity)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, PushLocalFrame__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_PUSHLOCALFRAME_RETURN( - ret); + HOTSPOT_JNI_PUSHLOCALFRAME_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -909,8 +889,7 @@ JNI_ENTRY(jobject, jni_PopLocalFrame(JNIEnv *env, jobject result)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, PopLocalFrame__entry, env, result); #else /* USDT2 */ - HOTSPOT_JNI_POPLOCALFRAME_ENTRY( - env, result); + HOTSPOT_JNI_POPLOCALFRAME_ENTRY(env, result); #endif /* USDT2 */ //%note jni_11 Handle result_handle(thread, JNIHandles::resolve(result)); @@ -929,8 +908,7 @@ JNI_ENTRY(jobject, jni_PopLocalFrame(JNIEnv *env, jobject result)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, PopLocalFrame__return, result); #else /* USDT2 */ - HOTSPOT_JNI_POPLOCALFRAME_RETURN( - result); + HOTSPOT_JNI_POPLOCALFRAME_RETURN(result); #endif /* USDT2 */ return result; JNI_END @@ -941,16 +919,14 @@ JNI_ENTRY(jobject, jni_NewGlobalRef(JNIEnv *env, jobject ref)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, NewGlobalRef__entry, env, ref); #else /* USDT2 */ - HOTSPOT_JNI_NEWGLOBALREF_ENTRY( - env, ref); + HOTSPOT_JNI_NEWGLOBALREF_ENTRY(env, ref); #endif /* USDT2 */ Handle ref_handle(thread, JNIHandles::resolve(ref)); jobject ret = JNIHandles::make_global(ref_handle); #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, NewGlobalRef__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_NEWGLOBALREF_RETURN( - ret); + HOTSPOT_JNI_NEWGLOBALREF_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -961,15 +937,13 @@ JNI_ENTRY_NO_PRESERVE(void, jni_DeleteGlobalRef(JNIEnv *env, jobject ref)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, DeleteGlobalRef__entry, env, ref); #else /* USDT2 */ - HOTSPOT_JNI_DELETEGLOBALREF_ENTRY( - env, ref); + HOTSPOT_JNI_DELETEGLOBALREF_ENTRY(env, ref); #endif /* USDT2 */ JNIHandles::destroy_global(ref); #ifndef USDT2 DTRACE_PROBE(hotspot_jni, DeleteGlobalRef__return); #else /* USDT2 */ - HOTSPOT_JNI_DELETEGLOBALREF_RETURN( - ); + HOTSPOT_JNI_DELETEGLOBALREF_RETURN(); #endif /* USDT2 */ JNI_END @@ -978,15 +952,13 @@ JNI_QUICK_ENTRY(void, jni_DeleteLocalRef(JNIEnv *env, jobject obj)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, DeleteLocalRef__entry, env, obj); #else /* USDT2 */ - HOTSPOT_JNI_DELETELOCALREF_ENTRY( - env, obj); + HOTSPOT_JNI_DELETELOCALREF_ENTRY(env, obj); #endif /* USDT2 */ JNIHandles::destroy_local(obj); #ifndef USDT2 DTRACE_PROBE(hotspot_jni, DeleteLocalRef__return); #else /* USDT2 */ - HOTSPOT_JNI_DELETELOCALREF_RETURN( - ); + HOTSPOT_JNI_DELETELOCALREF_RETURN(); #endif /* USDT2 */ JNI_END @@ -995,8 +967,7 @@ JNI_QUICK_ENTRY(jboolean, jni_IsSameObject(JNIEnv *env, jobject r1, jobject r2)) #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, IsSameObject__entry, env, r1, r2); #else /* USDT2 */ - HOTSPOT_JNI_ISSAMEOBJECT_ENTRY( - env, r1, r2); + HOTSPOT_JNI_ISSAMEOBJECT_ENTRY(env, r1, r2); #endif /* USDT2 */ oop a = JNIHandles::resolve(r1); oop b = JNIHandles::resolve(r2); @@ -1004,8 +975,7 @@ JNI_QUICK_ENTRY(jboolean, jni_IsSameObject(JNIEnv *env, jobject r1, jobject r2)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, IsSameObject__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_ISSAMEOBJECT_RETURN( - ret); + HOTSPOT_JNI_ISSAMEOBJECT_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -1016,15 +986,13 @@ JNI_ENTRY(jobject, jni_NewLocalRef(JNIEnv *env, jobject ref)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, NewLocalRef__entry, env, ref); #else /* USDT2 */ - HOTSPOT_JNI_NEWLOCALREF_ENTRY( - env, ref); + HOTSPOT_JNI_NEWLOCALREF_ENTRY(env, ref); #endif /* USDT2 */ jobject ret = JNIHandles::make_local(env, JNIHandles::resolve(ref)); #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, NewLocalRef__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_NEWLOCALREF_RETURN( - ret); + HOTSPOT_JNI_NEWLOCALREF_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -1034,8 +1002,7 @@ JNI_LEAF(jint, jni_EnsureLocalCapacity(JNIEnv *env, jint capacity)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, EnsureLocalCapacity__entry, env, capacity); #else /* USDT2 */ - HOTSPOT_JNI_ENSURELOCALCAPACITY_ENTRY( - env, capacity); + HOTSPOT_JNI_ENSURELOCALCAPACITY_ENTRY(env, capacity); #endif /* USDT2 */ jint ret; if (capacity >= 0 && capacity <= MAX_REASONABLE_LOCAL_CAPACITY) { @@ -1046,8 +1013,7 @@ JNI_LEAF(jint, jni_EnsureLocalCapacity(JNIEnv *env, jint capacity)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, EnsureLocalCapacity__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_ENSURELOCALCAPACITY_RETURN( - ret); + HOTSPOT_JNI_ENSURELOCALCAPACITY_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -1058,8 +1024,7 @@ JNI_LEAF(jobjectRefType, jni_GetObjectRefType(JNIEnv *env, jobject obj)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, GetObjectRefType__entry, env, obj); #else /* USDT2 */ - HOTSPOT_JNI_GETOBJECTREFTYPE_ENTRY( - env, obj); + HOTSPOT_JNI_GETOBJECTREFTYPE_ENTRY(env, obj); #endif /* USDT2 */ jobjectRefType ret; if (JNIHandles::is_local_handle(thread, obj) || @@ -1074,8 +1039,7 @@ JNI_LEAF(jobjectRefType, jni_GetObjectRefType(JNIEnv *env, jobject obj)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetObjectRefType__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_GETOBJECTREFTYPE_RETURN( - (void *) ret); + HOTSPOT_JNI_GETOBJECTREFTYPE_RETURN((void *) ret); #endif /* USDT2 */ return ret; JNI_END @@ -1410,8 +1374,7 @@ JNI_ENTRY(jobject, jni_AllocObject(JNIEnv *env, jclass clazz)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, AllocObject__entry, env, clazz); #else /* USDT2 */ - HOTSPOT_JNI_ALLOCOBJECT_ENTRY( - env, clazz); + HOTSPOT_JNI_ALLOCOBJECT_ENTRY(env, clazz); #endif /* USDT2 */ jobject ret = NULL; DT_RETURN_MARK(AllocObject, jobject, (const jobject&)ret); @@ -1433,8 +1396,7 @@ JNI_ENTRY(jobject, jni_NewObjectA(JNIEnv *env, jclass clazz, jmethodID methodID, #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, NewObjectA__entry, env, clazz, methodID); #else /* USDT2 */ - HOTSPOT_JNI_NEWOBJECTA_ENTRY( - env, clazz, (uintptr_t) methodID); + HOTSPOT_JNI_NEWOBJECTA_ENTRY(env, clazz, (uintptr_t) methodID); #endif /* USDT2 */ jobject obj = NULL; DT_RETURN_MARK(NewObjectA, jobject, (const jobject)obj); @@ -1459,8 +1421,7 @@ JNI_ENTRY(jobject, jni_NewObjectV(JNIEnv *env, jclass clazz, jmethodID methodID, #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, NewObjectV__entry, env, clazz, methodID); #else /* USDT2 */ - HOTSPOT_JNI_NEWOBJECTV_ENTRY( - env, clazz, (uintptr_t) methodID); + HOTSPOT_JNI_NEWOBJECTV_ENTRY(env, clazz, (uintptr_t) methodID); #endif /* USDT2 */ jobject obj = NULL; DT_RETURN_MARK(NewObjectV, jobject, (const jobject&)obj); @@ -1485,8 +1446,7 @@ JNI_ENTRY(jobject, jni_NewObject(JNIEnv *env, jclass clazz, jmethodID methodID, #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, NewObject__entry, env, clazz, methodID); #else /* USDT2 */ - HOTSPOT_JNI_NEWOBJECT_ENTRY( - env, clazz, (uintptr_t) methodID); + HOTSPOT_JNI_NEWOBJECT_ENTRY(env, clazz, (uintptr_t) methodID); #endif /* USDT2 */ jobject obj = NULL; DT_RETURN_MARK(NewObject, jobject, (const jobject&)obj); @@ -1508,8 +1468,7 @@ JNI_ENTRY(jclass, jni_GetObjectClass(JNIEnv *env, jobject obj)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, GetObjectClass__entry, env, obj); #else /* USDT2 */ - HOTSPOT_JNI_GETOBJECTCLASS_ENTRY( - env, obj); + HOTSPOT_JNI_GETOBJECTCLASS_ENTRY(env, obj); #endif /* USDT2 */ Klass* k = JNIHandles::resolve_non_null(obj)->klass(); jclass ret = @@ -1517,8 +1476,7 @@ JNI_ENTRY(jclass, jni_GetObjectClass(JNIEnv *env, jobject obj)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetObjectClass__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_GETOBJECTCLASS_RETURN( - ret); + HOTSPOT_JNI_GETOBJECTCLASS_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -1528,8 +1486,7 @@ JNI_QUICK_ENTRY(jboolean, jni_IsInstanceOf(JNIEnv *env, jobject obj, jclass claz #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, IsInstanceOf__entry, env, obj, clazz); #else /* USDT2 */ - HOTSPOT_JNI_ISINSTANCEOF_ENTRY( - env, obj, clazz); + HOTSPOT_JNI_ISINSTANCEOF_ENTRY(env, obj, clazz); #endif /* USDT2 */ jboolean ret = JNI_TRUE; if (obj != NULL) { @@ -1543,8 +1500,7 @@ JNI_QUICK_ENTRY(jboolean, jni_IsInstanceOf(JNIEnv *env, jobject obj, jclass claz #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, IsInstanceOf__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_ISINSTANCEOF_RETURN( - ret); + HOTSPOT_JNI_ISINSTANCEOF_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -1608,15 +1564,13 @@ JNI_ENTRY(jmethodID, jni_GetMethodID(JNIEnv *env, jclass clazz, #ifndef USDT2 DTRACE_PROBE4(hotspot_jni, GetMethodID__entry, env, clazz, name, sig); #else /* USDT2 */ - HOTSPOT_JNI_GETMETHODID_ENTRY( - env, clazz, (char *) name, (char *) sig); + HOTSPOT_JNI_GETMETHODID_ENTRY(env, clazz, (char *) name, (char *) sig); #endif /* USDT2 */ jmethodID ret = get_method_id(env, clazz, name, sig, false, thread); #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetMethodID__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_GETMETHODID_RETURN( - (uintptr_t) ret); + HOTSPOT_JNI_GETMETHODID_RETURN((uintptr_t) ret); #endif /* USDT2 */ return ret; JNI_END @@ -1628,15 +1582,13 @@ JNI_ENTRY(jmethodID, jni_GetStaticMethodID(JNIEnv *env, jclass clazz, #ifndef USDT2 DTRACE_PROBE4(hotspot_jni, GetStaticMethodID__entry, env, clazz, name, sig); #else /* USDT2 */ - HOTSPOT_JNI_GETSTATICMETHODID_ENTRY( - env, (char *) clazz, (char *) name, (char *)sig); + HOTSPOT_JNI_GETSTATICMETHODID_ENTRY(env, (char *) clazz, (char *) name, (char *)sig); #endif /* USDT2 */ jmethodID ret = get_method_id(env, clazz, name, sig, true, thread); #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetStaticMethodID__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_GETSTATICMETHODID_RETURN( - (uintptr_t) ret); + HOTSPOT_JNI_GETSTATICMETHODID_RETURN((uintptr_t) ret); #endif /* USDT2 */ return ret; JNI_END @@ -1896,8 +1848,7 @@ JNI_ENTRY(void, jni_CallVoidMethod(JNIEnv *env, jobject obj, jmethodID methodID, #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, CallVoidMethod__entry, env, obj, methodID); #else /* USDT2 */ - HOTSPOT_JNI_CALLVOIDMETHOD_ENTRY( - env, obj, (uintptr_t) methodID); + HOTSPOT_JNI_CALLVOIDMETHOD_ENTRY(env, obj, (uintptr_t) methodID); #endif /* USDT2 */ DT_VOID_RETURN_MARK(CallVoidMethod); @@ -1915,8 +1866,7 @@ JNI_ENTRY(void, jni_CallVoidMethodV(JNIEnv *env, jobject obj, jmethodID methodID #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, CallVoidMethodV__entry, env, obj, methodID); #else /* USDT2 */ - HOTSPOT_JNI_CALLVOIDMETHODV_ENTRY( - env, obj, (uintptr_t) methodID); + HOTSPOT_JNI_CALLVOIDMETHODV_ENTRY(env, obj, (uintptr_t) methodID); #endif /* USDT2 */ DT_VOID_RETURN_MARK(CallVoidMethodV); @@ -1931,8 +1881,7 @@ JNI_ENTRY(void, jni_CallVoidMethodA(JNIEnv *env, jobject obj, jmethodID methodID #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, CallVoidMethodA__entry, env, obj, methodID); #else /* USDT2 */ - HOTSPOT_JNI_CALLVOIDMETHODA_ENTRY( - env, obj, (uintptr_t) methodID); + HOTSPOT_JNI_CALLVOIDMETHODA_ENTRY(env, obj, (uintptr_t) methodID); #endif /* USDT2 */ DT_VOID_RETURN_MARK(CallVoidMethodA); @@ -2194,8 +2143,7 @@ JNI_ENTRY(void, jni_CallNonvirtualVoidMethod(JNIEnv *env, jobject obj, jclass cl DTRACE_PROBE4(hotspot_jni, CallNonvirtualVoidMethod__entry, env, obj, cls, methodID); #else /* USDT2 */ - HOTSPOT_JNI_CALLNONVIRTUALVOIDMETHOD_ENTRY( - env, obj, cls, (uintptr_t) methodID); + HOTSPOT_JNI_CALLNONVIRTUALVOIDMETHOD_ENTRY(env, obj, cls, (uintptr_t) methodID); #endif /* USDT2 */ DT_VOID_RETURN_MARK(CallNonvirtualVoidMethod); @@ -2496,8 +2444,7 @@ JNI_ENTRY(void, jni_CallStaticVoidMethod(JNIEnv *env, jclass cls, jmethodID meth #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, CallStaticVoidMethod__entry, env, cls, methodID); #else /* USDT2 */ - HOTSPOT_JNI_CALLSTATICVOIDMETHOD_ENTRY( - env, cls, (uintptr_t) methodID); + HOTSPOT_JNI_CALLSTATICVOIDMETHOD_ENTRY(env, cls, (uintptr_t) methodID); #endif /* USDT2 */ DT_VOID_RETURN_MARK(CallStaticVoidMethod); @@ -2515,8 +2462,7 @@ JNI_ENTRY(void, jni_CallStaticVoidMethodV(JNIEnv *env, jclass cls, jmethodID met #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, CallStaticVoidMethodV__entry, env, cls, methodID); #else /* USDT2 */ - HOTSPOT_JNI_CALLSTATICVOIDMETHODV_ENTRY( - env, cls, (uintptr_t) methodID); + HOTSPOT_JNI_CALLSTATICVOIDMETHODV_ENTRY(env, cls, (uintptr_t) methodID); #endif /* USDT2 */ DT_VOID_RETURN_MARK(CallStaticVoidMethodV); @@ -2531,8 +2477,7 @@ JNI_ENTRY(void, jni_CallStaticVoidMethodA(JNIEnv *env, jclass cls, jmethodID met #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, CallStaticVoidMethodA__entry, env, cls, methodID); #else /* USDT2 */ - HOTSPOT_JNI_CALLSTATICVOIDMETHODA_ENTRY( - env, cls, (uintptr_t) methodID); + HOTSPOT_JNI_CALLSTATICVOIDMETHODA_ENTRY(env, cls, (uintptr_t) methodID); #endif /* USDT2 */ DT_VOID_RETURN_MARK(CallStaticVoidMethodA); @@ -2560,8 +2505,7 @@ JNI_ENTRY(jfieldID, jni_GetFieldID(JNIEnv *env, jclass clazz, #ifndef USDT2 DTRACE_PROBE4(hotspot_jni, GetFieldID__entry, env, clazz, name, sig); #else /* USDT2 */ - HOTSPOT_JNI_GETFIELDID_ENTRY( - env, clazz, (char *) name, (char *) sig); + HOTSPOT_JNI_GETFIELDID_ENTRY(env, clazz, (char *) name, (char *) sig); #endif /* USDT2 */ jfieldID ret = 0; DT_RETURN_MARK(GetFieldID, jfieldID, (const jfieldID&)ret); @@ -2597,8 +2541,7 @@ JNI_ENTRY(jobject, jni_GetObjectField(JNIEnv *env, jobject obj, jfieldID fieldID #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, GetObjectField__entry, env, obj, fieldID); #else /* USDT2 */ - HOTSPOT_JNI_GETOBJECTFIELD_ENTRY( - env, obj, (uintptr_t) fieldID); + HOTSPOT_JNI_GETOBJECTFIELD_ENTRY(env, obj, (uintptr_t) fieldID); #endif /* USDT2 */ oop o = JNIHandles::resolve_non_null(obj); Klass* k = o->klass(); @@ -2632,8 +2575,7 @@ JNI_ENTRY(jobject, jni_GetObjectField(JNIEnv *env, jobject obj, jfieldID fieldID #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetObjectField__return, ret); #else /* USDT2 */ -HOTSPOT_JNI_GETOBJECTFIELD_RETURN( - ret); +HOTSPOT_JNI_GETOBJECTFIELD_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -2758,8 +2700,7 @@ JNI_QUICK_ENTRY(void, jni_SetObjectField(JNIEnv *env, jobject obj, jfieldID fiel #ifndef USDT2 DTRACE_PROBE4(hotspot_jni, SetObjectField__entry, env, obj, fieldID, value); #else /* USDT2 */ - HOTSPOT_JNI_SETOBJECTFIELD_ENTRY( - env, obj, (uintptr_t) fieldID, value); + HOTSPOT_JNI_SETOBJECTFIELD_ENTRY(env, obj, (uintptr_t) fieldID, value); #endif /* USDT2 */ oop o = JNIHandles::resolve_non_null(obj); Klass* k = o->klass(); @@ -2776,8 +2717,7 @@ JNI_QUICK_ENTRY(void, jni_SetObjectField(JNIEnv *env, jobject obj, jfieldID fiel #ifndef USDT2 DTRACE_PROBE(hotspot_jni, SetObjectField__return); #else /* USDT2 */ - HOTSPOT_JNI_SETOBJECTFIELD_RETURN( -); + HOTSPOT_JNI_SETOBJECTFIELD_RETURN(); #endif /* USDT2 */ JNI_END @@ -2880,8 +2820,7 @@ JNI_ENTRY(jobject, jni_ToReflectedField(JNIEnv *env, jclass cls, jfieldID fieldI DTRACE_PROBE4(hotspot_jni, ToReflectedField__entry, env, cls, fieldID, isStatic); #else /* USDT2 */ - HOTSPOT_JNI_TOREFLECTEDFIELD_ENTRY( - env, cls, (uintptr_t) fieldID, isStatic); + HOTSPOT_JNI_TOREFLECTEDFIELD_ENTRY(env, cls, (uintptr_t) fieldID, isStatic); #endif /* USDT2 */ jobject ret = NULL; DT_RETURN_MARK(ToReflectedField, jobject, (const jobject&)ret); @@ -2925,8 +2864,7 @@ JNI_ENTRY(jfieldID, jni_GetStaticFieldID(JNIEnv *env, jclass clazz, #ifndef USDT2 DTRACE_PROBE4(hotspot_jni, GetStaticFieldID__entry, env, clazz, name, sig); #else /* USDT2 */ - HOTSPOT_JNI_GETSTATICFIELDID_ENTRY( - env, clazz, (char *) name, (char *) sig); + HOTSPOT_JNI_GETSTATICFIELDID_ENTRY(env, clazz, (char *) name, (char *) sig); #endif /* USDT2 */ jfieldID ret = NULL; DT_RETURN_MARK(GetStaticFieldID, jfieldID, (const jfieldID&)ret); @@ -2966,8 +2904,7 @@ JNI_ENTRY(jobject, jni_GetStaticObjectField(JNIEnv *env, jclass clazz, jfieldID #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, GetStaticObjectField__entry, env, clazz, fieldID); #else /* USDT2 */ - HOTSPOT_JNI_GETSTATICOBJECTFIELD_ENTRY( - env, clazz, (uintptr_t) fieldID); + HOTSPOT_JNI_GETSTATICOBJECTFIELD_ENTRY(env, clazz, (uintptr_t) fieldID); #endif /* USDT2 */ #if INCLUDE_JNI_CHECK DEBUG_ONLY(Klass* param_k = jniCheck::validate_class(thread, clazz);) @@ -2983,8 +2920,7 @@ JNI_ENTRY(jobject, jni_GetStaticObjectField(JNIEnv *env, jclass clazz, jfieldID #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetStaticObjectField__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_GETSTATICOBJECTFIELD_RETURN( - ret); + HOTSPOT_JNI_GETSTATICOBJECTFIELD_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -3069,8 +3005,7 @@ JNI_ENTRY(void, jni_SetStaticObjectField(JNIEnv *env, jclass clazz, jfieldID fie #ifndef USDT2 DTRACE_PROBE4(hotspot_jni, SetStaticObjectField__entry, env, clazz, fieldID, value); #else /* USDT2 */ - HOTSPOT_JNI_SETSTATICOBJECTFIELD_ENTRY( - env, clazz, (uintptr_t) fieldID, value); + HOTSPOT_JNI_SETSTATICOBJECTFIELD_ENTRY(env, clazz, (uintptr_t) fieldID, value); #endif /* USDT2 */ JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID); assert(id->is_static_field_id(), "invalid static field id"); @@ -3085,8 +3020,7 @@ JNI_ENTRY(void, jni_SetStaticObjectField(JNIEnv *env, jclass clazz, jfieldID fie #ifndef USDT2 DTRACE_PROBE(hotspot_jni, SetStaticObjectField__return); #else /* USDT2 */ - HOTSPOT_JNI_SETSTATICOBJECTFIELD_RETURN( - ); + HOTSPOT_JNI_SETSTATICOBJECTFIELD_RETURN(); #endif /* USDT2 */ JNI_END @@ -3189,8 +3123,7 @@ JNI_ENTRY(jstring, jni_NewString(JNIEnv *env, const jchar *unicodeChars, jsize l #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, NewString__entry, env, unicodeChars, len); #else /* USDT2 */ - HOTSPOT_JNI_NEWSTRING_ENTRY( - env, (uint16_t *) unicodeChars, len); + HOTSPOT_JNI_NEWSTRING_ENTRY(env, (uint16_t *) unicodeChars, len); #endif /* USDT2 */ jstring ret = NULL; DT_RETURN_MARK(NewString, jstring, (const jstring&)ret); @@ -3205,8 +3138,7 @@ JNI_QUICK_ENTRY(jsize, jni_GetStringLength(JNIEnv *env, jstring string)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, GetStringLength__entry, env, string); #else /* USDT2 */ - HOTSPOT_JNI_GETSTRINGLENGTH_ENTRY( - env, string); + HOTSPOT_JNI_GETSTRINGLENGTH_ENTRY(env, string); #endif /* USDT2 */ jsize ret = 0; oop s = JNIHandles::resolve_non_null(string); @@ -3216,8 +3148,7 @@ JNI_QUICK_ENTRY(jsize, jni_GetStringLength(JNIEnv *env, jstring string)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetStringLength__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_GETSTRINGLENGTH_RETURN( - ret); + HOTSPOT_JNI_GETSTRINGLENGTH_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -3229,8 +3160,7 @@ JNI_QUICK_ENTRY(const jchar*, jni_GetStringChars( #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, GetStringChars__entry, env, string, isCopy); #else /* USDT2 */ - HOTSPOT_JNI_GETSTRINGCHARS_ENTRY( - env, string, (uintptr_t *) isCopy); + HOTSPOT_JNI_GETSTRINGCHARS_ENTRY(env, string, (uintptr_t *) isCopy); #endif /* USDT2 */ jchar* buf = NULL; oop s = JNIHandles::resolve_non_null(string); @@ -3254,8 +3184,7 @@ JNI_QUICK_ENTRY(const jchar*, jni_GetStringChars( #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetStringChars__return, buf); #else /* USDT2 */ - HOTSPOT_JNI_GETSTRINGCHARS_RETURN( - buf); + HOTSPOT_JNI_GETSTRINGCHARS_RETURN(buf); #endif /* USDT2 */ return buf; JNI_END @@ -3266,8 +3195,7 @@ JNI_QUICK_ENTRY(void, jni_ReleaseStringChars(JNIEnv *env, jstring str, const jch #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, ReleaseStringChars__entry, env, str, chars); #else /* USDT2 */ - HOTSPOT_JNI_RELEASESTRINGCHARS_ENTRY( - env, str, (uint16_t *) chars); + HOTSPOT_JNI_RELEASESTRINGCHARS_ENTRY(env, str, (uint16_t *) chars); #endif /* USDT2 */ //%note jni_6 if (chars != NULL) { @@ -3278,8 +3206,7 @@ JNI_QUICK_ENTRY(void, jni_ReleaseStringChars(JNIEnv *env, jstring str, const jch #ifndef USDT2 DTRACE_PROBE(hotspot_jni, ReleaseStringChars__return); #else /* USDT2 */ - HOTSPOT_JNI_RELEASESTRINGCHARS_RETURN( -); + HOTSPOT_JNI_RELEASESTRINGCHARS_RETURN(); #endif /* USDT2 */ JNI_END @@ -3298,8 +3225,7 @@ JNI_ENTRY(jstring, jni_NewStringUTF(JNIEnv *env, const char *bytes)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, NewStringUTF__entry, env, bytes); #else /* USDT2 */ - HOTSPOT_JNI_NEWSTRINGUTF_ENTRY( - env, (char *) bytes); + HOTSPOT_JNI_NEWSTRINGUTF_ENTRY(env, (char *) bytes); #endif /* USDT2 */ jstring ret; DT_RETURN_MARK(NewStringUTF, jstring, (const jstring&)ret); @@ -3315,8 +3241,7 @@ JNI_ENTRY(jsize, jni_GetStringUTFLength(JNIEnv *env, jstring string)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, GetStringUTFLength__entry, env, string); #else /* USDT2 */ - HOTSPOT_JNI_GETSTRINGUTFLENGTH_ENTRY( - env, string); + HOTSPOT_JNI_GETSTRINGUTFLENGTH_ENTRY(env, string); #endif /* USDT2 */ jsize ret = 0; oop java_string = JNIHandles::resolve_non_null(string); @@ -3326,8 +3251,7 @@ JNI_ENTRY(jsize, jni_GetStringUTFLength(JNIEnv *env, jstring string)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetStringUTFLength__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_GETSTRINGUTFLENGTH_RETURN( - ret); + HOTSPOT_JNI_GETSTRINGUTFLENGTH_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -3338,8 +3262,7 @@ JNI_ENTRY(const char*, jni_GetStringUTFChars(JNIEnv *env, jstring string, jboole #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, GetStringUTFChars__entry, env, string, isCopy); #else /* USDT2 */ - HOTSPOT_JNI_GETSTRINGUTFCHARS_ENTRY( - env, string, (uintptr_t *) isCopy); + HOTSPOT_JNI_GETSTRINGUTFCHARS_ENTRY(env, string, (uintptr_t *) isCopy); #endif /* USDT2 */ char* result = NULL; oop java_string = JNIHandles::resolve_non_null(string); @@ -3357,8 +3280,7 @@ JNI_ENTRY(const char*, jni_GetStringUTFChars(JNIEnv *env, jstring string, jboole #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetStringUTFChars__return, result); #else /* USDT2 */ - HOTSPOT_JNI_GETSTRINGUTFCHARS_RETURN( - result); + HOTSPOT_JNI_GETSTRINGUTFCHARS_RETURN(result); #endif /* USDT2 */ return result; JNI_END @@ -3369,8 +3291,7 @@ JNI_LEAF(void, jni_ReleaseStringUTFChars(JNIEnv *env, jstring str, const char *c #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, ReleaseStringUTFChars__entry, env, str, chars); #else /* USDT2 */ - HOTSPOT_JNI_RELEASESTRINGUTFCHARS_ENTRY( - env, str, (char *) chars); + HOTSPOT_JNI_RELEASESTRINGUTFCHARS_ENTRY(env, str, (char *) chars); #endif /* USDT2 */ if (chars != NULL) { FreeHeap((char*) chars); @@ -3378,8 +3299,7 @@ JNI_LEAF(void, jni_ReleaseStringUTFChars(JNIEnv *env, jstring str, const char *c #ifndef USDT2 DTRACE_PROBE(hotspot_jni, ReleaseStringUTFChars__return); #else /* USDT2 */ -HOTSPOT_JNI_RELEASESTRINGUTFCHARS_RETURN( -); +HOTSPOT_JNI_RELEASESTRINGUTFCHARS_RETURN(); #endif /* USDT2 */ JNI_END @@ -3389,8 +3309,7 @@ JNI_QUICK_ENTRY(jsize, jni_GetArrayLength(JNIEnv *env, jarray array)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, GetArrayLength__entry, env, array); #else /* USDT2 */ - HOTSPOT_JNI_GETARRAYLENGTH_ENTRY( - env, array); + HOTSPOT_JNI_GETARRAYLENGTH_ENTRY(env, array); #endif /* USDT2 */ arrayOop a = arrayOop(JNIHandles::resolve_non_null(array)); assert(a->is_array(), "must be array"); @@ -3398,8 +3317,7 @@ JNI_QUICK_ENTRY(jsize, jni_GetArrayLength(JNIEnv *env, jarray array)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetArrayLength__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_GETARRAYLENGTH_RETURN( - ret); + HOTSPOT_JNI_GETARRAYLENGTH_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -3421,8 +3339,7 @@ JNI_ENTRY(jobjectArray, jni_NewObjectArray(JNIEnv *env, jsize length, jclass ele #ifndef USDT2 DTRACE_PROBE4(hotspot_jni, NewObjectArray__entry, env, length, elementClass, initialElement); #else /* USDT2 */ - HOTSPOT_JNI_NEWOBJECTARRAY_ENTRY( - env, length, elementClass, initialElement); + HOTSPOT_JNI_NEWOBJECTARRAY_ENTRY(env, length, elementClass, initialElement); #endif /* USDT2 */ jobjectArray ret = NULL; DT_RETURN_MARK(NewObjectArray, jobjectArray, (const jobjectArray&)ret); @@ -3453,8 +3370,7 @@ JNI_ENTRY(jobject, jni_GetObjectArrayElement(JNIEnv *env, jobjectArray array, js #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, GetObjectArrayElement__entry, env, array, index); #else /* USDT2 */ - HOTSPOT_JNI_GETOBJECTARRAYELEMENT_ENTRY( - env, array, index); + HOTSPOT_JNI_GETOBJECTARRAYELEMENT_ENTRY(env, array, index); #endif /* USDT2 */ jobject ret = NULL; DT_RETURN_MARK(GetObjectArrayElement, jobject, (const jobject&)ret); @@ -3481,8 +3397,7 @@ JNI_ENTRY(void, jni_SetObjectArrayElement(JNIEnv *env, jobjectArray array, jsize #ifndef USDT2 DTRACE_PROBE4(hotspot_jni, SetObjectArrayElement__entry, env, array, index, value); #else /* USDT2 */ - HOTSPOT_JNI_SETOBJECTARRAYELEMENT_ENTRY( - env, array, index, value); + HOTSPOT_JNI_SETOBJECTARRAYELEMENT_ENTRY(env, array, index, value); #endif /* USDT2 */ DT_VOID_RETURN_MARK(SetObjectArrayElement); @@ -4034,8 +3949,7 @@ JNI_ENTRY(jint, jni_RegisterNatives(JNIEnv *env, jclass clazz, #ifndef USDT2 DTRACE_PROBE4(hotspot_jni, RegisterNatives__entry, env, clazz, methods, nMethods); #else /* USDT2 */ - HOTSPOT_JNI_REGISTERNATIVES_ENTRY( - env, clazz, (void *) methods, nMethods); + HOTSPOT_JNI_REGISTERNATIVES_ENTRY(env, clazz, (void *) methods, nMethods); #endif /* USDT2 */ jint ret = 0; DT_RETURN_MARK(RegisterNatives, jint, (const jint&)ret); @@ -4077,8 +3991,7 @@ JNI_ENTRY(jint, jni_UnregisterNatives(JNIEnv *env, jclass clazz)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, UnregisterNatives__entry, env, clazz); #else /* USDT2 */ - HOTSPOT_JNI_UNREGISTERNATIVES_ENTRY( - env, clazz); + HOTSPOT_JNI_UNREGISTERNATIVES_ENTRY(env, clazz); #endif /* USDT2 */ Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)); //%note jni_2 @@ -4094,8 +4007,7 @@ JNI_ENTRY(jint, jni_UnregisterNatives(JNIEnv *env, jclass clazz)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, UnregisterNatives__return, 0); #else /* USDT2 */ - HOTSPOT_JNI_UNREGISTERNATIVES_RETURN( - 0); + HOTSPOT_JNI_UNREGISTERNATIVES_RETURN(0); #endif /* USDT2 */ return 0; JNI_END @@ -4115,8 +4027,7 @@ JNI_ENTRY(jint, jni_MonitorEnter(JNIEnv *env, jobject jobj)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, MonitorEnter__entry, env, jobj); #else /* USDT2 */ - HOTSPOT_JNI_MONITORENTER_ENTRY( - env, jobj); + HOTSPOT_JNI_MONITORENTER_ENTRY(env, jobj); #endif /* USDT2 */ jint ret = JNI_ERR; DT_RETURN_MARK(MonitorEnter, jint, (const jint&)ret); @@ -4143,8 +4054,7 @@ JNI_ENTRY(jint, jni_MonitorExit(JNIEnv *env, jobject jobj)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, MonitorExit__entry, env, jobj); #else /* USDT2 */ - HOTSPOT_JNI_MONITOREXIT_ENTRY( - env, jobj); + HOTSPOT_JNI_MONITOREXIT_ENTRY(env, jobj); #endif /* USDT2 */ jint ret = JNI_ERR; DT_RETURN_MARK(MonitorExit, jint, (const jint&)ret); @@ -4177,8 +4087,7 @@ JNI_ENTRY(void, jni_GetStringRegion(JNIEnv *env, jstring string, jsize start, js #ifndef USDT2 DTRACE_PROBE5(hotspot_jni, GetStringRegion__entry, env, string, start, len, buf); #else /* USDT2 */ - HOTSPOT_JNI_GETSTRINGREGION_ENTRY( - env, string, start, len, buf); + HOTSPOT_JNI_GETSTRINGREGION_ENTRY(env, string, start, len, buf); #endif /* USDT2 */ DT_VOID_RETURN_MARK(GetStringRegion); oop s = JNIHandles::resolve_non_null(string); @@ -4206,8 +4115,7 @@ JNI_ENTRY(void, jni_GetStringUTFRegion(JNIEnv *env, jstring string, jsize start, #ifndef USDT2 DTRACE_PROBE5(hotspot_jni, GetStringUTFRegion__entry, env, string, start, len, buf); #else /* USDT2 */ - HOTSPOT_JNI_GETSTRINGUTFREGION_ENTRY( - env, string, start, len, buf); + HOTSPOT_JNI_GETSTRINGUTFREGION_ENTRY(env, string, start, len, buf); #endif /* USDT2 */ DT_VOID_RETURN_MARK(GetStringUTFRegion); oop s = JNIHandles::resolve_non_null(string); @@ -4237,8 +4145,7 @@ JNI_ENTRY(void*, jni_GetPrimitiveArrayCritical(JNIEnv *env, jarray array, jboole #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, GetPrimitiveArrayCritical__entry, env, array, isCopy); #else /* USDT2 */ - HOTSPOT_JNI_GETPRIMITIVEARRAYCRITICAL_ENTRY( - env, array, (uintptr_t *) isCopy); + HOTSPOT_JNI_GETPRIMITIVEARRAYCRITICAL_ENTRY(env, array, (uintptr_t *) isCopy); #endif /* USDT2 */ GC_locker::lock_critical(thread); if (isCopy != NULL) { @@ -4256,8 +4163,7 @@ JNI_ENTRY(void*, jni_GetPrimitiveArrayCritical(JNIEnv *env, jarray array, jboole #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetPrimitiveArrayCritical__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_GETPRIMITIVEARRAYCRITICAL_RETURN( - ret); + HOTSPOT_JNI_GETPRIMITIVEARRAYCRITICAL_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -4268,16 +4174,14 @@ JNI_ENTRY(void, jni_ReleasePrimitiveArrayCritical(JNIEnv *env, jarray array, voi #ifndef USDT2 DTRACE_PROBE4(hotspot_jni, ReleasePrimitiveArrayCritical__entry, env, array, carray, mode); #else /* USDT2 */ - HOTSPOT_JNI_RELEASEPRIMITIVEARRAYCRITICAL_ENTRY( - env, array, carray, mode); + HOTSPOT_JNI_RELEASEPRIMITIVEARRAYCRITICAL_ENTRY(env, array, carray, mode); #endif /* USDT2 */ // The array, carray and mode arguments are ignored GC_locker::unlock_critical(thread); #ifndef USDT2 DTRACE_PROBE(hotspot_jni, ReleasePrimitiveArrayCritical__return); #else /* USDT2 */ -HOTSPOT_JNI_RELEASEPRIMITIVEARRAYCRITICAL_RETURN( -); +HOTSPOT_JNI_RELEASEPRIMITIVEARRAYCRITICAL_RETURN(); #endif /* USDT2 */ JNI_END @@ -4287,8 +4191,7 @@ JNI_ENTRY(const jchar*, jni_GetStringCritical(JNIEnv *env, jstring string, jbool #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, GetStringCritical__entry, env, string, isCopy); #else /* USDT2 */ - HOTSPOT_JNI_GETSTRINGCRITICAL_ENTRY( - env, string, (uintptr_t *) isCopy); + HOTSPOT_JNI_GETSTRINGCRITICAL_ENTRY(env, string, (uintptr_t *) isCopy); #endif /* USDT2 */ GC_locker::lock_critical(thread); if (isCopy != NULL) { @@ -4307,8 +4210,7 @@ JNI_ENTRY(const jchar*, jni_GetStringCritical(JNIEnv *env, jstring string, jbool #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetStringCritical__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_GETSTRINGCRITICAL_RETURN( - (uint16_t *) ret); + HOTSPOT_JNI_GETSTRINGCRITICAL_RETURN((uint16_t *) ret); #endif /* USDT2 */ return ret; JNI_END @@ -4319,16 +4221,14 @@ JNI_ENTRY(void, jni_ReleaseStringCritical(JNIEnv *env, jstring str, const jchar #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, ReleaseStringCritical__entry, env, str, chars); #else /* USDT2 */ - HOTSPOT_JNI_RELEASESTRINGCRITICAL_ENTRY( - env, str, (uint16_t *) chars); + HOTSPOT_JNI_RELEASESTRINGCRITICAL_ENTRY(env, str, (uint16_t *) chars); #endif /* USDT2 */ // The str and chars arguments are ignored GC_locker::unlock_critical(thread); #ifndef USDT2 DTRACE_PROBE(hotspot_jni, ReleaseStringCritical__return); #else /* USDT2 */ -HOTSPOT_JNI_RELEASESTRINGCRITICAL_RETURN( -); +HOTSPOT_JNI_RELEASESTRINGCRITICAL_RETURN(); #endif /* USDT2 */ JNI_END @@ -4338,16 +4238,14 @@ JNI_ENTRY(jweak, jni_NewWeakGlobalRef(JNIEnv *env, jobject ref)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, NewWeakGlobalRef__entry, env, ref); #else /* USDT2 */ - HOTSPOT_JNI_NEWWEAKGLOBALREF_ENTRY( - env, ref); + HOTSPOT_JNI_NEWWEAKGLOBALREF_ENTRY(env, ref); #endif /* USDT2 */ Handle ref_handle(thread, JNIHandles::resolve(ref)); jweak ret = JNIHandles::make_weak_global(ref_handle); #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, NewWeakGlobalRef__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_NEWWEAKGLOBALREF_RETURN( - ret); + HOTSPOT_JNI_NEWWEAKGLOBALREF_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -4358,15 +4256,13 @@ JNI_ENTRY(void, jni_DeleteWeakGlobalRef(JNIEnv *env, jweak ref)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, DeleteWeakGlobalRef__entry, env, ref); #else /* USDT2 */ - HOTSPOT_JNI_DELETEWEAKGLOBALREF_ENTRY( - env, ref); + HOTSPOT_JNI_DELETEWEAKGLOBALREF_ENTRY(env, ref); #endif /* USDT2 */ JNIHandles::destroy_weak_global(ref); #ifndef USDT2 DTRACE_PROBE(hotspot_jni, DeleteWeakGlobalRef__return); #else /* USDT2 */ - HOTSPOT_JNI_DELETEWEAKGLOBALREF_RETURN( - ); + HOTSPOT_JNI_DELETEWEAKGLOBALREF_RETURN(); #endif /* USDT2 */ JNI_END @@ -4376,16 +4272,14 @@ JNI_QUICK_ENTRY(jboolean, jni_ExceptionCheck(JNIEnv *env)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, ExceptionCheck__entry, env); #else /* USDT2 */ - HOTSPOT_JNI_EXCEPTIONCHECK_ENTRY( - env); + HOTSPOT_JNI_EXCEPTIONCHECK_ENTRY(env); #endif /* USDT2 */ jni_check_async_exceptions(thread); jboolean ret = (thread->has_pending_exception()) ? JNI_TRUE : JNI_FALSE; #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, ExceptionCheck__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_EXCEPTIONCHECK_RETURN( - ret); + HOTSPOT_JNI_EXCEPTIONCHECK_RETURN(ret); #endif /* USDT2 */ return ret; JNI_END @@ -4481,8 +4375,7 @@ extern "C" jobject JNICALL jni_NewDirectByteBuffer(JNIEnv *env, void* address, j #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, NewDirectByteBuffer__entry, env, address, capacity); #else /* USDT2 */ - HOTSPOT_JNI_NEWDIRECTBYTEBUFFER_ENTRY( - env, address, capacity); + HOTSPOT_JNI_NEWDIRECTBYTEBUFFER_ENTRY(env, address, capacity); #endif /* USDT2 */ if (!directBufferSupportInitializeEnded) { @@ -4490,8 +4383,7 @@ extern "C" jobject JNICALL jni_NewDirectByteBuffer(JNIEnv *env, void* address, j #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, NewDirectByteBuffer__return, NULL); #else /* USDT2 */ - HOTSPOT_JNI_NEWDIRECTBYTEBUFFER_RETURN( - NULL); + HOTSPOT_JNI_NEWDIRECTBYTEBUFFER_RETURN(NULL); #endif /* USDT2 */ return NULL; } @@ -4506,8 +4398,7 @@ extern "C" jobject JNICALL jni_NewDirectByteBuffer(JNIEnv *env, void* address, j #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, NewDirectByteBuffer__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_NEWDIRECTBYTEBUFFER_RETURN( - ret); + HOTSPOT_JNI_NEWDIRECTBYTEBUFFER_RETURN(ret); #endif /* USDT2 */ return ret; } @@ -4528,8 +4419,7 @@ extern "C" void* JNICALL jni_GetDirectBufferAddress(JNIEnv *env, jobject buf) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, GetDirectBufferAddress__entry, env, buf); #else /* USDT2 */ - HOTSPOT_JNI_GETDIRECTBUFFERADDRESS_ENTRY( - env, buf); + HOTSPOT_JNI_GETDIRECTBUFFERADDRESS_ENTRY(env, buf); #endif /* USDT2 */ void* ret = NULL; DT_RETURN_MARK(GetDirectBufferAddress, void*, (const void*&)ret); @@ -4564,8 +4454,7 @@ extern "C" jlong JNICALL jni_GetDirectBufferCapacity(JNIEnv *env, jobject buf) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, GetDirectBufferCapacity__entry, env, buf); #else /* USDT2 */ - HOTSPOT_JNI_GETDIRECTBUFFERCAPACITY_ENTRY( - env, buf); + HOTSPOT_JNI_GETDIRECTBUFFERCAPACITY_ENTRY(env, buf); #endif /* USDT2 */ jlong ret = -1; DT_RETURN_MARK(GetDirectBufferCapacity, jlong, (const jlong&)ret); @@ -4596,14 +4485,12 @@ JNI_LEAF(jint, jni_GetVersion(JNIEnv *env)) #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetVersion__entry, env); #else /* USDT2 */ - HOTSPOT_JNI_GETVERSION_ENTRY( - env); + HOTSPOT_JNI_GETVERSION_ENTRY(env); #endif /* USDT2 */ #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetVersion__return, CurrentVersion); #else /* USDT2 */ - HOTSPOT_JNI_GETVERSION_RETURN( - CurrentVersion); + HOTSPOT_JNI_GETVERSION_RETURN(CurrentVersion); #endif /* USDT2 */ return CurrentVersion; JNI_END @@ -4615,15 +4502,13 @@ JNI_LEAF(jint, jni_GetJavaVM(JNIEnv *env, JavaVM **vm)) #ifndef USDT2 DTRACE_PROBE2(hotspot_jni, GetJavaVM__entry, env, vm); #else /* USDT2 */ - HOTSPOT_JNI_GETJAVAVM_ENTRY( - env, (void **) vm); + HOTSPOT_JNI_GETJAVAVM_ENTRY(env, (void **) vm); #endif /* USDT2 */ *vm = (JavaVM *)(&main_vm); #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, GetJavaVM__return, JNI_OK); #else /* USDT2 */ - HOTSPOT_JNI_GETJAVAVM_RETURN( - JNI_OK); + HOTSPOT_JNI_GETJAVAVM_RETURN(JNI_OK); #endif /* USDT2 */ return JNI_OK; JNI_END @@ -5014,8 +4899,7 @@ _JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_GetDefaultJavaVMInitArgs(void *args_) { #ifndef USDT2 HS_DTRACE_PROBE1(hotspot_jni, GetDefaultJavaVMInitArgs__entry, args_); #else /* USDT2 */ - HOTSPOT_JNI_GETDEFAULTJAVAVMINITARGS_ENTRY( - args_); + HOTSPOT_JNI_GETDEFAULTJAVAVMINITARGS_ENTRY(args_); #endif /* USDT2 */ JDK1_1InitArgs *args = (JDK1_1InitArgs *)args_; jint ret = JNI_ERR; @@ -5108,8 +4992,7 @@ _JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_CreateJavaVM(JavaVM **vm, void **penv, v #ifndef USDT2 HS_DTRACE_PROBE3(hotspot_jni, CreateJavaVM__entry, vm, penv, args); #else /* USDT2 */ - HOTSPOT_JNI_CREATEJAVAVM_ENTRY( - (void **) vm, penv, args); + HOTSPOT_JNI_CREATEJAVAVM_ENTRY((void **) vm, penv, args); #endif /* USDT2 */ jint result = JNI_ERR; @@ -5231,8 +5114,7 @@ _JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_GetCreatedJavaVMs(JavaVM **vm_buf, jsize HS_DTRACE_PROBE3(hotspot_jni, GetCreatedJavaVMs__entry, \ vm_buf, bufLen, numVMs); #else /* USDT2 */ - HOTSPOT_JNI_GETCREATEDJAVAVMS_ENTRY( - (void **) vm_buf, bufLen, (uintptr_t *) numVMs); + HOTSPOT_JNI_GETCREATEDJAVAVMS_ENTRY((void **) vm_buf, bufLen, (uintptr_t *) numVMs); #endif /* USDT2 */ if (vm_created) { if (numVMs != NULL) *numVMs = 1; @@ -5243,8 +5125,7 @@ _JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_GetCreatedJavaVMs(JavaVM **vm_buf, jsize #ifndef USDT2 HS_DTRACE_PROBE1(hotspot_jni, GetCreatedJavaVMs__return, JNI_OK); #else /* USDT2 */ - HOTSPOT_JNI_GETCREATEDJAVAVMS_RETURN( - JNI_OK); + HOTSPOT_JNI_GETCREATEDJAVAVMS_RETURN(JNI_OK); #endif /* USDT2 */ return JNI_OK; } @@ -5262,8 +5143,7 @@ jint JNICALL jni_DestroyJavaVM(JavaVM *vm) { #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, DestroyJavaVM__entry, vm); #else /* USDT2 */ - HOTSPOT_JNI_DESTROYJAVAVM_ENTRY( - vm); + HOTSPOT_JNI_DESTROYJAVAVM_ENTRY(vm); #endif /* USDT2 */ jint res = JNI_ERR; DT_RETURN_MARK(DestroyJavaVM, jint, (const jint&)res); @@ -5419,15 +5299,13 @@ jint JNICALL jni_AttachCurrentThread(JavaVM *vm, void **penv, void *_args) { #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, AttachCurrentThread__entry, vm, penv, _args); #else /* USDT2 */ - HOTSPOT_JNI_ATTACHCURRENTTHREAD_ENTRY( - vm, penv, _args); + HOTSPOT_JNI_ATTACHCURRENTTHREAD_ENTRY(vm, penv, _args); #endif /* USDT2 */ if (!vm_created) { #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, AttachCurrentThread__return, JNI_ERR); #else /* USDT2 */ - HOTSPOT_JNI_ATTACHCURRENTTHREAD_RETURN( - (uint32_t) JNI_ERR); + HOTSPOT_JNI_ATTACHCURRENTTHREAD_RETURN((uint32_t) JNI_ERR); #endif /* USDT2 */ return JNI_ERR; } @@ -5437,8 +5315,7 @@ jint JNICALL jni_AttachCurrentThread(JavaVM *vm, void **penv, void *_args) { #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, AttachCurrentThread__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_ATTACHCURRENTTHREAD_RETURN( - ret); + HOTSPOT_JNI_ATTACHCURRENTTHREAD_RETURN(ret); #endif /* USDT2 */ return ret; } @@ -5448,8 +5325,7 @@ jint JNICALL jni_DetachCurrentThread(JavaVM *vm) { #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, DetachCurrentThread__entry, vm); #else /* USDT2 */ - HOTSPOT_JNI_DETACHCURRENTTHREAD_ENTRY( - vm); + HOTSPOT_JNI_DETACHCURRENTTHREAD_ENTRY(vm); #endif /* USDT2 */ VM_Exit::block_if_vm_exited(); @@ -5460,8 +5336,7 @@ jint JNICALL jni_DetachCurrentThread(JavaVM *vm) { #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, DetachCurrentThread__return, JNI_OK); #else /* USDT2 */ - HOTSPOT_JNI_DETACHCURRENTTHREAD_RETURN( - JNI_OK); + HOTSPOT_JNI_DETACHCURRENTTHREAD_RETURN(JNI_OK); #endif /* USDT2 */ return JNI_OK; } @@ -5471,8 +5346,7 @@ jint JNICALL jni_DetachCurrentThread(JavaVM *vm) { #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, DetachCurrentThread__return, JNI_ERR); #else /* USDT2 */ - HOTSPOT_JNI_DETACHCURRENTTHREAD_RETURN( - (uint32_t) JNI_ERR); + HOTSPOT_JNI_DETACHCURRENTTHREAD_RETURN((uint32_t) JNI_ERR); #endif /* USDT2 */ // Can't detach a thread that's running java, that can't work. return JNI_ERR; @@ -5497,8 +5371,7 @@ jint JNICALL jni_DetachCurrentThread(JavaVM *vm) { #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, DetachCurrentThread__return, JNI_OK); #else /* USDT2 */ - HOTSPOT_JNI_DETACHCURRENTTHREAD_RETURN( - JNI_OK); + HOTSPOT_JNI_DETACHCURRENTTHREAD_RETURN(JNI_OK); #endif /* USDT2 */ return JNI_OK; } @@ -5514,8 +5387,7 @@ jint JNICALL jni_GetEnv(JavaVM *vm, void **penv, jint version) { #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, GetEnv__entry, vm, penv, version); #else /* USDT2 */ - HOTSPOT_JNI_GETENV_ENTRY( - vm, penv, version); + HOTSPOT_JNI_GETENV_ENTRY(vm, penv, version); #endif /* USDT2 */ jint ret = JNI_ERR; DT_RETURN_MARK(GetEnv, jint, (const jint&)ret); @@ -5573,15 +5445,13 @@ jint JNICALL jni_AttachCurrentThreadAsDaemon(JavaVM *vm, void **penv, void *_arg #ifndef USDT2 DTRACE_PROBE3(hotspot_jni, AttachCurrentThreadAsDaemon__entry, vm, penv, _args); #else /* USDT2 */ - HOTSPOT_JNI_ATTACHCURRENTTHREADASDAEMON_ENTRY( - vm, penv, _args); + HOTSPOT_JNI_ATTACHCURRENTTHREADASDAEMON_ENTRY(vm, penv, _args); #endif /* USDT2 */ if (!vm_created) { #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, AttachCurrentThreadAsDaemon__return, JNI_ERR); #else /* USDT2 */ - HOTSPOT_JNI_ATTACHCURRENTTHREADASDAEMON_RETURN( - (uint32_t) JNI_ERR); + HOTSPOT_JNI_ATTACHCURRENTTHREADASDAEMON_RETURN((uint32_t) JNI_ERR); #endif /* USDT2 */ return JNI_ERR; } @@ -5591,8 +5461,7 @@ jint JNICALL jni_AttachCurrentThreadAsDaemon(JavaVM *vm, void **penv, void *_arg #ifndef USDT2 DTRACE_PROBE1(hotspot_jni, AttachCurrentThreadAsDaemon__return, ret); #else /* USDT2 */ - HOTSPOT_JNI_ATTACHCURRENTTHREADASDAEMON_RETURN( - ret); + HOTSPOT_JNI_ATTACHCURRENTTHREADASDAEMON_RETURN(ret); #endif /* USDT2 */ return ret; } diff --git a/hotspot/src/share/vm/runtime/java.cpp b/hotspot/src/share/vm/runtime/java.cpp index f5fde748fd5..1c4087412cb 100644 --- a/hotspot/src/share/vm/runtime/java.cpp +++ b/hotspot/src/share/vm/runtime/java.cpp @@ -608,6 +608,7 @@ void notify_vm_shutdown() { HS_DTRACE_WORKAROUND_TAIL_CALL_BUG(); #else /* USDT2 */ HOTSPOT_VM_SHUTDOWN(); + HS_DTRACE_WORKAROUND_TAIL_CALL_BUG(); #endif /* USDT2 */ } diff --git a/hotspot/src/share/vm/utilities/dtrace.hpp b/hotspot/src/share/vm/utilities/dtrace.hpp index 0e260fe09b6..73f5f7c3fba 100644 --- a/hotspot/src/share/vm/utilities/dtrace.hpp +++ b/hotspot/src/share/vm/utilities/dtrace.hpp @@ -38,7 +38,10 @@ #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() \ do { volatile size_t dtrace_workaround_tail_call_bug = 1; } while (0) -#define USDT1 1 +#define USDT2 1 +#include "dtracefiles/hotspot.h" +#include "dtracefiles/hotspot_jni.h" +#include "dtracefiles/hs_private.h" #elif defined(LINUX) #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() #define USDT1 1 From d80bfaeb1423e2651a1f45b027e8fb3a5c77f6e4 Mon Sep 17 00:00:00 2001 From: Christian Thalinger Date: Thu, 16 Jan 2014 16:18:34 -0800 Subject: [PATCH 041/158] 8022395: java.util.zip.ZipException: Not in GZIP format in JT_JDK/test/java/util/zip/GZIP tests Reviewed-by: kvn, iveresov --- hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp b/hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp index 4a30d597b3e..b4e8223e1f5 100644 --- a/hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp +++ b/hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp @@ -941,6 +941,8 @@ void LIRGenerator::do_update_CRC32(Intrinsic* x) { case vmIntrinsics::_updateCRC32: { LIRItem crc(x->argument_at(0), this); LIRItem val(x->argument_at(1), this); + // val is destroyed by update_crc32 + val.set_destroys_register(); crc.load_item(); val.load_item(); __ update_crc32(crc.result(), val.result(), result); From fe0b2eae8952d62b7c2433123303e55485c6126e Mon Sep 17 00:00:00 2001 From: Harold Seigel Date: Fri, 17 Jan 2014 09:39:51 -0500 Subject: [PATCH 042/158] 8031045: Access checks should precede additional per-instruction checks Move access check above the check for non-static method Reviewed-by: lfoltan, coleenp --- .../src/share/vm/interpreter/linkResolver.cpp | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/hotspot/src/share/vm/interpreter/linkResolver.cpp b/hotspot/src/share/vm/interpreter/linkResolver.cpp index b63e03bdcf6..52c88bd3a66 100644 --- a/hotspot/src/share/vm/interpreter/linkResolver.cpp +++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -649,16 +649,6 @@ void LinkResolver::resolve_interface_method(methodHandle& resolved_method, } } - if (nostatics && resolved_method->is_static()) { - ResourceMark rm(THREAD); - char buf[200]; - jio_snprintf(buf, sizeof(buf), "Expected instance not static method %s", Method::name_and_sig_as_C_string(resolved_klass(), - resolved_method->name(), - resolved_method->signature())); - THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); - } - - if (check_access) { // JDK8 adds non-public interface methods, and accessability check requirement assert(current_klass.not_null() , "current_klass should not be null"); @@ -702,6 +692,15 @@ void LinkResolver::resolve_interface_method(methodHandle& resolved_method, } } + if (nostatics && resolved_method->is_static()) { + ResourceMark rm(THREAD); + char buf[200]; + jio_snprintf(buf, sizeof(buf), "Expected instance not static method %s", + Method::name_and_sig_as_C_string(resolved_klass(), + resolved_method->name(), resolved_method->signature())); + THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); + } + if (TraceItables && Verbose) { ResourceMark rm(THREAD); tty->print("invokeinterface resolved method: caller-class:%s, compile-time-class:%s, method:%s, method_holder:%s, access_flags: ", From d6a0a9d5130809ddec864505b69e1c68df789281 Mon Sep 17 00:00:00 2001 From: Coleen Phillimore Date: Fri, 17 Jan 2014 11:21:29 -0500 Subject: [PATCH 043/158] 8032024: Test not added for bug 8025937: assert(existing_f1 == NULL || existing_f1 == f1) failed: illegal field,change Test didn't get hg added with original bug fix Reviewed-by: jrose, hseigel, lfoltan --- .../InvokespecialInterface.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 hotspot/test/runtime/lambda-features/InvokespecialInterface.java diff --git a/hotspot/test/runtime/lambda-features/InvokespecialInterface.java b/hotspot/test/runtime/lambda-features/InvokespecialInterface.java new file mode 100644 index 00000000000..25e7904c257 --- /dev/null +++ b/hotspot/test/runtime/lambda-features/InvokespecialInterface.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +/* + * @test + * @bug 8032024 + * @bug 8025937 + * @summary [JDK 8] Test invokespecial and invokeinterface with the same JVM_CONSTANT_InterfaceMethodref + * @run main InvokespecialInterface + */ +import java.util.function.*; +import java.util.*; + +interface I { + default void imethod() { System.out.println("I::imethod"); } +} + +class C implements I { + public void foo() { I.super.imethod(); } // invokespecial InterfaceMethod + public void bar() { I i = this; i.imethod(); } // invokeinterface same + public void doSomeInvokedynamic() { + String str = "world"; + Supplier foo = ()->"hello, "+str; + String res = foo.get(); + System.out.println(res); + } +} + +public class InvokespecialInterface { + public static void main(java.lang.String[] unused) { + // need to create C and call I::foo() + C c = new C(); + c.foo(); + c.bar(); + c.doSomeInvokedynamic(); + } +}; + + From ded754b7b29566d2cc1dd70e31c8a7f19530427d Mon Sep 17 00:00:00 2001 From: Kevin Walls Date: Fri, 17 Jan 2014 18:39:22 +0000 Subject: [PATCH 044/158] 8028623: SA: hash codes in SymbolTable mismatching java_lang_String::hash_code for extended characters Reviewed-by: sla, dsamersoff --- .../sun/jvm/hotspot/utilities/Hashtable.java | 5 +- .../sa/jmap-hashcode/Test8028623.java | 72 +++++++++++++++++++ 2 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/Hashtable.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/Hashtable.java index e9248e74fdc..e2281e7b321 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/Hashtable.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/Hashtable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -61,8 +61,9 @@ public class Hashtable extends BasicHashtable { long h = 0; int s = 0; int len = buf.length; + // Emulate the unsigned int in java_lang_String::hash_code while (len-- > 0) { - h = 31*h + (0xFFL & buf[s]); + h = 31*h + (0xFFFFFFFFL & buf[s]); s++; } return h & 0xFFFFFFFFL; diff --git a/hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java b/hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java new file mode 100644 index 00000000000..38afd66902a --- /dev/null +++ b/hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8028623 + * @summary Test hashing of extended characters in Serviceability Agent. + * @library /testlibrary + */ + +import com.oracle.java.testlibrary.JDKToolLauncher; +import com.oracle.java.testlibrary.OutputBuffer; +import com.oracle.java.testlibrary.ProcessTools; + +import java.io.File; + +public class Test8028623 { + + public static int à = 1; + public static String dumpFile = "heap.out"; + + public static void main (String[] args) { + + System.out.println(Ã); + + try { + int pid = ProcessTools.getProcessId(); + JDKToolLauncher jmap = JDKToolLauncher.create("jmap") + .addToolArg("-F") + .addToolArg("-dump:live,format=b,file=" + dumpFile) + .addToolArg(Integer.toString(pid)); + ProcessBuilder pb = new ProcessBuilder(jmap.getCommand()); + OutputBuffer output = ProcessTools.getOutput(pb); + Process p = pb.start(); + int e = p.waitFor(); + System.out.println("stdout:"); + System.out.println(output.getStdout()); + System.out.println("stderr:"); + System.out.println(output.getStderr()); + + if (e != 0) { + throw new RuntimeException("jmap returns: " + e); + } + if (! new File(dumpFile).exists()) { + throw new RuntimeException("dump file NOT created: '" + dumpFile + "'"); + } + } catch (Throwable t) { + t.printStackTrace(); + throw new RuntimeException("Test failed with: " + t); + } + } +} From 70041ae4e46708b024417800186e5e3ea2e69783 Mon Sep 17 00:00:00 2001 From: Volker Simonis Date: Fri, 17 Jan 2014 21:54:30 +0100 Subject: [PATCH 045/158] 8028537: PPC64: Updated the JDK regression tests to run on AIX Co-authored-by: Jonathan Lu Co-authored-by: Steve Poole Reviewed-by: alanb --- jdk/test/ProblemList.txt | 15 ++++++++----- .../com/sun/corba/5036554/TestCorbaBug.sh | 2 +- .../com/sun/corba/cachedSocket/7056731.sh | 2 +- .../plaf/windows/8016551/bug8016551.java | 2 +- jdk/test/com/sun/jdi/ImmutableResourceTest.sh | 2 +- jdk/test/com/sun/jdi/JITDebug.sh | 2 +- jdk/test/com/sun/jdi/PrivateTransportTest.sh | 22 ++++++++++++++----- jdk/test/com/sun/jdi/ShellScaffold.sh | 4 +++- .../connect/spi/JdiLoadedByCustomLoader.sh | 2 +- .../AutoShutdown/ShowExitTest/ShowExitTest.sh | 8 +++++++ .../IOExceptionIfEncodedURLTest.sh | 8 +++++++ .../evolution/RenamePackage/run.sh | 2 +- .../Serializable/serialver/classpath/run.sh | 2 +- .../io/Serializable/serialver/nested/run.sh | 2 +- .../ClassLoader/deadlock/TestCrossDelegate.sh | 3 +++ .../deadlock/TestOneWayDelegate.sh | 3 +++ .../java/lang/StringCoding/CheckEncodings.sh | 2 +- .../lang/annotation/loaderLeak/LoaderLeak.sh | 2 +- .../appendToClassLoaderSearch/CommonSetup.sh | 4 ++++ .../TestSystemLoadAvg.sh | 2 +- jdk/test/java/net/Authenticator/B4933582.sh | 2 +- jdk/test/java/net/DatagramSocket/Send12k.java | 2 +- .../ADatagramSocket.sh | 2 +- jdk/test/java/net/Socket/OldSocketImpl.sh | 2 +- jdk/test/java/net/URL/B5086147.sh | 2 +- jdk/test/java/net/URLClassLoader/B5077773.sh | 2 +- .../net/URLClassLoader/sealing/checksealed.sh | 2 +- .../java/net/URLConnection/6212146/test.sh | 2 +- .../charset/coders/CheckSJISMappingProp.sh | 2 +- jdk/test/java/nio/charset/spi/basic.sh | 4 ++-- jdk/test/java/nio/file/Files/SBC.java | 2 +- .../java/nio/file/Files/walkFileTree/find.sh | 9 +++++++- .../Activatable/extLoadedImpl/ext.sh | 2 +- .../java/rmi/registry/readTest/readTest.sh | 2 +- .../ClassLoaderDeadlock.sh | 4 ++++ .../Security/ClassLoaderDeadlock/Deadlock.sh | 4 ++++ .../Security/ClassLoaderDeadlock/Deadlock2.sh | 4 ++++ .../java/security/Security/signedfirst/Dyn.sh | 4 ++++ .../security/Security/signedfirst/Static.sh | 4 ++++ jdk/test/java/util/Currency/PropertiesTest.sh | 2 +- jdk/test/java/util/Locale/LocaleCategory.sh | 2 +- jdk/test/java/util/Locale/LocaleProviders.sh | 2 +- .../java/util/PluggableLocale/ExecTest.sh | 2 +- .../util/ResourceBundle/Bug6299235Test.sh | 2 +- jdk/test/java/util/ServiceLoader/basic.sh | 2 +- .../util/logging/AnonLoggerWeakRefLeak.sh | 6 ++--- .../java/util/logging/LoggerWeakRefLeak.sh | 6 ++--- .../java/util/prefs/CheckUserPrefsStorage.sh | 2 +- .../crypto/SecretKeyFactory/FailOverTest.sh | 2 +- .../runMetadataFormatTest.sh | 2 +- .../runMetadataFormatThreadTest.sh | 2 +- .../stream/StreamCloserLeak/run_test.sh | 8 +++++++ jdk/test/javax/script/CommonSetup.sh | 2 +- .../javax/security/auth/Subject/doAs/Test.sh | 5 +++++ .../lib/security/java.policy/Ext_AllPolicy.sh | 2 +- .../bootstrap/GeneratePropertyPassword.sh | 2 +- jdk/test/sun/net/ftp/MarkResetTest.sh | 2 +- .../sun/net/www/http/HttpClient/RetryPost.sh | 2 +- jdk/test/sun/net/www/protocol/jar/B5105410.sh | 2 +- .../sun/net/www/protocol/jar/jarbug/run.sh | 2 +- .../sun/rmi/rmic/newrmic/equivalence/batch.sh | 12 +++++----- jdk/test/sun/security/krb5/runNameEquals.sh | 4 ++++ .../pkcs11/Provider/ConfigQuotedString.sh | 6 +++++ .../sun/security/pkcs11/Provider/Login.sh | 6 +++++ .../sun/security/provider/KeyStore/DKSTest.sh | 10 +-------- .../PolicyFile/getinstance/getinstance.sh | 4 ++++ .../EngineArgs/DebugReportsOneExtraByte.sh | 2 +- .../ssl/SSLSocketImpl/NotifyHandshakeTest.sh | 2 +- .../https/HttpsURLConnection/PostThruProxy.sh | 2 +- .../PostThruProxyWithAuth.sh | 2 +- .../security/tools/jarsigner/AlgOptions.sh | 2 +- .../security/tools/jarsigner/PercentSign.sh | 2 +- .../sun/security/tools/jarsigner/diffend.sh | 2 +- .../sun/security/tools/jarsigner/oldsig.sh | 2 +- .../security/tools/keytool/AltProviderPath.sh | 2 +- .../tools/keytool/CloneKeyAskPassword.sh | 4 ++++ .../sun/security/tools/keytool/NoExtNPE.sh | 4 ++++ .../sun/security/tools/keytool/SecretKeyKS.sh | 2 +- .../security/tools/keytool/StandardAlgName.sh | 2 +- .../tools/keytool/StorePasswordsByShell.sh | 10 +-------- .../sun/security/tools/keytool/printssl.sh | 2 +- .../sun/security/tools/keytool/resource.sh | 2 +- .../sun/security/tools/keytool/standard.sh | 2 +- .../sun/security/tools/policytool/Alias.sh | 2 +- .../sun/security/tools/policytool/ChangeUI.sh | 2 +- .../security/tools/policytool/OpenPolicy.sh | 2 +- .../sun/security/tools/policytool/SaveAs.sh | 2 +- .../tools/policytool/UpdatePermissions.sh | 2 +- .../security/tools/policytool/UsePolicy.sh | 2 +- .../sun/security/tools/policytool/i18n.sh | 2 +- jdk/test/sun/tools/common/CommonSetup.sh | 6 +++++ .../sun/tools/jconsole/ResourceCheckTest.sh | 2 +- jdk/test/sun/tools/jinfo/Basic.sh | 2 +- .../resources/ImmutableResourceTest.sh | 2 +- .../tools/launcher/ExecutionEnvironment.java | 20 ++++++++++++++--- jdk/test/tools/launcher/Settings.java | 8 +++++-- jdk/test/tools/launcher/TestHelper.java | 2 ++ 97 files changed, 236 insertions(+), 115 deletions(-) diff --git a/jdk/test/ProblemList.txt b/jdk/test/ProblemList.txt index 7c83f52f75c..00662effb83 100644 --- a/jdk/test/ProblemList.txt +++ b/jdk/test/ProblemList.txt @@ -41,11 +41,11 @@ # # List items are testnames followed by labels, all MUST BE commented # as to why they are here and use a label: -# generic-all Problems on all platforms -# generic-ARCH Where ARCH is one of: sparc, sparcv9, x64, i586, etc. -# OSNAME-all Where OSNAME is one of: solaris, linux, windows, macosx -# OSNAME-ARCH Specific on to one OSNAME and ARCH, e.g. solaris-amd64 -# OSNAME-REV Specific on to one OSNAME and REV, e.g. solaris-5.8 +# generic-all Problems on all platforms +# generic-ARCH Where ARCH is one of: sparc, sparcv9, x64, i586, etc. +# OSNAME-all Where OSNAME is one of: solaris, linux, windows, macosx, aix +# OSNAME-ARCH Specific on to one OSNAME and ARCH, e.g. solaris-amd64 +# OSNAME-REV Specific on to one OSNAME and REV, e.g. solaris-5.8 # # More than one label is allowed but must be on the same line. # @@ -134,6 +134,11 @@ sun/management/jmxremote/bootstrap/RmiSslBootstrapTest.sh windows-all # jdk_jmx +# 8030957 +com/sun/management/OperatingSystemMXBean/GetProcessCpuLoad.java aix-all +com/sun/management/OperatingSystemMXBean/GetSystemCpuLoad.java aix-all +javax/management/MBeanServer/OldMBeanServerTest.java aix-all + ############################################################################ # jdk_math diff --git a/jdk/test/com/sun/corba/5036554/TestCorbaBug.sh b/jdk/test/com/sun/corba/5036554/TestCorbaBug.sh index 983608cb560..7e057e72c38 100644 --- a/jdk/test/com/sun/corba/5036554/TestCorbaBug.sh +++ b/jdk/test/com/sun/corba/5036554/TestCorbaBug.sh @@ -48,7 +48,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/com/sun/corba/cachedSocket/7056731.sh b/jdk/test/com/sun/corba/cachedSocket/7056731.sh index 5244b9a70a5..3b58ad6e632 100644 --- a/jdk/test/com/sun/corba/cachedSocket/7056731.sh +++ b/jdk/test/com/sun/corba/cachedSocket/7056731.sh @@ -31,7 +31,7 @@ OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/com/sun/java/swing/plaf/windows/8016551/bug8016551.java b/jdk/test/com/sun/java/swing/plaf/windows/8016551/bug8016551.java index e616daadde4..35e55f09174 100644 --- a/jdk/test/com/sun/java/swing/plaf/windows/8016551/bug8016551.java +++ b/jdk/test/com/sun/java/swing/plaf/windows/8016551/bug8016551.java @@ -25,7 +25,7 @@ * @bug 8016551 * @summary JMenuItem in WindowsLookAndFeel can't paint default icons * @author Leonid Romanov - * @run main bug8016551 + * @run main/othervm bug8016551 */ import javax.swing.*; diff --git a/jdk/test/com/sun/jdi/ImmutableResourceTest.sh b/jdk/test/com/sun/jdi/ImmutableResourceTest.sh index fa312adad74..29c72ed6254 100644 --- a/jdk/test/com/sun/jdi/ImmutableResourceTest.sh +++ b/jdk/test/com/sun/jdi/ImmutableResourceTest.sh @@ -56,7 +56,7 @@ pass() OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PATHSEP=":" ;; diff --git a/jdk/test/com/sun/jdi/JITDebug.sh b/jdk/test/com/sun/jdi/JITDebug.sh index 0ec359799a6..c647e1153b5 100644 --- a/jdk/test/com/sun/jdi/JITDebug.sh +++ b/jdk/test/com/sun/jdi/JITDebug.sh @@ -63,7 +63,7 @@ pass() OS=`uname -s` export TRANSPORT_METHOD case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PATHSEP=":" TRANSPORT_METHOD=dt_socket ;; diff --git a/jdk/test/com/sun/jdi/PrivateTransportTest.sh b/jdk/test/com/sun/jdi/PrivateTransportTest.sh index 32677db795b..ee8051f46ee 100644 --- a/jdk/test/com/sun/jdi/PrivateTransportTest.sh +++ b/jdk/test/com/sun/jdi/PrivateTransportTest.sh @@ -102,7 +102,7 @@ libdir=${TESTCLASSES} is_windows=false is_cygwin=false case `uname -s` in - SunOS|Linux) + SunOS|Linux|AIX) xx=`find ${jreloc}/lib -name libdt_socket.so` libloc=`dirname ${xx}` ;; @@ -161,13 +161,23 @@ elif [ -f ${libloc}/libdt_socket.so ] ; then echo cp ${libloc}/libdt_socket.so ${fullpath} cp ${libloc}/libdt_socket.so ${fullpath} # make sure we can find libraries in current directory - if [ "${LD_LIBRARY_PATH}" = "" ] ; then - LD_LIBRARY_PATH=${libdir} + if [ "$os" = "AIX" ] ; then + if [ "${LIBPATH}" = "" ] ; then + LIBPATH=${libdir} + else + LIBPATH=${LIBPATH}:${libdir} + fi + export LIBPATH + echo LIBPATH=${LIBPATH} else - LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${libdir} + if [ "${LD_LIBRARY_PATH}" = "" ] ; then + LD_LIBRARY_PATH=${libdir} + else + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${libdir} + fi + export LD_LIBRARY_PATH + echo LD_LIBRARY_PATH=${LD_LIBRARY_PATH} fi - export LD_LIBRARY_PATH - echo LD_LIBRARY_PATH=${LD_LIBRARY_PATH} else echo "cannot find dt_socket in ${libloc} for ${private_transport}" fail "cannot find dt_socket in ${libloc} for ${private_transport}" diff --git a/jdk/test/com/sun/jdi/ShellScaffold.sh b/jdk/test/com/sun/jdi/ShellScaffold.sh index 6ed55c1ae91..7bc063d44eb 100644 --- a/jdk/test/com/sun/jdi/ShellScaffold.sh +++ b/jdk/test/com/sun/jdi/ShellScaffold.sh @@ -199,6 +199,8 @@ findPid() if [ "$osname" = SunOS ] ; then # Solaris and OpenSolaris use pgrep and not ps in psCmd findPidCmd="$psCmd" + elif [ "$osname" = AIX ] ; then + findPidCmd="$psCmd" else # Never use plain 'ps', which requires a "controlling terminal" # and will fail with a "ps: no controlling terminal" error. @@ -293,7 +295,7 @@ EOF psCmd=ps jstack=jstack.exe ;; - SunOS | Linux | Darwin) + SunOS | Linux | Darwin | AIX) transport=dt_socket address= devnull=/dev/null diff --git a/jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh b/jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh index 6222c80bd14..2b104822b17 100644 --- a/jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh +++ b/jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh @@ -45,7 +45,7 @@ fi OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" ;; Windows* | CYGWIN*) diff --git a/jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh b/jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh index 148041c2825..f772c25245f 100644 --- a/jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh +++ b/jdk/test/java/awt/Toolkit/AutoShutdown/ShowExitTest/ShowExitTest.sh @@ -102,6 +102,14 @@ case "$OS" in TMP=`cd "${SystemRoot}/Temp"; echo ${PWD}` ;; + AIX ) + VAR="A different value for AIX" + DEFAULT_JDK=/ + FILESEP="/" + PATHSEP=":" + TMP="/tmp" + ;; + # catch all other OSs * ) echo "Unrecognized system! $OS" diff --git a/jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh b/jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh index ccbea0c7ed0..d8880392570 100644 --- a/jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh +++ b/jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh @@ -135,6 +135,14 @@ case "$OS" in TMP=`cd "${SystemRoot}/Temp"; echo ${PWD}` ;; + AIX ) + VAR="A different value for AIX" + DEFAULT_JDK=/ + FILESEP="/" + PATHSEP=":" + TMP="/tmp" + ;; + # catch all other OSs * ) echo "Unrecognized system! $OS" diff --git a/jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh b/jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh index deda2826115..f37159d6899 100644 --- a/jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh +++ b/jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh @@ -45,7 +45,7 @@ OS=`uname -s` # Need to determine the classpath separator and filepath separator based on the # operating system. case "$OS" in -SunOS | Linux | Darwin ) +SunOS | Linux | Darwin | AIX ) PS=":" ;; Windows* | CYGWIN* ) PS=";" ;; diff --git a/jdk/test/java/io/Serializable/serialver/classpath/run.sh b/jdk/test/java/io/Serializable/serialver/classpath/run.sh index 8c6b9f3d0be..2aa1b0e92ea 100644 --- a/jdk/test/java/io/Serializable/serialver/classpath/run.sh +++ b/jdk/test/java/io/Serializable/serialver/classpath/run.sh @@ -47,7 +47,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" ;; Windows* | CYGWIN* ) PS=";" ;; diff --git a/jdk/test/java/io/Serializable/serialver/nested/run.sh b/jdk/test/java/io/Serializable/serialver/nested/run.sh index 765d2d41c41..578e74afc51 100644 --- a/jdk/test/java/io/Serializable/serialver/nested/run.sh +++ b/jdk/test/java/io/Serializable/serialver/nested/run.sh @@ -47,7 +47,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" ;; Windows* | CYGWIN* ) PS=";" ;; diff --git a/jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh b/jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh index 24b129aecbc..c86a4c00f73 100644 --- a/jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh +++ b/jdk/test/java/lang/ClassLoader/deadlock/TestCrossDelegate.sh @@ -58,6 +58,9 @@ case "$OS" in Darwin ) FS="/" ;; + AIX ) + FS="/" + ;; Windows*) FS="\\" ;; diff --git a/jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh b/jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh index 6d5aabb0728..49abefef8b4 100644 --- a/jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh +++ b/jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh @@ -63,6 +63,9 @@ case "$OS" in Darwin ) FS="/" ;; + AIX ) + FS="/" + ;; Windows* | CYGWIN* ) FS="\\" ;; diff --git a/jdk/test/java/lang/StringCoding/CheckEncodings.sh b/jdk/test/java/lang/StringCoding/CheckEncodings.sh index edc5f9a4e49..2936d9cae65 100644 --- a/jdk/test/java/lang/StringCoding/CheckEncodings.sh +++ b/jdk/test/java/lang/StringCoding/CheckEncodings.sh @@ -30,7 +30,7 @@ # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin) ;; + SunOS | Linux | Darwin | AIX ) ;; Windows* | CYGWIN* ) echo "Passed"; exit 0 ;; * ) echo "Unrecognized system!" ; exit 1 ;; diff --git a/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh b/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh index e62a63cd8a5..915aa9558ff 100644 --- a/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh +++ b/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh @@ -48,7 +48,7 @@ echo "CLASSPATH=${CLASSPATH}" # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh b/jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh index 3455959c3aa..c47f59de834 100644 --- a/jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh +++ b/jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh @@ -47,6 +47,10 @@ case "$OS" in PS=":" FS="/" ;; + AIX ) + PS=":" + FS="/" + ;; Windows*) PS=";" OS="Windows" diff --git a/jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh b/jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh index 571a3d931a3..1ef2f35c8e9 100644 --- a/jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh +++ b/jdk/test/java/lang/management/OperatingSystemMXBean/TestSystemLoadAvg.sh @@ -61,7 +61,7 @@ i=1 while true; do echo "Run $i: TestSystemLoadAvg" case `uname -s` in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) runOne GetSystemLoadAverage ;; * ) diff --git a/jdk/test/java/net/Authenticator/B4933582.sh b/jdk/test/java/net/Authenticator/B4933582.sh index fa1768398ae..1e1268e3f8a 100644 --- a/jdk/test/java/net/Authenticator/B4933582.sh +++ b/jdk/test/java/net/Authenticator/B4933582.sh @@ -26,7 +26,7 @@ OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/java/net/DatagramSocket/Send12k.java b/jdk/test/java/net/DatagramSocket/Send12k.java index 6446330d35e..f6375c1f0b7 100644 --- a/jdk/test/java/net/DatagramSocket/Send12k.java +++ b/jdk/test/java/net/DatagramSocket/Send12k.java @@ -53,7 +53,7 @@ public class Send12k { boolean sendOkay = true; try { s1.send(p1); - } catch (SocketException e) { + } catch (IOException e) { /* * Prior to merlin a send of > 12k to loopback address * would fail silently. diff --git a/jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh b/jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh index 271b21d26f3..eac0315e7e3 100644 --- a/jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh +++ b/jdk/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh @@ -27,7 +27,7 @@ # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Darwin ) + SunOS | Darwin | AIX ) PATHSEP=":" FILESEP="/" ;; diff --git a/jdk/test/java/net/Socket/OldSocketImpl.sh b/jdk/test/java/net/Socket/OldSocketImpl.sh index bbe055fa2ea..70b92afc7b6 100644 --- a/jdk/test/java/net/Socket/OldSocketImpl.sh +++ b/jdk/test/java/net/Socket/OldSocketImpl.sh @@ -28,7 +28,7 @@ OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/java/net/URL/B5086147.sh b/jdk/test/java/net/URL/B5086147.sh index a669e1347ee..772d7a32cd1 100644 --- a/jdk/test/java/net/URL/B5086147.sh +++ b/jdk/test/java/net/URL/B5086147.sh @@ -26,7 +26,7 @@ OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) exit 0 ;; CYGWIN* ) diff --git a/jdk/test/java/net/URLClassLoader/B5077773.sh b/jdk/test/java/net/URLClassLoader/B5077773.sh index 9bd9a1e6f34..3b52698840a 100644 --- a/jdk/test/java/net/URLClassLoader/B5077773.sh +++ b/jdk/test/java/net/URLClassLoader/B5077773.sh @@ -34,7 +34,7 @@ OS=`uname -s` case "$OS" in - SunOS | Darwin ) + SunOS | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/java/net/URLClassLoader/sealing/checksealed.sh b/jdk/test/java/net/URLClassLoader/sealing/checksealed.sh index 0d212c62aae..339525a1042 100644 --- a/jdk/test/java/net/URLClassLoader/sealing/checksealed.sh +++ b/jdk/test/java/net/URLClassLoader/sealing/checksealed.sh @@ -27,7 +27,7 @@ OS=`uname -s` case "$OS" in - SunOS | Darwin ) + SunOS | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/java/net/URLConnection/6212146/test.sh b/jdk/test/java/net/URLConnection/6212146/test.sh index 45f5310005e..9a0615cadf3 100644 --- a/jdk/test/java/net/URLConnection/6212146/test.sh +++ b/jdk/test/java/net/URLConnection/6212146/test.sh @@ -33,7 +33,7 @@ OS=`uname -s` case "$OS" in - SunOS | Darwin ) + SunOS | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh b/jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh index fd76d5a5031..5c14e7392ec 100644 --- a/jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh +++ b/jdk/test/java/nio/charset/coders/CheckSJISMappingProp.sh @@ -34,7 +34,7 @@ OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) ;; + SunOS | Linux | Darwin | AIX ) ;; # Skip locale test for Windows Windows* | CYGWIN* ) echo "Passed"; exit 0 ;; diff --git a/jdk/test/java/nio/charset/spi/basic.sh b/jdk/test/java/nio/charset/spi/basic.sh index 6b5ad3108ac..6bc60d140e7 100644 --- a/jdk/test/java/nio/charset/spi/basic.sh +++ b/jdk/test/java/nio/charset/spi/basic.sh @@ -48,7 +48,7 @@ JAR=$COMPILEJAVA/bin/jar DIR=`pwd` case `uname` in - SunOS | Linux | Darwin ) CPS=':' ;; + SunOS | Linux | Darwin | AIX ) CPS=':' ;; Windows* ) CPS=';' ;; CYGWIN* ) DIR=`/usr/bin/cygpath -a -s -m $DIR` @@ -81,7 +81,7 @@ if [ $# -gt 0 ]; then L="$1" shift s=`uname -s` - if [ $s != Linux -a $s != SunOS -a $s != Darwin ]; then + if [ $s != Linux -a $s != SunOS -a $s != Darwin -a $s != AIX ]; then echo "$L: Locales not supported on this system, skipping..." exit 0 fi diff --git a/jdk/test/java/nio/file/Files/SBC.java b/jdk/test/java/nio/file/Files/SBC.java index ab467266edf..d26428d5f60 100644 --- a/jdk/test/java/nio/file/Files/SBC.java +++ b/jdk/test/java/nio/file/Files/SBC.java @@ -235,7 +235,7 @@ public class SBC { try { Files.newByteChannel(link, READ, LinkOption.NOFOLLOW_LINKS); throw new RuntimeException(); - } catch (IOException x) { + } catch (IOException | UnsupportedOperationException x) { } finally { TestUtil.deleteUnchecked(link); } diff --git a/jdk/test/java/nio/file/Files/walkFileTree/find.sh b/jdk/test/java/nio/file/Files/walkFileTree/find.sh index 9a99147fda0..2549ad3cbbb 100644 --- a/jdk/test/java/nio/file/Files/walkFileTree/find.sh +++ b/jdk/test/java/nio/file/Files/walkFileTree/find.sh @@ -43,7 +43,14 @@ case "$OS" in echo "This test does not run on Windows" exit 0 ;; + AIX ) + CLASSPATH=${TESTCLASSES}:${TESTSRC} + # On AIX "find -follow" may core dump on recursive links without '-L' + # see: http://www-01.ibm.com/support/docview.wss?uid=isg1IV28143 + FIND_FOLLOW_OPT="-L" + ;; * ) + FIND_FOLLOW_OPT= CLASSPATH=${TESTCLASSES}:${TESTSRC} ;; esac @@ -65,7 +72,7 @@ if [ $? != 0 ]; then failures=`expr $failures + 1`; fi # cycles (sym links to ancestor directories), other versions do # not. For that reason we run PrintFileTree with the -printCycles # option when the output without this option differs to find(1). -find "$ROOT" -follow > out1 +find $FIND_FOLLOW_OPT "$ROOT" -follow > out1 $JAVA ${TESTVMOPTS} PrintFileTree -follow "$ROOT" > out2 diff out1 out2 if [ $? != 0 ]; diff --git a/jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh b/jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh index 9c7a2eac4ec..86dfff43f5b 100644 --- a/jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh +++ b/jdk/test/java/rmi/activation/Activatable/extLoadedImpl/ext.sh @@ -33,7 +33,7 @@ OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" ;; Windows* | CYGWIN* ) diff --git a/jdk/test/java/rmi/registry/readTest/readTest.sh b/jdk/test/java/rmi/registry/readTest/readTest.sh index bb37f65b4cc..c6abad2db78 100644 --- a/jdk/test/java/rmi/registry/readTest/readTest.sh +++ b/jdk/test/java/rmi/registry/readTest/readTest.sh @@ -30,7 +30,7 @@ OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" FILEURL="file:" diff --git a/jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh b/jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh index 7f5dc78c23a..3794cd41bbb 100644 --- a/jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh +++ b/jdk/test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh @@ -62,6 +62,10 @@ case "$OS" in PATHSEP=":" FILESEP="/" ;; + AIX ) + PATHSEP=":" + FILESEP="/" + ;; CYGWIN* ) PATHSEP=";" FILESEP="/" diff --git a/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh b/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh index e1ed14425fa..f2002448566 100644 --- a/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh +++ b/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock.sh @@ -46,6 +46,10 @@ case "$OS" in PATHSEP=":" FILESEP="/" ;; + AIX ) + PATHSEP=":" + FILESEP="/" + ;; CYGWIN* ) PATHSEP=";" FILESEP="/" diff --git a/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh b/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh index e817db37898..2951a28e549 100644 --- a/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh +++ b/jdk/test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh @@ -70,6 +70,10 @@ case "$OS" in PATHSEP=":" FILESEP="/" ;; + AIX ) + PATHSEP=":" + FILESEP="/" + ;; Windows* ) PATHSEP=";" FILESEP="\\" diff --git a/jdk/test/java/security/Security/signedfirst/Dyn.sh b/jdk/test/java/security/Security/signedfirst/Dyn.sh index 73cff3e80da..019a2f46c60 100644 --- a/jdk/test/java/security/Security/signedfirst/Dyn.sh +++ b/jdk/test/java/security/Security/signedfirst/Dyn.sh @@ -62,6 +62,10 @@ case "$OS" in PATHSEP=":" FILESEP="/" ;; + AIX ) + PATHSEP=":" + FILESEP="/" + ;; CYGWIN* ) PATHSEP=";" FILESEP="/" diff --git a/jdk/test/java/security/Security/signedfirst/Static.sh b/jdk/test/java/security/Security/signedfirst/Static.sh index 46765e4a92b..b22ca05e184 100644 --- a/jdk/test/java/security/Security/signedfirst/Static.sh +++ b/jdk/test/java/security/Security/signedfirst/Static.sh @@ -62,6 +62,10 @@ case "$OS" in PATHSEP=":" FILESEP="/" ;; + AIX ) + PATHSEP=":" + FILESEP="/" + ;; CYGWIN* ) PATHSEP=";" FILESEP="/" diff --git a/jdk/test/java/util/Currency/PropertiesTest.sh b/jdk/test/java/util/Currency/PropertiesTest.sh index 65ab89da2e0..01f1326cd2d 100644 --- a/jdk/test/java/util/Currency/PropertiesTest.sh +++ b/jdk/test/java/util/Currency/PropertiesTest.sh @@ -52,7 +52,7 @@ echo "CLASSPATH=${CLASSPATH}" # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/java/util/Locale/LocaleCategory.sh b/jdk/test/java/util/Locale/LocaleCategory.sh index 7715d354225..989556a2477 100644 --- a/jdk/test/java/util/Locale/LocaleCategory.sh +++ b/jdk/test/java/util/Locale/LocaleCategory.sh @@ -52,7 +52,7 @@ echo "CLASSPATH=${CLASSPATH}" # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | *BSD | Darwin ) + SunOS | Linux | *BSD | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/java/util/Locale/LocaleProviders.sh b/jdk/test/java/util/Locale/LocaleProviders.sh index db6e4a92d62..58cd9c82060 100644 --- a/jdk/test/java/util/Locale/LocaleProviders.sh +++ b/jdk/test/java/util/Locale/LocaleProviders.sh @@ -56,7 +56,7 @@ echo "CLASSPATH=${CLASSPATH}" # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | *BSD | Darwin ) + SunOS | Linux | *BSD | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/java/util/PluggableLocale/ExecTest.sh b/jdk/test/java/util/PluggableLocale/ExecTest.sh index 3aa001c86ca..a30d70312d2 100644 --- a/jdk/test/java/util/PluggableLocale/ExecTest.sh +++ b/jdk/test/java/util/PluggableLocale/ExecTest.sh @@ -62,7 +62,7 @@ echo "CLASSPATH=${CLASSPATH}" # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/java/util/ResourceBundle/Bug6299235Test.sh b/jdk/test/java/util/ResourceBundle/Bug6299235Test.sh index d348d495d50..d0eb2a2f609 100644 --- a/jdk/test/java/util/ResourceBundle/Bug6299235Test.sh +++ b/jdk/test/java/util/ResourceBundle/Bug6299235Test.sh @@ -31,7 +31,7 @@ # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PATHSEP=":" FILESEP="/" ;; diff --git a/jdk/test/java/util/ServiceLoader/basic.sh b/jdk/test/java/util/ServiceLoader/basic.sh index 5d8846a02d8..2c1cd6f6418 100644 --- a/jdk/test/java/util/ServiceLoader/basic.sh +++ b/jdk/test/java/util/ServiceLoader/basic.sh @@ -43,7 +43,7 @@ JAR="$COMPILEJAVA/bin/jar" OS=`uname -s` case "$OS" in - SunOS | Darwin ) + SunOS | Darwin | AIX ) SEP=':' ;; Linux ) SEP=':' ;; diff --git a/jdk/test/java/util/logging/AnonLoggerWeakRefLeak.sh b/jdk/test/java/util/logging/AnonLoggerWeakRefLeak.sh index eef8641c7b6..fc1aece9ebd 100644 --- a/jdk/test/java/util/logging/AnonLoggerWeakRefLeak.sh +++ b/jdk/test/java/util/logging/AnonLoggerWeakRefLeak.sh @@ -83,9 +83,9 @@ if [ "$status" != 0 ]; then fi if [ "$status" != 0 ]; then - echo "ERROR: 'jmap $jmap_option' is not supported so this test" - echo "ERROR: cannot work reliably. Aborting!" - exit 2 + echo "WARNING: 'jmap $jmap_option' is not supported on this platform" + echo "WARNING: so this test cannot work reliably. Aborting!" + exit 0 fi fi diff --git a/jdk/test/java/util/logging/LoggerWeakRefLeak.sh b/jdk/test/java/util/logging/LoggerWeakRefLeak.sh index ea3dc1f8f1d..25cc4aabc74 100644 --- a/jdk/test/java/util/logging/LoggerWeakRefLeak.sh +++ b/jdk/test/java/util/logging/LoggerWeakRefLeak.sh @@ -83,9 +83,9 @@ if [ "$status" != 0 ]; then fi if [ "$status" != 0 ]; then - echo "ERROR: 'jmap $jmap_option' is not supported so this test" - echo "ERROR: cannot work reliably. Aborting!" - exit 2 + echo "WARNING: 'jmap $jmap_option' is not supported on this platform" + echo "WARNING: so this test cannot work reliably. Aborting!" + exit 0 fi fi diff --git a/jdk/test/java/util/prefs/CheckUserPrefsStorage.sh b/jdk/test/java/util/prefs/CheckUserPrefsStorage.sh index 28210696b39..bfb4a2a54c7 100644 --- a/jdk/test/java/util/prefs/CheckUserPrefsStorage.sh +++ b/jdk/test/java/util/prefs/CheckUserPrefsStorage.sh @@ -31,7 +31,7 @@ OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh b/jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh index c16b60ff877..51eaa6eda0c 100644 --- a/jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh +++ b/jdk/test/javax/crypto/SecretKeyFactory/FailOverTest.sh @@ -56,7 +56,7 @@ echo "TESTCLASSES=${TESTCLASSES}" # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatTest.sh b/jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatTest.sh index 84a58535cf1..800a898eb1a 100644 --- a/jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatTest.sh +++ b/jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatTest.sh @@ -89,7 +89,7 @@ case "$OS" in FILESEP="/" ;; - Linux | Darwin ) + Linux | Darwin | AIX ) VAR="A different value for Linux" DEFAULT_JDK=/none #DEFAULT_JDK=/usr/local/java/jdk1.4/linux-i386 diff --git a/jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatThreadTest.sh b/jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatThreadTest.sh index ed36fef3f17..eb60ba99282 100644 --- a/jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatThreadTest.sh +++ b/jdk/test/javax/imageio/metadata/IIOMetadataFormat/runMetadataFormatThreadTest.sh @@ -90,7 +90,7 @@ case "$OS" in FILESEP="/" ;; - Linux | Darwin ) + Linux | Darwin | AIX ) VAR="A different value for Linux" DEFAULT_JDK=/none #DEFAULT_JDK=/usr/local/java/jdk1.4/linux-i386 diff --git a/jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh b/jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh index 18ffc1c8d40..1977ca80275 100644 --- a/jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh +++ b/jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh @@ -92,6 +92,14 @@ case "$OS" in TMP="/tmp" ;; + AIX ) + VAR="A different value for AIX" + DEFAULT_JDK=/ + FILESEP="/" + PATHSEP=":" + TMP="/tmp" + ;; + Darwin ) VAR="A different value for MacOSX" DEFAULT_JDK=/usr diff --git a/jdk/test/javax/script/CommonSetup.sh b/jdk/test/javax/script/CommonSetup.sh index 69ed2379eda..7a64bd8c661 100644 --- a/jdk/test/javax/script/CommonSetup.sh +++ b/jdk/test/javax/script/CommonSetup.sh @@ -36,7 +36,7 @@ OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/javax/security/auth/Subject/doAs/Test.sh b/jdk/test/javax/security/auth/Subject/doAs/Test.sh index 73565211859..fac17d138c5 100644 --- a/jdk/test/javax/security/auth/Subject/doAs/Test.sh +++ b/jdk/test/javax/security/auth/Subject/doAs/Test.sh @@ -48,6 +48,11 @@ case "$OS" in FS="/" RM="/bin/rm -f" ;; + AIX ) + PS=":" + FS="/" + RM="/bin/rm -f" + ;; CYGWIN* ) PS=";" FS="/" diff --git a/jdk/test/lib/security/java.policy/Ext_AllPolicy.sh b/jdk/test/lib/security/java.policy/Ext_AllPolicy.sh index b562afa4323..fff2a3436fc 100644 --- a/jdk/test/lib/security/java.policy/Ext_AllPolicy.sh +++ b/jdk/test/lib/security/java.policy/Ext_AllPolicy.sh @@ -53,7 +53,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh b/jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh index 570631dc11e..aab8bbd9e88 100644 --- a/jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh +++ b/jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh @@ -42,7 +42,7 @@ if [[ $OS == CYGWIN_NT* ]] ; then fi case $OS in -SunOS | Linux | Darwin) +SunOS | Linux | Darwin | AIX ) PATHSEP=":" FILESEP="/" DFILESEP=$FILESEP diff --git a/jdk/test/sun/net/ftp/MarkResetTest.sh b/jdk/test/sun/net/ftp/MarkResetTest.sh index c998bcffef2..3878b505d90 100644 --- a/jdk/test/sun/net/ftp/MarkResetTest.sh +++ b/jdk/test/sun/net/ftp/MarkResetTest.sh @@ -28,7 +28,7 @@ OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/sun/net/www/http/HttpClient/RetryPost.sh b/jdk/test/sun/net/www/http/HttpClient/RetryPost.sh index 17d08cd30b0..c500171220c 100644 --- a/jdk/test/sun/net/www/http/HttpClient/RetryPost.sh +++ b/jdk/test/sun/net/www/http/HttpClient/RetryPost.sh @@ -28,7 +28,7 @@ OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/sun/net/www/protocol/jar/B5105410.sh b/jdk/test/sun/net/www/protocol/jar/B5105410.sh index f47ca5ed99d..aa31a53ebc2 100644 --- a/jdk/test/sun/net/www/protocol/jar/B5105410.sh +++ b/jdk/test/sun/net/www/protocol/jar/B5105410.sh @@ -31,7 +31,7 @@ OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/sun/net/www/protocol/jar/jarbug/run.sh b/jdk/test/sun/net/www/protocol/jar/jarbug/run.sh index 5f039b97c93..69632014bac 100644 --- a/jdk/test/sun/net/www/protocol/jar/jarbug/run.sh +++ b/jdk/test/sun/net/www/protocol/jar/jarbug/run.sh @@ -31,7 +31,7 @@ DEST=`pwd` OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/sun/rmi/rmic/newrmic/equivalence/batch.sh b/jdk/test/sun/rmi/rmic/newrmic/equivalence/batch.sh index 020202a1818..25913c63ea0 100644 --- a/jdk/test/sun/rmi/rmic/newrmic/equivalence/batch.sh +++ b/jdk/test/sun/rmi/rmic/newrmic/equivalence/batch.sh @@ -61,13 +61,13 @@ mkdir $newv11dir $newvcompatdir $newv12dir set -ex -${TESTJAVA}/bin/rmic -keep -nowrite -v1.1 -d $refv11dir -classpath "$@" -${TESTJAVA}/bin/rmic -keep -nowrite -vcompat -d $refvcompatdir -classpath "$@" -${TESTJAVA}/bin/rmic -keep -v1.2 -d $refv12dir -classpath "$@" +${TESTJAVA}/bin/rmic -keep -nowrite -v1.1 -d $refv11dir -classpath "$@" +${TESTJAVA}/bin/rmic -keep -nowrite -vcompat -d $refvcompatdir -classpath "$@" +${TESTJAVA}/bin/rmic -keep -nowrite -v1.2 -d $refv12dir -classpath "$@" -${TESTJAVA}/bin/rmic -Xnew -nowrite -keep -v1.1 -d $newv11dir -classpath "$@" -${TESTJAVA}/bin/rmic -Xnew -nowrite -keep -vcompat -d $newvcompatdir -classpath "$@" -${TESTJAVA}/bin/rmic -Xnew -keep -v1.2 -d $newv12dir -classpath "$@" +${TESTJAVA}/bin/rmic -Xnew -keep -nowrite -v1.1 -d $newv11dir -classpath "$@" +${TESTJAVA}/bin/rmic -Xnew -keep -nowrite -vcompat -d $newvcompatdir -classpath "$@" +${TESTJAVA}/bin/rmic -Xnew -keep -nowrite -v1.2 -d $newv12dir -classpath "$@" set +ex diff --git a/jdk/test/sun/security/krb5/runNameEquals.sh b/jdk/test/sun/security/krb5/runNameEquals.sh index 7ee81e505c6..f65e32ffd97 100644 --- a/jdk/test/sun/security/krb5/runNameEquals.sh +++ b/jdk/test/sun/security/krb5/runNameEquals.sh @@ -66,6 +66,10 @@ case "$OS" in fi fi ;; + AIX ) + PATHSEP=":" + FILESEP="/" + ;; CYGWIN* ) PATHSEP=";" FILESEP="/" diff --git a/jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh b/jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh index 30b245c81a0..7e93e184354 100644 --- a/jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh +++ b/jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.sh @@ -72,6 +72,12 @@ case "$OS" in CP="${FS}bin${FS}cp" CHMOD="${FS}bin${FS}chmod" ;; + AIX ) + FS="/" + PS=":" + CP="${FS}bin${FS}cp" + CHMOD="${FS}bin${FS}chmod" + ;; Windows* ) FS="\\" PS=";" diff --git a/jdk/test/sun/security/pkcs11/Provider/Login.sh b/jdk/test/sun/security/pkcs11/Provider/Login.sh index a1f6b132c9e..35f9ed562ea 100644 --- a/jdk/test/sun/security/pkcs11/Provider/Login.sh +++ b/jdk/test/sun/security/pkcs11/Provider/Login.sh @@ -73,6 +73,12 @@ case "$OS" in CP="${FS}bin${FS}cp" CHMOD="${FS}bin${FS}chmod" ;; + AIX ) + FS="/" + PS=":" + CP="${FS}bin${FS}cp" + CHMOD="${FS}bin${FS}chmod" + ;; Windows* ) FS="\\" PS=";" diff --git a/jdk/test/sun/security/provider/KeyStore/DKSTest.sh b/jdk/test/sun/security/provider/KeyStore/DKSTest.sh index b789e414140..99c7617dfa5 100644 --- a/jdk/test/sun/security/provider/KeyStore/DKSTest.sh +++ b/jdk/test/sun/security/provider/KeyStore/DKSTest.sh @@ -50,15 +50,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS ) - PS=":" - FS="/" - ;; - Linux ) - PS=":" - FS="/" - ;; - Darwin ) + SunOS | Linux | Darwin | AIX) PS=":" FS="/" ;; diff --git a/jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh b/jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh index 5775eab80b1..e2da96ea297 100644 --- a/jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh +++ b/jdk/test/sun/security/provider/PolicyFile/getinstance/getinstance.sh @@ -63,6 +63,10 @@ case "$OS" in PS=":" FS="/" ;; + AIX ) + PS=":" + FS="/" + ;; CYGWIN* ) PS=";" FS="/" diff --git a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh index 9b48bee7f3b..b0a824fc45e 100644 --- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh +++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.sh @@ -33,7 +33,7 @@ OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh index eff4930de4a..ee2381612d0 100644 --- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh +++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/NotifyHandshakeTest.sh @@ -46,7 +46,7 @@ fi OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) FILESEP="/" PATHSEP=":" ;; diff --git a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh index 4cdc5d4d1b7..1b7cf984e8b 100644 --- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxy.sh @@ -32,7 +32,7 @@ HOSTNAME=`uname -n` OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh index de7b039488c..fd24c76a475 100644 --- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh +++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/PostThruProxyWithAuth.sh @@ -32,7 +32,7 @@ HOSTNAME=`uname -n` OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PS=":" FS="/" ;; diff --git a/jdk/test/sun/security/tools/jarsigner/AlgOptions.sh b/jdk/test/sun/security/tools/jarsigner/AlgOptions.sh index b6f8c8b3ff2..9b16831d799 100644 --- a/jdk/test/sun/security/tools/jarsigner/AlgOptions.sh +++ b/jdk/test/sun/security/tools/jarsigner/AlgOptions.sh @@ -46,7 +46,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/security/tools/jarsigner/PercentSign.sh b/jdk/test/sun/security/tools/jarsigner/PercentSign.sh index 559c0533e73..38d9ece9bbc 100644 --- a/jdk/test/sun/security/tools/jarsigner/PercentSign.sh +++ b/jdk/test/sun/security/tools/jarsigner/PercentSign.sh @@ -46,7 +46,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/security/tools/jarsigner/diffend.sh b/jdk/test/sun/security/tools/jarsigner/diffend.sh index 0f943796af4..787b58680f3 100644 --- a/jdk/test/sun/security/tools/jarsigner/diffend.sh +++ b/jdk/test/sun/security/tools/jarsigner/diffend.sh @@ -41,7 +41,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/security/tools/jarsigner/oldsig.sh b/jdk/test/sun/security/tools/jarsigner/oldsig.sh index aae758cb937..062c2aa21d9 100644 --- a/jdk/test/sun/security/tools/jarsigner/oldsig.sh +++ b/jdk/test/sun/security/tools/jarsigner/oldsig.sh @@ -42,7 +42,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/security/tools/keytool/AltProviderPath.sh b/jdk/test/sun/security/tools/keytool/AltProviderPath.sh index 82bc65787ab..8fd67ef0e0a 100644 --- a/jdk/test/sun/security/tools/keytool/AltProviderPath.sh +++ b/jdk/test/sun/security/tools/keytool/AltProviderPath.sh @@ -46,7 +46,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh b/jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh index 0f9b82c84b8..62d1195a1ca 100644 --- a/jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh +++ b/jdk/test/sun/security/tools/keytool/CloneKeyAskPassword.sh @@ -59,6 +59,10 @@ case "$OS" in PATHSEP=":" FILESEP="/" ;; + AIX ) + PATHSEP=":" + FILESEP="/" + ;; CYGWIN* ) PATHSEP=";" FILESEP="/" diff --git a/jdk/test/sun/security/tools/keytool/NoExtNPE.sh b/jdk/test/sun/security/tools/keytool/NoExtNPE.sh index da63ed8ce3a..99b6ae51f36 100644 --- a/jdk/test/sun/security/tools/keytool/NoExtNPE.sh +++ b/jdk/test/sun/security/tools/keytool/NoExtNPE.sh @@ -51,6 +51,10 @@ case "$OS" in Darwin ) FILESEP="/" ;; + AIX ) + PATHSEP=":" + FILESEP="/" + ;; CYGWIN* ) FILESEP="/" ;; diff --git a/jdk/test/sun/security/tools/keytool/SecretKeyKS.sh b/jdk/test/sun/security/tools/keytool/SecretKeyKS.sh index 6246d2bdbb1..3323179daff 100644 --- a/jdk/test/sun/security/tools/keytool/SecretKeyKS.sh +++ b/jdk/test/sun/security/tools/keytool/SecretKeyKS.sh @@ -45,7 +45,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/security/tools/keytool/StandardAlgName.sh b/jdk/test/sun/security/tools/keytool/StandardAlgName.sh index 8ac1324bc11..c12348537e1 100644 --- a/jdk/test/sun/security/tools/keytool/StandardAlgName.sh +++ b/jdk/test/sun/security/tools/keytool/StandardAlgName.sh @@ -46,7 +46,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/security/tools/keytool/StorePasswordsByShell.sh b/jdk/test/sun/security/tools/keytool/StorePasswordsByShell.sh index 7347f345878..d3cd2ff92cb 100644 --- a/jdk/test/sun/security/tools/keytool/StorePasswordsByShell.sh +++ b/jdk/test/sun/security/tools/keytool/StorePasswordsByShell.sh @@ -46,15 +46,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS ) - PATHSEP=":" - FILESEP="/" - ;; - Linux ) - PATHSEP=":" - FILESEP="/" - ;; - Darwin ) + SunOS | Linux | Darwin | AIX) PATHSEP=":" FILESEP="/" ;; diff --git a/jdk/test/sun/security/tools/keytool/printssl.sh b/jdk/test/sun/security/tools/keytool/printssl.sh index 36ba9d09437..6ebdd3dad22 100644 --- a/jdk/test/sun/security/tools/keytool/printssl.sh +++ b/jdk/test/sun/security/tools/keytool/printssl.sh @@ -40,7 +40,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) FS="/" ;; CYGWIN* ) diff --git a/jdk/test/sun/security/tools/keytool/resource.sh b/jdk/test/sun/security/tools/keytool/resource.sh index 1256422144e..1e31ff2d241 100644 --- a/jdk/test/sun/security/tools/keytool/resource.sh +++ b/jdk/test/sun/security/tools/keytool/resource.sh @@ -43,7 +43,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null FS="/" ;; diff --git a/jdk/test/sun/security/tools/keytool/standard.sh b/jdk/test/sun/security/tools/keytool/standard.sh index 630aa41c46f..a42fbfda3cc 100644 --- a/jdk/test/sun/security/tools/keytool/standard.sh +++ b/jdk/test/sun/security/tools/keytool/standard.sh @@ -45,7 +45,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin | CYGWIN* ) + SunOS | Linux | Darwin | AIX | CYGWIN* ) FS="/" ;; Windows_* ) diff --git a/jdk/test/sun/security/tools/policytool/Alias.sh b/jdk/test/sun/security/tools/policytool/Alias.sh index ae1e4082004..c7c25899ce3 100644 --- a/jdk/test/sun/security/tools/policytool/Alias.sh +++ b/jdk/test/sun/security/tools/policytool/Alias.sh @@ -47,7 +47,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/security/tools/policytool/ChangeUI.sh b/jdk/test/sun/security/tools/policytool/ChangeUI.sh index 1b6a7984087..96077fa6beb 100644 --- a/jdk/test/sun/security/tools/policytool/ChangeUI.sh +++ b/jdk/test/sun/security/tools/policytool/ChangeUI.sh @@ -46,7 +46,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/security/tools/policytool/OpenPolicy.sh b/jdk/test/sun/security/tools/policytool/OpenPolicy.sh index 325b817c3d2..ada838ebda9 100644 --- a/jdk/test/sun/security/tools/policytool/OpenPolicy.sh +++ b/jdk/test/sun/security/tools/policytool/OpenPolicy.sh @@ -46,7 +46,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/security/tools/policytool/SaveAs.sh b/jdk/test/sun/security/tools/policytool/SaveAs.sh index af18ad96c21..1c16ecb426c 100644 --- a/jdk/test/sun/security/tools/policytool/SaveAs.sh +++ b/jdk/test/sun/security/tools/policytool/SaveAs.sh @@ -47,7 +47,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/security/tools/policytool/UpdatePermissions.sh b/jdk/test/sun/security/tools/policytool/UpdatePermissions.sh index 05978a38b57..70992074e2b 100644 --- a/jdk/test/sun/security/tools/policytool/UpdatePermissions.sh +++ b/jdk/test/sun/security/tools/policytool/UpdatePermissions.sh @@ -47,7 +47,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/security/tools/policytool/UsePolicy.sh b/jdk/test/sun/security/tools/policytool/UsePolicy.sh index c8412389a3b..a1e3d34c6c4 100644 --- a/jdk/test/sun/security/tools/policytool/UsePolicy.sh +++ b/jdk/test/sun/security/tools/policytool/UsePolicy.sh @@ -46,7 +46,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/security/tools/policytool/i18n.sh b/jdk/test/sun/security/tools/policytool/i18n.sh index 58b59e060b2..18ce68dda28 100644 --- a/jdk/test/sun/security/tools/policytool/i18n.sh +++ b/jdk/test/sun/security/tools/policytool/i18n.sh @@ -49,7 +49,7 @@ fi # set platform-dependent variables OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) NULL=/dev/null PS=":" FS="/" diff --git a/jdk/test/sun/tools/common/CommonSetup.sh b/jdk/test/sun/tools/common/CommonSetup.sh index db58377a668..f4401a7f6f2 100644 --- a/jdk/test/sun/tools/common/CommonSetup.sh +++ b/jdk/test/sun/tools/common/CommonSetup.sh @@ -48,6 +48,7 @@ # isSolaris - true if OS is Solaris # isWindows - true if OS is Windows # isMacos - true if OS is Macos X +# isAIX - true if OS is AIX if [ -z "${TESTJAVA}" ]; then @@ -83,6 +84,7 @@ isSolaris=false isUnknownOS=false isWindows=false isMacos=false +isAIX=false OS=`uname -s` @@ -113,6 +115,10 @@ case "$OS" in OS="Solaris" isSolaris=true ;; + AIX ) + OS="AIX" + isAIX=true + ;; Windows* ) OS="Windows" PATTERN_EOL='[ ]*$' diff --git a/jdk/test/sun/tools/jconsole/ResourceCheckTest.sh b/jdk/test/sun/tools/jconsole/ResourceCheckTest.sh index 01c2e4b6f01..b82b3ac387c 100644 --- a/jdk/test/sun/tools/jconsole/ResourceCheckTest.sh +++ b/jdk/test/sun/tools/jconsole/ResourceCheckTest.sh @@ -54,7 +54,7 @@ pass() OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin) + SunOS | Linux | Darwin | AIX) PATHSEP=":" ;; diff --git a/jdk/test/sun/tools/jinfo/Basic.sh b/jdk/test/sun/tools/jinfo/Basic.sh index e12bbb3ce33..5905c83d009 100644 --- a/jdk/test/sun/tools/jinfo/Basic.sh +++ b/jdk/test/sun/tools/jinfo/Basic.sh @@ -45,7 +45,7 @@ failed=0 runSA=true -if [ $isMacos = true ]; then +if [ $isMacos = true -o $isAIX = true -o `uname -m` = ppc64 ]; then runSA=false fi diff --git a/jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh b/jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh index fa312adad74..29c72ed6254 100644 --- a/jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh +++ b/jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.sh @@ -56,7 +56,7 @@ pass() OS=`uname -s` case "$OS" in - SunOS | Linux | Darwin ) + SunOS | Linux | Darwin | AIX ) PATHSEP=":" ;; diff --git a/jdk/test/tools/launcher/ExecutionEnvironment.java b/jdk/test/tools/launcher/ExecutionEnvironment.java index c3dc1abb9f6..85bd9692814 100644 --- a/jdk/test/tools/launcher/ExecutionEnvironment.java +++ b/jdk/test/tools/launcher/ExecutionEnvironment.java @@ -72,7 +72,9 @@ import java.util.regex.Pattern; public class ExecutionEnvironment extends TestHelper { static final String LD_LIBRARY_PATH = TestHelper.isMacOSX ? "DYLD_LIBRARY_PATH" - : "LD_LIBRARY_PATH"; + : TestHelper.isAIX + ? "LIBPATH" + : "LD_LIBRARY_PATH"; static final String LD_LIBRARY_PATH_32 = LD_LIBRARY_PATH + "_32"; static final String LD_LIBRARY_PATH_64 = LD_LIBRARY_PATH + "_64"; @@ -144,7 +146,19 @@ public class ExecutionEnvironment extends TestHelper { for (String x : LD_PATH_STRINGS) { if (!tr.contains(x)) { - flagError(tr, "FAIL: did not get <" + x + ">"); + if (TestHelper.isAIX && x.startsWith(LD_LIBRARY_PATH)) { + // AIX does not support the '-rpath' linker options so the + // launchers have to prepend the jdk library path to 'LIBPATH'. + String aixLibPath = LD_LIBRARY_PATH + "=" + + System.getenv(LD_LIBRARY_PATH) + + System.getProperty("path.separator") + LD_LIBRARY_PATH_VALUE; + if (!tr.matches(aixLibPath)) { + flagError(tr, "FAIL: did not get <" + aixLibPath + ">"); + } + } + else { + flagError(tr, "FAIL: did not get <" + x + ">"); + } } } } @@ -180,7 +194,7 @@ public class ExecutionEnvironment extends TestHelper { Map env = new HashMap<>(); - if (TestHelper.isLinux || TestHelper.isMacOSX) { + if (TestHelper.isLinux || TestHelper.isMacOSX || TestHelper.isAIX) { for (String x : LD_PATH_STRINGS) { String pairs[] = x.split("="); env.put(pairs[0], pairs[1]); diff --git a/jdk/test/tools/launcher/Settings.java b/jdk/test/tools/launcher/Settings.java index 57a9ca64447..16fd29b0b16 100644 --- a/jdk/test/tools/launcher/Settings.java +++ b/jdk/test/tools/launcher/Settings.java @@ -73,16 +73,20 @@ public class Settings extends TestHelper { } static void runTestOptionDefault() throws IOException { + String stackSize = "256"; // in kb + if (getArch().equals("ppc64")) { + stackSize = "800"; + } TestResult tr = null; tr = doExec(javaCmd, "-Xms64m", "-Xmx512m", - "-Xss256k", "-XshowSettings", "-jar", testJar.getAbsolutePath()); + "-Xss" + stackSize + "k", "-XshowSettings", "-jar", testJar.getAbsolutePath()); containsAllOptions(tr); if (!tr.isOK()) { System.out.println(tr.status); throw new RuntimeException("test fails"); } tr = doExec(javaCmd, "-Xms65536k", "-Xmx712m", - "-Xss256000", "-XshowSettings", "-jar", testJar.getAbsolutePath()); + "-Xss" + stackSize + "000", "-XshowSettings", "-jar", testJar.getAbsolutePath()); containsAllOptions(tr); if (!tr.isOK()) { System.out.println(tr.status); diff --git a/jdk/test/tools/launcher/TestHelper.java b/jdk/test/tools/launcher/TestHelper.java index da23181a3f6..40737320d52 100644 --- a/jdk/test/tools/launcher/TestHelper.java +++ b/jdk/test/tools/launcher/TestHelper.java @@ -92,6 +92,8 @@ public class TestHelper { System.getProperty("os.name", "unknown").startsWith("SunOS"); static final boolean isLinux = System.getProperty("os.name", "unknown").startsWith("Linux"); + static final boolean isAIX = + System.getProperty("os.name", "unknown").startsWith("AIX"); static final String LIBJVM = isWindows ? "jvm.dll" : "libjvm" + (isMacOSX ? ".dylib" : ".so"); From 2275de8d6bee2e078aa56f729ccc405fbea6240d Mon Sep 17 00:00:00 2001 From: Igor Veresov Date: Fri, 17 Jan 2014 18:09:08 -0800 Subject: [PATCH 046/158] 8032207: C2: assert(VerifyOops || MachNode::size(ra_) <= (3+1)*4) failed: bad fixed size Fix the sizing of loadUS2L_immI16 and loadI2L_immI Reviewed-by: kvn, azeemj --- hotspot/src/cpu/sparc/vm/sparc.ad | 2 - .../test/compiler/codegen/LoadWithMask.java | 44 +++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 hotspot/test/compiler/codegen/LoadWithMask.java diff --git a/hotspot/src/cpu/sparc/vm/sparc.ad b/hotspot/src/cpu/sparc/vm/sparc.ad index 938993b4285..885d4a4ffe4 100644 --- a/hotspot/src/cpu/sparc/vm/sparc.ad +++ b/hotspot/src/cpu/sparc/vm/sparc.ad @@ -5726,7 +5726,6 @@ instruct loadUS2L_immI16(iRegL dst, memory mem, immI16 mask, iRegL tmp) %{ effect(TEMP dst, TEMP tmp); ins_cost(MEMORY_REF_COST + 2*DEFAULT_COST); - size((3+1)*4); // set may use two instructions. format %{ "LDUH $mem,$dst\t! ushort/char & 16-bit mask -> long\n\t" "SET $mask,$tmp\n\t" "AND $dst,$tmp,$dst" %} @@ -5870,7 +5869,6 @@ instruct loadI2L_immI(iRegL dst, memory mem, immI mask, iRegL tmp) %{ effect(TEMP dst, TEMP tmp); ins_cost(MEMORY_REF_COST + 2*DEFAULT_COST); - size((3+1)*4); // set may use two instructions. format %{ "LDUW $mem,$dst\t! int & 32-bit mask -> long\n\t" "SET $mask,$tmp\n\t" "AND $dst,$tmp,$dst" %} diff --git a/hotspot/test/compiler/codegen/LoadWithMask.java b/hotspot/test/compiler/codegen/LoadWithMask.java new file mode 100644 index 00000000000..13ec4e58f8f --- /dev/null +++ b/hotspot/test/compiler/codegen/LoadWithMask.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8032207 + * @summary Invalid node sizing for loadUS2L_immI16 and loadI2L_immI + * @run main/othervm -server -Xbatch -XX:-TieredCompilation -XX:CompileCommand=compileonly,LoadWithMask.foo LoadWithMask + * + */ +public class LoadWithMask { + static int x[] = new int[1]; + static long foo() { + return x[0] & 0xfff0ffff; + } + + public static void main(String[] args) { + x[0] = -1; + long l = 0; + for (int i = 0; i < 100000; ++i) { + l = foo(); + } + } +} From f10a91610fc25c80f9d607ee66109683b57cd0f0 Mon Sep 17 00:00:00 2001 From: Volker Simonis Date: Mon, 20 Jan 2014 09:20:13 +0100 Subject: [PATCH 047/158] 8031134: PPC64: implement printing on AIX Reviewed-by: prr --- .../classes/sun/print/UnixPrintService.java | 78 ++++++++++++++++++ .../sun/print/UnixPrintServiceLookup.java | 81 ++++++++++++++++++- 2 files changed, 158 insertions(+), 1 deletion(-) diff --git a/jdk/src/solaris/classes/sun/print/UnixPrintService.java b/jdk/src/solaris/classes/sun/print/UnixPrintService.java index 30b8dd03082..bb9a6dfce58 100644 --- a/jdk/src/solaris/classes/sun/print/UnixPrintService.java +++ b/jdk/src/solaris/classes/sun/print/UnixPrintService.java @@ -28,6 +28,7 @@ package sun.print; import java.io.File; import java.net.URI; import java.net.URISyntaxException; +import java.util.ArrayList; import java.util.Locale; import javax.print.DocFlavor; @@ -273,11 +274,58 @@ public class UnixPrintService implements PrintService, AttributeUpdater, return PrinterIsAcceptingJobs.NOT_ACCEPTING_JOBS ; } + // Filter the list of possible AIX Printers and remove header lines + // and extra lines which have been added for remote printers. + // 'protected' because this method is also used from UnixPrintServiceLookup. + protected static String[] filterPrinterNamesAIX(String[] posPrinters) { + ArrayList printers = new ArrayList(); + String [] splitPart; + + for(int i = 0; i < posPrinters.length; i++) { + // Remove the header lines + if (posPrinters[i].startsWith("---") || + posPrinters[i].startsWith("Queue") || + posPrinters[i].equals("")) continue; + + // Check if there is a ":" in the end of the first colomn. + // This means that it is not a valid printer definition. + splitPart = posPrinters[i].split(" "); + if(splitPart.length >= 1 && !splitPart[0].trim().endsWith(":")) { + printers.add(posPrinters[i]); + } + } + + return (String[])printers.toArray(new String[printers.size()]); + } + + private PrinterIsAcceptingJobs getPrinterIsAcceptingJobsAIX() { + // On AIX there should not be a blank after '-a'. + String command = "/usr/bin/lpstat -a" + printer; + String results[]= UnixPrintServiceLookup.execCmd(command); + + // Remove headers and bogus entries added by remote printers. + results = filterPrinterNamesAIX(results); + + if (results != null && results.length > 0) { + for (int i = 0; i < results.length; i++) { + if (results[i].contains("READY") || + results[i].contains("RUNNING")) { + return PrinterIsAcceptingJobs.ACCEPTING_JOBS; + } + } + } + + return PrinterIsAcceptingJobs.NOT_ACCEPTING_JOBS; + + } + private PrinterIsAcceptingJobs getPrinterIsAcceptingJobs() { if (UnixPrintServiceLookup.isSysV()) { return getPrinterIsAcceptingJobsSysV(); } else if (UnixPrintServiceLookup.isBSD()) { return getPrinterIsAcceptingJobsBSD(); + } else if (UnixPrintServiceLookup.isAIX()) { + return getPrinterIsAcceptingJobsAIX(); } else { return PrinterIsAcceptingJobs.ACCEPTING_JOBS; } @@ -345,11 +393,32 @@ public class UnixPrintService implements PrintService, AttributeUpdater, return new QueuedJobCount(qlen); } + private QueuedJobCount getQueuedJobCountAIX() { + // On AIX there should not be a blank after '-a'. + String command = "/usr/bin/lpstat -a" + printer; + String results[]= UnixPrintServiceLookup.execCmd(command); + + // Remove headers and bogus entries added by remote printers. + results = filterPrinterNamesAIX(results); + + int qlen = 0; + if (results != null && results.length > 0){ + for (int i = 0; i < results.length; i++) { + if (results[i].contains("QUEUED")){ + qlen ++; + } + } + } + return new QueuedJobCount(qlen); + } + private QueuedJobCount getQueuedJobCount() { if (UnixPrintServiceLookup.isSysV()) { return getQueuedJobCountSysV(); } else if (UnixPrintServiceLookup.isBSD()) { return getQueuedJobCountBSD(); + } else if (UnixPrintServiceLookup.isAIX()) { + return getQueuedJobCountAIX(); } else { return new QueuedJobCount(0); } @@ -369,6 +438,13 @@ public class UnixPrintService implements PrintService, AttributeUpdater, return attrs; } + private PrintServiceAttributeSet getAIXServiceAttributes() { + PrintServiceAttributeSet attrs = new HashPrintServiceAttributeSet(); + attrs.add(getQueuedJobCountAIX()); + attrs.add(getPrinterIsAcceptingJobsAIX()); + return attrs; + } + private boolean isSupportedCopies(Copies copies) { int numCopies = copies.getValue(); return (numCopies > 0 && numCopies < MAXCOPIES); @@ -394,6 +470,8 @@ public class UnixPrintService implements PrintService, AttributeUpdater, private PrintServiceAttributeSet getDynamicAttributes() { if (UnixPrintServiceLookup.isSysV()) { return getSysVServiceAttributes(); + } else if (UnixPrintServiceLookup.isAIX()) { + return getAIXServiceAttributes(); } else { return getBSDServiceAttributes(); } diff --git a/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java b/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java index fb6950b7d0d..13749463cd8 100644 --- a/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java +++ b/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java @@ -78,6 +78,19 @@ public class UnixPrintServiceLookup extends PrintServiceLookup static String osname; + // List of commands used to deal with the printer queues on AIX + String[] lpNameComAix = { + "/usr/bin/lsallq", + "/usr/bin/lpstat -W -p|/usr/bin/expand|/usr/bin/cut -f1 -d' '", + "/usr/bin/lpstat -W -d|/usr/bin/expand|/usr/bin/cut -f1 -d' '", + "/usr/bin/lpstat -W -v" + }; + private static final int aix_lsallq = 0; + private static final int aix_lpstat_p = 1; + private static final int aix_lpstat_d = 2; + private static final int aix_lpstat_v = 3; + private static int aix_defaultPrinterEnumeration = aix_lsallq; + static { /* The system property "sun.java2d.print.polling" * can be used to force the printing code to poll or not poll @@ -114,6 +127,24 @@ public class UnixPrintServiceLookup extends PrintServiceLookup osname = java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction("os.name")); + + /* The system property "sun.java2d.print.aix.lpstat" + * can be used to force the usage of 'lpstat -p' to enumerate all + * printer queues. By default we use 'lsallq', because 'lpstat -p' can + * take lots of time if thousands of printers are attached to a server. + */ + if (isAIX()) { + String aixPrinterEnumerator = java.security.AccessController.doPrivileged( + new sun.security.action.GetPropertyAction("sun.java2d.print.aix.lpstat")); + + if (aixPrinterEnumerator != null) { + if (aixPrinterEnumerator.equalsIgnoreCase("lpstat")) { + aix_defaultPrinterEnumeration = aix_lpstat_p; + } else if (aixPrinterEnumerator.equalsIgnoreCase("lsallq")) { + aix_defaultPrinterEnumeration = aix_lsallq; + } + } + } } static boolean isMac() { @@ -133,6 +164,10 @@ public class UnixPrintServiceLookup extends PrintServiceLookup osname.contains("OS X")); } + static boolean isAIX() { + return osname.equals("AIX"); + } + static final int UNINITIALIZED = -1; static final int BSD_LPD = 0; static final int BSD_LPD_NG = 1; @@ -251,6 +286,8 @@ public class UnixPrintServiceLookup extends PrintServiceLookup } else { if (isMac() || isSysV()) { printers = getAllPrinterNamesSysV(); + } else if (isAIX()) { + printers = getAllPrinterNamesAIX(); } else { //BSD printers = getAllPrinterNamesBSD(); } @@ -435,6 +472,8 @@ public class UnixPrintServiceLookup extends PrintServiceLookup PrintService printer = null; if (isMac() || isSysV()) { printer = getNamedPrinterNameSysV(name); + } else if (isAIX()) { + printer = getNamedPrinterNameAIX(name); } else { printer = getNamedPrinterNameBSD(name); } @@ -600,6 +639,8 @@ public class UnixPrintServiceLookup extends PrintServiceLookup } else { if (isMac() || isSysV()) { defaultPrinter = getDefaultPrinterNameSysV(); + } else if (isAIX()) { + defaultPrinter = getDefaultPrinterNameAIX(); } else { defaultPrinter = getDefaultPrinterNameBSD(); } @@ -774,11 +815,49 @@ public class UnixPrintServiceLookup extends PrintServiceLookup return (String[])printerNames.toArray(new String[printerNames.size()]); } + private String getDefaultPrinterNameAIX() { + String[] names = execCmd(lpNameComAix[aix_lpstat_d]); + // Remove headers and bogus entries added by remote printers. + names = UnixPrintService.filterPrinterNamesAIX(names); + if (names == null || names.length != 1) { + // No default printer found + return null; + } else { + return names[0]; + } + } + + private PrintService getNamedPrinterNameAIX(String name) { + // On AIX there should be no blank after '-v'. + String[] result = execCmd(lpNameComAix[aix_lpstat_v] + name); + // Remove headers and bogus entries added by remote printers. + result = UnixPrintService.filterPrinterNamesAIX(result); + if (result == null || result.length != 1) { + return null; + } else { + return new UnixPrintService(name); + } + } + + private String[] getAllPrinterNamesAIX() { + // Determine all printers of the system. + String [] names = execCmd(lpNameComAix[aix_defaultPrinterEnumeration]); + + // Remove headers and bogus entries added by remote printers. + names = UnixPrintService.filterPrinterNamesAIX(names); + + ArrayList printerNames = new ArrayList(); + for ( int i=0; i < names.length; i++) { + printerNames.add(names[i]); + } + return (String[])printerNames.toArray(new String[printerNames.size()]); + } + static String[] execCmd(final String command) { ArrayList results = null; try { final String[] cmd = new String[3]; - if (isSysV()) { + if (isSysV() || isAIX()) { cmd[0] = "/usr/bin/sh"; cmd[1] = "-c"; cmd[2] = "env LC_ALL=C " + command; From 417236721a165fe63435410225ad2442cb9217f5 Mon Sep 17 00:00:00 2001 From: Volker Simonis Date: Mon, 20 Jan 2014 09:24:25 +0100 Subject: [PATCH 048/158] 8031997: PPC64: Make the various POLL constants system dependant Reviewed-by: alanb --- jdk/make/mapfiles/libnio/mapfile-linux | 6 +++ jdk/make/mapfiles/libnio/mapfile-macosx | 6 +++ jdk/make/mapfiles/libnio/mapfile-solaris | 6 +++ .../aix/classes/sun/nio/ch/AixPollPort.java | 8 ++-- .../sun/nio/ch/KQueueArrayWrapper.java | 10 ++-- .../sun/nio/ch/AbstractPollArrayWrapper.java | 8 ---- .../sun/nio/ch/DatagramChannelImpl.java | 15 +++--- .../sun/nio/ch/DatagramSocketAdaptor.java | 4 +- jdk/src/share/classes/sun/nio/ch/Net.java | 25 ++++++++++ .../sun/nio/ch/ServerSocketAdaptor.java | 2 +- .../sun/nio/ch/ServerSocketChannelImpl.java | 9 ++-- .../classes/sun/nio/ch/SocketAdaptor.java | 4 +- .../classes/sun/nio/ch/SocketChannelImpl.java | 17 ++++--- .../solaris/classes/sun/nio/ch/EPollPort.java | 2 +- .../classes/sun/nio/ch/KQueuePort.java | 8 ++-- .../classes/sun/nio/ch/PollArrayWrapper.java | 4 +- jdk/src/solaris/classes/sun/nio/ch/Port.java | 4 -- .../classes/sun/nio/ch/SinkChannelImpl.java | 9 ++-- .../classes/sun/nio/ch/SourceChannelImpl.java | 9 ++-- ...ixAsynchronousServerSocketChannelImpl.java | 4 +- .../ch/UnixAsynchronousSocketChannelImpl.java | 10 ++-- .../sun/nio/ch/sctp/SctpChannelImpl.java | 17 ++++--- .../sun/nio/ch/sctp/SctpMultiChannelImpl.java | 13 +++-- .../nio/ch/sctp/SctpServerChannelImpl.java | 9 ++-- jdk/src/solaris/native/sun/nio/ch/IOUtil.c | 1 - jdk/src/solaris/native/sun/nio/ch/Net.c | 37 ++++++++++++++ .../classes/sun/nio/ch/PollArrayWrapper.java | 11 +---- .../classes/sun/nio/ch/SinkChannelImpl.java | 9 ++-- .../classes/sun/nio/ch/SourceChannelImpl.java | 9 ++-- .../sun/nio/ch/WindowsSelectorImpl.java | 12 ++--- jdk/src/windows/native/sun/nio/ch/Net.c | 48 ++++++++++++++++--- .../native/sun/nio/ch/WindowsSelectorImpl.c | 14 +++--- jdk/src/windows/native/sun/nio/ch/nio_util.h | 18 +++++++ 33 files changed, 232 insertions(+), 136 deletions(-) diff --git a/jdk/make/mapfiles/libnio/mapfile-linux b/jdk/make/mapfiles/libnio/mapfile-linux index e85bafae76d..8e05a44229f 100644 --- a/jdk/make/mapfiles/libnio/mapfile-linux +++ b/jdk/make/mapfiles/libnio/mapfile-linux @@ -117,6 +117,12 @@ SUNWprivate_1.1 { Java_sun_nio_ch_Net_getInterface6; Java_sun_nio_ch_Net_shutdown; Java_sun_nio_ch_Net_poll; + Java_sun_nio_ch_Net_pollinValue; + Java_sun_nio_ch_Net_polloutValue; + Java_sun_nio_ch_Net_pollerrValue; + Java_sun_nio_ch_Net_pollhupValue; + Java_sun_nio_ch_Net_pollnvalValue; + Java_sun_nio_ch_Net_pollconnValue; Java_sun_nio_ch_Net_isExclusiveBindAvailable; Java_sun_nio_ch_PollArrayWrapper_interrupt; Java_sun_nio_ch_PollArrayWrapper_poll0; diff --git a/jdk/make/mapfiles/libnio/mapfile-macosx b/jdk/make/mapfiles/libnio/mapfile-macosx index e5a92d93f18..906ef517741 100644 --- a/jdk/make/mapfiles/libnio/mapfile-macosx +++ b/jdk/make/mapfiles/libnio/mapfile-macosx @@ -109,6 +109,12 @@ SUNWprivate_1.1 { Java_sun_nio_ch_Net_getInterface6; Java_sun_nio_ch_Net_shutdown; Java_sun_nio_ch_Net_poll; + Java_sun_nio_ch_Net_pollinValue; + Java_sun_nio_ch_Net_polloutValue; + Java_sun_nio_ch_Net_pollerrValue; + Java_sun_nio_ch_Net_pollhupValue; + Java_sun_nio_ch_Net_pollnvalValue; + Java_sun_nio_ch_Net_pollconnValue; Java_sun_nio_ch_Net_isExclusiveBindAvailable; Java_sun_nio_ch_PollArrayWrapper_interrupt; Java_sun_nio_ch_PollArrayWrapper_poll0; diff --git a/jdk/make/mapfiles/libnio/mapfile-solaris b/jdk/make/mapfiles/libnio/mapfile-solaris index 3a610edd9e7..c610ce7dadc 100644 --- a/jdk/make/mapfiles/libnio/mapfile-solaris +++ b/jdk/make/mapfiles/libnio/mapfile-solaris @@ -105,6 +105,12 @@ SUNWprivate_1.1 { Java_sun_nio_ch_Net_getInterface6; Java_sun_nio_ch_Net_shutdown; Java_sun_nio_ch_Net_poll; + Java_sun_nio_ch_Net_pollinValue; + Java_sun_nio_ch_Net_polloutValue; + Java_sun_nio_ch_Net_pollerrValue; + Java_sun_nio_ch_Net_pollhupValue; + Java_sun_nio_ch_Net_pollnvalValue; + Java_sun_nio_ch_Net_pollconnValue; Java_sun_nio_ch_Net_isExclusiveBindAvailable; Java_sun_nio_ch_PollArrayWrapper_interrupt; Java_sun_nio_ch_PollArrayWrapper_poll0; diff --git a/jdk/src/aix/classes/sun/nio/ch/AixPollPort.java b/jdk/src/aix/classes/sun/nio/ch/AixPollPort.java index 82c101434df..2db99a77b3e 100644 --- a/jdk/src/aix/classes/sun/nio/ch/AixPollPort.java +++ b/jdk/src/aix/classes/sun/nio/ch/AixPollPort.java @@ -148,7 +148,7 @@ final class AixPollPort try { socketpair(sv); // register one end with pollset - pollsetCtl(pollset, PS_ADD, sv[0], POLLIN); + pollsetCtl(pollset, PS_ADD, sv[0], Net.POLLIN); } catch (IOException x) { pollsetDestroy(pollset); throw x; @@ -160,7 +160,7 @@ final class AixPollPort try { socketpair(sv); // register one end with pollset - pollsetCtl(pollset, PS_ADD, sv[0], POLLIN); + pollsetCtl(pollset, PS_ADD, sv[0], Net.POLLIN); } catch (IOException x) { pollsetDestroy(pollset); throw x; @@ -353,7 +353,7 @@ final class AixPollPort // This is the only file descriptor without // one shot semantic => register it again. - pollsetCtl(pollset, PS_ADD, sp[0], POLLIN); + pollsetCtl(pollset, PS_ADD, sp[0], Net.POLLIN); // queue special event if there are more events // to handle. @@ -370,7 +370,7 @@ final class AixPollPort drain1(ctlSp[0]); // This file descriptor does not have // one shot semantic => register it again. - pollsetCtl(pollset, PS_ADD, ctlSp[0], POLLIN); + pollsetCtl(pollset, PS_ADD, ctlSp[0], Net.POLLIN); processControlQueue(); } continue; diff --git a/jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java b/jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java index 5c82006000c..66e16e24ab7 100644 --- a/jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java +++ b/jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java @@ -53,10 +53,6 @@ import java.util.LinkedList; */ class KQueueArrayWrapper { - // Event masks - static final short POLLIN = AbstractPollArrayWrapper.POLLIN; - static final short POLLOUT = AbstractPollArrayWrapper.POLLOUT; - // kevent filters static short EVFILT_READ; static short EVFILT_WRITE; @@ -129,9 +125,9 @@ class KQueueArrayWrapper { // SinkChannelImpl, SourceChannelImpl, DatagramChannelImpl, // ServerSocketChannelImpl, SocketChannelImpl if (filter == EVFILT_READ) { - result |= POLLIN; + result |= Net.POLLIN; } else if (filter == EVFILT_WRITE) { - result |= POLLOUT; + result |= Net.POLLOUT; } return result; @@ -180,7 +176,7 @@ class KQueueArrayWrapper { if (!ch.isOpen()) continue; - register0(kq, ch.getFDVal(), u.events & POLLIN, u.events & POLLOUT); + register0(kq, ch.getFDVal(), u.events & Net.POLLIN, u.events & Net.POLLOUT); } } } diff --git a/jdk/src/share/classes/sun/nio/ch/AbstractPollArrayWrapper.java b/jdk/src/share/classes/sun/nio/ch/AbstractPollArrayWrapper.java index 32a8a8b93b5..0f1c594fd7f 100644 --- a/jdk/src/share/classes/sun/nio/ch/AbstractPollArrayWrapper.java +++ b/jdk/src/share/classes/sun/nio/ch/AbstractPollArrayWrapper.java @@ -37,14 +37,6 @@ import sun.misc.*; public abstract class AbstractPollArrayWrapper { - // Event masks - public static final short POLLIN = 0x0001; - public static final short POLLOUT = 0x0004; - public static final short POLLERR = 0x0008; - public static final short POLLHUP = 0x0010; - public static final short POLLNVAL = 0x0020; - public static final short POLLREMOVE = 0x0800; - // Miscellaneous constants static final short SIZE_POLLFD = 8; static final short FD_OFFSET = 0; diff --git a/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java b/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java index 2cda6fa1527..c151afe570b 100644 --- a/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java +++ b/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java @@ -1042,25 +1042,24 @@ class DatagramChannelImpl int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) { + if ((ops & Net.POLLNVAL) != 0) { // This should only happen if this channel is pre-closed while a // selection operation is in progress // ## Throw an error if this channel has not been pre-closed return false; } - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_READ) != 0)) newOps |= SelectionKey.OP_READ; - if (((ops & PollArrayWrapper.POLLOUT) != 0) && + if (((ops & Net.POLLOUT) != 0) && ((intOps & SelectionKey.OP_WRITE) != 0)) newOps |= SelectionKey.OP_WRITE; @@ -1105,11 +1104,11 @@ class DatagramChannelImpl int newOps = 0; if ((ops & SelectionKey.OP_READ) != 0) - newOps |= PollArrayWrapper.POLLIN; + newOps |= Net.POLLIN; if ((ops & SelectionKey.OP_WRITE) != 0) - newOps |= PollArrayWrapper.POLLOUT; + newOps |= Net.POLLOUT; if ((ops & SelectionKey.OP_CONNECT) != 0) - newOps |= PollArrayWrapper.POLLIN; + newOps |= Net.POLLIN; sk.selector.putEventOps(sk, newOps); } diff --git a/jdk/src/share/classes/sun/nio/ch/DatagramSocketAdaptor.java b/jdk/src/share/classes/sun/nio/ch/DatagramSocketAdaptor.java index 15e1a0ebde9..fe2ed230002 100644 --- a/jdk/src/share/classes/sun/nio/ch/DatagramSocketAdaptor.java +++ b/jdk/src/share/classes/sun/nio/ch/DatagramSocketAdaptor.java @@ -187,9 +187,9 @@ public class DatagramSocketAdaptor if (!dc.isOpen()) throw new ClosedChannelException(); long st = System.currentTimeMillis(); - int result = dc.poll(PollArrayWrapper.POLLIN, to); + int result = dc.poll(Net.POLLIN, to); if (result > 0 && - ((result & PollArrayWrapper.POLLIN) != 0)) { + ((result & Net.POLLIN) != 0)) { if ((sender = dc.receive(bb)) != null) return sender; } diff --git a/jdk/src/share/classes/sun/nio/ch/Net.java b/jdk/src/share/classes/sun/nio/ch/Net.java index 2e2640290c6..a25111c056e 100644 --- a/jdk/src/share/classes/sun/nio/ch/Net.java +++ b/jdk/src/share/classes/sun/nio/ch/Net.java @@ -581,9 +581,34 @@ public class Net { private static native void initIDs(); + /** + * Event masks for the various poll system calls. + * They will be set platform dependant in the static initializer below. + */ + public static final short POLLIN; + public static final short POLLOUT; + public static final short POLLERR; + public static final short POLLHUP; + public static final short POLLNVAL; + public static final short POLLCONN; + + static native short pollinValue(); + static native short polloutValue(); + static native short pollerrValue(); + static native short pollhupValue(); + static native short pollnvalValue(); + static native short pollconnValue(); + static { IOUtil.load(); initIDs(); + + POLLIN = pollinValue(); + POLLOUT = polloutValue(); + POLLERR = pollerrValue(); + POLLHUP = pollhupValue(); + POLLNVAL = pollnvalValue(); + POLLCONN = pollconnValue(); } } diff --git a/jdk/src/share/classes/sun/nio/ch/ServerSocketAdaptor.java b/jdk/src/share/classes/sun/nio/ch/ServerSocketAdaptor.java index 776592db412..d6f2bcd5bd6 100644 --- a/jdk/src/share/classes/sun/nio/ch/ServerSocketAdaptor.java +++ b/jdk/src/share/classes/sun/nio/ch/ServerSocketAdaptor.java @@ -113,7 +113,7 @@ public class ServerSocketAdaptor // package-private if (!ssc.isOpen()) throw new ClosedChannelException(); long st = System.currentTimeMillis(); - int result = ssc.poll(PollArrayWrapper.POLLIN, to); + int result = ssc.poll(Net.POLLIN, to); if (result > 0 && ((sc = ssc.accept()) != null)) return sc.socket(); to -= System.currentTimeMillis() - st; diff --git a/jdk/src/share/classes/sun/nio/ch/ServerSocketChannelImpl.java b/jdk/src/share/classes/sun/nio/ch/ServerSocketChannelImpl.java index 8429442356a..dc15547a225 100644 --- a/jdk/src/share/classes/sun/nio/ch/ServerSocketChannelImpl.java +++ b/jdk/src/share/classes/sun/nio/ch/ServerSocketChannelImpl.java @@ -309,21 +309,20 @@ class ServerSocketChannelImpl int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) { + if ((ops & Net.POLLNVAL) != 0) { // This should only happen if this channel is pre-closed while a // selection operation is in progress // ## Throw an error if this channel has not been pre-closed return false; } - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_ACCEPT) != 0)) newOps |= SelectionKey.OP_ACCEPT; @@ -369,7 +368,7 @@ class ServerSocketChannelImpl // Translate ops if ((ops & SelectionKey.OP_ACCEPT) != 0) - newOps |= PollArrayWrapper.POLLIN; + newOps |= Net.POLLIN; // Place ops into pollfd array sk.selector.putEventOps(sk, newOps); } diff --git a/jdk/src/share/classes/sun/nio/ch/SocketAdaptor.java b/jdk/src/share/classes/sun/nio/ch/SocketAdaptor.java index 2fd00ca2222..9ca284e54e8 100644 --- a/jdk/src/share/classes/sun/nio/ch/SocketAdaptor.java +++ b/jdk/src/share/classes/sun/nio/ch/SocketAdaptor.java @@ -107,7 +107,7 @@ public class SocketAdaptor throw new ClosedChannelException(); long st = System.currentTimeMillis(); - int result = sc.poll(PollArrayWrapper.POLLCONN, to); + int result = sc.poll(Net.POLLCONN, to); if (result > 0 && sc.finishConnect()) break; to -= System.currentTimeMillis() - st; @@ -201,7 +201,7 @@ public class SocketAdaptor if (!sc.isOpen()) throw new ClosedChannelException(); long st = System.currentTimeMillis(); - int result = sc.poll(PollArrayWrapper.POLLIN, to); + int result = sc.poll(Net.POLLIN, to); if (result > 0) { if ((n = sc.read(bb)) != 0) return n; diff --git a/jdk/src/share/classes/sun/nio/ch/SocketChannelImpl.java b/jdk/src/share/classes/sun/nio/ch/SocketChannelImpl.java index 806168392e9..d0fccb701be 100644 --- a/jdk/src/share/classes/sun/nio/ch/SocketChannelImpl.java +++ b/jdk/src/share/classes/sun/nio/ch/SocketChannelImpl.java @@ -884,15 +884,14 @@ class SocketChannelImpl int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) { + if ((ops & Net.POLLNVAL) != 0) { // This should only happen if this channel is pre-closed while a // selection operation is in progress // ## Throw an error if this channel has not been pre-closed return false; } - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); // No need to poll again in checkConnect, @@ -901,19 +900,19 @@ class SocketChannelImpl return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_READ) != 0) && (state == ST_CONNECTED)) newOps |= SelectionKey.OP_READ; - if (((ops & PollArrayWrapper.POLLCONN) != 0) && + if (((ops & Net.POLLCONN) != 0) && ((intOps & SelectionKey.OP_CONNECT) != 0) && ((state == ST_UNCONNECTED) || (state == ST_PENDING))) { newOps |= SelectionKey.OP_CONNECT; readyToConnect = true; } - if (((ops & PollArrayWrapper.POLLOUT) != 0) && + if (((ops & Net.POLLOUT) != 0) && ((intOps & SelectionKey.OP_WRITE) != 0) && (state == ST_CONNECTED)) newOps |= SelectionKey.OP_WRITE; @@ -958,11 +957,11 @@ class SocketChannelImpl public void translateAndSetInterestOps(int ops, SelectionKeyImpl sk) { int newOps = 0; if ((ops & SelectionKey.OP_READ) != 0) - newOps |= PollArrayWrapper.POLLIN; + newOps |= Net.POLLIN; if ((ops & SelectionKey.OP_WRITE) != 0) - newOps |= PollArrayWrapper.POLLOUT; + newOps |= Net.POLLOUT; if ((ops & SelectionKey.OP_CONNECT) != 0) - newOps |= PollArrayWrapper.POLLCONN; + newOps |= Net.POLLCONN; sk.selector.putEventOps(sk, newOps); } diff --git a/jdk/src/solaris/classes/sun/nio/ch/EPollPort.java b/jdk/src/solaris/classes/sun/nio/ch/EPollPort.java index 17cd171bc80..4238984c8d2 100644 --- a/jdk/src/solaris/classes/sun/nio/ch/EPollPort.java +++ b/jdk/src/solaris/classes/sun/nio/ch/EPollPort.java @@ -93,7 +93,7 @@ final class EPollPort try { socketpair(sv); // register one end with epoll - epollCtl(epfd, EPOLL_CTL_ADD, sv[0], POLLIN); + epollCtl(epfd, EPOLL_CTL_ADD, sv[0], Net.POLLIN); } catch (IOException x) { close0(epfd); throw x; diff --git a/jdk/src/solaris/classes/sun/nio/ch/KQueuePort.java b/jdk/src/solaris/classes/sun/nio/ch/KQueuePort.java index c323f076fb2..5a1066444eb 100644 --- a/jdk/src/solaris/classes/sun/nio/ch/KQueuePort.java +++ b/jdk/src/solaris/classes/sun/nio/ch/KQueuePort.java @@ -172,9 +172,9 @@ final class KQueuePort // TBD: Measure cost of EV_ONESHOT vs. EV_CLEAR, either will do here. int err = 0; int flags = (EV_ADD|EV_ONESHOT); - if ((events & Port.POLLIN) > 0) + if ((events & Net.POLLIN) > 0) err = keventRegister(kqfd, fd, EVFILT_READ, flags); - if (err == 0 && (events & Port.POLLOUT) > 0) + if (err == 0 && (events & Net.POLLOUT) > 0) err = keventRegister(kqfd, fd, EVFILT_WRITE, flags); if (err != 0) throw new InternalError("kevent failed: " + err); // should not happen @@ -227,9 +227,9 @@ final class KQueuePort int filter = getFilter(keventAddress); int events = 0; if (filter == EVFILT_READ) - events = Port.POLLIN; + events = Net.POLLIN; else if (filter == EVFILT_WRITE) - events = Port.POLLOUT; + events = Net.POLLOUT; Event ev = new Event(channel, events); diff --git a/jdk/src/solaris/classes/sun/nio/ch/PollArrayWrapper.java b/jdk/src/solaris/classes/sun/nio/ch/PollArrayWrapper.java index 3a57bfc4ba2..50fd67c5a83 100644 --- a/jdk/src/solaris/classes/sun/nio/ch/PollArrayWrapper.java +++ b/jdk/src/solaris/classes/sun/nio/ch/PollArrayWrapper.java @@ -43,8 +43,6 @@ import sun.misc.*; public class PollArrayWrapper extends AbstractPollArrayWrapper { - public static final short POLLCONN = POLLOUT; - // File descriptor to write for interrupt int interruptFD; @@ -58,7 +56,7 @@ public class PollArrayWrapper extends AbstractPollArrayWrapper { void initInterrupt(int fd0, int fd1) { interruptFD = fd1; putDescriptor(0, fd0); - putEventOps(0, POLLIN); + putEventOps(0, Net.POLLIN); putReventOps(0, 0); } diff --git a/jdk/src/solaris/classes/sun/nio/ch/Port.java b/jdk/src/solaris/classes/sun/nio/ch/Port.java index a644a0f75b9..81e1ed87615 100644 --- a/jdk/src/solaris/classes/sun/nio/ch/Port.java +++ b/jdk/src/solaris/classes/sun/nio/ch/Port.java @@ -40,10 +40,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock; */ abstract class Port extends AsynchronousChannelGroupImpl { - static final short POLLIN = 0x0001; - static final short POLLOUT = 0x0004; - static final short POLLERR = 0x0008; - static final short POLLHUP = 0x0010; /** * Implemented by clients registered with this port. diff --git a/jdk/src/solaris/classes/sun/nio/ch/SinkChannelImpl.java b/jdk/src/solaris/classes/sun/nio/ch/SinkChannelImpl.java index a0645221ed0..bdc6c687070 100644 --- a/jdk/src/solaris/classes/sun/nio/ch/SinkChannelImpl.java +++ b/jdk/src/solaris/classes/sun/nio/ch/SinkChannelImpl.java @@ -118,17 +118,16 @@ class SinkChannelImpl int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) + if ((ops & Net.POLLNVAL) != 0) throw new Error("POLLNVAL detected"); - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLOUT) != 0) && + if (((ops & Net.POLLOUT) != 0) && ((intOps & SelectionKey.OP_WRITE) != 0)) newOps |= SelectionKey.OP_WRITE; @@ -146,7 +145,7 @@ class SinkChannelImpl public void translateAndSetInterestOps(int ops, SelectionKeyImpl sk) { if (ops == SelectionKey.OP_WRITE) - ops = PollArrayWrapper.POLLOUT; + ops = Net.POLLOUT; sk.selector.putEventOps(sk, ops); } diff --git a/jdk/src/solaris/classes/sun/nio/ch/SourceChannelImpl.java b/jdk/src/solaris/classes/sun/nio/ch/SourceChannelImpl.java index d632b74259f..398b169cc84 100644 --- a/jdk/src/solaris/classes/sun/nio/ch/SourceChannelImpl.java +++ b/jdk/src/solaris/classes/sun/nio/ch/SourceChannelImpl.java @@ -118,17 +118,16 @@ class SourceChannelImpl int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) + if ((ops & Net.POLLNVAL) != 0) throw new Error("POLLNVAL detected"); - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_READ) != 0)) newOps |= SelectionKey.OP_READ; @@ -146,7 +145,7 @@ class SourceChannelImpl public void translateAndSetInterestOps(int ops, SelectionKeyImpl sk) { if (ops == SelectionKey.OP_READ) - ops = PollArrayWrapper.POLLIN; + ops = Net.POLLIN; sk.selector.putEventOps(sk, ops); } diff --git a/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java b/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java index 752b70ee4f0..294dc014236 100644 --- a/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java +++ b/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java @@ -148,7 +148,7 @@ class UnixAsynchronousServerSocketChannelImpl synchronized (updateLock) { acceptPending = true; } - port.startPoll(fdVal, Port.POLLIN); + port.startPoll(fdVal, Net.POLLIN); return; } @@ -299,7 +299,7 @@ class UnixAsynchronousServerSocketChannelImpl } // register for connections - port.startPoll(fdVal, Port.POLLIN); + port.startPoll(fdVal, Net.POLLIN); return result; } } catch (Throwable x) { diff --git a/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java b/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java index c718057f060..d7f11dc6ffd 100644 --- a/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java +++ b/jdk/src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java @@ -142,9 +142,9 @@ class UnixAsynchronousSocketChannelImpl assert Thread.holdsLock(updateLock); int events = 0; if (readPending) - events |= Port.POLLIN; + events |= Net.POLLIN; if (connectPending || writePending) - events |= Port.POLLOUT; + events |= Net.POLLOUT; if (events != 0) port.startPoll(fdVal, events); } @@ -204,9 +204,9 @@ class UnixAsynchronousSocketChannelImpl */ @Override public void onEvent(int events, boolean mayInvokeDirect) { - boolean readable = (events & Port.POLLIN) > 0; - boolean writable = (events & Port.POLLOUT) > 0; - if ((events & (Port.POLLERR | Port.POLLHUP)) > 0) { + boolean readable = (events & Net.POLLIN) > 0; + boolean writable = (events & Net.POLLOUT) > 0; + if ((events & (Net.POLLERR | Net.POLLHUP)) > 0) { readable = true; writable = true; } diff --git a/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java b/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java index 73c96cfc22b..0763979dd20 100644 --- a/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java +++ b/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java @@ -589,15 +589,14 @@ public class SctpChannelImpl extends SctpChannel int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) { + if ((ops & Net.POLLNVAL) != 0) { /* This should only happen if this channel is pre-closed while a * selection operation is in progress * ## Throw an error if this channel has not been pre-closed */ return false; } - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); /* No need to poll again in checkConnect, @@ -606,19 +605,19 @@ public class SctpChannelImpl extends SctpChannel return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_READ) != 0) && isConnected()) newOps |= SelectionKey.OP_READ; - if (((ops & PollArrayWrapper.POLLCONN) != 0) && + if (((ops & Net.POLLCONN) != 0) && ((intOps & SelectionKey.OP_CONNECT) != 0) && ((state == ChannelState.UNCONNECTED) || (state == ChannelState.PENDING))) { newOps |= SelectionKey.OP_CONNECT; readyToConnect = true; } - if (((ops & PollArrayWrapper.POLLOUT) != 0) && + if (((ops & Net.POLLOUT) != 0) && ((intOps & SelectionKey.OP_WRITE) != 0) && isConnected()) newOps |= SelectionKey.OP_WRITE; @@ -642,11 +641,11 @@ public class SctpChannelImpl extends SctpChannel public void translateAndSetInterestOps(int ops, SelectionKeyImpl sk) { int newOps = 0; if ((ops & SelectionKey.OP_READ) != 0) - newOps |= PollArrayWrapper.POLLIN; + newOps |= Net.POLLIN; if ((ops & SelectionKey.OP_WRITE) != 0) - newOps |= PollArrayWrapper.POLLOUT; + newOps |= Net.POLLOUT; if ((ops & SelectionKey.OP_CONNECT) != 0) - newOps |= PollArrayWrapper.POLLCONN; + newOps |= Net.POLLCONN; sk.selector.putEventOps(sk, newOps); } diff --git a/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java b/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java index 424c1d1642d..0a00bd4162e 100644 --- a/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java +++ b/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java @@ -321,25 +321,24 @@ public class SctpMultiChannelImpl extends SctpMultiChannel int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) { + if ((ops & Net.POLLNVAL) != 0) { /* This should only happen if this channel is pre-closed while a * selection operation is in progress * ## Throw an error if this channel has not been pre-closed */ return false; } - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_READ) != 0)) newOps |= SelectionKey.OP_READ; - if (((ops & PollArrayWrapper.POLLOUT) != 0) && + if (((ops & Net.POLLOUT) != 0) && ((intOps & SelectionKey.OP_WRITE) != 0)) newOps |= SelectionKey.OP_WRITE; @@ -361,9 +360,9 @@ public class SctpMultiChannelImpl extends SctpMultiChannel public void translateAndSetInterestOps(int ops, SelectionKeyImpl sk) { int newOps = 0; if ((ops & SelectionKey.OP_READ) != 0) - newOps |= PollArrayWrapper.POLLIN; + newOps |= Net.POLLIN; if ((ops & SelectionKey.OP_WRITE) != 0) - newOps |= PollArrayWrapper.POLLOUT; + newOps |= Net.POLLOUT; sk.selector.putEventOps(sk, newOps); } diff --git a/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java b/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java index d22af25f1d1..c32fb9ebc0f 100644 --- a/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java +++ b/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java @@ -314,21 +314,20 @@ public class SctpServerChannelImpl extends SctpServerChannel int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) { + if ((ops & Net.POLLNVAL) != 0) { /* This should only happen if this channel is pre-closed while a * selection operation is in progress * ## Throw an error if this channel has not been pre-closed */ return false; } - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_ACCEPT) != 0)) newOps |= SelectionKey.OP_ACCEPT; @@ -352,7 +351,7 @@ public class SctpServerChannelImpl extends SctpServerChannel /* Translate ops */ if ((ops & SelectionKey.OP_ACCEPT) != 0) - newOps |= PollArrayWrapper.POLLIN; + newOps |= Net.POLLIN; /* Place ops into pollfd array */ sk.selector.putEventOps(sk, newOps); diff --git a/jdk/src/solaris/native/sun/nio/ch/IOUtil.c b/jdk/src/solaris/native/sun/nio/ch/IOUtil.c index 58ef02014b5..7dbf010fcac 100644 --- a/jdk/src/solaris/native/sun/nio/ch/IOUtil.c +++ b/jdk/src/solaris/native/sun/nio/ch/IOUtil.c @@ -145,7 +145,6 @@ Java_sun_nio_ch_IOUtil_iovMax(JNIEnv *env, jclass this) return (jint)iov_max; } - /* Declared in nio_util.h for use elsewhere in NIO */ jint diff --git a/jdk/src/solaris/native/sun/nio/ch/Net.c b/jdk/src/solaris/native/sun/nio/ch/Net.c index 214f0f76300..eb0e09ddc30 100644 --- a/jdk/src/solaris/native/sun/nio/ch/Net.c +++ b/jdk/src/solaris/native/sun/nio/ch/Net.c @@ -23,6 +23,7 @@ * questions. */ +#include #include #include #include @@ -749,6 +750,42 @@ Java_sun_nio_ch_Net_poll(JNIEnv* env, jclass this, jobject fdo, jint events, jlo } } +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollinValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLIN; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_polloutValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLOUT; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollerrValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLERR; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollhupValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLHUP; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollnvalValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLNVAL; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollconnValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLOUT; +} + /* Declared in nio_util.h */ diff --git a/jdk/src/windows/classes/sun/nio/ch/PollArrayWrapper.java b/jdk/src/windows/classes/sun/nio/ch/PollArrayWrapper.java index 89455769485..08591f82061 100644 --- a/jdk/src/windows/classes/sun/nio/ch/PollArrayWrapper.java +++ b/jdk/src/windows/classes/sun/nio/ch/PollArrayWrapper.java @@ -53,15 +53,6 @@ class PollArrayWrapper { static short SIZE_POLLFD = 8; // sizeof pollfd struct - // events masks - @Native static final short POLLIN = AbstractPollArrayWrapper.POLLIN; - @Native static final short POLLOUT = AbstractPollArrayWrapper.POLLOUT; - @Native static final short POLLERR = AbstractPollArrayWrapper.POLLERR; - @Native static final short POLLHUP = AbstractPollArrayWrapper.POLLHUP; - @Native static final short POLLNVAL = AbstractPollArrayWrapper.POLLNVAL; - @Native static final short POLLREMOVE = AbstractPollArrayWrapper.POLLREMOVE; - @Native static final short POLLCONN = 0x0002; - private int size; // Size of the pollArray PollArrayWrapper(int newSize) { @@ -119,6 +110,6 @@ class PollArrayWrapper { // Adds Windows wakeup socket at a given index. void addWakeupSocket(int fdVal, int index) { putDescriptor(index, fdVal); - putEventOps(index, POLLIN); + putEventOps(index, Net.POLLIN); } } diff --git a/jdk/src/windows/classes/sun/nio/ch/SinkChannelImpl.java b/jdk/src/windows/classes/sun/nio/ch/SinkChannelImpl.java index 1450928a816..57e88ac38cf 100644 --- a/jdk/src/windows/classes/sun/nio/ch/SinkChannelImpl.java +++ b/jdk/src/windows/classes/sun/nio/ch/SinkChannelImpl.java @@ -78,17 +78,16 @@ class SinkChannelImpl int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) + if ((ops & Net.POLLNVAL) != 0) throw new Error("POLLNVAL detected"); - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLOUT) != 0) && + if (((ops & Net.POLLOUT) != 0) && ((intOps & SelectionKey.OP_WRITE) != 0)) newOps |= SelectionKey.OP_WRITE; @@ -106,7 +105,7 @@ class SinkChannelImpl public void translateAndSetInterestOps(int ops, SelectionKeyImpl sk) { if ((ops & SelectionKey.OP_WRITE) != 0) - ops = PollArrayWrapper.POLLOUT; + ops = Net.POLLOUT; sk.selector.putEventOps(sk, ops); } diff --git a/jdk/src/windows/classes/sun/nio/ch/SourceChannelImpl.java b/jdk/src/windows/classes/sun/nio/ch/SourceChannelImpl.java index da45df639af..2605d61b47c 100644 --- a/jdk/src/windows/classes/sun/nio/ch/SourceChannelImpl.java +++ b/jdk/src/windows/classes/sun/nio/ch/SourceChannelImpl.java @@ -77,17 +77,16 @@ class SourceChannelImpl int oldOps = sk.nioReadyOps(); int newOps = initialOps; - if ((ops & PollArrayWrapper.POLLNVAL) != 0) + if ((ops & Net.POLLNVAL) != 0) throw new Error("POLLNVAL detected"); - if ((ops & (PollArrayWrapper.POLLERR - | PollArrayWrapper.POLLHUP)) != 0) { + if ((ops & (Net.POLLERR | Net.POLLHUP)) != 0) { newOps = intOps; sk.nioReadyOps(newOps); return (newOps & ~oldOps) != 0; } - if (((ops & PollArrayWrapper.POLLIN) != 0) && + if (((ops & Net.POLLIN) != 0) && ((intOps & SelectionKey.OP_READ) != 0)) newOps |= SelectionKey.OP_READ; @@ -105,7 +104,7 @@ class SourceChannelImpl public void translateAndSetInterestOps(int ops, SelectionKeyImpl sk) { if ((ops & SelectionKey.OP_READ) != 0) - ops = PollArrayWrapper.POLLIN; + ops = Net.POLLIN; sk.selector.putEventOps(sk, ops); } diff --git a/jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java b/jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java index d84712ba97c..eec35ea9518 100644 --- a/jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java +++ b/jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java @@ -313,16 +313,16 @@ final class WindowsSelectorImpl extends SelectorImpl { private int processSelectedKeys(long updateCount) { int numKeysUpdated = 0; numKeysUpdated += processFDSet(updateCount, readFds, - PollArrayWrapper.POLLIN, + Net.POLLIN, false); numKeysUpdated += processFDSet(updateCount, writeFds, - PollArrayWrapper.POLLCONN | - PollArrayWrapper.POLLOUT, + Net.POLLCONN | + Net.POLLOUT, false); numKeysUpdated += processFDSet(updateCount, exceptFds, - PollArrayWrapper.POLLIN | - PollArrayWrapper.POLLCONN | - PollArrayWrapper.POLLOUT, + Net.POLLIN | + Net.POLLCONN | + Net.POLLOUT, true); return numKeysUpdated; } diff --git a/jdk/src/windows/native/sun/nio/ch/Net.c b/jdk/src/windows/native/sun/nio/ch/Net.c index 733405e6f80..acaa50d2b5e 100644 --- a/jdk/src/windows/native/sun/nio/ch/Net.c +++ b/jdk/src/windows/native/sun/nio/ch/Net.c @@ -554,11 +554,11 @@ Java_sun_nio_ch_Net_poll(JNIEnv* env, jclass this, jobject fdo, jint events, jlo FD_ZERO(&rd); FD_ZERO(&wr); FD_ZERO(&ex); - if (events & sun_nio_ch_PollArrayWrapper_POLLIN) { + if (events & POLLIN) { FD_SET(fd, &rd); } - if (events & sun_nio_ch_PollArrayWrapper_POLLOUT || - events & sun_nio_ch_PollArrayWrapper_POLLCONN) { + if (events & POLLOUT || + events & POLLCONN) { FD_SET(fd, &wr); } FD_SET(fd, &ex); @@ -572,14 +572,50 @@ Java_sun_nio_ch_Net_poll(JNIEnv* env, jclass this, jobject fdo, jint events, jlo } else if (rv >= 0) { rv = 0; if (FD_ISSET(fd, &rd)) { - rv |= sun_nio_ch_PollArrayWrapper_POLLIN; + rv |= POLLIN; } if (FD_ISSET(fd, &wr)) { - rv |= sun_nio_ch_PollArrayWrapper_POLLOUT; + rv |= POLLOUT; } if (FD_ISSET(fd, &ex)) { - rv |= sun_nio_ch_PollArrayWrapper_POLLERR; + rv |= POLLERR; } } return rv; } + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollinValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLIN; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_polloutValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLOUT; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollerrValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLERR; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollhupValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLHUP; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollnvalValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLNVAL; +} + +JNIEXPORT jshort JNICALL +Java_sun_nio_ch_Net_pollconnValue(JNIEnv *env, jclass this) +{ + return (jshort)POLLCONN; +} diff --git a/jdk/src/windows/native/sun/nio/ch/WindowsSelectorImpl.c b/jdk/src/windows/native/sun/nio/ch/WindowsSelectorImpl.c index aa10877c42b..7d5e1e77875 100644 --- a/jdk/src/windows/native/sun/nio/ch/WindowsSelectorImpl.c +++ b/jdk/src/windows/native/sun/nio/ch/WindowsSelectorImpl.c @@ -33,13 +33,15 @@ #define FD_SETSIZE 1024 #include +#include + #include "jvm.h" #include "jni.h" #include "jni_util.h" #include "sun_nio_ch_WindowsSelectorImpl.h" #include "sun_nio_ch_PollArrayWrapper.h" -#include "winsock2.h" +#include "nio_util.h" /* Needed for POLL* constants (includes "winsock2.h") */ typedef struct { jint fd; @@ -79,12 +81,11 @@ Java_sun_nio_ch_WindowsSelectorImpl_00024SubSelector_poll0(JNIEnv *env, jobject /* Set FD_SET structures required for select */ for (i = 0; i < numfds; i++) { - if (fds[i].events & sun_nio_ch_PollArrayWrapper_POLLIN) { + if (fds[i].events & POLLIN) { readfds.fd_array[read_count] = fds[i].fd; read_count++; } - if (fds[i].events & (sun_nio_ch_PollArrayWrapper_POLLOUT | - sun_nio_ch_PollArrayWrapper_POLLCONN)) + if (fds[i].events & (POLLOUT | POLLCONN)) { writefds.fd_array[write_count] = fds[i].fd; write_count++; @@ -110,12 +111,11 @@ Java_sun_nio_ch_WindowsSelectorImpl_00024SubSelector_poll0(JNIEnv *env, jobject /* prepare select structures for the i-th socket */ errreadfds.fd_count = 0; errwritefds.fd_count = 0; - if (fds[i].events & sun_nio_ch_PollArrayWrapper_POLLIN) { + if (fds[i].events & POLLIN) { errreadfds.fd_array[0] = fds[i].fd; errreadfds.fd_count = 1; } - if (fds[i].events & (sun_nio_ch_PollArrayWrapper_POLLOUT | - sun_nio_ch_PollArrayWrapper_POLLCONN)) + if (fds[i].events & (POLLOUT | POLLCONN)) { errwritefds.fd_array[0] = fds[i].fd; errwritefds.fd_count = 1; diff --git a/jdk/src/windows/native/sun/nio/ch/nio_util.h b/jdk/src/windows/native/sun/nio/ch/nio_util.h index cf2df5363b7..1d463241c25 100644 --- a/jdk/src/windows/native/sun/nio/ch/nio_util.h +++ b/jdk/src/windows/native/sun/nio/ch/nio_util.h @@ -23,6 +23,8 @@ * questions. */ +#include + #include "jni.h" /** @@ -55,3 +57,19 @@ struct iovec { }; #endif + +#ifndef POLLIN + /* WSAPoll()/WSAPOLLFD and the corresponding constants are only defined */ + /* in Windows Vista / Windows Server 2008 and later. If we are on an */ + /* older release we just use the Solaris constants as this was previously */ + /* done in PollArrayWrapper.java. */ + #define POLLIN 0x0001 + #define POLLOUT 0x0004 + #define POLLERR 0x0008 + #define POLLHUP 0x0010 + #define POLLNVAL 0x0020 + #define POLLCONN 0x0002 +#else + /* POLLCONN must not equal any of the other constants (see winsock2.h). */ + #define POLLCONN 0x2000 +#endif From 77333fdd77ca3dba739775b5242eda4688158009 Mon Sep 17 00:00:00 2001 From: Volker Simonis Date: Mon, 20 Jan 2014 17:16:05 +0100 Subject: [PATCH 049/158] 8031581: PPC64: Addons and fixes for AIX to pass the jdk regression tests Reviewed-by: alanb, sla --- jdk/make/CompileJavaClasses.gmk | 9 +- .../sun/nio/ch/sctp/SctpChannelImpl.java | 150 ++++++++++++++++++ .../sun/nio/ch/sctp/SctpMultiChannelImpl.java | 137 ++++++++++++++++ .../nio/ch/sctp/SctpServerChannelImpl.java | 102 ++++++++++++ jdk/src/aix/native/java/net/aix_close.c | 33 ++-- .../classes/java/nio/file/CopyMoveHelper.java | 2 +- .../sun/nio/cs/ext/ExtendedCharsets.java | 2 +- .../com.sun.tools.attach.spi.AttachProvider | 1 + jdk/src/share/native/java/util/zip/zip_util.c | 5 +- .../sun/management/DiagnosticCommandImpl.c | 21 ++- .../share/transport/socket/socketTransport.c | 13 ++ .../classes/java/lang/UNIXProcess.java.aix | 87 +++++++++- .../native/java/net/NetworkInterface.c | 7 +- jdk/src/solaris/native/java/net/net_util_md.c | 18 +-- .../sun/management/OperatingSystemImpl.c | 11 +- .../native/sun/nio/ch/DatagramChannelImpl.c | 10 +- .../native/sun/nio/ch/FileDispatcherImpl.c | 13 ++ jdk/src/solaris/native/sun/nio/ch/Net.c | 14 +- 18 files changed, 594 insertions(+), 41 deletions(-) create mode 100644 jdk/src/aix/classes/sun/nio/ch/sctp/SctpChannelImpl.java create mode 100644 jdk/src/aix/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java create mode 100644 jdk/src/aix/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java diff --git a/jdk/make/CompileJavaClasses.gmk b/jdk/make/CompileJavaClasses.gmk index 26c334e6190..4cdb31a63cc 100644 --- a/jdk/make/CompileJavaClasses.gmk +++ b/jdk/make/CompileJavaClasses.gmk @@ -228,9 +228,9 @@ endif # Exclude another implicitly not included file. EXFILES += sun/util/locale/AsciiUtil.java -ifeq (, $(filter $(OPENJDK_TARGET_OS), solaris macosx)) +ifeq (, $(filter $(OPENJDK_TARGET_OS), solaris macosx aix)) # - # only solaris and macosx + # only solaris, macosx and aix # EXFILES += sun/nio/fs/PollingWatchService.java endif @@ -308,6 +308,11 @@ SECURITY_PKGS := \ AIX_SRC_DIRS := ifeq ($(OPENJDK_TARGET_OS),aix) AIX_SRC_DIRS += $(JDK_TOPDIR)/src/aix/classes + + # these files are duplicated in AIX_SRC_DIRS + EXFILES += $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java \ + $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java \ + $(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java endif # The exception handling of swing beaninfo diff --git a/jdk/src/aix/classes/sun/nio/ch/sctp/SctpChannelImpl.java b/jdk/src/aix/classes/sun/nio/ch/sctp/SctpChannelImpl.java new file mode 100644 index 00000000000..8a147203402 --- /dev/null +++ b/jdk/src/aix/classes/sun/nio/ch/sctp/SctpChannelImpl.java @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package sun.nio.ch.sctp; + +import java.net.SocketAddress; +import java.net.InetAddress; +import java.io.IOException; +import java.util.Set; +import java.nio.ByteBuffer; +import java.nio.channels.spi.SelectorProvider; +import com.sun.nio.sctp.Association; +import com.sun.nio.sctp.MessageInfo; +import com.sun.nio.sctp.NotificationHandler; +import com.sun.nio.sctp.SctpChannel; +import com.sun.nio.sctp.SctpSocketOption; + +/** + * Unimplemented. + */ +public class SctpChannelImpl extends SctpChannel +{ + private static final String message = "SCTP not supported on this platform"; + + public SctpChannelImpl(SelectorProvider provider) { + super(provider); + throw new UnsupportedOperationException(message); + } + + @Override + public Association association() { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpChannel bind(SocketAddress local) + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpChannel bindAddress(InetAddress address) + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpChannel unbindAddress(InetAddress address) + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public boolean connect(SocketAddress remote) throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public boolean connect(SocketAddress remote, int maxOutStreams, + int maxInStreams) throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public boolean isConnectionPending() { + throw new UnsupportedOperationException(message); + } + + @Override + public boolean finishConnect() throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public Set getAllLocalAddresses() + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public Set getRemoteAddresses() + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpChannel shutdown() throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public T getOption(SctpSocketOption name) + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpChannel setOption(SctpSocketOption name, T value) + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public Set> supportedOptions() { + throw new UnsupportedOperationException(message); + } + + @Override + public MessageInfo receive(ByteBuffer dst, T attachment, + NotificationHandler handler) throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public int send(ByteBuffer src, MessageInfo messageInfo) + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + protected void implConfigureBlocking(boolean block) throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public void implCloseSelectableChannel() throws IOException { + throw new UnsupportedOperationException(message); + } +} diff --git a/jdk/src/aix/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java b/jdk/src/aix/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java new file mode 100644 index 00000000000..c2c1d968307 --- /dev/null +++ b/jdk/src/aix/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package sun.nio.ch.sctp; + +import java.net.SocketAddress; +import java.net.InetAddress; +import java.io.IOException; +import java.util.Set; +import java.nio.ByteBuffer; +import java.nio.channels.spi.SelectorProvider; +import com.sun.nio.sctp.Association; +import com.sun.nio.sctp.SctpChannel; +import com.sun.nio.sctp.MessageInfo; +import com.sun.nio.sctp.NotificationHandler; +import com.sun.nio.sctp.SctpMultiChannel; +import com.sun.nio.sctp.SctpSocketOption; + +/** + * Unimplemented. + */ +public class SctpMultiChannelImpl extends SctpMultiChannel +{ + private static final String message = "SCTP not supported on this platform"; + + public SctpMultiChannelImpl(SelectorProvider provider) { + super(provider); + throw new UnsupportedOperationException(message); + } + + @Override + public Set associations() { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpMultiChannel bind(SocketAddress local, + int backlog) throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpMultiChannel bindAddress(InetAddress address) + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpMultiChannel unbindAddress(InetAddress address) + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public Set getAllLocalAddresses() + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public Set getRemoteAddresses + (Association association) throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpMultiChannel shutdown(Association association) + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public T getOption(SctpSocketOption name, + Association association) throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpMultiChannel setOption(SctpSocketOption name, + T value, Association association) throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public Set> supportedOptions() { + throw new UnsupportedOperationException(message); + } + + @Override + public MessageInfo receive(ByteBuffer buffer, T attachment, + NotificationHandler handler) throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public int send(ByteBuffer buffer, MessageInfo messageInfo) + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpChannel branch(Association association) + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + protected void implConfigureBlocking(boolean block) throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public void implCloseSelectableChannel() throws IOException { + throw new UnsupportedOperationException(message); + } +} diff --git a/jdk/src/aix/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java b/jdk/src/aix/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java new file mode 100644 index 00000000000..1e224afd13f --- /dev/null +++ b/jdk/src/aix/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package sun.nio.ch.sctp; + +import java.net.SocketAddress; +import java.net.InetAddress; +import java.io.IOException; +import java.util.Set; +import java.nio.channels.spi.SelectorProvider; +import com.sun.nio.sctp.SctpChannel; +import com.sun.nio.sctp.SctpServerChannel; +import com.sun.nio.sctp.SctpSocketOption; + +/** + * Unimplemented. + */ +public class SctpServerChannelImpl extends SctpServerChannel +{ + private static final String message = "SCTP not supported on this platform"; + + public SctpServerChannelImpl(SelectorProvider provider) { + super(provider); + throw new UnsupportedOperationException(message); + } + + @Override + public SctpChannel accept() throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpServerChannel bind(SocketAddress local, + int backlog) throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpServerChannel bindAddress(InetAddress address) + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpServerChannel unbindAddress(InetAddress address) + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public Set getAllLocalAddresses() + throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public T getOption(SctpSocketOption name) throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public SctpServerChannel setOption(SctpSocketOption name, + T value) throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public Set> supportedOptions() { + throw new UnsupportedOperationException(message); + } + + @Override + protected void implConfigureBlocking(boolean block) throws IOException { + throw new UnsupportedOperationException(message); + } + + @Override + public void implCloseSelectableChannel() throws IOException { + throw new UnsupportedOperationException(message); + } +} diff --git a/jdk/src/aix/native/java/net/aix_close.c b/jdk/src/aix/native/java/net/aix_close.c index d62ffe772df..e6e64ff5e17 100644 --- a/jdk/src/aix/native/java/net/aix_close.c +++ b/jdk/src/aix/native/java/net/aix_close.c @@ -234,6 +234,28 @@ static int closefd(int fd1, int fd2) { pthread_mutex_lock(&(fdEntry->lock)); { + /* On fast machines we see that we enter dup2 before the + * accepting thread had a chance to get and process the signal. + * So in case we woke a thread up, give it some time to cope. + * Also see https://bugs.openjdk.java.net/browse/JDK-8006395 */ + int num_woken = 0; + + /* + * Send a wakeup signal to all threads blocked on this + * file descriptor. + */ + threadEntry_t *curr = fdEntry->threads; + while (curr != NULL) { + curr->intr = 1; + pthread_kill( curr->thr, sigWakeup ); + num_woken ++; + curr = curr->next; + } + + if (num_woken > 0) { + usleep(num_woken * 50); + } + /* * And close/dup the file descriptor * (restart if interrupted by signal) @@ -245,17 +267,6 @@ static int closefd(int fd1, int fd2) { rv = dup2(fd1, fd2); } } while (rv == -1 && errno == EINTR); - - /* - * Send a wakeup signal to all threads blocked on this - * file descriptor. - */ - threadEntry_t *curr = fdEntry->threads; - while (curr != NULL) { - curr->intr = 1; - pthread_kill( curr->thr, sigWakeup ); - curr = curr->next; - } } /* diff --git a/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java b/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java index 54bfe085962..ab9281807fd 100644 --- a/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java +++ b/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java @@ -130,7 +130,7 @@ class CopyMoveHelper { // copy basic attributes to target if (opts.copyAttributes) { BasicFileAttributeView view = - Files.getFileAttributeView(target, BasicFileAttributeView.class, linkOptions); + Files.getFileAttributeView(target, BasicFileAttributeView.class); try { view.setTimes(attrs.lastModifiedTime(), attrs.lastAccessTime(), diff --git a/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java b/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java index d1c07e2e07c..98ec88166ef 100644 --- a/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java +++ b/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java @@ -1297,7 +1297,7 @@ public class ExtendedCharsets } String osName = AccessController.doPrivileged( new GetPropertyAction("os.name")); - if ("SunOS".equals(osName) || "Linux".equals(osName) + if ("SunOS".equals(osName) || "Linux".equals(osName) || "AIX".equals(osName) || osName.contains("OS X")) { charset("x-COMPOUND_TEXT", "COMPOUND_TEXT", new String[] { diff --git a/jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider b/jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider index debc75277f3..4cb7f1d2c73 100644 --- a/jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider +++ b/jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider @@ -31,3 +31,4 @@ #[windows]sun.tools.attach.WindowsAttachProvider #[linux]sun.tools.attach.LinuxAttachProvider #[macosx]sun.tools.attach.BsdAttachProvider +#[aix]sun.tools.attach.AixAttachProvider diff --git a/jdk/src/share/native/java/util/zip/zip_util.c b/jdk/src/share/native/java/util/zip/zip_util.c index b2fb8209f41..27882480ea6 100644 --- a/jdk/src/share/native/java/util/zip/zip_util.c +++ b/jdk/src/share/native/java/util/zip/zip_util.c @@ -659,7 +659,10 @@ readCEN(jzfile *zip, jint knownTotal) entries = zip->entries = calloc(total, sizeof(entries[0])); tablelen = zip->tablelen = ((total/2) | 1); // Odd -> fewer collisions table = zip->table = malloc(tablelen * sizeof(table[0])); - if (entries == NULL || table == NULL) goto Catch; + /* According to ISO C it is perfectly legal for malloc to return zero + * if called with a zero argument. We check this for 'entries' but not + * for 'table' because 'tablelen' can't be zero (see computation above). */ + if ((entries == NULL && total != 0) || table == NULL) goto Catch; for (j = 0; j < tablelen; j++) table[j] = ZIP_ENDCHAIN; diff --git a/jdk/src/share/native/sun/management/DiagnosticCommandImpl.c b/jdk/src/share/native/sun/management/DiagnosticCommandImpl.c index 4ca0315abc3..6258ac3e9cf 100644 --- a/jdk/src/share/native/sun/management/DiagnosticCommandImpl.c +++ b/jdk/src/share/native/sun/management/DiagnosticCommandImpl.c @@ -23,6 +23,7 @@ * questions. */ +#include #include #include "management.h" #include "sun_management_DiagnosticCommandImpl.h" @@ -56,7 +57,8 @@ jobject getDiagnosticCommandArgumentInfoArray(JNIEnv *env, jstring command, jobject resultList; dcmd_arg_info_array = (dcmdArgInfo*) malloc(num_arg * sizeof(dcmdArgInfo)); - if (dcmd_arg_info_array == NULL) { + /* According to ISO C it is perfectly legal for malloc to return zero if called with a zero argument */ + if (dcmd_arg_info_array == NULL && num_arg != 0) { return NULL; } jmm_interface->GetDiagnosticCommandArgumentsInfo(env, command, @@ -117,19 +119,22 @@ Java_sun_management_DiagnosticCommandImpl_getDiagnosticCommandInfo return NULL; } num_commands = (*env)->GetArrayLength(env, commands); - dcmd_info_array = (dcmdInfo*) malloc(num_commands * - sizeof(dcmdInfo)); - if (dcmd_info_array == NULL) { - JNU_ThrowOutOfMemoryError(env, NULL); - } - jmm_interface->GetDiagnosticCommandInfo(env, commands, dcmd_info_array); dcmdInfoCls = (*env)->FindClass(env, "sun/management/DiagnosticCommandInfo"); result = (*env)->NewObjectArray(env, num_commands, dcmdInfoCls, NULL); if (result == NULL) { - free(dcmd_info_array); JNU_ThrowOutOfMemoryError(env, 0); } + if (num_commands == 0) { + /* Handle the 'zero commands' case specially to avoid calling 'malloc()' */ + /* with a zero argument because that may legally return a NULL pointer. */ + return result; + } + dcmd_info_array = (dcmdInfo*) malloc(num_commands * sizeof(dcmdInfo)); + if (dcmd_info_array == NULL) { + JNU_ThrowOutOfMemoryError(env, NULL); + } + jmm_interface->GetDiagnosticCommandInfo(env, commands, dcmd_info_array); for (i=0; iGetObjectArrayElement(env,commands,i), diff --git a/jdk/src/share/transport/socket/socketTransport.c b/jdk/src/share/transport/socket/socketTransport.c index 666ce2d6d6b..dfb3426de80 100644 --- a/jdk/src/share/transport/socket/socketTransport.c +++ b/jdk/src/share/transport/socket/socketTransport.c @@ -506,6 +506,19 @@ socketTransport_close(jdwpTransportEnv* env) if (fd < 0) { return JDWPTRANSPORT_ERROR_NONE; } +#ifdef _AIX + /* + AIX needs a workaround for I/O cancellation, see: + http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.basetechref/doc/basetrf1/close.htm + ... + The close subroutine is blocked until all subroutines which use the file + descriptor return to usr space. For example, when a thread is calling close + and another thread is calling select with the same file descriptor, the + close subroutine does not return until the select call returns. + ... + */ + shutdown(fd, 2); +#endif if (dbgsysSocketClose(fd) < 0) { /* * close failed - it's pointless to restore socketFD here because diff --git a/jdk/src/solaris/classes/java/lang/UNIXProcess.java.aix b/jdk/src/solaris/classes/java/lang/UNIXProcess.java.aix index ad90d069409..24216461657 100644 --- a/jdk/src/solaris/classes/java/lang/UNIXProcess.java.aix +++ b/jdk/src/solaris/classes/java/lang/UNIXProcess.java.aix @@ -338,9 +338,23 @@ final class UNIXProcess extends Process { * This is tricky because we do not want the user-level InputStream to be * closed until the user invokes close(), and we need to continue to be * able to read any buffered data lingering in the OS pipe buffer. + * + * On AIX this is especially tricky, because the 'close()' system call + * will block if another thread is at the same time blocked in a file + * operation (e.g. 'read()') on the same file descriptor. We therefore + * combine this 'ProcessPipeInputStream' with the DeferredCloseInputStream + * approach used on Solaris (see "UNIXProcess.java.solaris"). This means + * that every potentially blocking operation on the file descriptor + * increments a counter before it is executed and decrements it once it + * finishes. The 'close()' operation will only be executed if there are + * no pending operations. Otherwise it is deferred after the last pending + * operation has finished. + * */ static class ProcessPipeInputStream extends BufferedInputStream { private final Object closeLock = new Object(); + private int useCount = 0; + private boolean closePending = false; ProcessPipeInputStream(int fd) { super(new FileInputStream(newFileDescriptor(fd))); @@ -382,12 +396,83 @@ final class UNIXProcess extends Process { } catch (IOException ignored) { } } + private void raise() { + synchronized (closeLock) { + useCount++; + } + } + + private void lower() throws IOException { + synchronized (closeLock) { + useCount--; + if (useCount == 0 && closePending) { + closePending = false; + super.close(); + } + } + } + + @Override + public int read() throws IOException { + raise(); + try { + return super.read(); + } finally { + lower(); + } + } + + @Override + public int read(byte[] b) throws IOException { + raise(); + try { + return super.read(b); + } finally { + lower(); + } + } + + @Override + public int read(byte[] b, int off, int len) throws IOException { + raise(); + try { + return super.read(b, off, len); + } finally { + lower(); + } + } + + @Override + public long skip(long n) throws IOException { + raise(); + try { + return super.skip(n); + } finally { + lower(); + } + } + + @Override + public int available() throws IOException { + raise(); + try { + return super.available(); + } finally { + lower(); + } + } + @Override public void close() throws IOException { // BufferedInputStream#close() is not synchronized unlike most other methods. // Synchronizing helps avoid racing with drainInputStream(). synchronized (closeLock) { - super.close(); + if (useCount == 0) { + super.close(); + } + else { + closePending = true; + } } } } diff --git a/jdk/src/solaris/native/java/net/NetworkInterface.c b/jdk/src/solaris/native/java/net/NetworkInterface.c index 51f8e41dfb1..16acf07a269 100644 --- a/jdk/src/solaris/native/java/net/NetworkInterface.c +++ b/jdk/src/solaris/native/java/net/NetworkInterface.c @@ -1265,12 +1265,17 @@ static netif *enumIPv6Interfaces(JNIEnv *env, int sock, netif *ifs) { if (ifreqP->ifr_addr.sa_family != AF_INET6) continue; + if (ioctl(sock, SIOCGIFSITE6, (char *)&if2) >= 0) { + struct sockaddr_in6 *s6= (struct sockaddr_in6 *)&(ifreqP->ifr_addr); + s6->sin6_scope_id = if2.ifr_site6; + } + /* * Add to the list */ ifs = addif(env, sock, ifreqP->ifr_name, ifs, (struct sockaddr *)&(ifreqP->ifr_addr), - AF_INET6, 0); + AF_INET6, 0); /* * If an exception occurred then free the list diff --git a/jdk/src/solaris/native/java/net/net_util_md.c b/jdk/src/solaris/native/java/net/net_util_md.c index 9822de01908..f23c600dc06 100644 --- a/jdk/src/solaris/native/java/net/net_util_md.c +++ b/jdk/src/solaris/native/java/net/net_util_md.c @@ -996,11 +996,7 @@ NET_MapSocketOption(jint cmd, int *level, int *optname) { { java_net_SocketOptions_SO_SNDBUF, SOL_SOCKET, SO_SNDBUF }, { java_net_SocketOptions_SO_RCVBUF, SOL_SOCKET, SO_RCVBUF }, { java_net_SocketOptions_SO_KEEPALIVE, SOL_SOCKET, SO_KEEPALIVE }, -#if defined(_AIX) - { java_net_SocketOptions_SO_REUSEADDR, SOL_SOCKET, SO_REUSEPORT }, -#else { java_net_SocketOptions_SO_REUSEADDR, SOL_SOCKET, SO_REUSEADDR }, -#endif { java_net_SocketOptions_SO_BROADCAST, SOL_SOCKET, SO_BROADCAST }, { java_net_SocketOptions_IP_TOS, IPPROTO_IP, IP_TOS }, { java_net_SocketOptions_IP_MULTICAST_IF, IPPROTO_IP, IP_MULTICAST_IF }, @@ -1285,6 +1281,7 @@ int NET_SetSockOpt(int fd, int level, int opt, const void *arg, int len) { + #ifndef IPTOS_TOS_MASK #define IPTOS_TOS_MASK 0x1e #endif @@ -1305,9 +1302,6 @@ NET_SetSockOpt(int fd, int level, int opt, const void *arg, #else static long maxsockbuf = -1; #endif - - int addopt; - struct linger *ling; #endif /* @@ -1479,10 +1473,12 @@ NET_SetSockOpt(int fd, int level, int opt, const void *arg, } } +#endif +#if defined(_ALLBSD_SOURCE) || defined(_AIX) /* * On Solaris, SO_REUSEADDR will allow multiple datagram - * sockets to bind to the same port. The network jck tests + * sockets to bind to the same port. The network jck tests check * for this "feature", so we need to emulate it by turning on * SO_REUSEPORT as well for that combination. */ @@ -1496,11 +1492,9 @@ NET_SetSockOpt(int fd, int level, int opt, const void *arg, } if (sotype == SOCK_DGRAM) { - addopt = SO_REUSEPORT; - setsockopt(fd, level, addopt, arg, len); + setsockopt(fd, level, SO_REUSEPORT, arg, len); } } - #endif return setsockopt(fd, level, opt, arg, len); @@ -1670,7 +1664,7 @@ NET_Wait(JNIEnv *env, jint fd, jint flags, jint timeout) if (timeout <= 0) { return read_rv > 0 ? 0 : -1; } - newTime = prevTime; + prevTime = newTime; if (read_rv > 0) { break; diff --git a/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c b/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c index c25fd9dcccf..aa21f019823 100644 --- a/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c +++ b/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c @@ -433,7 +433,16 @@ Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount struct dirent* dentp; jlong fds = 0; - dirp = opendir("/proc/self/fd"); +#if defined(_AIX) +/* AIX does not understand '/proc/self' - it requires the real process ID */ +#define FD_DIR aix_fd_dir + char aix_fd_dir[32]; /* the pid has at most 19 digits */ + snprintf(aix_fd_dir, 32, "/proc/%d/fd", getpid()); +#else +#define FD_DIR "/proc/self/fd" +#endif + + dirp = opendir(FD_DIR); if (dirp == NULL) { throw_internal_error(env, "Unable to open directory /proc/self/fd"); return -1; diff --git a/jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c b/jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c index cd2f4927bdb..816270c9b8e 100644 --- a/jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c +++ b/jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c @@ -81,7 +81,7 @@ Java_sun_nio_ch_DatagramChannelImpl_disconnect0(JNIEnv *env, jobject this, rv = connect(fd, 0, 0); #endif -#if defined(__linux__) || defined(_ALLBSD_SOURCE) +#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(_AIX) { int len; SOCKADDR sa; @@ -114,6 +114,14 @@ Java_sun_nio_ch_DatagramChannelImpl_disconnect0(JNIEnv *env, jobject this, #if defined(_ALLBSD_SOURCE) if (rv < 0 && errno == EADDRNOTAVAIL) rv = errno = 0; +#endif +#if defined(_AIX) + /* See W. Richard Stevens, "UNIX Network Programming, Volume 1", p. 254: + * 'Setting the address family to AF_UNSPEC might return EAFNOSUPPORT + * but that is acceptable. + */ + if (rv < 0 && errno == EAFNOSUPPORT) + rv = errno = 0; #endif } #endif diff --git a/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c b/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c index 25beacc3d5d..c9d20112479 100644 --- a/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c +++ b/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c @@ -147,6 +147,19 @@ Java_sun_nio_ch_FileDispatcherImpl_force0(JNIEnv *env, jobject this, if (md == JNI_FALSE) { result = fdatasync(fd); } else { +#ifdef _AIX + /* On AIX, calling fsync on a file descriptor that is opened only for + * reading results in an error ("EBADF: The FileDescriptor parameter is + * not a valid file descriptor open for writing."). + * However, at this point it is not possibly anymore to read the + * 'writable' attribute of the corresponding file channel so we have to + * use 'fcntl'. + */ + int getfl = fcntl(fd, F_GETFL); + if (getfl >= 0 && (getfl & O_ACCMODE) == O_RDONLY) { + return 0; + } +#endif result = fsync(fd); } return handle(env, result, "Force failed"); diff --git a/jdk/src/solaris/native/sun/nio/ch/Net.c b/jdk/src/solaris/native/sun/nio/ch/Net.c index eb0e09ddc30..2846217bbb6 100644 --- a/jdk/src/solaris/native/sun/nio/ch/Net.c +++ b/jdk/src/solaris/native/sun/nio/ch/Net.c @@ -104,12 +104,24 @@ #endif /* IPV6_ADD_MEMBERSHIP */ +#if defined(_AIX) + +struct my_ip_mreq_source { + struct in_addr imr_multiaddr; + struct in_addr imr_sourceaddr; + struct in_addr imr_interface; +}; + +#else + struct my_ip_mreq_source { struct in_addr imr_multiaddr; struct in_addr imr_interface; struct in_addr imr_sourceaddr; }; +#endif /* _AIX */ + struct my_group_source_req { uint32_t gsr_interface; /* interface index */ struct sockaddr_storage gsr_group; /* group address */ @@ -199,7 +211,7 @@ Java_sun_nio_ch_Net_isExclusiveBindAvailable(JNIEnv *env, jclass clazz) { JNIEXPORT jboolean JNICALL Java_sun_nio_ch_Net_canIPv6SocketJoinIPv4Group0(JNIEnv* env, jclass cl) { -#ifdef MACOSX +#if defined(MACOSX) || defined(_AIX) /* for now IPv6 sockets cannot join IPv4 multicast groups */ return JNI_FALSE; #else From 1dbaabdc7824b69d4251788b8a80ee6a5d8ff5ea Mon Sep 17 00:00:00 2001 From: Alan Bateman Date: Wed, 22 Jan 2014 09:36:11 +0000 Subject: [PATCH 050/158] 7133499: (fc) FileChannel.read not preempted by asynchronous close on OS X Reviewed-by: chegar --- .../classes/sun/nio/ch/FileChannelImpl.java | 2 +- .../classes/sun/nio/ch/NativeThreadSet.java | 22 ++++----- .../ch/SimpleAsynchronousFileChannelImpl.java | 1 - .../solaris/native/sun/nio/ch/NativeThread.c | 45 +++++++++++-------- jdk/test/ProblemList.txt | 5 --- 5 files changed, 38 insertions(+), 37 deletions(-) diff --git a/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java b/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java index 3c4ddaacd6d..2fcd0c89fe0 100644 --- a/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java +++ b/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java @@ -110,7 +110,7 @@ public class FileChannelImpl } } - nd.preClose(fd); + // signal any threads blocked on this channel threads.signalAndWait(); if (parent != null) { diff --git a/jdk/src/share/classes/sun/nio/ch/NativeThreadSet.java b/jdk/src/share/classes/sun/nio/ch/NativeThreadSet.java index d6d4c5c9aef..5eb90af879e 100644 --- a/jdk/src/share/classes/sun/nio/ch/NativeThreadSet.java +++ b/jdk/src/share/classes/sun/nio/ch/NativeThreadSet.java @@ -82,8 +82,9 @@ class NativeThreadSet { // Signals all threads in this set. // - void signalAndWait() { - synchronized (this) { + synchronized void signalAndWait() { + boolean interrupted = false; + while (used > 0) { int u = used; int n = elts.length; for (int i = 0; i < n; i++) { @@ -96,16 +97,15 @@ class NativeThreadSet { break; } waitingToEmpty = true; - boolean interrupted = false; - while (used > 0) { - try { - wait(); - } catch (InterruptedException e) { - interrupted = true; - } + try { + wait(50); + } catch (InterruptedException e) { + interrupted = true; + } finally { + waitingToEmpty = false; } - if (interrupted) - Thread.currentThread().interrupt(); } + if (interrupted) + Thread.currentThread().interrupt(); } } diff --git a/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java b/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java index 741abf733fd..8d891b6ec34 100644 --- a/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java +++ b/jdk/src/share/classes/sun/nio/ch/SimpleAsynchronousFileChannelImpl.java @@ -88,7 +88,6 @@ public class SimpleAsynchronousFileChannelImpl invalidateAllLocks(); // signal any threads blocked on this channel - nd.preClose(fdObj); threads.signalAndWait(); // wait until all async I/O operations have completely gracefully diff --git a/jdk/src/solaris/native/sun/nio/ch/NativeThread.c b/jdk/src/solaris/native/sun/nio/ch/NativeThread.c index 79a91a068ac..5e2a78b7af3 100644 --- a/jdk/src/solaris/native/sun/nio/ch/NativeThread.c +++ b/jdk/src/solaris/native/sun/nio/ch/NativeThread.c @@ -32,27 +32,32 @@ #include "sun_nio_ch_NativeThread.h" #include "nio_util.h" - #ifdef __linux__ -#include -#include - -/* Also defined in src/solaris/native/java/net/linux_close.c */ -#define INTERRUPT_SIGNAL (__SIGRTMAX - 2) + #include + #include + /* Also defined in net/linux_close.c */ + #define INTERRUPT_SIGNAL (__SIGRTMAX - 2) +#elif __solaris__ + #include + #include + #define INTERRUPT_SIGNAL (SIGRTMAX - 2) +#elif _ALLBSD_SOURCE + #include + #include + /* Also defined in net/bsd_close.c */ + #define INTERRUPT_SIGNAL SIGIO +#else + #error "missing platform-specific definition here" +#endif static void nullHandler(int sig) { } -#endif - - JNIEXPORT void JNICALL Java_sun_nio_ch_NativeThread_init(JNIEnv *env, jclass cl) { -#ifdef __linux__ - /* Install the null handler for INTERRUPT_SIGNAL. This might overwrite the * handler previously installed by java/net/linux_close.c, but that's okay * since neither handler actually does anything. We install our own @@ -67,25 +72,27 @@ Java_sun_nio_ch_NativeThread_init(JNIEnv *env, jclass cl) sigemptyset(&sa.sa_mask); if (sigaction(INTERRUPT_SIGNAL, &sa, &osa) < 0) JNU_ThrowIOExceptionWithLastError(env, "sigaction"); - -#endif } JNIEXPORT jlong JNICALL Java_sun_nio_ch_NativeThread_current(JNIEnv *env, jclass cl) { -#ifdef __linux__ - return (long)pthread_self(); +#ifdef __solaris__ + return (jlong)thr_self(); #else - return -1; + return (jlong)pthread_self(); #endif } JNIEXPORT void JNICALL Java_sun_nio_ch_NativeThread_signal(JNIEnv *env, jclass cl, jlong thread) { -#ifdef __linux__ - if (pthread_kill((pthread_t)thread, INTERRUPT_SIGNAL)) - JNU_ThrowIOExceptionWithLastError(env, "Thread signal failed"); + int ret; +#ifdef __solaris__ + ret = thr_kill((thread_t)thread, INTERRUPT_SIGNAL); +#else + ret = pthread_kill((pthread_t)thread, INTERRUPT_SIGNAL); #endif + if (ret != 0) + JNU_ThrowIOExceptionWithLastError(env, "Thread signal failed"); } diff --git a/jdk/test/ProblemList.txt b/jdk/test/ProblemList.txt index 2a90ff98b67..95b6038e6e2 100644 --- a/jdk/test/ProblemList.txt +++ b/jdk/test/ProblemList.txt @@ -173,11 +173,6 @@ java/net/DatagramSocket/SendDatagramToBadAddress.java macosx-all # 6963118 java/nio/channels/Selector/Wakeup.java windows-all -# 7133499, 7133497 -java/nio/channels/AsyncCloseAndInterrupt.java macosx-all -java/nio/channels/AsynchronousFileChannel/Lock.java macosx-all -java/nio/channels/FileChannel/Transfer.java macosx-all - # 7141822 java/nio/channels/DatagramChannel/ChangingAddress.java macosx-all From dc4d716d02913a4db3209fd1eee0297bc959e0d9 Mon Sep 17 00:00:00 2001 From: Mattias Tobiasson Date: Tue, 21 Jan 2014 08:36:12 +0100 Subject: [PATCH 051/158] 6545321: [TESTBUG] jstatLineCounts4.sh has to be resilient to unexpected output Keep check for specific lines. Remove check for total number of lines. Reviewed-by: sla --- jdk/test/sun/tools/jstat/classOutput1.awk | 2 +- jdk/test/sun/tools/jstat/classloadOutput1.awk | 2 +- jdk/test/sun/tools/jstat/compilerOutput1.awk | 2 +- jdk/test/sun/tools/jstat/fileURITest1.awk | 2 +- jdk/test/sun/tools/jstat/gcCapacityOutput1.awk | 2 +- jdk/test/sun/tools/jstat/gcCauseOutput1.awk | 2 +- jdk/test/sun/tools/jstat/gcMetaCapacityOutput1.awk | 2 +- jdk/test/sun/tools/jstat/gcNewCapacityOutput1.awk | 2 +- jdk/test/sun/tools/jstat/gcOldCapacityOutput1.awk | 2 +- jdk/test/sun/tools/jstat/gcOldOutput1.awk | 2 +- jdk/test/sun/tools/jstat/gcOutput1.awk | 2 +- jdk/test/sun/tools/jstat/lineCounts1.awk | 2 +- jdk/test/sun/tools/jstat/lineCounts2.awk | 2 +- jdk/test/sun/tools/jstat/lineCounts3.awk | 2 +- jdk/test/sun/tools/jstat/lineCounts4.awk | 2 +- jdk/test/sun/tools/jstat/printCompilationOutput1.awk | 2 +- jdk/test/sun/tools/jstat/timeStamp1.awk | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/jdk/test/sun/tools/jstat/classOutput1.awk b/jdk/test/sun/tools/jstat/classOutput1.awk index d31118bf0ec..6213899e72b 100644 --- a/jdk/test/sun/tools/jstat/classOutput1.awk +++ b/jdk/test/sun/tools/jstat/classOutput1.awk @@ -21,7 +21,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) { + if ((headerlines == 1) && (datalines == 1)) { exit 0 } else { diff --git a/jdk/test/sun/tools/jstat/classloadOutput1.awk b/jdk/test/sun/tools/jstat/classloadOutput1.awk index 66e2b5dcd18..0a3d1e945b5 100644 --- a/jdk/test/sun/tools/jstat/classloadOutput1.awk +++ b/jdk/test/sun/tools/jstat/classloadOutput1.awk @@ -22,7 +22,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) { + if ((headerlines == 1) && (datalines == 1)) { exit 0 } else { diff --git a/jdk/test/sun/tools/jstat/compilerOutput1.awk b/jdk/test/sun/tools/jstat/compilerOutput1.awk index 4a9f89e9fde..09b920ab0e4 100644 --- a/jdk/test/sun/tools/jstat/compilerOutput1.awk +++ b/jdk/test/sun/tools/jstat/compilerOutput1.awk @@ -30,7 +30,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) { + if ((headerlines == 1) && (datalines == 1)) { exit 0 } else { diff --git a/jdk/test/sun/tools/jstat/fileURITest1.awk b/jdk/test/sun/tools/jstat/fileURITest1.awk index 51e31846501..8b56e89ca31 100644 --- a/jdk/test/sun/tools/jstat/fileURITest1.awk +++ b/jdk/test/sun/tools/jstat/fileURITest1.awk @@ -21,7 +21,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) { + if ((headerlines == 1) && (datalines == 1)) { exit 0 } else { diff --git a/jdk/test/sun/tools/jstat/gcCapacityOutput1.awk b/jdk/test/sun/tools/jstat/gcCapacityOutput1.awk index ab630d143b6..ec7a737d55c 100644 --- a/jdk/test/sun/tools/jstat/gcCapacityOutput1.awk +++ b/jdk/test/sun/tools/jstat/gcCapacityOutput1.awk @@ -22,7 +22,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) { + if ((headerlines == 1) && (datalines == 1)) { exit 0 } else { diff --git a/jdk/test/sun/tools/jstat/gcCauseOutput1.awk b/jdk/test/sun/tools/jstat/gcCauseOutput1.awk index 3041291ac3d..005e791043a 100644 --- a/jdk/test/sun/tools/jstat/gcCauseOutput1.awk +++ b/jdk/test/sun/tools/jstat/gcCauseOutput1.awk @@ -30,7 +30,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) { + if ((headerlines == 1) && (datalines == 1)) { exit 0 } else { diff --git a/jdk/test/sun/tools/jstat/gcMetaCapacityOutput1.awk b/jdk/test/sun/tools/jstat/gcMetaCapacityOutput1.awk index 12d9544542a..352e02d6cbc 100644 --- a/jdk/test/sun/tools/jstat/gcMetaCapacityOutput1.awk +++ b/jdk/test/sun/tools/jstat/gcMetaCapacityOutput1.awk @@ -21,7 +21,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) { + if ((headerlines == 1) && (datalines == 1)) { exit 0 } else { diff --git a/jdk/test/sun/tools/jstat/gcNewCapacityOutput1.awk b/jdk/test/sun/tools/jstat/gcNewCapacityOutput1.awk index 0491fa52076..f4473dc37e4 100644 --- a/jdk/test/sun/tools/jstat/gcNewCapacityOutput1.awk +++ b/jdk/test/sun/tools/jstat/gcNewCapacityOutput1.awk @@ -22,7 +22,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) { + if ((headerlines == 1) && (datalines == 1)) { exit 0 } else { diff --git a/jdk/test/sun/tools/jstat/gcOldCapacityOutput1.awk b/jdk/test/sun/tools/jstat/gcOldCapacityOutput1.awk index 7fb4575163a..cbf88756060 100644 --- a/jdk/test/sun/tools/jstat/gcOldCapacityOutput1.awk +++ b/jdk/test/sun/tools/jstat/gcOldCapacityOutput1.awk @@ -21,7 +21,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) { + if ((headerlines == 1) && (datalines == 1)) { exit 0 } else { diff --git a/jdk/test/sun/tools/jstat/gcOldOutput1.awk b/jdk/test/sun/tools/jstat/gcOldOutput1.awk index c007f66b3be..319f707d273 100644 --- a/jdk/test/sun/tools/jstat/gcOldOutput1.awk +++ b/jdk/test/sun/tools/jstat/gcOldOutput1.awk @@ -22,7 +22,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) { + if ((headerlines == 1) && (datalines == 1)) { exit 0 } else { diff --git a/jdk/test/sun/tools/jstat/gcOutput1.awk b/jdk/test/sun/tools/jstat/gcOutput1.awk index d1d90a281e2..5bd59fe0d8e 100644 --- a/jdk/test/sun/tools/jstat/gcOutput1.awk +++ b/jdk/test/sun/tools/jstat/gcOutput1.awk @@ -22,7 +22,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) { + if ((headerlines == 1) && (datalines == 1)) { exit 0 } else { diff --git a/jdk/test/sun/tools/jstat/lineCounts1.awk b/jdk/test/sun/tools/jstat/lineCounts1.awk index dd6d5f8fbf5..cc974104b99 100644 --- a/jdk/test/sun/tools/jstat/lineCounts1.awk +++ b/jdk/test/sun/tools/jstat/lineCounts1.awk @@ -25,7 +25,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 5) && (totallines == 6)) { + if ((headerlines == 1) && (datalines == 5)) { exit 0 } else { diff --git a/jdk/test/sun/tools/jstat/lineCounts2.awk b/jdk/test/sun/tools/jstat/lineCounts2.awk index adecd0a0572..ac2009d2e0b 100644 --- a/jdk/test/sun/tools/jstat/lineCounts2.awk +++ b/jdk/test/sun/tools/jstat/lineCounts2.awk @@ -21,7 +21,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) { + if ((headerlines == 1) && (datalines == 1)) { exit 0 } else { diff --git a/jdk/test/sun/tools/jstat/lineCounts3.awk b/jdk/test/sun/tools/jstat/lineCounts3.awk index 24788b429e0..9b6d3ecec59 100644 --- a/jdk/test/sun/tools/jstat/lineCounts3.awk +++ b/jdk/test/sun/tools/jstat/lineCounts3.awk @@ -30,7 +30,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 10) && (totallines == 11)) { + if ((headerlines == 1) && (datalines == 10)) { exit 0 } else { exit 1 diff --git a/jdk/test/sun/tools/jstat/lineCounts4.awk b/jdk/test/sun/tools/jstat/lineCounts4.awk index c4ea918fdd2..db40ad355c6 100644 --- a/jdk/test/sun/tools/jstat/lineCounts4.awk +++ b/jdk/test/sun/tools/jstat/lineCounts4.awk @@ -36,7 +36,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 2) && (datalines == 11) && (totallines == 13) && (datalines2 == 1)) { + if ((headerlines == 2) && (datalines == 11) && (datalines2 == 1)) { exit 0 } else { exit 1 diff --git a/jdk/test/sun/tools/jstat/printCompilationOutput1.awk b/jdk/test/sun/tools/jstat/printCompilationOutput1.awk index f2e26213975..d165e4d997e 100644 --- a/jdk/test/sun/tools/jstat/printCompilationOutput1.awk +++ b/jdk/test/sun/tools/jstat/printCompilationOutput1.awk @@ -25,7 +25,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) { + if ((headerlines == 1) && (datalines == 1)) { exit 0 } else { diff --git a/jdk/test/sun/tools/jstat/timeStamp1.awk b/jdk/test/sun/tools/jstat/timeStamp1.awk index cce381ce41d..908f4230419 100644 --- a/jdk/test/sun/tools/jstat/timeStamp1.awk +++ b/jdk/test/sun/tools/jstat/timeStamp1.awk @@ -21,7 +21,7 @@ BEGIN { { totallines++; print $0 } END { - if ((headerlines == 1) && (datalines == 1) && (totallines == 2)) { + if ((headerlines == 1) && (datalines == 1)) { exit 0 } else { From f85948cc0c53fd79b819da72fe1b28d0c2b98155 Mon Sep 17 00:00:00 2001 From: Artem Smotrakov Date: Tue, 21 Jan 2014 16:54:26 -0500 Subject: [PATCH 052/158] 8028431: NullPointerException in DerValue.equals(DerValue) Reviewed-by: mullan --- .../classes/sun/security/util/DerValue.java | 26 +++----- .../X509Certificate/X509BadCertificate.java | 63 +++++++++++++++++++ .../cert/X509Certificate/bad-cert-1.pem | 21 +++++++ 3 files changed, 94 insertions(+), 16 deletions(-) create mode 100644 jdk/test/java/security/cert/X509Certificate/X509BadCertificate.java create mode 100644 jdk/test/java/security/cert/X509Certificate/bad-cert-1.pem diff --git a/jdk/src/share/classes/sun/security/util/DerValue.java b/jdk/src/share/classes/sun/security/util/DerValue.java index beb51c19ae3..abb45cc6558 100644 --- a/jdk/src/share/classes/sun/security/util/DerValue.java +++ b/jdk/src/share/classes/sun/security/util/DerValue.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 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 @@ -745,19 +745,6 @@ public class DerValue { return buffer.getGeneralizedTime(data.available()); } - /** - * Returns true iff the other object is a DER value which - * is bitwise equal to this one. - * - * @param other the object being compared with this one - */ - public boolean equals(Object other) { - if (other instanceof DerValue) - return equals((DerValue)other); - else - return false; - } - /** * Bitwise equality comparison. DER encoded values have a single * encoding, so that bitwise equality of the encoded values is an @@ -765,10 +752,15 @@ public class DerValue { * * @param other the object being compared with this one */ - public boolean equals(DerValue other) { - if (this == other) { + @Override + public boolean equals(Object o) { + if (this == o) { return true; } + if (!(o instanceof DerValue)) { + return false; + } + DerValue other = (DerValue) o; if (tag != other.tag) { return false; } @@ -801,6 +793,7 @@ public class DerValue { * * @return printable representation of the value */ + @Override public String toString() { try { @@ -928,6 +921,7 @@ public class DerValue { * * @return a hashcode for this DerValue. */ + @Override public int hashCode() { return toString().hashCode(); } diff --git a/jdk/test/java/security/cert/X509Certificate/X509BadCertificate.java b/jdk/test/java/security/cert/X509Certificate/X509BadCertificate.java new file mode 100644 index 00000000000..b2a6c6923fa --- /dev/null +++ b/jdk/test/java/security/cert/X509Certificate/X509BadCertificate.java @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2001, 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8028431 + * @summary Make sure that proper CertificateException is thrown + * when loading bad x509 certificate + * @author Artem Smotrakov + */ + +import java.io.File; +import java.io.FileInputStream; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.security.cert.CertificateException; + +public class X509BadCertificate { + + public static void main(String[] args) throws Exception { + test("bad-cert-1.pem"); + } + + /** + * Parse X509 certificates. + */ + static void test(String filename) throws Exception { + try { + System.out.println("Parse file " + filename); + File f = new File(System.getProperty("test.src", "."), filename); + try (FileInputStream fis = new FileInputStream(f)) { + CertificateFactory cf = CertificateFactory.getInstance("X509"); + X509Certificate cert = (X509Certificate) + cf.generateCertificate(fis); + } + throw new Exception("Test failed: " + + "expected CertificateParsingException was not thrown"); + } catch (CertificateException e) { + System.out.println("Test passed: expected exception was thrown: " + + e.toString()); + } + } +} diff --git a/jdk/test/java/security/cert/X509Certificate/bad-cert-1.pem b/jdk/test/java/security/cert/X509Certificate/bad-cert-1.pem new file mode 100644 index 00000000000..0e6c355d0fd --- /dev/null +++ b/jdk/test/java/security/cert/X509Certificate/bad-cert-1.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIJAJYB3qu9C2kiMA0GCSqGSIb3DQEBBQUAMEoxDTALBgNV +BAMMBFRlc3QxDTALBgNVBAsMBEphdmExDzANBgNVBAoMBk9yYWNsZTEMMAoGA1UE +BwwDU1BCMQswCQYDVQQGEwJSVTAeFw0xMzEyMjMwNzA4MDhaFw0yMzEyMjEwNzA4 +MDhaMEoxDTALBgNVBAMMBFRlc3QxDTALBgNVBAsMBEphdmExDzANBgNVBAoMBk9y +YWNsZTEMMAoGA1UMBwwDU1BCMQswCQYDVQQGEwJSVTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAOqiCN4gFxehl547Q7/VNGbGApr+wszLdanHPucAH6Wf +LtcRhKNUSqtBAQxEpFrTpMNEqm2GElAjiPa6m48qIjLVSvOb/9w3G/yXB8zyZbIm +/Nfp2sT4OEaa1JSEZSpolhS4FfqYzjGQp5cn4Xn4zKjDgiceHgfLls5x2dRydQZO +Yf91qSIioZxVHUtlo8yztkieiSaqPWt3nJ4PIwhFbsu1HVmWaYZD+nBYCKgVHqrS +cueO98Ca4Doz73O27X1dVbQBdLS0JI7qVAG8LD388iPL8qbsOkgWPzmEQ+kLRKO4 +g7RpuwlXuwaMSh95NWaxlu4Ob6GRJQmpconYoe13+7ECAwEAAaNQME4wHQYDVR0O +BBYEFIG8TPobXcbNbDi+zKudd9whpxoNMB8GA1UdIwQYMBaAFIG8TPobXcbNbDi+ +zKudd9whpxoNMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFRQADggEBAAynN+e7 +h+ufT5SBKN/gBuJAnF1mKIPESiipuv5KoYUGZOY8ShgYLcwY+qnbuHYFUlvq6Zns +K4/e+x/16h32vD7dEPkNvukbvER4YJQQiN6osDfXpTPzixYftWdmtX0u8xQfwb/g +R8DS7bazz99jVXk+jTK4yWBY+gMwEat+LyNQ5cyq8Qhi1oBKUbGRbiOts19B97fn +Rv8TsyXN3INLGYhdVxZoD7E5tyG1ydSFmOMadulAC2epBXDHOXZnz2UWauJc0XW5 +1L/YQVri47VkdHS3tisBzELEJdLmdMDb+5tAU+lItXmTXe2/PB53WIvsEIb4t+eQ +wY0hCj9lVJlajTQ= +-----END CERTIFICATE----- From 7591b3dd893185b8cd41b935e3602284489da783 Mon Sep 17 00:00:00 2001 From: Gerard Ziemski Date: Tue, 21 Jan 2014 16:45:10 -0600 Subject: [PATCH 053/158] 7015395: [TESTBUG] runtime/6626217/Test6626217.sh fails if compilation happens fast enough for timestamps to be equal Insert 2 second sleep between copying of the src files and the compilation, to make sure the timestamps of *.class files are in the future of *.java files. Reviewed-by: coleenp, fparain --- hotspot/test/runtime/6626217/Test6626217.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hotspot/test/runtime/6626217/Test6626217.sh b/hotspot/test/runtime/6626217/Test6626217.sh index 363d172de2c..cc9a721194e 100644 --- a/hotspot/test/runtime/6626217/Test6626217.sh +++ b/hotspot/test/runtime/6626217/Test6626217.sh @@ -48,6 +48,11 @@ ${CP} ${TESTSRC}${FS}* ${THIS_DIR} # A Clean Compile: this line will probably fail within jtreg as have a clean dir: ${RM} -f *.class *.impl many_loader.java +# Make sure that the compilation steps occurs in the future as not to allow fast systems +# to copy and compile bug_21227.java so fast as to make the class and java have the same +# time stamp, which later on would make the compilation step of many_loader.java fail +sleep 2 + # Compile all the usual suspects, including the default 'many_loader' ${CP} many_loader1.java.foo many_loader.java ${JAVAC} ${TESTJAVACOPTS} -source 1.4 -target 1.4 -Xlint *.java From 0c43978be6a06df23ff3c06c175320a9660f6203 Mon Sep 17 00:00:00 2001 From: Igor Veresov Date: Tue, 21 Jan 2014 20:05:28 -0800 Subject: [PATCH 054/158] 8031743: C2: loadI2L_immI broken for negative memory values Restrict loadI2L_imm optimizations to positive values of mask Reviewed-by: kvn, dlong --- hotspot/src/cpu/sparc/vm/sparc.ad | 29 +++++++--- hotspot/src/cpu/x86/vm/x86_32.ad | 17 +++++- hotspot/src/cpu/x86/vm/x86_64.ad | 17 +++++- .../test/compiler/codegen/LoadWithMask2.java | 55 +++++++++++++++++++ 4 files changed, 103 insertions(+), 15 deletions(-) create mode 100644 hotspot/test/compiler/codegen/LoadWithMask2.java diff --git a/hotspot/src/cpu/sparc/vm/sparc.ad b/hotspot/src/cpu/sparc/vm/sparc.ad index 885d4a4ffe4..535995135f7 100644 --- a/hotspot/src/cpu/sparc/vm/sparc.ad +++ b/hotspot/src/cpu/sparc/vm/sparc.ad @@ -3361,8 +3361,8 @@ operand immI16() %{ interface(CONST_INTER); %} -// Unsigned (positive) Integer Immediate: 13-bit -operand immU13() %{ +// Unsigned Integer Immediate: 12-bit (non-negative that fits in simm13) +operand immU12() %{ predicate((0 <= n->get_int()) && Assembler::is_simm13(n->get_int())); match(ConI); op_cost(0); @@ -3398,6 +3398,17 @@ operand immI5() %{ interface(CONST_INTER); %} +// Int Immediate non-negative +operand immU31() +%{ + predicate(n->get_int() >= 0); + match(ConI); + + op_cost(0); + format %{ %} + interface(CONST_INTER); +%} + // Integer Immediate: 0-bit operand immI0() %{ predicate(n->get_int() == 0); @@ -5847,13 +5858,13 @@ instruct loadI2L_immI_65535(iRegL dst, indOffset13m7 mem, immI_65535 mask) %{ ins_pipe(iload_mem); %} -// Load Integer with a 13-bit mask into a Long Register -instruct loadI2L_immI13(iRegL dst, memory mem, immI13 mask) %{ +// Load Integer with a 12-bit mask into a Long Register +instruct loadI2L_immU12(iRegL dst, memory mem, immU12 mask) %{ match(Set dst (ConvI2L (AndI (LoadI mem) mask))); ins_cost(MEMORY_REF_COST + DEFAULT_COST); size(2*4); - format %{ "LDUW $mem,$dst\t! int & 13-bit mask -> long\n\t" + format %{ "LDUW $mem,$dst\t! int & 12-bit mask -> long\n\t" "AND $dst,$mask,$dst" %} ins_encode %{ Register Rdst = $dst$$Register; @@ -5863,13 +5874,13 @@ instruct loadI2L_immI13(iRegL dst, memory mem, immI13 mask) %{ ins_pipe(iload_mem); %} -// Load Integer with a 32-bit mask into a Long Register -instruct loadI2L_immI(iRegL dst, memory mem, immI mask, iRegL tmp) %{ +// Load Integer with a 31-bit mask into a Long Register +instruct loadI2L_immU31(iRegL dst, memory mem, immU31 mask, iRegL tmp) %{ match(Set dst (ConvI2L (AndI (LoadI mem) mask))); effect(TEMP dst, TEMP tmp); ins_cost(MEMORY_REF_COST + 2*DEFAULT_COST); - format %{ "LDUW $mem,$dst\t! int & 32-bit mask -> long\n\t" + format %{ "LDUW $mem,$dst\t! int & 31-bit mask -> long\n\t" "SET $mask,$tmp\n\t" "AND $dst,$tmp,$dst" %} ins_encode %{ @@ -8964,7 +8975,7 @@ instruct testL_reg_con(flagsRegL xcc, iRegL op1, immL13 con, immL0 zero) %{ ins_pipe(ialu_cconly_reg_reg); %} -instruct compU_iReg_imm13(flagsRegU icc, iRegI op1, immU13 op2 ) %{ +instruct compU_iReg_imm13(flagsRegU icc, iRegI op1, immU12 op2 ) %{ match(Set icc (CmpU op1 op2)); size(4); diff --git a/hotspot/src/cpu/x86/vm/x86_32.ad b/hotspot/src/cpu/x86/vm/x86_32.ad index 2aa9e5f5793..90c1d899ff1 100644 --- a/hotspot/src/cpu/x86/vm/x86_32.ad +++ b/hotspot/src/cpu/x86/vm/x86_32.ad @@ -3889,6 +3889,17 @@ operand immI16() %{ interface(CONST_INTER); %} +// Int Immediate non-negative +operand immU31() +%{ + predicate(n->get_int() >= 0); + match(ConI); + + op_cost(0); + format %{ %} + interface(CONST_INTER); +%} + // Constant for long shifts operand immI_32() %{ predicate( n->get_int() == 32 ); @@ -6119,12 +6130,12 @@ instruct loadI2L_immI_65535(eRegL dst, memory mem, immI_65535 mask, eFlagsReg cr ins_pipe(ialu_reg_mem); %} -// Load Integer with 32-bit mask into Long Register -instruct loadI2L_immI(eRegL dst, memory mem, immI mask, eFlagsReg cr) %{ +// Load Integer with 31-bit mask into Long Register +instruct loadI2L_immU31(eRegL dst, memory mem, immU31 mask, eFlagsReg cr) %{ match(Set dst (ConvI2L (AndI (LoadI mem) mask))); effect(KILL cr); - format %{ "MOV $dst.lo,$mem\t# int & 32-bit mask -> long\n\t" + format %{ "MOV $dst.lo,$mem\t# int & 31-bit mask -> long\n\t" "XOR $dst.hi,$dst.hi\n\t" "AND $dst.lo,$mask" %} ins_encode %{ diff --git a/hotspot/src/cpu/x86/vm/x86_64.ad b/hotspot/src/cpu/x86/vm/x86_64.ad index 182a7012ac8..9fe92953ace 100644 --- a/hotspot/src/cpu/x86/vm/x86_64.ad +++ b/hotspot/src/cpu/x86/vm/x86_64.ad @@ -3086,6 +3086,17 @@ operand immI16() interface(CONST_INTER); %} +// Int Immediate non-negative +operand immU31() +%{ + predicate(n->get_int() >= 0); + match(ConI); + + op_cost(0); + format %{ %} + interface(CONST_INTER); +%} + // Constant for long shifts operand immI_32() %{ @@ -5042,12 +5053,12 @@ instruct loadI2L_immI_65535(rRegL dst, memory mem, immI_65535 mask) %{ ins_pipe(ialu_reg_mem); %} -// Load Integer with a 32-bit mask into Long Register -instruct loadI2L_immI(rRegL dst, memory mem, immI mask, rFlagsReg cr) %{ +// Load Integer with a 31-bit mask into Long Register +instruct loadI2L_immU31(rRegL dst, memory mem, immU31 mask, rFlagsReg cr) %{ match(Set dst (ConvI2L (AndI (LoadI mem) mask))); effect(KILL cr); - format %{ "movl $dst, $mem\t# int & 32-bit mask -> long\n\t" + format %{ "movl $dst, $mem\t# int & 31-bit mask -> long\n\t" "andl $dst, $mask" %} ins_encode %{ Register Rdst = $dst$$Register; diff --git a/hotspot/test/compiler/codegen/LoadWithMask2.java b/hotspot/test/compiler/codegen/LoadWithMask2.java new file mode 100644 index 00000000000..c1ae52881c9 --- /dev/null +++ b/hotspot/test/compiler/codegen/LoadWithMask2.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8031743 + * @summary loadI2L_immI broken for negative memory values + * @run main/othervm -server -Xbatch -XX:-TieredCompilation -XX:CompileCommand=compileonly,*.foo* LoadWithMask2 + * + */ +public class LoadWithMask2 { + static int x; + static long foo1() { + return x & 0xfffffffe; + } + static long foo2() { + return x & 0xff000000; + } + static long foo3() { + return x & 0x8abcdef1; + } + + public static void main(String[] args) { + x = -1; + long l = 0; + for (int i = 0; i < 100000; ++i) { + l = foo1() & foo2() & foo3(); + } + if (l > 0) { + System.out.println("FAILED"); + System.exit(97); + } + System.out.println("PASSED"); + } +} From 5050fd536303f4a26cc0b701b0820c367c17d143 Mon Sep 17 00:00:00 2001 From: Henry Jen Date: Tue, 21 Jan 2014 20:07:14 -0800 Subject: [PATCH 055/158] 8028407: adjust-mflags.sh failed build with GNU Make 4.0 with -I Reviewed-by: erikj --- hotspot/make/bsd/makefiles/adjust-mflags.sh | 2 +- hotspot/make/linux/makefiles/adjust-mflags.sh | 2 +- hotspot/make/solaris/makefiles/adjust-mflags.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hotspot/make/bsd/makefiles/adjust-mflags.sh b/hotspot/make/bsd/makefiles/adjust-mflags.sh index 484fa85e8bb..97bc02db7f1 100644 --- a/hotspot/make/bsd/makefiles/adjust-mflags.sh +++ b/hotspot/make/bsd/makefiles/adjust-mflags.sh @@ -64,7 +64,7 @@ MFLAGS=` echo "$MFLAGS" \ | sed ' s/^-/ -/ - s/ -\([^ ][^ ]*\)j/ -\1 -j/ + s/ -\([^ I][^ I]*\)j/ -\1 -j/ s/ -j[0-9][0-9]*/ -j/ s/ -j\([^ ]\)/ -j -\1/ s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/ diff --git a/hotspot/make/linux/makefiles/adjust-mflags.sh b/hotspot/make/linux/makefiles/adjust-mflags.sh index 484fa85e8bb..97bc02db7f1 100644 --- a/hotspot/make/linux/makefiles/adjust-mflags.sh +++ b/hotspot/make/linux/makefiles/adjust-mflags.sh @@ -64,7 +64,7 @@ MFLAGS=` echo "$MFLAGS" \ | sed ' s/^-/ -/ - s/ -\([^ ][^ ]*\)j/ -\1 -j/ + s/ -\([^ I][^ I]*\)j/ -\1 -j/ s/ -j[0-9][0-9]*/ -j/ s/ -j\([^ ]\)/ -j -\1/ s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/ diff --git a/hotspot/make/solaris/makefiles/adjust-mflags.sh b/hotspot/make/solaris/makefiles/adjust-mflags.sh index 484fa85e8bb..97bc02db7f1 100644 --- a/hotspot/make/solaris/makefiles/adjust-mflags.sh +++ b/hotspot/make/solaris/makefiles/adjust-mflags.sh @@ -64,7 +64,7 @@ MFLAGS=` echo "$MFLAGS" \ | sed ' s/^-/ -/ - s/ -\([^ ][^ ]*\)j/ -\1 -j/ + s/ -\([^ I][^ I]*\)j/ -\1 -j/ s/ -j[0-9][0-9]*/ -j/ s/ -j\([^ ]\)/ -j -\1/ s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/ From 6b965a6ae168aa4a26a21af66049cf3da76f0f90 Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Wed, 22 Jan 2014 11:03:44 -0800 Subject: [PATCH 056/158] 8032397: Remove sun.misc.Ref Reviewed-by: alanb --- .../classes/sun/applet/AppletImageRef.java | 54 +++++++- .../sun/applet/AppletResourceLoader.java | 8 +- .../classes/sun/applet/AppletViewer.java | 15 +-- jdk/src/share/classes/sun/misc/Cache.java | 38 ++++-- jdk/src/share/classes/sun/misc/Ref.java | 122 ------------------ .../CheckPackageAccess.java | 4 +- .../notExtending/NotExtending.java | 4 +- 7 files changed, 86 insertions(+), 159 deletions(-) delete mode 100644 jdk/src/share/classes/sun/misc/Ref.java diff --git a/jdk/src/share/classes/sun/applet/AppletImageRef.java b/jdk/src/share/classes/sun/applet/AppletImageRef.java index fa9b2d73009..f264e890351 100644 --- a/jdk/src/share/classes/sun/applet/AppletImageRef.java +++ b/jdk/src/share/classes/sun/applet/AppletImageRef.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, 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 @@ -27,12 +27,32 @@ package sun.applet; import java.awt.Toolkit; import java.awt.Image; +import java.lang.ref.SoftReference; import sun.awt.image.URLImageSource; import java.net.URL; -class AppletImageRef extends sun.misc.Ref { +class AppletImageRef { + private SoftReference soft = null; + URL url; + /** + * Returns a pointer to the object referenced by this Ref. If the object + * has been thrown away by the garbage collector, it will be + * reconstituted. This method does everything necessary to ensure that the garbage + * collector throws things away in Least Recently Used(LRU) order. Applications should + * never override this method. The get() method effectively caches calls to + * reconstitute(). + */ + public synchronized Image get() { + Image t = check(); + if (t == null) { + t = reconstitute(); + setThing(t); + } + return t; + } + /** * Create the Ref */ @@ -40,14 +60,38 @@ class AppletImageRef extends sun.misc.Ref { this.url = url; } - public void flush() { - super.flush(); + /** + * Flushes the cached object. Forces the next invocation of get() to + * invoke reconstitute(). + */ + public synchronized void flush() { + SoftReference s = soft; + if (s != null) s.clear(); + soft = null; + } + + /** + * Sets the thing to the specified object. + * @param thing the specified object + */ + public synchronized void setThing(Object thing) { + flush(); + soft = new SoftReference(thing); + } + + /** + * Checks to see what object is being pointed at by this Ref and returns it. + */ + public synchronized Image check() { + SoftReference s = soft; + if (s == null) return null; + return s.get(); } /** * Reconsitute the image. Only called when the ref has been flushed. */ - public Object reconstitute() { + public Image reconstitute() { Image img = Toolkit.getDefaultToolkit().createImage(new URLImageSource(url)); return img; } diff --git a/jdk/src/share/classes/sun/applet/AppletResourceLoader.java b/jdk/src/share/classes/sun/applet/AppletResourceLoader.java index 3470557cf6b..f0d84671e11 100644 --- a/jdk/src/share/classes/sun/applet/AppletResourceLoader.java +++ b/jdk/src/share/classes/sun/applet/AppletResourceLoader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, 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 @@ -27,21 +27,17 @@ package sun.applet; import java.net.URL; import java.awt.Image; -import sun.misc.Ref; /** * Part of this class still remains only to support legacy, 100%-impure * applications such as HotJava 1.0.1. */ +@Deprecated public class AppletResourceLoader { public static Image getImage(URL url) { return AppletViewer.getCachedImage(url); } - public static Ref getImageRef(URL url) { - return AppletViewer.getCachedImageRef(url); - } - public static void flushImages() { AppletViewer.flushImageCache(); } diff --git a/jdk/src/share/classes/sun/applet/AppletViewer.java b/jdk/src/share/classes/sun/applet/AppletViewer.java index 03335e83ab9..a97ac33bbe0 100644 --- a/jdk/src/share/classes/sun/applet/AppletViewer.java +++ b/jdk/src/share/classes/sun/applet/AppletViewer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,7 +35,6 @@ import java.applet.*; import java.net.URL; import java.net.MalformedURLException; import java.net.SocketPermission; -import sun.misc.Ref; import java.security.AccessController; import java.security.PrivilegedAction; import java.lang.reflect.InvocationTargetException; @@ -390,22 +389,18 @@ public class AppletViewer extends Frame implements AppletContext, return getCachedImage(url); } + /** + * Get an image. + */ static Image getCachedImage(URL url) { // System.getSecurityManager().checkConnection(url.getHost(), url.getPort()); - return (Image)getCachedImageRef(url).get(); - } - - /** - * Get an image ref. - */ - static Ref getCachedImageRef(URL url) { synchronized (imageRefs) { AppletImageRef ref = (AppletImageRef)imageRefs.get(url); if (ref == null) { ref = new AppletImageRef(url); imageRefs.put(url, ref); } - return ref; + return ref.get(); } } diff --git a/jdk/src/share/classes/sun/misc/Cache.java b/jdk/src/share/classes/sun/misc/Cache.java index fde032921f9..467481183a6 100644 --- a/jdk/src/share/classes/sun/misc/Cache.java +++ b/jdk/src/share/classes/sun/misc/Cache.java @@ -25,6 +25,7 @@ package sun.misc; +import java.lang.ref.SoftReference; import java.util.Dictionary; import java.util.Enumeration; import java.util.NoSuchElementException; @@ -32,12 +33,26 @@ import java.util.NoSuchElementException; /** * Caches the collision list. */ -class CacheEntry extends Ref { +class CacheEntry { int hash; Object key; CacheEntry next; - public Object reconstitute() { - return null; + SoftReference value; + + public CacheEntry() { + value = null; + } + + public CacheEntry(Object o) { + value = new SoftReference<>(o); + } + + public Object get() { + return value.get(); + } + + public void setThing(Object thing) { + value = new SoftReference<>(thing); } } @@ -72,7 +87,6 @@ class CacheEntry extends Ref { * * @see java.lang.Object#hashCode * @see java.lang.Object#equals - * @see sun.misc.Ref * @deprecated Consider {@link java.util.LinkedHashMap} for LRU caches. */ @Deprecated @@ -192,7 +206,7 @@ public int index = (hash & 0x7FFFFFFF) % tab.length; for (CacheEntry e = tab[index]; e != null; e = e.next) { if ((e.hash == hash) && e.key.equals(key)) { - return e.check(); + return e.get(); } } return null; @@ -220,7 +234,7 @@ public for (CacheEntry old = oldTable[i]; old != null;) { CacheEntry e = old; old = old.next; - if (e.check() != null) { + if (e.get() != null) { int index = (e.hash & 0x7FFFFFFF) % newCapacity; e.next = newTable[index]; newTable[index] = e; @@ -253,10 +267,10 @@ public CacheEntry ne = null; for (CacheEntry e = tab[index]; e != null; e = e.next) { if ((e.hash == hash) && e.key.equals(key)) { - Object old = e.check(); + Object old = e.get(); e.setThing(value); return old; - } else if (e.check() == null) + } else if (e.get() == null) ne = e; /* reuse old flushed value */ } @@ -296,7 +310,7 @@ public tab[index] = e.next; } count--; - return e.check(); + return e.get(); } } return null; @@ -322,7 +336,7 @@ class CacheEnumerator implements Enumeration { public boolean hasMoreElements() { while (index >= 0) { while (entry != null) - if (entry.check() != null) + if (entry.get() != null) return true; else entry = entry.next; @@ -338,8 +352,8 @@ class CacheEnumerator implements Enumeration { if (entry != null) { CacheEntry e = entry; entry = e.next; - if (e.check() != null) - return keys ? e.key : e.check(); + if (e.get() != null) + return keys ? e.key : e.get(); } } throw new NoSuchElementException("CacheEnumerator"); diff --git a/jdk/src/share/classes/sun/misc/Ref.java b/jdk/src/share/classes/sun/misc/Ref.java deleted file mode 100644 index 770cb3d42b8..00000000000 --- a/jdk/src/share/classes/sun/misc/Ref.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 1995, 2004, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package sun.misc; -import java.lang.ref.SoftReference; - - -/** - * A "Ref" is an indirect reference to an object that the garbage collector - * knows about. An application should override the reconstitute() method with one - * that will construct the object based on information in the Ref, often by - * reading from a file. The get() method retains a cache of the result of the last call to - * reconstitute() in the Ref. When space gets tight, the garbage collector - * will clear old Ref cache entries when there are no other pointers to the - * object. In normal usage, Ref will always be subclassed. The subclass will add the - * instance variables necessary for the reconstitute() method to work. It will also add a - * constructor to set them up, and write a version of reconstitute(). - * - * @deprecated This class has been replaced by - * java.util.SoftReference. - * - * @see java.util.SoftReference - * - */ -@Deprecated - -public abstract class Ref { - - private SoftReference soft = null; - - /** - * Returns a pointer to the object referenced by this Ref. If the object - * has been thrown away by the garbage collector, it will be - * reconstituted. This method does everything necessary to ensure that the garbage - * collector throws things away in Least Recently Used(LRU) order. Applications should - * never override this method. The get() method effectively caches calls to - * reconstitute(). - */ - public synchronized Object get() { - Object t = check(); - if (t == null) { - t = reconstitute(); - setThing(t); - } - return t; - } - - /** - * Returns a pointer to the object referenced by this Ref by - * reconstituting it from some external source (such as a file). This method should not - * bother with caching since the method get() will deal with that. - *

- * In normal usage, Ref will always be subclassed. The subclass will add - * the instance variables necessary for reconstitute() to work. It will - * also add a constructor to set them up, and write a version of - * reconstitute(). - */ - public abstract Object reconstitute(); - - /** - * Flushes the cached object. Forces the next invocation of get() to - * invoke reconstitute(). - */ - public synchronized void flush() { - SoftReference s = soft; - if (s != null) s.clear(); - soft = null; - } - - /** - * Sets the thing to the specified object. - * @param thing the specified object - */ - public synchronized void setThing(Object thing) { - flush(); - soft = new SoftReference(thing); - } - - /** - * Checks to see what object is being pointed at by this Ref and returns it. - */ - public synchronized Object check() { - SoftReference s = soft; - if (s == null) return null; - return s.get(); - } - - /** - * Constructs a new Ref. - */ - public Ref() { } - - /** - * Constructs a new Ref that initially points to thing. - */ - public Ref(Object thing) { - setThing(thing); - } - -} diff --git a/jdk/test/java/rmi/RMISecurityManager/checkPackageAccess/CheckPackageAccess.java b/jdk/test/java/rmi/RMISecurityManager/checkPackageAccess/CheckPackageAccess.java index 32cbe5ff481..93d1ce8427d 100644 --- a/jdk/test/java/rmi/RMISecurityManager/checkPackageAccess/CheckPackageAccess.java +++ b/jdk/test/java/rmi/RMISecurityManager/checkPackageAccess/CheckPackageAccess.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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,7 +43,7 @@ public class CheckPackageAccess { * access to classes in the sun.* hierarchy, which is what is specified * in the JDK's default java.security file. */ - private final static String restrictedClassName = "sun.misc.Ref"; + private final static String restrictedClassName = "sun.misc.Cache"; public static void main(String[] args) { diff --git a/jdk/test/java/rmi/server/RemoteObject/notExtending/NotExtending.java b/jdk/test/java/rmi/server/RemoteObject/notExtending/NotExtending.java index ef524a4dd8a..fd5ef1eacce 100644 --- a/jdk/test/java/rmi/server/RemoteObject/notExtending/NotExtending.java +++ b/jdk/test/java/rmi/server/RemoteObject/notExtending/NotExtending.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -123,7 +123,7 @@ public class NotExtending implements Remote { } /** - * Force desparate garbage collection so that all sun.misc.Ref instances + * Force desperate garbage collection so that soft references * will be cleared. * * This method is required with the JDK 1.1.x RMI runtime so that the From 91573b8695b9c6fcb990db805b1ab16aee0c185f Mon Sep 17 00:00:00 2001 From: Vladimir Ivanov Date: Thu, 23 Jan 2014 01:23:23 +0400 Subject: [PATCH 057/158] 8031695: CHA ignores default methods during analysis leading to incorrect code generation Reviewed-by: jrose, acorn, hseigel, lfoltan --- hotspot/src/share/vm/code/dependencies.cpp | 6 +- .../DefaultAndConcreteMethodsCHA.java | 58 +++++++++++++++++++ 2 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 hotspot/test/compiler/inlining/DefaultAndConcreteMethodsCHA.java diff --git a/hotspot/src/share/vm/code/dependencies.cpp b/hotspot/src/share/vm/code/dependencies.cpp index fa209ded55b..257a97c5584 100644 --- a/hotspot/src/share/vm/code/dependencies.cpp +++ b/hotspot/src/share/vm/code/dependencies.cpp @@ -1223,11 +1223,9 @@ bool Dependencies::is_concrete_method(Method* m) { // We could also return false if m does not yet appear to be // executed, if the VM version supports this distinction also. + // Default methods are considered "concrete" as well. return !m->is_abstract() && - !InstanceKlass::cast(m->method_holder())->is_interface(); - // TODO: investigate whether default methods should be - // considered as "concrete" in this situation. For now they - // are not. + !m->is_overpass(); // error functions aren't concrete } diff --git a/hotspot/test/compiler/inlining/DefaultAndConcreteMethodsCHA.java b/hotspot/test/compiler/inlining/DefaultAndConcreteMethodsCHA.java new file mode 100644 index 00000000000..821ac79067f --- /dev/null +++ b/hotspot/test/compiler/inlining/DefaultAndConcreteMethodsCHA.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8031695 + * @summary CHA ignores default methods during analysis leading to incorrect code generation + * + * @run main/othervm -Xbatch DefaultAndConcreteMethodsCHA + */ +interface I { + default int m() { return 0; } +} + +class A implements I {} + +class C extends A { } +class D extends A { public int m() { return 1; } } + +public class DefaultAndConcreteMethodsCHA { + public static int test(A obj) { + return obj.m(); + } + public static void main(String[] args) { + for (int i = 0; i < 10000; i++) { + int idC = test(new C()); + if (idC != 0) { + throw new Error("C.m didn't invoke I.m: id "+idC); + } + + int idD = test(new D()); + if (idD != 1) { + throw new Error("D.m didn't invoke D.m: id "+idD); + } + } + + } +} From 93283b8191f9df598d273cab6c5c4b7dd2bc9a4b Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Wed, 22 Jan 2014 17:40:58 -0500 Subject: [PATCH 058/158] 8032502: java.time add @param tags to readObject Add @param tags Reviewed-by: lancea, darcy --- jdk/src/share/classes/java/time/Duration.java | 1 + jdk/src/share/classes/java/time/Instant.java | 1 + jdk/src/share/classes/java/time/LocalDate.java | 1 + jdk/src/share/classes/java/time/LocalDateTime.java | 1 + jdk/src/share/classes/java/time/LocalTime.java | 1 + jdk/src/share/classes/java/time/MonthDay.java | 1 + jdk/src/share/classes/java/time/OffsetDateTime.java | 1 + jdk/src/share/classes/java/time/OffsetTime.java | 1 + jdk/src/share/classes/java/time/Period.java | 1 + jdk/src/share/classes/java/time/Year.java | 1 + jdk/src/share/classes/java/time/YearMonth.java | 1 + jdk/src/share/classes/java/time/ZoneId.java | 1 + jdk/src/share/classes/java/time/ZoneOffset.java | 1 + jdk/src/share/classes/java/time/ZoneRegion.java | 1 + jdk/src/share/classes/java/time/ZonedDateTime.java | 1 + jdk/src/share/classes/java/time/chrono/AbstractChronology.java | 1 + .../classes/java/time/chrono/ChronoLocalDateTimeImpl.java | 1 + jdk/src/share/classes/java/time/chrono/ChronoPeriodImpl.java | 1 + .../classes/java/time/chrono/ChronoZonedDateTimeImpl.java | 1 + jdk/src/share/classes/java/time/chrono/HijrahChronology.java | 1 + jdk/src/share/classes/java/time/chrono/HijrahDate.java | 1 + jdk/src/share/classes/java/time/chrono/IsoChronology.java | 1 + jdk/src/share/classes/java/time/chrono/JapaneseChronology.java | 1 + jdk/src/share/classes/java/time/chrono/JapaneseDate.java | 1 + jdk/src/share/classes/java/time/chrono/JapaneseEra.java | 1 + jdk/src/share/classes/java/time/chrono/MinguoChronology.java | 1 + jdk/src/share/classes/java/time/chrono/MinguoDate.java | 1 + .../share/classes/java/time/chrono/ThaiBuddhistChronology.java | 1 + jdk/src/share/classes/java/time/chrono/ThaiBuddhistDate.java | 1 + jdk/src/share/classes/java/time/temporal/ValueRange.java | 3 +++ jdk/src/share/classes/java/time/temporal/WeekFields.java | 3 +++ jdk/src/share/classes/java/time/zone/ZoneOffsetTransition.java | 2 ++ .../share/classes/java/time/zone/ZoneOffsetTransitionRule.java | 1 + jdk/src/share/classes/java/time/zone/ZoneRules.java | 1 + 34 files changed, 39 insertions(+) diff --git a/jdk/src/share/classes/java/time/Duration.java b/jdk/src/share/classes/java/time/Duration.java index 02b882ca40e..c53afe3ebcb 100644 --- a/jdk/src/share/classes/java/time/Duration.java +++ b/jdk/src/share/classes/java/time/Duration.java @@ -1326,6 +1326,7 @@ public final class Duration /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/Instant.java b/jdk/src/share/classes/java/time/Instant.java index d91e1c86568..312e2d4159d 100644 --- a/jdk/src/share/classes/java/time/Instant.java +++ b/jdk/src/share/classes/java/time/Instant.java @@ -1348,6 +1348,7 @@ public final class Instant /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/LocalDate.java b/jdk/src/share/classes/java/time/LocalDate.java index c8ee89c87c5..17b3b24c0ea 100644 --- a/jdk/src/share/classes/java/time/LocalDate.java +++ b/jdk/src/share/classes/java/time/LocalDate.java @@ -2053,6 +2053,7 @@ public final class LocalDate /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/LocalDateTime.java b/jdk/src/share/classes/java/time/LocalDateTime.java index f9975d82329..86633b84165 100644 --- a/jdk/src/share/classes/java/time/LocalDateTime.java +++ b/jdk/src/share/classes/java/time/LocalDateTime.java @@ -1986,6 +1986,7 @@ public final class LocalDateTime /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/LocalTime.java b/jdk/src/share/classes/java/time/LocalTime.java index 08a06317413..4cc12f74dc3 100644 --- a/jdk/src/share/classes/java/time/LocalTime.java +++ b/jdk/src/share/classes/java/time/LocalTime.java @@ -1638,6 +1638,7 @@ public final class LocalTime /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/MonthDay.java b/jdk/src/share/classes/java/time/MonthDay.java index 2339cad5397..5b7844fd468 100644 --- a/jdk/src/share/classes/java/time/MonthDay.java +++ b/jdk/src/share/classes/java/time/MonthDay.java @@ -771,6 +771,7 @@ public final class MonthDay /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/OffsetDateTime.java b/jdk/src/share/classes/java/time/OffsetDateTime.java index caecddca0f4..cd0eff6e567 100644 --- a/jdk/src/share/classes/java/time/OffsetDateTime.java +++ b/jdk/src/share/classes/java/time/OffsetDateTime.java @@ -1925,6 +1925,7 @@ public final class OffsetDateTime /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/OffsetTime.java b/jdk/src/share/classes/java/time/OffsetTime.java index 466cf5ae639..32a7187d0f5 100644 --- a/jdk/src/share/classes/java/time/OffsetTime.java +++ b/jdk/src/share/classes/java/time/OffsetTime.java @@ -1396,6 +1396,7 @@ public final class OffsetTime /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/Period.java b/jdk/src/share/classes/java/time/Period.java index ff6db0885f0..6087618ef9c 100644 --- a/jdk/src/share/classes/java/time/Period.java +++ b/jdk/src/share/classes/java/time/Period.java @@ -1058,6 +1058,7 @@ public final class Period /** * Defend against malicious streams. * + * @param s the stream to read * @throws java.io.InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/Year.java b/jdk/src/share/classes/java/time/Year.java index cc68951351b..ff8528aef8f 100644 --- a/jdk/src/share/classes/java/time/Year.java +++ b/jdk/src/share/classes/java/time/Year.java @@ -1104,6 +1104,7 @@ public final class Year /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/YearMonth.java b/jdk/src/share/classes/java/time/YearMonth.java index e5f42100ac0..97f66de2903 100644 --- a/jdk/src/share/classes/java/time/YearMonth.java +++ b/jdk/src/share/classes/java/time/YearMonth.java @@ -1230,6 +1230,7 @@ public final class YearMonth /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/ZoneId.java b/jdk/src/share/classes/java/time/ZoneId.java index 9b8ebc7267a..16f8bf210c6 100644 --- a/jdk/src/share/classes/java/time/ZoneId.java +++ b/jdk/src/share/classes/java/time/ZoneId.java @@ -624,6 +624,7 @@ public abstract class ZoneId implements Serializable { /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/ZoneOffset.java b/jdk/src/share/classes/java/time/ZoneOffset.java index efbdec9a934..10bd5446e0b 100644 --- a/jdk/src/share/classes/java/time/ZoneOffset.java +++ b/jdk/src/share/classes/java/time/ZoneOffset.java @@ -769,6 +769,7 @@ public final class ZoneOffset /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/ZoneRegion.java b/jdk/src/share/classes/java/time/ZoneRegion.java index 5349b305ac7..83f0b43d775 100644 --- a/jdk/src/share/classes/java/time/ZoneRegion.java +++ b/jdk/src/share/classes/java/time/ZoneRegion.java @@ -196,6 +196,7 @@ final class ZoneRegion extends ZoneId implements Serializable { /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/ZonedDateTime.java b/jdk/src/share/classes/java/time/ZonedDateTime.java index b1342be5e47..752756bb78b 100644 --- a/jdk/src/share/classes/java/time/ZonedDateTime.java +++ b/jdk/src/share/classes/java/time/ZonedDateTime.java @@ -2225,6 +2225,7 @@ public final class ZonedDateTime /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/chrono/AbstractChronology.java b/jdk/src/share/classes/java/time/chrono/AbstractChronology.java index 8b3559135a5..c2e91d7f5f8 100644 --- a/jdk/src/share/classes/java/time/chrono/AbstractChronology.java +++ b/jdk/src/share/classes/java/time/chrono/AbstractChronology.java @@ -766,6 +766,7 @@ public abstract class AbstractChronology implements Chronology { /** * Defend against malicious streams. * + * @param s the stream to read * @throws java.io.InvalidObjectException always */ private void readObject(ObjectInputStream s) throws ObjectStreamException { diff --git a/jdk/src/share/classes/java/time/chrono/ChronoLocalDateTimeImpl.java b/jdk/src/share/classes/java/time/chrono/ChronoLocalDateTimeImpl.java index 21a8548115e..ac5f7b4bfe3 100644 --- a/jdk/src/share/classes/java/time/chrono/ChronoLocalDateTimeImpl.java +++ b/jdk/src/share/classes/java/time/chrono/ChronoLocalDateTimeImpl.java @@ -416,6 +416,7 @@ final class ChronoLocalDateTimeImpl /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/chrono/ChronoPeriodImpl.java b/jdk/src/share/classes/java/time/chrono/ChronoPeriodImpl.java index e0ee43400ed..911144d5b04 100644 --- a/jdk/src/share/classes/java/time/chrono/ChronoPeriodImpl.java +++ b/jdk/src/share/classes/java/time/chrono/ChronoPeriodImpl.java @@ -376,6 +376,7 @@ final class ChronoPeriodImpl /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws ObjectStreamException { diff --git a/jdk/src/share/classes/java/time/chrono/ChronoZonedDateTimeImpl.java b/jdk/src/share/classes/java/time/chrono/ChronoZonedDateTimeImpl.java index 79f3423c5b2..abd21eecaf0 100644 --- a/jdk/src/share/classes/java/time/chrono/ChronoZonedDateTimeImpl.java +++ b/jdk/src/share/classes/java/time/chrono/ChronoZonedDateTimeImpl.java @@ -340,6 +340,7 @@ final class ChronoZonedDateTimeImpl /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/chrono/HijrahChronology.java b/jdk/src/share/classes/java/time/chrono/HijrahChronology.java index 821ff9f5012..3be442cecb7 100644 --- a/jdk/src/share/classes/java/time/chrono/HijrahChronology.java +++ b/jdk/src/share/classes/java/time/chrono/HijrahChronology.java @@ -1096,6 +1096,7 @@ public final class HijrahChronology extends AbstractChronology implements Serial /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/chrono/HijrahDate.java b/jdk/src/share/classes/java/time/chrono/HijrahDate.java index 9ab791ce8e5..9d5059eba20 100644 --- a/jdk/src/share/classes/java/time/chrono/HijrahDate.java +++ b/jdk/src/share/classes/java/time/chrono/HijrahDate.java @@ -654,6 +654,7 @@ public final class HijrahDate /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/chrono/IsoChronology.java b/jdk/src/share/classes/java/time/chrono/IsoChronology.java index c0936b0f292..f84c1c87671 100644 --- a/jdk/src/share/classes/java/time/chrono/IsoChronology.java +++ b/jdk/src/share/classes/java/time/chrono/IsoChronology.java @@ -604,6 +604,7 @@ public final class IsoChronology extends AbstractChronology implements Serializa /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/chrono/JapaneseChronology.java b/jdk/src/share/classes/java/time/chrono/JapaneseChronology.java index b1dbf53de82..7845088eb7e 100644 --- a/jdk/src/share/classes/java/time/chrono/JapaneseChronology.java +++ b/jdk/src/share/classes/java/time/chrono/JapaneseChronology.java @@ -525,6 +525,7 @@ public final class JapaneseChronology extends AbstractChronology implements Seri /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/chrono/JapaneseDate.java b/jdk/src/share/classes/java/time/chrono/JapaneseDate.java index 5c7e545042a..0c1a876eae2 100644 --- a/jdk/src/share/classes/java/time/chrono/JapaneseDate.java +++ b/jdk/src/share/classes/java/time/chrono/JapaneseDate.java @@ -716,6 +716,7 @@ public final class JapaneseDate /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/chrono/JapaneseEra.java b/jdk/src/share/classes/java/time/chrono/JapaneseEra.java index f31597e02f9..0187565869f 100644 --- a/jdk/src/share/classes/java/time/chrono/JapaneseEra.java +++ b/jdk/src/share/classes/java/time/chrono/JapaneseEra.java @@ -357,6 +357,7 @@ public final class JapaneseEra /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/chrono/MinguoChronology.java b/jdk/src/share/classes/java/time/chrono/MinguoChronology.java index f7ee55789fd..1fda0e415d4 100644 --- a/jdk/src/share/classes/java/time/chrono/MinguoChronology.java +++ b/jdk/src/share/classes/java/time/chrono/MinguoChronology.java @@ -355,6 +355,7 @@ public final class MinguoChronology extends AbstractChronology implements Serial /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/chrono/MinguoDate.java b/jdk/src/share/classes/java/time/chrono/MinguoDate.java index 2cb49b6b600..ba25c8da018 100644 --- a/jdk/src/share/classes/java/time/chrono/MinguoDate.java +++ b/jdk/src/share/classes/java/time/chrono/MinguoDate.java @@ -478,6 +478,7 @@ public final class MinguoDate /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/chrono/ThaiBuddhistChronology.java b/jdk/src/share/classes/java/time/chrono/ThaiBuddhistChronology.java index 057c3baaefb..87bc10047ec 100644 --- a/jdk/src/share/classes/java/time/chrono/ThaiBuddhistChronology.java +++ b/jdk/src/share/classes/java/time/chrono/ThaiBuddhistChronology.java @@ -391,6 +391,7 @@ public final class ThaiBuddhistChronology extends AbstractChronology implements /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/chrono/ThaiBuddhistDate.java b/jdk/src/share/classes/java/time/chrono/ThaiBuddhistDate.java index 9e8b88d3465..f403317b11e 100644 --- a/jdk/src/share/classes/java/time/chrono/ThaiBuddhistDate.java +++ b/jdk/src/share/classes/java/time/chrono/ThaiBuddhistDate.java @@ -478,6 +478,7 @@ public final class ThaiBuddhistDate /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/temporal/ValueRange.java b/jdk/src/share/classes/java/time/temporal/ValueRange.java index 980203c6d1d..4e5c2fdb2f6 100644 --- a/jdk/src/share/classes/java/time/temporal/ValueRange.java +++ b/jdk/src/share/classes/java/time/temporal/ValueRange.java @@ -344,10 +344,13 @@ public final class ValueRange implements Serializable { /** * Restore the state of an ValueRange from the stream. * Check that the values are valid. + * + * @param s the stream to read * @throws InvalidObjectException if * the smallest minimum is greater than the smallest maximum, * or the smallest maximum is greater than the largest maximum * or the largest minimum is greater than the largest maximum + * @throws ClassNotFoundException if a class cannot be resolved */ private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException, InvalidObjectException diff --git a/jdk/src/share/classes/java/time/temporal/WeekFields.java b/jdk/src/share/classes/java/time/temporal/WeekFields.java index 7cf985e1a51..3aa362cea60 100644 --- a/jdk/src/share/classes/java/time/temporal/WeekFields.java +++ b/jdk/src/share/classes/java/time/temporal/WeekFields.java @@ -344,8 +344,11 @@ public final class WeekFields implements Serializable { /** * Restore the state of a WeekFields from the stream. * Check that the values are valid. + * + * @param s the stream to read * @throws InvalidObjectException if the serialized object has an invalid * value for firstDayOfWeek or minimalDays. + * @throws ClassNotFoundException if a class cannot be resolved */ private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException, InvalidObjectException diff --git a/jdk/src/share/classes/java/time/zone/ZoneOffsetTransition.java b/jdk/src/share/classes/java/time/zone/ZoneOffsetTransition.java index 263f40155cf..1df7c850b26 100644 --- a/jdk/src/share/classes/java/time/zone/ZoneOffsetTransition.java +++ b/jdk/src/share/classes/java/time/zone/ZoneOffsetTransition.java @@ -173,6 +173,8 @@ public final class ZoneOffsetTransition //----------------------------------------------------------------------- /** * Defend against malicious streams. + * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/zone/ZoneOffsetTransitionRule.java b/jdk/src/share/classes/java/time/zone/ZoneOffsetTransitionRule.java index f52953ca4c1..db1a055a8b0 100644 --- a/jdk/src/share/classes/java/time/zone/ZoneOffsetTransitionRule.java +++ b/jdk/src/share/classes/java/time/zone/ZoneOffsetTransitionRule.java @@ -235,6 +235,7 @@ public final class ZoneOffsetTransitionRule implements Serializable { /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { diff --git a/jdk/src/share/classes/java/time/zone/ZoneRules.java b/jdk/src/share/classes/java/time/zone/ZoneRules.java index 179c006fe30..47190984db1 100644 --- a/jdk/src/share/classes/java/time/zone/ZoneRules.java +++ b/jdk/src/share/classes/java/time/zone/ZoneRules.java @@ -319,6 +319,7 @@ public final class ZoneRules implements Serializable { /** * Defend against malicious streams. * + * @param s the stream to read * @throws InvalidObjectException always */ private void readObject(ObjectInputStream s) throws InvalidObjectException { From 869722e8166bd8939693dddf8fa467cd10065d2b Mon Sep 17 00:00:00 2001 From: Staffan Larsen Date: Thu, 23 Jan 2014 08:12:12 +0100 Subject: [PATCH 059/158] 8032250: Add trace event for VM flag changes Reviewed-by: coleenp, ehelin, egahlin, mgronlun --- hotspot/src/share/vm/runtime/globals.cpp | 24 ++++++++++++++ hotspot/src/share/vm/trace/trace.xml | 40 +++++++++++++++++++++++ hotspot/src/share/vm/trace/tracetypes.xml | 9 +++++ 3 files changed, 73 insertions(+) diff --git a/hotspot/src/share/vm/runtime/globals.cpp b/hotspot/src/share/vm/runtime/globals.cpp index f3c1b29f3cc..526d47c9ad6 100644 --- a/hotspot/src/share/vm/runtime/globals.cpp +++ b/hotspot/src/share/vm/runtime/globals.cpp @@ -31,6 +31,7 @@ #include "utilities/ostream.hpp" #include "utilities/macros.hpp" #include "utilities/top.hpp" +#include "trace/tracing.hpp" #if INCLUDE_ALL_GCS #include "gc_implementation/g1/g1_globals.hpp" #endif // INCLUDE_ALL_GCS @@ -593,6 +594,17 @@ bool CommandLineFlags::wasSetOnCmdline(const char* name, bool* value) { return true; } +template +static void trace_flag_changed(const char* name, const T old_value, const T new_value, const Flag::Flags origin) +{ + E e; + e.set_name(name); + e.set_old_value(old_value); + e.set_new_value(new_value); + e.set_origin(origin); + e.commit(); +} + bool CommandLineFlags::boolAt(char* name, size_t len, bool* value) { Flag* result = Flag::find_flag(name, len); if (result == NULL) return false; @@ -606,6 +618,7 @@ bool CommandLineFlags::boolAtPut(char* name, size_t len, bool* value, Flag::Flag if (result == NULL) return false; if (!result->is_bool()) return false; bool old_value = result->get_bool(); + trace_flag_changed(name, old_value, *value, origin); result->set_bool(*value); *value = old_value; result->set_origin(origin); @@ -615,6 +628,7 @@ bool CommandLineFlags::boolAtPut(char* name, size_t len, bool* value, Flag::Flag void CommandLineFlagsEx::boolAtPut(CommandLineFlagWithType flag, bool value, Flag::Flags origin) { Flag* faddr = address_of_flag(flag); guarantee(faddr != NULL && faddr->is_bool(), "wrong flag type"); + trace_flag_changed(faddr->_name, faddr->get_bool(), value, origin); faddr->set_bool(value); faddr->set_origin(origin); } @@ -632,6 +646,7 @@ bool CommandLineFlags::intxAtPut(char* name, size_t len, intx* value, Flag::Flag if (result == NULL) return false; if (!result->is_intx()) return false; intx old_value = result->get_intx(); + trace_flag_changed(name, old_value, *value, origin); result->set_intx(*value); *value = old_value; result->set_origin(origin); @@ -641,6 +656,7 @@ bool CommandLineFlags::intxAtPut(char* name, size_t len, intx* value, Flag::Flag void CommandLineFlagsEx::intxAtPut(CommandLineFlagWithType flag, intx value, Flag::Flags origin) { Flag* faddr = address_of_flag(flag); guarantee(faddr != NULL && faddr->is_intx(), "wrong flag type"); + trace_flag_changed(faddr->_name, faddr->get_intx(), value, origin); faddr->set_intx(value); faddr->set_origin(origin); } @@ -658,6 +674,7 @@ bool CommandLineFlags::uintxAtPut(char* name, size_t len, uintx* value, Flag::Fl if (result == NULL) return false; if (!result->is_uintx()) return false; uintx old_value = result->get_uintx(); + trace_flag_changed(name, old_value, *value, origin); result->set_uintx(*value); *value = old_value; result->set_origin(origin); @@ -667,6 +684,7 @@ bool CommandLineFlags::uintxAtPut(char* name, size_t len, uintx* value, Flag::Fl void CommandLineFlagsEx::uintxAtPut(CommandLineFlagWithType flag, uintx value, Flag::Flags origin) { Flag* faddr = address_of_flag(flag); guarantee(faddr != NULL && faddr->is_uintx(), "wrong flag type"); + trace_flag_changed(faddr->_name, faddr->get_uintx(), value, origin); faddr->set_uintx(value); faddr->set_origin(origin); } @@ -684,6 +702,7 @@ bool CommandLineFlags::uint64_tAtPut(char* name, size_t len, uint64_t* value, Fl if (result == NULL) return false; if (!result->is_uint64_t()) return false; uint64_t old_value = result->get_uint64_t(); + trace_flag_changed(name, old_value, *value, origin); result->set_uint64_t(*value); *value = old_value; result->set_origin(origin); @@ -693,6 +712,7 @@ bool CommandLineFlags::uint64_tAtPut(char* name, size_t len, uint64_t* value, Fl void CommandLineFlagsEx::uint64_tAtPut(CommandLineFlagWithType flag, uint64_t value, Flag::Flags origin) { Flag* faddr = address_of_flag(flag); guarantee(faddr != NULL && faddr->is_uint64_t(), "wrong flag type"); + trace_flag_changed(faddr->_name, faddr->get_uint64_t(), value, origin); faddr->set_uint64_t(value); faddr->set_origin(origin); } @@ -710,6 +730,7 @@ bool CommandLineFlags::doubleAtPut(char* name, size_t len, double* value, Flag:: if (result == NULL) return false; if (!result->is_double()) return false; double old_value = result->get_double(); + trace_flag_changed(name, old_value, *value, origin); result->set_double(*value); *value = old_value; result->set_origin(origin); @@ -719,6 +740,7 @@ bool CommandLineFlags::doubleAtPut(char* name, size_t len, double* value, Flag:: void CommandLineFlagsEx::doubleAtPut(CommandLineFlagWithType flag, double value, Flag::Flags origin) { Flag* faddr = address_of_flag(flag); guarantee(faddr != NULL && faddr->is_double(), "wrong flag type"); + trace_flag_changed(faddr->_name, faddr->get_double(), value, origin); faddr->set_double(value); faddr->set_origin(origin); } @@ -736,6 +758,7 @@ bool CommandLineFlags::ccstrAtPut(char* name, size_t len, ccstr* value, Flag::Fl if (result == NULL) return false; if (!result->is_ccstr()) return false; ccstr old_value = result->get_ccstr(); + trace_flag_changed(name, old_value, *value, origin); char* new_value = NULL; if (*value != NULL) { new_value = NEW_C_HEAP_ARRAY(char, strlen(*value)+1, mtInternal); @@ -757,6 +780,7 @@ void CommandLineFlagsEx::ccstrAtPut(CommandLineFlagWithType flag, ccstr value, F Flag* faddr = address_of_flag(flag); guarantee(faddr != NULL && faddr->is_ccstr(), "wrong flag type"); ccstr old_value = faddr->get_ccstr(); + trace_flag_changed(faddr->_name, old_value, value, origin); char* new_value = NEW_C_HEAP_ARRAY(char, strlen(value)+1, mtInternal); strcpy(new_value, value); faddr->set_ccstr(new_value); diff --git a/hotspot/src/share/vm/trace/trace.xml b/hotspot/src/share/vm/trace/trace.xml index 218207b732c..75efeea115e 100644 --- a/hotspot/src/share/vm/trace/trace.xml +++ b/hotspot/src/share/vm/trace/trace.xml @@ -122,6 +122,46 @@ Declares a structure type that can be used in other events. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hotspot/src/share/vm/trace/tracetypes.xml b/hotspot/src/share/vm/trace/tracetypes.xml index e9ea27da00a..9305d2fa75e 100644 --- a/hotspot/src/share/vm/trace/tracetypes.xml +++ b/hotspot/src/share/vm/trace/tracetypes.xml @@ -150,6 +150,11 @@ Now we can use the content + data type in declaring event fields. + + + + @@ -334,6 +339,10 @@ Now we can use the content + data type in declaring event fields. + + + From 03045efef61726d0090b1c0b94b442df41860f64 Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Wed, 22 Jan 2014 23:20:58 -0800 Subject: [PATCH 060/158] 8032047: Fix static lint warnings in client libraries 8032048: Add static lint warning to build of jdk repository Reviewed-by: pchelko, serb, erikj --- jdk/make/Setup.gmk | 4 +- .../imageio/plugins/gif/GIFImageWriter.java | 4 +- .../com/sun/java/browser/dom/DOMService.java | 4 +- .../java/swing/plaf/gtk/GTKFileChooserUI.java | 6 +-- .../sun/java/swing/plaf/gtk/PangoFonts.java | 4 +- .../sun/media/sound/MidiInDeviceProvider.java | 6 +-- .../media/sound/MidiOutDeviceProvider.java | 6 +-- .../java/awt/image/AffineTransformOp.java | 24 ++++++------ .../classes/java/awt/image/LookupOp.java | 11 +++--- .../classes/javax/swing/AbstractButton.java | 4 +- .../javax/swing/DefaultDesktopManager.java | 6 +-- .../javax/swing/JFormattedTextField.java | 4 +- .../plaf/metal/MetalSplitPaneDivider.java | 6 +-- .../javax/swing/text/StyledEditorKit.java | 4 +- .../javax/swing/text/html/HTMLEditorKit.java | 4 +- .../javax/swing/text/html/StyleSheet.java | 10 ++--- .../text/html/parser/ParserDelegator.java | 4 +- .../javax/swing/text/rtf/RTFReader.java | 4 +- .../share/classes/sun/awt/PlatformFont.java | 8 ++-- .../datatransfer/ClipboardTransferable.java | 5 +-- .../sun/awt/dnd/SunDragSourceContextPeer.java | 5 +-- .../share/classes/sun/awt/geom/Crossings.java | 4 +- .../classes/sun/awt/image/ImageFetcher.java | 4 +- .../sun/awt/image/ImageRepresentation.java | 8 ++-- .../sun/font/ExtendedTextSourceLabel.java | 6 +-- .../share/classes/sun/font/StrikeCache.java | 4 +- .../sun/tools/tree/FinallyStatement.java | 4 +- .../sun/tools/tree/SynchronizedStatement.java | 4 +- .../classes/sun/tools/util/CommandLine.java | 4 +- .../classes/sun/awt/X11/XComponentPeer.java | 4 +- .../classes/sun/awt/X11/XDialogPeer.java | 6 +-- .../sun/awt/X11/XDnDDropTargetProtocol.java | 5 ++- .../classes/sun/awt/X11/XEmbedCanvasPeer.java | 6 +-- .../sun/awt/X11/XEmbedServerTester.java | 4 +- .../classes/sun/awt/X11/XFramePeer.java | 6 +-- .../solaris/classes/sun/awt/X11/XToolkit.java | 4 +- .../classes/sun/font/FcFontConfiguration.java | 4 +- .../classes/sun/font/X11TextRenderer.java | 6 +-- .../classes/sun/java2d/d3d/D3DBufImgOps.java | 6 +-- .../classes/sun/java2d/d3d/D3DDrawImage.java | 4 +- .../sun/java2d/d3d/D3DGraphicsDevice.java | 4 +- .../classes/sun/java2d/d3d/D3DPaints.java | 6 +-- .../sun/java2d/d3d/D3DSurfaceData.java | 38 +++++++++---------- .../sun/java2d/d3d/D3DSurfaceDataProxy.java | 4 +- .../sun/java2d/windows/GDIRenderer.java | 8 ++-- .../java2d/windows/GDIWindowSurfaceData.java | 22 +++++------ 46 files changed, 156 insertions(+), 152 deletions(-) diff --git a/jdk/make/Setup.gmk b/jdk/make/Setup.gmk index 8a81f2b868b..7095e6926f4 100644 --- a/jdk/make/Setup.gmk +++ b/jdk/make/Setup.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2014, 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 @@ -27,7 +27,7 @@ DISABLE_WARNINGS := -Xlint:all,-deprecation,-unchecked,-rawtypes,-cast,-serial,- # To build with all warnings enabled, do the following: # make JAVAC_WARNINGS="-Xlint:all -Xmaxwarns 10000" -JAVAC_WARNINGS := -Xlint:-unchecked,-deprecation,-overrides,auxiliaryclass,classfile,dep-ann,divzero,empty,overloads,try,varargs -Werror +JAVAC_WARNINGS := -Xlint:-unchecked,-deprecation,-overrides,auxiliaryclass,classfile,dep-ann,divzero,empty,overloads,static,try,varargs -Werror # Any java code executed during a JDK build to build other parts of the JDK must be # executed by the bootstrap JDK (probably with -Xbootclasspath/p: ) and for this diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/gif/GIFImageWriter.java b/jdk/src/share/classes/com/sun/imageio/plugins/gif/GIFImageWriter.java index e62db31bfe5..63874ae9b24 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/gif/GIFImageWriter.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/gif/GIFImageWriter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, 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 @@ -357,7 +357,7 @@ public class GIFImageWriter extends ImageWriter { // Undo change to interlace flag if not MODE_COPY_FROM_METADATA. if (param != null && param.canWriteProgressive() && - param.getProgressiveMode() != param.MODE_COPY_FROM_METADATA) { + param.getProgressiveMode() != ImageWriteParam.MODE_COPY_FROM_METADATA) { im.interlaceFlag = isProgressive; } diff --git a/jdk/src/share/classes/com/sun/java/browser/dom/DOMService.java b/jdk/src/share/classes/com/sun/java/browser/dom/DOMService.java index 483fbf8280a..88b5ba7a5d2 100644 --- a/jdk/src/share/classes/com/sun/java/browser/dom/DOMService.java +++ b/jdk/src/share/classes/com/sun/java/browser/dom/DOMService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -46,7 +46,7 @@ public abstract class DOMService String provider = (String) java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction("com.sun.java.browser.dom.DOMServiceProvider")); - Class clazz = DOMService.class.forName("sun.plugin.dom.DOMService"); + Class clazz = Class.forName("sun.plugin.dom.DOMService"); return (DOMService) clazz.newInstance(); } diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java index df2b7f7cc23..6bd21545554 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -433,7 +433,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { if (objects.length == 1 && ((File)objects[0]).isDirectory() && chooser.isTraversable(((File)objects[0])) - && (chooser.getFileSelectionMode() != chooser.DIRECTORIES_ONLY + && (chooser.getFileSelectionMode() != JFileChooser.DIRECTORIES_ONLY || !chooser.getFileSystemView().isFileSystem(((File)objects[0])))) { setDirectorySelected(true); setDirectory(((File)objects[0])); @@ -458,7 +458,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { if (file != null && file.isDirectory() && chooser.isTraversable(file) - && (chooser.getFileSelectionMode() == chooser.FILES_ONLY + && (chooser.getFileSelectionMode() == JFileChooser.FILES_ONLY || !chooser.getFileSystemView().isFileSystem(file))) { setDirectorySelected(true); diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/PangoFonts.java b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/PangoFonts.java index 4794d83f7a7..fa94a57f2e3 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/PangoFonts.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/PangoFonts.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -61,7 +61,7 @@ class PangoFonts { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); - if (!ge.isHeadless()) { + if (!GraphicsEnvironment.isHeadless()) { GraphicsConfiguration gc = ge.getDefaultScreenDevice().getDefaultConfiguration(); AffineTransform at = gc.getNormalizingTransform(); diff --git a/jdk/src/share/classes/com/sun/media/sound/MidiInDeviceProvider.java b/jdk/src/share/classes/com/sun/media/sound/MidiInDeviceProvider.java index e15616f14f0..1f397724e3f 100644 --- a/jdk/src/share/classes/com/sun/media/sound/MidiInDeviceProvider.java +++ b/jdk/src/share/classes/com/sun/media/sound/MidiInDeviceProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -88,9 +88,9 @@ public final class MidiInDeviceProvider extends AbstractMidiDeviceProvider { } MidiDevice[] getDeviceCache() { return devices; } - void setDeviceCache(MidiDevice[] devices) { this.devices = devices; } + void setDeviceCache(MidiDevice[] devices) { MidiInDeviceProvider.devices = devices; } Info[] getInfoCache() { return infos; } - void setInfoCache(Info[] infos) { this.infos = infos; } + void setInfoCache(Info[] infos) { MidiInDeviceProvider.infos = infos; } // INNER CLASSES diff --git a/jdk/src/share/classes/com/sun/media/sound/MidiOutDeviceProvider.java b/jdk/src/share/classes/com/sun/media/sound/MidiOutDeviceProvider.java index ebe2880f026..75583ab1e65 100644 --- a/jdk/src/share/classes/com/sun/media/sound/MidiOutDeviceProvider.java +++ b/jdk/src/share/classes/com/sun/media/sound/MidiOutDeviceProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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,9 +86,9 @@ public final class MidiOutDeviceProvider extends AbstractMidiDeviceProvider { } MidiDevice[] getDeviceCache() { return devices; } - void setDeviceCache(MidiDevice[] devices) { this.devices = devices; } + void setDeviceCache(MidiDevice[] devices) { MidiOutDeviceProvider.devices = devices; } Info[] getInfoCache() { return infos; } - void setInfoCache(Info[] infos) { this.infos = infos; } + void setInfoCache(Info[] infos) { MidiOutDeviceProvider.infos = infos; } // INNER CLASSES diff --git a/jdk/src/share/classes/java/awt/image/AffineTransformOp.java b/jdk/src/share/classes/java/awt/image/AffineTransformOp.java index 30819ba8897..9e6a66eea5c 100644 --- a/jdk/src/share/classes/java/awt/image/AffineTransformOp.java +++ b/jdk/src/share/classes/java/awt/image/AffineTransformOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -110,23 +110,23 @@ public class AffineTransformOp implements BufferedImageOp, RasterOp { this.hints = hints; if (hints != null) { - Object value = hints.get(hints.KEY_INTERPOLATION); + Object value = hints.get(RenderingHints.KEY_INTERPOLATION); if (value == null) { - value = hints.get(hints.KEY_RENDERING); - if (value == hints.VALUE_RENDER_SPEED) { + value = hints.get(RenderingHints.KEY_RENDERING); + if (value == RenderingHints.VALUE_RENDER_SPEED) { interpolationType = TYPE_NEAREST_NEIGHBOR; } - else if (value == hints.VALUE_RENDER_QUALITY) { + else if (value == RenderingHints.VALUE_RENDER_QUALITY) { interpolationType = TYPE_BILINEAR; } } - else if (value == hints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR) { + else if (value == RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR) { interpolationType = TYPE_NEAREST_NEIGHBOR; } - else if (value == hints.VALUE_INTERPOLATION_BILINEAR) { + else if (value == RenderingHints.VALUE_INTERPOLATION_BILINEAR) { interpolationType = TYPE_BILINEAR; } - else if (value == hints.VALUE_INTERPOLATION_BICUBIC) { + else if (value == RenderingHints.VALUE_INTERPOLATION_BICUBIC) { interpolationType = TYPE_BICUBIC; } } @@ -235,10 +235,12 @@ public class AffineTransformOp implements BufferedImageOp, RasterOp { { int type = xform.getType(); boolean needTrans = ((type& - (xform.TYPE_MASK_ROTATION| - xform.TYPE_GENERAL_TRANSFORM)) + (AffineTransform.TYPE_MASK_ROTATION| + AffineTransform.TYPE_GENERAL_TRANSFORM)) != 0); - if (! needTrans && type != xform.TYPE_TRANSLATION && type != xform.TYPE_IDENTITY) + if (! needTrans && + type != AffineTransform.TYPE_TRANSLATION && + type != AffineTransform.TYPE_IDENTITY) { double[] mtx = new double[4]; xform.getMatrix(mtx); diff --git a/jdk/src/share/classes/java/awt/image/LookupOp.java b/jdk/src/share/classes/java/awt/image/LookupOp.java index 288abaf8645..1b872ed9255 100644 --- a/jdk/src/share/classes/java/awt/image/LookupOp.java +++ b/jdk/src/share/classes/java/awt/image/LookupOp.java @@ -1,5 +1,6 @@ + /* - * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -373,11 +374,11 @@ public class LookupOp implements BufferedImageOp, RasterOp { int trans = cm.getTransparency(); int[] nbits = null; if (ltable instanceof ByteLookupTable) { - if (db.getDataType() == db.TYPE_USHORT) { + if (db.getDataType() == DataBuffer.TYPE_USHORT) { // Dst raster should be of type byte if (hasAlpha) { nbits = new int[2]; - if (trans == cm.BITMASK) { + if (trans == java.awt.Transparency.BITMASK) { nbits[1] = 1; } else { @@ -393,10 +394,10 @@ public class LookupOp implements BufferedImageOp, RasterOp { } else if (ltable instanceof ShortLookupTable) { transferType = DataBuffer.TYPE_USHORT; - if (db.getDataType() == db.TYPE_BYTE) { + if (db.getDataType() == DataBuffer.TYPE_BYTE) { if (hasAlpha) { nbits = new int[2]; - if (trans == cm.BITMASK) { + if (trans == java.awt.Transparency.BITMASK) { nbits[1] = 1; } else { diff --git a/jdk/src/share/classes/javax/swing/AbstractButton.java b/jdk/src/share/classes/javax/swing/AbstractButton.java index 6f75be948e9..55e0e0b3817 100644 --- a/jdk/src/share/classes/javax/swing/AbstractButton.java +++ b/jdk/src/share/classes/javax/swing/AbstractButton.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -370,7 +370,7 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl model.setPressed(true); paintImmediately(new Rectangle(0,0, size.width, size.height)); try { - Thread.currentThread().sleep(pressTime); + Thread.sleep(pressTime); } catch(InterruptedException ie) { } model.setPressed(false); diff --git a/jdk/src/share/classes/javax/swing/DefaultDesktopManager.java b/jdk/src/share/classes/javax/swing/DefaultDesktopManager.java index 806ec342172..ed62d77b97c 100644 --- a/jdk/src/share/classes/javax/swing/DefaultDesktopManager.java +++ b/jdk/src/share/classes/javax/swing/DefaultDesktopManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -185,8 +185,8 @@ public class DefaultDesktopManager implements DesktopManager, java.io.Serializab if (c instanceof JLayeredPane) { JLayeredPane lp = (JLayeredPane)c; - int layer = lp.getLayer(f); - lp.putLayer(desktopIcon, layer); + int layer = JLayeredPane.getLayer(f); + JLayeredPane.putLayer(desktopIcon, layer); } // If we are maximized we already have the normal bounds recorded diff --git a/jdk/src/share/classes/javax/swing/JFormattedTextField.java b/jdk/src/share/classes/javax/swing/JFormattedTextField.java index 36e637727ea..e7354a09ef5 100644 --- a/jdk/src/share/classes/javax/swing/JFormattedTextField.java +++ b/jdk/src/share/classes/javax/swing/JFormattedTextField.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -651,7 +651,7 @@ public class JFormattedTextField extends JTextField { JFormattedTextField.this.setValue( JFormattedTextField.this.getValue(), true, true); } catch (ParseException pe) { - if (fb == JFormattedTextField.this.COMMIT_OR_REVERT) { + if (fb == JFormattedTextField.COMMIT_OR_REVERT) { JFormattedTextField.this.setValue( JFormattedTextField.this.getValue(), true, true); } diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalSplitPaneDivider.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalSplitPaneDivider.java index 33ef49d6ad5..cdeffadaeab 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalSplitPaneDivider.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalSplitPaneDivider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -391,11 +391,11 @@ class MetalSplitPaneDivider extends BasicSplitPaneDivider */ int getOneTouchSizeFromSuper() { - return super.ONE_TOUCH_SIZE; + return BasicSplitPaneDivider.ONE_TOUCH_SIZE; } int getOneTouchOffsetFromSuper() { - return super.ONE_TOUCH_OFFSET; + return BasicSplitPaneDivider.ONE_TOUCH_OFFSET; } int getOrientationFromSuper() { diff --git a/jdk/src/share/classes/javax/swing/text/StyledEditorKit.java b/jdk/src/share/classes/javax/swing/text/StyledEditorKit.java index 57b8ac00044..43809f55ae9 100644 --- a/jdk/src/share/classes/javax/swing/text/StyledEditorKit.java +++ b/jdk/src/share/classes/javax/swing/text/StyledEditorKit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -90,7 +90,7 @@ public class StyledEditorKit extends DefaultEditorKit { * @return the command list */ public Action[] getActions() { - return TextAction.augmentList(super.getActions(), this.defaultActions); + return TextAction.augmentList(super.getActions(), defaultActions); } /** diff --git a/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java b/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java index 468f8626d2f..5ec27c0f5c1 100644 --- a/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java +++ b/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -433,7 +433,7 @@ public class HTMLEditorKit extends StyledEditorKit implements Accessible { * @return the command list */ public Action[] getActions() { - return TextAction.augmentList(super.getActions(), this.defaultActions); + return TextAction.augmentList(super.getActions(), defaultActions); } /** diff --git a/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java b/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java index 2e7998a6670..645327cb809 100644 --- a/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java +++ b/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -2079,8 +2079,8 @@ public class StyleSheet extends StyleContext { // Parent view. View v = childView.getParent(); HTMLDocument doc = (HTMLDocument)v.getDocument(); - if (doc.matchNameAttribute(v.getElement().getAttributes(), - HTML.Tag.OL)) { + if (HTMLDocument.matchNameAttribute(v.getElement().getAttributes(), + HTML.Tag.OL)) { childtype = CSS.Value.DECIMAL; } else { childtype = CSS.Value.DISC; @@ -2473,13 +2473,13 @@ public class StyleSheet extends StyleContext { flags |= 4; } else if (pos.isHorizontalPositionRelativeToSize()) { - hPosition *= css.getFontSize(a, 12, ss); + hPosition *= CSS.getFontSize(a, 12, ss); } if (pos.isVerticalPositionRelativeToSize()) { flags |= 8; } else if (pos.isVerticalPositionRelativeToFontSize()) { - vPosition *= css.getFontSize(a, 12, ss); + vPosition *= CSS.getFontSize(a, 12, ss); } } // Determine any repeating values. diff --git a/jdk/src/share/classes/javax/swing/text/html/parser/ParserDelegator.java b/jdk/src/share/classes/javax/swing/text/html/parser/ParserDelegator.java index cdea9579fe6..81f7bb2cace 100644 --- a/jdk/src/share/classes/javax/swing/text/html/parser/ParserDelegator.java +++ b/jdk/src/share/classes/javax/swing/text/html/parser/ParserDelegator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -84,7 +84,7 @@ public class ParserDelegator extends HTMLEditorKit.Parser implements Serializabl in = getResourceAsStream(path); if (in != null) { dtd.read(new DataInputStream(new BufferedInputStream(in))); - dtd.putDTDHash(name, dtd); + DTD.putDTDHash(name, dtd); } } catch (Exception e) { System.out.println(e); diff --git a/jdk/src/share/classes/javax/swing/text/rtf/RTFReader.java b/jdk/src/share/classes/javax/swing/text/rtf/RTFReader.java index 5fd48246be8..2e58e6b95b8 100644 --- a/jdk/src/share/classes/javax/swing/text/rtf/RTFReader.java +++ b/jdk/src/share/classes/javax/swing/text/rtf/RTFReader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -599,7 +599,7 @@ static char[] readCharset(InputStream strm) } catch (Exception e) { throw new IOException("Unable to read from character set file (" + e + ")"); } - if (ttype != in.TT_NUMBER) { + if (ttype != StreamTokenizer.TT_NUMBER) { // System.out.println("Bad token: type=" + ttype + " tok=" + in.sval); throw new IOException("Unexpected token in character set file"); // continue; diff --git a/jdk/src/share/classes/sun/awt/PlatformFont.java b/jdk/src/share/classes/sun/awt/PlatformFont.java index 74e75ac8496..8b34c5c443a 100644 --- a/jdk/src/share/classes/sun/awt/PlatformFont.java +++ b/jdk/src/share/classes/sun/awt/PlatformFont.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, 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 @@ -270,7 +270,7 @@ public abstract class PlatformFont implements FontPeer { currentDefaultChar = data[stringIndex]; // Note that cache sizes must be a power of two! - cacheIndex = (int)(currentDefaultChar & this.FONTCACHEMASK); + cacheIndex = (int)(currentDefaultChar & PlatformFont.FONTCACHEMASK); theChar = (PlatformFontCache)getFontCache()[cacheIndex]; @@ -309,7 +309,7 @@ public abstract class PlatformFont implements FontPeer { theChar.bb, true); */ - if (currentFontDescriptor.isLE) { + if (FontDescriptor.isLE) { theChar.bb.put((byte)(input[0] & 0xff)); theChar.bb.put((byte)(input[0] >>8)); } else { @@ -420,7 +420,7 @@ public abstract class PlatformFont implements FontPeer { // twice or return an array which will be dereferenced and gced // right away. if (fontCache == null) { - fontCache = new Object[this.FONTCACHESIZE]; + fontCache = new Object[PlatformFont.FONTCACHESIZE]; } return fontCache; diff --git a/jdk/src/share/classes/sun/awt/datatransfer/ClipboardTransferable.java b/jdk/src/share/classes/sun/awt/datatransfer/ClipboardTransferable.java index 9439ec569b4..4335a3567b6 100644 --- a/jdk/src/share/classes/sun/awt/datatransfer/ClipboardTransferable.java +++ b/jdk/src/share/classes/sun/awt/datatransfer/ClipboardTransferable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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,7 @@ public class ClipboardTransferable implements Transferable { fetchOneFlavor(clipboard, flavor, lFormat, cached_data); } - flavors = DataTransferer.getInstance(). - setToSortedDataFlavorArray(flavorsToData.keySet()); + flavors = DataTransferer.setToSortedDataFlavorArray(flavorsToData.keySet()); } } finally { clipboard.closeClipboard(); diff --git a/jdk/src/share/classes/sun/awt/dnd/SunDragSourceContextPeer.java b/jdk/src/share/classes/sun/awt/dnd/SunDragSourceContextPeer.java index 67c9cb4f516..ae0a642dcb2 100644 --- a/jdk/src/share/classes/sun/awt/dnd/SunDragSourceContextPeer.java +++ b/jdk/src/share/classes/sun/awt/dnd/SunDragSourceContextPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -130,8 +130,7 @@ public abstract class SunDragSourceContextPeer implements DragSourceContextPeer SortedMap formatMap = DataTransferer.getInstance(). getFormatsForTransferable(transferable, DataTransferer.adaptFlavorMap (getTrigger().getDragSource().getFlavorMap())); - long[] formats = DataTransferer.getInstance(). - keysToLongArray(formatMap); + long[] formats = DataTransferer.keysToLongArray(formatMap); startDrag(transferable, formats, formatMap); /* diff --git a/jdk/src/share/classes/sun/awt/geom/Crossings.java b/jdk/src/share/classes/sun/awt/geom/Crossings.java index 6275c4dfeba..7ab97bce80c 100644 --- a/jdk/src/share/classes/sun/awt/geom/Crossings.java +++ b/jdk/src/share/classes/sun/awt/geom/Crossings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -100,7 +100,7 @@ public abstract class Crossings { double xhi, double yhi) { Crossings cross; - if (pi.getWindingRule() == pi.WIND_EVEN_ODD) { + if (pi.getWindingRule() == PathIterator.WIND_EVEN_ODD) { cross = new EvenOdd(xlo, ylo, xhi, yhi); } else { cross = new NonZero(xlo, ylo, xhi, yhi); diff --git a/jdk/src/share/classes/sun/awt/image/ImageFetcher.java b/jdk/src/share/classes/sun/awt/image/ImageFetcher.java index 6f9501301cf..a5af63512c7 100644 --- a/jdk/src/share/classes/sun/awt/image/ImageFetcher.java +++ b/jdk/src/share/classes/sun/awt/image/ImageFetcher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, 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 @@ -195,7 +195,7 @@ class ImageFetcher extends Thread { // the fetcher was interrupted, as we used to, // because there may be other images waiting // to be fetched (see 4789067) - me.interrupted(); + Thread.interrupted(); me.setPriority(HIGH_PRIORITY); ImageFetchable src = nextImage(); if (src == null) { diff --git a/jdk/src/share/classes/sun/awt/image/ImageRepresentation.java b/jdk/src/share/classes/sun/awt/image/ImageRepresentation.java index 18fb13ed69b..77ee7339a59 100644 --- a/jdk/src/share/classes/sun/awt/image/ImageRepresentation.java +++ b/jdk/src/share/classes/sun/awt/image/ImageRepresentation.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, 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 @@ -209,7 +209,7 @@ public class ImageRepresentation extends ImageWatched implements ImageConsumer // Check to see if model is INT_RGB if (model instanceof IndexColorModel) { - if (model.getTransparency() == model.TRANSLUCENT) { + if (model.getTransparency() == Transparency.TRANSLUCENT) { // REMIND: // Probably need to composite anyway so force ARGB cmodel = ColorModel.getRGBdefault(); @@ -586,8 +586,8 @@ public class ImageRepresentation extends ImageWatched implements ImageConsumer } } else { - if (model.getTransparency() != model.OPAQUE && - cmodel.getTransparency() == cmodel.OPAQUE) { + if (model.getTransparency() != Transparency.OPAQUE && + cmodel.getTransparency() == Transparency.OPAQUE) { convertToRGB(); } diff --git a/jdk/src/share/classes/sun/font/ExtendedTextSourceLabel.java b/jdk/src/share/classes/sun/font/ExtendedTextSourceLabel.java index ba7e29edc05..da149905133 100644 --- a/jdk/src/share/classes/sun/font/ExtendedTextSourceLabel.java +++ b/jdk/src/share/classes/sun/font/ExtendedTextSourceLabel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -894,12 +894,12 @@ class ExtendedTextSourceLabel extends ExtendedTextLabel implements Decoration.La public String toString() { if (true) { - return source.toString(source.WITHOUT_CONTEXT); + return source.toString(TextSource.WITHOUT_CONTEXT); } StringBuffer buf = new StringBuffer(); buf.append(super.toString()); buf.append("[source:"); - buf.append(source.toString(source.WITHOUT_CONTEXT)); + buf.append(source.toString(TextSource.WITHOUT_CONTEXT)); buf.append(", lb:"); buf.append(lb); buf.append(", ab:"); diff --git a/jdk/src/share/classes/sun/font/StrikeCache.java b/jdk/src/share/classes/sun/font/StrikeCache.java index 2651a7fef94..3c927ebf8b0 100644 --- a/jdk/src/share/classes/sun/font/StrikeCache.java +++ b/jdk/src/share/classes/sun/font/StrikeCache.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -280,7 +280,7 @@ public final class StrikeCache { RenderQueue rq = null; GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); - if (!ge.isHeadless()) { + if (!GraphicsEnvironment.isHeadless()) { GraphicsConfiguration gc = ge.getDefaultScreenDevice().getDefaultConfiguration(); if (gc instanceof AccelGraphicsConfig) { diff --git a/jdk/src/share/classes/sun/tools/tree/FinallyStatement.java b/jdk/src/share/classes/sun/tools/tree/FinallyStatement.java index d0b688fdcd5..aa85218e83f 100644 --- a/jdk/src/share/classes/sun/tools/tree/FinallyStatement.java +++ b/jdk/src/share/classes/sun/tools/tree/FinallyStatement.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2014, 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 @@ -281,7 +281,7 @@ class FinallyStatement extends Statement { returnType, idFinallyReturnValue); ctx.declare(env, localfield); - env.debugOutput("Assigning return slot to " + localfield.number); + Environment.debugOutput("Assigning return slot to " + localfield.number); } // allocate space for the exception and return address diff --git a/jdk/src/share/classes/sun/tools/tree/SynchronizedStatement.java b/jdk/src/share/classes/sun/tools/tree/SynchronizedStatement.java index 58db7462718..2c2daa85f41 100644 --- a/jdk/src/share/classes/sun/tools/tree/SynchronizedStatement.java +++ b/jdk/src/share/classes/sun/tools/tree/SynchronizedStatement.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2014, 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 @@ -120,7 +120,7 @@ class SynchronizedStatement extends Statement { LocalMember localfield = new LocalMember(0, clazz, 0, returnType, idFinallyReturnValue); ctx.declare(env, localfield); - env.debugOutput("Assigning return slot to " + localfield.number); + Environment.debugOutput("Assigning return slot to " + localfield.number); } LocalMember f1 = new LocalMember(where, clazz, 0, Type.tObject, null); diff --git a/jdk/src/share/classes/sun/tools/util/CommandLine.java b/jdk/src/share/classes/sun/tools/util/CommandLine.java index 4dd3b4c302a..4bf9582583c 100644 --- a/jdk/src/share/classes/sun/tools/util/CommandLine.java +++ b/jdk/src/share/classes/sun/tools/util/CommandLine.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -82,7 +82,7 @@ public class CommandLine { st.commentChar('#'); st.quoteChar('"'); st.quoteChar('\''); - while (st.nextToken() != st.TT_EOF) { + while (st.nextToken() != StreamTokenizer.TT_EOF) { args.add(st.sval); } r.close(); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java index c3cb2649c17..54249bbe7d7 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -184,7 +184,7 @@ public class XComponentPeer extends XWindow implements ComponentPeer, DropTarget XWindowPeer wpeer = (XWindowPeer)(container.getPeer()); if (wpeer != null) { return (wpeer.winAttr.visibilityState != - wpeer.winAttr.AWT_UNOBSCURED); + XWindowAttributesData.AWT_UNOBSCURED); } } return true; diff --git a/jdk/src/solaris/classes/sun/awt/X11/XDialogPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XDialogPeer.java index fc0a0b7d44f..c2e451785f7 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XDialogPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XDialogPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -47,9 +47,9 @@ class XDialogPeer extends XDecoratedPeer implements DialogPeer { undecorated = Boolean.valueOf(target.isUndecorated()); winAttr.nativeDecor = !target.isUndecorated(); if (winAttr.nativeDecor) { - winAttr.decorations = winAttr.AWT_DECOR_ALL; + winAttr.decorations = XWindowAttributesData.AWT_DECOR_ALL; } else { - winAttr.decorations = winAttr.AWT_DECOR_NONE; + winAttr.decorations = XWindowAttributesData.AWT_DECOR_NONE; } winAttr.functions = MWMConstants.MWM_FUNC_ALL; winAttr.isResizable = true; //target.isResizable(); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java b/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java index f0a6622c4bd..2af8e66d730 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -1005,6 +1005,7 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol { } } + @SuppressWarnings("static") private void notifyProtocolListener(XWindow xwindow, int x, int y, int dropAction, XClientMessageEvent xclient, @@ -1147,7 +1148,7 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol { event while it still can be referenced from other Java events. */ { XClientMessageEvent copy = new XClientMessageEvent(); - unsafe.copyMemory(xclient.pData, copy.pData, copy.getSize()); + unsafe.copyMemory(xclient.pData, copy.pData, XClientMessageEvent.getSize()); copy.set_data(0, xclient.get_window()); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java index 167c3fe3209..cdce154834e 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -654,9 +654,9 @@ public class XEmbedCanvasPeer extends XCanvasPeer implements WindowFocusListener if (xembedLog.isLoggable(PlatformLogger.Level.FINER)) { xembedLog.finer("Client message to embedder: " + msg); } - if (msg.get_message_type() == xembed.XEmbed.getAtom()) { + if (msg.get_message_type() == XEmbedHelper.XEmbed.getAtom()) { if (xembedLog.isLoggable(PlatformLogger.Level.FINE)) { - xembedLog.fine(xembed.XEmbedMessageToString(msg)); + xembedLog.fine(XEmbedHelper.XEmbedMessageToString(msg)); } } if (isXEmbedActive()) { diff --git a/jdk/src/solaris/classes/sun/awt/X11/XEmbedServerTester.java b/jdk/src/solaris/classes/sun/awt/X11/XEmbedServerTester.java index e21d1d255f4..fdc069e2757 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XEmbedServerTester.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbedServerTester.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -647,7 +647,7 @@ public class XEmbedServerTester implements XEventDispatcher { public void dispatchEvent(XEvent ev) { if (ev.get_type() == ClientMessage) { XClientMessageEvent msg = ev.get_xclient(); - if (msg.get_message_type() == xembed.XEmbed.getAtom()) { + if (msg.get_message_type() == XEmbedHelper.XEmbed.getAtom()) { if (xembedLog.isLoggable(PlatformLogger.Level.FINE)) { xembedLog.fine("Embedded message: " + XEmbedHelper.msgidToString((int)msg.get_data(1))); } diff --git a/jdk/src/solaris/classes/sun/awt/X11/XFramePeer.java b/jdk/src/solaris/classes/sun/awt/X11/XFramePeer.java index 050e0f20171..ac93ae6501e 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XFramePeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XFramePeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -67,9 +67,9 @@ class XFramePeer extends XDecoratedPeer implements FramePeer { undecorated = Boolean.valueOf(target.isUndecorated()); winAttr.nativeDecor = !target.isUndecorated(); if (winAttr.nativeDecor) { - winAttr.decorations = winAttr.AWT_DECOR_ALL; + winAttr.decorations = XWindowAttributesData.AWT_DECOR_ALL; } else { - winAttr.decorations = winAttr.AWT_DECOR_NONE; + winAttr.decorations = XWindowAttributesData.AWT_DECOR_NONE; } winAttr.functions = MWMConstants.MWM_FUNC_ALL; winAttr.isResizable = true; // target.isResizable(); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java index 475ea7848b3..9970b2a8457 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -1542,7 +1542,7 @@ public final class XToolkit extends UNIXToolkit implements Runnable { */ if (desktopProperties.get(SunToolkit.DESKTOPFONTHINTS) == null) { if (XWM.isKDE2()) { - Object hint = fcManager.getFontConfigAAHint(); + Object hint = FontConfigManager.getFontConfigAAHint(); if (hint != null) { /* set the fontconfig/KDE property so that * getDesktopHints() below will see it diff --git a/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java b/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java index e33e08a867b..23cf93624a6 100644 --- a/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java +++ b/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2014, 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 @@ -441,7 +441,7 @@ public class FcFontConfiguration extends FontConfiguration { try { fcVersion = Integer.parseInt(fcVersionStr); if (fcVersion != 0 && - fcVersion != fcm.getFontConfigVersion()) { + fcVersion != FontConfigManager.getFontConfigVersion()) { return; } } catch (Exception e) { diff --git a/jdk/src/solaris/classes/sun/font/X11TextRenderer.java b/jdk/src/solaris/classes/sun/font/X11TextRenderer.java index a408168a5cc..3afb0ccd5a4 100644 --- a/jdk/src/solaris/classes/sun/font/X11TextRenderer.java +++ b/jdk/src/solaris/classes/sun/font/X11TextRenderer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -57,11 +57,11 @@ public class X11TextRenderer extends GlyphListPipe { super.drawGlyphVector(sg2d, g, x, y); return; case SunHints.INTVAL_TEXT_ANTIALIAS_ON: - sg2d.surfaceData.aaTextRenderer.drawGlyphVector(sg2d, g, x, y); + SurfaceData.aaTextRenderer.drawGlyphVector(sg2d, g, x, y); return; case SunHints.INTVAL_TEXT_ANTIALIAS_LCD_HRGB: case SunHints.INTVAL_TEXT_ANTIALIAS_LCD_VRGB: - sg2d.surfaceData.lcdTextRenderer.drawGlyphVector(sg2d, g, x, y); + SurfaceData.lcdTextRenderer.drawGlyphVector(sg2d, g, x, y); return; default: } diff --git a/jdk/src/windows/classes/sun/java2d/d3d/D3DBufImgOps.java b/jdk/src/windows/classes/sun/java2d/d3d/D3DBufImgOps.java index c2dee96aaef..890bb87d66b 100644 --- a/jdk/src/windows/classes/sun/java2d/d3d/D3DBufImgOps.java +++ b/jdk/src/windows/classes/sun/java2d/d3d/D3DBufImgOps.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2014, 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 @@ -78,12 +78,12 @@ class D3DBufImgOps extends BufferedBufImgOps { } SurfaceData srcData = - dstData.getSourceSurfaceData(img, sg.TRANSFORM_ISIDENT, + dstData.getSourceSurfaceData(img, SunGraphics2D.TRANSFORM_ISIDENT, CompositeType.SrcOver, null); if (!(srcData instanceof D3DSurfaceData)) { // REMIND: this hack tries to ensure that we have a cached texture srcData = - dstData.getSourceSurfaceData(img, sg.TRANSFORM_ISIDENT, + dstData.getSourceSurfaceData(img, SunGraphics2D.TRANSFORM_ISIDENT, CompositeType.SrcOver, null); if (!(srcData instanceof D3DSurfaceData)) { return false; diff --git a/jdk/src/windows/classes/sun/java2d/d3d/D3DDrawImage.java b/jdk/src/windows/classes/sun/java2d/d3d/D3DDrawImage.java index 8bfac53732b..f814dc2f613 100644 --- a/jdk/src/windows/classes/sun/java2d/d3d/D3DDrawImage.java +++ b/jdk/src/windows/classes/sun/java2d/d3d/D3DDrawImage.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2014, 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 @@ -53,7 +53,7 @@ public class D3DDrawImage extends DrawImage { SurfaceData dstData = sg.surfaceData; SurfaceData srcData = dstData.getSourceSurfaceData(img, - sg.TRANSFORM_GENERIC, + SunGraphics2D.TRANSFORM_GENERIC, sg.imageComp, bgColor); diff --git a/jdk/src/windows/classes/sun/java2d/d3d/D3DGraphicsDevice.java b/jdk/src/windows/classes/sun/java2d/d3d/D3DGraphicsDevice.java index 2012b19e700..bf6134648c3 100644 --- a/jdk/src/windows/classes/sun/java2d/d3d/D3DGraphicsDevice.java +++ b/jdk/src/windows/classes/sun/java2d/d3d/D3DGraphicsDevice.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2014, 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 @@ -235,10 +235,12 @@ public class D3DGraphicsDevice extends Win32GraphicsDevice { */ private static class D3DFSWindowAdapter extends WindowAdapter { @Override + @SuppressWarnings("static") public void windowDeactivated(WindowEvent e) { D3DRenderQueue.getInstance().restoreDevices(); } @Override + @SuppressWarnings("static") public void windowActivated(WindowEvent e) { D3DRenderQueue.getInstance().restoreDevices(); } diff --git a/jdk/src/windows/classes/sun/java2d/d3d/D3DPaints.java b/jdk/src/windows/classes/sun/java2d/d3d/D3DPaints.java index 53e59762c23..b328ce3a083 100644 --- a/jdk/src/windows/classes/sun/java2d/d3d/D3DPaints.java +++ b/jdk/src/windows/classes/sun/java2d/d3d/D3DPaints.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2014, 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 @@ -132,14 +132,14 @@ abstract class D3DPaints { } SurfaceData srcData = - dstData.getSourceSurfaceData(bi, sg2d.TRANSFORM_ISIDENT, + dstData.getSourceSurfaceData(bi, SunGraphics2D.TRANSFORM_ISIDENT, CompositeType.SrcOver, null); if (!(srcData instanceof D3DSurfaceData)) { // REMIND: this is a hack that attempts to cache the system // memory image from the TexturePaint instance into a // D3D texture... srcData = - dstData.getSourceSurfaceData(bi, sg2d.TRANSFORM_ISIDENT, + dstData.getSourceSurfaceData(bi, SunGraphics2D.TRANSFORM_ISIDENT, CompositeType.SrcOver, null); if (!(srcData instanceof D3DSurfaceData)) { return false; diff --git a/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java b/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java index d37db9e925b..ffab9092a5a 100644 --- a/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java +++ b/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2014, 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 @@ -542,7 +542,7 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface { // REMIND: the D3D pipeline doesn't support XOR!, more // fixes will be needed below. For now we disable D3D rendering // for the surface which had any XOR rendering done to. - if (sg2d.compositeState >= sg2d.COMP_XOR) { + if (sg2d.compositeState >= SunGraphics2D.COMP_XOR) { super.validatePipe(sg2d); sg2d.imagepipe = d3dImagePipe; disableAccelerationForSurface(); @@ -557,18 +557,18 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface { // by the CompositeType.SrcNoEa (any color) test below.) if (/* CompositeType.SrcNoEa (any color) */ - (sg2d.compositeState <= sg2d.COMP_ISCOPY && - sg2d.paintState <= sg2d.PAINT_ALPHACOLOR) || + (sg2d.compositeState <= SunGraphics2D.COMP_ISCOPY && + sg2d.paintState <= SunGraphics2D.PAINT_ALPHACOLOR) || /* CompositeType.SrcOver (any color) */ - (sg2d.compositeState == sg2d.COMP_ALPHA && - sg2d.paintState <= sg2d.PAINT_ALPHACOLOR && + (sg2d.compositeState == SunGraphics2D.COMP_ALPHA && + sg2d.paintState <= SunGraphics2D.PAINT_ALPHACOLOR && (((AlphaComposite)sg2d.composite).getRule() == AlphaComposite.SRC_OVER)) || /* CompositeType.Xor (any color) */ - (sg2d.compositeState == sg2d.COMP_XOR && - sg2d.paintState <= sg2d.PAINT_ALPHACOLOR)) + (sg2d.compositeState == SunGraphics2D.COMP_XOR && + sg2d.paintState <= SunGraphics2D.PAINT_ALPHACOLOR)) { textpipe = d3dTextPipe; } else { @@ -583,12 +583,12 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface { D3DRenderer nonTxPipe = null; if (sg2d.antialiasHint != SunHints.INTVAL_ANTIALIAS_ON) { - if (sg2d.paintState <= sg2d.PAINT_ALPHACOLOR) { - if (sg2d.compositeState <= sg2d.COMP_XOR) { + if (sg2d.paintState <= SunGraphics2D.PAINT_ALPHACOLOR) { + if (sg2d.compositeState <= SunGraphics2D.COMP_XOR) { txPipe = d3dTxRenderPipe; nonTxPipe = d3dRenderPipe; } - } else if (sg2d.compositeState <= sg2d.COMP_ALPHA) { + } else if (sg2d.compositeState <= SunGraphics2D.COMP_ALPHA) { if (D3DPaints.isValid(sg2d)) { txPipe = d3dTxRenderPipe; nonTxPipe = d3dRenderPipe; @@ -596,7 +596,7 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface { // custom paints handled by super.validatePipe() below } } else { - if (sg2d.paintState <= sg2d.PAINT_ALPHACOLOR) { + if (sg2d.paintState <= SunGraphics2D.PAINT_ALPHACOLOR) { if (graphicsDevice.isCapPresent(CAPS_AA_SHADER) && (sg2d.imageComp == CompositeType.SrcOverNoEa || sg2d.imageComp == CompositeType.SrcOver)) @@ -613,7 +613,7 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface { sg2d.drawpipe = aaConverter; sg2d.fillpipe = aaConverter; sg2d.shapepipe = aaConverter; - } else if (sg2d.compositeState == sg2d.COMP_XOR) { + } else if (sg2d.compositeState == SunGraphics2D.COMP_XOR) { // install the solid pipes when AA and XOR are both enabled txPipe = d3dTxRenderPipe; nonTxPipe = d3dRenderPipe; @@ -623,10 +623,10 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface { } if (txPipe != null) { - if (sg2d.transformState >= sg2d.TRANSFORM_TRANSLATESCALE) { + if (sg2d.transformState >= SunGraphics2D.TRANSFORM_TRANSLATESCALE) { sg2d.drawpipe = txPipe; sg2d.fillpipe = txPipe; - } else if (sg2d.strokeState != sg2d.STROKE_THIN) { + } else if (sg2d.strokeState != SunGraphics2D.STROKE_THIN) { sg2d.drawpipe = txPipe; sg2d.fillpipe = nonTxPipe; } else { @@ -653,7 +653,7 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface { @Override protected MaskFill getMaskFill(SunGraphics2D sg2d) { - if (sg2d.paintState > sg2d.PAINT_ALPHACOLOR) { + if (sg2d.paintState > SunGraphics2D.PAINT_ALPHACOLOR) { /* * We can only accelerate non-Color MaskFill operations if * all of the following conditions hold true: @@ -678,8 +678,8 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface { public boolean copyArea(SunGraphics2D sg2d, int x, int y, int w, int h, int dx, int dy) { - if (sg2d.transformState < sg2d.TRANSFORM_TRANSLATESCALE && - sg2d.compositeState < sg2d.COMP_XOR) + if (sg2d.transformState < SunGraphics2D.TRANSFORM_TRANSLATESCALE && + sg2d.compositeState < SunGraphics2D.COMP_XOR) { x += sg2d.transX; y += sg2d.transY; @@ -738,7 +738,7 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface { D3DRenderQueue rq = D3DRenderQueue.getInstance(); // swapBuffers can be called from the toolkit thread by swing, we // should detect this and prevent the deadlocks - if (rq.isRenderQueueThread()) { + if (D3DRenderQueue.isRenderQueueThread()) { if (!rq.tryLock()) { // if we could not obtain the lock, repaint the area // that was supposed to be swapped, and no-op this swap diff --git a/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceDataProxy.java b/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceDataProxy.java index 46b1446c975..66e98882a19 100644 --- a/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceDataProxy.java +++ b/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceDataProxy.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -72,7 +72,7 @@ public class D3DSurfaceDataProxy extends SurfaceDataProxy { try { cachedData = d3dgc.createManagedSurface(w, h, transparency); } catch (InvalidPipeException e) { - if (!d3dgc.getD3DDevice().isD3DAvailable()) { + if (!D3DGraphicsDevice.isD3DAvailable()) { invalidate(); flush(); return null; diff --git a/jdk/src/windows/classes/sun/java2d/windows/GDIRenderer.java b/jdk/src/windows/classes/sun/java2d/windows/GDIRenderer.java index bb3e2725700..5971c09cdd6 100644 --- a/jdk/src/windows/classes/sun/java2d/windows/GDIRenderer.java +++ b/jdk/src/windows/classes/sun/java2d/windows/GDIRenderer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -264,7 +264,7 @@ public class GDIRenderer implements Path2D.Float p2df; int transX; int transY; - if (sg2d.transformState <= sg2d.TRANSFORM_INT_TRANSLATE) { + if (sg2d.transformState <= SunGraphics2D.TRANSFORM_INT_TRANSLATE) { if (s instanceof Path2D.Float) { p2df = (Path2D.Float)s; } else { @@ -308,9 +308,9 @@ public class GDIRenderer implements } public void draw(SunGraphics2D sg2d, Shape s) { - if (sg2d.strokeState == sg2d.STROKE_THIN) { + if (sg2d.strokeState == SunGraphics2D.STROKE_THIN) { doShape(sg2d, s, false); - } else if (sg2d.strokeState < sg2d.STROKE_CUSTOM) { + } else if (sg2d.strokeState < SunGraphics2D.STROKE_CUSTOM) { ShapeSpanIterator si = LoopPipe.getStrokeSpans(sg2d, s); try { doFillSpans(sg2d, si); diff --git a/jdk/src/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java b/jdk/src/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java index deaf9c60e0d..49d9261bbd3 100644 --- a/jdk/src/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java +++ b/jdk/src/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -153,11 +153,11 @@ public class GDIWindowSurfaceData extends SurfaceData { public void validatePipe(SunGraphics2D sg2d) { if (sg2d.antialiasHint != SunHints.INTVAL_ANTIALIAS_ON && - sg2d.paintState <= sg2d.PAINT_ALPHACOLOR && - (sg2d.compositeState <= sg2d.COMP_ISCOPY || - sg2d.compositeState == sg2d.COMP_XOR)) + sg2d.paintState <= SunGraphics2D.PAINT_ALPHACOLOR && + (sg2d.compositeState <= SunGraphics2D.COMP_ISCOPY || + sg2d.compositeState == SunGraphics2D.COMP_XOR)) { - if (sg2d.clipState == sg2d.CLIP_SHAPE) { + if (sg2d.clipState == SunGraphics2D.CLIP_SHAPE) { // Do this to init textpipe correctly; we will override the // other non-text pipes below // REMIND: we should clean this up eventually instead of @@ -194,10 +194,10 @@ public class GDIWindowSurfaceData extends SurfaceData { } } sg2d.imagepipe = imagepipe; - if (sg2d.transformState >= sg2d.TRANSFORM_TRANSLATESCALE) { + if (sg2d.transformState >= SunGraphics2D.TRANSFORM_TRANSLATESCALE) { sg2d.drawpipe = gdiTxPipe; sg2d.fillpipe = gdiTxPipe; - } else if (sg2d.strokeState != sg2d.STROKE_THIN){ + } else if (sg2d.strokeState != SunGraphics2D.STROKE_THIN){ sg2d.drawpipe = gdiTxPipe; sg2d.fillpipe = gdiPipe; } else { @@ -220,8 +220,8 @@ public class GDIWindowSurfaceData extends SurfaceData { } public RenderLoops getRenderLoops(SunGraphics2D sg2d) { - if (sg2d.paintState <= sg2d.PAINT_ALPHACOLOR && - sg2d.compositeState <= sg2d.COMP_ISCOPY) + if (sg2d.paintState <= SunGraphics2D.PAINT_ALPHACOLOR && + sg2d.compositeState <= SunGraphics2D.COMP_ISCOPY) { return solidloops; } @@ -295,8 +295,8 @@ public class GDIWindowSurfaceData extends SurfaceData { int x, int y, int w, int h, int dx, int dy) { CompositeType comptype = sg2d.imageComp; - if (sg2d.transformState < sg2d.TRANSFORM_TRANSLATESCALE && - sg2d.clipState != sg2d.CLIP_SHAPE && + if (sg2d.transformState < SunGraphics2D.TRANSFORM_TRANSLATESCALE && + sg2d.clipState != SunGraphics2D.CLIP_SHAPE && (CompositeType.SrcOverNoEa.equals(comptype) || CompositeType.SrcNoEa.equals(comptype))) { From 6f46c5c2f0ff1ab3092933943d6af25752d5bb32 Mon Sep 17 00:00:00 2001 From: Staffan Larsen Date: Thu, 23 Jan 2014 09:06:21 +0100 Subject: [PATCH 061/158] 8031968: Mac OS X: VM starts the agent by calling both Agent_OnAttach and Agent_OnAttach_L functions if its agent library is dynamically linked Make sure we only look for statically linked agents in the main process image Reviewed-by: dsamersoff, bpittore, dcubed --- hotspot/src/os/bsd/vm/os_bsd.cpp | 11 +++++++++++ hotspot/src/os/linux/vm/os_linux.cpp | 3 +++ hotspot/src/os/posix/vm/os_posix.cpp | 4 ---- hotspot/src/os/solaris/vm/os_solaris.cpp | 4 ++++ 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/hotspot/src/os/bsd/vm/os_bsd.cpp b/hotspot/src/os/bsd/vm/os_bsd.cpp index 1bea78444a8..47e5d16efdc 100644 --- a/hotspot/src/os/bsd/vm/os_bsd.cpp +++ b/hotspot/src/os/bsd/vm/os_bsd.cpp @@ -1557,6 +1557,17 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) } #endif /* !__APPLE__ */ +void* os::get_default_process_handle() { +#ifdef __APPLE__ + // MacOS X needs to use RTLD_FIRST instead of RTLD_LAZY + // to avoid finding unexpected symbols on second (or later) + // loads of a library. + return (void*)::dlopen(NULL, RTLD_FIRST); +#else + return (void*)::dlopen(NULL, RTLD_LAZY); +#endif +} + // XXX: Do we need a lock around this as per Linux? void* os::dll_lookup(void* handle, const char* name) { return dlsym(handle, name); diff --git a/hotspot/src/os/linux/vm/os_linux.cpp b/hotspot/src/os/linux/vm/os_linux.cpp index 1bb32901540..54149e18253 100644 --- a/hotspot/src/os/linux/vm/os_linux.cpp +++ b/hotspot/src/os/linux/vm/os_linux.cpp @@ -2104,6 +2104,9 @@ void* os::dll_lookup(void* handle, const char* name) { return res; } +void* os::get_default_process_handle() { + return (void*)::dlopen(NULL, RTLD_LAZY); +} static bool _print_ascii_file(const char* filename, outputStream* st) { int fd = ::open(filename, O_RDONLY); diff --git a/hotspot/src/os/posix/vm/os_posix.cpp b/hotspot/src/os/posix/vm/os_posix.cpp index 6aae96e9b89..63333172893 100644 --- a/hotspot/src/os/posix/vm/os_posix.cpp +++ b/hotspot/src/os/posix/vm/os_posix.cpp @@ -262,10 +262,6 @@ FILE* os::open(int fd, const char* mode) { return ::fdopen(fd, mode); } -void* os::get_default_process_handle() { - return (void*)::dlopen(NULL, RTLD_LAZY); -} - // Builds a platform dependent Agent_OnLoad_ function name // which is used to find statically linked in agents. // Parameters: diff --git a/hotspot/src/os/solaris/vm/os_solaris.cpp b/hotspot/src/os/solaris/vm/os_solaris.cpp index 8e5984ffa3d..a4d0178c887 100644 --- a/hotspot/src/os/solaris/vm/os_solaris.cpp +++ b/hotspot/src/os/solaris/vm/os_solaris.cpp @@ -2146,6 +2146,10 @@ void* os::dll_lookup(void* handle, const char* name) { return dlsym(handle, name); } +void* os::get_default_process_handle() { + return (void*)::dlopen(NULL, RTLD_LAZY); +} + int os::stat(const char *path, struct stat *sbuf) { char pathbuf[MAX_PATH]; if (strlen(path) > MAX_PATH - 1) { From f0a718ceb02b3c99a59fdffe656a1029a29f4854 Mon Sep 17 00:00:00 2001 From: Jaroslav Bachorik Date: Thu, 23 Jan 2014 10:06:52 +0100 Subject: [PATCH 062/158] 6309226: TEST: java/lang/management/ThreadMXBean/SynchronizationStatistics.java didn't check Thread.sleep Reviewed-by: dholmes, mchung --- .../SynchronizationStatistics.java | 735 +++++++----------- 1 file changed, 289 insertions(+), 446 deletions(-) diff --git a/jdk/test/java/lang/management/ThreadMXBean/SynchronizationStatistics.java b/jdk/test/java/lang/management/ThreadMXBean/SynchronizationStatistics.java index e03042864c9..6986adc6893 100644 --- a/jdk/test/java/lang/management/ThreadMXBean/SynchronizationStatistics.java +++ b/jdk/test/java/lang/management/ThreadMXBean/SynchronizationStatistics.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -27,45 +27,28 @@ * @summary Basic unit test of the synchronization statistics support: * * @author Mandy Chung + * @author Jaroslav Bachorik * - * @ignore 6309226 - * @build Semaphore * @run main/othervm SynchronizationStatistics */ import java.lang.management.*; +import java.util.concurrent.Phaser; public class SynchronizationStatistics { - private static ThreadMXBean mbean = ManagementFactory.getThreadMXBean(); - - private static boolean blockedTimeCheck = - mbean.isThreadContentionMonitoringSupported(); - private static boolean trace = false; - - private static Object lockA = new Object(); - private static Object lockB = new Object(); - private static Object lockC = new Object(); - private static Object lockD = new Object(); - private static Object waiter = new Object(); - private static volatile boolean testFailed = false; - - private static Object go = new Object(); - - private static void goSleep(long ms) { - try { - Thread.sleep(ms); - } catch (InterruptedException e) { - e.printStackTrace(); - System.out.println("Unexpected exception."); - testFailed = true; + private static class LockerThread extends Thread { + public LockerThread(Runnable r) { + super(r, "LockerThread"); } } - public static void main(String args[]) throws Exception { - if (args.length > 0 && args[0].equals("trace")) { - trace = true; - } + private static final ThreadMXBean mbean = ManagementFactory.getThreadMXBean(); + private static final boolean blockedTimeCheck = + mbean.isThreadContentionMonitoringSupported(); + + + public static void main(String args[]) throws Exception { if (blockedTimeCheck) { mbean.setThreadContentionMonitoringEnabled(true); } @@ -75,457 +58,317 @@ public class SynchronizationStatistics { "Thread Contention Monitoring is not enabled"); } - Examiner examiner = new Examiner("Examiner"); - BlockedThread blocked = new BlockedThread("BlockedThread"); - examiner.setThread(blocked); - - // Start the threads and check them in Blocked and Waiting states - examiner.start(); - - // wait until the examiner acquires all the locks and waiting - // for the BlockedThread to start - examiner.waitUntilWaiting(); - - System.out.println("Checking the thread state for the examiner thread " + - "is waiting to begin."); - - // The Examiner should be waiting to be notified by the BlockedThread - checkThreadState(examiner, Thread.State.WAITING); - - System.out.println("Now starting the blocked thread"); - blocked.start(); - - try { - examiner.join(); - blocked.join(); - } catch (InterruptedException e) { - e.printStackTrace(); - System.out.println("Unexpected exception."); - testFailed = true; - } - - if (testFailed) - throw new RuntimeException("TEST FAILED."); + testBlockingOnSimpleMonitor(); + testBlockingOnNestedMonitor(); + testWaitingOnSimpleMonitor(); + testMultiWaitingOnSimpleMonitor(); + testWaitingOnNestedMonitor(); System.out.println("Test passed."); } - private static String INDENT = " "; - private static void printStack(Thread t, StackTraceElement[] stack) { - System.out.println(INDENT + t + - " stack: (length = " + stack.length + ")"); - if (t != null) { - for (int j = 0; j < stack.length; j++) { - System.out.println(INDENT + stack[j]); + private static LockerThread newLockerThread(Runnable r) { + LockerThread t = new LockerThread(r); + t.setDaemon(true); + return t; + } + + private static void waitForThreadState(Thread t, Thread.State state) throws InterruptedException { + while (!t.isInterrupted() && t.getState() != state) { + Thread.sleep(3); + } + } + + /** + * Tests that blocking on a single monitor properly increases the + * blocked count at least by 1. Also asserts that the correct lock name is provided. + */ + private static void testBlockingOnSimpleMonitor() throws Exception { + System.out.println("testBlockingOnSimpleMonitor"); + final Object lock1 = new Object(); + final Phaser p = new Phaser(2); + LockerThread lt = newLockerThread(new Runnable() { + @Override + public void run() { + p.arriveAndAwaitAdvance(); // phase[1] + synchronized(lock1) { + System.out.println("[LockerThread obtained Lock1]"); + p.arriveAndAwaitAdvance(); // phase[2] + } + p.arriveAndAwaitAdvance(); // phase[3] } - System.out.println(); + }); + + lt.start(); + long tid = lt.getId(); + ThreadInfo ti = mbean.getThreadInfo(tid); + String lockName = null; + synchronized(lock1) { + p.arriveAndAwaitAdvance(); // phase[1] + waitForThreadState(lt, Thread.State.BLOCKED); + lockName = mbean.getThreadInfo(tid).getLockName(); } + + p.arriveAndAwaitAdvance(); // phase[2] + testBlocked(ti, mbean.getThreadInfo(tid), lockName, lock1); + p.arriveAndDeregister(); // phase[3] + + lt.join(); + + System.out.println("OK"); } - private static void checkThreadState(Thread thread, Thread.State s) - throws Exception { + /** + * Tests that blocking on a nested monitor properly increases the + * blocked count at least by 1 - it is not affected by the nesting depth. + * Also asserts that the correct lock name is provided. + */ + private static void testBlockingOnNestedMonitor() throws Exception { + System.out.println("testBlockingOnNestedMonitor"); + final Object lock1 = new Object(); + final Object lock2 = new Object(); - ThreadInfo ti = mbean.getThreadInfo(thread.getId()); - if (ti.getThreadState() != s) { - ThreadInfo info = mbean.getThreadInfo(thread.getId(), - Integer.MAX_VALUE); - System.out.println(INDENT + "TEST FAILED:"); - printStack(thread, info.getStackTrace()); - System.out.println(INDENT + "Thread state: " + info.getThreadState()); - - throw new RuntimeException("TEST FAILED: " + - "Thread state for " + thread + " returns " + ti.getThreadState() + - ". Expected to be " + s); - } - } - - private static void checkThreadState(Thread thread, - Thread.State s1, Thread.State s2) - throws Exception { - - ThreadInfo ti = mbean.getThreadInfo(thread.getId()); - if (ti.getThreadState() != s1 && ti.getThreadState() != s2) { - throw new RuntimeException("TEST FAILED: " + - "Thread state for " + thread + " returns " + ti.getThreadState() + - ". Expected to be " + s1 + " or " + s2); - } - } - - static class StatThread extends Thread { - private long blockingBaseTime = 0; - private long totalWaitTime = 0; - private long totalBlockedEnterTime = 0; - - StatThread(String name) { - super(name); - } - - void addWaitTime(long ns) { - totalWaitTime = totalWaitTime + ns; - } - void addBlockedEnterTime(long ns) { - totalBlockedEnterTime = totalBlockedEnterTime + ns; - } - void setBlockingBaseTime(long time) { - blockingBaseTime = time; - } - - long totalBlockedTimeMs() { - return totalBlockedEnterTime / 1000000; - } - - long totalBlockedTimeMs(long now) { - long t = totalBlockedEnterTime + (now - blockingBaseTime); - return t / 1000000; - } - - long totalWaitTimeMs() { - return totalWaitTime / 1000000; - } - - long totalWaitTimeMs(long now) { - long t = totalWaitTime + (now - blockingBaseTime); - return t / 1000000; - } - } - - static class BlockedThread extends StatThread { - private Semaphore handshake = new Semaphore(); - BlockedThread(String name) { - super(name); - } - void waitUntilBlocked() { - handshake.semaP(); - - // give a chance for the examiner thread to really wait - goSleep(20); - } - - void waitUntilWaiting() { - waitUntilBlocked(); - } - - boolean hasWaitersForBlocked() { - return (handshake.getWaiterCount() > 0); - } - - private void notifyWaiter() { - // wait until the examiner waits on the semaphore - while (handshake.getWaiterCount() == 0) { - goSleep(20); - } - handshake.semaV(); - } - - private void waitObj(long ms) { - synchronized (waiter) { - try { - // notify examinerabout to wait on a monitor - notifyWaiter(); - - long base = System.nanoTime(); - setBlockingBaseTime(base); - waiter.wait(ms); - long now = System.nanoTime(); - addWaitTime(now - base); - } catch (Exception e) { - e.printStackTrace(); - System.out.println("Unexpected exception."); - testFailed = true; + final Phaser p = new Phaser(2); + LockerThread lt = newLockerThread(new Runnable() { + @Override + public void run() { + p.arriveAndAwaitAdvance(); // phase[1] + synchronized(lock1) { + System.out.println("[LockerThread obtained Lock1]"); + p.arriveAndAwaitAdvance(); // phase[2] + p.arriveAndAwaitAdvance(); // phase[3] + synchronized(lock2) { + System.out.println("[LockerThread obtained Lock2]"); + p.arriveAndAwaitAdvance(); // phase[4] + } + p.arriveAndAwaitAdvance(); // phase[5] } } + }); + + lt.start(); + long tid = lt.getId(); + ThreadInfo ti = mbean.getThreadInfo(tid); + ThreadInfo ti1 = null; + String lockName = null; + synchronized(lock1) { + p.arriveAndAwaitAdvance(); // phase[1] + waitForThreadState(lt, Thread.State.BLOCKED); + lockName = mbean.getThreadInfo(tid).getLockName(); } + p.arriveAndAwaitAdvance(); // phase[2] - private void test() { - // notify examiner about to block on lockA - notifyWaiter(); + ti1 = mbean.getThreadInfo(tid); + testBlocked(ti, ti1, lockName, lock1); + ti = ti1; - long base = System.nanoTime(); - setBlockingBaseTime(base); - synchronized (lockA) { - long now = System.nanoTime(); - addBlockedEnterTime(now - base); - - A(); // Expected blocked count = 1 - } - E(); + synchronized(lock2) { + p.arriveAndAwaitAdvance(); // phase [3] + waitForThreadState(lt, Thread.State.BLOCKED); + lockName = mbean.getThreadInfo(tid).getLockName(); } - private void A() { - // notify examiner about to block on lockB - notifyWaiter(); + p.arriveAndAwaitAdvance(); // phase [4] + testBlocked(ti, mbean.getThreadInfo(tid), lockName, lock2); + p.arriveAndDeregister(); - long base = System.nanoTime(); - setBlockingBaseTime(base); - synchronized (lockB) { - long now = System.nanoTime(); - addBlockedEnterTime(now - base); + lt.join(); - B(); // Expected blocked count = 2 + System.out.println("OK"); + } + + /** + * Tests that waiting on a single monitor properly increases the waited + * count by 1 and the waited time by a positive number. + */ + private static void testWaitingOnSimpleMonitor() throws Exception { + System.out.println("testWaitingOnSimpleMonitor"); + final Object lock1 = new Object(); + final Phaser p = new Phaser(2); + LockerThread lt = newLockerThread(new Runnable() { + @Override + public void run() { + p.arriveAndAwaitAdvance(); // phase[1] + synchronized(lock1) { + System.out.println("[LockerThread obtained Lock1]"); + try { + lock1.wait(300); + } catch (InterruptedException ex) { + // ignore + } + p.arriveAndAwaitAdvance(); // phase[2] + } + p.arriveAndAwaitAdvance(); // phase[3] } + }); + + lt.start(); + ThreadInfo ti1 = mbean.getThreadInfo(lt.getId()); + synchronized(lock1) { + p.arriveAndAwaitAdvance(); // phase[1] + waitForThreadState(lt, Thread.State.BLOCKED); } - private void B() { - // notify examiner about to block on lockC - notifyWaiter(); + p.arriveAndAwaitAdvance(); // phase[2] - long base = System.nanoTime(); - setBlockingBaseTime(base); - synchronized (lockC) { - long now = System.nanoTime(); - addBlockedEnterTime(now - base); + ThreadInfo ti2 = mbean.getThreadInfo(lt.getId()); + p.arriveAndDeregister(); // phase[3] - C(); // Expected blocked count = 3 + lt.join(); + + testWaited(ti1, ti2, 1); + System.out.println("OK"); + } + + /** + * Tests that waiting multiple times on the same monitor subsequently + * increases the waited count by the number of subsequent calls and the + * waited time by a positive number. + */ + private static void testMultiWaitingOnSimpleMonitor() throws Exception { + System.out.println("testWaitingOnMultipleMonitors"); + final Object lock1 = new Object(); + + final Phaser p = new Phaser(2); + LockerThread lt = newLockerThread(new Runnable() { + @Override + public void run() { + p.arriveAndAwaitAdvance(); // phase[1] + synchronized(lock1) { + System.out.println("[LockerThread obtained Lock1]"); + for (int i = 0; i < 3; i++) { + try { + lock1.wait(300); + } catch (InterruptedException ex) { + // ignore + } + p.arriveAndAwaitAdvance(); // phase[2-4] + } + } + p.arriveAndAwaitAdvance(); // phase[5] } + }); + + lt.start(); + ThreadInfo ti1 = mbean.getThreadInfo(lt.getId()); + synchronized(lock1) { + p.arriveAndAwaitAdvance(); //phase[1] + waitForThreadState(lt, Thread.State.BLOCKED); } - private void C() { - // notify examiner about to block on lockD - notifyWaiter(); + int phase = p.getPhase(); + while ((p.arriveAndAwaitAdvance() - phase) < 3); // phase[2-4] - long base = System.nanoTime(); - setBlockingBaseTime(base); - synchronized (lockD) { - long now = System.nanoTime(); - addBlockedEnterTime(now - base); + ThreadInfo ti2 = mbean.getThreadInfo(lt.getId()); + p.arriveAndDeregister(); // phase[5] - D(); // Expected blocked count = 4 - } - } - private void D() { - goSleep(50); - } - private void E() { - final int WAIT = 1000; - waitObj(WAIT); - waitObj(WAIT); - waitObj(WAIT); - } + lt.join(); + testWaited(ti1, ti2, 3); + System.out.println("OK"); + } - public void run() { - test(); - } // run() - } // BlockedThread + /** + * Tests that waiting on monitors places in nested synchronized blocks + * properly increases the waited count by the number of times the "lock.wait()" + * was invoked and the waited time by a positive number. + */ + private static void testWaitingOnNestedMonitor() throws Exception { + System.out.println("testWaitingOnNestedMonitor"); + final Object lock1 = new Object(); + final Object lock2 = new Object(); + final Object lock3 = new Object(); - static int blockedCount = 0; - static int waitedCount = 0; - static class Examiner extends StatThread { - private BlockedThread blockedThread; - private Semaphore semaphore = new Semaphore(); + final Phaser p = new Phaser(2); + LockerThread lt = newLockerThread(new Runnable() { + @Override + public void run() { + p.arriveAndAwaitAdvance(); // phase[1] + synchronized(lock1) { + System.out.println("[LockerThread obtained Lock1]"); + try { + lock1.wait(300); + } catch (InterruptedException ex) { + // ignore + } - Examiner(String name) { - super(name); - } - - public void setThread(BlockedThread thread) { - blockedThread = thread; - } - - private void blockedTimeRangeCheck(StatThread t, - long blockedTime, - long nowNano) - throws Exception { - long expected = t.totalBlockedTimeMs(nowNano); - - // accept 5% range - timeRangeCheck(blockedTime, expected, 5); - } - private void waitedTimeRangeCheck(StatThread t, - long waitedTime, - long nowNano) - throws Exception { - long expected = t.totalWaitTimeMs(nowNano); - - // accept 5% range - timeRangeCheck(waitedTime, expected, 5); - } - - private void timeRangeCheck(long time, long expected, int percent) - throws Exception { - - double diff = expected - time; - - if (trace) { - System.out.println(" Time = " + time + - " expected = " + expected + - ". Diff = " + diff); - - } - // throw an exception if blockedTime and expectedTime - // differs > percent% - if (diff < 0) { - diff = diff * -1; - } - - long range = (expected * percent) / 100; - // minimum range = 2 ms - if (range < 2) { - range = 2; - } - if (diff > range) { - throw new RuntimeException("TEST FAILED: " + - "Time returned = " + time + - " expected = " + expected + ". Diff = " + diff); - } - } - private void checkInfo(StatThread t, Thread.State s, Object lock, - String lockName, int bcount, int wcount) - throws Exception { - - String action = "ERROR"; - if (s == Thread.State.WAITING || s == Thread.State.TIMED_WAITING) { - action = "wait on "; - } else if (s == Thread.State.BLOCKED) { - action = "block on "; - } - System.out.println(t + " expected to " + action + lockName + - " with blocked count = " + bcount + - " and waited count = " + wcount); - - long now = System.nanoTime(); - ThreadInfo info = mbean.getThreadInfo(t.getId()); - if (info.getThreadState() != s) { - printStack(t, info.getStackTrace()); - throw new RuntimeException("TEST FAILED: " + - "Thread state returned is " + info.getThreadState() + - ". Expected to be " + s); - } - - if (info.getLockName() == null || - !info.getLockName().equals(lock.toString())) { - throw new RuntimeException("TEST FAILED: " + - "getLockName() returned " + info.getLockName() + - ". Expected to be " + lockName + " - " + lock.toString()); - } - - if (info.getBlockedCount() != bcount) { - throw new RuntimeException("TEST FAILED: " + - "Blocked Count returned is " + info.getBlockedCount() + - ". Expected to be " + bcount); - } - if (info.getWaitedCount() != wcount) { - throw new RuntimeException("TEST FAILED: " + - "Waited Count returned is " + info.getWaitedCount() + - ". Expected to be " + wcount); - } - - String lockObj = info.getLockName(); - if (lockObj == null || !lockObj.equals(lock.toString())) { - throw new RuntimeException("TEST FAILED: " + - "Object blocked on is " + lockObj + - ". Expected to be " + lock.toString()); - } - - if (!blockedTimeCheck) { - return; - } - long blockedTime = info.getBlockedTime(); - if (blockedTime < 0) { - throw new RuntimeException("TEST FAILED: " + - "Blocked time returned is negative = " + blockedTime); - } - - if (s == Thread.State.BLOCKED) { - blockedTimeRangeCheck(t, blockedTime, now); - } else { - timeRangeCheck(blockedTime, t.totalBlockedTimeMs(), 5); - } - - long waitedTime = info.getWaitedTime(); - if (waitedTime < 0) { - throw new RuntimeException("TEST FAILED: " + - "Waited time returned is negative = " + waitedTime); - } - if (s == Thread.State.WAITING || s == Thread.State.TIMED_WAITING) { - waitedTimeRangeCheck(t, waitedTime, now); - } else { - timeRangeCheck(waitedTime, t.totalWaitTimeMs(), 5); - } - - } - - private void examine() { - try { - synchronized (lockD) { - synchronized (lockC) { - synchronized (lockB) { - synchronized (lockA) { - // notify main thread to continue - semaphore.semaV(); - - // wait until BlockedThread has started - blockedThread.waitUntilBlocked(); - - blockedCount++; - checkInfo(blockedThread, Thread.State.BLOCKED, - lockA, "lockA", - blockedCount, waitedCount); - } - - // wait until BlockedThread to block on lockB - blockedThread.waitUntilBlocked(); - - blockedCount++; - checkInfo(blockedThread, Thread.State.BLOCKED, - lockB, "lockB", - blockedCount, waitedCount); + p.arriveAndAwaitAdvance(); // phase[2] + synchronized(lock2) { + System.out.println("[LockerThread obtained Lock2]"); + try { + lock2.wait(300); + } catch (InterruptedException ex) { + // ignore } - // wait until BlockedThread to block on lockC - blockedThread.waitUntilBlocked(); - - blockedCount++; - checkInfo(blockedThread, Thread.State.BLOCKED, - lockC, "lockC", - blockedCount, waitedCount); + p.arriveAndAwaitAdvance(); // phase[3] + synchronized(lock3) { + System.out.println("[LockerThread obtained Lock3]"); + try { + lock3.wait(300); + } catch (InterruptedException ex) { + // ignore + } + p.arriveAndAwaitAdvance(); // phase[4] + } } - // wait until BlockedThread to block on lockD - blockedThread.waitUntilBlocked(); - blockedCount++; - - checkInfo(blockedThread, Thread.State.BLOCKED, - lockD, "lockD", - blockedCount, waitedCount); } - - // wait until BlockedThread about to call E() - // BlockedThread will wait on waiter for 3 times - blockedThread.waitUntilWaiting(); - - waitedCount++; - checkInfo(blockedThread, Thread.State.TIMED_WAITING, - waiter, "waiter", blockedCount, waitedCount); - - blockedThread.waitUntilWaiting(); - - waitedCount++; - checkInfo(blockedThread, Thread.State.TIMED_WAITING, - waiter, "waiter", blockedCount, waitedCount); - - blockedThread.waitUntilWaiting(); - - waitedCount++; - checkInfo(blockedThread, Thread.State.TIMED_WAITING, - waiter, "waiter", blockedCount, waitedCount); - - } catch (Exception e) { - e.printStackTrace(); - System.out.println("Unexpected exception."); - testFailed = true; + p.arriveAndAwaitAdvance(); // phase[5] } + }); + + lt.start(); + ThreadInfo ti1 = mbean.getThreadInfo(lt.getId()); + synchronized(lock1) { + p.arriveAndAwaitAdvance(); // phase[1] + waitForThreadState(lt, Thread.State.BLOCKED); } - public void run() { - examine(); - } // run() - - public void waitUntilWaiting() { - semaphore.semaP(); - - // wait until the examiner is waiting for - while (!blockedThread.hasWaitersForBlocked()) { - goSleep(50); - } - // give a chance for the examiner thread to really wait - goSleep(20); - + synchronized(lock2) { + p.arriveAndAwaitAdvance(); // phase[2] + waitForThreadState(lt, Thread.State.BLOCKED); } - } // Examiner + + synchronized(lock3) { + p.arriveAndAwaitAdvance(); // phase[3] + waitForThreadState(lt, Thread.State.BLOCKED); + } + + p.arriveAndAwaitAdvance(); // phase[4] + ThreadInfo ti2 = mbean.getThreadInfo(lt.getId()); + p.arriveAndDeregister(); // phase[5] + + lt.join(); + testWaited(ti1, ti2, 3); + System.out.println("OK"); + } + + private static void testWaited(ThreadInfo ti1, ThreadInfo ti2, int waited) throws Error { + long waitCntDiff = ti2.getWaitedCount() - ti1.getWaitedCount(); + long waitTimeDiff = ti2.getWaitedTime() - ti1.getWaitedTime(); + if (waitCntDiff < waited) { + throw new Error("Unexpected diff in waited count. Expecting at least " + + waited + " , got " + waitCntDiff); + } + if (waitTimeDiff <= 0) { + throw new Error("Unexpected diff in waited time. Expecting increasing " + + "value, got " + waitTimeDiff + "ms"); + } + } + + private static void testBlocked(ThreadInfo ti1, ThreadInfo ti2, + String lockName, final Object lock) + throws Error { + long blkCntDiff = ti2.getBlockedCount() - ti1.getBlockedCount(); + long blkTimeDiff = ti2.getBlockedTime() - ti1.getBlockedTime(); + if (blkCntDiff < 1) { + throw new Error("Unexpected diff in blocked count. Expecting at least 1, " + + "got " + blkCntDiff); + } + if (blkTimeDiff < 0) { + throw new Error("Unexpected diff in blocked time. Expecting a positive " + + "number, got " + blkTimeDiff); + } + if (!lockName.equals(lock.toString())) { + throw new Error("Unexpected blocked monitor name. Expecting " + + lock.toString() + ", got " + + lockName); + } + } } From 076122acf62aeb09c3a77cf45f13aacbecf05129 Mon Sep 17 00:00:00 2001 From: Kevin Walls Date: Thu, 23 Jan 2014 09:33:50 +0000 Subject: [PATCH 063/158] 8032466: serviceability/sa/jmap-hashcode/Test8028623.java fails with compilation errors Reviewed-by: dsamersoff, sla --- hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java b/hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java index 38afd66902a..bd743ab1c1f 100644 --- a/hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java +++ b/hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java @@ -26,6 +26,8 @@ * @bug 8028623 * @summary Test hashing of extended characters in Serviceability Agent. * @library /testlibrary + * @compile -encoding utf8 Test8028623.java + * @run main Test8028623 */ import com.oracle.java.testlibrary.JDKToolLauncher; From 7d09fd8b125901889971a8d6bab684db78dc36c4 Mon Sep 17 00:00:00 2001 From: Shanliang Jiang Date: Thu, 23 Jan 2014 15:17:36 +0100 Subject: [PATCH 064/158] 6980984: java/lang/management/MemoryMXBean/MemoryManagement is not robust when getMax() returns -1 Reviewed-by: jbachorik, dfuchs --- .../MemoryMXBean/MemoryManagement.java | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/jdk/test/java/lang/management/MemoryMXBean/MemoryManagement.java b/jdk/test/java/lang/management/MemoryMXBean/MemoryManagement.java index d9c8d472456..4077d2a08ef 100644 --- a/jdk/test/java/lang/management/MemoryMXBean/MemoryManagement.java +++ b/jdk/test/java/lang/management/MemoryMXBean/MemoryManagement.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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,9 +23,9 @@ /* * @test - * @bug 4530538 + * @bug 4530538 6980984 * @summary Basic unit test of memory management testing: - * 1) setUsatgeThreshold() and getUsageThreshold() + * 1) setUsageThreshold() and getUsageThreshold() * 2) test low memory detection on the old generation. * * @author Mandy Chung @@ -40,16 +40,18 @@ import javax.management.*; import javax.management.openmbean.CompositeData; public class MemoryManagement { - private static MemoryMXBean mm = ManagementFactory.getMemoryMXBean(); - private static List pools = ManagementFactory.getMemoryPoolMXBeans(); - private static List managers = ManagementFactory.getMemoryManagerMXBeans(); - private static MemoryPoolMXBean mpool = null; - private static boolean trace = false; - private static boolean testFailed = false; + private static final MemoryMXBean mm = ManagementFactory.getMemoryMXBean(); + private static final List pools = + Collections.synchronizedList(ManagementFactory.getMemoryPoolMXBeans()); + private static final List managers = + Collections.synchronizedList(ManagementFactory.getMemoryManagerMXBeans()); + private static volatile MemoryPoolMXBean mpool = null; + private static volatile boolean trace = false; + private static volatile boolean testFailed = false; private static final int NUM_CHUNKS = 2; - private static long chunkSize; + private static volatile long chunkSize; + private static volatile int listenerInvoked = 0; - private static int listenerInvoked = 0; static class SensorListener implements NotificationListener { public void handleNotification(Notification notif, Object handback) { String type = notif.getType(); @@ -101,7 +103,13 @@ public class MemoryManagement { // Now set threshold MemoryUsage mu = mpool.getUsage(); - chunkSize = (mu.getMax() - mu.getUsed()) / 20; + long max = mu.getMax(); + if (max != -1) { + chunkSize = (max - mu.getUsed()) / 20; + } else { // 6980984 + System.gc(); + chunkSize = Runtime.getRuntime().freeMemory()/20; + } newThreshold = mu.getUsed() + (chunkSize * NUM_CHUNKS); System.out.println("Setting threshold for " + mpool.getName() + From 4a3aa3a77a87c39fb6ad06768adcd125d406c80c Mon Sep 17 00:00:00 2001 From: Yumin Qi Date: Thu, 23 Jan 2014 09:40:32 -0800 Subject: [PATCH 065/158] 6651256: jstack: DeleteGlobalRef method call doesn't lead to descreasing of global refs count shown by jstack Jni_DeleteGlobalRef does not really release the jni handle, instead, set the handle point to JNIHandles::_deleted_handle which holds an oop instance (java/lang/Object) in Java heap and never be GC'ed. When counting number of global reference, it counts all the handles on the chain list, which includes the already deleted ones. Reviewed-by: zgu, sla, coleenp --- hotspot/src/share/vm/runtime/jniHandles.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hotspot/src/share/vm/runtime/jniHandles.cpp b/hotspot/src/share/vm/runtime/jniHandles.cpp index 7a3fb8b4c51..5e918a19ddd 100644 --- a/hotspot/src/share/vm/runtime/jniHandles.cpp +++ b/hotspot/src/share/vm/runtime/jniHandles.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -195,8 +195,10 @@ private: int _count; public: CountHandleClosure(): _count(0) {} - virtual void do_oop(oop* unused) { - _count++; + virtual void do_oop(oop* ooph) { + if (*ooph != JNIHandles::deleted_handle()) { + _count++; + } } virtual void do_oop(narrowOop* unused) { ShouldNotReachHere(); } int count() { return _count; } From 90a44b778da61c8ee531748141686870b2769382 Mon Sep 17 00:00:00 2001 From: Gilles Duboscq Date: Thu, 23 Jan 2014 16:02:14 -0500 Subject: [PATCH 066/158] 8031427: AllocObject and Unsafe.allocateInstance segfault for primitive types The fix just throws an InstantiationException if the Klass is NULL. Reviewed-by: coleenp, twisti, jrose --- hotspot/src/share/vm/prims/jni.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hotspot/src/share/vm/prims/jni.cpp b/hotspot/src/share/vm/prims/jni.cpp index 9ced092e7ab..de176d9177b 100644 --- a/hotspot/src/share/vm/prims/jni.cpp +++ b/hotspot/src/share/vm/prims/jni.cpp @@ -1355,6 +1355,10 @@ static void jni_invoke_nonstatic(JNIEnv *env, JavaValue* result, jobject receive static instanceOop alloc_object(jclass clazz, TRAPS) { KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); + if (k == NULL) { + ResourceMark rm(THREAD); + THROW_(vmSymbols::java_lang_InstantiationException(), NULL); + } k()->check_valid_for_instantiation(false, CHECK_NULL); InstanceKlass::cast(k())->initialize(CHECK_NULL); instanceOop ih = InstanceKlass::cast(k())->allocate_instance(THREAD); From 5634f01fdb4fcc9d6023dd2d313410df802f3e4d Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Thu, 23 Jan 2014 14:04:52 -0800 Subject: [PATCH 067/158] 4932272: (cl) Remove declaration of the unused private method ClassLoader.defineClass0 Reviewed-by: alanb --- jdk/src/share/classes/java/lang/ClassLoader.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/jdk/src/share/classes/java/lang/ClassLoader.java b/jdk/src/share/classes/java/lang/ClassLoader.java index 875f5ec8e97..bb4c79abd25 100644 --- a/jdk/src/share/classes/java/lang/ClassLoader.java +++ b/jdk/src/share/classes/java/lang/ClassLoader.java @@ -851,9 +851,6 @@ public abstract class ClassLoader { return c; } - private native Class defineClass0(String name, byte[] b, int off, int len, - ProtectionDomain pd); - private native Class defineClass1(String name, byte[] b, int off, int len, ProtectionDomain pd, String source); From 7e46f00b861b72c5e313193af729d9b74303516b Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Thu, 23 Jan 2014 14:06:58 -0800 Subject: [PATCH 068/158] 6516909: (cl spec) ClassLoader.loadClass() clarification to indicate it shouldn't be used for array classes Reviewed-by: alanb --- .../share/classes/java/lang/ClassLoader.java | 7 ++-- jdk/src/share/classes/sun/misc/VM.java | 34 ------------------- 2 files changed, 5 insertions(+), 36 deletions(-) diff --git a/jdk/src/share/classes/java/lang/ClassLoader.java b/jdk/src/share/classes/java/lang/ClassLoader.java index bb4c79abd25..3905944fc37 100644 --- a/jdk/src/share/classes/java/lang/ClassLoader.java +++ b/jdk/src/share/classes/java/lang/ClassLoader.java @@ -172,6 +172,10 @@ import sun.security.util.SecurityConstants; * "java.net.URLClassLoader$3$1" * * + * {@code Class} objects for array classes are not created by {@code ClassLoader}; + * use the {@link Class#forName} method instead. + * + * @jls 13.1 The Form of a Binary * @see #resolveClass(Class) * @since 1.0 */ @@ -862,8 +866,7 @@ public abstract class ClassLoader { private boolean checkName(String name) { if ((name == null) || (name.length() == 0)) return true; - if ((name.indexOf('/') != -1) - || (!VM.allowArraySyntax() && (name.charAt(0) == '['))) + if ((name.indexOf('/') != -1) || (name.charAt(0) == '[')) return false; return true; } diff --git a/jdk/src/share/classes/sun/misc/VM.java b/jdk/src/share/classes/sun/misc/VM.java index a464305a201..8b77e2297fa 100644 --- a/jdk/src/share/classes/sun/misc/VM.java +++ b/jdk/src/share/classes/sun/misc/VM.java @@ -206,32 +206,6 @@ public class VM { return pageAlignDirectMemory; } - // A user-settable boolean to determine whether ClassLoader.loadClass should - // accept array syntax. This value may be changed during VM initialization - // via the system property "sun.lang.ClassLoader.allowArraySyntax". - // - // The default for 1.5 is "true", array syntax is allowed. In 1.6, the - // default will be "false". The presence of this system property to - // control array syntax allows applications the ability to preview this new - // behaviour. - // - private static boolean defaultAllowArraySyntax = false; - private static boolean allowArraySyntax = defaultAllowArraySyntax; - - // The allowArraySyntax boolean is initialized during system initialization - // in the saveAndRemoveProperties method. - // - // It is initialized based on the value of the system property - // "sun.lang.ClassLoader.allowArraySyntax". If the system property is not - // provided, the default for 1.5 is "true". In 1.6, the default will be - // "false". If the system property is provided, then the value of - // allowArraySyntax will be equal to "true" if Boolean.parseBoolean() - // returns "true". Otherwise, the field will be set to "false". - // - public static boolean allowArraySyntax() { - return allowArraySyntax; - } - /** * Returns true if the given class loader is in the system domain * in which all permissions are granted. @@ -296,14 +270,6 @@ public class VM { if ("true".equals(s)) pageAlignDirectMemory = true; - // Set a boolean to determine whether ClassLoader.loadClass accepts - // array syntax. This value is controlled by the system property - // "sun.lang.ClassLoader.allowArraySyntax". - s = props.getProperty("sun.lang.ClassLoader.allowArraySyntax"); - allowArraySyntax = (s == null - ? defaultAllowArraySyntax - : Boolean.parseBoolean(s)); - // Remove other private system properties // used by java.lang.Integer.IntegerCache props.remove("java.lang.Integer.IntegerCache.high"); From edb5dd324e5a44921a4c44ce58545d25e6d96995 Mon Sep 17 00:00:00 2001 From: David Simms Date: Fri, 24 Jan 2014 09:28:47 +0100 Subject: [PATCH 069/158] 8028280: ParkEvent leak when running modified runThese which only loads classes Use spin lock to manage ParkEvent and PlatformEvent free lists. Reviewed-by: dholmes, fparain --- hotspot/src/os/bsd/vm/os_bsd.cpp | 18 +++- hotspot/src/os/linux/vm/os_linux.cpp | 30 +++++- hotspot/src/os/solaris/vm/os_solaris.cpp | 11 +- hotspot/src/os/windows/vm/os_windows.cpp | 10 ++ hotspot/src/share/vm/runtime/os.hpp | 5 +- hotspot/src/share/vm/runtime/park.cpp | 129 ++++++----------------- hotspot/src/share/vm/runtime/thread.cpp | 4 +- 7 files changed, 95 insertions(+), 112 deletions(-) diff --git a/hotspot/src/os/bsd/vm/os_bsd.cpp b/hotspot/src/os/bsd/vm/os_bsd.cpp index 47e5d16efdc..456daba559c 100644 --- a/hotspot/src/os/bsd/vm/os_bsd.cpp +++ b/hotspot/src/os/bsd/vm/os_bsd.cpp @@ -2636,9 +2636,21 @@ int os::sleep(Thread* thread, jlong millis, bool interruptible) { } } -int os::naked_sleep() { - // %% make the sleep time an integer flag. for now use 1 millisec. - return os::sleep(Thread::current(), 1, false); +void os::naked_short_sleep(jlong ms) { + struct timespec req; + + assert(ms < 1000, "Un-interruptable sleep, short time use only"); + req.tv_sec = 0; + if (ms > 0) { + req.tv_nsec = (ms % 1000) * 1000000; + } + else { + req.tv_nsec = 1; + } + + nanosleep(&req, NULL); + + return; } // Sleep forever; naked call to OS-specific sleep; use with CAUTION diff --git a/hotspot/src/os/linux/vm/os_linux.cpp b/hotspot/src/os/linux/vm/os_linux.cpp index 54149e18253..d0751f005ad 100644 --- a/hotspot/src/os/linux/vm/os_linux.cpp +++ b/hotspot/src/os/linux/vm/os_linux.cpp @@ -3871,9 +3871,33 @@ int os::sleep(Thread* thread, jlong millis, bool interruptible) { } } -int os::naked_sleep() { - // %% make the sleep time an integer flag. for now use 1 millisec. - return os::sleep(Thread::current(), 1, false); +// +// Short sleep, direct OS call. +// +// Note: certain versions of Linux CFS scheduler (since 2.6.23) do not guarantee +// sched_yield(2) will actually give up the CPU: +// +// * Alone on this pariticular CPU, keeps running. +// * Before the introduction of "skip_buddy" with "compat_yield" disabled +// (pre 2.6.39). +// +// So calling this with 0 is an alternative. +// +void os::naked_short_sleep(jlong ms) { + struct timespec req; + + assert(ms < 1000, "Un-interruptable sleep, short time use only"); + req.tv_sec = 0; + if (ms > 0) { + req.tv_nsec = (ms % 1000) * 1000000; + } + else { + req.tv_nsec = 1; + } + + nanosleep(&req, NULL); + + return; } // Sleep forever; naked call to OS-specific sleep; use with CAUTION diff --git a/hotspot/src/os/solaris/vm/os_solaris.cpp b/hotspot/src/os/solaris/vm/os_solaris.cpp index a4d0178c887..533bbb76650 100644 --- a/hotspot/src/os/solaris/vm/os_solaris.cpp +++ b/hotspot/src/os/solaris/vm/os_solaris.cpp @@ -3540,9 +3540,14 @@ int os::sleep(Thread* thread, jlong millis, bool interruptible) { return os_sleep(millis, interruptible); } -int os::naked_sleep() { - // %% make the sleep time an integer flag. for now use 1 millisec. - return os_sleep(1, false); +void os::naked_short_sleep(jlong ms) { + assert(ms < 1000, "Un-interruptable sleep, short time use only"); + + // usleep is deprecated and removed from POSIX, in favour of nanosleep, but + // Solaris requires -lrt for this. + usleep((ms * 1000)); + + return; } // Sleep forever; naked call to OS-specific sleep; use with CAUTION diff --git a/hotspot/src/os/windows/vm/os_windows.cpp b/hotspot/src/os/windows/vm/os_windows.cpp index fe800d7a284..5cf47426595 100644 --- a/hotspot/src/os/windows/vm/os_windows.cpp +++ b/hotspot/src/os/windows/vm/os_windows.cpp @@ -3486,6 +3486,16 @@ int os::sleep(Thread* thread, jlong ms, bool interruptable) { return result; } +// +// Short sleep, direct OS call. +// +// ms = 0, means allow others (if any) to run. +// +void os::naked_short_sleep(jlong ms) { + assert(ms < 1000, "Un-interruptable sleep, short time use only"); + Sleep(ms); +} + // Sleep forever; naked call to OS-specific sleep; use with CAUTION void os::infinite_sleep() { while (true) { // sleep forever ... diff --git a/hotspot/src/share/vm/runtime/os.hpp b/hotspot/src/share/vm/runtime/os.hpp index 17fcd3bdd79..47ebeb6bbb5 100644 --- a/hotspot/src/share/vm/runtime/os.hpp +++ b/hotspot/src/share/vm/runtime/os.hpp @@ -430,7 +430,10 @@ class os: AllStatic { static intx current_thread_id(); static int current_process_id(); static int sleep(Thread* thread, jlong ms, bool interruptable); - static int naked_sleep(); + // Short standalone OS sleep suitable for slow path spin loop. + // Ignores Thread.interrupt() (so keep it short). + // ms = 0, will sleep for the least amount of time allowed by the OS. + static void naked_short_sleep(jlong ms); static void infinite_sleep(); // never returns, use with CAUTION static void yield(); // Yields to all threads with same priority enum YieldResult { diff --git a/hotspot/src/share/vm/runtime/park.cpp b/hotspot/src/share/vm/runtime/park.cpp index 6380570ef50..0ab5b5b6786 100644 --- a/hotspot/src/share/vm/runtime/park.cpp +++ b/hotspot/src/share/vm/runtime/park.cpp @@ -59,58 +59,22 @@ ParkEvent * ParkEvent::Allocate (Thread * t) { // Start by trying to recycle an existing but unassociated // ParkEvent from the global free list. - for (;;) { - ev = FreeList ; - if (ev == NULL) break ; - // 1: Detach - sequester or privatize the list - // Tantamount to ev = Swap (&FreeList, NULL) - if (Atomic::cmpxchg_ptr (NULL, &FreeList, ev) != ev) { - continue ; + // Using a spin lock since we are part of the mutex impl. + // 8028280: using concurrent free list without memory management can leak + // pretty badly it turns out. + Thread::SpinAcquire(&ListLock, "ParkEventFreeListAllocate"); + { + ev = FreeList; + if (ev != NULL) { + FreeList = ev->FreeNext; } - - // We've detached the list. The list in-hand is now - // local to this thread. This thread can operate on the - // list without risk of interference from other threads. - // 2: Extract -- pop the 1st element from the list. - ParkEvent * List = ev->FreeNext ; - if (List == NULL) break ; - for (;;) { - // 3: Try to reattach the residual list - guarantee (List != NULL, "invariant") ; - ParkEvent * Arv = (ParkEvent *) Atomic::cmpxchg_ptr (List, &FreeList, NULL) ; - if (Arv == NULL) break ; - - // New nodes arrived. Try to detach the recent arrivals. - if (Atomic::cmpxchg_ptr (NULL, &FreeList, Arv) != Arv) { - continue ; - } - guarantee (Arv != NULL, "invariant") ; - // 4: Merge Arv into List - ParkEvent * Tail = List ; - while (Tail->FreeNext != NULL) Tail = Tail->FreeNext ; - Tail->FreeNext = Arv ; - } - break ; } + Thread::SpinRelease(&ListLock); if (ev != NULL) { guarantee (ev->AssociatedWith == NULL, "invariant") ; } else { // Do this the hard way -- materialize a new ParkEvent. - // In rare cases an allocating thread might detach a long list -- - // installing null into FreeList -- and then stall or be obstructed. - // A 2nd thread calling Allocate() would see FreeList == null. - // The list held privately by the 1st thread is unavailable to the 2nd thread. - // In that case the 2nd thread would have to materialize a new ParkEvent, - // even though free ParkEvents existed in the system. In this case we end up - // with more ParkEvents in circulation than we need, but the race is - // rare and the outcome is benign. Ideally, the # of extant ParkEvents - // is equal to the maximum # of threads that existed at any one time. - // Because of the race mentioned above, segments of the freelist - // can be transiently inaccessible. At worst we may end up with the - // # of ParkEvents in circulation slightly above the ideal. - // Note that if we didn't have the TSM/immortal constraint, then - // when reattaching, above, we could trim the list. ev = new ParkEvent () ; guarantee ((intptr_t(ev) & 0xFF) == 0, "invariant") ; } @@ -124,13 +88,14 @@ void ParkEvent::Release (ParkEvent * ev) { if (ev == NULL) return ; guarantee (ev->FreeNext == NULL , "invariant") ; ev->AssociatedWith = NULL ; - for (;;) { - // Push ev onto FreeList - // The mechanism is "half" lock-free. - ParkEvent * List = FreeList ; - ev->FreeNext = List ; - if (Atomic::cmpxchg_ptr (ev, &FreeList, List) == List) break ; + // Note that if we didn't have the TSM/immortal constraint, then + // when reattaching we could trim the list. + Thread::SpinAcquire(&ListLock, "ParkEventFreeListRelease"); + { + ev->FreeNext = FreeList; + FreeList = ev; } + Thread::SpinRelease(&ListLock); } // Override operator new and delete so we can ensure that the @@ -164,56 +129,21 @@ Parker * Parker::Allocate (JavaThread * t) { // Start by trying to recycle an existing but unassociated // Parker from the global free list. - for (;;) { - p = FreeList ; - if (p == NULL) break ; - // 1: Detach - // Tantamount to p = Swap (&FreeList, NULL) - if (Atomic::cmpxchg_ptr (NULL, &FreeList, p) != p) { - continue ; + // 8028280: using concurrent free list without memory management can leak + // pretty badly it turns out. + Thread::SpinAcquire(&ListLock, "ParkerFreeListAllocate"); + { + p = FreeList; + if (p != NULL) { + FreeList = p->FreeNext; } - - // We've detached the list. The list in-hand is now - // local to this thread. This thread can operate on the - // list without risk of interference from other threads. - // 2: Extract -- pop the 1st element from the list. - Parker * List = p->FreeNext ; - if (List == NULL) break ; - for (;;) { - // 3: Try to reattach the residual list - guarantee (List != NULL, "invariant") ; - Parker * Arv = (Parker *) Atomic::cmpxchg_ptr (List, &FreeList, NULL) ; - if (Arv == NULL) break ; - - // New nodes arrived. Try to detach the recent arrivals. - if (Atomic::cmpxchg_ptr (NULL, &FreeList, Arv) != Arv) { - continue ; - } - guarantee (Arv != NULL, "invariant") ; - // 4: Merge Arv into List - Parker * Tail = List ; - while (Tail->FreeNext != NULL) Tail = Tail->FreeNext ; - Tail->FreeNext = Arv ; - } - break ; } + Thread::SpinRelease(&ListLock); if (p != NULL) { guarantee (p->AssociatedWith == NULL, "invariant") ; } else { // Do this the hard way -- materialize a new Parker.. - // In rare cases an allocating thread might detach - // a long list -- installing null into FreeList --and - // then stall. Another thread calling Allocate() would see - // FreeList == null and then invoke the ctor. In this case we - // end up with more Parkers in circulation than we need, but - // the race is rare and the outcome is benign. - // Ideally, the # of extant Parkers is equal to the - // maximum # of threads that existed at any one time. - // Because of the race mentioned above, segments of the - // freelist can be transiently inaccessible. At worst - // we may end up with the # of Parkers in circulation - // slightly above the ideal. p = new Parker() ; } p->AssociatedWith = t ; // Associate p with t @@ -227,11 +157,12 @@ void Parker::Release (Parker * p) { guarantee (p->AssociatedWith != NULL, "invariant") ; guarantee (p->FreeNext == NULL , "invariant") ; p->AssociatedWith = NULL ; - for (;;) { - // Push p onto FreeList - Parker * List = FreeList ; - p->FreeNext = List ; - if (Atomic::cmpxchg_ptr (p, &FreeList, List) == List) break ; + + Thread::SpinAcquire(&ListLock, "ParkerFreeListRelease"); + { + p->FreeNext = FreeList; + FreeList = p; } + Thread::SpinRelease(&ListLock); } diff --git a/hotspot/src/share/vm/runtime/thread.cpp b/hotspot/src/share/vm/runtime/thread.cpp index a7b8068e211..c5a1145a74a 100644 --- a/hotspot/src/share/vm/runtime/thread.cpp +++ b/hotspot/src/share/vm/runtime/thread.cpp @@ -4446,9 +4446,7 @@ void Thread::SpinAcquire (volatile int * adr, const char * LockName) { ++ctr ; if ((ctr & 0xFFF) == 0 || !os::is_MP()) { if (Yields > 5) { - // Consider using a simple NakedSleep() instead. - // Then SpinAcquire could be called by non-JVM threads - Thread::current()->_ParkEvent->park(1) ; + os::naked_short_sleep(1); } else { os::NakedYield() ; ++Yields ; From 65a9d3695b35e011564459ffee1e557859a26c0d Mon Sep 17 00:00:00 2001 From: Alan Bateman Date: Fri, 24 Jan 2014 11:50:33 +0000 Subject: [PATCH 070/158] 8032456: vm/jni/Miscellaneous/misc001/misc00101m1/misc00101m1.html failing on OS X Reviewed-by: sla, chegar, psandoz --- jdk/src/solaris/native/common/jni_util_md.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/jdk/src/solaris/native/common/jni_util_md.c b/jdk/src/solaris/native/common/jni_util_md.c index e9e0f4e0f3f..42ab2de0037 100644 --- a/jdk/src/solaris/native/common/jni_util_md.c +++ b/jdk/src/solaris/native/common/jni_util_md.c @@ -23,6 +23,8 @@ * questions. */ +#include + #include "jni.h" #include "jni_util.h" #include "dlfcn.h" @@ -40,7 +42,11 @@ void* getProcessHandle() { if (procHandle != NULL) { return procHandle; } +#ifdef __APPLE__ + procHandle = (void*)dlopen(NULL, RTLD_FIRST); +#else procHandle = (void*)dlopen(NULL, RTLD_LAZY); +#endif return procHandle; } From 39f19c2f76425c2398e0ae6835204cfab68db649 Mon Sep 17 00:00:00 2001 From: Harold Seigel Date: Fri, 24 Jan 2014 08:13:42 -0500 Subject: [PATCH 071/158] 8028553: The JVM should not throw VerifyError when 'overriding' a static final method in a superclass Check if method is static before throwing exception. Reviewed-by: kamg, coleenp, lfoltan, fparain --- .../share/vm/classfile/classFileParser.cpp | 6 +- .../test/runtime/finalStatic/FinalStatic.java | 142 ++++++++++++++++++ 2 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 hotspot/test/runtime/finalStatic/FinalStatic.java diff --git a/hotspot/src/share/vm/classfile/classFileParser.cpp b/hotspot/src/share/vm/classfile/classFileParser.cpp index 66d6785a1c6..f45bb750269 100644 --- a/hotspot/src/share/vm/classfile/classFileParser.cpp +++ b/hotspot/src/share/vm/classfile/classFileParser.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -4504,8 +4504,8 @@ void ClassFileParser::check_final_method_override(instanceKlassHandle this_klass break; // didn't find any match; get out } - if (super_m->is_final() && - // matching method in super is final + if (super_m->is_final() && !super_m->is_static() && + // matching method in super is final, and not static (Reflection::verify_field_access(this_klass(), super_m->method_holder(), super_m->method_holder(), diff --git a/hotspot/test/runtime/finalStatic/FinalStatic.java b/hotspot/test/runtime/finalStatic/FinalStatic.java new file mode 100644 index 00000000000..314b1928f41 --- /dev/null +++ b/hotspot/test/runtime/finalStatic/FinalStatic.java @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8028553 + * @summary Test that VerifyError is not thrown when 'overriding' a static method. + * @run main FinalStatic + */ + +import java.lang.reflect.*; +import jdk.internal.org.objectweb.asm.ClassWriter; +import jdk.internal.org.objectweb.asm.MethodVisitor; +import jdk.internal.org.objectweb.asm.Opcodes; + +/* + * class A { static final int m() {return FAIL; } } + * class B extends A { int m() { return PASS; } } + * class FinalStatic { + * public static void main () { + * Object b = new B(); + * b.m(); + * } + * } + */ +public class FinalStatic { + + static final String CLASS_NAME_A = "A"; + static final String CLASS_NAME_B = "B"; + static final int FAILED = 0; + static final int EXPECTED = 1234; + + static class TestClassLoader extends ClassLoader implements Opcodes { + + @Override + public Class findClass(String name) throws ClassNotFoundException { + byte[] b; + try { + b = loadClassData(name); + } catch (Throwable th) { + // th.printStackTrace(); + throw new ClassNotFoundException("Loading error", th); + } + return defineClass(name, b, 0, b.length); + } + + private byte[] loadClassData(String name) throws Exception { + ClassWriter cw = new ClassWriter(0); + MethodVisitor mv; + switch (name) { + case CLASS_NAME_A: + cw.visit(52, ACC_SUPER | ACC_PUBLIC, CLASS_NAME_A, null, "java/lang/Object", null); + { + mv = cw.visitMethod(ACC_PUBLIC, "", "()V", null, null); + mv.visitCode(); + mv.visitVarInsn(ALOAD, 0); + mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "", "()V"); + mv.visitInsn(RETURN); + mv.visitMaxs(1, 1); + mv.visitEnd(); + + mv = cw.visitMethod(ACC_FINAL | ACC_STATIC, "m", "()I", null, null); + mv.visitCode(); + mv.visitLdcInsn(FAILED); + mv.visitInsn(IRETURN); + mv.visitMaxs(1, 1); + mv.visitEnd(); + } + break; + case CLASS_NAME_B: + cw.visit(52, ACC_SUPER | ACC_PUBLIC, CLASS_NAME_B, null, CLASS_NAME_A, null); + { + mv = cw.visitMethod(ACC_PUBLIC, "", "()V", null, null); + mv.visitCode(); + mv.visitVarInsn(ALOAD, 0); + mv.visitMethodInsn(INVOKESPECIAL, CLASS_NAME_A, "", "()V"); + mv.visitInsn(RETURN); + mv.visitMaxs(1, 1); + mv.visitEnd(); + + mv = cw.visitMethod(ACC_PUBLIC, "m", "()I", null, null); + mv.visitCode(); + mv.visitLdcInsn(EXPECTED); + mv.visitInsn(IRETURN); + mv.visitMaxs(1, 1); + mv.visitEnd(); + + } + break; + default: + break; + } + cw.visitEnd(); + + return cw.toByteArray(); + } + } + + public static void main(String[] args) throws Exception { + TestClassLoader tcl = new TestClassLoader(); + Class a = tcl.loadClass(CLASS_NAME_A); + Class b = tcl.loadClass(CLASS_NAME_B); + Object inst = b.newInstance(); + Method[] meths = b.getDeclaredMethods(); + + Method m = meths[0]; + int mod = m.getModifiers(); + if ((mod & Modifier.FINAL) != 0) { + throw new Exception("FAILED: " + m + " is FINAL"); + } + if ((mod & Modifier.STATIC) != 0) { + throw new Exception("FAILED: " + m + " is STATIC"); + } + + m.setAccessible(true); + if (!m.invoke(inst).equals(EXPECTED)) { + throw new Exception("FAILED: " + EXPECTED + " from " + m); + } + + System.out.println("Passed."); + } +} From d5a62b140122674175ab562ce89e0306fbb344c1 Mon Sep 17 00:00:00 2001 From: Alan Bateman Date: Fri, 24 Jan 2014 13:54:16 +0000 Subject: [PATCH 072/158] 8032451: (dc) DatagramChannel.join should support include-mode filtering on OS X Reviewed-by: chegar --- jdk/src/solaris/native/sun/nio/ch/Net.c | 78 ++++++------------------- 1 file changed, 18 insertions(+), 60 deletions(-) diff --git a/jdk/src/solaris/native/sun/nio/ch/Net.c b/jdk/src/solaris/native/sun/nio/ch/Net.c index 679a9d8d0da..beeaeff12f4 100644 --- a/jdk/src/solaris/native/sun/nio/ch/Net.c +++ b/jdk/src/solaris/native/sun/nio/ch/Net.c @@ -47,57 +47,20 @@ */ #ifdef __linux__ #ifndef IP_MULTICAST_ALL - #define IP_MULTICAST_ALL 49 + #define IP_MULTICAST_ALL 49 #endif #endif -#ifdef _ALLBSD_SOURCE - -#ifndef IP_BLOCK_SOURCE - -#define IP_ADD_SOURCE_MEMBERSHIP 70 /* join a source-specific group */ -#define IP_DROP_SOURCE_MEMBERSHIP 71 /* drop a single source */ -#define IP_BLOCK_SOURCE 72 /* block a source */ -#define IP_UNBLOCK_SOURCE 73 /* unblock a source */ - -#endif /* IP_BLOCK_SOURCE */ - -#ifndef MCAST_BLOCK_SOURCE - -#define MCAST_JOIN_SOURCE_GROUP 82 /* join a source-specific group */ -#define MCAST_LEAVE_SOURCE_GROUP 83 /* leave a single source */ -#define MCAST_BLOCK_SOURCE 84 /* block a source */ -#define MCAST_UNBLOCK_SOURCE 85 /* unblock a source */ - -#endif /* MCAST_BLOCK_SOURCE */ - -#ifndef IPV6_ADD_MEMBERSHIP - -#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP -#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP - -#endif /* IPV6_ADD_MEMBERSHIP */ - -struct my_ip_mreq_source { - struct in_addr imr_multiaddr; - struct in_addr imr_interface; - struct in_addr imr_sourceaddr; -}; - -struct my_group_source_req { - uint32_t gsr_interface; /* interface index */ - struct sockaddr_storage gsr_group; /* group address */ - struct sockaddr_storage gsr_source; /* source address */ -}; - -#else /* _ALLBSD_SOURCE */ - -#define my_ip_mreq_source ip_mreq_source -#define my_group_source_req group_source_req - +/** + * IPV6_ADD_MEMBERSHIP/IPV6_DROP_MEMBERSHIP may not be defined on OSX + */ +#ifdef __APPLE__ + #ifndef IPV6_ADD_MEMBERSHIP + #define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP + #define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP + #endif #endif - #define COPY_INET6_ADDRESS(env, source, target) \ (*env)->GetByteArrayRegion(env, source, 0, 16, target) @@ -107,7 +70,7 @@ struct my_group_source_req { */ #ifdef AF_INET6 static void initGroupSourceReq(JNIEnv* env, jbyteArray group, jint index, - jbyteArray source, struct my_group_source_req* req) + jbyteArray source, struct group_source_req* req) { struct sockaddr_in6* sin6; @@ -143,7 +106,7 @@ Java_sun_nio_ch_Net_isExclusiveBindAvailable(JNIEnv *env, jclass clazz) { JNIEXPORT jboolean JNICALL Java_sun_nio_ch_Net_canIPv6SocketJoinIPv4Group0(JNIEnv* env, jclass cl) { -#ifdef MACOSX +#ifdef __APPLE__ /* for now IPv6 sockets cannot join IPv4 multicast groups */ return JNI_FALSE; #else @@ -460,7 +423,7 @@ Java_sun_nio_ch_Net_joinOrDrop4(JNIEnv *env, jobject this, jboolean join, jobjec jint group, jint interf, jint source) { struct ip_mreq mreq; - struct my_ip_mreq_source mreq_source; + struct ip_mreq_source mreq_source; int opt, n, optlen; void* optval; @@ -471,17 +434,12 @@ Java_sun_nio_ch_Net_joinOrDrop4(JNIEnv *env, jobject this, jboolean join, jobjec optval = (void*)&mreq; optlen = sizeof(mreq); } else { -#ifdef MACOSX - /* no IPv4 include-mode filtering for now */ - return IOS_UNAVAILABLE; -#else mreq_source.imr_multiaddr.s_addr = htonl(group); mreq_source.imr_sourceaddr.s_addr = htonl(source); mreq_source.imr_interface.s_addr = htonl(interf); opt = (join) ? IP_ADD_SOURCE_MEMBERSHIP : IP_DROP_SOURCE_MEMBERSHIP; optval = (void*)&mreq_source; optlen = sizeof(mreq_source); -#endif } n = setsockopt(fdval(env,fdo), IPPROTO_IP, opt, optval, optlen); @@ -497,11 +455,11 @@ JNIEXPORT jint JNICALL Java_sun_nio_ch_Net_blockOrUnblock4(JNIEnv *env, jobject this, jboolean block, jobject fdo, jint group, jint interf, jint source) { -#ifdef MACOSX +#ifdef __APPLE__ /* no IPv4 exclude-mode filtering for now */ return IOS_UNAVAILABLE; #else - struct my_ip_mreq_source mreq_source; + struct ip_mreq_source mreq_source; int n; int opt = (block) ? IP_BLOCK_SOURCE : IP_UNBLOCK_SOURCE; @@ -526,7 +484,7 @@ Java_sun_nio_ch_Net_joinOrDrop6(JNIEnv *env, jobject this, jboolean join, jobjec { #ifdef AF_INET6 struct ipv6_mreq mreq6; - struct my_group_source_req req; + struct group_source_req req; int opt, n, optlen; void* optval; @@ -537,7 +495,7 @@ Java_sun_nio_ch_Net_joinOrDrop6(JNIEnv *env, jobject this, jboolean join, jobjec optval = (void*)&mreq6; optlen = sizeof(mreq6); } else { -#ifdef MACOSX +#ifdef __APPLE__ /* no IPv6 include-mode filtering for now */ return IOS_UNAVAILABLE; #else @@ -566,11 +524,11 @@ Java_sun_nio_ch_Net_blockOrUnblock6(JNIEnv *env, jobject this, jboolean block, j jbyteArray group, jint index, jbyteArray source) { #ifdef AF_INET6 - #ifdef MACOSX + #ifdef __APPLE__ /* no IPv6 exclude-mode filtering for now */ return IOS_UNAVAILABLE; #else - struct my_group_source_req req; + struct group_source_req req; int n; int opt = (block) ? MCAST_BLOCK_SOURCE : MCAST_UNBLOCK_SOURCE; From 4a3b8f4df6fa35fad5be99c5a4237b2796afc004 Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Fri, 24 Jan 2014 07:16:53 -0800 Subject: [PATCH 073/158] 8032627: Add @SuppressWarnings("serial") to appropriate javax.swing classes Reviewed-by: alexsch, alanb --- jdk/src/share/classes/javax/swing/AbstractAction.java | 3 ++- jdk/src/share/classes/javax/swing/AbstractButton.java | 2 ++ .../share/classes/javax/swing/AbstractCellEditor.java | 4 ++-- .../share/classes/javax/swing/AbstractListModel.java | 3 ++- .../share/classes/javax/swing/CellRendererPane.java | 3 ++- .../classes/javax/swing/DefaultBoundedRangeModel.java | 3 ++- .../share/classes/javax/swing/DefaultButtonModel.java | 3 ++- .../share/classes/javax/swing/DefaultCellEditor.java | 4 ++-- .../classes/javax/swing/DefaultListCellRenderer.java | 4 +++- .../share/classes/javax/swing/DefaultListModel.java | 3 ++- .../classes/javax/swing/DefaultListSelectionModel.java | 4 ++-- .../javax/swing/DefaultSingleSelectionModel.java | 3 ++- jdk/src/share/classes/javax/swing/ImageIcon.java | 4 +++- jdk/src/share/classes/javax/swing/JApplet.java | 3 ++- jdk/src/share/classes/javax/swing/JCheckBox.java | 4 +++- .../share/classes/javax/swing/JCheckBoxMenuItem.java | 4 +++- jdk/src/share/classes/javax/swing/JColorChooser.java | 3 ++- jdk/src/share/classes/javax/swing/JComboBox.java | 4 +++- jdk/src/share/classes/javax/swing/JComponent.java | 4 +++- jdk/src/share/classes/javax/swing/JDesktopPane.java | 4 +++- jdk/src/share/classes/javax/swing/JDialog.java | 3 ++- jdk/src/share/classes/javax/swing/JEditorPane.java | 5 ++++- .../share/classes/javax/swing/JFormattedTextField.java | 1 + jdk/src/share/classes/javax/swing/JFrame.java | 3 ++- jdk/src/share/classes/javax/swing/JInternalFrame.java | 6 +++++- jdk/src/share/classes/javax/swing/JLabel.java | 2 +- jdk/src/share/classes/javax/swing/JList.java | 4 +++- jdk/src/share/classes/javax/swing/JOptionPane.java | 4 +++- jdk/src/share/classes/javax/swing/JPanel.java | 4 +++- jdk/src/share/classes/javax/swing/JPasswordField.java | 3 ++- jdk/src/share/classes/javax/swing/JProgressBar.java | 5 ++++- jdk/src/share/classes/javax/swing/JRadioButton.java | 4 +++- .../classes/javax/swing/JRadioButtonMenuItem.java | 4 +++- jdk/src/share/classes/javax/swing/JScrollBar.java | 4 +++- jdk/src/share/classes/javax/swing/JScrollPane.java | 5 ++++- jdk/src/share/classes/javax/swing/JSlider.java | 4 +++- jdk/src/share/classes/javax/swing/JSpinner.java | 3 ++- jdk/src/share/classes/javax/swing/JSplitPane.java | 4 +++- jdk/src/share/classes/javax/swing/JTabbedPane.java | 4 +++- jdk/src/share/classes/javax/swing/JTable.java | 4 +++- jdk/src/share/classes/javax/swing/JTextArea.java | 2 ++ jdk/src/share/classes/javax/swing/JTextField.java | 4 +++- jdk/src/share/classes/javax/swing/JTextPane.java | 3 ++- jdk/src/share/classes/javax/swing/JToggleButton.java | 5 ++++- jdk/src/share/classes/javax/swing/JToolBar.java | 3 ++- jdk/src/share/classes/javax/swing/JViewport.java | 5 ++++- jdk/src/share/classes/javax/swing/KeyStroke.java | 3 ++- jdk/src/share/classes/javax/swing/OverlayLayout.java | 3 ++- .../share/classes/javax/swing/ScrollPaneLayout.java | 3 ++- .../share/classes/javax/swing/SizeRequirements.java | 3 ++- jdk/src/share/classes/javax/swing/Spring.java | 1 + jdk/src/share/classes/javax/swing/SpringLayout.java | 3 ++- jdk/src/share/classes/javax/swing/UIDefaults.java | 3 ++- jdk/src/share/classes/javax/swing/UIManager.java | 3 ++- .../javax/swing/UnsupportedLookAndFeelException.java | 3 ++- jdk/src/share/classes/javax/swing/ViewportLayout.java | 3 ++- .../share/classes/javax/swing/border/BevelBorder.java | 3 ++- .../share/classes/javax/swing/border/EtchedBorder.java | 3 ++- .../share/classes/javax/swing/border/LineBorder.java | 3 ++- .../classes/javax/swing/border/SoftBevelBorder.java | 3 ++- .../share/classes/javax/swing/border/StrokeBorder.java | 3 ++- .../swing/colorchooser/AbstractColorChooserPanel.java | 3 ++- .../colorchooser/ColorChooserComponentFactory.java | 3 ++- .../javax/swing/colorchooser/DefaultPreviewPanel.java | 3 ++- .../swing/colorchooser/DefaultSwatchChooserPanel.java | 3 ++- .../share/classes/javax/swing/event/CaretEvent.java | 3 ++- .../classes/javax/swing/event/HyperlinkEvent.java | 3 ++- .../classes/javax/swing/event/InternalFrameEvent.java | 3 ++- .../classes/javax/swing/event/ListSelectionEvent.java | 3 ++- .../javax/swing/event/TableColumnModelEvent.java | 3 ++- .../classes/javax/swing/event/TableModelEvent.java | 3 ++- .../classes/javax/swing/event/TreeExpansionEvent.java | 3 ++- .../classes/javax/swing/event/TreeModelEvent.java | 3 ++- .../classes/javax/swing/event/UndoableEditEvent.java | 3 ++- .../classes/javax/swing/plaf/BorderUIResource.java | 3 ++- .../classes/javax/swing/plaf/ColorUIResource.java | 3 ++- .../classes/javax/swing/plaf/DimensionUIResource.java | 3 ++- .../share/classes/javax/swing/plaf/FontUIResource.java | 3 ++- .../share/classes/javax/swing/plaf/IconUIResource.java | 3 ++- .../classes/javax/swing/plaf/InsetsUIResource.java | 3 ++- .../javax/swing/plaf/basic/BasicArrowButton.java | 3 ++- .../javax/swing/plaf/basic/BasicCheckBoxUI.java | 3 ++- .../javax/swing/plaf/basic/BasicComboBoxEditor.java | 3 ++- .../javax/swing/plaf/basic/BasicComboBoxRenderer.java | 4 +++- .../javax/swing/plaf/basic/BasicComboPopup.java | 3 ++- .../javax/swing/plaf/basic/BasicEditorPaneUI.java | 3 ++- .../javax/swing/plaf/basic/BasicIconFactory.java | 3 ++- .../swing/plaf/basic/BasicInternalFrameTitlePane.java | 3 ++- .../classes/javax/swing/plaf/basic/BasicListUI.java | 6 +++++- .../javax/swing/plaf/basic/BasicLookAndFeel.java | 3 ++- .../javax/swing/plaf/basic/BasicSplitPaneDivider.java | 4 +++- .../javax/swing/plaf/basic/BasicTextAreaUI.java | 3 ++- .../javax/swing/plaf/basic/BasicTextFieldUI.java | 3 ++- .../javax/swing/plaf/basic/BasicTextPaneUI.java | 3 ++- .../classes/javax/swing/plaf/basic/BasicTextUI.java | 3 ++- .../classes/javax/swing/plaf/basic/ComboPopup.java | 3 ++- .../javax/swing/plaf/metal/DefaultMetalTheme.java | 3 ++- .../classes/javax/swing/plaf/metal/MetalButtonUI.java | 3 ++- .../javax/swing/plaf/metal/MetalCheckBoxIcon.java | 3 ++- .../javax/swing/plaf/metal/MetalCheckBoxUI.java | 3 ++- .../javax/swing/plaf/metal/MetalComboBoxButton.java | 3 ++- .../javax/swing/plaf/metal/MetalComboBoxEditor.java | 4 +++- .../javax/swing/plaf/metal/MetalComboBoxUI.java | 3 ++- .../javax/swing/plaf/metal/MetalIconFactory.java | 7 ++++++- .../javax/swing/plaf/metal/MetalLookAndFeel.java | 3 ++- .../javax/swing/plaf/metal/MetalProgressBarUI.java | 3 ++- .../javax/swing/plaf/metal/MetalRadioButtonUI.java | 3 ++- .../javax/swing/plaf/metal/MetalRootPaneUI.java | 3 ++- .../javax/swing/plaf/metal/MetalScrollButton.java | 3 ++- .../javax/swing/plaf/metal/MetalScrollPaneUI.java | 3 ++- .../javax/swing/plaf/metal/MetalSeparatorUI.java | 4 ++-- .../classes/javax/swing/plaf/metal/MetalSliderUI.java | 3 ++- .../javax/swing/plaf/metal/MetalSplitPaneDivider.java | 1 + .../javax/swing/plaf/metal/MetalSplitPaneUI.java | 3 ++- .../javax/swing/plaf/metal/MetalTabbedPaneUI.java | 4 ++-- .../javax/swing/plaf/metal/MetalTextFieldUI.java | 3 ++- .../javax/swing/plaf/metal/MetalToggleButtonUI.java | 3 ++- .../classes/javax/swing/plaf/metal/MetalToolTipUI.java | 3 ++- .../javax/swing/plaf/multi/MultiLookAndFeel.java | 3 ++- .../javax/swing/plaf/synth/SynthTextAreaUI.java | 3 ++- .../javax/swing/plaf/synth/SynthTextFieldUI.java | 3 ++- .../javax/swing/plaf/synth/SynthTextPaneUI.java | 3 ++- .../classes/javax/swing/table/AbstractTableModel.java | 3 ++- .../javax/swing/table/DefaultTableCellRenderer.java | 4 +++- .../javax/swing/table/DefaultTableColumnModel.java | 3 ++- .../classes/javax/swing/table/DefaultTableModel.java | 3 ++- .../share/classes/javax/swing/table/JTableHeader.java | 4 +++- .../share/classes/javax/swing/table/TableColumn.java | 3 ++- .../classes/javax/swing/text/AbstractDocument.java | 6 +++++- .../share/classes/javax/swing/text/DateFormatter.java | 3 ++- .../share/classes/javax/swing/text/DefaultCaret.java | 3 ++- .../classes/javax/swing/text/DefaultEditorKit.java | 10 +++++++++- .../classes/javax/swing/text/DefaultFormatter.java | 3 ++- .../javax/swing/text/DefaultFormatterFactory.java | 3 ++- .../javax/swing/text/DefaultStyledDocument.java | 6 +++++- .../javax/swing/text/InternationalFormatter.java | 3 ++- .../share/classes/javax/swing/text/JTextComponent.java | 5 ++++- .../share/classes/javax/swing/text/MaskFormatter.java | 3 ++- .../classes/javax/swing/text/NumberFormatter.java | 3 ++- .../share/classes/javax/swing/text/PlainDocument.java | 3 ++- .../classes/javax/swing/text/SimpleAttributeSet.java | 3 ++- .../share/classes/javax/swing/text/StringContent.java | 3 ++- .../share/classes/javax/swing/text/StyleContext.java | 4 +++- .../classes/javax/swing/text/StyledEditorKit.java | 8 ++++++++ jdk/src/share/classes/javax/swing/text/TabSet.java | 3 ++- jdk/src/share/classes/javax/swing/text/TabStop.java | 3 ++- jdk/src/share/classes/javax/swing/text/TextAction.java | 1 + .../classes/javax/swing/text/html/HTMLDocument.java | 3 ++- .../share/classes/javax/swing/text/html/Option.java | 3 ++- .../classes/javax/swing/tree/AbstractLayoutCache.java | 4 ++-- .../javax/swing/tree/DefaultMutableTreeNode.java | 3 ++- .../javax/swing/tree/DefaultTreeCellEditor.java | 1 + .../javax/swing/tree/DefaultTreeCellRenderer.java | 3 ++- .../classes/javax/swing/tree/DefaultTreeModel.java | 3 ++- .../javax/swing/tree/DefaultTreeSelectionModel.java | 2 +- .../javax/swing/tree/FixedHeightLayoutCache.java | 4 ++-- jdk/src/share/classes/javax/swing/tree/TreePath.java | 3 ++- .../javax/swing/tree/VariableHeightLayoutCache.java | 4 ++-- .../classes/javax/swing/undo/CannotRedoException.java | 3 ++- .../classes/javax/swing/undo/CannotUndoException.java | 3 ++- .../share/classes/javax/swing/undo/UndoManager.java | 3 ++- 161 files changed, 380 insertions(+), 161 deletions(-) diff --git a/jdk/src/share/classes/javax/swing/AbstractAction.java b/jdk/src/share/classes/javax/swing/AbstractAction.java index 5b49dd92c91..f8f15f4f992 100644 --- a/jdk/src/share/classes/javax/swing/AbstractAction.java +++ b/jdk/src/share/classes/javax/swing/AbstractAction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -56,6 +56,7 @@ import sun.security.action.GetPropertyAction; * @author Georges Saab * @see Action */ +@SuppressWarnings("serial") // Same-version serialization only public abstract class AbstractAction implements Action, Cloneable, Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/AbstractButton.java b/jdk/src/share/classes/javax/swing/AbstractButton.java index 55e0e0b3817..f7eec138451 100644 --- a/jdk/src/share/classes/javax/swing/AbstractButton.java +++ b/jdk/src/share/classes/javax/swing/AbstractButton.java @@ -72,6 +72,7 @@ import java.util.*; * * @author Jeff Dinkins */ +@SuppressWarnings("serial") // Same-version serialization only public abstract class AbstractButton extends JComponent implements ItemSelectable, SwingConstants { // ********************************* @@ -2384,6 +2385,7 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl * Please see {@link java.beans.XMLEncoder}. * @since 1.4 */ + @SuppressWarnings("serial") // Same-version serialization only protected abstract class AccessibleAbstractButton extends AccessibleJComponent implements AccessibleAction, AccessibleValue, AccessibleText, AccessibleExtendedComponent { diff --git a/jdk/src/share/classes/javax/swing/AbstractCellEditor.java b/jdk/src/share/classes/javax/swing/AbstractCellEditor.java index f9efea555dc..7523c64e85f 100644 --- a/jdk/src/share/classes/javax/swing/AbstractCellEditor.java +++ b/jdk/src/share/classes/javax/swing/AbstractCellEditor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -50,7 +50,7 @@ import java.io.Serializable; * @author Philip Milne * @since 1.3 */ - +@SuppressWarnings("serial") // Same-version serialization only public abstract class AbstractCellEditor implements CellEditor, Serializable { protected EventListenerList listenerList = new EventListenerList(); diff --git a/jdk/src/share/classes/javax/swing/AbstractListModel.java b/jdk/src/share/classes/javax/swing/AbstractListModel.java index 7270c8f222c..33145a51e8e 100644 --- a/jdk/src/share/classes/javax/swing/AbstractListModel.java +++ b/jdk/src/share/classes/javax/swing/AbstractListModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -46,6 +46,7 @@ import java.util.EventListener; * * @author Hans Muller */ +@SuppressWarnings("serial") // Same-version serialization only public abstract class AbstractListModel implements ListModel, Serializable { protected EventListenerList listenerList = new EventListenerList(); diff --git a/jdk/src/share/classes/javax/swing/CellRendererPane.java b/jdk/src/share/classes/javax/swing/CellRendererPane.java index 3e43b80d9ea..33539284e2d 100644 --- a/jdk/src/share/classes/javax/swing/CellRendererPane.java +++ b/jdk/src/share/classes/javax/swing/CellRendererPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -63,6 +63,7 @@ import javax.accessibility.*; * * @author Hans Muller */ +@SuppressWarnings("serial") // Same-version serialization only public class CellRendererPane extends Container implements Accessible { /** diff --git a/jdk/src/share/classes/javax/swing/DefaultBoundedRangeModel.java b/jdk/src/share/classes/javax/swing/DefaultBoundedRangeModel.java index fb250acbcda..8d316ce28ac 100644 --- a/jdk/src/share/classes/javax/swing/DefaultBoundedRangeModel.java +++ b/jdk/src/share/classes/javax/swing/DefaultBoundedRangeModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -45,6 +45,7 @@ import java.util.EventListener; * @author Hans Muller * @see BoundedRangeModel */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultBoundedRangeModel implements BoundedRangeModel, Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/DefaultButtonModel.java b/jdk/src/share/classes/javax/swing/DefaultButtonModel.java index 7c0fa3d2181..2b0f150e42c 100644 --- a/jdk/src/share/classes/javax/swing/DefaultButtonModel.java +++ b/jdk/src/share/classes/javax/swing/DefaultButtonModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -45,6 +45,7 @@ import javax.swing.event.*; * * @author Jeff Dinkins */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultButtonModel implements ButtonModel, Serializable { /** The bitmask used to store the state of the button. */ diff --git a/jdk/src/share/classes/javax/swing/DefaultCellEditor.java b/jdk/src/share/classes/javax/swing/DefaultCellEditor.java index 60042a378ef..1eea9e1fb3f 100644 --- a/jdk/src/share/classes/javax/swing/DefaultCellEditor.java +++ b/jdk/src/share/classes/javax/swing/DefaultCellEditor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -50,7 +50,7 @@ import java.io.Serializable; * @author Alan Chung * @author Philip Milne */ - +@SuppressWarnings("serial") // Same-version serialization only public class DefaultCellEditor extends AbstractCellEditor implements TableCellEditor, TreeCellEditor { diff --git a/jdk/src/share/classes/javax/swing/DefaultListCellRenderer.java b/jdk/src/share/classes/javax/swing/DefaultListCellRenderer.java index 4d7a64909e1..e4968364cc0 100644 --- a/jdk/src/share/classes/javax/swing/DefaultListCellRenderer.java +++ b/jdk/src/share/classes/javax/swing/DefaultListCellRenderer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -70,6 +70,7 @@ import sun.swing.DefaultLookup; * @author Philip Milne * @author Hans Muller */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultListCellRenderer extends JLabel implements ListCellRenderer, Serializable { @@ -341,6 +342,7 @@ public class DefaultListCellRenderer extends JLabel * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class UIResource extends DefaultListCellRenderer implements javax.swing.plaf.UIResource { diff --git a/jdk/src/share/classes/javax/swing/DefaultListModel.java b/jdk/src/share/classes/javax/swing/DefaultListModel.java index 33efc4abe32..063c18e2716 100644 --- a/jdk/src/share/classes/javax/swing/DefaultListModel.java +++ b/jdk/src/share/classes/javax/swing/DefaultListModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +52,7 @@ import javax.swing.event.*; * * @author Hans Muller */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultListModel extends AbstractListModel { private Vector delegate = new Vector(); diff --git a/jdk/src/share/classes/javax/swing/DefaultListSelectionModel.java b/jdk/src/share/classes/javax/swing/DefaultListSelectionModel.java index 388a5a59a81..f7b00bee086 100644 --- a/jdk/src/share/classes/javax/swing/DefaultListSelectionModel.java +++ b/jdk/src/share/classes/javax/swing/DefaultListSelectionModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -49,7 +49,7 @@ import javax.swing.event.*; * @author Hans Muller * @see ListSelectionModel */ - +@SuppressWarnings("serial") // Same-version serialization only public class DefaultListSelectionModel implements ListSelectionModel, Cloneable, Serializable { private static final int MIN = -1; diff --git a/jdk/src/share/classes/javax/swing/DefaultSingleSelectionModel.java b/jdk/src/share/classes/javax/swing/DefaultSingleSelectionModel.java index 1d5ad7ccac0..d5e5ab81e1d 100644 --- a/jdk/src/share/classes/javax/swing/DefaultSingleSelectionModel.java +++ b/jdk/src/share/classes/javax/swing/DefaultSingleSelectionModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +43,7 @@ import java.util.EventListener; * * @author Dave Moore */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultSingleSelectionModel implements SingleSelectionModel, Serializable { /* Only one ModelChangeEvent is needed per model instance since the diff --git a/jdk/src/share/classes/javax/swing/ImageIcon.java b/jdk/src/share/classes/javax/swing/ImageIcon.java index b744d5aa5c5..e286e936f11 100644 --- a/jdk/src/share/classes/javax/swing/ImageIcon.java +++ b/jdk/src/share/classes/javax/swing/ImageIcon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * 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 @@ -66,6 +66,7 @@ import java.security.*; * @author Jeff Dinkins * @author Lynn Monsanto */ +@SuppressWarnings("serial") // Same-version serialization only public class ImageIcon implements Icon, Serializable, Accessible { /* Keep references to the filename and location so that * alternate persistence schemes have the option to archive @@ -572,6 +573,7 @@ public class ImageIcon implements Icon, Serializable, Accessible { * Please see {@link java.beans.XMLEncoder}. * @since 1.3 */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleImageIcon extends AccessibleContext implements AccessibleIcon, Serializable { diff --git a/jdk/src/share/classes/javax/swing/JApplet.java b/jdk/src/share/classes/javax/swing/JApplet.java index a97b3e96d75..539458979d4 100644 --- a/jdk/src/share/classes/javax/swing/JApplet.java +++ b/jdk/src/share/classes/javax/swing/JApplet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -90,6 +90,7 @@ import javax.accessibility.*; * * @author Arnaud Weber */ +@SuppressWarnings("serial") // Same-version serialization only public class JApplet extends Applet implements Accessible, RootPaneContainer, TransferHandler.HasGetTransferHandler diff --git a/jdk/src/share/classes/javax/swing/JCheckBox.java b/jdk/src/share/classes/javax/swing/JCheckBox.java index 8fdbd17fa04..53502645c72 100644 --- a/jdk/src/share/classes/javax/swing/JCheckBox.java +++ b/jdk/src/share/classes/javax/swing/JCheckBox.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -75,6 +75,7 @@ import java.io.IOException; * * @author Jeff Dinkins */ +@SuppressWarnings("serial") // Same-version serialization only public class JCheckBox extends JToggleButton implements Accessible { /** Identifies a change to the flat property. */ @@ -334,6 +335,7 @@ public class JCheckBox extends JToggleButton implements Accessible { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJCheckBox extends AccessibleJToggleButton { /** diff --git a/jdk/src/share/classes/javax/swing/JCheckBoxMenuItem.java b/jdk/src/share/classes/javax/swing/JCheckBoxMenuItem.java index 3d924d38536..08eb53864c4 100644 --- a/jdk/src/share/classes/javax/swing/JCheckBoxMenuItem.java +++ b/jdk/src/share/classes/javax/swing/JCheckBoxMenuItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -88,6 +88,7 @@ import javax.accessibility.*; * @author Georges Saab * @author David Karlton */ +@SuppressWarnings("serial") // Same-version serialization only public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants, Accessible { @@ -293,6 +294,7 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants, * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJCheckBoxMenuItem extends AccessibleJMenuItem { /** * Get the role of this object. diff --git a/jdk/src/share/classes/javax/swing/JColorChooser.java b/jdk/src/share/classes/javax/swing/JColorChooser.java index 9fb2a35a778..88f91c00ca7 100644 --- a/jdk/src/share/classes/javax/swing/JColorChooser.java +++ b/jdk/src/share/classes/javax/swing/JColorChooser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -83,6 +83,7 @@ import sun.swing.SwingUtilities2; * @author Amy Fowler * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only public class JColorChooser extends JComponent implements Accessible { /** diff --git a/jdk/src/share/classes/javax/swing/JComboBox.java b/jdk/src/share/classes/javax/swing/JComboBox.java index 11081f959df..6416f5036a8 100644 --- a/jdk/src/share/classes/javax/swing/JComboBox.java +++ b/jdk/src/share/classes/javax/swing/JComboBox.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -78,6 +78,7 @@ import javax.accessibility.*; * @author Arnaud Weber * @author Mark Davidson */ +@SuppressWarnings("serial") // Same-version serialization only public class JComboBox extends JComponent implements ItemSelectable,ListDataListener,ActionListener, Accessible { /** @@ -1612,6 +1613,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJComboBox extends AccessibleJComponent implements AccessibleAction, AccessibleSelection { diff --git a/jdk/src/share/classes/javax/swing/JComponent.java b/jdk/src/share/classes/javax/swing/JComponent.java index d6f35ac3fea..98c4d7fb5dd 100644 --- a/jdk/src/share/classes/javax/swing/JComponent.java +++ b/jdk/src/share/classes/javax/swing/JComponent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -179,6 +179,7 @@ import sun.swing.UIClientPropertyKey; * @author Hans Muller * @author Arnaud Weber */ +@SuppressWarnings("serial") // Same-version serialization only public abstract class JComponent extends Container implements Serializable, TransferHandler.HasGetTransferHandler { @@ -3657,6 +3658,7 @@ public abstract class JComponent extends Container implements Serializable, * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public abstract class AccessibleJComponent extends AccessibleAWTContainer implements AccessibleExtendedComponent { diff --git a/jdk/src/share/classes/javax/swing/JDesktopPane.java b/jdk/src/share/classes/javax/swing/JDesktopPane.java index 6ba0bc82bf2..94f7db248e1 100644 --- a/jdk/src/share/classes/javax/swing/JDesktopPane.java +++ b/jdk/src/share/classes/javax/swing/JDesktopPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +86,7 @@ import java.util.TreeSet; * * @author David Kloba */ +@SuppressWarnings("serial") // Same-version serialization only public class JDesktopPane extends JLayeredPane implements Accessible { /** @@ -616,6 +617,7 @@ public class JDesktopPane extends JLayeredPane implements Accessible * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJDesktopPane extends AccessibleJComponent { /** diff --git a/jdk/src/share/classes/javax/swing/JDialog.java b/jdk/src/share/classes/javax/swing/JDialog.java index 2d8980e3056..12b978dbf46 100644 --- a/jdk/src/share/classes/javax/swing/JDialog.java +++ b/jdk/src/share/classes/javax/swing/JDialog.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -95,6 +95,7 @@ import javax.accessibility.*; * @author James Gosling * @author Scott Violet */ +@SuppressWarnings("serial") // Same-version serialization only public class JDialog extends Dialog implements WindowConstants, Accessible, RootPaneContainer, diff --git a/jdk/src/share/classes/javax/swing/JEditorPane.java b/jdk/src/share/classes/javax/swing/JEditorPane.java index cbb888c3a88..c1382125237 100644 --- a/jdk/src/share/classes/javax/swing/JEditorPane.java +++ b/jdk/src/share/classes/javax/swing/JEditorPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -189,6 +189,7 @@ import javax.accessibility.*; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class JEditorPane extends JTextComponent { /** @@ -1640,6 +1641,7 @@ public class JEditorPane extends JTextComponent { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJEditorPane extends AccessibleJTextComponent { /** @@ -1694,6 +1696,7 @@ public class JEditorPane extends JTextComponent { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJEditorPaneHTML extends AccessibleJEditorPane { private AccessibleContext accessibleContext; diff --git a/jdk/src/share/classes/javax/swing/JFormattedTextField.java b/jdk/src/share/classes/javax/swing/JFormattedTextField.java index e7354a09ef5..5be75ff295a 100644 --- a/jdk/src/share/classes/javax/swing/JFormattedTextField.java +++ b/jdk/src/share/classes/javax/swing/JFormattedTextField.java @@ -177,6 +177,7 @@ import javax.swing.text.*; * * @since 1.4 */ +@SuppressWarnings("serial") // Same-version serialization only public class JFormattedTextField extends JTextField { private static final String uiClassID = "FormattedTextFieldUI"; private static final Action[] defaultActions = diff --git a/jdk/src/share/classes/javax/swing/JFrame.java b/jdk/src/share/classes/javax/swing/JFrame.java index 308320c8ecc..2077eb76249 100644 --- a/jdk/src/share/classes/javax/swing/JFrame.java +++ b/jdk/src/share/classes/javax/swing/JFrame.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -112,6 +112,7 @@ import javax.accessibility.*; * @author Georges Saab * @author David Kloba */ +@SuppressWarnings("serial") // Same-version serialization only public class JFrame extends Frame implements WindowConstants, Accessible, RootPaneContainer, diff --git a/jdk/src/share/classes/javax/swing/JInternalFrame.java b/jdk/src/share/classes/javax/swing/JInternalFrame.java index 3183d5c4e90..e94854f9f12 100644 --- a/jdk/src/share/classes/javax/swing/JInternalFrame.java +++ b/jdk/src/share/classes/javax/swing/JInternalFrame.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -110,6 +110,7 @@ import sun.swing.SwingUtilities2; * description: A frame container which is contained within * another window. */ +@SuppressWarnings("serial") // Same-version serialization only public class JInternalFrame extends JComponent implements Accessible, WindowConstants, RootPaneContainer @@ -2034,6 +2035,7 @@ public class JInternalFrame extends JComponent implements * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJInternalFrame extends AccessibleJComponent implements AccessibleValue { @@ -2151,6 +2153,7 @@ public class JInternalFrame extends JComponent implements * * @author David Kloba */ + @SuppressWarnings("serial") // Same-version serialization only static public class JDesktopIcon extends JComponent implements Accessible { JInternalFrame internalFrame; @@ -2323,6 +2326,7 @@ public class JInternalFrame extends JComponent implements * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJDesktopIcon extends AccessibleJComponent implements AccessibleValue { diff --git a/jdk/src/share/classes/javax/swing/JLabel.java b/jdk/src/share/classes/javax/swing/JLabel.java index c5d527b808d..af080be9564 100644 --- a/jdk/src/share/classes/javax/swing/JLabel.java +++ b/jdk/src/share/classes/javax/swing/JLabel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 diff --git a/jdk/src/share/classes/javax/swing/JList.java b/jdk/src/share/classes/javax/swing/JList.java index 1aae62e861f..6503887247e 100644 --- a/jdk/src/share/classes/javax/swing/JList.java +++ b/jdk/src/share/classes/javax/swing/JList.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -277,6 +277,7 @@ import static sun.swing.SwingUtilities2.Section.*; * * @author Hans Muller */ +@SuppressWarnings("serial") // Same-version serialization only public class JList extends JComponent implements Scrollable, Accessible { /** @@ -2881,6 +2882,7 @@ public class JList extends JComponent implements Scrollable, Accessible * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJList extends AccessibleJComponent implements AccessibleSelection, PropertyChangeListener, ListSelectionListener, ListDataListener { diff --git a/jdk/src/share/classes/javax/swing/JOptionPane.java b/jdk/src/share/classes/javax/swing/JOptionPane.java index dcb991947e1..58d38669e9c 100644 --- a/jdk/src/share/classes/javax/swing/JOptionPane.java +++ b/jdk/src/share/classes/javax/swing/JOptionPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -310,6 +310,7 @@ import static javax.swing.ClientPropertyKey.PopupFactory_FORCE_HEAVYWEIGHT_POPUP * @author James Gosling * @author Scott Violet */ +@SuppressWarnings("serial") // Same-version serialization only public class JOptionPane extends JComponent implements Accessible { /** @@ -2576,6 +2577,7 @@ public class JOptionPane extends JComponent implements Accessible * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJOptionPane extends AccessibleJComponent { /** diff --git a/jdk/src/share/classes/javax/swing/JPanel.java b/jdk/src/share/classes/javax/swing/JPanel.java index 8ebfcb1cbfb..6211c8bcd29 100644 --- a/jdk/src/share/classes/javax/swing/JPanel.java +++ b/jdk/src/share/classes/javax/swing/JPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -62,6 +62,7 @@ import java.io.IOException; * @author Arnaud Weber * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only public class JPanel extends JComponent implements Accessible { /** @@ -233,6 +234,7 @@ public class JPanel extends JComponent implements Accessible * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJPanel extends AccessibleJComponent { /** diff --git a/jdk/src/share/classes/javax/swing/JPasswordField.java b/jdk/src/share/classes/javax/swing/JPasswordField.java index 05a113b2ca4..a869d80c1f0 100644 --- a/jdk/src/share/classes/javax/swing/JPasswordField.java +++ b/jdk/src/share/classes/javax/swing/JPasswordField.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -74,6 +74,7 @@ import java.util.Arrays; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class JPasswordField extends JTextField { /** diff --git a/jdk/src/share/classes/javax/swing/JProgressBar.java b/jdk/src/share/classes/javax/swing/JProgressBar.java index 606ff13c2ca..b839018b1fd 100644 --- a/jdk/src/share/classes/javax/swing/JProgressBar.java +++ b/jdk/src/share/classes/javax/swing/JProgressBar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -129,6 +129,7 @@ import javax.swing.plaf.ProgressBarUI; * @author Michael C. Albers * @author Kathy Walrath */ +@SuppressWarnings("serial") // Same-version serialization only public class JProgressBar extends JComponent implements SwingConstants, Accessible { /** @@ -647,6 +648,7 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only private class ModelListener implements ChangeListener, Serializable { public void stateChanged(ChangeEvent e) { fireStateChanged(); @@ -1035,6 +1037,7 @@ public class JProgressBar extends JComponent implements SwingConstants, Accessib * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJProgressBar extends AccessibleJComponent implements AccessibleValue { diff --git a/jdk/src/share/classes/javax/swing/JRadioButton.java b/jdk/src/share/classes/javax/swing/JRadioButton.java index ad7a3abf8b9..41197072266 100644 --- a/jdk/src/share/classes/javax/swing/JRadioButton.java +++ b/jdk/src/share/classes/javax/swing/JRadioButton.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +86,7 @@ import java.io.IOException; * @see JCheckBox * @author Jeff Dinkins */ +@SuppressWarnings("serial") // Same-version serialization only public class JRadioButton extends JToggleButton implements Accessible { /** @@ -284,6 +285,7 @@ public class JRadioButton extends JToggleButton implements Accessible { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJRadioButton extends AccessibleJToggleButton { /** diff --git a/jdk/src/share/classes/javax/swing/JRadioButtonMenuItem.java b/jdk/src/share/classes/javax/swing/JRadioButtonMenuItem.java index 897ba97c760..5d49c6f464f 100644 --- a/jdk/src/share/classes/javax/swing/JRadioButtonMenuItem.java +++ b/jdk/src/share/classes/javax/swing/JRadioButtonMenuItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -83,6 +83,7 @@ import javax.accessibility.*; * @author David Karlton * @see ButtonGroup */ +@SuppressWarnings("serial") // Same-version serialization only public class JRadioButtonMenuItem extends JMenuItem implements Accessible { /** * @see #getUIClassID @@ -266,6 +267,7 @@ public class JRadioButtonMenuItem extends JMenuItem implements Accessible { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJRadioButtonMenuItem extends AccessibleJMenuItem { /** * Get the role of this object. diff --git a/jdk/src/share/classes/javax/swing/JScrollBar.java b/jdk/src/share/classes/javax/swing/JScrollBar.java index 1c0eac1af7f..bdcee342e1f 100644 --- a/jdk/src/share/classes/javax/swing/JScrollBar.java +++ b/jdk/src/share/classes/javax/swing/JScrollBar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -78,6 +78,7 @@ import java.io.IOException; * * @author David Kloba */ +@SuppressWarnings("serial") // Same-version serialization only public class JScrollBar extends JComponent implements Adjustable, Accessible { /** @@ -842,6 +843,7 @@ public class JScrollBar extends JComponent implements Adjustable, Accessible * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJScrollBar extends AccessibleJComponent implements AccessibleValue { diff --git a/jdk/src/share/classes/javax/swing/JScrollPane.java b/jdk/src/share/classes/javax/swing/JScrollPane.java index ecb3d8f34d9..444a1c22526 100644 --- a/jdk/src/share/classes/javax/swing/JScrollPane.java +++ b/jdk/src/share/classes/javax/swing/JScrollPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -168,6 +168,7 @@ import java.beans.Transient; * * @author Hans Muller */ +@SuppressWarnings("serial") // Same-version serialization only public class JScrollPane extends JComponent implements ScrollPaneConstants, Accessible { private Border viewportBorder; @@ -685,6 +686,7 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * @see JScrollPane#createVerticalScrollBar * @see JScrollPane#createHorizontalScrollBar */ + @SuppressWarnings("serial") // Same-version serialization only protected class ScrollBar extends JScrollBar implements UIResource { /** @@ -1441,6 +1443,7 @@ public class JScrollPane extends JComponent implements ScrollPaneConstants, Acce * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJScrollPane extends AccessibleJComponent implements ChangeListener, PropertyChangeListener { diff --git a/jdk/src/share/classes/javax/swing/JSlider.java b/jdk/src/share/classes/javax/swing/JSlider.java index 88fe7129b2b..d75e1030634 100644 --- a/jdk/src/share/classes/javax/swing/JSlider.java +++ b/jdk/src/share/classes/javax/swing/JSlider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -78,6 +78,7 @@ import java.beans.*; * * @author David Kloba */ +@SuppressWarnings("serial") // Same-version serialization only public class JSlider extends JComponent implements SwingConstants, Accessible { /** * @see #getUIClassID @@ -1429,6 +1430,7 @@ public class JSlider extends JComponent implements SwingConstants, Accessible { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJSlider extends AccessibleJComponent implements AccessibleValue { diff --git a/jdk/src/share/classes/javax/swing/JSpinner.java b/jdk/src/share/classes/javax/swing/JSpinner.java index d2dac526518..f999fd3f987 100644 --- a/jdk/src/share/classes/javax/swing/JSpinner.java +++ b/jdk/src/share/classes/javax/swing/JSpinner.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -126,6 +126,7 @@ import sun.util.locale.provider.LocaleServiceProviderPool; * @author Lynn Monsanto (accessibility) * @since 1.4 */ +@SuppressWarnings("serial") // Same-version serialization only public class JSpinner extends JComponent implements Accessible { /** diff --git a/jdk/src/share/classes/javax/swing/JSplitPane.java b/jdk/src/share/classes/javax/swing/JSplitPane.java index d403dde928c..533d9a971af 100644 --- a/jdk/src/share/classes/javax/swing/JSplitPane.java +++ b/jdk/src/share/classes/javax/swing/JSplitPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -98,6 +98,7 @@ import java.io.IOException; * * @author Scott Violet */ +@SuppressWarnings("serial") // Same-version serialization only public class JSplitPane extends JComponent implements Accessible { /** @@ -1156,6 +1157,7 @@ public class JSplitPane extends JComponent implements Accessible * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJSplitPane extends AccessibleJComponent implements AccessibleValue { /** diff --git a/jdk/src/share/classes/javax/swing/JTabbedPane.java b/jdk/src/share/classes/javax/swing/JTabbedPane.java index e6c0951bdae..e5c303489c6 100644 --- a/jdk/src/share/classes/javax/swing/JTabbedPane.java +++ b/jdk/src/share/classes/javax/swing/JTabbedPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -106,6 +106,7 @@ import java.io.IOException; * * @see SingleSelectionModel */ +@SuppressWarnings("serial") // Same-version serialization only public class JTabbedPane extends JComponent implements Serializable, Accessible, SwingConstants { @@ -1889,6 +1890,7 @@ public class JTabbedPane extends JComponent * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJTabbedPane extends AccessibleJComponent implements AccessibleSelection, ChangeListener { diff --git a/jdk/src/share/classes/javax/swing/JTable.java b/jdk/src/share/classes/javax/swing/JTable.java index 526afcf66bf..f16888c8f8b 100644 --- a/jdk/src/share/classes/javax/swing/JTable.java +++ b/jdk/src/share/classes/javax/swing/JTable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -218,6 +218,7 @@ import sun.swing.SwingLazyValue; /* The first versions of the JTable, contained in Swing-0.1 through * Swing-0.4, were written by Alan Chung. */ +@SuppressWarnings("serial") // Same-version serialization only public class JTable extends JComponent implements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible, RowSorterListener @@ -6583,6 +6584,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJTable extends AccessibleJComponent implements AccessibleSelection, ListSelectionListener, TableModelListener, TableColumnModelListener, CellEditorListener, PropertyChangeListener, diff --git a/jdk/src/share/classes/javax/swing/JTextArea.java b/jdk/src/share/classes/javax/swing/JTextArea.java index 570819f9df9..a6af9e241fa 100644 --- a/jdk/src/share/classes/javax/swing/JTextArea.java +++ b/jdk/src/share/classes/javax/swing/JTextArea.java @@ -124,6 +124,7 @@ import java.io.IOException; * @see JTextPane * @see JEditorPane */ +@SuppressWarnings("serial") // Same-version serialization only public class JTextArea extends JTextComponent { /** @@ -787,6 +788,7 @@ public class JTextArea extends JTextComponent { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJTextArea extends AccessibleJTextComponent { /** diff --git a/jdk/src/share/classes/javax/swing/JTextField.java b/jdk/src/share/classes/javax/swing/JTextField.java index d4bc1aa0f6b..f50f6aa9be9 100644 --- a/jdk/src/share/classes/javax/swing/JTextField.java +++ b/jdk/src/share/classes/javax/swing/JTextField.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -161,6 +161,7 @@ import java.io.Serializable; * @see JPasswordField * @see #addActionListener */ +@SuppressWarnings("serial") // Same-version serialization only public class JTextField extends JTextComponent implements SwingConstants { /** @@ -943,6 +944,7 @@ public class JTextField extends JTextComponent implements SwingConstants { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJTextField extends AccessibleJTextComponent { /** diff --git a/jdk/src/share/classes/javax/swing/JTextPane.java b/jdk/src/share/classes/javax/swing/JTextPane.java index 0cb9ff8d722..017f897177c 100644 --- a/jdk/src/share/classes/javax/swing/JTextPane.java +++ b/jdk/src/share/classes/javax/swing/JTextPane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -79,6 +79,7 @@ import javax.swing.plaf.*; * @author Timothy Prinzing * @see javax.swing.text.StyledEditorKit */ +@SuppressWarnings("serial") // Same-version serialization only public class JTextPane extends JEditorPane { /** diff --git a/jdk/src/share/classes/javax/swing/JToggleButton.java b/jdk/src/share/classes/javax/swing/JToggleButton.java index 3489a07e803..f2f9a0601e0 100644 --- a/jdk/src/share/classes/javax/swing/JToggleButton.java +++ b/jdk/src/share/classes/javax/swing/JToggleButton.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -76,6 +76,7 @@ import java.io.IOException; * @see JCheckBox * @author Jeff Dinkins */ +@SuppressWarnings("serial") // Same-version serialization only public class JToggleButton extends AbstractButton implements Accessible { /** @@ -222,6 +223,7 @@ public class JToggleButton extends AbstractButton implements Accessible { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class ToggleButtonModel extends DefaultButtonModel { /** @@ -384,6 +386,7 @@ public class JToggleButton extends AbstractButton implements Accessible { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJToggleButton extends AccessibleAbstractButton implements ItemListener { diff --git a/jdk/src/share/classes/javax/swing/JToolBar.java b/jdk/src/share/classes/javax/swing/JToolBar.java index a47e86127c0..0557e4b93f2 100644 --- a/jdk/src/share/classes/javax/swing/JToolBar.java +++ b/jdk/src/share/classes/javax/swing/JToolBar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +86,7 @@ import java.util.Hashtable; * @author Jeff Shapiro * @see Action */ +@SuppressWarnings("serial") // Same-version serialization only public class JToolBar extends JComponent implements SwingConstants, Accessible { /** diff --git a/jdk/src/share/classes/javax/swing/JViewport.java b/jdk/src/share/classes/javax/swing/JViewport.java index 5df23b9b0ab..5cc25a71ad0 100644 --- a/jdk/src/share/classes/javax/swing/JViewport.java +++ b/jdk/src/share/classes/javax/swing/JViewport.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -102,6 +102,7 @@ import java.io.Serializable; * @author Philip Milne * @see JScrollPane */ +@SuppressWarnings("serial") // Same-version serialization only public class JViewport extends JComponent implements Accessible { /** @@ -1296,6 +1297,7 @@ public class JViewport extends JComponent implements Accessible * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class ViewListener extends ComponentAdapter implements Serializable { public void componentResized(ComponentEvent e) { @@ -1765,6 +1767,7 @@ public class JViewport extends JComponent implements Accessible * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJViewport extends AccessibleJComponent { /** * Get the role of this object. diff --git a/jdk/src/share/classes/javax/swing/KeyStroke.java b/jdk/src/share/classes/javax/swing/KeyStroke.java index 774eeb692f1..e9f846c3d9c 100644 --- a/jdk/src/share/classes/javax/swing/KeyStroke.java +++ b/jdk/src/share/classes/javax/swing/KeyStroke.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -61,6 +61,7 @@ import java.awt.event.KeyEvent; * @author Arnaud Weber * @author David Mendenhall */ +@SuppressWarnings("serial") // Same-version serialization only public class KeyStroke extends AWTKeyStroke { /** diff --git a/jdk/src/share/classes/javax/swing/OverlayLayout.java b/jdk/src/share/classes/javax/swing/OverlayLayout.java index 6ea88c2e386..6f3735cd50f 100644 --- a/jdk/src/share/classes/javax/swing/OverlayLayout.java +++ b/jdk/src/share/classes/javax/swing/OverlayLayout.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -51,6 +51,7 @@ import java.io.Serializable; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class OverlayLayout implements LayoutManager2,Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/ScrollPaneLayout.java b/jdk/src/share/classes/javax/swing/ScrollPaneLayout.java index 9aa581af867..71eda4b9c9a 100644 --- a/jdk/src/share/classes/javax/swing/ScrollPaneLayout.java +++ b/jdk/src/share/classes/javax/swing/ScrollPaneLayout.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -57,6 +57,7 @@ import java.io.Serializable; * * @author Hans Muller */ +@SuppressWarnings("serial") // Same-version serialization only public class ScrollPaneLayout implements LayoutManager, ScrollPaneConstants, Serializable { diff --git a/jdk/src/share/classes/javax/swing/SizeRequirements.java b/jdk/src/share/classes/javax/swing/SizeRequirements.java index aa03f551423..d4a590bfd0f 100644 --- a/jdk/src/share/classes/javax/swing/SizeRequirements.java +++ b/jdk/src/share/classes/javax/swing/SizeRequirements.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -93,6 +93,7 @@ import java.io.Serializable; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class SizeRequirements implements Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/Spring.java b/jdk/src/share/classes/javax/swing/Spring.java index 40320734219..e0cb0157fdf 100644 --- a/jdk/src/share/classes/javax/swing/Spring.java +++ b/jdk/src/share/classes/javax/swing/Spring.java @@ -127,6 +127,7 @@ import java.awt.Component; * @author Philip Milne * @since 1.4 */ +@SuppressWarnings("serial") // Same-version serialization only public abstract class Spring { /** diff --git a/jdk/src/share/classes/javax/swing/SpringLayout.java b/jdk/src/share/classes/javax/swing/SpringLayout.java index 95444bfed59..fdaa55cf339 100644 --- a/jdk/src/share/classes/javax/swing/SpringLayout.java +++ b/jdk/src/share/classes/javax/swing/SpringLayout.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, 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 @@ -184,6 +184,7 @@ import java.util.*; * @author Joe Winchester * @since 1.4 */ +@SuppressWarnings("serial") // Same-version serialization only public class SpringLayout implements LayoutManager2 { private Map componentConstraints = new HashMap(); diff --git a/jdk/src/share/classes/javax/swing/UIDefaults.java b/jdk/src/share/classes/javax/swing/UIDefaults.java index a560b2d03d7..b6797bd232f 100644 --- a/jdk/src/share/classes/javax/swing/UIDefaults.java +++ b/jdk/src/share/classes/javax/swing/UIDefaults.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -72,6 +72,7 @@ import sun.util.CoreResourceBundleControl; * @see UIManager * @author Hans Muller */ +@SuppressWarnings("serial") // Same-version serialization only public class UIDefaults extends Hashtable { private static final Object PENDING = "Pending"; diff --git a/jdk/src/share/classes/javax/swing/UIManager.java b/jdk/src/share/classes/javax/swing/UIManager.java index c7a3c8291bf..026f8a7b80f 100644 --- a/jdk/src/share/classes/javax/swing/UIManager.java +++ b/jdk/src/share/classes/javax/swing/UIManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -174,6 +174,7 @@ import sun.awt.AWTAccessor; * @author Thomas Ball * @author Hans Muller */ +@SuppressWarnings("serial") // Same-version serialization only public class UIManager implements Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/UnsupportedLookAndFeelException.java b/jdk/src/share/classes/javax/swing/UnsupportedLookAndFeelException.java index 0ff32966131..07b8e18c6ff 100644 --- a/jdk/src/share/classes/javax/swing/UnsupportedLookAndFeelException.java +++ b/jdk/src/share/classes/javax/swing/UnsupportedLookAndFeelException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +39,7 @@ package javax.swing; * * @author unattributed */ +@SuppressWarnings("serial") // Same-version serialization only public class UnsupportedLookAndFeelException extends Exception { /** diff --git a/jdk/src/share/classes/javax/swing/ViewportLayout.java b/jdk/src/share/classes/javax/swing/ViewportLayout.java index aeac64276d6..2aa83bede3e 100644 --- a/jdk/src/share/classes/javax/swing/ViewportLayout.java +++ b/jdk/src/share/classes/javax/swing/ViewportLayout.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -56,6 +56,7 @@ import java.io.Serializable; * * @author Hans Muller */ +@SuppressWarnings("serial") // Same-version serialization only public class ViewportLayout implements LayoutManager, Serializable { // Single instance used by JViewport. diff --git a/jdk/src/share/classes/javax/swing/border/BevelBorder.java b/jdk/src/share/classes/javax/swing/border/BevelBorder.java index 659bd7f6966..dd18a88245d 100644 --- a/jdk/src/share/classes/javax/swing/border/BevelBorder.java +++ b/jdk/src/share/classes/javax/swing/border/BevelBorder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +44,7 @@ import java.beans.ConstructorProperties; * * @author David Kloba */ +@SuppressWarnings("serial") // Same-version serialization only public class BevelBorder extends AbstractBorder { /** Raised bevel type. */ diff --git a/jdk/src/share/classes/javax/swing/border/EtchedBorder.java b/jdk/src/share/classes/javax/swing/border/EtchedBorder.java index 3bb5c7e0686..2850b60db7b 100644 --- a/jdk/src/share/classes/javax/swing/border/EtchedBorder.java +++ b/jdk/src/share/classes/javax/swing/border/EtchedBorder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -51,6 +51,7 @@ import java.beans.ConstructorProperties; * @author David Kloba * @author Amy Fowler */ +@SuppressWarnings("serial") // Same-version serialization only public class EtchedBorder extends AbstractBorder { /** Raised etched type. */ diff --git a/jdk/src/share/classes/javax/swing/border/LineBorder.java b/jdk/src/share/classes/javax/swing/border/LineBorder.java index 8d7abb99ac9..1e083c1164f 100644 --- a/jdk/src/share/classes/javax/swing/border/LineBorder.java +++ b/jdk/src/share/classes/javax/swing/border/LineBorder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -50,6 +50,7 @@ import java.beans.ConstructorProperties; * * @author David Kloba */ +@SuppressWarnings("serial") // Same-version serialization only public class LineBorder extends AbstractBorder { private static Border blackLine; diff --git a/jdk/src/share/classes/javax/swing/border/SoftBevelBorder.java b/jdk/src/share/classes/javax/swing/border/SoftBevelBorder.java index d11b4202af8..8cd3afdd799 100644 --- a/jdk/src/share/classes/javax/swing/border/SoftBevelBorder.java +++ b/jdk/src/share/classes/javax/swing/border/SoftBevelBorder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -47,6 +47,7 @@ import java.beans.ConstructorProperties; * @author Amy Fowler * @author Chester Rose */ +@SuppressWarnings("serial") // Same-version serialization only public class SoftBevelBorder extends BevelBorder { diff --git a/jdk/src/share/classes/javax/swing/border/StrokeBorder.java b/jdk/src/share/classes/javax/swing/border/StrokeBorder.java index f09ae254e90..447779ac85c 100644 --- a/jdk/src/share/classes/javax/swing/border/StrokeBorder.java +++ b/jdk/src/share/classes/javax/swing/border/StrokeBorder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2014, 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 @@ -50,6 +50,7 @@ import java.beans.ConstructorProperties; * * @since 1.7 */ +@SuppressWarnings("serial") // Same-version serialization only public class StrokeBorder extends AbstractBorder { private final BasicStroke stroke; private final Paint paint; diff --git a/jdk/src/share/classes/javax/swing/colorchooser/AbstractColorChooserPanel.java b/jdk/src/share/classes/javax/swing/colorchooser/AbstractColorChooserPanel.java index 58b5946aaaa..c75d08b89ff 100644 --- a/jdk/src/share/classes/javax/swing/colorchooser/AbstractColorChooserPanel.java +++ b/jdk/src/share/classes/javax/swing/colorchooser/AbstractColorChooserPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -47,6 +47,7 @@ import javax.swing.*; * @author Tom Santos * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only public abstract class AbstractColorChooserPanel extends JPanel { private final PropertyChangeListener enabledListener = new PropertyChangeListener() { diff --git a/jdk/src/share/classes/javax/swing/colorchooser/ColorChooserComponentFactory.java b/jdk/src/share/classes/javax/swing/colorchooser/ColorChooserComponentFactory.java index ef3f4012984..84386433350 100644 --- a/jdk/src/share/classes/javax/swing/colorchooser/ColorChooserComponentFactory.java +++ b/jdk/src/share/classes/javax/swing/colorchooser/ColorChooserComponentFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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,6 +43,7 @@ import javax.swing.JComponent; * * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only public class ColorChooserComponentFactory { private ColorChooserComponentFactory() { } // can't instantiate diff --git a/jdk/src/share/classes/javax/swing/colorchooser/DefaultPreviewPanel.java b/jdk/src/share/classes/javax/swing/colorchooser/DefaultPreviewPanel.java index 55bdf41ee4a..2abba55060b 100644 --- a/jdk/src/share/classes/javax/swing/colorchooser/DefaultPreviewPanel.java +++ b/jdk/src/share/classes/javax/swing/colorchooser/DefaultPreviewPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -53,6 +53,7 @@ import sun.swing.SwingUtilities2; * @author Steve Wilson * @see JColorChooser */ +@SuppressWarnings("serial") // Same-version serialization only class DefaultPreviewPanel extends JPanel { private int squareSize = 25; diff --git a/jdk/src/share/classes/javax/swing/colorchooser/DefaultSwatchChooserPanel.java b/jdk/src/share/classes/javax/swing/colorchooser/DefaultSwatchChooserPanel.java index 6fdcf42c827..e56b95f2ddf 100644 --- a/jdk/src/share/classes/javax/swing/colorchooser/DefaultSwatchChooserPanel.java +++ b/jdk/src/share/classes/javax/swing/colorchooser/DefaultSwatchChooserPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -51,6 +51,7 @@ import javax.accessibility.*; * * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only class DefaultSwatchChooserPanel extends AbstractColorChooserPanel { SwatchPanel swatchPanel; diff --git a/jdk/src/share/classes/javax/swing/event/CaretEvent.java b/jdk/src/share/classes/javax/swing/event/CaretEvent.java index 049ec5be649..55c50da3809 100644 --- a/jdk/src/share/classes/javax/swing/event/CaretEvent.java +++ b/jdk/src/share/classes/javax/swing/event/CaretEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -42,6 +42,7 @@ import java.util.EventObject; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public abstract class CaretEvent extends EventObject { /** diff --git a/jdk/src/share/classes/javax/swing/event/HyperlinkEvent.java b/jdk/src/share/classes/javax/swing/event/HyperlinkEvent.java index b3262e6f0fd..848910188e9 100644 --- a/jdk/src/share/classes/javax/swing/event/HyperlinkEvent.java +++ b/jdk/src/share/classes/javax/swing/event/HyperlinkEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -45,6 +45,7 @@ import javax.swing.text.Element; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class HyperlinkEvent extends EventObject { /** diff --git a/jdk/src/share/classes/javax/swing/event/InternalFrameEvent.java b/jdk/src/share/classes/javax/swing/event/InternalFrameEvent.java index f061581cbb9..29247682f1d 100644 --- a/jdk/src/share/classes/javax/swing/event/InternalFrameEvent.java +++ b/jdk/src/share/classes/javax/swing/event/InternalFrameEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -53,6 +53,7 @@ import javax.swing.JInternalFrame; * * @author Thomas Ball */ +@SuppressWarnings("serial") // Same-version serialization only public class InternalFrameEvent extends AWTEvent { /** diff --git a/jdk/src/share/classes/javax/swing/event/ListSelectionEvent.java b/jdk/src/share/classes/javax/swing/event/ListSelectionEvent.java index adbb2c87ed7..a5128f1e47c 100644 --- a/jdk/src/share/classes/javax/swing/event/ListSelectionEvent.java +++ b/jdk/src/share/classes/javax/swing/event/ListSelectionEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -50,6 +50,7 @@ import javax.swing.*; * @author Ray Ryan * @see ListSelectionModel */ +@SuppressWarnings("serial") // Same-version serialization only public class ListSelectionEvent extends EventObject { private int firstIndex; diff --git a/jdk/src/share/classes/javax/swing/event/TableColumnModelEvent.java b/jdk/src/share/classes/javax/swing/event/TableColumnModelEvent.java index 18f72a0839d..1958ded5e39 100644 --- a/jdk/src/share/classes/javax/swing/event/TableColumnModelEvent.java +++ b/jdk/src/share/classes/javax/swing/event/TableColumnModelEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -45,6 +45,7 @@ import javax.swing.table.*; * @author Alan Chung * @see TableColumnModelListener */ +@SuppressWarnings("serial") // Same-version serialization only public class TableColumnModelEvent extends java.util.EventObject { // diff --git a/jdk/src/share/classes/javax/swing/event/TableModelEvent.java b/jdk/src/share/classes/javax/swing/event/TableModelEvent.java index ab450cbd72d..0247f992a4d 100644 --- a/jdk/src/share/classes/javax/swing/event/TableModelEvent.java +++ b/jdk/src/share/classes/javax/swing/event/TableModelEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -65,6 +65,7 @@ import javax.swing.table.*; * @author Philip Milne * @see TableModel */ +@SuppressWarnings("serial") // Same-version serialization only public class TableModelEvent extends java.util.EventObject { /** Identifies the addition of new rows or columns. */ diff --git a/jdk/src/share/classes/javax/swing/event/TreeExpansionEvent.java b/jdk/src/share/classes/javax/swing/event/TreeExpansionEvent.java index c91d7cdb106..1e70200b2e7 100644 --- a/jdk/src/share/classes/javax/swing/event/TreeExpansionEvent.java +++ b/jdk/src/share/classes/javax/swing/event/TreeExpansionEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -48,6 +48,7 @@ import javax.swing.tree.TreePath; * * @author Scott Violet */ +@SuppressWarnings("serial") // Same-version serialization only public class TreeExpansionEvent extends EventObject { /** diff --git a/jdk/src/share/classes/javax/swing/event/TreeModelEvent.java b/jdk/src/share/classes/javax/swing/event/TreeModelEvent.java index 9b3bc05f331..8dbdfcb8d3c 100644 --- a/jdk/src/share/classes/javax/swing/event/TreeModelEvent.java +++ b/jdk/src/share/classes/javax/swing/event/TreeModelEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -50,6 +50,7 @@ import javax.swing.tree.TreePath; * @author Ray Ryan * @author Scott Violet */ +@SuppressWarnings("serial") // Same-version serialization only public class TreeModelEvent extends EventObject { /** Path to the parent of the nodes that have changed. */ protected TreePath path; diff --git a/jdk/src/share/classes/javax/swing/event/UndoableEditEvent.java b/jdk/src/share/classes/javax/swing/event/UndoableEditEvent.java index 85d4c28c40c..bc81d9a721c 100644 --- a/jdk/src/share/classes/javax/swing/event/UndoableEditEvent.java +++ b/jdk/src/share/classes/javax/swing/event/UndoableEditEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +41,7 @@ import javax.swing.undo.*; * * @author Ray Ryan */ +@SuppressWarnings("serial") // Same-version serialization only public class UndoableEditEvent extends java.util.EventObject { private UndoableEdit myEdit; diff --git a/jdk/src/share/classes/javax/swing/plaf/BorderUIResource.java b/jdk/src/share/classes/javax/swing/plaf/BorderUIResource.java index 0e549348ef9..18fab84cd05 100644 --- a/jdk/src/share/classes/javax/swing/plaf/BorderUIResource.java +++ b/jdk/src/share/classes/javax/swing/plaf/BorderUIResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +59,7 @@ import javax.swing.plaf.UIResource; * @author Amy Fowler * */ +@SuppressWarnings("serial") // Same-version serialization only public class BorderUIResource implements Border, UIResource, Serializable { static Border etched; diff --git a/jdk/src/share/classes/javax/swing/plaf/ColorUIResource.java b/jdk/src/share/classes/javax/swing/plaf/ColorUIResource.java index 79eba0477a5..11a5e6bccae 100644 --- a/jdk/src/share/classes/javax/swing/plaf/ColorUIResource.java +++ b/jdk/src/share/classes/javax/swing/plaf/ColorUIResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -45,6 +45,7 @@ import java.beans.ConstructorProperties; * @author Hans Muller * */ +@SuppressWarnings("serial") // Same-version serialization only public class ColorUIResource extends Color implements UIResource { @ConstructorProperties({"red", "green", "blue"}) diff --git a/jdk/src/share/classes/javax/swing/plaf/DimensionUIResource.java b/jdk/src/share/classes/javax/swing/plaf/DimensionUIResource.java index 49828dc3550..1489352633c 100644 --- a/jdk/src/share/classes/javax/swing/plaf/DimensionUIResource.java +++ b/jdk/src/share/classes/javax/swing/plaf/DimensionUIResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -48,6 +48,7 @@ import javax.swing.plaf.UIResource; * @author Amy Fowler * */ +@SuppressWarnings("serial") // Same-version serialization only public class DimensionUIResource extends Dimension implements UIResource { public DimensionUIResource(int width, int height) { diff --git a/jdk/src/share/classes/javax/swing/plaf/FontUIResource.java b/jdk/src/share/classes/javax/swing/plaf/FontUIResource.java index f8966e8719a..f39fa8d7afa 100644 --- a/jdk/src/share/classes/javax/swing/plaf/FontUIResource.java +++ b/jdk/src/share/classes/javax/swing/plaf/FontUIResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -47,6 +47,7 @@ import javax.swing.plaf.UIResource; * @author Hans Muller * */ +@SuppressWarnings("serial") // Same-version serialization only public class FontUIResource extends Font implements UIResource { public FontUIResource(String name, int style, int size) { diff --git a/jdk/src/share/classes/javax/swing/plaf/IconUIResource.java b/jdk/src/share/classes/javax/swing/plaf/IconUIResource.java index 2fd10327a3f..5a25f5e8c4c 100644 --- a/jdk/src/share/classes/javax/swing/plaf/IconUIResource.java +++ b/jdk/src/share/classes/javax/swing/plaf/IconUIResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +52,7 @@ import javax.swing.plaf.UIResource; * @author Amy Fowler * */ +@SuppressWarnings("serial") // Same-version serialization only public class IconUIResource implements Icon, UIResource, Serializable { private Icon delegate; diff --git a/jdk/src/share/classes/javax/swing/plaf/InsetsUIResource.java b/jdk/src/share/classes/javax/swing/plaf/InsetsUIResource.java index 5da2498b4f5..9cf0ba4afed 100644 --- a/jdk/src/share/classes/javax/swing/plaf/InsetsUIResource.java +++ b/jdk/src/share/classes/javax/swing/plaf/InsetsUIResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -47,6 +47,7 @@ import javax.swing.plaf.UIResource; * @author Amy Fowler * */ +@SuppressWarnings("serial") // Same-version serialization only public class InsetsUIResource extends Insets implements UIResource { public InsetsUIResource(int top, int left, int bottom, int right) { diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicArrowButton.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicArrowButton.java index 73b79263129..750fe60c235 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicArrowButton.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicArrowButton.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -45,6 +45,7 @@ import javax.swing.plaf.UIResource; * * @author David Kloba */ +@SuppressWarnings("serial") // Same-version serialization only public class BasicArrowButton extends JButton implements SwingConstants { /** diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicCheckBoxUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicCheckBoxUI.java index 4c1d5c399d8..256a3afbfcf 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicCheckBoxUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicCheckBoxUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -49,6 +49,7 @@ import java.io.Serializable; * * @author Jeff Dinkins */ +@SuppressWarnings("serial") // Same-version serialization only public class BasicCheckBoxUI extends BasicRadioButtonUI { private static final Object BASIC_CHECK_BOX_UI_KEY = new Object(); diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java index 07e0a0f56e8..6aa49dda179 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -164,6 +164,7 @@ public class BasicComboBoxEditor implements ComboBoxEditor,FocusListener { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class UIResource extends BasicComboBoxEditor implements javax.swing.plaf.UIResource { } diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxRenderer.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxRenderer.java index f98be00b12c..963e180d381 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxRenderer.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxRenderer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -47,6 +47,7 @@ import java.io.Serializable; * * @author Arnaud Weber */ +@SuppressWarnings("serial") // Same-version serialization only public class BasicComboBoxRenderer extends JLabel implements ListCellRenderer, Serializable { @@ -139,6 +140,7 @@ implements ListCellRenderer, Serializable { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class UIResource extends BasicComboBoxRenderer implements javax.swing.plaf.UIResource { } } diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboPopup.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboPopup.java index e3ed947d732..dbc35e980e8 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboPopup.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboPopup.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -60,6 +60,7 @@ import java.io.Serializable; * @author Tom Santos * @author Mark Davidson */ +@SuppressWarnings("serial") // Same-version serialization only public class BasicComboPopup extends JPopupMenu implements ComboPopup { // An empty ListMode, this is used when the UI changes to allow // the JList to be gc'ed. diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicEditorPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicEditorPaneUI.java index 32bace0cc43..7445d79c2dc 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicEditorPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicEditorPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -50,6 +50,7 @@ import javax.swing.border.*; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class BasicEditorPaneUI extends BasicTextUI { /** diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicIconFactory.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicIconFactory.java index 6ea1cbcccf4..ec27f18dac1 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicIconFactory.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicIconFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -49,6 +49,7 @@ import java.io.Serializable; * @author David Kloba * @author Georges Saab */ +@SuppressWarnings("serial") // Same-version serialization only public class BasicIconFactory implements Serializable { private static Icon frame_icon; diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java index 22eb7951066..33b38623425 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -57,6 +57,7 @@ import sun.swing.UIAction; * @author David Kloba * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only public class BasicInternalFrameTitlePane extends JComponent { protected JMenuBar menuBar; diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicListUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicListUI.java index eb8df7bb774..f8a91437dde 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicListUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicListUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -1496,6 +1496,7 @@ public class BasicListUI extends ListUI * @see #installKeyboardActions * @see #installUI */ + @SuppressWarnings("serial") // Same-version serialization only public class MouseInputHandler implements MouseInputListener { public void mouseClicked(MouseEvent e) { @@ -1600,6 +1601,7 @@ public class BasicListUI extends ListUI * @see #getCellBounds * @see #installUI */ + @SuppressWarnings("serial") // Same-version serialization only public class ListSelectionHandler implements ListSelectionListener { public void valueChanged(ListSelectionEvent e) @@ -1659,6 +1661,7 @@ public class BasicListUI extends ListUI * @see #createListDataListener * @see #installUI */ + @SuppressWarnings("serial") // Same-version serialization only public class ListDataHandler implements ListDataListener { public void intervalAdded(ListDataEvent e) { @@ -1725,6 +1728,7 @@ public class BasicListUI extends ListUI * @see #createPropertyChangeListener * @see #installUI */ + @SuppressWarnings("serial") // Same-version serialization only public class PropertyChangeHandler implements PropertyChangeListener { public void propertyChange(PropertyChangeEvent e) diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java index 4ad134756e9..1bcf5fa93e0 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -102,6 +102,7 @@ import java.beans.PropertyChangeEvent; * * @author unattributed */ +@SuppressWarnings("serial") // Same-version serialization only public abstract class BasicLookAndFeel extends LookAndFeel implements Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneDivider.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneDivider.java index 9704705b2f5..36b4129598c 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneDivider.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneDivider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +59,7 @@ import sun.swing.DefaultLookup; * * @author Scott Violet */ +@SuppressWarnings("serial") // Same-version serialization only public class BasicSplitPaneDivider extends Container implements PropertyChangeListener { @@ -675,6 +676,7 @@ public class BasicSplitPaneDivider extends Container * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class DragController { /** diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextAreaUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextAreaUI.java index 4a34184bdb1..85793b0a590 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextAreaUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextAreaUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -49,6 +49,7 @@ import javax.swing.plaf.*; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class BasicTextAreaUI extends BasicTextUI { /** diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextFieldUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextFieldUI.java index 0083c34b74f..379a2ef9864 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextFieldUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextFieldUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -51,6 +51,7 @@ import sun.swing.DefaultLookup; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class BasicTextFieldUI extends BasicTextUI { /** diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextPaneUI.java index 1e460c41584..1d94e9c5651 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -47,6 +47,7 @@ import javax.swing.border.*; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class BasicTextPaneUI extends BasicEditorPaneUI { /** diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java index e3a2fb66ac3..0965c77789f 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -100,6 +100,7 @@ import javax.swing.plaf.basic.DragRecognitionSupport.BeforeDrag; * @author Timothy Prinzing * @author Shannon Hickey (drag and drop) */ +@SuppressWarnings("serial") // Same-version serialization only public abstract class BasicTextUI extends TextUI implements ViewFactory { /** diff --git a/jdk/src/share/classes/javax/swing/plaf/basic/ComboPopup.java b/jdk/src/share/classes/javax/swing/plaf/basic/ComboPopup.java index c2a4fa25006..75850fe7273 100644 --- a/jdk/src/share/classes/javax/swing/plaf/basic/ComboPopup.java +++ b/jdk/src/share/classes/javax/swing/plaf/basic/ComboPopup.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -46,6 +46,7 @@ import javax.swing.JList; * * @author Tom Santos */ +@SuppressWarnings("serial") // Same-version serialization only public interface ComboPopup { /** * Shows the popup diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/DefaultMetalTheme.java b/jdk/src/share/classes/javax/swing/plaf/metal/DefaultMetalTheme.java index 5527815d5b6..dae37d5e7be 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/DefaultMetalTheme.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/DefaultMetalTheme.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -88,6 +88,7 @@ import sun.swing.SwingUtilities2; * * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultMetalTheme extends MetalTheme { /** * Whether or not fonts should be plain. This is only used if diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalButtonUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalButtonUI.java index 3d02f9c5138..233949e3df1 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalButtonUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalButtonUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -50,6 +50,7 @@ import javax.swing.plaf.*; * * @author Tom Santos */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalButtonUI extends BasicButtonUI { // NOTE: These are not really needed, but at this point we can't pull // them. Their values are updated purely for historical reasons. diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalCheckBoxIcon.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalCheckBoxIcon.java index b32157144ef..0962c8e943a 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalCheckBoxIcon.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalCheckBoxIcon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -46,6 +46,7 @@ import javax.swing.plaf.*; * * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalCheckBoxIcon implements Icon, UIResource, Serializable { protected int getControlSize() { return 13; } diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalCheckBoxUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalCheckBoxUI.java index 95ef177105c..b80ec636ac2 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalCheckBoxUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalCheckBoxUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -51,6 +51,7 @@ import java.io.Serializable; * @author Michael C. Albers * */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalCheckBoxUI extends MetalRadioButtonUI { // NOTE: MetalCheckBoxUI inherts from MetalRadioButtonUI instead diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxButton.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxButton.java index 63a53bf1a6a..6a6d1ed860e 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxButton.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxButton.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -48,6 +48,7 @@ import java.io.Serializable; * @see MetalComboBoxButton * @author Tom Santos */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalComboBoxButton extends JButton { protected JComboBox comboBox; protected JList listBox; diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxEditor.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxEditor.java index aa375fbb6be..4c95250013b 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxEditor.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxEditor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -47,6 +47,7 @@ import javax.swing.plaf.basic.BasicComboBoxEditor; * * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalComboBoxEditor extends BasicComboBoxEditor { public MetalComboBoxEditor() { @@ -133,6 +134,7 @@ public class MetalComboBoxEditor extends BasicComboBoxEditor { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class UIResource extends MetalComboBoxEditor implements javax.swing.plaf.UIResource { } diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxUI.java index 74f8830f30c..eb9afb93439 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalComboBoxUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -51,6 +51,7 @@ import java.beans.*; * @see MetalComboBoxButton * @author Tom Santos */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalComboBoxUI extends BasicComboBoxUI { public static ComponentUI createUI(JComponent c) { diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalIconFactory.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalIconFactory.java index 5b81f17624f..e74882523d0 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalIconFactory.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalIconFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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,6 +58,7 @@ import sun.swing.CachedPainter; * * @author Michael C. Albers */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalIconFactory implements Serializable { // List of code-drawn Icons @@ -1554,6 +1555,7 @@ public class MetalIconFactory implements Serializable { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class FolderIcon16 implements Icon, Serializable { ImageCacher imageCacher; @@ -1636,6 +1638,7 @@ public class MetalIconFactory implements Serializable { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class TreeFolderIcon extends FolderIcon16 { public int getShift() { return -1; } public int getAdditionalHeight() { return 2; } @@ -1655,6 +1658,7 @@ public class MetalIconFactory implements Serializable { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class FileIcon16 implements Icon, Serializable { ImageCacher imageCacher; @@ -1740,6 +1744,7 @@ public class MetalIconFactory implements Serializable { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class TreeControlIcon implements Icon, Serializable { // This data member should not have been exposed. It's called // isLight, but now it really means isCollapsed. Since we can't change diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java index 7318815e691..a51603608e6 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -82,6 +82,7 @@ import sun.swing.SwingUtilities2; * * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalLookAndFeel extends BasicLookAndFeel { diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalProgressBarUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalProgressBarUI.java index a2918b0e9b1..aedede36688 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalProgressBarUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalProgressBarUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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,6 +44,7 @@ import java.awt.*; * * @author Michael C. Albers */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalProgressBarUI extends BasicProgressBarUI { private Rectangle innards; diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalRadioButtonUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalRadioButtonUI.java index 274335580c6..9b7beeacf98 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalRadioButtonUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalRadioButtonUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -53,6 +53,7 @@ import javax.swing.text.View; * @author Michael C. Albers (Metal modifications) * @author Jeff Dinkins (original BasicRadioButtonCode) */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalRadioButtonUI extends BasicRadioButtonUI { private static final Object METAL_RADIO_BUTTON_UI_KEY = new Object(); diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalRootPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalRootPaneUI.java index e40721dddb5..2d2c4b20ce2 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalRootPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalRootPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -63,6 +63,7 @@ import java.security.*; * @author Terry Kellerman * @since 1.4 */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalRootPaneUI extends BasicRootPaneUI { /** diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalScrollButton.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalScrollButton.java index 61616d47041..edd40950ec4 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalScrollButton.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalScrollButton.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -50,6 +50,7 @@ import javax.swing.plaf.basic.BasicArrowButton; * @author Tom Santos * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalScrollButton extends BasicArrowButton { private static Color shadowColor; diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalScrollPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalScrollPaneUI.java index d1f5b7abb19..ffc5fc4df1c 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalScrollPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalScrollPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -50,6 +50,7 @@ import java.awt.event.*; * * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalScrollPaneUI extends BasicScrollPaneUI { diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalSeparatorUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalSeparatorUI.java index 17ac847c703..9de133b902d 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalSeparatorUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalSeparatorUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -50,7 +50,7 @@ import javax.swing.plaf.basic.BasicSeparatorUI; * * @author Jeff Shapiro */ - +@SuppressWarnings("serial") // Same-version serialization only public class MetalSeparatorUI extends BasicSeparatorUI { public static ComponentUI createUI( JComponent c ) diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalSliderUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalSliderUI.java index 3fbfb3fa55f..6e629938a65 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalSliderUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalSliderUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -50,6 +50,7 @@ import javax.swing.plaf.*; * * @author Tom Santos */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalSliderUI extends BasicSliderUI { protected final int TICK_BUFFER = 4; diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalSplitPaneDivider.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalSplitPaneDivider.java index cdeffadaeab..8ba134e48f6 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalSplitPaneDivider.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalSplitPaneDivider.java @@ -46,6 +46,7 @@ import javax.swing.plaf.basic.*; * @author Steve Wilson * @author Ralph kar */ +@SuppressWarnings("serial") // Same-version serialization only class MetalSplitPaneDivider extends BasicSplitPaneDivider { private MetalBumps bumps = new MetalBumps(10, 10, diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalSplitPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalSplitPaneUI.java index 8aaa40942a0..d27ea2e4828 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalSplitPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalSplitPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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,6 +43,7 @@ import javax.swing.plaf.basic.*; * * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalSplitPaneUI extends BasicSplitPaneUI { diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalTabbedPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalTabbedPaneUI.java index 23ead51d4d9..75dc959ca3d 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalTabbedPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalTabbedPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -47,7 +47,7 @@ import javax.swing.plaf.basic.BasicTabbedPaneUI; * * @author Tom Santos */ - +@SuppressWarnings("serial") // Same-version serialization only public class MetalTabbedPaneUI extends BasicTabbedPaneUI { protected int minTabWidth = 40; diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalTextFieldUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalTextFieldUI.java index 8fe89f3fd33..1eca55ed7d2 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalTextFieldUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalTextFieldUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -47,6 +47,7 @@ import javax.swing.plaf.basic.*; * * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalTextFieldUI extends BasicTextFieldUI { public static ComponentUI createUI(JComponent c) { diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalToggleButtonUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalToggleButtonUI.java index d207cbbb1d5..d0d902eecee 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalToggleButtonUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalToggleButtonUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -55,6 +55,7 @@ import java.io.Serializable; * * @author Tom Santos */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalToggleButtonUI extends BasicToggleButtonUI { private static final Object METAL_TOGGLE_BUTTON_UI_KEY = new Object(); diff --git a/jdk/src/share/classes/javax/swing/plaf/metal/MetalToolTipUI.java b/jdk/src/share/classes/javax/swing/plaf/metal/MetalToolTipUI.java index 38a39a06746..2a7a1b1e571 100644 --- a/jdk/src/share/classes/javax/swing/plaf/metal/MetalToolTipUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalToolTipUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -51,6 +51,7 @@ import javax.swing.text.View; * * @author Steve Wilson */ +@SuppressWarnings("serial") // Same-version serialization only public class MetalToolTipUI extends BasicToolTipUI { static MetalToolTipUI sharedInstance = new MetalToolTipUI(); diff --git a/jdk/src/share/classes/javax/swing/plaf/multi/MultiLookAndFeel.java b/jdk/src/share/classes/javax/swing/plaf/multi/MultiLookAndFeel.java index 0e6c8e8de96..65828883fdd 100644 --- a/jdk/src/share/classes/javax/swing/plaf/multi/MultiLookAndFeel.java +++ b/jdk/src/share/classes/javax/swing/plaf/multi/MultiLookAndFeel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -56,6 +56,7 @@ import javax.swing.plaf.*; * * @author Willie Walker */ +@SuppressWarnings("serial") // Same-version serialization only public class MultiLookAndFeel extends LookAndFeel { ////////////////////////////// diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java index 09b33ec95e7..441698ce0a9 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -51,6 +51,7 @@ import java.beans.PropertyChangeEvent; * @author Shannon Hickey * @since 1.7 */ +@SuppressWarnings("serial") // Same-version serialization only public class SynthTextAreaUI extends BasicTextAreaUI implements SynthUI { private Handler handler = new Handler(); private SynthStyle style; diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextFieldUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextFieldUI.java index 9a1ae3ef6d9..7028a5a5999 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextFieldUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextFieldUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -50,6 +50,7 @@ import java.beans.PropertyChangeEvent; * @author Shannon Hickey * @since 1.7 */ +@SuppressWarnings("serial") // Same-version serialization only public class SynthTextFieldUI extends BasicTextFieldUI implements SynthUI { private Handler handler = new Handler(); private SynthStyle style; diff --git a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextPaneUI.java b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextPaneUI.java index 8b21b4ba7c6..d4f8aaca373 100644 --- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextPaneUI.java +++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -47,6 +47,7 @@ import java.awt.*; * @author Shannon Hickey * @since 1.7 */ +@SuppressWarnings("serial") // Same-version serialization only public class SynthTextPaneUI extends SynthEditorPaneUI { /** diff --git a/jdk/src/share/classes/javax/swing/table/AbstractTableModel.java b/jdk/src/share/classes/javax/swing/table/AbstractTableModel.java index c9ea60271dc..d7c63bce05a 100644 --- a/jdk/src/share/classes/javax/swing/table/AbstractTableModel.java +++ b/jdk/src/share/classes/javax/swing/table/AbstractTableModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -57,6 +57,7 @@ import java.util.EventListener; * @author Alan Chung * @author Philip Milne */ +@SuppressWarnings("serial") // Same-version serialization only public abstract class AbstractTableModel implements TableModel, Serializable { // diff --git a/jdk/src/share/classes/javax/swing/table/DefaultTableCellRenderer.java b/jdk/src/share/classes/javax/swing/table/DefaultTableCellRenderer.java index 61c6c9f732e..123ac8d5e64 100644 --- a/jdk/src/share/classes/javax/swing/table/DefaultTableCellRenderer.java +++ b/jdk/src/share/classes/javax/swing/table/DefaultTableCellRenderer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -82,6 +82,7 @@ import sun.swing.DefaultLookup; * @author Philip Milne * @see JTable */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultTableCellRenderer extends JLabel implements TableCellRenderer, Serializable { @@ -391,6 +392,7 @@ public class DefaultTableCellRenderer extends JLabel * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class UIResource extends DefaultTableCellRenderer implements javax.swing.plaf.UIResource { diff --git a/jdk/src/share/classes/javax/swing/table/DefaultTableColumnModel.java b/jdk/src/share/classes/javax/swing/table/DefaultTableColumnModel.java index b5bbd077a2b..96193cb35fd 100644 --- a/jdk/src/share/classes/javax/swing/table/DefaultTableColumnModel.java +++ b/jdk/src/share/classes/javax/swing/table/DefaultTableColumnModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +52,7 @@ import sun.swing.SwingUtilities2; * @author Philip Milne * @see JTable */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultTableColumnModel implements TableColumnModel, PropertyChangeListener, ListSelectionListener, Serializable { diff --git a/jdk/src/share/classes/javax/swing/table/DefaultTableModel.java b/jdk/src/share/classes/javax/swing/table/DefaultTableModel.java index 6bf39981d3d..74b88c1160d 100644 --- a/jdk/src/share/classes/javax/swing/table/DefaultTableModel.java +++ b/jdk/src/share/classes/javax/swing/table/DefaultTableModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +59,7 @@ import javax.swing.event.TableModelEvent; * @see TableModel * @see #getDataVector */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultTableModel extends AbstractTableModel implements Serializable { // diff --git a/jdk/src/share/classes/javax/swing/table/JTableHeader.java b/jdk/src/share/classes/javax/swing/table/JTableHeader.java index e096e338cc4..3995cccc288 100644 --- a/jdk/src/share/classes/javax/swing/table/JTableHeader.java +++ b/jdk/src/share/classes/javax/swing/table/JTableHeader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -60,6 +60,7 @@ import java.io.IOException; * @author Philip Milne * @see javax.swing.JTable */ +@SuppressWarnings("serial") // Same-version serialization only public class JTableHeader extends JComponent implements TableColumnModelListener, Accessible { /** @@ -780,6 +781,7 @@ public class JTableHeader extends JComponent implements TableColumnModelListener * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class AccessibleJTableHeader extends AccessibleJComponent { /** diff --git a/jdk/src/share/classes/javax/swing/table/TableColumn.java b/jdk/src/share/classes/javax/swing/table/TableColumn.java index 42d722aa958..713bf5483dc 100644 --- a/jdk/src/share/classes/javax/swing/table/TableColumn.java +++ b/jdk/src/share/classes/javax/swing/table/TableColumn.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * 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 @@ -82,6 +82,7 @@ import java.beans.PropertyChangeListener; * @see JTable#getCellRenderer(int, int) * @see JTable#getCellEditor(int, int) */ +@SuppressWarnings("serial") // Same-version serialization only public class TableColumn extends Object implements Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/text/AbstractDocument.java b/jdk/src/share/classes/javax/swing/text/AbstractDocument.java index f8a4332a839..6332cb3d3b7 100644 --- a/jdk/src/share/classes/javax/swing/text/AbstractDocument.java +++ b/jdk/src/share/classes/javax/swing/text/AbstractDocument.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -96,6 +96,7 @@ import sun.swing.SwingUtilities2; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public abstract class AbstractDocument implements Document, Serializable { /** @@ -1782,6 +1783,7 @@ public abstract class AbstractDocument implements Document, Serializable { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public abstract class AbstractElement implements Element, MutableAttributeSet, Serializable, TreeNode { /** @@ -2251,6 +2253,7 @@ public abstract class AbstractDocument implements Document, Serializable { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public class BranchElement extends AbstractElement { /** @@ -2507,6 +2510,7 @@ public abstract class AbstractDocument implements Document, Serializable { * * @see Element */ + @SuppressWarnings("serial") // Same-version serialization only public class LeafElement extends AbstractElement { /** diff --git a/jdk/src/share/classes/javax/swing/text/DateFormatter.java b/jdk/src/share/classes/javax/swing/text/DateFormatter.java index b301bf97aaa..e935053bfc8 100644 --- a/jdk/src/share/classes/javax/swing/text/DateFormatter.java +++ b/jdk/src/share/classes/javax/swing/text/DateFormatter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -47,6 +47,7 @@ import javax.swing.text.*; * * @since 1.4 */ +@SuppressWarnings("serial") // Same-version serialization only public class DateFormatter extends InternationalFormatter { /** * This is shorthand for diff --git a/jdk/src/share/classes/javax/swing/text/DefaultCaret.java b/jdk/src/share/classes/javax/swing/text/DefaultCaret.java index 7b06fb3f1c9..5eb0b2b10fe 100644 --- a/jdk/src/share/classes/javax/swing/text/DefaultCaret.java +++ b/jdk/src/share/classes/javax/swing/text/DefaultCaret.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -105,6 +105,7 @@ import sun.swing.SwingUtilities2; * @author Timothy Prinzing * @see Caret */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultCaret extends Rectangle implements Caret, FocusListener, MouseListener, MouseMotionListener { /** diff --git a/jdk/src/share/classes/javax/swing/text/DefaultEditorKit.java b/jdk/src/share/classes/javax/swing/text/DefaultEditorKit.java index ec5a04f3780..55d75fb7364 100644 --- a/jdk/src/share/classes/javax/swing/text/DefaultEditorKit.java +++ b/jdk/src/share/classes/javax/swing/text/DefaultEditorKit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -849,6 +849,7 @@ public class DefaultEditorKit extends EditorKit { * @see Keymap#setDefaultAction * @see Keymap#getDefaultAction */ + @SuppressWarnings("serial") // Same-version serialization only public static class DefaultKeyTypedAction extends TextAction { /** @@ -906,6 +907,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#insertContentAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Same-version serialization only public static class InsertContentAction extends TextAction { /** @@ -954,6 +956,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#insertBreakAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Same-version serialization only public static class InsertBreakAction extends TextAction { /** @@ -996,6 +999,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#insertTabAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Same-version serialization only public static class InsertTabAction extends TextAction { /** @@ -1272,6 +1276,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#cutAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Same-version serialization only public static class CutAction extends TextAction { /** Create this object with the appropriate identifier. */ @@ -1308,6 +1313,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#copyAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Same-version serialization only public static class CopyAction extends TextAction { /** Create this object with the appropriate identifier. */ @@ -1345,6 +1351,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#pasteAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Same-version serialization only public static class PasteAction extends TextAction { /** Create this object with the appropriate identifier. */ @@ -1380,6 +1387,7 @@ public class DefaultEditorKit extends EditorKit { * @see DefaultEditorKit#beepAction * @see DefaultEditorKit#getActions */ + @SuppressWarnings("serial") // Same-version serialization only public static class BeepAction extends TextAction { /** Create this object with the appropriate identifier. */ diff --git a/jdk/src/share/classes/javax/swing/text/DefaultFormatter.java b/jdk/src/share/classes/javax/swing/text/DefaultFormatter.java index 5fa3ad9fbbd..0a4df2c0a1d 100644 --- a/jdk/src/share/classes/javax/swing/text/DefaultFormatter.java +++ b/jdk/src/share/classes/javax/swing/text/DefaultFormatter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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,6 +59,7 @@ import javax.swing.text.*; * * @since 1.4 */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultFormatter extends JFormattedTextField.AbstractFormatter implements Cloneable, Serializable { /** Indicates if the value being edited must match the mask. */ diff --git a/jdk/src/share/classes/javax/swing/text/DefaultFormatterFactory.java b/jdk/src/share/classes/javax/swing/text/DefaultFormatterFactory.java index 7474dcbc205..ff52dde9803 100644 --- a/jdk/src/share/classes/javax/swing/text/DefaultFormatterFactory.java +++ b/jdk/src/share/classes/javax/swing/text/DefaultFormatterFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -72,6 +72,7 @@ import javax.swing.JFormattedTextField; * * @since 1.4 */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultFormatterFactory extends JFormattedTextField.AbstractFormatterFactory implements Serializable { /** * Default AbstractFormatter to use if a more specific one has diff --git a/jdk/src/share/classes/javax/swing/text/DefaultStyledDocument.java b/jdk/src/share/classes/javax/swing/text/DefaultStyledDocument.java index 85c9fe5e308..a5ce0633f74 100644 --- a/jdk/src/share/classes/javax/swing/text/DefaultStyledDocument.java +++ b/jdk/src/share/classes/javax/swing/text/DefaultStyledDocument.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -69,6 +69,7 @@ import static sun.swing.SwingUtilities2.IMPLIED_CR; * @see Document * @see AbstractDocument */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultStyledDocument extends AbstractDocument implements StyledDocument { /** @@ -1128,6 +1129,7 @@ public class DefaultStyledDocument extends AbstractDocument implements StyledDoc * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only protected class SectionElement extends BranchElement { /** @@ -1159,6 +1161,7 @@ public class DefaultStyledDocument extends AbstractDocument implements StyledDoc * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class ElementSpec { /** @@ -1394,6 +1397,7 @@ public class DefaultStyledDocument extends AbstractDocument implements StyledDoc * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public class ElementBuffer implements Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/text/InternationalFormatter.java b/jdk/src/share/classes/javax/swing/text/InternationalFormatter.java index dc3e046b024..8c91658167d 100644 --- a/jdk/src/share/classes/javax/swing/text/InternationalFormatter.java +++ b/jdk/src/share/classes/javax/swing/text/InternationalFormatter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -92,6 +92,7 @@ import javax.swing.*; * * @since 1.4 */ +@SuppressWarnings("serial") // Same-version serialization only public class InternationalFormatter extends DefaultFormatter { /** * Used by getFields. diff --git a/jdk/src/share/classes/javax/swing/text/JTextComponent.java b/jdk/src/share/classes/javax/swing/text/JTextComponent.java index 42c2a2e1764..714b3381619 100644 --- a/jdk/src/share/classes/javax/swing/text/JTextComponent.java +++ b/jdk/src/share/classes/javax/swing/text/JTextComponent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -292,6 +292,7 @@ import sun.swing.SwingAccessor; * @see View * @see ViewFactory */ +@SuppressWarnings("serial") // Same-version serialization only public abstract class JTextComponent extends JComponent implements Scrollable, Accessible { /** @@ -1118,6 +1119,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class KeyBinding { /** @@ -2535,6 +2537,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public class AccessibleJTextComponent extends AccessibleJComponent implements AccessibleText, CaretListener, DocumentListener, AccessibleAction, AccessibleEditableText, diff --git a/jdk/src/share/classes/javax/swing/text/MaskFormatter.java b/jdk/src/share/classes/javax/swing/text/MaskFormatter.java index 2285e4ef1d1..1c37ed9180f 100644 --- a/jdk/src/share/classes/javax/swing/text/MaskFormatter.java +++ b/jdk/src/share/classes/javax/swing/text/MaskFormatter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -149,6 +149,7 @@ import javax.swing.*; * * @since 1.4 */ +@SuppressWarnings("serial") // Same-version serialization only public class MaskFormatter extends DefaultFormatter { // Potential values in mask. private static final char DIGIT_KEY = '#'; diff --git a/jdk/src/share/classes/javax/swing/text/NumberFormatter.java b/jdk/src/share/classes/javax/swing/text/NumberFormatter.java index f170b9aa967..bcc518ce39e 100644 --- a/jdk/src/share/classes/javax/swing/text/NumberFormatter.java +++ b/jdk/src/share/classes/javax/swing/text/NumberFormatter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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,6 +91,7 @@ import sun.swing.SwingUtilities2; * * @since 1.4 */ +@SuppressWarnings("serial") // Same-version serialization only public class NumberFormatter extends InternationalFormatter { /** The special characters from the Format instance. */ private String specialChars; diff --git a/jdk/src/share/classes/javax/swing/text/PlainDocument.java b/jdk/src/share/classes/javax/swing/text/PlainDocument.java index 8c731da6f61..e1adc38faf8 100644 --- a/jdk/src/share/classes/javax/swing/text/PlainDocument.java +++ b/jdk/src/share/classes/javax/swing/text/PlainDocument.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -56,6 +56,7 @@ import java.util.Vector; * @see Document * @see AbstractDocument */ +@SuppressWarnings("serial") // Same-version serialization only public class PlainDocument extends AbstractDocument { /** diff --git a/jdk/src/share/classes/javax/swing/text/SimpleAttributeSet.java b/jdk/src/share/classes/javax/swing/text/SimpleAttributeSet.java index f6505b46a9a..e7646368290 100644 --- a/jdk/src/share/classes/javax/swing/text/SimpleAttributeSet.java +++ b/jdk/src/share/classes/javax/swing/text/SimpleAttributeSet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -48,6 +48,7 @@ import java.util.LinkedHashMap; * * @author Tim Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class SimpleAttributeSet implements MutableAttributeSet, Serializable, Cloneable { private static final long serialVersionUID = -6631553454711782652L; diff --git a/jdk/src/share/classes/javax/swing/text/StringContent.java b/jdk/src/share/classes/javax/swing/text/StringContent.java index a62fcc4ba84..99b8d5d3eb8 100644 --- a/jdk/src/share/classes/javax/swing/text/StringContent.java +++ b/jdk/src/share/classes/javax/swing/text/StringContent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -50,6 +50,7 @@ import javax.swing.SwingUtilities; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public final class StringContent implements AbstractDocument.Content, Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/text/StyleContext.java b/jdk/src/share/classes/javax/swing/text/StyleContext.java index c7942eaccd0..8d7975b1395 100644 --- a/jdk/src/share/classes/javax/swing/text/StyleContext.java +++ b/jdk/src/share/classes/javax/swing/text/StyleContext.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -62,6 +62,7 @@ import sun.font.FontUtilities; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class StyleContext implements Serializable, AbstractDocument.AttributeContext { /** @@ -1244,6 +1245,7 @@ public class StyleContext implements Serializable, AbstractDocument.AttributeCon * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public class NamedStyle implements Style, Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/text/StyledEditorKit.java b/jdk/src/share/classes/javax/swing/text/StyledEditorKit.java index 43809f55ae9..b62be0f7ef3 100644 --- a/jdk/src/share/classes/javax/swing/text/StyledEditorKit.java +++ b/jdk/src/share/classes/javax/swing/text/StyledEditorKit.java @@ -375,6 +375,7 @@ public class StyledEditorKit extends DefaultEditorKit { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public abstract static class StyledTextAction extends TextAction { /** @@ -494,6 +495,7 @@ public class StyledEditorKit extends DefaultEditorKit { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class FontFamilyAction extends StyledTextAction { /** @@ -550,6 +552,7 @@ public class StyledEditorKit extends DefaultEditorKit { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class FontSizeAction extends StyledTextAction { /** @@ -617,6 +620,7 @@ public class StyledEditorKit extends DefaultEditorKit { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class ForegroundAction extends StyledTextAction { /** @@ -683,6 +687,7 @@ public class StyledEditorKit extends DefaultEditorKit { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class AlignmentAction extends StyledTextAction { /** @@ -733,6 +738,7 @@ public class StyledEditorKit extends DefaultEditorKit { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class BoldAction extends StyledTextAction { /** @@ -772,6 +778,7 @@ public class StyledEditorKit extends DefaultEditorKit { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class ItalicAction extends StyledTextAction { /** @@ -811,6 +818,7 @@ public class StyledEditorKit extends DefaultEditorKit { * has been added to the java.beans package. * Please see {@link java.beans.XMLEncoder}. */ + @SuppressWarnings("serial") // Same-version serialization only public static class UnderlineAction extends StyledTextAction { /** diff --git a/jdk/src/share/classes/javax/swing/text/TabSet.java b/jdk/src/share/classes/javax/swing/text/TabSet.java index 2a5351607c2..6464125fbab 100644 --- a/jdk/src/share/classes/javax/swing/text/TabSet.java +++ b/jdk/src/share/classes/javax/swing/text/TabSet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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,6 +43,7 @@ import java.io.Serializable; * * @author Scott Violet */ +@SuppressWarnings("serial") // Same-version serialization only public class TabSet implements Serializable { /** TabStops this TabSet contains. */ diff --git a/jdk/src/share/classes/javax/swing/text/TabStop.java b/jdk/src/share/classes/javax/swing/text/TabStop.java index a78ea24b0c7..27112103dd2 100644 --- a/jdk/src/share/classes/javax/swing/text/TabStop.java +++ b/jdk/src/share/classes/javax/swing/text/TabStop.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -42,6 +42,7 @@ import java.io.Serializable; * Please see {@link java.beans.XMLEncoder}. * */ +@SuppressWarnings("serial") // Same-version serialization only public class TabStop implements Serializable { /** Character following tab is positioned at location. */ diff --git a/jdk/src/share/classes/javax/swing/text/TextAction.java b/jdk/src/share/classes/javax/swing/text/TextAction.java index bcfa7c39043..9f0c43d861e 100644 --- a/jdk/src/share/classes/javax/swing/text/TextAction.java +++ b/jdk/src/share/classes/javax/swing/text/TextAction.java @@ -58,6 +58,7 @@ import javax.swing.KeyStroke; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public abstract class TextAction extends AbstractAction { /** diff --git a/jdk/src/share/classes/javax/swing/text/html/HTMLDocument.java b/jdk/src/share/classes/javax/swing/text/html/HTMLDocument.java index 254d6156b9f..5aa989411cd 100644 --- a/jdk/src/share/classes/javax/swing/text/html/HTMLDocument.java +++ b/jdk/src/share/classes/javax/swing/text/html/HTMLDocument.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -270,6 +270,7 @@ import static sun.swing.SwingUtilities2.IMPLIED_CR; * @author Scott Violet * @author Sunita Mani */ +@SuppressWarnings("serial") // Same-version serialization only public class HTMLDocument extends DefaultStyledDocument { /** * Constructs an HTML document using the default buffer size diff --git a/jdk/src/share/classes/javax/swing/text/html/Option.java b/jdk/src/share/classes/javax/swing/text/html/Option.java index 181b87cde5c..011b28a49f4 100644 --- a/jdk/src/share/classes/javax/swing/text/html/Option.java +++ b/jdk/src/share/classes/javax/swing/text/html/Option.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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,6 +44,7 @@ import javax.swing.text.*; * * @author Timothy Prinzing */ +@SuppressWarnings("serial") // Same-version serialization only public class Option implements Serializable { /** diff --git a/jdk/src/share/classes/javax/swing/tree/AbstractLayoutCache.java b/jdk/src/share/classes/javax/swing/tree/AbstractLayoutCache.java index f44637c9c36..c0e474e26cd 100644 --- a/jdk/src/share/classes/javax/swing/tree/AbstractLayoutCache.java +++ b/jdk/src/share/classes/javax/swing/tree/AbstractLayoutCache.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -42,7 +42,7 @@ import java.util.Enumeration; * * @author Scott Violet */ - +@SuppressWarnings("serial") // Same-version serialization only public abstract class AbstractLayoutCache implements RowMapper { /** Object responsible for getting the size of a node. */ protected NodeDimensions nodeDimensions; diff --git a/jdk/src/share/classes/javax/swing/tree/DefaultMutableTreeNode.java b/jdk/src/share/classes/javax/swing/tree/DefaultMutableTreeNode.java index 17840426075..c33599064e2 100644 --- a/jdk/src/share/classes/javax/swing/tree/DefaultMutableTreeNode.java +++ b/jdk/src/share/classes/javax/swing/tree/DefaultMutableTreeNode.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -85,6 +85,7 @@ import java.util.*; * * @author Rob Davis */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultMutableTreeNode implements Cloneable, MutableTreeNode, Serializable { diff --git a/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellEditor.java b/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellEditor.java index bc28d5dcfd3..05a6145c598 100644 --- a/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellEditor.java +++ b/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellEditor.java @@ -60,6 +60,7 @@ import java.util.Vector; * * @author Scott Violet */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultTreeCellEditor implements ActionListener, TreeCellEditor, TreeSelectionListener { /** Editor handling the editing. */ diff --git a/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java b/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java index ad2a86bad29..3cc8bd238e5 100644 --- a/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java +++ b/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -103,6 +103,7 @@ import sun.swing.DefaultLookup; * @author Ray Ryan * @author Scott Violet */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultTreeCellRenderer extends JLabel implements TreeCellRenderer { /** Last tree the renderer was painted in. */ diff --git a/jdk/src/share/classes/javax/swing/tree/DefaultTreeModel.java b/jdk/src/share/classes/javax/swing/tree/DefaultTreeModel.java index 5503481a5f7..c3b9de2d698 100644 --- a/jdk/src/share/classes/javax/swing/tree/DefaultTreeModel.java +++ b/jdk/src/share/classes/javax/swing/tree/DefaultTreeModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -49,6 +49,7 @@ import javax.swing.event.*; * @author Ray Ryan * @author Scott Violet */ +@SuppressWarnings("serial") // Same-version serialization only public class DefaultTreeModel implements Serializable, TreeModel { /** Root of the tree. */ protected TreeNode root; diff --git a/jdk/src/share/classes/javax/swing/tree/DefaultTreeSelectionModel.java b/jdk/src/share/classes/javax/swing/tree/DefaultTreeSelectionModel.java index 1f730192455..73054ad0046 100644 --- a/jdk/src/share/classes/javax/swing/tree/DefaultTreeSelectionModel.java +++ b/jdk/src/share/classes/javax/swing/tree/DefaultTreeSelectionModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 diff --git a/jdk/src/share/classes/javax/swing/tree/FixedHeightLayoutCache.java b/jdk/src/share/classes/javax/swing/tree/FixedHeightLayoutCache.java index 0cd55cb843d..fe2ad0b263c 100644 --- a/jdk/src/share/classes/javax/swing/tree/FixedHeightLayoutCache.java +++ b/jdk/src/share/classes/javax/swing/tree/FixedHeightLayoutCache.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -48,7 +48,7 @@ import sun.swing.SwingUtilities2; * * @author Scott Violet */ - +@SuppressWarnings("serial") // Same-version serialization only public class FixedHeightLayoutCache extends AbstractLayoutCache { /** Root node. */ private FHTreeStateNode root; diff --git a/jdk/src/share/classes/javax/swing/tree/TreePath.java b/jdk/src/share/classes/javax/swing/tree/TreePath.java index 53e285e9538..4ed1dbafd09 100644 --- a/jdk/src/share/classes/javax/swing/tree/TreePath.java +++ b/jdk/src/share/classes/javax/swing/tree/TreePath.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -81,6 +81,7 @@ import java.beans.ConstructorProperties; * @author Scott Violet * @author Philip Milne */ +@SuppressWarnings("serial") // Same-version serialization only public class TreePath extends Object implements Serializable { /** Path representing the parent, null if lastPathComponent represents * the root. */ diff --git a/jdk/src/share/classes/javax/swing/tree/VariableHeightLayoutCache.java b/jdk/src/share/classes/javax/swing/tree/VariableHeightLayoutCache.java index 460f5b77966..770b383b716 100644 --- a/jdk/src/share/classes/javax/swing/tree/VariableHeightLayoutCache.java +++ b/jdk/src/share/classes/javax/swing/tree/VariableHeightLayoutCache.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -51,7 +51,7 @@ import sun.swing.SwingUtilities2; * @author Ray Ryan * @author Scott Violet */ - +@SuppressWarnings("serial") // Same-version serialization only public class VariableHeightLayoutCache extends AbstractLayoutCache { /** * The array of nodes that are currently visible, in the order they diff --git a/jdk/src/share/classes/javax/swing/undo/CannotRedoException.java b/jdk/src/share/classes/javax/swing/undo/CannotRedoException.java index e59e3f5eb14..15ed0c1b4b4 100644 --- a/jdk/src/share/classes/javax/swing/undo/CannotRedoException.java +++ b/jdk/src/share/classes/javax/swing/undo/CannotRedoException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,5 +38,6 @@ package javax.swing.undo; * * @author Ray Ryan */ +@SuppressWarnings("serial") // Same-version serialization only public class CannotRedoException extends RuntimeException { } diff --git a/jdk/src/share/classes/javax/swing/undo/CannotUndoException.java b/jdk/src/share/classes/javax/swing/undo/CannotUndoException.java index 2779eaa8b54..35606df3f69 100644 --- a/jdk/src/share/classes/javax/swing/undo/CannotUndoException.java +++ b/jdk/src/share/classes/javax/swing/undo/CannotUndoException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,5 +39,6 @@ package javax.swing.undo; * * @author Ray Ryan */ +@SuppressWarnings("serial") // Same-version serialization only public class CannotUndoException extends RuntimeException { } diff --git a/jdk/src/share/classes/javax/swing/undo/UndoManager.java b/jdk/src/share/classes/javax/swing/undo/UndoManager.java index 23dc9b5884e..a95ebf25ce8 100644 --- a/jdk/src/share/classes/javax/swing/undo/UndoManager.java +++ b/jdk/src/share/classes/javax/swing/undo/UndoManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -132,6 +132,7 @@ import java.util.*; * * @author Ray Ryan */ +@SuppressWarnings("serial") // Same-version serialization only public class UndoManager extends CompoundEdit implements UndoableEditListener { int indexOfNextAdd; int limit; From 786fc244638666f8d9d9e468b109260556f45d0e Mon Sep 17 00:00:00 2001 From: Alexander Zuev Date: Fri, 24 Jan 2014 21:29:25 +0400 Subject: [PATCH 074/158] 8029646: [pack200] should support the new zip64 format Reviewed-by: ksrini, sherman --- .../native/com/sun/java/util/jar/pack/zip.cpp | 144 ++++++++++++++--- .../native/com/sun/java/util/jar/pack/zip.h | 5 +- jdk/test/tools/pack200/PackTestZip64.java | 152 ++++++++++++++++++ 3 files changed, 274 insertions(+), 27 deletions(-) create mode 100644 jdk/test/tools/pack200/PackTestZip64.java diff --git a/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp b/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp index 2544091768f..786a83228bb 100644 --- a/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp +++ b/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, 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 @@ -73,8 +73,9 @@ inline uint jar::get_crc32(uint c, uchar *ptr, uint len) { return crc32(c, ptr, SWAP_BYTES(a & 0xFFFF) #define GET_INT_HI(a) \ - SWAP_BYTES((a >> 16) & 0xFFFF); + SWAP_BYTES((a >> 16) & 0xFFFF) +static const ushort jarmagic[2] = { SWAP_BYTES(0xCAFE), 0 }; void jar::init(unpacker* u_) { BYTES_OF(*this).clear(); @@ -105,13 +106,14 @@ void jar::add_to_jar_directory(const char* fname, bool store, int modtime, header[0] = (ushort)SWAP_BYTES(0x4B50); header[1] = (ushort)SWAP_BYTES(0x0201); - header[2] = (ushort)SWAP_BYTES(0xA); + header[2] = (ushort)SWAP_BYTES(( store ) ? 0x0A : 0x14); // required version - header[3] = (ushort)SWAP_BYTES(0xA); + header[3] = (ushort)SWAP_BYTES(( store ) ? 0x0A : 0x14); - // flags 02 = maximum sub-compression flag - header[4] = ( store ) ? 0x0 : SWAP_BYTES(0x2); + // Flags - UTF-8 compression and separating crc and sizes + // into separate headers for deflated file + header[4] = ( store ) ? SWAP_BYTES(0x0800) : 0x0808; // Compression method 8=deflate. header[5] = ( store ) ? 0x0 : SWAP_BYTES(0x08); @@ -135,7 +137,8 @@ void jar::add_to_jar_directory(const char* fname, bool store, int modtime, // Filename length header[14] = (ushort)SWAP_BYTES(fname_length); // So called "extra field" length. - header[15] = 0; + // If it's the first record we must add JAR magic sequence + header[15] = ( central_directory_count ) ? 0 : (ushort)SWAP_BYTES(4); // So called "comment" length. header[16] = 0; // Disk number start @@ -155,6 +158,11 @@ void jar::add_to_jar_directory(const char* fname, bool store, int modtime, // Copy the fname to the header. central_directory.append(fname, fname_length); + // Add jar magic for the first record + if (central_directory_count == 0) { + central_directory.append((void *)jarmagic, sizeof(jarmagic)); + } + central_directory_count++; } @@ -170,10 +178,10 @@ void jar::write_jar_header(const char* fname, bool store, int modtime, header[1] = (ushort)SWAP_BYTES(0x0403); // Version - header[2] = (ushort)SWAP_BYTES(0xA); + header[2] = (ushort)SWAP_BYTES(( store ) ? 0x0A : 0x14); - // flags 02 = maximum sub-compression flag - header[3] = ( store ) ? 0x0 : SWAP_BYTES(0x2); + // General purpose flags - same as in the Central Directory + header[3] = ( store ) ? SWAP_BYTES(0x0800) : 0x0808; // Compression method = deflate header[4] = ( store ) ? 0x0 : SWAP_BYTES(0x08); @@ -182,28 +190,51 @@ void jar::write_jar_header(const char* fname, bool store, int modtime, header[5] = (ushort)GET_INT_LO(dostime); header[6] = (ushort)GET_INT_HI(dostime); - // CRC - header[7] = (ushort)GET_INT_LO(crc); - header[8] = (ushort)GET_INT_HI(crc); + // CRC, 0 if deflated, will come separately in extra header + header[7] = ( store ) ? (ushort)GET_INT_LO(crc) : 0; + header[8] = ( store ) ? (ushort)GET_INT_HI(crc) : 0; - // Compressed length: - header[9] = (ushort)GET_INT_LO(clen); - header[10] = (ushort)GET_INT_HI(clen); + // Compressed length, 0 if deflated + header[9] = ( store ) ? (ushort)GET_INT_LO(clen) : 0; + header[10] = ( store ) ? (ushort)GET_INT_HI(clen) : 0; - // Uncompressed length. - header[11] = (ushort)GET_INT_LO(len); - header[12] = (ushort)GET_INT_HI(len); + // Uncompressed length, 0 if deflated + header[11] = ( store ) ? (ushort)GET_INT_LO(len) : 0; + header[12] = ( store ) ? (ushort)GET_INT_HI(len) : 0; // Filename length header[13] = (ushort)SWAP_BYTES(fname_length); // So called "extra field" length. - header[14] = 0; + header[14] = ( central_directory_count - 1 ) ? 0 : (ushort)SWAP_BYTES(4); // Write the LOC header to the output file. write_data(header, (int)sizeof(header)); // Copy the fname to the header. write_data((char*)fname, (int)fname_length); + + if (central_directory_count == 1) { + // Write JAR magic sequence + write_data((void *)jarmagic, (int)sizeof(jarmagic)); + } +} + +void jar::write_jar_extra(int len, int clen, uint crc) { + ushort header[8]; + // Extra field signature + header[0] = (ushort)SWAP_BYTES(0x4B50); + header[1] = (ushort)SWAP_BYTES(0x0807); + // CRC + header[2] = (ushort)GET_INT_LO(crc); + header[3] = (ushort)GET_INT_HI(crc); + // Compressed length + header[4] = (ushort)GET_INT_LO(clen); + header[5] = (ushort)GET_INT_HI(clen); + // Uncompressed length + header[6] = (ushort)GET_INT_LO(len); + header[7] = (ushort)GET_INT_HI(len); + + write_data(header, sizeof(header)); } static const char marker_comment[] = ZIP_ARCHIVE_MARKER_COMMENT; @@ -212,6 +243,7 @@ void jar::write_central_directory() { bytes mc; mc.set(marker_comment); ushort header[11]; + ushort header64[38]; // Create the End of Central Directory structure. header[0] = (ushort)SWAP_BYTES(0x4B50); @@ -220,8 +252,8 @@ void jar::write_central_directory() { header[2] = 0; header[3] = 0; // Number of entries in central directory. - header[4] = (ushort)SWAP_BYTES(central_directory_count); - header[5] = (ushort)SWAP_BYTES(central_directory_count); + header[4] = ( central_directory_count >= 0xffff ) ? 0xffff : (ushort)SWAP_BYTES(central_directory_count); + header[5] = ( central_directory_count >= 0xffff ) ? 0xffff : (ushort)SWAP_BYTES(central_directory_count); // Size of the central directory} header[6] = (ushort)GET_INT_LO((int)central_directory.size()); header[7] = (ushort)GET_INT_HI((int)central_directory.size()); @@ -229,12 +261,71 @@ void jar::write_central_directory() { header[8] = (ushort)GET_INT_LO(output_file_offset); header[9] = (ushort)GET_INT_HI(output_file_offset); // zipfile comment length; - header [10] = (ushort)SWAP_BYTES((int)mc.len); + header[10] = (ushort)SWAP_BYTES((int)mc.len); // Write the central directory. PRINTCR((2, "Central directory at %d\n", output_file_offset)); write_data(central_directory.b); + // If number of records exceeds the 0xFFFF we need to prepend extended + // Zip64 End of Central Directory record and its locator to the old + // style ECD record + if (central_directory_count > 0xFFFF) { + // Zip64 END signature + header64[0] = (ushort)SWAP_BYTES(0x4B50); + header64[1] = (ushort)0x0606; + // Size of header (long) + header64[2] = (ushort)SWAP_BYTES(44);; + header64[3] = 0; + header64[4] = 0; + header64[5] = 0; + // Version produced and required (short) + header64[6] = (ushort)SWAP_BYTES(45); + header64[7] = (ushort)SWAP_BYTES(45); + // Current disk number (int) + header64[8] = 0; + header64[9] = 0; + // Central directory start disk (int) + header64[10] = 0; + header64[11] = 0; + // Count of records on disk (long) + header64[12] = (ushort)GET_INT_LO(central_directory_count); + header64[13] = (ushort)GET_INT_HI(central_directory_count); + header64[14] = 0; + header64[15] = 0; + // Count of records totally (long) + header64[16] = (ushort)GET_INT_LO(central_directory_count); + header64[17] = (ushort)GET_INT_HI(central_directory_count); + header64[18] = 0; + header64[19] = 0; + // Length of the central directory (long) + header64[20] = header[6]; + header64[21] = header[7]; + header64[22] = 0; + header64[23] = 0; + // Offset of central directory (long) + header64[24] = header[8]; + header64[25] = header[9]; + header64[26] = 0; + header64[27] = 0; + // Zip64 end of central directory locator + // Locator signature + header64[28] = (ushort)SWAP_BYTES(0x4B50); + header64[29] = (ushort)SWAP_BYTES(0x0706); + // Start disk number (int) + header64[30] = 0; + header64[31] = 0; + // Offset of zip64 END record (long) + header64[32] = (ushort)GET_INT_LO(output_file_offset); + header64[33] = (ushort)GET_INT_HI(output_file_offset); + header64[34] = 0; + header64[35] = 0; + // Total number of disks (int) + header64[36] = (ushort)SWAP_BYTES(1); + header64[37] = 0; + write_data(header64, (int)sizeof(header64)); + } + // Write the End of Central Directory structure. PRINTCR((2, "end-of-directory at %d\n", output_file_offset)); write_data(header, (int)sizeof(header)); @@ -286,6 +377,8 @@ void jar::addJarEntry(const char* fname, if (deflate) { write_data(deflated.b); + // Write deflated information in extra header + write_jar_extra(len, clen, crc); } else { write_data(head); write_data(tail); @@ -368,7 +461,7 @@ bool jar::deflate_bytes(bytes& head, bytes& tail) { // NOTE: the window size should always be -MAX_WBITS normally -15. // unzip/zipup.c and java/Deflater.c - int error = deflateInit2(&zs, Z_BEST_COMPRESSION, Z_DEFLATED, + int error = deflateInit2(&zs, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -MAX_WBITS, 8, Z_DEFAULT_STRATEGY); if (error != Z_OK) { switch (error) { @@ -414,7 +507,8 @@ bool jar::deflate_bytes(bytes& head, bytes& tail) { error = deflate(&zs, Z_FINISH); } if (error == Z_STREAM_END) { - if (len > (int)zs.total_out ) { + if ((int)zs.total_out > 0) { + // Even if compressed size is bigger than uncompressed, write it PRINTCR((2, "deflate compressed data %d -> %d\n", len, zs.total_out)); deflated.b.len = zs.total_out; deflateEnd(&zs); diff --git a/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h b/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h index d7c6b34ffd8..14ffc9d65bd 100644 --- a/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h +++ b/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, 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,7 +40,7 @@ struct jar { // Private members fillbytes central_directory; - ushort central_directory_count; + uint central_directory_count; uint output_file_offset; fillbytes deflated; // temporary buffer @@ -74,6 +74,7 @@ struct jar { int len, int clen, uLong crc); void write_jar_header(const char* fname, bool store, int modtime, int len, int clen, unsigned int crc); + void write_jar_extra(int len, int clen, unsigned int crc); void write_central_directory(); uLong dostime(int y, int n, int d, int h, int m, int s); uLong get_dostime(int modtime); diff --git a/jdk/test/tools/pack200/PackTestZip64.java b/jdk/test/tools/pack200/PackTestZip64.java new file mode 100644 index 00000000000..edfeb5a92d8 --- /dev/null +++ b/jdk/test/tools/pack200/PackTestZip64.java @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +import java.io.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Enumeration; +import java.util.List; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; +import java.util.jar.JarInputStream; +import java.util.jar.JarOutputStream; +import java.util.zip.ZipEntry; +/* + * @test + * @bug 8029646 + * @summary tests that native unpacker produces the same result as Java one + * @compile -XDignore.symbol.file Utils.java PackTestZip64.java + * @run main PackTestZip64 + * @author kizune + */ + +public class PackTestZip64 { + public static void main(String... args) throws Exception { + testPacking(); + Utils.cleanup(); + } + + // 1KB buffer is enough to copy jar content + private static final byte[] BUFFER = new byte[1024]; + + static void testPacking() throws IOException { + // make a copy of the test specimen to local directory + File testFile = new File("tools_java.jar"); + // Add a large number of small files to the golden jar + generateLargeJar(testFile, Utils.locateJar("golden.jar")); + + List cmdsList = new ArrayList<>(); + + // Repack file to get the Java-based result + cmdsList.add(Utils.getPack200Cmd()); + cmdsList.add("--repack"); + cmdsList.add(testFile.getName()); + Utils.runExec(cmdsList); + cmdsList.clear(); + + // Pack file with pack200 and unpack in with unpack200 + File packedFile = new File("tools.pack.gz"); + cmdsList.add(Utils.getPack200Cmd()); + cmdsList.add(packedFile.getName()); + cmdsList.add(testFile.getName()); + Utils.runExec(cmdsList); + cmdsList.clear(); + + File unpackedFile = new File("tools_native.jar"); + cmdsList.add(Utils.getUnpack200Cmd()); + cmdsList.add(packedFile.getName()); + cmdsList.add(unpackedFile.getName()); + Utils.runExec(cmdsList); + + // Compare files binary + compareTwoFiles(testFile, unpackedFile); + + // Cleaning up generated files + testFile.delete(); + packedFile.delete(); + unpackedFile.delete(); + } + + static void compareTwoFiles(File src, File dst) throws IOException { + if (!src.exists()) { + throw new IOException("File " + src.getName() + " does not exist!"); + } + + if(!dst.exists()) { + throw new IOException("File " + dst.getName() + " does not exist!"); + } + + BufferedInputStream srcis, dstis; + srcis = new BufferedInputStream(new FileInputStream(src)); + dstis = new BufferedInputStream(new FileInputStream(dst)); + + int s = 0, d, pos = 0; + while (s != -1) { // Checking of just one result for EOF is enough + s = srcis.read(); + d = dstis.read(); + + if (s != d) { + throw new IOException("Files are differ starting at position: " + + Integer.toHexString(pos)); + } + + pos++; + } + + srcis.close(); + dstis.close(); + } + + static void generateLargeJar(File result, File source) throws IOException { + if (result.exists()) { + result.delete(); + } + + try (JarOutputStream copyTo = new JarOutputStream(new FileOutputStream(result)); + JarFile srcJar = new JarFile(source)) { + + for (JarEntry je : Collections.list(srcJar.entries())) { + copyTo.putNextEntry(je); + if (!je.isDirectory()) { + copyStream(srcJar.getInputStream(je), copyTo); + } + copyTo.closeEntry(); + } + + int many = Short.MAX_VALUE * 2 + 2; + + for (int i = 0 ; i < many ; i++) { + JarEntry e = new JarEntry("F-" + i + ".txt"); + copyTo.putNextEntry(e); + } + copyTo.flush(); + copyTo.close(); + } + } + + static void copyStream(InputStream in, OutputStream out) throws IOException { + int bytesRead; + while ((bytesRead = in.read(BUFFER))!= -1) { + out.write(BUFFER, 0, bytesRead); + } + } +} From c329a619fd9b60fc8acf1c7c0f287621eb0b4b0f Mon Sep 17 00:00:00 2001 From: Volker Simonis Date: Fri, 24 Jan 2014 19:18:17 +0100 Subject: [PATCH 075/158] 8032678: [TESTBUG] sun/misc/Version/Version.java doesn't understand two-digit HotSpot minor version numbers Reviewed-by: kvn --- jdk/test/sun/misc/Version/Version.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/jdk/test/sun/misc/Version/Version.java b/jdk/test/sun/misc/Version/Version.java index 13e507540c1..85c8ce2a071 100644 --- a/jdk/test/sun/misc/Version/Version.java +++ b/jdk/test/sun/misc/Version/Version.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2014, 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 @@ -116,10 +116,16 @@ public class Version { } else if (Character.isDigit(cs.charAt(0)) && Character.isDigit(cs.charAt(1)) && cs.charAt(2) == '.' && Character.isDigit(cs.charAt(3))) { - // HSX has nn.n (major.minor) version + // HSX has nn.n[n] (major.minor) version major = Integer.valueOf(version.substring(0, 2)).intValue(); - minor = Character.digit(cs.charAt(3), 10); - cs = cs.subSequence(4, cs.length()); + if (Character.isDigit(cs.charAt(4))) { + minor = Integer.valueOf(version.substring(3, 5)).intValue(); + cs = cs.subSequence(5, cs.length()); + } + else { + minor = Character.digit(cs.charAt(3), 10); + cs = cs.subSequence(4, cs.length()); + } } if (cs.charAt(0) == '_' && cs.length() >= 3 && Character.isDigit(cs.charAt(1)) && From d1fc6d132c2582232ba355ee63fb1f4248307662 Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Fri, 24 Jan 2014 11:03:15 -0800 Subject: [PATCH 076/158] 8032616: Fix non-deprecation warnings in com.sun.beans.* Reviewed-by: alanb --- .../classes/com/sun/beans/TypeResolver.java | 8 ++++---- .../com/sun/beans/editors/EnumEditor.java | 17 ++++++++++------- .../com/sun/beans/finder/ConstructorFinder.java | 4 ++-- .../com/sun/beans/finder/InstanceFinder.java | 6 ++++-- .../sun/beans/finder/SignatureException.java | 4 +++- .../share/classes/com/sun/beans/util/Cache.java | 3 ++- 6 files changed, 25 insertions(+), 17 deletions(-) diff --git a/jdk/src/share/classes/com/sun/beans/TypeResolver.java b/jdk/src/share/classes/com/sun/beans/TypeResolver.java index e4cb0f3fb2e..1cb27bd9dde 100644 --- a/jdk/src/share/classes/com/sun/beans/TypeResolver.java +++ b/jdk/src/share/classes/com/sun/beans/TypeResolver.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -238,7 +238,7 @@ public final class TypeResolver { return (Class) pt.getRawType(); } if (type instanceof TypeVariable) { - TypeVariable tv = (TypeVariable)type; + TypeVariable tv = (TypeVariable)type; Type[] bounds = tv.getBounds(); return (0 < bounds.length) ? erase(bounds[0]) @@ -267,9 +267,9 @@ public final class TypeResolver { * * @see #erase(Type) */ - public static Class[] erase(Type[] types) { + public static Class[] erase(Type[] types) { int length = types.length; - Class[] classes = new Class[length]; + Class[] classes = new Class[length]; for (int i = 0; i < length; i++) { classes[i] = TypeResolver.erase(types[i]); } diff --git a/jdk/src/share/classes/com/sun/beans/editors/EnumEditor.java b/jdk/src/share/classes/com/sun/beans/editors/EnumEditor.java index 6275977d344..b7f5ada0d1f 100644 --- a/jdk/src/share/classes/com/sun/beans/editors/EnumEditor.java +++ b/jdk/src/share/classes/com/sun/beans/editors/EnumEditor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2006, 2014, 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 @@ -45,17 +45,18 @@ import java.util.List; public final class EnumEditor implements PropertyEditor { private final List listeners = new ArrayList(); - private final Class type; + @SuppressWarnings("rawtypes") + private final Class type; private final String[] tags; private Object value; - public EnumEditor( Class type ) { + public EnumEditor(Class type) { Object[] values = type.getEnumConstants(); if ( values == null ) { throw new IllegalArgumentException( "Unsupported " + type ); } - this.type = type; + this.type = type.asSubclass(java.lang.Enum.class); this.tags = new String[values.length]; for ( int i = 0; i < values.length; i++ ) { this.tags[i] = ( ( Enum )values[i] ).name(); @@ -98,9 +99,11 @@ public final class EnumEditor implements PropertyEditor { } public void setAsText( String text ) { - setValue( ( text != null ) - ? Enum.valueOf( this.type, text ) - : null ); + @SuppressWarnings("unchecked") + Object tmp = ( text != null ) + ? Enum.valueOf( (Class)this.type, text ) + : null; + setValue(tmp); } public String[] getTags() { diff --git a/jdk/src/share/classes/com/sun/beans/finder/ConstructorFinder.java b/jdk/src/share/classes/com/sun/beans/finder/ConstructorFinder.java index d21d1a48748..bc2e7529d4f 100644 --- a/jdk/src/share/classes/com/sun/beans/finder/ConstructorFinder.java +++ b/jdk/src/share/classes/com/sun/beans/finder/ConstructorFinder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2014, 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 @@ import static sun.reflect.misc.ReflectUtil.isPackageAccessible; public final class ConstructorFinder extends AbstractFinder> { private static final Cache> CACHE = new Cache>(SOFT, SOFT) { @Override - public Constructor create(Signature signature) { + public Constructor create(Signature signature) { try { ConstructorFinder finder = new ConstructorFinder(signature.getArgs()); return finder.find(signature.getType().getConstructors()); diff --git a/jdk/src/share/classes/com/sun/beans/finder/InstanceFinder.java b/jdk/src/share/classes/com/sun/beans/finder/InstanceFinder.java index 5842af2bdad..7a46ed70ff9 100644 --- a/jdk/src/share/classes/com/sun/beans/finder/InstanceFinder.java +++ b/jdk/src/share/classes/com/sun/beans/finder/InstanceFinder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2014, 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 @@ -93,7 +93,9 @@ class InstanceFinder { type = ClassFinder.findClass(name, type.getClassLoader()); } if (this.type.isAssignableFrom(type)) { - return (T) type.newInstance(); + @SuppressWarnings("unchecked") + T tmp = (T) type.newInstance(); + return tmp; } } catch (Exception exception) { diff --git a/jdk/src/share/classes/com/sun/beans/finder/SignatureException.java b/jdk/src/share/classes/com/sun/beans/finder/SignatureException.java index 07307d596b0..7e5a35d452d 100644 --- a/jdk/src/share/classes/com/sun/beans/finder/SignatureException.java +++ b/jdk/src/share/classes/com/sun/beans/finder/SignatureException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ package com.sun.beans.finder; final class SignatureException extends RuntimeException { + private static final long serialVersionUID = 4536098341586118473L; + SignatureException(Throwable cause) { super(cause); } diff --git a/jdk/src/share/classes/com/sun/beans/util/Cache.java b/jdk/src/share/classes/com/sun/beans/util/Cache.java index 751da65a4f6..4f3f75571b0 100644 --- a/jdk/src/share/classes/com/sun/beans/util/Cache.java +++ b/jdk/src/share/classes/com/sun/beans/util/Cache.java @@ -244,7 +244,7 @@ public abstract class Cache { * @param size requested capacity MUST be a power of two * @return a new array for the cache entries */ - @SuppressWarnings("unchecked") + @SuppressWarnings({"unchecked", "rawtypes"}) private CacheEntry[] newTable(int size) { return (CacheEntry[]) new CacheEntry[size]; } @@ -265,6 +265,7 @@ public abstract class Cache { synchronized (this.queue) { do { if (reference instanceof Ref) { + @SuppressWarnings("rawtypes") Ref ref = (Ref) reference; @SuppressWarnings("unchecked") CacheEntry owner = (CacheEntry) ref.getOwner(); From 49fdbfba20231eec8339aa79b053bcd15f77b865 Mon Sep 17 00:00:00 2001 From: Weijun Wang Date: Sat, 25 Jan 2014 18:16:33 +0800 Subject: [PATCH 077/158] 8031572: jarsigner -verify exits with 0 when a jar file is not properly signed Reviewed-by: mullan --- .../share/classes/java/util/jar/JarFile.java | 13 +- .../tools/jarsigner/EntriesOrder.java | 199 ++++++++++++++++++ 2 files changed, 207 insertions(+), 5 deletions(-) create mode 100644 jdk/test/sun/security/tools/jarsigner/EntriesOrder.java diff --git a/jdk/src/share/classes/java/util/jar/JarFile.java b/jdk/src/share/classes/java/util/jar/JarFile.java index 6e917e0ae26..946c4ae2bc2 100644 --- a/jdk/src/share/classes/java/util/jar/JarFile.java +++ b/jdk/src/share/classes/java/util/jar/JarFile.java @@ -40,6 +40,7 @@ import sun.misc.IOUtils; import sun.security.action.GetPropertyAction; import sun.security.util.ManifestEntryVerifier; import sun.misc.SharedSecrets; +import sun.security.util.SignatureFileVerifier; /** * The JarFile class is used to read the contents of a jar file @@ -364,11 +365,13 @@ class JarFile extends ZipFile { String[] names = getMetaInfEntryNames(); if (names != null) { for (String name : names) { - JarEntry e = getJarEntry(name); - if (e == null) { - throw new JarException("corrupted jar file"); - } - if (!e.isDirectory()) { + String uname = name.toUpperCase(Locale.ENGLISH); + if (MANIFEST_NAME.equals(uname) + || SignatureFileVerifier.isBlockOrSF(uname)) { + JarEntry e = getJarEntry(name); + if (e == null) { + throw new JarException("corrupted jar file"); + } if (mev == null) { mev = new ManifestEntryVerifier (getManifestFromReference()); diff --git a/jdk/test/sun/security/tools/jarsigner/EntriesOrder.java b/jdk/test/sun/security/tools/jarsigner/EntriesOrder.java new file mode 100644 index 00000000000..96c90e98e12 --- /dev/null +++ b/jdk/test/sun/security/tools/jarsigner/EntriesOrder.java @@ -0,0 +1,199 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8031572 + * @summary jarsigner -verify exits with 0 when a jar file is not properly signed + */ + +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.security.cert.Certificate; +import java.util.*; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; +import java.util.jar.JarInputStream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +public class EntriesOrder { + + public static void main(String[] args) throws Exception { + + String[] entries = { + "META-INF/", + "META-INF/MANIFEST.MF", + "META-INF/A.RSA", + "META-INF/A.SF", + "META-INF/inf", + "a"}; + + Map content = new HashMap<>(); + + // We will create a jar containing entries above. Try all permutations + // and confirm 1) When opened as a JarFile, we can always get 3 signed + // ones (MANIFEST, inf, a), and 2) When opened as a JarInputStream, + // when the order is correct (MANIFEST at beginning, followed by RSA/SF, + // directory ignored), we can get 2 signed ones (inf, a). + + // Prepares raw files + Files.write(Paths.get("a"), "a".getBytes()); + Files.createDirectory(Paths.get("META-INF/")); + Files.write(Paths.get("META-INF/inf"), "inf".getBytes()); + + // Pack, sign, and extract to get all files + sun.tools.jar.Main m = + new sun.tools.jar.Main(System.out, System.err, "jar"); + if (!m.run("cvf a.jar a META-INF/inf".split(" "))) { + throw new Exception("jar creation failed"); + } + sun.security.tools.keytool.Main.main( + ("-keystore jks -storepass changeit -keypass changeit -dname" + + " CN=A -alias a -genkeypair -keyalg rsa").split(" ")); + sun.security.tools.jarsigner.Main.main( + "-keystore jks -storepass changeit a.jar a".split(" ")); + m = new sun.tools.jar.Main(System.out, System.err, "jar"); + if (!m.run("xvf a.jar".split(" "))) { + throw new Exception("jar extraction failed"); + } + + // Data + for (String s: entries) { + if (!s.endsWith("/")) { + content.put(s, Files.readAllBytes(Paths.get(s))); + } + } + + // Test + for (List perm: Permute(entries)) { + + // Recreate a jar + try (ZipOutputStream zos + = new ZipOutputStream(new FileOutputStream("x.jar"))) { + for (String e: perm) { + zos.putNextEntry(new ZipEntry(e)); + if (Paths.get(e).toFile().isDirectory()) continue; + zos.write(content.get(e)); + } + } + + // Open with JarFile, number of signed entries should be 3. + int cc = 0; + try (JarFile jf = new JarFile("x.jar")) { + Enumeration jes = jf.entries(); + while (jes.hasMoreElements()) { + JarEntry je = jes.nextElement(); + sun.misc.IOUtils.readFully(jf.getInputStream(je), -1, true); + Certificate[] certs = je.getCertificates(); + if (certs != null && certs.length > 0) { + cc++; + } + } + } + + if (cc != 3) { + System.out.println(perm + " - jf - " + cc); + throw new Exception(); + } + + // Open with JarInputStream + int signed; + + perm.remove("META-INF/"); + if (perm.get(0).equals("META-INF/MANIFEST.MF") && + perm.get(1).contains("/A.") && + perm.get(2).contains("/A.")) { + signed = 2; // Good order + } else { + signed = 0; // Bad order. In this case, the number of signed + // entries is not documented. Just test impl. + } + + cc = 0; + try (JarInputStream jis + = new JarInputStream(new FileInputStream("x.jar"))) { + while (true) { + JarEntry je = jis.getNextJarEntry(); + if (je == null) break; + sun.misc.IOUtils.readFully(jis, -1, true); + Certificate[] certs = je.getCertificates(); + if (certs != null && certs.length > 0) { + cc++; + } + } + } + + if (cc != signed) { + System.out.println(perm + " - jis - " + cc + " " + signed); + throw new Exception(); + } + } + } + + // Helper method to return all permutations of an array. Each output can + // be altered without damaging the iteration process. + static Iterable> Permute(String[] entries) { + return new Iterable>() { + + int s = entries.length; + long c = factorial(s) - 1; // number of permutations + + private long factorial(int n) { + return (n == 1) ? 1: (n * factorial(n-1)); + } + + @Override + public Iterator> iterator() { + return new Iterator>() { + @Override + public boolean hasNext() { + return c >= 0; + } + + @Override + public List next() { + if (c < 0) return null; + List result = new ArrayList<>(s); + LinkedList source = new LinkedList<>( + Arrays.asList(entries)); + // Treat c as a integer with different radixes at + // different digits, i.e. at digit 0, radix is s; + // at digit 1, radix is s-1. Thus a s-digit number + // is able to represent s! different values. + long n = c; + for (int i=s; i>=1; i--) { + int x = (int)(n % i); + result.add(source.remove(x)); + n = n / i; + } + c--; + return result; + } + }; + } + }; + } +} From ebf3cad435e297bf8cbf79ff422f60c3a1bb7edd Mon Sep 17 00:00:00 2001 From: Dmitry Samersoff Date: Mon, 27 Jan 2014 13:46:54 +0400 Subject: [PATCH 078/158] 8032247: SA: Constantpool lookup for invokedynamic is not implemented Implement constant pool lookup for invokedynamic Reviewed-by: sla, sspitsyn --- .../share/classes/sun/jvm/hotspot/oops/ConstantPool.java | 4 ++-- .../sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java index 2b81bf09d50..a055fe1619c 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -152,7 +152,7 @@ public class ConstantPool extends Metadata implements ClassConstants { private long indexOffset(long index) { if (Assert.ASSERTS_ENABLED) { - Assert.that(index > 0 && index < getLength(), "invalid cp index " + index + " " + getLength()); + Assert.that(index >= 0 && index < getLength(), "invalid cp index " + index + " " + getLength()); } return (index * getElementSize()) + headerSize; } diff --git a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java index 40dc912fd8e..0c5202f9c5f 100644 --- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -98,11 +98,14 @@ public class ByteCodeRewriter break; default: throw new IllegalArgumentException(); } + if (cpCache == null) { return (short) cpCacheIndex; } else if (fmt.indexOf("JJJJ") >= 0) { - // change byte-ordering and go via secondary cache entry - throw new InternalError("unimplemented"); + // Invokedynamic require special handling + cpCacheIndex = ~cpCacheIndex; + cpCacheIndex = bytes.swapInt(cpCacheIndex); + return (short) cpCache.getEntryAt(cpCacheIndex).getConstantPoolIndex(); } else if (fmt.indexOf("JJ") >= 0) { // change byte-ordering and go via cache return (short) cpCache.getEntryAt((int) (0xFFFF & bytes.swapShort((short)cpCacheIndex))).getConstantPoolIndex(); From 4a7bc8eccde204d92e04b8a06df082e68c07b920 Mon Sep 17 00:00:00 2001 From: Stefan Sarne Date: Mon, 27 Jan 2014 10:57:52 +0100 Subject: [PATCH 079/158] 8032662: test/compiler/ciReplay/TestSA.sh should report ulimit issues Reviewed-by: kvn, iignatyev --- hotspot/test/compiler/ciReplay/common.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hotspot/test/compiler/ciReplay/common.sh b/hotspot/test/compiler/ciReplay/common.sh index bcfdad823df..e03acaa8b30 100644 --- a/hotspot/test/compiler/ciReplay/common.sh +++ b/hotspot/test/compiler/ciReplay/common.sh @@ -196,6 +196,11 @@ generate_replay() { then # enable core dump ulimit -c unlimited + new_ulimit=`ulimit -c` + if [ $new_ulimit != "unlimited" -a $new_ulimit != "-1" ] + then + test_fail 2 "CHECK :: ULIMIT" "Could not set 'ulimit -c unlimited'. 'ulimit -c' returns : $new_ulimit" + fi if [ $VM_OS = "solaris" ] then @@ -228,7 +233,10 @@ generate_replay() { core_locations=`grep -i core crash.out | grep "location:" | \ sed -e 's/.*location: //'` + echo CRASH OUTPUT: + cat crash.out rm crash.out + # processing core locations for *nix if [ $VM_OS != "windows" ] then From aab73f935623eb4fca22a2a306a1abdbba3d9f78 Mon Sep 17 00:00:00 2001 From: Dmitry Samersoff Date: Mon, 27 Jan 2014 15:11:56 +0400 Subject: [PATCH 080/158] 8024049: com/sun/jdi/ProcessAttachTest.sh shortens 7-digit pid to 6-digit Replace cut call to awk Reviewed-by: sla, olagneau --- jdk/test/com/sun/jdi/ProcessAttachTest.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdk/test/com/sun/jdi/ProcessAttachTest.sh b/jdk/test/com/sun/jdi/ProcessAttachTest.sh index 10b5d503154..76a531bad38 100644 --- a/jdk/test/com/sun/jdi/ProcessAttachTest.sh +++ b/jdk/test/com/sun/jdi/ProcessAttachTest.sh @@ -87,7 +87,7 @@ startDebuggee() # "java" process. if [ "$OS" = "Windows" ]; then sleep 2 - pid=`ps -o pid,ppid,comm|grep ${startpid}|grep "java"|cut -c1-6` + pid=`ps -o pid,ppid,comm | awk '/${startpid}.+java/{ print $1 }'` fi echo "Waiting for Debuggee to initialize..." From 2489c7b220acc12117a1799f1b0c2ccce014ca47 Mon Sep 17 00:00:00 2001 From: Dmitry Samersoff Date: Mon, 27 Jan 2014 17:13:16 +0400 Subject: [PATCH 081/158] 8002116: This JdbReadTwiceTest.sh gets an exit 1 Explicitly check readability of file in question Reviewed-by: sla, dholmes, olagneau --- jdk/test/com/sun/jdi/JdbReadTwiceTest.sh | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/jdk/test/com/sun/jdi/JdbReadTwiceTest.sh b/jdk/test/com/sun/jdi/JdbReadTwiceTest.sh index 58be020422b..6f3cb193743 100644 --- a/jdk/test/com/sun/jdi/JdbReadTwiceTest.sh +++ b/jdk/test/com/sun/jdi/JdbReadTwiceTest.sh @@ -213,10 +213,17 @@ if [ ! -r c:/ ] ; then # If the file exists, we try to read it. The # read will fail. mkFiles $HOME/jdb.ini - chmod a-r $HOME/jdb.ini - doit - failIfNot 1 "open: $HOME/jdb.ini" - clean + id > $HOME/jdb.ini + chmod a-r $HOME/jdb.ini + if grep -q "uid=" $HOME/jdb.ini ; then + echo "Unable to make file unreadable, so test will fail. chmod: $HOME/jdb.ini" + if grep -q "uid=0" $HOME/jdb.ini ; then + echo "The test is running as root. Fix infrastructure!" + fi + fi + doit + failIfNot 1 "open: $HOME/jdb.ini" + clean fi From 51efd8781242d6c27930d8d9f32b41fd53c6fe21 Mon Sep 17 00:00:00 2001 From: Paul Sandoz Date: Mon, 27 Jan 2014 14:29:37 +0100 Subject: [PATCH 082/158] 8032779: Update code in java.lang to use newer language features Reviewed-by: darcy, alanb --- jdk/src/share/classes/java/lang/Class.java | 32 ++++++++---------- .../share/classes/java/lang/ClassLoader.java | 33 +++++++++---------- .../java/lang/ConditionalSpecialCasing.java | 9 +++-- jdk/src/share/classes/java/lang/Package.java | 4 +-- .../classes/java/lang/SecurityManager.java | 12 +++---- .../share/classes/java/lang/StringCoding.java | 2 +- .../share/classes/java/lang/ThreadLocal.java | 6 ++-- .../share/classes/java/lang/Throwable.java | 3 +- .../java/lang/invoke/MethodHandleProxies.java | 2 +- .../java/lang/invoke/MutableCallSite.java | 4 +-- .../java/lang/management/MemoryUsage.java | 2 +- .../java/lang/reflect/AccessibleObject.java | 4 +-- .../classes/java/lang/reflect/Parameter.java | 8 ++--- .../classes/java/lang/reflect/Proxy.java | 7 ++-- 14 files changed, 56 insertions(+), 72 deletions(-) diff --git a/jdk/src/share/classes/java/lang/Class.java b/jdk/src/share/classes/java/lang/Class.java index ea47cca2fca..a8aee7ffe62 100644 --- a/jdk/src/share/classes/java/lang/Class.java +++ b/jdk/src/share/classes/java/lang/Class.java @@ -1488,10 +1488,9 @@ public final class Class implements java.io.Serializable, List> list = new ArrayList<>(); Class currentClass = Class.this; while (currentClass != null) { - Class[] members = currentClass.getDeclaredClasses(); - for (int i = 0; i < members.length; i++) { - if (Modifier.isPublic(members[i].getModifiers())) { - list.add(members[i]); + for (Class m : currentClass.getDeclaredClasses()) { + if (Modifier.isPublic(m.getModifiers())) { + list.add(m); } } currentClass = currentClass.getSuperclass(); @@ -2626,8 +2625,8 @@ public final class Class implements java.io.Serializable, } private static void addAll(Collection c, Field[] o) { - for (int i = 0; i < o.length; i++) { - c.add(o[i]); + for (Field f : o) { + c.add(f); } } @@ -2713,8 +2712,8 @@ public final class Class implements java.io.Serializable, } void addAll(Method[] ma) { - for (int i = 0; i < ma.length; i++) { - add(ma[i]); + for (Method m : ma) { + add(m); } } @@ -2819,9 +2818,8 @@ public final class Class implements java.io.Serializable, // out concrete implementations inherited from superclasses at // the end. MethodArray inheritedMethods = new MethodArray(); - Class[] interfaces = getInterfaces(); - for (int i = 0; i < interfaces.length; i++) { - inheritedMethods.addAllNonStatic(interfaces[i].privateGetPublicMethods()); + for (Class i : getInterfaces()) { + inheritedMethods.addAllNonStatic(i.privateGetPublicMethods()); } if (!isInterface()) { Class c = getSuperclass(); @@ -2864,9 +2862,9 @@ public final class Class implements java.io.Serializable, private static Field searchFields(Field[] fields, String name) { String internedName = name.intern(); - for (int i = 0; i < fields.length; i++) { - if (fields[i].getName() == internedName) { - return getReflectionFactory().copyField(fields[i]); + for (Field field : fields) { + if (field.getName() == internedName) { + return getReflectionFactory().copyField(field); } } return null; @@ -2887,8 +2885,7 @@ public final class Class implements java.io.Serializable, } // Direct superinterfaces, recursively Class[] interfaces = getInterfaces(); - for (int i = 0; i < interfaces.length; i++) { - Class c = interfaces[i]; + for (Class c : interfaces) { if ((res = c.getField0(name)) != null) { return res; } @@ -2911,8 +2908,7 @@ public final class Class implements java.io.Serializable, { Method res = null; String internedName = name.intern(); - for (int i = 0; i < methods.length; i++) { - Method m = methods[i]; + for (Method m : methods) { if (m.getName() == internedName && arrayContentsEq(parameterTypes, m.getParameterTypes()) && (res == null diff --git a/jdk/src/share/classes/java/lang/ClassLoader.java b/jdk/src/share/classes/java/lang/ClassLoader.java index 3905944fc37..078c1502176 100644 --- a/jdk/src/share/classes/java/lang/ClassLoader.java +++ b/jdk/src/share/classes/java/lang/ClassLoader.java @@ -199,8 +199,7 @@ public abstract class ClassLoader { // the set of parallel capable loader types private static final Set> loaderTypes = - Collections.newSetFromMap( - new WeakHashMap, Boolean>()); + Collections.newSetFromMap(new WeakHashMap<>()); static { synchronized (loaderTypes) { loaderTypes.add(ClassLoader.class); } } @@ -285,8 +284,7 @@ public abstract class ClassLoader { if (ParallelLoaders.isRegistered(this.getClass())) { parallelLockMap = new ConcurrentHashMap<>(); package2certs = new ConcurrentHashMap<>(); - domains = - Collections.synchronizedSet(new HashSet()); + domains = Collections.synchronizedSet(new HashSet<>()); assertionLock = new Object(); } else { // no finer-grained lock; lock on the classloader instance @@ -916,10 +914,10 @@ public abstract class ClassLoader { // go through and make sure all the certs in one array // are in the other and vice-versa. boolean match; - for (int i = 0; i < certs.length; i++) { + for (Certificate cert : certs) { match = false; - for (int j = 0; j < pcerts.length; j++) { - if (certs[i].equals(pcerts[j])) { + for (Certificate pcert : pcerts) { + if (cert.equals(pcert)) { match = true; break; } @@ -928,10 +926,10 @@ public abstract class ClassLoader { } // now do the same for pcerts - for (int i = 0; i < pcerts.length; i++) { + for (Certificate pcert : pcerts) { match = false; - for (int j = 0; j < certs.length; j++) { - if (pcerts[i].equals(certs[j])) { + for (Certificate cert : certs) { + if (pcert.equals(cert)) { match = true; break; } @@ -1648,10 +1646,10 @@ public abstract class ClassLoader { pkgs = Package.getSystemPackages(); } if (pkgs != null) { - for (int i = 0; i < pkgs.length; i++) { - String pkgName = pkgs[i].getName(); + for (Package pkg : pkgs) { + String pkgName = pkg.getName(); if (map.get(pkgName) == null) { - map.put(pkgName, pkgs[i]); + map.put(pkgName, pkg); } } } @@ -1830,8 +1828,8 @@ public abstract class ClassLoader { throw new UnsatisfiedLinkError("Can't load " + libfilename); } } - for (int i = 0 ; i < sys_paths.length ; i++) { - File libfile = new File(sys_paths[i], System.mapLibraryName(name)); + for (String sys_path : sys_paths) { + File libfile = new File(sys_path, System.mapLibraryName(name)); if (loadLibrary0(fromClass, libfile)) { return; } @@ -1841,9 +1839,8 @@ public abstract class ClassLoader { } } if (loader != null) { - for (int i = 0 ; i < usr_paths.length ; i++) { - File libfile = new File(usr_paths[i], - System.mapLibraryName(name)); + for (String usr_path : usr_paths) { + File libfile = new File(usr_path, System.mapLibraryName(name)); if (loadLibrary0(fromClass, libfile)) { return; } diff --git a/jdk/src/share/classes/java/lang/ConditionalSpecialCasing.java b/jdk/src/share/classes/java/lang/ConditionalSpecialCasing.java index d2ed9d91b50..bf5c7ae32fc 100644 --- a/jdk/src/share/classes/java/lang/ConditionalSpecialCasing.java +++ b/jdk/src/share/classes/java/lang/ConditionalSpecialCasing.java @@ -91,15 +91,14 @@ final class ConditionalSpecialCasing { static Hashtable> entryTable = new Hashtable<>(); static { // create hashtable from the entry - for (int i = 0; i < entry.length; i ++) { - Entry cur = entry[i]; - Integer cp = new Integer(cur.getCodePoint()); + for (Entry cur : entry) { + Integer cp = cur.getCodePoint(); HashSet set = entryTable.get(cp); if (set == null) { - set = new HashSet(); + set = new HashSet<>(); + entryTable.put(cp, set); } set.add(cur); - entryTable.put(cp, set); } } diff --git a/jdk/src/share/classes/java/lang/Package.java b/jdk/src/share/classes/java/lang/Package.java index e55d72bc038..f59176f558e 100644 --- a/jdk/src/share/classes/java/lang/Package.java +++ b/jdk/src/share/classes/java/lang/Package.java @@ -557,8 +557,8 @@ public class Package implements java.lang.reflect.AnnotatedElement { // First, update the system package map with new package names String[] names = getSystemPackages0(); synchronized (pkgs) { - for (int i = 0; i < names.length; i++) { - defineSystemPackage(names[i], getSystemPackage0(names[i])); + for (String name : names) { + defineSystemPackage(name, getSystemPackage0(name)); } return pkgs.values().toArray(new Package[pkgs.size()]); } diff --git a/jdk/src/share/classes/java/lang/SecurityManager.java b/jdk/src/share/classes/java/lang/SecurityManager.java index 3797b86a1c3..e0aeb32de17 100644 --- a/jdk/src/share/classes/java/lang/SecurityManager.java +++ b/jdk/src/share/classes/java/lang/SecurityManager.java @@ -1476,10 +1476,10 @@ class SecurityManager { /* * Traverse the list of packages, check for any matches. */ - for (int i = 0; i < pkgs.length; i++) { - if (pkg.startsWith(pkgs[i]) || pkgs[i].equals(pkg + ".")) { + for (String restrictedPkg : pkgs) { + if (pkg.startsWith(restrictedPkg) || restrictedPkg.equals(pkg + ".")) { checkPermission( - new RuntimePermission("accessClassInPackage."+pkg)); + new RuntimePermission("accessClassInPackage." + pkg)); break; // No need to continue; only need to check this once } } @@ -1544,10 +1544,10 @@ class SecurityManager { /* * Traverse the list of packages, check for any matches. */ - for (int i = 0; i < pkgs.length; i++) { - if (pkg.startsWith(pkgs[i]) || pkgs[i].equals(pkg + ".")) { + for (String restrictedPkg : pkgs) { + if (pkg.startsWith(restrictedPkg) || restrictedPkg.equals(pkg + ".")) { checkPermission( - new RuntimePermission("defineClassInPackage."+pkg)); + new RuntimePermission("defineClassInPackage." + pkg)); break; // No need to continue; only need to check this once } } diff --git a/jdk/src/share/classes/java/lang/StringCoding.java b/jdk/src/share/classes/java/lang/StringCoding.java index 7a67ce77ab0..24ed0c06bbe 100644 --- a/jdk/src/share/classes/java/lang/StringCoding.java +++ b/jdk/src/share/classes/java/lang/StringCoding.java @@ -67,7 +67,7 @@ class StringCoding { } private static void set(ThreadLocal> tl, T ob) { - tl.set(new SoftReference(ob)); + tl.set(new SoftReference<>(ob)); } // Trim the given byte array to the given length diff --git a/jdk/src/share/classes/java/lang/ThreadLocal.java b/jdk/src/share/classes/java/lang/ThreadLocal.java index 91d3df940d6..f9f78c4ecd9 100644 --- a/jdk/src/share/classes/java/lang/ThreadLocal.java +++ b/jdk/src/share/classes/java/lang/ThreadLocal.java @@ -382,8 +382,7 @@ public class ThreadLocal { setThreshold(len); table = new Entry[len]; - for (int j = 0; j < len; j++) { - Entry e = parentTable[j]; + for (Entry e : parentTable) { if (e != null) { @SuppressWarnings("unchecked") ThreadLocal key = (ThreadLocal) e.get(); @@ -685,8 +684,7 @@ public class ThreadLocal { Entry[] newTab = new Entry[newLen]; int count = 0; - for (int j = 0; j < oldLen; ++j) { - Entry e = oldTab[j]; + for (Entry e : oldTab) { if (e != null) { ThreadLocal k = e.get(); if (k == null) { diff --git a/jdk/src/share/classes/java/lang/Throwable.java b/jdk/src/share/classes/java/lang/Throwable.java index 4b9e2ad0415..abdb3fc5734 100644 --- a/jdk/src/share/classes/java/lang/Throwable.java +++ b/jdk/src/share/classes/java/lang/Throwable.java @@ -646,8 +646,7 @@ public class Throwable implements Serializable { private void printStackTrace(PrintStreamOrWriter s) { // Guard against malicious overrides of Throwable.equals by // using a Set with identity equality semantics. - Set dejaVu = - Collections.newSetFromMap(new IdentityHashMap()); + Set dejaVu = Collections.newSetFromMap(new IdentityHashMap<>()); dejaVu.add(this); synchronized (s.lock()) { diff --git a/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java b/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java index 13b1d21acd4..34ec2348099 100644 --- a/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java +++ b/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java @@ -303,7 +303,7 @@ public class MethodHandleProxies { private static Method[] getSingleNameMethods(Class intfc) { - ArrayList methods = new ArrayList(); + ArrayList methods = new ArrayList<>(); String uniqueName = null; for (Method m : intfc.getMethods()) { if (isObjectMethod(m)) continue; diff --git a/jdk/src/share/classes/java/lang/invoke/MutableCallSite.java b/jdk/src/share/classes/java/lang/invoke/MutableCallSite.java index 746c8d64e5c..68dabe82c33 100644 --- a/jdk/src/share/classes/java/lang/invoke/MutableCallSite.java +++ b/jdk/src/share/classes/java/lang/invoke/MutableCallSite.java @@ -274,8 +274,8 @@ public class MutableCallSite extends CallSite { public static void syncAll(MutableCallSite[] sites) { if (sites.length == 0) return; STORE_BARRIER.lazySet(0); - for (int i = 0; i < sites.length; i++) { - sites[i].getClass(); // trigger NPE on first null + for (MutableCallSite site : sites) { + site.getClass(); // trigger NPE on first null } // FIXME: NYI } diff --git a/jdk/src/share/classes/java/lang/management/MemoryUsage.java b/jdk/src/share/classes/java/lang/management/MemoryUsage.java index 6d11e323f6d..d20a5c78fa1 100644 --- a/jdk/src/share/classes/java/lang/management/MemoryUsage.java +++ b/jdk/src/share/classes/java/lang/management/MemoryUsage.java @@ -237,7 +237,7 @@ public class MemoryUsage { * Returns a descriptive representation of this memory usage. */ public String toString() { - StringBuffer buf = new StringBuffer(); + StringBuilder buf = new StringBuilder(); buf.append("init = " + init + "(" + (init >> 10) + "K) "); buf.append("used = " + used + "(" + (used >> 10) + "K) "); buf.append("committed = " + committed + "(" + diff --git a/jdk/src/share/classes/java/lang/reflect/AccessibleObject.java b/jdk/src/share/classes/java/lang/reflect/AccessibleObject.java index f98aed5db25..a5931e145a7 100644 --- a/jdk/src/share/classes/java/lang/reflect/AccessibleObject.java +++ b/jdk/src/share/classes/java/lang/reflect/AccessibleObject.java @@ -93,8 +93,8 @@ public class AccessibleObject implements AnnotatedElement { throws SecurityException { SecurityManager sm = System.getSecurityManager(); if (sm != null) sm.checkPermission(ACCESS_PERMISSION); - for (int i = 0; i < array.length; i++) { - setAccessible0(array[i], flag); + for (AccessibleObject ao : array) { + setAccessible0(ao, flag); } } diff --git a/jdk/src/share/classes/java/lang/reflect/Parameter.java b/jdk/src/share/classes/java/lang/reflect/Parameter.java index d8c992c15bd..f035b8e5e73 100644 --- a/jdk/src/share/classes/java/lang/reflect/Parameter.java +++ b/jdk/src/share/classes/java/lang/reflect/Parameter.java @@ -337,11 +337,9 @@ public final class Parameter implements AnnotatedElement { private synchronized Map, Annotation> declaredAnnotations() { if(null == declaredAnnotations) { - declaredAnnotations = - new HashMap, Annotation>(); - Annotation[] ann = getDeclaredAnnotations(); - for(int i = 0; i < ann.length; i++) - declaredAnnotations.put(ann[i].annotationType(), ann[i]); + declaredAnnotations = new HashMap<>(); + for (Annotation a : getDeclaredAnnotations()) + declaredAnnotations.put(a.annotationType(), a); } return declaredAnnotations; } diff --git a/jdk/src/share/classes/java/lang/reflect/Proxy.java b/jdk/src/share/classes/java/lang/reflect/Proxy.java index 20e62b642ca..766bdf30116 100644 --- a/jdk/src/share/classes/java/lang/reflect/Proxy.java +++ b/jdk/src/share/classes/java/lang/reflect/Proxy.java @@ -465,7 +465,7 @@ public class Proxy implements java.io.Serializable { Key2(Class intf1, Class intf2) { super(intf1); hash = 31 * intf1.hashCode() + intf2.hashCode(); - ref2 = new WeakReference>(intf2); + ref2 = new WeakReference<>(intf2); } @Override @@ -725,7 +725,6 @@ public class Proxy implements java.io.Serializable { } final Constructor cons = cl.getConstructor(constructorParams); - final InvocationHandler ih = h; if (!Modifier.isPublic(cl.getModifiers())) { AccessController.doPrivileged(new PrivilegedAction() { public Void run() { @@ -735,7 +734,7 @@ public class Proxy implements java.io.Serializable { }); } return cons.newInstance(new Object[]{h}); - } catch (IllegalAccessException|InstantiationException e) { + } catch (IllegalAccessException | InstantiationException | NoSuchMethodException e) { throw new InternalError(e.toString(), e); } catch (InvocationTargetException e) { Throwable t = e.getCause(); @@ -744,8 +743,6 @@ public class Proxy implements java.io.Serializable { } else { throw new InternalError(t.toString(), t); } - } catch (NoSuchMethodException e) { - throw new InternalError(e.toString(), e); } } From 1e80ad98e4e57b76998b89a84157361c51800df3 Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Mon, 27 Jan 2014 16:22:08 -0800 Subject: [PATCH 083/158] 6760902: inconsistent behavior in system class loader for classes and resources Reviewed-by: psandoz, ksrini --- jdk/src/share/classes/sun/misc/Launcher.java | 17 +-- .../ClassLoader/getResource/GetResource.java | 42 ++++++ .../ClassLoader/getResource/GetResource.sh | 124 ++++++++++++++++++ .../ClassLoader/getResource/test.properties | 1 + 4 files changed, 176 insertions(+), 8 deletions(-) create mode 100644 jdk/test/java/lang/ClassLoader/getResource/GetResource.java create mode 100644 jdk/test/java/lang/ClassLoader/getResource/GetResource.sh create mode 100644 jdk/test/java/lang/ClassLoader/getResource/test.properties diff --git a/jdk/src/share/classes/sun/misc/Launcher.java b/jdk/src/share/classes/sun/misc/Launcher.java index 71b3d3bbce8..89557f711b4 100644 --- a/jdk/src/share/classes/sun/misc/Launcher.java +++ b/jdk/src/share/classes/sun/misc/Launcher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -266,7 +266,7 @@ public class Launcher { throws IOException { final String s = System.getProperty("java.class.path"); - final File[] path = (s == null) ? new File[0] : getClassPath(s); + final File[] path = (s == null) ? new File[0] : getClassPath(s, true); // Note: on bugid 4256530 // Prior implementations of this doPrivileged() block supplied @@ -322,7 +322,7 @@ public class Launcher { * This class loader supports dynamic additions to the class path * at runtime. * - * @see java.lang.instrument.Instrumentation#appendToSystemClassPathSearch + * @see java.lang.instrument.Instrumentation#appendToSystemClassLoaderSearch */ private void appendToClassPathForInstrumentation(String path) { assert(Thread.holdsLock(this)); @@ -364,7 +364,8 @@ public class Launcher { urls = AccessController.doPrivileged( new PrivilegedAction() { public URL[] run() { - File[] classPath = getClassPath(bootClassPath); + // Skip empty path in boot class path i.e. not default to use CWD + File[] classPath = getClassPath(bootClassPath, false); int len = classPath.length; Set seenDirs = new HashSet(); for (int i = 0; i < len; i++) { @@ -405,7 +406,7 @@ public class Launcher { return urls; } - private static File[] getClassPath(String cp) { + private static File[] getClassPath(String cp, boolean defaultToCwd) { File[] path; if (cp != null) { int count = 0, maxCount = 1; @@ -419,9 +420,9 @@ public class Launcher { lastPos = pos = 0; // Now scan for each path component while ((pos = cp.indexOf(File.pathSeparator, lastPos)) != -1) { - if (pos - lastPos > 0) { + if (pos > lastPos) { path[count++] = new File(cp.substring(lastPos, pos)); - } else { + } else if (defaultToCwd) { // empty path component translates to "." path[count++] = new File("."); } @@ -430,7 +431,7 @@ public class Launcher { // Make sure we include the last path component if (lastPos < cp.length()) { path[count++] = new File(cp.substring(lastPos)); - } else { + } else if (defaultToCwd) { path[count++] = new File("."); } // Trim array to correct size diff --git a/jdk/test/java/lang/ClassLoader/getResource/GetResource.java b/jdk/test/java/lang/ClassLoader/getResource/GetResource.java new file mode 100644 index 00000000000..1eb62d0bf24 --- /dev/null +++ b/jdk/test/java/lang/ClassLoader/getResource/GetResource.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.net.URL; + +public class GetResource { + private static final String RESOURCE_NAME = "test.properties"; + public static void main(String[] args) { + String expect = args[0] + "/" + RESOURCE_NAME; + URL url = GetResource.class.getResource(RESOURCE_NAME); + System.out.println("getResource found: " + url); + if (!url.toString().endsWith(expect)) { + throw new RuntimeException(url + " != expected resource " + expect); + } + + url = ClassLoader.getSystemResource(RESOURCE_NAME); + System.out.println("getSystemResource found: " + url); + if (!url.toString().endsWith(expect)) { + throw new RuntimeException(url + " != expected resource " + expect); + } + } +} diff --git a/jdk/test/java/lang/ClassLoader/getResource/GetResource.sh b/jdk/test/java/lang/ClassLoader/getResource/GetResource.sh new file mode 100644 index 00000000000..2f178cd20b8 --- /dev/null +++ b/jdk/test/java/lang/ClassLoader/getResource/GetResource.sh @@ -0,0 +1,124 @@ +# +# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# @test +# @bug 6760902 +# @summary Empty path on bootclasspath is not default to current working +# directory for both class lookup and resource lookup whereas +# empty path on classpath is default to current working directory. +# +# @run shell GetResource.sh + +if [ "${TESTSRC}" = "" ] ; then + TESTSRC=`pwd` +fi +if [ "${TESTCLASSES}" = "" ] ; then + TESTCLASSES=`pwd` +fi + +if [ "${TESTJAVA}" = "" ] ; then + echo "TESTJAVA not set. Test cannot execute." + echo "FAILED!!!" + exit 1 +fi + +if [ "${COMPILEJAVA}" = "" ] ; then + COMPILEJAVA="${TESTJAVA}" +fi + +# set platform-specific variables +OS=`uname -s` +case "$OS" in + Windows*) + PS=";" + ;; + CYGWIN* ) + PS=";" + TESTCLASSES=`/usr/bin/cygpath -a -s -m ${TESTCLASSES}` + ;; + * ) + PS=":" + ;; +esac + +echo TESTSRC=${TESTSRC} +echo TESTCLASSES=${TESTCLASSES} +echo TESTJAVA=${TESTJAVA} +echo "" + +${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} \ + -d ${TESTCLASSES} \ + ${TESTSRC}/GetResource.java || exit 10 + +setup() { + dest=${TESTCLASSES}/$1 + rm -rf $dest + mkdir $dest + cp ${TESTSRC}/test.properties $dest + cp ${TESTCLASSES}/GetResource.class $dest +} + + +count=0 +runTest() { + expected=$1; + vmoption=$2; shift; shift + count=`expr $count+1` + echo "Test $count : $vmoption $@" + ${TESTJAVA}/bin/java ${TESTVMOPTS} "$vmoption" $@ \ + GetResource $expected || exit $count +} + +# run test +setup "a" +setup "b" + +cd ${TESTCLASSES} +DIR=`pwd` + +# Expected -Xbootclasspath +# Location or -classpath +runTest "a" "-Xbootclasspath/p:a" +runTest "a" "-Xbootclasspath/p:a${PS}b" +runTest "b" "-Xbootclasspath/p:b" +runTest "b" "-Xbootclasspath/p:b${PS}a" +runTest "a" -cp a +runTest "a" -cp "a${PS}b" +runTest "b" -cp b +runTest "b" -cp "b${PS}a" + +cd ${DIR}/a + +runTest "a" "-Xbootclasspath/p:." +runTest "b" "-Xbootclasspath/p:../b" + +# no -classpath +runTest "a" -cp "${PS}" +runTest "b" -cp "../b" + +# Test empty path in bootclasspath not default to current working directory +runTest "b" "-Xbootclasspath/p:${PS}../b" + +# Test empty path in classpath default to current working directory +runTest "a" -cp "${PS}../b" + diff --git a/jdk/test/java/lang/ClassLoader/getResource/test.properties b/jdk/test/java/lang/ClassLoader/getResource/test.properties new file mode 100644 index 00000000000..64ec12be2bd --- /dev/null +++ b/jdk/test/java/lang/ClassLoader/getResource/test.properties @@ -0,0 +1 @@ +# empty resource From 305d2f27f1b913728c5f955025c543d89afbdcdd Mon Sep 17 00:00:00 2001 From: Coleen Phillimore Date: Mon, 27 Jan 2014 23:12:13 -0500 Subject: [PATCH 084/158] 8028275: Metaspace ShrinkGrowTest causes fatal error if run with JFR Clean up initialization from Threads::create_vm() so that exceptions cause vm_exit_during_initialzation without an exception mark. Reviewed-by: dholmes, hseigel --- hotspot/src/share/vm/oops/constantPool.cpp | 3 +- hotspot/src/share/vm/prims/jni.cpp | 16 +- hotspot/src/share/vm/runtime/thread.cpp | 156 ++++++++---------- hotspot/src/share/vm/runtime/thread.hpp | 4 +- hotspot/src/share/vm/utilities/exceptions.hpp | 3 +- 5 files changed, 90 insertions(+), 92 deletions(-) diff --git a/hotspot/src/share/vm/oops/constantPool.cpp b/hotspot/src/share/vm/oops/constantPool.cpp index 16b53a69929..223fbc16935 100644 --- a/hotspot/src/share/vm/oops/constantPool.cpp +++ b/hotspot/src/share/vm/oops/constantPool.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -1874,7 +1874,6 @@ void ConstantPool::preload_and_initialize_all_classes(ConstantPool* obj, TRAPS) // Printing void ConstantPool::print_on(outputStream* st) const { - EXCEPTION_MARK; assert(is_constantPool(), "must be constantPool"); st->print_cr(internal_name()); if (flags() != 0) { diff --git a/hotspot/src/share/vm/prims/jni.cpp b/hotspot/src/share/vm/prims/jni.cpp index de176d9177b..4149510abc2 100644 --- a/hotspot/src/share/vm/prims/jni.cpp +++ b/hotspot/src/share/vm/prims/jni.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -5053,6 +5053,7 @@ _JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_CreateJavaVM(JavaVM **vm, void **penv, v result = Threads::create_vm((JavaVMInitArgs*) args, &can_try_again); if (result == JNI_OK) { JavaThread *thread = JavaThread::current(); + assert(!thread->has_pending_exception(), "should have returned not OK"); /* thread is thread_in_vm here */ *vm = (JavaVM *)(&main_vm); *(JNIEnv**)penv = thread->jni_environment(); @@ -5089,6 +5090,19 @@ _JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_CreateJavaVM(JavaVM **vm, void **penv, v // Since this is not a JVM_ENTRY we have to set the thread state manually before leaving. ThreadStateTransition::transition_and_fence(thread, _thread_in_vm, _thread_in_native); } else { + // If create_vm exits because of a pending exception, exit with that + // exception. In the future when we figure out how to reclaim memory, + // we may be able to exit with JNI_ERR and allow the calling application + // to continue. + if (Universe::is_fully_initialized()) { + // otherwise no pending exception possible - VM will already have aborted + JavaThread* THREAD = JavaThread::current(); + if (HAS_PENDING_EXCEPTION) { + HandleMark hm; + vm_exit_during_initialization(Handle(THREAD, PENDING_EXCEPTION)); + } + } + if (can_try_again) { // reset safe_to_recreate_vm to 1 so that retrial would be possible safe_to_recreate_vm = 1; diff --git a/hotspot/src/share/vm/runtime/thread.cpp b/hotspot/src/share/vm/runtime/thread.cpp index c5a1145a74a..7b4cf763501 100644 --- a/hotspot/src/share/vm/runtime/thread.cpp +++ b/hotspot/src/share/vm/runtime/thread.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -3301,6 +3301,58 @@ void Threads::threads_do(ThreadClosure* tc) { // If CompilerThreads ever become non-JavaThreads, add them here } + +void Threads::initialize_java_lang_classes(JavaThread* main_thread, TRAPS) { + TraceTime timer("Initialize java.lang classes", TraceStartupTime); + + if (EagerXrunInit && Arguments::init_libraries_at_startup()) { + create_vm_init_libraries(); + } + + initialize_class(vmSymbols::java_lang_String(), CHECK); + + // Initialize java_lang.System (needed before creating the thread) + initialize_class(vmSymbols::java_lang_System(), CHECK); + initialize_class(vmSymbols::java_lang_ThreadGroup(), CHECK); + Handle thread_group = create_initial_thread_group(CHECK); + Universe::set_main_thread_group(thread_group()); + initialize_class(vmSymbols::java_lang_Thread(), CHECK); + oop thread_object = create_initial_thread(thread_group, main_thread, CHECK); + main_thread->set_threadObj(thread_object); + // Set thread status to running since main thread has + // been started and running. + java_lang_Thread::set_thread_status(thread_object, + java_lang_Thread::RUNNABLE); + + // The VM creates & returns objects of this class. Make sure it's initialized. + initialize_class(vmSymbols::java_lang_Class(), CHECK); + + // The VM preresolves methods to these classes. Make sure that they get initialized + initialize_class(vmSymbols::java_lang_reflect_Method(), CHECK); + initialize_class(vmSymbols::java_lang_ref_Finalizer(), CHECK); + call_initializeSystemClass(CHECK); + + // get the Java runtime name after java.lang.System is initialized + JDK_Version::set_runtime_name(get_java_runtime_name(THREAD)); + JDK_Version::set_runtime_version(get_java_runtime_version(THREAD)); + + // an instance of OutOfMemory exception has been allocated earlier + initialize_class(vmSymbols::java_lang_OutOfMemoryError(), CHECK); + initialize_class(vmSymbols::java_lang_NullPointerException(), CHECK); + initialize_class(vmSymbols::java_lang_ClassCastException(), CHECK); + initialize_class(vmSymbols::java_lang_ArrayStoreException(), CHECK); + initialize_class(vmSymbols::java_lang_ArithmeticException(), CHECK); + initialize_class(vmSymbols::java_lang_StackOverflowError(), CHECK); + initialize_class(vmSymbols::java_lang_IllegalMonitorStateException(), CHECK); + initialize_class(vmSymbols::java_lang_IllegalArgumentException(), CHECK); +} + +void Threads::initialize_jsr292_core_classes(TRAPS) { + initialize_class(vmSymbols::java_lang_invoke_MethodHandle(), CHECK); + initialize_class(vmSymbols::java_lang_invoke_MemberName(), CHECK); + initialize_class(vmSymbols::java_lang_invoke_MethodHandleNatives(), CHECK); +} + jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { extern void JDK_Version_init(); @@ -3470,13 +3522,13 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { VMThread::execute(&verify_op); } - EXCEPTION_MARK; + Thread* THREAD = Thread::current(); // At this point, the Universe is initialized, but we have not executed // any byte code. Now is a good time (the only time) to dump out the // internal state of the JVM for sharing. if (DumpSharedSpaces) { - MetaspaceShared::preload_and_dump(CHECK_0); + MetaspaceShared::preload_and_dump(CHECK_JNI_ERR); ShouldNotReachHere(); } @@ -3487,74 +3539,12 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { // Notify JVMTI agents that VM has started (JNI is up) - nop if no agents. JvmtiExport::post_vm_start(); - { - TraceTime timer("Initialize java.lang classes", TraceStartupTime); + initialize_java_lang_classes(main_thread, CHECK_JNI_ERR); - if (EagerXrunInit && Arguments::init_libraries_at_startup()) { - create_vm_init_libraries(); - } - - initialize_class(vmSymbols::java_lang_String(), CHECK_0); - - // Initialize java_lang.System (needed before creating the thread) - initialize_class(vmSymbols::java_lang_System(), CHECK_0); - initialize_class(vmSymbols::java_lang_ThreadGroup(), CHECK_0); - Handle thread_group = create_initial_thread_group(CHECK_0); - Universe::set_main_thread_group(thread_group()); - initialize_class(vmSymbols::java_lang_Thread(), CHECK_0); - oop thread_object = create_initial_thread(thread_group, main_thread, CHECK_0); - main_thread->set_threadObj(thread_object); - // Set thread status to running since main thread has - // been started and running. - java_lang_Thread::set_thread_status(thread_object, - java_lang_Thread::RUNNABLE); - - // The VM creates & returns objects of this class. Make sure it's initialized. - initialize_class(vmSymbols::java_lang_Class(), CHECK_0); - - // The VM preresolves methods to these classes. Make sure that they get initialized - initialize_class(vmSymbols::java_lang_reflect_Method(), CHECK_0); - initialize_class(vmSymbols::java_lang_ref_Finalizer(), CHECK_0); - call_initializeSystemClass(CHECK_0); - - // get the Java runtime name after java.lang.System is initialized - JDK_Version::set_runtime_name(get_java_runtime_name(THREAD)); - JDK_Version::set_runtime_version(get_java_runtime_version(THREAD)); - - // an instance of OutOfMemory exception has been allocated earlier - initialize_class(vmSymbols::java_lang_OutOfMemoryError(), CHECK_0); - initialize_class(vmSymbols::java_lang_NullPointerException(), CHECK_0); - initialize_class(vmSymbols::java_lang_ClassCastException(), CHECK_0); - initialize_class(vmSymbols::java_lang_ArrayStoreException(), CHECK_0); - initialize_class(vmSymbols::java_lang_ArithmeticException(), CHECK_0); - initialize_class(vmSymbols::java_lang_StackOverflowError(), CHECK_0); - initialize_class(vmSymbols::java_lang_IllegalMonitorStateException(), CHECK_0); - initialize_class(vmSymbols::java_lang_IllegalArgumentException(), CHECK_0); - } - - // See : bugid 4211085. - // Background : the static initializer of java.lang.Compiler tries to read - // property"java.compiler" and read & write property "java.vm.info". - // When a security manager is installed through the command line - // option "-Djava.security.manager", the above properties are not - // readable and the static initializer for java.lang.Compiler fails - // resulting in a NoClassDefFoundError. This can happen in any - // user code which calls methods in java.lang.Compiler. - // Hack : the hack is to pre-load and initialize this class, so that only - // system domains are on the stack when the properties are read. - // Currently even the AWT code has calls to methods in java.lang.Compiler. - // On the classic VM, java.lang.Compiler is loaded very early to load the JIT. - // Future Fix : the best fix is to grant everyone permissions to read "java.compiler" and - // read and write"java.vm.info" in the default policy file. See bugid 4211383 - // Once that is done, we should remove this hack. - initialize_class(vmSymbols::java_lang_Compiler(), CHECK_0); - - // More hackery - the static initializer of java.lang.Compiler adds the string "nojit" to - // the java.vm.info property if no jit gets loaded through java.lang.Compiler (the hotspot - // compiler does not get loaded through java.lang.Compiler). "java -version" with the - // hotspot vm says "nojit" all the time which is confusing. So, we reset it here. - // This should also be taken out as soon as 4211383 gets fixed. - reset_vm_info_property(CHECK_0); + // We need this for ClassDataSharing - the initial vm.info property is set + // with the default value of CDS "sharing" which may be reset through + // command line options. + reset_vm_info_property(CHECK_JNI_ERR); quicken_jni_functions(); @@ -3583,10 +3573,7 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { // Note that we do not use CHECK_0 here since we are inside an EXCEPTION_MARK and // set_init_completed has just been called, causing exceptions not to be shortcut // anymore. We call vm_exit_during_initialization directly instead. - SystemDictionary::compute_java_system_loader(THREAD); - if (HAS_PENDING_EXCEPTION) { - vm_exit_during_initialization(Handle(THREAD, PENDING_EXCEPTION)); - } + SystemDictionary::compute_java_system_loader(CHECK_JNI_ERR); #if INCLUDE_ALL_GCS // Support for ConcurrentMarkSweep. This should be cleaned up @@ -3594,12 +3581,9 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { // once things are properly refactored. XXX YSR if (UseConcMarkSweepGC || UseG1GC) { if (UseConcMarkSweepGC) { - ConcurrentMarkSweepThread::makeSurrogateLockerThread(THREAD); + ConcurrentMarkSweepThread::makeSurrogateLockerThread(CHECK_JNI_ERR); } else { - ConcurrentMarkThread::makeSurrogateLockerThread(THREAD); - } - if (HAS_PENDING_EXCEPTION) { - vm_exit_during_initialization(Handle(THREAD, PENDING_EXCEPTION)); + ConcurrentMarkThread::makeSurrogateLockerThread(CHECK_JNI_ERR); } } #endif // INCLUDE_ALL_GCS @@ -3642,19 +3626,16 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { CompileBroker::compilation_init(); #endif + // Pre-initialize some JSR292 core classes to avoid deadlock during class loading. + // It is done after compilers are initialized, because otherwise compilations of + // signature polymorphic MH intrinsics can be missed + // (see SystemDictionary::find_method_handle_intrinsic). if (EnableInvokeDynamic) { - // Pre-initialize some JSR292 core classes to avoid deadlock during class loading. - // It is done after compilers are initialized, because otherwise compilations of - // signature polymorphic MH intrinsics can be missed - // (see SystemDictionary::find_method_handle_intrinsic). - initialize_class(vmSymbols::java_lang_invoke_MethodHandle(), CHECK_0); - initialize_class(vmSymbols::java_lang_invoke_MemberName(), CHECK_0); - initialize_class(vmSymbols::java_lang_invoke_MethodHandleNatives(), CHECK_0); + initialize_jsr292_core_classes(CHECK_JNI_ERR); } #if INCLUDE_MANAGEMENT Management::initialize(THREAD); -#endif // INCLUDE_MANAGEMENT if (HAS_PENDING_EXCEPTION) { // management agent fails to start possibly due to @@ -3662,6 +3643,7 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { // stack trace if appropriate. Simply exit VM. vm_exit(1); } +#endif // INCLUDE_MANAGEMENT if (Arguments::has_profile()) FlatProfiler::engage(main_thread, true); if (MemProfiling) MemProfiler::engage(); diff --git a/hotspot/src/share/vm/runtime/thread.hpp b/hotspot/src/share/vm/runtime/thread.hpp index d655df4f1da..4f5c98aebe1 100644 --- a/hotspot/src/share/vm/runtime/thread.hpp +++ b/hotspot/src/share/vm/runtime/thread.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -1891,6 +1891,8 @@ class Threads: AllStatic { static bool _vm_complete; #endif + static void initialize_java_lang_classes(JavaThread* main_thread, TRAPS); + static void initialize_jsr292_core_classes(TRAPS); public: // Thread management // force_daemon is a concession to JNI, where we may need to add a diff --git a/hotspot/src/share/vm/utilities/exceptions.hpp b/hotspot/src/share/vm/utilities/exceptions.hpp index beaabf8dcf7..504d4caf5e3 100644 --- a/hotspot/src/share/vm/utilities/exceptions.hpp +++ b/hotspot/src/share/vm/utilities/exceptions.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -200,6 +200,7 @@ class Exceptions { #define CHECK_NH CHECK_(Handle()) #define CHECK_NULL CHECK_(NULL) #define CHECK_false CHECK_(false) +#define CHECK_JNI_ERR CHECK_(JNI_ERR) #define CHECK_AND_CLEAR THREAD); if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_EXCEPTION; return; } (void)(0 #define CHECK_AND_CLEAR_(result) THREAD); if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_EXCEPTION; return result; } (void)(0 From 04c87a2bbe7c6c650c70998071988823e7311497 Mon Sep 17 00:00:00 2001 From: Dmitry Samersoff Date: Tue, 28 Jan 2014 12:50:53 +0400 Subject: [PATCH 085/158] 8022323: [JavaSecurityScanner] review package com.sun.management.* Native methods should be private Create java methods that calls native one Reviewed-by: sla, dholmes --- jdk/make/mapfiles/libmanagement/mapfile-vers | 22 +++---- .../sun/management/OperatingSystemImpl.java | 66 +++++++++++++++---- .../sun/management/LinuxOperatingSystem.c | 4 +- .../sun/management/MacosxOperatingSystem.c | 4 +- .../sun/management/OperatingSystemImpl.c | 18 ++--- .../sun/management/SolarisOperatingSystem.c | 4 +- .../sun/management/OperatingSystemImpl.java | 50 +++++++++++--- .../sun/management/OperatingSystemImpl.c | 16 ++--- 8 files changed, 128 insertions(+), 56 deletions(-) diff --git a/jdk/make/mapfiles/libmanagement/mapfile-vers b/jdk/make/mapfiles/libmanagement/mapfile-vers index 218dd3e3e71..a4cb163806a 100644 --- a/jdk/make/mapfiles/libmanagement/mapfile-vers +++ b/jdk/make/mapfiles/libmanagement/mapfile-vers @@ -27,17 +27,17 @@ SUNWprivate_1.1 { global: - Java_sun_management_OperatingSystemImpl_getCommittedVirtualMemorySize; - Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize; - Java_sun_management_OperatingSystemImpl_getFreeSwapSpaceSize; - Java_sun_management_OperatingSystemImpl_getMaxFileDescriptorCount; - Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount; - Java_sun_management_OperatingSystemImpl_getProcessCpuLoad; - Java_sun_management_OperatingSystemImpl_getProcessCpuTime; - Java_sun_management_OperatingSystemImpl_getSystemCpuLoad; - Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize; - Java_sun_management_OperatingSystemImpl_getTotalSwapSpaceSize; - Java_sun_management_OperatingSystemImpl_initialize; + Java_sun_management_OperatingSystemImpl_getCommittedVirtualMemorySize0; + Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize0; + Java_sun_management_OperatingSystemImpl_getFreeSwapSpaceSize0; + Java_sun_management_OperatingSystemImpl_getMaxFileDescriptorCount0; + Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount0; + Java_sun_management_OperatingSystemImpl_getProcessCpuLoad0; + Java_sun_management_OperatingSystemImpl_getProcessCpuTime0; + Java_sun_management_OperatingSystemImpl_getSystemCpuLoad0; + Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize0; + Java_sun_management_OperatingSystemImpl_getTotalSwapSpaceSize0; + Java_sun_management_OperatingSystemImpl_initialize0; Java_sun_management_ClassLoadingImpl_setVerboseClass; Java_sun_management_DiagnosticCommandImpl_executeDiagnosticCommand; Java_sun_management_DiagnosticCommandImpl_getDiagnosticCommands; diff --git a/jdk/src/solaris/classes/sun/management/OperatingSystemImpl.java b/jdk/src/solaris/classes/sun/management/OperatingSystemImpl.java index 666840f247d..5e2f8dca3b7 100644 --- a/jdk/src/solaris/classes/sun/management/OperatingSystemImpl.java +++ b/jdk/src/solaris/classes/sun/management/OperatingSystemImpl.java @@ -39,19 +39,61 @@ class OperatingSystemImpl extends BaseOperatingSystemImpl super(vm); } - public native long getCommittedVirtualMemorySize(); - public native long getTotalSwapSpaceSize(); - public native long getFreeSwapSpaceSize(); - public native long getProcessCpuTime(); - public native long getFreePhysicalMemorySize(); - public native long getTotalPhysicalMemorySize(); - public native long getOpenFileDescriptorCount(); - public native long getMaxFileDescriptorCount(); - public native double getSystemCpuLoad(); - public native double getProcessCpuLoad(); + public long getCommittedVirtualMemorySize() { + return getCommittedVirtualMemorySize0(); + } + + public long getTotalSwapSpaceSize() { + return getTotalSwapSpaceSize0(); + } + + public long getFreeSwapSpaceSize() { + return getFreeSwapSpaceSize0(); + } + + public long getProcessCpuTime() { + return getProcessCpuTime0(); + } + + public long getFreePhysicalMemorySize() { + return getFreePhysicalMemorySize0(); + } + + public long getTotalPhysicalMemorySize() { + return getTotalPhysicalMemorySize0(); + } + + public long getOpenFileDescriptorCount() { + return getOpenFileDescriptorCount0(); + } + + public long getMaxFileDescriptorCount() { + return getMaxFileDescriptorCount0(); + } + + public double getSystemCpuLoad() { + return getSystemCpuLoad0(); + } + + public double getProcessCpuLoad() { + return getProcessCpuLoad0(); + } + + /* native methods */ + private native long getCommittedVirtualMemorySize0(); + private native long getFreePhysicalMemorySize0(); + private native long getFreeSwapSpaceSize0(); + private native long getMaxFileDescriptorCount0(); + private native long getOpenFileDescriptorCount0(); + private native long getProcessCpuTime0(); + private native double getProcessCpuLoad0(); + private native double getSystemCpuLoad0(); + private native long getTotalPhysicalMemorySize0(); + private native long getTotalSwapSpaceSize0(); static { - initialize(); + initialize0(); } - private static native void initialize(); + + private static native void initialize0(); } diff --git a/jdk/src/solaris/native/sun/management/LinuxOperatingSystem.c b/jdk/src/solaris/native/sun/management/LinuxOperatingSystem.c index c8bd739ebef..1d6c89ed754 100644 --- a/jdk/src/solaris/native/sun/management/LinuxOperatingSystem.c +++ b/jdk/src/solaris/native/sun/management/LinuxOperatingSystem.c @@ -310,7 +310,7 @@ double get_process_load() { } JNIEXPORT jdouble JNICALL -Java_sun_management_OperatingSystemImpl_getSystemCpuLoad +Java_sun_management_OperatingSystemImpl_getSystemCpuLoad0 (JNIEnv *env, jobject dummy) { if(perfInit() == 0) { @@ -321,7 +321,7 @@ Java_sun_management_OperatingSystemImpl_getSystemCpuLoad } JNIEXPORT jdouble JNICALL -Java_sun_management_OperatingSystemImpl_getProcessCpuLoad +Java_sun_management_OperatingSystemImpl_getProcessCpuLoad0 (JNIEnv *env, jobject dummy) { if(perfInit() == 0) { diff --git a/jdk/src/solaris/native/sun/management/MacosxOperatingSystem.c b/jdk/src/solaris/native/sun/management/MacosxOperatingSystem.c index 8fb39786fe1..24c8669ba47 100644 --- a/jdk/src/solaris/native/sun/management/MacosxOperatingSystem.c +++ b/jdk/src/solaris/native/sun/management/MacosxOperatingSystem.c @@ -31,7 +31,7 @@ JNIEXPORT jdouble JNICALL -Java_sun_management_OperatingSystemImpl_getSystemCpuLoad +Java_sun_management_OperatingSystemImpl_getSystemCpuLoad0 (JNIEnv *env, jobject dummy) { // This code is influenced by the darwin top source @@ -83,7 +83,7 @@ Java_sun_management_OperatingSystemImpl_getSystemCpuLoad JNIEXPORT jdouble JNICALL -Java_sun_management_OperatingSystemImpl_getProcessCpuLoad +Java_sun_management_OperatingSystemImpl_getProcessCpuLoad0 (JNIEnv *env, jobject dummy) { // This code is influenced by the darwin top source diff --git a/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c b/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c index f1322ebd90b..8681a89c14a 100644 --- a/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c +++ b/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c @@ -175,14 +175,14 @@ static jlong get_total_or_available_swap_space_size(JNIEnv* env, jboolean availa } JNIEXPORT void JNICALL -Java_sun_management_OperatingSystemImpl_initialize +Java_sun_management_OperatingSystemImpl_initialize0 (JNIEnv *env, jclass cls) { page_size = sysconf(_SC_PAGESIZE); } JNIEXPORT jlong JNICALL -Java_sun_management_OperatingSystemImpl_getCommittedVirtualMemorySize +Java_sun_management_OperatingSystemImpl_getCommittedVirtualMemorySize0 (JNIEnv *env, jobject mbean) { #ifdef __solaris__ @@ -249,21 +249,21 @@ Java_sun_management_OperatingSystemImpl_getCommittedVirtualMemorySize } JNIEXPORT jlong JNICALL -Java_sun_management_OperatingSystemImpl_getTotalSwapSpaceSize +Java_sun_management_OperatingSystemImpl_getTotalSwapSpaceSize0 (JNIEnv *env, jobject mbean) { return get_total_or_available_swap_space_size(env, JNI_FALSE); } JNIEXPORT jlong JNICALL -Java_sun_management_OperatingSystemImpl_getFreeSwapSpaceSize +Java_sun_management_OperatingSystemImpl_getFreeSwapSpaceSize0 (JNIEnv *env, jobject mbean) { return get_total_or_available_swap_space_size(env, JNI_TRUE); } JNIEXPORT jlong JNICALL -Java_sun_management_OperatingSystemImpl_getProcessCpuTime +Java_sun_management_OperatingSystemImpl_getProcessCpuTime0 (JNIEnv *env, jobject mbean) { #ifdef __APPLE__ @@ -305,7 +305,7 @@ Java_sun_management_OperatingSystemImpl_getProcessCpuTime } JNIEXPORT jlong JNICALL -Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize +Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize0 (JNIEnv *env, jobject mbean) { #ifdef __APPLE__ @@ -333,7 +333,7 @@ Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize } JNIEXPORT jlong JNICALL -Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize +Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize0 (JNIEnv *env, jobject mbean) { #ifdef _ALLBSD_SOURCE @@ -358,7 +358,7 @@ Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize JNIEXPORT jlong JNICALL -Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount +Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount0 (JNIEnv *env, jobject mbean) { #ifdef __APPLE__ @@ -438,7 +438,7 @@ Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount } JNIEXPORT jlong JNICALL -Java_sun_management_OperatingSystemImpl_getMaxFileDescriptorCount +Java_sun_management_OperatingSystemImpl_getMaxFileDescriptorCount0 (JNIEnv *env, jobject mbean) { struct rlimit rlp; diff --git a/jdk/src/solaris/native/sun/management/SolarisOperatingSystem.c b/jdk/src/solaris/native/sun/management/SolarisOperatingSystem.c index a8136f1ac63..f89da99aa39 100644 --- a/jdk/src/solaris/native/sun/management/SolarisOperatingSystem.c +++ b/jdk/src/solaris/native/sun/management/SolarisOperatingSystem.c @@ -226,14 +226,14 @@ double get_process_load(void) { } JNIEXPORT jdouble JNICALL -Java_sun_management_OperatingSystemImpl_getSystemCpuLoad +Java_sun_management_OperatingSystemImpl_getSystemCpuLoad0 (JNIEnv *env, jobject dummy) { return get_cpu_load(-1); } JNIEXPORT jdouble JNICALL -Java_sun_management_OperatingSystemImpl_getProcessCpuLoad +Java_sun_management_OperatingSystemImpl_getProcessCpuLoad0 (JNIEnv *env, jobject dummy) { return get_process_load(); diff --git a/jdk/src/windows/classes/sun/management/OperatingSystemImpl.java b/jdk/src/windows/classes/sun/management/OperatingSystemImpl.java index ca766448177..f24ef7d9653 100644 --- a/jdk/src/windows/classes/sun/management/OperatingSystemImpl.java +++ b/jdk/src/windows/classes/sun/management/OperatingSystemImpl.java @@ -50,18 +50,48 @@ class OperatingSystemImpl extends BaseOperatingSystemImpl return getCommittedVirtualMemorySize0(); } } - private native long getCommittedVirtualMemorySize0(); - public native long getTotalSwapSpaceSize(); - public native long getFreeSwapSpaceSize(); - public native long getProcessCpuTime(); - public native long getFreePhysicalMemorySize(); - public native long getTotalPhysicalMemorySize(); - public native double getSystemCpuLoad(); - public native double getProcessCpuLoad(); + public long getTotalSwapSpaceSize() { + return getTotalSwapSpaceSize0(); + } + + public long getFreeSwapSpaceSize() { + return getFreeSwapSpaceSize0(); + } + + public long getProcessCpuTime() { + return getProcessCpuTime0(); + } + + public long getFreePhysicalMemorySize() { + return getFreePhysicalMemorySize0(); + } + + public long getTotalPhysicalMemorySize() { + return getTotalPhysicalMemorySize0(); + } + + public double getSystemCpuLoad() { + return getSystemCpuLoad0(); + } + + public double getProcessCpuLoad() { + return getProcessCpuLoad0(); + } + + /* native methods */ + private native long getCommittedVirtualMemorySize0(); + private native long getFreePhysicalMemorySize0(); + private native long getFreeSwapSpaceSize0(); + private native double getProcessCpuLoad0(); + private native long getProcessCpuTime0(); + private native double getSystemCpuLoad0(); + private native long getTotalPhysicalMemorySize0(); + private native long getTotalSwapSpaceSize0(); static { - initialize(); + initialize0(); } - private static native void initialize(); + + private static native void initialize0(); } diff --git a/jdk/src/windows/native/sun/management/OperatingSystemImpl.c b/jdk/src/windows/native/sun/management/OperatingSystemImpl.c index c684e2bd81c..260f9f695b4 100644 --- a/jdk/src/windows/native/sun/management/OperatingSystemImpl.c +++ b/jdk/src/windows/native/sun/management/OperatingSystemImpl.c @@ -77,7 +77,7 @@ static HANDLE main_process; int perfiInit(void); JNIEXPORT void JNICALL -Java_sun_management_OperatingSystemImpl_initialize +Java_sun_management_OperatingSystemImpl_initialize0 (JNIEnv *env, jclass cls) { main_process = GetCurrentProcess(); @@ -97,7 +97,7 @@ Java_sun_management_OperatingSystemImpl_getCommittedVirtualMemorySize0 } JNIEXPORT jlong JNICALL -Java_sun_management_OperatingSystemImpl_getTotalSwapSpaceSize +Java_sun_management_OperatingSystemImpl_getTotalSwapSpaceSize0 (JNIEnv *env, jobject mbean) { MEMORYSTATUSEX ms; @@ -107,7 +107,7 @@ Java_sun_management_OperatingSystemImpl_getTotalSwapSpaceSize } JNIEXPORT jlong JNICALL -Java_sun_management_OperatingSystemImpl_getFreeSwapSpaceSize +Java_sun_management_OperatingSystemImpl_getFreeSwapSpaceSize0 (JNIEnv *env, jobject mbean) { MEMORYSTATUSEX ms; @@ -117,7 +117,7 @@ Java_sun_management_OperatingSystemImpl_getFreeSwapSpaceSize } JNIEXPORT jlong JNICALL -Java_sun_management_OperatingSystemImpl_getProcessCpuTime +Java_sun_management_OperatingSystemImpl_getProcessCpuTime0 (JNIEnv *env, jobject mbean) { @@ -136,7 +136,7 @@ Java_sun_management_OperatingSystemImpl_getProcessCpuTime } JNIEXPORT jlong JNICALL -Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize +Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize0 (JNIEnv *env, jobject mbean) { MEMORYSTATUSEX ms; @@ -146,7 +146,7 @@ Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize } JNIEXPORT jlong JNICALL -Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize +Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize0 (JNIEnv *env, jobject mbean) { MEMORYSTATUSEX ms; @@ -927,14 +927,14 @@ perfInit(void) { } JNIEXPORT jdouble JNICALL -Java_sun_management_OperatingSystemImpl_getSystemCpuLoad +Java_sun_management_OperatingSystemImpl_getSystemCpuLoad0 (JNIEnv *env, jobject dummy) { return perfGetCPULoad(-1); } JNIEXPORT jdouble JNICALL -Java_sun_management_OperatingSystemImpl_getProcessCpuLoad +Java_sun_management_OperatingSystemImpl_getProcessCpuLoad0 (JNIEnv *env, jobject dummy) { return perfGetProcessLoad(); From e6d68e6d66e162a3a29d0f70f17cdf7c18fefbc1 Mon Sep 17 00:00:00 2001 From: Dmitry Samersoff Date: Tue, 28 Jan 2014 14:45:39 +0400 Subject: [PATCH 086/158] 7010732: SA_ALTROOT only works if running the SA tools from their build directory Fixed SA packaging scripts Reviewed-by: sla, kevinw --- hotspot/agent/make/mkinstall | 2 ++ hotspot/agent/make/saenv.sh | 19 ++++++++++--------- hotspot/agent/make/saenv64.sh | 21 ++++++++++++--------- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/hotspot/agent/make/mkinstall b/hotspot/agent/make/mkinstall index a9940005317..4277e54f1f6 100644 --- a/hotspot/agent/make/mkinstall +++ b/hotspot/agent/make/mkinstall @@ -27,7 +27,9 @@ jar -cvf $SA_NAME/sa.jar -C ../build/classes . cp ../src/os/solaris/proc/amd64/libsaproc.so $SA_NAME/solaris/amd64 cp ../src/os/solaris/proc/sparc/libsaproc.so $SA_NAME/solaris/sparc +cp ../src/os/solaris/proc/sparc/libsaproc_audit.so $SA_NAME/solaris/sparc cp ../src/os/solaris/proc/sparcv9/libsaproc.so $SA_NAME/solaris/sparcv9 +cp ../src/os/solaris/proc/sparcv9/libsaproc_audit.so $SA_NAME/solaris/sparcv9 cp ../src/os/solaris/proc/i386/libsaproc.so $SA_NAME/solaris/i386 cp ../src/os/linux/i386/libsaproc.so $SA_NAME/linux/i386 cp ../src/os/linux/ia64/libsaproc.so $SA_NAME/linux/ia64 diff --git a/hotspot/agent/make/saenv.sh b/hotspot/agent/make/saenv.sh index ab9a0a431c4..15fb0aca2b0 100644 --- a/hotspot/agent/make/saenv.sh +++ b/hotspot/agent/make/saenv.sh @@ -48,16 +48,17 @@ if [ "$OS" = "Linux" ]; then CPU=i386 fi else - # configure audit helper library if SA_ALTROOT is set - if [ -n "$SA_ALTROOT" ]; then - LD_AUDIT_32=$STARTDIR/../src/os/solaris/proc/`uname -p`/libsaproc_audit.so - export LD_AUDIT_32 - if [ ! -f $LD_AUDIT_32 ]; then - echo "SA_ALTROOT is set and can't find libsaproc_audit.so." - echo "Make sure to build it with 'make natives'." - exit 1 - fi + # configure audit helper library for solaris + LD_AUDIT_32=$STARTDIR/../src/os/solaris/proc/`uname -p`/libsaproc_audit.so + if [ ! -f $LD_AUDIT_32 ]; then + LD_AUDIT_32=$STARTDIR/solaris/`uname -p`/libsaproc_audit.so + fi + if [ ! -f $LD_AUDIT_32 ]; then + echo "Can't find libsaproc_audit.so." + echo "Make sure to build it with 'make natives'." + exit 1 fi + export LD_AUDIT_32 SA_LIBPATH=$STARTDIR/../src/os/solaris/proc/`uname -p`:$STARTDIR/solaris/`uname -p` OPTIONS="-Dsa.library.path=$SA_LIBPATH -Dsun.jvm.hotspot.debugger.useProcDebugger" CPU=sparc diff --git a/hotspot/agent/make/saenv64.sh b/hotspot/agent/make/saenv64.sh index c00dc0d17c0..a68d34c99a2 100644 --- a/hotspot/agent/make/saenv64.sh +++ b/hotspot/agent/make/saenv64.sh @@ -43,16 +43,19 @@ else fi fi -# configure audit helper library if SA_ALTROOT is set -if [ -n "$SA_ALTROOT" ]; then - LD_AUDIT_64=$STARTDIR/../src/os/solaris/proc/$CPU/libsaproc_audit.so - export LD_AUDIT_64 - if [ ! -f $LD_AUDIT_64 ]; then - echo "SA_ALTROOT is set and can't find libsaproc_audit.so." - echo "Make sure to build it with 'make natives'." - exit 1 - fi +# configure audit helper library +LD_AUDIT_64=$STARTDIR/../src/os/solaris/proc/$CPU/libsaproc_audit.so +if [ ! -f $LD_AUDIT_64 ]; then + LD_AUDIT_64=$STARTDIR/solaris/$CPU/libsaproc_audit.so fi + +if [ ! -f $LD_AUDIT_64 ]; then + echo "Can't find libsaproc_audit.so." + echo "Make sure to build it with 'make natives'." + exit 1 +fi + +export LD_AUDIT_64 SA_LIBPATH=$STARTDIR/../src/os/solaris/proc/$CPU:$STARTDIR/solaris/$CPU OPTIONS="-Dsa.library.path=$SA_LIBPATH -Dsun.jvm.hotspot.debugger.useProcDebugger" From 4d64b2ea8d2a81c7bbf40d95ad6a4fb7866857ef Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Tue, 28 Jan 2014 14:47:22 +0100 Subject: [PATCH 087/158] 8022411: Allow overriding of CXX and CC with absolute path Reviewed-by: erikj, tbell --- common/autoconf/generated-configure.sh | 398 +++++++++++++++++-------- common/autoconf/toolchain.m4 | 72 +++-- 2 files changed, 312 insertions(+), 158 deletions(-) diff --git a/common/autoconf/generated-configure.sh b/common/autoconf/generated-configure.sh index 43e26631193..cd5661ebeca 100644 --- a/common/autoconf/generated-configure.sh +++ b/common/autoconf/generated-configure.sh @@ -747,8 +747,8 @@ CXXFLAGS CXX ac_ct_PROPER_COMPILER_CXX PROPER_COMPILER_CXX -POTENTIAL_CXX TOOLS_DIR_CXX +POTENTIAL_CXX OBJEXT EXEEXT ac_ct_CC @@ -758,8 +758,8 @@ CFLAGS CC ac_ct_PROPER_COMPILER_CC PROPER_COMPILER_CC -POTENTIAL_CC TOOLS_DIR_CC +POTENTIAL_CC BUILD_LD BUILD_CXX BUILD_CC @@ -3865,7 +3865,7 @@ fi #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1389815815 +DATE_WHEN_GENERATED=1390907294 ############################################################################### # @@ -7868,7 +7868,7 @@ $as_echo "$with_jvm_variants" >&6; } fi # Replace the commas with AND for use in the build directory name. - ANDED_JVM_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/^,//' -e 's/,$//' -e 's/,/AND/'` + ANDED_JVM_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/^,//' -e 's/,$//' -e 's/,/AND/g'` COUNT_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,/1/' -e 's/client,/1/' -e 's/minimal1,/1/' -e 's/kernel,/1/' -e 's/zero,/1/' -e 's/zeroshark,/1/'` if test "x$COUNT_VARIANTS" != "x,1"; then BUILDING_MULTIPLE_JVM_VARIANTS=yes @@ -19073,9 +19073,7 @@ $as_echo "$as_me: Downloading build dependency devkit from $with_builddeps_serve # On Solaris, cc is preferred to gcc. # Elsewhere, gcc is preferred to cc. - if test "x$CC" != x; then - COMPILER_CHECK_LIST="$CC" - elif test "x$OPENJDK_TARGET_OS" = "xwindows"; then + if test "x$OPENJDK_TARGET_OS" = "xwindows"; then COMPILER_CHECK_LIST="cl" elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then COMPILER_CHECK_LIST="cc gcc" @@ -19085,66 +19083,16 @@ $as_echo "$as_me: Downloading build dependency devkit from $with_builddeps_serve COMPILER_NAME=C + SEARCH_LIST="$COMPILER_CHECK_LIST" - CC= - # If TOOLS_DIR is set, check for all compiler names in there first - # before checking the rest of the PATH. - if test -n "$TOOLS_DIR"; then - PATH_save="$PATH" - PATH="$TOOLS_DIR" - for ac_prog in $COMPILER_CHECK_LIST -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_TOOLS_DIR_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $TOOLS_DIR_CC in - [\\/]* | ?:[\\/]*) - ac_cv_path_TOOLS_DIR_CC="$TOOLS_DIR_CC" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_TOOLS_DIR_CC="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS + if test "x$CC" != x; then + # User has supplied compiler name already, always let that override. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied compiler CC=$CC" >&5 +$as_echo "$as_me: Will use user supplied compiler CC=$CC" >&6;} + if test "x`basename $CC`" = "x$CC"; then + # A command without a complete path is provided, search $PATH. - ;; -esac -fi -TOOLS_DIR_CC=$ac_cv_path_TOOLS_DIR_CC -if test -n "$TOOLS_DIR_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TOOLS_DIR_CC" >&5 -$as_echo "$TOOLS_DIR_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$TOOLS_DIR_CC" && break -done - - CC=$TOOLS_DIR_CC - PATH="$PATH_save" - fi - - # AC_PATH_PROGS can't be run multiple times with the same variable, - # so create a new name for this run. - if test "x$CC" = x; then - for ac_prog in $COMPILER_CHECK_LIST + for ac_prog in $CC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -19189,10 +19137,126 @@ fi test -n "$POTENTIAL_CC" && break done - CC=$POTENTIAL_CC + if test "x$POTENTIAL_CC" != x; then + CC=$POTENTIAL_CC + else + as_fn_error $? "User supplied compiler CC=$CC could not be found" "$LINENO" 5 + fi + else + # Otherwise it might already be a complete path + if test ! -x "$CC"; then + as_fn_error $? "User supplied compiler CC=$CC does not exist" "$LINENO" 5 + fi + fi + else + # No user supplied value. Locate compiler ourselves + CC= + # If TOOLS_DIR is set, check for all compiler names in there first + # before checking the rest of the PATH. + if test -n "$TOOLS_DIR"; then + PATH_save="$PATH" + PATH="$TOOLS_DIR" + for ac_prog in $SEARCH_LIST +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TOOLS_DIR_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TOOLS_DIR_CC in + [\\/]* | ?:[\\/]*) + ac_cv_path_TOOLS_DIR_CC="$TOOLS_DIR_CC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TOOLS_DIR_CC="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 fi +done + done +IFS=$as_save_IFS - if test "x$CC" = x; then + ;; +esac +fi +TOOLS_DIR_CC=$ac_cv_path_TOOLS_DIR_CC +if test -n "$TOOLS_DIR_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TOOLS_DIR_CC" >&5 +$as_echo "$TOOLS_DIR_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$TOOLS_DIR_CC" && break +done + + CC=$TOOLS_DIR_CC + PATH="$PATH_save" + fi + + # AC_PATH_PROGS can't be run multiple times with the same variable, + # so create a new name for this run. + if test "x$CC" = x; then + for ac_prog in $SEARCH_LIST +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_POTENTIAL_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $POTENTIAL_CC in + [\\/]* | ?:[\\/]*) + ac_cv_path_POTENTIAL_CC="$POTENTIAL_CC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_POTENTIAL_CC="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +POTENTIAL_CC=$ac_cv_path_POTENTIAL_CC +if test -n "$POTENTIAL_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $POTENTIAL_CC" >&5 +$as_echo "$POTENTIAL_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$POTENTIAL_CC" && break +done + + CC=$POTENTIAL_CC + fi + + if test "x$CC" = x; then # Print a helpful message on how to acquire the necessary build dependency. # devkit is the help tag: freetype, cups, pulse, alsa etc @@ -19225,9 +19289,12 @@ done fi fi - as_fn_error $? "Could not find a $COMPILER_NAME compiler. $HELP_MSG" "$LINENO" 5 + as_fn_error $? "Could not find a $COMPILER_NAME compiler. $HELP_MSG" "$LINENO" 5 + fi fi + # Now we have a compiler binary in CC. Make sure it's okay. + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then # First separate the path from the arguments. This will split at the first @@ -20652,9 +20719,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ### Locate C++ compiler (CXX) - if test "x$CXX" != x; then - COMPILER_CHECK_LIST="$CXX" - elif test "x$OPENJDK_TARGET_OS" = "xwindows"; then + if test "x$OPENJDK_TARGET_OS" = "xwindows"; then COMPILER_CHECK_LIST="cl" elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then COMPILER_CHECK_LIST="CC g++" @@ -20664,66 +20729,16 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu COMPILER_NAME=C++ + SEARCH_LIST="$COMPILER_CHECK_LIST" - CXX= - # If TOOLS_DIR is set, check for all compiler names in there first - # before checking the rest of the PATH. - if test -n "$TOOLS_DIR"; then - PATH_save="$PATH" - PATH="$TOOLS_DIR" - for ac_prog in $COMPILER_CHECK_LIST -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_TOOLS_DIR_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $TOOLS_DIR_CXX in - [\\/]* | ?:[\\/]*) - ac_cv_path_TOOLS_DIR_CXX="$TOOLS_DIR_CXX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_TOOLS_DIR_CXX="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS + if test "x$CXX" != x; then + # User has supplied compiler name already, always let that override. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied compiler CXX=$CXX" >&5 +$as_echo "$as_me: Will use user supplied compiler CXX=$CXX" >&6;} + if test "x`basename $CXX`" = "x$CXX"; then + # A command without a complete path is provided, search $PATH. - ;; -esac -fi -TOOLS_DIR_CXX=$ac_cv_path_TOOLS_DIR_CXX -if test -n "$TOOLS_DIR_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TOOLS_DIR_CXX" >&5 -$as_echo "$TOOLS_DIR_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$TOOLS_DIR_CXX" && break -done - - CXX=$TOOLS_DIR_CXX - PATH="$PATH_save" - fi - - # AC_PATH_PROGS can't be run multiple times with the same variable, - # so create a new name for this run. - if test "x$CXX" = x; then - for ac_prog in $COMPILER_CHECK_LIST + for ac_prog in $CXX do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -20768,10 +20783,126 @@ fi test -n "$POTENTIAL_CXX" && break done - CXX=$POTENTIAL_CXX + if test "x$POTENTIAL_CXX" != x; then + CXX=$POTENTIAL_CXX + else + as_fn_error $? "User supplied compiler CXX=$CXX could not be found" "$LINENO" 5 + fi + else + # Otherwise it might already be a complete path + if test ! -x "$CXX"; then + as_fn_error $? "User supplied compiler CXX=$CXX does not exist" "$LINENO" 5 + fi + fi + else + # No user supplied value. Locate compiler ourselves + CXX= + # If TOOLS_DIR is set, check for all compiler names in there first + # before checking the rest of the PATH. + if test -n "$TOOLS_DIR"; then + PATH_save="$PATH" + PATH="$TOOLS_DIR" + for ac_prog in $SEARCH_LIST +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TOOLS_DIR_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TOOLS_DIR_CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_TOOLS_DIR_CXX="$TOOLS_DIR_CXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TOOLS_DIR_CXX="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 fi +done + done +IFS=$as_save_IFS - if test "x$CXX" = x; then + ;; +esac +fi +TOOLS_DIR_CXX=$ac_cv_path_TOOLS_DIR_CXX +if test -n "$TOOLS_DIR_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TOOLS_DIR_CXX" >&5 +$as_echo "$TOOLS_DIR_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$TOOLS_DIR_CXX" && break +done + + CXX=$TOOLS_DIR_CXX + PATH="$PATH_save" + fi + + # AC_PATH_PROGS can't be run multiple times with the same variable, + # so create a new name for this run. + if test "x$CXX" = x; then + for ac_prog in $SEARCH_LIST +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_POTENTIAL_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $POTENTIAL_CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_POTENTIAL_CXX="$POTENTIAL_CXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_POTENTIAL_CXX="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +POTENTIAL_CXX=$ac_cv_path_POTENTIAL_CXX +if test -n "$POTENTIAL_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $POTENTIAL_CXX" >&5 +$as_echo "$POTENTIAL_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$POTENTIAL_CXX" && break +done + + CXX=$POTENTIAL_CXX + fi + + if test "x$CXX" = x; then # Print a helpful message on how to acquire the necessary build dependency. # devkit is the help tag: freetype, cups, pulse, alsa etc @@ -20804,9 +20935,12 @@ done fi fi - as_fn_error $? "Could not find a $COMPILER_NAME compiler. $HELP_MSG" "$LINENO" 5 + as_fn_error $? "Could not find a $COMPILER_NAME compiler. $HELP_MSG" "$LINENO" 5 + fi fi + # Now we have a compiler binary in CXX. Make sure it's okay. + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then # First separate the path from the arguments. This will split at the first diff --git a/common/autoconf/toolchain.m4 b/common/autoconf/toolchain.m4 index 84793969b92..3bd9e909152 100644 --- a/common/autoconf/toolchain.m4 +++ b/common/autoconf/toolchain.m4 @@ -113,29 +113,53 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_SYSROOT_AND_OUT_OPTIONS], AC_DEFUN([TOOLCHAIN_FIND_COMPILER], [ COMPILER_NAME=$2 + SEARCH_LIST="$3" - $1= - # If TOOLS_DIR is set, check for all compiler names in there first - # before checking the rest of the PATH. - if test -n "$TOOLS_DIR"; then - PATH_save="$PATH" - PATH="$TOOLS_DIR" - AC_PATH_PROGS(TOOLS_DIR_$1, $3) - $1=$TOOLS_DIR_$1 - PATH="$PATH_save" + if test "x[$]$1" != x; then + # User has supplied compiler name already, always let that override. + AC_MSG_NOTICE([Will use user supplied compiler $1=[$]$1]) + if test "x`basename [$]$1`" = "x[$]$1"; then + # A command without a complete path is provided, search $PATH. + + AC_PATH_PROGS(POTENTIAL_$1, [$]$1) + if test "x$POTENTIAL_$1" != x; then + $1=$POTENTIAL_$1 + else + AC_MSG_ERROR([User supplied compiler $1=[$]$1 could not be found]) + fi + else + # Otherwise it might already be a complete path + if test ! -x "[$]$1"; then + AC_MSG_ERROR([User supplied compiler $1=[$]$1 does not exist]) + fi + fi + else + # No user supplied value. Locate compiler ourselves + $1= + # If TOOLS_DIR is set, check for all compiler names in there first + # before checking the rest of the PATH. + if test -n "$TOOLS_DIR"; then + PATH_save="$PATH" + PATH="$TOOLS_DIR" + AC_PATH_PROGS(TOOLS_DIR_$1, $SEARCH_LIST) + $1=$TOOLS_DIR_$1 + PATH="$PATH_save" + fi + + # AC_PATH_PROGS can't be run multiple times with the same variable, + # so create a new name for this run. + if test "x[$]$1" = x; then + AC_PATH_PROGS(POTENTIAL_$1, $SEARCH_LIST) + $1=$POTENTIAL_$1 + fi + + if test "x[$]$1" = x; then + HELP_MSG_MISSING_DEPENDENCY([devkit]) + AC_MSG_ERROR([Could not find a $COMPILER_NAME compiler. $HELP_MSG]) + fi fi - # AC_PATH_PROGS can't be run multiple times with the same variable, - # so create a new name for this run. - if test "x[$]$1" = x; then - AC_PATH_PROGS(POTENTIAL_$1, $3) - $1=$POTENTIAL_$1 - fi - - if test "x[$]$1" = x; then - HELP_MSG_MISSING_DEPENDENCY([devkit]) - AC_MSG_ERROR([Could not find a $COMPILER_NAME compiler. $HELP_MSG]) - fi + # Now we have a compiler binary in $1. Make sure it's okay. BASIC_FIXUP_EXECUTABLE($1) AC_MSG_CHECKING([resolved symbolic links for $1]) TEST_COMPILER="[$]$1" @@ -248,9 +272,7 @@ AC_DEFUN([TOOLCHAIN_SETUP_PATHS], # On Solaris, cc is preferred to gcc. # Elsewhere, gcc is preferred to cc. - if test "x$CC" != x; then - COMPILER_CHECK_LIST="$CC" - elif test "x$OPENJDK_TARGET_OS" = "xwindows"; then + if test "x$OPENJDK_TARGET_OS" = "xwindows"; then COMPILER_CHECK_LIST="cl" elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then COMPILER_CHECK_LIST="cc gcc" @@ -264,9 +286,7 @@ AC_DEFUN([TOOLCHAIN_SETUP_PATHS], ### Locate C++ compiler (CXX) - if test "x$CXX" != x; then - COMPILER_CHECK_LIST="$CXX" - elif test "x$OPENJDK_TARGET_OS" = "xwindows"; then + if test "x$OPENJDK_TARGET_OS" = "xwindows"; then COMPILER_CHECK_LIST="cl" elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then COMPILER_CHECK_LIST="CC g++" From 673e8b47c0e524ddd0a14ea5dd0a1d38fd4ca132 Mon Sep 17 00:00:00 2001 From: Zhengyu Gu Date: Tue, 28 Jan 2014 08:55:00 -0500 Subject: [PATCH 088/158] 8032827: NMT: missing virtual memory tagging in os::workaround_expand_exec_shield_cs_limit() Fixed missing virtual memory type tagging in os::workaround_expand_exec_shield_cs_limit() function Reviewed-by: hseigel, coleenp --- hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp index 195982529ef..a7fa497c871 100644 --- a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp +++ b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp @@ -49,6 +49,7 @@ #include "runtime/stubRoutines.hpp" #include "runtime/thread.inline.hpp" #include "runtime/timer.hpp" +#include "services/memTracker.hpp" #include "utilities/events.hpp" #include "utilities/vmError.hpp" @@ -906,6 +907,9 @@ void os::workaround_expand_exec_shield_cs_limit() { if ( (codebuf == NULL) || (!os::commit_memory(codebuf, page_size, true)) ) { return; // No matter, we tried, best effort. } + + MemTracker::record_virtual_memory_type((address)codebuf, mtInternal); + if (PrintMiscellaneous && (Verbose || WizardMode)) { tty->print_cr("[CS limit NX emulation work-around, exec code at: %p]", codebuf); } From ad66e1ea2c330597cb292c90623d01407174c929 Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Tue, 28 Jan 2014 09:42:05 -0800 Subject: [PATCH 089/158] 8032733: Fix cast lint warnings in client libraries 8032734: Add cast lint warning to build of jdk repository Reviewed-by: alanb, bae, tbell, wetmore --- jdk/make/Setup.gmk | 2 +- .../classes/apple/security/KeychainStore.java | 10 ++--- .../macosx/classes/sun/font/CFontManager.java | 6 +-- .../macosx/classes/sun/java2d/CRenderer.java | 4 +- .../classes/sun/lwawt/macosx/CPrinterJob.java | 4 +- jdk/src/share/classes/com/oracle/net/Sdp.java | 4 +- .../imageio/plugins/bmp/BMPImageReader.java | 11 ++--- .../imageio/plugins/bmp/BMPImageWriter.java | 4 +- .../sun/imageio/plugins/common/ImageUtil.java | 16 +++---- .../plugins/common/LZWStringTable.java | 4 +- .../imageio/plugins/gif/GIFImageMetadata.java | 4 +- .../plugins/jpeg/DHTMarkerSegment.java | 6 +-- .../plugins/jpeg/DQTMarkerSegment.java | 4 +- .../plugins/jpeg/JFIFMarkerSegment.java | 4 +- .../imageio/plugins/jpeg/JPEGImageWriter.java | 4 +- .../imageio/plugins/jpeg/JPEGMetadata.java | 8 ++-- .../imageio/plugins/jpeg/MarkerSegment.java | 4 +- .../plugins/jpeg/SOFMarkerSegment.java | 4 +- .../plugins/jpeg/SOSMarkerSegment.java | 5 +-- .../sun/imageio/plugins/png/PNGMetadata.java | 35 +++++++-------- .../com/sun/java/browser/dom/DOMService.java | 2 +- .../MBeanServerFileAccessController.java | 4 +- .../sun/media/sound/AbstractMidiDevice.java | 8 ++-- .../com/sun/media/sound/AiffFileReader.java | 4 +- .../com/sun/media/sound/AiffFileWriter.java | 8 ++-- .../com/sun/media/sound/AlawCodec.java | 10 ++--- .../com/sun/media/sound/AuFileWriter.java | 8 ++-- .../com/sun/media/sound/DLSSoundbank.java | 4 +- .../sun/media/sound/DirectAudioDevice.java | 6 +-- .../com/sun/media/sound/PortMixer.java | 4 +- .../sun/media/sound/RealTimeSequencer.java | 4 +- .../com/sun/media/sound/SF2Soundbank.java | 8 ++-- .../com/sun/media/sound/SoftInstrument.java | 4 +- .../media/sound/StandardMidiFileWriter.java | 4 +- .../classes/com/sun/media/sound/Toolkit.java | 4 +- .../com/sun/media/sound/UlawCodec.java | 8 ++-- .../com/sun/media/sound/WaveFileWriter.java | 10 ++--- .../expr/ExpressionParserTokenManager.java | 4 +- .../share/classes/java/awt/AWTKeyStroke.java | 12 ++--- .../share/classes/java/awt/BasicStroke.java | 6 +-- .../share/classes/java/awt/CardLayout.java | 16 +++---- .../java/awt/DefaultKeyboardFocusManager.java | 6 +-- .../java/awt/GradientPaintContext.java | 6 +-- .../java/awt/KeyboardFocusManager.java | 8 ++-- .../awt/MultipleGradientPaintContext.java | 6 +-- .../java/awt/ScrollPaneAdjustable.java | 7 ++- .../classes/java/awt/SequencedEvent.java | 6 +-- .../share/classes/java/awt/SystemTray.java | 4 +- .../java/awt/datatransfer/DataFlavor.java | 5 +-- .../awt/datatransfer/StringSelection.java | 4 +- .../java/awt/image/ComponentColorModel.java | 6 +-- .../java/awt/image/ComponentSampleModel.java | 12 ++--- .../classes/java/awt/image/DataBuffer.java | 6 +-- .../java/awt/image/DataBufferByte.java | 8 ++-- .../java/awt/image/DataBufferDouble.java | 8 ++-- .../java/awt/image/DataBufferFloat.java | 8 ++-- .../classes/java/awt/image/DataBufferInt.java | 10 ++--- .../java/awt/image/DataBufferShort.java | 8 ++-- .../java/awt/image/DataBufferUShort.java | 12 ++--- .../java/awt/image/IndexColorModel.java | 4 +- .../image/MultiPixelPackedSampleModel.java | 4 +- .../java/awt/image/PackedColorModel.java | 4 +- .../classes/java/awt/image/RescaleOp.java | 6 +-- .../image/SinglePixelPackedSampleModel.java | 10 ++--- .../accessibility/AccessibleRelationSet.java | 12 +++-- .../accessibility/AccessibleStateSet.java | 9 ++-- .../share/classes/javax/imageio/IIOParam.java | 6 +-- .../share/classes/javax/imageio/ImageIO.java | 4 +- .../classes/javax/imageio/ImageReadParam.java | 6 +-- .../classes/javax/imageio/ImageReader.java | 44 +++++++++---------- .../javax/imageio/ImageTypeSpecifier.java | 16 +++---- .../javax/imageio/ImageWriteParam.java | 4 +- .../classes/javax/imageio/ImageWriter.java | 24 +++++----- .../javax/imageio/metadata/IIOMetadata.java | 10 ++--- .../metadata/IIOMetadataFormatImpl.java | 6 +-- .../plugins/jpeg/JPEGImageReadParam.java | 14 +++--- .../plugins/jpeg/JPEGImageWriteParam.java | 18 ++++---- .../javax/imageio/spi/ImageReaderSpi.java | 8 ++-- .../imageio/spi/ImageReaderWriterSpi.java | 26 +++++------ .../javax/imageio/spi/ImageWriterSpi.java | 8 ++-- .../management/remote/JMXServiceURL.java | 4 +- .../share/classes/javax/print/DocFlavor.java | 4 +- .../print/attribute/HashAttributeSet.java | 4 +- .../print/attribute/standard/Compression.java | 4 +- .../print/attribute/standard/Finishings.java | 4 +- .../print/attribute/standard/JobSheets.java | 4 +- .../attribute/standard/JobStateReason.java | 4 +- .../attribute/standard/JobStateReasons.java | 4 +- .../print/attribute/standard/MediaName.java | 4 +- .../attribute/standard/MediaSizeName.java | 4 +- .../print/attribute/standard/MediaTray.java | 4 +- .../standard/MultipleDocumentHandling.java | 4 +- .../standard/PDLOverrideSupported.java | 4 +- .../attribute/standard/PrintQuality.java | 4 +- .../standard/PrinterStateReason.java | 4 +- .../javax/sound/midi/MidiFileFormat.java | 4 +- .../classes/javax/sound/midi/MidiSystem.java | 4 +- .../classes/javax/sound/midi/Sequence.java | 6 +-- .../javax/sound/sampled/AudioFileFormat.java | 4 +- .../javax/sound/sampled/AudioFormat.java | 4 +- .../javax/sound/sampled/AudioSystem.java | 5 +-- .../javax/swing/MenuSelectionManager.java | 8 ++-- .../jcp/xml/dsig/internal/dom/DOMPGPData.java | 10 ++--- .../xml/dsig/internal/dom/DOMReference.java | 6 +-- .../dsig/internal/dom/DOMXMLSignature.java | 2 +- .../sun/applet/AppletMessageHandler.java | 12 ++--- .../share/classes/sun/applet/AppletPanel.java | 6 +-- .../share/classes/sun/applet/AppletProps.java | 8 ++-- jdk/src/share/classes/sun/applet/Main.java | 2 +- .../share/classes/sun/audio/AudioStream.java | 4 +- .../classes/sun/awt/FontConfiguration.java | 10 ++--- .../share/classes/sun/awt/FontDescriptor.java | 4 +- jdk/src/share/classes/sun/awt/IconInfo.java | 4 +- .../share/classes/sun/awt/PlatformFont.java | 4 +- .../datatransfer/ClipboardTransferable.java | 2 +- .../sun/awt/image/ByteBandedRaster.java | 4 +- .../sun/awt/image/ByteComponentRaster.java | 4 +- .../sun/awt/image/ByteInterleavedRaster.java | 4 +- .../sun/awt/image/IntegerComponentRaster.java | 4 +- .../awt/image/IntegerInterleavedRaster.java | 4 +- .../sun/awt/image/ShortBandedRaster.java | 4 +- .../sun/awt/image/ShortComponentRaster.java | 8 ++-- .../sun/awt/image/ShortInterleavedRaster.java | 8 ++-- .../sun/awt/image/VSyncedBSManager.java | 4 +- .../share/classes/sun/font/CompositeFont.java | 4 +- .../share/classes/sun/font/Decoration.java | 4 +- .../sun/font/ExtendedTextSourceLabel.java | 2 +- .../classes/sun/font/FileFontStrike.java | 6 +-- .../classes/sun/font/FontLineMetrics.java | 2 +- .../classes/sun/font/StandardGlyphVector.java | 10 ++--- .../share/classes/sun/font/StrikeCache.java | 2 +- .../classes/sun/font/SunFontManager.java | 16 +++---- .../share/classes/sun/font/TrueTypeFont.java | 6 +-- jdk/src/share/classes/sun/font/Underline.java | 4 +- .../share/classes/sun/java2d/Disposer.java | 4 +- .../sun/java2d/SunGraphicsEnvironment.java | 4 +- .../classes/sun/java2d/cmm/CMSManager.java | 4 +- .../classes/sun/java2d/loops/ProcessPath.java | 6 +-- .../sun/java2d/opengl/OGLSurfaceData.java | 10 ++--- .../sun/java2d/opengl/OGLUtilities.java | 6 +-- .../java2d/pisces/PiscesRenderingEngine.java | 4 +- .../perfdata/monitor/PerfDataBufferImpl.java | 4 +- .../share/classes/sun/print/PSPrinterJob.java | 4 +- .../classes/sun/print/RasterPrinterJob.java | 25 ++++------- .../classes/sun/tools/javac/SourceClass.java | 4 +- .../sun/tools/jconsole/ProxyClient.java | 6 +-- .../classes/sun/tools/jconsole/ThreadTab.java | 4 +- .../jconsole/inspector/XOpenTypeViewer.java | 4 +- .../jconsole/inspector/XPlottingViewer.java | 4 +- .../sun/tools/tree/ConvertExpression.java | 4 +- .../solaris/classes/sun/awt/UNIXToolkit.java | 4 +- .../classes/sun/awt/X11/InfoWindow.java | 4 +- .../sun/awt/X11/MotifDnDConstants.java | 6 +-- .../awt/X11/MotifDnDDragSourceProtocol.java | 4 +- .../awt/X11/MotifDnDDropTargetProtocol.java | 10 ++--- .../classes/sun/awt/X11/XAWTFormatter.java | 4 +- .../solaris/classes/sun/awt/X11/XAtom.java | 4 +- .../classes/sun/awt/X11/XBaseMenuWindow.java | 4 +- .../classes/sun/awt/X11/XBaseWindow.java | 6 +-- .../classes/sun/awt/X11/XComponentPeer.java | 2 +- .../classes/sun/awt/X11/XContentWindow.java | 4 +- .../classes/sun/awt/X11/XDecoratedPeer.java | 20 ++++----- .../sun/awt/X11/XDnDDragSourceProtocol.java | 10 ++--- .../sun/awt/X11/XDnDDropTargetProtocol.java | 8 ++-- .../sun/awt/X11/XDragSourceContextPeer.java | 6 +-- .../awt/X11/XDropTargetEventProcessor.java | 8 ++-- .../sun/awt/X11/XDropTargetRegistry.java | 14 +++--- .../classes/sun/awt/X11/XEmbedHelper.java | 4 +- .../sun/awt/X11/XEmbedServerTester.java | 2 +- .../classes/sun/awt/X11/XFileDialogPeer.java | 4 +- .../sun/awt/X11/XGlobalCursorManager.java | 6 +-- .../classes/sun/awt/X11/XIconWindow.java | 8 ++-- .../classes/sun/awt/X11/XInputMethod.java | 4 +- .../classes/sun/awt/X11/XMenuBarPeer.java | 4 +- .../classes/sun/awt/X11/XMenuWindow.java | 4 +- .../classes/sun/awt/X11/XNETProtocol.java | 6 +-- .../classes/sun/awt/X11/XPopupMenuPeer.java | 4 +- .../classes/sun/awt/X11/XTextAreaPeer.java | 4 +- .../solaris/classes/sun/awt/X11/XToolkit.java | 6 +-- .../solaris/classes/sun/awt/X11/XWindow.java | 22 +++++----- .../classes/sun/awt/X11/XWindowPeer.java | 16 +++---- .../classes/sun/awt/X11FontManager.java | 2 +- .../sun/awt/X11GraphicsEnvironment.java | 4 +- .../solaris/classes/sun/font/NativeFont.java | 3 +- .../classes/sun/font/XRGlyphCacheEntry.java | 6 +-- .../sun/java2d/x11/X11SurfaceData.java | 9 ++-- .../classes/sun/java2d/xr/XRDrawLine.java | 12 +++-- .../classes/sun/java2d/xr/XRPMBlitLoops.java | 3 +- .../classes/sun/java2d/xr/XRPaints.java | 6 +-- .../classes/sun/print/AttributeClass.java | 4 +- .../classes/sun/print/CUPSPrinter.java | 6 +-- .../classes/sun/print/IPPPrintService.java | 10 ++--- .../classes/sun/print/UnixPrintJob.java | 5 +-- .../sun/print/UnixPrintServiceLookup.java | 14 +++--- .../classes/sun/awt/Win32GraphicsDevice.java | 4 +- .../sun/awt/windows/WPathGraphics.java | 4 +- .../classes/sun/io/Win32ErrorMode.java | 4 +- .../classes/sun/print/Win32PrintJob.java | 13 +++--- .../classes/sun/print/Win32PrintService.java | 5 +-- 199 files changed, 654 insertions(+), 692 deletions(-) diff --git a/jdk/make/Setup.gmk b/jdk/make/Setup.gmk index 7095e6926f4..fd42e76142a 100644 --- a/jdk/make/Setup.gmk +++ b/jdk/make/Setup.gmk @@ -27,7 +27,7 @@ DISABLE_WARNINGS := -Xlint:all,-deprecation,-unchecked,-rawtypes,-cast,-serial,- # To build with all warnings enabled, do the following: # make JAVAC_WARNINGS="-Xlint:all -Xmaxwarns 10000" -JAVAC_WARNINGS := -Xlint:-unchecked,-deprecation,-overrides,auxiliaryclass,classfile,dep-ann,divzero,empty,overloads,static,try,varargs -Werror +JAVAC_WARNINGS := -Xlint:-unchecked,-deprecation,-overrides,auxiliaryclass,cast,classfile,dep-ann,divzero,empty,overloads,static,try,varargs -Werror # Any java code executed during a JDK build to build other parts of the JDK must be # executed by the bootstrap JDK (probably with -Xbootclasspath/p: ) and for this diff --git a/jdk/src/macosx/classes/apple/security/KeychainStore.java b/jdk/src/macosx/classes/apple/security/KeychainStore.java index 2016c4811ab..8df45d7bea7 100644 --- a/jdk/src/macosx/classes/apple/security/KeychainStore.java +++ b/jdk/src/macosx/classes/apple/security/KeychainStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, 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 @@ -248,7 +248,7 @@ public final class KeychainStore extends KeyStoreSpi { if (((KeyEntry)entry).chain == null) { return null; } else { - return (Certificate[])((KeyEntry)entry).chain.clone(); + return ((KeyEntry)entry).chain.clone(); } } else { return null; @@ -365,7 +365,7 @@ public final class KeychainStore extends KeyStoreSpi { throw new KeyStoreException("Certificate chain does not validate"); } - entry.chain = (Certificate[])chain.clone(); + entry.chain = chain.clone(); entry.chainRefs = new long[entry.chain.length]; } @@ -429,7 +429,7 @@ public final class KeychainStore extends KeyStoreSpi { if ((chain != null) && (chain.length != 0)) { - entry.chain = (Certificate[])chain.clone(); + entry.chain = chain.clone(); entry.chainRefs = new long[entry.chain.length]; } @@ -1122,7 +1122,7 @@ public final class KeychainStore extends KeyStoreSpi { throw uke; } - return ((byte[])key); + return key; } diff --git a/jdk/src/macosx/classes/sun/font/CFontManager.java b/jdk/src/macosx/classes/sun/font/CFontManager.java index e3e216e7a33..a5f36154d64 100644 --- a/jdk/src/macosx/classes/sun/font/CFontManager.java +++ b/jdk/src/macosx/classes/sun/font/CFontManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, 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 @@ -76,7 +76,7 @@ public class CFontManager extends SunFontManager { // This is a way to register any kind of Font2D, not just files and composites. public static Font2D[] getGenericFonts() { - return (Font2D[])genericFonts.values().toArray(new Font2D[0]); + return genericFonts.values().toArray(new Font2D[0]); } public Font2D registerGenericFont(Font2D f) @@ -117,7 +117,7 @@ public class CFontManager extends SunFontManager { } return f; } else { - return (Font2D)genericFonts.get(fontName); + return genericFonts.get(fontName); } } diff --git a/jdk/src/macosx/classes/sun/java2d/CRenderer.java b/jdk/src/macosx/classes/sun/java2d/CRenderer.java index e26cdce6e69..b5570f6ce93 100644 --- a/jdk/src/macosx/classes/sun/java2d/CRenderer.java +++ b/jdk/src/macosx/classes/sun/java2d/CRenderer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, 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 @@ -457,7 +457,7 @@ public class CRenderer implements PixelDrawPipe, PixelFillPipe, ShapeDrawPipe, D protected boolean blitImage(SunGraphics2D sg2d, Image img, boolean fliph, boolean flipv, int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh, Color bgColor) { CPrinterSurfaceData surfaceData = (CPrinterSurfaceData)sg2d.getSurfaceData(); - OSXOffScreenSurfaceData imgSurfaceData = (OSXOffScreenSurfaceData) OSXOffScreenSurfaceData.createNewSurface((BufferedImage)img); + OSXOffScreenSurfaceData imgSurfaceData = OSXOffScreenSurfaceData.createNewSurface((BufferedImage)img); surfaceData.blitImage(this, sg2d, imgSurfaceData, fliph, flipv, sx, sy, sw, sh, dx, dy, dw, dh, bgColor); return true; } diff --git a/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterJob.java b/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterJob.java index 0743c00ae63..80257a44c6c 100644 --- a/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterJob.java +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CPrinterJob.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, 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 @@ -640,7 +640,7 @@ public class CPrinterJob extends RasterPrinterJob { if (onEventThread) { try { EventQueue.invokeAndWait(r); } catch (java.lang.reflect.InvocationTargetException ite) { - Throwable te = (Throwable)ite.getTargetException(); + Throwable te = ite.getTargetException(); if (te instanceof PrinterException) throw (PrinterException)te; else te.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } diff --git a/jdk/src/share/classes/com/oracle/net/Sdp.java b/jdk/src/share/classes/com/oracle/net/Sdp.java index 32316073828..d22a95ed120 100644 --- a/jdk/src/share/classes/com/oracle/net/Sdp.java +++ b/jdk/src/share/classes/com/oracle/net/Sdp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2014, 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 @@ -56,7 +56,7 @@ public final class Sdp { private static final Constructor serverSocketCtor; static { try { - serverSocketCtor = (Constructor) + serverSocketCtor = ServerSocket.class.getDeclaredConstructor(SocketImpl.class); setAccessible(serverSocketCtor); } catch (NoSuchMethodException e) { diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/bmp/BMPImageReader.java b/jdk/src/share/classes/com/sun/imageio/plugins/bmp/BMPImageReader.java index b8c9a1e2b36..ae0fedf5b48 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/bmp/BMPImageReader.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/bmp/BMPImageReader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -806,14 +806,11 @@ public class BMPImageReader extends ImageReader implements BMPConstants { // the sampleModel can be null in case of embedded image if (sampleModel != null) { if (sampleModel.getDataType() == DataBuffer.TYPE_BYTE) - bdata = (byte[]) - ((DataBufferByte)raster.getDataBuffer()).getData(); + bdata = ((DataBufferByte)raster.getDataBuffer()).getData(); else if (sampleModel.getDataType() == DataBuffer.TYPE_USHORT) - sdata = (short[]) - ((DataBufferUShort)raster.getDataBuffer()).getData(); + sdata = ((DataBufferUShort)raster.getDataBuffer()).getData(); else if (sampleModel.getDataType() == DataBuffer.TYPE_INT) - idata = (int[]) - ((DataBufferInt)raster.getDataBuffer()).getData(); + idata = ((DataBufferInt)raster.getDataBuffer()).getData(); } // There should only be one tile. diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/bmp/BMPImageWriter.java b/jdk/src/share/classes/com/sun/imageio/plugins/bmp/BMPImageWriter.java index 5d1241ec53f..4eeb01c52e7 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/bmp/BMPImageWriter.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/bmp/BMPImageWriter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -574,7 +574,7 @@ public class BMPImageWriter extends ImageWriter implements BMPConstants { imageSize = embedded_stream.size(); long endPos = stream.getStreamPosition(); - fileSize = (int)(offset + imageSize); + fileSize = offset + imageSize; stream.seek(headPos); writeSize(fileSize, 2); stream.seek(headPos); diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/common/ImageUtil.java b/jdk/src/share/classes/com/sun/imageio/plugins/common/ImageUtil.java index 2c27e56e637..d3a4ba4a6f9 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/common/ImageUtil.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/common/ImageUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -593,16 +593,15 @@ public class ImageUtil { int i = eltOffset; while(xRemaining > 24) { data[i++] = - (int)(((binaryDataArray[b++] & 0xFF) << 24) | - ((binaryDataArray[b++] & 0xFF) << 16) | - ((binaryDataArray[b++] & 0xFF) << 8) | - (binaryDataArray[b++] & 0xFF)); + (((binaryDataArray[b++] & 0xFF) << 24) | + ((binaryDataArray[b++] & 0xFF) << 16) | + ((binaryDataArray[b++] & 0xFF) << 8) | + (binaryDataArray[b++] & 0xFF)); xRemaining -= 32; } int shift = 24; while(xRemaining > 0) { - data[i] |= - (int)((binaryDataArray[b++] & 0xFF) << shift); + data[i] |= ((binaryDataArray[b++] & 0xFF) << shift); shift -= 8; xRemaining -= 8; } @@ -835,8 +834,7 @@ public class ImageUtil { for(int x = 0; x < rectWidth; x++) { if(bdata[k++] != (byte)0) { data[bOffset/32] |= - (int)(0x00000001 << - (31 - bOffset % 32)); + (0x00000001 << (31 - bOffset % 32)); } bOffset++; } diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/common/LZWStringTable.java b/jdk/src/share/classes/com/sun/imageio/plugins/common/LZWStringTable.java index cfed0f43c0d..7d1714630b9 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/common/LZWStringTable.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/common/LZWStringTable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, 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 @@ -143,7 +143,7 @@ public class LZWStringTable { } static public int hash(short index, byte lastbyte) { - return ((int)((short)(lastbyte << 8) ^ index) & 0xFFFF) % HASHSIZE; + return (((short)(lastbyte << 8) ^ index) & 0xFFFF) % HASHSIZE; } /* diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/gif/GIFImageMetadata.java b/jdk/src/share/classes/com/sun/imageio/plugins/gif/GIFImageMetadata.java index 87a45c3cac4..45db3e64acd 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/gif/GIFImageMetadata.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/gif/GIFImageMetadata.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -232,7 +232,7 @@ public class GIFImageMetadata extends GIFMetadata { appExtNode.setAttribute("authenticationCode", toISO8859(authenticationCode)); byte[] appData = (byte[])applicationData.get(i); - appExtNode.setUserObject((byte[])appData.clone()); + appExtNode.setUserObject(appData.clone()); node.appendChild(appExtNode); } diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/DHTMarkerSegment.java b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/DHTMarkerSegment.java index f619bb1d4f0..20d18072a06 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/DHTMarkerSegment.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/DHTMarkerSegment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, 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 @@ -211,10 +211,10 @@ class DHTMarkerSegment extends MarkerSegment { newGuy = (Htable) super.clone(); } catch (CloneNotSupportedException e) {} // won't happen if (numCodes != null) { - newGuy.numCodes = (short []) numCodes.clone(); + newGuy.numCodes = numCodes.clone(); } if (values != null) { - newGuy.values = (short []) values.clone(); + newGuy.values = values.clone(); } return newGuy; } diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/DQTMarkerSegment.java b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/DQTMarkerSegment.java index 34fe0d2a811..fb78bc3a015 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/DQTMarkerSegment.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/DQTMarkerSegment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, 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 @@ -274,7 +274,7 @@ class DQTMarkerSegment extends MarkerSegment { newGuy = (Qtable) super.clone(); } catch (CloneNotSupportedException e) {} // won't happen if (data != null) { - newGuy.data = (int []) data.clone(); + newGuy.data = data.clone(); } return newGuy; } diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.java b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.java index 5ae93b1b685..21e5a26ad8d 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, 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 @@ -1448,7 +1448,7 @@ class JFIFMarkerSegment extends MarkerSegment { protected Object clone () { ICCMarkerSegment newGuy = (ICCMarkerSegment) super.clone(); if (profile != null) { - newGuy.profile = (byte[]) profile.clone(); + newGuy.profile = profile.clone(); } return newGuy; } diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java index d9723e7ba20..7f190f679d0 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -319,7 +319,7 @@ public class JPEGImageWriter extends ImageWriter { IIOMetadata streamMetadata, IIOMetadata imageMetadata) { if (jfifOK(imageType, param, streamMetadata, imageMetadata)) { - return (Dimension [])preferredThumbSizes.clone(); + return preferredThumbSizes.clone(); } return null; } diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGMetadata.java b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGMetadata.java index c7b8fd3d0e5..cff4f89b649 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGMetadata.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGMetadata.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, 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 @@ -724,7 +724,7 @@ public class JPEGMetadata extends IIOMetadata implements Cloneable { newGuy = (JPEGMetadata) super.clone(); } catch (CloneNotSupportedException e) {} // won't happen if (markerSequence != null) { - newGuy.markerSequence = (List) cloneSequence(); + newGuy.markerSequence = cloneSequence(); } newGuy.resetSequence = null; return newGuy; @@ -2016,14 +2016,14 @@ public class JPEGMetadata extends IIOMetadata implements Cloneable { // First approximation int y = 1; - int x = (int) Math.round(value); + int x = Math.round(value); float ratio = (float) x; float delta = Math.abs(value - ratio); while (delta > epsilon) { // not close enough // Increment y and compute a new x y++; - x = (int) Math.round(y*value); + x = Math.round(y*value); ratio = (float)x/(float)y; delta = Math.abs(value - ratio); } diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/MarkerSegment.java b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/MarkerSegment.java index f38e30f3ae8..2952635b7f2 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/MarkerSegment.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/MarkerSegment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, 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 @@ -119,7 +119,7 @@ class MarkerSegment implements Cloneable { newGuy = (MarkerSegment) super.clone(); } catch (CloneNotSupportedException e) {} // won't happen if (this.data != null) { - newGuy.data = (byte[]) data.clone(); + newGuy.data = data.clone(); } return newGuy; } diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/SOFMarkerSegment.java b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/SOFMarkerSegment.java index 904fa73777c..ea625209cbd 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/SOFMarkerSegment.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/SOFMarkerSegment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -98,7 +98,7 @@ class SOFMarkerSegment extends MarkerSegment { protected Object clone() { SOFMarkerSegment newGuy = (SOFMarkerSegment) super.clone(); if (componentSpecs != null) { - newGuy.componentSpecs = (ComponentSpec []) componentSpecs.clone(); + newGuy.componentSpecs = componentSpecs.clone(); for (int i = 0; i < componentSpecs.length; i++) { newGuy.componentSpecs[i] = (ComponentSpec) componentSpecs[i].clone(); diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/SOSMarkerSegment.java b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/SOSMarkerSegment.java index afffa7bd74a..c8f223190fd 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/SOSMarkerSegment.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/SOSMarkerSegment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, 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 @@ -93,8 +93,7 @@ class SOSMarkerSegment extends MarkerSegment { protected Object clone () { SOSMarkerSegment newGuy = (SOSMarkerSegment) super.clone(); if (componentSpecs != null) { - newGuy.componentSpecs = - (ScanComponentSpec []) componentSpecs.clone(); + newGuy.componentSpecs = componentSpecs.clone(); for (int i = 0; i < componentSpecs.length; i++) { newGuy.componentSpecs[i] = (ScanComponentSpec) componentSpecs[i].clone(); diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/png/PNGMetadata.java b/jdk/src/share/classes/com/sun/imageio/plugins/png/PNGMetadata.java index 41392c53a1e..3ad3a8b6420 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/png/PNGMetadata.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/png/PNGMetadata.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -344,9 +344,9 @@ public class PNGMetadata extends IIOMetadata implements Cloneable { IHDR_colorType = PNGImageReader.PNG_COLOR_PALETTE; PLTE_present = true; PLTE_order = null; - PLTE_red = (byte[])reds.clone(); - PLTE_green = (byte[])greens.clone(); - PLTE_blue = (byte[])blues.clone(); + PLTE_red = reds.clone(); + PLTE_green = greens.clone(); + PLTE_blue = blues.clone(); if (hasAlpha) { tRNS_present = true; @@ -430,7 +430,7 @@ public class PNGMetadata extends IIOMetadata implements Cloneable { } else { ArrayList list = new ArrayList(in.size()); for (byte[] b: in) { - list.add((b == null) ? null : (byte[])b.clone()); + list.add((b == null) ? null : b.clone()); } return list; } @@ -703,8 +703,8 @@ public class PNGMetadata extends IIOMetadata implements Cloneable { IIOMetadataNode tEXt_parent = new IIOMetadataNode("tEXt"); for (int i = 0; i < tEXt_keyword.size(); i++) { IIOMetadataNode tEXt_node = new IIOMetadataNode("tEXtEntry"); - tEXt_node.setAttribute("keyword" , (String)tEXt_keyword.get(i)); - tEXt_node.setAttribute("value" , (String)tEXt_text.get(i)); + tEXt_node.setAttribute("keyword" , tEXt_keyword.get(i)); + tEXt_node.setAttribute("value" , tEXt_text.get(i)); tEXt_parent.appendChild(tEXt_node); } @@ -759,13 +759,13 @@ public class PNGMetadata extends IIOMetadata implements Cloneable { IIOMetadataNode zTXt_parent = new IIOMetadataNode("zTXt"); for (int i = 0; i < zTXt_keyword.size(); i++) { IIOMetadataNode zTXt_node = new IIOMetadataNode("zTXtEntry"); - zTXt_node.setAttribute("keyword", (String)zTXt_keyword.get(i)); + zTXt_node.setAttribute("keyword", zTXt_keyword.get(i)); - int cm = ((Integer)zTXt_compressionMethod.get(i)).intValue(); + int cm = (zTXt_compressionMethod.get(i)).intValue(); zTXt_node.setAttribute("compressionMethod", zTXt_compressionMethodNames[cm]); - zTXt_node.setAttribute("text", (String)zTXt_text.get(i)); + zTXt_node.setAttribute("text", zTXt_text.get(i)); zTXt_parent.appendChild(zTXt_node); } @@ -781,8 +781,8 @@ public class PNGMetadata extends IIOMetadata implements Cloneable { IIOMetadataNode unknown_node = new IIOMetadataNode("UnknownChunk"); unknown_node.setAttribute("type", - (String)unknownChunkType.get(i)); - unknown_node.setUserObject((byte[])unknownChunkData.get(i)); + unknownChunkType.get(i)); + unknown_node.setUserObject(unknownChunkData.get(i)); unknown_parent.appendChild(unknown_node); } @@ -1016,8 +1016,8 @@ public class PNGMetadata extends IIOMetadata implements Cloneable { for (int i = 0; i < tEXt_keyword.size(); i++) { node = new IIOMetadataNode("TextEntry"); - node.setAttribute("keyword", (String)tEXt_keyword.get(i)); - node.setAttribute("value", (String)tEXt_text.get(i)); + node.setAttribute("keyword", tEXt_keyword.get(i)); + node.setAttribute("value", tEXt_text.get(i)); node.setAttribute("encoding", "ISO-8859-1"); node.setAttribute("compression", "none"); @@ -1041,8 +1041,8 @@ public class PNGMetadata extends IIOMetadata implements Cloneable { for (int i = 0; i < zTXt_keyword.size(); i++) { node = new IIOMetadataNode("TextEntry"); - node.setAttribute("keyword", (String)zTXt_keyword.get(i)); - node.setAttribute("value", (String)zTXt_text.get(i)); + node.setAttribute("keyword", zTXt_keyword.get(i)); + node.setAttribute("value", zTXt_text.get(i)); node.setAttribute("compression", "zip"); text_node.appendChild(node); @@ -1400,8 +1400,7 @@ public class PNGMetadata extends IIOMetadata implements Cloneable { fatal(node, "User object not a byte array!"); } - iCCP_compressedProfile = - (byte[])((byte[])compressedProfile).clone(); + iCCP_compressedProfile = ((byte[])compressedProfile).clone(); iCCP_present = true; } else if (name.equals("iTXt")) { diff --git a/jdk/src/share/classes/com/sun/java/browser/dom/DOMService.java b/jdk/src/share/classes/com/sun/java/browser/dom/DOMService.java index 88b5ba7a5d2..b30d618cd75 100644 --- a/jdk/src/share/classes/com/sun/java/browser/dom/DOMService.java +++ b/jdk/src/share/classes/com/sun/java/browser/dom/DOMService.java @@ -43,7 +43,7 @@ public abstract class DOMService { try { - String provider = (String) java.security.AccessController.doPrivileged( + String provider = java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction("com.sun.java.browser.dom.DOMServiceProvider")); Class clazz = Class.forName("sun.plugin.dom.DOMService"); diff --git a/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java b/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java index 96c70c7ff98..59a183b2582 100644 --- a/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java +++ b/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -283,7 +283,7 @@ public class MBeanServerFileAccessController public synchronized void refresh() throws IOException { Properties props; if (accessFileName == null) - props = (Properties) originalProps; + props = originalProps; else props = propertiesFromFile(accessFileName); parseProperties(props); diff --git a/jdk/src/share/classes/com/sun/media/sound/AbstractMidiDevice.java b/jdk/src/share/classes/com/sun/media/sound/AbstractMidiDevice.java index 874be7ddb05..4323970cafa 100644 --- a/jdk/src/share/classes/com/sun/media/sound/AbstractMidiDevice.java +++ b/jdk/src/share/classes/com/sun/media/sound/AbstractMidiDevice.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -667,7 +667,7 @@ abstract class AbstractMidiDevice implements MidiDevice, ReferenceCountingDevice } else { if (TRACE_TRANSMITTER) Printer.println("Sending packed message to "+size+" transmitter's receivers"); for (int i = 0; i < size; i++) { - Receiver receiver = ((Transmitter)transmitters.get(i)).getReceiver(); + Receiver receiver = transmitters.get(i).getReceiver(); if (receiver != null) { if (optimizedReceiverCount > 0) { if (receiver instanceof MidiOutDevice.MidiOutReceiver) { @@ -693,7 +693,7 @@ abstract class AbstractMidiDevice implements MidiDevice, ReferenceCountingDevice int size = transmitters.size(); if (TRACE_TRANSMITTER) Printer.println("Sending long message to "+size+" transmitter's receivers"); for (int i = 0; i < size; i++) { - Receiver receiver = ((Transmitter)transmitters.get(i)).getReceiver(); + Receiver receiver = transmitters.get(i).getReceiver(); if (receiver != null) { //$$fb 2002-04-02: SysexMessages are mutable, so // an application could change the contents of this object, @@ -729,7 +729,7 @@ abstract class AbstractMidiDevice implements MidiDevice, ReferenceCountingDevice } else { if (TRACE_TRANSMITTER) Printer.println("Sending MIDI message to "+size+" transmitter's receivers"); for (int i = 0; i < size; i++) { - Receiver receiver = ((Transmitter)transmitters.get(i)).getReceiver(); + Receiver receiver = transmitters.get(i).getReceiver(); if (receiver != null) { //$$fb 2002-04-02: ShortMessages are mutable, so // an application could change the contents of this object, diff --git a/jdk/src/share/classes/com/sun/media/sound/AiffFileReader.java b/jdk/src/share/classes/com/sun/media/sound/AiffFileReader.java index 5a96effbbe8..6d91be4bf61 100644 --- a/jdk/src/share/classes/com/sun/media/sound/AiffFileReader.java +++ b/jdk/src/share/classes/com/sun/media/sound/AiffFileReader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -406,7 +406,7 @@ public final class AiffFileReader extends SunFileReader { int expon = 0; long hiMant = 0, loMant = 0; long t1, t2; - double HUGE = ((double)3.40282346638528860e+38); + double HUGE = 3.40282346638528860e+38; expon = dis.readUnsignedShort(); diff --git a/jdk/src/share/classes/com/sun/media/sound/AiffFileWriter.java b/jdk/src/share/classes/com/sun/media/sound/AiffFileWriter.java index 0f79728291e..b31871f3bb5 100644 --- a/jdk/src/share/classes/com/sun/media/sound/AiffFileWriter.java +++ b/jdk/src/share/classes/com/sun/media/sound/AiffFileWriter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -239,18 +239,18 @@ public final class AiffFileWriter extends SunFileWriter { while( (bytesRead = fileStream.read( buffer )) >= 0 ) { if (maxLength>0) { if( bytesRead < maxLength ) { - out.write( buffer, 0, (int)bytesRead ); + out.write( buffer, 0, bytesRead ); bytesWritten += bytesRead; maxLength -= bytesRead; } else { - out.write( buffer, 0, (int)maxLength ); + out.write( buffer, 0, maxLength ); bytesWritten += maxLength; maxLength = 0; break; } } else { - out.write( buffer, 0, (int)bytesRead ); + out.write( buffer, 0, bytesRead ); bytesWritten += bytesRead; } } diff --git a/jdk/src/share/classes/com/sun/media/sound/AlawCodec.java b/jdk/src/share/classes/com/sun/media/sound/AlawCodec.java index dc868b0b2cb..367f318b06a 100644 --- a/jdk/src/share/classes/com/sun/media/sound/AlawCodec.java +++ b/jdk/src/share/classes/com/sun/media/sound/AlawCodec.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -316,7 +316,7 @@ public final class AlawCodec extends SunCodec { // set the AudioInputStream length in frames if we know it if (stream instanceof AudioInputStream) { - frameLength = ((AudioInputStream)stream).getFrameLength(); + frameLength = stream.getFrameLength(); } // set framePos to zero @@ -346,7 +346,7 @@ public final class AlawCodec extends SunCodec { public int read() throws IOException { byte[] b = new byte[1]; - return (int)read(b, 0, b.length); + return read(b, 0, b.length); } @@ -432,8 +432,8 @@ public final class AlawCodec extends SunCodec { int readCount = super.read(b, readOffset, readLen); for (i = off; i < (off + (readCount*2)); i+=2) { - b[i] = (byte)tabByte1[b[readOffset] & 0xFF]; - b[i+1] = (byte)tabByte2[b[readOffset] & 0xFF]; + b[i] = tabByte1[b[readOffset] & 0xFF]; + b[i+1] = tabByte2[b[readOffset] & 0xFF]; readOffset++; } diff --git a/jdk/src/share/classes/com/sun/media/sound/AuFileWriter.java b/jdk/src/share/classes/com/sun/media/sound/AuFileWriter.java index 15a7a90decf..7a459158a30 100644 --- a/jdk/src/share/classes/com/sun/media/sound/AuFileWriter.java +++ b/jdk/src/share/classes/com/sun/media/sound/AuFileWriter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -308,17 +308,17 @@ public final class AuFileWriter extends SunFileWriter { while( (bytesRead = fileStream.read( buffer )) >= 0 ) { if (maxLength>0) { if( bytesRead < maxLength ) { - out.write( buffer, 0, (int)bytesRead ); + out.write( buffer, 0, bytesRead ); bytesWritten += bytesRead; maxLength -= bytesRead; } else { - out.write( buffer, 0, (int)maxLength ); + out.write( buffer, 0, maxLength ); bytesWritten += maxLength; maxLength = 0; break; } } else { - out.write( buffer, 0, (int)bytesRead ); + out.write( buffer, 0, bytesRead ); bytesWritten += bytesRead; } } diff --git a/jdk/src/share/classes/com/sun/media/sound/DLSSoundbank.java b/jdk/src/share/classes/com/sun/media/sound/DLSSoundbank.java index 87247ba686a..376521338c2 100644 --- a/jdk/src/share/classes/com/sun/media/sound/DLSSoundbank.java +++ b/jdk/src/share/classes/com/sun/media/sound/DLSSoundbank.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2014, 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 @@ -531,7 +531,7 @@ public final class DLSSoundbank implements Soundbank { chunk.read(); // Read Reserved byte instrument.bank = bank; - instrument.preset = (int) id; + instrument.preset = id; instrument.druminstrument = (drumins & 128) > 0; //System.out.println("bank="+bank+" drumkit="+drumkit // +" id="+id); diff --git a/jdk/src/share/classes/com/sun/media/sound/DirectAudioDevice.java b/jdk/src/share/classes/com/sun/media/sound/DirectAudioDevice.java index 698bac9f766..7c938bbb1c4 100644 --- a/jdk/src/share/classes/com/sun/media/sound/DirectAudioDevice.java +++ b/jdk/src/share/classes/com/sun/media/sound/DirectAudioDevice.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -495,7 +495,7 @@ final class DirectAudioDevice extends AbstractMixer { } // align buffer to full frames - bufferSize = ((int) bufferSize / format.getFrameSize()) * format.getFrameSize(); + bufferSize = ( bufferSize / format.getFrameSize()) * format.getFrameSize(); id = nOpen(mixerIndex, deviceID, isSource, encoding, @@ -1381,7 +1381,7 @@ final class DirectAudioDevice extends AbstractMixer { if (toWriteBytes > getBufferSize()) { toWriteBytes = Toolkit.align(getBufferSize(), frameSize); } - int written = write(audioData, (int) clipBytePosition, toWriteBytes); // increases bytePosition + int written = write(audioData, clipBytePosition, toWriteBytes); // increases bytePosition clipBytePosition += written; // make sure nobody called setFramePosition, or stop() during the write() call if (doIO && newFramePosition < 0 && written >= 0) { diff --git a/jdk/src/share/classes/com/sun/media/sound/PortMixer.java b/jdk/src/share/classes/com/sun/media/sound/PortMixer.java index 2ef76cbf488..705648004ff 100644 --- a/jdk/src/share/classes/com/sun/media/sound/PortMixer.java +++ b/jdk/src/share/classes/com/sun/media/sound/PortMixer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -212,7 +212,7 @@ final class PortMixer extends AbstractMixer { ports = new PortMixerPort[portInfos.length]; } if (ports[index] == null) { - ports[index] = new PortMixerPort((Port.Info)portInfos[index], this, index); + ports[index] = new PortMixerPort(portInfos[index], this, index); return ports[index]; } // $$fb TODO: return (Port) (ports[index].clone()); diff --git a/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java b/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java index 168b1b3656d..6ea2ec4b3c6 100644 --- a/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java +++ b/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -386,7 +386,7 @@ final class RealTimeSequencer extends AbstractMidiDevice // last resort: return a standard tempo: 120bpm return (float) MidiUtils.DEFAULT_TEMPO_MPQ; } - return (float)getDataPump().getTempoMPQ(); + return getDataPump().getTempoMPQ(); } diff --git a/jdk/src/share/classes/com/sun/media/sound/SF2Soundbank.java b/jdk/src/share/classes/com/sun/media/sound/SF2Soundbank.java index 688ba1dafaa..83c8848b4f9 100644 --- a/jdk/src/share/classes/com/sun/media/sound/SF2Soundbank.java +++ b/jdk/src/share/classes/com/sun/media/sound/SF2Soundbank.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2014, 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 @@ -617,8 +617,8 @@ public final class SF2Soundbank implements Soundbank { private void writeGenerators(RIFFWriter writer, Map generators) throws IOException { - Short keyrange = (Short) generators.get(SF2Region.GENERATOR_KEYRANGE); - Short velrange = (Short) generators.get(SF2Region.GENERATOR_VELRANGE); + Short keyrange = generators.get(SF2Region.GENERATOR_KEYRANGE); + Short velrange = generators.get(SF2Region.GENERATOR_VELRANGE); if (keyrange != null) { writer.writeUnsignedShort(SF2Region.GENERATOR_KEYRANGE); writer.writeShort(keyrange); @@ -706,7 +706,7 @@ public final class SF2Soundbank implements Soundbank { } for (SF2InstrumentRegion region : preset.getRegions()) { writeGenerators(pgen_chunk, region.getGenerators()); - int ix = (int) layers.indexOf(region.layer); + int ix = layers.indexOf(region.layer); if (ix != -1) { pgen_chunk.writeUnsignedShort(SF2Region.GENERATOR_INSTRUMENT); pgen_chunk.writeShort((short) ix); diff --git a/jdk/src/share/classes/com/sun/media/sound/SoftInstrument.java b/jdk/src/share/classes/com/sun/media/sound/SoftInstrument.java index 0423448743d..009867ca09b 100644 --- a/jdk/src/share/classes/com/sun/media/sound/SoftInstrument.java +++ b/jdk/src/share/classes/com/sun/media/sound/SoftInstrument.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2014, 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 final class SoftInstrument extends Instrument { ins.getDataClass()); data = ins.getData(); this.ins = ins; - initPerformers(((ModelInstrument)ins).getPerformers()); + initPerformers(ins.getPerformers()); } public SoftInstrument(ModelInstrument ins, diff --git a/jdk/src/share/classes/com/sun/media/sound/StandardMidiFileWriter.java b/jdk/src/share/classes/com/sun/media/sound/StandardMidiFileWriter.java index 97e0dc2928a..365fd9c6c28 100644 --- a/jdk/src/share/classes/com/sun/media/sound/StandardMidiFileWriter.java +++ b/jdk/src/share/classes/com/sun/media/sound/StandardMidiFileWriter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -141,7 +141,7 @@ public final class StandardMidiFileWriter extends MidiFileWriter { buffer = new byte[bufferSize]; while( (bytesRead = fileStream.read( buffer )) >= 0 ) { - out.write( buffer, 0, (int)bytesRead ); + out.write( buffer, 0, bytesRead ); bytesWritten += bytesRead; } // Done....return bytesWritten diff --git a/jdk/src/share/classes/com/sun/media/sound/Toolkit.java b/jdk/src/share/classes/com/sun/media/sound/Toolkit.java index 5d52b8fe791..f1d5addce91 100644 --- a/jdk/src/share/classes/com/sun/media/sound/Toolkit.java +++ b/jdk/src/share/classes/com/sun/media/sound/Toolkit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -74,7 +74,7 @@ public final class Toolkit { */ static float linearToDB(float linear) { - float dB = (float) (Math.log((double)((linear==0.0)?0.0001:linear))/Math.log(10.0) * 20.0); + float dB = (float) (Math.log(((linear==0.0)?0.0001:linear))/Math.log(10.0) * 20.0); return dB; } diff --git a/jdk/src/share/classes/com/sun/media/sound/UlawCodec.java b/jdk/src/share/classes/com/sun/media/sound/UlawCodec.java index 04fa5197b14..7dda283a0da 100644 --- a/jdk/src/share/classes/com/sun/media/sound/UlawCodec.java +++ b/jdk/src/share/classes/com/sun/media/sound/UlawCodec.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -301,7 +301,7 @@ public final class UlawCodec extends SunCodec { // set the AudioInputStream length in frames if we know it if (stream instanceof AudioInputStream) { - frameLength = ((AudioInputStream)stream).getFrameLength(); + frameLength = stream.getFrameLength(); } // set framePos to zero framePos = 0; @@ -406,8 +406,8 @@ public final class UlawCodec extends SunCodec { return readCount; } for (i = off; i < (off + (readCount*2)); i+=2) { - b[i] = (byte)tabByte1[b[readOffset] & 0xFF]; - b[i+1] = (byte)tabByte2[b[readOffset] & 0xFF]; + b[i] = tabByte1[b[readOffset] & 0xFF]; + b[i+1] = tabByte2[b[readOffset] & 0xFF]; readOffset++; } return (i - off); diff --git a/jdk/src/share/classes/com/sun/media/sound/WaveFileWriter.java b/jdk/src/share/classes/com/sun/media/sound/WaveFileWriter.java index c5f17e1bc8d..b9becd23d5a 100644 --- a/jdk/src/share/classes/com/sun/media/sound/WaveFileWriter.java +++ b/jdk/src/share/classes/com/sun/media/sound/WaveFileWriter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -240,17 +240,17 @@ public final class WaveFileWriter extends SunFileWriter { if (maxLength>0) { if( bytesRead < maxLength ) { - out.write( buffer, 0, (int)bytesRead ); + out.write( buffer, 0, bytesRead ); bytesWritten += bytesRead; maxLength -= bytesRead; } else { - out.write( buffer, 0, (int)maxLength ); + out.write( buffer, 0, maxLength ); bytesWritten += maxLength; maxLength = 0; break; } } else { - out.write( buffer, 0, (int)bytesRead ); + out.write( buffer, 0, bytesRead ); bytesWritten += bytesRead; } } @@ -272,7 +272,7 @@ public final class WaveFileWriter extends SunFileWriter { short channels = (short) audioFormat.getChannels(); short sampleSizeInBits = (short) audioFormat.getSampleSizeInBits(); int sampleRate = (int) audioFormat.getSampleRate(); - int frameSizeInBytes = (int) audioFormat.getFrameSize(); + int frameSizeInBytes = audioFormat.getFrameSize(); int frameRate = (int) audioFormat.getFrameRate(); int avgBytesPerSec = channels * sampleSizeInBits * sampleRate / 8;; short blockAlign = (short) ((sampleSizeInBits / 8) * channels); diff --git a/jdk/src/share/classes/com/sun/tools/example/debug/expr/ExpressionParserTokenManager.java b/jdk/src/share/classes/com/sun/tools/example/debug/expr/ExpressionParserTokenManager.java index b2f16f03e57..98cae0f5a96 100644 --- a/jdk/src/share/classes/com/sun/tools/example/debug/expr/ExpressionParserTokenManager.java +++ b/jdk/src/share/classes/com/sun/tools/example/debug/expr/ExpressionParserTokenManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -1282,7 +1282,7 @@ private int jjMoveNfa_0(int startState, int curPos) } else { - int hiByte = (int)(curChar >> 8); + int hiByte = (curChar >> 8); int i1 = hiByte >> 6; long l1 = 1L << (hiByte & 077); int i2 = (curChar & 0xff) >> 6; diff --git a/jdk/src/share/classes/java/awt/AWTKeyStroke.java b/jdk/src/share/classes/java/awt/AWTKeyStroke.java index 2cf7a332774..c4e07b45530 100644 --- a/jdk/src/share/classes/java/awt/AWTKeyStroke.java +++ b/jdk/src/share/classes/java/awt/AWTKeyStroke.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -243,7 +243,7 @@ public class AWTKeyStroke implements Serializable { return null; } }); - return (Constructor)ctor; + return ctor; } private static synchronized AWTKeyStroke getCachedStroke @@ -275,7 +275,7 @@ public class AWTKeyStroke implements Serializable { cacheKey.modifiers = mapNewModifiers(mapOldModifiers(modifiers)); cacheKey.onKeyRelease = onKeyRelease; - AWTKeyStroke stroke = (AWTKeyStroke)cache.get(cacheKey); + AWTKeyStroke stroke = cache.get(cacheKey); if (stroke == null) { stroke = cacheKey; cache.put(stroke, stroke); @@ -581,7 +581,7 @@ public class AWTKeyStroke implements Serializable { continue; } - Integer tokenMask = (Integer)modifierKeywords.get(token); + Integer tokenMask = modifierKeywords.get(token); if (tokenMask != null) { mask |= tokenMask.intValue(); } else { @@ -879,11 +879,11 @@ class VKCollection { public synchronized Integer findCode(String name) { assert(name != null); - return (Integer)name2code.get(name); + return name2code.get(name); } public synchronized String findName(Integer code) { assert(code != null); - return (String)code2name.get(code); + return code2name.get(code); } } diff --git a/jdk/src/share/classes/java/awt/BasicStroke.java b/jdk/src/share/classes/java/awt/BasicStroke.java index 80b4a3d3eb3..21a4bba8f14 100644 --- a/jdk/src/share/classes/java/awt/BasicStroke.java +++ b/jdk/src/share/classes/java/awt/BasicStroke.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -225,7 +225,7 @@ public class BasicStroke implements Stroke { this.join = join; this.miterlimit = miterlimit; if (dash != null) { - this.dash = (float []) dash.clone(); + this.dash = dash.clone(); } this.dash_phase = dash_phase; } @@ -359,7 +359,7 @@ public class BasicStroke implements Stroke { return null; } - return (float[]) dash.clone(); + return dash.clone(); } /** diff --git a/jdk/src/share/classes/java/awt/CardLayout.java b/jdk/src/share/classes/java/awt/CardLayout.java index 35ee3379267..3ffb19fbee7 100644 --- a/jdk/src/share/classes/java/awt/CardLayout.java +++ b/jdk/src/share/classes/java/awt/CardLayout.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, 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 @@ -223,8 +223,8 @@ public class CardLayout implements LayoutManager2, comp.setVisible(false); } for (int i=0; i < vector.size(); i++) { - if (((Card)vector.get(i)).name.equals(name)) { - ((Card)vector.get(i)).comp = comp; + if ((vector.get(i)).name.equals(name)) { + (vector.get(i)).comp = comp; return; } } @@ -242,7 +242,7 @@ public class CardLayout implements LayoutManager2, public void removeLayoutComponent(Component comp) { synchronized (comp.getTreeLock()) { for (int i = 0; i < vector.size(); i++) { - if (((Card)vector.get(i)).comp == comp) { + if ((vector.get(i)).comp == comp) { // if we remove current component we should show next one if (comp.isVisible() && (comp.getParent() != null)) { next(comp.getParent()); @@ -527,7 +527,7 @@ public class CardLayout implements LayoutManager2, Component next = null; int ncomponents = vector.size(); for (int i = 0; i < ncomponents; i++) { - Card card = (Card)vector.get(i); + Card card = vector.get(i); if (card.name.equals(name)) { next = card.comp; currentCard = i; @@ -574,8 +574,8 @@ public class CardLayout implements LayoutManager2, vector = new Vector<>(); if (tab != null && !tab.isEmpty()) { for (Enumeration e = tab.keys() ; e.hasMoreElements() ; ) { - String key = (String)e.nextElement(); - Component comp = (Component)tab.get(key); + String key = e.nextElement(); + Component comp = tab.get(key); vector.add(new Card(key, comp)); if (comp.isVisible()) { currentCard = vector.size() - 1; @@ -597,7 +597,7 @@ public class CardLayout implements LayoutManager2, Hashtable tab = new Hashtable<>(); int ncomponents = vector.size(); for (int i = 0; i < ncomponents; i++) { - Card card = (Card)vector.get(i); + Card card = vector.get(i); tab.put(card.name, card.comp); } diff --git a/jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java b/jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java index 040e659289a..94ac5f8225d 100644 --- a/jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java +++ b/jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -578,7 +578,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager { // newFocusOwner is not focus traversable. dequeueKeyEvents(-1, newFocusOwner); if (KeyboardFocusManager.isAutoFocusTransferEnabled()) { - restoreFocus(fe, (Window)newFocusedWindow); + restoreFocus(fe, newFocusedWindow); } break; } @@ -590,7 +590,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager { // Focus change was rejected. Unlikely, but possible. dequeueKeyEvents(-1, newFocusOwner); if (KeyboardFocusManager.isAutoFocusTransferEnabled()) { - restoreFocus(fe, (Window)newFocusedWindow); + restoreFocus(fe, newFocusedWindow); } break; } diff --git a/jdk/src/share/classes/java/awt/GradientPaintContext.java b/jdk/src/share/classes/java/awt/GradientPaintContext.java index 2536fa2cf04..12b86e8521a 100644 --- a/jdk/src/share/classes/java/awt/GradientPaintContext.java +++ b/jdk/src/share/classes/java/awt/GradientPaintContext.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -46,7 +46,7 @@ class GradientPaintContext implements PaintContext { static synchronized Raster getCachedRaster(ColorModel cm, int w, int h) { if (cm == cachedModel) { if (cached != null) { - Raster ras = (Raster) cached.get(); + Raster ras = cached.get(); if (ras != null && ras.getWidth() >= w && ras.getHeight() >= h) @@ -61,7 +61,7 @@ class GradientPaintContext implements PaintContext { static synchronized void putCachedRaster(ColorModel cm, Raster ras) { if (cached != null) { - Raster cras = (Raster) cached.get(); + Raster cras = cached.get(); if (cras != null) { int cw = cras.getWidth(); int ch = cras.getHeight(); diff --git a/jdk/src/share/classes/java/awt/KeyboardFocusManager.java b/jdk/src/share/classes/java/awt/KeyboardFocusManager.java index 0184083ec5c..b02bb5b0dba 100644 --- a/jdk/src/share/classes/java/awt/KeyboardFocusManager.java +++ b/jdk/src/share/classes/java/awt/KeyboardFocusManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -1909,7 +1909,7 @@ public abstract class KeyboardFocusManager static synchronized Component getMostRecentFocusOwner(Window window) { WeakReference weakValue = (WeakReference)mostRecentFocusOwners.get(window); - return weakValue == null ? null : (Component)weakValue.get(); + return weakValue == null ? null : weakValue.get(); } /** @@ -2496,9 +2496,9 @@ public abstract class KeyboardFocusManager HeavyweightFocusRequest.CLEAR_GLOBAL_FOCUS_OWNER) { int size = heavyweightRequests.size(); - hwFocusRequest = (HeavyweightFocusRequest)((size >= 2) + hwFocusRequest = (size >= 2) ? heavyweightRequests.get(size - 2) - : null); + : null; } if (focusedWindowChanged(heavyweight, (hwFocusRequest != null) diff --git a/jdk/src/share/classes/java/awt/MultipleGradientPaintContext.java b/jdk/src/share/classes/java/awt/MultipleGradientPaintContext.java index cdff1907d95..f9bfe04c094 100644 --- a/jdk/src/share/classes/java/awt/MultipleGradientPaintContext.java +++ b/jdk/src/share/classes/java/awt/MultipleGradientPaintContext.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2006, 2014, 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 @@ -665,7 +665,7 @@ abstract class MultipleGradientPaintContext implements PaintContext { { if (cm == cachedModel) { if (cached != null) { - Raster ras = (Raster) cached.get(); + Raster ras = cached.get(); if (ras != null && ras.getWidth() >= w && ras.getHeight() >= h) @@ -687,7 +687,7 @@ abstract class MultipleGradientPaintContext implements PaintContext { Raster ras) { if (cached != null) { - Raster cras = (Raster) cached.get(); + Raster cras = cached.get(); if (cras != null) { int cw = cras.getWidth(); int ch = cras.getHeight(); diff --git a/jdk/src/share/classes/java/awt/ScrollPaneAdjustable.java b/jdk/src/share/classes/java/awt/ScrollPaneAdjustable.java index be3ad5fec6a..5f388960d8c 100644 --- a/jdk/src/share/classes/java/awt/ScrollPaneAdjustable.java +++ b/jdk/src/share/classes/java/awt/ScrollPaneAdjustable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -418,9 +418,8 @@ public class ScrollPaneAdjustable implements Adjustable, Serializable { * @since 1.4 */ public synchronized AdjustmentListener[] getAdjustmentListeners() { - return (AdjustmentListener[])(AWTEventMulticaster.getListeners( - adjustmentListener, - AdjustmentListener.class)); + return AWTEventMulticaster.getListeners(adjustmentListener, + AdjustmentListener.class); } /** diff --git a/jdk/src/share/classes/java/awt/SequencedEvent.java b/jdk/src/share/classes/java/awt/SequencedEvent.java index 0ae8dad64db..835c040c85c 100644 --- a/jdk/src/share/classes/java/awt/SequencedEvent.java +++ b/jdk/src/share/classes/java/awt/SequencedEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -160,7 +160,7 @@ class SequencedEvent extends AWTEvent implements ActiveEvent { } private final synchronized static SequencedEvent getFirst() { - return (SequencedEvent)list.getFirst(); + return list.getFirst(); } /* Disposes all events from disposed AppContext @@ -211,7 +211,7 @@ class SequencedEvent extends AWTEvent implements ActiveEvent { list.removeFirst(); if (!list.isEmpty()) { - next = (SequencedEvent)list.getFirst(); + next = list.getFirst(); } } else { list.remove(this); diff --git a/jdk/src/share/classes/java/awt/SystemTray.java b/jdk/src/share/classes/java/awt/SystemTray.java index b8344eeee95..7f3a5c31893 100644 --- a/jdk/src/share/classes/java/awt/SystemTray.java +++ b/jdk/src/share/classes/java/awt/SystemTray.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, 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 @@ -337,7 +337,7 @@ public class SystemTray { public TrayIcon[] getTrayIcons() { Vector icons = (Vector)AppContext.getAppContext().get(TrayIcon.class); if (icons != null) { - return (TrayIcon[])icons.toArray(new TrayIcon[icons.size()]); + return icons.toArray(new TrayIcon[icons.size()]); } return EMPTY_TRAY_ARRAY; } diff --git a/jdk/src/share/classes/java/awt/datatransfer/DataFlavor.java b/jdk/src/share/classes/java/awt/datatransfer/DataFlavor.java index cbf172ba05c..1fb29ddd3b7 100644 --- a/jdk/src/share/classes/java/awt/datatransfer/DataFlavor.java +++ b/jdk/src/share/classes/java/awt/datatransfer/DataFlavor.java @@ -730,9 +730,8 @@ public class DataFlavor implements Externalizable, Cloneable { textFlavorComparator = new TextFlavorComparator(); } - DataFlavor bestFlavor = - (DataFlavor)Collections.max(Arrays.asList(availableFlavors), - textFlavorComparator); + DataFlavor bestFlavor = Collections.max(Arrays.asList(availableFlavors), + textFlavorComparator); if (!bestFlavor.isFlavorTextType()) { return null; diff --git a/jdk/src/share/classes/java/awt/datatransfer/StringSelection.java b/jdk/src/share/classes/java/awt/datatransfer/StringSelection.java index c65f04fbaa7..dfeb3bdfe9a 100644 --- a/jdk/src/share/classes/java/awt/datatransfer/StringSelection.java +++ b/jdk/src/share/classes/java/awt/datatransfer/StringSelection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, 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 @@ -76,7 +76,7 @@ public class StringSelection implements Transferable, ClipboardOwner { public DataFlavor[] getTransferDataFlavors() { // returning flavors itself would allow client code to modify // our internal behavior - return (DataFlavor[])flavors.clone(); + return flavors.clone(); } /** diff --git a/jdk/src/share/classes/java/awt/image/ComponentColorModel.java b/jdk/src/share/classes/java/awt/image/ComponentColorModel.java index 28e41a2bc27..e2fe5e13eb4 100644 --- a/jdk/src/share/classes/java/awt/image/ComponentColorModel.java +++ b/jdk/src/share/classes/java/awt/image/ComponentColorModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -1514,13 +1514,13 @@ public class ComponentColorModel extends ColorModel { intpixel[0] = (int) (red * factor * ((1<= 0"); @@ -211,8 +211,8 @@ public class ComponentSampleModel extends SampleModel this.dataType = dataType; this.pixelStride = pixelStride; this.scanlineStride = scanlineStride; - this.bandOffsets = (int[])bandOffsets.clone(); - this.bankIndices = (int[]) bankIndices.clone(); + this.bandOffsets = bandOffsets.clone(); + this.bankIndices = bankIndices.clone(); if (pixelStride < 0) { throw new IllegalArgumentException("Pixel stride must be >= 0"); } @@ -526,14 +526,14 @@ public class ComponentSampleModel extends SampleModel * @return the bank indices for all bands. */ public final int [] getBankIndices() { - return (int[]) bankIndices.clone(); + return bankIndices.clone(); } /** Returns the band offset for all bands. * @return the band offsets for all bands. */ public final int [] getBandOffsets() { - return (int[])bandOffsets.clone(); + return bandOffsets.clone(); } /** Returns the scanline stride of this ComponentSampleModel. diff --git a/jdk/src/share/classes/java/awt/image/DataBuffer.java b/jdk/src/share/classes/java/awt/image/DataBuffer.java index 5bf9652080c..b23813bab4f 100644 --- a/jdk/src/share/classes/java/awt/image/DataBuffer.java +++ b/jdk/src/share/classes/java/awt/image/DataBuffer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -279,7 +279,7 @@ public abstract class DataBuffer { this.banks = numBanks; this.size = size; this.offset = offsets[0]; - this.offsets = (int[])offsets.clone(); + this.offsets = offsets.clone(); } /** Returns the data type of this DataBuffer. @@ -307,7 +307,7 @@ public abstract class DataBuffer { * @return the offsets of all banks. */ public int[] getOffsets() { - return (int[])offsets.clone(); + return offsets.clone(); } /** Returns the number of banks in this DataBuffer. diff --git a/jdk/src/share/classes/java/awt/image/DataBufferByte.java b/jdk/src/share/classes/java/awt/image/DataBufferByte.java index 7d35b47e0a3..f4e40cbc3a9 100644 --- a/jdk/src/share/classes/java/awt/image/DataBufferByte.java +++ b/jdk/src/share/classes/java/awt/image/DataBufferByte.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -156,7 +156,7 @@ public final class DataBufferByte extends DataBuffer */ public DataBufferByte(byte dataArray[][], int size) { super(UNTRACKABLE, TYPE_BYTE, size, dataArray.length); - bankdata = (byte[][]) dataArray.clone(); + bankdata = dataArray.clone(); data = bankdata[0]; } @@ -181,7 +181,7 @@ public final class DataBufferByte extends DataBuffer */ public DataBufferByte(byte dataArray[][], int size, int offsets[]) { super(UNTRACKABLE, TYPE_BYTE, size, dataArray.length, offsets); - bankdata = (byte[][]) dataArray.clone(); + bankdata = dataArray.clone(); data = bankdata[0]; } @@ -228,7 +228,7 @@ public final class DataBufferByte extends DataBuffer */ public byte[][] getBankData() { theTrackable.setUntrackable(); - return (byte[][]) bankdata.clone(); + return bankdata.clone(); } /** diff --git a/jdk/src/share/classes/java/awt/image/DataBufferDouble.java b/jdk/src/share/classes/java/awt/image/DataBufferDouble.java index 92143fa78c4..85c5c37862a 100644 --- a/jdk/src/share/classes/java/awt/image/DataBufferDouble.java +++ b/jdk/src/share/classes/java/awt/image/DataBufferDouble.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -154,7 +154,7 @@ public final class DataBufferDouble extends DataBuffer { */ public DataBufferDouble(double dataArray[][], int size) { super(UNTRACKABLE, TYPE_DOUBLE, size, dataArray.length); - bankdata = (double[][]) dataArray.clone(); + bankdata = dataArray.clone(); data = bankdata[0]; } @@ -178,7 +178,7 @@ public final class DataBufferDouble extends DataBuffer { */ public DataBufferDouble(double dataArray[][], int size, int offsets[]) { super(UNTRACKABLE, TYPE_DOUBLE, size, dataArray.length, offsets); - bankdata = (double[][]) dataArray.clone(); + bankdata = dataArray.clone(); data = bankdata[0]; } @@ -225,7 +225,7 @@ public final class DataBufferDouble extends DataBuffer { */ public double[][] getBankData() { theTrackable.setUntrackable(); - return (double[][]) bankdata.clone(); + return bankdata.clone(); } /** diff --git a/jdk/src/share/classes/java/awt/image/DataBufferFloat.java b/jdk/src/share/classes/java/awt/image/DataBufferFloat.java index c3fa5b2e2aa..12daeafe200 100644 --- a/jdk/src/share/classes/java/awt/image/DataBufferFloat.java +++ b/jdk/src/share/classes/java/awt/image/DataBufferFloat.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -156,7 +156,7 @@ public final class DataBufferFloat extends DataBuffer { */ public DataBufferFloat(float dataArray[][], int size) { super(UNTRACKABLE, TYPE_FLOAT, size, dataArray.length); - bankdata = (float[][]) dataArray.clone(); + bankdata = dataArray.clone(); data = bankdata[0]; } @@ -180,7 +180,7 @@ public final class DataBufferFloat extends DataBuffer { */ public DataBufferFloat(float dataArray[][], int size, int offsets[]) { super(UNTRACKABLE, TYPE_FLOAT, size,dataArray.length, offsets); - bankdata = (float[][]) dataArray.clone(); + bankdata = dataArray.clone(); data = bankdata[0]; } @@ -227,7 +227,7 @@ public final class DataBufferFloat extends DataBuffer { */ public float[][] getBankData() { theTrackable.setUntrackable(); - return (float[][]) bankdata.clone(); + return bankdata.clone(); } /** diff --git a/jdk/src/share/classes/java/awt/image/DataBufferInt.java b/jdk/src/share/classes/java/awt/image/DataBufferInt.java index 2a3cf23a04b..afa60a11ee5 100644 --- a/jdk/src/share/classes/java/awt/image/DataBufferInt.java +++ b/jdk/src/share/classes/java/awt/image/DataBufferInt.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -154,7 +154,7 @@ public final class DataBufferInt extends DataBuffer */ public DataBufferInt(int dataArray[][], int size) { super(UNTRACKABLE, TYPE_INT, size, dataArray.length); - bankdata = (int [][]) dataArray.clone(); + bankdata = dataArray.clone(); data = bankdata[0]; } @@ -179,7 +179,7 @@ public final class DataBufferInt extends DataBuffer */ public DataBufferInt(int dataArray[][], int size, int offsets[]) { super(UNTRACKABLE, TYPE_INT, size, dataArray.length, offsets); - bankdata = (int [][]) dataArray.clone(); + bankdata = dataArray.clone(); data = bankdata[0]; } @@ -226,7 +226,7 @@ public final class DataBufferInt extends DataBuffer */ public int[][] getBankData() { theTrackable.setUntrackable(); - return (int [][]) bankdata.clone(); + return bankdata.clone(); } /** @@ -278,7 +278,7 @@ public final class DataBufferInt extends DataBuffer * @see #getElem(int, int) */ public void setElem(int bank, int i, int val) { - bankdata[bank][i+offsets[bank]] = (int)val; + bankdata[bank][i+offsets[bank]] = val; theTrackable.markDirty(); } } diff --git a/jdk/src/share/classes/java/awt/image/DataBufferShort.java b/jdk/src/share/classes/java/awt/image/DataBufferShort.java index b95f6aae4a1..f8a9da2b3cb 100644 --- a/jdk/src/share/classes/java/awt/image/DataBufferShort.java +++ b/jdk/src/share/classes/java/awt/image/DataBufferShort.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -153,7 +153,7 @@ public final class DataBufferShort extends DataBuffer */ public DataBufferShort(short dataArray[][], int size) { super(UNTRACKABLE, TYPE_SHORT, size, dataArray.length); - bankdata = (short[][]) dataArray.clone(); + bankdata = dataArray.clone(); data = bankdata[0]; } @@ -178,7 +178,7 @@ public final class DataBufferShort extends DataBuffer */ public DataBufferShort(short dataArray[][], int size, int offsets[]) { super(UNTRACKABLE, TYPE_SHORT, size, dataArray.length, offsets); - bankdata = (short[][]) dataArray.clone(); + bankdata = dataArray.clone(); data = bankdata[0]; } @@ -225,7 +225,7 @@ public final class DataBufferShort extends DataBuffer */ public short[][] getBankData() { theTrackable.setUntrackable(); - return (short[][]) bankdata.clone(); + return bankdata.clone(); } /** diff --git a/jdk/src/share/classes/java/awt/image/DataBufferUShort.java b/jdk/src/share/classes/java/awt/image/DataBufferUShort.java index 65919a7f5d5..9020ba78e63 100644 --- a/jdk/src/share/classes/java/awt/image/DataBufferUShort.java +++ b/jdk/src/share/classes/java/awt/image/DataBufferUShort.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -174,7 +174,7 @@ public final class DataBufferUShort extends DataBuffer } } - bankdata = (short[][]) dataArray.clone(); + bankdata = dataArray.clone(); data = bankdata[0]; } @@ -213,7 +213,7 @@ public final class DataBufferUShort extends DataBuffer } } - bankdata = (short[][]) dataArray.clone(); + bankdata = dataArray.clone(); data = bankdata[0]; } @@ -260,7 +260,7 @@ public final class DataBufferUShort extends DataBuffer */ public short[][] getBankData() { theTrackable.setUntrackable(); - return (short[][]) bankdata.clone(); + return bankdata.clone(); } /** @@ -272,7 +272,7 @@ public final class DataBufferUShort extends DataBuffer * @see #setElem(int, int, int) */ public int getElem(int i) { - return (int)(data[i+offset]&0xffff); + return data[i+offset]&0xffff; } /** @@ -285,7 +285,7 @@ public final class DataBufferUShort extends DataBuffer * @see #setElem(int, int, int) */ public int getElem(int bank, int i) { - return (int)(bankdata[bank][i+offsets[bank]]&0xffff); + return bankdata[bank][i+offsets[bank]]&0xffff; } /** diff --git a/jdk/src/share/classes/java/awt/image/IndexColorModel.java b/jdk/src/share/classes/java/awt/image/IndexColorModel.java index 7e4317cd3ab..16431ebc8af 100644 --- a/jdk/src/share/classes/java/awt/image/IndexColorModel.java +++ b/jdk/src/share/classes/java/awt/image/IndexColorModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, 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 @@ -909,7 +909,7 @@ public class IndexColorModel extends ColorModel { int minDist = 256; int d; - int gray = (int) (red*77 + green*150 + blue*29 + 128)/256; + int gray = (red*77 + green*150 + blue*29 + 128)/256; for (int i = 0; i < map_size; i++) { if (this.rgb[i] == 0x0) { diff --git a/jdk/src/share/classes/java/awt/image/MultiPixelPackedSampleModel.java b/jdk/src/share/classes/java/awt/image/MultiPixelPackedSampleModel.java index ebd41f61b25..c3c2b2a6c3d 100644 --- a/jdk/src/share/classes/java/awt/image/MultiPixelPackedSampleModel.java +++ b/jdk/src/share/classes/java/awt/image/MultiPixelPackedSampleModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -198,7 +198,7 @@ public class MultiPixelPackedSampleModel extends SampleModel public DataBuffer createDataBuffer() { DataBuffer dataBuffer = null; - int size = (int)scanlineStride*height; + int size = scanlineStride*height; switch (dataType) { case DataBuffer.TYPE_BYTE: dataBuffer = new DataBufferByte(size+(dataBitOffset+7)/8); diff --git a/jdk/src/share/classes/java/awt/image/PackedColorModel.java b/jdk/src/share/classes/java/awt/image/PackedColorModel.java index 3c910255aab..1ff6ecd0b10 100644 --- a/jdk/src/share/classes/java/awt/image/PackedColorModel.java +++ b/jdk/src/share/classes/java/awt/image/PackedColorModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -252,7 +252,7 @@ public abstract class PackedColorModel extends ColorModel { * representation contain the color or alpha samples. */ final public int[] getMasks() { - return (int[]) maskArray.clone(); + return maskArray.clone(); } /* diff --git a/jdk/src/share/classes/java/awt/image/RescaleOp.java b/jdk/src/share/classes/java/awt/image/RescaleOp.java index c48b98ebb77..e8fa30ee947 100644 --- a/jdk/src/share/classes/java/awt/image/RescaleOp.java +++ b/jdk/src/share/classes/java/awt/image/RescaleOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -144,7 +144,7 @@ public class RescaleOp implements BufferedImageOp, RasterOp { */ final public float[] getScaleFactors (float scaleFactors[]) { if (scaleFactors == null) { - return (float[]) this.scaleFactors.clone(); + return this.scaleFactors.clone(); } System.arraycopy (this.scaleFactors, 0, scaleFactors, 0, Math.min(this.scaleFactors.length, @@ -162,7 +162,7 @@ public class RescaleOp implements BufferedImageOp, RasterOp { */ final public float[] getOffsets(float offsets[]) { if (offsets == null) { - return (float[]) this.offsets.clone(); + return this.offsets.clone(); } System.arraycopy (this.offsets, 0, offsets, 0, diff --git a/jdk/src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java b/jdk/src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java index 58c1db0b726..ab01aef2a2a 100644 --- a/jdk/src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java +++ b/jdk/src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -149,7 +149,7 @@ public class SinglePixelPackedSampleModel extends SampleModel dataType); } this.dataType = dataType; - this.bitMasks = (int[]) bitMasks.clone(); + this.bitMasks = bitMasks.clone(); this.scanlineStride = scanlineStride; this.bitOffsets = new int[numBands]; @@ -276,14 +276,14 @@ public class SinglePixelPackedSampleModel extends SampleModel * @return the bit offsets representing a pixel for all bands. */ public int [] getBitOffsets() { - return (int[])bitOffsets.clone(); + return bitOffsets.clone(); } /** Returns the bit masks for all bands. * @return the bit masks for all bands. */ public int [] getBitMasks() { - return (int[])bitMasks.clone(); + return bitMasks.clone(); } /** Returns the scanline stride of this SinglePixelPackedSampleModel. @@ -746,7 +746,7 @@ public class SinglePixelPackedSampleModel extends SampleModel int value = data.getElem(lineOffset+j); value &= ~bitMasks[b]; int sample = iArray[srcOffset++]; - value |= ((int)sample << bitOffsets[b]) & bitMasks[b]; + value |= (sample << bitOffsets[b]) & bitMasks[b]; data.setElem(lineOffset+j,value); } lineOffset += scanlineStride; diff --git a/jdk/src/share/classes/javax/accessibility/AccessibleRelationSet.java b/jdk/src/share/classes/javax/accessibility/AccessibleRelationSet.java index e1409089fb9..37f38aa8a40 100644 --- a/jdk/src/share/classes/javax/accessibility/AccessibleRelationSet.java +++ b/jdk/src/share/classes/javax/accessibility/AccessibleRelationSet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -195,8 +195,7 @@ public class AccessibleRelationSet { } else { int len = relations.size(); for (int i = 0; i < len; i++) { - AccessibleRelation relation = - (AccessibleRelation)relations.elementAt(i); + AccessibleRelation relation = relations.elementAt(i); if (relation != null && relation.getKey().equals(key)) { return relation; } @@ -216,7 +215,7 @@ public class AccessibleRelationSet { AccessibleRelation[] relationArray = new AccessibleRelation[relations.size()]; for (int i = 0; i < relationArray.length; i++) { - relationArray[i] = (AccessibleRelation) relations.elementAt(i); + relationArray[i] = relations.elementAt(i); } return relationArray; } @@ -232,11 +231,10 @@ public class AccessibleRelationSet { public String toString() { String ret = ""; if ((relations != null) && (relations.size() > 0)) { - ret = ((AccessibleRelation) (relations.elementAt(0))).toDisplayString(); + ret = (relations.elementAt(0)).toDisplayString(); for (int i = 1; i < relations.size(); i++) { ret = ret + "," - + ((AccessibleRelation) (relations.elementAt(i))). - toDisplayString(); + + (relations.elementAt(i)).toDisplayString(); } } return ret; diff --git a/jdk/src/share/classes/javax/accessibility/AccessibleStateSet.java b/jdk/src/share/classes/javax/accessibility/AccessibleStateSet.java index 5d667b346e8..5eb4f05e3b9 100644 --- a/jdk/src/share/classes/javax/accessibility/AccessibleStateSet.java +++ b/jdk/src/share/classes/javax/accessibility/AccessibleStateSet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -171,7 +171,7 @@ public class AccessibleStateSet { } else { AccessibleState[] stateArray = new AccessibleState[states.size()]; for (int i = 0; i < stateArray.length; i++) { - stateArray[i] = (AccessibleState) states.elementAt(i); + stateArray[i] = states.elementAt(i); } return stateArray; } @@ -187,11 +187,10 @@ public class AccessibleStateSet { public String toString() { String ret = null; if ((states != null) && (states.size() > 0)) { - ret = ((AccessibleState) (states.elementAt(0))).toDisplayString(); + ret = states.elementAt(0).toDisplayString(); for (int i = 1; i < states.size(); i++) { ret = ret + "," - + ((AccessibleState) (states.elementAt(i))). - toDisplayString(); + + states.elementAt(i).toDisplayString(); } } return ret; diff --git a/jdk/src/share/classes/javax/imageio/IIOParam.java b/jdk/src/share/classes/javax/imageio/IIOParam.java index 33bede6cdb6..ca73f6acbd9 100644 --- a/jdk/src/share/classes/javax/imageio/IIOParam.java +++ b/jdk/src/share/classes/javax/imageio/IIOParam.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -437,7 +437,7 @@ public abstract class IIOParam { } } - this.sourceBands = (int[])(sourceBands.clone()); + this.sourceBands = (sourceBands.clone()); } } @@ -460,7 +460,7 @@ public abstract class IIOParam { if (sourceBands == null) { return null; } - return (int[])(sourceBands.clone()); + return (sourceBands.clone()); } /** diff --git a/jdk/src/share/classes/javax/imageio/ImageIO.java b/jdk/src/share/classes/javax/imageio/ImageIO.java index e6345322301..1ad84b4a204 100644 --- a/jdk/src/share/classes/javax/imageio/ImageIO.java +++ b/jdk/src/share/classes/javax/imageio/ImageIO.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -169,7 +169,7 @@ public final class ImageIO { */ private static String getTempDir() { GetPropertyAction a = new GetPropertyAction("java.io.tmpdir"); - return (String)AccessController.doPrivileged(a); + return AccessController.doPrivileged(a); } /** diff --git a/jdk/src/share/classes/javax/imageio/ImageReadParam.java b/jdk/src/share/classes/javax/imageio/ImageReadParam.java index 6053348d100..4e9ac1e06a6 100644 --- a/jdk/src/share/classes/javax/imageio/ImageReadParam.java +++ b/jdk/src/share/classes/javax/imageio/ImageReadParam.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -294,7 +294,7 @@ public class ImageReadParam extends IIOParam { } } } - this.destinationBands = (int[])destinationBands.clone(); + this.destinationBands = destinationBands.clone(); } } @@ -312,7 +312,7 @@ public class ImageReadParam extends IIOParam { if (destinationBands == null) { return null; } else { - return (int[])(destinationBands.clone()); + return destinationBands.clone(); } } diff --git a/jdk/src/share/classes/javax/imageio/ImageReader.java b/jdk/src/share/classes/javax/imageio/ImageReader.java index b6b70216902..97dd57d3a13 100644 --- a/jdk/src/share/classes/javax/imageio/ImageReader.java +++ b/jdk/src/share/classes/javax/imageio/ImageReader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -457,7 +457,7 @@ public abstract class ImageReader { if (availableLocales == null) { return null; } else { - return (Locale[])availableLocales.clone(); + return availableLocales.clone(); } } @@ -678,7 +678,7 @@ public abstract class ImageReader { */ public ImageTypeSpecifier getRawImageType(int imageIndex) throws IOException { - return (ImageTypeSpecifier)getImageTypes(imageIndex).next(); + return getImageTypes(imageIndex).next(); } /** @@ -2012,7 +2012,7 @@ public abstract class ImageReader { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadProgressListener listener = - (IIOReadProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.sequenceStarted(this, minIndex); } } @@ -2030,7 +2030,7 @@ public abstract class ImageReader { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadProgressListener listener = - (IIOReadProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.sequenceComplete(this); } } @@ -2050,7 +2050,7 @@ public abstract class ImageReader { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadProgressListener listener = - (IIOReadProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.imageStarted(this, imageIndex); } } @@ -2071,7 +2071,7 @@ public abstract class ImageReader { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadProgressListener listener = - (IIOReadProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.imageProgress(this, percentageDone); } } @@ -2089,7 +2089,7 @@ public abstract class ImageReader { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadProgressListener listener = - (IIOReadProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.imageComplete(this); } } @@ -2112,7 +2112,7 @@ public abstract class ImageReader { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadProgressListener listener = - (IIOReadProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.thumbnailStarted(this, imageIndex, thumbnailIndex); } } @@ -2133,7 +2133,7 @@ public abstract class ImageReader { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadProgressListener listener = - (IIOReadProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.thumbnailProgress(this, percentageDone); } } @@ -2151,7 +2151,7 @@ public abstract class ImageReader { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadProgressListener listener = - (IIOReadProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.thumbnailComplete(this); } } @@ -2169,7 +2169,7 @@ public abstract class ImageReader { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadProgressListener listener = - (IIOReadProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.readAborted(this); } } @@ -2205,7 +2205,7 @@ public abstract class ImageReader { int numListeners = updateListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadUpdateListener listener = - (IIOReadUpdateListener)updateListeners.get(i); + updateListeners.get(i); listener.passStarted(this, theImage, pass, minPass, maxPass, @@ -2246,7 +2246,7 @@ public abstract class ImageReader { int numListeners = updateListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadUpdateListener listener = - (IIOReadUpdateListener)updateListeners.get(i); + updateListeners.get(i); listener.imageUpdate(this, theImage, minX, minY, @@ -2271,7 +2271,7 @@ public abstract class ImageReader { int numListeners = updateListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadUpdateListener listener = - (IIOReadUpdateListener)updateListeners.get(i); + updateListeners.get(i); listener.passComplete(this, theImage); } } @@ -2308,7 +2308,7 @@ public abstract class ImageReader { int numListeners = updateListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadUpdateListener listener = - (IIOReadUpdateListener)updateListeners.get(i); + updateListeners.get(i); listener.thumbnailPassStarted(this, theThumbnail, pass, minPass, maxPass, @@ -2350,7 +2350,7 @@ public abstract class ImageReader { int numListeners = updateListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadUpdateListener listener = - (IIOReadUpdateListener)updateListeners.get(i); + updateListeners.get(i); listener.thumbnailUpdate(this, theThumbnail, minX, minY, @@ -2376,7 +2376,7 @@ public abstract class ImageReader { int numListeners = updateListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadUpdateListener listener = - (IIOReadUpdateListener)updateListeners.get(i); + updateListeners.get(i); listener.thumbnailPassComplete(this, theThumbnail); } } @@ -2402,7 +2402,7 @@ public abstract class ImageReader { int numListeners = warningListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadWarningListener listener = - (IIOReadWarningListener)warningListeners.get(i); + warningListeners.get(i); listener.warningOccurred(this, warning); } @@ -2447,8 +2447,8 @@ public abstract class ImageReader { int numListeners = warningListeners.size(); for (int i = 0; i < numListeners; i++) { IIOReadWarningListener listener = - (IIOReadWarningListener)warningListeners.get(i); - Locale locale = (Locale)warningLocales.get(i); + warningListeners.get(i); + Locale locale = warningLocales.get(i); if (locale == null) { locale = Locale.getDefault(); } @@ -2864,7 +2864,7 @@ public abstract class ImageReader { boolean foundIt = false; while (imageTypes.hasNext()) { ImageTypeSpecifier type = - (ImageTypeSpecifier)imageTypes.next(); + imageTypes.next(); if (type.equals(imageType)) { foundIt = true; break; diff --git a/jdk/src/share/classes/javax/imageio/ImageTypeSpecifier.java b/jdk/src/share/classes/javax/imageio/ImageTypeSpecifier.java index c9c17dfe4c1..4c3295b5a4c 100644 --- a/jdk/src/share/classes/javax/imageio/ImageTypeSpecifier.java +++ b/jdk/src/share/classes/javax/imageio/ImageTypeSpecifier.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -296,7 +296,7 @@ public class ImageTypeSpecifier { ("Bad value for dataType!"); } this.colorSpace = colorSpace; - this.bandOffsets = (int[])bandOffsets.clone(); + this.bandOffsets = bandOffsets.clone(); this.dataType = dataType; this.hasAlpha = hasAlpha; this.isAlphaPremultiplied = isAlphaPremultiplied; @@ -449,8 +449,8 @@ public class ImageTypeSpecifier { } this.colorSpace = colorSpace; - this.bankIndices = (int[])bankIndices.clone(); - this.bandOffsets = (int[])bandOffsets.clone(); + this.bankIndices = bankIndices.clone(); + this.bandOffsets = bandOffsets.clone(); this.dataType = dataType; this.hasAlpha = hasAlpha; this.isAlphaPremultiplied = isAlphaPremultiplied; @@ -769,11 +769,11 @@ public class ImageTypeSpecifier { (alphaLUT != null && alphaLUT.length != len)) { throw new IllegalArgumentException("LUT has improper length!"); } - this.redLUT = (byte[])redLUT.clone(); - this.greenLUT = (byte[])greenLUT.clone(); - this.blueLUT = (byte[])blueLUT.clone(); + this.redLUT = redLUT.clone(); + this.greenLUT = greenLUT.clone(); + this.blueLUT = blueLUT.clone(); if (alphaLUT != null) { - this.alphaLUT = (byte[])alphaLUT.clone(); + this.alphaLUT = alphaLUT.clone(); } this.bits = bits; this.dataType = dataType; diff --git a/jdk/src/share/classes/javax/imageio/ImageWriteParam.java b/jdk/src/share/classes/javax/imageio/ImageWriteParam.java index f903dd6f917..1823b0eb672 100644 --- a/jdk/src/share/classes/javax/imageio/ImageWriteParam.java +++ b/jdk/src/share/classes/javax/imageio/ImageWriteParam.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -976,7 +976,7 @@ public class ImageWriteParam extends IIOParam { if (compressionTypes == null) { return null; } - return (String[])compressionTypes.clone(); + return compressionTypes.clone(); } /** diff --git a/jdk/src/share/classes/javax/imageio/ImageWriter.java b/jdk/src/share/classes/javax/imageio/ImageWriter.java index acb328d4215..78761150507 100644 --- a/jdk/src/share/classes/javax/imageio/ImageWriter.java +++ b/jdk/src/share/classes/javax/imageio/ImageWriter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -257,7 +257,7 @@ public abstract class ImageWriter implements ImageTranscoder { */ public Locale[] getAvailableLocales() { return (availableLocales == null) ? - null : (Locale[])availableLocales.clone(); + null : availableLocales.clone(); } /** @@ -1754,7 +1754,7 @@ public abstract class ImageWriter implements ImageTranscoder { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOWriteProgressListener listener = - (IIOWriteProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.imageStarted(this, imageIndex); } } @@ -1775,7 +1775,7 @@ public abstract class ImageWriter implements ImageTranscoder { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOWriteProgressListener listener = - (IIOWriteProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.imageProgress(this, percentageDone); } } @@ -1793,7 +1793,7 @@ public abstract class ImageWriter implements ImageTranscoder { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOWriteProgressListener listener = - (IIOWriteProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.imageComplete(this); } } @@ -1816,7 +1816,7 @@ public abstract class ImageWriter implements ImageTranscoder { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOWriteProgressListener listener = - (IIOWriteProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.thumbnailStarted(this, imageIndex, thumbnailIndex); } } @@ -1837,7 +1837,7 @@ public abstract class ImageWriter implements ImageTranscoder { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOWriteProgressListener listener = - (IIOWriteProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.thumbnailProgress(this, percentageDone); } } @@ -1855,7 +1855,7 @@ public abstract class ImageWriter implements ImageTranscoder { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOWriteProgressListener listener = - (IIOWriteProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.thumbnailComplete(this); } } @@ -1873,7 +1873,7 @@ public abstract class ImageWriter implements ImageTranscoder { int numListeners = progressListeners.size(); for (int i = 0; i < numListeners; i++) { IIOWriteProgressListener listener = - (IIOWriteProgressListener)progressListeners.get(i); + progressListeners.get(i); listener.writeAborted(this); } } @@ -1902,7 +1902,7 @@ public abstract class ImageWriter implements ImageTranscoder { int numListeners = warningListeners.size(); for (int i = 0; i < numListeners; i++) { IIOWriteWarningListener listener = - (IIOWriteWarningListener)warningListeners.get(i); + warningListeners.get(i); listener.warningOccurred(this, imageIndex, warning); } @@ -1950,8 +1950,8 @@ public abstract class ImageWriter implements ImageTranscoder { int numListeners = warningListeners.size(); for (int i = 0; i < numListeners; i++) { IIOWriteWarningListener listener = - (IIOWriteWarningListener)warningListeners.get(i); - Locale locale = (Locale)warningLocales.get(i); + warningListeners.get(i); + Locale locale = warningLocales.get(i); if (locale == null) { locale = Locale.getDefault(); } diff --git a/jdk/src/share/classes/javax/imageio/metadata/IIOMetadata.java b/jdk/src/share/classes/javax/imageio/metadata/IIOMetadata.java index 3040d64f7bd..c5f21249df6 100644 --- a/jdk/src/share/classes/javax/imageio/metadata/IIOMetadata.java +++ b/jdk/src/share/classes/javax/imageio/metadata/IIOMetadata.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -191,10 +191,8 @@ public abstract class IIOMetadata { throw new IllegalArgumentException ("extraMetadataFormatClassNames.length != extraMetadataFormatNames.length!"); } - this.extraMetadataFormatNames = - (String[]) extraMetadataFormatNames.clone(); - this.extraMetadataFormatClassNames = - (String[]) extraMetadataFormatClassNames.clone(); + this.extraMetadataFormatNames = extraMetadataFormatNames.clone(); + this.extraMetadataFormatClassNames = extraMetadataFormatClassNames.clone(); } else { if (extraMetadataFormatClassNames != null) { throw new IllegalArgumentException @@ -285,7 +283,7 @@ public abstract class IIOMetadata { if (extraMetadataFormatNames == null) { return null; } - return (String[])extraMetadataFormatNames.clone(); + return extraMetadataFormatNames.clone(); } /** diff --git a/jdk/src/share/classes/javax/imageio/metadata/IIOMetadataFormatImpl.java b/jdk/src/share/classes/javax/imageio/metadata/IIOMetadataFormatImpl.java index ef7caf3313e..a10de18ee94 100644 --- a/jdk/src/share/classes/javax/imageio/metadata/IIOMetadataFormatImpl.java +++ b/jdk/src/share/classes/javax/imageio/metadata/IIOMetadataFormatImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -1181,7 +1181,7 @@ public abstract class IIOMetadataFormatImpl implements IIOMetadataFormat { private ObjectValue getObjectValue(String elementName) { Element element = getElement(elementName); - ObjectValue objv = (ObjectValue)element.objectValue; + ObjectValue objv = element.objectValue; if (objv == null) { throw new IllegalArgumentException("No object within element " + elementName + "!"); @@ -1191,7 +1191,7 @@ public abstract class IIOMetadataFormatImpl implements IIOMetadataFormat { public int getObjectValueType(String elementName) { Element element = getElement(elementName); - ObjectValue objv = (ObjectValue)element.objectValue; + ObjectValue objv = element.objectValue; if (objv == null) { return VALUE_NONE; } diff --git a/jdk/src/share/classes/javax/imageio/plugins/jpeg/JPEGImageReadParam.java b/jdk/src/share/classes/javax/imageio/plugins/jpeg/JPEGImageReadParam.java index 720aa600129..f12e1e6ec3e 100644 --- a/jdk/src/share/classes/javax/imageio/plugins/jpeg/JPEGImageReadParam.java +++ b/jdk/src/share/classes/javax/imageio/plugins/jpeg/JPEGImageReadParam.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -132,9 +132,9 @@ public class JPEGImageReadParam extends ImageReadParam { throw new IllegalArgumentException ("Invalid JPEG table arrays"); } - this.qTables = (JPEGQTable[])qTables.clone(); - this.DCHuffmanTables = (JPEGHuffmanTable[])DCHuffmanTables.clone(); - this.ACHuffmanTables = (JPEGHuffmanTable[])ACHuffmanTables.clone(); + this.qTables = qTables.clone(); + this.DCHuffmanTables = DCHuffmanTables.clone(); + this.ACHuffmanTables = ACHuffmanTables.clone(); } /** @@ -160,7 +160,7 @@ public class JPEGImageReadParam extends ImageReadParam { * @see #setDecodeTables */ public JPEGQTable[] getQTables() { - return (qTables != null) ? (JPEGQTable[])qTables.clone() : null; + return (qTables != null) ? qTables.clone() : null; } /** @@ -175,7 +175,7 @@ public class JPEGImageReadParam extends ImageReadParam { */ public JPEGHuffmanTable[] getDCHuffmanTables() { return (DCHuffmanTables != null) - ? (JPEGHuffmanTable[])DCHuffmanTables.clone() + ? DCHuffmanTables.clone() : null; } @@ -191,7 +191,7 @@ public class JPEGImageReadParam extends ImageReadParam { */ public JPEGHuffmanTable[] getACHuffmanTables() { return (ACHuffmanTables != null) - ? (JPEGHuffmanTable[])ACHuffmanTables.clone() + ? ACHuffmanTables.clone() : null; } } diff --git a/jdk/src/share/classes/javax/imageio/plugins/jpeg/JPEGImageWriteParam.java b/jdk/src/share/classes/javax/imageio/plugins/jpeg/JPEGImageWriteParam.java index b4df14e99c6..a445bf20a8a 100644 --- a/jdk/src/share/classes/javax/imageio/plugins/jpeg/JPEGImageWriteParam.java +++ b/jdk/src/share/classes/javax/imageio/plugins/jpeg/JPEGImageWriteParam.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -167,7 +167,7 @@ public class JPEGImageWriteParam extends ImageWriteParam { (getCompressionType() == null)) { throw new IllegalStateException("No compression type set!"); } - return (String[])qualityDescs.clone(); + return qualityDescs.clone(); } public float[] getCompressionQualityValues() { @@ -179,7 +179,7 @@ public class JPEGImageWriteParam extends ImageWriteParam { (getCompressionType() == null)) { throw new IllegalStateException("No compression type set!"); } - return (float[])qualityVals.clone(); + return qualityVals.clone(); } /** * Returns true if tables are currently set. @@ -222,9 +222,9 @@ public class JPEGImageWriteParam extends ImageWriteParam { (DCHuffmanTables.length != ACHuffmanTables.length)) { throw new IllegalArgumentException("Invalid JPEG table arrays"); } - this.qTables = (JPEGQTable[])qTables.clone(); - this.DCHuffmanTables = (JPEGHuffmanTable[])DCHuffmanTables.clone(); - this.ACHuffmanTables = (JPEGHuffmanTable[])ACHuffmanTables.clone(); + this.qTables = qTables.clone(); + this.DCHuffmanTables = DCHuffmanTables.clone(); + this.ACHuffmanTables = ACHuffmanTables.clone(); } /** @@ -250,7 +250,7 @@ public class JPEGImageWriteParam extends ImageWriteParam { * @see #setEncodeTables */ public JPEGQTable[] getQTables() { - return (qTables != null) ? (JPEGQTable[])qTables.clone() : null; + return (qTables != null) ? qTables.clone() : null; } /** @@ -265,7 +265,7 @@ public class JPEGImageWriteParam extends ImageWriteParam { */ public JPEGHuffmanTable[] getDCHuffmanTables() { return (DCHuffmanTables != null) - ? (JPEGHuffmanTable[])DCHuffmanTables.clone() + ? DCHuffmanTables.clone() : null; } @@ -281,7 +281,7 @@ public class JPEGImageWriteParam extends ImageWriteParam { */ public JPEGHuffmanTable[] getACHuffmanTables() { return (ACHuffmanTables != null) - ? (JPEGHuffmanTable[])ACHuffmanTables.clone() + ? ACHuffmanTables.clone() : null; } diff --git a/jdk/src/share/classes/javax/imageio/spi/ImageReaderSpi.java b/jdk/src/share/classes/javax/imageio/spi/ImageReaderSpi.java index 36d08e6cfdb..9ce6de36c66 100644 --- a/jdk/src/share/classes/javax/imageio/spi/ImageReaderSpi.java +++ b/jdk/src/share/classes/javax/imageio/spi/ImageReaderSpi.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -237,7 +237,7 @@ public abstract class ImageReaderSpi extends ImageReaderWriterSpi { // If length == 0, leave it null if (writerSpiNames != null && writerSpiNames.length > 0) { - this.writerSpiNames = (String[])writerSpiNames.clone(); + this.writerSpiNames = writerSpiNames.clone(); } } @@ -255,7 +255,7 @@ public abstract class ImageReaderSpi extends ImageReaderWriterSpi { * Classobjects of length at least 1. */ public Class[] getInputTypes() { - return (Class[])inputTypes.clone(); + return inputTypes.clone(); } /** @@ -408,6 +408,6 @@ public abstract class ImageReaderSpi extends ImageReaderWriterSpi { */ public String[] getImageWriterSpiNames() { return writerSpiNames == null ? - null : (String[])writerSpiNames.clone(); + null : writerSpiNames.clone(); } } diff --git a/jdk/src/share/classes/javax/imageio/spi/ImageReaderWriterSpi.java b/jdk/src/share/classes/javax/imageio/spi/ImageReaderWriterSpi.java index 60c049d1eb4..4a5dd1416f4 100644 --- a/jdk/src/share/classes/javax/imageio/spi/ImageReaderWriterSpi.java +++ b/jdk/src/share/classes/javax/imageio/spi/ImageReaderWriterSpi.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -239,14 +239,14 @@ public abstract class ImageReaderWriterSpi extends IIOServiceProvider { throw new IllegalArgumentException("pluginClassName == null!"); } - this.names = (String[])names.clone(); + this.names = names.clone(); // If length == 0, leave it null if (suffixes != null && suffixes.length > 0) { - this.suffixes = (String[])suffixes.clone(); + this.suffixes = suffixes.clone(); } // If length == 0, leave it null if (MIMETypes != null && MIMETypes.length > 0) { - this.MIMETypes = (String[])MIMETypes.clone(); + this.MIMETypes = MIMETypes.clone(); } this.pluginClassName = pluginClassName; @@ -259,13 +259,13 @@ public abstract class ImageReaderWriterSpi extends IIOServiceProvider { if (extraStreamMetadataFormatNames != null && extraStreamMetadataFormatNames.length > 0) { this.extraStreamMetadataFormatNames = - (String[])extraStreamMetadataFormatNames.clone(); + extraStreamMetadataFormatNames.clone(); } // If length == 0, leave it null if (extraStreamMetadataFormatClassNames != null && extraStreamMetadataFormatClassNames.length > 0) { this.extraStreamMetadataFormatClassNames = - (String[])extraStreamMetadataFormatClassNames.clone(); + extraStreamMetadataFormatClassNames.clone(); } this.supportsStandardImageMetadataFormat = supportsStandardImageMetadataFormat; @@ -276,13 +276,13 @@ public abstract class ImageReaderWriterSpi extends IIOServiceProvider { if (extraImageMetadataFormatNames != null && extraImageMetadataFormatNames.length > 0) { this.extraImageMetadataFormatNames = - (String[])extraImageMetadataFormatNames.clone(); + extraImageMetadataFormatNames.clone(); } // If length == 0, leave it null if (extraImageMetadataFormatClassNames != null && extraImageMetadataFormatClassNames.length > 0) { this.extraImageMetadataFormatClassNames = - (String[])extraImageMetadataFormatClassNames.clone(); + extraImageMetadataFormatClassNames.clone(); } } @@ -308,7 +308,7 @@ public abstract class ImageReaderWriterSpi extends IIOServiceProvider { * associated with this reader or writer. */ public String[] getFormatNames() { - return (String[])names.clone(); + return names.clone(); } /** @@ -332,7 +332,7 @@ public abstract class ImageReaderWriterSpi extends IIOServiceProvider { * writer, or null. */ public String[] getFileSuffixes() { - return suffixes == null ? null : (String[])suffixes.clone(); + return suffixes == null ? null : suffixes.clone(); } /** @@ -367,7 +367,7 @@ public abstract class ImageReaderWriterSpi extends IIOServiceProvider { * null. */ public String[] getMIMETypes() { - return MIMETypes == null ? null : (String[])MIMETypes.clone(); + return MIMETypes == null ? null : MIMETypes.clone(); } /** @@ -443,7 +443,7 @@ public abstract class ImageReaderWriterSpi extends IIOServiceProvider { */ public String[] getExtraStreamMetadataFormatNames() { return extraStreamMetadataFormatNames == null ? - null : (String[])extraStreamMetadataFormatNames.clone(); + null : extraStreamMetadataFormatNames.clone(); } /** @@ -507,7 +507,7 @@ public abstract class ImageReaderWriterSpi extends IIOServiceProvider { */ public String[] getExtraImageMetadataFormatNames() { return extraImageMetadataFormatNames == null ? - null : (String[])extraImageMetadataFormatNames.clone(); + null : extraImageMetadataFormatNames.clone(); } /** diff --git a/jdk/src/share/classes/javax/imageio/spi/ImageWriterSpi.java b/jdk/src/share/classes/javax/imageio/spi/ImageWriterSpi.java index 7fc1a334a9f..19d17145452 100644 --- a/jdk/src/share/classes/javax/imageio/spi/ImageWriterSpi.java +++ b/jdk/src/share/classes/javax/imageio/spi/ImageWriterSpi.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -238,7 +238,7 @@ public abstract class ImageWriterSpi extends ImageReaderWriterSpi { // If length == 0, leave it null if (readerSpiNames != null && readerSpiNames.length > 0) { - this.readerSpiNames = (String[])readerSpiNames.clone(); + this.readerSpiNames = readerSpiNames.clone(); } } @@ -268,7 +268,7 @@ public abstract class ImageWriterSpi extends ImageReaderWriterSpi { * Classobjects of length at least 1. */ public Class[] getOutputTypes() { - return (Class[])outputTypes.clone(); + return outputTypes.clone(); } /** @@ -435,6 +435,6 @@ public abstract class ImageWriterSpi extends ImageReaderWriterSpi { */ public String[] getImageReaderSpiNames() { return readerSpiNames == null ? - null : (String[])readerSpiNames.clone(); + null : readerSpiNames.clone(); } } diff --git a/jdk/src/share/classes/javax/management/remote/JMXServiceURL.java b/jdk/src/share/classes/javax/management/remote/JMXServiceURL.java index 4b1c376eda1..4f9c36e9509 100644 --- a/jdk/src/share/classes/javax/management/remote/JMXServiceURL.java +++ b/jdk/src/share/classes/javax/management/remote/JMXServiceURL.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -344,7 +344,7 @@ public class JMXServiceURL implements Serializable { private void readObject(ObjectInputStream inputStream) throws IOException, ClassNotFoundException { ObjectInputStream.GetField gf = inputStream.readFields(); String h = (String)gf.get("host", null); - int p = (int)gf.get("port", -1); + int p = gf.get("port", -1); String proto = (String)gf.get("protocol", null); String url = (String)gf.get("urlPath", null); diff --git a/jdk/src/share/classes/javax/print/DocFlavor.java b/jdk/src/share/classes/javax/print/DocFlavor.java index 1d5464edb10..3c94623c222 100644 --- a/jdk/src/share/classes/javax/print/DocFlavor.java +++ b/jdk/src/share/classes/javax/print/DocFlavor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -460,7 +460,7 @@ public class DocFlavor implements Serializable, Cloneable { static { hostEncoding = - (String)java.security.AccessController.doPrivileged( + java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction("file.encoding")); } diff --git a/jdk/src/share/classes/javax/print/attribute/HashAttributeSet.java b/jdk/src/share/classes/javax/print/attribute/HashAttributeSet.java index f8d9aa99298..a1995014525 100644 --- a/jdk/src/share/classes/javax/print/attribute/HashAttributeSet.java +++ b/jdk/src/share/classes/javax/print/attribute/HashAttributeSet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -382,7 +382,7 @@ public class HashAttributeSet implements AttributeSet, Serializable { return attribute != null && attribute instanceof Attribute && - attribute.equals(attrMap.get(((Attribute)attribute).getCategory())); + attribute.equals(attrMap.get(attribute.getCategory())); } /** diff --git a/jdk/src/share/classes/javax/print/attribute/standard/Compression.java b/jdk/src/share/classes/javax/print/attribute/standard/Compression.java index 5679a73f850..8dbbfaf8aa1 100644 --- a/jdk/src/share/classes/javax/print/attribute/standard/Compression.java +++ b/jdk/src/share/classes/javax/print/attribute/standard/Compression.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -94,7 +94,7 @@ public class Compression extends EnumSyntax implements DocAttribute { * Returns the string table for class Compression. */ protected String[] getStringTable() { - return (String[])myStringTable.clone(); + return myStringTable.clone(); } /** diff --git a/jdk/src/share/classes/javax/print/attribute/standard/Finishings.java b/jdk/src/share/classes/javax/print/attribute/standard/Finishings.java index 413bc7d1f47..cc21389cbaf 100644 --- a/jdk/src/share/classes/javax/print/attribute/standard/Finishings.java +++ b/jdk/src/share/classes/javax/print/attribute/standard/Finishings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -430,7 +430,7 @@ public class Finishings extends EnumSyntax * Returns the string table for class Finishings. */ protected String[] getStringTable() { - return (String[])myStringTable.clone(); + return myStringTable.clone(); } /** diff --git a/jdk/src/share/classes/javax/print/attribute/standard/JobSheets.java b/jdk/src/share/classes/javax/print/attribute/standard/JobSheets.java index 7919000ad97..a9811135325 100644 --- a/jdk/src/share/classes/javax/print/attribute/standard/JobSheets.java +++ b/jdk/src/share/classes/javax/print/attribute/standard/JobSheets.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -94,7 +94,7 @@ public class JobSheets extends EnumSyntax * Returns the string table for class JobSheets. */ protected String[] getStringTable() { - return (String[])myStringTable.clone(); + return myStringTable.clone(); } /** diff --git a/jdk/src/share/classes/javax/print/attribute/standard/JobStateReason.java b/jdk/src/share/classes/javax/print/attribute/standard/JobStateReason.java index f835666d884..a3de1c5c9ff 100644 --- a/jdk/src/share/classes/javax/print/attribute/standard/JobStateReason.java +++ b/jdk/src/share/classes/javax/print/attribute/standard/JobStateReason.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -420,7 +420,7 @@ public class JobStateReason extends EnumSyntax implements Attribute { * Returns the string table for class JobStateReason. */ protected String[] getStringTable() { - return (String[])myStringTable.clone(); + return myStringTable.clone(); } /** diff --git a/jdk/src/share/classes/javax/print/attribute/standard/JobStateReasons.java b/jdk/src/share/classes/javax/print/attribute/standard/JobStateReasons.java index d9e225f621f..19ea46f2367 100644 --- a/jdk/src/share/classes/javax/print/attribute/standard/JobStateReasons.java +++ b/jdk/src/share/classes/javax/print/attribute/standard/JobStateReasons.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -149,7 +149,7 @@ public final class JobStateReasons if (o == null) { throw new NullPointerException(); } - return super.add ((JobStateReason) o); + return super.add(o); } /** diff --git a/jdk/src/share/classes/javax/print/attribute/standard/MediaName.java b/jdk/src/share/classes/javax/print/attribute/standard/MediaName.java index 78ae6a82d0a..28772c1ae83 100644 --- a/jdk/src/share/classes/javax/print/attribute/standard/MediaName.java +++ b/jdk/src/share/classes/javax/print/attribute/standard/MediaName.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -98,7 +98,7 @@ public class MediaName extends Media implements Attribute { */ protected String[] getStringTable() { - return (String[])myStringTable.clone(); + return myStringTable.clone(); } /** diff --git a/jdk/src/share/classes/javax/print/attribute/standard/MediaSizeName.java b/jdk/src/share/classes/javax/print/attribute/standard/MediaSizeName.java index 8dae36f9783..bbb266ba891 100644 --- a/jdk/src/share/classes/javax/print/attribute/standard/MediaSizeName.java +++ b/jdk/src/share/classes/javax/print/attribute/standard/MediaSizeName.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -550,7 +550,7 @@ public class MediaSizeName extends Media { */ protected String[] getStringTable() { - return (String[])myStringTable.clone(); + return myStringTable.clone(); } /** diff --git a/jdk/src/share/classes/javax/print/attribute/standard/MediaTray.java b/jdk/src/share/classes/javax/print/attribute/standard/MediaTray.java index 318a2e7c778..9a4da0a408e 100644 --- a/jdk/src/share/classes/javax/print/attribute/standard/MediaTray.java +++ b/jdk/src/share/classes/javax/print/attribute/standard/MediaTray.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -124,7 +124,7 @@ public class MediaTray extends Media implements Attribute { */ protected String[] getStringTable() { - return (String[])myStringTable.clone(); + return myStringTable.clone(); } /** diff --git a/jdk/src/share/classes/javax/print/attribute/standard/MultipleDocumentHandling.java b/jdk/src/share/classes/javax/print/attribute/standard/MultipleDocumentHandling.java index 0ddbbe5d296..c7f5f5e7664 100644 --- a/jdk/src/share/classes/javax/print/attribute/standard/MultipleDocumentHandling.java +++ b/jdk/src/share/classes/javax/print/attribute/standard/MultipleDocumentHandling.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -228,7 +228,7 @@ public class MultipleDocumentHandling extends EnumSyntax * Returns the string table for class MultipleDocumentHandling. */ protected String[] getStringTable() { - return (String[])myStringTable.clone(); + return myStringTable.clone(); } /** diff --git a/jdk/src/share/classes/javax/print/attribute/standard/PDLOverrideSupported.java b/jdk/src/share/classes/javax/print/attribute/standard/PDLOverrideSupported.java index a362da86656..8f1ce4eda9a 100644 --- a/jdk/src/share/classes/javax/print/attribute/standard/PDLOverrideSupported.java +++ b/jdk/src/share/classes/javax/print/attribute/standard/PDLOverrideSupported.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -88,7 +88,7 @@ public class PDLOverrideSupported extends EnumSyntax * Returns the string table for class PDLOverrideSupported. */ protected String[] getStringTable() { - return (String[])myStringTable.clone(); + return myStringTable.clone(); } /** diff --git a/jdk/src/share/classes/javax/print/attribute/standard/PrintQuality.java b/jdk/src/share/classes/javax/print/attribute/standard/PrintQuality.java index 3a644cff6c9..1ed3caf8254 100644 --- a/jdk/src/share/classes/javax/print/attribute/standard/PrintQuality.java +++ b/jdk/src/share/classes/javax/print/attribute/standard/PrintQuality.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -88,7 +88,7 @@ public class PrintQuality extends EnumSyntax * Returns the string table for class PrintQuality. */ protected String[] getStringTable() { - return (String[])myStringTable.clone(); + return myStringTable.clone(); } /** diff --git a/jdk/src/share/classes/javax/print/attribute/standard/PrinterStateReason.java b/jdk/src/share/classes/javax/print/attribute/standard/PrinterStateReason.java index b461a5d0dad..5c4f48f8853 100644 --- a/jdk/src/share/classes/javax/print/attribute/standard/PrinterStateReason.java +++ b/jdk/src/share/classes/javax/print/attribute/standard/PrinterStateReason.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -403,7 +403,7 @@ public class PrinterStateReason extends EnumSyntax implements Attribute { * Returns the string table for class PrinterStateReason. */ protected String[] getStringTable() { - return (String[])myStringTable.clone(); + return myStringTable.clone(); } /** diff --git a/jdk/src/share/classes/javax/sound/midi/MidiFileFormat.java b/jdk/src/share/classes/javax/sound/midi/MidiFileFormat.java index 1d4669a2458..0d496490dd0 100644 --- a/jdk/src/share/classes/javax/sound/midi/MidiFileFormat.java +++ b/jdk/src/share/classes/javax/sound/midi/MidiFileFormat.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -273,7 +273,7 @@ public class MidiFileFormat { } else { ret = (Map) (properties.clone()); } - return (Map) Collections.unmodifiableMap(ret); + return Collections.unmodifiableMap(ret); } diff --git a/jdk/src/share/classes/javax/sound/midi/MidiSystem.java b/jdk/src/share/classes/javax/sound/midi/MidiSystem.java index ac13aa58a86..d0eab92865e 100644 --- a/jdk/src/share/classes/javax/sound/midi/MidiSystem.java +++ b/jdk/src/share/classes/javax/sound/midi/MidiSystem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -472,7 +472,7 @@ public class MidiSystem { } catch (MidiUnavailableException e) { // something went wrong with synth if (e instanceof MidiUnavailableException) { - mue = (MidiUnavailableException) e; + mue = e; } } if (rec == null) { diff --git a/jdk/src/share/classes/javax/sound/midi/Sequence.java b/jdk/src/share/classes/javax/sound/midi/Sequence.java index 7fb0778beda..14cb66110ed 100644 --- a/jdk/src/share/classes/javax/sound/midi/Sequence.java +++ b/jdk/src/share/classes/javax/sound/midi/Sequence.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -284,7 +284,7 @@ public class Sequence { */ public Track[] getTracks() { - return (Track[]) tracks.toArray(new Track[tracks.size()]); + return tracks.toArray(new Track[tracks.size()]); } @@ -312,7 +312,7 @@ public class Sequence { synchronized(tracks) { for(int i=0; ilength ) { length = temp; } diff --git a/jdk/src/share/classes/javax/sound/sampled/AudioFileFormat.java b/jdk/src/share/classes/javax/sound/sampled/AudioFileFormat.java index 659399e616f..63f43dcc160 100644 --- a/jdk/src/share/classes/javax/sound/sampled/AudioFileFormat.java +++ b/jdk/src/share/classes/javax/sound/sampled/AudioFileFormat.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -251,7 +251,7 @@ public class AudioFileFormat { } else { ret = (Map) (properties.clone()); } - return (Map) Collections.unmodifiableMap(ret); + return Collections.unmodifiableMap(ret); } diff --git a/jdk/src/share/classes/javax/sound/sampled/AudioFormat.java b/jdk/src/share/classes/javax/sound/sampled/AudioFormat.java index 775331f6ba6..cd084fcd32d 100644 --- a/jdk/src/share/classes/javax/sound/sampled/AudioFormat.java +++ b/jdk/src/share/classes/javax/sound/sampled/AudioFormat.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -403,7 +403,7 @@ public class AudioFormat { } else { ret = (Map) (properties.clone()); } - return (Map) Collections.unmodifiableMap(ret); + return Collections.unmodifiableMap(ret); } diff --git a/jdk/src/share/classes/javax/sound/sampled/AudioSystem.java b/jdk/src/share/classes/javax/sound/sampled/AudioSystem.java index 97e7af39c7e..17c0f26d6fb 100644 --- a/jdk/src/share/classes/javax/sound/sampled/AudioSystem.java +++ b/jdk/src/share/classes/javax/sound/sampled/AudioSystem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -1609,8 +1609,7 @@ public class AudioSystem { Mixer.Info[] allInfos; // for all mixers for(int i = 0; i < providers.size(); i++ ) { - someInfos = (Mixer.Info[]) - ((MixerProvider)providers.get(i)).getMixerInfo(); + someInfos = ((MixerProvider)providers.get(i)).getMixerInfo(); for (int j = 0; j < someInfos.length; j++) { infos.add(someInfos[j]); diff --git a/jdk/src/share/classes/javax/swing/MenuSelectionManager.java b/jdk/src/share/classes/javax/swing/MenuSelectionManager.java index 4de2ac804ad..8bde555e018 100644 --- a/jdk/src/share/classes/javax/swing/MenuSelectionManager.java +++ b/jdk/src/share/classes/javax/swing/MenuSelectionManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -246,7 +246,7 @@ public class MenuSelectionManager { selectionSize = tmp.size(); boolean success = false; for (i=selectionSize - 1;i >= 0 && success == false; i--) { - menuElement = (MenuElement) tmp.elementAt(i); + menuElement = tmp.elementAt(i); subElements = menuElement.getSubElements(); path = null; @@ -277,7 +277,7 @@ public class MenuSelectionManager { if(path == null) { path = new MenuElement[i+2]; for(k=0;k<=i;k++) - path[k] = (MenuElement)tmp.elementAt(k); + path[k] = tmp.elementAt(k); } path[i+1] = subElements[j]; MenuElement currentSelection[] = getSelectedPath(); @@ -388,7 +388,7 @@ public class MenuSelectionManager { tmp = (Vector)selection.clone(); selectionSize = tmp.size(); for(i=selectionSize - 1 ; i >= 0 ; i--) { - menuElement = (MenuElement) tmp.elementAt(i); + menuElement = tmp.elementAt(i); subElements = menuElement.getSubElements(); for(j = 0, d = subElements.length ; j < d ; j++) { diff --git a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java index d37cb62880c..bf3109c49d9 100644 --- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java +++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java @@ -85,7 +85,7 @@ public final class DOMPGPData extends DOMStructure implements PGPData { } } } - this.keyPacket = (byte[])keyPacket.clone(); + this.keyPacket = keyPacket.clone(); checkKeyPacket(keyPacket); this.keyId = null; } @@ -132,9 +132,9 @@ public final class DOMPGPData extends DOMStructure implements PGPData { } } } - this.keyId = (byte[])keyId.clone(); + this.keyId = keyId.clone(); this.keyPacket = keyPacket == null ? null - : (byte[])keyPacket.clone(); + : keyPacket.clone(); if (keyPacket != null) { checkKeyPacket(keyPacket); } @@ -177,11 +177,11 @@ public final class DOMPGPData extends DOMStructure implements PGPData { } public byte[] getKeyId() { - return (keyId == null ? null : (byte[])keyId.clone()); + return (keyId == null ? null : keyId.clone()); } public byte[] getKeyPacket() { - return (keyPacket == null ? null : (byte[])keyPacket.clone()); + return (keyPacket == null ? null : keyPacket.clone()); } public List getExternalElements() { diff --git a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMReference.java b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMReference.java index f80df4dac42..de4f9f833d1 100644 --- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMReference.java +++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMReference.java @@ -182,7 +182,7 @@ public final class DOMReference extends DOMStructure this.type = type; this.id = id; if (digestValue != null) { - this.digestValue = (byte[])digestValue.clone(); + this.digestValue = digestValue.clone(); this.digested = true; } this.appliedTransformData = result; @@ -298,12 +298,12 @@ public final class DOMReference extends DOMStructure } public byte[] getDigestValue() { - return (digestValue == null ? null : (byte[])digestValue.clone()); + return (digestValue == null ? null : digestValue.clone()); } public byte[] getCalculatedDigestValue() { return (calcDigestValue == null ? null - : (byte[])calcDigestValue.clone()); + : calcDigestValue.clone()); } public void marshal(Node parent, String dsPrefix, DOMCryptoContext context) diff --git a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignature.java b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignature.java index 32c1dcf06c0..e2cbf656993 100644 --- a/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignature.java +++ b/jdk/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignature.java @@ -535,7 +535,7 @@ public final class DOMXMLSignature extends DOMStructure } public byte[] getValue() { - return (value == null) ? null : (byte[])value.clone(); + return (value == null) ? null : value.clone(); } public boolean validate(XMLValidateContext validateContext) diff --git a/jdk/src/share/classes/sun/applet/AppletMessageHandler.java b/jdk/src/share/classes/sun/applet/AppletMessageHandler.java index 44e208c626f..d05dc0bfc19 100644 --- a/jdk/src/share/classes/sun/applet/AppletMessageHandler.java +++ b/jdk/src/share/classes/sun/applet/AppletMessageHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 1997, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, 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 @@ -53,11 +53,11 @@ class AppletMessageHandler { } String getMessage(String key) { - return (String)rb.getString(getQualifiedKey(key)); + return rb.getString(getQualifiedKey(key)); } String getMessage(String key, Object arg){ - String basemsgfmt = (String)rb.getString(getQualifiedKey(key)); + String basemsgfmt = rb.getString(getQualifiedKey(key)); MessageFormat msgfmt = new MessageFormat(basemsgfmt); Object msgobj[] = new Object[1]; if (arg == null) { @@ -68,7 +68,7 @@ class AppletMessageHandler { } String getMessage(String key, Object arg1, Object arg2) { - String basemsgfmt = (String)rb.getString(getQualifiedKey(key)); + String basemsgfmt = rb.getString(getQualifiedKey(key)); MessageFormat msgfmt = new MessageFormat(basemsgfmt); Object msgobj[] = new Object[2]; if (arg1 == null) { @@ -83,7 +83,7 @@ class AppletMessageHandler { } String getMessage(String key, Object arg1, Object arg2, Object arg3) { - String basemsgfmt = (String)rb.getString(getQualifiedKey(key)); + String basemsgfmt = rb.getString(getQualifiedKey(key)); MessageFormat msgfmt = new MessageFormat(basemsgfmt); Object msgobj[] = new Object[3]; if (arg1 == null) { @@ -102,7 +102,7 @@ class AppletMessageHandler { } String getMessage(String key, Object arg[]) { - String basemsgfmt = (String)rb.getString(getQualifiedKey(key)); + String basemsgfmt = rb.getString(getQualifiedKey(key)); MessageFormat msgfmt = new MessageFormat(basemsgfmt); return msgfmt.format(arg); } diff --git a/jdk/src/share/classes/sun/applet/AppletPanel.java b/jdk/src/share/classes/sun/applet/AppletPanel.java index 2d1da2cdac0..52ddab9e5db 100644 --- a/jdk/src/share/classes/sun/applet/AppletPanel.java +++ b/jdk/src/share/classes/sun/applet/AppletPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, 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 @@ -1215,8 +1215,8 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { synchronized(appletClass) { // Determine if the JDK level of an applet has been // checked before. - Boolean jdk11Target = (Boolean) loader.isJDK11Target(appletClass); - Boolean jdk12Target = (Boolean) loader.isJDK12Target(appletClass); + Boolean jdk11Target = loader.isJDK11Target(appletClass); + Boolean jdk12Target = loader.isJDK12Target(appletClass); // if applet JDK level has been checked before, retrieve // value and return. diff --git a/jdk/src/share/classes/sun/applet/AppletProps.java b/jdk/src/share/classes/sun/applet/AppletProps.java index 429afdcc41c..38a76a4afc2 100644 --- a/jdk/src/share/classes/sun/applet/AppletProps.java +++ b/jdk/src/share/classes/sun/applet/AppletProps.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, 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 @@ -75,12 +75,12 @@ class AppletProps extends Frame { if (security != null) security.reset(); - String proxyhost = (String) AccessController.doPrivileged( + String proxyhost = AccessController.doPrivileged( new GetPropertyAction("http.proxyHost")); - String proxyport = (String) AccessController.doPrivileged( + String proxyport = AccessController.doPrivileged( new GetPropertyAction("http.proxyPort")); - Boolean tmp = (Boolean) AccessController.doPrivileged( + Boolean tmp = AccessController.doPrivileged( new GetBooleanAction("package.restrict.access.sun")); boolean packageRestrict = tmp.booleanValue(); diff --git a/jdk/src/share/classes/sun/applet/Main.java b/jdk/src/share/classes/sun/applet/Main.java index 23670743740..0ce2c129b75 100644 --- a/jdk/src/share/classes/sun/applet/Main.java +++ b/jdk/src/share/classes/sun/applet/Main.java @@ -369,7 +369,7 @@ public class Main { Properties sysProps = System.getProperties(); for (Enumeration e = sysProps.propertyNames(); e.hasMoreElements(); ) { String key = (String) e.nextElement(); - String val = (String) sysProps.getProperty(key); + String val = sysProps.getProperty(key); String oldVal; if ((oldVal = (String) avProps.setProperty(key, val)) != null) System.err.println(lookup("main.warn.prop.overwrite", key, diff --git a/jdk/src/share/classes/sun/audio/AudioStream.java b/jdk/src/share/classes/sun/audio/AudioStream.java index 7fdf2559b97..266f5eb88ef 100644 --- a/jdk/src/share/classes/sun/audio/AudioStream.java +++ b/jdk/src/share/classes/sun/audio/AudioStream.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -133,7 +133,7 @@ public final class AudioStream extends FilterInputStream { ais.getFormat().getFrameSize() ); } else if ( midiformat != null ) { - return (int) midiformat.getByteLength(); + return midiformat.getByteLength(); } else { return -1; diff --git a/jdk/src/share/classes/sun/awt/FontConfiguration.java b/jdk/src/share/classes/sun/awt/FontConfiguration.java index e779316cb91..5d8b35ebe39 100644 --- a/jdk/src/share/classes/sun/awt/FontConfiguration.java +++ b/jdk/src/share/classes/sun/awt/FontConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, 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 @@ -1504,10 +1504,10 @@ public abstract class FontConfiguration { printTable(table_elcIDs, 0); System.out.println("\n----sequences-------------"); for (int ii = 0; ii< table_elcIDs.length; ii++) { - System.out.println(" " + ii + "/" + getString((short)table_elcIDs[ii])); + System.out.println(" " + ii + "/" + getString(table_elcIDs[ii])); short[] ss = getShortArray(table_sequences[ii * NUM_FONTS + 0]); for (int jj = 0; jj < ss.length; jj++) { - System.out.println(" " + getString((short)table_scriptIDs[ss[jj]])); + System.out.println(" " + getString(table_scriptIDs[ss[jj]])); } } System.out.println("\n----fontfileNameIDs-------"); @@ -1533,9 +1533,9 @@ public abstract class FontConfiguration { System.out.println("\n----proportionals--------"); for (int ii = 0; ii < table_proportionals.length; ii++) { System.out.println(" " - + getString((short)table_componentFontNameIDs[table_proportionals[ii++]]) + + getString(table_componentFontNameIDs[table_proportionals[ii++]]) + " -> " - + getString((short)table_componentFontNameIDs[table_proportionals[ii]])); + + getString(table_componentFontNameIDs[table_proportionals[ii]])); } int i = 0; System.out.println("\n----alphabeticSuffix----"); diff --git a/jdk/src/share/classes/sun/awt/FontDescriptor.java b/jdk/src/share/classes/sun/awt/FontDescriptor.java index fc1df5a2a50..0a4f0045906 100644 --- a/jdk/src/share/classes/sun/awt/FontDescriptor.java +++ b/jdk/src/share/classes/sun/awt/FontDescriptor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, 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 @@ -113,7 +113,7 @@ public class FontDescriptor implements Cloneable { } static boolean isLE; static { - String enc = (String) java.security.AccessController.doPrivileged( + String enc = java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction("sun.io.unicode.encoding", "UnicodeBig")); isLE = !"UnicodeBig".equals(enc); diff --git a/jdk/src/share/classes/sun/awt/IconInfo.java b/jdk/src/share/classes/sun/awt/IconInfo.java index 0ae1f733e05..8473fdee764 100644 --- a/jdk/src/share/classes/sun/awt/IconInfo.java +++ b/jdk/src/share/classes/sun/awt/IconInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2006, 2014, 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 @@ -182,7 +182,7 @@ public class IconInfo { private static long[] intArrayToLongArray(int[] intData) { long[] longData = new long[intData.length]; for (int i = 0; i < intData.length; i++) { - longData[i] = (int)intData[i]; + longData[i] = intData[i]; } return longData; } diff --git a/jdk/src/share/classes/sun/awt/PlatformFont.java b/jdk/src/share/classes/sun/awt/PlatformFont.java index 8b34c5c443a..f88b192715f 100644 --- a/jdk/src/share/classes/sun/awt/PlatformFont.java +++ b/jdk/src/share/classes/sun/awt/PlatformFont.java @@ -270,7 +270,7 @@ public abstract class PlatformFont implements FontPeer { currentDefaultChar = data[stringIndex]; // Note that cache sizes must be a power of two! - cacheIndex = (int)(currentDefaultChar & PlatformFont.FONTCACHEMASK); + cacheIndex = (currentDefaultChar & PlatformFont.FONTCACHEMASK); theChar = (PlatformFontCache)getFontCache()[cacheIndex]; @@ -280,7 +280,7 @@ public abstract class PlatformFont implements FontPeer { /* find a converter that can convert the current character */ currentFontDescriptor = defaultFont; currentDefaultChar = defaultChar; - char ch = (char)data[stringIndex]; + char ch = data[stringIndex]; int componentCount = componentFonts.length; for (int j = 0; j < componentCount; j++) { diff --git a/jdk/src/share/classes/sun/awt/datatransfer/ClipboardTransferable.java b/jdk/src/share/classes/sun/awt/datatransfer/ClipboardTransferable.java index 4335a3567b6..110d7bd532f 100644 --- a/jdk/src/share/classes/sun/awt/datatransfer/ClipboardTransferable.java +++ b/jdk/src/share/classes/sun/awt/datatransfer/ClipboardTransferable.java @@ -144,7 +144,7 @@ public class ClipboardTransferable implements Transferable { } public DataFlavor[] getTransferDataFlavors() { - return (DataFlavor[])flavors.clone(); + return flavors.clone(); } public boolean isDataFlavorSupported(DataFlavor flavor) { diff --git a/jdk/src/share/classes/sun/awt/image/ByteBandedRaster.java b/jdk/src/share/classes/sun/awt/image/ByteBandedRaster.java index e3277160b70..78903979d6f 100644 --- a/jdk/src/share/classes/sun/awt/image/ByteBandedRaster.java +++ b/jdk/src/share/classes/sun/awt/image/ByteBandedRaster.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -169,7 +169,7 @@ public class ByteBandedRaster extends SunWritableRaster { * of the band. */ public int[] getDataOffsets() { - return (int[])dataOffsets.clone(); + return dataOffsets.clone(); } /** diff --git a/jdk/src/share/classes/sun/awt/image/ByteComponentRaster.java b/jdk/src/share/classes/sun/awt/image/ByteComponentRaster.java index 13954f3a364..9695d3a0df8 100644 --- a/jdk/src/share/classes/sun/awt/image/ByteComponentRaster.java +++ b/jdk/src/share/classes/sun/awt/image/ByteComponentRaster.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -207,7 +207,7 @@ public class ByteComponentRaster extends SunWritableRaster { * band. */ public int[] getDataOffsets() { - return (int[]) dataOffsets.clone(); + return dataOffsets.clone(); } /** diff --git a/jdk/src/share/classes/sun/awt/image/ByteInterleavedRaster.java b/jdk/src/share/classes/sun/awt/image/ByteInterleavedRaster.java index 4279ce1f90a..ec0fef12623 100644 --- a/jdk/src/share/classes/sun/awt/image/ByteInterleavedRaster.java +++ b/jdk/src/share/classes/sun/awt/image/ByteInterleavedRaster.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -259,7 +259,7 @@ public class ByteInterleavedRaster extends ByteComponentRaster { * band. */ public int[] getDataOffsets() { - return (int[]) dataOffsets.clone(); + return dataOffsets.clone(); } /** diff --git a/jdk/src/share/classes/sun/awt/image/IntegerComponentRaster.java b/jdk/src/share/classes/sun/awt/image/IntegerComponentRaster.java index 2f495971cf4..a95ce0d015d 100644 --- a/jdk/src/share/classes/sun/awt/image/IntegerComponentRaster.java +++ b/jdk/src/share/classes/sun/awt/image/IntegerComponentRaster.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -218,7 +218,7 @@ public class IntegerComponentRaster extends SunWritableRaster { * band. */ public int[] getDataOffsets() { - return (int[]) dataOffsets.clone(); + return dataOffsets.clone(); } /** diff --git a/jdk/src/share/classes/sun/awt/image/IntegerInterleavedRaster.java b/jdk/src/share/classes/sun/awt/image/IntegerInterleavedRaster.java index 2d0d22ec59c..b226f07efcb 100644 --- a/jdk/src/share/classes/sun/awt/image/IntegerInterleavedRaster.java +++ b/jdk/src/share/classes/sun/awt/image/IntegerInterleavedRaster.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -161,7 +161,7 @@ public class IntegerInterleavedRaster extends IntegerComponentRaster { * band. */ public int[] getDataOffsets() { - return (int[]) dataOffsets.clone(); + return dataOffsets.clone(); } /** diff --git a/jdk/src/share/classes/sun/awt/image/ShortBandedRaster.java b/jdk/src/share/classes/sun/awt/image/ShortBandedRaster.java index 058a2573c09..45ef9eb21f3 100644 --- a/jdk/src/share/classes/sun/awt/image/ShortBandedRaster.java +++ b/jdk/src/share/classes/sun/awt/image/ShortBandedRaster.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -165,7 +165,7 @@ public class ShortBandedRaster extends SunWritableRaster { * band. */ public int[] getDataOffsets() { - return (int[]) dataOffsets.clone(); + return dataOffsets.clone(); } /** diff --git a/jdk/src/share/classes/sun/awt/image/ShortComponentRaster.java b/jdk/src/share/classes/sun/awt/image/ShortComponentRaster.java index a84da635599..53f3ff3e3e6 100644 --- a/jdk/src/share/classes/sun/awt/image/ShortComponentRaster.java +++ b/jdk/src/share/classes/sun/awt/image/ShortComponentRaster.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -207,7 +207,7 @@ public class ShortComponentRaster extends SunWritableRaster { * band. */ public int[] getDataOffsets() { - return (int[]) dataOffsets.clone(); + return dataOffsets.clone(); } /** @@ -470,7 +470,7 @@ public class ShortComponentRaster extends SunWritableRaster { int off = (y-minY)*scanlineStride + (x-minX)*pixelStride; for (int i = 0; i < numDataElements; i++) { - data[dataOffsets[i] + off] = (short) inData[i]; + data[dataOffsets[i] + off] = inData[i]; } markDirty(); @@ -576,7 +576,7 @@ public class ShortComponentRaster extends SunWritableRaster { xoff = yoff; for (xstart=0; xstart < w; xstart++, xoff += pixelStride) { for (int c = 0; c < numDataElements; c++) { - data[dataOffsets[c] + xoff] = (short) inData[off++]; + data[dataOffsets[c] + xoff] = inData[off++]; } } } diff --git a/jdk/src/share/classes/sun/awt/image/ShortInterleavedRaster.java b/jdk/src/share/classes/sun/awt/image/ShortInterleavedRaster.java index c55d111d7fd..4602c19aab0 100644 --- a/jdk/src/share/classes/sun/awt/image/ShortInterleavedRaster.java +++ b/jdk/src/share/classes/sun/awt/image/ShortInterleavedRaster.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -180,7 +180,7 @@ public class ShortInterleavedRaster extends ShortComponentRaster { * band. */ public int[] getDataOffsets() { - return (int[]) dataOffsets.clone(); + return dataOffsets.clone(); } /** @@ -443,7 +443,7 @@ public class ShortInterleavedRaster extends ShortComponentRaster { int off = (y-minY)*scanlineStride + (x-minX)*pixelStride; for (int i = 0; i < numDataElements; i++) { - data[dataOffsets[i] + off] = (short) inData[i]; + data[dataOffsets[i] + off] = inData[i]; } markDirty(); } @@ -548,7 +548,7 @@ public class ShortInterleavedRaster extends ShortComponentRaster { xoff = yoff; for (xstart=0; xstart < w; xstart++, xoff += pixelStride) { for (int c = 0; c < numDataElements; c++) { - data[dataOffsets[c] + xoff] = (short) inData[off++]; + data[dataOffsets[c] + xoff] = inData[off++]; } } } diff --git a/jdk/src/share/classes/sun/awt/image/VSyncedBSManager.java b/jdk/src/share/classes/sun/awt/image/VSyncedBSManager.java index 91cb0684244..1445795abe7 100644 --- a/jdk/src/share/classes/sun/awt/image/VSyncedBSManager.java +++ b/jdk/src/share/classes/sun/awt/image/VSyncedBSManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2014, 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,7 @@ public abstract class VSyncedBSManager { private static VSyncedBSManager theInstance; private static final boolean vSyncLimit = - Boolean.valueOf((String)java.security.AccessController.doPrivileged( + Boolean.valueOf(java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction( "sun.java2d.vsynclimit", "true"))); diff --git a/jdk/src/share/classes/sun/font/CompositeFont.java b/jdk/src/share/classes/sun/font/CompositeFont.java index 43b392b5ff2..54329695d49 100644 --- a/jdk/src/share/classes/sun/font/CompositeFont.java +++ b/jdk/src/share/classes/sun/font/CompositeFont.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -447,7 +447,7 @@ public final class CompositeFont extends Font2D { } public String toString() { - String ls = (String)java.security.AccessController.doPrivileged( + String ls = java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction("line.separator")); String componentsStr = ""; for (int i=0; i result.x) { result.x += 1; result.width -=1; @@ -912,7 +912,7 @@ public class FileFontStrike extends PhysicalStrike { if (outlineMapRef != null) { outlineMap = outlineMapRef.get(); if (outlineMap != null) { - gp = (GeneralPath)outlineMap.get(glyphCode); + gp = outlineMap.get(glyphCode); } } diff --git a/jdk/src/share/classes/sun/font/FontLineMetrics.java b/jdk/src/share/classes/sun/font/FontLineMetrics.java index 57e1ffa279b..9053ff07265 100644 --- a/jdk/src/share/classes/sun/font/FontLineMetrics.java +++ b/jdk/src/share/classes/sun/font/FontLineMetrics.java @@ -75,7 +75,7 @@ public final class FontLineMetrics extends LineMetrics implements Cloneable { } public final float[] getBaselineOffsets() { - return (float[])cm.baselineOffsets.clone(); + return cm.baselineOffsets.clone(); } public final float getStrikethroughOffset() { diff --git a/jdk/src/share/classes/sun/font/StandardGlyphVector.java b/jdk/src/share/classes/sun/font/StandardGlyphVector.java index 66001682dff..75951ac451e 100644 --- a/jdk/src/share/classes/sun/font/StandardGlyphVector.java +++ b/jdk/src/share/classes/sun/font/StandardGlyphVector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -727,7 +727,7 @@ public class StandardGlyphVector extends GlyphVector { result.clearCaches(); if (positions != null) { - result.positions = (float[])positions.clone(); + result.positions = positions.clone(); } if (gti != null) { @@ -775,7 +775,7 @@ public class StandardGlyphVector extends GlyphVector { throw new IllegalArgumentException("srcPositions.length != " + requiredLength); } - positions = (float[])srcPositions.clone(); + positions = srcPositions.clone(); clearCaches(); addFlags(FLAG_HAS_POSITION_ADJUSTMENTS); @@ -1391,8 +1391,8 @@ public class StandardGlyphVector extends GlyphVector { GlyphTransformInfo(StandardGlyphVector sgv, GlyphTransformInfo rhs) { this.sgv = sgv; - this.indices = rhs.indices == null ? null : (int[])rhs.indices.clone(); - this.transforms = rhs.transforms == null ? null : (double[])rhs.transforms.clone(); + this.indices = rhs.indices == null ? null : rhs.indices.clone(); + this.transforms = rhs.transforms == null ? null : rhs.transforms.clone(); this.strikesRef = null; // can't share cache, so rather than clone, we just null out } diff --git a/jdk/src/share/classes/sun/font/StrikeCache.java b/jdk/src/share/classes/sun/font/StrikeCache.java index 3c927ebf8b0..eeda70c7132 100644 --- a/jdk/src/share/classes/sun/font/StrikeCache.java +++ b/jdk/src/share/classes/sun/font/StrikeCache.java @@ -351,7 +351,7 @@ public final class StrikeCache { if (gids == null) { gids = new ArrayList(); } - gids.add((long) glyphPtrs[i]); + gids.add(glyphPtrs[i]); } } diff --git a/jdk/src/share/classes/sun/font/SunFontManager.java b/jdk/src/share/classes/sun/font/SunFontManager.java index d9f073345e9..cd366f0c96d 100644 --- a/jdk/src/share/classes/sun/font/SunFontManager.java +++ b/jdk/src/share/classes/sun/font/SunFontManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2014, 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 @@ -683,8 +683,7 @@ public abstract class SunFontManager implements FontSupport, FontManagerForSGE { * no effect - this is typically the case only when using the Windows * L&F where these APIs would conflict with that L&F anyway. */ - Font2D oldFont = (Font2D) - altNameCache.get(compositeName.toLowerCase(Locale.ENGLISH)); + Font2D oldFont =altNameCache.get(compositeName.toLowerCase(Locale.ENGLISH)); if (oldFont instanceof CompositeFont) { oldFont.handle.font2D = cf; } @@ -1992,7 +1991,7 @@ public abstract class SunFontManager implements FontSupport, FontManagerForSGE { if (family == null || familyName == null) { return null; } - String [] fontList = (String[])family.toArray(STR_ARRAY); + String [] fontList = family.toArray(STR_ARRAY); if (fontList.length == 0) { return null; } @@ -2085,7 +2084,7 @@ public abstract class SunFontManager implements FontSupport, FontManagerForSGE { (ConcurrentHashMap) AppContext.getAppContext().get(CompositeFont.class); if (altNameCache != null) { - font = (Font2D)altNameCache.get(mapName); + font = altNameCache.get(mapName); } else { font = null; } @@ -2628,8 +2627,7 @@ public abstract class SunFontManager implements FontSupport, FontManagerForSGE { fullNameToFont.remove(oldFont.fullName.toLowerCase(Locale.ENGLISH)); FontFamily.remove(oldFont); if (localeFullNamesToFont != null) { - Map.Entry[] mapEntries = - (Map.Entry[])localeFullNamesToFont.entrySet(). + Map.Entry[] mapEntries = localeFullNamesToFont.entrySet(). toArray(new Map.Entry[0]); /* Should I be replacing these, or just I just remove * the names from the map? @@ -3100,7 +3098,7 @@ public abstract class SunFontManager implements FontSupport, FontManagerForSGE { if (font == null) { return; } - String[] keys = (String[])(fontNameCache.keySet().toArray(STR_ARRAY)); + String[] keys = fontNameCache.keySet().toArray(STR_ARRAY); for (int k=0; k MAX_PSSTR) { psBytesPerRow /= 2; } diff --git a/jdk/src/share/classes/sun/print/RasterPrinterJob.java b/jdk/src/share/classes/sun/print/RasterPrinterJob.java index 0f81a4ff13b..dae42e789d9 100644 --- a/jdk/src/share/classes/sun/print/RasterPrinterJob.java +++ b/jdk/src/share/classes/sun/print/RasterPrinterJob.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -181,8 +181,7 @@ public abstract class RasterPrinterJob extends PrinterJob { * use a particular pipeline. Either the raster * pipeline or the pdl pipeline can be forced. */ - String forceStr = - (String)java.security.AccessController.doPrivileged( + String forceStr = java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction(FORCE_PIPE_PROP)); if (forceStr != null) { @@ -193,8 +192,7 @@ public abstract class RasterPrinterJob extends PrinterJob { } } - String shapeTextStr = - (String)java.security.AccessController.doPrivileged( + String shapeTextStr =java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction(SHAPE_TEXT_PROP)); if (shapeTextStr != null) { @@ -512,12 +510,10 @@ public abstract class RasterPrinterJob extends PrinterJob { } else { // Check the list of services. This service may have been // deleted already - PrinterState prnState = (PrinterState)service.getAttribute( - PrinterState.class); + PrinterState prnState = service.getAttribute(PrinterState.class); if (prnState == PrinterState.STOPPED) { PrinterStateReasons prnStateReasons = - (PrinterStateReasons)service.getAttribute( - PrinterStateReasons.class); + service.getAttribute(PrinterStateReasons.class); if ((prnStateReasons != null) && (prnStateReasons.containsKey(PrinterStateReason.SHUTDOWN))) { @@ -1353,12 +1349,10 @@ public abstract class RasterPrinterJob extends PrinterJob { // Check the list of services. This service may have been // deleted already - PrinterState prnState = (PrinterState)psvc.getAttribute( - PrinterState.class); + PrinterState prnState = psvc.getAttribute(PrinterState.class); if (prnState == PrinterState.STOPPED) { PrinterStateReasons prnStateReasons = - (PrinterStateReasons)psvc.getAttribute( - PrinterStateReasons.class); + psvc.getAttribute(PrinterStateReasons.class); if ((prnStateReasons != null) && (prnStateReasons.containsKey(PrinterStateReason.SHUTDOWN))) { @@ -1366,8 +1360,7 @@ public abstract class RasterPrinterJob extends PrinterJob { } } - if ((PrinterIsAcceptingJobs)(psvc.getAttribute( - PrinterIsAcceptingJobs.class)) == + if ((psvc.getAttribute(PrinterIsAcceptingJobs.class)) == PrinterIsAcceptingJobs.NOT_ACCEPTING_JOBS) { throw new PrinterException("Printer is not accepting job."); } @@ -2035,7 +2028,7 @@ public abstract class RasterPrinterJob extends PrinterJob { * fact that we can only create 24 bit per pixel 3 byte BGR * BufferedImages. FIX. */ - int bandHeight = (int)(MAX_BAND_SIZE / bandWidth / 3); + int bandHeight = (MAX_BAND_SIZE / bandWidth / 3); int deviceLeft = (int)Math.rint(paper.getImageableX() * xScale); int deviceTop = (int)Math.rint(paper.getImageableY() * yScale); diff --git a/jdk/src/share/classes/sun/tools/javac/SourceClass.java b/jdk/src/share/classes/sun/tools/javac/SourceClass.java index 0a1741d7b31..d1744baf3c6 100644 --- a/jdk/src/share/classes/sun/tools/javac/SourceClass.java +++ b/jdk/src/share/classes/sun/tools/javac/SourceClass.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -154,7 +154,7 @@ class SourceClass extends ClassDefinition { // maybe define an uplevel "A.this" current instance field if (!isTopLevel() && !isLocal()) { - LocalMember outerArg = ((SourceClass)outerClass).getThisArgument(); + LocalMember outerArg = outerClass.getThisArgument(); UplevelReference r = getReference(outerArg); setOuterMember(r.getLocalField(env)); } diff --git a/jdk/src/share/classes/sun/tools/jconsole/ProxyClient.java b/jdk/src/share/classes/sun/tools/jconsole/ProxyClient.java index 301eae167c9..05c827608d0 100644 --- a/jdk/src/share/classes/sun/tools/jconsole/ProxyClient.java +++ b/jdk/src/share/classes/sun/tools/jconsole/ProxyClient.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2014, 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 @@ -711,7 +711,7 @@ public class ProxyClient implements JConsoleContext { memoryPoolProxies = new ArrayList(); Iterator iterator = mbeans.iterator(); while (iterator.hasNext()) { - ObjectName objName = (ObjectName) iterator.next(); + ObjectName objName = iterator.next(); MemoryPoolProxy p = new MemoryPoolProxy(this, objName); memoryPoolProxies.add(p); } @@ -737,7 +737,7 @@ public class ProxyClient implements JConsoleContext { garbageCollectorMBeans = new ArrayList(); Iterator iterator = mbeans.iterator(); while (iterator.hasNext()) { - ObjectName on = (ObjectName) iterator.next(); + ObjectName on = iterator.next(); String name = GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE + ",name=" + on.getKeyProperty("name"); diff --git a/jdk/src/share/classes/sun/tools/jconsole/ThreadTab.java b/jdk/src/share/classes/sun/tools/jconsole/ThreadTab.java index b43a7c57edd..a38b9d68408 100644 --- a/jdk/src/share/classes/sun/tools/jconsole/ThreadTab.java +++ b/jdk/src/share/classes/sun/tools/jconsole/ThreadTab.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2014, 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 @@ -311,7 +311,7 @@ class ThreadTab extends Tab implements ActionListener, DocumentListener, ListSel ThreadJList list = (ThreadJList)ev.getSource(); final JTextArea textArea = list.textArea; - Long selected = (Long)list.getSelectedValue(); + Long selected = list.getSelectedValue(); if (selected == null) { if (lastSelected != -1) { selected = lastSelected; diff --git a/jdk/src/share/classes/sun/tools/jconsole/inspector/XOpenTypeViewer.java b/jdk/src/share/classes/sun/tools/jconsole/inspector/XOpenTypeViewer.java index e5f0b11df14..456ffce1408 100644 --- a/jdk/src/share/classes/sun/tools/jconsole/inspector/XOpenTypeViewer.java +++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XOpenTypeViewer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2014, 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 @@ -389,7 +389,7 @@ public class XOpenTypeViewer extends JPanel implements ActionListener { Iterator it = keys.iterator(); Object[] rowData = new Object[2]; while (it.hasNext()) { - String key = (String) it.next(); + String key = it.next(); Object val = data.get(key); rowData[0] = formatKey(key); if (val == null) { diff --git a/jdk/src/share/classes/sun/tools/jconsole/inspector/XPlottingViewer.java b/jdk/src/share/classes/sun/tools/jconsole/inspector/XPlottingViewer.java index e6c2d17f411..10ec71e823b 100644 --- a/jdk/src/share/classes/sun/tools/jconsole/inspector/XPlottingViewer.java +++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XPlottingViewer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2014, 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 @@ -76,7 +76,7 @@ public class XPlottingViewer extends PlotterPanel implements ActionListener { //plotterCache.clear(); it = timerCache.keySet().iterator(); while(it.hasNext()) { - String key = (String) it.next(); + String key = it.next(); if(key.startsWith(String.valueOf(tab.hashCode()))) { Timer t = timerCache.get(key); t.cancel(); diff --git a/jdk/src/share/classes/sun/tools/tree/ConvertExpression.java b/jdk/src/share/classes/sun/tools/tree/ConvertExpression.java index 760d78b4536..13fdb2f89bb 100644 --- a/jdk/src/share/classes/sun/tools/tree/ConvertExpression.java +++ b/jdk/src/share/classes/sun/tools/tree/ConvertExpression.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2014, 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 @@ -65,7 +65,7 @@ class ConvertExpression extends UnaryExpression { case TC_BYTE: return new ByteExpression(right.where, (byte)value); case TC_CHAR: return new CharExpression(right.where, (char)value); case TC_SHORT: return new ShortExpression(right.where, (short)value); - case TC_INT: return new IntExpression(right.where, (int)value); + case TC_INT: return new IntExpression(right.where, value); case TC_LONG: return new LongExpression(right.where, (long)value); case TC_FLOAT: return new FloatExpression(right.where, (float)value); case TC_DOUBLE: return new DoubleExpression(right.where, (double)value); diff --git a/jdk/src/solaris/classes/sun/awt/UNIXToolkit.java b/jdk/src/solaris/classes/sun/awt/UNIXToolkit.java index 50a913c5438..2fad1b6b4a7 100644 --- a/jdk/src/solaris/classes/sun/awt/UNIXToolkit.java +++ b/jdk/src/solaris/classes/sun/awt/UNIXToolkit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2014, 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 @@ -49,7 +49,7 @@ public abstract class UNIXToolkit extends SunToolkit private BufferedImage tmpImage = null; public static int getDatatransferTimeout() { - Integer dt = (Integer)AccessController.doPrivileged( + Integer dt = AccessController.doPrivileged( new GetIntegerAction("sun.awt.datatransfer.timeout")); if (dt == null || dt <= 0) { return DEFAULT_DATATRANSFER_TIMEOUT; diff --git a/jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java b/jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java index 20c6174c2ee..48a5b946c81 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java +++ b/jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2014, 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 @@ -451,7 +451,7 @@ public abstract class InfoWindow extends Window { while (true) { Message msg = null; try { - msg = (Message)messageQueue.take(); + msg = messageQueue.take(); } catch (InterruptedException e) { return; } diff --git a/jdk/src/solaris/classes/sun/awt/X11/MotifDnDConstants.java b/jdk/src/solaris/classes/sun/awt/X11/MotifDnDConstants.java index f35ba1c7e43..26e2cdbbba3 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/MotifDnDConstants.java +++ b/jdk/src/solaris/classes/sun/awt/X11/MotifDnDConstants.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -163,7 +163,7 @@ class MotifDnDConstants { XlibWrapper.XGrabServer(newDisplay); try { - XlibWrapper.XSetCloseDownMode(newDisplay, (int)XConstants.RetainPermanent); + XlibWrapper.XSetCloseDownMode(newDisplay, XConstants.RetainPermanent); XSetWindowAttributes xwa = new XSetWindowAttributes(); @@ -435,7 +435,7 @@ class MotifDnDConstants { if (formats.length > 0) { // Make a defensive copy. - formats = (long[])formats.clone(); + formats = formats.clone(); Arrays.sort(formats); } diff --git a/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java b/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java index 85cd5448fd5..35109ebac70 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java +++ b/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -201,7 +201,7 @@ class MotifDnDDragSourceProtocol extends XDragSourceProtocol * CARD32 heap_offset B32; * } xmDragReceiverInfoStruct; */ - if (status == (int)XConstants.Success && wpg.getData() != 0 && + if (status == XConstants.Success && wpg.getData() != 0 && wpg.getActualType() != 0 && wpg.getActualFormat() == 8 && wpg.getNumberOfItems() >= MotifDnDConstants.MOTIF_RECEIVER_INFO_SIZE) { diff --git a/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java b/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java index 652b9e9e3af..735bf144df2 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java +++ b/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -118,7 +118,7 @@ class MotifDnDDropTargetProtocol extends XDropTargetProtocol { * CARD32 heap_offset B32; * } xmDragReceiverInfoStruct; */ - if (status == (int)XConstants.Success && wpg.getData() != 0 && + if (status == XConstants.Success && wpg.getData() != 0 && wpg.getActualType() != 0 && wpg.getActualFormat() == 8 && wpg.getNumberOfItems() >= MotifDnDConstants.MOTIF_RECEIVER_INFO_SIZE) { @@ -220,7 +220,7 @@ class MotifDnDDropTargetProtocol extends XDropTargetProtocol { * CARD32 heap_offset B32; * } xmDragReceiverInfoStruct; */ - if (status == (int)XConstants.Success && wpg.getData() != 0 && + if (status == XConstants.Success && wpg.getData() != 0 && wpg.getActualType() != 0 && wpg.getActualFormat() == 8 && wpg.getNumberOfItems() >= MotifDnDConstants.MOTIF_RECEIVER_INFO_SIZE) { @@ -292,7 +292,7 @@ class MotifDnDDropTargetProtocol extends XDropTargetProtocol { * CARD32 heap_offset B32; * } xmDragReceiverInfoStruct; */ - if (status == (int)XConstants.Success && wpg.getData() != 0 && + if (status == XConstants.Success && wpg.getData() != 0 && wpg.getActualType() != 0 && wpg.getActualFormat() == 8 && wpg.getNumberOfItems() >= MotifDnDConstants.MOTIF_RECEIVER_INFO_SIZE) { @@ -327,7 +327,7 @@ class MotifDnDDropTargetProtocol extends XDropTargetProtocol { try { int status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance()); - if (status == (int)XConstants.Success && wpg.getData() != 0 && + if (status == XConstants.Success && wpg.getData() != 0 && wpg.getActualType() != 0 && wpg.getActualFormat() == 8 && wpg.getNumberOfItems() >= MotifDnDConstants.MOTIF_RECEIVER_INFO_SIZE) { diff --git a/jdk/src/solaris/classes/sun/awt/X11/XAWTFormatter.java b/jdk/src/solaris/classes/sun/awt/X11/XAWTFormatter.java index 20117bc47ad..a2145dcc3c2 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XAWTFormatter.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XAWTFormatter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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,7 +43,7 @@ public class XAWTFormatter extends java.util.logging.Formatter { // Line separator string. This is the value of the line.separator // property at the moment that the SimpleFormatter was created. - private String lineSeparator = (String) java.security.AccessController.doPrivileged( + private String lineSeparator = java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction("line.separator")); boolean displayFullRecord = false; diff --git a/jdk/src/solaris/classes/sun/awt/X11/XAtom.java b/jdk/src/solaris/classes/sun/awt/X11/XAtom.java index 56ebd11b5dd..2d37879e057 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XAtom.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XAtom.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -681,7 +681,7 @@ public final class XAtom { return emptyList; } - int count = (int)getter.getNumberOfItems(); + int count = getter.getNumberOfItems(); if (count == 0) { return emptyList; } diff --git a/jdk/src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java b/jdk/src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java index 2ccfcd083a5..1d82f04a78c 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, 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 @@ -292,7 +292,7 @@ abstract public class XBaseMenuWindow extends XWindow { */ XMenuItemPeer[] copyItems() { synchronized(getMenuTreeLock()) { - return (XMenuItemPeer[])items.toArray(new XMenuItemPeer[] {}); + return items.toArray(new XMenuItemPeer[] {}); } } diff --git a/jdk/src/solaris/classes/sun/awt/X11/XBaseWindow.java b/jdk/src/solaris/classes/sun/awt/X11/XBaseWindow.java index 28db82f8a99..1d8804ec9c6 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XBaseWindow.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XBaseWindow.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -285,7 +285,7 @@ public class XBaseWindow { params.putIfNull(BOUNDS, new Rectangle(DEF_LOCATION, DEF_LOCATION, MIN_SIZE, MIN_SIZE)); params.putIfNull(DEPTH, Integer.valueOf((int)XConstants.CopyFromParent)); params.putIfNull(VISUAL, Long.valueOf(XConstants.CopyFromParent)); - params.putIfNull(VISUAL_CLASS, Integer.valueOf((int)XConstants.InputOnly)); + params.putIfNull(VISUAL_CLASS, Integer.valueOf(XConstants.InputOnly)); params.putIfNull(VALUE_MASK, Long.valueOf(XConstants.CWEventMask)); Rectangle bounds = (Rectangle)params.get(BOUNDS); bounds.width = Math.max(MIN_SIZE, bounds.width); @@ -544,7 +544,7 @@ public class XBaseWindow { } flags |= XUtilConstants.PWinGravity; hints.set_flags(flags); - hints.set_win_gravity((int)XConstants.NorthWestGravity); + hints.set_win_gravity(XConstants.NorthWestGravity); if (insLog.isLoggable(PlatformLogger.Level.FINER)) { insLog.finer("Setting hints, resulted flags " + XlibWrapper.hintsToString(flags) + ", values " + hints); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java index 54249bbe7d7..6bdff13fdc9 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java @@ -335,7 +335,7 @@ public class XComponentPeer extends XWindow implements ComponentPeer, DropTarget return rejectFocusRequestHelper("Waiting for asynchronous processing of the request"); } return XKeyboardFocusManagerPeer.deliverFocus(lightweightChild, - (Component)target, + target, temporary, focusedWindowChangeAllowed, time, cause); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XContentWindow.java b/jdk/src/solaris/classes/sun/awt/X11/XContentWindow.java index fcdd6d09f6c..85e578b4052 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XContentWindow.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XContentWindow.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -137,7 +137,7 @@ public final class XContentWindow extends XWindow { // NOTE: This method may be called by privileged threads. // DO NOT INVOKE CLIENT CODE ON THIS THREAD! public void handleResize(Rectangle bounds) { - AWTAccessor.getComponentAccessor().setSize((Component)target, bounds.width, bounds.height); + AWTAccessor.getComponentAccessor().setSize(target, bounds.width, bounds.height); postEvent(new ComponentEvent(target, ComponentEvent.COMPONENT_RESIZED)); } diff --git a/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java index fa5c884020a..f37cfbc22e9 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -318,7 +318,7 @@ abstract class XDecoratedPeer extends XWindowPeer { insets_corrected = true; return; } - Component t = (Component)target; + Component t = target; if (getDecorations() == XWindowAttributesData.AWT_DECOR_NONE) { setReparented(true); insets_corrected = true; @@ -428,7 +428,7 @@ abstract class XDecoratedPeer extends XWindowPeer { public void handleMoved(WindowDimensions dims) { Point loc = dims.getLocation(); - AWTAccessor.getComponentAccessor().setLocation((Component)target, loc.x, loc.y); + AWTAccessor.getComponentAccessor().setLocation(target, loc.x, loc.y); postEvent(new ComponentEvent(target, ComponentEvent.COMPONENT_MOVED)); } @@ -536,8 +536,8 @@ abstract class XDecoratedPeer extends XWindowPeer { // its location changes. Point oldLocation = getLocation(); - Point newLocation = new Point(AWTAccessor.getComponentAccessor().getX((Component)target), - AWTAccessor.getComponentAccessor().getY((Component)target)); + Point newLocation = new Point(AWTAccessor.getComponentAccessor().getX(target), + AWTAccessor.getComponentAccessor().getY(target)); if (!newLocation.equals(oldLocation)) { handleMoved(newDimensions); @@ -738,7 +738,7 @@ abstract class XDecoratedPeer extends XWindowPeer { updateChildrenSizes(); // Bounds of the window - Rectangle targetBounds = AWTAccessor.getComponentAccessor().getBounds((Component)target); + Rectangle targetBounds = AWTAccessor.getComponentAccessor().getBounds(target); Point newLocation = getNewLocation(xe, currentInsets.left, currentInsets.top); @@ -1052,10 +1052,10 @@ abstract class XDecoratedPeer extends XWindowPeer { final void dumpTarget() { AWTAccessor.ComponentAccessor compAccessor = AWTAccessor.getComponentAccessor(); - int getWidth = compAccessor.getWidth((Component)target); - int getHeight = compAccessor.getHeight((Component)target); - int getTargetX = compAccessor.getX((Component)target); - int getTargetY = compAccessor.getY((Component)target); + int getWidth = compAccessor.getWidth(target); + int getHeight = compAccessor.getHeight(target); + int getTargetX = compAccessor.getX(target); + int getTargetY = compAccessor.getY(target); System.err.println(">>> Target: " + getTargetX + ", " + getTargetY + ", " + getWidth + ", " + getHeight); } diff --git a/jdk/src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java b/jdk/src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java index 8a22f65eba1..b1e6f2ad041 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -283,7 +283,7 @@ class XDnDDragSourceProtocol extends XDragSourceProtocol { XClientMessageEvent msg = new XClientMessageEvent(); try { - msg.set_type((int)XConstants.ClientMessage); + msg.set_type(XConstants.ClientMessage); msg.set_window(getTargetWindow()); msg.set_format(32); msg.set_message_type(XDnDConstants.XA_XdndEnter.getAtom()); @@ -311,7 +311,7 @@ class XDnDDragSourceProtocol extends XDragSourceProtocol { XClientMessageEvent msg = new XClientMessageEvent(); try { - msg.set_type((int)XConstants.ClientMessage); + msg.set_type(XConstants.ClientMessage); msg.set_window(getTargetWindow()); msg.set_format(32); msg.set_message_type(XDnDConstants.XA_XdndPosition.getAtom()); @@ -335,7 +335,7 @@ class XDnDDragSourceProtocol extends XDragSourceProtocol { XClientMessageEvent msg = new XClientMessageEvent(); try { - msg.set_type((int)XConstants.ClientMessage); + msg.set_type(XConstants.ClientMessage); msg.set_window(getTargetWindow()); msg.set_format(32); msg.set_message_type(XDnDConstants.XA_XdndLeave.getAtom()); @@ -361,7 +361,7 @@ class XDnDDragSourceProtocol extends XDragSourceProtocol { XClientMessageEvent msg = new XClientMessageEvent(); try { - msg.set_type((int)XConstants.ClientMessage); + msg.set_type(XConstants.ClientMessage); msg.set_window(getTargetWindow()); msg.set_format(32); msg.set_message_type(XDnDConstants.XA_XdndDrop.getAtom()); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java b/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java index 2af8e66d730..074f37dd753 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java @@ -742,7 +742,7 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol { long data3, long data4) { XClientMessageEvent enter = new XClientMessageEvent(); try { - enter.set_type((int)XConstants.ClientMessage); + enter.set_type(XConstants.ClientMessage); enter.set_window(toplevel); enter.set_format(32); enter.set_message_type(XDnDConstants.XA_XdndEnter.getAtom()); @@ -768,7 +768,7 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol { long sourceWindow) { XClientMessageEvent leave = new XClientMessageEvent(); try { - leave.set_type((int)XConstants.ClientMessage); + leave.set_type(XConstants.ClientMessage); leave.set_window(toplevel); leave.set_format(32); leave.set_message_type(XDnDConstants.XA_XdndLeave.getAtom()); @@ -798,7 +798,7 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol { XClientMessageEvent msg = new XClientMessageEvent(); try { - msg.set_type((int)XConstants.ClientMessage); + msg.set_type(XConstants.ClientMessage); msg.set_window(xclient.get_data(0)); msg.set_format(32); msg.set_message_type(XDnDConstants.XA_XdndStatus.getAtom()); @@ -886,7 +886,7 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol { XClientMessageEvent msg = new XClientMessageEvent(); try { - msg.set_type((int)XConstants.ClientMessage); + msg.set_type(XConstants.ClientMessage); msg.set_window(xclient.get_data(0)); msg.set_format(32); msg.set_message_type(XDnDConstants.XA_XdndFinished.getAtom()); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XDragSourceContextPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XDragSourceContextPeer.java index e762ae0118e..f376b395823 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XDragSourceContextPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XDragSourceContextPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -538,7 +538,7 @@ public final class XDragSourceContextPeer return false; } - if (ev.get_type() != (int)XConstants.ClientMessage) { + if (ev.get_type() != XConstants.ClientMessage) { return false; } @@ -612,7 +612,7 @@ public final class XDragSourceContextPeer xkey.get_keycode(), 0); switch ((int)keysym) { case (int)XKeySymConstants.XK_Escape: { - if (ev.get_type() == (int)XConstants.KeyRelease) { + if (ev.get_type() == XConstants.KeyRelease) { cleanup(xkey.get_time()); } break; diff --git a/jdk/src/solaris/classes/sun/awt/X11/XDropTargetEventProcessor.java b/jdk/src/solaris/classes/sun/awt/X11/XDropTargetEventProcessor.java index 65d0b11c6c4..26a4941788d 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XDropTargetEventProcessor.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XDropTargetEventProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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,7 +43,7 @@ final class XDropTargetEventProcessor { private XDropTargetEventProcessor() {} private boolean doProcessEvent(XEvent ev) { - if (ev.get_type() == (int)XConstants.DestroyNotify && + if (ev.get_type() == XConstants.DestroyNotify && protocol != null && ev.get_xany().get_window() == protocol.getSourceWindow()) { protocol.cleanup(); @@ -51,7 +51,7 @@ final class XDropTargetEventProcessor { return false; } - if (ev.get_type() == (int)XConstants.PropertyNotify) { + if (ev.get_type() == XConstants.PropertyNotify) { XPropertyEvent xproperty = ev.get_xproperty(); if (xproperty.get_atom() == MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO.getAtom()) { @@ -60,7 +60,7 @@ final class XDropTargetEventProcessor { } } - if (ev.get_type() != (int)XConstants.ClientMessage) { + if (ev.get_type() != XConstants.ClientMessage) { return false; } diff --git a/jdk/src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java b/jdk/src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java index e983eccc807..b8a8441379e 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -328,8 +328,7 @@ final class XDropTargetRegistry { Long lToplevel = Long.valueOf(embedder); boolean isXEmbedServer = false; synchronized (this) { - EmbeddedDropSiteEntry entry = - (EmbeddedDropSiteEntry)embeddedDropSiteRegistry.get(lToplevel); + EmbeddedDropSiteEntry entry = embeddedDropSiteRegistry.get(lToplevel); if (entry == null) { return; } @@ -430,8 +429,7 @@ final class XDropTargetRegistry { Long lToplevel = Long.valueOf(toplevel); EmbeddedDropSiteEntry entry = null; synchronized (this) { - entry = - (EmbeddedDropSiteEntry)embeddedDropSiteRegistry.get(lToplevel); + entry = embeddedDropSiteRegistry.get(lToplevel); if (entry == null) { if (peer != null) { // Toplevel is an XEmbed server within this VM. @@ -495,8 +493,7 @@ final class XDropTargetRegistry { Long lToplevel = Long.valueOf(toplevel); EmbeddedDropSiteEntry entry = null; synchronized (this) { - entry = - (EmbeddedDropSiteEntry)embeddedDropSiteRegistry.get(lToplevel); + entry = embeddedDropSiteRegistry.get(lToplevel); if (entry == null) { return; } @@ -526,8 +523,7 @@ final class XDropTargetRegistry { */ public long getEmbeddedDropSite(long embedder, int x, int y) { Long lToplevel = Long.valueOf(embedder); - EmbeddedDropSiteEntry entry = - (EmbeddedDropSiteEntry)embeddedDropSiteRegistry.get(lToplevel); + EmbeddedDropSiteEntry entry = embeddedDropSiteRegistry.get(lToplevel); if (entry == null) { return 0; } diff --git a/jdk/src/solaris/classes/sun/awt/X11/XEmbedHelper.java b/jdk/src/solaris/classes/sun/awt/X11/XEmbedHelper.java index 49c7a5dcf04..947a3cb543c 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XEmbedHelper.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbedHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -99,7 +99,7 @@ public class XEmbedHelper { } void sendMessage(long window, int message, long detail, long data1, long data2) { XClientMessageEvent msg = new XClientMessageEvent(); - msg.set_type((int)XConstants.ClientMessage); + msg.set_type(XConstants.ClientMessage); msg.set_window(window); msg.set_message_type(XEmbed.getAtom()); msg.set_format(32); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XEmbedServerTester.java b/jdk/src/solaris/classes/sun/awt/X11/XEmbedServerTester.java index fdc069e2757..9b37a429125 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XEmbedServerTester.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbedServerTester.java @@ -689,7 +689,7 @@ public class XEmbedServerTester implements XEventDispatcher { } } else { synchronized(EVENT_LOCK) { - int eventID = (int)ev.get_type() | SYSTEM_EVENT_MASK; + int eventID = ev.get_type() | SYSTEM_EVENT_MASK; events.add(eventID); if (xembedLog.isLoggable(PlatformLogger.Level.FINER)) { diff --git a/jdk/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java index b1c2b0ed845..5da53e88634 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -775,7 +775,7 @@ class XFileDialogPeer extends XDialogPeer implements FileDialogPeer, ActionListe // 03/02/2005 b5097243 Pressing 'ESC' on a file dlg does not dispose the dlg on Xtoolkit public void setVisible(boolean b){ if (fileDialog == null) { - init((FileDialog)target); + init(target); } if (savedDir != null || userDir != null) { diff --git a/jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java b/jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java index c309d310e0a..bcef8c85315 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -133,8 +133,8 @@ public final class XGlobalCursorManager extends GlobalCursorManager { XlibWrapper.larg6, XlibWrapper.larg7); - p.x = (int) XlibWrapper.unsafe.getInt(XlibWrapper.larg3); - p.y = (int) XlibWrapper.unsafe.getInt(XlibWrapper.larg4); + p.x = XlibWrapper.unsafe.getInt(XlibWrapper.larg3); + p.y = XlibWrapper.unsafe.getInt(XlibWrapper.larg4); } finally { XToolkit.awtUnlock(); } diff --git a/jdk/src/solaris/classes/sun/awt/X11/XIconWindow.java b/jdk/src/solaris/classes/sun/awt/X11/XIconWindow.java index 7c6684bfddc..07899ef8de4 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XIconWindow.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XIconWindow.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -301,8 +301,8 @@ public class XIconWindow extends XBaseWindow { } long dst = XlibWrapper.XCreateImage(XToolkit.getDisplay(), visInfo.get_visual(), - (int)awtImage.get_Depth(), - (int)XConstants.ZPixmap, + awtImage.get_Depth(), + XConstants.ZPixmap, 0, bytes, iconWidth, @@ -483,7 +483,7 @@ public class XIconWindow extends XBaseWindow { params.add(BACKGROUND_PIXMAP, iconPixmap); params.add(COLORMAP, adata.get_awt_cmap()); params.add(DEPTH, awtImage.get_Depth()); - params.add(VISUAL_CLASS, (int)XConstants.InputOutput); + params.add(VISUAL_CLASS, XConstants.InputOutput); params.add(VISUAL, visInfo.get_visual()); params.add(VALUE_MASK, XConstants.CWBorderPixel | XConstants.CWColormap | XConstants.CWBackPixmap); params.add(PARENT_WINDOW, XlibWrapper.RootWindow(XToolkit.getDisplay(), visInfo.get_screen())); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XInputMethod.java b/jdk/src/solaris/classes/sun/awt/X11/XInputMethod.java index 6392f2cbf8a..67e729b440c 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XInputMethod.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XInputMethod.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -138,7 +138,7 @@ public class XInputMethod extends X11InputMethod { } long getCurrentParentWindow() { - return (long)((XWindow)clientComponentWindow.getPeer()).getContentWindow(); + return ((XWindow)clientComponentWindow.getPeer()).getContentWindow(); } /* diff --git a/jdk/src/solaris/classes/sun/awt/X11/XMenuBarPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XMenuBarPeer.java index 7cf0cd73123..c1b568bc0fb 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XMenuBarPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XMenuBarPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -525,7 +525,7 @@ public class XMenuBarPeer extends XBaseMenuWindow implements MenuBarPeer { if (isEventDisabled(xev)) { return; } - final Component currentSource = (Component)getEventSource(); + final Component currentSource = getEventSource(); //This is the only difference from XWindow.handleKeyPress //Ancestor's function can invoke handleF10KeyPress here handleKeyPress(xkey); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XMenuWindow.java b/jdk/src/solaris/classes/sun/awt/X11/XMenuWindow.java index a524f0d6e38..9863c983873 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XMenuWindow.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XMenuWindow.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -250,7 +250,7 @@ public class XMenuWindow extends XBaseMenuWindow { } //Item rectangles for (int i = 0; i < itemCnt; i++) { - XMenuItemPeer item = (XMenuItemPeer)itemVector[i]; + XMenuItemPeer item = itemVector[i]; XMenuItemPeer.TextMetrics metrics = itemMetrics[i]; Dimension dim = metrics.getTextDimension(); if (dim != null) { diff --git a/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java b/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java index dfd372edabf..722261113d1 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -108,7 +108,7 @@ final class XNETProtocol extends XProtocol implements XStateProtocol, XLayerProt if (log.isLoggable(PlatformLogger.Level.FINE)) { log.fine("Requesting state on " + window + " for " + state); } - req.set_type((int)XConstants.ClientMessage); + req.set_type(XConstants.ClientMessage); req.set_window(window.getWindow()); req.set_message_type(XA_NET_WM_STATE.getAtom()); req.set_format(32); @@ -181,7 +181,7 @@ final class XNETProtocol extends XProtocol implements XStateProtocol, XLayerProt public void requestState(XWindow window, XAtom state, boolean isAdd) { XClientMessageEvent req = new XClientMessageEvent(); try { - req.set_type((int)XConstants.ClientMessage); + req.set_type(XConstants.ClientMessage); req.set_window(window.getWindow()); req.set_message_type(XA_NET_WM_STATE.getAtom()); req.set_format(32); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XPopupMenuPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XPopupMenuPeer.java index cbb71925b50..81c60dd55b2 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XPopupMenuPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XPopupMenuPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -349,7 +349,7 @@ public class XPopupMenuPeer extends XMenuWindow implements PopupMenuPeer { if (isEventDisabled(xev)) { return; } - final Component currentSource = (Component)getEventSource(); + final Component currentSource = getEventSource(); handleKeyPress(xkey); } diff --git a/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java index 7c7b2d1936a..f4bf1ec2062 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -342,7 +342,7 @@ final class XTextAreaPeer extends XComponentPeer implements TextAreaPeer { @Override void handleJavaInputMethodEvent(InputMethodEvent e) { if (jtext != null) - jtext.processInputMethodEventPublic((InputMethodEvent)e); + jtext.processInputMethodEventPublic(e); } /** diff --git a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java index 9970b2a8457..ba9ef8c77ab 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java @@ -655,8 +655,8 @@ public final class XToolkit extends UNIXToolkit implements Runnable { XWindowAttributes pattr = new XWindowAttributes(); try { XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(), XToolkit.getDefaultRootWindow(), pattr.pData); - screenWidth = (int) pattr.get_width(); - screenHeight = (int) pattr.get_height(); + screenWidth = pattr.get_width(); + screenHeight = pattr.get_height(); } finally { pattr.dispose(); } @@ -2074,7 +2074,7 @@ public final class XToolkit extends UNIXToolkit implements Runnable { } private static void setBackingStoreType() { - String prop = (String)AccessController.doPrivileged( + String prop = AccessController.doPrivileged( new sun.security.action.GetPropertyAction("sun.awt.backingStore")); if (prop == null) { diff --git a/jdk/src/solaris/classes/sun/awt/X11/XWindow.java b/jdk/src/solaris/classes/sun/awt/X11/XWindow.java index 6791ce78ae3..8df6e569bb7 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XWindow.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XWindow.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -200,7 +200,7 @@ public class XWindow extends XBaseWindow implements X11ComponentPeer { getColorModel(); // fix 4948833: this call forces the color map to be initialized params.putIfNull(COLORMAP, gData.get_awt_cmap()); params.putIfNull(DEPTH, gData.get_awt_depth()); - params.putIfNull(VISUAL_CLASS, Integer.valueOf((int)XConstants.InputOutput)); + params.putIfNull(VISUAL_CLASS, Integer.valueOf(XConstants.InputOutput)); params.putIfNull(VISUAL, visInfo.get_visual()); params.putIfNull(VALUE_MASK, XConstants.CWBorderPixel | XConstants.CWEventMask | XConstants.CWColormap); Long parentWindow = (Long)params.get(PARENT_WINDOW); @@ -350,7 +350,7 @@ public class XWindow extends XBaseWindow implements X11ComponentPeer { Graphics getGraphics(SurfaceData surfData, Color afore, Color aback, Font afont) { if (surfData == null) return null; - Component target = (Component) this.target; + Component target = this.target; /* Fix for bug 4746122. Color and Font shouldn't be null */ Color bgColor = aback; @@ -548,7 +548,7 @@ public class XWindow extends XBaseWindow implements X11ComponentPeer { int w = xe.get_width(); int h = xe.get_height(); - Component target = (Component)getEventSource(); + Component target = getEventSource(); AWTAccessor.ComponentAccessor compAccessor = AWTAccessor.getComponentAccessor(); if (!compAccessor.getIgnoreRepaint(target) @@ -740,7 +740,7 @@ public class XWindow extends XBaseWindow implements X11ComponentPeer { modifiers = getModifiers(xbe.get_state(),button,0, type, wheel_mouse); if (!wheel_mouse) { - MouseEvent me = new MouseEvent((Component)getEventSource(), + MouseEvent me = new MouseEvent(getEventSource(), type == XConstants.ButtonPress ? MouseEvent.MOUSE_PRESSED : MouseEvent.MOUSE_RELEASED, jWhen,modifiers, x, y, xbe.get_x_root(), @@ -752,7 +752,7 @@ public class XWindow extends XBaseWindow implements X11ComponentPeer { if ((type == XConstants.ButtonRelease) && ((mouseButtonClickAllowed & XlibUtil.getButtonMask(lbutton)) != 0) ) // No up-button in the drag-state { - postEventToEventQueue(me = new MouseEvent((Component)getEventSource(), + postEventToEventQueue(me = new MouseEvent(getEventSource(), MouseEvent.MOUSE_CLICKED, jWhen, modifiers, @@ -766,7 +766,7 @@ public class XWindow extends XBaseWindow implements X11ComponentPeer { } else { if (xev.get_type() == XConstants.ButtonPress) { - MouseWheelEvent mwe = new MouseWheelEvent((Component)getEventSource(),MouseEvent.MOUSE_WHEEL, jWhen, + MouseWheelEvent mwe = new MouseWheelEvent(getEventSource(),MouseEvent.MOUSE_WHEEL, jWhen, modifiers, x, y, xbe.get_x_root(), @@ -837,7 +837,7 @@ public class XWindow extends XBaseWindow implements X11ComponentPeer { int modifiers = getModifiers(xme.get_state(), 0, 0); boolean popupTrigger = false; - Component source = (Component)getEventSource(); + Component source = getEventSource(); if (xme.get_window() != window) { Point localXY = toLocal(xme.get_x_root(), xme.get_y_root()); @@ -1111,7 +1111,7 @@ public class XWindow extends XBaseWindow implements X11ComponentPeer { unicodeKey = keysymToUnicode( keysym[0], ev.get_state() ); if (keyEventLog.isLoggable(PlatformLogger.Level.FINE)) { keyEventLog.fine("--XWindow.java XIM did NOT process event, hex keysym:"+Long.toHexString(keysym[0])+"\n"+ - " unicode key:"+Integer.toHexString((int)unicodeKey)); + " unicode key:"+Integer.toHexString(unicodeKey)); } } }else { @@ -1121,7 +1121,7 @@ public class XWindow extends XBaseWindow implements X11ComponentPeer { unicodeKey = keysymToUnicode( keysym[0], ev.get_state() ); if (keyEventLog.isLoggable(PlatformLogger.Level.FINE)) { keyEventLog.fine("--XWindow.java XIM is absent; hex keysym:"+Long.toHexString(keysym[0])+"\n"+ - " unicode key:"+Integer.toHexString((int)unicodeKey)); + " unicode key:"+Integer.toHexString(unicodeKey)); } } // Keysym should be converted to Unicode, if possible and necessary, @@ -1466,7 +1466,7 @@ public class XWindow extends XBaseWindow implements X11ComponentPeer { long jWhen = XToolkit.nowMillisUTC_offset(when); int modifiers = getModifiers(state, 0, keyCode); - KeyEvent ke = new KeyEvent((Component)getEventSource(), id, jWhen, + KeyEvent ke = new KeyEvent(getEventSource(), id, jWhen, modifiers, keyCode, (char)keyChar, keyLocation); if (event != 0) { byte[] data = Native.toBytes(event, eventSize); diff --git a/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java index 8dcd15bc975..521bbc145b3 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -291,7 +291,7 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, public void updateIconImages() { Window target = (Window)this.target; - java.util.List iconImages = ((Window)target).getIconImages(); + java.util.List iconImages = target.getIconImages(); XWindowPeer ownerPeer = getOwnerPeer(); winAttr.icons = new ArrayList(); if (iconImages.size() != 0) { @@ -463,8 +463,8 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, public void updateMinimumSize() { //This function only saves minimumSize value in XWindowPeer //Setting WMSizeHints is implemented in XDecoratedPeer - targetMinimumSize = (((Component)target).isMinimumSizeSet()) ? - ((Component)target).getMinimumSize() : null; + targetMinimumSize = (target.isMinimumSizeSet()) ? + target.getMinimumSize() : null; } public Dimension getTargetMinimumSize() { @@ -719,10 +719,10 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, Runnable dc = new Runnable() { public void run() { AWTAccessor.getComponentAccessor(). - setGraphicsConfiguration((Component)target, gc); + setGraphicsConfiguration(target, gc); } }; - SunToolkit.executeOnEventHandlerThread((Component)target, dc); + SunToolkit.executeOnEventHandlerThread(target, dc); } /** @@ -750,7 +750,7 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, protected Point getNewLocation(XConfigureEvent xe, int leftInset, int topInset) { // Bounds of the window - Rectangle targetBounds = AWTAccessor.getComponentAccessor().getBounds((Component)target); + Rectangle targetBounds = AWTAccessor.getComponentAccessor().getBounds(target); int runningWM = XWM.getWMID(); Point newLocation = targetBounds.getLocation(); @@ -1108,7 +1108,7 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, XUnmapEvent unmap = new XUnmapEvent(); unmap.set_window(window); unmap.set_event(XToolkit.getDefaultRootWindow()); - unmap.set_type((int)XConstants.UnmapNotify); + unmap.set_type(XConstants.UnmapNotify); unmap.set_from_configure(false); XlibWrapper.XSendEvent(XToolkit.getDisplay(), XToolkit.getDefaultRootWindow(), false, XConstants.SubstructureNotifyMask | XConstants.SubstructureRedirectMask, diff --git a/jdk/src/solaris/classes/sun/awt/X11FontManager.java b/jdk/src/solaris/classes/sun/awt/X11FontManager.java index 573d250acba..c9d2ebc9ba4 100644 --- a/jdk/src/solaris/classes/sun/awt/X11FontManager.java +++ b/jdk/src/solaris/classes/sun/awt/X11FontManager.java @@ -715,7 +715,7 @@ public class X11FontManager extends SunFontManager { if (FontUtilities.isLinux) { fontConfigDirs.add(jreLibDirName+File.separator+"oblique-fonts"); } - fontdirs = (String[])fontConfigDirs.toArray(new String[0]); + fontdirs = fontConfigDirs.toArray(new String[0]); } // Implements SunGraphicsEnvironment.createFontConfiguration. diff --git a/jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java b/jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java index 60846b69c18..547af9c3bed 100644 --- a/jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java +++ b/jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -232,7 +232,7 @@ public class X11GraphicsEnvironment return true; } - String isRemote = (String)java.security.AccessController.doPrivileged( + String isRemote = java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction("sun.java2d.remote")); if (isRemote != null) { return isRemote.equals("false"); diff --git a/jdk/src/solaris/classes/sun/font/NativeFont.java b/jdk/src/solaris/classes/sun/font/NativeFont.java index 9fa469fce3c..bc39f743a91 100644 --- a/jdk/src/solaris/classes/sun/font/NativeFont.java +++ b/jdk/src/solaris/classes/sun/font/NativeFont.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -331,6 +331,7 @@ public class NativeFont extends PhysicalFont { * ie to request 12 pt Times New Roman italic font, use an XLFD like : * -monotype-times new roman-regular-i---*-120-72-72-p-*-iso8859-1 */ + @SuppressWarnings("cast") byte[] getPlatformNameBytes(int ptSize) { int[] hPos = new int[14]; int hyphenCnt = 1; diff --git a/jdk/src/solaris/classes/sun/font/XRGlyphCacheEntry.java b/jdk/src/solaris/classes/sun/font/XRGlyphCacheEntry.java index 18ece2b813b..b1dd7c150fc 100644 --- a/jdk/src/solaris/classes/sun/font/XRGlyphCacheEntry.java +++ b/jdk/src/solaris/classes/sun/font/XRGlyphCacheEntry.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2014, 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 @@ -48,8 +48,8 @@ public class XRGlyphCacheEntry { this.glyphInfoPtr = glyphInfoPtr; /* TODO: Does it make sence to cache results? */ - xOff = (int) Math.round(getXAdvance()); - yOff = (int) Math.round(getYAdvance()); + xOff = Math.round(getXAdvance()); + yOff = Math.round(getYAdvance()); } public int getXOff() { diff --git a/jdk/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java b/jdk/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java index d9d883a0e52..af65891495f 100644 --- a/jdk/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java +++ b/jdk/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -214,13 +214,13 @@ public abstract class X11SurfaceData extends XSurfaceData { if (!isX11SurfaceDataInitialized() && !GraphicsEnvironment.isHeadless()) { // If a screen magnifier is present, don't attempt to use DGA - String magPresent = (String) java.security.AccessController.doPrivileged + String magPresent = java.security.AccessController.doPrivileged (new sun.security.action.GetPropertyAction("javax.accessibility.screen_magnifier_present")); boolean tryDGA = magPresent == null || !"true".equals(magPresent); initIDs(XORComposite.class, tryDGA); - String xtextpipe = (String) java.security.AccessController.doPrivileged + String xtextpipe = java.security.AccessController.doPrivileged (new sun.security.action.GetPropertyAction("sun.java2d.xtextpipe")); if (xtextpipe == null || "true".startsWith(xtextpipe)) { if ("true".equals(xtextpipe)) { @@ -264,8 +264,7 @@ public abstract class X11SurfaceData extends XSurfaceData { if (GraphicsEnvironment.isHeadless()) { accelerationEnabled = Boolean.FALSE; } else { - String prop = - (String) java.security.AccessController.doPrivileged( + String prop = java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction("sun.java2d.pmoffscreen")); if (prop != null) { // true iff prop==true, false otherwise diff --git a/jdk/src/solaris/classes/sun/java2d/xr/XRDrawLine.java b/jdk/src/solaris/classes/sun/java2d/xr/XRDrawLine.java index 66b595e9455..a3c46ae26da 100644 --- a/jdk/src/solaris/classes/sun/java2d/xr/XRDrawLine.java +++ b/jdk/src/solaris/classes/sun/java2d/xr/XRDrawLine.java @@ -1,7 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. - - + * Copyright (c) 2013, 2014, 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 @@ -249,7 +247,7 @@ public class XRDrawLine { if (dx < 0) { xsteps = -xsteps; } - x1 = ucX1 + (int) xsteps; + x1 = ucX1 + xsteps; } else if ((outcode1 & (OUTCODE_LEFT | OUTCODE_RIGHT)) != 0) { if ((outcode1 & OUTCODE_LEFT) != 0) { x1 = cxmin; @@ -268,7 +266,7 @@ public class XRDrawLine { if (dy < 0) { ysteps = -ysteps; } - y1 = ucY1 + (int) ysteps; + y1 = ucY1 + ysteps; } outcode1 = outcode(x1, y1, cxmin, cymin, cxmax, cymax); } else { @@ -292,7 +290,7 @@ public class XRDrawLine { if (dx > 0) { xsteps = -xsteps; } - x2 = ucX2 + (int) xsteps; + x2 = ucX2 + xsteps; } else if ((outcode2 & (OUTCODE_LEFT | OUTCODE_RIGHT)) != 0) { if ((outcode2 & OUTCODE_LEFT) != 0) { x2 = cxmin; @@ -313,7 +311,7 @@ public class XRDrawLine { if (dy > 0) { ysteps = -ysteps; } - y2 = ucY2 + (int) ysteps; + y2 = ucY2 + ysteps; } outcode2 = outcode(x2, y2, cxmin, cymin, cxmax, cymax); } diff --git a/jdk/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java b/jdk/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java index 981629d1e06..58ebf7193b7 100644 --- a/jdk/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java +++ b/jdk/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2014, 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 @@ -178,6 +178,7 @@ class XRPMScaledBlit extends ScaledBlit { super(srcType, CompositeType.AnyAlpha, dstType); } + @SuppressWarnings("cast") public void Scale(SurfaceData src, SurfaceData dst, Composite comp, Region clip, int sx1, int sy1, int sx2, int sy2, double dx1, double dy1, double dx2, double dy2) { try { diff --git a/jdk/src/solaris/classes/sun/java2d/xr/XRPaints.java b/jdk/src/solaris/classes/sun/java2d/xr/XRPaints.java index 05136dabaf2..07cba15ec3f 100644 --- a/jdk/src/solaris/classes/sun/java2d/xr/XRPaints.java +++ b/jdk/src/solaris/classes/sun/java2d/xr/XRPaints.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2014, 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 @@ -231,7 +231,7 @@ abstract class XRPaints { Rectangle2D anchor = paint.getAnchorRect(); XRSurfaceData dstData = (XRSurfaceData) sg2d.surfaceData; - XRSurfaceData srcData = (XRSurfaceData) getAccSrcSurface(dstData, bi); + XRSurfaceData srcData = getAccSrcSurface(dstData, bi); AffineTransform at = new AffineTransform(); at.translate(anchor.getX(), anchor.getY()); @@ -259,7 +259,7 @@ abstract class XRPaints { public int colorToIntArgbPixel(Color c) { int rgb = c.getRGB(); - int a = (int) Math.round(xrCompMan.getExtraAlpha() * (rgb >>> 24)); + int a = Math.round(xrCompMan.getExtraAlpha() * (rgb >>> 24)); return ((a << 24) | (rgb & 0x00FFFFFF)); } } diff --git a/jdk/src/solaris/classes/sun/print/AttributeClass.java b/jdk/src/solaris/classes/sun/print/AttributeClass.java index f9018dce19f..76a652b2a93 100644 --- a/jdk/src/solaris/classes/sun/print/AttributeClass.java +++ b/jdk/src/solaris/classes/sun/print/AttributeClass.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -274,7 +274,7 @@ public class AttributeClass { } private int unsignedByteToInt(byte b) { - return (int) (b & 0xff); + return (b & 0xff); } private int convertToInt(byte[] buf) { diff --git a/jdk/src/solaris/classes/sun/print/CUPSPrinter.java b/jdk/src/solaris/classes/sun/print/CUPSPrinter.java index a4c1082e78c..ddfb6e1e742 100644 --- a/jdk/src/solaris/classes/sun/print/CUPSPrinter.java +++ b/jdk/src/solaris/classes/sun/print/CUPSPrinter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -298,7 +298,7 @@ public class CUPSPrinter { printerInfo[0] = UnixPrintServiceLookup. getDefaultPrinterNameSysV(); printerInfo[1] = null; - return (String[])printerInfo.clone(); + return printerInfo.clone(); } else { return null; } @@ -318,7 +318,7 @@ public class CUPSPrinter { } os.close(); urlConnection.disconnect(); - return (String [])printerInfo.clone(); + return printerInfo.clone(); } } os.close(); diff --git a/jdk/src/solaris/classes/sun/print/IPPPrintService.java b/jdk/src/solaris/classes/sun/print/IPPPrintService.java index f48dd5ba38e..689288126b9 100644 --- a/jdk/src/solaris/classes/sun/print/IPPPrintService.java +++ b/jdk/src/solaris/classes/sun/print/IPPPrintService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -74,8 +74,7 @@ public class IPPPrintService implements PrintService, SunPrinterJobService { private static final String FORCE_PIPE_PROP = "sun.print.ippdebug"; static { - String debugStr = - (String)java.security.AccessController.doPrivileged( + String debugStr = java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction(FORCE_PIPE_PROP)); debugPrint = "true".equalsIgnoreCase(debugStr); @@ -424,7 +423,7 @@ public class IPPPrintService implements PrintService, SunPrinterJobService { } // use IPP to get all media, - Media[] allMedia = (Media[])getSupportedMedia(); + Media[] allMedia = getSupportedMedia(); ArrayList sizeList = new ArrayList(); ArrayList trayList = new ArrayList(); for (int i=0; i Date: Tue, 28 Jan 2014 12:53:56 -0800 Subject: [PATCH 090/158] 8032711: Issue with Lambda in handling 8032704: Issues with lib perm in Lambda Reviewed-by: jrose, ahgross, briangoetz --- .../AbstractValidatingLambdaMetafactory.java | 11 ++++ .../java/lang/invoke/lambda/T8032704.java | 62 +++++++++++++++++++ .../java/lang/invoke/lambda/T8032711.java | 62 +++++++++++++++++++ 3 files changed, 135 insertions(+) create mode 100644 jdk/test/java/lang/invoke/lambda/T8032704.java create mode 100644 jdk/test/java/lang/invoke/lambda/T8032711.java diff --git a/jdk/src/share/classes/java/lang/invoke/AbstractValidatingLambdaMetafactory.java b/jdk/src/share/classes/java/lang/invoke/AbstractValidatingLambdaMetafactory.java index e1c82d8f559..ab0483490b8 100644 --- a/jdk/src/share/classes/java/lang/invoke/AbstractValidatingLambdaMetafactory.java +++ b/jdk/src/share/classes/java/lang/invoke/AbstractValidatingLambdaMetafactory.java @@ -114,6 +114,11 @@ import static sun.invoke.util.Wrapper.isWrapperType; Class[] markerInterfaces, MethodType[] additionalBridges) throws LambdaConversionException { + if ((caller.lookupModes() & MethodHandles.Lookup.PRIVATE) == 0) { + throw new LambdaConversionException(String.format( + "Invalid caller: %s", + caller.lookupClass().getName())); + } this.targetClass = caller.lookupClass(); this.invokedType = invokedType; @@ -256,11 +261,17 @@ import static sun.invoke.util.Wrapper.isWrapperType; (implKind == MethodHandleInfo.REF_newInvokeSpecial) ? implDefiningClass : implMethodType.returnType(); + Class samReturnType = samMethodType.returnType(); if (!isAdaptableToAsReturn(actualReturnType, expectedType)) { throw new LambdaConversionException( String.format("Type mismatch for lambda return: %s is not convertible to %s", actualReturnType, expectedType)); } + if (!isAdaptableToAsReturn(expectedType, samReturnType)) { + throw new LambdaConversionException( + String.format("Type mismatch for lambda expected return: %s is not convertible to %s", + expectedType, samReturnType)); + } } /** diff --git a/jdk/test/java/lang/invoke/lambda/T8032704.java b/jdk/test/java/lang/invoke/lambda/T8032704.java new file mode 100644 index 00000000000..9dfe3a0f108 --- /dev/null +++ b/jdk/test/java/lang/invoke/lambda/T8032704.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8032704 + * @summary Issues with lib perm in Lambda + */ + +import java.io.Closeable; +import java.lang.invoke.LambdaMetafactory; +import java.lang.invoke.LambdaConversionException; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; + +public class T8032704 { + + public static void here() {} + static MethodHandle h; + private static MethodType mt(Class k) { return MethodType.methodType(k); } + private static boolean mf(MethodHandles.Lookup l) { + try { + LambdaMetafactory.metafactory(l, "close", + mt(Closeable.class),mt(void.class),h,mt(void.class)); + } catch(LambdaConversionException e) { + return true; + } + return false; + } + + public static void main(String[] args) throws Throwable { + MethodHandles.Lookup ll = MethodHandles.lookup(); + h = ll.findStatic(T8032704.class, "here", mt(void.class)); + if (mf(ll)) throw new AssertionError("Error: Should work"); + if (!mf(MethodHandles.publicLookup())) throw new AssertionError("Error: Should fail - public"); + if (!mf(ll.in(T8032704other.class))) throw new AssertionError("Error: Should fail - other"); + if (!mf(ll.in(Thread.class))) throw new AssertionError("Error: Should fail - Thread"); + } +} + +class T8032704other {} diff --git a/jdk/test/java/lang/invoke/lambda/T8032711.java b/jdk/test/java/lang/invoke/lambda/T8032711.java new file mode 100644 index 00000000000..b01009f8336 --- /dev/null +++ b/jdk/test/java/lang/invoke/lambda/T8032711.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8032711 + * @summary Issue with Lambda in handling + */ + +import java.lang.invoke.LambdaMetafactory; +import java.lang.invoke.LambdaConversionException; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; + +public class T8032711 { + + interface I { + void m(); + } + + static void here() {} + static MethodHandles.Lookup l; + static MethodHandle h; + private static MethodType mt(Class k) { return MethodType.methodType(k); } + private static boolean mf(Class k) { + try { + LambdaMetafactory.metafactory(l, "m", + mt(I.class),mt(k),h,mt(void.class)); + } catch(LambdaConversionException e) { + return true; + } + return false; + } + + public static void main(String[] args) throws Throwable { + l = MethodHandles.lookup(); + h = l.findStatic(T8032711.class, "here", mt(void.class)); + if (mf(void.class)) throw new AssertionError("Error: Should work"); + if (!mf(String.class)) throw new AssertionError("Error: Should fail"); + } +} From aa81fd4ead716a46c5e34fc057ad8fe6df9502a4 Mon Sep 17 00:00:00 2001 From: Daniel Smith Date: Tue, 28 Jan 2014 17:22:07 -0800 Subject: [PATCH 091/158] 8032697: Issues with Lambda Reviewed-by: ahgross, briangoetz, dlsmith, rfield --- .../AbstractValidatingLambdaMetafactory.java | 7 ++ .../java/lang/invoke/lambda/T8032697.java | 69 +++++++++++++++++++ .../T8032697_anotherpkg/T8032697_A.java | 28 ++++++++ 3 files changed, 104 insertions(+) create mode 100644 jdk/test/java/lang/invoke/lambda/T8032697.java create mode 100644 jdk/test/java/lang/invoke/lambda/T8032697_anotherpkg/T8032697_A.java diff --git a/jdk/src/share/classes/java/lang/invoke/AbstractValidatingLambdaMetafactory.java b/jdk/src/share/classes/java/lang/invoke/AbstractValidatingLambdaMetafactory.java index ab0483490b8..e8e36e1f323 100644 --- a/jdk/src/share/classes/java/lang/invoke/AbstractValidatingLambdaMetafactory.java +++ b/jdk/src/share/classes/java/lang/invoke/AbstractValidatingLambdaMetafactory.java @@ -226,6 +226,13 @@ import static sun.invoke.util.Wrapper.isWrapperType; String.format("Invalid receiver type %s; not a subtype of implementation type %s", receiverClass, implDefiningClass)); } + + Class implReceiverClass = implMethod.type().parameterType(0); + if (implReceiverClass != implDefiningClass && !implReceiverClass.isAssignableFrom(receiverClass)) { + throw new LambdaConversionException( + String.format("Invalid receiver type %s; not a subtype of implementation receiver type %s", + receiverClass, implReceiverClass)); + } } else { // no receiver capturedStart = 0; diff --git a/jdk/test/java/lang/invoke/lambda/T8032697.java b/jdk/test/java/lang/invoke/lambda/T8032697.java new file mode 100644 index 00000000000..be422a94b33 --- /dev/null +++ b/jdk/test/java/lang/invoke/lambda/T8032697.java @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8032697 + * @summary Issues with Lambda + */ + +import java.lang.invoke.LambdaMetafactory; +import java.lang.invoke.LambdaConversionException; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; + +import T8032697_anotherpkg.T8032697_A; + +public class T8032697 extends T8032697_A { + + interface I { + int m(); + } + + interface IA { + int m(T8032697_A x); + } + + static MethodHandles.Lookup l; + static MethodHandle h; + private static MethodType mt(Class k) { return MethodType.methodType(k); } + private static MethodType mt(Class k, Class k2) { return MethodType.methodType(k, k2); } + private static boolean mf(MethodType mti, MethodType mtf) { + try { + LambdaMetafactory.metafactory(l, "m", mti,mtf,h,mtf); + } catch(LambdaConversionException e) { + return true; + } + return false; + } + + public static void main(String[] args) throws Throwable { + l = MethodHandles.lookup(); + h = l.findVirtual(T8032697_A.class, "f", mt(int.class)); + if (mf(mt(I.class, T8032697.class), mt(int.class))) throw new AssertionError("Error: Should work"); + if (mf(mt(IA.class), mt(int.class, T8032697.class))) throw new AssertionError("Error: Should work"); + if (!mf(mt(I.class, T8032697_A.class), mt(int.class))) throw new AssertionError("Error: Should fail"); + if (!mf(mt(IA.class), mt(int.class, T8032697_A.class))) throw new AssertionError("Error: Should fail"); + } +} diff --git a/jdk/test/java/lang/invoke/lambda/T8032697_anotherpkg/T8032697_A.java b/jdk/test/java/lang/invoke/lambda/T8032697_anotherpkg/T8032697_A.java new file mode 100644 index 00000000000..d611e3fef6f --- /dev/null +++ b/jdk/test/java/lang/invoke/lambda/T8032697_anotherpkg/T8032697_A.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package T8032697_anotherpkg; + +public class T8032697_A { + protected final int f() { return 2; } +} From 9d9bc9f86dda4ffe646e7f466482c5d39eca1f68 Mon Sep 17 00:00:00 2001 From: Sunny Chan Date: Tue, 28 Jan 2014 09:33:39 -0500 Subject: [PATCH 092/158] 7142035: assert in j.l.instrument agents during shutdown when daemon thread is running Reviewed-by: sla --- jdk/src/share/instrument/Reentrancy.c | 2 + .../instrument/DaemonThread/DummyAgent.java | 46 ++++++++++++ .../instrument/DaemonThread/DummyClass.java | 27 +++++++ .../DaemonThread/TestDaemonThread.java | 72 +++++++++++++++++++ .../TestDaemonThreadLauncher.java | 44 ++++++++++++ 5 files changed, 191 insertions(+) create mode 100644 jdk/test/java/lang/instrument/DaemonThread/DummyAgent.java create mode 100644 jdk/test/java/lang/instrument/DaemonThread/DummyClass.java create mode 100644 jdk/test/java/lang/instrument/DaemonThread/TestDaemonThread.java create mode 100644 jdk/test/java/lang/instrument/DaemonThread/TestDaemonThreadLauncher.java diff --git a/jdk/src/share/instrument/Reentrancy.c b/jdk/src/share/instrument/Reentrancy.c index 58cbfdd1b53..0b526c10a45 100644 --- a/jdk/src/share/instrument/Reentrancy.c +++ b/jdk/src/share/instrument/Reentrancy.c @@ -130,6 +130,7 @@ tryToAcquireReentrancyToken( jvmtiEnv * jvmtienv, error = confirmingTLSSet ( jvmtienv, thread, JPLIS_CURRENTLY_INSIDE_TOKEN); + check_phase_ret_false(error); jplis_assert(error == JVMTI_ERROR_NONE); if ( error != JVMTI_ERROR_NONE ) { result = JNI_FALSE; @@ -158,6 +159,7 @@ releaseReentrancyToken( jvmtiEnv * jvmtienv, error = confirmingTLSSet( jvmtienv, thread, JPLIS_CURRENTLY_OUTSIDE_TOKEN); + check_phase_ret(error); jplis_assert(error == JVMTI_ERROR_NONE); } diff --git a/jdk/test/java/lang/instrument/DaemonThread/DummyAgent.java b/jdk/test/java/lang/instrument/DaemonThread/DummyAgent.java new file mode 100644 index 00000000000..64b4d59cf18 --- /dev/null +++ b/jdk/test/java/lang/instrument/DaemonThread/DummyAgent.java @@ -0,0 +1,46 @@ +/* + * Copyright 2014 Goldman Sachs. + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.lang.instrument.ClassFileTransformer; +import java.lang.instrument.IllegalClassFormatException; +import java.lang.instrument.Instrumentation; +import java.security.ProtectionDomain; + +public class DummyAgent implements ClassFileTransformer { + @Override + public byte[] transform(ClassLoader loader, String className, + Class classBeingRedefined, ProtectionDomain protectionDomain, + byte[] classfileBuffer) throws IllegalClassFormatException { + + /* The Daemon Thread bug is timing dependent and you want the transform method + * to return ASAP - so just return the buffer will be fine + */ + return classfileBuffer; + } + + public static void premain(String agentArgs, Instrumentation inst) { + inst.addTransformer(new DummyAgent(), false); + } + +} diff --git a/jdk/test/java/lang/instrument/DaemonThread/DummyClass.java b/jdk/test/java/lang/instrument/DaemonThread/DummyClass.java new file mode 100644 index 00000000000..18d671afc09 --- /dev/null +++ b/jdk/test/java/lang/instrument/DaemonThread/DummyClass.java @@ -0,0 +1,27 @@ +/* + * Copyright 2014 Goldman Sachs. + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* Just a dummy class for loading */ +public class DummyClass { +} diff --git a/jdk/test/java/lang/instrument/DaemonThread/TestDaemonThread.java b/jdk/test/java/lang/instrument/DaemonThread/TestDaemonThread.java new file mode 100644 index 00000000000..20c9077d02f --- /dev/null +++ b/jdk/test/java/lang/instrument/DaemonThread/TestDaemonThread.java @@ -0,0 +1,72 @@ +/* + * Copyright 2014 Goldman Sachs. + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +/* @test + * @bug 7142035 + * @summary Assert in java.lang.instrument agents during shutdown when classloading occurs after shutdown + * @library /lib/testlibrary + * + * @build DummyAgent DummyClass TestDaemonThreadLauncher TestDaemonThread + * @run shell ../MakeJAR3.sh DummyAgent + * @run main TestDaemonThreadLauncher /timeout=240 + * + */ +import java.io.File; +import java.net.URL; +import java.net.URLClassLoader; + +public class TestDaemonThread implements Runnable{ + File classpath; + + public TestDaemonThread(File classpath) { + this.classpath = classpath; + } + + @Override + public void run() { + + + try { + URL u = this.getClass().getClassLoader().getResource("DummyClass.class"); + String path = u.getPath(); + String parent = u.getPath().substring(0, path.lastIndexOf('/')+1); + URL parentURL = new URL(u, parent); + System.out.println(parentURL); + /* Load lots of class by creating multiple classloaders */ + for(;;) { + ClassLoader cl = new URLClassLoader(new URL[] {parentURL}, null); + cl.loadClass("DummyClass"); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) throws Exception { + Thread t = new Thread(new TestDaemonThread(new File(args[0]))); + /* The important part of the bug is that a Daemon thread can continue to load classes after shutdown */ + t.setDaemon(true); + t.start(); + Thread.sleep(200); + } +} diff --git a/jdk/test/java/lang/instrument/DaemonThread/TestDaemonThreadLauncher.java b/jdk/test/java/lang/instrument/DaemonThread/TestDaemonThreadLauncher.java new file mode 100644 index 00000000000..9660bbfa9dc --- /dev/null +++ b/jdk/test/java/lang/instrument/DaemonThread/TestDaemonThreadLauncher.java @@ -0,0 +1,44 @@ +/* + * Copyright 2014 Goldman Sachs. + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + +import jdk.testlibrary.JDKToolLauncher; +import jdk.testlibrary.OutputAnalyzer; +import jdk.testlibrary.ProcessTools; + +import java.io.IOException; +import java.nio.file.Path; + +public class TestDaemonThreadLauncher { + + private static ProcessBuilder processBuilder = new ProcessBuilder(); + + public static void main(String args[]) throws Exception { + for(int i=0; i<50; i++) { + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-javaagent:DummyAgent.jar", "TestDaemonThread", "."); + OutputAnalyzer analyzer = new OutputAnalyzer(pb.start()); + analyzer.shouldNotContain("ASSERTION FAILED"); + } + } +} From ad5f12b1fcdf38a7c07bcc9072b0da7f33e01f08 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Wed, 29 Jan 2014 11:04:37 +0100 Subject: [PATCH 093/158] 8027584: Disable ccache by default Reviewed-by: mduigou, tbell --- common/autoconf/basics.m4 | 8 -- common/autoconf/build-performance.m4 | 32 ++++-- common/autoconf/generated-configure.sh | 131 ++++++++++--------------- common/autoconf/help.m4 | 28 +----- 4 files changed, 78 insertions(+), 121 deletions(-) diff --git a/common/autoconf/basics.m4 b/common/autoconf/basics.m4 index 9ef7b0400da..028f5539323 100644 --- a/common/autoconf/basics.m4 +++ b/common/autoconf/basics.m4 @@ -738,12 +738,4 @@ AC_DEFUN_ONCE([BASIC_TEST_USABILITY_ISSUES], else IS_RECONFIGURE=no fi - - if test -e $SRC_ROOT/build/.hide-configure-performance-hints; then - HIDE_PERFORMANCE_HINTS=yes - else - HIDE_PERFORMANCE_HINTS=no - # Hide it the next time around... - $TOUCH $SRC_ROOT/build/.hide-configure-performance-hints > /dev/null 2>&1 - fi ]) diff --git a/common/autoconf/build-performance.m4 b/common/autoconf/build-performance.m4 index 8fc671dc663..518457ac105 100644 --- a/common/autoconf/build-performance.m4 +++ b/common/autoconf/build-performance.m4 @@ -160,20 +160,28 @@ AC_DEFUN_ONCE([BPERF_SETUP_BUILD_JOBS], AC_DEFUN([BPERF_SETUP_CCACHE], [ AC_ARG_ENABLE([ccache], - [AS_HELP_STRING([--disable-ccache], - [disable using ccache to speed up recompilations @<:@enabled@:>@])], - [ENABLE_CCACHE=${enable_ccache}], [ENABLE_CCACHE=yes]) - if test "x$ENABLE_CCACHE" = xyes; then + [AS_HELP_STRING([--enable-ccache], + [enable using ccache to speed up recompilations @<:@disabled@:>@])]) + + CCACHE= + AC_MSG_CHECKING([is ccache enabled]) + ENABLE_CCACHE=$enable_ccache + if test "x$enable_ccache" = xyes; then + AC_MSG_RESULT([yes]) OLD_PATH="$PATH" if test "x$TOOLS_DIR" != x; then PATH=$TOOLS_DIR:$PATH fi - AC_PATH_PROG(CCACHE, ccache) + BASIC_REQUIRE_PROG(CCACHE, ccache) + CCACHE_STATUS="enabled" PATH="$OLD_PATH" + elif test "x$enable_ccache" = xno; then + AC_MSG_RESULT([no, explicitly disabled]) + elif test "x$enable_ccache" = x; then + AC_MSG_RESULT([no]) else - AC_MSG_CHECKING([for ccache]) - AC_MSG_RESULT([explicitly disabled]) - CCACHE= + AC_MSG_RESULT([unknown]) + AC_MSG_ERROR([--enable-ccache does not accept any parameters]) fi AC_SUBST(CCACHE) @@ -185,8 +193,11 @@ AC_DEFUN([BPERF_SETUP_CCACHE], # When using a non home ccache directory, assume the use is to share ccache files # with other users. Thus change the umask. SET_CCACHE_DIR="CCACHE_DIR=$with_ccache_dir CCACHE_UMASK=002" + if test "x$CCACHE" = x; then + AC_MSG_WARN([--with-ccache-dir has no meaning when ccache is not enabled]) + fi fi - CCACHE_FOUND="" + if test "x$CCACHE" != x; then BPERF_SETUP_CCACHE_USAGE fi @@ -195,7 +206,6 @@ AC_DEFUN([BPERF_SETUP_CCACHE], AC_DEFUN([BPERF_SETUP_CCACHE_USAGE], [ if test "x$CCACHE" != x; then - CCACHE_FOUND="true" # Only use ccache if it is 3.1.4 or later, which supports # precompiled headers. AC_MSG_CHECKING([if ccache supports precompiled headers]) @@ -203,6 +213,7 @@ AC_DEFUN([BPERF_SETUP_CCACHE_USAGE], if test "x$HAS_GOOD_CCACHE" = x; then AC_MSG_RESULT([no, disabling ccache]) CCACHE= + CCACHE_STATUS="disabled" else AC_MSG_RESULT([yes]) AC_MSG_CHECKING([if C-compiler supports ccache precompiled headers]) @@ -215,6 +226,7 @@ AC_DEFUN([BPERF_SETUP_CCACHE_USAGE], else AC_MSG_RESULT([no, disabling ccaching of precompiled headers]) CCACHE= + CCACHE_STATUS="disabled" fi fi fi diff --git a/common/autoconf/generated-configure.sh b/common/autoconf/generated-configure.sh index 6e425bf4178..80adc25efc2 100644 --- a/common/autoconf/generated-configure.sh +++ b/common/autoconf/generated-configure.sh @@ -1736,8 +1736,8 @@ Optional Features: --disable-precompiled-headers disable using precompiled headers when compiling C++ [enabled] - --disable-ccache disable using ccache to speed up recompilations - [enabled] + --enable-ccache enable using ccache to speed up recompilations + [disabled] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -3868,7 +3868,7 @@ fi #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1390947033 +DATE_WHEN_GENERATED=1390989605 ############################################################################### # @@ -36165,18 +36165,26 @@ $as_echo "yes" >&6; } # Check whether --enable-ccache was given. if test "${enable_ccache+set}" = set; then : - enableval=$enable_ccache; ENABLE_CCACHE=${enable_ccache} -else - ENABLE_CCACHE=yes + enableval=$enable_ccache; fi - if test "x$ENABLE_CCACHE" = xyes; then + + CCACHE= + { $as_echo "$as_me:${as_lineno-$LINENO}: checking is ccache enabled" >&5 +$as_echo_n "checking is ccache enabled... " >&6; } + ENABLE_CCACHE=$enable_ccache + if test "x$enable_ccache" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } OLD_PATH="$PATH" if test "x$TOOLS_DIR" != x; then PATH=$TOOLS_DIR:$PATH fi - # Extract the first word of "ccache", so it can be a program name with args. -set dummy ccache; ac_word=$2 + + for ac_prog in ccache +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_CCACHE+:} false; then : @@ -36215,13 +36223,34 @@ $as_echo "no" >&6; } fi + test -n "$CCACHE" && break +done + + + if test "x$CCACHE" = x; then + if test "xccache" = x; then + PROG_NAME=ccache + else + PROG_NAME=ccache + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 +$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} + as_fn_error $? "Cannot continue" "$LINENO" 5 + fi + + + CCACHE_STATUS="enabled" PATH="$OLD_PATH" + elif test "x$enable_ccache" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, explicitly disabled" >&5 +$as_echo "no, explicitly disabled" >&6; } + elif test "x$enable_ccache" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ccache" >&5 -$as_echo_n "checking for ccache... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: explicitly disabled" >&5 -$as_echo "explicitly disabled" >&6; } - CCACHE= + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unknown" >&5 +$as_echo "unknown" >&6; } + as_fn_error $? "--enable-ccache does not accept any parameters" "$LINENO" 5 fi @@ -36236,12 +36265,15 @@ fi # When using a non home ccache directory, assume the use is to share ccache files # with other users. Thus change the umask. SET_CCACHE_DIR="CCACHE_DIR=$with_ccache_dir CCACHE_UMASK=002" + if test "x$CCACHE" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-ccache-dir has no meaning when ccache is not enabled" >&5 +$as_echo "$as_me: WARNING: --with-ccache-dir has no meaning when ccache is not enabled" >&2;} + fi fi - CCACHE_FOUND="" + if test "x$CCACHE" != x; then if test "x$CCACHE" != x; then - CCACHE_FOUND="true" # Only use ccache if it is 3.1.4 or later, which supports # precompiled headers. { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ccache supports precompiled headers" >&5 @@ -36251,6 +36283,7 @@ $as_echo_n "checking if ccache supports precompiled headers... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, disabling ccache" >&5 $as_echo "no, disabling ccache" >&6; } CCACHE= + CCACHE_STATUS="disabled" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -36283,6 +36316,7 @@ $as_echo "yes" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, disabling ccaching of precompiled headers" >&5 $as_echo "no, disabling ccaching of precompiled headers" >&6; } CCACHE= + CCACHE_STATUS="disabled" fi fi fi @@ -36359,14 +36393,6 @@ $as_echo "$OUTPUT_DIR_IS_LOCAL" >&6; } IS_RECONFIGURE=no fi - if test -e $SRC_ROOT/build/.hide-configure-performance-hints; then - HIDE_PERFORMANCE_HINTS=yes - else - HIDE_PERFORMANCE_HINTS=no - # Hide it the next time around... - $TOUCH $SRC_ROOT/build/.hide-configure-performance-hints > /dev/null 2>&1 - fi - # At the end, call the custom hook. (Dummy macro if no custom sources available) @@ -37668,22 +37694,6 @@ $CHMOD +x $OUTPUT_ROOT/compare.sh # Finally output some useful information to the user - if test "x$CCACHE_FOUND" != x; then - if test "x$HAS_GOOD_CCACHE" = x; then - CCACHE_STATUS="installed, but disabled (version older than 3.1.4)" - CCACHE_HELP_MSG="You have ccache installed, but it is a version prior to 3.1.4. Try upgrading." - else - CCACHE_STATUS="installed and in use" - fi - else - if test "x$GCC" = xyes; then - CCACHE_STATUS="not installed (consider installing)" - CCACHE_HELP_MSG="You do not have ccache installed. Try installing it." - else - CCACHE_STATUS="not available for your system" - fi - fi - printf "\n" printf "====================================================\n" printf "A new configuration has been successfully created in\n" @@ -37714,46 +37724,11 @@ $CHMOD +x $OUTPUT_ROOT/compare.sh printf "Build performance summary:\n" printf "* Cores to use: $JOBS\n" printf "* Memory limit: $MEMORY_SIZE MB\n" - printf "* ccache status: $CCACHE_STATUS\n" + if test "x$CCACHE_STATUS" != "x"; then + printf "* ccache status: $CCACHE_STATUS\n" + fi printf "\n" - if test "x$CCACHE_HELP_MSG" != x && test "x$HIDE_PERFORMANCE_HINTS" = "xno"; then - printf "Build performance tip: ccache gives a tremendous speedup for C++ recompilations.\n" - printf "$CCACHE_HELP_MSG\n" - - # Print a helpful message on how to acquire the necessary build dependency. - # ccache is the help tag: freetype, cups, pulse, alsa etc - MISSING_DEPENDENCY=ccache - - if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then - cygwin_help $MISSING_DEPENDENCY - elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then - msys_help $MISSING_DEPENDENCY - else - PKGHANDLER_COMMAND= - - case $PKGHANDLER in - apt-get) - apt_help $MISSING_DEPENDENCY ;; - yum) - yum_help $MISSING_DEPENDENCY ;; - port) - port_help $MISSING_DEPENDENCY ;; - pkgutil) - pkgutil_help $MISSING_DEPENDENCY ;; - pkgadd) - pkgadd_help $MISSING_DEPENDENCY ;; - esac - - if test "x$PKGHANDLER_COMMAND" != x; then - HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'." - fi - fi - - printf "$HELP_MSG\n" - printf "\n" - fi - if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xyes"; then printf "NOTE: You have requested to build more than one version of the JVM, which\n" printf "will result in longer build times.\n" diff --git a/common/autoconf/help.m4 b/common/autoconf/help.m4 index 0b33e504c64..89ecfbef68c 100644 --- a/common/autoconf/help.m4 +++ b/common/autoconf/help.m4 @@ -155,22 +155,6 @@ AC_DEFUN_ONCE([HELP_PRINT_SUMMARY_AND_WARNINGS], [ # Finally output some useful information to the user - if test "x$CCACHE_FOUND" != x; then - if test "x$HAS_GOOD_CCACHE" = x; then - CCACHE_STATUS="installed, but disabled (version older than 3.1.4)" - CCACHE_HELP_MSG="You have ccache installed, but it is a version prior to 3.1.4. Try upgrading." - else - CCACHE_STATUS="installed and in use" - fi - else - if test "x$GCC" = xyes; then - CCACHE_STATUS="not installed (consider installing)" - CCACHE_HELP_MSG="You do not have ccache installed. Try installing it." - else - CCACHE_STATUS="not available for your system" - fi - fi - printf "\n" printf "====================================================\n" printf "A new configuration has been successfully created in\n" @@ -201,16 +185,10 @@ AC_DEFUN_ONCE([HELP_PRINT_SUMMARY_AND_WARNINGS], printf "Build performance summary:\n" printf "* Cores to use: $JOBS\n" printf "* Memory limit: $MEMORY_SIZE MB\n" - printf "* ccache status: $CCACHE_STATUS\n" - printf "\n" - - if test "x$CCACHE_HELP_MSG" != x && test "x$HIDE_PERFORMANCE_HINTS" = "xno"; then - printf "Build performance tip: ccache gives a tremendous speedup for C++ recompilations.\n" - printf "$CCACHE_HELP_MSG\n" - HELP_MSG_MISSING_DEPENDENCY([ccache]) - printf "$HELP_MSG\n" - printf "\n" + if test "x$CCACHE_STATUS" != "x"; then + printf "* ccache status: $CCACHE_STATUS\n" fi + printf "\n" if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xyes"; then printf "NOTE: You have requested to build more than one version of the JVM, which\n" From 57fe89a46b189b94b939e2795e0d5dead49b97aa Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Wed, 29 Jan 2014 11:21:54 +0100 Subject: [PATCH 094/158] 8031759: Improved tool overriding in configure Reviewed-by: tbell, mduigou, erikj --- common/autoconf/basics.m4 | 242 +- common/autoconf/configure | 17 +- common/autoconf/generated-configure.sh | 11627 +++++++++++++++++++++-- common/autoconf/toolchain.m4 | 30 +- 4 files changed, 11274 insertions(+), 642 deletions(-) diff --git a/common/autoconf/basics.m4 b/common/autoconf/basics.m4 index 028f5539323..6bd29145e39 100644 --- a/common/autoconf/basics.m4 +++ b/common/autoconf/basics.m4 @@ -236,35 +236,119 @@ AC_DEFUN_ONCE([BASIC_INIT], # Test that variable $1 denoting a program is not empty. If empty, exit with an error. # $1: variable to check -# $2: executable name to print in warning (optional) AC_DEFUN([BASIC_CHECK_NONEMPTY], [ if test "x[$]$1" = x; then - if test "x$2" = x; then - PROG_NAME=translit($1,A-Z,a-z) - else - PROG_NAME=$2 - fi - AC_MSG_NOTICE([Could not find $PROG_NAME!]) - AC_MSG_ERROR([Cannot continue]) + AC_MSG_ERROR([Could not find required tool for $1]) fi ]) -# Does AC_PATH_PROG followed by BASIC_CHECK_NONEMPTY. -# Arguments as AC_PATH_PROG: -# $1: variable to set -# $2: executable name to look for -AC_DEFUN([BASIC_REQUIRE_PROG], +# Check that there are no unprocessed overridden variables left. +# If so, they are an incorrect argument and we will exit with an error. +AC_DEFUN([BASIC_CHECK_LEFTOVER_OVERRIDDEN], [ - AC_PATH_PROGS($1, $2) - BASIC_CHECK_NONEMPTY($1, $2) + if test "x$CONFIGURE_OVERRIDDEN_VARIABLES" != x; then + # Replace the separating ! with spaces before presenting for end user. + unknown_variables=${CONFIGURE_OVERRIDDEN_VARIABLES//!/ } + AC_MSG_ERROR([The following variables are unknown to configure: $unknown_variables]) + fi +]) + +# Setup a tool for the given variable. If correctly specified by the user, +# use that value, otherwise search for the tool using the supplied code snippet. +# $1: variable to set +# $2: code snippet to call to look for the tool +AC_DEFUN([BASIC_SETUP_TOOL], +[ + # Publish this variable in the help. + AC_ARG_VAR($1, [Override default value for $1]) + + if test "x[$]$1" = x; then + # The variable is not set by user, try to locate tool using the code snippet + $2 + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !$1! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!$1!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "x$1" != xBASH; then + AC_MSG_WARN([Ignoring value of $1 from the environment. Use command line variables instead.]) + fi + # Try to locate tool using the code snippet + $2 + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="[$]$1" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + AC_MSG_NOTICE([Will search for user supplied tool $1=$tool_basename]) + AC_PATH_PROG($1, $tool_basename) + if test "x[$]$1" = x; then + AC_MSG_ERROR([User supplied tool $tool_basename could not be found]) + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + AC_MSG_NOTICE([Will use user supplied tool $1=$tool_specified]) + AC_MSG_CHECKING([for $1]) + if test ! -x "$tool_specified"; then + AC_MSG_RESULT([not found]) + AC_MSG_ERROR([User supplied tool $1=$tool_specified does not exist or is not executable]) + fi + AC_MSG_RESULT([$tool_specified]) + fi + fi + fi +]) + +# Call BASIC_SETUP_TOOL with AC_PATH_PROGS to locate the tool +# $1: variable to set +# $2: executable name (or list of names) to look for +AC_DEFUN([BASIC_PATH_PROGS], +[ + BASIC_SETUP_TOOL($1, [AC_PATH_PROGS($1, $2)]) +]) + +# Call BASIC_SETUP_TOOL with AC_CHECK_TOOLS to locate the tool +# $1: variable to set +# $2: executable name (or list of names) to look for +AC_DEFUN([BASIC_CHECK_TOOLS], +[ + BASIC_SETUP_TOOL($1, [AC_CHECK_TOOLS($1, $2)]) +]) + +# Like BASIC_PATH_PROGS but fails if no tool was found. +# $1: variable to set +# $2: executable name (or list of names) to look for +AC_DEFUN([BASIC_REQUIRE_PROGS], +[ + BASIC_PATH_PROGS($1, $2) + BASIC_CHECK_NONEMPTY($1) +]) + +# Like BASIC_SETUP_TOOL but fails if no tool was found. +# $1: variable to set +# $2: autoconf macro to call to look for the special tool +AC_DEFUN([BASIC_REQUIRE_SPECIAL], +[ + BASIC_SETUP_TOOL($1, [$2]) + BASIC_CHECK_NONEMPTY($1) ]) # Setup the most fundamental tools that relies on not much else to set up, # but is used by much of the early bootstrap code. AC_DEFUN_ONCE([BASIC_SETUP_FUNDAMENTAL_TOOLS], [ - # Start with tools that do not need have cross compilation support # and can be expected to be found in the default PATH. These tools are # used by configure. Nor are these tools expected to be found in the @@ -272,57 +356,50 @@ AC_DEFUN_ONCE([BASIC_SETUP_FUNDAMENTAL_TOOLS], # needed to download the devkit. # First are all the simple required tools. - BASIC_REQUIRE_PROG(BASENAME, basename) - BASIC_REQUIRE_PROG(BASH, bash) - BASIC_REQUIRE_PROG(CAT, cat) - BASIC_REQUIRE_PROG(CHMOD, chmod) - BASIC_REQUIRE_PROG(CMP, cmp) - BASIC_REQUIRE_PROG(COMM, comm) - BASIC_REQUIRE_PROG(CP, cp) - BASIC_REQUIRE_PROG(CPIO, cpio) - BASIC_REQUIRE_PROG(CUT, cut) - BASIC_REQUIRE_PROG(DATE, date) - BASIC_REQUIRE_PROG(DIFF, [gdiff diff]) - BASIC_REQUIRE_PROG(DIRNAME, dirname) - BASIC_REQUIRE_PROG(ECHO, echo) - BASIC_REQUIRE_PROG(EXPR, expr) - BASIC_REQUIRE_PROG(FILE, file) - BASIC_REQUIRE_PROG(FIND, find) - BASIC_REQUIRE_PROG(HEAD, head) - BASIC_REQUIRE_PROG(LN, ln) - BASIC_REQUIRE_PROG(LS, ls) - BASIC_REQUIRE_PROG(MKDIR, mkdir) - BASIC_REQUIRE_PROG(MKTEMP, mktemp) - BASIC_REQUIRE_PROG(MV, mv) - BASIC_REQUIRE_PROG(PRINTF, printf) - BASIC_REQUIRE_PROG(RM, rm) - BASIC_REQUIRE_PROG(SH, sh) - BASIC_REQUIRE_PROG(SORT, sort) - BASIC_REQUIRE_PROG(TAIL, tail) - BASIC_REQUIRE_PROG(TAR, tar) - BASIC_REQUIRE_PROG(TEE, tee) - BASIC_REQUIRE_PROG(TOUCH, touch) - BASIC_REQUIRE_PROG(TR, tr) - BASIC_REQUIRE_PROG(UNAME, uname) - BASIC_REQUIRE_PROG(UNIQ, uniq) - BASIC_REQUIRE_PROG(WC, wc) - BASIC_REQUIRE_PROG(WHICH, which) - BASIC_REQUIRE_PROG(XARGS, xargs) + BASIC_REQUIRE_PROGS(BASENAME, basename) + BASIC_REQUIRE_PROGS(BASH, bash) + BASIC_REQUIRE_PROGS(CAT, cat) + BASIC_REQUIRE_PROGS(CHMOD, chmod) + BASIC_REQUIRE_PROGS(CMP, cmp) + BASIC_REQUIRE_PROGS(COMM, comm) + BASIC_REQUIRE_PROGS(CP, cp) + BASIC_REQUIRE_PROGS(CPIO, cpio) + BASIC_REQUIRE_PROGS(CUT, cut) + BASIC_REQUIRE_PROGS(DATE, date) + BASIC_REQUIRE_PROGS(DIFF, [gdiff diff]) + BASIC_REQUIRE_PROGS(DIRNAME, dirname) + BASIC_REQUIRE_PROGS(ECHO, echo) + BASIC_REQUIRE_PROGS(EXPR, expr) + BASIC_REQUIRE_PROGS(FILE, file) + BASIC_REQUIRE_PROGS(FIND, find) + BASIC_REQUIRE_PROGS(HEAD, head) + BASIC_REQUIRE_PROGS(LN, ln) + BASIC_REQUIRE_PROGS(LS, ls) + BASIC_REQUIRE_PROGS(MKDIR, mkdir) + BASIC_REQUIRE_PROGS(MKTEMP, mktemp) + BASIC_REQUIRE_PROGS(MV, mv) + BASIC_REQUIRE_PROGS(NAWK, [nawk gawk awk]) + BASIC_REQUIRE_PROGS(PRINTF, printf) + BASIC_REQUIRE_PROGS(RM, rm) + BASIC_REQUIRE_PROGS(SH, sh) + BASIC_REQUIRE_PROGS(SORT, sort) + BASIC_REQUIRE_PROGS(TAIL, tail) + BASIC_REQUIRE_PROGS(TAR, tar) + BASIC_REQUIRE_PROGS(TEE, tee) + BASIC_REQUIRE_PROGS(TOUCH, touch) + BASIC_REQUIRE_PROGS(TR, tr) + BASIC_REQUIRE_PROGS(UNAME, uname) + BASIC_REQUIRE_PROGS(UNIQ, uniq) + BASIC_REQUIRE_PROGS(WC, wc) + BASIC_REQUIRE_PROGS(WHICH, which) + BASIC_REQUIRE_PROGS(XARGS, xargs) # Then required tools that require some special treatment. - AC_PROG_AWK - BASIC_CHECK_NONEMPTY(AWK) - AC_PROG_GREP - BASIC_CHECK_NONEMPTY(GREP) - AC_PROG_EGREP - BASIC_CHECK_NONEMPTY(EGREP) - AC_PROG_FGREP - BASIC_CHECK_NONEMPTY(FGREP) - AC_PROG_SED - BASIC_CHECK_NONEMPTY(SED) - - AC_PATH_PROGS(NAWK, [nawk gawk awk]) - BASIC_CHECK_NONEMPTY(NAWK) + BASIC_REQUIRE_SPECIAL(AWK, [AC_PROG_AWK]) + BASIC_REQUIRE_SPECIAL(GREP, [AC_PROG_GREP]) + BASIC_REQUIRE_SPECIAL(EGREP, [AC_PROG_EGREP]) + BASIC_REQUIRE_SPECIAL(FGREP, [AC_PROG_FGREP]) + BASIC_REQUIRE_SPECIAL(SED, [AC_PROG_SED]) # Always force rm. RM="$RM -f" @@ -332,10 +409,10 @@ AC_DEFUN_ONCE([BASIC_SETUP_FUNDAMENTAL_TOOLS], THEPWDCMD=pwd # These are not required on all platforms - AC_PATH_PROG(CYGPATH, cygpath) - AC_PATH_PROG(READLINK, readlink) - AC_PATH_PROG(DF, df) - AC_PATH_PROG(SETFILE, SetFile) + BASIC_PATH_PROGS(CYGPATH, cygpath) + BASIC_PATH_PROGS(READLINK, [greadlink readlink]) + BASIC_PATH_PROGS(DF, df) + BASIC_PATH_PROGS(SETFILE, SetFile) ]) # Setup basic configuration paths, and platform-specific stuff related to PATHs. @@ -622,26 +699,26 @@ AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS], # These tools might not be installed by default, # need hint on how to install them. - BASIC_REQUIRE_PROG(UNZIP, unzip) - BASIC_REQUIRE_PROG(ZIP, zip) + BASIC_REQUIRE_PROGS(UNZIP, unzip) + BASIC_REQUIRE_PROGS(ZIP, zip) # Non-required basic tools - AC_PATH_PROG(LDD, ldd) + BASIC_PATH_PROGS(LDD, ldd) if test "x$LDD" = "x"; then # List shared lib dependencies is used for # debug output and checking for forbidden dependencies. # We can build without it. LDD="true" fi - AC_PATH_PROG(OTOOL, otool) + BASIC_PATH_PROGS(OTOOL, otool) if test "x$OTOOL" = "x"; then OTOOL="true" fi - AC_PATH_PROGS(READELF, [readelf greadelf]) - AC_PATH_PROG(HG, hg) - AC_PATH_PROG(STAT, stat) - AC_PATH_PROG(TIME, time) + BASIC_PATH_PROGS(READELF, [greadelf readelf]) + BASIC_PATH_PROGS(HG, hg) + BASIC_PATH_PROGS(STAT, stat) + BASIC_PATH_PROGS(TIME, time) # Check if it's GNU time IS_GNU_TIME=`$TIME --version 2>&1 | $GREP 'GNU time'` if test "x$IS_GNU_TIME" != x; then @@ -652,13 +729,13 @@ AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS], AC_SUBST(IS_GNU_TIME) if test "x$OPENJDK_TARGET_OS" = "xwindows"; then - BASIC_REQUIRE_PROG(COMM, comm) + BASIC_REQUIRE_PROGS(COMM, comm) fi if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then - BASIC_REQUIRE_PROG(DSYMUTIL, dsymutil) - BASIC_REQUIRE_PROG(XATTR, xattr) - AC_PATH_PROG(CODESIGN, codesign) + BASIC_REQUIRE_PROGS(DSYMUTIL, dsymutil) + BASIC_REQUIRE_PROGS(XATTR, xattr) + BASIC_PATH_PROGS(CODESIGN, codesign) if test "x$CODESIGN" != "x"; then # Verify that the openjdk_codesign certificate is present AC_MSG_CHECKING([if openjdk_codesign certificate is present]) @@ -720,6 +797,9 @@ AC_DEFUN_ONCE([BASIC_CHECK_SRC_PERMS], AC_DEFUN_ONCE([BASIC_TEST_USABILITY_ISSUES], [ + # Did user specify any unknown variables? + BASIC_CHECK_LEFTOVER_OVERRIDDEN + AC_MSG_CHECKING([if build directory is on local disk]) BASIC_CHECK_DIR_ON_LOCAL_DISK($OUTPUT_ROOT, [OUTPUT_DIR_IS_LOCAL="yes"], diff --git a/common/autoconf/configure b/common/autoconf/configure index 00a07fccae1..b73609a1de2 100644 --- a/common/autoconf/configure +++ b/common/autoconf/configure @@ -121,15 +121,23 @@ do case $conf_option in --openjdk-target=*) conf_openjdk_target=`expr "X$conf_option" : '[^=]*=\(.*\)'` - continue ;; + ;; --debug-configure) if test "x$conf_debug_configure" != xrecursive; then conf_debug_configure=true export conf_debug_configure fi - continue ;; + ;; + [^-]*=*) + # Add name of variable to CONFIGURE_OVERRIDDEN_VARIABLES list inside !...!. + conf_env_var=`expr "x$conf_option" : 'x\([^=]*\)='` + CONFIGURE_OVERRIDDEN_VARIABLES="$CONFIGURE_OVERRIDDEN_VARIABLES!$conf_env_var!" + # ... and then process argument as usual + conf_processed_arguments=("${conf_processed_arguments[@]}" "$conf_option") + ;; *) - conf_processed_arguments=("${conf_processed_arguments[@]}" "$conf_option") ;; + conf_processed_arguments=("${conf_processed_arguments[@]}" "$conf_option") + ;; esac case $conf_option in @@ -212,6 +220,9 @@ Additional (non-autoconf) OpenJDK Options: Please be aware that, when cross-compiling, the OpenJDK configure script will generally use 'target' where autoconf traditionally uses 'host'. + +Also note that variables must be passed on the command line. Variables in the +environment will generally be ignored, unlike traditional autoconf scripts. EOT fi else diff --git a/common/autoconf/generated-configure.sh b/common/autoconf/generated-configure.sh index 80adc25efc2..5c43987622b 100644 --- a/common/autoconf/generated-configure.sh +++ b/common/autoconf/generated-configure.sh @@ -716,6 +716,8 @@ ac_ct_OBJDUMP OBJDUMP ac_ct_OBJCOPY OBJCOPY +ac_ct_STRIP +ac_ct_NM MCS STRIP GNM @@ -735,6 +737,7 @@ WINLD HOTSPOT_LD HOTSPOT_CXX ARFLAGS +ac_ct_AR AR LDEXECXX LDCXX @@ -914,7 +917,6 @@ SETFILE DF READLINK CYGPATH -NAWK SED FGREP EGREP @@ -934,6 +936,7 @@ SORT SH RM PRINTF +NAWK MV MKTEMP MKDIR @@ -1073,7 +1076,67 @@ with_ccache_dir ac_precious_vars='build_alias host_alias target_alias +BASENAME +BASH +CAT +CHMOD +CMP +COMM +CP +CPIO +CUT +DATE +DIFF +DIRNAME +ECHO +EXPR +FILE +FIND +HEAD +LN +LS +MKDIR +MKTEMP +MV +NAWK +PRINTF +RM +SH +SORT +TAIL +TAR +TEE +TOUCH +TR +UNAME +UNIQ +WC +WHICH +XARGS +AWK +GREP +EGREP +FGREP +SED +CYGPATH +READLINK +DF +SETFILE +UNZIP +ZIP +LDD +OTOOL +READELF +HG +STAT +TIME +DSYMUTIL +XATTR +CODESIGN PKG_CONFIG +BUILD_CC +BUILD_CXX +BUILD_LD CC CFLAGS LDFLAGS @@ -1084,8 +1147,18 @@ CXXFLAGS CCC OBJC OBJCFLAGS +AR CPP CXXCPP +AS +NM +GNM +STRIP +MCS +OBJCOPY +OBJDUMP +LIPO +JTREGEXE XMKMF FREETYPE_CFLAGS FREETYPE_LIBS @@ -1848,7 +1921,67 @@ Optional Packages: --with-ccache-dir where to store ccache files [~/.ccache] Some influential environment variables: + BASENAME Override default value for BASENAME + BASH Override default value for BASH + CAT Override default value for CAT + CHMOD Override default value for CHMOD + CMP Override default value for CMP + COMM Override default value for COMM + CP Override default value for CP + CPIO Override default value for CPIO + CUT Override default value for CUT + DATE Override default value for DATE + DIFF Override default value for DIFF + DIRNAME Override default value for DIRNAME + ECHO Override default value for ECHO + EXPR Override default value for EXPR + FILE Override default value for FILE + FIND Override default value for FIND + HEAD Override default value for HEAD + LN Override default value for LN + LS Override default value for LS + MKDIR Override default value for MKDIR + MKTEMP Override default value for MKTEMP + MV Override default value for MV + NAWK Override default value for NAWK + PRINTF Override default value for PRINTF + RM Override default value for RM + SH Override default value for SH + SORT Override default value for SORT + TAIL Override default value for TAIL + TAR Override default value for TAR + TEE Override default value for TEE + TOUCH Override default value for TOUCH + TR Override default value for TR + UNAME Override default value for UNAME + UNIQ Override default value for UNIQ + WC Override default value for WC + WHICH Override default value for WHICH + XARGS Override default value for XARGS + AWK Override default value for AWK + GREP Override default value for GREP + EGREP Override default value for EGREP + FGREP Override default value for FGREP + SED Override default value for SED + CYGPATH Override default value for CYGPATH + READLINK Override default value for READLINK + DF Override default value for DF + SETFILE Override default value for SETFILE + UNZIP Override default value for UNZIP + ZIP Override default value for ZIP + LDD Override default value for LDD + OTOOL Override default value for OTOOL + READELF Override default value for READELF + HG Override default value for HG + STAT Override default value for STAT + TIME Override default value for TIME + DSYMUTIL Override default value for DSYMUTIL + XATTR Override default value for XATTR + CODESIGN Override default value for CODESIGN PKG_CONFIG path to pkg-config utility + BUILD_CC Override default value for BUILD_CC + BUILD_CXX Override default value for BUILD_CXX + BUILD_LD Override default value for BUILD_LD CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a @@ -1860,8 +1993,18 @@ Some influential environment variables: CXXFLAGS C++ compiler flags OBJC Objective C compiler command OBJCFLAGS Objective C compiler flags + AR Override default value for AR CPP C preprocessor CXXCPP C++ preprocessor + AS Override default value for AS + NM Override default value for NM + GNM Override default value for GNM + STRIP Override default value for STRIP + MCS Override default value for MCS + OBJCOPY Override default value for OBJCOPY + OBJDUMP Override default value for OBJDUMP + LIPO Override default value for LIPO + JTREGEXE Override default value for JTREGEXE XMKMF Path to xmkmf, Makefile generator for X Window System FREETYPE_CFLAGS C compiler flags for FREETYPE, overriding pkg-config @@ -3174,13 +3317,36 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Test that variable $1 denoting a program is not empty. If empty, exit with an error. # $1: variable to check -# $2: executable name to print in warning (optional) -# Does AC_PATH_PROG followed by BASIC_CHECK_NONEMPTY. -# Arguments as AC_PATH_PROG: +# Check that there are no unprocessed overridden variables left. +# If so, they are an incorrect argument and we will exit with an error. + + +# Setup a tool for the given variable. If correctly specified by the user, +# use that value, otherwise search for the tool using the supplied code snippet. # $1: variable to set -# $2: executable name to look for +# $2: code snippet to call to look for the tool + + +# Call BASIC_SETUP_TOOL with AC_PATH_PROGS to locate the tool +# $1: variable to set +# $2: executable name (or list of names) to look for + + +# Call BASIC_SETUP_TOOL with AC_CHECK_TOOLS to locate the tool +# $1: variable to set +# $2: executable name (or list of names) to look for + + +# Like BASIC_PATH_PROGS but fails if no tool was found. +# $1: variable to set +# $2: executable name (or list of names) to look for + + +# Like BASIC_SETUP_TOOL but fails if no tool was found. +# $1: variable to set +# $2: autoconf macro to call to look for the special tool # Setup the most fundamental tools that relies on not much else to set up, @@ -3868,7 +4034,7 @@ fi #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1390989605 +DATE_WHEN_GENERATED=1390990903 ############################################################################### # @@ -3891,7 +4057,6 @@ $as_echo "$as_me: Configuration created at $DATE_WHEN_CONFIGURED." >&6;} $as_echo "$as_me: configure script generated at timestamp $DATE_WHEN_GENERATED." >&6;} - # Start with tools that do not need have cross compilation support # and can be expected to be found in the default PATH. These tools are # used by configure. Nor are these tools expected to be found in the @@ -3900,7 +4065,14 @@ $as_echo "$as_me: configure script generated at timestamp $DATE_WHEN_GENERATED." # First are all the simple required tools. - for ac_prog in basename + + + # Publish this variable in the help. + + + if test "x$BASENAME" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in basename do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -3945,21 +4117,155 @@ fi test -n "$BASENAME" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !BASENAME! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!BASENAME!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xBASENAME" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of BASENAME from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of BASENAME from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in basename +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_BASENAME+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $BASENAME in + [\\/]* | ?:[\\/]*) + ac_cv_path_BASENAME="$BASENAME" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BASENAME="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +BASENAME=$ac_cv_path_BASENAME +if test -n "$BASENAME"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASENAME" >&5 +$as_echo "$BASENAME" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$BASENAME" && break +done - if test "x$BASENAME" = x; then - if test "xbasename" = x; then - PROG_NAME=basename else - PROG_NAME=basename + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$BASENAME" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool BASENAME=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool BASENAME=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_BASENAME+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $BASENAME in + [\\/]* | ?:[\\/]*) + ac_cv_path_BASENAME="$BASENAME" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BASENAME="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +BASENAME=$ac_cv_path_BASENAME +if test -n "$BASENAME"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASENAME" >&5 +$as_echo "$BASENAME" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$BASENAME" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool BASENAME=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool BASENAME=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BASENAME" >&5 +$as_echo_n "checking for BASENAME... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool BASENAME=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in bash + if test "x$BASENAME" = x; then + as_fn_error $? "Could not find required tool for BASENAME" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$BASH" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in bash do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4004,21 +4310,155 @@ fi test -n "$BASH" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !BASH! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!BASH!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xBASH" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of BASH from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of BASH from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in bash +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_BASH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $BASH in + [\\/]* | ?:[\\/]*) + ac_cv_path_BASH="$BASH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BASH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +BASH=$ac_cv_path_BASH +if test -n "$BASH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASH" >&5 +$as_echo "$BASH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$BASH" && break +done - if test "x$BASH" = x; then - if test "xbash" = x; then - PROG_NAME=bash else - PROG_NAME=bash + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$BASH" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool BASH=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool BASH=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_BASH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $BASH in + [\\/]* | ?:[\\/]*) + ac_cv_path_BASH="$BASH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BASH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +BASH=$ac_cv_path_BASH +if test -n "$BASH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASH" >&5 +$as_echo "$BASH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$BASH" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool BASH=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool BASH=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BASH" >&5 +$as_echo_n "checking for BASH... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool BASH=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in cat + if test "x$BASH" = x; then + as_fn_error $? "Could not find required tool for BASH" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$CAT" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in cat do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4063,21 +4503,155 @@ fi test -n "$CAT" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !CAT! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CAT!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xCAT" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CAT from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of CAT from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in cat +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CAT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CAT in + [\\/]* | ?:[\\/]*) + ac_cv_path_CAT="$CAT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CAT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CAT=$ac_cv_path_CAT +if test -n "$CAT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CAT" >&5 +$as_echo "$CAT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CAT" && break +done - if test "x$CAT" = x; then - if test "xcat" = x; then - PROG_NAME=cat else - PROG_NAME=cat + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$CAT" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CAT=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool CAT=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CAT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CAT in + [\\/]* | ?:[\\/]*) + ac_cv_path_CAT="$CAT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CAT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CAT=$ac_cv_path_CAT +if test -n "$CAT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CAT" >&5 +$as_echo "$CAT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$CAT" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CAT=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool CAT=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAT" >&5 +$as_echo_n "checking for CAT... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool CAT=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in chmod + if test "x$CAT" = x; then + as_fn_error $? "Could not find required tool for CAT" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$CHMOD" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in chmod do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4122,21 +4696,155 @@ fi test -n "$CHMOD" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !CHMOD! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CHMOD!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xCHMOD" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CHMOD from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of CHMOD from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in chmod +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CHMOD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CHMOD in + [\\/]* | ?:[\\/]*) + ac_cv_path_CHMOD="$CHMOD" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CHMOD="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CHMOD=$ac_cv_path_CHMOD +if test -n "$CHMOD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHMOD" >&5 +$as_echo "$CHMOD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CHMOD" && break +done - if test "x$CHMOD" = x; then - if test "xchmod" = x; then - PROG_NAME=chmod else - PROG_NAME=chmod + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$CHMOD" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CHMOD=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool CHMOD=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CHMOD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CHMOD in + [\\/]* | ?:[\\/]*) + ac_cv_path_CHMOD="$CHMOD" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CHMOD="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CHMOD=$ac_cv_path_CHMOD +if test -n "$CHMOD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHMOD" >&5 +$as_echo "$CHMOD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$CHMOD" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CHMOD=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool CHMOD=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CHMOD" >&5 +$as_echo_n "checking for CHMOD... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool CHMOD=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in cmp + if test "x$CHMOD" = x; then + as_fn_error $? "Could not find required tool for CHMOD" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$CMP" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in cmp do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4181,21 +4889,155 @@ fi test -n "$CMP" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !CMP! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CMP!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xCMP" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CMP from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of CMP from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in cmp +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CMP in + [\\/]* | ?:[\\/]*) + ac_cv_path_CMP="$CMP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CMP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CMP=$ac_cv_path_CMP +if test -n "$CMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CMP" >&5 +$as_echo "$CMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CMP" && break +done - if test "x$CMP" = x; then - if test "xcmp" = x; then - PROG_NAME=cmp else - PROG_NAME=cmp + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$CMP" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CMP=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool CMP=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CMP in + [\\/]* | ?:[\\/]*) + ac_cv_path_CMP="$CMP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CMP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CMP=$ac_cv_path_CMP +if test -n "$CMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CMP" >&5 +$as_echo "$CMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$CMP" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CMP=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool CMP=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CMP" >&5 +$as_echo_n "checking for CMP... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool CMP=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in comm + if test "x$CMP" = x; then + as_fn_error $? "Could not find required tool for CMP" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$COMM" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in comm do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4240,21 +5082,155 @@ fi test -n "$COMM" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !COMM! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!COMM!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xCOMM" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of COMM from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of COMM from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in comm +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_COMM+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $COMM in + [\\/]* | ?:[\\/]*) + ac_cv_path_COMM="$COMM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_COMM="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +COMM=$ac_cv_path_COMM +if test -n "$COMM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COMM" >&5 +$as_echo "$COMM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$COMM" && break +done - if test "x$COMM" = x; then - if test "xcomm" = x; then - PROG_NAME=comm else - PROG_NAME=comm + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$COMM" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool COMM=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool COMM=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_COMM+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $COMM in + [\\/]* | ?:[\\/]*) + ac_cv_path_COMM="$COMM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_COMM="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +COMM=$ac_cv_path_COMM +if test -n "$COMM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COMM" >&5 +$as_echo "$COMM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$COMM" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool COMM=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool COMM=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for COMM" >&5 +$as_echo_n "checking for COMM... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool COMM=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in cp + if test "x$COMM" = x; then + as_fn_error $? "Could not find required tool for COMM" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$CP" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in cp do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4299,21 +5275,155 @@ fi test -n "$CP" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !CP! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CP!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xCP" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CP from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of CP from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in cp +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CP in + [\\/]* | ?:[\\/]*) + ac_cv_path_CP="$CP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CP=$ac_cv_path_CP +if test -n "$CP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CP" >&5 +$as_echo "$CP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CP" && break +done - if test "x$CP" = x; then - if test "xcp" = x; then - PROG_NAME=cp else - PROG_NAME=cp + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$CP" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CP=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool CP=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CP in + [\\/]* | ?:[\\/]*) + ac_cv_path_CP="$CP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CP=$ac_cv_path_CP +if test -n "$CP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CP" >&5 +$as_echo "$CP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$CP" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CP=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool CP=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CP" >&5 +$as_echo_n "checking for CP... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool CP=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in cpio + if test "x$CP" = x; then + as_fn_error $? "Could not find required tool for CP" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$CPIO" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in cpio do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4358,21 +5468,155 @@ fi test -n "$CPIO" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !CPIO! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CPIO!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xCPIO" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CPIO from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of CPIO from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in cpio +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CPIO+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CPIO in + [\\/]* | ?:[\\/]*) + ac_cv_path_CPIO="$CPIO" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CPIO="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CPIO=$ac_cv_path_CPIO +if test -n "$CPIO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPIO" >&5 +$as_echo "$CPIO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CPIO" && break +done - if test "x$CPIO" = x; then - if test "xcpio" = x; then - PROG_NAME=cpio else - PROG_NAME=cpio + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$CPIO" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CPIO=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool CPIO=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CPIO+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CPIO in + [\\/]* | ?:[\\/]*) + ac_cv_path_CPIO="$CPIO" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CPIO="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CPIO=$ac_cv_path_CPIO +if test -n "$CPIO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPIO" >&5 +$as_echo "$CPIO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$CPIO" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CPIO=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool CPIO=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CPIO" >&5 +$as_echo_n "checking for CPIO... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool CPIO=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in cut + if test "x$CPIO" = x; then + as_fn_error $? "Could not find required tool for CPIO" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$CUT" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in cut do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4417,21 +5661,155 @@ fi test -n "$CUT" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !CUT! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CUT!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xCUT" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CUT from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of CUT from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in cut +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CUT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CUT in + [\\/]* | ?:[\\/]*) + ac_cv_path_CUT="$CUT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CUT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CUT=$ac_cv_path_CUT +if test -n "$CUT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUT" >&5 +$as_echo "$CUT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CUT" && break +done - if test "x$CUT" = x; then - if test "xcut" = x; then - PROG_NAME=cut else - PROG_NAME=cut + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$CUT" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CUT=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool CUT=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CUT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CUT in + [\\/]* | ?:[\\/]*) + ac_cv_path_CUT="$CUT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CUT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CUT=$ac_cv_path_CUT +if test -n "$CUT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUT" >&5 +$as_echo "$CUT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$CUT" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CUT=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool CUT=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CUT" >&5 +$as_echo_n "checking for CUT... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool CUT=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in date + if test "x$CUT" = x; then + as_fn_error $? "Could not find required tool for CUT" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$DATE" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in date do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4476,21 +5854,155 @@ fi test -n "$DATE" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !DATE! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!DATE!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xDATE" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of DATE from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of DATE from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in date +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DATE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DATE in + [\\/]* | ?:[\\/]*) + ac_cv_path_DATE="$DATE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DATE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DATE=$ac_cv_path_DATE +if test -n "$DATE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DATE" >&5 +$as_echo "$DATE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DATE" && break +done - if test "x$DATE" = x; then - if test "xdate" = x; then - PROG_NAME=date else - PROG_NAME=date + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$DATE" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool DATE=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool DATE=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DATE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DATE in + [\\/]* | ?:[\\/]*) + ac_cv_path_DATE="$DATE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DATE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DATE=$ac_cv_path_DATE +if test -n "$DATE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DATE" >&5 +$as_echo "$DATE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$DATE" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool DATE=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool DATE=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DATE" >&5 +$as_echo_n "checking for DATE... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool DATE=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in gdiff diff + if test "x$DATE" = x; then + as_fn_error $? "Could not find required tool for DATE" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$DIFF" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in gdiff diff do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4535,21 +6047,155 @@ fi test -n "$DIFF" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !DIFF! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!DIFF!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xDIFF" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of DIFF from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of DIFF from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in gdiff diff +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DIFF+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DIFF in + [\\/]* | ?:[\\/]*) + ac_cv_path_DIFF="$DIFF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DIFF="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DIFF=$ac_cv_path_DIFF +if test -n "$DIFF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DIFF" >&5 +$as_echo "$DIFF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DIFF" && break +done - if test "x$DIFF" = x; then - if test "xgdiff diff" = x; then - PROG_NAME=diff else - PROG_NAME=gdiff diff + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$DIFF" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool DIFF=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool DIFF=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DIFF+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DIFF in + [\\/]* | ?:[\\/]*) + ac_cv_path_DIFF="$DIFF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DIFF="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DIFF=$ac_cv_path_DIFF +if test -n "$DIFF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DIFF" >&5 +$as_echo "$DIFF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$DIFF" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool DIFF=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool DIFF=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DIFF" >&5 +$as_echo_n "checking for DIFF... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool DIFF=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in dirname + if test "x$DIFF" = x; then + as_fn_error $? "Could not find required tool for DIFF" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$DIRNAME" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in dirname do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4594,21 +6240,155 @@ fi test -n "$DIRNAME" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !DIRNAME! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!DIRNAME!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xDIRNAME" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of DIRNAME from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of DIRNAME from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in dirname +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DIRNAME+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DIRNAME in + [\\/]* | ?:[\\/]*) + ac_cv_path_DIRNAME="$DIRNAME" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DIRNAME="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DIRNAME=$ac_cv_path_DIRNAME +if test -n "$DIRNAME"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DIRNAME" >&5 +$as_echo "$DIRNAME" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DIRNAME" && break +done - if test "x$DIRNAME" = x; then - if test "xdirname" = x; then - PROG_NAME=dirname else - PROG_NAME=dirname + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$DIRNAME" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool DIRNAME=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool DIRNAME=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DIRNAME+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DIRNAME in + [\\/]* | ?:[\\/]*) + ac_cv_path_DIRNAME="$DIRNAME" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DIRNAME="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DIRNAME=$ac_cv_path_DIRNAME +if test -n "$DIRNAME"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DIRNAME" >&5 +$as_echo "$DIRNAME" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$DIRNAME" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool DIRNAME=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool DIRNAME=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DIRNAME" >&5 +$as_echo_n "checking for DIRNAME... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool DIRNAME=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in echo + if test "x$DIRNAME" = x; then + as_fn_error $? "Could not find required tool for DIRNAME" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$ECHO" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in echo do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4653,21 +6433,155 @@ fi test -n "$ECHO" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !ECHO! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!ECHO!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xECHO" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of ECHO from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of ECHO from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in echo +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ECHO+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ECHO in + [\\/]* | ?:[\\/]*) + ac_cv_path_ECHO="$ECHO" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ECHO="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ECHO=$ac_cv_path_ECHO +if test -n "$ECHO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ECHO" >&5 +$as_echo "$ECHO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ECHO" && break +done - if test "x$ECHO" = x; then - if test "xecho" = x; then - PROG_NAME=echo else - PROG_NAME=echo + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$ECHO" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool ECHO=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool ECHO=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ECHO+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ECHO in + [\\/]* | ?:[\\/]*) + ac_cv_path_ECHO="$ECHO" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ECHO="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ECHO=$ac_cv_path_ECHO +if test -n "$ECHO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ECHO" >&5 +$as_echo "$ECHO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$ECHO" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool ECHO=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool ECHO=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ECHO" >&5 +$as_echo_n "checking for ECHO... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool ECHO=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in expr + if test "x$ECHO" = x; then + as_fn_error $? "Could not find required tool for ECHO" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$EXPR" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in expr do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4712,21 +6626,155 @@ fi test -n "$EXPR" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !EXPR! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!EXPR!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xEXPR" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of EXPR from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of EXPR from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in expr +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_EXPR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $EXPR in + [\\/]* | ?:[\\/]*) + ac_cv_path_EXPR="$EXPR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_EXPR="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +EXPR=$ac_cv_path_EXPR +if test -n "$EXPR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXPR" >&5 +$as_echo "$EXPR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$EXPR" && break +done - if test "x$EXPR" = x; then - if test "xexpr" = x; then - PROG_NAME=expr else - PROG_NAME=expr + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$EXPR" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool EXPR=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool EXPR=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_EXPR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $EXPR in + [\\/]* | ?:[\\/]*) + ac_cv_path_EXPR="$EXPR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_EXPR="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +EXPR=$ac_cv_path_EXPR +if test -n "$EXPR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXPR" >&5 +$as_echo "$EXPR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$EXPR" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool EXPR=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool EXPR=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EXPR" >&5 +$as_echo_n "checking for EXPR... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool EXPR=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in file + if test "x$EXPR" = x; then + as_fn_error $? "Could not find required tool for EXPR" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$FILE" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in file do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4771,21 +6819,155 @@ fi test -n "$FILE" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !FILE! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!FILE!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xFILE" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of FILE from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of FILE from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in file +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_FILE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $FILE in + [\\/]* | ?:[\\/]*) + ac_cv_path_FILE="$FILE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_FILE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +FILE=$ac_cv_path_FILE +if test -n "$FILE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FILE" >&5 +$as_echo "$FILE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$FILE" && break +done - if test "x$FILE" = x; then - if test "xfile" = x; then - PROG_NAME=file else - PROG_NAME=file + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$FILE" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool FILE=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool FILE=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_FILE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $FILE in + [\\/]* | ?:[\\/]*) + ac_cv_path_FILE="$FILE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_FILE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +FILE=$ac_cv_path_FILE +if test -n "$FILE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FILE" >&5 +$as_echo "$FILE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$FILE" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool FILE=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool FILE=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FILE" >&5 +$as_echo_n "checking for FILE... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool FILE=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in find + if test "x$FILE" = x; then + as_fn_error $? "Could not find required tool for FILE" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$FIND" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in find do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4830,21 +7012,155 @@ fi test -n "$FIND" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !FIND! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!FIND!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xFIND" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of FIND from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of FIND from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in find +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_FIND+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $FIND in + [\\/]* | ?:[\\/]*) + ac_cv_path_FIND="$FIND" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_FIND="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +FIND=$ac_cv_path_FIND +if test -n "$FIND"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FIND" >&5 +$as_echo "$FIND" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$FIND" && break +done - if test "x$FIND" = x; then - if test "xfind" = x; then - PROG_NAME=find else - PROG_NAME=find + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$FIND" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool FIND=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool FIND=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_FIND+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $FIND in + [\\/]* | ?:[\\/]*) + ac_cv_path_FIND="$FIND" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_FIND="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +FIND=$ac_cv_path_FIND +if test -n "$FIND"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FIND" >&5 +$as_echo "$FIND" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$FIND" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool FIND=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool FIND=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FIND" >&5 +$as_echo_n "checking for FIND... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool FIND=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in head + if test "x$FIND" = x; then + as_fn_error $? "Could not find required tool for FIND" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$HEAD" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in head do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4889,21 +7205,155 @@ fi test -n "$HEAD" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !HEAD! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!HEAD!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xHEAD" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of HEAD from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of HEAD from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in head +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_HEAD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $HEAD in + [\\/]* | ?:[\\/]*) + ac_cv_path_HEAD="$HEAD" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_HEAD="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +HEAD=$ac_cv_path_HEAD +if test -n "$HEAD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HEAD" >&5 +$as_echo "$HEAD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$HEAD" && break +done - if test "x$HEAD" = x; then - if test "xhead" = x; then - PROG_NAME=head else - PROG_NAME=head + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$HEAD" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool HEAD=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool HEAD=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_HEAD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $HEAD in + [\\/]* | ?:[\\/]*) + ac_cv_path_HEAD="$HEAD" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_HEAD="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +HEAD=$ac_cv_path_HEAD +if test -n "$HEAD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HEAD" >&5 +$as_echo "$HEAD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$HEAD" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool HEAD=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool HEAD=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HEAD" >&5 +$as_echo_n "checking for HEAD... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool HEAD=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in ln + if test "x$HEAD" = x; then + as_fn_error $? "Could not find required tool for HEAD" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$LN" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in ln do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4948,21 +7398,155 @@ fi test -n "$LN" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !LN! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!LN!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xLN" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of LN from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of LN from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in ln +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_LN+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $LN in + [\\/]* | ?:[\\/]*) + ac_cv_path_LN="$LN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LN="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +LN=$ac_cv_path_LN +if test -n "$LN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LN" >&5 +$as_echo "$LN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$LN" && break +done - if test "x$LN" = x; then - if test "xln" = x; then - PROG_NAME=ln else - PROG_NAME=ln + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$LN" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool LN=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool LN=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_LN+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $LN in + [\\/]* | ?:[\\/]*) + ac_cv_path_LN="$LN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LN="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +LN=$ac_cv_path_LN +if test -n "$LN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LN" >&5 +$as_echo "$LN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$LN" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool LN=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool LN=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LN" >&5 +$as_echo_n "checking for LN... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool LN=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in ls + if test "x$LN" = x; then + as_fn_error $? "Could not find required tool for LN" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$LS" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in ls do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5007,21 +7591,155 @@ fi test -n "$LS" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !LS! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!LS!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xLS" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of LS from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of LS from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in ls +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_LS+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $LS in + [\\/]* | ?:[\\/]*) + ac_cv_path_LS="$LS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LS="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +LS=$ac_cv_path_LS +if test -n "$LS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LS" >&5 +$as_echo "$LS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$LS" && break +done - if test "x$LS" = x; then - if test "xls" = x; then - PROG_NAME=ls else - PROG_NAME=ls + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$LS" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool LS=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool LS=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_LS+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $LS in + [\\/]* | ?:[\\/]*) + ac_cv_path_LS="$LS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LS="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +LS=$ac_cv_path_LS +if test -n "$LS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LS" >&5 +$as_echo "$LS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$LS" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool LS=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool LS=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LS" >&5 +$as_echo_n "checking for LS... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool LS=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in mkdir + if test "x$LS" = x; then + as_fn_error $? "Could not find required tool for LS" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$MKDIR" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in mkdir do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5066,21 +7784,155 @@ fi test -n "$MKDIR" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !MKDIR! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!MKDIR!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xMKDIR" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of MKDIR from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of MKDIR from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in mkdir +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MKDIR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MKDIR in + [\\/]* | ?:[\\/]*) + ac_cv_path_MKDIR="$MKDIR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MKDIR="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +MKDIR=$ac_cv_path_MKDIR +if test -n "$MKDIR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR" >&5 +$as_echo "$MKDIR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$MKDIR" && break +done - if test "x$MKDIR" = x; then - if test "xmkdir" = x; then - PROG_NAME=mkdir else - PROG_NAME=mkdir + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$MKDIR" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool MKDIR=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool MKDIR=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MKDIR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MKDIR in + [\\/]* | ?:[\\/]*) + ac_cv_path_MKDIR="$MKDIR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MKDIR="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +MKDIR=$ac_cv_path_MKDIR +if test -n "$MKDIR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR" >&5 +$as_echo "$MKDIR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$MKDIR" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool MKDIR=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool MKDIR=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MKDIR" >&5 +$as_echo_n "checking for MKDIR... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool MKDIR=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in mktemp + if test "x$MKDIR" = x; then + as_fn_error $? "Could not find required tool for MKDIR" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$MKTEMP" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in mktemp do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5125,21 +7977,155 @@ fi test -n "$MKTEMP" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !MKTEMP! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!MKTEMP!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xMKTEMP" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of MKTEMP from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of MKTEMP from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in mktemp +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MKTEMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MKTEMP in + [\\/]* | ?:[\\/]*) + ac_cv_path_MKTEMP="$MKTEMP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MKTEMP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +MKTEMP=$ac_cv_path_MKTEMP +if test -n "$MKTEMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKTEMP" >&5 +$as_echo "$MKTEMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$MKTEMP" && break +done - if test "x$MKTEMP" = x; then - if test "xmktemp" = x; then - PROG_NAME=mktemp else - PROG_NAME=mktemp + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$MKTEMP" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool MKTEMP=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool MKTEMP=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MKTEMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MKTEMP in + [\\/]* | ?:[\\/]*) + ac_cv_path_MKTEMP="$MKTEMP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MKTEMP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +MKTEMP=$ac_cv_path_MKTEMP +if test -n "$MKTEMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKTEMP" >&5 +$as_echo "$MKTEMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$MKTEMP" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool MKTEMP=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool MKTEMP=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MKTEMP" >&5 +$as_echo_n "checking for MKTEMP... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool MKTEMP=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in mv + if test "x$MKTEMP" = x; then + as_fn_error $? "Could not find required tool for MKTEMP" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$MV" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in mv do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5184,21 +8170,348 @@ fi test -n "$MV" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !MV! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!MV!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xMV" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of MV from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of MV from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in mv +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MV+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MV in + [\\/]* | ?:[\\/]*) + ac_cv_path_MV="$MV" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MV="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +MV=$ac_cv_path_MV +if test -n "$MV"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MV" >&5 +$as_echo "$MV" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$MV" && break +done - if test "x$MV" = x; then - if test "xmv" = x; then - PROG_NAME=mv else - PROG_NAME=mv + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$MV" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool MV=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool MV=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MV+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MV in + [\\/]* | ?:[\\/]*) + ac_cv_path_MV="$MV" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MV="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +MV=$ac_cv_path_MV +if test -n "$MV"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MV" >&5 +$as_echo "$MV" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$MV" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool MV=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool MV=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MV" >&5 +$as_echo_n "checking for MV... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool MV=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in printf + if test "x$MV" = x; then + as_fn_error $? "Could not find required tool for MV" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$NAWK" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in nawk gawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_NAWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $NAWK in + [\\/]* | ?:[\\/]*) + ac_cv_path_NAWK="$NAWK" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_NAWK="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +NAWK=$ac_cv_path_NAWK +if test -n "$NAWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NAWK" >&5 +$as_echo "$NAWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$NAWK" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !NAWK! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!NAWK!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xNAWK" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of NAWK from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of NAWK from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in nawk gawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_NAWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $NAWK in + [\\/]* | ?:[\\/]*) + ac_cv_path_NAWK="$NAWK" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_NAWK="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +NAWK=$ac_cv_path_NAWK +if test -n "$NAWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NAWK" >&5 +$as_echo "$NAWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$NAWK" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$NAWK" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool NAWK=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool NAWK=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_NAWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $NAWK in + [\\/]* | ?:[\\/]*) + ac_cv_path_NAWK="$NAWK" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_NAWK="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +NAWK=$ac_cv_path_NAWK +if test -n "$NAWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NAWK" >&5 +$as_echo "$NAWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$NAWK" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool NAWK=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool NAWK=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NAWK" >&5 +$as_echo_n "checking for NAWK... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool NAWK=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + + + if test "x$NAWK" = x; then + as_fn_error $? "Could not find required tool for NAWK" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$PRINTF" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in printf do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5243,21 +8556,155 @@ fi test -n "$PRINTF" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !PRINTF! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!PRINTF!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xPRINTF" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of PRINTF from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of PRINTF from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in printf +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PRINTF+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PRINTF in + [\\/]* | ?:[\\/]*) + ac_cv_path_PRINTF="$PRINTF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PRINTF="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PRINTF=$ac_cv_path_PRINTF +if test -n "$PRINTF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRINTF" >&5 +$as_echo "$PRINTF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$PRINTF" && break +done - if test "x$PRINTF" = x; then - if test "xprintf" = x; then - PROG_NAME=printf else - PROG_NAME=printf + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$PRINTF" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool PRINTF=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool PRINTF=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PRINTF+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PRINTF in + [\\/]* | ?:[\\/]*) + ac_cv_path_PRINTF="$PRINTF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PRINTF="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PRINTF=$ac_cv_path_PRINTF +if test -n "$PRINTF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRINTF" >&5 +$as_echo "$PRINTF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$PRINTF" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool PRINTF=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool PRINTF=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PRINTF" >&5 +$as_echo_n "checking for PRINTF... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool PRINTF=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in rm + if test "x$PRINTF" = x; then + as_fn_error $? "Could not find required tool for PRINTF" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$RM" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in rm do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5302,21 +8749,155 @@ fi test -n "$RM" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !RM! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!RM!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xRM" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of RM from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of RM from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in rm +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_RM+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $RM in + [\\/]* | ?:[\\/]*) + ac_cv_path_RM="$RM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +RM=$ac_cv_path_RM +if test -n "$RM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5 +$as_echo "$RM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$RM" && break +done - if test "x$RM" = x; then - if test "xrm" = x; then - PROG_NAME=rm else - PROG_NAME=rm + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$RM" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool RM=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool RM=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_RM+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $RM in + [\\/]* | ?:[\\/]*) + ac_cv_path_RM="$RM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +RM=$ac_cv_path_RM +if test -n "$RM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5 +$as_echo "$RM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$RM" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool RM=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool RM=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RM" >&5 +$as_echo_n "checking for RM... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool RM=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in sh + if test "x$RM" = x; then + as_fn_error $? "Could not find required tool for RM" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$SH" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in sh do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5361,21 +8942,155 @@ fi test -n "$SH" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !SH! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!SH!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xSH" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of SH from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of SH from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in sh +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_SH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $SH in + [\\/]* | ?:[\\/]*) + ac_cv_path_SH="$SH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_SH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +SH=$ac_cv_path_SH +if test -n "$SH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SH" >&5 +$as_echo "$SH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$SH" && break +done - if test "x$SH" = x; then - if test "xsh" = x; then - PROG_NAME=sh else - PROG_NAME=sh + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$SH" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool SH=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool SH=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_SH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $SH in + [\\/]* | ?:[\\/]*) + ac_cv_path_SH="$SH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_SH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +SH=$ac_cv_path_SH +if test -n "$SH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SH" >&5 +$as_echo "$SH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$SH" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool SH=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool SH=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SH" >&5 +$as_echo_n "checking for SH... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool SH=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in sort + if test "x$SH" = x; then + as_fn_error $? "Could not find required tool for SH" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$SORT" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in sort do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5420,21 +9135,155 @@ fi test -n "$SORT" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !SORT! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!SORT!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xSORT" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of SORT from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of SORT from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in sort +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_SORT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $SORT in + [\\/]* | ?:[\\/]*) + ac_cv_path_SORT="$SORT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_SORT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +SORT=$ac_cv_path_SORT +if test -n "$SORT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SORT" >&5 +$as_echo "$SORT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$SORT" && break +done - if test "x$SORT" = x; then - if test "xsort" = x; then - PROG_NAME=sort else - PROG_NAME=sort + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$SORT" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool SORT=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool SORT=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_SORT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $SORT in + [\\/]* | ?:[\\/]*) + ac_cv_path_SORT="$SORT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_SORT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +SORT=$ac_cv_path_SORT +if test -n "$SORT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SORT" >&5 +$as_echo "$SORT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$SORT" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool SORT=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool SORT=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SORT" >&5 +$as_echo_n "checking for SORT... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool SORT=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in tail + if test "x$SORT" = x; then + as_fn_error $? "Could not find required tool for SORT" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$TAIL" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in tail do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5479,21 +9328,155 @@ fi test -n "$TAIL" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !TAIL! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!TAIL!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xTAIL" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of TAIL from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of TAIL from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in tail +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TAIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TAIL in + [\\/]* | ?:[\\/]*) + ac_cv_path_TAIL="$TAIL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TAIL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +TAIL=$ac_cv_path_TAIL +if test -n "$TAIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAIL" >&5 +$as_echo "$TAIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$TAIL" && break +done - if test "x$TAIL" = x; then - if test "xtail" = x; then - PROG_NAME=tail else - PROG_NAME=tail + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$TAIL" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool TAIL=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool TAIL=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TAIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TAIL in + [\\/]* | ?:[\\/]*) + ac_cv_path_TAIL="$TAIL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TAIL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +TAIL=$ac_cv_path_TAIL +if test -n "$TAIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAIL" >&5 +$as_echo "$TAIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$TAIL" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool TAIL=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool TAIL=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TAIL" >&5 +$as_echo_n "checking for TAIL... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool TAIL=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in tar + if test "x$TAIL" = x; then + as_fn_error $? "Could not find required tool for TAIL" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$TAR" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in tar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5538,21 +9521,155 @@ fi test -n "$TAR" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !TAR! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!TAR!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xTAR" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of TAR from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of TAR from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in tar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TAR in + [\\/]* | ?:[\\/]*) + ac_cv_path_TAR="$TAR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TAR="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +TAR=$ac_cv_path_TAR +if test -n "$TAR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAR" >&5 +$as_echo "$TAR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$TAR" && break +done - if test "x$TAR" = x; then - if test "xtar" = x; then - PROG_NAME=tar else - PROG_NAME=tar + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$TAR" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool TAR=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool TAR=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TAR in + [\\/]* | ?:[\\/]*) + ac_cv_path_TAR="$TAR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TAR="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +TAR=$ac_cv_path_TAR +if test -n "$TAR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAR" >&5 +$as_echo "$TAR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$TAR" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool TAR=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool TAR=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TAR" >&5 +$as_echo_n "checking for TAR... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool TAR=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in tee + if test "x$TAR" = x; then + as_fn_error $? "Could not find required tool for TAR" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$TEE" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in tee do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5597,21 +9714,155 @@ fi test -n "$TEE" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !TEE! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!TEE!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xTEE" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of TEE from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of TEE from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in tee +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TEE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TEE in + [\\/]* | ?:[\\/]*) + ac_cv_path_TEE="$TEE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TEE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +TEE=$ac_cv_path_TEE +if test -n "$TEE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEE" >&5 +$as_echo "$TEE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$TEE" && break +done - if test "x$TEE" = x; then - if test "xtee" = x; then - PROG_NAME=tee else - PROG_NAME=tee + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$TEE" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool TEE=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool TEE=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TEE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TEE in + [\\/]* | ?:[\\/]*) + ac_cv_path_TEE="$TEE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TEE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +TEE=$ac_cv_path_TEE +if test -n "$TEE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEE" >&5 +$as_echo "$TEE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$TEE" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool TEE=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool TEE=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TEE" >&5 +$as_echo_n "checking for TEE... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool TEE=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in touch + if test "x$TEE" = x; then + as_fn_error $? "Could not find required tool for TEE" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$TOUCH" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in touch do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5656,21 +9907,155 @@ fi test -n "$TOUCH" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !TOUCH! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!TOUCH!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xTOUCH" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of TOUCH from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of TOUCH from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in touch +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TOUCH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TOUCH in + [\\/]* | ?:[\\/]*) + ac_cv_path_TOUCH="$TOUCH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TOUCH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +TOUCH=$ac_cv_path_TOUCH +if test -n "$TOUCH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TOUCH" >&5 +$as_echo "$TOUCH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$TOUCH" && break +done - if test "x$TOUCH" = x; then - if test "xtouch" = x; then - PROG_NAME=touch else - PROG_NAME=touch + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$TOUCH" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool TOUCH=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool TOUCH=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TOUCH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TOUCH in + [\\/]* | ?:[\\/]*) + ac_cv_path_TOUCH="$TOUCH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TOUCH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +TOUCH=$ac_cv_path_TOUCH +if test -n "$TOUCH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TOUCH" >&5 +$as_echo "$TOUCH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$TOUCH" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool TOUCH=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool TOUCH=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TOUCH" >&5 +$as_echo_n "checking for TOUCH... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool TOUCH=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in tr + if test "x$TOUCH" = x; then + as_fn_error $? "Could not find required tool for TOUCH" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$TR" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in tr do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5715,21 +10100,155 @@ fi test -n "$TR" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !TR! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!TR!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xTR" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of TR from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of TR from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in tr +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TR in + [\\/]* | ?:[\\/]*) + ac_cv_path_TR="$TR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TR="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +TR=$ac_cv_path_TR +if test -n "$TR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TR" >&5 +$as_echo "$TR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$TR" && break +done - if test "x$TR" = x; then - if test "xtr" = x; then - PROG_NAME=tr else - PROG_NAME=tr + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$TR" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool TR=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool TR=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TR in + [\\/]* | ?:[\\/]*) + ac_cv_path_TR="$TR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TR="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +TR=$ac_cv_path_TR +if test -n "$TR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TR" >&5 +$as_echo "$TR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$TR" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool TR=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool TR=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TR" >&5 +$as_echo_n "checking for TR... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool TR=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in uname + if test "x$TR" = x; then + as_fn_error $? "Could not find required tool for TR" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$UNAME" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in uname do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5774,21 +10293,155 @@ fi test -n "$UNAME" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !UNAME! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!UNAME!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xUNAME" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of UNAME from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of UNAME from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in uname +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_UNAME+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $UNAME in + [\\/]* | ?:[\\/]*) + ac_cv_path_UNAME="$UNAME" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_UNAME="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +UNAME=$ac_cv_path_UNAME +if test -n "$UNAME"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNAME" >&5 +$as_echo "$UNAME" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$UNAME" && break +done - if test "x$UNAME" = x; then - if test "xuname" = x; then - PROG_NAME=uname else - PROG_NAME=uname + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$UNAME" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool UNAME=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool UNAME=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_UNAME+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $UNAME in + [\\/]* | ?:[\\/]*) + ac_cv_path_UNAME="$UNAME" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_UNAME="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +UNAME=$ac_cv_path_UNAME +if test -n "$UNAME"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNAME" >&5 +$as_echo "$UNAME" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$UNAME" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool UNAME=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool UNAME=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for UNAME" >&5 +$as_echo_n "checking for UNAME... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool UNAME=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in uniq + if test "x$UNAME" = x; then + as_fn_error $? "Could not find required tool for UNAME" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$UNIQ" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in uniq do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5833,21 +10486,155 @@ fi test -n "$UNIQ" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !UNIQ! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!UNIQ!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xUNIQ" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of UNIQ from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of UNIQ from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in uniq +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_UNIQ+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $UNIQ in + [\\/]* | ?:[\\/]*) + ac_cv_path_UNIQ="$UNIQ" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_UNIQ="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +UNIQ=$ac_cv_path_UNIQ +if test -n "$UNIQ"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNIQ" >&5 +$as_echo "$UNIQ" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$UNIQ" && break +done - if test "x$UNIQ" = x; then - if test "xuniq" = x; then - PROG_NAME=uniq else - PROG_NAME=uniq + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$UNIQ" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool UNIQ=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool UNIQ=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_UNIQ+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $UNIQ in + [\\/]* | ?:[\\/]*) + ac_cv_path_UNIQ="$UNIQ" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_UNIQ="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +UNIQ=$ac_cv_path_UNIQ +if test -n "$UNIQ"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNIQ" >&5 +$as_echo "$UNIQ" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$UNIQ" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool UNIQ=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool UNIQ=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for UNIQ" >&5 +$as_echo_n "checking for UNIQ... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool UNIQ=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in wc + if test "x$UNIQ" = x; then + as_fn_error $? "Could not find required tool for UNIQ" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$WC" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in wc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5892,21 +10679,155 @@ fi test -n "$WC" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !WC! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!WC!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xWC" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of WC from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of WC from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in wc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_WC+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $WC in + [\\/]* | ?:[\\/]*) + ac_cv_path_WC="$WC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_WC="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +WC=$ac_cv_path_WC +if test -n "$WC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WC" >&5 +$as_echo "$WC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$WC" && break +done - if test "x$WC" = x; then - if test "xwc" = x; then - PROG_NAME=wc else - PROG_NAME=wc + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$WC" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool WC=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool WC=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_WC+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $WC in + [\\/]* | ?:[\\/]*) + ac_cv_path_WC="$WC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_WC="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +WC=$ac_cv_path_WC +if test -n "$WC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WC" >&5 +$as_echo "$WC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$WC" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool WC=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool WC=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WC" >&5 +$as_echo_n "checking for WC... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool WC=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in which + if test "x$WC" = x; then + as_fn_error $? "Could not find required tool for WC" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$WHICH" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in which do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5951,21 +10872,155 @@ fi test -n "$WHICH" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !WHICH! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!WHICH!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xWHICH" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of WHICH from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of WHICH from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in which +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_WHICH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $WHICH in + [\\/]* | ?:[\\/]*) + ac_cv_path_WHICH="$WHICH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_WHICH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +WHICH=$ac_cv_path_WHICH +if test -n "$WHICH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WHICH" >&5 +$as_echo "$WHICH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$WHICH" && break +done - if test "x$WHICH" = x; then - if test "xwhich" = x; then - PROG_NAME=which else - PROG_NAME=which + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$WHICH" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool WHICH=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool WHICH=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_WHICH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $WHICH in + [\\/]* | ?:[\\/]*) + ac_cv_path_WHICH="$WHICH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_WHICH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +WHICH=$ac_cv_path_WHICH +if test -n "$WHICH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WHICH" >&5 +$as_echo "$WHICH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$WHICH" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool WHICH=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool WHICH=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WHICH" >&5 +$as_echo_n "checking for WHICH... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool WHICH=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in xargs + if test "x$WHICH" = x; then + as_fn_error $? "Could not find required tool for WHICH" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$XARGS" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in xargs do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -6010,22 +11065,156 @@ fi test -n "$XARGS" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !XARGS! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!XARGS!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xXARGS" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of XARGS from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of XARGS from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in xargs +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_XARGS+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $XARGS in + [\\/]* | ?:[\\/]*) + ac_cv_path_XARGS="$XARGS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_XARGS="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +XARGS=$ac_cv_path_XARGS +if test -n "$XARGS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XARGS" >&5 +$as_echo "$XARGS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$XARGS" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$XARGS" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool XARGS=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool XARGS=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_XARGS+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $XARGS in + [\\/]* | ?:[\\/]*) + ac_cv_path_XARGS="$XARGS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_XARGS="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +XARGS=$ac_cv_path_XARGS +if test -n "$XARGS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XARGS" >&5 +$as_echo "$XARGS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$XARGS" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool XARGS=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool XARGS=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XARGS" >&5 +$as_echo_n "checking for XARGS... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool XARGS=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$XARGS" = x; then - if test "xxargs" = x; then - PROG_NAME=xargs - else - PROG_NAME=xargs - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 + as_fn_error $? "Could not find required tool for XARGS" "$LINENO" 5 fi # Then required tools that require some special treatment. - for ac_prog in gawk mawk nawk awk + + + # Publish this variable in the help. + + + if test "x$AWK" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -6067,19 +11256,150 @@ fi test -n "$AWK" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !AWK! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!AWK!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xAWK" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of AWK from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of AWK from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done - if test "x$AWK" = x; then - if test "x" = x; then - PROG_NAME=awk else - PROG_NAME= + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$AWK" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool AWK=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool AWK=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $AWK in + [\\/]* | ?:[\\/]*) + ac_cv_path_AWK="$AWK" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_AWK="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +AWK=$ac_cv_path_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$AWK" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool AWK=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool AWK=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AWK" >&5 +$as_echo_n "checking for AWK... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool AWK=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 + + if test "x$AWK" = x; then + as_fn_error $? "Could not find required tool for AWK" "$LINENO" 5 + fi + + + + + # Publish this variable in the help. + + + if test "x$GREP" = x; then + # The variable is not set by user, try to locate tool using the code snippet + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 @@ -6142,19 +11462,171 @@ $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" + else + # The variable is set, but is it from the command line or the environment? - if test "x$GREP" = x; then - if test "x" = x; then - PROG_NAME=grep - else - PROG_NAME= + # Try to remove the string !GREP! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!GREP!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xGREP" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of GREP from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of GREP from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$GREP" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool GREP=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool GREP=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_GREP="$GREP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GREP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GREP=$ac_cv_path_GREP +if test -n "$GREP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GREP" >&5 +$as_echo "$GREP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$GREP" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool GREP=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool GREP=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GREP" >&5 +$as_echo_n "checking for GREP... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool GREP=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 + + if test "x$GREP" = x; then + as_fn_error $? "Could not find required tool for GREP" "$LINENO" 5 + fi + + + + + # Publish this variable in the help. + + + if test "x$EGREP" = x; then + # The variable is not set by user, try to locate tool using the code snippet + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 @@ -6221,19 +11693,175 @@ $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" + else + # The variable is set, but is it from the command line or the environment? - if test "x$EGREP" = x; then - if test "x" = x; then - PROG_NAME=egrep - else - PROG_NAME= + # Try to remove the string !EGREP! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!EGREP!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xEGREP" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of EGREP from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of EGREP from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$EGREP" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool EGREP=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool EGREP=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $EGREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_EGREP="$EGREP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_EGREP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +EGREP=$ac_cv_path_EGREP +if test -n "$EGREP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EGREP" >&5 +$as_echo "$EGREP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$EGREP" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool EGREP=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool EGREP=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EGREP" >&5 +$as_echo_n "checking for EGREP... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool EGREP=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 + + if test "x$EGREP" = x; then + as_fn_error $? "Could not find required tool for EGREP" "$LINENO" 5 + fi + + + + + # Publish this variable in the help. + + + if test "x$FGREP" = x; then + # The variable is not set by user, try to locate tool using the code snippet + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 @@ -6300,19 +11928,175 @@ $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" + else + # The variable is set, but is it from the command line or the environment? - if test "x$FGREP" = x; then - if test "x" = x; then - PROG_NAME=fgrep - else - PROG_NAME= + # Try to remove the string !FGREP! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!FGREP!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xFGREP" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of FGREP from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of FGREP from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$FGREP" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool FGREP=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool FGREP=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $FGREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_FGREP="$FGREP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_FGREP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +FGREP=$ac_cv_path_FGREP +if test -n "$FGREP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FGREP" >&5 +$as_echo "$FGREP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$FGREP" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool FGREP=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool FGREP=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FGREP" >&5 +$as_echo_n "checking for FGREP... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool FGREP=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 + + if test "x$FGREP" = x; then + as_fn_error $? "Could not find required tool for FGREP" "$LINENO" 5 + fi + + + + + # Publish this variable in the help. + + + if test "x$SED" = x; then + # The variable is not set by user, try to locate tool using the code snippet + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 @@ -6381,31 +12165,113 @@ $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed + else + # The variable is set, but is it from the command line or the environment? - if test "x$SED" = x; then - if test "x" = x; then - PROG_NAME=sed - else - PROG_NAME= - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 - fi - - - for ac_prog in nawk gawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_NAWK+:} false; then : + # Try to remove the string !SED! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!SED!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xSED" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of SED from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of SED from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else - case $NAWK in + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$SED" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool SED=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool SED=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $SED in [\\/]* | ?:[\\/]*) - ac_cv_path_NAWK="$NAWK" # Let the user override the test with a path. + ac_cv_path_SED="$SED" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -6415,7 +12281,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_NAWK="$as_dir/$ac_word$ac_exec_ext" + ac_cv_path_SED="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -6426,32 +12292,43 @@ IFS=$as_save_IFS ;; esac fi -NAWK=$ac_cv_path_NAWK -if test -n "$NAWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NAWK" >&5 -$as_echo "$NAWK" >&6; } +SED=$ac_cv_path_SED +if test -n "$SED"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 +$as_echo "$SED" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi - test -n "$NAWK" && break -done - - - if test "x$NAWK" = x; then - if test "x" = x; then - PROG_NAME=nawk - else - PROG_NAME= + if test "x$SED" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool SED=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool SED=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SED" >&5 +$as_echo_n "checking for SED... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool SED=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi + if test "x$SED" = x; then + as_fn_error $? "Could not find required tool for SED" "$LINENO" 5 + fi + + + # Always force rm. RM="$RM -f" @@ -6460,8 +12337,17 @@ $as_echo "$as_me: Could not find $PROG_NAME!" >&6;} THEPWDCMD=pwd # These are not required on all platforms - # Extract the first word of "cygpath", so it can be a program name with args. -set dummy cygpath; ac_word=$2 + + + # Publish this variable in the help. + + + if test "x$CYGPATH" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in cygpath +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_CYGPATH+:} false; then : @@ -6500,8 +12386,154 @@ $as_echo "no" >&6; } fi - # Extract the first word of "readlink", so it can be a program name with args. -set dummy readlink; ac_word=$2 + test -n "$CYGPATH" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !CYGPATH! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CYGPATH!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xCYGPATH" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CYGPATH from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of CYGPATH from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in cygpath +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CYGPATH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CYGPATH in + [\\/]* | ?:[\\/]*) + ac_cv_path_CYGPATH="$CYGPATH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CYGPATH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CYGPATH=$ac_cv_path_CYGPATH +if test -n "$CYGPATH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5 +$as_echo "$CYGPATH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CYGPATH" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$CYGPATH" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CYGPATH=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool CYGPATH=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CYGPATH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CYGPATH in + [\\/]* | ?:[\\/]*) + ac_cv_path_CYGPATH="$CYGPATH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CYGPATH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CYGPATH=$ac_cv_path_CYGPATH +if test -n "$CYGPATH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5 +$as_echo "$CYGPATH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$CYGPATH" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CYGPATH=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool CYGPATH=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CYGPATH" >&5 +$as_echo_n "checking for CYGPATH... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool CYGPATH=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + + + + # Publish this variable in the help. + + + if test "x$READLINK" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in greadlink readlink +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_READLINK+:} false; then : @@ -6540,8 +12572,154 @@ $as_echo "no" >&6; } fi - # Extract the first word of "df", so it can be a program name with args. -set dummy df; ac_word=$2 + test -n "$READLINK" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !READLINK! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!READLINK!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xREADLINK" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of READLINK from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of READLINK from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in greadlink readlink +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_READLINK+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $READLINK in + [\\/]* | ?:[\\/]*) + ac_cv_path_READLINK="$READLINK" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_READLINK="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +READLINK=$ac_cv_path_READLINK +if test -n "$READLINK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READLINK" >&5 +$as_echo "$READLINK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$READLINK" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$READLINK" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool READLINK=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool READLINK=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_READLINK+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $READLINK in + [\\/]* | ?:[\\/]*) + ac_cv_path_READLINK="$READLINK" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_READLINK="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +READLINK=$ac_cv_path_READLINK +if test -n "$READLINK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READLINK" >&5 +$as_echo "$READLINK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$READLINK" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool READLINK=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool READLINK=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for READLINK" >&5 +$as_echo_n "checking for READLINK... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool READLINK=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + + + + # Publish this variable in the help. + + + if test "x$DF" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in df +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_DF+:} false; then : @@ -6580,8 +12758,154 @@ $as_echo "no" >&6; } fi - # Extract the first word of "SetFile", so it can be a program name with args. -set dummy SetFile; ac_word=$2 + test -n "$DF" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !DF! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!DF!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xDF" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of DF from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of DF from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in df +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DF+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DF in + [\\/]* | ?:[\\/]*) + ac_cv_path_DF="$DF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DF="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DF=$ac_cv_path_DF +if test -n "$DF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DF" >&5 +$as_echo "$DF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DF" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$DF" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool DF=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool DF=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DF+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DF in + [\\/]* | ?:[\\/]*) + ac_cv_path_DF="$DF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DF="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DF=$ac_cv_path_DF +if test -n "$DF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DF" >&5 +$as_echo "$DF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$DF" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool DF=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool DF=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DF" >&5 +$as_echo_n "checking for DF... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool DF=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + + + + # Publish this variable in the help. + + + if test "x$SETFILE" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in SetFile +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_SETFILE+:} false; then : @@ -6620,6 +12944,143 @@ $as_echo "no" >&6; } fi + test -n "$SETFILE" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !SETFILE! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!SETFILE!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xSETFILE" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of SETFILE from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of SETFILE from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in SetFile +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_SETFILE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $SETFILE in + [\\/]* | ?:[\\/]*) + ac_cv_path_SETFILE="$SETFILE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_SETFILE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +SETFILE=$ac_cv_path_SETFILE +if test -n "$SETFILE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SETFILE" >&5 +$as_echo "$SETFILE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$SETFILE" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$SETFILE" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool SETFILE=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool SETFILE=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_SETFILE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $SETFILE in + [\\/]* | ?:[\\/]*) + ac_cv_path_SETFILE="$SETFILE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_SETFILE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +SETFILE=$ac_cv_path_SETFILE +if test -n "$SETFILE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SETFILE" >&5 +$as_echo "$SETFILE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$SETFILE" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool SETFILE=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool SETFILE=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SETFILE" >&5 +$as_echo_n "checking for SETFILE... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool SETFILE=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + # Now we can determine OpenJDK build and target platforms. This is required to @@ -10139,7 +16600,14 @@ $as_echo "yes" >&6; } # These tools might not be installed by default, # need hint on how to install them. - for ac_prog in unzip + + + # Publish this variable in the help. + + + if test "x$UNZIP" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in unzip do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -10184,21 +16652,155 @@ fi test -n "$UNZIP" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !UNZIP! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!UNZIP!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xUNZIP" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of UNZIP from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of UNZIP from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in unzip +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_UNZIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $UNZIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_UNZIP="$UNZIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_UNZIP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +UNZIP=$ac_cv_path_UNZIP +if test -n "$UNZIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNZIP" >&5 +$as_echo "$UNZIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$UNZIP" && break +done - if test "x$UNZIP" = x; then - if test "xunzip" = x; then - PROG_NAME=unzip else - PROG_NAME=unzip + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$UNZIP" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool UNZIP=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool UNZIP=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_UNZIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $UNZIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_UNZIP="$UNZIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_UNZIP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +UNZIP=$ac_cv_path_UNZIP +if test -n "$UNZIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNZIP" >&5 +$as_echo "$UNZIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$UNZIP" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool UNZIP=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool UNZIP=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for UNZIP" >&5 +$as_echo_n "checking for UNZIP... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool UNZIP=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in zip + if test "x$UNZIP" = x; then + as_fn_error $? "Could not find required tool for UNZIP" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$ZIP" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in zip do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -10243,24 +16845,160 @@ fi test -n "$ZIP" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !ZIP! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!ZIP!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xZIP" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of ZIP from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of ZIP from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in zip +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ZIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ZIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_ZIP="$ZIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ZIP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ZIP=$ac_cv_path_ZIP +if test -n "$ZIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ZIP" >&5 +$as_echo "$ZIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ZIP" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$ZIP" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool ZIP=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool ZIP=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ZIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ZIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_ZIP="$ZIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ZIP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ZIP=$ac_cv_path_ZIP +if test -n "$ZIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ZIP" >&5 +$as_echo "$ZIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$ZIP" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool ZIP=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool ZIP=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZIP" >&5 +$as_echo_n "checking for ZIP... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool ZIP=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$ZIP" = x; then - if test "xzip" = x; then - PROG_NAME=zip - else - PROG_NAME=zip - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 + as_fn_error $? "Could not find required tool for ZIP" "$LINENO" 5 fi # Non-required basic tools - # Extract the first word of "ldd", so it can be a program name with args. -set dummy ldd; ac_word=$2 + + + # Publish this variable in the help. + + + if test "x$LDD" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in ldd +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_LDD+:} false; then : @@ -10299,14 +17037,160 @@ $as_echo "no" >&6; } fi + test -n "$LDD" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !LDD! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!LDD!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xLDD" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of LDD from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of LDD from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in ldd +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_LDD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $LDD in + [\\/]* | ?:[\\/]*) + ac_cv_path_LDD="$LDD" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LDD="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +LDD=$ac_cv_path_LDD +if test -n "$LDD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDD" >&5 +$as_echo "$LDD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$LDD" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$LDD" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool LDD=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool LDD=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_LDD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $LDD in + [\\/]* | ?:[\\/]*) + ac_cv_path_LDD="$LDD" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LDD="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +LDD=$ac_cv_path_LDD +if test -n "$LDD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDD" >&5 +$as_echo "$LDD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$LDD" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool LDD=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool LDD=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LDD" >&5 +$as_echo_n "checking for LDD... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool LDD=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$LDD" = "x"; then # List shared lib dependencies is used for # debug output and checking for forbidden dependencies. # We can build without it. LDD="true" fi - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 + + + # Publish this variable in the help. + + + if test "x$OTOOL" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in otool +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_OTOOL+:} false; then : @@ -10345,10 +17229,154 @@ $as_echo "no" >&6; } fi + test -n "$OTOOL" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !OTOOL! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!OTOOL!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xOTOOL" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of OTOOL from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of OTOOL from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in otool +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $OTOOL in + [\\/]* | ?:[\\/]*) + ac_cv_path_OTOOL="$OTOOL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_OTOOL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +OTOOL=$ac_cv_path_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$OTOOL" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$OTOOL" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool OTOOL=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool OTOOL=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $OTOOL in + [\\/]* | ?:[\\/]*) + ac_cv_path_OTOOL="$OTOOL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_OTOOL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +OTOOL=$ac_cv_path_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$OTOOL" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool OTOOL=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool OTOOL=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OTOOL" >&5 +$as_echo_n "checking for OTOOL... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool OTOOL=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$OTOOL" = "x"; then OTOOL="true" fi - for ac_prog in readelf greadelf + + + # Publish this variable in the help. + + + if test "x$READELF" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in greadelf readelf do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -10393,8 +17421,151 @@ fi test -n "$READELF" && break done - # Extract the first word of "hg", so it can be a program name with args. -set dummy hg; ac_word=$2 + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !READELF! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!READELF!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xREADELF" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of READELF from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of READELF from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in greadelf readelf +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_READELF+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $READELF in + [\\/]* | ?:[\\/]*) + ac_cv_path_READELF="$READELF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_READELF="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +READELF=$ac_cv_path_READELF +if test -n "$READELF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5 +$as_echo "$READELF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$READELF" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$READELF" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool READELF=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool READELF=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_READELF+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $READELF in + [\\/]* | ?:[\\/]*) + ac_cv_path_READELF="$READELF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_READELF="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +READELF=$ac_cv_path_READELF +if test -n "$READELF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5 +$as_echo "$READELF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$READELF" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool READELF=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool READELF=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for READELF" >&5 +$as_echo_n "checking for READELF... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool READELF=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + + + + # Publish this variable in the help. + + + if test "x$HG" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in hg +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_HG+:} false; then : @@ -10433,8 +17604,154 @@ $as_echo "no" >&6; } fi - # Extract the first word of "stat", so it can be a program name with args. -set dummy stat; ac_word=$2 + test -n "$HG" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !HG! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!HG!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xHG" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of HG from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of HG from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in hg +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_HG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $HG in + [\\/]* | ?:[\\/]*) + ac_cv_path_HG="$HG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_HG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +HG=$ac_cv_path_HG +if test -n "$HG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HG" >&5 +$as_echo "$HG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$HG" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$HG" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool HG=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool HG=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_HG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $HG in + [\\/]* | ?:[\\/]*) + ac_cv_path_HG="$HG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_HG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +HG=$ac_cv_path_HG +if test -n "$HG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HG" >&5 +$as_echo "$HG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$HG" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool HG=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool HG=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HG" >&5 +$as_echo_n "checking for HG... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool HG=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + + + + # Publish this variable in the help. + + + if test "x$STAT" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in stat +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_STAT+:} false; then : @@ -10473,8 +17790,154 @@ $as_echo "no" >&6; } fi - # Extract the first word of "time", so it can be a program name with args. -set dummy time; ac_word=$2 + test -n "$STAT" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !STAT! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!STAT!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xSTAT" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of STAT from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of STAT from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in stat +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_STAT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $STAT in + [\\/]* | ?:[\\/]*) + ac_cv_path_STAT="$STAT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_STAT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +STAT=$ac_cv_path_STAT +if test -n "$STAT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STAT" >&5 +$as_echo "$STAT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$STAT" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$STAT" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool STAT=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool STAT=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_STAT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $STAT in + [\\/]* | ?:[\\/]*) + ac_cv_path_STAT="$STAT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_STAT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +STAT=$ac_cv_path_STAT +if test -n "$STAT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STAT" >&5 +$as_echo "$STAT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$STAT" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool STAT=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool STAT=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for STAT" >&5 +$as_echo_n "checking for STAT... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool STAT=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + + + + # Publish this variable in the help. + + + if test "x$TIME" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in time +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_TIME+:} false; then : @@ -10513,6 +17976,143 @@ $as_echo "no" >&6; } fi + test -n "$TIME" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !TIME! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!TIME!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xTIME" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of TIME from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of TIME from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in time +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TIME+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TIME in + [\\/]* | ?:[\\/]*) + ac_cv_path_TIME="$TIME" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TIME="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +TIME=$ac_cv_path_TIME +if test -n "$TIME"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TIME" >&5 +$as_echo "$TIME" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$TIME" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$TIME" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool TIME=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool TIME=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TIME+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $TIME in + [\\/]* | ?:[\\/]*) + ac_cv_path_TIME="$TIME" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TIME="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +TIME=$ac_cv_path_TIME +if test -n "$TIME"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TIME" >&5 +$as_echo "$TIME" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$TIME" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool TIME=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool TIME=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIME" >&5 +$as_echo_n "checking for TIME... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool TIME=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + # Check if it's GNU time IS_GNU_TIME=`$TIME --version 2>&1 | $GREP 'GNU time'` if test "x$IS_GNU_TIME" != x; then @@ -10524,7 +18124,14 @@ fi if test "x$OPENJDK_TARGET_OS" = "xwindows"; then - for ac_prog in comm + + + # Publish this variable in the help. + + + if test "x$COMM" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in comm do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -10569,16 +18176,143 @@ fi test -n "$COMM" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !COMM! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!COMM!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xCOMM" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of COMM from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of COMM from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in comm +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_COMM+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $COMM in + [\\/]* | ?:[\\/]*) + ac_cv_path_COMM="$COMM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_COMM="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +COMM=$ac_cv_path_COMM +if test -n "$COMM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COMM" >&5 +$as_echo "$COMM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$COMM" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$COMM" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool COMM=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool COMM=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_COMM+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $COMM in + [\\/]* | ?:[\\/]*) + ac_cv_path_COMM="$COMM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_COMM="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +COMM=$ac_cv_path_COMM +if test -n "$COMM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COMM" >&5 +$as_echo "$COMM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$COMM" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool COMM=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool COMM=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for COMM" >&5 +$as_echo_n "checking for COMM... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool COMM=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$COMM" = x; then - if test "xcomm" = x; then - PROG_NAME=comm - else - PROG_NAME=comm - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 + as_fn_error $? "Could not find required tool for COMM" "$LINENO" 5 fi @@ -10586,7 +18320,14 @@ $as_echo "$as_me: Could not find $PROG_NAME!" >&6;} if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then - for ac_prog in dsymutil + + + # Publish this variable in the help. + + + if test "x$DSYMUTIL" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in dsymutil do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -10631,21 +18372,155 @@ fi test -n "$DSYMUTIL" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !DSYMUTIL! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!DSYMUTIL!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xDSYMUTIL" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of DSYMUTIL from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of DSYMUTIL from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in dsymutil +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DSYMUTIL in + [\\/]* | ?:[\\/]*) + ac_cv_path_DSYMUTIL="$DSYMUTIL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DSYMUTIL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DSYMUTIL=$ac_cv_path_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DSYMUTIL" && break +done - if test "x$DSYMUTIL" = x; then - if test "xdsymutil" = x; then - PROG_NAME=dsymutil else - PROG_NAME=dsymutil + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$DSYMUTIL" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool DSYMUTIL=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool DSYMUTIL=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $DSYMUTIL in + [\\/]* | ?:[\\/]*) + ac_cv_path_DSYMUTIL="$DSYMUTIL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_DSYMUTIL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +DSYMUTIL=$ac_cv_path_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$DSYMUTIL" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool DSYMUTIL=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool DSYMUTIL=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DSYMUTIL" >&5 +$as_echo_n "checking for DSYMUTIL... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool DSYMUTIL=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - for ac_prog in xattr + if test "x$DSYMUTIL" = x; then + as_fn_error $? "Could not find required tool for DSYMUTIL" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if test "x$XATTR" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in xattr do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -10690,21 +18565,157 @@ fi test -n "$XATTR" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !XATTR! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!XATTR!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xXATTR" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of XATTR from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of XATTR from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in xattr +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_XATTR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $XATTR in + [\\/]* | ?:[\\/]*) + ac_cv_path_XATTR="$XATTR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_XATTR="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +XATTR=$ac_cv_path_XATTR +if test -n "$XATTR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XATTR" >&5 +$as_echo "$XATTR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$XATTR" && break +done - if test "x$XATTR" = x; then - if test "xxattr" = x; then - PROG_NAME=xattr else - PROG_NAME=xattr + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$XATTR" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool XATTR=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool XATTR=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_XATTR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $XATTR in + [\\/]* | ?:[\\/]*) + ac_cv_path_XATTR="$XATTR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_XATTR="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +XATTR=$ac_cv_path_XATTR +if test -n "$XATTR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XATTR" >&5 +$as_echo "$XATTR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$XATTR" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool XATTR=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool XATTR=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XATTR" >&5 +$as_echo_n "checking for XATTR... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool XATTR=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 fi - # Extract the first word of "codesign", so it can be a program name with args. -set dummy codesign; ac_word=$2 + + if test "x$XATTR" = x; then + as_fn_error $? "Could not find required tool for XATTR" "$LINENO" 5 + fi + + + + + # Publish this variable in the help. + + + if test "x$CODESIGN" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in codesign +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_CODESIGN+:} false; then : @@ -10743,6 +18754,143 @@ $as_echo "no" >&6; } fi + test -n "$CODESIGN" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !CODESIGN! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CODESIGN!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xCODESIGN" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CODESIGN from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of CODESIGN from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in codesign +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CODESIGN+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CODESIGN in + [\\/]* | ?:[\\/]*) + ac_cv_path_CODESIGN="$CODESIGN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CODESIGN="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CODESIGN=$ac_cv_path_CODESIGN +if test -n "$CODESIGN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CODESIGN" >&5 +$as_echo "$CODESIGN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CODESIGN" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$CODESIGN" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CODESIGN=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool CODESIGN=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CODESIGN+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CODESIGN in + [\\/]* | ?:[\\/]*) + ac_cv_path_CODESIGN="$CODESIGN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CODESIGN="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CODESIGN=$ac_cv_path_CODESIGN +if test -n "$CODESIGN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CODESIGN" >&5 +$as_echo "$CODESIGN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$CODESIGN" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CODESIGN=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool CODESIGN=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CODESIGN" >&5 +$as_echo_n "checking for CODESIGN... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool CODESIGN=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$CODESIGN" != "x"; then # Verify that the openjdk_codesign certificate is present { $as_echo "$as_me:${as_lineno-$LINENO}: checking if openjdk_codesign certificate is present" >&5 @@ -16673,7 +24821,14 @@ $as_echo "$JTREGEXE" >&6; } else # try to find jtreg on path - for ac_prog in jtreg + + + # Publish this variable in the help. + + + if test "x$JTREGEXE" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in jtreg do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -16718,16 +24873,143 @@ fi test -n "$JTREGEXE" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !JTREGEXE! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!JTREGEXE!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xJTREGEXE" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of JTREGEXE from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of JTREGEXE from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in jtreg +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_JTREGEXE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $JTREGEXE in + [\\/]* | ?:[\\/]*) + ac_cv_path_JTREGEXE="$JTREGEXE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_JTREGEXE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +JTREGEXE=$ac_cv_path_JTREGEXE +if test -n "$JTREGEXE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JTREGEXE" >&5 +$as_echo "$JTREGEXE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$JTREGEXE" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$JTREGEXE" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool JTREGEXE=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool JTREGEXE=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_JTREGEXE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $JTREGEXE in + [\\/]* | ?:[\\/]*) + ac_cv_path_JTREGEXE="$JTREGEXE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_JTREGEXE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +JTREGEXE=$ac_cv_path_JTREGEXE +if test -n "$JTREGEXE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JTREGEXE" >&5 +$as_echo "$JTREGEXE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$JTREGEXE" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool JTREGEXE=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool JTREGEXE=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JTREGEXE" >&5 +$as_echo_n "checking for JTREGEXE... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool JTREGEXE=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$JTREGEXE" = x; then - if test "xjtreg" = x; then - PROG_NAME=jtregexe - else - PROG_NAME=jtreg - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 + as_fn_error $? "Could not find required tool for JTREGEXE" "$LINENO" 5 fi @@ -18016,6 +26298,13 @@ fi # otherwise we might pick up cross-compilers which don't use standard naming. # Otherwise, we'll set the BUILD_tools to the native tools, but that'll have # to wait until they are properly discovered. + + + # Publish this variable in the help. + + + if test "x$BUILD_CC" = x; then + # The variable is not set by user, try to locate tool using the code snippet for ac_prog in cl cc gcc do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -18061,6 +26350,140 @@ fi test -n "$BUILD_CC" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !BUILD_CC! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!BUILD_CC!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xBUILD_CC" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of BUILD_CC from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of BUILD_CC from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in cl cc gcc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_BUILD_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $BUILD_CC in + [\\/]* | ?:[\\/]*) + ac_cv_path_BUILD_CC="$BUILD_CC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BUILD_CC="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +BUILD_CC=$ac_cv_path_BUILD_CC +if test -n "$BUILD_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_CC" >&5 +$as_echo "$BUILD_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$BUILD_CC" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$BUILD_CC" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool BUILD_CC=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool BUILD_CC=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_BUILD_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $BUILD_CC in + [\\/]* | ?:[\\/]*) + ac_cv_path_BUILD_CC="$BUILD_CC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BUILD_CC="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +BUILD_CC=$ac_cv_path_BUILD_CC +if test -n "$BUILD_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_CC" >&5 +$as_echo "$BUILD_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$BUILD_CC" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool BUILD_CC=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool BUILD_CC=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_CC" >&5 +$as_echo_n "checking for BUILD_CC... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool BUILD_CC=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then @@ -18327,6 +26750,13 @@ $as_echo "$as_me: This might be caused by spaces in the path, which is not allow $as_echo "$as_me: Rewriting BUILD_CC to \"$new_complete\"" >&6;} fi + + + # Publish this variable in the help. + + + if test "x$BUILD_CXX" = x; then + # The variable is not set by user, try to locate tool using the code snippet for ac_prog in cl CC g++ do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -18372,6 +26802,140 @@ fi test -n "$BUILD_CXX" && break done + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !BUILD_CXX! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!BUILD_CXX!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xBUILD_CXX" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of BUILD_CXX from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of BUILD_CXX from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in cl CC g++ +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_BUILD_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $BUILD_CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_BUILD_CXX="$BUILD_CXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BUILD_CXX="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +BUILD_CXX=$ac_cv_path_BUILD_CXX +if test -n "$BUILD_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_CXX" >&5 +$as_echo "$BUILD_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$BUILD_CXX" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$BUILD_CXX" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool BUILD_CXX=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool BUILD_CXX=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_BUILD_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $BUILD_CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_BUILD_CXX="$BUILD_CXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BUILD_CXX="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +BUILD_CXX=$ac_cv_path_BUILD_CXX +if test -n "$BUILD_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_CXX" >&5 +$as_echo "$BUILD_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$BUILD_CXX" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool BUILD_CXX=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool BUILD_CXX=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_CXX" >&5 +$as_echo_n "checking for BUILD_CXX... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool BUILD_CXX=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then @@ -18638,8 +27202,17 @@ $as_echo "$as_me: This might be caused by spaces in the path, which is not allow $as_echo "$as_me: Rewriting BUILD_CXX to \"$new_complete\"" >&6;} fi - # Extract the first word of "ld", so it can be a program name with args. -set dummy ld; ac_word=$2 + + + # Publish this variable in the help. + + + if test "x$BUILD_LD" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in ld +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_BUILD_LD+:} false; then : @@ -18678,6 +27251,143 @@ $as_echo "no" >&6; } fi + test -n "$BUILD_LD" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !BUILD_LD! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!BUILD_LD!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xBUILD_LD" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of BUILD_LD from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of BUILD_LD from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in ld +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_BUILD_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $BUILD_LD in + [\\/]* | ?:[\\/]*) + ac_cv_path_BUILD_LD="$BUILD_LD" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BUILD_LD="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +BUILD_LD=$ac_cv_path_BUILD_LD +if test -n "$BUILD_LD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_LD" >&5 +$as_echo "$BUILD_LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$BUILD_LD" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$BUILD_LD" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool BUILD_LD=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool BUILD_LD=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_BUILD_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $BUILD_LD in + [\\/]* | ?:[\\/]*) + ac_cv_path_BUILD_LD="$BUILD_LD" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BUILD_LD="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +BUILD_LD=$ac_cv_path_BUILD_LD +if test -n "$BUILD_LD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_LD" >&5 +$as_echo "$BUILD_LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$BUILD_LD" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool BUILD_LD=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool BUILD_LD=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_LD" >&5 +$as_echo_n "checking for BUILD_LD... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool BUILD_LD=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then @@ -22654,9 +31364,18 @@ $as_echo "$as_me: Rewriting OBJC to \"$new_complete\"" >&6;} if test "x$OPENJDK_TARGET_OS" != xwindows; then + + + # Publish this variable in the help. + + + if test "x$AR" = x; then + # The variable is not set by user, try to locate tool using the code snippet if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : @@ -22672,7 +31391,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="${ac_tool_prefix}ar" + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -22692,11 +31411,15 @@ $as_echo "no" >&6; } fi + test -n "$AR" && break + done fi -if test -z "$ac_cv_prog_AR"; then +if test -z "$AR"; then ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : @@ -22712,7 +31435,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="ar" + ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -22731,6 +31454,10 @@ else $as_echo "no" >&6; } fi + + test -n "$ac_ct_AR" && break +done + if test "x$ac_ct_AR" = x; then AR="" else @@ -22742,10 +31469,197 @@ ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi -else - AR="$ac_cv_prog_AR" fi + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !AR! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!AR!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xAR" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of AR from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of AR from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$AR" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool AR=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool AR=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $AR in + [\\/]* | ?:[\\/]*) + ac_cv_path_AR="$AR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +AR=$ac_cv_path_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$AR" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool AR=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool AR=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AR" >&5 +$as_echo_n "checking for AR... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool AR=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then @@ -25534,8 +34448,17 @@ $as_echo "$as_me: Rewriting CXXCPP to \"$new_complete\"" >&6;} # Find the right assembler. if test "x$OPENJDK_TARGET_OS" = xsolaris; then - # Extract the first word of "as", so it can be a program name with args. -set dummy as; ac_word=$2 + + + # Publish this variable in the help. + + + if test "x$AS" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in as +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_AS+:} false; then : @@ -25574,6 +34497,143 @@ $as_echo "no" >&6; } fi + test -n "$AS" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !AS! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!AS!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xAS" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of AS from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of AS from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in as +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $AS in + [\\/]* | ?:[\\/]*) + ac_cv_path_AS="$AS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_AS="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +AS=$ac_cv_path_AS +if test -n "$AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +$as_echo "$AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AS" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$AS" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool AS=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool AS=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $AS in + [\\/]* | ?:[\\/]*) + ac_cv_path_AS="$AS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_AS="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +AS=$ac_cv_path_AS +if test -n "$AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +$as_echo "$AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$AS" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool AS=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool AS=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AS" >&5 +$as_echo_n "checking for AS... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool AS=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then @@ -25846,8 +34906,17 @@ $as_echo "$as_me: Rewriting AS to \"$new_complete\"" >&6;} if test "x$OPENJDK_TARGET_OS" = xsolaris; then - # Extract the first word of "nm", so it can be a program name with args. -set dummy nm; ac_word=$2 + + + # Publish this variable in the help. + + + if test "x$NM" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in nm +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_NM+:} false; then : @@ -25886,6 +34955,143 @@ $as_echo "no" >&6; } fi + test -n "$NM" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !NM! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!NM!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xNM" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of NM from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of NM from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in nm +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $NM in + [\\/]* | ?:[\\/]*) + ac_cv_path_NM="$NM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_NM="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +NM=$ac_cv_path_NM +if test -n "$NM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5 +$as_echo "$NM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$NM" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$NM" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool NM=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool NM=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $NM in + [\\/]* | ?:[\\/]*) + ac_cv_path_NM="$NM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_NM="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +NM=$ac_cv_path_NM +if test -n "$NM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5 +$as_echo "$NM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$NM" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool NM=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool NM=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NM" >&5 +$as_echo_n "checking for NM... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool NM=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then @@ -26152,8 +35358,17 @@ $as_echo "$as_me: This might be caused by spaces in the path, which is not allow $as_echo "$as_me: Rewriting NM to \"$new_complete\"" >&6;} fi - # Extract the first word of "gnm", so it can be a program name with args. -set dummy gnm; ac_word=$2 + + + # Publish this variable in the help. + + + if test "x$GNM" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in gnm +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GNM+:} false; then : @@ -26192,6 +35407,143 @@ $as_echo "no" >&6; } fi + test -n "$GNM" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !GNM! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!GNM!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xGNM" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of GNM from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of GNM from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in gnm +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GNM+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GNM in + [\\/]* | ?:[\\/]*) + ac_cv_path_GNM="$GNM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GNM="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GNM=$ac_cv_path_GNM +if test -n "$GNM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNM" >&5 +$as_echo "$GNM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$GNM" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$GNM" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool GNM=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool GNM=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GNM+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GNM in + [\\/]* | ?:[\\/]*) + ac_cv_path_GNM="$GNM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GNM="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GNM=$ac_cv_path_GNM +if test -n "$GNM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNM" >&5 +$as_echo "$GNM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$GNM" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool GNM=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool GNM=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNM" >&5 +$as_echo_n "checking for GNM... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool GNM=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then @@ -26458,8 +35810,17 @@ $as_echo "$as_me: This might be caused by spaces in the path, which is not allow $as_echo "$as_me: Rewriting GNM to \"$new_complete\"" >&6;} fi - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 + + + # Publish this variable in the help. + + + if test "x$STRIP" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in strip +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_STRIP+:} false; then : @@ -26498,6 +35859,143 @@ $as_echo "no" >&6; } fi + test -n "$STRIP" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !STRIP! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!STRIP!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xSTRIP" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of STRIP from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of STRIP from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in strip +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $STRIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_STRIP="$STRIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_STRIP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +STRIP=$ac_cv_path_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$STRIP" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$STRIP" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool STRIP=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool STRIP=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $STRIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_STRIP="$STRIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_STRIP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +STRIP=$ac_cv_path_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$STRIP" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool STRIP=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool STRIP=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for STRIP" >&5 +$as_echo_n "checking for STRIP... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool STRIP=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then @@ -26764,8 +36262,17 @@ $as_echo "$as_me: This might be caused by spaces in the path, which is not allow $as_echo "$as_me: Rewriting STRIP to \"$new_complete\"" >&6;} fi - # Extract the first word of "mcs", so it can be a program name with args. -set dummy mcs; ac_word=$2 + + + # Publish this variable in the help. + + + if test "x$MCS" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in mcs +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MCS+:} false; then : @@ -26804,6 +36311,143 @@ $as_echo "no" >&6; } fi + test -n "$MCS" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !MCS! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!MCS!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xMCS" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of MCS from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of MCS from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in mcs +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MCS+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MCS in + [\\/]* | ?:[\\/]*) + ac_cv_path_MCS="$MCS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MCS="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +MCS=$ac_cv_path_MCS +if test -n "$MCS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MCS" >&5 +$as_echo "$MCS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$MCS" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$MCS" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool MCS=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool MCS=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MCS+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MCS in + [\\/]* | ?:[\\/]*) + ac_cv_path_MCS="$MCS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MCS="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +MCS=$ac_cv_path_MCS +if test -n "$MCS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MCS" >&5 +$as_echo "$MCS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$MCS" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool MCS=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool MCS=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MCS" >&5 +$as_echo_n "checking for MCS... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool MCS=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then @@ -27071,9 +36715,18 @@ $as_echo "$as_me: Rewriting MCS to \"$new_complete\"" >&6;} fi elif test "x$OPENJDK_TARGET_OS" != xwindows; then + + + # Publish this variable in the help. + + + if test "x$NM" = x; then + # The variable is not set by user, try to locate tool using the code snippet if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args. -set dummy ${ac_tool_prefix}nm; ac_word=$2 + for ac_prog in nm + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NM+:} false; then : @@ -27089,7 +36742,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NM="${ac_tool_prefix}nm" + ac_cv_prog_NM="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -27109,11 +36762,15 @@ $as_echo "no" >&6; } fi + test -n "$NM" && break + done fi -if test -z "$ac_cv_prog_NM"; then +if test -z "$NM"; then ac_ct_NM=$NM - # Extract the first word of "nm", so it can be a program name with args. -set dummy nm; ac_word=$2 + for ac_prog in nm +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NM+:} false; then : @@ -27129,7 +36786,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NM="nm" + ac_cv_prog_ac_ct_NM="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -27148,6 +36805,10 @@ else $as_echo "no" >&6; } fi + + test -n "$ac_ct_NM" && break +done + if test "x$ac_ct_NM" = x; then NM="" else @@ -27159,10 +36820,197 @@ ac_tool_warned=yes ;; esac NM=$ac_ct_NM fi -else - NM="$ac_cv_prog_NM" fi + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !NM! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!NM!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xNM" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of NM from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of NM from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + if test -n "$ac_tool_prefix"; then + for ac_prog in nm + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + ac_cv_prog_NM="$NM" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NM="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NM=$ac_cv_prog_NM +if test -n "$NM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5 +$as_echo "$NM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$NM" && break + done +fi +if test -z "$NM"; then + ac_ct_NM=$NM + for ac_prog in nm +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NM"; then + ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NM="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NM=$ac_cv_prog_ac_ct_NM +if test -n "$ac_ct_NM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5 +$as_echo "$ac_ct_NM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_NM" && break +done + + if test "x$ac_ct_NM" = x; then + NM="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NM=$ac_ct_NM + fi +fi + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$NM" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool NM=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool NM=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $NM in + [\\/]* | ?:[\\/]*) + ac_cv_path_NM="$NM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_NM="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +NM=$ac_cv_path_NM +if test -n "$NM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5 +$as_echo "$NM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$NM" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool NM=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool NM=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NM" >&5 +$as_echo_n "checking for NM... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool NM=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then @@ -27431,9 +37279,18 @@ $as_echo "$as_me: Rewriting NM to \"$new_complete\"" >&6;} GNM="$NM" + + + # Publish this variable in the help. + + + if test "x$STRIP" = x; then + # The variable is not set by user, try to locate tool using the code snippet if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 + for ac_prog in strip + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : @@ -27449,7 +37306,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" + ac_cv_prog_STRIP="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -27469,11 +37326,15 @@ $as_echo "no" >&6; } fi + test -n "$STRIP" && break + done fi -if test -z "$ac_cv_prog_STRIP"; then +if test -z "$STRIP"; then ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 + for ac_prog in strip +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : @@ -27489,7 +37350,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" + ac_cv_prog_ac_ct_STRIP="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -27508,6 +37369,10 @@ else $as_echo "no" >&6; } fi + + test -n "$ac_ct_STRIP" && break +done + if test "x$ac_ct_STRIP" = x; then STRIP="" else @@ -27519,10 +37384,197 @@ ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi -else - STRIP="$ac_cv_prog_STRIP" fi + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !STRIP! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!STRIP!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xSTRIP" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of STRIP from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of STRIP from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + if test -n "$ac_tool_prefix"; then + for ac_prog in strip + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$STRIP" && break + done +fi +if test -z "$STRIP"; then + ac_ct_STRIP=$STRIP + for ac_prog in strip +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_STRIP" && break +done + + if test "x$ac_ct_STRIP" = x; then + STRIP="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +fi + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$STRIP" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool STRIP=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool STRIP=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $STRIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_STRIP="$STRIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_STRIP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +STRIP=$ac_cv_path_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$STRIP" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool STRIP=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool STRIP=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for STRIP" >&5 +$as_echo_n "checking for STRIP... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool STRIP=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then @@ -27794,6 +37846,13 @@ $as_echo "$as_me: Rewriting STRIP to \"$new_complete\"" >&6;} # objcopy is used for moving debug symbols to separate files when # full debug symbols are enabled. if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then + + + # Publish this variable in the help. + + + if test "x$OBJCOPY" = x; then + # The variable is not set by user, try to locate tool using the code snippet if test -n "$ac_tool_prefix"; then for ac_prog in gobjcopy objcopy do @@ -27894,6 +37953,195 @@ esac fi fi + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !OBJCOPY! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!OBJCOPY!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xOBJCOPY" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of OBJCOPY from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of OBJCOPY from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + if test -n "$ac_tool_prefix"; then + for ac_prog in gobjcopy objcopy + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJCOPY+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJCOPY"; then + ac_cv_prog_OBJCOPY="$OBJCOPY" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJCOPY="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJCOPY=$ac_cv_prog_OBJCOPY +if test -n "$OBJCOPY"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJCOPY" >&5 +$as_echo "$OBJCOPY" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$OBJCOPY" && break + done +fi +if test -z "$OBJCOPY"; then + ac_ct_OBJCOPY=$OBJCOPY + for ac_prog in gobjcopy objcopy +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJCOPY+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJCOPY"; then + ac_cv_prog_ac_ct_OBJCOPY="$ac_ct_OBJCOPY" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJCOPY="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJCOPY=$ac_cv_prog_ac_ct_OBJCOPY +if test -n "$ac_ct_OBJCOPY"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJCOPY" >&5 +$as_echo "$ac_ct_OBJCOPY" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_OBJCOPY" && break +done + + if test "x$ac_ct_OBJCOPY" = x; then + OBJCOPY="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJCOPY=$ac_ct_OBJCOPY + fi +fi + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$OBJCOPY" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool OBJCOPY=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool OBJCOPY=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_OBJCOPY+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $OBJCOPY in + [\\/]* | ?:[\\/]*) + ac_cv_path_OBJCOPY="$OBJCOPY" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_OBJCOPY="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +OBJCOPY=$ac_cv_path_OBJCOPY +if test -n "$OBJCOPY"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJCOPY" >&5 +$as_echo "$OBJCOPY" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$OBJCOPY" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool OBJCOPY=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool OBJCOPY=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OBJCOPY" >&5 +$as_echo_n "checking for OBJCOPY... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool OBJCOPY=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + # Only call fixup if objcopy was found. if test -n "$OBJCOPY"; then @@ -28165,7 +38413,14 @@ $as_echo "$as_me: Rewriting OBJCOPY to \"$new_complete\"" >&6;} fi fi - if test -n "$ac_tool_prefix"; then + + + # Publish this variable in the help. + + + if test "x$OBJDUMP" = x; then + # The variable is not set by user, try to locate tool using the code snippet + if test -n "$ac_tool_prefix"; then for ac_prog in gobjdump objdump do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. @@ -28265,6 +38520,195 @@ esac fi fi + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !OBJDUMP! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!OBJDUMP!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xOBJDUMP" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of OBJDUMP from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of OBJDUMP from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + if test -n "$ac_tool_prefix"; then + for ac_prog in gobjdump objdump + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$OBJDUMP" && break + done +fi +if test -z "$OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + for ac_prog in gobjdump objdump +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_OBJDUMP" && break +done + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +fi + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$OBJDUMP" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool OBJDUMP=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool OBJDUMP=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $OBJDUMP in + [\\/]* | ?:[\\/]*) + ac_cv_path_OBJDUMP="$OBJDUMP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_OBJDUMP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +OBJDUMP=$ac_cv_path_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$OBJDUMP" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool OBJDUMP=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool OBJDUMP=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OBJDUMP" >&5 +$as_echo_n "checking for OBJDUMP... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool OBJDUMP=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$OBJDUMP" != x; then # Only used for compare.sh; we can live without it. BASIC_FIXUP_EXECUTABLE bails if argument is missing. @@ -28536,8 +38980,17 @@ $as_echo "$as_me: Rewriting OBJDUMP to \"$new_complete\"" >&6;} fi if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 + + + # Publish this variable in the help. + + + if test "x$LIPO" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in lipo +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_LIPO+:} false; then : @@ -28576,6 +39029,143 @@ $as_echo "no" >&6; } fi + test -n "$LIPO" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !LIPO! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!LIPO!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xLIPO" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of LIPO from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of LIPO from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in lipo +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $LIPO in + [\\/]* | ?:[\\/]*) + ac_cv_path_LIPO="$LIPO" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LIPO="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +LIPO=$ac_cv_path_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$LIPO" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$LIPO" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool LIPO=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool LIPO=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $LIPO in + [\\/]* | ?:[\\/]*) + ac_cv_path_LIPO="$LIPO" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LIPO="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +LIPO=$ac_cv_path_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$LIPO" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool LIPO=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool LIPO=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIPO" >&5 +$as_echo_n "checking for LIPO... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool LIPO=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then @@ -36180,65 +46770,7 @@ $as_echo "yes" >&6; } if test "x$TOOLS_DIR" != x; then PATH=$TOOLS_DIR:$PATH fi - - for ac_prog in ccache -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_CCACHE+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $CCACHE in - [\\/]* | ?:[\\/]*) - ac_cv_path_CCACHE="$CCACHE" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_CCACHE="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -CCACHE=$ac_cv_path_CCACHE -if test -n "$CCACHE"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CCACHE" >&5 -$as_echo "$CCACHE" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CCACHE" && break -done - - - if test "x$CCACHE" = x; then - if test "xccache" = x; then - PROG_NAME=ccache - else - PROG_NAME=ccache - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5 -$as_echo "$as_me: Could not find $PROG_NAME!" >&6;} - as_fn_error $? "Cannot continue" "$LINENO" 5 - fi - - + BASIC_REQUIRE_PROG(CCACHE, ccache) CCACHE_STATUS="enabled" PATH="$OLD_PATH" elif test "x$enable_ccache" = xno; then @@ -36351,6 +46883,15 @@ $as_echo "no, disabling ccaching of precompiled headers" >&6; } fi + # Did user specify any unknown variables? + + if test "x$CONFIGURE_OVERRIDDEN_VARIABLES" != x; then + # Replace the separating ! with spaces before presenting for end user. + unknown_variables=${CONFIGURE_OVERRIDDEN_VARIABLES//!/ } + as_fn_error $? "The following variables are unknown to configure: $unknown_variables" "$LINENO" 5 + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if build directory is on local disk" >&5 $as_echo_n "checking if build directory is on local disk... " >&6; } diff --git a/common/autoconf/toolchain.m4 b/common/autoconf/toolchain.m4 index 613881fddfe..f358daf3473 100644 --- a/common/autoconf/toolchain.m4 +++ b/common/autoconf/toolchain.m4 @@ -238,11 +238,11 @@ AC_DEFUN([TOOLCHAIN_SETUP_PATHS], # otherwise we might pick up cross-compilers which don't use standard naming. # Otherwise, we'll set the BUILD_tools to the native tools, but that'll have # to wait until they are properly discovered. - AC_PATH_PROGS(BUILD_CC, [cl cc gcc]) + BASIC_PATH_PROGS(BUILD_CC, [cl cc gcc]) BASIC_FIXUP_EXECUTABLE(BUILD_CC) - AC_PATH_PROGS(BUILD_CXX, [cl CC g++]) + BASIC_PATH_PROGS(BUILD_CXX, [cl CC g++]) BASIC_FIXUP_EXECUTABLE(BUILD_CXX) - AC_PATH_PROG(BUILD_LD, ld) + BASIC_PATH_PROGS(BUILD_LD, ld) BASIC_FIXUP_EXECUTABLE(BUILD_LD) fi AC_SUBST(BUILD_CC) @@ -353,7 +353,7 @@ AC_DEFUN([TOOLCHAIN_SETUP_PATHS], AC_SUBST(LDEXECXX) if test "x$OPENJDK_TARGET_OS" != xwindows; then - AC_CHECK_TOOL(AR, ar) + BASIC_CHECK_TOOLS(AR, ar) BASIC_FIXUP_EXECUTABLE(AR) fi if test "x$OPENJDK_TARGET_OS" = xmacosx; then @@ -480,7 +480,7 @@ AC_DEFUN([TOOLCHAIN_SETUP_PATHS], # Find the right assembler. if test "x$OPENJDK_TARGET_OS" = xsolaris; then - AC_PATH_PROG(AS, as) + BASIC_PATH_PROGS(AS, as) BASIC_FIXUP_EXECUTABLE(AS) else AS="$CC -c" @@ -488,41 +488,41 @@ AC_DEFUN([TOOLCHAIN_SETUP_PATHS], AC_SUBST(AS) if test "x$OPENJDK_TARGET_OS" = xsolaris; then - AC_PATH_PROG(NM, nm) + BASIC_PATH_PROGS(NM, nm) BASIC_FIXUP_EXECUTABLE(NM) - AC_PATH_PROG(GNM, gnm) + BASIC_PATH_PROGS(GNM, gnm) BASIC_FIXUP_EXECUTABLE(GNM) - AC_PATH_PROG(STRIP, strip) + BASIC_PATH_PROGS(STRIP, strip) BASIC_FIXUP_EXECUTABLE(STRIP) - AC_PATH_PROG(MCS, mcs) + BASIC_PATH_PROGS(MCS, mcs) BASIC_FIXUP_EXECUTABLE(MCS) elif test "x$OPENJDK_TARGET_OS" != xwindows; then - AC_CHECK_TOOL(NM, nm) + BASIC_CHECK_TOOLS(NM, nm) BASIC_FIXUP_EXECUTABLE(NM) GNM="$NM" AC_SUBST(GNM) - AC_CHECK_TOOL(STRIP, strip) + BASIC_CHECK_TOOLS(STRIP, strip) BASIC_FIXUP_EXECUTABLE(STRIP) fi # objcopy is used for moving debug symbols to separate files when # full debug symbols are enabled. if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then - AC_CHECK_TOOLS(OBJCOPY, [gobjcopy objcopy]) + BASIC_CHECK_TOOLS(OBJCOPY, [gobjcopy objcopy]) # Only call fixup if objcopy was found. if test -n "$OBJCOPY"; then BASIC_FIXUP_EXECUTABLE(OBJCOPY) fi fi - AC_CHECK_TOOLS(OBJDUMP, [gobjdump objdump]) + BASIC_CHECK_TOOLS(OBJDUMP, [gobjdump objdump]) if test "x$OBJDUMP" != x; then # Only used for compare.sh; we can live without it. BASIC_FIXUP_EXECUTABLE bails if argument is missing. BASIC_FIXUP_EXECUTABLE(OBJDUMP) fi if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then - AC_PATH_PROG(LIPO, lipo) + BASIC_PATH_PROGS(LIPO, lipo) BASIC_FIXUP_EXECUTABLE(LIPO) fi @@ -1244,7 +1244,7 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG], AC_MSG_RESULT($JTREGEXE) else # try to find jtreg on path - BASIC_REQUIRE_PROG(JTREGEXE, jtreg) + BASIC_REQUIRE_PROGS(JTREGEXE, jtreg) JT_HOME="`$DIRNAME $JTREGEXE`" fi fi From fcd4a416467931cfc9777293485a1a192b96fd20 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Wed, 29 Jan 2014 12:18:17 +0100 Subject: [PATCH 095/158] 8033115: Bad merge between 8027584 and 8031759 Reviewed-by: erikj, dsamersoff --- common/autoconf/build-performance.m4 | 2 +- common/autoconf/generated-configure.sh | 200 ++++++++++++++++++++++++- 2 files changed, 198 insertions(+), 4 deletions(-) diff --git a/common/autoconf/build-performance.m4 b/common/autoconf/build-performance.m4 index 518457ac105..1bf5628485c 100644 --- a/common/autoconf/build-performance.m4 +++ b/common/autoconf/build-performance.m4 @@ -172,7 +172,7 @@ AC_DEFUN([BPERF_SETUP_CCACHE], if test "x$TOOLS_DIR" != x; then PATH=$TOOLS_DIR:$PATH fi - BASIC_REQUIRE_PROG(CCACHE, ccache) + BASIC_REQUIRE_PROGS(CCACHE, ccache) CCACHE_STATUS="enabled" PATH="$OLD_PATH" elif test "x$enable_ccache" = xno; then diff --git a/common/autoconf/generated-configure.sh b/common/autoconf/generated-configure.sh index 5c43987622b..f7dc3f66d6d 100644 --- a/common/autoconf/generated-configure.sh +++ b/common/autoconf/generated-configure.sh @@ -1165,7 +1165,8 @@ FREETYPE_LIBS ALSA_CFLAGS ALSA_LIBS LIBFFI_CFLAGS -LIBFFI_LIBS' +LIBFFI_LIBS +CCACHE' # Initialize some variables set by options. @@ -2015,6 +2016,7 @@ Some influential environment variables: LIBFFI_CFLAGS C compiler flags for LIBFFI, overriding pkg-config LIBFFI_LIBS linker flags for LIBFFI, overriding pkg-config + CCACHE Override default value for CCACHE Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -4034,7 +4036,7 @@ fi #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1390990903 +DATE_WHEN_GENERATED=1390994270 ############################################################################### # @@ -46770,7 +46772,199 @@ $as_echo "yes" >&6; } if test "x$TOOLS_DIR" != x; then PATH=$TOOLS_DIR:$PATH fi - BASIC_REQUIRE_PROG(CCACHE, ccache) + + + + # Publish this variable in the help. + + + if test "x$CCACHE" = x; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in ccache +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CCACHE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CCACHE in + [\\/]* | ?:[\\/]*) + ac_cv_path_CCACHE="$CCACHE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CCACHE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CCACHE=$ac_cv_path_CCACHE +if test -n "$CCACHE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CCACHE" >&5 +$as_echo "$CCACHE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CCACHE" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !CCACHE! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CCACHE!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xCCACHE" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CCACHE from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of CCACHE from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in ccache +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CCACHE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CCACHE in + [\\/]* | ?:[\\/]*) + ac_cv_path_CCACHE="$CCACHE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CCACHE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CCACHE=$ac_cv_path_CCACHE +if test -n "$CCACHE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CCACHE" >&5 +$as_echo "$CCACHE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CCACHE" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$CCACHE" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CCACHE=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool CCACHE=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CCACHE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CCACHE in + [\\/]* | ?:[\\/]*) + ac_cv_path_CCACHE="$CCACHE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CCACHE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CCACHE=$ac_cv_path_CCACHE +if test -n "$CCACHE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CCACHE" >&5 +$as_echo "$CCACHE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$CCACHE" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CCACHE=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool CCACHE=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CCACHE" >&5 +$as_echo_n "checking for CCACHE... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool CCACHE=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + + + if test "x$CCACHE" = x; then + as_fn_error $? "Could not find required tool for CCACHE" "$LINENO" 5 + fi + + CCACHE_STATUS="enabled" PATH="$OLD_PATH" elif test "x$enable_ccache" = xno; then From da17ca59dba37b8df99176fba2fc34f19a497403 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Wed, 29 Jan 2014 13:10:53 +0100 Subject: [PATCH 096/158] 8033111: Clean up left-over JObjC code in build system Reviewed-by: erikj --- jdk/make/CompileJavaClasses.gmk | 2 +- jdk/make/gensrc/GensrcJObjC.gmk | 112 -------------------------------- 2 files changed, 1 insertion(+), 113 deletions(-) delete mode 100644 jdk/make/gensrc/GensrcJObjC.gmk diff --git a/jdk/make/CompileJavaClasses.gmk b/jdk/make/CompileJavaClasses.gmk index d3e638e1109..5a725b502e6 100644 --- a/jdk/make/CompileJavaClasses.gmk +++ b/jdk/make/CompileJavaClasses.gmk @@ -409,7 +409,7 @@ endif ########################################################################################## -all: $(BUILD_JDK) $(BUILD_SECURITY) $(BUILD_JOBJC) $(BUILD_JOBJC_HEADERS) $(COPY_EXTRA) \ +all: $(BUILD_JDK) $(BUILD_SECURITY) $(COPY_EXTRA) \ $(JDK_OUTPUTDIR)/classes/META-INF/services/com.sun.tools.xjc.Plugin \ $(BUILD_ACCESSBRIDGE_32) $(BUILD_ACCESSBRIDGE_64) \ $(BUILD_ACCESSBRIDGE_LEGACY) diff --git a/jdk/make/gensrc/GensrcJObjC.gmk b/jdk/make/gensrc/GensrcJObjC.gmk deleted file mode 100644 index 899ec25545f..00000000000 --- a/jdk/make/gensrc/GensrcJObjC.gmk +++ /dev/null @@ -1,112 +0,0 @@ -# -# Copyright (c) 2011, 2012, 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. -# - -GENSRC_JOBJC := - -JOBJC_FRAMEWORKS := Foundation CoreFoundation AppKit -FRAMEWORKS_DIR := /System/Library/Frameworks -GBM := /usr/bin/gen_bridge_metadata - -JOBJC_SRC := $(JDK_TOPDIR)/src/macosx/native/jobjc -JOBJC_TMP := $(JDK_OUTPUTDIR)/gensrc_jobjc -JOBJC_DST := $(JDK_OUTPUTDIR)/gensrc_jobjc/src - -# -# Build generator -# -$(eval $(call SetupJavaCompilation,BUILD_JOBJC_PRIMITIVE_CODER, \ - SETUP := GENERATE_OLDBYTECODE, \ - DISABLE_SJAVAC := true, \ - INCLUDES := core/java \ - com/apple, \ - SRC := $(JOBJC_SRC)/src \ - $(JOBJC_SRC)/src/generator/java, \ - BIN := $(JOBJC_TMP)/bin)) - -GENSRC_JOBJC += $(BUILD_JOBJC_PRIMITIVE_CODER) - -# -# Generate bridge support for select frameworks -# -BRIDGESUPPORT := $(addprefix $(JOBJC_TMP)/bridge/, $(addsuffix Full.bridgesupport, $(JOBJC_FRAMEWORKS))) - -# -# Define macro for rules to create bridge support -# Not sure why, but if the system has this framework bridge support, -# we appear to copy that, otherwise we run GBM which can be very slow. -# -define CreateBridgeSupport # Framework - $(RM) $@ $@.tmp - $(MKDIR) -p $(@D) - if [ -f $(FRAMEWORKS_DIR)/$1.framework/Resources/BridgeSupport/$(@F) ]; then \ - $(CP) $(FRAMEWORKS_DIR)/$1.framework/Resources/BridgeSupport/$(@F) $@.tmp ; \ - else \ - $(GBM) $(LOG_INFO) -F complete --framework $1 -o $@.tmp ; \ - fi - $(MV) $@.tmp $@ -endef - -# -# Currently 3 frameworks, avoid pattern rule due to the names being conflicting -# -$(JOBJC_TMP)/bridge/FoundationFull.bridgesupport: \ - $(wildcard $(FRAMEWORKS_DIR)/Foundation.framework/Headers/*.h) - $(call CreateBridgeSupport,Foundation) -$(JOBJC_TMP)/bridge/CoreFoundationFull.bridgesupport: \ - $(wildcard $(FRAMEWORKS_DIR)/CoreFoundation.framework/Headers/*.h) - $(call CreateBridgeSupport,CoreFoundation) -$(JOBJC_TMP)/bridge/AppKitFull.bridgesupport: \ - $(wildcard $(FRAMEWORKS_DIR)/AppKit.framework/Headers/*.h) - $(call CreateBridgeSupport,AppKit) - -# -# Find Xbootclasspath, for some reason, this involves firing up Java just -# so we can get the boot classpath, so we can remove anything in that -# classpath that ends with "JObjC.jar", and emit the new bootclasspath. -# -$(JOBJC_TMP)/_the.generator_bootclasspath: $(BUILD_JOBJC_PRIMITIVE_CODER) - $(ECHO) Generating jobjc framework bridge - $(RM) $@ - $(JAVA) $(LOG_INFO) -cp $(JOBJC_TMP)/bin com.apple.internal.jobjc.generator.BootClassPathMinus JObjC.jar > $@.tmp - $(MV) $@.tmp $@ - -# -# Run generator -# Now we use bootclasspath to run java again, with the bridge support to -# generate more source. -# -$(JOBJC_TMP)/_the.generator: $(JOBJC_TMP)/_the.generator_bootclasspath $(BRIDGESUPPORT) - $(RM) $@ - $(JAVA) $(LOG_INFO) -d64 -Xbootclasspath:`$(CAT) $(JOBJC_TMP)/_the.generator_bootclasspath` -cp $(JOBJC_TMP)/bin -ea com.apple.internal.jobjc.generator.Generator dst=$(JOBJC_DST) frameworks=$(JOBJC_TMP)/bridge - $(TOUCH) $@ - -# The generator delets all files in the target dir so it has to work in its -# own dir and have the files copied over to gensrc aftewards. -$(JDK_OUTPUTDIR)/gensrc/_the.jobjc.files: $(JOBJC_TMP)/_the.generator - $(MKDIR) -p $(@D) - $(CP) -rp $(JOBJC_DST)/* $(@D) - $(TOUCH) $@ - -GENSRC_JOBJC += $(JDK_OUTPUTDIR)/gensrc/_the.jobjc.files From 9e782fae6d8f9743acf00186a137b0ffc33787d8 Mon Sep 17 00:00:00 2001 From: Jaroslav Bachorik Date: Wed, 29 Jan 2014 17:37:40 +0100 Subject: [PATCH 097/158] 8031701: java/lang/management/ThreadMXBean/Locks.java: Thread WaitingThread is expected to wait on Object but got null Thread.State = RUNNABLE Reviewed-by: mchung, dsamersoff --- .../lang/management/ThreadMXBean/Locks.java | 204 ++++++++++-------- .../ThreadExecutionSynchronizer.java | 85 -------- 2 files changed, 111 insertions(+), 178 deletions(-) delete mode 100644 jdk/test/java/lang/management/ThreadMXBean/ThreadExecutionSynchronizer.java diff --git a/jdk/test/java/lang/management/ThreadMXBean/Locks.java b/jdk/test/java/lang/management/ThreadMXBean/Locks.java index c078dccd62d..e65d3637f67 100644 --- a/jdk/test/java/lang/management/ThreadMXBean/Locks.java +++ b/jdk/test/java/lang/management/ThreadMXBean/Locks.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -27,18 +27,19 @@ * @summary Basic unit test of ThreadInfo.getLockName() * and ThreadInfo.getLockOwnerName() * @author Mandy Chung + * @author Jaroslav Bachorik * - * @build ThreadExecutionSynchronizer * @run main/othervm Locks */ import java.lang.management.*; +import java.util.concurrent.Phaser; public class Locks { - private static Object objA = new Object(); - private static Object objB = new Object(); - private static Object objC = new Object(); - private static ThreadMXBean tm = ManagementFactory.getThreadMXBean(); + private static final Object objA = new Object(); + private static final Object objB = new Object(); + private static final Object objC = new Object(); + private static final ThreadMXBean tm = ManagementFactory.getThreadMXBean(); private static boolean testFailed = false; @@ -46,48 +47,62 @@ public class Locks { if (lock == null) return null; return lock.getClass().getName() + '@' + - Integer.toHexString(System.identityHashCode(lock)); + Integer.toHexString(System.identityHashCode(lock)); + } + + private static void assertNoLock(Thread t) { + long tid = t.getId(); + ThreadInfo info = tm.getThreadInfo(tid); + String result = info.getLockName(); + + if (result != null) { + throw new RuntimeException("Thread " + t.getName() + " is not supposed to hold any lock. " + + "Currently owning lock: " + result); + } } private static void checkBlockedObject(Thread t, Object lock, Thread owner, Thread.State expectedState) { - ThreadInfo info = tm.getThreadInfo(t.getId()); + long tid = t.getId(); + ThreadInfo info = tm.getThreadInfo(tid); String result = info.getLockName(); String expectedLock = (lock != null ? getLockName(lock) : null); String expectedOwner = (owner != null ? owner.getName() : null); if (lock != null) { - if (expectedState ==Thread.State.BLOCKED) { + if (expectedState == Thread.State.BLOCKED) { int retryCount=0; while(info.getThreadState() != Thread.State.BLOCKED) { if (retryCount++ > 500) { throw new RuntimeException("Thread " + t.getName() + - " is expected to block on " + expectedLock + - " but got " + result + - " Thread.State = " + info.getThreadState()); + " is expected to block on " + expectedLock + + " but got " + result + + " Thread.State = " + info.getThreadState()); } goSleep(100); + info = tm.getThreadInfo(tid); + result = info.getLockName(); } } if (expectedState == Thread.State.WAITING && - info.getThreadState() != Thread.State.WAITING) { + info.getThreadState() != Thread.State.WAITING) { throw new RuntimeException("Thread " + t.getName() + - " is expected to wait on " + expectedLock + - " but got " + result + - " Thread.State = " + info.getThreadState()); + " is expected to wait on " + expectedLock + + " but got " + result + + " Thread.State = " + info.getThreadState()); } } if ((result != null && !result.equals(expectedLock)) || - (result == null && expectedLock != null)) { + (result == null && expectedLock != null)) { throw new RuntimeException("Thread " + t.getName() + " is blocked on " + - expectedLock + " but got " + result); + expectedLock + " but got " + result); } result = info.getLockOwnerName(); if ((result != null && !result.equals(expectedOwner)) || - (result == null && expectedOwner != null)) { + (result == null && expectedOwner != null)) { throw new RuntimeException("Owner of " + lock + " should be " + - expectedOwner + " but got " + result); + expectedOwner + " but got " + result); } } @@ -100,53 +115,49 @@ public class Locks { } } - static ThreadExecutionSynchronizer thrsync = new ThreadExecutionSynchronizer(); - static ThreadExecutionSynchronizer thrsync1 = new ThreadExecutionSynchronizer(); + private static volatile int dummyCounter = 0; static class LockAThread extends Thread { - public LockAThread() { + private final Phaser p; + public LockAThread(Phaser p) { super("LockAThread"); + this.p = p; } public void run() { synchronized(objA) { - // stop here for LockBThread to hold objB - thrsync.waitForSignal(); - - System.out.println("LockAThread about to block on objB"); - synchronized(objB) {}; + // stop here for LockBThread to hold objB + System.out.println("LockAThread about to block on objB"); + p.arriveAndAwaitAdvance(); // Phase 1 (blocking) + synchronized(objB) { + dummyCounter++; + }; } + p.arriveAndAwaitAdvance(); // Phase 2 (blocking) System.out.println("LockAThread about to exit"); - // The state could be anything. The expected state value - // passed with this method is not verified. - checkBlockedObject(this, null, null, Thread.State.TERMINATED); + // Make sure the current thread is not holding any lock + assertNoLock(this); } } static class LockBThread extends Thread { - public LockBThread() { + private final Phaser p; + public LockBThread(Phaser p) { super("LockBThread"); + this.p = p; } public void run() { synchronized(objB) { - // signal waiting LockAThread. - thrsync.signal(); - - System.out.println("LockBThread about to block on objC"); - // Signal main thread about to block on objC - thrsync1.signal(); - synchronized(objC) {}; + System.out.println("LockBThread about to block on objC"); + p.arriveAndAwaitAdvance(); // Phase 1 (blocking) + // Signal main thread about to block on objC + synchronized(objC) { + dummyCounter++; + }; } + p.arriveAndAwaitAdvance(); // Phase 2 (blocking) System.out.println("LockBThread about to exit"); - // The state could be anything. The expected state value - // passed with this method is not verified. - checkBlockedObject(this, null, null, Thread.State.TERMINATED); - } - - public void aboutToLockC() { - // Stop here till LockBThread about to blocked - // for lock objC. - thrsync1.waitForSignal(); - goSleep(500); + // Make sure the current thread is not holding any lock + assertNoLock(this); } } @@ -154,32 +165,36 @@ public class Locks { private static Object ready = new Object(); private static CheckerThread checker; static class WaitingThread extends Thread { - public WaitingThread() { + private final Phaser p; + public WaitingThread(Phaser p) { super("WaitingThread"); + this.p = p; } public void run() { synchronized(objC) { - System.out.println("WaitingThread about to wait on objC"); - try { - // Signal checker thread, about to wait on objC. - thrsync.signal(); - objC.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - testFailed = true; - } + System.out.println("WaitingThread about to wait on objC"); + try { + // Signal checker thread, about to wait on objC. + p.arriveAndAwaitAdvance(); // Phase 1 (waiting) + objC.wait(); + } catch (InterruptedException e) { + e.printStackTrace(); + testFailed = true; + } - // block until CheckerThread finishes checking - System.out.println("WaitingThread about to block on ready"); - // signal checker thread that it is about acquire - // object ready. - thrsync.signal(); - synchronized(ready) {}; + // block until CheckerThread finishes checking + System.out.println("WaitingThread about to block on ready"); + // signal checker thread that it is about acquire + // object ready. + p.arriveAndAwaitAdvance(); // Phase 2 (waiting) + synchronized(ready) { + dummyCounter++; + }; } synchronized(objC) { try { // signal checker thread, about to wait on objC - thrsync.signal(); + p.arriveAndAwaitAdvance(); // Phase 3 (waiting) objC.wait(); } catch (InterruptedException e) { e.printStackTrace(); @@ -190,21 +205,23 @@ public class Locks { } } static class CheckerThread extends Thread { - public CheckerThread() { + private final Phaser p; + public CheckerThread(Phaser p) { super("CheckerThread"); + this.p = p; } private void waitForState(Thread.State state) { - thrsync.waitForSignal(); - while (waiter.getState() != state) { - goSleep(10); + p.arriveAndAwaitAdvance(); + while (!waiter.isInterrupted() && waiter.getState() != state) { + goSleep(10); } } public void run() { synchronized (ready) { // wait until WaitingThread about to wait for objC - waitForState(Thread.State.WAITING); + waitForState(Thread.State.WAITING); // Phase 1 (waiting) checkBlockedObject(waiter, objC, null, Thread.State.WAITING); synchronized (objC) { @@ -213,13 +230,13 @@ public class Locks { // wait for waiter thread to about to enter // synchronized object ready. - waitForState(Thread.State.BLOCKED); + waitForState(Thread.State.BLOCKED); // Phase 2 (waiting) checkBlockedObject(waiter, ready, this, Thread.State.BLOCKED); } // wait for signal from waiting thread that it is about // wait for objC. - waitForState(Thread.State.WAITING); + waitForState(Thread.State.WAITING); // Phase 3 (waiting) synchronized(objC) { checkBlockedObject(waiter, objC, Thread.currentThread(), Thread.State.WAITING); objC.notify(); @@ -235,24 +252,24 @@ public class Locks { LockAThread t1; LockBThread t2; + Phaser p = new Phaser(3); synchronized(objC) { - // The state could be anything. The expected state value - // passed with this method is not verified. - checkBlockedObject(mainThread, null, null, Thread.State.RUNNABLE); + // Make sure the main thread is not holding any lock + assertNoLock(mainThread); // Test deadlock case // t1 holds lockA and attempts to lock B // t2 holds lockB and attempts to lock C - t1 = new LockAThread(); + + t1 = new LockAThread(p); t1.start(); - t2 = new LockBThread(); + t2 = new LockBThread(p); t2.start(); - t2.aboutToLockC(); - - checkBlockedObject(t1, objB, t2, Thread.State.BLOCKED); + p.arriveAndAwaitAdvance(); // Phase 1 (blocking) checkBlockedObject(t2, objC, mainThread, Thread.State.BLOCKED); + checkBlockedObject(t1, objB, t2, Thread.State.BLOCKED); long[] expectedThreads = new long[3]; expectedThreads[0] = t1.getId(); // blocked on lockB @@ -260,13 +277,14 @@ public class Locks { expectedThreads[2] = mainThread.getId(); // owner of lockC findThreadsBlockedOn(objB, expectedThreads); } - goSleep(100); + p.arriveAndAwaitAdvance(); // Phase 2 (blocking) + p = new Phaser(2); // Test Object.wait() case - waiter = new WaitingThread(); + waiter = new WaitingThread(p); waiter.start(); - checker = new CheckerThread(); + checker = new CheckerThread(p); checker.start(); try { @@ -284,7 +302,7 @@ public class Locks { } private static ThreadInfo findOwnerInfo(ThreadInfo[] infos, String lock) - throws Exception { + throws Exception { ThreadInfo ownerInfo = null; for (int i = 0; i < infos.length; i++) { String blockedLock = infos[i].getLockName(); @@ -292,7 +310,7 @@ public class Locks { long threadId = infos[i].getLockOwnerId(); if (threadId == -1) { throw new RuntimeException("TEST FAILED: " + - lock + " expected to have owner"); + lock + " expected to have owner"); } for (int j = 0; j < infos.length; j++) { if (infos[j].getThreadId() == threadId) { @@ -305,7 +323,7 @@ public class Locks { return ownerInfo; } private static void findThreadsBlockedOn(Object o, long[] expectedThreads) - throws Exception { + throws Exception { String lock = getLockName(o); // Check with ThreadInfo with no stack trace (i.e. no safepoint) ThreadInfo[] infos = tm.getThreadInfo(tm.getAllThreadIds()); @@ -317,14 +335,14 @@ public class Locks { } private static void doCheck(ThreadInfo[] infos, String lock, long[] expectedThreads) - throws Exception { + throws Exception { ThreadInfo ownerInfo = null; // Find the thread who is blocking on lock for (int i = 0; i < infos.length; i++) { String blockedLock = infos[i].getLockName(); if (lock.equals(blockedLock)) { System.out.print(infos[i].getThreadName() + - " blocked on " + blockedLock); + " blocked on " + blockedLock); ownerInfo = infos[i]; } } @@ -336,7 +354,7 @@ public class Locks { ownerInfo = findOwnerInfo(infos, lock); threads[count++] = ownerInfo.getThreadId(); System.out.println(" Owner = " + ownerInfo.getThreadName() + - " id = " + ownerInfo.getThreadId()); + " id = " + ownerInfo.getThreadId()); lock = ownerInfo.getLockName(); System.out.print(ownerInfo.getThreadName() + " Id = " + ownerInfo.getThreadId() + @@ -346,13 +364,13 @@ public class Locks { if (count != expectedThreads.length) { throw new RuntimeException("TEST FAILED: " + - "Expected chain of threads not matched; current count =" + count); + "Expected chain of threads not matched; current count =" + count); } for (int i = 0; i < count; i++) { if (threads[i] != expectedThreads[i]) { System.out.println("TEST FAILED: " + - "Unexpected thread in the chain " + threads[i] + - " expected to be " + expectedThreads[i]); + "Unexpected thread in the chain " + threads[i] + + " expected to be " + expectedThreads[i]); } } } diff --git a/jdk/test/java/lang/management/ThreadMXBean/ThreadExecutionSynchronizer.java b/jdk/test/java/lang/management/ThreadMXBean/ThreadExecutionSynchronizer.java deleted file mode 100644 index 6cba7e73521..00000000000 --- a/jdk/test/java/lang/management/ThreadMXBean/ThreadExecutionSynchronizer.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * - * @summary This class is used to synchronize execution of two threads. - * @author Swamy Venkataramanappa - */ - -import java.util.concurrent.Semaphore; - -public class ThreadExecutionSynchronizer { - - private volatile boolean waiting; - private final Semaphore semaphore; - - public ThreadExecutionSynchronizer() { - semaphore = new Semaphore(1); - waiting = false; - } - - // Synchronizes two threads execution points. - // Basically any thread could get scheduled to run and - // it is not possible to know which thread reaches expected - // execution point. So whichever thread reaches a execution - // point first wait for the second thread. When the second thread - // reaches the expected execution point will wake up - // the thread which is waiting here. - void stopOrGo() { - semaphore.acquireUninterruptibly(); // Thread can get blocked. - if (!waiting) { - waiting = true; - // Wait for second thread to enter this method. - while(!semaphore.hasQueuedThreads()) { - try { - Thread.sleep(20); - } catch (InterruptedException xx) {} - } - semaphore.release(); - } else { - waiting = false; - semaphore.release(); - } - } - - // Wrapper function just for code readability. - void waitForSignal() { - stopOrGo(); - goSleep(50); - } - - void signal() { - stopOrGo(); - goSleep(50); - } - - private static void goSleep(long ms) { - try { - Thread.sleep(ms); - } catch (InterruptedException e) { - e.printStackTrace(); - System.out.println("Unexpected exception."); - } - } -} From 244ffdb7c24c6ab8cb9ace635af627e8542b853a Mon Sep 17 00:00:00 2001 From: Matherey Nunez Date: Wed, 29 Jan 2014 14:33:07 -0800 Subject: [PATCH 098/158] 8027175: Existing regression tests in tl/langtools and tl/jdk need to be updated for @bug keyword Reviewed-by: jjg, ksrini --- jdk/test/jdk/lambda/MethodReferenceTestCallerSensitive.java | 4 +++- jdk/test/tools/launcher/VersionCheck.java | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/jdk/test/jdk/lambda/MethodReferenceTestCallerSensitive.java b/jdk/test/jdk/lambda/MethodReferenceTestCallerSensitive.java index 805a6a203cb..86c22a10627 100644 --- a/jdk/test/jdk/lambda/MethodReferenceTestCallerSensitive.java +++ b/jdk/test/jdk/lambda/MethodReferenceTestCallerSensitive.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, 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 @@ -28,6 +28,8 @@ import java.util.function.Function; /** + * @test + * @bug 8020816 * @author Robert Field */ diff --git a/jdk/test/tools/launcher/VersionCheck.java b/jdk/test/tools/launcher/VersionCheck.java index f43c210a9bf..a31ba57a4a4 100644 --- a/jdk/test/tools/launcher/VersionCheck.java +++ b/jdk/test/tools/launcher/VersionCheck.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2014, 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,7 +23,7 @@ /** * @test - * @bug 6545058 6611182 + * @bug 6545058 6611182 8016209 * @summary validate and test -version, -fullversion, and internal, as well as * sanity checks if a tool can be launched. * @compile VersionCheck.java From ba68b878a0b7c78153cd203803a10c0fe8c8b2ba Mon Sep 17 00:00:00 2001 From: Eric Wang Date: Wed, 29 Jan 2014 22:18:46 -0800 Subject: [PATCH 099/158] 8031179: update RMI tests to declare othervm explicitly The /othervm declaration should be added to all the RMI tests and the RMI directories removed from the othervm.dirs property Reviewed-by: smarks --- jdk/test/TEST.ROOT | 2 +- jdk/test/java/rmi/MarshalledObject/compare/Compare.java | 2 +- jdk/test/java/rmi/MarshalledObject/compare/HashCode.java | 2 +- jdk/test/java/rmi/Naming/DefaultRegistryPort.java | 2 +- jdk/test/java/rmi/Naming/LookupIPv6.java | 9 ++++++--- jdk/test/java/rmi/Naming/LookupNameWithColon.java | 2 +- .../Naming/legalRegistryNames/LegalRegistryNames.java | 2 +- .../checkDefaultGroupName/CheckDefaultGroupName.java | 2 ++ .../UnicastRemoteObject/exportObject/GcDuringExport.java | 2 +- jdk/test/sun/rmi/rmic/RMIGenerator/RmicDefault.java | 2 +- 10 files changed, 16 insertions(+), 11 deletions(-) diff --git a/jdk/test/TEST.ROOT b/jdk/test/TEST.ROOT index 0aba9d3bc72..e6cb16998ed 100644 --- a/jdk/test/TEST.ROOT +++ b/jdk/test/TEST.ROOT @@ -5,7 +5,7 @@ keys=2d dnd i18n # Tests that must run in othervm mode -othervm.dirs=java/awt java/beans java/rmi javax/accessibility javax/imageio javax/sound javax/print javax/management com/sun/awt sun/awt sun/java2d sun/pisces sun/rmi +othervm.dirs=java/awt java/beans javax/accessibility javax/imageio javax/sound javax/print javax/management com/sun/awt sun/awt sun/java2d sun/pisces # Tests that cannot run concurrently exclusiveAccess.dirs=java/rmi/Naming java/util/Currency java/util/prefs sun/management/jmxremote sun/tools/jstatd sun/security/mscapi diff --git a/jdk/test/java/rmi/MarshalledObject/compare/Compare.java b/jdk/test/java/rmi/MarshalledObject/compare/Compare.java index 20322646920..94eff595092 100644 --- a/jdk/test/java/rmi/MarshalledObject/compare/Compare.java +++ b/jdk/test/java/rmi/MarshalledObject/compare/Compare.java @@ -29,7 +29,7 @@ * not involved in location should be compared. * @author Ken Arnold * - * @run main Compare 11 annotatedRef + * @run main/othervm Compare 11 annotatedRef */ import java.rmi.MarshalledObject; diff --git a/jdk/test/java/rmi/MarshalledObject/compare/HashCode.java b/jdk/test/java/rmi/MarshalledObject/compare/HashCode.java index 768e418ae5b..86fc5ddfe23 100644 --- a/jdk/test/java/rmi/MarshalledObject/compare/HashCode.java +++ b/jdk/test/java/rmi/MarshalledObject/compare/HashCode.java @@ -27,7 +27,7 @@ * @summary MarshalledObject with null throws NullPointerException * @author Ken Arnold * - * @run main HashCode 11 annotatedRef + * @run main/othervm HashCode 11 annotatedRef */ import java.rmi.MarshalledObject; diff --git a/jdk/test/java/rmi/Naming/DefaultRegistryPort.java b/jdk/test/java/rmi/Naming/DefaultRegistryPort.java index a4c49792536..be1cba70f15 100644 --- a/jdk/test/java/rmi/Naming/DefaultRegistryPort.java +++ b/jdk/test/java/rmi/Naming/DefaultRegistryPort.java @@ -28,7 +28,7 @@ * @author Dana Burns * @library ../testlibrary * @build TestLibrary - * @run main DefaultRegistryPort + * @run main/othervm DefaultRegistryPort */ /* diff --git a/jdk/test/java/rmi/Naming/LookupIPv6.java b/jdk/test/java/rmi/Naming/LookupIPv6.java index da6c62cbc83..453ac166a3b 100644 --- a/jdk/test/java/rmi/Naming/LookupIPv6.java +++ b/jdk/test/java/rmi/Naming/LookupIPv6.java @@ -25,7 +25,8 @@ * @summary Ensure that java.rmi.Naming.lookup can handle URLs containing * IPv6 addresses. * @bug 4402708 - * + * @library ../testlibrary + * @build TestLibrary * @run main/othervm -Djava.net.preferIPv6Addresses=true LookupIPv6 */ @@ -62,17 +63,19 @@ public class LookupIPv6 { * an Inet6Address since this test is run with * -Djava.net.preferIPv6Addresses=true. */ + int port = TestLibrary.getUnusedRandomPort(); InetAddress localAddr = InetAddress.getAllByName(null)[0]; if (localAddr instanceof Inet6Address) { System.out.println("IPv6 detected"); Registry reg; try { - reg = LocateRegistry.createRegistry(Registry.REGISTRY_PORT); + reg = LocateRegistry.createRegistry(port); } catch (Exception ex) { reg = LocateRegistry.getRegistry(); } reg.rebind("foo", reg); - Naming.lookup("rmi://[" + localAddr.getHostAddress() + "]/foo"); + Naming.lookup(String.format("rmi://[%s]:%d/foo", + localAddr.getHostAddress(), port)); } } } diff --git a/jdk/test/java/rmi/Naming/LookupNameWithColon.java b/jdk/test/java/rmi/Naming/LookupNameWithColon.java index e3865fd1239..4250b6b37c9 100644 --- a/jdk/test/java/rmi/Naming/LookupNameWithColon.java +++ b/jdk/test/java/rmi/Naming/LookupNameWithColon.java @@ -28,7 +28,7 @@ * * @library ../testlibrary * @build TestLibrary - * @run main LookupNameWithColon + * @run main/othervm LookupNameWithColon */ import java.rmi.Naming; diff --git a/jdk/test/java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java b/jdk/test/java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java index 725d9ca6c7a..418c3726c2d 100644 --- a/jdk/test/java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java +++ b/jdk/test/java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java @@ -28,7 +28,7 @@ * @author Dana Burns * @library ../../testlibrary * @build TestLibrary Legal LegalRegistryNames_Stub - * @run main LegalRegistryNames + * @run main/othervm LegalRegistryNames */ import java.net.InetAddress; diff --git a/jdk/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java b/jdk/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java index f37cbaeb79f..fac64b5691a 100644 --- a/jdk/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java +++ b/jdk/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java @@ -25,6 +25,8 @@ * @test * @bug 4252236 * @summary ActivationGroupDesc should not do early binding of default classname + * This test doesn't need to run with othervm option as all it does is + * create an ActivationGroupDesc instance, which has no side effects * @author Laird Dornin * * @library ../../../testlibrary diff --git a/jdk/test/java/rmi/server/UnicastRemoteObject/exportObject/GcDuringExport.java b/jdk/test/java/rmi/server/UnicastRemoteObject/exportObject/GcDuringExport.java index def2806964d..eeb96a14ace 100644 --- a/jdk/test/java/rmi/server/UnicastRemoteObject/exportObject/GcDuringExport.java +++ b/jdk/test/java/rmi/server/UnicastRemoteObject/exportObject/GcDuringExport.java @@ -30,7 +30,7 @@ * @bug 6597112 * @summary GC'ing objects whilst being exported to RMI should not cause exceptions * @author Neil Richards , - * @run main GcDuringExport + * @run main/othervm GcDuringExport */ import java.rmi.Remote; diff --git a/jdk/test/sun/rmi/rmic/RMIGenerator/RmicDefault.java b/jdk/test/sun/rmi/rmic/RMIGenerator/RmicDefault.java index 5f4587ecdfb..ff203731664 100644 --- a/jdk/test/sun/rmi/rmic/RMIGenerator/RmicDefault.java +++ b/jdk/test/sun/rmi/rmic/RMIGenerator/RmicDefault.java @@ -28,7 +28,7 @@ * @library ../../../../java/rmi/testlibrary * * @build StreamPipe - * @run main RmicDefault + * @run main/othervm RmicDefault */ /* From 7e532727a088302a85acec1cca2813fd9323d136 Mon Sep 17 00:00:00 2001 From: Aleksei Efimov Date: Thu, 30 Jan 2014 12:22:24 +0400 Subject: [PATCH 100/158] 8030822: (tz) Support tzdata2013i Reviewed-by: coffeys, mfang, okutsu --- jdk/make/data/tzdata/VERSION | 2 +- jdk/make/data/tzdata/africa | 5 +- jdk/make/data/tzdata/asia | 30 +- jdk/make/data/tzdata/northamerica | 8 +- .../sun/util/resources/TimeZoneNames.java | 4 +- .../util/resources/de/TimeZoneNames_de.java | 4 +- .../util/resources/es/TimeZoneNames_es.java | 4 +- .../util/resources/fr/TimeZoneNames_fr.java | 4 +- .../util/resources/it/TimeZoneNames_it.java | 4 +- .../util/resources/ja/TimeZoneNames_ja.java | 4 +- .../util/resources/ko/TimeZoneNames_ko.java | 4 +- .../resources/pt/TimeZoneNames_pt_BR.java | 4 +- .../util/resources/sv/TimeZoneNames_sv.java | 4 +- .../resources/zh/TimeZoneNames_zh_CN.java | 4 +- .../resources/zh/TimeZoneNames_zh_TW.java | 4 +- jdk/test/sun/util/calendar/zi/tzdata/VERSION | 2 +- jdk/test/sun/util/calendar/zi/tzdata/africa | 5 +- jdk/test/sun/util/calendar/zi/tzdata/asia | 30 +- .../sun/util/calendar/zi/tzdata/northamerica | 8 +- .../TimeZoneNames/TimeZoneNames.properties | 651 ------ .../TimeZoneNames/TimeZoneNamesTest.java | 186 -- .../TimeZoneNames/TimeZoneNames_de.properties | 651 ------ .../TimeZoneNames_de_short.properties | 1743 ----------------- .../TimeZoneNames/TimeZoneNames_es.properties | 651 ------ .../TimeZoneNames_es_short.properties | 1743 ----------------- .../TimeZoneNames/TimeZoneNames_fr.properties | 651 ------ .../TimeZoneNames_fr_short.properties | 1743 ----------------- .../TimeZoneNames/TimeZoneNames_it.properties | 651 ------ .../TimeZoneNames_it_short.properties | 1743 ----------------- .../TimeZoneNames/TimeZoneNames_ja.properties | 651 ------ .../TimeZoneNames_ja_short.properties | 1743 ----------------- .../TimeZoneNames/TimeZoneNames_ko.properties | 651 ------ .../TimeZoneNames_ko_short.properties | 1743 ----------------- .../TimeZoneNames_pt_BR.properties | 651 ------ .../TimeZoneNames_pt_BR_short.properties | 1743 ----------------- .../TimeZoneNames_short.properties | 1743 ----------------- .../TimeZoneNames/TimeZoneNames_sv.properties | 651 ------ .../TimeZoneNames_sv_short.properties | 1743 ----------------- .../TimeZoneNames_zh_CN.properties | 651 ------ .../TimeZoneNames_zh_CN_short.properties | 1743 ----------------- .../TimeZoneNames_zh_TW.properties | 651 ------ .../TimeZoneNames_zh_TW_short.properties | 1743 ----------------- 42 files changed, 84 insertions(+), 26570 deletions(-) delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNamesTest.java delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_de.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_de_short.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_es.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_es_short.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_fr.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_fr_short.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_it.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_it_short.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ja.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ja_short.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ko.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ko_short.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_pt_BR.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_pt_BR_short.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_short.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_sv.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_sv_short.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_CN.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_CN_short.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_TW.properties delete mode 100644 jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_TW_short.properties diff --git a/jdk/make/data/tzdata/VERSION b/jdk/make/data/tzdata/VERSION index 1d7698924aa..2f162e0638a 100644 --- a/jdk/make/data/tzdata/VERSION +++ b/jdk/make/data/tzdata/VERSION @@ -21,4 +21,4 @@ # or visit www.oracle.com if you need additional information or have any # questions. # -tzdata2013h +tzdata2013i diff --git a/jdk/make/data/tzdata/africa b/jdk/make/data/tzdata/africa index 0eed8b1a26a..82d14a4a14d 100644 --- a/jdk/make/data/tzdata/africa +++ b/jdk/make/data/tzdata/africa @@ -500,14 +500,13 @@ Rule Libya 1997 only - Apr 4 0:00 1:00 S Rule Libya 1997 only - Oct 4 0:00 0 - Rule Libya 2013 only - Mar lastFri 1:00 1:00 S Rule Libya 2013 only - Oct lastFri 2:00 0 - - -# The 1996 and 1997 entries are from Shanks & Pottenger; -# the IATA SSIM data contain some obvious errors. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Tripoli 0:52:44 - LMT 1920 1:00 Libya CE%sT 1959 2:00 - EET 1982 1:00 Libya CE%sT 1990 May 4 +# The 1996 and 1997 entries are from Shanks & Pottenger; +# the IATA SSIM data contain some obvious errors. 2:00 - EET 1996 Sep 30 1:00 Libya CE%sT 1997 Oct 4 2:00 - EET 2012 Nov 10 2:00 diff --git a/jdk/make/data/tzdata/asia b/jdk/make/data/tzdata/asia index fd278e5c8a8..1a8f83d3a64 100644 --- a/jdk/make/data/tzdata/asia +++ b/jdk/make/data/tzdata/asia @@ -1403,12 +1403,22 @@ Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u # switch back to standard time this winter, so the will stay on DST # until about the same time next year (at least). # http://www.petra.gov.jo/Public_News/Nws_NewsDetails.aspx?NewsID=88950 -# -# From Paul Eggert (2013-09-21): -# It's looking like this change will be permanent; see -# Petra News Agency, Cancelling winter saved Jordan $7 million (2013-02-20) -# . -# So move Jordan to UTC+3 as of the abovementioned date. + +# From Steffen Thorsen (2013-12-11): +# Jordan Times and other sources say that Jordan is going back to +# UTC+2 on 2013-12-19 at midnight: +# http://jordantimes.com/govt-decides-to-switch-back-to-wintertime +# Official, in Arabic: +# http://www.petra.gov.jo/public_news/Nws_NewsDetails.aspx?Menu_ID=&Site_Id=2&lang=1&NewsID=133230&CatID=14 +# ... Our background/permalink about it +# http://www.timeanddate.com/news/time/jordan-reverses-dst-decision.html +# ... +# http://www.petra.gov.jo/Public_News/Nws_NewsDetails.aspx?lang=2&site_id=1&NewsID=133313&Type=P +# ... says midnight for the coming one and 1:00 for the ones in the future +# (and they will use DST again next year, using the normal schedule). + +# From Paul Eggert (2013-12-11): +# As Steffen suggested, consider the past 21-month experiment to be DST. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Jordan 1973 only - Jun 6 0:00 1:00 S @@ -1438,11 +1448,13 @@ Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S Rule Jordan 2003 only - Oct 24 0:00s 0 - Rule Jordan 2004 only - Oct 15 0:00s 0 - Rule Jordan 2005 only - Sep lastFri 0:00s 0 - -Rule Jordan 2006 2012 - Oct lastFri 0:00s 0 - +Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 - +Rule Jordan 2013 only - Dec 20 0:00 0 - +Rule Jordan 2014 max - Mar lastThu 24:00 1:00 S +Rule Jordan 2014 max - Oct lastFri 0:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Amman 2:23:44 - LMT 1931 - 2:00 Jordan EE%sT 2012 Oct 26 0:00s - 3:00 - AST + 2:00 Jordan EE%sT # Kazakhstan diff --git a/jdk/make/data/tzdata/northamerica b/jdk/make/data/tzdata/northamerica index b8caf6d019b..9e551bb1c46 100644 --- a/jdk/make/data/tzdata/northamerica +++ b/jdk/make/data/tzdata/northamerica @@ -2688,6 +2688,11 @@ Zone America/Costa_Rica -5:36:13 - LMT 1890 # San Jose # to DST--and one more hour on 1999-04-04--when the announcers will have # returned to Baltimore, which switches on that date.) +# From Steffen Thorsen (2013-11-11): +# DST start in Cuba in 2004 ... does not follow the same rules as the +# years before. The correct date should be Sunday 2004-03-28 00:00 ... +# https://web.archive.org/web/20040402060750/http://www.granma.cu/espanol/2004/marzo/sab27/reloj.html + # From Evert van der Veer via Steffen Thorsen (2004-10-28): # Cuba is not going back to standard time this year. # From Paul Eggert (2006-03-22): @@ -2877,7 +2882,8 @@ Rule Cuba 1996 only - Oct 6 0:00s 0 S Rule Cuba 1997 only - Oct 12 0:00s 0 S Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S -Rule Cuba 2000 2004 - Apr Sun>=1 0:00s 1:00 D +Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D +Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D diff --git a/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java b/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java index f275a716b79..2aaa1e76dc4 100644 --- a/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java +++ b/jdk/src/share/classes/sun/util/resources/TimeZoneNames.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2014, 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 @@ -578,7 +578,7 @@ public final class TimeZoneNames extends TimeZoneNamesBundle { {"Asia/Almaty", new String[] {"Alma-Ata Time", "ALMT", "Alma-Ata Summer Time", "ALMST", "Alma-Ata Time", "ALMT"}}, - {"Asia/Amman", ARAST}, + {"Asia/Amman", EET}, {"Asia/Anadyr", new String[] {"Anadyr Time", "ANAT", "Anadyr Summer Time", "ANAST", "Anadyr Time", "ANAT"}}, diff --git a/jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java b/jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java index ef7dec8570f..4d25bce3586 100644 --- a/jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java +++ b/jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -578,7 +578,7 @@ public final class TimeZoneNames_de extends TimeZoneNamesBundle { {"Asia/Almaty", new String[] {"Alma Ata Zeit", "ALMT", "Alma-Ata Sommerzeit", "ALMST", "Alma Ata Zeit", "ALMT"}}, - {"Asia/Amman", ARAST}, + {"Asia/Amman", EET}, {"Asia/Anadyr", new String[] {"Anadyr Zeit", "ANAT", "Anadyr Sommerzeit", "ANAST", "Anadyr Zeit", "ANAT"}}, diff --git a/jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java b/jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java index aa1a8903817..07d77325a47 100644 --- a/jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java +++ b/jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -578,7 +578,7 @@ public final class TimeZoneNames_es extends TimeZoneNamesBundle { {"Asia/Almaty", new String[] {"Hora de Alma-Ata", "ALMT", "Hora de verano de Alma-Ata", "ALMST", "Hora de Alma-Ata", "ALMT"}}, - {"Asia/Amman", ARAST}, + {"Asia/Amman", EET}, {"Asia/Anadyr", new String[] {"Hora de Anadyr", "ANAT", "Hora de verano de Anadyr", "ANAST", "Hora de Anadyr", "ANAT"}}, diff --git a/jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java b/jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java index a28983b85db..d15b9056057 100644 --- a/jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java +++ b/jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -578,7 +578,7 @@ public final class TimeZoneNames_fr extends TimeZoneNamesBundle { {"Asia/Almaty", new String[] {"Heure d'Alma-Ata", "ALMT", "Heure d'\u00e9t\u00e9 d'Alma-Ata", "ALMST", "Heure d'Alma-Ata", "ALMT"}}, - {"Asia/Amman", ARAST}, + {"Asia/Amman", EET}, {"Asia/Anadyr", new String[] {"Heure d'Anadyr", "ANAT", "Heure d'\u00e9t\u00e9 d'Anadyr", "ANAST", "Heure d'Anadyr", "ANAT"}}, diff --git a/jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java b/jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java index 4b2209d8e27..a07be9af4a6 100644 --- a/jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java +++ b/jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -578,7 +578,7 @@ public final class TimeZoneNames_it extends TimeZoneNamesBundle { {"Asia/Almaty", new String[] {"Ora di Alma-Ata", "ALMT", "Ora estiva di Alma-Ata", "ALMST", "Ora di Alma-Ata", "ALMT"}}, - {"Asia/Amman", ARAST}, + {"Asia/Amman", EET}, {"Asia/Anadyr", new String[] {"Ora di Anadyr", "ANAT", "Ora estiva di Anadyr", "ANAST", "Ora di Anadyr", "ANAT"}}, diff --git a/jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java b/jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java index 4b655c0b0d8..5a0f5e7012a 100644 --- a/jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java +++ b/jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -578,7 +578,7 @@ public final class TimeZoneNames_ja extends TimeZoneNamesBundle { {"Asia/Almaty", new String[] {"\u30a2\u30eb\u30de\u30a2\u30bf\u6642\u9593", "ALMT", "\u30a2\u30eb\u30de\u30a2\u30bf\u590f\u6642\u9593", "ALMST", "\u30A2\u30EB\u30DE\u30A2\u30BF\u6642\u9593", "ALMT"}}, - {"Asia/Amman", ARAST}, + {"Asia/Amman", EET}, {"Asia/Anadyr", new String[] {"\u30a2\u30ca\u30c9\u30a5\u30a4\u30ea\u6642\u9593", "ANAT", "\u30a2\u30ca\u30c9\u30a5\u30a4\u30ea\u590f\u6642\u9593", "ANAST", "\u30A2\u30CA\u30C7\u30A3\u30EA\u6642\u9593", "ANAT"}}, diff --git a/jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java b/jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java index b32bf1334ca..4d9f395fd55 100644 --- a/jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java +++ b/jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -578,7 +578,7 @@ public final class TimeZoneNames_ko extends TimeZoneNamesBundle { {"Asia/Almaty", new String[] {"\uc54c\ub9c8\uc544\ud0c0 \uc2dc\uac04", "ALMT", "\uc54c\ub9c8\uc544\ud0c0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ALMST", "\uC54C\uB9C8\uC544\uD0C0 \uD45C\uC900\uC2DC", "ALMT"}}, - {"Asia/Amman", ARAST}, + {"Asia/Amman", EET}, {"Asia/Anadyr", new String[] {"\uc544\ub098\ub514\ub974 \uc2dc\uac04", "ANAT", "\uc544\ub098\ub514\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ANAST", "\uC544\uB098\uB514\uB9AC \uD45C\uC900\uC2DC", "ANAT"}}, diff --git a/jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java b/jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java index 265fba0b813..07b13ae48ec 100644 --- a/jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java +++ b/jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -578,7 +578,7 @@ public final class TimeZoneNames_pt_BR extends TimeZoneNamesBundle { {"Asia/Almaty", new String[] {"Fuso hor\u00e1rio de Alma-Ata", "ALMT", "Fuso hor\u00e1rio de ver\u00e3o de Alma-Ata", "ALMST", "Hor\u00E1rio de Alma-Ata", "ALMT"}}, - {"Asia/Amman", ARAST}, + {"Asia/Amman", EET}, {"Asia/Anadyr", new String[] {"Fuso hor\u00e1rio de Anadyr", "ANAT", "Fuso hor\u00e1rio de ver\u00e3o de Anadyr", "ANAST", "Hor\u00E1rio de Anadyr", "ANAT"}}, diff --git a/jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java b/jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java index c0ec6e9e1c7..5dfb716c627 100644 --- a/jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java +++ b/jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -578,7 +578,7 @@ public final class TimeZoneNames_sv extends TimeZoneNamesBundle { {"Asia/Almaty", new String[] {"Alma-Ata, normaltid", "ALMT", "Alma-Ata, sommartid", "ALMST", "Alma-Ata-tid", "ALMT"}}, - {"Asia/Amman", ARAST}, + {"Asia/Amman", EET}, {"Asia/Anadyr", new String[] {"Anadyr, normaltid", "ANAT", "Anadyr, sommartid", "ANAST", "Anadyr-tid", "ANAT"}}, diff --git a/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java b/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java index 7f79e9612bd..62a946ba437 100644 --- a/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java +++ b/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -578,7 +578,7 @@ public final class TimeZoneNames_zh_CN extends TimeZoneNamesBundle { {"Asia/Almaty", new String[] {"Alma-Ata \u65f6\u95f4", "ALMT", "Alma-Ata \u590f\u4ee4\u65f6", "ALMST", "Alma-Ata \u65F6\u95F4", "ALMT"}}, - {"Asia/Amman", ARAST}, + {"Asia/Amman", EET}, {"Asia/Anadyr", new String[] {"\u963f\u90a3\u5e95\u6cb3\u65f6\u95f4", "ANAT", "\u963f\u90a3\u5e95\u6cb3\u590f\u4ee4\u65f6", "ANAST", "\u963F\u90A3\u5E95\u6CB3\u65F6\u95F4", "ANAT"}}, diff --git a/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java b/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java index 8cccc2f01ba..f91da7afb3d 100644 --- a/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java +++ b/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -578,7 +578,7 @@ public final class TimeZoneNames_zh_TW extends TimeZoneNamesBundle { {"Asia/Almaty", new String[] {"Alma-Ata \u6642\u9593", "ALMT", "Alma-Ata \u590f\u4ee4\u6642\u9593", "ALMST", "\u963F\u62C9\u6728\u5716\u6642\u9593", "ALMT"}}, - {"Asia/Amman", ARAST}, + {"Asia/Amman", EET}, {"Asia/Anadyr", new String[] {"\u963f\u90a3\u5e95\u6cb3\u6642\u9593", "ANAT", "\u963f\u90a3\u5e95\u6cb3\u590f\u4ee4\u6642\u9593", "ANAST", "\u963F\u90A3\u5E95\u6CB3\u6642\u9593", "ANAT"}}, diff --git a/jdk/test/sun/util/calendar/zi/tzdata/VERSION b/jdk/test/sun/util/calendar/zi/tzdata/VERSION index 1d7698924aa..2f162e0638a 100644 --- a/jdk/test/sun/util/calendar/zi/tzdata/VERSION +++ b/jdk/test/sun/util/calendar/zi/tzdata/VERSION @@ -21,4 +21,4 @@ # or visit www.oracle.com if you need additional information or have any # questions. # -tzdata2013h +tzdata2013i diff --git a/jdk/test/sun/util/calendar/zi/tzdata/africa b/jdk/test/sun/util/calendar/zi/tzdata/africa index 0eed8b1a26a..82d14a4a14d 100644 --- a/jdk/test/sun/util/calendar/zi/tzdata/africa +++ b/jdk/test/sun/util/calendar/zi/tzdata/africa @@ -500,14 +500,13 @@ Rule Libya 1997 only - Apr 4 0:00 1:00 S Rule Libya 1997 only - Oct 4 0:00 0 - Rule Libya 2013 only - Mar lastFri 1:00 1:00 S Rule Libya 2013 only - Oct lastFri 2:00 0 - - -# The 1996 and 1997 entries are from Shanks & Pottenger; -# the IATA SSIM data contain some obvious errors. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Tripoli 0:52:44 - LMT 1920 1:00 Libya CE%sT 1959 2:00 - EET 1982 1:00 Libya CE%sT 1990 May 4 +# The 1996 and 1997 entries are from Shanks & Pottenger; +# the IATA SSIM data contain some obvious errors. 2:00 - EET 1996 Sep 30 1:00 Libya CE%sT 1997 Oct 4 2:00 - EET 2012 Nov 10 2:00 diff --git a/jdk/test/sun/util/calendar/zi/tzdata/asia b/jdk/test/sun/util/calendar/zi/tzdata/asia index fd278e5c8a8..1a8f83d3a64 100644 --- a/jdk/test/sun/util/calendar/zi/tzdata/asia +++ b/jdk/test/sun/util/calendar/zi/tzdata/asia @@ -1403,12 +1403,22 @@ Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u # switch back to standard time this winter, so the will stay on DST # until about the same time next year (at least). # http://www.petra.gov.jo/Public_News/Nws_NewsDetails.aspx?NewsID=88950 -# -# From Paul Eggert (2013-09-21): -# It's looking like this change will be permanent; see -# Petra News Agency, Cancelling winter saved Jordan $7 million (2013-02-20) -# . -# So move Jordan to UTC+3 as of the abovementioned date. + +# From Steffen Thorsen (2013-12-11): +# Jordan Times and other sources say that Jordan is going back to +# UTC+2 on 2013-12-19 at midnight: +# http://jordantimes.com/govt-decides-to-switch-back-to-wintertime +# Official, in Arabic: +# http://www.petra.gov.jo/public_news/Nws_NewsDetails.aspx?Menu_ID=&Site_Id=2&lang=1&NewsID=133230&CatID=14 +# ... Our background/permalink about it +# http://www.timeanddate.com/news/time/jordan-reverses-dst-decision.html +# ... +# http://www.petra.gov.jo/Public_News/Nws_NewsDetails.aspx?lang=2&site_id=1&NewsID=133313&Type=P +# ... says midnight for the coming one and 1:00 for the ones in the future +# (and they will use DST again next year, using the normal schedule). + +# From Paul Eggert (2013-12-11): +# As Steffen suggested, consider the past 21-month experiment to be DST. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Jordan 1973 only - Jun 6 0:00 1:00 S @@ -1438,11 +1448,13 @@ Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S Rule Jordan 2003 only - Oct 24 0:00s 0 - Rule Jordan 2004 only - Oct 15 0:00s 0 - Rule Jordan 2005 only - Sep lastFri 0:00s 0 - -Rule Jordan 2006 2012 - Oct lastFri 0:00s 0 - +Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 - +Rule Jordan 2013 only - Dec 20 0:00 0 - +Rule Jordan 2014 max - Mar lastThu 24:00 1:00 S +Rule Jordan 2014 max - Oct lastFri 0:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Amman 2:23:44 - LMT 1931 - 2:00 Jordan EE%sT 2012 Oct 26 0:00s - 3:00 - AST + 2:00 Jordan EE%sT # Kazakhstan diff --git a/jdk/test/sun/util/calendar/zi/tzdata/northamerica b/jdk/test/sun/util/calendar/zi/tzdata/northamerica index b8caf6d019b..9e551bb1c46 100644 --- a/jdk/test/sun/util/calendar/zi/tzdata/northamerica +++ b/jdk/test/sun/util/calendar/zi/tzdata/northamerica @@ -2688,6 +2688,11 @@ Zone America/Costa_Rica -5:36:13 - LMT 1890 # San Jose # to DST--and one more hour on 1999-04-04--when the announcers will have # returned to Baltimore, which switches on that date.) +# From Steffen Thorsen (2013-11-11): +# DST start in Cuba in 2004 ... does not follow the same rules as the +# years before. The correct date should be Sunday 2004-03-28 00:00 ... +# https://web.archive.org/web/20040402060750/http://www.granma.cu/espanol/2004/marzo/sab27/reloj.html + # From Evert van der Veer via Steffen Thorsen (2004-10-28): # Cuba is not going back to standard time this year. # From Paul Eggert (2006-03-22): @@ -2877,7 +2882,8 @@ Rule Cuba 1996 only - Oct 6 0:00s 0 S Rule Cuba 1997 only - Oct 12 0:00s 0 S Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S -Rule Cuba 2000 2004 - Apr Sun>=1 0:00s 1:00 D +Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D +Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames.properties deleted file mode 100644 index 594231f2ef3..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames.properties +++ /dev/null @@ -1,651 +0,0 @@ -ACT.daylight.long=Central Summer Time (Northern Territory) -ACT.generic.long=Central Time (Northern Territory) -ACT.standard.long=Central Standard Time (Northern Territory) -AET.daylight.long=Eastern Summer Time (New South Wales) -AET.generic.long=Eastern Time (New South Wales) -AET.standard.long=Eastern Standard Time (New South Wales) -AGT.generic.long=Argentine Time -ART.generic.long=Eastern European Time -AST.generic.long=Alaska Time -Africa/Abidjan.generic.long=Greenwich Mean Time -Africa/Accra.generic.long=Ghana Mean Time -Africa/Addis_Ababa.generic.long=Eastern Africa Time -Africa/Algiers.generic.long=Central European Time -Africa/Asmara.generic.long=Eastern Africa Time -Africa/Asmera.generic.long=Eastern Africa Time -Africa/Bamako.generic.long=Greenwich Mean Time -Africa/Bangui.generic.long=Western African Time -Africa/Banjul.generic.long=Greenwich Mean Time -Africa/Bissau.generic.long=Greenwich Mean Time -Africa/Blantyre.generic.long=Central Africa Time -Africa/Brazzaville.generic.long=Western African Time -Africa/Bujumbura.generic.long=Central Africa Time -Africa/Cairo.generic.long=Eastern European Time -Africa/Casablanca.generic.long=Western European Time -Africa/Ceuta.generic.long=Central European Time -Africa/Conakry.generic.long=Greenwich Mean Time -Africa/Dakar.generic.long=Greenwich Mean Time -Africa/Dar_es_Salaam.generic.long=Eastern Africa Time -Africa/Djibouti.generic.long=Eastern Africa Time -Africa/Douala.generic.long=Western African Time -Africa/El_Aaiun.generic.long=Western European Time -Africa/Freetown.generic.long=Sierra Leone Time -Africa/Gaborone.generic.long=Central Africa Time -Africa/Harare.generic.long=Central Africa Time -Africa/Johannesburg.generic.long=South Africa Time -Africa/Juba.generic.long=Eastern Africa Time -Africa/Kampala.generic.long=Eastern Africa Time -Africa/Khartoum.generic.long=Eastern Africa Time -Africa/Kigali.generic.long=Central Africa Time -Africa/Kinshasa.generic.long=Western African Time -Africa/Lagos.generic.long=Western African Time -Africa/Libreville.generic.long=Western African Time -Africa/Lome.generic.long=Greenwich Mean Time -Africa/Luanda.generic.long=Western African Time -Africa/Lubumbashi.generic.long=Central Africa Time -Africa/Lusaka.generic.long=Central Africa Time -Africa/Malabo.generic.long=Western African Time -Africa/Maputo.generic.long=Central Africa Time -Africa/Maseru.generic.long=South Africa Time -Africa/Mbabane.generic.long=South Africa Time -Africa/Mogadishu.generic.long=Eastern Africa Time -Africa/Monrovia.generic.long=Greenwich Mean Time -Africa/Nairobi.generic.long=Eastern Africa Time -Africa/Ndjamena.generic.long=Western African Time -Africa/Niamey.generic.long=Western African Time -Africa/Nouakchott.generic.long=Greenwich Mean Time -Africa/Ouagadougou.generic.long=Greenwich Mean Time -Africa/Porto-Novo.generic.long=Western African Time -Africa/Sao_Tome.generic.long=Greenwich Mean Time -Africa/Timbuktu.generic.long=Greenwich Mean Time -Africa/Tripoli.generic.long=Eastern European Time -Africa/Tunis.generic.long=Central European Time -Africa/Windhoek.generic.long=Western African Time -America/Adak.generic.long=Hawaii-Aleutian Time -America/Anchorage.generic.long=Alaska Time -America/Anguilla.generic.long=Atlantic Time -America/Antigua.generic.long=Atlantic Time -America/Araguaina.generic.long=Brasilia Time -America/Argentina/Buenos_Aires.generic.long=Argentine Time -America/Argentina/Catamarca.generic.long=Argentine Time -America/Argentina/ComodRivadavia.generic.long=Argentine Time -America/Argentina/Cordoba.generic.long=Argentine Time -America/Argentina/Jujuy.generic.long=Argentine Time -America/Argentina/La_Rioja.generic.long=Argentine Time -America/Argentina/Mendoza.generic.long=Argentine Time -America/Argentina/Rio_Gallegos.generic.long=Argentine Time -America/Argentina/Salta.generic.long=Argentine Time -America/Argentina/San_Juan.generic.long=Argentine Time -America/Argentina/San_Luis.generic.long=Argentine Time -America/Argentina/Tucuman.generic.long=Argentine Time -America/Argentina/Ushuaia.generic.long=Argentine Time -America/Aruba.generic.long=Atlantic Time -America/Asuncion.generic.long=Paraguay Time -America/Atikokan.generic.long=Eastern Time -America/Atka.generic.long=Hawaii-Aleutian Time -America/Bahia.generic.long=Brasilia Time -America/Bahia_Banderas.generic.long=Central Time -America/Barbados.generic.long=Atlantic Time -America/Belem.generic.long=Brasilia Time -America/Belize.generic.long=Central Time -America/Blanc-Sablon.generic.long=Atlantic Time -America/Boa_Vista.generic.long=Amazon Time -America/Bogota.generic.long=Colombia Time -America/Boise.generic.long=Mountain Time -America/Buenos_Aires.generic.long=Argentine Time -America/Cambridge_Bay.generic.long=Mountain Time -America/Campo_Grande.generic.long=Amazon Time -America/Cancun.generic.long=Central Time -America/Caracas.generic.long=Venezuela Time -America/Catamarca.generic.long=Argentine Time -America/Cayenne.generic.long=French Guiana Time -America/Cayman.generic.long=Eastern Time -America/Chicago.generic.long=Central Time -America/Chihuahua.generic.long=Mountain Time -America/Coral_Harbour.generic.long=Eastern Time -America/Cordoba.generic.long=Argentine Time -America/Costa_Rica.generic.long=Central Time -America/Creston.generic.long=Mountain Time -America/Cuiaba.generic.long=Amazon Time -America/Curacao.generic.long=Atlantic Time -America/Danmarkshavn.generic.long=Greenwich Mean Time -America/Dawson.generic.long=Pacific Time -America/Dawson_Creek.generic.long=Mountain Time -America/Denver.generic.long=Mountain Time -America/Detroit.generic.long=Eastern Time -America/Dominica.generic.long=Atlantic Time -America/Edmonton.generic.long=Mountain Time -America/Eirunepe.generic.long=Acre Time -America/El_Salvador.generic.long=Central Time -America/Ensenada.generic.long=Pacific Time -America/Fort_Wayne.generic.long=Eastern Time -America/Fortaleza.generic.long=Brasilia Time -America/Glace_Bay.generic.long=Atlantic Time -America/Godthab.generic.long=Western Greenland Time -America/Goose_Bay.generic.long=Atlantic Time -America/Grand_Turk.generic.long=Eastern Time -America/Grenada.generic.long=Atlantic Time -America/Guadeloupe.generic.long=Atlantic Time -America/Guatemala.generic.long=Central Time -America/Guayaquil.generic.long=Ecuador Time -America/Guyana.generic.long=Guyana Time -America/Halifax.generic.long=Atlantic Time -America/Havana.generic.long=Cuba Time -America/Hermosillo.generic.long=Mountain Time -America/Indiana/Indianapolis.generic.long=Eastern Time -America/Indiana/Knox.generic.long=Central Time -America/Indiana/Marengo.generic.long=Eastern Time -America/Indiana/Petersburg.generic.long=Eastern Time -America/Indiana/Tell_City.generic.long=Central Time -America/Indiana/Vevay.generic.long=Eastern Time -America/Indiana/Vincennes.generic.long=Eastern Time -America/Indiana/Winamac.generic.long=Eastern Time -America/Indianapolis.generic.long=Eastern Time -America/Inuvik.generic.long=Mountain Time -America/Iqaluit.generic.long=Eastern Time -America/Jamaica.generic.long=Eastern Time -America/Jujuy.generic.long=Argentine Time -America/Juneau.generic.long=Alaska Time -America/Kentucky/Louisville.generic.long=Eastern Time -America/Kentucky/Monticello.generic.long=Eastern Time -America/Knox_IN.generic.long=Central Time -America/Kralendijk.generic.long=Atlantic Time -America/La_Paz.generic.long=Bolivia Time -America/Lima.generic.long=Peru Time -America/Los_Angeles.generic.long=Pacific Time -America/Louisville.generic.long=Eastern Time -America/Lower_Princes.generic.long=Atlantic Time -America/Maceio.generic.long=Brasilia Time -America/Managua.generic.long=Central Time -America/Manaus.generic.long=Amazon Time -America/Marigot.generic.long=Atlantic Time -America/Martinique.generic.long=Atlantic Time -America/Matamoros.generic.long=Central Time -America/Mazatlan.generic.long=Mountain Time -America/Mendoza.generic.long=Argentine Time -America/Menominee.generic.long=Central Time -America/Merida.generic.long=Central Time -America/Metlakatla.daylight.long=Metlakatla Daylight Time -America/Metlakatla.generic.long=Metlakatla Time -America/Metlakatla.standard.long=Metlakatla Standard Time -America/Mexico_City.generic.long=Central Time -America/Miquelon.generic.long=Pierre & Miquelon Time -America/Moncton.generic.long=Atlantic Time -America/Monterrey.generic.long=Central Time -America/Montevideo.generic.long=Uruguay Time -America/Montreal.generic.long=Eastern Time -America/Montserrat.generic.long=Atlantic Time -America/Nassau.generic.long=Eastern Time -America/New_York.generic.long=Eastern Time -America/Nipigon.generic.long=Eastern Time -America/Nome.generic.long=Alaska Time -America/Noronha.generic.long=Fernando de Noronha Time -America/North_Dakota/Beulah.generic.long=Central Time -America/North_Dakota/Center.generic.long=Central Time -America/North_Dakota/New_Salem.generic.long=Central Time -America/Ojinaga.generic.long=Mountain Time -America/Panama.generic.long=Eastern Time -America/Pangnirtung.generic.long=Eastern Time -America/Paramaribo.generic.long=Suriname Time -America/Phoenix.generic.long=Mountain Time -America/Port-au-Prince.generic.long=Eastern Time -America/Port_of_Spain.generic.long=Atlantic Time -America/Porto_Acre.generic.long=Acre Time -America/Porto_Velho.generic.long=Amazon Time -America/Puerto_Rico.generic.long=Atlantic Time -America/Rainy_River.generic.long=Central Time -America/Rankin_Inlet.generic.long=Central Time -America/Recife.generic.long=Brasilia Time -America/Regina.generic.long=Central Time -America/Resolute.generic.long=Central Time -America/Rio_Branco.generic.long=Acre Time -America/Rosario.generic.long=Argentine Time -America/Santa_Isabel.generic.long=Pacific Time -America/Santarem.generic.long=Brasilia Time -America/Santiago.generic.long=Chile Time -America/Santo_Domingo.generic.long=Atlantic Time -America/Sao_Paulo.generic.long=Brasilia Time -America/Scoresbysund.generic.long=Eastern Greenland Time -America/Shiprock.generic.long=Mountain Time -America/Sitka.generic.long=Alaska Time -America/St_Barthelemy.generic.long=Atlantic Time -America/St_Johns.generic.long=Newfoundland Time -America/St_Kitts.generic.long=Atlantic Time -America/St_Lucia.generic.long=Atlantic Time -America/St_Thomas.generic.long=Atlantic Time -America/St_Vincent.generic.long=Atlantic Time -America/Swift_Current.generic.long=Central Time -America/Tegucigalpa.generic.long=Central Time -America/Thule.generic.long=Atlantic Time -America/Thunder_Bay.generic.long=Eastern Time -America/Tijuana.generic.long=Pacific Time -America/Toronto.generic.long=Eastern Time -America/Tortola.generic.long=Atlantic Time -America/Vancouver.generic.long=Pacific Time -America/Virgin.generic.long=Atlantic Time -America/Whitehorse.generic.long=Pacific Time -America/Winnipeg.generic.long=Central Time -America/Yakutat.generic.long=Alaska Time -America/Yellowknife.generic.long=Mountain Time -Antarctica/Casey.daylight.long=Western Summer Time (Australia) -Antarctica/Casey.generic.long=Western Time (Australia) -Antarctica/Casey.standard.long=Western Standard Time (Australia) -Antarctica/Davis.generic.long=Davis Time -Antarctica/DumontDUrville.generic.long=Dumont-d'Urville Time -Antarctica/Macquarie.daylight.long=Macquarie Island Summer Time -Antarctica/Macquarie.generic.long=Macquarie Island Time -Antarctica/Macquarie.standard.long=Macquarie Island Time -Antarctica/Mawson.generic.long=Mawson Time -Antarctica/McMurdo.generic.long=New Zealand Time -Antarctica/Palmer.generic.long=Chile Time -Antarctica/Rothera.generic.long=Rothera Time -Antarctica/South_Pole.generic.long=New Zealand Time -Antarctica/Syowa.generic.long=Syowa Time -Antarctica/Vostok.generic.long=Vostok Time -Arctic/Longyearbyen.generic.long=Central European Time -Asia/Aden.generic.long=Arabia Time -Asia/Almaty.generic.long=Alma-Ata Time -Asia/Amman.generic.long=Arabia Time -Asia/Anadyr.generic.long=Anadyr Time -Asia/Aqtau.generic.long=Aqtau Time -Asia/Aqtobe.generic.long=Aqtobe Time -Asia/Ashgabat.generic.long=Turkmenistan Time -Asia/Ashkhabad.generic.long=Turkmenistan Time -Asia/Baghdad.generic.long=Arabia Time -Asia/Bahrain.generic.long=Arabia Time -Asia/Baku.generic.long=Azerbaijan Time -Asia/Bangkok.generic.long=Indochina Time -Asia/Beirut.generic.long=Eastern European Time -Asia/Bishkek.generic.long=Kirgizstan Time -Asia/Brunei.generic.long=Brunei Time -Asia/Calcutta.generic.long=India Time -Asia/Choibalsan.generic.long=Choibalsan Time -Asia/Chongqing.generic.long=China Time -Asia/Chungking.generic.long=China Time -Asia/Colombo.generic.long=India Time -Asia/Dacca.generic.long=Bangladesh Time -Asia/Damascus.generic.long=Eastern European Time -Asia/Dhaka.generic.long=Bangladesh Time -Asia/Dili.generic.long=Timor-Leste Time -Asia/Dubai.generic.long=Gulf Time -Asia/Dushanbe.generic.long=Tajikistan Time -Asia/Gaza.generic.long=Eastern European Time -Asia/Harbin.generic.long=China Time -Asia/Hebron.generic.long=Eastern European Time -Asia/Ho_Chi_Minh.generic.long=Indochina Time -Asia/Hong_Kong.generic.long=Hong Kong Time -Asia/Hovd.generic.long=Hovd Time -Asia/Irkutsk.generic.long=Irkutsk Time -Asia/Istanbul.generic.long=Eastern European Time -Asia/Jakarta.generic.long=West Indonesia Time -Asia/Jayapura.generic.long=East Indonesia Time -Asia/Jerusalem.generic.long=Israel Time -Asia/Kabul.generic.long=Afghanistan Time -Asia/Kamchatka.generic.long=Petropavlovsk-Kamchatski Time -Asia/Karachi.generic.long=Pakistan Time -Asia/Kashgar.generic.long=China Time -Asia/Kathmandu.generic.long=Nepal Time -Asia/Katmandu.generic.long=Nepal Time -Asia/Khandyga.daylight.long=Khandyga Summer Time -Asia/Khandyga.generic.long=Khandyga Time -Asia/Khandyga.standard.long=Khandyga Time -Asia/Kolkata.generic.long=India Time -Asia/Krasnoyarsk.generic.long=Krasnoyarsk Time -Asia/Kuala_Lumpur.generic.long=Malaysia Time -Asia/Kuching.generic.long=Malaysia Time -Asia/Kuwait.generic.long=Arabia Time -Asia/Macao.generic.long=China Time -Asia/Macau.generic.long=China Time -Asia/Magadan.generic.long=Magadan Time -Asia/Makassar.generic.long=Central Indonesia Time -Asia/Manila.generic.long=Philippines Time -Asia/Muscat.generic.long=Gulf Time -Asia/Nicosia.generic.long=Eastern European Time -Asia/Novokuznetsk.generic.long=Novosibirsk Time -Asia/Novosibirsk.generic.long=Novosibirsk Time -Asia/Omsk.generic.long=Omsk Time -Asia/Oral.generic.long=Oral Time -Asia/Phnom_Penh.generic.long=Indochina Time -Asia/Pontianak.generic.long=West Indonesia Time -Asia/Pyongyang.generic.long=Korea Time -Asia/Qatar.generic.long=Arabia Time -Asia/Qyzylorda.generic.long=Qyzylorda Time -Asia/Rangoon.generic.long=Myanmar Time -Asia/Saigon.generic.long=Indochina Time -Asia/Sakhalin.generic.long=Sakhalin Time -Asia/Samarkand.generic.long=Uzbekistan Time -Asia/Seoul.generic.long=Korea Time -Asia/Shanghai.generic.long=China Time -Asia/Singapore.generic.long=Singapore Time -Asia/Taipei.generic.long=China Time -Asia/Tashkent.generic.long=Uzbekistan Time -Asia/Tbilisi.generic.long=Georgia Time -Asia/Tehran.generic.long=Iran Time -Asia/Tel_Aviv.generic.long=Israel Time -Asia/Thimbu.generic.long=Bhutan Time -Asia/Thimphu.generic.long=Bhutan Time -Asia/Tokyo.generic.long=Japan Time -Asia/Ujung_Pandang.generic.long=Central Indonesia Time -Asia/Ulaanbaatar.generic.long=Ulaanbaatar Time -Asia/Ulan_Bator.generic.long=Ulaanbaatar Time -Asia/Urumqi.generic.long=China Time -Asia/Ust-Nera.daylight.long=Ust-Nera Summer Time -Asia/Ust-Nera.generic.long=Ust-Nera Time -Asia/Ust-Nera.standard.long=Ust-Nera Time -Asia/Vientiane.generic.long=Indochina Time -Asia/Vladivostok.generic.long=Vladivostok Time -Asia/Yakutsk.generic.long=Yakutsk Time -Asia/Yekaterinburg.generic.long=Yekaterinburg Time -Asia/Yerevan.generic.long=Armenia Time -Atlantic/Azores.generic.long=Azores Time -Atlantic/Bermuda.generic.long=Atlantic Time -Atlantic/Canary.generic.long=Western European Time -Atlantic/Cape_Verde.generic.long=Cape Verde Time -Atlantic/Faeroe.generic.long=Western European Time -Atlantic/Faroe.generic.long=Western European Time -Atlantic/Jan_Mayen.generic.long=Central European Time -Atlantic/Madeira.generic.long=Western European Time -Atlantic/Reykjavik.generic.long=Greenwich Mean Time -Atlantic/South_Georgia.generic.long=South Georgia Time -Atlantic/St_Helena.generic.long=Greenwich Mean Time -Atlantic/Stanley.generic.long=Falkland Is. Time -Australia/ACT.daylight.long=Eastern Summer Time (New South Wales) -Australia/ACT.generic.long=Eastern Time (New South Wales) -Australia/ACT.standard.long=Eastern Standard Time (New South Wales) -Australia/Adelaide.daylight.long=Central Summer Time (South Australia) -Australia/Adelaide.generic.long=Central Time (South Australia) -Australia/Adelaide.standard.long=Central Standard Time (South Australia) -Australia/Brisbane.daylight.long=Eastern Summer Time (Queensland) -Australia/Brisbane.generic.long=Eastern Time (Queensland) -Australia/Brisbane.standard.long=Eastern Standard Time (Queensland) -Australia/Broken_Hill.daylight.long=Central Summer Time (South Australia/New South Wales) -Australia/Broken_Hill.generic.long=Central Time (South Australia/New South Wales) -Australia/Broken_Hill.standard.long=Central Standard Time (South Australia/New South Wales) -Australia/Canberra.daylight.long=Eastern Summer Time (New South Wales) -Australia/Canberra.generic.long=Eastern Time (New South Wales) -Australia/Canberra.standard.long=Eastern Standard Time (New South Wales) -Australia/Currie.daylight.long=Eastern Summer Time (New South Wales) -Australia/Currie.generic.long=Eastern Time (New South Wales) -Australia/Currie.standard.long=Eastern Standard Time (New South Wales) -Australia/Darwin.daylight.long=Central Summer Time (Northern Territory) -Australia/Darwin.generic.long=Central Time (Northern Territory) -Australia/Darwin.standard.long=Central Standard Time (Northern Territory) -Australia/Eucla.daylight.long=Central Western Summer Time (Australia) -Australia/Eucla.generic.long=Central Western Time (Australia) -Australia/Eucla.standard.long=Central Western Standard Time (Australia) -Australia/Hobart.daylight.long=Eastern Summer Time (Tasmania) -Australia/Hobart.generic.long=Eastern Time (Tasmania) -Australia/Hobart.standard.long=Eastern Standard Time (Tasmania) -Australia/LHI.generic.long=Lord Howe Time -Australia/Lindeman.daylight.long=Eastern Summer Time (Queensland) -Australia/Lindeman.generic.long=Eastern Time (Queensland) -Australia/Lindeman.standard.long=Eastern Standard Time (Queensland) -Australia/Lord_Howe.generic.long=Lord Howe Time -Australia/Melbourne.daylight.long=Eastern Summer Time (Victoria) -Australia/Melbourne.generic.long=Eastern Time (Victoria) -Australia/Melbourne.standard.long=Eastern Standard Time (Victoria) -Australia/NSW.daylight.long=Eastern Summer Time (New South Wales) -Australia/NSW.generic.long=Eastern Time (New South Wales) -Australia/NSW.standard.long=Eastern Standard Time (New South Wales) -Australia/North.daylight.long=Central Summer Time (Northern Territory) -Australia/North.generic.long=Central Time (Northern Territory) -Australia/North.standard.long=Central Standard Time (Northern Territory) -Australia/Perth.daylight.long=Western Summer Time (Australia) -Australia/Perth.generic.long=Western Time (Australia) -Australia/Perth.standard.long=Western Standard Time (Australia) -Australia/Queensland.daylight.long=Eastern Summer Time (Queensland) -Australia/Queensland.generic.long=Eastern Time (Queensland) -Australia/Queensland.standard.long=Eastern Standard Time (Queensland) -Australia/South.daylight.long=Central Summer Time (South Australia) -Australia/South.generic.long=Central Time (South Australia) -Australia/South.standard.long=Central Standard Time (South Australia) -Australia/Sydney.daylight.long=Eastern Summer Time (New South Wales) -Australia/Sydney.generic.long=Eastern Time (New South Wales) -Australia/Sydney.standard.long=Eastern Standard Time (New South Wales) -Australia/Tasmania.daylight.long=Eastern Summer Time (Tasmania) -Australia/Tasmania.generic.long=Eastern Time (Tasmania) -Australia/Tasmania.standard.long=Eastern Standard Time (Tasmania) -Australia/Victoria.daylight.long=Eastern Summer Time (Victoria) -Australia/Victoria.generic.long=Eastern Time (Victoria) -Australia/Victoria.standard.long=Eastern Standard Time (Victoria) -Australia/West.daylight.long=Western Summer Time (Australia) -Australia/West.generic.long=Western Time (Australia) -Australia/West.standard.long=Western Standard Time (Australia) -Australia/Yancowinna.daylight.long=Central Summer Time (South Australia/New South Wales) -Australia/Yancowinna.generic.long=Central Time (South Australia/New South Wales) -Australia/Yancowinna.standard.long=Central Standard Time (South Australia/New South Wales) -BET.generic.long=Brasilia Time -BST.generic.long=Bangladesh Time -Brazil/Acre.generic.long=Acre Time -Brazil/DeNoronha.generic.long=Fernando de Noronha Time -Brazil/East.generic.long=Brasilia Time -Brazil/West.generic.long=Amazon Time -CAT.generic.long=Central Africa Time -CET.generic.long=Central European Time -CNT.generic.long=Newfoundland Time -CST.generic.long=Central Time -CST6CDT.generic.long=Central Time -CTT.generic.long=China Time -Canada/Atlantic.generic.long=Atlantic Time -Canada/Central.generic.long=Central Time -Canada/East-Saskatchewan.generic.long=Central Time -Canada/Eastern.generic.long=Eastern Time -Canada/Mountain.generic.long=Mountain Time -Canada/Newfoundland.generic.long=Newfoundland Time -Canada/Pacific.generic.long=Pacific Time -Canada/Saskatchewan.generic.long=Central Time -Canada/Yukon.generic.long=Pacific Time -Chile/Continental.generic.long=Chile Time -Chile/EasterIsland.generic.long=Easter Is. Time -Cuba.generic.long=Cuba Time -EAT.generic.long=Eastern Africa Time -ECT.generic.long=Central European Time -EET.generic.long=Eastern European Time -EST.generic.long=Eastern Time -EST5EDT.generic.long=Eastern Time -Egypt.generic.long=Eastern European Time -Eire.generic.long=Irish Time -Etc/Greenwich.generic.long=Greenwich Mean Time -Etc/UCT.generic.long=Coordinated Universal Time -Etc/UTC.generic.long=Coordinated Universal Time -Etc/Universal.generic.long=Coordinated Universal Time -Etc/Zulu.generic.long=Coordinated Universal Time -Europe/Amsterdam.generic.long=Central European Time -Europe/Andorra.generic.long=Central European Time -Europe/Athens.generic.long=Eastern European Time -Europe/Belfast.generic.long=British Time -Europe/Belgrade.generic.long=Central European Time -Europe/Berlin.generic.long=Central European Time -Europe/Bratislava.generic.long=Central European Time -Europe/Brussels.generic.long=Central European Time -Europe/Bucharest.generic.long=Eastern European Time -Europe/Budapest.generic.long=Central European Time -Europe/Busingen.generic.long=Central European Time -Europe/Chisinau.generic.long=Eastern European Time -Europe/Copenhagen.generic.long=Central European Time -Europe/Dublin.generic.long=Irish Time -Europe/Gibraltar.generic.long=Central European Time -Europe/Guernsey.generic.long=British Time -Europe/Helsinki.generic.long=Eastern European Time -Europe/Isle_of_Man.generic.long=British Time -Europe/Istanbul.generic.long=Eastern European Time -Europe/Jersey.generic.long=British Time -Europe/Kaliningrad.daylight.long=Further-eastern European Summer Time -Europe/Kaliningrad.generic.long=Further-eastern European Time -Europe/Kaliningrad.standard.long=Further-eastern European Time -Europe/Kiev.generic.long=Eastern European Time -Europe/Lisbon.generic.long=Western European Time -Europe/Ljubljana.generic.long=Central European Time -Europe/London.generic.long=British Time -Europe/Luxembourg.generic.long=Central European Time -Europe/Madrid.generic.long=Central European Time -Europe/Malta.generic.long=Central European Time -Europe/Mariehamn.generic.long=Eastern European Time -Europe/Minsk.daylight.long=Further-eastern European Summer Time -Europe/Minsk.generic.long=Further-eastern European Time -Europe/Minsk.standard.long=Further-eastern European Time -Europe/Monaco.generic.long=Central European Time -Europe/Moscow.generic.long=Moscow Time -Europe/Nicosia.generic.long=Eastern European Time -Europe/Oslo.generic.long=Central European Time -Europe/Paris.generic.long=Central European Time -Europe/Podgorica.generic.long=Central European Time -Europe/Prague.generic.long=Central European Time -Europe/Riga.generic.long=Eastern European Time -Europe/Rome.generic.long=Central European Time -Europe/Samara.generic.long=Samara Time -Europe/San_Marino.generic.long=Central European Time -Europe/Sarajevo.generic.long=Central European Time -Europe/Simferopol.generic.long=Eastern European Time -Europe/Skopje.generic.long=Central European Time -Europe/Sofia.generic.long=Eastern European Time -Europe/Stockholm.generic.long=Central European Time -Europe/Tallinn.generic.long=Eastern European Time -Europe/Tirane.generic.long=Central European Time -Europe/Tiraspol.generic.long=Eastern European Time -Europe/Uzhgorod.generic.long=Eastern European Time -Europe/Vaduz.generic.long=Central European Time -Europe/Vatican.generic.long=Central European Time -Europe/Vienna.generic.long=Central European Time -Europe/Vilnius.generic.long=Eastern European Time -Europe/Volgograd.generic.long=Volgograd Time -Europe/Warsaw.generic.long=Central European Time -Europe/Zagreb.generic.long=Central European Time -Europe/Zaporozhye.generic.long=Eastern European Time -Europe/Zurich.generic.long=Central European Time -GB-Eire.generic.long=British Time -GB.generic.long=British Time -GMT.generic.long=Greenwich Mean Time -Greenwich.generic.long=Greenwich Mean Time -HST.generic.long=Hawaii Time -Hongkong.generic.long=Hong Kong Time -IET.generic.long=Eastern Time -IST.generic.long=India Time -Iceland.generic.long=Greenwich Mean Time -Indian/Antananarivo.generic.long=Eastern Africa Time -Indian/Chagos.generic.long=Indian Ocean Territory Time -Indian/Christmas.generic.long=Christmas Island Time -Indian/Cocos.generic.long=Cocos Islands Time -Indian/Comoro.generic.long=Eastern Africa Time -Indian/Kerguelen.generic.long=French Southern & Antarctic Lands Time -Indian/Mahe.generic.long=Seychelles Time -Indian/Maldives.generic.long=Maldives Time -Indian/Mauritius.generic.long=Mauritius Time -Indian/Mayotte.generic.long=Eastern Africa Time -Indian/Reunion.generic.long=Reunion Time -Iran.generic.long=Iran Time -Israel.generic.long=Israel Time -JST.generic.long=Japan Time -Jamaica.generic.long=Eastern Time -Japan.generic.long=Japan Time -Kwajalein.generic.long=Marshall Islands Time -Libya.generic.long=Eastern European Time -MET.generic.long=Middle Europe Time -MIT.generic.long=West Samoa Time -MST.generic.long=Mountain Time -MST7MDT.generic.long=Mountain Time -Mexico/BajaNorte.generic.long=Pacific Time -Mexico/BajaSur.generic.long=Mountain Time -Mexico/General.generic.long=Central Time -NET.generic.long=Armenia Time -NST.generic.long=New Zealand Time -NZ-CHAT.generic.long=Chatham Time -NZ.generic.long=New Zealand Time -Navajo.generic.long=Mountain Time -PLT.generic.long=Pakistan Time -PNT.generic.long=Mountain Time -PRC.generic.long=China Time -PRT.generic.long=Atlantic Time -PST.generic.long=Pacific Time -PST8PDT.generic.long=Pacific Time -Pacific/Apia.generic.long=West Samoa Time -Pacific/Auckland.generic.long=New Zealand Time -Pacific/Chatham.generic.long=Chatham Time -Pacific/Chuuk.daylight.long=Chuuk Summer Time -Pacific/Chuuk.generic.long=Chuuk Time -Pacific/Chuuk.standard.long=Chuuk Time -Pacific/Easter.generic.long=Easter Is. Time -Pacific/Efate.generic.long=Vanuatu Time -Pacific/Enderbury.generic.long=Phoenix Is. Time -Pacific/Fakaofo.generic.long=Tokelau Time -Pacific/Fiji.generic.long=Fiji Time -Pacific/Funafuti.generic.long=Tuvalu Time -Pacific/Galapagos.generic.long=Galapagos Time -Pacific/Gambier.generic.long=Gambier Time -Pacific/Guadalcanal.generic.long=Solomon Is. Time -Pacific/Guam.generic.long=Chamorro Time -Pacific/Honolulu.generic.long=Hawaii Time -Pacific/Johnston.generic.long=Hawaii Time -Pacific/Kiritimati.generic.long=Line Is. Time -Pacific/Kosrae.generic.long=Kosrae Time -Pacific/Kwajalein.generic.long=Marshall Islands Time -Pacific/Majuro.generic.long=Marshall Islands Time -Pacific/Marquesas.generic.long=Marquesas Time -Pacific/Midway.generic.long=Samoa Time -Pacific/Nauru.generic.long=Nauru Time -Pacific/Niue.generic.long=Niue Time -Pacific/Norfolk.generic.long=Norfolk Time -Pacific/Noumea.generic.long=New Caledonia Time -Pacific/Pago_Pago.generic.long=Samoa Time -Pacific/Palau.generic.long=Palau Time -Pacific/Pitcairn.generic.long=Pitcairn Time -Pacific/Pohnpei.daylight.long=Pohnpei Summer Time -Pacific/Pohnpei.generic.long=Ponape Time -Pacific/Pohnpei.standard.long=Pohnpei Time -Pacific/Ponape.daylight.long=Pohnpei Summer Time -Pacific/Ponape.generic.long=Ponape Time -Pacific/Ponape.standard.long=Pohnpei Time -Pacific/Port_Moresby.generic.long=Papua New Guinea Time -Pacific/Rarotonga.generic.long=Cook Is. Time -Pacific/Saipan.generic.long=Chamorro Time -Pacific/Samoa.generic.long=Samoa Time -Pacific/Tahiti.generic.long=Tahiti Time -Pacific/Tarawa.generic.long=Gilbert Is. Time -Pacific/Tongatapu.generic.long=Tonga Time -Pacific/Truk.daylight.long=Chuuk Summer Time -Pacific/Truk.generic.long=Chuuk Time -Pacific/Truk.standard.long=Chuuk Time -Pacific/Wake.generic.long=Wake Time -Pacific/Wallis.generic.long=Wallis & Futuna Time -Pacific/Yap.daylight.long=Chuuk Summer Time -Pacific/Yap.generic.long=Chuuk Time -Pacific/Yap.standard.long=Chuuk Time -Poland.generic.long=Central European Time -Portugal.generic.long=Western European Time -ROK.generic.long=Korea Time -SST.generic.long=Solomon Is. Time -Singapore.generic.long=Singapore Time -SystemV/AST4.generic.long=Atlantic Time -SystemV/AST4ADT.generic.long=Atlantic Time -SystemV/CST6.generic.long=Central Time -SystemV/CST6CDT.generic.long=Central Time -SystemV/EST5.generic.long=Eastern Time -SystemV/EST5EDT.generic.long=Eastern Time -SystemV/HST10.generic.long=Hawaii Time -SystemV/MST7.generic.long=Mountain Time -SystemV/MST7MDT.generic.long=Mountain Time -SystemV/PST8.generic.long=Pacific Time -SystemV/PST8PDT.generic.long=Pacific Time -SystemV/YST9.generic.long=Alaska Time -SystemV/YST9YDT.generic.long=Alaska Time -Turkey.generic.long=Eastern European Time -UCT.generic.long=Coordinated Universal Time -US/Alaska.generic.long=Alaska Time -US/Aleutian.generic.long=Hawaii-Aleutian Time -US/Arizona.generic.long=Mountain Time -US/Central.generic.long=Central Time -US/East-Indiana.generic.long=Eastern Time -US/Eastern.generic.long=Eastern Time -US/Hawaii.generic.long=Hawaii Time -US/Indiana-Starke.generic.long=Central Time -US/Michigan.generic.long=Eastern Time -US/Mountain.generic.long=Mountain Time -US/Pacific-New.generic.long=Pacific Time -US/Pacific.generic.long=Pacific Time -US/Samoa.generic.long=Samoa Time -UTC.generic.long=Coordinated Universal Time -Universal.generic.long=Coordinated Universal Time -VST.generic.long=Indochina Time -W-SU.generic.long=Moscow Time -WET.generic.long=Western European Time -Zulu.generic.long=Coordinated Universal Time diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNamesTest.java b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNamesTest.java deleted file mode 100644 index e112e56f340..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNamesTest.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright (c) 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. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** - * @test - * @bug 8025051 - * @summary Test time zone names across all locales - * @run main TimeZoneNamesTest - */ - -import sun.util.locale.provider.TimeZoneNameUtility; -import java.util.TimeZone; -import java.util.Locale; -import java.util.Properties; -import java.io.IOException; -import java.io.FileInputStream; - -public class TimeZoneNamesTest { - // name type to test. Possible: long, short. - static String requestedTestType = "long"; - // test Standard/DST (false) or Generic (true) TZ names - static boolean testGeneric = false; - - public static void testGenericTZName( Locale locale, String timezoneName, - int nameType, String expectedName ) throws RuntimeException { - if (testGeneric) { - String genericName = TimeZoneNameUtility.retrieveGenericDisplayName(timezoneName, nameType, locale); - //Check for equality - if (!genericName.equals(expectedName)) - throw new RuntimeException( "Time zone ("+timezoneName+") name is incorrect for locale \""+locale.getDisplayName() - +"\" nameType: Generic"+"("+nameType+") Should be: " +expectedName+" Observed: "+genericName); - } - } - - public static void testTZName( Locale locale, String timezoneName, boolean isDaylight, - int nameType, String expectedName ) throws RuntimeException { - if (!testGeneric) { - //Construct time zone objects - TimeZone zone = TimeZone.getTimeZone(timezoneName); - //Get name from JDK - String name = zone.getDisplayName(isDaylight, nameType, locale); - //Check for equality - if (!name.equals(expectedName)) - throw new RuntimeException( "Time zone ("+timezoneName+") name is incorrect for locale: \""+locale.getDisplayName() - +"\" nameType:"+requestedTestType+" DST:"+isDaylight+" Should be: " +expectedName+" Observed: "+name); - } - } - - public static boolean testPropertyEntry( Locale locale, String entry, String value ) { - boolean result = true; - String[] params = entry.split("\\."); - if (params.length != 3) { - System.out.println("Incorrect property file entry="+entry+" "+params.length); - result = false; - } else { - boolean isDaylight = true; - int nameType = TimeZone.LONG; - - if (params[2].equals("short")) - nameType = TimeZone.SHORT; - - if (params[1].equals("standard")) - isDaylight = false; - - // Names with non-requested tz name type are ignored - if (requestedTestType.equals(params[2])) { - try { - if (params[1].equals("generic")) - testGenericTZName( locale, params[0], nameType, value ); - else - testTZName( locale, params[0], isDaylight, nameType, value ); - } catch (RuntimeException e) { - System.out.println( "Test FAILED: "+e ); - result = false; - } - } - } - return result; - } - - public static boolean testPropertyFile( String propFile, String shortName, Locale locale ) throws RuntimeException { - boolean result = true; - Properties property = new Properties(); - try { - property.load( new FileInputStream(propFile) ); - } catch (IOException e) { - throw new RuntimeException("Property file "+propFile+" is not found", e); - } - for (String key: property.stringPropertyNames()) { - result &= testPropertyEntry(locale, key, property.getProperty(key) ); - } - return result; - } - - // Locale to test, file with names data, test long/short names, test generic names (true/false) - static Object[][] testTargets = { - { Locale.ROOT,"TimeZoneNames.properties","long",false}, - { Locale.ROOT,"TimeZoneNames_short.properties","short",false}, - { Locale.ROOT,"TimeZoneNames.properties","long",true}, - { Locale.ROOT,"TimeZoneNames_short.properties","short",true}, - - { new Locale("de"),"TimeZoneNames_de.properties","long",false}, - { new Locale("de"),"TimeZoneNames_de_short.properties","short",false}, - { new Locale("de"),"TimeZoneNames_de.properties","long",true}, - { new Locale("de"),"TimeZoneNames_de_short.properties","short",true}, - - { new Locale("es"),"TimeZoneNames_es.properties","long",false}, - { new Locale("es"),"TimeZoneNames_es_short.properties","short",false}, - { new Locale("es"),"TimeZoneNames_es.properties","long",true}, - { new Locale("es"),"TimeZoneNames_es_short.properties","short",true}, - - { new Locale("fr"),"TimeZoneNames_fr.properties","long",false}, - { new Locale("fr"),"TimeZoneNames_fr_short.properties","short",false}, - { new Locale("fr"),"TimeZoneNames_fr.properties","long",true}, - { new Locale("fr"),"TimeZoneNames_fr_short.properties","short",true}, - - { new Locale("it"),"TimeZoneNames_it.properties","long",false}, - { new Locale("it"),"TimeZoneNames_it_short.properties","short",false}, - { new Locale("it"),"TimeZoneNames_it.properties","long",true}, - { new Locale("it"),"TimeZoneNames_it_short.properties","short",true}, - - { new Locale("ja"),"TimeZoneNames_ja.properties","long",false}, - { new Locale("ja"),"TimeZoneNames_ja_short.properties","short",false}, - { new Locale("ja"),"TimeZoneNames_ja.properties","long",true}, - { new Locale("ja"),"TimeZoneNames_ja_short.properties","short",true}, - - { new Locale("ko"),"TimeZoneNames_ko.properties","long",false}, - { new Locale("ko"),"TimeZoneNames_ko_short.properties","short",false}, - { new Locale("ko"),"TimeZoneNames_ko.properties","long",true}, - { new Locale("ko"),"TimeZoneNames_ko_short.properties","short",true}, - - { new Locale("pt","BR"),"TimeZoneNames_pt_BR.properties","long",false}, - { new Locale("pt","BR"),"TimeZoneNames_pt_BR_short.properties","short",false}, - { new Locale("pt","BR"),"TimeZoneNames_pt_BR.properties","long",true}, - { new Locale("pt","BR"),"TimeZoneNames_pt_BR_short.properties","short",true}, - - { new Locale("sv"),"TimeZoneNames_sv.properties","long",false}, - { new Locale("sv"),"TimeZoneNames_sv_short.properties","short",false}, - { new Locale("sv"),"TimeZoneNames_sv.properties","long",true}, - { new Locale("sv"),"TimeZoneNames_sv_short.properties","short",true}, - - { new Locale("zh","CN"),"TimeZoneNames_zh_CN.properties","long",false}, - { new Locale("zh","CN"),"TimeZoneNames_zh_CN_short.properties","short",false}, - { new Locale("zh","CN"),"TimeZoneNames_zh_CN.properties","long",true}, - { new Locale("zh","CN"),"TimeZoneNames_zh_CN_short.properties","short",true}, - - { new Locale("zh","TW"),"TimeZoneNames_zh_TW.properties","long",false}, - { new Locale("zh","TW"),"TimeZoneNames_zh_TW_short.properties","short",false}, - { new Locale("zh","TW"),"TimeZoneNames_zh_TW.properties","long",true}, - { new Locale("zh","TW"),"TimeZoneNames_zh_TW_short.properties","short",true} - }; - - public static void main(String[] args) { - boolean result = true; - - for (Object [] test: testTargets) { - Locale testLocale = (Locale) test[0]; - String testFile = (String) test[1]; - requestedTestType = (String) test[2]; - testGeneric = (Boolean) test[3]; - result &= testPropertyFile( System.getProperty("test.src",".")+"/"+testFile, testFile, testLocale); - } - if (!result) - throw new RuntimeException("Some time zones has unexpected names. Please, check test output."); - } -} diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_de.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_de.properties deleted file mode 100644 index 432b127b2b9..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_de.properties +++ /dev/null @@ -1,651 +0,0 @@ -ACT.daylight.long=Zentrale Sommerzeit (Northern Territory) -ACT.generic.long=Zentrale Zeitzone (Northern Territory) -ACT.standard.long=Zentrale Normalzeit (Northern Territory) -AET.daylight.long=\u00D6stliche Sommerzeit (New South Wales) -AET.generic.long=\u00D6stliche Zeitzone (New South Wales) -AET.standard.long=\u00D6stliche Normalzeit (New South Wales) -AGT.generic.long=Argentinische Zeit -ART.generic.long=Osteurop\u00E4ische Zeit -AST.generic.long=Zeitzone f\u00FCr Alaska -Africa/Abidjan.generic.long=Greenwich Zeit -Africa/Accra.generic.long=Ghanaische Normalzeit -Africa/Addis_Ababa.generic.long=Ostafrikanische Zeit -Africa/Algiers.generic.long=Mitteleurop\u00E4ische Zeit -Africa/Asmara.generic.long=Ostafrikanische Zeit -Africa/Asmera.generic.long=Ostafrikanische Zeit -Africa/Bamako.generic.long=Greenwich Zeit -Africa/Bangui.generic.long=Westafrikanische Zeit -Africa/Banjul.generic.long=Greenwich Zeit -Africa/Bissau.generic.long=Greenwich Zeit -Africa/Blantyre.generic.long=Zentralafrikanische Zeit -Africa/Brazzaville.generic.long=Westafrikanische Zeit -Africa/Bujumbura.generic.long=Zentralafrikanische Zeit -Africa/Cairo.generic.long=Osteurop\u00E4ische Zeit -Africa/Casablanca.generic.long=Westeurop\u00E4ische Zeit -Africa/Ceuta.generic.long=Mitteleurop\u00E4ische Zeit -Africa/Conakry.generic.long=Greenwich Zeit -Africa/Dakar.generic.long=Greenwich Zeit -Africa/Dar_es_Salaam.generic.long=Ostafrikanische Zeit -Africa/Djibouti.generic.long=Ostafrikanische Zeit -Africa/Douala.generic.long=Westafrikanische Zeit -Africa/El_Aaiun.generic.long=Westeurop\u00E4ische Zeit -Africa/Freetown.generic.long=Sierra Leone Zeit -Africa/Gaborone.generic.long=Zentralafrikanische Zeit -Africa/Harare.generic.long=Zentralafrikanische Zeit -Africa/Johannesburg.generic.long=Zeitzone f\u00FCr S\u00FCdafrika -Africa/Juba.generic.long=Ostafrikanische Zeit -Africa/Kampala.generic.long=Ostafrikanische Zeit -Africa/Khartoum.generic.long=Ostafrikanische Zeit -Africa/Kigali.generic.long=Zentralafrikanische Zeit -Africa/Kinshasa.generic.long=Westafrikanische Zeit -Africa/Lagos.generic.long=Westafrikanische Zeit -Africa/Libreville.generic.long=Westafrikanische Zeit -Africa/Lome.generic.long=Greenwich Zeit -Africa/Luanda.generic.long=Westafrikanische Zeit -Africa/Lubumbashi.generic.long=Zentralafrikanische Zeit -Africa/Lusaka.generic.long=Zentralafrikanische Zeit -Africa/Malabo.generic.long=Westafrikanische Zeit -Africa/Maputo.generic.long=Zentralafrikanische Zeit -Africa/Maseru.generic.long=Zeitzone f\u00FCr S\u00FCdafrika -Africa/Mbabane.generic.long=Zeitzone f\u00FCr S\u00FCdafrika -Africa/Mogadishu.generic.long=Ostafrikanische Zeit -Africa/Monrovia.generic.long=Greenwich Zeit -Africa/Nairobi.generic.long=Ostafrikanische Zeit -Africa/Ndjamena.generic.long=Westafrikanische Zeit -Africa/Niamey.generic.long=Westafrikanische Zeit -Africa/Nouakchott.generic.long=Greenwich Zeit -Africa/Ouagadougou.generic.long=Greenwich Zeit -Africa/Porto-Novo.generic.long=Westafrikanische Zeit -Africa/Sao_Tome.generic.long=Greenwich Zeit -Africa/Timbuktu.generic.long=Greenwich Zeit -Africa/Tripoli.generic.long=Osteurop\u00e4ische Zeit -Africa/Tunis.generic.long=Mitteleurop\u00E4ische Zeit -Africa/Windhoek.generic.long=Westafrikanische Zeit -America/Adak.generic.long=Zeitzone f\u00FCr Hawaii und Al\u00EButen -America/Anchorage.generic.long=Zeitzone f\u00FCr Alaska -America/Anguilla.generic.long=Zeitzone Atlantik -America/Antigua.generic.long=Zeitzone Atlantik -America/Araguaina.generic.long=Brasilianische Zeit -America/Argentina/Buenos_Aires.generic.long=Argentinische Zeit -America/Argentina/Catamarca.generic.long=Argentinische Zeit -America/Argentina/ComodRivadavia.generic.long=Argentinische Zeit -America/Argentina/Cordoba.generic.long=Argentinische Zeit -America/Argentina/Jujuy.generic.long=Argentinische Zeit -America/Argentina/La_Rioja.generic.long=Argentinische Zeit -America/Argentina/Mendoza.generic.long=Argentinische Zeit -America/Argentina/Rio_Gallegos.generic.long=Argentinische Zeit -America/Argentina/Salta.generic.long=Argentinische Zeit -America/Argentina/San_Juan.generic.long=Argentinische Zeit -America/Argentina/San_Luis.generic.long=Argentinische Zeit -America/Argentina/Tucuman.generic.long=Argentinische Zeit -America/Argentina/Ushuaia.generic.long=Argentinische Zeit -America/Aruba.generic.long=Zeitzone Atlantik -America/Asuncion.generic.long=Paraguay Zeit -America/Atikokan.generic.long=\u00D6stliche Zeitzone -America/Atka.generic.long=Zeitzone f\u00FCr Hawaii und Al\u00EButen -America/Bahia.generic.long=Brasilianische Zeit -America/Bahia_Banderas.generic.long=Zentrale Zeitzone -America/Barbados.generic.long=Zeitzone Atlantik -America/Belem.generic.long=Brasilianische Zeit -America/Belize.generic.long=Zentrale Zeitzone -America/Blanc-Sablon.generic.long=Zeitzone Atlantik -America/Boa_Vista.generic.long=Amazonas Normalzeit -America/Bogota.generic.long=Kolumbianische Zeit -America/Boise.generic.long=Zeitzone Mountain -America/Buenos_Aires.generic.long=Argentinische Zeit -America/Cambridge_Bay.generic.long=Zeitzone Mountain -America/Campo_Grande.generic.long=Amazonas Normalzeit -America/Cancun.generic.long=Zentrale Zeitzone -America/Caracas.generic.long=Venezuelanische Zeit -America/Catamarca.generic.long=Argentinische Zeit -America/Cayenne.generic.long=Franz\u00F6sisch-Guiana Zeit -America/Cayman.generic.long=\u00D6stliche Zeitzone -America/Chicago.generic.long=Zentrale Zeitzone -America/Chihuahua.generic.long=Zeitzone Mountain -America/Coral_Harbour.generic.long=\u00D6stliche Zeitzone -America/Cordoba.generic.long=Argentinische Zeit -America/Costa_Rica.generic.long=Zentrale Zeitzone -America/Creston.generic.long=Zeitzone Mountain -America/Cuiaba.generic.long=Amazonas Normalzeit -America/Curacao.generic.long=Zeitzone Atlantik -America/Danmarkshavn.generic.long=Greenwich Zeit -America/Dawson.generic.long=Zeitzone Pazifik -America/Dawson_Creek.generic.long=Zeitzone Mountain -America/Denver.generic.long=Zeitzone Mountain -America/Detroit.generic.long=\u00D6stliche Zeitzone -America/Dominica.generic.long=Zeitzone Atlantik -America/Edmonton.generic.long=Zeitzone Mountain -America/Eirunepe.generic.long=Acre Normalzeit -America/El_Salvador.generic.long=Zentrale Zeitzone -America/Ensenada.generic.long=Zeitzone Pazifik -America/Fort_Wayne.generic.long=\u00D6stliche Zeitzone -America/Fortaleza.generic.long=Brasilianische Zeit -America/Glace_Bay.generic.long=Zeitzone Atlantik -America/Godthab.generic.long=Westgr\u00F6nl\u00E4ndische Zeit -America/Goose_Bay.generic.long=Zeitzone Atlantik -America/Grand_Turk.generic.long=\u00D6stliche Zeitzone -America/Grenada.generic.long=Zeitzone Atlantik -America/Guadeloupe.generic.long=Zeitzone Atlantik -America/Guatemala.generic.long=Zentrale Zeitzone -America/Guayaquil.generic.long=Ecuadorianische Zeit -America/Guyana.generic.long=Guyanische Zeit -America/Halifax.generic.long=Zeitzone Atlantik -America/Havana.generic.long=Kubanische Normalzeit -America/Hermosillo.generic.long=Zeitzone Mountain -America/Indiana/Indianapolis.generic.long=\u00D6stliche Zeitzone -America/Indiana/Knox.generic.long=Zentrale Zeitzone -America/Indiana/Marengo.generic.long=\u00D6stliche Zeitzone -America/Indiana/Petersburg.generic.long=\u00D6stliche Zeitzone -America/Indiana/Tell_City.generic.long=Zentrale Zeitzone -America/Indiana/Vevay.generic.long=\u00D6stliche Zeitzone -America/Indiana/Vincennes.generic.long=\u00D6stliche Zeitzone -America/Indiana/Winamac.generic.long=\u00D6stliche Zeitzone -America/Indianapolis.generic.long=\u00D6stliche Zeitzone -America/Inuvik.generic.long=Zeitzone Mountain -America/Iqaluit.generic.long=\u00D6stliche Zeitzone -America/Jamaica.generic.long=\u00D6stliche Zeitzone -America/Jujuy.generic.long=Argentinische Zeit -America/Juneau.generic.long=Zeitzone f\u00FCr Alaska -America/Kentucky/Louisville.generic.long=\u00D6stliche Zeitzone -America/Kentucky/Monticello.generic.long=\u00D6stliche Zeitzone -America/Knox_IN.generic.long=Zentrale Zeitzone -America/Kralendijk.generic.long=Zeitzone Atlantik -America/La_Paz.generic.long=Bolivianische Zeit -America/Lima.generic.long=Peruanische Zeit -America/Los_Angeles.generic.long=Zeitzone Pazifik -America/Louisville.generic.long=\u00D6stliche Zeitzone -America/Lower_Princes.generic.long=Zeitzone Atlantik -America/Maceio.generic.long=Brasilianische Zeit -America/Managua.generic.long=Zentrale Zeitzone -America/Manaus.generic.long=Amazonas Normalzeit -America/Marigot.generic.long=Zeitzone Atlantik -America/Martinique.generic.long=Zeitzone Atlantik -America/Matamoros.generic.long=Zentrale Zeitzone -America/Mazatlan.generic.long=Zeitzone Mountain -America/Mendoza.generic.long=Argentinische Zeit -America/Menominee.generic.long=Zentrale Zeitzone -America/Merida.generic.long=Zentrale Zeitzone -America/Metlakatla.daylight.long=Metlakatla Sommerzeit -America/Metlakatla.generic.long=Metlakatla Normalzeit -America/Metlakatla.standard.long=Metlakatla Normalzeit -America/Mexico_City.generic.long=Zentrale Zeitzone -America/Miquelon.generic.long=Zeitzone f\u00FCr St. Pierre und Miquelon -America/Moncton.generic.long=Zeitzone Atlantik -America/Monterrey.generic.long=Zentrale Zeitzone -America/Montevideo.generic.long=Uruguayanische Zeit -America/Montreal.generic.long=\u00D6stliche Zeitzone -America/Montserrat.generic.long=Zeitzone Atlantik -America/Nassau.generic.long=\u00D6stliche Zeitzone -America/New_York.generic.long=\u00D6stliche Zeitzone -America/Nipigon.generic.long=\u00D6stliche Zeitzone -America/Nome.generic.long=Zeitzone f\u00FCr Alaska -America/Noronha.generic.long=Fernando de Noronha Zeit -America/North_Dakota/Beulah.generic.long=Zentrale Zeitzone -America/North_Dakota/Center.generic.long=Zentrale Zeitzone -America/North_Dakota/New_Salem.generic.long=Zentrale Zeitzone -America/Ojinaga.generic.long=Zeitzone Mountain -America/Panama.generic.long=\u00D6stliche Zeitzone -America/Pangnirtung.generic.long=\u00D6stliche Zeitzone -America/Paramaribo.generic.long=Suriname Zeit -America/Phoenix.generic.long=Zeitzone Mountain -America/Port-au-Prince.generic.long=\u00D6stliche Zeitzone -America/Port_of_Spain.generic.long=Zeitzone Atlantik -America/Porto_Acre.generic.long=Acre Normalzeit -America/Porto_Velho.generic.long=Amazonas Normalzeit -America/Puerto_Rico.generic.long=Zeitzone Atlantik -America/Rainy_River.generic.long=Zentrale Zeitzone -America/Rankin_Inlet.generic.long=Zentrale Zeitzone -America/Recife.generic.long=Brasilianische Zeit -America/Regina.generic.long=Zentrale Zeitzone -America/Resolute.generic.long=Zentrale Zeitzone -America/Rio_Branco.generic.long=Acre Normalzeit -America/Rosario.generic.long=Argentinische Zeit -America/Santa_Isabel.generic.long=Zeitzone Pazifik -America/Santarem.generic.long=Brasilianische Zeit -America/Santiago.generic.long=Chilenische Zeit -America/Santo_Domingo.generic.long=Zeitzone Atlantik -America/Sao_Paulo.generic.long=Brasilianische Zeit -America/Scoresbysund.generic.long=Ostgr\u00F6nl\u00E4ndische Zeit -America/Shiprock.generic.long=Zeitzone Mountain -America/Sitka.generic.long=Zeitzone f\u00FCr Alaska -America/St_Barthelemy.generic.long=Zeitzone Atlantik -America/St_Johns.generic.long=Zeitzone f\u00FCr Neufundland -America/St_Kitts.generic.long=Zeitzone Atlantik -America/St_Lucia.generic.long=Zeitzone Atlantik -America/St_Thomas.generic.long=Zeitzone Atlantik -America/St_Vincent.generic.long=Zeitzone Atlantik -America/Swift_Current.generic.long=Zentrale Zeitzone -America/Tegucigalpa.generic.long=Zentrale Zeitzone -America/Thule.generic.long=Zeitzone Atlantik -America/Thunder_Bay.generic.long=\u00D6stliche Zeitzone -America/Tijuana.generic.long=Zeitzone Pazifik -America/Toronto.generic.long=\u00D6stliche Zeitzone -America/Tortola.generic.long=Zeitzone Atlantik -America/Vancouver.generic.long=Zeitzone Pazifik -America/Virgin.generic.long=Zeitzone Atlantik -America/Whitehorse.generic.long=Zeitzone Pazifik -America/Winnipeg.generic.long=Zentrale Zeitzone -America/Yakutat.generic.long=Zeitzone f\u00FCr Alaska -America/Yellowknife.generic.long=Zeitzone Mountain -Antarctica/Casey.daylight.long=Westliche Sommerzeit (Australien) -Antarctica/Casey.generic.long=Westliche Zeitzone (Australien) -Antarctica/Casey.standard.long=Westliche Normalzeit (Australien) -Antarctica/Davis.generic.long=Davis Zeit -Antarctica/DumontDUrville.generic.long=Dumont-d'Urville Zeit -Antarctica/Macquarie.daylight.long=Macquarieinsel Sommerzeit -Antarctica/Macquarie.generic.long=Macquarieinsel Zeit -Antarctica/Macquarie.standard.long=Macquarieinsel Zeit -Antarctica/Mawson.generic.long=Mawson Zeit -Antarctica/McMurdo.generic.long=Zeitzone f\u00FCr Neuseeland -Antarctica/Palmer.generic.long=Chilenische Zeit -Antarctica/Rothera.generic.long=Rothera Zeit -Antarctica/South_Pole.generic.long=Zeitzone f\u00FCr Neuseeland -Antarctica/Syowa.generic.long=Syowa Zeit -Antarctica/Vostok.generic.long=Vostok Zeit -Arctic/Longyearbyen.generic.long=Mitteleurop\u00E4ische Zeit -Asia/Aden.generic.long=Zeitzone f\u00FCr Arabische Halbinsel -Asia/Almaty.generic.long=Alma Ata Zeit -Asia/Amman.generic.long=Zeitzone f\u00fcr Arabische Halbinsel -Asia/Anadyr.generic.long=Anadyr Zeit -Asia/Aqtau.generic.long=Aqtau Zeit -Asia/Aqtobe.generic.long=Aqtobe Zeit -Asia/Ashgabat.generic.long=Turkmenische Zeit -Asia/Ashkhabad.generic.long=Turkmenische Zeit -Asia/Baghdad.generic.long=Zeitzone f\u00FCr Arabische Halbinsel -Asia/Bahrain.generic.long=Zeitzone f\u00FCr Arabische Halbinsel -Asia/Baku.generic.long=Aserbaidschanische Zeit -Asia/Bangkok.generic.long=Indochina Zeit -Asia/Beirut.generic.long=Osteurop\u00E4ische Zeit -Asia/Bishkek.generic.long=Kirgisische Zeit -Asia/Brunei.generic.long=Brunei Zeit -Asia/Calcutta.generic.long=Zeitzone f\u00FCr Indien -Asia/Choibalsan.generic.long=Choibalsan Zeit -Asia/Chongqing.generic.long=Zeitzone f\u00FCr China -Asia/Chungking.generic.long=Zeitzone f\u00FCr China -Asia/Colombo.generic.long=Zeitzone f\u00FCr Indien -Asia/Dacca.generic.long=Bangladesch Zeit -Asia/Damascus.generic.long=Osteurop\u00E4ische Zeit -Asia/Dhaka.generic.long=Bangladesch Zeit -Asia/Dili.generic.long=Timor-Leste Normalzeit -Asia/Dubai.generic.long=Zeitzone f\u00FCr Persischen Golf -Asia/Dushanbe.generic.long=Tadschikische Zeit -Asia/Gaza.generic.long=Osteurop\u00E4ische Zeit -Asia/Harbin.generic.long=Zeitzone f\u00FCr China -Asia/Hebron.generic.long=Osteurop\u00E4ische Zeit -Asia/Ho_Chi_Minh.generic.long=Indochina Zeit -Asia/Hong_Kong.generic.long=Hongkong Zeit -Asia/Hovd.generic.long=Hovd Zeit -Asia/Irkutsk.generic.long=Irkutsk Zeit -Asia/Istanbul.generic.long=Osteurop\u00E4ische Zeit -Asia/Jakarta.generic.long=Westindonesische Zeit -Asia/Jayapura.generic.long=Ostindonesische Zeit -Asia/Jerusalem.generic.long=Zeitzone f\u00FCr Israel -Asia/Kabul.generic.long=Afghanistanische Zeit -Asia/Kamchatka.generic.long=Petropawlowsk-Kamtschatkische Zeit -Asia/Karachi.generic.long=Pakistanische Zeit -Asia/Kashgar.generic.long=Zeitzone f\u00FCr China -Asia/Kathmandu.generic.long=Nepalesische Zeit -Asia/Katmandu.generic.long=Nepalesische Zeit -Asia/Khandyga.daylight.long=Chandyga Sommerzeit -Asia/Khandyga.generic.long=Chandyga Zeit -Asia/Khandyga.standard.long=Chandyga Zeit -Asia/Kolkata.generic.long=Zeitzone f\u00FCr Indien -Asia/Krasnoyarsk.generic.long=Krasnojarsker Zeit -Asia/Kuala_Lumpur.generic.long=Malaysische Zeit -Asia/Kuching.generic.long=Malaysische Zeit -Asia/Kuwait.generic.long=Zeitzone f\u00FCr Arabische Halbinsel -Asia/Macao.generic.long=Zeitzone f\u00FCr China -Asia/Macau.generic.long=Zeitzone f\u00FCr China -Asia/Magadan.generic.long=Magadanische Zeit -Asia/Makassar.generic.long=Zentralindonesische Zeit -Asia/Manila.generic.long=Philippinische Zeit -Asia/Muscat.generic.long=Zeitzone f\u00FCr Persischen Golf -Asia/Nicosia.generic.long=Osteurop\u00E4ische Zeit -Asia/Novokuznetsk.generic.long=Nowosibirsker Zeit -Asia/Novosibirsk.generic.long=Nowosibirsker Zeit -Asia/Omsk.generic.long=Omsk Zeit -Asia/Oral.generic.long=Oral Zeit -Asia/Phnom_Penh.generic.long=Indochina Zeit -Asia/Pontianak.generic.long=Westindonesische Zeit -Asia/Pyongyang.generic.long=Zeitzone f\u00FCr Korea -Asia/Qatar.generic.long=Zeitzone f\u00FCr Arabische Halbinsel -Asia/Qyzylorda.generic.long=Qyzylorda Zeit -Asia/Rangoon.generic.long=Myanmar Zeit -Asia/Saigon.generic.long=Indochina Zeit -Asia/Sakhalin.generic.long=Sakhalin Zeit -Asia/Samarkand.generic.long=Usbekistan Zeit -Asia/Seoul.generic.long=Zeitzone f\u00FCr Korea -Asia/Shanghai.generic.long=Zeitzone f\u00FCr China -Asia/Singapore.generic.long=Singapur Zeit -Asia/Taipei.generic.long=Zeitzone f\u00FCr China -Asia/Tashkent.generic.long=Usbekistan Zeit -Asia/Tbilisi.generic.long=Georgische Zeit -Asia/Tehran.generic.long=Iranische Zeit -Asia/Tel_Aviv.generic.long=Zeitzone f\u00FCr Israel -Asia/Thimbu.generic.long=Bhutanische Zeit -Asia/Thimphu.generic.long=Bhutanische Zeit -Asia/Tokyo.generic.long=Zeitzone f\u00FCr Japan -Asia/Ujung_Pandang.generic.long=Zentralindonesische Zeit -Asia/Ulaanbaatar.generic.long=Ulaanbaatar Zeit -Asia/Ulan_Bator.generic.long=Ulaanbaatar Zeit -Asia/Urumqi.generic.long=Zeitzone f\u00FCr China -Asia/Ust-Nera.daylight.long=Ust-Nera Sommerzeit -Asia/Ust-Nera.generic.long=Ust-Nera Zeit -Asia/Ust-Nera.standard.long=Ust-Nera Zeit -Asia/Vientiane.generic.long=Indochina Zeit -Asia/Vladivostok.generic.long=Wladiwostok Zeit -Asia/Yakutsk.generic.long=Jakutsk Zeit -Asia/Yekaterinburg.generic.long=Jekaterinburger Zeit -Asia/Yerevan.generic.long=Armenische Zeit -Atlantic/Azores.generic.long=Azoren Zeit -Atlantic/Bermuda.generic.long=Zeitzone Atlantik -Atlantic/Canary.generic.long=Westeurop\u00E4ische Zeit -Atlantic/Cape_Verde.generic.long=Kap Verde Zeit -Atlantic/Faeroe.generic.long=Westeurop\u00E4ische Zeit -Atlantic/Faroe.generic.long=Westeurop\u00E4ische Zeit -Atlantic/Jan_Mayen.generic.long=Mitteleurop\u00E4ische Zeit -Atlantic/Madeira.generic.long=Westeurop\u00E4ische Zeit -Atlantic/Reykjavik.generic.long=Greenwich Zeit -Atlantic/South_Georgia.generic.long=Zeitzone f\u00FCr S\u00FCdgeorgien -Atlantic/St_Helena.generic.long=Greenwich Zeit -Atlantic/Stanley.generic.long=Falkland Inseln Zeit -Australia/ACT.daylight.long=\u00D6stliche Sommerzeit (New South Wales) -Australia/ACT.generic.long=\u00D6stliche Zeitzone (New South Wales) -Australia/ACT.standard.long=\u00D6stliche Normalzeit (New South Wales) -Australia/Adelaide.daylight.long=Zentrale Sommerzeit (S\u00FCdaustralien) -Australia/Adelaide.generic.long=Zentrale Zeitzone (S\u00FCdaustralien) -Australia/Adelaide.standard.long=Zentrale Normalzeit (S\u00FCdaustralien) -Australia/Brisbane.daylight.long=\u00D6stliche Sommerzeit (Queensland) -Australia/Brisbane.generic.long=\u00D6stliche Zeitzone (Queensland) -Australia/Brisbane.standard.long=\u00D6stliche Normalzeit (Queensland) -Australia/Broken_Hill.daylight.long=Zentrale Sommerzeit (S\u00FCdaustralien/New South Wales) -Australia/Broken_Hill.generic.long=Zentrale Zeitzone (S\u00FCdaustralien/New South Wales) -Australia/Broken_Hill.standard.long=Zentrale Normalzeit (S\u00FCdaustralien/New South Wales) -Australia/Canberra.daylight.long=\u00D6stliche Sommerzeit (New South Wales) -Australia/Canberra.generic.long=\u00D6stliche Zeitzone (New South Wales) -Australia/Canberra.standard.long=\u00D6stliche Normalzeit (New South Wales) -Australia/Currie.daylight.long=\u00D6stliche Sommerzeit (New South Wales) -Australia/Currie.generic.long=\u00D6stliche Zeitzone (New South Wales) -Australia/Currie.standard.long=\u00D6stliche Normalzeit (New South Wales) -Australia/Darwin.daylight.long=Zentrale Sommerzeit (Northern Territory) -Australia/Darwin.generic.long=Zentrale Zeitzone (Northern Territory) -Australia/Darwin.standard.long=Zentrale Normalzeit (Northern Territory) -Australia/Eucla.daylight.long=Zentral-Westliche Sommerzeit (Australien) -Australia/Eucla.generic.long=Zentral-Westliche Normalzeit (Australien) -Australia/Eucla.standard.long=Zentral-Westliche Normalzeit (Australien) -Australia/Hobart.daylight.long=\u00D6stliche Sommerzeit (Tasmanien) -Australia/Hobart.generic.long=\u00D6stliche Zeitzone (Tasmanien) -Australia/Hobart.standard.long=\u00D6stliche Normalzeit (Tasmanien) -Australia/LHI.generic.long=Lord-Howe Normalzeit -Australia/Lindeman.daylight.long=\u00D6stliche Sommerzeit (Queensland) -Australia/Lindeman.generic.long=\u00D6stliche Zeitzone (Queensland) -Australia/Lindeman.standard.long=\u00D6stliche Normalzeit (Queensland) -Australia/Lord_Howe.generic.long=Lord-Howe Normalzeit -Australia/Melbourne.daylight.long=\u00D6stliche Sommerzeit (Victoria) -Australia/Melbourne.generic.long=\u00D6stliche Zeitzone (Victoria) -Australia/Melbourne.standard.long=\u00D6stliche Normalzeit (Victoria) -Australia/NSW.daylight.long=\u00D6stliche Sommerzeit (New South Wales) -Australia/NSW.generic.long=\u00D6stliche Zeitzone (New South Wales) -Australia/NSW.standard.long=\u00D6stliche Normalzeit (New South Wales) -Australia/North.daylight.long=Zentrale Sommerzeit (Northern Territory) -Australia/North.generic.long=Zentrale Zeitzone (Northern Territory) -Australia/North.standard.long=Zentrale Normalzeit (Northern Territory) -Australia/Perth.daylight.long=Westliche Sommerzeit (Australien) -Australia/Perth.generic.long=Westliche Zeitzone (Australien) -Australia/Perth.standard.long=Westliche Normalzeit (Australien) -Australia/Queensland.daylight.long=\u00D6stliche Sommerzeit (Queensland) -Australia/Queensland.generic.long=\u00D6stliche Zeitzone (Queensland) -Australia/Queensland.standard.long=\u00D6stliche Normalzeit (Queensland) -Australia/South.daylight.long=Zentrale Sommerzeit (S\u00FCdaustralien) -Australia/South.generic.long=Zentrale Zeitzone (S\u00FCdaustralien) -Australia/South.standard.long=Zentrale Normalzeit (S\u00FCdaustralien) -Australia/Sydney.daylight.long=\u00D6stliche Sommerzeit (New South Wales) -Australia/Sydney.generic.long=\u00D6stliche Zeitzone (New South Wales) -Australia/Sydney.standard.long=\u00D6stliche Normalzeit (New South Wales) -Australia/Tasmania.daylight.long=\u00D6stliche Sommerzeit (Tasmanien) -Australia/Tasmania.generic.long=\u00D6stliche Zeitzone (Tasmanien) -Australia/Tasmania.standard.long=\u00D6stliche Normalzeit (Tasmanien) -Australia/Victoria.daylight.long=\u00D6stliche Sommerzeit (Victoria) -Australia/Victoria.generic.long=\u00D6stliche Zeitzone (Victoria) -Australia/Victoria.standard.long=\u00D6stliche Normalzeit (Victoria) -Australia/West.daylight.long=Westliche Sommerzeit (Australien) -Australia/West.generic.long=Westliche Zeitzone (Australien) -Australia/West.standard.long=Westliche Normalzeit (Australien) -Australia/Yancowinna.daylight.long=Zentrale Sommerzeit (S\u00FCdaustralien/New South Wales) -Australia/Yancowinna.generic.long=Zentrale Zeitzone (S\u00FCdaustralien/New South Wales) -Australia/Yancowinna.standard.long=Zentrale Normalzeit (S\u00FCdaustralien/New South Wales) -BET.generic.long=Brasilianische Zeit -BST.generic.long=Bangladesch Zeit -Brazil/Acre.generic.long=Acre Normalzeit -Brazil/DeNoronha.generic.long=Fernando de Noronha Zeit -Brazil/East.generic.long=Brasilianische Zeit -Brazil/West.generic.long=Amazonas Normalzeit -CAT.generic.long=Zentralafrikanische Zeit -CET.generic.long=Mitteleurop\u00e4ische Zeit -CNT.generic.long=Zeitzone f\u00FCr Neufundland -CST.generic.long=Zentrale Zeitzone -CST6CDT.generic.long=Zentrale Zeitzone -CTT.generic.long=Zeitzone f\u00FCr China -Canada/Atlantic.generic.long=Zeitzone Atlantik -Canada/Central.generic.long=Zentrale Zeitzone -Canada/East-Saskatchewan.generic.long=Zentrale Zeitzone -Canada/Eastern.generic.long=\u00D6stliche Zeitzone -Canada/Mountain.generic.long=Zeitzone Mountain -Canada/Newfoundland.generic.long=Zeitzone f\u00FCr Neufundland -Canada/Pacific.generic.long=Zeitzone Pazifik -Canada/Saskatchewan.generic.long=Zentrale Zeitzone -Canada/Yukon.generic.long=Zeitzone Pazifik -Chile/Continental.generic.long=Chilenische Zeit -Chile/EasterIsland.generic.long=Osterinseln Zeit -Cuba.generic.long=Kubanische Normalzeit -EAT.generic.long=Ostafrikanische Zeit -ECT.generic.long=Mitteleurop\u00E4ische Zeit -EET.generic.long=Osteurop\u00e4ische Zeit -EST.generic.long=\u00d6stliche Zeitzone -EST5EDT.generic.long=\u00d6stliche Zeitzone -Egypt.generic.long=Osteurop\u00E4ische Zeit -Eire.generic.long=Irische Zeit -Etc/Greenwich.generic.long=Greenwich Zeit -Etc/UCT.generic.long=Koordinierte Universalzeit -Etc/UTC.generic.long=Koordinierte Universalzeit -Etc/Universal.generic.long=Koordinierte Universalzeit -Etc/Zulu.generic.long=Koordinierte Universalzeit -Europe/Amsterdam.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Andorra.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Athens.generic.long=Osteurop\u00E4ische Zeit -Europe/Belfast.generic.long=Britische Zeit -Europe/Belgrade.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Berlin.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Bratislava.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Brussels.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Bucharest.generic.long=Osteurop\u00E4ische Zeit -Europe/Budapest.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Busingen.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Chisinau.generic.long=Osteurop\u00E4ische Zeit -Europe/Copenhagen.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Dublin.generic.long=Irische Zeit -Europe/Gibraltar.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Guernsey.generic.long=Britische Zeit -Europe/Helsinki.generic.long=Osteurop\u00E4ische Zeit -Europe/Isle_of_Man.generic.long=Britische Zeit -Europe/Istanbul.generic.long=Osteurop\u00E4ische Zeit -Europe/Jersey.generic.long=Britische Zeit -Europe/Kaliningrad.daylight.long=Kaliningrader Sommerzeit -Europe/Kaliningrad.generic.long=Kaliningrader Zeit -Europe/Kaliningrad.standard.long=Kaliningrader Zeit -Europe/Kiev.generic.long=Osteurop\u00E4ische Zeit -Europe/Lisbon.generic.long=Westeurop\u00E4ische Zeit -Europe/Ljubljana.generic.long=Mitteleurop\u00E4ische Zeit -Europe/London.generic.long=Britische Zeit -Europe/Luxembourg.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Madrid.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Malta.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Mariehamn.generic.long=Osteurop\u00E4ische Zeit -Europe/Minsk.daylight.long=Kaliningrader Sommerzeit -Europe/Minsk.generic.long=Kaliningrader Zeit -Europe/Minsk.standard.long=Kaliningrader Zeit -Europe/Monaco.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Moscow.generic.long=Zeitzone f\u00FCr Moskau -Europe/Nicosia.generic.long=Osteurop\u00E4ische Zeit -Europe/Oslo.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Paris.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Podgorica.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Prague.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Riga.generic.long=Osteurop\u00E4ische Zeit -Europe/Rome.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Samara.generic.long=Samarische Zeit -Europe/San_Marino.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Sarajevo.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Simferopol.generic.long=Osteurop\u00E4ische Zeit -Europe/Skopje.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Sofia.generic.long=Osteurop\u00E4ische Zeit -Europe/Stockholm.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Tallinn.generic.long=Osteurop\u00E4ische Zeit -Europe/Tirane.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Tiraspol.generic.long=Osteurop\u00E4ische Zeit -Europe/Uzhgorod.generic.long=Osteurop\u00E4ische Zeit -Europe/Vaduz.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Vatican.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Vienna.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Vilnius.generic.long=Osteurop\u00E4ische Zeit -Europe/Volgograd.generic.long=Wolgograder Zeit -Europe/Warsaw.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Zagreb.generic.long=Mitteleurop\u00E4ische Zeit -Europe/Zaporozhye.generic.long=Osteurop\u00E4ische Zeit -Europe/Zurich.generic.long=Mitteleurop\u00E4ische Zeit -GB-Eire.generic.long=Britische Zeit -GB.generic.long=Britische Zeit -GMT.generic.long=Greenwich Zeit -Greenwich.generic.long=Greenwich Zeit -HST.generic.long=Zeitzone f\u00fcr Hawaii -Hongkong.generic.long=Hongkong Zeit -IET.generic.long=\u00D6stliche Zeitzone -IST.generic.long=Zeitzone f\u00FCr Indien -Iceland.generic.long=Greenwich Zeit -Indian/Antananarivo.generic.long=Ostafrikanische Zeit -Indian/Chagos.generic.long=Indischer Ozean Territorium Zeit -Indian/Christmas.generic.long=Weihnachtsinseln Zeit -Indian/Cocos.generic.long=Kokos-Inseln Zeit -Indian/Comoro.generic.long=Ostafrikanische Zeit -Indian/Kerguelen.generic.long=Franz\u00F6sisch S\u00FCd- u. Antarktische Landzeit -Indian/Mahe.generic.long=Seychellen Zeit -Indian/Maldives.generic.long=Maledivische Zeit -Indian/Mauritius.generic.long=Mauritius Zeit -Indian/Mayotte.generic.long=Ostafrikanische Zeit -Indian/Reunion.generic.long=R\u00E9union Zeit -Iran.generic.long=Iranische Zeit -Israel.generic.long=Zeitzone f\u00FCr Israel -JST.generic.long=Zeitzone f\u00FCr Japan -Jamaica.generic.long=\u00D6stliche Zeitzone -Japan.generic.long=Zeitzone f\u00FCr Japan -Kwajalein.generic.long=Marshallinseln Zeit -Libya.generic.long=Osteurop\u00e4ische Zeit -MET.generic.long=MET -MIT.generic.long=West Samoa Zeit -MST.generic.long=Zeitzone Mountain -MST7MDT.generic.long=Zeitzone Mountain -Mexico/BajaNorte.generic.long=Zeitzone Pazifik -Mexico/BajaSur.generic.long=Zeitzone Mountain -Mexico/General.generic.long=Zentrale Zeitzone -NET.generic.long=Armenische Zeit -NST.generic.long=Zeitzone f\u00FCr Neuseeland -NZ-CHAT.generic.long=Zeitzone f\u00FCr Chatham-Inseln -NZ.generic.long=Zeitzone f\u00FCr Neuseeland -Navajo.generic.long=Zeitzone Mountain -PLT.generic.long=Pakistanische Zeit -PNT.generic.long=Zeitzone Mountain -PRC.generic.long=Zeitzone f\u00FCr China -PRT.generic.long=Zeitzone Atlantik -PST.generic.long=Zeitzone Pazifik -PST8PDT.generic.long=Zeitzone Pazifik -Pacific/Apia.generic.long=West Samoa Zeit -Pacific/Auckland.generic.long=Zeitzone f\u00FCr Neuseeland -Pacific/Chatham.generic.long=Zeitzone f\u00FCr Chatham-Inseln -Pacific/Chuuk.daylight.long=Chuuk Sommerzeit -Pacific/Chuuk.generic.long=Chuuk Zeit -Pacific/Chuuk.standard.long=Chuuk Zeit -Pacific/Easter.generic.long=Osterinseln Zeit -Pacific/Efate.generic.long=Vanuatu Zeit -Pacific/Enderbury.generic.long=Phoenix Inseln Zeit -Pacific/Fakaofo.generic.long=Tokelau Zeit -Pacific/Fiji.generic.long=Fidschi Zeit -Pacific/Funafuti.generic.long=Tuvalu Zeit -Pacific/Galapagos.generic.long=Galapagos Zeit -Pacific/Gambier.generic.long=Gambier Zeit -Pacific/Guadalcanal.generic.long=Salomoninseln Zeit -Pacific/Guam.generic.long=Zeitzone f\u00FCr die Marianen -Pacific/Honolulu.generic.long=Zeitzone f\u00FCr Hawaii -Pacific/Johnston.generic.long=Zeitzone f\u00FCr Hawaii -Pacific/Kiritimati.generic.long=Line Inseln Zeit -Pacific/Kosrae.generic.long=Kosrae Zeit -Pacific/Kwajalein.generic.long=Marshallinseln Zeit -Pacific/Majuro.generic.long=Marshallinseln Zeit -Pacific/Marquesas.generic.long=Marquesas Zeit -Pacific/Midway.generic.long=Zeitzone f\u00FCr Samoa -Pacific/Nauru.generic.long=Nauru Zeit -Pacific/Niue.generic.long=Niue Zeit -Pacific/Norfolk.generic.long=Norfolk Zeit -Pacific/Noumea.generic.long=Neukaledonische Zeit -Pacific/Pago_Pago.generic.long=Zeitzone f\u00FCr Samoa -Pacific/Palau.generic.long=Palau Zeit -Pacific/Pitcairn.generic.long=Zeitzone f\u00FCr Pitcairn -Pacific/Pohnpei.daylight.long=Pohnpei Sommerzeit -Pacific/Pohnpei.generic.long=Pohnpei-Inseln Zeit -Pacific/Pohnpei.standard.long=Pohnpei Zeit -Pacific/Ponape.daylight.long=Pohnpei Sommerzeit -Pacific/Ponape.generic.long=Pohnpei-Inseln Zeit -Pacific/Ponape.standard.long=Pohnpei Zeit -Pacific/Port_Moresby.generic.long=Papua-Neuguinea Zeit -Pacific/Rarotonga.generic.long=Cook-Inseln Zeit -Pacific/Saipan.generic.long=Zeitzone f\u00FCr die Marianen -Pacific/Samoa.generic.long=Zeitzone f\u00FCr Samoa -Pacific/Tahiti.generic.long=Tahiti Zeit -Pacific/Tarawa.generic.long=Gilbert-Inseln Zeit -Pacific/Tongatapu.generic.long=Tonga Zeit -Pacific/Truk.daylight.long=Chuuk Sommerzeit -Pacific/Truk.generic.long=Chuuk Zeit -Pacific/Truk.standard.long=Chuuk Zeit -Pacific/Wake.generic.long=Wake Zeit -Pacific/Wallis.generic.long=Wallis u. Futuna Zeit -Pacific/Yap.daylight.long=Chuuk Sommerzeit -Pacific/Yap.generic.long=Chuuk Zeit -Pacific/Yap.standard.long=Chuuk Zeit -Poland.generic.long=Mitteleurop\u00E4ische Zeit -Portugal.generic.long=Westeurop\u00E4ische Zeit -ROK.generic.long=Zeitzone f\u00FCr Korea -SST.generic.long=Salomoninseln Zeit -Singapore.generic.long=Singapur Zeit -SystemV/AST4.generic.long=Zeitzone Atlantik -SystemV/AST4ADT.generic.long=Zeitzone Atlantik -SystemV/CST6.generic.long=Zentrale Zeitzone -SystemV/CST6CDT.generic.long=Zentrale Zeitzone -SystemV/EST5.generic.long=\u00D6stliche Zeitzone -SystemV/EST5EDT.generic.long=\u00D6stliche Zeitzone -SystemV/HST10.generic.long=Zeitzone f\u00FCr Hawaii -SystemV/MST7.generic.long=Zeitzone Mountain -SystemV/MST7MDT.generic.long=Zeitzone Mountain -SystemV/PST8.generic.long=Zeitzone Pazifik -SystemV/PST8PDT.generic.long=Zeitzone Pazifik -SystemV/YST9.generic.long=Zeitzone f\u00FCr Alaska -SystemV/YST9YDT.generic.long=Zeitzone f\u00FCr Alaska -Turkey.generic.long=Osteurop\u00E4ische Zeit -UCT.generic.long=Koordinierte Universalzeit -US/Alaska.generic.long=Zeitzone f\u00FCr Alaska -US/Aleutian.generic.long=Zeitzone f\u00FCr Hawaii und Al\u00EButen -US/Arizona.generic.long=Zeitzone Mountain -US/Central.generic.long=Zentrale Zeitzone -US/East-Indiana.generic.long=\u00D6stliche Zeitzone -US/Eastern.generic.long=\u00D6stliche Zeitzone -US/Hawaii.generic.long=Zeitzone f\u00FCr Hawaii -US/Indiana-Starke.generic.long=Zentrale Zeitzone -US/Michigan.generic.long=\u00D6stliche Zeitzone -US/Mountain.generic.long=Zeitzone Mountain -US/Pacific-New.generic.long=Zeitzone Pazifik -US/Pacific.generic.long=Zeitzone Pazifik -US/Samoa.generic.long=Zeitzone f\u00FCr Samoa -UTC.generic.long=Koordinierte Universalzeit -Universal.generic.long=Koordinierte Universalzeit -VST.generic.long=Indochina Zeit -W-SU.generic.long=Zeitzone f\u00FCr Moskau -WET.generic.long=Westeurop\u00e4ische Zeit -Zulu.generic.long=Koordinierte Universalzeit diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_de_short.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_de_short.properties deleted file mode 100644 index 8bbaeb45160..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_de_short.properties +++ /dev/null @@ -1,1743 +0,0 @@ -ACT.daylight.short=CST -ACT.generic.short=CT -ACT.standard.short=CST -AET.daylight.short=EST -AET.generic.short=ET -AET.standard.short=EST -Africa/Abidjan.daylight.short=GMT -Africa/Abidjan.generic.short=GMT -Africa/Abidjan.standard.short=GMT -Africa/Accra.daylight.short=GHST -Africa/Accra.generic.short=GMT -Africa/Accra.standard.short=GMT -Africa/Addis_Ababa.daylight.short=EAST -Africa/Addis_Ababa.generic.short=EAT -Africa/Addis_Ababa.standard.short=EAT -Africa/Algiers.daylight.short=MESZ -Africa/Algiers.generic.short=MEZ -Africa/Algiers.standard.short=MEZ -Africa/Asmara.daylight.short=EAST -Africa/Asmara.generic.short=EAT -Africa/Asmara.standard.short=EAT -Africa/Asmera.daylight.short=EAST -Africa/Asmera.generic.short=EAT -Africa/Asmera.standard.short=EAT -Africa/Bamako.daylight.short=GMT -Africa/Bamako.generic.short=GMT -Africa/Bamako.standard.short=GMT -Africa/Bangui.daylight.short=WAST -Africa/Bangui.generic.short=WAT -Africa/Bangui.standard.short=WAT -Africa/Banjul.daylight.short=GMT -Africa/Banjul.generic.short=GMT -Africa/Banjul.standard.short=GMT -Africa/Bissau.daylight.short=GMT -Africa/Bissau.generic.short=GMT -Africa/Bissau.standard.short=GMT -Africa/Blantyre.daylight.short=CAST -Africa/Blantyre.generic.short=CAT -Africa/Blantyre.standard.short=CAT -Africa/Brazzaville.daylight.short=WAST -Africa/Brazzaville.generic.short=WAT -Africa/Brazzaville.standard.short=WAT -Africa/Bujumbura.daylight.short=CAST -Africa/Bujumbura.generic.short=CAT -Africa/Bujumbura.standard.short=CAT -Africa/Cairo.daylight.short=OESZ -Africa/Cairo.generic.short=OEZ -Africa/Cairo.standard.short=OEZ -Africa/Casablanca.daylight.short=WESZ -Africa/Casablanca.generic.short=WEZ -Africa/Casablanca.standard.short=WEZ -Africa/Ceuta.daylight.short=MESZ -Africa/Ceuta.generic.short=MEZ -Africa/Ceuta.standard.short=MEZ -Africa/Conakry.daylight.short=GMT -Africa/Conakry.generic.short=GMT -Africa/Conakry.standard.short=GMT -Africa/Dakar.daylight.short=GMT -Africa/Dakar.generic.short=GMT -Africa/Dakar.standard.short=GMT -Africa/Dar_es_Salaam.daylight.short=EAST -Africa/Dar_es_Salaam.generic.short=EAT -Africa/Dar_es_Salaam.standard.short=EAT -Africa/Djibouti.daylight.short=EAST -Africa/Djibouti.generic.short=EAT -Africa/Djibouti.standard.short=EAT -Africa/Douala.daylight.short=WAST -Africa/Douala.generic.short=WAT -Africa/Douala.standard.short=WAT -Africa/El_Aaiun.daylight.short=WESZ -Africa/El_Aaiun.generic.short=WEZ -Africa/El_Aaiun.standard.short=WEZ -Africa/Freetown.daylight.short=SLST -Africa/Freetown.generic.short=SLT -Africa/Freetown.standard.short=GMT -Africa/Gaborone.daylight.short=CAST -Africa/Gaborone.generic.short=CAT -Africa/Gaborone.standard.short=CAT -Africa/Harare.daylight.short=CAST -Africa/Harare.generic.short=CAT -Africa/Harare.standard.short=CAT -Africa/Johannesburg.daylight.short=SAST -Africa/Johannesburg.generic.short=SAT -Africa/Johannesburg.standard.short=SAST -Africa/Juba.daylight.short=EAST -Africa/Juba.generic.short=EAT -Africa/Juba.standard.short=EAT -Africa/Kampala.daylight.short=EAST -Africa/Kampala.generic.short=EAT -Africa/Kampala.standard.short=EAT -Africa/Khartoum.daylight.short=EAST -Africa/Khartoum.generic.short=EAT -Africa/Khartoum.standard.short=EAT -Africa/Kigali.daylight.short=CAST -Africa/Kigali.generic.short=CAT -Africa/Kigali.standard.short=CAT -Africa/Kinshasa.daylight.short=WAST -Africa/Kinshasa.generic.short=WAT -Africa/Kinshasa.standard.short=WAT -Africa/Lagos.daylight.short=WAST -Africa/Lagos.generic.short=WAT -Africa/Lagos.standard.short=WAT -Africa/Libreville.daylight.short=WAST -Africa/Libreville.generic.short=WAT -Africa/Libreville.standard.short=WAT -Africa/Lome.daylight.short=GMT -Africa/Lome.generic.short=GMT -Africa/Lome.standard.short=GMT -Africa/Luanda.daylight.short=WAST -Africa/Luanda.generic.short=WAT -Africa/Luanda.standard.short=WAT -Africa/Lubumbashi.daylight.short=CAST -Africa/Lubumbashi.generic.short=CAT -Africa/Lubumbashi.standard.short=CAT -Africa/Lusaka.daylight.short=CAST -Africa/Lusaka.generic.short=CAT -Africa/Lusaka.standard.short=CAT -Africa/Malabo.daylight.short=WAST -Africa/Malabo.generic.short=WAT -Africa/Malabo.standard.short=WAT -Africa/Maputo.daylight.short=CAST -Africa/Maputo.generic.short=CAT -Africa/Maputo.standard.short=CAT -Africa/Maseru.daylight.short=SAST -Africa/Maseru.generic.short=SAT -Africa/Maseru.standard.short=SAST -Africa/Mbabane.daylight.short=SAST -Africa/Mbabane.generic.short=SAT -Africa/Mbabane.standard.short=SAST -Africa/Mogadishu.daylight.short=EAST -Africa/Mogadishu.generic.short=EAT -Africa/Mogadishu.standard.short=EAT -Africa/Monrovia.daylight.short=GMT -Africa/Monrovia.generic.short=GMT -Africa/Monrovia.standard.short=GMT -Africa/Nairobi.daylight.short=EAST -Africa/Nairobi.generic.short=EAT -Africa/Nairobi.standard.short=EAT -Africa/Ndjamena.daylight.short=WAST -Africa/Ndjamena.generic.short=WAT -Africa/Ndjamena.standard.short=WAT -Africa/Niamey.daylight.short=WAST -Africa/Niamey.generic.short=WAT -Africa/Niamey.standard.short=WAT -Africa/Nouakchott.daylight.short=GMT -Africa/Nouakchott.generic.short=GMT -Africa/Nouakchott.standard.short=GMT -Africa/Ouagadougou.daylight.short=GMT -Africa/Ouagadougou.generic.short=GMT -Africa/Ouagadougou.standard.short=GMT -Africa/Porto-Novo.daylight.short=WAST -Africa/Porto-Novo.generic.short=WAT -Africa/Porto-Novo.standard.short=WAT -Africa/Sao_Tome.daylight.short=GMT -Africa/Sao_Tome.generic.short=GMT -Africa/Sao_Tome.standard.short=GMT -Africa/Timbuktu.daylight.short=GMT -Africa/Timbuktu.generic.short=GMT -Africa/Timbuktu.standard.short=GMT -Africa/Tripoli.daylight.short=OESZ -Africa/Tripoli.generic.short=OEZ -Africa/Tripoli.standard.short=OEZ -Africa/Tunis.daylight.short=MESZ -Africa/Tunis.generic.short=MEZ -Africa/Tunis.standard.short=MEZ -Africa/Windhoek.daylight.short=WAST -Africa/Windhoek.generic.short=WAT -Africa/Windhoek.standard.short=WAT -AGT.daylight.short=ARST -AGT.generic.short=ART -AGT.standard.short=ART -America/Adak.daylight.short=HADT -America/Adak.generic.short=HAT -America/Adak.standard.short=HAST -America/Anchorage.daylight.short=AKDT -America/Anchorage.generic.short=AKT -America/Anchorage.standard.short=AKST -America/Anguilla.daylight.short=ADT -America/Anguilla.generic.short=AT -America/Anguilla.standard.short=AST -America/Antigua.daylight.short=ADT -America/Antigua.generic.short=AT -America/Antigua.standard.short=AST -America/Araguaina.daylight.short=BRST -America/Araguaina.generic.short=BRT -America/Araguaina.standard.short=BRT -America/Argentina/Buenos_Aires.daylight.short=ARST -America/Argentina/Buenos_Aires.generic.short=ART -America/Argentina/Buenos_Aires.standard.short=ART -America/Argentina/Catamarca.daylight.short=ARST -America/Argentina/Catamarca.generic.short=ART -America/Argentina/Catamarca.standard.short=ART -America/Argentina/ComodRivadavia.daylight.short=ARST -America/Argentina/ComodRivadavia.generic.short=ART -America/Argentina/ComodRivadavia.standard.short=ART -America/Argentina/Cordoba.daylight.short=ARST -America/Argentina/Cordoba.generic.short=ART -America/Argentina/Cordoba.standard.short=ART -America/Argentina/Jujuy.daylight.short=ARST -America/Argentina/Jujuy.generic.short=ART -America/Argentina/Jujuy.standard.short=ART -America/Argentina/La_Rioja.daylight.short=ARST -America/Argentina/La_Rioja.generic.short=ART -America/Argentina/La_Rioja.standard.short=ART -America/Argentina/Mendoza.daylight.short=ARST -America/Argentina/Mendoza.generic.short=ART -America/Argentina/Mendoza.standard.short=ART -America/Argentina/Rio_Gallegos.daylight.short=ARST -America/Argentina/Rio_Gallegos.generic.short=ART -America/Argentina/Rio_Gallegos.standard.short=ART -America/Argentina/Salta.daylight.short=ARST -America/Argentina/Salta.generic.short=ART -America/Argentina/Salta.standard.short=ART -America/Argentina/San_Juan.daylight.short=ARST -America/Argentina/San_Juan.generic.short=ART -America/Argentina/San_Juan.standard.short=ART -America/Argentina/San_Luis.daylight.short=ARST -America/Argentina/San_Luis.generic.short=ART -America/Argentina/San_Luis.standard.short=ART -America/Argentina/Tucuman.daylight.short=ARST -America/Argentina/Tucuman.generic.short=ART -America/Argentina/Tucuman.standard.short=ART -America/Argentina/Ushuaia.daylight.short=ARST -America/Argentina/Ushuaia.generic.short=ART -America/Argentina/Ushuaia.standard.short=ART -America/Aruba.daylight.short=ADT -America/Aruba.generic.short=AT -America/Aruba.standard.short=AST -America/Asuncion.daylight.short=PYST -America/Asuncion.generic.short=PYT -America/Asuncion.standard.short=PYT -America/Atikokan.daylight.short=EDT -America/Atikokan.generic.short=ET -America/Atikokan.standard.short=EST -America/Atka.daylight.short=HADT -America/Atka.generic.short=HAT -America/Atka.standard.short=HAST -America/Bahia_Banderas.daylight.short=CDT -America/Bahia_Banderas.generic.short=CT -America/Bahia_Banderas.standard.short=CST -America/Bahia.daylight.short=BRST -America/Bahia.generic.short=BRT -America/Bahia.standard.short=BRT -America/Barbados.daylight.short=ADT -America/Barbados.generic.short=AT -America/Barbados.standard.short=AST -America/Belem.daylight.short=BRST -America/Belem.generic.short=BRT -America/Belem.standard.short=BRT -America/Belize.daylight.short=CDT -America/Belize.generic.short=CT -America/Belize.standard.short=CST -America/Blanc-Sablon.daylight.short=ADT -America/Blanc-Sablon.generic.short=AT -America/Blanc-Sablon.standard.short=AST -America/Boa_Vista.daylight.short=AMST -America/Boa_Vista.generic.short=AMT -America/Boa_Vista.standard.short=AMT -America/Bogota.daylight.short=COST -America/Bogota.generic.short=COT -America/Bogota.standard.short=COT -America/Boise.daylight.short=MDT -America/Boise.generic.short=MT -America/Boise.standard.short=MST -America/Buenos_Aires.daylight.short=ARST -America/Buenos_Aires.generic.short=ART -America/Buenos_Aires.standard.short=ART -America/Cambridge_Bay.daylight.short=MDT -America/Cambridge_Bay.generic.short=MT -America/Cambridge_Bay.standard.short=MST -America/Campo_Grande.daylight.short=AMST -America/Campo_Grande.generic.short=AMT -America/Campo_Grande.standard.short=AMT -America/Cancun.daylight.short=CDT -America/Cancun.generic.short=CT -America/Cancun.standard.short=CST -America/Caracas.daylight.short=VEST -America/Caracas.generic.short=VET -America/Caracas.standard.short=VET -America/Catamarca.daylight.short=ARST -America/Catamarca.generic.short=ART -America/Catamarca.standard.short=ART -America/Cayenne.daylight.short=GFST -America/Cayenne.generic.short=GFT -America/Cayenne.standard.short=GFT -America/Cayman.daylight.short=EDT -America/Cayman.generic.short=ET -America/Cayman.standard.short=EST -America/Chicago.daylight.short=CDT -America/Chicago.generic.short=CT -America/Chicago.standard.short=CST -America/Chihuahua.daylight.short=MDT -America/Chihuahua.generic.short=MT -America/Chihuahua.standard.short=MST -America/Coral_Harbour.daylight.short=EDT -America/Coral_Harbour.generic.short=ET -America/Coral_Harbour.standard.short=EST -America/Cordoba.daylight.short=ARST -America/Cordoba.generic.short=ART -America/Cordoba.standard.short=ART -America/Costa_Rica.daylight.short=CDT -America/Costa_Rica.generic.short=CT -America/Costa_Rica.standard.short=CST -America/Creston.daylight.short=MDT -America/Creston.generic.short=MT -America/Creston.standard.short=MST -America/Cuiaba.daylight.short=AMST -America/Cuiaba.generic.short=AMT -America/Cuiaba.standard.short=AMT -America/Curacao.daylight.short=ADT -America/Curacao.generic.short=AT -America/Curacao.standard.short=AST -America/Danmarkshavn.daylight.short=GMT -America/Danmarkshavn.generic.short=GMT -America/Danmarkshavn.standard.short=GMT -America/Dawson_Creek.daylight.short=MDT -America/Dawson_Creek.generic.short=MT -America/Dawson_Creek.standard.short=MST -America/Dawson.daylight.short=PDT -America/Dawson.generic.short=PT -America/Dawson.standard.short=PST -America/Denver.daylight.short=MDT -America/Denver.generic.short=MT -America/Denver.standard.short=MST -America/Detroit.daylight.short=EDT -America/Detroit.generic.short=ET -America/Detroit.standard.short=EST -America/Dominica.daylight.short=ADT -America/Dominica.generic.short=AT -America/Dominica.standard.short=AST -America/Edmonton.daylight.short=MDT -America/Edmonton.generic.short=MT -America/Edmonton.standard.short=MST -America/Eirunepe.daylight.short=ACST -America/Eirunepe.generic.short=ACT -America/Eirunepe.standard.short=ACT -America/El_Salvador.daylight.short=CDT -America/El_Salvador.generic.short=CT -America/El_Salvador.standard.short=CST -America/Ensenada.daylight.short=PDT -America/Ensenada.generic.short=PT -America/Ensenada.standard.short=PST -America/Fortaleza.daylight.short=BRST -America/Fortaleza.generic.short=BRT -America/Fortaleza.standard.short=BRT -America/Fort_Wayne.daylight.short=EDT -America/Fort_Wayne.generic.short=ET -America/Fort_Wayne.standard.short=EST -America/Glace_Bay.daylight.short=ADT -America/Glace_Bay.generic.short=AT -America/Glace_Bay.standard.short=AST -America/Godthab.daylight.short=WGST -America/Godthab.generic.short=WGT -America/Godthab.standard.short=WGT -America/Goose_Bay.daylight.short=ADT -America/Goose_Bay.generic.short=AT -America/Goose_Bay.standard.short=AST -America/Grand_Turk.daylight.short=EDT -America/Grand_Turk.generic.short=ET -America/Grand_Turk.standard.short=EST -America/Grenada.daylight.short=ADT -America/Grenada.generic.short=AT -America/Grenada.standard.short=AST -America/Guadeloupe.daylight.short=ADT -America/Guadeloupe.generic.short=AT -America/Guadeloupe.standard.short=AST -America/Guatemala.daylight.short=CDT -America/Guatemala.generic.short=CT -America/Guatemala.standard.short=CST -America/Guayaquil.daylight.short=ECST -America/Guayaquil.generic.short=ECT -America/Guayaquil.standard.short=ECT -America/Guyana.daylight.short=GYST -America/Guyana.generic.short=GYT -America/Guyana.standard.short=GYT -America/Halifax.daylight.short=ADT -America/Halifax.generic.short=AT -America/Halifax.standard.short=AST -America/Havana.daylight.short=CDT -America/Havana.generic.short=CT -America/Havana.standard.short=CST -America/Hermosillo.daylight.short=MDT -America/Hermosillo.generic.short=MT -America/Hermosillo.standard.short=MST -America/Indiana/Indianapolis.daylight.short=EDT -America/Indiana/Indianapolis.generic.short=ET -America/Indiana/Indianapolis.standard.short=EST -America/Indiana/Knox.daylight.short=CDT -America/Indiana/Knox.generic.short=CT -America/Indiana/Knox.standard.short=CST -America/Indiana/Marengo.daylight.short=EDT -America/Indiana/Marengo.generic.short=ET -America/Indiana/Marengo.standard.short=EST -America/Indiana/Petersburg.daylight.short=EDT -America/Indiana/Petersburg.generic.short=ET -America/Indiana/Petersburg.standard.short=EST -America/Indianapolis.daylight.short=EDT -America/Indianapolis.generic.short=ET -America/Indianapolis.standard.short=EST -America/Indiana/Tell_City.daylight.short=CDT -America/Indiana/Tell_City.generic.short=CT -America/Indiana/Tell_City.standard.short=CST -America/Indiana/Vevay.daylight.short=EDT -America/Indiana/Vevay.generic.short=ET -America/Indiana/Vevay.standard.short=EST -America/Indiana/Vincennes.daylight.short=EDT -America/Indiana/Vincennes.generic.short=ET -America/Indiana/Vincennes.standard.short=EST -America/Indiana/Winamac.daylight.short=EDT -America/Indiana/Winamac.generic.short=ET -America/Indiana/Winamac.standard.short=EST -America/Inuvik.daylight.short=MDT -America/Inuvik.generic.short=MT -America/Inuvik.standard.short=MST -America/Iqaluit.daylight.short=EDT -America/Iqaluit.generic.short=ET -America/Iqaluit.standard.short=EST -America/Jamaica.daylight.short=EDT -America/Jamaica.generic.short=ET -America/Jamaica.standard.short=EST -America/Jujuy.daylight.short=ARST -America/Jujuy.generic.short=ART -America/Jujuy.standard.short=ART -America/Juneau.daylight.short=AKDT -America/Juneau.generic.short=AKT -America/Juneau.standard.short=AKST -America/Kentucky/Louisville.daylight.short=EDT -America/Kentucky/Louisville.generic.short=ET -America/Kentucky/Louisville.standard.short=EST -America/Kentucky/Monticello.daylight.short=EDT -America/Kentucky/Monticello.generic.short=ET -America/Kentucky/Monticello.standard.short=EST -America/Knox_IN.daylight.short=CDT -America/Knox_IN.generic.short=CT -America/Knox_IN.standard.short=CST -America/Kralendijk.daylight.short=ADT -America/Kralendijk.generic.short=AT -America/Kralendijk.standard.short=AST -America/La_Paz.daylight.short=BOST -America/La_Paz.generic.short=BOT -America/La_Paz.standard.short=BOT -America/Lima.daylight.short=PEST -America/Lima.generic.short=PET -America/Lima.standard.short=PET -America/Los_Angeles.daylight.short=PDT -America/Los_Angeles.generic.short=PT -America/Los_Angeles.standard.short=PST -America/Louisville.daylight.short=EDT -America/Louisville.generic.short=ET -America/Louisville.standard.short=EST -America/Lower_Princes.daylight.short=ADT -America/Lower_Princes.generic.short=AT -America/Lower_Princes.standard.short=AST -America/Maceio.daylight.short=BRST -America/Maceio.generic.short=BRT -America/Maceio.standard.short=BRT -America/Managua.daylight.short=CDT -America/Managua.generic.short=CT -America/Managua.standard.short=CST -America/Manaus.daylight.short=AMST -America/Manaus.generic.short=AMT -America/Manaus.standard.short=AMT -America/Marigot.daylight.short=ADT -America/Marigot.generic.short=AT -America/Marigot.standard.short=AST -America/Martinique.daylight.short=ADT -America/Martinique.generic.short=AT -America/Martinique.standard.short=AST -America/Matamoros.daylight.short=CDT -America/Matamoros.generic.short=CT -America/Matamoros.standard.short=CST -America/Mazatlan.daylight.short=MDT -America/Mazatlan.generic.short=MT -America/Mazatlan.standard.short=MST -America/Mendoza.daylight.short=ARST -America/Mendoza.generic.short=ART -America/Mendoza.standard.short=ART -America/Menominee.daylight.short=CDT -America/Menominee.generic.short=CT -America/Menominee.standard.short=CST -America/Merida.daylight.short=CDT -America/Merida.generic.short=CT -America/Merida.standard.short=CST -America/Metlakatla.daylight.short=MeDT -America/Metlakatla.generic.short=MeT -America/Metlakatla.standard.short=MeST -America/Mexico_City.daylight.short=CDT -America/Mexico_City.generic.short=CT -America/Mexico_City.standard.short=CST -America/Miquelon.daylight.short=PMDT -America/Miquelon.generic.short=PMT -America/Miquelon.standard.short=PMST -America/Moncton.daylight.short=ADT -America/Moncton.generic.short=AT -America/Moncton.standard.short=AST -America/Monterrey.daylight.short=CDT -America/Monterrey.generic.short=CT -America/Monterrey.standard.short=CST -America/Montevideo.daylight.short=UYST -America/Montevideo.generic.short=UYT -America/Montevideo.standard.short=UYT -America/Montreal.daylight.short=EDT -America/Montreal.generic.short=ET -America/Montreal.standard.short=EST -America/Montserrat.daylight.short=ADT -America/Montserrat.generic.short=AT -America/Montserrat.standard.short=AST -America/Nassau.daylight.short=EDT -America/Nassau.generic.short=ET -America/Nassau.standard.short=EST -America/New_York.daylight.short=EDT -America/New_York.generic.short=ET -America/New_York.standard.short=EST -America/Nipigon.daylight.short=EDT -America/Nipigon.generic.short=ET -America/Nipigon.standard.short=EST -America/Nome.daylight.short=AKDT -America/Nome.generic.short=AKT -America/Nome.standard.short=AKST -America/Noronha.daylight.short=FNST -America/Noronha.generic.short=FNT -America/Noronha.standard.short=FNT -America/North_Dakota/Beulah.daylight.short=CDT -America/North_Dakota/Beulah.generic.short=CT -America/North_Dakota/Beulah.standard.short=CST -America/North_Dakota/Center.daylight.short=CDT -America/North_Dakota/Center.generic.short=CT -America/North_Dakota/Center.standard.short=CST -America/North_Dakota/New_Salem.daylight.short=CDT -America/North_Dakota/New_Salem.generic.short=CT -America/North_Dakota/New_Salem.standard.short=CST -America/Ojinaga.daylight.short=MDT -America/Ojinaga.generic.short=MT -America/Ojinaga.standard.short=MST -America/Panama.daylight.short=EDT -America/Panama.generic.short=ET -America/Panama.standard.short=EST -America/Pangnirtung.daylight.short=EDT -America/Pangnirtung.generic.short=ET -America/Pangnirtung.standard.short=EST -America/Paramaribo.daylight.short=SRST -America/Paramaribo.generic.short=SRT -America/Paramaribo.standard.short=SRT -America/Phoenix.daylight.short=MDT -America/Phoenix.generic.short=MT -America/Phoenix.standard.short=MST -America/Port-au-Prince.daylight.short=EDT -America/Port-au-Prince.generic.short=ET -America/Port-au-Prince.standard.short=EST -America/Porto_Acre.daylight.short=ACST -America/Porto_Acre.generic.short=ACT -America/Porto_Acre.standard.short=ACT -America/Port_of_Spain.daylight.short=ADT -America/Port_of_Spain.generic.short=AT -America/Port_of_Spain.standard.short=AST -America/Porto_Velho.daylight.short=AMST -America/Porto_Velho.generic.short=AMT -America/Porto_Velho.standard.short=AMT -America/Puerto_Rico.daylight.short=ADT -America/Puerto_Rico.generic.short=AT -America/Puerto_Rico.standard.short=AST -America/Rainy_River.daylight.short=CDT -America/Rainy_River.generic.short=CT -America/Rainy_River.standard.short=CST -America/Rankin_Inlet.daylight.short=CDT -America/Rankin_Inlet.generic.short=CT -America/Rankin_Inlet.standard.short=CST -America/Recife.daylight.short=BRST -America/Recife.generic.short=BRT -America/Recife.standard.short=BRT -America/Regina.daylight.short=CDT -America/Regina.generic.short=CT -America/Regina.standard.short=CST -America/Resolute.daylight.short=CDT -America/Resolute.generic.short=CT -America/Resolute.standard.short=CST -America/Rio_Branco.daylight.short=ACST -America/Rio_Branco.generic.short=ACT -America/Rio_Branco.standard.short=ACT -America/Rosario.daylight.short=ARST -America/Rosario.generic.short=ART -America/Rosario.standard.short=ART -America/Santa_Isabel.daylight.short=PDT -America/Santa_Isabel.generic.short=PT -America/Santa_Isabel.standard.short=PST -America/Santarem.daylight.short=BRST -America/Santarem.generic.short=BRT -America/Santarem.standard.short=BRT -America/Santiago.daylight.short=CLST -America/Santiago.generic.short=CLT -America/Santiago.standard.short=CLT -America/Santo_Domingo.daylight.short=ADT -America/Santo_Domingo.generic.short=AT -America/Santo_Domingo.standard.short=AST -America/Sao_Paulo.daylight.short=BRST -America/Sao_Paulo.generic.short=BRT -America/Sao_Paulo.standard.short=BRT -America/Scoresbysund.daylight.short=EGST -America/Scoresbysund.generic.short=EGT -America/Scoresbysund.standard.short=EGT -America/Shiprock.daylight.short=MDT -America/Shiprock.generic.short=MT -America/Shiprock.standard.short=MST -America/Sitka.daylight.short=AKDT -America/Sitka.generic.short=AKT -America/Sitka.standard.short=AKST -America/St_Barthelemy.daylight.short=ADT -America/St_Barthelemy.generic.short=AT -America/St_Barthelemy.standard.short=AST -America/St_Johns.daylight.short=NDT -America/St_Johns.generic.short=NT -America/St_Johns.standard.short=NST -America/St_Kitts.daylight.short=ADT -America/St_Kitts.generic.short=AT -America/St_Kitts.standard.short=AST -America/St_Lucia.daylight.short=ADT -America/St_Lucia.generic.short=AT -America/St_Lucia.standard.short=AST -America/St_Thomas.daylight.short=ADT -America/St_Thomas.generic.short=AT -America/St_Thomas.standard.short=AST -America/St_Vincent.daylight.short=ADT -America/St_Vincent.generic.short=AT -America/St_Vincent.standard.short=AST -America/Swift_Current.daylight.short=CDT -America/Swift_Current.generic.short=CT -America/Swift_Current.standard.short=CST -America/Tegucigalpa.daylight.short=CDT -America/Tegucigalpa.generic.short=CT -America/Tegucigalpa.standard.short=CST -America/Thule.daylight.short=ADT -America/Thule.generic.short=AT -America/Thule.standard.short=AST -America/Thunder_Bay.daylight.short=EDT -America/Thunder_Bay.generic.short=ET -America/Thunder_Bay.standard.short=EST -America/Tijuana.daylight.short=PDT -America/Tijuana.generic.short=PT -America/Tijuana.standard.short=PST -America/Toronto.daylight.short=EDT -America/Toronto.generic.short=ET -America/Toronto.standard.short=EST -America/Tortola.daylight.short=ADT -America/Tortola.generic.short=AT -America/Tortola.standard.short=AST -America/Vancouver.daylight.short=PDT -America/Vancouver.generic.short=PT -America/Vancouver.standard.short=PST -America/Virgin.daylight.short=ADT -America/Virgin.generic.short=AT -America/Virgin.standard.short=AST -America/Whitehorse.daylight.short=PDT -America/Whitehorse.generic.short=PT -America/Whitehorse.standard.short=PST -America/Winnipeg.daylight.short=CDT -America/Winnipeg.generic.short=CT -America/Winnipeg.standard.short=CST -America/Yakutat.daylight.short=AKDT -America/Yakutat.generic.short=AKT -America/Yakutat.standard.short=AKST -America/Yellowknife.daylight.short=MDT -America/Yellowknife.generic.short=MT -America/Yellowknife.standard.short=MST -Antarctica/Casey.daylight.short=WST -Antarctica/Casey.generic.short=WT -Antarctica/Casey.standard.short=WST -Antarctica/Davis.daylight.short=DAVST -Antarctica/Davis.generic.short=DAVT -Antarctica/Davis.standard.short=DAVT -Antarctica/DumontDUrville.daylight.short=DDUST -Antarctica/DumontDUrville.generic.short=DDUT -Antarctica/DumontDUrville.standard.short=DDUT -Antarctica/Macquarie.daylight.short=MIST -Antarctica/Macquarie.generic.short=MIST -Antarctica/Macquarie.standard.short=MIST -Antarctica/Mawson.daylight.short=MAWST -Antarctica/Mawson.generic.short=MAWT -Antarctica/Mawson.standard.short=MAWT -Antarctica/McMurdo.daylight.short=NZDT -Antarctica/McMurdo.generic.short=NZT -Antarctica/McMurdo.standard.short=NZST -Antarctica/Palmer.daylight.short=CLST -Antarctica/Palmer.generic.short=CLT -Antarctica/Palmer.standard.short=CLT -Antarctica/Rothera.daylight.short=ROTST -Antarctica/Rothera.generic.short=ROTT -Antarctica/Rothera.standard.short=ROTT -Antarctica/South_Pole.daylight.short=NZDT -Antarctica/South_Pole.generic.short=NZT -Antarctica/South_Pole.standard.short=NZST -Antarctica/Syowa.daylight.short=SYOST -Antarctica/Syowa.generic.short=SYOT -Antarctica/Syowa.standard.short=SYOT -Antarctica/Vostok.daylight.short=VOSST -Antarctica/Vostok.generic.short=VOST -Antarctica/Vostok.standard.short=VOST -Arctic/Longyearbyen.daylight.short=MESZ -Arctic/Longyearbyen.generic.short=MEZ -Arctic/Longyearbyen.standard.short=MEZ -ART.daylight.short=OESZ -ART.generic.short=OEZ -ART.standard.short=OEZ -Asia/Aden.daylight.short=ADT -Asia/Aden.generic.short=AT -Asia/Aden.standard.short=AST -Asia/Almaty.daylight.short=ALMST -Asia/Almaty.generic.short=ALMT -Asia/Almaty.standard.short=ALMT -Asia/Amman.daylight.short=ADT -Asia/Amman.generic.short=AT -Asia/Amman.standard.short=AST -Asia/Anadyr.daylight.short=ANAST -Asia/Anadyr.generic.short=ANAT -Asia/Anadyr.standard.short=ANAT -Asia/Aqtau.daylight.short=AQTST -Asia/Aqtau.generic.short=AQTT -Asia/Aqtau.standard.short=AQTT -Asia/Aqtobe.daylight.short=AQTST -Asia/Aqtobe.generic.short=AQTT -Asia/Aqtobe.standard.short=AQTT -Asia/Ashgabat.daylight.short=TMST -Asia/Ashgabat.generic.short=TMT -Asia/Ashgabat.standard.short=TMT -Asia/Ashkhabad.daylight.short=TMST -Asia/Ashkhabad.generic.short=TMT -Asia/Ashkhabad.standard.short=TMT -Asia/Baghdad.daylight.short=ADT -Asia/Baghdad.generic.short=AT -Asia/Baghdad.standard.short=AST -Asia/Bahrain.daylight.short=ADT -Asia/Bahrain.generic.short=AT -Asia/Bahrain.standard.short=AST -Asia/Baku.daylight.short=AZST -Asia/Baku.generic.short=AZT -Asia/Baku.standard.short=AZT -Asia/Bangkok.daylight.short=ICST -Asia/Bangkok.generic.short=ICT -Asia/Bangkok.standard.short=ICT -Asia/Beirut.daylight.short=OESZ -Asia/Beirut.generic.short=OEZ -Asia/Beirut.standard.short=OEZ -Asia/Bishkek.daylight.short=KGST -Asia/Bishkek.generic.short=KGT -Asia/Bishkek.standard.short=KGT -Asia/Brunei.daylight.short=BNST -Asia/Brunei.generic.short=BNT -Asia/Brunei.standard.short=BNT -Asia/Calcutta.daylight.short=IDT -Asia/Calcutta.generic.short=IT -Asia/Calcutta.standard.short=IST -Asia/Choibalsan.daylight.short=CHOST -Asia/Choibalsan.generic.short=CHOT -Asia/Choibalsan.standard.short=CHOT -Asia/Chongqing.daylight.short=CDT -Asia/Chongqing.generic.short=CT -Asia/Chongqing.standard.short=CST -Asia/Chungking.daylight.short=CDT -Asia/Chungking.generic.short=CT -Asia/Chungking.standard.short=CST -Asia/Colombo.daylight.short=IDT -Asia/Colombo.generic.short=IT -Asia/Colombo.standard.short=IST -Asia/Dacca.daylight.short=BDST -Asia/Dacca.generic.short=BDT -Asia/Dacca.standard.short=BDT -Asia/Damascus.daylight.short=OESZ -Asia/Damascus.generic.short=OEZ -Asia/Damascus.standard.short=OEZ -Asia/Dhaka.daylight.short=BDST -Asia/Dhaka.generic.short=BDT -Asia/Dhaka.standard.short=BDT -Asia/Dili.daylight.short=TLST -Asia/Dili.generic.short=TLT -Asia/Dili.standard.short=TLT -Asia/Dubai.daylight.short=GDT -Asia/Dubai.generic.short=GT -Asia/Dubai.standard.short=GST -Asia/Dushanbe.daylight.short=TJST -Asia/Dushanbe.generic.short=TJT -Asia/Dushanbe.standard.short=TJT -Asia/Gaza.daylight.short=OESZ -Asia/Gaza.generic.short=OEZ -Asia/Gaza.standard.short=OEZ -Asia/Harbin.daylight.short=CDT -Asia/Harbin.generic.short=CT -Asia/Harbin.standard.short=CST -Asia/Hebron.daylight.short=OESZ -Asia/Hebron.generic.short=OEZ -Asia/Hebron.standard.short=OEZ -Asia/Ho_Chi_Minh.daylight.short=ICST -Asia/Ho_Chi_Minh.generic.short=ICT -Asia/Ho_Chi_Minh.standard.short=ICT -Asia/Hong_Kong.daylight.short=HKST -Asia/Hong_Kong.generic.short=HKT -Asia/Hong_Kong.standard.short=HKT -Asia/Hovd.daylight.short=HOVST -Asia/Hovd.generic.short=HOVT -Asia/Hovd.standard.short=HOVT -Asia/Irkutsk.daylight.short=IRKST -Asia/Irkutsk.generic.short=IRKT -Asia/Irkutsk.standard.short=IRKT -Asia/Istanbul.daylight.short=OESZ -Asia/Istanbul.generic.short=OEZ -Asia/Istanbul.standard.short=OEZ -Asia/Jakarta.daylight.short=WIST -Asia/Jakarta.generic.short=WIB -Asia/Jakarta.standard.short=WIB -Asia/Jayapura.daylight.short=EIST -Asia/Jayapura.generic.short=WIT -Asia/Jayapura.standard.short=WIT -Asia/Jerusalem.daylight.short=IDT -Asia/Jerusalem.generic.short=IT -Asia/Jerusalem.standard.short=IST -Asia/Kabul.daylight.short=AFST -Asia/Kabul.generic.short=AFT -Asia/Kabul.standard.short=AFT -Asia/Kamchatka.daylight.short=PETST -Asia/Kamchatka.generic.short=PETT -Asia/Kamchatka.standard.short=PETT -Asia/Karachi.daylight.short=PKST -Asia/Karachi.generic.short=PKT -Asia/Karachi.standard.short=PKT -Asia/Kashgar.daylight.short=CDT -Asia/Kashgar.generic.short=CT -Asia/Kashgar.standard.short=CST -Asia/Kathmandu.daylight.short=NPST -Asia/Kathmandu.generic.short=NPT -Asia/Kathmandu.standard.short=NPT -Asia/Katmandu.daylight.short=NPST -Asia/Katmandu.generic.short=NPT -Asia/Katmandu.standard.short=NPT -Asia/Khandyga.daylight.short=YAKST -Asia/Khandyga.generic.short=YAKT -Asia/Khandyga.standard.short=YAKT -Asia/Kolkata.daylight.short=IDT -Asia/Kolkata.generic.short=IT -Asia/Kolkata.standard.short=IST -Asia/Krasnoyarsk.daylight.short=KRAST -Asia/Krasnoyarsk.generic.short=KRAT -Asia/Krasnoyarsk.standard.short=KRAT -Asia/Kuala_Lumpur.daylight.short=MYST -Asia/Kuala_Lumpur.generic.short=MYT -Asia/Kuala_Lumpur.standard.short=MYT -Asia/Kuching.daylight.short=MYST -Asia/Kuching.generic.short=MYT -Asia/Kuching.standard.short=MYT -Asia/Kuwait.daylight.short=ADT -Asia/Kuwait.generic.short=AT -Asia/Kuwait.standard.short=AST -Asia/Macao.daylight.short=CDT -Asia/Macao.generic.short=CT -Asia/Macao.standard.short=CST -Asia/Macau.daylight.short=CDT -Asia/Macau.generic.short=CT -Asia/Macau.standard.short=CST -Asia/Magadan.daylight.short=MAGST -Asia/Magadan.generic.short=MAGT -Asia/Magadan.standard.short=MAGT -Asia/Makassar.daylight.short=CIST -Asia/Makassar.generic.short=WITA -Asia/Makassar.standard.short=WITA -Asia/Manila.daylight.short=PHST -Asia/Manila.generic.short=PHT -Asia/Manila.standard.short=PHT -Asia/Muscat.daylight.short=GDT -Asia/Muscat.generic.short=GT -Asia/Muscat.standard.short=GST -Asia/Nicosia.daylight.short=OESZ -Asia/Nicosia.generic.short=OEZ -Asia/Nicosia.standard.short=OEZ -Asia/Novokuznetsk.daylight.short=NOVST -Asia/Novokuznetsk.generic.short=NOVT -Asia/Novokuznetsk.standard.short=NOVT -Asia/Novosibirsk.daylight.short=NOVST -Asia/Novosibirsk.generic.short=NOVT -Asia/Novosibirsk.standard.short=NOVT -Asia/Omsk.daylight.short=OMSST -Asia/Omsk.generic.short=OMST -Asia/Omsk.standard.short=OMST -Asia/Oral.daylight.short=ORAST -Asia/Oral.generic.short=ORAT -Asia/Oral.standard.short=ORAT -Asia/Phnom_Penh.daylight.short=ICST -Asia/Phnom_Penh.generic.short=ICT -Asia/Phnom_Penh.standard.short=ICT -Asia/Pontianak.daylight.short=WIST -Asia/Pontianak.generic.short=WIB -Asia/Pontianak.standard.short=WIB -Asia/Pyongyang.daylight.short=KDT -Asia/Pyongyang.generic.short=KT -Asia/Pyongyang.standard.short=KST -Asia/Qatar.daylight.short=ADT -Asia/Qatar.generic.short=AT -Asia/Qatar.standard.short=AST -Asia/Qyzylorda.daylight.short=QYZST -Asia/Qyzylorda.generic.short=QYZT -Asia/Qyzylorda.standard.short=QYZT -Asia/Rangoon.daylight.short=MMST -Asia/Rangoon.generic.short=MMT -Asia/Rangoon.standard.short=MMT -Asia/Saigon.daylight.short=ICST -Asia/Saigon.generic.short=ICT -Asia/Saigon.standard.short=ICT -Asia/Sakhalin.daylight.short=SAKST -Asia/Sakhalin.generic.short=SAKT -Asia/Sakhalin.standard.short=SAKT -Asia/Samarkand.daylight.short=UZST -Asia/Samarkand.generic.short=UZT -Asia/Samarkand.standard.short=UZT -Asia/Seoul.daylight.short=KDT -Asia/Seoul.generic.short=KT -Asia/Seoul.standard.short=KST -Asia/Shanghai.daylight.short=CDT -Asia/Shanghai.generic.short=CT -Asia/Shanghai.standard.short=CST -Asia/Singapore.daylight.short=SGST -Asia/Singapore.generic.short=SGT -Asia/Singapore.standard.short=SGT -Asia/Taipei.daylight.short=CDT -Asia/Taipei.generic.short=CT -Asia/Taipei.standard.short=CST -Asia/Tashkent.daylight.short=UZST -Asia/Tashkent.generic.short=UZT -Asia/Tashkent.standard.short=UZT -Asia/Tbilisi.daylight.short=GEST -Asia/Tbilisi.generic.short=GET -Asia/Tbilisi.standard.short=GET -Asia/Tehran.daylight.short=IRDT -Asia/Tehran.generic.short=IRT -Asia/Tehran.standard.short=IRST -Asia/Tel_Aviv.daylight.short=IDT -Asia/Tel_Aviv.generic.short=IT -Asia/Tel_Aviv.standard.short=IST -Asia/Thimbu.daylight.short=BTST -Asia/Thimbu.generic.short=BTT -Asia/Thimbu.standard.short=BTT -Asia/Thimphu.daylight.short=BTST -Asia/Thimphu.generic.short=BTT -Asia/Thimphu.standard.short=BTT -Asia/Tokyo.daylight.short=JDT -Asia/Tokyo.generic.short=JT -Asia/Tokyo.standard.short=JST -Asia/Ujung_Pandang.daylight.short=CIST -Asia/Ujung_Pandang.generic.short=WITA -Asia/Ujung_Pandang.standard.short=WITA -Asia/Ulaanbaatar.daylight.short=ULAST -Asia/Ulaanbaatar.generic.short=ULAT -Asia/Ulaanbaatar.standard.short=ULAT -Asia/Ulan_Bator.daylight.short=ULAST -Asia/Ulan_Bator.generic.short=ULAT -Asia/Ulan_Bator.standard.short=ULAT -Asia/Urumqi.daylight.short=CDT -Asia/Urumqi.generic.short=CT -Asia/Urumqi.standard.short=CST -Asia/Ust-Nera.daylight.short=VLAST -Asia/Ust-Nera.generic.short=VLAT -Asia/Ust-Nera.standard.short=VLAT -Asia/Vientiane.daylight.short=ICST -Asia/Vientiane.generic.short=ICT -Asia/Vientiane.standard.short=ICT -Asia/Vladivostok.daylight.short=VLAST -Asia/Vladivostok.generic.short=VLAT -Asia/Vladivostok.standard.short=VLAT -Asia/Yakutsk.daylight.short=YAKST -Asia/Yakutsk.generic.short=YAKT -Asia/Yakutsk.standard.short=YAKT -Asia/Yekaterinburg.daylight.short=YEKST -Asia/Yekaterinburg.generic.short=YEKT -Asia/Yekaterinburg.standard.short=YEKT -Asia/Yerevan.daylight.short=AMST -Asia/Yerevan.generic.short=AMT -Asia/Yerevan.standard.short=AMT -AST.daylight.short=AKDT -AST.generic.short=AKT -AST.standard.short=AKST -Atlantic/Azores.daylight.short=AZOST -Atlantic/Azores.generic.short=AZOT -Atlantic/Azores.standard.short=AZOT -Atlantic/Bermuda.daylight.short=ADT -Atlantic/Bermuda.generic.short=AT -Atlantic/Bermuda.standard.short=AST -Atlantic/Canary.daylight.short=WESZ -Atlantic/Canary.generic.short=WEZ -Atlantic/Canary.standard.short=WEZ -Atlantic/Cape_Verde.daylight.short=CVST -Atlantic/Cape_Verde.generic.short=CVT -Atlantic/Cape_Verde.standard.short=CVT -Atlantic/Faeroe.daylight.short=WESZ -Atlantic/Faeroe.generic.short=WEZ -Atlantic/Faeroe.standard.short=WEZ -Atlantic/Faroe.daylight.short=WESZ -Atlantic/Faroe.generic.short=WEZ -Atlantic/Faroe.standard.short=WEZ -Atlantic/Jan_Mayen.daylight.short=MESZ -Atlantic/Jan_Mayen.generic.short=MEZ -Atlantic/Jan_Mayen.standard.short=MEZ -Atlantic/Madeira.daylight.short=WESZ -Atlantic/Madeira.generic.short=WEZ -Atlantic/Madeira.standard.short=WEZ -Atlantic/Reykjavik.daylight.short=GMT -Atlantic/Reykjavik.generic.short=GMT -Atlantic/Reykjavik.standard.short=GMT -Atlantic/South_Georgia.daylight.short=GDT -Atlantic/South_Georgia.generic.short=GT -Atlantic/South_Georgia.standard.short=GST -Atlantic/Stanley.daylight.short=FKST -Atlantic/Stanley.generic.short=FKT -Atlantic/Stanley.standard.short=FKT -Atlantic/St_Helena.daylight.short=GMT -Atlantic/St_Helena.generic.short=GMT -Atlantic/St_Helena.standard.short=GMT -Australia/ACT.daylight.short=EST -Australia/ACT.generic.short=ET -Australia/ACT.standard.short=EST -Australia/Adelaide.daylight.short=CST -Australia/Adelaide.generic.short=CT -Australia/Adelaide.standard.short=CST -Australia/Brisbane.daylight.short=EST -Australia/Brisbane.generic.short=ET -Australia/Brisbane.standard.short=EST -Australia/Broken_Hill.daylight.short=CST -Australia/Broken_Hill.generic.short=CT -Australia/Broken_Hill.standard.short=CST -Australia/Canberra.daylight.short=EST -Australia/Canberra.generic.short=ET -Australia/Canberra.standard.short=EST -Australia/Currie.daylight.short=EST -Australia/Currie.generic.short=ET -Australia/Currie.standard.short=EST -Australia/Darwin.daylight.short=CST -Australia/Darwin.generic.short=CT -Australia/Darwin.standard.short=CST -Australia/Eucla.daylight.short=CWST -Australia/Eucla.generic.short=CWT -Australia/Eucla.standard.short=CWST -Australia/Hobart.daylight.short=EST -Australia/Hobart.generic.short=ET -Australia/Hobart.standard.short=EST -Australia/LHI.daylight.short=LHST -Australia/LHI.generic.short=LHT -Australia/LHI.standard.short=LHST -Australia/Lindeman.daylight.short=EST -Australia/Lindeman.generic.short=ET -Australia/Lindeman.standard.short=EST -Australia/Lord_Howe.daylight.short=LHST -Australia/Lord_Howe.generic.short=LHT -Australia/Lord_Howe.standard.short=LHST -Australia/Melbourne.daylight.short=EST -Australia/Melbourne.generic.short=ET -Australia/Melbourne.standard.short=EST -Australia/North.daylight.short=CST -Australia/North.generic.short=CT -Australia/North.standard.short=CST -Australia/NSW.daylight.short=EST -Australia/NSW.generic.short=ET -Australia/NSW.standard.short=EST -Australia/Perth.daylight.short=WST -Australia/Perth.generic.short=WT -Australia/Perth.standard.short=WST -Australia/Queensland.daylight.short=EST -Australia/Queensland.generic.short=ET -Australia/Queensland.standard.short=EST -Australia/South.daylight.short=CST -Australia/South.generic.short=CT -Australia/South.standard.short=CST -Australia/Sydney.daylight.short=EST -Australia/Sydney.generic.short=ET -Australia/Sydney.standard.short=EST -Australia/Tasmania.daylight.short=EST -Australia/Tasmania.generic.short=ET -Australia/Tasmania.standard.short=EST -Australia/Victoria.daylight.short=EST -Australia/Victoria.generic.short=ET -Australia/Victoria.standard.short=EST -Australia/West.daylight.short=WST -Australia/West.generic.short=WT -Australia/West.standard.short=WST -Australia/Yancowinna.daylight.short=CST -Australia/Yancowinna.generic.short=CT -Australia/Yancowinna.standard.short=CST -BET.daylight.short=BRST -BET.generic.short=BRT -BET.standard.short=BRT -Brazil/Acre.daylight.short=ACST -Brazil/Acre.generic.short=ACT -Brazil/Acre.standard.short=ACT -Brazil/DeNoronha.daylight.short=FNST -Brazil/DeNoronha.generic.short=FNT -Brazil/DeNoronha.standard.short=FNT -Brazil/East.daylight.short=BRST -Brazil/East.generic.short=BRT -Brazil/East.standard.short=BRT -Brazil/West.daylight.short=AMST -Brazil/West.generic.short=AMT -Brazil/West.standard.short=AMT -BST.daylight.short=BDST -BST.generic.short=BDT -BST.standard.short=BDT -Canada/Atlantic.daylight.short=ADT -Canada/Atlantic.generic.short=AT -Canada/Atlantic.standard.short=AST -Canada/Central.daylight.short=CDT -Canada/Central.generic.short=CT -Canada/Central.standard.short=CST -Canada/Eastern.daylight.short=EDT -Canada/Eastern.generic.short=ET -Canada/Eastern.standard.short=EST -Canada/East-Saskatchewan.daylight.short=CDT -Canada/East-Saskatchewan.generic.short=CT -Canada/East-Saskatchewan.standard.short=CST -Canada/Mountain.daylight.short=MDT -Canada/Mountain.generic.short=MT -Canada/Mountain.standard.short=MST -Canada/Newfoundland.daylight.short=NDT -Canada/Newfoundland.generic.short=NT -Canada/Newfoundland.standard.short=NST -Canada/Pacific.daylight.short=PDT -Canada/Pacific.generic.short=PT -Canada/Pacific.standard.short=PST -Canada/Saskatchewan.daylight.short=CDT -Canada/Saskatchewan.generic.short=CT -Canada/Saskatchewan.standard.short=CST -Canada/Yukon.daylight.short=PDT -Canada/Yukon.generic.short=PT -Canada/Yukon.standard.short=PST -CAT.daylight.short=CAST -CAT.generic.short=CAT -CAT.standard.short=CAT -CET.daylight.short=MESZ -CET.generic.short=MEZ -CET.standard.short=MEZ -Chile/Continental.daylight.short=CLST -Chile/Continental.generic.short=CLT -Chile/Continental.standard.short=CLT -Chile/EasterIsland.daylight.short=EASST -Chile/EasterIsland.generic.short=EAST -Chile/EasterIsland.standard.short=EAST -CNT.daylight.short=NDT -CNT.generic.short=NT -CNT.standard.short=NST -CST6CDT.daylight.short=CDT -CST6CDT.generic.short=CT -CST6CDT.standard.short=CST -CST.daylight.short=CDT -CST.generic.short=CT -CST.standard.short=CST -CTT.daylight.short=CDT -CTT.generic.short=CT -CTT.standard.short=CST -Cuba.daylight.short=CDT -Cuba.generic.short=CT -Cuba.standard.short=CST -EAT.daylight.short=EAST -EAT.generic.short=EAT -EAT.standard.short=EAT -ECT.daylight.short=MESZ -ECT.generic.short=MEZ -ECT.standard.short=MEZ -EET.daylight.short=OESZ -EET.generic.short=OEZ -EET.standard.short=OEZ -Egypt.daylight.short=OESZ -Egypt.generic.short=OEZ -Egypt.standard.short=OEZ -Eire.daylight.short=IST -Eire.generic.short=IT -Eire.standard.short=GMT -EST5EDT.daylight.short=EDT -EST5EDT.generic.short=ET -EST5EDT.standard.short=EST -EST.daylight.short=EDT -EST.generic.short=ET -EST.standard.short=EST -Etc/Greenwich.daylight.short=GMT -Etc/Greenwich.generic.short=GMT -Etc/Greenwich.standard.short=GMT -Etc/UCT.daylight.short=UTC -Etc/UCT.generic.short=UTC -Etc/UCT.standard.short=UTC -Etc/Universal.daylight.short=UTC -Etc/Universal.generic.short=UTC -Etc/Universal.standard.short=UTC -Etc/UTC.daylight.short=UTC -Etc/UTC.generic.short=UTC -Etc/UTC.standard.short=UTC -Etc/Zulu.daylight.short=UTC -Etc/Zulu.generic.short=UTC -Etc/Zulu.standard.short=UTC -Europe/Amsterdam.daylight.short=MESZ -Europe/Amsterdam.generic.short=MEZ -Europe/Amsterdam.standard.short=MEZ -Europe/Andorra.daylight.short=MESZ -Europe/Andorra.generic.short=MEZ -Europe/Andorra.standard.short=MEZ -Europe/Athens.daylight.short=OESZ -Europe/Athens.generic.short=OEZ -Europe/Athens.standard.short=OEZ -Europe/Belfast.daylight.short=BST -Europe/Belfast.generic.short=BT -Europe/Belfast.standard.short=GMT -Europe/Belgrade.daylight.short=MESZ -Europe/Belgrade.generic.short=MEZ -Europe/Belgrade.standard.short=MEZ -Europe/Berlin.daylight.short=MESZ -Europe/Berlin.generic.short=MEZ -Europe/Berlin.standard.short=MEZ -Europe/Bratislava.daylight.short=MESZ -Europe/Bratislava.generic.short=MEZ -Europe/Bratislava.standard.short=MEZ -Europe/Brussels.daylight.short=MESZ -Europe/Brussels.generic.short=MEZ -Europe/Brussels.standard.short=MEZ -Europe/Bucharest.daylight.short=OESZ -Europe/Bucharest.generic.short=OEZ -Europe/Bucharest.standard.short=OEZ -Europe/Budapest.daylight.short=MESZ -Europe/Budapest.generic.short=MEZ -Europe/Budapest.standard.short=MEZ -Europe/Busingen.daylight.short=MESZ -Europe/Busingen.generic.short=MEZ -Europe/Busingen.standard.short=MEZ -Europe/Chisinau.daylight.short=OESZ -Europe/Chisinau.generic.short=OEZ -Europe/Chisinau.standard.short=OEZ -Europe/Copenhagen.daylight.short=MESZ -Europe/Copenhagen.generic.short=MEZ -Europe/Copenhagen.standard.short=MEZ -Europe/Dublin.daylight.short=IST -Europe/Dublin.generic.short=IT -Europe/Dublin.standard.short=GMT -Europe/Gibraltar.daylight.short=MESZ -Europe/Gibraltar.generic.short=MEZ -Europe/Gibraltar.standard.short=MEZ -Europe/Guernsey.daylight.short=BST -Europe/Guernsey.generic.short=BT -Europe/Guernsey.standard.short=GMT -Europe/Helsinki.daylight.short=OESZ -Europe/Helsinki.generic.short=OEZ -Europe/Helsinki.standard.short=OEZ -Europe/Isle_of_Man.daylight.short=BST -Europe/Isle_of_Man.generic.short=BT -Europe/Isle_of_Man.standard.short=GMT -Europe/Istanbul.daylight.short=OESZ -Europe/Istanbul.generic.short=OEZ -Europe/Istanbul.standard.short=OEZ -Europe/Jersey.daylight.short=BST -Europe/Jersey.generic.short=BT -Europe/Jersey.standard.short=GMT -Europe/Kaliningrad.daylight.short=FEST -Europe/Kaliningrad.generic.short=FET -Europe/Kaliningrad.standard.short=FET -Europe/Kiev.daylight.short=OESZ -Europe/Kiev.generic.short=OEZ -Europe/Kiev.standard.short=OEZ -Europe/Lisbon.daylight.short=WESZ -Europe/Lisbon.generic.short=WEZ -Europe/Lisbon.standard.short=WEZ -Europe/Ljubljana.daylight.short=MESZ -Europe/Ljubljana.generic.short=MEZ -Europe/Ljubljana.standard.short=MEZ -Europe/London.daylight.short=BST -Europe/London.generic.short=BT -Europe/London.standard.short=GMT -Europe/Luxembourg.daylight.short=MESZ -Europe/Luxembourg.generic.short=MEZ -Europe/Luxembourg.standard.short=MEZ -Europe/Madrid.daylight.short=MESZ -Europe/Madrid.generic.short=MEZ -Europe/Madrid.standard.short=MEZ -Europe/Malta.daylight.short=MESZ -Europe/Malta.generic.short=MEZ -Europe/Malta.standard.short=MEZ -Europe/Mariehamn.daylight.short=OESZ -Europe/Mariehamn.generic.short=OEZ -Europe/Mariehamn.standard.short=OEZ -Europe/Minsk.daylight.short=FEST -Europe/Minsk.generic.short=FET -Europe/Minsk.standard.short=FET -Europe/Monaco.daylight.short=MESZ -Europe/Monaco.generic.short=MEZ -Europe/Monaco.standard.short=MEZ -Europe/Moscow.daylight.short=MSD -Europe/Moscow.generic.short=MT -Europe/Moscow.standard.short=MSK -Europe/Nicosia.daylight.short=OESZ -Europe/Nicosia.generic.short=OEZ -Europe/Nicosia.standard.short=OEZ -Europe/Oslo.daylight.short=MESZ -Europe/Oslo.generic.short=MEZ -Europe/Oslo.standard.short=MEZ -Europe/Paris.daylight.short=MESZ -Europe/Paris.generic.short=MEZ -Europe/Paris.standard.short=MEZ -Europe/Podgorica.daylight.short=MESZ -Europe/Podgorica.generic.short=MEZ -Europe/Podgorica.standard.short=MEZ -Europe/Prague.daylight.short=MESZ -Europe/Prague.generic.short=MEZ -Europe/Prague.standard.short=MEZ -Europe/Riga.daylight.short=OESZ -Europe/Riga.generic.short=OEZ -Europe/Riga.standard.short=OEZ -Europe/Rome.daylight.short=MESZ -Europe/Rome.generic.short=MEZ -Europe/Rome.standard.short=MEZ -Europe/Samara.daylight.short=SAMST -Europe/Samara.generic.short=SAMT -Europe/Samara.standard.short=SAMT -Europe/San_Marino.daylight.short=MESZ -Europe/San_Marino.generic.short=MEZ -Europe/San_Marino.standard.short=MEZ -Europe/Sarajevo.daylight.short=MESZ -Europe/Sarajevo.generic.short=MEZ -Europe/Sarajevo.standard.short=MEZ -Europe/Simferopol.daylight.short=OESZ -Europe/Simferopol.generic.short=OEZ -Europe/Simferopol.standard.short=OEZ -Europe/Skopje.daylight.short=MESZ -Europe/Skopje.generic.short=MEZ -Europe/Skopje.standard.short=MEZ -Europe/Sofia.daylight.short=OESZ -Europe/Sofia.generic.short=OEZ -Europe/Sofia.standard.short=OEZ -Europe/Stockholm.daylight.short=MESZ -Europe/Stockholm.generic.short=MEZ -Europe/Stockholm.standard.short=MEZ -Europe/Tallinn.daylight.short=OESZ -Europe/Tallinn.generic.short=OEZ -Europe/Tallinn.standard.short=OEZ -Europe/Tirane.daylight.short=MESZ -Europe/Tirane.generic.short=MEZ -Europe/Tirane.standard.short=MEZ -Europe/Tiraspol.daylight.short=OESZ -Europe/Tiraspol.generic.short=OEZ -Europe/Tiraspol.standard.short=OEZ -Europe/Uzhgorod.daylight.short=OESZ -Europe/Uzhgorod.generic.short=OEZ -Europe/Uzhgorod.standard.short=OEZ -Europe/Vaduz.daylight.short=MESZ -Europe/Vaduz.generic.short=MEZ -Europe/Vaduz.standard.short=MEZ -Europe/Vatican.daylight.short=MESZ -Europe/Vatican.generic.short=MEZ -Europe/Vatican.standard.short=MEZ -Europe/Vienna.daylight.short=MESZ -Europe/Vienna.generic.short=MEZ -Europe/Vienna.standard.short=MEZ -Europe/Vilnius.daylight.short=OESZ -Europe/Vilnius.generic.short=OEZ -Europe/Vilnius.standard.short=OEZ -Europe/Volgograd.daylight.short=VOLST -Europe/Volgograd.generic.short=VOLT -Europe/Volgograd.standard.short=VOLT -Europe/Warsaw.daylight.short=MESZ -Europe/Warsaw.generic.short=MEZ -Europe/Warsaw.standard.short=MEZ -Europe/Zagreb.daylight.short=MESZ -Europe/Zagreb.generic.short=MEZ -Europe/Zagreb.standard.short=MEZ -Europe/Zaporozhye.daylight.short=OESZ -Europe/Zaporozhye.generic.short=OEZ -Europe/Zaporozhye.standard.short=OEZ -Europe/Zurich.daylight.short=MESZ -Europe/Zurich.generic.short=MEZ -Europe/Zurich.standard.short=MEZ -GB.daylight.short=BST -GB-Eire.daylight.short=BST -GB-Eire.generic.short=BT -GB-Eire.standard.short=GMT -GB.generic.short=BT -GB.standard.short=GMT -GMT.daylight.short=GMT -GMT.generic.short=GMT -GMT.standard.short=GMT -Greenwich.daylight.short=GMT -Greenwich.generic.short=GMT -Greenwich.standard.short=GMT -Hongkong.daylight.short=HKST -Hongkong.generic.short=HKT -Hongkong.standard.short=HKT -HST.daylight.short=HDT -HST.generic.short=HT -HST.standard.short=HST -Iceland.daylight.short=GMT -Iceland.generic.short=GMT -Iceland.standard.short=GMT -IET.daylight.short=EDT -IET.generic.short=ET -IET.standard.short=EST -Indian/Antananarivo.daylight.short=EAST -Indian/Antananarivo.generic.short=EAT -Indian/Antananarivo.standard.short=EAT -Indian/Chagos.daylight.short=IOST -Indian/Chagos.generic.short=IOT -Indian/Chagos.standard.short=IOT -Indian/Christmas.daylight.short=CXST -Indian/Christmas.generic.short=CIT -Indian/Christmas.standard.short=CXT -Indian/Cocos.daylight.short=CCST -Indian/Cocos.generic.short=CCT -Indian/Cocos.standard.short=CCT -Indian/Comoro.daylight.short=EAST -Indian/Comoro.generic.short=EAT -Indian/Comoro.standard.short=EAT -Indian/Kerguelen.daylight.short=TFST -Indian/Kerguelen.generic.short=TFT -Indian/Kerguelen.standard.short=TFT -Indian/Mahe.daylight.short=SCST -Indian/Mahe.generic.short=SCT -Indian/Mahe.standard.short=SCT -Indian/Maldives.daylight.short=MVST -Indian/Maldives.generic.short=MVT -Indian/Maldives.standard.short=MVT -Indian/Mauritius.daylight.short=MUST -Indian/Mauritius.generic.short=MUT -Indian/Mauritius.standard.short=MUT -Indian/Mayotte.daylight.short=EAST -Indian/Mayotte.generic.short=EAT -Indian/Mayotte.standard.short=EAT -Indian/Reunion.daylight.short=REST -Indian/Reunion.generic.short=RET -Indian/Reunion.standard.short=RET -Iran.daylight.short=IRDT -Iran.generic.short=IRT -Iran.standard.short=IRST -Israel.daylight.short=IDT -Israel.generic.short=IT -Israel.standard.short=IST -IST.daylight.short=IDT -IST.generic.short=IT -IST.standard.short=IST -Jamaica.daylight.short=EDT -Jamaica.generic.short=ET -Jamaica.standard.short=EST -Japan.daylight.short=JDT -Japan.generic.short=JT -Japan.standard.short=JST -JST.daylight.short=JDT -JST.generic.short=JT -JST.standard.short=JST -Kwajalein.daylight.short=MHST -Kwajalein.generic.short=MHT -Kwajalein.standard.short=MHT -Libya.daylight.short=OESZ -Libya.generic.short=OEZ -Libya.standard.short=OEZ -MET.daylight.short=MEST -MET.generic.short=MET -MET.standard.short=MET -Mexico/BajaNorte.daylight.short=PDT -Mexico/BajaNorte.generic.short=PT -Mexico/BajaNorte.standard.short=PST -Mexico/BajaSur.daylight.short=MDT -Mexico/BajaSur.generic.short=MT -Mexico/BajaSur.standard.short=MST -Mexico/General.daylight.short=CDT -Mexico/General.generic.short=CT -Mexico/General.standard.short=CST -MIT.daylight.short=WSDT -MIT.generic.short=WST -MIT.standard.short=WST -MST7MDT.daylight.short=MDT -MST7MDT.generic.short=MT -MST7MDT.standard.short=MST -MST.daylight.short=MDT -MST.generic.short=MT -MST.standard.short=MST -Navajo.daylight.short=MDT -Navajo.generic.short=MT -Navajo.standard.short=MST -NET.daylight.short=AMST -NET.generic.short=AMT -NET.standard.short=AMT -NST.daylight.short=NZDT -NST.generic.short=NZT -NST.standard.short=NZST -NZ-CHAT.daylight.short=CHADT -NZ-CHAT.generic.short=CHAT -NZ-CHAT.standard.short=CHAST -NZ.daylight.short=NZDT -NZ.generic.short=NZT -NZ.standard.short=NZST -Pacific/Apia.daylight.short=WSDT -Pacific/Apia.generic.short=WST -Pacific/Apia.standard.short=WST -Pacific/Auckland.daylight.short=NZDT -Pacific/Auckland.generic.short=NZT -Pacific/Auckland.standard.short=NZST -Pacific/Chatham.daylight.short=CHADT -Pacific/Chatham.generic.short=CHAT -Pacific/Chatham.standard.short=CHAST -Pacific/Chuuk.daylight.short=CHUST -Pacific/Chuuk.generic.short=CHUT -Pacific/Chuuk.standard.short=CHUT -Pacific/Easter.daylight.short=EASST -Pacific/Easter.generic.short=EAST -Pacific/Easter.standard.short=EAST -Pacific/Efate.daylight.short=VUST -Pacific/Efate.generic.short=VUT -Pacific/Efate.standard.short=VUT -Pacific/Enderbury.daylight.short=PHOST -Pacific/Enderbury.generic.short=PHOT -Pacific/Enderbury.standard.short=PHOT -Pacific/Fakaofo.daylight.short=TKST -Pacific/Fakaofo.generic.short=TKT -Pacific/Fakaofo.standard.short=TKT -Pacific/Fiji.daylight.short=FJST -Pacific/Fiji.generic.short=FJT -Pacific/Fiji.standard.short=FJT -Pacific/Funafuti.daylight.short=TVST -Pacific/Funafuti.generic.short=TVT -Pacific/Funafuti.standard.short=TVT -Pacific/Galapagos.daylight.short=GALST -Pacific/Galapagos.generic.short=GALT -Pacific/Galapagos.standard.short=GALT -Pacific/Gambier.daylight.short=GAMST -Pacific/Gambier.generic.short=GAMT -Pacific/Gambier.standard.short=GAMT -Pacific/Guadalcanal.daylight.short=SBST -Pacific/Guadalcanal.generic.short=SBT -Pacific/Guadalcanal.standard.short=SBT -Pacific/Guam.daylight.short=ChDT -Pacific/Guam.generic.short=ChT -Pacific/Guam.standard.short=ChST -Pacific/Honolulu.daylight.short=HDT -Pacific/Honolulu.generic.short=HT -Pacific/Honolulu.standard.short=HST -Pacific/Johnston.daylight.short=HDT -Pacific/Johnston.generic.short=HT -Pacific/Johnston.standard.short=HST -Pacific/Kiritimati.daylight.short=LINST -Pacific/Kiritimati.generic.short=LINT -Pacific/Kiritimati.standard.short=LINT -Pacific/Kosrae.daylight.short=KOSST -Pacific/Kosrae.generic.short=KOST -Pacific/Kosrae.standard.short=KOST -Pacific/Kwajalein.daylight.short=MHST -Pacific/Kwajalein.generic.short=MHT -Pacific/Kwajalein.standard.short=MHT -Pacific/Majuro.daylight.short=MHST -Pacific/Majuro.generic.short=MHT -Pacific/Majuro.standard.short=MHT -Pacific/Marquesas.daylight.short=MARST -Pacific/Marquesas.generic.short=MART -Pacific/Marquesas.standard.short=MART -Pacific/Midway.daylight.short=SDT -Pacific/Midway.generic.short=ST -Pacific/Midway.standard.short=SST -Pacific/Nauru.daylight.short=NRST -Pacific/Nauru.generic.short=NRT -Pacific/Nauru.standard.short=NRT -Pacific/Niue.daylight.short=NUST -Pacific/Niue.generic.short=NUT -Pacific/Niue.standard.short=NUT -Pacific/Norfolk.daylight.short=NFST -Pacific/Norfolk.generic.short=NFT -Pacific/Norfolk.standard.short=NFT -Pacific/Noumea.daylight.short=NCST -Pacific/Noumea.generic.short=NCT -Pacific/Noumea.standard.short=NCT -Pacific/Pago_Pago.daylight.short=SDT -Pacific/Pago_Pago.generic.short=ST -Pacific/Pago_Pago.standard.short=SST -Pacific/Palau.daylight.short=PWST -Pacific/Palau.generic.short=PWT -Pacific/Palau.standard.short=PWT -Pacific/Pitcairn.daylight.short=PDT -Pacific/Pitcairn.generic.short=PT -Pacific/Pitcairn.standard.short=PST -Pacific/Pohnpei.daylight.short=PONST -Pacific/Pohnpei.generic.short=PONT -Pacific/Pohnpei.standard.short=PONT -Pacific/Ponape.daylight.short=PONST -Pacific/Ponape.generic.short=PONT -Pacific/Ponape.standard.short=PONT -Pacific/Port_Moresby.daylight.short=PGST -Pacific/Port_Moresby.generic.short=PGT -Pacific/Port_Moresby.standard.short=PGT -Pacific/Rarotonga.daylight.short=CKHST -Pacific/Rarotonga.generic.short=CKT -Pacific/Rarotonga.standard.short=CKT -Pacific/Saipan.daylight.short=ChDT -Pacific/Saipan.generic.short=ChT -Pacific/Saipan.standard.short=ChST -Pacific/Samoa.daylight.short=SDT -Pacific/Samoa.generic.short=ST -Pacific/Samoa.standard.short=SST -Pacific/Tahiti.daylight.short=TAHST -Pacific/Tahiti.generic.short=TAHT -Pacific/Tahiti.standard.short=TAHT -Pacific/Tarawa.daylight.short=GILST -Pacific/Tarawa.generic.short=GILT -Pacific/Tarawa.standard.short=GILT -Pacific/Tongatapu.daylight.short=TOST -Pacific/Tongatapu.generic.short=TOT -Pacific/Tongatapu.standard.short=TOT -Pacific/Truk.daylight.short=CHUST -Pacific/Truk.generic.short=CHUT -Pacific/Truk.standard.short=CHUT -Pacific/Wake.daylight.short=WAKST -Pacific/Wake.generic.short=WAKT -Pacific/Wake.standard.short=WAKT -Pacific/Wallis.daylight.short=WFST -Pacific/Wallis.generic.short=WFT -Pacific/Wallis.standard.short=WFT -Pacific/Yap.daylight.short=CHUST -Pacific/Yap.generic.short=CHUT -Pacific/Yap.standard.short=CHUT -PLT.daylight.short=PKST -PLT.generic.short=PKT -PLT.standard.short=PKT -PNT.daylight.short=MDT -PNT.generic.short=MT -PNT.standard.short=MST -Poland.daylight.short=MESZ -Poland.generic.short=MEZ -Poland.standard.short=MEZ -Portugal.daylight.short=WESZ -Portugal.generic.short=WEZ -Portugal.standard.short=WEZ -PRC.daylight.short=CDT -PRC.generic.short=CT -PRC.standard.short=CST -PRT.daylight.short=ADT -PRT.generic.short=AT -PRT.standard.short=AST -PST8PDT.daylight.short=PDT -PST8PDT.generic.short=PT -PST8PDT.standard.short=PST -PST.daylight.short=PDT -PST.generic.short=PT -PST.standard.short=PST -ROK.daylight.short=KDT -ROK.generic.short=KT -ROK.standard.short=KST -Singapore.daylight.short=SGST -Singapore.generic.short=SGT -Singapore.standard.short=SGT -SST.daylight.short=SBST -SST.generic.short=SBT -SST.standard.short=SBT -SystemV/AST4ADT.daylight.short=ADT -SystemV/AST4ADT.generic.short=AT -SystemV/AST4ADT.standard.short=AST -SystemV/AST4.daylight.short=ADT -SystemV/AST4.generic.short=AT -SystemV/AST4.standard.short=AST -SystemV/CST6CDT.daylight.short=CDT -SystemV/CST6CDT.generic.short=CT -SystemV/CST6CDT.standard.short=CST -SystemV/CST6.daylight.short=CDT -SystemV/CST6.generic.short=CT -SystemV/CST6.standard.short=CST -SystemV/EST5.daylight.short=EDT -SystemV/EST5EDT.daylight.short=EDT -SystemV/EST5EDT.generic.short=ET -SystemV/EST5EDT.standard.short=EST -SystemV/EST5.generic.short=ET -SystemV/EST5.standard.short=EST -SystemV/HST10.daylight.short=HDT -SystemV/HST10.generic.short=HT -SystemV/HST10.standard.short=HST -SystemV/MST7.daylight.short=MDT -SystemV/MST7.generic.short=MT -SystemV/MST7MDT.daylight.short=MDT -SystemV/MST7MDT.generic.short=MT -SystemV/MST7MDT.standard.short=MST -SystemV/MST7.standard.short=MST -SystemV/PST8.daylight.short=PDT -SystemV/PST8.generic.short=PT -SystemV/PST8PDT.daylight.short=PDT -SystemV/PST8PDT.generic.short=PT -SystemV/PST8PDT.standard.short=PST -SystemV/PST8.standard.short=PST -SystemV/YST9.daylight.short=AKDT -SystemV/YST9.generic.short=AKT -SystemV/YST9.standard.short=AKST -SystemV/YST9YDT.daylight.short=AKDT -SystemV/YST9YDT.generic.short=AKT -SystemV/YST9YDT.standard.short=AKST -Turkey.daylight.short=OESZ -Turkey.generic.short=OEZ -Turkey.standard.short=OEZ -UCT.daylight.short=UTC -UCT.generic.short=UTC -UCT.standard.short=UTC -Universal.daylight.short=UTC -Universal.generic.short=UTC -Universal.standard.short=UTC -US/Alaska.daylight.short=AKDT -US/Alaska.generic.short=AKT -US/Alaska.standard.short=AKST -US/Aleutian.daylight.short=HADT -US/Aleutian.generic.short=HAT -US/Aleutian.standard.short=HAST -US/Arizona.daylight.short=MDT -US/Arizona.generic.short=MT -US/Arizona.standard.short=MST -US/Central.daylight.short=CDT -US/Central.generic.short=CT -US/Central.standard.short=CST -US/Eastern.daylight.short=EDT -US/Eastern.generic.short=ET -US/Eastern.standard.short=EST -US/East-Indiana.daylight.short=EDT -US/East-Indiana.generic.short=ET -US/East-Indiana.standard.short=EST -US/Hawaii.daylight.short=HDT -US/Hawaii.generic.short=HT -US/Hawaii.standard.short=HST -US/Indiana-Starke.daylight.short=CDT -US/Indiana-Starke.generic.short=CT -US/Indiana-Starke.standard.short=CST -US/Michigan.daylight.short=EDT -US/Michigan.generic.short=ET -US/Michigan.standard.short=EST -US/Mountain.daylight.short=MDT -US/Mountain.generic.short=MT -US/Mountain.standard.short=MST -US/Pacific.daylight.short=PDT -US/Pacific.generic.short=PT -US/Pacific-New.daylight.short=PDT -US/Pacific-New.generic.short=PT -US/Pacific-New.standard.short=PST -US/Pacific.standard.short=PST -US/Samoa.daylight.short=SDT -US/Samoa.generic.short=ST -US/Samoa.standard.short=SST -UTC.daylight.short=UTC -UTC.generic.short=UTC -UTC.standard.short=UTC -VST.daylight.short=ICST -VST.generic.short=ICT -VST.standard.short=ICT -WET.daylight.short=WESZ -WET.generic.short=WEZ -WET.standard.short=WEZ -W-SU.daylight.short=MSD -W-SU.generic.short=MT -W-SU.standard.short=MSK -Zulu.daylight.short=UTC -Zulu.generic.short=UTC -Zulu.standard.short=UTC diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_es.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_es.properties deleted file mode 100644 index 830f0d21e0d..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_es.properties +++ /dev/null @@ -1,651 +0,0 @@ -ACT.daylight.long=Hora de verano Central (territorio del Norte) -ACT.generic.long=Hora Central (Territorio Septentrional) -ACT.standard.long=Hora est\u00E1ndar Central (territorio del Norte) -AET.daylight.long=Hora de verano Oriental (Nueva Gales del Sur) -AET.generic.long=Hora Oriental (Nueva Gales del Sur) -AET.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur) -AGT.generic.long=Hora de Argentina -ART.generic.long=Hora de Europa Oriental -AST.generic.long=Hora de Alaska -Africa/Abidjan.generic.long=Hora del Meridiano de Greenwich -Africa/Accra.generic.long=Hora central de Ghana -Africa/Addis_Ababa.generic.long=Hora de \u00C1frica Oriental -Africa/Algiers.generic.long=Hora de Europa Central -Africa/Asmara.generic.long=Hora de \u00C1frica Oriental -Africa/Asmera.generic.long=Hora de \u00C1frica Oriental -Africa/Bamako.generic.long=Hora del Meridiano de Greenwich -Africa/Bangui.generic.long=Hora de \u00C1frica Occidental -Africa/Banjul.generic.long=Hora del Meridiano de Greenwich -Africa/Bissau.generic.long=Hora del Meridiano de Greenwich -Africa/Blantyre.generic.long=Hora de \u00C1frica Central -Africa/Brazzaville.generic.long=Hora de \u00C1frica Occidental -Africa/Bujumbura.generic.long=Hora de \u00C1frica Central -Africa/Cairo.generic.long=Hora de Europa Oriental -Africa/Casablanca.generic.long=Hora de Europa Occidental -Africa/Ceuta.generic.long=Hora de Europa Central -Africa/Conakry.generic.long=Hora del Meridiano de Greenwich -Africa/Dakar.generic.long=Hora del Meridiano de Greenwich -Africa/Dar_es_Salaam.generic.long=Hora de \u00C1frica Oriental -Africa/Djibouti.generic.long=Hora de \u00C1frica Oriental -Africa/Douala.generic.long=Hora de \u00C1frica Occidental -Africa/El_Aaiun.generic.long=Hora de Europa Occidental -Africa/Freetown.generic.long=Horario de Sierra Leona -Africa/Gaborone.generic.long=Hora de \u00C1frica Central -Africa/Harare.generic.long=Hora de \u00C1frica Central -Africa/Johannesburg.generic.long=Hora de Sud\u00E1frica -Africa/Juba.generic.long=Hora de \u00C1frica Oriental -Africa/Kampala.generic.long=Hora de \u00C1frica Oriental -Africa/Khartoum.generic.long=Hora de \u00C1frica Oriental -Africa/Kigali.generic.long=Hora de \u00C1frica Central -Africa/Kinshasa.generic.long=Hora de \u00C1frica Occidental -Africa/Lagos.generic.long=Hora de \u00C1frica Occidental -Africa/Libreville.generic.long=Hora de \u00C1frica Occidental -Africa/Lome.generic.long=Hora del Meridiano de Greenwich -Africa/Luanda.generic.long=Hora de \u00C1frica Occidental -Africa/Lubumbashi.generic.long=Hora de \u00C1frica Central -Africa/Lusaka.generic.long=Hora de \u00C1frica Central -Africa/Malabo.generic.long=Hora de \u00C1frica Occidental -Africa/Maputo.generic.long=Hora de \u00C1frica Central -Africa/Maseru.generic.long=Hora de Sud\u00E1frica -Africa/Mbabane.generic.long=Hora de Sud\u00E1frica -Africa/Mogadishu.generic.long=Hora de \u00C1frica Oriental -Africa/Monrovia.generic.long=Hora del Meridiano de Greenwich -Africa/Nairobi.generic.long=Hora de \u00C1frica Oriental -Africa/Ndjamena.generic.long=Hora de \u00C1frica Occidental -Africa/Niamey.generic.long=Hora de \u00C1frica Occidental -Africa/Nouakchott.generic.long=Hora del Meridiano de Greenwich -Africa/Ouagadougou.generic.long=Hora del Meridiano de Greenwich -Africa/Porto-Novo.generic.long=Hora de \u00C1frica Occidental -Africa/Sao_Tome.generic.long=Hora del Meridiano de Greenwich -Africa/Timbuktu.generic.long=Hora del Meridiano de Greenwich -Africa/Tripoli.generic.long=Hora de Europa Oriental -Africa/Tunis.generic.long=Hora de Europa Central -Africa/Windhoek.generic.long=Hora de \u00C1frica Occidental -America/Adak.generic.long=Hora de Hawaii-Aleutian -America/Anchorage.generic.long=Hora de Alaska -America/Anguilla.generic.long=Hora del Atl\u00E1ntico -America/Antigua.generic.long=Hora del Atl\u00E1ntico -America/Araguaina.generic.long=Hora de Brasil -America/Argentina/Buenos_Aires.generic.long=Hora de Argentina -America/Argentina/Catamarca.generic.long=Hora de Argentina -America/Argentina/ComodRivadavia.generic.long=Hora de Argentina -America/Argentina/Cordoba.generic.long=Hora de Argentina -America/Argentina/Jujuy.generic.long=Hora de Argentina -America/Argentina/La_Rioja.generic.long=Hora de Argentina -America/Argentina/Mendoza.generic.long=Hora de Argentina -America/Argentina/Rio_Gallegos.generic.long=Hora de Argentina -America/Argentina/Salta.generic.long=Hora de Argentina -America/Argentina/San_Juan.generic.long=Hora de Argentina -America/Argentina/San_Luis.generic.long=Hora de Argentina -America/Argentina/Tucuman.generic.long=Hora de Argentina -America/Argentina/Ushuaia.generic.long=Hora de Argentina -America/Aruba.generic.long=Hora del Atl\u00E1ntico -America/Asuncion.generic.long=Hora de Paraguay -America/Atikokan.generic.long=Hora Oriental -America/Atka.generic.long=Hora de Hawaii-Aleutian -America/Bahia.generic.long=Hora de Brasil -America/Bahia_Banderas.generic.long=Hora Central -America/Barbados.generic.long=Hora del Atl\u00E1ntico -America/Belem.generic.long=Hora de Brasil -America/Belize.generic.long=Hora Central -America/Blanc-Sablon.generic.long=Hora del Atl\u00E1ntico -America/Boa_Vista.generic.long=Hora est\u00E1ndar de Amazonia -America/Bogota.generic.long=Hora de Colombia -America/Boise.generic.long=Hora de las Monta\u00F1as Rocosas -America/Buenos_Aires.generic.long=Hora de Argentina -America/Cambridge_Bay.generic.long=Hora de las Monta\u00F1as Rocosas -America/Campo_Grande.generic.long=Hora est\u00E1ndar de Amazonia -America/Cancun.generic.long=Hora Central -America/Caracas.generic.long=Hora de Venezuela -America/Catamarca.generic.long=Hora de Argentina -America/Cayenne.generic.long=Hora de la Guayana Francesa -America/Cayman.generic.long=Hora Oriental -America/Chicago.generic.long=Hora Central -America/Chihuahua.generic.long=Hora de las Monta\u00F1as Rocosas -America/Coral_Harbour.generic.long=Hora Oriental -America/Cordoba.generic.long=Hora de Argentina -America/Costa_Rica.generic.long=Hora Central -America/Creston.generic.long=Hora de las Monta\u00F1as Rocosas -America/Cuiaba.generic.long=Hora est\u00E1ndar de Amazonia -America/Curacao.generic.long=Hora del Atl\u00E1ntico -America/Danmarkshavn.generic.long=Hora del Meridiano de Greenwich -America/Dawson.generic.long=Hora del Pac\u00EDfico -America/Dawson_Creek.generic.long=Hora de las Monta\u00F1as Rocosas -America/Denver.generic.long=Hora de las Monta\u00F1as Rocosas -America/Detroit.generic.long=Hora Oriental -America/Dominica.generic.long=Hora del Atl\u00E1ntico -America/Edmonton.generic.long=Hora de las Monta\u00F1as Rocosas -America/Eirunepe.generic.long=Hora de Acre -America/El_Salvador.generic.long=Hora Central -America/Ensenada.generic.long=Hora del Pac\u00EDfico -America/Fort_Wayne.generic.long=Hora Oriental -America/Fortaleza.generic.long=Hora de Brasil -America/Glace_Bay.generic.long=Hora del Atl\u00E1ntico -America/Godthab.generic.long=Hora de Groenlandia Occidental -America/Goose_Bay.generic.long=Hora del Atl\u00E1ntico -America/Grand_Turk.generic.long=Hora Oriental -America/Grenada.generic.long=Hora del Atl\u00E1ntico -America/Guadeloupe.generic.long=Hora del Atl\u00E1ntico -America/Guatemala.generic.long=Hora Central -America/Guayaquil.generic.long=Hora de Ecuador -America/Guyana.generic.long=Hora de Guyana -America/Halifax.generic.long=Hora del Atl\u00E1ntico -America/Havana.generic.long=Hora de Cuba -America/Hermosillo.generic.long=Hora de las Monta\u00F1as Rocosas -America/Indiana/Indianapolis.generic.long=Hora Oriental -America/Indiana/Knox.generic.long=Hora Central -America/Indiana/Marengo.generic.long=Hora Oriental -America/Indiana/Petersburg.generic.long=Hora Oriental -America/Indiana/Tell_City.generic.long=Hora Central -America/Indiana/Vevay.generic.long=Hora Oriental -America/Indiana/Vincennes.generic.long=Hora Oriental -America/Indiana/Winamac.generic.long=Hora Oriental -America/Indianapolis.generic.long=Hora Oriental -America/Inuvik.generic.long=Hora de las Monta\u00F1as Rocosas -America/Iqaluit.generic.long=Hora Oriental -America/Jamaica.generic.long=Hora Oriental -America/Jujuy.generic.long=Hora de Argentina -America/Juneau.generic.long=Hora de Alaska -America/Kentucky/Louisville.generic.long=Hora Oriental -America/Kentucky/Monticello.generic.long=Hora Oriental -America/Knox_IN.generic.long=Hora Central -America/Kralendijk.generic.long=Hora del Atl\u00E1ntico -America/La_Paz.generic.long=Hora de Bolivia -America/Lima.generic.long=Hora de Per\u00FA -America/Los_Angeles.generic.long=Hora del Pac\u00EDfico -America/Louisville.generic.long=Hora Oriental -America/Lower_Princes.generic.long=Hora del Atl\u00E1ntico -America/Maceio.generic.long=Hora de Brasil -America/Managua.generic.long=Hora Central -America/Manaus.generic.long=Hora est\u00E1ndar de Amazonia -America/Marigot.generic.long=Hora del Atl\u00E1ntico -America/Martinique.generic.long=Hora del Atl\u00E1ntico -America/Matamoros.generic.long=Hora Central -America/Mazatlan.generic.long=Hora de las Monta\u00F1as Rocosas -America/Mendoza.generic.long=Hora de Argentina -America/Menominee.generic.long=Hora Central -America/Merida.generic.long=Hora Central -America/Metlakatla.daylight.long=Hora de verano de Metlakatla -America/Metlakatla.generic.long=Metlakatla Time -America/Metlakatla.standard.long=Hora de Metlakatla -America/Mexico_City.generic.long=Hora Central -America/Miquelon.generic.long=Hora de San Pedro y Miquel\u00F3n -America/Moncton.generic.long=Hora del Atl\u00E1ntico -America/Monterrey.generic.long=Hora Central -America/Montevideo.generic.long=Hora de Uruguay -America/Montreal.generic.long=Hora Oriental -America/Montserrat.generic.long=Hora del Atl\u00E1ntico -America/Nassau.generic.long=Hora Oriental -America/New_York.generic.long=Hora Oriental -America/Nipigon.generic.long=Hora Oriental -America/Nome.generic.long=Hora de Alaska -America/Noronha.generic.long=Hora de Fernando de Noronha -America/North_Dakota/Beulah.generic.long=Hora Central -America/North_Dakota/Center.generic.long=Hora Central -America/North_Dakota/New_Salem.generic.long=Hora Central -America/Ojinaga.generic.long=Hora de las Monta\u00F1as Rocosas -America/Panama.generic.long=Hora Oriental -America/Pangnirtung.generic.long=Hora Oriental -America/Paramaribo.generic.long=Hora de Surinam -America/Phoenix.generic.long=Hora de las Monta\u00F1as Rocosas -America/Port-au-Prince.generic.long=Hora Oriental -America/Port_of_Spain.generic.long=Hora del Atl\u00E1ntico -America/Porto_Acre.generic.long=Hora de Acre -America/Porto_Velho.generic.long=Hora est\u00E1ndar de Amazonia -America/Puerto_Rico.generic.long=Hora del Atl\u00E1ntico -America/Rainy_River.generic.long=Hora Central -America/Rankin_Inlet.generic.long=Hora Central -America/Recife.generic.long=Hora de Brasil -America/Regina.generic.long=Hora Central -America/Resolute.generic.long=Hora Central -America/Rio_Branco.generic.long=Hora de Acre -America/Rosario.generic.long=Hora de Argentina -America/Santa_Isabel.generic.long=Hora del Pac\u00EDfico -America/Santarem.generic.long=Hora de Brasil -America/Santiago.generic.long=Hora de Chile -America/Santo_Domingo.generic.long=Hora del Atl\u00E1ntico -America/Sao_Paulo.generic.long=Hora de Brasil -America/Scoresbysund.generic.long=Hora de Groenlandia Oriental -America/Shiprock.generic.long=Hora de las Monta\u00F1as Rocosas -America/Sitka.generic.long=Hora de Alaska -America/St_Barthelemy.generic.long=Hora del Atl\u00E1ntico -America/St_Johns.generic.long=Hora de Terranova -America/St_Kitts.generic.long=Hora del Atl\u00E1ntico -America/St_Lucia.generic.long=Hora del Atl\u00E1ntico -America/St_Thomas.generic.long=Hora del Atl\u00E1ntico -America/St_Vincent.generic.long=Hora del Atl\u00E1ntico -America/Swift_Current.generic.long=Hora Central -America/Tegucigalpa.generic.long=Hora Central -America/Thule.generic.long=Hora del Atl\u00E1ntico -America/Thunder_Bay.generic.long=Hora Oriental -America/Tijuana.generic.long=Hora del Pac\u00EDfico -America/Toronto.generic.long=Hora Oriental -America/Tortola.generic.long=Hora del Atl\u00E1ntico -America/Vancouver.generic.long=Hora del Pac\u00EDfico -America/Virgin.generic.long=Hora del Atl\u00E1ntico -America/Whitehorse.generic.long=Hora del Pac\u00EDfico -America/Winnipeg.generic.long=Hora Central -America/Yakutat.generic.long=Hora de Alaska -America/Yellowknife.generic.long=Hora de las Monta\u00F1as Rocosas -Antarctica/Casey.daylight.long=Hora de verano Occidental (Australia) -Antarctica/Casey.generic.long=Hora Occidental (Australia) -Antarctica/Casey.standard.long=Hora est\u00E1ndar Occidental (Australia) -Antarctica/Davis.generic.long=Hora de Davis -Antarctica/DumontDUrville.generic.long=Hora de Dumont-d'Urville -Antarctica/Macquarie.daylight.long=Hora de verano de Isla Macquarie -Antarctica/Macquarie.generic.long=Hora de Isla Macquarie -Antarctica/Macquarie.standard.long=Hora de Isla Macquarie -Antarctica/Mawson.generic.long=Hora de Mawson -Antarctica/McMurdo.generic.long=Hora de Nueva Zelanda -Antarctica/Palmer.generic.long=Hora de Chile -Antarctica/Rothera.generic.long=Hora de Rothera -Antarctica/South_Pole.generic.long=Hora de Nueva Zelanda -Antarctica/Syowa.generic.long=Hora de Syowa -Antarctica/Vostok.generic.long=Hora de Vostok -Arctic/Longyearbyen.generic.long=Hora de Europa Central -Asia/Aden.generic.long=Hora de Arabia -Asia/Almaty.generic.long=Hora de Alma-Ata -Asia/Amman.generic.long=Hora de Arabia -Asia/Anadyr.generic.long=Hora de Anadyr -Asia/Aqtau.generic.long=Hora de Aqtau -Asia/Aqtobe.generic.long=Hora de Aqtobe -Asia/Ashgabat.generic.long=Hora de Turkmenist\u00E1n -Asia/Ashkhabad.generic.long=Hora de Turkmenist\u00E1n -Asia/Baghdad.generic.long=Hora de Arabia -Asia/Bahrain.generic.long=Hora de Arabia -Asia/Baku.generic.long=Hora de Azerbaiy\u00E1n -Asia/Bangkok.generic.long=Hora de Indochina -Asia/Beirut.generic.long=Hora de Europa Oriental -Asia/Bishkek.generic.long=Hora de Kirguizist\u00E1n -Asia/Brunei.generic.long=Hora de Brunei -Asia/Calcutta.generic.long=Hora de India -Asia/Choibalsan.generic.long=Hora de Choibalsan -Asia/Chongqing.generic.long=Hora de China -Asia/Chungking.generic.long=Hora de China -Asia/Colombo.generic.long=Hora de India -Asia/Dacca.generic.long=Hora de Bangladesh -Asia/Damascus.generic.long=Hora de Europa Oriental -Asia/Dhaka.generic.long=Hora de Bangladesh -Asia/Dili.generic.long=Hora de Timor Leste -Asia/Dubai.generic.long=Hora del Golfo -Asia/Dushanbe.generic.long=Hora de Tajikist\u00E1n -Asia/Gaza.generic.long=Hora de Europa Oriental -Asia/Harbin.generic.long=Hora de China -Asia/Hebron.generic.long=Hora de Europa Oriental -Asia/Ho_Chi_Minh.generic.long=Hora de Indochina -Asia/Hong_Kong.generic.long=Hora de Hong Kong -Asia/Hovd.generic.long=Hora de Hovd -Asia/Irkutsk.generic.long=Hora de Irkutsk -Asia/Istanbul.generic.long=Hora de Europa Oriental -Asia/Jakarta.generic.long=Hora de Indonesia Occidental -Asia/Jayapura.generic.long=Hora de Indonesia Oriental -Asia/Jerusalem.generic.long=Hora de Israel -Asia/Kabul.generic.long=Hora de Afganist\u00E1n -Asia/Kamchatka.generic.long=Hora de Petropavlovsk-Kamchatski -Asia/Karachi.generic.long=Hora de Pakist\u00E1n -Asia/Kashgar.generic.long=Hora de China -Asia/Kathmandu.generic.long=Hora de Nepal -Asia/Katmandu.generic.long=Hora de Nepal -Asia/Khandyga.daylight.long=Hora de verano de Khandyga -Asia/Khandyga.generic.long=Hora de Khandyga -Asia/Khandyga.standard.long=Hora de Khandyga -Asia/Kolkata.generic.long=Hora de India -Asia/Krasnoyarsk.generic.long=Hora de Krasnoyarsk -Asia/Kuala_Lumpur.generic.long=Hora de Malasia -Asia/Kuching.generic.long=Hora de Malasia -Asia/Kuwait.generic.long=Hora de Arabia -Asia/Macao.generic.long=Hora de China -Asia/Macau.generic.long=Hora de China -Asia/Magadan.generic.long=Hora de Magad\u00E1n -Asia/Makassar.generic.long=Hora de Indonesia Central -Asia/Manila.generic.long=Hora de Filipinas -Asia/Muscat.generic.long=Hora del Golfo -Asia/Nicosia.generic.long=Hora de Europa Oriental -Asia/Novokuznetsk.generic.long=Hora de Novosibirsk -Asia/Novosibirsk.generic.long=Hora de Novosibirsk -Asia/Omsk.generic.long=Hora de Omsk -Asia/Oral.generic.long=Hora de Uralsk -Asia/Phnom_Penh.generic.long=Hora de Indochina -Asia/Pontianak.generic.long=Hora de Indonesia Occidental -Asia/Pyongyang.generic.long=Hora de Corea -Asia/Qatar.generic.long=Hora de Arabia -Asia/Qyzylorda.generic.long=Hora de Qyzylorda -Asia/Rangoon.generic.long=Hora de Myanmar -Asia/Saigon.generic.long=Hora de Indochina -Asia/Sakhalin.generic.long=Hora de Sajalin -Asia/Samarkand.generic.long=Hora de Uzbekist\u00E1n -Asia/Seoul.generic.long=Hora de Corea -Asia/Shanghai.generic.long=Hora de China -Asia/Singapore.generic.long=Hora de Singapur -Asia/Taipei.generic.long=Hora de China -Asia/Tashkent.generic.long=Hora de Uzbekist\u00E1n -Asia/Tbilisi.generic.long=Hora de Georgia -Asia/Tehran.generic.long=Hora de Ir\u00E1n -Asia/Tel_Aviv.generic.long=Hora de Israel -Asia/Thimbu.generic.long=Hora de But\u00E1n -Asia/Thimphu.generic.long=Hora de But\u00E1n -Asia/Tokyo.generic.long=Hora de Jap\u00F3n -Asia/Ujung_Pandang.generic.long=Hora de Indonesia Central -Asia/Ulaanbaatar.generic.long=Hora de Ulan Bator -Asia/Ulan_Bator.generic.long=Hora de Ulan Bator -Asia/Urumqi.generic.long=Hora de China -Asia/Ust-Nera.daylight.long=Hora de verano de Ust-Nera -Asia/Ust-Nera.generic.long=Hora de Ust-Nera -Asia/Ust-Nera.standard.long=Hora de Ust-Nera -Asia/Vientiane.generic.long=Hora de Indochina -Asia/Vladivostok.generic.long=Hora de Vladivostok -Asia/Yakutsk.generic.long=Hora de Yakutsk -Asia/Yekaterinburg.generic.long=Hora de Ekaterinburgo -Asia/Yerevan.generic.long=Hora de Armenia -Atlantic/Azores.generic.long=Hora de Azores -Atlantic/Bermuda.generic.long=Hora del Atl\u00E1ntico -Atlantic/Canary.generic.long=Hora de Europa Occidental -Atlantic/Cape_Verde.generic.long=Hora de Cabo Verde -Atlantic/Faeroe.generic.long=Hora de Europa Occidental -Atlantic/Faroe.generic.long=Hora de Europa Occidental -Atlantic/Jan_Mayen.generic.long=Hora de Europa Central -Atlantic/Madeira.generic.long=Hora de Europa Occidental -Atlantic/Reykjavik.generic.long=Hora del Meridiano de Greenwich -Atlantic/South_Georgia.generic.long=Hora de Georgia del Sur -Atlantic/St_Helena.generic.long=Hora del Meridiano de Greenwich -Atlantic/Stanley.generic.long=Hora de las islas Malvinas -Australia/ACT.daylight.long=Hora de verano Oriental (Nueva Gales del Sur) -Australia/ACT.generic.long=Hora Oriental (Nueva Gales del Sur) -Australia/ACT.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur) -Australia/Adelaide.daylight.long=Hora de verano Central (Sur de Australia) -Australia/Adelaide.generic.long=Hora Central (Australia del Sur) -Australia/Adelaide.standard.long=Hora est\u00E1ndar Central (Sur de Australia) -Australia/Brisbane.daylight.long=Hora est\u00E1ndar de verano del Este (Queensland) -Australia/Brisbane.generic.long=Hora Oriental (Queensland) -Australia/Brisbane.standard.long=Hora est\u00E1ndar del Este (Queensland) -Australia/Broken_Hill.daylight.long=Hora de verano Central (Sur de Australia/Nueva Gales del Sur) -Australia/Broken_Hill.generic.long=Hora Central (Australia del Sur/Nueva Gales del Sur) -Australia/Broken_Hill.standard.long=Hora est\u00E1ndar Central (Sur de Australia/Nueva Gales del Sur) -Australia/Canberra.daylight.long=Hora de verano Oriental (Nueva Gales del Sur) -Australia/Canberra.generic.long=Hora Oriental (Nueva Gales del Sur) -Australia/Canberra.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur) -Australia/Currie.daylight.long=Hora de verano Oriental (Nueva Gales del Sur) -Australia/Currie.generic.long=Hora Oriental (Nueva Gales del Sur) -Australia/Currie.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur) -Australia/Darwin.daylight.long=Hora de verano Central (territorio del Norte) -Australia/Darwin.generic.long=Hora Central (Territorio Septentrional) -Australia/Darwin.standard.long=Hora est\u00E1ndar Central (territorio del Norte) -Australia/Eucla.daylight.long=Hora est\u00E1ndar de verano de Australia Central y Occidental -Australia/Eucla.generic.long=Hora de Australia Central y Occidental -Australia/Eucla.standard.long=Hora est\u00E1ndar de Australia Central y Occidental -Australia/Hobart.daylight.long=Hora de verano del Este (Tasmania) -Australia/Hobart.generic.long=Hora Oriental (Tasmania) -Australia/Hobart.standard.long=Hora est\u00E1ndar del Este (Tasmania) -Australia/LHI.generic.long=Hora de Lord Howe -Australia/Lindeman.daylight.long=Hora est\u00E1ndar de verano del Este (Queensland) -Australia/Lindeman.generic.long=Hora Oriental (Queensland) -Australia/Lindeman.standard.long=Hora est\u00E1ndar del Este (Queensland) -Australia/Lord_Howe.generic.long=Hora de Lord Howe -Australia/Melbourne.daylight.long=Hora de verano del Este (Victoria) -Australia/Melbourne.generic.long=Hora Oriental (Victoria) -Australia/Melbourne.standard.long=Hora est\u00E1ndar del Este (Victoria) -Australia/NSW.daylight.long=Hora de verano Oriental (Nueva Gales del Sur) -Australia/NSW.generic.long=Hora Oriental (Nueva Gales del Sur) -Australia/NSW.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur) -Australia/North.daylight.long=Hora de verano Central (territorio del Norte) -Australia/North.generic.long=Hora Central (Territorio Septentrional) -Australia/North.standard.long=Hora est\u00E1ndar Central (territorio del Norte) -Australia/Perth.daylight.long=Hora de verano Occidental (Australia) -Australia/Perth.generic.long=Hora Occidental (Australia) -Australia/Perth.standard.long=Hora est\u00E1ndar Occidental (Australia) -Australia/Queensland.daylight.long=Hora est\u00E1ndar de verano del Este (Queensland) -Australia/Queensland.generic.long=Hora Oriental (Queensland) -Australia/Queensland.standard.long=Hora est\u00E1ndar del Este (Queensland) -Australia/South.daylight.long=Hora de verano Central (Sur de Australia) -Australia/South.generic.long=Hora Central (Australia del Sur) -Australia/South.standard.long=Hora est\u00E1ndar Central (Sur de Australia) -Australia/Sydney.daylight.long=Hora de verano Oriental (Nueva Gales del Sur) -Australia/Sydney.generic.long=Hora Oriental (Nueva Gales del Sur) -Australia/Sydney.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur) -Australia/Tasmania.daylight.long=Hora de verano del Este (Tasmania) -Australia/Tasmania.generic.long=Hora Oriental (Tasmania) -Australia/Tasmania.standard.long=Hora est\u00E1ndar del Este (Tasmania) -Australia/Victoria.daylight.long=Hora de verano del Este (Victoria) -Australia/Victoria.generic.long=Hora Oriental (Victoria) -Australia/Victoria.standard.long=Hora est\u00E1ndar del Este (Victoria) -Australia/West.daylight.long=Hora de verano Occidental (Australia) -Australia/West.generic.long=Hora Occidental (Australia) -Australia/West.standard.long=Hora est\u00E1ndar Occidental (Australia) -Australia/Yancowinna.daylight.long=Hora de verano Central (Sur de Australia/Nueva Gales del Sur) -Australia/Yancowinna.generic.long=Hora Central (Australia del Sur/Nueva Gales del Sur) -Australia/Yancowinna.standard.long=Hora est\u00E1ndar Central (Sur de Australia/Nueva Gales del Sur) -BET.generic.long=Hora de Brasil -BST.generic.long=Hora de Bangladesh -Brazil/Acre.generic.long=Hora de Acre -Brazil/DeNoronha.generic.long=Hora de Fernando de Noronha -Brazil/East.generic.long=Hora de Brasil -Brazil/West.generic.long=Hora est\u00E1ndar de Amazonia -CAT.generic.long=Hora de \u00C1frica Central -CET.generic.long=Hora de Europa Central -CNT.generic.long=Hora de Terranova -CST.generic.long=Hora Central -CST6CDT.generic.long=Hora Central -CTT.generic.long=Hora de China -Canada/Atlantic.generic.long=Hora del Atl\u00E1ntico -Canada/Central.generic.long=Hora Central -Canada/East-Saskatchewan.generic.long=Hora Central -Canada/Eastern.generic.long=Hora Oriental -Canada/Mountain.generic.long=Hora de las Monta\u00F1as Rocosas -Canada/Newfoundland.generic.long=Hora de Terranova -Canada/Pacific.generic.long=Hora del Pac\u00EDfico -Canada/Saskatchewan.generic.long=Hora Central -Canada/Yukon.generic.long=Hora del Pac\u00EDfico -Chile/Continental.generic.long=Hora de Chile -Chile/EasterIsland.generic.long=Hora de la Isla de Pascua -Cuba.generic.long=Hora de Cuba -EAT.generic.long=Hora de \u00C1frica Oriental -ECT.generic.long=Hora de Europa Central -EET.generic.long=Hora de Europa Oriental -EST.generic.long=Hora Oriental -EST5EDT.generic.long=Hora Oriental -Egypt.generic.long=Hora de Europa Oriental -Eire.generic.long=Hora de Irlanda -Etc/Greenwich.generic.long=Hora del Meridiano de Greenwich -Etc/UCT.generic.long=Hora Universal Coordinada -Etc/UTC.generic.long=Hora Universal Coordinada -Etc/Universal.generic.long=Hora Universal Coordinada -Etc/Zulu.generic.long=Hora Universal Coordinada -Europe/Amsterdam.generic.long=Hora de Europa Central -Europe/Andorra.generic.long=Hora de Europa Central -Europe/Athens.generic.long=Hora de Europa Oriental -Europe/Belfast.generic.long=Hora de Gran Breta\u00F1a -Europe/Belgrade.generic.long=Hora de Europa Central -Europe/Berlin.generic.long=Hora de Europa Central -Europe/Bratislava.generic.long=Hora de Europa Central -Europe/Brussels.generic.long=Hora de Europa Central -Europe/Bucharest.generic.long=Hora de Europa Oriental -Europe/Budapest.generic.long=Hora de Europa Central -Europe/Busingen.generic.long=Hora de Europa Central -Europe/Chisinau.generic.long=Hora de Europa Oriental -Europe/Copenhagen.generic.long=Hora de Europa Central -Europe/Dublin.generic.long=Hora de Irlanda -Europe/Gibraltar.generic.long=Hora de Europa Central -Europe/Guernsey.generic.long=Hora de Gran Breta\u00F1a -Europe/Helsinki.generic.long=Hora de Europa Oriental -Europe/Isle_of_Man.generic.long=Hora de Gran Breta\u00F1a -Europe/Istanbul.generic.long=Hora de Europa Oriental -Europe/Jersey.generic.long=Hora de Gran Breta\u00F1a -Europe/Kaliningrad.daylight.long=Hora de verano de Europa m\u00E1s Oriental -Europe/Kaliningrad.generic.long=Hora de Europa m\u00E1s Oriental -Europe/Kaliningrad.standard.long=Hora de Europa m\u00E1s Oriental -Europe/Kiev.generic.long=Hora de Europa Oriental -Europe/Lisbon.generic.long=Hora de Europa Occidental -Europe/Ljubljana.generic.long=Hora de Europa Central -Europe/London.generic.long=Hora de Gran Breta\u00F1a -Europe/Luxembourg.generic.long=Hora de Europa Central -Europe/Madrid.generic.long=Hora de Europa Central -Europe/Malta.generic.long=Hora de Europa Central -Europe/Mariehamn.generic.long=Hora de Europa Oriental -Europe/Minsk.daylight.long=Hora de verano de Europa m\u00E1s Oriental -Europe/Minsk.generic.long=Hora de Europa m\u00E1s Oriental -Europe/Minsk.standard.long=Hora de Europa m\u00E1s Oriental -Europe/Monaco.generic.long=Hora de Europa Central -Europe/Moscow.generic.long=Hora de Mosc\u00FA -Europe/Nicosia.generic.long=Hora de Europa Oriental -Europe/Oslo.generic.long=Hora de Europa Central -Europe/Paris.generic.long=Hora de Europa Central -Europe/Podgorica.generic.long=Hora de Europa Central -Europe/Prague.generic.long=Hora de Europa Central -Europe/Riga.generic.long=Hora de Europa Oriental -Europe/Rome.generic.long=Hora de Europa Central -Europe/Samara.generic.long=Hora de Samara -Europe/San_Marino.generic.long=Hora de Europa Central -Europe/Sarajevo.generic.long=Hora de Europa Central -Europe/Simferopol.generic.long=Hora de Europa Oriental -Europe/Skopje.generic.long=Hora de Europa Central -Europe/Sofia.generic.long=Hora de Europa Oriental -Europe/Stockholm.generic.long=Hora de Europa Central -Europe/Tallinn.generic.long=Hora de Europa Oriental -Europe/Tirane.generic.long=Hora de Europa Central -Europe/Tiraspol.generic.long=Hora de Europa Oriental -Europe/Uzhgorod.generic.long=Hora de Europa Oriental -Europe/Vaduz.generic.long=Hora de Europa Central -Europe/Vatican.generic.long=Hora de Europa Central -Europe/Vienna.generic.long=Hora de Europa Central -Europe/Vilnius.generic.long=Hora de Europa Oriental -Europe/Volgograd.generic.long=Hora de Volgogrado -Europe/Warsaw.generic.long=Hora de Europa Central -Europe/Zagreb.generic.long=Hora de Europa Central -Europe/Zaporozhye.generic.long=Hora de Europa Oriental -Europe/Zurich.generic.long=Hora de Europa Central -GB-Eire.generic.long=Hora de Gran Breta\u00F1a -GB.generic.long=Hora de Gran Breta\u00F1a -GMT.generic.long=Hora del Meridiano de Greenwich -Greenwich.generic.long=Hora del Meridiano de Greenwich -HST.generic.long=Hora de Hawaii -Hongkong.generic.long=Hora de Hong Kong -IET.generic.long=Hora Oriental -IST.generic.long=Hora de India -Iceland.generic.long=Hora del Meridiano de Greenwich -Indian/Antananarivo.generic.long=Hora de \u00C1frica Oriental -Indian/Chagos.generic.long=Hora del Territorio del Oc\u00E9ano \u00CDndico -Indian/Christmas.generic.long=Hora de la isla de Christmas -Indian/Cocos.generic.long=Hora de las islas Cocos -Indian/Comoro.generic.long=Hora de \u00C1frica Oriental -Indian/Kerguelen.generic.long=Hora de los Territorios Franceses del Sur y de la Ant\u00E1rtida -Indian/Mahe.generic.long=Hora de Seychelles -Indian/Maldives.generic.long=Hora de Maldivas -Indian/Mauritius.generic.long=Hora de Mauricio -Indian/Mayotte.generic.long=Hora de \u00C1frica Oriental -Indian/Reunion.generic.long=Hora de Reuni\u00F3n -Iran.generic.long=Hora de Ir\u00E1n -Israel.generic.long=Hora de Israel -JST.generic.long=Hora de Jap\u00F3n -Jamaica.generic.long=Hora Oriental -Japan.generic.long=Hora de Jap\u00F3n -Kwajalein.generic.long=Hora de Islas Marshall -Libya.generic.long=Hora de Europa Oriental -MET.generic.long=MET -MIT.generic.long=Hora de Samoa Occidental -MST.generic.long=Hora de las Monta\u00f1as Rocosas -MST7MDT.generic.long=Hora de las Monta\u00f1as Rocosas -Mexico/BajaNorte.generic.long=Hora del Pac\u00EDfico -Mexico/BajaSur.generic.long=Hora de las Monta\u00F1as Rocosas -Mexico/General.generic.long=Hora Central -NET.generic.long=Hora de Armenia -NST.generic.long=Hora de Nueva Zelanda -NZ-CHAT.generic.long=Hora de Chatam -NZ.generic.long=Hora de Nueva Zelanda -Navajo.generic.long=Hora de las Monta\u00F1as Rocosas -PLT.generic.long=Hora de Pakist\u00E1n -PNT.generic.long=Hora de las Monta\u00F1as Rocosas -PRC.generic.long=Hora de China -PRT.generic.long=Hora del Atl\u00E1ntico -PST.generic.long=Hora del Pac\u00EDfico -PST8PDT.generic.long=Hora del Pac\u00edfico -Pacific/Apia.generic.long=Hora de Samoa Occidental -Pacific/Auckland.generic.long=Hora de Nueva Zelanda -Pacific/Chatham.generic.long=Hora de Chatam -Pacific/Chuuk.daylight.long=Hora de verano de Chuuk -Pacific/Chuuk.generic.long=Hora de Chuuk -Pacific/Chuuk.standard.long=Hora de Chuuk -Pacific/Easter.generic.long=Hora de la Isla de Pascua -Pacific/Efate.generic.long=Hora de Vanuatu -Pacific/Enderbury.generic.long=Hora de la isla Phoenix -Pacific/Fakaofo.generic.long=Hora de Tokelau -Pacific/Fiji.generic.long=Hora de Fiji -Pacific/Funafuti.generic.long=Hora de Tuvalu -Pacific/Galapagos.generic.long=Hora de Gal\u00E1pagos -Pacific/Gambier.generic.long=Hora de Gambier -Pacific/Guadalcanal.generic.long=Hora de las Islas Solomon -Pacific/Guam.generic.long=Hora de Chamorro -Pacific/Honolulu.generic.long=Hora de Hawaii -Pacific/Johnston.generic.long=Hora de Hawaii -Pacific/Kiritimati.generic.long=Hora de las islas Line -Pacific/Kosrae.generic.long=Hora de Kosrae -Pacific/Kwajalein.generic.long=Hora de Islas Marshall -Pacific/Majuro.generic.long=Hora de Islas Marshall -Pacific/Marquesas.generic.long=Hora de Marquesas -Pacific/Midway.generic.long=Hora de Samoa -Pacific/Nauru.generic.long=Hora de Nauru -Pacific/Niue.generic.long=Hora de Niue -Pacific/Norfolk.generic.long=Hora de Norfolk -Pacific/Noumea.generic.long=Hora de Nueva Caledonia -Pacific/Pago_Pago.generic.long=Hora de Samoa -Pacific/Palau.generic.long=Hora de Palau -Pacific/Pitcairn.generic.long=Hora de Islas Pitcairn -Pacific/Pohnpei.daylight.long=Hora de verano de Pohnpei -Pacific/Pohnpei.generic.long=Hora de Pohnpei -Pacific/Pohnpei.standard.long=Hora de Pohnpei -Pacific/Ponape.daylight.long=Hora de verano de Pohnpei -Pacific/Ponape.generic.long=Hora de Pohnpei -Pacific/Ponape.standard.long=Hora de Pohnpei -Pacific/Port_Moresby.generic.long=Hora de Pap\u00FAa-Nueva Guinea -Pacific/Rarotonga.generic.long=Hora de las islas Cook -Pacific/Saipan.generic.long=Hora de Chamorro -Pacific/Samoa.generic.long=Hora de Samoa -Pacific/Tahiti.generic.long=Hora de Tahit\u00ED -Pacific/Tarawa.generic.long=Hora de las islas Gilbert -Pacific/Tongatapu.generic.long=Hora de Tonga -Pacific/Truk.daylight.long=Hora de verano de Chuuk -Pacific/Truk.generic.long=Hora de Chuuk -Pacific/Truk.standard.long=Hora de Chuuk -Pacific/Wake.generic.long=Hora de Wake -Pacific/Wallis.generic.long=Hora de Wallis y Futuna -Pacific/Yap.daylight.long=Hora de verano de Chuuk -Pacific/Yap.generic.long=Hora de Chuuk -Pacific/Yap.standard.long=Hora de Chuuk -Poland.generic.long=Hora de Europa Central -Portugal.generic.long=Hora de Europa Occidental -ROK.generic.long=Hora de Corea -SST.generic.long=Hora de las Islas Solomon -Singapore.generic.long=Hora de Singapur -SystemV/AST4.generic.long=Hora del Atl\u00E1ntico -SystemV/AST4ADT.generic.long=Hora del Atl\u00E1ntico -SystemV/CST6.generic.long=Hora Central -SystemV/CST6CDT.generic.long=Hora Central -SystemV/EST5.generic.long=Hora Oriental -SystemV/EST5EDT.generic.long=Hora Oriental -SystemV/HST10.generic.long=Hora de Hawaii -SystemV/MST7.generic.long=Hora de las Monta\u00F1as Rocosas -SystemV/MST7MDT.generic.long=Hora de las Monta\u00F1as Rocosas -SystemV/PST8.generic.long=Hora del Pac\u00EDfico -SystemV/PST8PDT.generic.long=Hora del Pac\u00EDfico -SystemV/YST9.generic.long=Hora de Alaska -SystemV/YST9YDT.generic.long=Hora de Alaska -Turkey.generic.long=Hora de Europa Oriental -UCT.generic.long=Hora Universal Coordinada -US/Alaska.generic.long=Hora de Alaska -US/Aleutian.generic.long=Hora de Hawaii-Aleutian -US/Arizona.generic.long=Hora de las Monta\u00F1as Rocosas -US/Central.generic.long=Hora Central -US/East-Indiana.generic.long=Hora Oriental -US/Eastern.generic.long=Hora Oriental -US/Hawaii.generic.long=Hora de Hawaii -US/Indiana-Starke.generic.long=Hora Central -US/Michigan.generic.long=Hora Oriental -US/Mountain.generic.long=Hora de las Monta\u00F1as Rocosas -US/Pacific-New.generic.long=Hora del Pac\u00EDfico -US/Pacific.generic.long=Hora del Pac\u00EDfico -US/Samoa.generic.long=Hora de Samoa -UTC.generic.long=Hora Universal Coordinada -Universal.generic.long=Hora Universal Coordinada -VST.generic.long=Hora de Indochina -W-SU.generic.long=Hora de Mosc\u00FA -WET.generic.long=Hora de Europa Occidental -Zulu.generic.long=Hora Universal Coordinada diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_es_short.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_es_short.properties deleted file mode 100644 index 095522a68d1..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_es_short.properties +++ /dev/null @@ -1,1743 +0,0 @@ -ACT.daylight.short=CST -ACT.generic.short=CT -ACT.standard.short=CST -AET.daylight.short=EST -AET.generic.short=ET -AET.standard.short=EST -Africa/Abidjan.daylight.short=GMT -Africa/Abidjan.generic.short=GMT -Africa/Abidjan.standard.short=GMT -Africa/Accra.daylight.short=GHST -Africa/Accra.generic.short=GMT -Africa/Accra.standard.short=GMT -Africa/Addis_Ababa.daylight.short=EAST -Africa/Addis_Ababa.generic.short=EAT -Africa/Addis_Ababa.standard.short=EAT -Africa/Algiers.daylight.short=CEST -Africa/Algiers.generic.short=CET -Africa/Algiers.standard.short=CET -Africa/Asmara.daylight.short=EAST -Africa/Asmara.generic.short=EAT -Africa/Asmara.standard.short=EAT -Africa/Asmera.daylight.short=EAST -Africa/Asmera.generic.short=EAT -Africa/Asmera.standard.short=EAT -Africa/Bamako.daylight.short=GMT -Africa/Bamako.generic.short=GMT -Africa/Bamako.standard.short=GMT -Africa/Bangui.daylight.short=WAST -Africa/Bangui.generic.short=WAT -Africa/Bangui.standard.short=WAT -Africa/Banjul.daylight.short=GMT -Africa/Banjul.generic.short=GMT -Africa/Banjul.standard.short=GMT -Africa/Bissau.daylight.short=GMT -Africa/Bissau.generic.short=GMT -Africa/Bissau.standard.short=GMT -Africa/Blantyre.daylight.short=CAST -Africa/Blantyre.generic.short=CAT -Africa/Blantyre.standard.short=CAT -Africa/Brazzaville.daylight.short=WAST -Africa/Brazzaville.generic.short=WAT -Africa/Brazzaville.standard.short=WAT -Africa/Bujumbura.daylight.short=CAST -Africa/Bujumbura.generic.short=CAT -Africa/Bujumbura.standard.short=CAT -Africa/Cairo.daylight.short=EEST -Africa/Cairo.generic.short=EET -Africa/Cairo.standard.short=EET -Africa/Casablanca.daylight.short=WEST -Africa/Casablanca.generic.short=WET -Africa/Casablanca.standard.short=WET -Africa/Ceuta.daylight.short=CEST -Africa/Ceuta.generic.short=CET -Africa/Ceuta.standard.short=CET -Africa/Conakry.daylight.short=GMT -Africa/Conakry.generic.short=GMT -Africa/Conakry.standard.short=GMT -Africa/Dakar.daylight.short=GMT -Africa/Dakar.generic.short=GMT -Africa/Dakar.standard.short=GMT -Africa/Dar_es_Salaam.daylight.short=EAST -Africa/Dar_es_Salaam.generic.short=EAT -Africa/Dar_es_Salaam.standard.short=EAT -Africa/Djibouti.daylight.short=EAST -Africa/Djibouti.generic.short=EAT -Africa/Djibouti.standard.short=EAT -Africa/Douala.daylight.short=WAST -Africa/Douala.generic.short=WAT -Africa/Douala.standard.short=WAT -Africa/El_Aaiun.daylight.short=WEST -Africa/El_Aaiun.generic.short=WET -Africa/El_Aaiun.standard.short=WET -Africa/Freetown.daylight.short=SLST -Africa/Freetown.generic.short=SLT -Africa/Freetown.standard.short=GMT -Africa/Gaborone.daylight.short=CAST -Africa/Gaborone.generic.short=CAT -Africa/Gaborone.standard.short=CAT -Africa/Harare.daylight.short=CAST -Africa/Harare.generic.short=CAT -Africa/Harare.standard.short=CAT -Africa/Johannesburg.daylight.short=SAST -Africa/Johannesburg.generic.short=SAT -Africa/Johannesburg.standard.short=SAST -Africa/Juba.daylight.short=EAST -Africa/Juba.generic.short=EAT -Africa/Juba.standard.short=EAT -Africa/Kampala.daylight.short=EAST -Africa/Kampala.generic.short=EAT -Africa/Kampala.standard.short=EAT -Africa/Khartoum.daylight.short=EAST -Africa/Khartoum.generic.short=EAT -Africa/Khartoum.standard.short=EAT -Africa/Kigali.daylight.short=CAST -Africa/Kigali.generic.short=CAT -Africa/Kigali.standard.short=CAT -Africa/Kinshasa.daylight.short=WAST -Africa/Kinshasa.generic.short=WAT -Africa/Kinshasa.standard.short=WAT -Africa/Lagos.daylight.short=WAST -Africa/Lagos.generic.short=WAT -Africa/Lagos.standard.short=WAT -Africa/Libreville.daylight.short=WAST -Africa/Libreville.generic.short=WAT -Africa/Libreville.standard.short=WAT -Africa/Lome.daylight.short=GMT -Africa/Lome.generic.short=GMT -Africa/Lome.standard.short=GMT -Africa/Luanda.daylight.short=WAST -Africa/Luanda.generic.short=WAT -Africa/Luanda.standard.short=WAT -Africa/Lubumbashi.daylight.short=CAST -Africa/Lubumbashi.generic.short=CAT -Africa/Lubumbashi.standard.short=CAT -Africa/Lusaka.daylight.short=CAST -Africa/Lusaka.generic.short=CAT -Africa/Lusaka.standard.short=CAT -Africa/Malabo.daylight.short=WAST -Africa/Malabo.generic.short=WAT -Africa/Malabo.standard.short=WAT -Africa/Maputo.daylight.short=CAST -Africa/Maputo.generic.short=CAT -Africa/Maputo.standard.short=CAT -Africa/Maseru.daylight.short=SAST -Africa/Maseru.generic.short=SAT -Africa/Maseru.standard.short=SAST -Africa/Mbabane.daylight.short=SAST -Africa/Mbabane.generic.short=SAT -Africa/Mbabane.standard.short=SAST -Africa/Mogadishu.daylight.short=EAST -Africa/Mogadishu.generic.short=EAT -Africa/Mogadishu.standard.short=EAT -Africa/Monrovia.daylight.short=GMT -Africa/Monrovia.generic.short=GMT -Africa/Monrovia.standard.short=GMT -Africa/Nairobi.daylight.short=EAST -Africa/Nairobi.generic.short=EAT -Africa/Nairobi.standard.short=EAT -Africa/Ndjamena.daylight.short=WAST -Africa/Ndjamena.generic.short=WAT -Africa/Ndjamena.standard.short=WAT -Africa/Niamey.daylight.short=WAST -Africa/Niamey.generic.short=WAT -Africa/Niamey.standard.short=WAT -Africa/Nouakchott.daylight.short=GMT -Africa/Nouakchott.generic.short=GMT -Africa/Nouakchott.standard.short=GMT -Africa/Ouagadougou.daylight.short=GMT -Africa/Ouagadougou.generic.short=GMT -Africa/Ouagadougou.standard.short=GMT -Africa/Porto-Novo.daylight.short=WAST -Africa/Porto-Novo.generic.short=WAT -Africa/Porto-Novo.standard.short=WAT -Africa/Sao_Tome.daylight.short=GMT -Africa/Sao_Tome.generic.short=GMT -Africa/Sao_Tome.standard.short=GMT -Africa/Timbuktu.daylight.short=GMT -Africa/Timbuktu.generic.short=GMT -Africa/Timbuktu.standard.short=GMT -Africa/Tripoli.daylight.short=EEST -Africa/Tripoli.generic.short=EET -Africa/Tripoli.standard.short=EET -Africa/Tunis.daylight.short=CEST -Africa/Tunis.generic.short=CET -Africa/Tunis.standard.short=CET -Africa/Windhoek.daylight.short=WAST -Africa/Windhoek.generic.short=WAT -Africa/Windhoek.standard.short=WAT -AGT.daylight.short=ARST -AGT.generic.short=ART -AGT.standard.short=ART -America/Adak.daylight.short=HADT -America/Adak.generic.short=HAT -America/Adak.standard.short=HAST -America/Anchorage.daylight.short=AKDT -America/Anchorage.generic.short=AKT -America/Anchorage.standard.short=AKST -America/Anguilla.daylight.short=ADT -America/Anguilla.generic.short=AT -America/Anguilla.standard.short=AST -America/Antigua.daylight.short=ADT -America/Antigua.generic.short=AT -America/Antigua.standard.short=AST -America/Araguaina.daylight.short=BRST -America/Araguaina.generic.short=BRT -America/Araguaina.standard.short=BRT -America/Argentina/Buenos_Aires.daylight.short=ARST -America/Argentina/Buenos_Aires.generic.short=ART -America/Argentina/Buenos_Aires.standard.short=ART -America/Argentina/Catamarca.daylight.short=ARST -America/Argentina/Catamarca.generic.short=ART -America/Argentina/Catamarca.standard.short=ART -America/Argentina/ComodRivadavia.daylight.short=ARST -America/Argentina/ComodRivadavia.generic.short=ART -America/Argentina/ComodRivadavia.standard.short=ART -America/Argentina/Cordoba.daylight.short=ARST -America/Argentina/Cordoba.generic.short=ART -America/Argentina/Cordoba.standard.short=ART -America/Argentina/Jujuy.daylight.short=ARST -America/Argentina/Jujuy.generic.short=ART -America/Argentina/Jujuy.standard.short=ART -America/Argentina/La_Rioja.daylight.short=ARST -America/Argentina/La_Rioja.generic.short=ART -America/Argentina/La_Rioja.standard.short=ART -America/Argentina/Mendoza.daylight.short=ARST -America/Argentina/Mendoza.generic.short=ART -America/Argentina/Mendoza.standard.short=ART -America/Argentina/Rio_Gallegos.daylight.short=ARST -America/Argentina/Rio_Gallegos.generic.short=ART -America/Argentina/Rio_Gallegos.standard.short=ART -America/Argentina/Salta.daylight.short=ARST -America/Argentina/Salta.generic.short=ART -America/Argentina/Salta.standard.short=ART -America/Argentina/San_Juan.daylight.short=ARST -America/Argentina/San_Juan.generic.short=ART -America/Argentina/San_Juan.standard.short=ART -America/Argentina/San_Luis.daylight.short=ARST -America/Argentina/San_Luis.generic.short=ART -America/Argentina/San_Luis.standard.short=ART -America/Argentina/Tucuman.daylight.short=ARST -America/Argentina/Tucuman.generic.short=ART -America/Argentina/Tucuman.standard.short=ART -America/Argentina/Ushuaia.daylight.short=ARST -America/Argentina/Ushuaia.generic.short=ART -America/Argentina/Ushuaia.standard.short=ART -America/Aruba.daylight.short=ADT -America/Aruba.generic.short=AT -America/Aruba.standard.short=AST -America/Asuncion.daylight.short=PYST -America/Asuncion.generic.short=PYT -America/Asuncion.standard.short=PYT -America/Atikokan.daylight.short=EDT -America/Atikokan.generic.short=ET -America/Atikokan.standard.short=EST -America/Atka.daylight.short=HADT -America/Atka.generic.short=HAT -America/Atka.standard.short=HAST -America/Bahia_Banderas.daylight.short=CDT -America/Bahia_Banderas.generic.short=CT -America/Bahia_Banderas.standard.short=CST -America/Bahia.daylight.short=BRST -America/Bahia.generic.short=BRT -America/Bahia.standard.short=BRT -America/Barbados.daylight.short=ADT -America/Barbados.generic.short=AT -America/Barbados.standard.short=AST -America/Belem.daylight.short=BRST -America/Belem.generic.short=BRT -America/Belem.standard.short=BRT -America/Belize.daylight.short=CDT -America/Belize.generic.short=CT -America/Belize.standard.short=CST -America/Blanc-Sablon.daylight.short=ADT -America/Blanc-Sablon.generic.short=AT -America/Blanc-Sablon.standard.short=AST -America/Boa_Vista.daylight.short=AMST -America/Boa_Vista.generic.short=AMT -America/Boa_Vista.standard.short=AMT -America/Bogota.daylight.short=COST -America/Bogota.generic.short=COT -America/Bogota.standard.short=COT -America/Boise.daylight.short=MDT -America/Boise.generic.short=MT -America/Boise.standard.short=MST -America/Buenos_Aires.daylight.short=ARST -America/Buenos_Aires.generic.short=ART -America/Buenos_Aires.standard.short=ART -America/Cambridge_Bay.daylight.short=MDT -America/Cambridge_Bay.generic.short=MT -America/Cambridge_Bay.standard.short=MST -America/Campo_Grande.daylight.short=AMST -America/Campo_Grande.generic.short=AMT -America/Campo_Grande.standard.short=AMT -America/Cancun.daylight.short=CDT -America/Cancun.generic.short=CT -America/Cancun.standard.short=CST -America/Caracas.daylight.short=VEST -America/Caracas.generic.short=VET -America/Caracas.standard.short=VET -America/Catamarca.daylight.short=ARST -America/Catamarca.generic.short=ART -America/Catamarca.standard.short=ART -America/Cayenne.daylight.short=GFST -America/Cayenne.generic.short=GFT -America/Cayenne.standard.short=GFT -America/Cayman.daylight.short=EDT -America/Cayman.generic.short=ET -America/Cayman.standard.short=EST -America/Chicago.daylight.short=CDT -America/Chicago.generic.short=CT -America/Chicago.standard.short=CST -America/Chihuahua.daylight.short=MDT -America/Chihuahua.generic.short=MT -America/Chihuahua.standard.short=MST -America/Coral_Harbour.daylight.short=EDT -America/Coral_Harbour.generic.short=ET -America/Coral_Harbour.standard.short=EST -America/Cordoba.daylight.short=ARST -America/Cordoba.generic.short=ART -America/Cordoba.standard.short=ART -America/Costa_Rica.daylight.short=CDT -America/Costa_Rica.generic.short=CT -America/Costa_Rica.standard.short=CST -America/Creston.daylight.short=MDT -America/Creston.generic.short=MT -America/Creston.standard.short=MST -America/Cuiaba.daylight.short=AMST -America/Cuiaba.generic.short=AMT -America/Cuiaba.standard.short=AMT -America/Curacao.daylight.short=ADT -America/Curacao.generic.short=AT -America/Curacao.standard.short=AST -America/Danmarkshavn.daylight.short=GMT -America/Danmarkshavn.generic.short=GMT -America/Danmarkshavn.standard.short=GMT -America/Dawson_Creek.daylight.short=MDT -America/Dawson_Creek.generic.short=MT -America/Dawson_Creek.standard.short=MST -America/Dawson.daylight.short=PDT -America/Dawson.generic.short=PT -America/Dawson.standard.short=PST -America/Denver.daylight.short=MDT -America/Denver.generic.short=MT -America/Denver.standard.short=MST -America/Detroit.daylight.short=EDT -America/Detroit.generic.short=ET -America/Detroit.standard.short=EST -America/Dominica.daylight.short=ADT -America/Dominica.generic.short=AT -America/Dominica.standard.short=AST -America/Edmonton.daylight.short=MDT -America/Edmonton.generic.short=MT -America/Edmonton.standard.short=MST -America/Eirunepe.daylight.short=ACST -America/Eirunepe.generic.short=ACT -America/Eirunepe.standard.short=ACT -America/El_Salvador.daylight.short=CDT -America/El_Salvador.generic.short=CT -America/El_Salvador.standard.short=CST -America/Ensenada.daylight.short=PDT -America/Ensenada.generic.short=PT -America/Ensenada.standard.short=PST -America/Fortaleza.daylight.short=BRST -America/Fortaleza.generic.short=BRT -America/Fortaleza.standard.short=BRT -America/Fort_Wayne.daylight.short=EDT -America/Fort_Wayne.generic.short=ET -America/Fort_Wayne.standard.short=EST -America/Glace_Bay.daylight.short=ADT -America/Glace_Bay.generic.short=AT -America/Glace_Bay.standard.short=AST -America/Godthab.daylight.short=WGST -America/Godthab.generic.short=WGT -America/Godthab.standard.short=WGT -America/Goose_Bay.daylight.short=ADT -America/Goose_Bay.generic.short=AT -America/Goose_Bay.standard.short=AST -America/Grand_Turk.daylight.short=EDT -America/Grand_Turk.generic.short=ET -America/Grand_Turk.standard.short=EST -America/Grenada.daylight.short=ADT -America/Grenada.generic.short=AT -America/Grenada.standard.short=AST -America/Guadeloupe.daylight.short=ADT -America/Guadeloupe.generic.short=AT -America/Guadeloupe.standard.short=AST -America/Guatemala.daylight.short=CDT -America/Guatemala.generic.short=CT -America/Guatemala.standard.short=CST -America/Guayaquil.daylight.short=ECST -America/Guayaquil.generic.short=ECT -America/Guayaquil.standard.short=ECT -America/Guyana.daylight.short=GYST -America/Guyana.generic.short=GYT -America/Guyana.standard.short=GYT -America/Halifax.daylight.short=ADT -America/Halifax.generic.short=AT -America/Halifax.standard.short=AST -America/Havana.daylight.short=CDT -America/Havana.generic.short=CT -America/Havana.standard.short=CST -America/Hermosillo.daylight.short=MDT -America/Hermosillo.generic.short=MT -America/Hermosillo.standard.short=MST -America/Indiana/Indianapolis.daylight.short=EDT -America/Indiana/Indianapolis.generic.short=ET -America/Indiana/Indianapolis.standard.short=EST -America/Indiana/Knox.daylight.short=CDT -America/Indiana/Knox.generic.short=CT -America/Indiana/Knox.standard.short=CST -America/Indiana/Marengo.daylight.short=EDT -America/Indiana/Marengo.generic.short=ET -America/Indiana/Marengo.standard.short=EST -America/Indiana/Petersburg.daylight.short=EDT -America/Indiana/Petersburg.generic.short=ET -America/Indiana/Petersburg.standard.short=EST -America/Indianapolis.daylight.short=EDT -America/Indianapolis.generic.short=ET -America/Indianapolis.standard.short=EST -America/Indiana/Tell_City.daylight.short=CDT -America/Indiana/Tell_City.generic.short=CT -America/Indiana/Tell_City.standard.short=CST -America/Indiana/Vevay.daylight.short=EDT -America/Indiana/Vevay.generic.short=ET -America/Indiana/Vevay.standard.short=EST -America/Indiana/Vincennes.daylight.short=EDT -America/Indiana/Vincennes.generic.short=ET -America/Indiana/Vincennes.standard.short=EST -America/Indiana/Winamac.daylight.short=EDT -America/Indiana/Winamac.generic.short=ET -America/Indiana/Winamac.standard.short=EST -America/Inuvik.daylight.short=MDT -America/Inuvik.generic.short=MT -America/Inuvik.standard.short=MST -America/Iqaluit.daylight.short=EDT -America/Iqaluit.generic.short=ET -America/Iqaluit.standard.short=EST -America/Jamaica.daylight.short=EDT -America/Jamaica.generic.short=ET -America/Jamaica.standard.short=EST -America/Jujuy.daylight.short=ARST -America/Jujuy.generic.short=ART -America/Jujuy.standard.short=ART -America/Juneau.daylight.short=AKDT -America/Juneau.generic.short=AKT -America/Juneau.standard.short=AKST -America/Kentucky/Louisville.daylight.short=EDT -America/Kentucky/Louisville.generic.short=ET -America/Kentucky/Louisville.standard.short=EST -America/Kentucky/Monticello.daylight.short=EDT -America/Kentucky/Monticello.generic.short=ET -America/Kentucky/Monticello.standard.short=EST -America/Knox_IN.daylight.short=CDT -America/Knox_IN.generic.short=CT -America/Knox_IN.standard.short=CST -America/Kralendijk.daylight.short=ADT -America/Kralendijk.generic.short=AT -America/Kralendijk.standard.short=AST -America/La_Paz.daylight.short=BOST -America/La_Paz.generic.short=BOT -America/La_Paz.standard.short=BOT -America/Lima.daylight.short=PEST -America/Lima.generic.short=PET -America/Lima.standard.short=PET -America/Los_Angeles.daylight.short=PDT -America/Los_Angeles.generic.short=PT -America/Los_Angeles.standard.short=PST -America/Louisville.daylight.short=EDT -America/Louisville.generic.short=ET -America/Louisville.standard.short=EST -America/Lower_Princes.daylight.short=ADT -America/Lower_Princes.generic.short=AT -America/Lower_Princes.standard.short=AST -America/Maceio.daylight.short=BRST -America/Maceio.generic.short=BRT -America/Maceio.standard.short=BRT -America/Managua.daylight.short=CDT -America/Managua.generic.short=CT -America/Managua.standard.short=CST -America/Manaus.daylight.short=AMST -America/Manaus.generic.short=AMT -America/Manaus.standard.short=AMT -America/Marigot.daylight.short=ADT -America/Marigot.generic.short=AT -America/Marigot.standard.short=AST -America/Martinique.daylight.short=ADT -America/Martinique.generic.short=AT -America/Martinique.standard.short=AST -America/Matamoros.daylight.short=CDT -America/Matamoros.generic.short=CT -America/Matamoros.standard.short=CST -America/Mazatlan.daylight.short=MDT -America/Mazatlan.generic.short=MT -America/Mazatlan.standard.short=MST -America/Mendoza.daylight.short=ARST -America/Mendoza.generic.short=ART -America/Mendoza.standard.short=ART -America/Menominee.daylight.short=CDT -America/Menominee.generic.short=CT -America/Menominee.standard.short=CST -America/Merida.daylight.short=CDT -America/Merida.generic.short=CT -America/Merida.standard.short=CST -America/Metlakatla.daylight.short=MeDT -America/Metlakatla.generic.short=MeT -America/Metlakatla.standard.short=MeST -America/Mexico_City.daylight.short=CDT -America/Mexico_City.generic.short=CT -America/Mexico_City.standard.short=CST -America/Miquelon.daylight.short=PMDT -America/Miquelon.generic.short=PMT -America/Miquelon.standard.short=PMST -America/Moncton.daylight.short=ADT -America/Moncton.generic.short=AT -America/Moncton.standard.short=AST -America/Monterrey.daylight.short=CDT -America/Monterrey.generic.short=CT -America/Monterrey.standard.short=CST -America/Montevideo.daylight.short=UYST -America/Montevideo.generic.short=UYT -America/Montevideo.standard.short=UYT -America/Montreal.daylight.short=EDT -America/Montreal.generic.short=ET -America/Montreal.standard.short=EST -America/Montserrat.daylight.short=ADT -America/Montserrat.generic.short=AT -America/Montserrat.standard.short=AST -America/Nassau.daylight.short=EDT -America/Nassau.generic.short=ET -America/Nassau.standard.short=EST -America/New_York.daylight.short=EDT -America/New_York.generic.short=ET -America/New_York.standard.short=EST -America/Nipigon.daylight.short=EDT -America/Nipigon.generic.short=ET -America/Nipigon.standard.short=EST -America/Nome.daylight.short=AKDT -America/Nome.generic.short=AKT -America/Nome.standard.short=AKST -America/Noronha.daylight.short=FNST -America/Noronha.generic.short=FNT -America/Noronha.standard.short=FNT -America/North_Dakota/Beulah.daylight.short=CDT -America/North_Dakota/Beulah.generic.short=CT -America/North_Dakota/Beulah.standard.short=CST -America/North_Dakota/Center.daylight.short=CDT -America/North_Dakota/Center.generic.short=CT -America/North_Dakota/Center.standard.short=CST -America/North_Dakota/New_Salem.daylight.short=CDT -America/North_Dakota/New_Salem.generic.short=CT -America/North_Dakota/New_Salem.standard.short=CST -America/Ojinaga.daylight.short=MDT -America/Ojinaga.generic.short=MT -America/Ojinaga.standard.short=MST -America/Panama.daylight.short=EDT -America/Panama.generic.short=ET -America/Panama.standard.short=EST -America/Pangnirtung.daylight.short=EDT -America/Pangnirtung.generic.short=ET -America/Pangnirtung.standard.short=EST -America/Paramaribo.daylight.short=SRST -America/Paramaribo.generic.short=SRT -America/Paramaribo.standard.short=SRT -America/Phoenix.daylight.short=MDT -America/Phoenix.generic.short=MT -America/Phoenix.standard.short=MST -America/Port-au-Prince.daylight.short=EDT -America/Port-au-Prince.generic.short=ET -America/Port-au-Prince.standard.short=EST -America/Porto_Acre.daylight.short=ACST -America/Porto_Acre.generic.short=ACT -America/Porto_Acre.standard.short=ACT -America/Port_of_Spain.daylight.short=ADT -America/Port_of_Spain.generic.short=AT -America/Port_of_Spain.standard.short=AST -America/Porto_Velho.daylight.short=AMST -America/Porto_Velho.generic.short=AMT -America/Porto_Velho.standard.short=AMT -America/Puerto_Rico.daylight.short=ADT -America/Puerto_Rico.generic.short=AT -America/Puerto_Rico.standard.short=AST -America/Rainy_River.daylight.short=CDT -America/Rainy_River.generic.short=CT -America/Rainy_River.standard.short=CST -America/Rankin_Inlet.daylight.short=CDT -America/Rankin_Inlet.generic.short=CT -America/Rankin_Inlet.standard.short=CST -America/Recife.daylight.short=BRST -America/Recife.generic.short=BRT -America/Recife.standard.short=BRT -America/Regina.daylight.short=CDT -America/Regina.generic.short=CT -America/Regina.standard.short=CST -America/Resolute.daylight.short=CDT -America/Resolute.generic.short=CT -America/Resolute.standard.short=CST -America/Rio_Branco.daylight.short=ACST -America/Rio_Branco.generic.short=ACT -America/Rio_Branco.standard.short=ACT -America/Rosario.daylight.short=ARST -America/Rosario.generic.short=ART -America/Rosario.standard.short=ART -America/Santa_Isabel.daylight.short=PDT -America/Santa_Isabel.generic.short=PT -America/Santa_Isabel.standard.short=PST -America/Santarem.daylight.short=BRST -America/Santarem.generic.short=BRT -America/Santarem.standard.short=BRT -America/Santiago.daylight.short=CLST -America/Santiago.generic.short=CLT -America/Santiago.standard.short=CLT -America/Santo_Domingo.daylight.short=ADT -America/Santo_Domingo.generic.short=AT -America/Santo_Domingo.standard.short=AST -America/Sao_Paulo.daylight.short=BRST -America/Sao_Paulo.generic.short=BRT -America/Sao_Paulo.standard.short=BRT -America/Scoresbysund.daylight.short=EGST -America/Scoresbysund.generic.short=EGT -America/Scoresbysund.standard.short=EGT -America/Shiprock.daylight.short=MDT -America/Shiprock.generic.short=MT -America/Shiprock.standard.short=MST -America/Sitka.daylight.short=AKDT -America/Sitka.generic.short=AKT -America/Sitka.standard.short=AKST -America/St_Barthelemy.daylight.short=ADT -America/St_Barthelemy.generic.short=AT -America/St_Barthelemy.standard.short=AST -America/St_Johns.daylight.short=NDT -America/St_Johns.generic.short=NT -America/St_Johns.standard.short=NST -America/St_Kitts.daylight.short=ADT -America/St_Kitts.generic.short=AT -America/St_Kitts.standard.short=AST -America/St_Lucia.daylight.short=ADT -America/St_Lucia.generic.short=AT -America/St_Lucia.standard.short=AST -America/St_Thomas.daylight.short=ADT -America/St_Thomas.generic.short=AT -America/St_Thomas.standard.short=AST -America/St_Vincent.daylight.short=ADT -America/St_Vincent.generic.short=AT -America/St_Vincent.standard.short=AST -America/Swift_Current.daylight.short=CDT -America/Swift_Current.generic.short=CT -America/Swift_Current.standard.short=CST -America/Tegucigalpa.daylight.short=CDT -America/Tegucigalpa.generic.short=CT -America/Tegucigalpa.standard.short=CST -America/Thule.daylight.short=ADT -America/Thule.generic.short=AT -America/Thule.standard.short=AST -America/Thunder_Bay.daylight.short=EDT -America/Thunder_Bay.generic.short=ET -America/Thunder_Bay.standard.short=EST -America/Tijuana.daylight.short=PDT -America/Tijuana.generic.short=PT -America/Tijuana.standard.short=PST -America/Toronto.daylight.short=EDT -America/Toronto.generic.short=ET -America/Toronto.standard.short=EST -America/Tortola.daylight.short=ADT -America/Tortola.generic.short=AT -America/Tortola.standard.short=AST -America/Vancouver.daylight.short=PDT -America/Vancouver.generic.short=PT -America/Vancouver.standard.short=PST -America/Virgin.daylight.short=ADT -America/Virgin.generic.short=AT -America/Virgin.standard.short=AST -America/Whitehorse.daylight.short=PDT -America/Whitehorse.generic.short=PT -America/Whitehorse.standard.short=PST -America/Winnipeg.daylight.short=CDT -America/Winnipeg.generic.short=CT -America/Winnipeg.standard.short=CST -America/Yakutat.daylight.short=AKDT -America/Yakutat.generic.short=AKT -America/Yakutat.standard.short=AKST -America/Yellowknife.daylight.short=MDT -America/Yellowknife.generic.short=MT -America/Yellowknife.standard.short=MST -Antarctica/Casey.daylight.short=WST -Antarctica/Casey.generic.short=WT -Antarctica/Casey.standard.short=WST -Antarctica/Davis.daylight.short=DAVST -Antarctica/Davis.generic.short=DAVT -Antarctica/Davis.standard.short=DAVT -Antarctica/DumontDUrville.daylight.short=DDUST -Antarctica/DumontDUrville.generic.short=DDUT -Antarctica/DumontDUrville.standard.short=DDUT -Antarctica/Macquarie.daylight.short=MIST -Antarctica/Macquarie.generic.short=MIST -Antarctica/Macquarie.standard.short=MIST -Antarctica/Mawson.daylight.short=MAWST -Antarctica/Mawson.generic.short=MAWT -Antarctica/Mawson.standard.short=MAWT -Antarctica/McMurdo.daylight.short=NZDT -Antarctica/McMurdo.generic.short=NZT -Antarctica/McMurdo.standard.short=NZST -Antarctica/Palmer.daylight.short=CLST -Antarctica/Palmer.generic.short=CLT -Antarctica/Palmer.standard.short=CLT -Antarctica/Rothera.daylight.short=ROTST -Antarctica/Rothera.generic.short=ROTT -Antarctica/Rothera.standard.short=ROTT -Antarctica/South_Pole.daylight.short=NZDT -Antarctica/South_Pole.generic.short=NZT -Antarctica/South_Pole.standard.short=NZST -Antarctica/Syowa.daylight.short=SYOST -Antarctica/Syowa.generic.short=SYOT -Antarctica/Syowa.standard.short=SYOT -Antarctica/Vostok.daylight.short=VOSST -Antarctica/Vostok.generic.short=VOST -Antarctica/Vostok.standard.short=VOST -Arctic/Longyearbyen.daylight.short=CEST -Arctic/Longyearbyen.generic.short=CET -Arctic/Longyearbyen.standard.short=CET -ART.daylight.short=EEST -ART.generic.short=EET -ART.standard.short=EET -Asia/Aden.daylight.short=ADT -Asia/Aden.generic.short=AT -Asia/Aden.standard.short=AST -Asia/Almaty.daylight.short=ALMST -Asia/Almaty.generic.short=ALMT -Asia/Almaty.standard.short=ALMT -Asia/Amman.daylight.short=ADT -Asia/Amman.generic.short=AT -Asia/Amman.standard.short=AST -Asia/Anadyr.daylight.short=ANAST -Asia/Anadyr.generic.short=ANAT -Asia/Anadyr.standard.short=ANAT -Asia/Aqtau.daylight.short=AQTST -Asia/Aqtau.generic.short=AQTT -Asia/Aqtau.standard.short=AQTT -Asia/Aqtobe.daylight.short=AQTST -Asia/Aqtobe.generic.short=AQTT -Asia/Aqtobe.standard.short=AQTT -Asia/Ashgabat.daylight.short=TMST -Asia/Ashgabat.generic.short=TMT -Asia/Ashgabat.standard.short=TMT -Asia/Ashkhabad.daylight.short=TMST -Asia/Ashkhabad.generic.short=TMT -Asia/Ashkhabad.standard.short=TMT -Asia/Baghdad.daylight.short=ADT -Asia/Baghdad.generic.short=AT -Asia/Baghdad.standard.short=AST -Asia/Bahrain.daylight.short=ADT -Asia/Bahrain.generic.short=AT -Asia/Bahrain.standard.short=AST -Asia/Baku.daylight.short=AZST -Asia/Baku.generic.short=AZT -Asia/Baku.standard.short=AZT -Asia/Bangkok.daylight.short=ICST -Asia/Bangkok.generic.short=ICT -Asia/Bangkok.standard.short=ICT -Asia/Beirut.daylight.short=EEST -Asia/Beirut.generic.short=EET -Asia/Beirut.standard.short=EET -Asia/Bishkek.daylight.short=KGST -Asia/Bishkek.generic.short=KGT -Asia/Bishkek.standard.short=KGT -Asia/Brunei.daylight.short=BNST -Asia/Brunei.generic.short=BNT -Asia/Brunei.standard.short=BNT -Asia/Calcutta.daylight.short=IDT -Asia/Calcutta.generic.short=IT -Asia/Calcutta.standard.short=IST -Asia/Choibalsan.daylight.short=CHOST -Asia/Choibalsan.generic.short=CHOT -Asia/Choibalsan.standard.short=CHOT -Asia/Chongqing.daylight.short=CDT -Asia/Chongqing.generic.short=CT -Asia/Chongqing.standard.short=CST -Asia/Chungking.daylight.short=CDT -Asia/Chungking.generic.short=CT -Asia/Chungking.standard.short=CST -Asia/Colombo.daylight.short=IDT -Asia/Colombo.generic.short=IT -Asia/Colombo.standard.short=IST -Asia/Dacca.daylight.short=BDST -Asia/Dacca.generic.short=BDT -Asia/Dacca.standard.short=BDT -Asia/Damascus.daylight.short=EEST -Asia/Damascus.generic.short=EET -Asia/Damascus.standard.short=EET -Asia/Dhaka.daylight.short=BDST -Asia/Dhaka.generic.short=BDT -Asia/Dhaka.standard.short=BDT -Asia/Dili.daylight.short=TLST -Asia/Dili.generic.short=TLT -Asia/Dili.standard.short=TLT -Asia/Dubai.daylight.short=GDT -Asia/Dubai.generic.short=GT -Asia/Dubai.standard.short=GST -Asia/Dushanbe.daylight.short=TJST -Asia/Dushanbe.generic.short=TJT -Asia/Dushanbe.standard.short=TJT -Asia/Gaza.daylight.short=EEST -Asia/Gaza.generic.short=EET -Asia/Gaza.standard.short=EET -Asia/Harbin.daylight.short=CDT -Asia/Harbin.generic.short=CT -Asia/Harbin.standard.short=CST -Asia/Hebron.daylight.short=EEST -Asia/Hebron.generic.short=EET -Asia/Hebron.standard.short=EET -Asia/Ho_Chi_Minh.daylight.short=ICST -Asia/Ho_Chi_Minh.generic.short=ICT -Asia/Ho_Chi_Minh.standard.short=ICT -Asia/Hong_Kong.daylight.short=HKST -Asia/Hong_Kong.generic.short=HKT -Asia/Hong_Kong.standard.short=HKT -Asia/Hovd.daylight.short=HOVST -Asia/Hovd.generic.short=HOVT -Asia/Hovd.standard.short=HOVT -Asia/Irkutsk.daylight.short=IRKST -Asia/Irkutsk.generic.short=IRKT -Asia/Irkutsk.standard.short=IRKT -Asia/Istanbul.daylight.short=EEST -Asia/Istanbul.generic.short=EET -Asia/Istanbul.standard.short=EET -Asia/Jakarta.daylight.short=WIST -Asia/Jakarta.generic.short=WIB -Asia/Jakarta.standard.short=WIB -Asia/Jayapura.daylight.short=EIST -Asia/Jayapura.generic.short=WIT -Asia/Jayapura.standard.short=WIT -Asia/Jerusalem.daylight.short=IDT -Asia/Jerusalem.generic.short=IT -Asia/Jerusalem.standard.short=IST -Asia/Kabul.daylight.short=AFST -Asia/Kabul.generic.short=AFT -Asia/Kabul.standard.short=AFT -Asia/Kamchatka.daylight.short=PETST -Asia/Kamchatka.generic.short=PETT -Asia/Kamchatka.standard.short=PETT -Asia/Karachi.daylight.short=PKST -Asia/Karachi.generic.short=PKT -Asia/Karachi.standard.short=PKT -Asia/Kashgar.daylight.short=CDT -Asia/Kashgar.generic.short=CT -Asia/Kashgar.standard.short=CST -Asia/Kathmandu.daylight.short=NPST -Asia/Kathmandu.generic.short=NPT -Asia/Kathmandu.standard.short=NPT -Asia/Katmandu.daylight.short=NPST -Asia/Katmandu.generic.short=NPT -Asia/Katmandu.standard.short=NPT -Asia/Khandyga.daylight.short=YAKST -Asia/Khandyga.generic.short=YAKT -Asia/Khandyga.standard.short=YAKT -Asia/Kolkata.daylight.short=IDT -Asia/Kolkata.generic.short=IT -Asia/Kolkata.standard.short=IST -Asia/Krasnoyarsk.daylight.short=KRAST -Asia/Krasnoyarsk.generic.short=KRAT -Asia/Krasnoyarsk.standard.short=KRAT -Asia/Kuala_Lumpur.daylight.short=MYST -Asia/Kuala_Lumpur.generic.short=MYT -Asia/Kuala_Lumpur.standard.short=MYT -Asia/Kuching.daylight.short=MYST -Asia/Kuching.generic.short=MYT -Asia/Kuching.standard.short=MYT -Asia/Kuwait.daylight.short=ADT -Asia/Kuwait.generic.short=AT -Asia/Kuwait.standard.short=AST -Asia/Macao.daylight.short=CDT -Asia/Macao.generic.short=CT -Asia/Macao.standard.short=CST -Asia/Macau.daylight.short=CDT -Asia/Macau.generic.short=CT -Asia/Macau.standard.short=CST -Asia/Magadan.daylight.short=MAGST -Asia/Magadan.generic.short=MAGT -Asia/Magadan.standard.short=MAGT -Asia/Makassar.daylight.short=CIST -Asia/Makassar.generic.short=WITA -Asia/Makassar.standard.short=WITA -Asia/Manila.daylight.short=PHST -Asia/Manila.generic.short=PHT -Asia/Manila.standard.short=PHT -Asia/Muscat.daylight.short=GDT -Asia/Muscat.generic.short=GT -Asia/Muscat.standard.short=GST -Asia/Nicosia.daylight.short=EEST -Asia/Nicosia.generic.short=EET -Asia/Nicosia.standard.short=EET -Asia/Novokuznetsk.daylight.short=NOVST -Asia/Novokuznetsk.generic.short=NOVT -Asia/Novokuznetsk.standard.short=NOVT -Asia/Novosibirsk.daylight.short=NOVST -Asia/Novosibirsk.generic.short=NOVT -Asia/Novosibirsk.standard.short=NOVT -Asia/Omsk.daylight.short=OMSST -Asia/Omsk.generic.short=OMST -Asia/Omsk.standard.short=OMST -Asia/Oral.daylight.short=ORAST -Asia/Oral.generic.short=ORAT -Asia/Oral.standard.short=ORAT -Asia/Phnom_Penh.daylight.short=ICST -Asia/Phnom_Penh.generic.short=ICT -Asia/Phnom_Penh.standard.short=ICT -Asia/Pontianak.daylight.short=WIST -Asia/Pontianak.generic.short=WIB -Asia/Pontianak.standard.short=WIB -Asia/Pyongyang.daylight.short=KDT -Asia/Pyongyang.generic.short=KT -Asia/Pyongyang.standard.short=KST -Asia/Qatar.daylight.short=ADT -Asia/Qatar.generic.short=AT -Asia/Qatar.standard.short=AST -Asia/Qyzylorda.daylight.short=QYZST -Asia/Qyzylorda.generic.short=QYZT -Asia/Qyzylorda.standard.short=QYZT -Asia/Rangoon.daylight.short=MMST -Asia/Rangoon.generic.short=MMT -Asia/Rangoon.standard.short=MMT -Asia/Saigon.daylight.short=ICST -Asia/Saigon.generic.short=ICT -Asia/Saigon.standard.short=ICT -Asia/Sakhalin.daylight.short=SAKST -Asia/Sakhalin.generic.short=SAKT -Asia/Sakhalin.standard.short=SAKT -Asia/Samarkand.daylight.short=UZST -Asia/Samarkand.generic.short=UZT -Asia/Samarkand.standard.short=UZT -Asia/Seoul.daylight.short=KDT -Asia/Seoul.generic.short=KT -Asia/Seoul.standard.short=KST -Asia/Shanghai.daylight.short=CDT -Asia/Shanghai.generic.short=CT -Asia/Shanghai.standard.short=CST -Asia/Singapore.daylight.short=SGST -Asia/Singapore.generic.short=SGT -Asia/Singapore.standard.short=SGT -Asia/Taipei.daylight.short=CDT -Asia/Taipei.generic.short=CT -Asia/Taipei.standard.short=CST -Asia/Tashkent.daylight.short=UZST -Asia/Tashkent.generic.short=UZT -Asia/Tashkent.standard.short=UZT -Asia/Tbilisi.daylight.short=GEST -Asia/Tbilisi.generic.short=GET -Asia/Tbilisi.standard.short=GET -Asia/Tehran.daylight.short=IRDT -Asia/Tehran.generic.short=IRT -Asia/Tehran.standard.short=IRST -Asia/Tel_Aviv.daylight.short=IDT -Asia/Tel_Aviv.generic.short=IT -Asia/Tel_Aviv.standard.short=IST -Asia/Thimbu.daylight.short=BTST -Asia/Thimbu.generic.short=BTT -Asia/Thimbu.standard.short=BTT -Asia/Thimphu.daylight.short=BTST -Asia/Thimphu.generic.short=BTT -Asia/Thimphu.standard.short=BTT -Asia/Tokyo.daylight.short=JDT -Asia/Tokyo.generic.short=JT -Asia/Tokyo.standard.short=JST -Asia/Ujung_Pandang.daylight.short=CIST -Asia/Ujung_Pandang.generic.short=WITA -Asia/Ujung_Pandang.standard.short=WITA -Asia/Ulaanbaatar.daylight.short=ULAST -Asia/Ulaanbaatar.generic.short=ULAT -Asia/Ulaanbaatar.standard.short=ULAT -Asia/Ulan_Bator.daylight.short=ULAST -Asia/Ulan_Bator.generic.short=ULAT -Asia/Ulan_Bator.standard.short=ULAT -Asia/Urumqi.daylight.short=CDT -Asia/Urumqi.generic.short=CT -Asia/Urumqi.standard.short=CST -Asia/Ust-Nera.daylight.short=VLAST -Asia/Ust-Nera.generic.short=VLAT -Asia/Ust-Nera.standard.short=VLAT -Asia/Vientiane.daylight.short=ICST -Asia/Vientiane.generic.short=ICT -Asia/Vientiane.standard.short=ICT -Asia/Vladivostok.daylight.short=VLAST -Asia/Vladivostok.generic.short=VLAT -Asia/Vladivostok.standard.short=VLAT -Asia/Yakutsk.daylight.short=YAKST -Asia/Yakutsk.generic.short=YAKT -Asia/Yakutsk.standard.short=YAKT -Asia/Yekaterinburg.daylight.short=YEKST -Asia/Yekaterinburg.generic.short=YEKT -Asia/Yekaterinburg.standard.short=YEKT -Asia/Yerevan.daylight.short=AMST -Asia/Yerevan.generic.short=AMT -Asia/Yerevan.standard.short=AMT -AST.daylight.short=AKDT -AST.generic.short=AKT -AST.standard.short=AKST -Atlantic/Azores.daylight.short=AZOST -Atlantic/Azores.generic.short=AZOT -Atlantic/Azores.standard.short=AZOT -Atlantic/Bermuda.daylight.short=ADT -Atlantic/Bermuda.generic.short=AT -Atlantic/Bermuda.standard.short=AST -Atlantic/Canary.daylight.short=WEST -Atlantic/Canary.generic.short=WET -Atlantic/Canary.standard.short=WET -Atlantic/Cape_Verde.daylight.short=CVST -Atlantic/Cape_Verde.generic.short=CVT -Atlantic/Cape_Verde.standard.short=CVT -Atlantic/Faeroe.daylight.short=WEST -Atlantic/Faeroe.generic.short=WET -Atlantic/Faeroe.standard.short=WET -Atlantic/Faroe.daylight.short=WEST -Atlantic/Faroe.generic.short=WET -Atlantic/Faroe.standard.short=WET -Atlantic/Jan_Mayen.daylight.short=CEST -Atlantic/Jan_Mayen.generic.short=CET -Atlantic/Jan_Mayen.standard.short=CET -Atlantic/Madeira.daylight.short=WEST -Atlantic/Madeira.generic.short=WET -Atlantic/Madeira.standard.short=WET -Atlantic/Reykjavik.daylight.short=GMT -Atlantic/Reykjavik.generic.short=GMT -Atlantic/Reykjavik.standard.short=GMT -Atlantic/South_Georgia.daylight.short=GDT -Atlantic/South_Georgia.generic.short=GT -Atlantic/South_Georgia.standard.short=GST -Atlantic/Stanley.daylight.short=FKST -Atlantic/Stanley.generic.short=FKT -Atlantic/Stanley.standard.short=FKT -Atlantic/St_Helena.daylight.short=GMT -Atlantic/St_Helena.generic.short=GMT -Atlantic/St_Helena.standard.short=GMT -Australia/ACT.daylight.short=EST -Australia/ACT.generic.short=ET -Australia/ACT.standard.short=EST -Australia/Adelaide.daylight.short=CST -Australia/Adelaide.generic.short=CT -Australia/Adelaide.standard.short=CST -Australia/Brisbane.daylight.short=EST -Australia/Brisbane.generic.short=ET -Australia/Brisbane.standard.short=EST -Australia/Broken_Hill.daylight.short=CST -Australia/Broken_Hill.generic.short=CT -Australia/Broken_Hill.standard.short=CST -Australia/Canberra.daylight.short=EST -Australia/Canberra.generic.short=ET -Australia/Canberra.standard.short=EST -Australia/Currie.daylight.short=EST -Australia/Currie.generic.short=ET -Australia/Currie.standard.short=EST -Australia/Darwin.daylight.short=CST -Australia/Darwin.generic.short=CT -Australia/Darwin.standard.short=CST -Australia/Eucla.daylight.short=CWST -Australia/Eucla.generic.short=CWT -Australia/Eucla.standard.short=CWST -Australia/Hobart.daylight.short=EST -Australia/Hobart.generic.short=ET -Australia/Hobart.standard.short=EST -Australia/LHI.daylight.short=LHST -Australia/LHI.generic.short=LHT -Australia/LHI.standard.short=LHST -Australia/Lindeman.daylight.short=EST -Australia/Lindeman.generic.short=ET -Australia/Lindeman.standard.short=EST -Australia/Lord_Howe.daylight.short=LHST -Australia/Lord_Howe.generic.short=LHT -Australia/Lord_Howe.standard.short=LHST -Australia/Melbourne.daylight.short=EST -Australia/Melbourne.generic.short=ET -Australia/Melbourne.standard.short=EST -Australia/North.daylight.short=CST -Australia/North.generic.short=CT -Australia/North.standard.short=CST -Australia/NSW.daylight.short=EST -Australia/NSW.generic.short=ET -Australia/NSW.standard.short=EST -Australia/Perth.daylight.short=WST -Australia/Perth.generic.short=WT -Australia/Perth.standard.short=WST -Australia/Queensland.daylight.short=EST -Australia/Queensland.generic.short=ET -Australia/Queensland.standard.short=EST -Australia/South.daylight.short=CST -Australia/South.generic.short=CT -Australia/South.standard.short=CST -Australia/Sydney.daylight.short=EST -Australia/Sydney.generic.short=ET -Australia/Sydney.standard.short=EST -Australia/Tasmania.daylight.short=EST -Australia/Tasmania.generic.short=ET -Australia/Tasmania.standard.short=EST -Australia/Victoria.daylight.short=EST -Australia/Victoria.generic.short=ET -Australia/Victoria.standard.short=EST -Australia/West.daylight.short=WST -Australia/West.generic.short=WT -Australia/West.standard.short=WST -Australia/Yancowinna.daylight.short=CST -Australia/Yancowinna.generic.short=CT -Australia/Yancowinna.standard.short=CST -BET.daylight.short=BRST -BET.generic.short=BRT -BET.standard.short=BRT -Brazil/Acre.daylight.short=ACST -Brazil/Acre.generic.short=ACT -Brazil/Acre.standard.short=ACT -Brazil/DeNoronha.daylight.short=FNST -Brazil/DeNoronha.generic.short=FNT -Brazil/DeNoronha.standard.short=FNT -Brazil/East.daylight.short=BRST -Brazil/East.generic.short=BRT -Brazil/East.standard.short=BRT -Brazil/West.daylight.short=AMST -Brazil/West.generic.short=AMT -Brazil/West.standard.short=AMT -BST.daylight.short=BDST -BST.generic.short=BDT -BST.standard.short=BDT -Canada/Atlantic.daylight.short=ADT -Canada/Atlantic.generic.short=AT -Canada/Atlantic.standard.short=AST -Canada/Central.daylight.short=CDT -Canada/Central.generic.short=CT -Canada/Central.standard.short=CST -Canada/Eastern.daylight.short=EDT -Canada/Eastern.generic.short=ET -Canada/Eastern.standard.short=EST -Canada/East-Saskatchewan.daylight.short=CDT -Canada/East-Saskatchewan.generic.short=CT -Canada/East-Saskatchewan.standard.short=CST -Canada/Mountain.daylight.short=MDT -Canada/Mountain.generic.short=MT -Canada/Mountain.standard.short=MST -Canada/Newfoundland.daylight.short=NDT -Canada/Newfoundland.generic.short=NT -Canada/Newfoundland.standard.short=NST -Canada/Pacific.daylight.short=PDT -Canada/Pacific.generic.short=PT -Canada/Pacific.standard.short=PST -Canada/Saskatchewan.daylight.short=CDT -Canada/Saskatchewan.generic.short=CT -Canada/Saskatchewan.standard.short=CST -Canada/Yukon.daylight.short=PDT -Canada/Yukon.generic.short=PT -Canada/Yukon.standard.short=PST -CAT.daylight.short=CAST -CAT.generic.short=CAT -CAT.standard.short=CAT -CET.daylight.short=CEST -CET.generic.short=CET -CET.standard.short=CET -Chile/Continental.daylight.short=CLST -Chile/Continental.generic.short=CLT -Chile/Continental.standard.short=CLT -Chile/EasterIsland.daylight.short=EASST -Chile/EasterIsland.generic.short=EAST -Chile/EasterIsland.standard.short=EAST -CNT.daylight.short=NDT -CNT.generic.short=NT -CNT.standard.short=NST -CST6CDT.daylight.short=CDT -CST6CDT.generic.short=CT -CST6CDT.standard.short=CST -CST.daylight.short=CDT -CST.generic.short=CT -CST.standard.short=CST -CTT.daylight.short=CDT -CTT.generic.short=CT -CTT.standard.short=CST -Cuba.daylight.short=CDT -Cuba.generic.short=CT -Cuba.standard.short=CST -EAT.daylight.short=EAST -EAT.generic.short=EAT -EAT.standard.short=EAT -ECT.daylight.short=CEST -ECT.generic.short=CET -ECT.standard.short=CET -EET.daylight.short=EEST -EET.generic.short=EET -EET.standard.short=EET -Egypt.daylight.short=EEST -Egypt.generic.short=EET -Egypt.standard.short=EET -Eire.daylight.short=IST -Eire.generic.short=IT -Eire.standard.short=GMT -EST5EDT.daylight.short=EDT -EST5EDT.generic.short=ET -EST5EDT.standard.short=EST -EST.daylight.short=EDT -EST.generic.short=ET -EST.standard.short=EST -Etc/Greenwich.daylight.short=GMT -Etc/Greenwich.generic.short=GMT -Etc/Greenwich.standard.short=GMT -Etc/UCT.daylight.short=UTC -Etc/UCT.generic.short=UTC -Etc/UCT.standard.short=UTC -Etc/Universal.daylight.short=UTC -Etc/Universal.generic.short=UTC -Etc/Universal.standard.short=UTC -Etc/UTC.daylight.short=UTC -Etc/UTC.generic.short=UTC -Etc/UTC.standard.short=UTC -Etc/Zulu.daylight.short=UTC -Etc/Zulu.generic.short=UTC -Etc/Zulu.standard.short=UTC -Europe/Amsterdam.daylight.short=CEST -Europe/Amsterdam.generic.short=CET -Europe/Amsterdam.standard.short=CET -Europe/Andorra.daylight.short=CEST -Europe/Andorra.generic.short=CET -Europe/Andorra.standard.short=CET -Europe/Athens.daylight.short=EEST -Europe/Athens.generic.short=EET -Europe/Athens.standard.short=EET -Europe/Belfast.daylight.short=BST -Europe/Belfast.generic.short=BT -Europe/Belfast.standard.short=GMT -Europe/Belgrade.daylight.short=CEST -Europe/Belgrade.generic.short=CET -Europe/Belgrade.standard.short=CET -Europe/Berlin.daylight.short=CEST -Europe/Berlin.generic.short=CET -Europe/Berlin.standard.short=CET -Europe/Bratislava.daylight.short=CEST -Europe/Bratislava.generic.short=CET -Europe/Bratislava.standard.short=CET -Europe/Brussels.daylight.short=CEST -Europe/Brussels.generic.short=CET -Europe/Brussels.standard.short=CET -Europe/Bucharest.daylight.short=EEST -Europe/Bucharest.generic.short=EET -Europe/Bucharest.standard.short=EET -Europe/Budapest.daylight.short=CEST -Europe/Budapest.generic.short=CET -Europe/Budapest.standard.short=CET -Europe/Busingen.daylight.short=CEST -Europe/Busingen.generic.short=CET -Europe/Busingen.standard.short=CET -Europe/Chisinau.daylight.short=EEST -Europe/Chisinau.generic.short=EET -Europe/Chisinau.standard.short=EET -Europe/Copenhagen.daylight.short=CEST -Europe/Copenhagen.generic.short=CET -Europe/Copenhagen.standard.short=CET -Europe/Dublin.daylight.short=IST -Europe/Dublin.generic.short=IT -Europe/Dublin.standard.short=GMT -Europe/Gibraltar.daylight.short=CEST -Europe/Gibraltar.generic.short=CET -Europe/Gibraltar.standard.short=CET -Europe/Guernsey.daylight.short=BST -Europe/Guernsey.generic.short=BT -Europe/Guernsey.standard.short=GMT -Europe/Helsinki.daylight.short=EEST -Europe/Helsinki.generic.short=EET -Europe/Helsinki.standard.short=EET -Europe/Isle_of_Man.daylight.short=BST -Europe/Isle_of_Man.generic.short=BT -Europe/Isle_of_Man.standard.short=GMT -Europe/Istanbul.daylight.short=EEST -Europe/Istanbul.generic.short=EET -Europe/Istanbul.standard.short=EET -Europe/Jersey.daylight.short=BST -Europe/Jersey.generic.short=BT -Europe/Jersey.standard.short=GMT -Europe/Kaliningrad.daylight.short=FEST -Europe/Kaliningrad.generic.short=FET -Europe/Kaliningrad.standard.short=FET -Europe/Kiev.daylight.short=EEST -Europe/Kiev.generic.short=EET -Europe/Kiev.standard.short=EET -Europe/Lisbon.daylight.short=WEST -Europe/Lisbon.generic.short=WET -Europe/Lisbon.standard.short=WET -Europe/Ljubljana.daylight.short=CEST -Europe/Ljubljana.generic.short=CET -Europe/Ljubljana.standard.short=CET -Europe/London.daylight.short=BST -Europe/London.generic.short=BT -Europe/London.standard.short=GMT -Europe/Luxembourg.daylight.short=CEST -Europe/Luxembourg.generic.short=CET -Europe/Luxembourg.standard.short=CET -Europe/Madrid.daylight.short=CEST -Europe/Madrid.generic.short=CET -Europe/Madrid.standard.short=CET -Europe/Malta.daylight.short=CEST -Europe/Malta.generic.short=CET -Europe/Malta.standard.short=CET -Europe/Mariehamn.daylight.short=EEST -Europe/Mariehamn.generic.short=EET -Europe/Mariehamn.standard.short=EET -Europe/Minsk.daylight.short=FEST -Europe/Minsk.generic.short=FET -Europe/Minsk.standard.short=FET -Europe/Monaco.daylight.short=CEST -Europe/Monaco.generic.short=CET -Europe/Monaco.standard.short=CET -Europe/Moscow.daylight.short=MSD -Europe/Moscow.generic.short=MT -Europe/Moscow.standard.short=MSK -Europe/Nicosia.daylight.short=EEST -Europe/Nicosia.generic.short=EET -Europe/Nicosia.standard.short=EET -Europe/Oslo.daylight.short=CEST -Europe/Oslo.generic.short=CET -Europe/Oslo.standard.short=CET -Europe/Paris.daylight.short=CEST -Europe/Paris.generic.short=CET -Europe/Paris.standard.short=CET -Europe/Podgorica.daylight.short=CEST -Europe/Podgorica.generic.short=CET -Europe/Podgorica.standard.short=CET -Europe/Prague.daylight.short=CEST -Europe/Prague.generic.short=CET -Europe/Prague.standard.short=CET -Europe/Riga.daylight.short=EEST -Europe/Riga.generic.short=EET -Europe/Riga.standard.short=EET -Europe/Rome.daylight.short=CEST -Europe/Rome.generic.short=CET -Europe/Rome.standard.short=CET -Europe/Samara.daylight.short=SAMST -Europe/Samara.generic.short=SAMT -Europe/Samara.standard.short=SAMT -Europe/San_Marino.daylight.short=CEST -Europe/San_Marino.generic.short=CET -Europe/San_Marino.standard.short=CET -Europe/Sarajevo.daylight.short=CEST -Europe/Sarajevo.generic.short=CET -Europe/Sarajevo.standard.short=CET -Europe/Simferopol.daylight.short=EEST -Europe/Simferopol.generic.short=EET -Europe/Simferopol.standard.short=EET -Europe/Skopje.daylight.short=CEST -Europe/Skopje.generic.short=CET -Europe/Skopje.standard.short=CET -Europe/Sofia.daylight.short=EEST -Europe/Sofia.generic.short=EET -Europe/Sofia.standard.short=EET -Europe/Stockholm.daylight.short=CEST -Europe/Stockholm.generic.short=CET -Europe/Stockholm.standard.short=CET -Europe/Tallinn.daylight.short=EEST -Europe/Tallinn.generic.short=EET -Europe/Tallinn.standard.short=EET -Europe/Tirane.daylight.short=CEST -Europe/Tirane.generic.short=CET -Europe/Tirane.standard.short=CET -Europe/Tiraspol.daylight.short=EEST -Europe/Tiraspol.generic.short=EET -Europe/Tiraspol.standard.short=EET -Europe/Uzhgorod.daylight.short=EEST -Europe/Uzhgorod.generic.short=EET -Europe/Uzhgorod.standard.short=EET -Europe/Vaduz.daylight.short=CEST -Europe/Vaduz.generic.short=CET -Europe/Vaduz.standard.short=CET -Europe/Vatican.daylight.short=CEST -Europe/Vatican.generic.short=CET -Europe/Vatican.standard.short=CET -Europe/Vienna.daylight.short=CEST -Europe/Vienna.generic.short=CET -Europe/Vienna.standard.short=CET -Europe/Vilnius.daylight.short=EEST -Europe/Vilnius.generic.short=EET -Europe/Vilnius.standard.short=EET -Europe/Volgograd.daylight.short=VOLST -Europe/Volgograd.generic.short=VOLT -Europe/Volgograd.standard.short=VOLT -Europe/Warsaw.daylight.short=CEST -Europe/Warsaw.generic.short=CET -Europe/Warsaw.standard.short=CET -Europe/Zagreb.daylight.short=CEST -Europe/Zagreb.generic.short=CET -Europe/Zagreb.standard.short=CET -Europe/Zaporozhye.daylight.short=EEST -Europe/Zaporozhye.generic.short=EET -Europe/Zaporozhye.standard.short=EET -Europe/Zurich.daylight.short=CEST -Europe/Zurich.generic.short=CET -Europe/Zurich.standard.short=CET -GB.daylight.short=BST -GB-Eire.daylight.short=BST -GB-Eire.generic.short=BT -GB-Eire.standard.short=GMT -GB.generic.short=BT -GB.standard.short=GMT -GMT.daylight.short=GMT -GMT.generic.short=GMT -GMT.standard.short=GMT -Greenwich.daylight.short=GMT -Greenwich.generic.short=GMT -Greenwich.standard.short=GMT -Hongkong.daylight.short=HKST -Hongkong.generic.short=HKT -Hongkong.standard.short=HKT -HST.daylight.short=HDT -HST.generic.short=HT -HST.standard.short=HST -Iceland.daylight.short=GMT -Iceland.generic.short=GMT -Iceland.standard.short=GMT -IET.daylight.short=EDT -IET.generic.short=ET -IET.standard.short=EST -Indian/Antananarivo.daylight.short=EAST -Indian/Antananarivo.generic.short=EAT -Indian/Antananarivo.standard.short=EAT -Indian/Chagos.daylight.short=IOST -Indian/Chagos.generic.short=IOT -Indian/Chagos.standard.short=IOT -Indian/Christmas.daylight.short=CXST -Indian/Christmas.generic.short=CIT -Indian/Christmas.standard.short=CXT -Indian/Cocos.daylight.short=CCST -Indian/Cocos.generic.short=CCT -Indian/Cocos.standard.short=CCT -Indian/Comoro.daylight.short=EAST -Indian/Comoro.generic.short=EAT -Indian/Comoro.standard.short=EAT -Indian/Kerguelen.daylight.short=TFST -Indian/Kerguelen.generic.short=TFT -Indian/Kerguelen.standard.short=TFT -Indian/Mahe.daylight.short=SCST -Indian/Mahe.generic.short=SCT -Indian/Mahe.standard.short=SCT -Indian/Maldives.daylight.short=MVST -Indian/Maldives.generic.short=MVT -Indian/Maldives.standard.short=MVT -Indian/Mauritius.daylight.short=MUST -Indian/Mauritius.generic.short=MUT -Indian/Mauritius.standard.short=MUT -Indian/Mayotte.daylight.short=EAST -Indian/Mayotte.generic.short=EAT -Indian/Mayotte.standard.short=EAT -Indian/Reunion.daylight.short=REST -Indian/Reunion.generic.short=RET -Indian/Reunion.standard.short=RET -Iran.daylight.short=IRDT -Iran.generic.short=IRT -Iran.standard.short=IRST -Israel.daylight.short=IDT -Israel.generic.short=IT -Israel.standard.short=IST -IST.daylight.short=IDT -IST.generic.short=IT -IST.standard.short=IST -Jamaica.daylight.short=EDT -Jamaica.generic.short=ET -Jamaica.standard.short=EST -Japan.daylight.short=JDT -Japan.generic.short=JT -Japan.standard.short=JST -JST.daylight.short=JDT -JST.generic.short=JT -JST.standard.short=JST -Kwajalein.daylight.short=MHST -Kwajalein.generic.short=MHT -Kwajalein.standard.short=MHT -Libya.daylight.short=EEST -Libya.generic.short=EET -Libya.standard.short=EET -MET.daylight.short=MEST -MET.generic.short=MET -MET.standard.short=MET -Mexico/BajaNorte.daylight.short=PDT -Mexico/BajaNorte.generic.short=PT -Mexico/BajaNorte.standard.short=PST -Mexico/BajaSur.daylight.short=MDT -Mexico/BajaSur.generic.short=MT -Mexico/BajaSur.standard.short=MST -Mexico/General.daylight.short=CDT -Mexico/General.generic.short=CT -Mexico/General.standard.short=CST -MIT.daylight.short=WSDT -MIT.generic.short=WST -MIT.standard.short=WST -MST7MDT.daylight.short=MDT -MST7MDT.generic.short=MT -MST7MDT.standard.short=MST -MST.daylight.short=MDT -MST.generic.short=MT -MST.standard.short=MST -Navajo.daylight.short=MDT -Navajo.generic.short=MT -Navajo.standard.short=MST -NET.daylight.short=AMST -NET.generic.short=AMT -NET.standard.short=AMT -NST.daylight.short=NZDT -NST.generic.short=NZT -NST.standard.short=NZST -NZ-CHAT.daylight.short=CHADT -NZ-CHAT.generic.short=CHAT -NZ-CHAT.standard.short=CHAST -NZ.daylight.short=NZDT -NZ.generic.short=NZT -NZ.standard.short=NZST -Pacific/Apia.daylight.short=WSDT -Pacific/Apia.generic.short=WST -Pacific/Apia.standard.short=WST -Pacific/Auckland.daylight.short=NZDT -Pacific/Auckland.generic.short=NZT -Pacific/Auckland.standard.short=NZST -Pacific/Chatham.daylight.short=CHADT -Pacific/Chatham.generic.short=CHAT -Pacific/Chatham.standard.short=CHAST -Pacific/Chuuk.daylight.short=CHUST -Pacific/Chuuk.generic.short=CHUT -Pacific/Chuuk.standard.short=CHUT -Pacific/Easter.daylight.short=EASST -Pacific/Easter.generic.short=EAST -Pacific/Easter.standard.short=EAST -Pacific/Efate.daylight.short=VUST -Pacific/Efate.generic.short=VUT -Pacific/Efate.standard.short=VUT -Pacific/Enderbury.daylight.short=PHOST -Pacific/Enderbury.generic.short=PHOT -Pacific/Enderbury.standard.short=PHOT -Pacific/Fakaofo.daylight.short=TKST -Pacific/Fakaofo.generic.short=TKT -Pacific/Fakaofo.standard.short=TKT -Pacific/Fiji.daylight.short=FJST -Pacific/Fiji.generic.short=FJT -Pacific/Fiji.standard.short=FJT -Pacific/Funafuti.daylight.short=TVST -Pacific/Funafuti.generic.short=TVT -Pacific/Funafuti.standard.short=TVT -Pacific/Galapagos.daylight.short=GALST -Pacific/Galapagos.generic.short=GALT -Pacific/Galapagos.standard.short=GALT -Pacific/Gambier.daylight.short=GAMST -Pacific/Gambier.generic.short=GAMT -Pacific/Gambier.standard.short=GAMT -Pacific/Guadalcanal.daylight.short=SBST -Pacific/Guadalcanal.generic.short=SBT -Pacific/Guadalcanal.standard.short=SBT -Pacific/Guam.daylight.short=ChDT -Pacific/Guam.generic.short=ChT -Pacific/Guam.standard.short=ChST -Pacific/Honolulu.daylight.short=HDT -Pacific/Honolulu.generic.short=HT -Pacific/Honolulu.standard.short=HST -Pacific/Johnston.daylight.short=HDT -Pacific/Johnston.generic.short=HT -Pacific/Johnston.standard.short=HST -Pacific/Kiritimati.daylight.short=LINST -Pacific/Kiritimati.generic.short=LINT -Pacific/Kiritimati.standard.short=LINT -Pacific/Kosrae.daylight.short=KOSST -Pacific/Kosrae.generic.short=KOST -Pacific/Kosrae.standard.short=KOST -Pacific/Kwajalein.daylight.short=MHST -Pacific/Kwajalein.generic.short=MHT -Pacific/Kwajalein.standard.short=MHT -Pacific/Majuro.daylight.short=MHST -Pacific/Majuro.generic.short=MHT -Pacific/Majuro.standard.short=MHT -Pacific/Marquesas.daylight.short=MARST -Pacific/Marquesas.generic.short=MART -Pacific/Marquesas.standard.short=MART -Pacific/Midway.daylight.short=SDT -Pacific/Midway.generic.short=ST -Pacific/Midway.standard.short=SST -Pacific/Nauru.daylight.short=NRST -Pacific/Nauru.generic.short=NRT -Pacific/Nauru.standard.short=NRT -Pacific/Niue.daylight.short=NUST -Pacific/Niue.generic.short=NUT -Pacific/Niue.standard.short=NUT -Pacific/Norfolk.daylight.short=NFST -Pacific/Norfolk.generic.short=NFT -Pacific/Norfolk.standard.short=NFT -Pacific/Noumea.daylight.short=NCST -Pacific/Noumea.generic.short=NCT -Pacific/Noumea.standard.short=NCT -Pacific/Pago_Pago.daylight.short=SDT -Pacific/Pago_Pago.generic.short=ST -Pacific/Pago_Pago.standard.short=SST -Pacific/Palau.daylight.short=PWST -Pacific/Palau.generic.short=PWT -Pacific/Palau.standard.short=PWT -Pacific/Pitcairn.daylight.short=PDT -Pacific/Pitcairn.generic.short=PT -Pacific/Pitcairn.standard.short=PST -Pacific/Pohnpei.daylight.short=PONST -Pacific/Pohnpei.generic.short=PONT -Pacific/Pohnpei.standard.short=PONT -Pacific/Ponape.daylight.short=PONST -Pacific/Ponape.generic.short=PONT -Pacific/Ponape.standard.short=PONT -Pacific/Port_Moresby.daylight.short=PGST -Pacific/Port_Moresby.generic.short=PGT -Pacific/Port_Moresby.standard.short=PGT -Pacific/Rarotonga.daylight.short=CKHST -Pacific/Rarotonga.generic.short=CKT -Pacific/Rarotonga.standard.short=CKT -Pacific/Saipan.daylight.short=ChDT -Pacific/Saipan.generic.short=ChT -Pacific/Saipan.standard.short=ChST -Pacific/Samoa.daylight.short=SDT -Pacific/Samoa.generic.short=ST -Pacific/Samoa.standard.short=SST -Pacific/Tahiti.daylight.short=TAHST -Pacific/Tahiti.generic.short=TAHT -Pacific/Tahiti.standard.short=TAHT -Pacific/Tarawa.daylight.short=GILST -Pacific/Tarawa.generic.short=GILT -Pacific/Tarawa.standard.short=GILT -Pacific/Tongatapu.daylight.short=TOST -Pacific/Tongatapu.generic.short=TOT -Pacific/Tongatapu.standard.short=TOT -Pacific/Truk.daylight.short=CHUST -Pacific/Truk.generic.short=CHUT -Pacific/Truk.standard.short=CHUT -Pacific/Wake.daylight.short=WAKST -Pacific/Wake.generic.short=WAKT -Pacific/Wake.standard.short=WAKT -Pacific/Wallis.daylight.short=WFST -Pacific/Wallis.generic.short=WFT -Pacific/Wallis.standard.short=WFT -Pacific/Yap.daylight.short=CHUST -Pacific/Yap.generic.short=CHUT -Pacific/Yap.standard.short=CHUT -PLT.daylight.short=PKST -PLT.generic.short=PKT -PLT.standard.short=PKT -PNT.daylight.short=MDT -PNT.generic.short=MT -PNT.standard.short=MST -Poland.daylight.short=CEST -Poland.generic.short=CET -Poland.standard.short=CET -Portugal.daylight.short=WEST -Portugal.generic.short=WET -Portugal.standard.short=WET -PRC.daylight.short=CDT -PRC.generic.short=CT -PRC.standard.short=CST -PRT.daylight.short=ADT -PRT.generic.short=AT -PRT.standard.short=AST -PST8PDT.daylight.short=PDT -PST8PDT.generic.short=PT -PST8PDT.standard.short=PST -PST.daylight.short=PDT -PST.generic.short=PT -PST.standard.short=PST -ROK.daylight.short=KDT -ROK.generic.short=KT -ROK.standard.short=KST -Singapore.daylight.short=SGST -Singapore.generic.short=SGT -Singapore.standard.short=SGT -SST.daylight.short=SBST -SST.generic.short=SBT -SST.standard.short=SBT -SystemV/AST4ADT.daylight.short=ADT -SystemV/AST4ADT.generic.short=AT -SystemV/AST4ADT.standard.short=AST -SystemV/AST4.daylight.short=ADT -SystemV/AST4.generic.short=AT -SystemV/AST4.standard.short=AST -SystemV/CST6CDT.daylight.short=CDT -SystemV/CST6CDT.generic.short=CT -SystemV/CST6CDT.standard.short=CST -SystemV/CST6.daylight.short=CDT -SystemV/CST6.generic.short=CT -SystemV/CST6.standard.short=CST -SystemV/EST5.daylight.short=EDT -SystemV/EST5EDT.daylight.short=EDT -SystemV/EST5EDT.generic.short=ET -SystemV/EST5EDT.standard.short=EST -SystemV/EST5.generic.short=ET -SystemV/EST5.standard.short=EST -SystemV/HST10.daylight.short=HDT -SystemV/HST10.generic.short=HT -SystemV/HST10.standard.short=HST -SystemV/MST7.daylight.short=MDT -SystemV/MST7.generic.short=MT -SystemV/MST7MDT.daylight.short=MDT -SystemV/MST7MDT.generic.short=MT -SystemV/MST7MDT.standard.short=MST -SystemV/MST7.standard.short=MST -SystemV/PST8.daylight.short=PDT -SystemV/PST8.generic.short=PT -SystemV/PST8PDT.daylight.short=PDT -SystemV/PST8PDT.generic.short=PT -SystemV/PST8PDT.standard.short=PST -SystemV/PST8.standard.short=PST -SystemV/YST9.daylight.short=AKDT -SystemV/YST9.generic.short=AKT -SystemV/YST9.standard.short=AKST -SystemV/YST9YDT.daylight.short=AKDT -SystemV/YST9YDT.generic.short=AKT -SystemV/YST9YDT.standard.short=AKST -Turkey.daylight.short=EEST -Turkey.generic.short=EET -Turkey.standard.short=EET -UCT.daylight.short=UTC -UCT.generic.short=UTC -UCT.standard.short=UTC -Universal.daylight.short=UTC -Universal.generic.short=UTC -Universal.standard.short=UTC -US/Alaska.daylight.short=AKDT -US/Alaska.generic.short=AKT -US/Alaska.standard.short=AKST -US/Aleutian.daylight.short=HADT -US/Aleutian.generic.short=HAT -US/Aleutian.standard.short=HAST -US/Arizona.daylight.short=MDT -US/Arizona.generic.short=MT -US/Arizona.standard.short=MST -US/Central.daylight.short=CDT -US/Central.generic.short=CT -US/Central.standard.short=CST -US/Eastern.daylight.short=EDT -US/Eastern.generic.short=ET -US/Eastern.standard.short=EST -US/East-Indiana.daylight.short=EDT -US/East-Indiana.generic.short=ET -US/East-Indiana.standard.short=EST -US/Hawaii.daylight.short=HDT -US/Hawaii.generic.short=HT -US/Hawaii.standard.short=HST -US/Indiana-Starke.daylight.short=CDT -US/Indiana-Starke.generic.short=CT -US/Indiana-Starke.standard.short=CST -US/Michigan.daylight.short=EDT -US/Michigan.generic.short=ET -US/Michigan.standard.short=EST -US/Mountain.daylight.short=MDT -US/Mountain.generic.short=MT -US/Mountain.standard.short=MST -US/Pacific.daylight.short=PDT -US/Pacific.generic.short=PT -US/Pacific-New.daylight.short=PDT -US/Pacific-New.generic.short=PT -US/Pacific-New.standard.short=PST -US/Pacific.standard.short=PST -US/Samoa.daylight.short=SDT -US/Samoa.generic.short=ST -US/Samoa.standard.short=SST -UTC.daylight.short=UTC -UTC.generic.short=UTC -UTC.standard.short=UTC -VST.daylight.short=ICST -VST.generic.short=ICT -VST.standard.short=ICT -WET.daylight.short=WEST -WET.generic.short=WET -WET.standard.short=WET -W-SU.daylight.short=MSD -W-SU.generic.short=MT -W-SU.standard.short=MSK -Zulu.daylight.short=UTC -Zulu.generic.short=UTC -Zulu.standard.short=UTC diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_fr.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_fr.properties deleted file mode 100644 index 6389940bbab..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_fr.properties +++ /dev/null @@ -1,651 +0,0 @@ -ACT.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Territoire du Nord) -ACT.generic.long=Centre (Territoire du Nord) -ACT.standard.long=Heure standard d'Australie centrale (Territoire du Nord) -AET.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud) -AET.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud) -AET.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud) -AGT.generic.long=Heure d'Argentine -ART.generic.long=Heure d'Europe de l'Est -AST.generic.long=Alaska -Africa/Abidjan.generic.long=Heure de Greenwich -Africa/Accra.generic.long=Heure du Ghana -Africa/Addis_Ababa.generic.long=Heure d'Afrique de l'Est -Africa/Algiers.generic.long=Heure d'Europe centrale -Africa/Asmara.generic.long=Heure d'Afrique de l'Est -Africa/Asmera.generic.long=Heure d'Afrique de l'Est -Africa/Bamako.generic.long=Heure de Greenwich -Africa/Bangui.generic.long=Heure d'Afrique de l'Ouest -Africa/Banjul.generic.long=Heure de Greenwich -Africa/Bissau.generic.long=Heure de Greenwich -Africa/Blantyre.generic.long=Heure d'Afrique centrale -Africa/Brazzaville.generic.long=Heure d'Afrique de l'Ouest -Africa/Bujumbura.generic.long=Heure d'Afrique centrale -Africa/Cairo.generic.long=Heure d'Europe de l'Est -Africa/Casablanca.generic.long=Heure d'Europe de l'Ouest -Africa/Ceuta.generic.long=Heure d'Europe centrale -Africa/Conakry.generic.long=Heure de Greenwich -Africa/Dakar.generic.long=Heure de Greenwich -Africa/Dar_es_Salaam.generic.long=Heure d'Afrique de l'Est -Africa/Djibouti.generic.long=Heure d'Afrique de l'Est -Africa/Douala.generic.long=Heure d'Afrique de l'Ouest -Africa/El_Aaiun.generic.long=Heure d'Europe de l'Ouest -Africa/Freetown.generic.long=Heure de Sierra Leone -Africa/Gaborone.generic.long=Heure d'Afrique centrale -Africa/Harare.generic.long=Heure d'Afrique centrale -Africa/Johannesburg.generic.long=Afrique du Sud -Africa/Juba.generic.long=Heure d'Afrique de l'Est -Africa/Kampala.generic.long=Heure d'Afrique de l'Est -Africa/Khartoum.generic.long=Heure d'Afrique de l'Est -Africa/Kigali.generic.long=Heure d'Afrique centrale -Africa/Kinshasa.generic.long=Heure d'Afrique de l'Ouest -Africa/Lagos.generic.long=Heure d'Afrique de l'Ouest -Africa/Libreville.generic.long=Heure d'Afrique de l'Ouest -Africa/Lome.generic.long=Heure de Greenwich -Africa/Luanda.generic.long=Heure d'Afrique de l'Ouest -Africa/Lubumbashi.generic.long=Heure d'Afrique centrale -Africa/Lusaka.generic.long=Heure d'Afrique centrale -Africa/Malabo.generic.long=Heure d'Afrique de l'Ouest -Africa/Maputo.generic.long=Heure d'Afrique centrale -Africa/Maseru.generic.long=Afrique du Sud -Africa/Mbabane.generic.long=Afrique du Sud -Africa/Mogadishu.generic.long=Heure d'Afrique de l'Est -Africa/Monrovia.generic.long=Heure de Greenwich -Africa/Nairobi.generic.long=Heure d'Afrique de l'Est -Africa/Ndjamena.generic.long=Heure d'Afrique de l'Ouest -Africa/Niamey.generic.long=Heure d'Afrique de l'Ouest -Africa/Nouakchott.generic.long=Heure de Greenwich -Africa/Ouagadougou.generic.long=Heure de Greenwich -Africa/Porto-Novo.generic.long=Heure d'Afrique de l'Ouest -Africa/Sao_Tome.generic.long=Heure de Greenwich -Africa/Timbuktu.generic.long=Heure de Greenwich -Africa/Tripoli.generic.long=Heure d'Europe de l'Est -Africa/Tunis.generic.long=Heure d'Europe centrale -Africa/Windhoek.generic.long=Heure d'Afrique de l'Ouest -America/Adak.generic.long=Hawa\u00EF-Iles Al\u00E9outiennes -America/Anchorage.generic.long=Alaska -America/Anguilla.generic.long=Atlantique -America/Antigua.generic.long=Atlantique -America/Araguaina.generic.long=Heure du Br\u00E9sil -America/Argentina/Buenos_Aires.generic.long=Heure d'Argentine -America/Argentina/Catamarca.generic.long=Heure d'Argentine -America/Argentina/ComodRivadavia.generic.long=Heure d'Argentine -America/Argentina/Cordoba.generic.long=Heure d'Argentine -America/Argentina/Jujuy.generic.long=Heure d'Argentine -America/Argentina/La_Rioja.generic.long=Heure d'Argentine -America/Argentina/Mendoza.generic.long=Heure d'Argentine -America/Argentina/Rio_Gallegos.generic.long=Heure d'Argentine -America/Argentina/Salta.generic.long=Heure d'Argentine -America/Argentina/San_Juan.generic.long=Heure d'Argentine -America/Argentina/San_Luis.generic.long=Heure d'Argentine -America/Argentina/Tucuman.generic.long=Heure d'Argentine -America/Argentina/Ushuaia.generic.long=Heure d'Argentine -America/Aruba.generic.long=Atlantique -America/Asuncion.generic.long=Heure du Paraguay -America/Atikokan.generic.long=C\u00F4te Est -America/Atka.generic.long=Hawa\u00EF-Iles Al\u00E9outiennes -America/Bahia.generic.long=Heure du Br\u00E9sil -America/Bahia_Banderas.generic.long=Centre -America/Barbados.generic.long=Atlantique -America/Belem.generic.long=Heure du Br\u00E9sil -America/Belize.generic.long=Centre -America/Blanc-Sablon.generic.long=Atlantique -America/Boa_Vista.generic.long=Heure d'Amazonie -America/Bogota.generic.long=Heure de Colombie -America/Boise.generic.long=Rocheuses -America/Buenos_Aires.generic.long=Heure d'Argentine -America/Cambridge_Bay.generic.long=Rocheuses -America/Campo_Grande.generic.long=Heure d'Amazonie -America/Cancun.generic.long=Centre -America/Caracas.generic.long=Heure du Venezuela -America/Catamarca.generic.long=Heure d'Argentine -America/Cayenne.generic.long=Heure de Guyane fran\u00E7aise -America/Cayman.generic.long=C\u00F4te Est -America/Chicago.generic.long=Centre -America/Chihuahua.generic.long=Rocheuses -America/Coral_Harbour.generic.long=C\u00F4te Est -America/Cordoba.generic.long=Heure d'Argentine -America/Costa_Rica.generic.long=Centre -America/Creston.generic.long=Rocheuses -America/Cuiaba.generic.long=Heure d'Amazonie -America/Curacao.generic.long=Atlantique -America/Danmarkshavn.generic.long=Heure de Greenwich -America/Dawson.generic.long=Pacifique -America/Dawson_Creek.generic.long=Rocheuses -America/Denver.generic.long=Rocheuses -America/Detroit.generic.long=C\u00F4te Est -America/Dominica.generic.long=Atlantique -America/Edmonton.generic.long=Rocheuses -America/Eirunepe.generic.long=Heure de l'Acre -America/El_Salvador.generic.long=Centre -America/Ensenada.generic.long=Pacifique -America/Fort_Wayne.generic.long=C\u00F4te Est -America/Fortaleza.generic.long=Heure du Br\u00E9sil -America/Glace_Bay.generic.long=Atlantique -America/Godthab.generic.long=Heure du Groenland de l'Ouest -America/Goose_Bay.generic.long=Atlantique -America/Grand_Turk.generic.long=C\u00F4te Est -America/Grenada.generic.long=Atlantique -America/Guadeloupe.generic.long=Atlantique -America/Guatemala.generic.long=Centre -America/Guayaquil.generic.long=Heure de l'Equateur -America/Guyana.generic.long=Heure de Guyana -America/Halifax.generic.long=Atlantique -America/Havana.generic.long=Heure de Cuba -America/Hermosillo.generic.long=Rocheuses -America/Indiana/Indianapolis.generic.long=C\u00F4te Est -America/Indiana/Knox.generic.long=Centre -America/Indiana/Marengo.generic.long=C\u00F4te Est -America/Indiana/Petersburg.generic.long=C\u00F4te Est -America/Indiana/Tell_City.generic.long=Centre -America/Indiana/Vevay.generic.long=C\u00F4te Est -America/Indiana/Vincennes.generic.long=C\u00F4te Est -America/Indiana/Winamac.generic.long=C\u00F4te Est -America/Indianapolis.generic.long=C\u00F4te Est -America/Inuvik.generic.long=Rocheuses -America/Iqaluit.generic.long=C\u00F4te Est -America/Jamaica.generic.long=C\u00F4te Est -America/Jujuy.generic.long=Heure d'Argentine -America/Juneau.generic.long=Alaska -America/Kentucky/Louisville.generic.long=C\u00F4te Est -America/Kentucky/Monticello.generic.long=C\u00F4te Est -America/Knox_IN.generic.long=Centre -America/Kralendijk.generic.long=Atlantique -America/La_Paz.generic.long=Heure de Bolivie -America/Lima.generic.long=Heure du P\u00E9rou -America/Los_Angeles.generic.long=Pacifique -America/Louisville.generic.long=C\u00F4te Est -America/Lower_Princes.generic.long=Atlantique -America/Maceio.generic.long=Heure du Br\u00E9sil -America/Managua.generic.long=Centre -America/Manaus.generic.long=Heure d'Amazonie -America/Marigot.generic.long=Atlantique -America/Martinique.generic.long=Atlantique -America/Matamoros.generic.long=Centre -America/Mazatlan.generic.long=Rocheuses -America/Mendoza.generic.long=Heure d'Argentine -America/Menominee.generic.long=Centre -America/Merida.generic.long=Centre -America/Metlakatla.daylight.long=Heure avanc\u00E9e de Metlakatla -America/Metlakatla.generic.long=Heure de Metlakatla -America/Metlakatla.standard.long=Heure normale de Metlakatla -America/Mexico_City.generic.long=Centre -America/Miquelon.generic.long=Saint-Pierre-et-Miquelon -America/Moncton.generic.long=Atlantique -America/Monterrey.generic.long=Centre -America/Montevideo.generic.long=Heure de l'Uruguay -America/Montreal.generic.long=C\u00F4te Est -America/Montserrat.generic.long=Atlantique -America/Nassau.generic.long=C\u00F4te Est -America/New_York.generic.long=C\u00F4te Est -America/Nipigon.generic.long=C\u00F4te Est -America/Nome.generic.long=Alaska -America/Noronha.generic.long=Heure de Fernando de Noronha -America/North_Dakota/Beulah.generic.long=Centre -America/North_Dakota/Center.generic.long=Centre -America/North_Dakota/New_Salem.generic.long=Centre -America/Ojinaga.generic.long=Rocheuses -America/Panama.generic.long=C\u00F4te Est -America/Pangnirtung.generic.long=C\u00F4te Est -America/Paramaribo.generic.long=Heure du Surinam -America/Phoenix.generic.long=Rocheuses -America/Port-au-Prince.generic.long=C\u00F4te Est -America/Port_of_Spain.generic.long=Atlantique -America/Porto_Acre.generic.long=Heure de l'Acre -America/Porto_Velho.generic.long=Heure d'Amazonie -America/Puerto_Rico.generic.long=Atlantique -America/Rainy_River.generic.long=Centre -America/Rankin_Inlet.generic.long=Centre -America/Recife.generic.long=Heure du Br\u00E9sil -America/Regina.generic.long=Centre -America/Resolute.generic.long=Centre -America/Rio_Branco.generic.long=Heure de l'Acre -America/Rosario.generic.long=Heure d'Argentine -America/Santa_Isabel.generic.long=Pacifique -America/Santarem.generic.long=Heure du Br\u00E9sil -America/Santiago.generic.long=Heure du Chili -America/Santo_Domingo.generic.long=Atlantique -America/Sao_Paulo.generic.long=Heure du Br\u00E9sil -America/Scoresbysund.generic.long=Heure du Groenland de l'Est -America/Shiprock.generic.long=Rocheuses -America/Sitka.generic.long=Alaska -America/St_Barthelemy.generic.long=Atlantique -America/St_Johns.generic.long=Terre-Neuve -America/St_Kitts.generic.long=Atlantique -America/St_Lucia.generic.long=Atlantique -America/St_Thomas.generic.long=Atlantique -America/St_Vincent.generic.long=Atlantique -America/Swift_Current.generic.long=Centre -America/Tegucigalpa.generic.long=Centre -America/Thule.generic.long=Atlantique -America/Thunder_Bay.generic.long=C\u00F4te Est -America/Tijuana.generic.long=Pacifique -America/Toronto.generic.long=C\u00F4te Est -America/Tortola.generic.long=Atlantique -America/Vancouver.generic.long=Pacifique -America/Virgin.generic.long=Atlantique -America/Whitehorse.generic.long=Pacifique -America/Winnipeg.generic.long=Centre -America/Yakutat.generic.long=Alaska -America/Yellowknife.generic.long=Rocheuses -Antarctica/Casey.daylight.long=Heure d'\u00E9t\u00E9 de l'Ouest (Australie) -Antarctica/Casey.generic.long=Ouest (Australie) -Antarctica/Casey.standard.long=Heure normale de l'Ouest (Australie) -Antarctica/Davis.generic.long=Heure de Davis -Antarctica/DumontDUrville.generic.long=Heure de Dumont-d'Urville -Antarctica/Macquarie.daylight.long=Heure d'\u00E9t\u00E9 de l'Ile Macquarie -Antarctica/Macquarie.generic.long=Heure de l'Ile Macquarie -Antarctica/Macquarie.standard.long=Heure de l'Ile Macquarie -Antarctica/Mawson.generic.long=Heure de Mawson -Antarctica/McMurdo.generic.long=Nouvelle-Z\u00E9lande -Antarctica/Palmer.generic.long=Heure du Chili -Antarctica/Rothera.generic.long=Heure de Rothera -Antarctica/South_Pole.generic.long=Nouvelle-Z\u00E9lande -Antarctica/Syowa.generic.long=Heure de Syowa -Antarctica/Vostok.generic.long=Heure de Vostok -Arctic/Longyearbyen.generic.long=Heure d'Europe centrale -Asia/Aden.generic.long=Arabie -Asia/Almaty.generic.long=Heure d'Alma-Ata -Asia/Amman.generic.long=Arabie -Asia/Anadyr.generic.long=Heure d'Anadyr -Asia/Aqtau.generic.long=Heure d'Aqtau -Asia/Aqtobe.generic.long=Heure d'Aqtobe -Asia/Ashgabat.generic.long=Heure du Turkm\u00E9nistan -Asia/Ashkhabad.generic.long=Heure du Turkm\u00E9nistan -Asia/Baghdad.generic.long=Arabie -Asia/Bahrain.generic.long=Arabie -Asia/Baku.generic.long=Heure d'Azerba\u00EFdjan -Asia/Bangkok.generic.long=Heure d'Indochine -Asia/Beirut.generic.long=Heure d'Europe de l'Est -Asia/Bishkek.generic.long=Heure du Kirghizistan -Asia/Brunei.generic.long=Heure du Brunei -Asia/Calcutta.generic.long=Inde -Asia/Choibalsan.generic.long=Heure de Choibalsan -Asia/Chongqing.generic.long=Chine -Asia/Chungking.generic.long=Chine -Asia/Colombo.generic.long=Inde -Asia/Dacca.generic.long=Heure du Bangladesh -Asia/Damascus.generic.long=Heure d'Europe de l'Est -Asia/Dhaka.generic.long=Heure du Bangladesh -Asia/Dili.generic.long=Heure de Timor-Leste -Asia/Dubai.generic.long=Golfe -Asia/Dushanbe.generic.long=Heure du Tadjikistan -Asia/Gaza.generic.long=Heure d'Europe de l'Est -Asia/Harbin.generic.long=Chine -Asia/Hebron.generic.long=Heure d'Europe de l'Est -Asia/Ho_Chi_Minh.generic.long=Heure d'Indochine -Asia/Hong_Kong.generic.long=Heure de Hong-Kong -Asia/Hovd.generic.long=Heure de Hovd -Asia/Irkutsk.generic.long=Heure d'Irkutsk -Asia/Istanbul.generic.long=Heure d'Europe de l'Est -Asia/Jakarta.generic.long=Heure de l'Indon\u00E9sie occidentale -Asia/Jayapura.generic.long=Heure d'Indon\u00E9sie orientale -Asia/Jerusalem.generic.long=Isra\u00EBl -Asia/Kabul.generic.long=Heure d'Afghanistan -Asia/Kamchatka.generic.long=Heure de Petropavlovsk-Kamchatski -Asia/Karachi.generic.long=Heure du Pakistan -Asia/Kashgar.generic.long=Chine -Asia/Kathmandu.generic.long=Heure du N\u00E9pal -Asia/Katmandu.generic.long=Heure du N\u00E9pal -Asia/Khandyga.daylight.long=Heure d'\u00E9t\u00E9 de Khandyga -Asia/Khandyga.generic.long=Heure de Khandyga -Asia/Khandyga.standard.long=Heure de Khandyga -Asia/Kolkata.generic.long=Inde -Asia/Krasnoyarsk.generic.long=Heure de Krasno\u00EFarsk -Asia/Kuala_Lumpur.generic.long=Heure de Malaisie -Asia/Kuching.generic.long=Heure de Malaisie -Asia/Kuwait.generic.long=Arabie -Asia/Macao.generic.long=Chine -Asia/Macau.generic.long=Chine -Asia/Magadan.generic.long=Heure de Magadan -Asia/Makassar.generic.long=Heure d'Indon\u00E9sie centrale -Asia/Manila.generic.long=Heure des Philippines -Asia/Muscat.generic.long=Golfe -Asia/Nicosia.generic.long=Heure d'Europe de l'Est -Asia/Novokuznetsk.generic.long=Heure de Novossibirsk -Asia/Novosibirsk.generic.long=Heure de Novossibirsk -Asia/Omsk.generic.long=Heure d'Omsk -Asia/Oral.generic.long=Heure d'Oral -Asia/Phnom_Penh.generic.long=Heure d'Indochine -Asia/Pontianak.generic.long=Heure de l'Indon\u00E9sie occidentale -Asia/Pyongyang.generic.long=Cor\u00E9e -Asia/Qatar.generic.long=Arabie -Asia/Qyzylorda.generic.long=Heure de Kyzylorda -Asia/Rangoon.generic.long=Heure de Myanmar -Asia/Saigon.generic.long=Heure d'Indochine -Asia/Sakhalin.generic.long=Heure de Sakhalin -Asia/Samarkand.generic.long=Heure de l'Ouzb\u00E9kistan -Asia/Seoul.generic.long=Cor\u00E9e -Asia/Shanghai.generic.long=Chine -Asia/Singapore.generic.long=Heure de Singapour -Asia/Taipei.generic.long=Chine -Asia/Tashkent.generic.long=Heure de l'Ouzb\u00E9kistan -Asia/Tbilisi.generic.long=Heure de G\u00E9orgie -Asia/Tehran.generic.long=Heure d'Iran -Asia/Tel_Aviv.generic.long=Isra\u00EBl -Asia/Thimbu.generic.long=Heure du Bhoutan -Asia/Thimphu.generic.long=Heure du Bhoutan -Asia/Tokyo.generic.long=Japon -Asia/Ujung_Pandang.generic.long=Heure d'Indon\u00E9sie centrale -Asia/Ulaanbaatar.generic.long=Heure de l'Ulaanbaatar -Asia/Ulan_Bator.generic.long=Heure de l'Ulaanbaatar -Asia/Urumqi.generic.long=Chine -Asia/Ust-Nera.daylight.long=Heure d'\u00E9t\u00E9 d'Ust-Nera -Asia/Ust-Nera.generic.long=Heure d'Ust-Nera -Asia/Ust-Nera.standard.long=Heure d'Ust-Nera -Asia/Vientiane.generic.long=Heure d'Indochine -Asia/Vladivostok.generic.long=Heure de Vladivostok -Asia/Yakutsk.generic.long=Heure du Iakoutsk -Asia/Yekaterinburg.generic.long=Heure de Yekaterinburg -Asia/Yerevan.generic.long=Heure d'Arm\u00E9nie -Atlantic/Azores.generic.long=Heure des A\u00E7ores -Atlantic/Bermuda.generic.long=Atlantique -Atlantic/Canary.generic.long=Heure d'Europe de l'Ouest -Atlantic/Cape_Verde.generic.long=Heure de Cap-Vert -Atlantic/Faeroe.generic.long=Heure d'Europe de l'Ouest -Atlantic/Faroe.generic.long=Heure d'Europe de l'Ouest -Atlantic/Jan_Mayen.generic.long=Heure d'Europe centrale -Atlantic/Madeira.generic.long=Heure d'Europe de l'Ouest -Atlantic/Reykjavik.generic.long=Heure de Greenwich -Atlantic/South_Georgia.generic.long=G\u00E9orgie du Sud -Atlantic/St_Helena.generic.long=Heure de Greenwich -Atlantic/Stanley.generic.long=Heure des \u00EEles Falkland -Australia/ACT.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud) -Australia/ACT.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud) -Australia/ACT.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud) -Australia/Adelaide.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud) -Australia/Adelaide.generic.long=Centre (Australie-M\u00E9ridionale) -Australia/Adelaide.standard.long=Heure standard d'Australie centrale (Australie du sud) -Australia/Brisbane.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Queensland) -Australia/Brisbane.generic.long=C\u00F4te Est (Queensland) -Australia/Brisbane.standard.long=Heure standard d'Australie orientale (Queensland) -Australia/Broken_Hill.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud/Nouvelle-Galles du sud) -Australia/Broken_Hill.generic.long=Centre (Australie-M\u00E9ridionale/Nouvelle-Galles du Sud) -Australia/Broken_Hill.standard.long=Heure standard d'Australie centrale (Australie du sud/Nouvelle-Galles du sud) -Australia/Canberra.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud) -Australia/Canberra.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud) -Australia/Canberra.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud) -Australia/Currie.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud) -Australia/Currie.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud) -Australia/Currie.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud) -Australia/Darwin.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Territoire du Nord) -Australia/Darwin.generic.long=Centre (Territoire du Nord) -Australia/Darwin.standard.long=Heure standard d'Australie centrale (Territoire du Nord) -Australia/Eucla.daylight.long=Heure d'\u00E9t\u00E9 de l'Australie occidentale (centre) -Australia/Eucla.generic.long=Heure de l'Australie occidentale (centre) -Australia/Eucla.standard.long=Heure standard de l'Australie occidentale (centre) -Australia/Hobart.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Tasmanie) -Australia/Hobart.generic.long=C\u00F4te Est (Tasmanie) -Australia/Hobart.standard.long=Heure standard d'Australie orientale (Tasmanie) -Australia/LHI.generic.long=Heure de Lord Howe -Australia/Lindeman.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Queensland) -Australia/Lindeman.generic.long=C\u00F4te Est (Queensland) -Australia/Lindeman.standard.long=Heure standard d'Australie orientale (Queensland) -Australia/Lord_Howe.generic.long=Heure de Lord Howe -Australia/Melbourne.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Victoria) -Australia/Melbourne.generic.long=C\u00F4te Est (Victoria) -Australia/Melbourne.standard.long=Heure standard d'Australie orientale (Victoria) -Australia/NSW.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud) -Australia/NSW.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud) -Australia/NSW.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud) -Australia/North.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Territoire du Nord) -Australia/North.generic.long=Centre (Territoire du Nord) -Australia/North.standard.long=Heure standard d'Australie centrale (Territoire du Nord) -Australia/Perth.daylight.long=Heure d'\u00E9t\u00E9 de l'Ouest (Australie) -Australia/Perth.generic.long=Ouest (Australie) -Australia/Perth.standard.long=Heure normale de l'Ouest (Australie) -Australia/Queensland.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Queensland) -Australia/Queensland.generic.long=C\u00F4te Est (Queensland) -Australia/Queensland.standard.long=Heure standard d'Australie orientale (Queensland) -Australia/South.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud) -Australia/South.generic.long=Centre (Australie-M\u00E9ridionale) -Australia/South.standard.long=Heure standard d'Australie centrale (Australie du sud) -Australia/Sydney.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud) -Australia/Sydney.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud) -Australia/Sydney.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud) -Australia/Tasmania.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Tasmanie) -Australia/Tasmania.generic.long=C\u00F4te Est (Tasmanie) -Australia/Tasmania.standard.long=Heure standard d'Australie orientale (Tasmanie) -Australia/Victoria.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Victoria) -Australia/Victoria.generic.long=C\u00F4te Est (Victoria) -Australia/Victoria.standard.long=Heure standard d'Australie orientale (Victoria) -Australia/West.daylight.long=Heure d'\u00E9t\u00E9 de l'Ouest (Australie) -Australia/West.generic.long=Ouest (Australie) -Australia/West.standard.long=Heure normale de l'Ouest (Australie) -Australia/Yancowinna.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud/Nouvelle-Galles du sud) -Australia/Yancowinna.generic.long=Centre (Australie-M\u00E9ridionale/Nouvelle-Galles du Sud) -Australia/Yancowinna.standard.long=Heure standard d'Australie centrale (Australie du sud/Nouvelle-Galles du sud) -BET.generic.long=Heure du Br\u00E9sil -BST.generic.long=Heure du Bangladesh -Brazil/Acre.generic.long=Heure de l'Acre -Brazil/DeNoronha.generic.long=Heure de Fernando de Noronha -Brazil/East.generic.long=Heure du Br\u00E9sil -Brazil/West.generic.long=Heure d'Amazonie -CAT.generic.long=Heure d'Afrique centrale -CET.generic.long=Heure d'Europe centrale -CNT.generic.long=Terre-Neuve -CST.generic.long=Centre -CST6CDT.generic.long=Centre -CTT.generic.long=Chine -Canada/Atlantic.generic.long=Atlantique -Canada/Central.generic.long=Centre -Canada/East-Saskatchewan.generic.long=Centre -Canada/Eastern.generic.long=C\u00F4te Est -Canada/Mountain.generic.long=Rocheuses -Canada/Newfoundland.generic.long=Terre-Neuve -Canada/Pacific.generic.long=Pacifique -Canada/Saskatchewan.generic.long=Centre -Canada/Yukon.generic.long=Pacifique -Chile/Continental.generic.long=Heure du Chili -Chile/EasterIsland.generic.long=Heure de l'Ile de P\u00E2ques -Cuba.generic.long=Heure de Cuba -EAT.generic.long=Heure d'Afrique de l'Est -ECT.generic.long=Heure d'Europe centrale -EET.generic.long=Heure d'Europe de l'Est -EST.generic.long=C\u00f4te Est -EST5EDT.generic.long=C\u00f4te Est -Egypt.generic.long=Heure d'Europe de l'Est -Eire.generic.long=Heure irlandaise -Etc/Greenwich.generic.long=Heure de Greenwich -Etc/UCT.generic.long=Temps universel coordonn\u00E9 -Etc/UTC.generic.long=Temps universel coordonn\u00E9 -Etc/Universal.generic.long=Temps universel coordonn\u00E9 -Etc/Zulu.generic.long=Temps universel coordonn\u00E9 -Europe/Amsterdam.generic.long=Heure d'Europe centrale -Europe/Andorra.generic.long=Heure d'Europe centrale -Europe/Athens.generic.long=Heure d'Europe de l'Est -Europe/Belfast.generic.long=Heure britannique -Europe/Belgrade.generic.long=Heure d'Europe centrale -Europe/Berlin.generic.long=Heure d'Europe centrale -Europe/Bratislava.generic.long=Heure d'Europe centrale -Europe/Brussels.generic.long=Heure d'Europe centrale -Europe/Bucharest.generic.long=Heure d'Europe de l'Est -Europe/Budapest.generic.long=Heure d'Europe centrale -Europe/Busingen.generic.long=Heure d'Europe centrale -Europe/Chisinau.generic.long=Heure d'Europe de l'Est -Europe/Copenhagen.generic.long=Heure d'Europe centrale -Europe/Dublin.generic.long=Heure irlandaise -Europe/Gibraltar.generic.long=Heure d'Europe centrale -Europe/Guernsey.generic.long=Heure britannique -Europe/Helsinki.generic.long=Heure d'Europe de l'Est -Europe/Isle_of_Man.generic.long=Heure britannique -Europe/Istanbul.generic.long=Heure d'Europe de l'Est -Europe/Jersey.generic.long=Heure britannique -Europe/Kaliningrad.daylight.long=Heure d'\u00E9t\u00E9 d'Europe de l'Est UTC+3 -Europe/Kaliningrad.generic.long=Heure d'Europe de l'Est UTC+3 -Europe/Kaliningrad.standard.long=Heure d'Europe de l'Est UTC+3 -Europe/Kiev.generic.long=Heure d'Europe de l'Est -Europe/Lisbon.generic.long=Heure d'Europe de l'Ouest -Europe/Ljubljana.generic.long=Heure d'Europe centrale -Europe/London.generic.long=Heure britannique -Europe/Luxembourg.generic.long=Heure d'Europe centrale -Europe/Madrid.generic.long=Heure d'Europe centrale -Europe/Malta.generic.long=Heure d'Europe centrale -Europe/Mariehamn.generic.long=Heure d'Europe de l'Est -Europe/Minsk.daylight.long=Heure d'\u00E9t\u00E9 d'Europe de l'Est UTC+3 -Europe/Minsk.generic.long=Heure d'Europe de l'Est UTC+3 -Europe/Minsk.standard.long=Heure d'Europe de l'Est UTC+3 -Europe/Monaco.generic.long=Heure d'Europe centrale -Europe/Moscow.generic.long=Moscou -Europe/Nicosia.generic.long=Heure d'Europe de l'Est -Europe/Oslo.generic.long=Heure d'Europe centrale -Europe/Paris.generic.long=Heure d'Europe centrale -Europe/Podgorica.generic.long=Heure d'Europe centrale -Europe/Prague.generic.long=Heure d'Europe centrale -Europe/Riga.generic.long=Heure d'Europe de l'Est -Europe/Rome.generic.long=Heure d'Europe centrale -Europe/Samara.generic.long=Heure de Samara -Europe/San_Marino.generic.long=Heure d'Europe centrale -Europe/Sarajevo.generic.long=Heure d'Europe centrale -Europe/Simferopol.generic.long=Heure d'Europe de l'Est -Europe/Skopje.generic.long=Heure d'Europe centrale -Europe/Sofia.generic.long=Heure d'Europe de l'Est -Europe/Stockholm.generic.long=Heure d'Europe centrale -Europe/Tallinn.generic.long=Heure d'Europe de l'Est -Europe/Tirane.generic.long=Heure d'Europe centrale -Europe/Tiraspol.generic.long=Heure d'Europe de l'Est -Europe/Uzhgorod.generic.long=Heure d'Europe de l'Est -Europe/Vaduz.generic.long=Heure d'Europe centrale -Europe/Vatican.generic.long=Heure d'Europe centrale -Europe/Vienna.generic.long=Heure d'Europe centrale -Europe/Vilnius.generic.long=Heure d'Europe de l'Est -Europe/Volgograd.generic.long=Heure de Volgograd -Europe/Warsaw.generic.long=Heure d'Europe centrale -Europe/Zagreb.generic.long=Heure d'Europe centrale -Europe/Zaporozhye.generic.long=Heure d'Europe de l'Est -Europe/Zurich.generic.long=Heure d'Europe centrale -GB-Eire.generic.long=Heure britannique -GB.generic.long=Heure britannique -GMT.generic.long=Heure de Greenwich -Greenwich.generic.long=Heure de Greenwich -HST.generic.long=Hawa\u00ef -Hongkong.generic.long=Heure de Hong-Kong -IET.generic.long=C\u00F4te Est -IST.generic.long=Inde -Iceland.generic.long=Heure de Greenwich -Indian/Antananarivo.generic.long=Heure d'Afrique de l'Est -Indian/Chagos.generic.long=Heure de l'oc\u00E9an Indien -Indian/Christmas.generic.long=Heure de l'Ile Christmas -Indian/Cocos.generic.long=Heure des Iles Cocos -Indian/Comoro.generic.long=Heure d'Afrique de l'Est -Indian/Kerguelen.generic.long=Heure des Terres australes antarctiques fran\u00E7aises -Indian/Mahe.generic.long=Heure des Seychelles -Indian/Maldives.generic.long=Heure des Maldives -Indian/Mauritius.generic.long=Heure de Maurice -Indian/Mayotte.generic.long=Heure d'Afrique de l'Est -Indian/Reunion.generic.long=Heure de la R\u00E9union -Iran.generic.long=Heure d'Iran -Israel.generic.long=Isra\u00EBl -JST.generic.long=Japon -Jamaica.generic.long=C\u00F4te Est -Japan.generic.long=Japon -Kwajalein.generic.long=Heure des Iles Marshall -Libya.generic.long=Heure d'Europe de l'Est -MET.generic.long=MET -MIT.generic.long=Heure des Samoas occidentales -MST.generic.long=Rocheuses -MST7MDT.generic.long=Rocheuses -Mexico/BajaNorte.generic.long=Pacifique -Mexico/BajaSur.generic.long=Rocheuses -Mexico/General.generic.long=Centre -NET.generic.long=Heure d'Arm\u00E9nie -NST.generic.long=Nouvelle-Z\u00E9lande -NZ-CHAT.generic.long=Chatham -NZ.generic.long=Nouvelle-Z\u00E9lande -Navajo.generic.long=Rocheuses -PLT.generic.long=Heure du Pakistan -PNT.generic.long=Rocheuses -PRC.generic.long=Chine -PRT.generic.long=Atlantique -PST.generic.long=Pacifique -PST8PDT.generic.long=Pacifique -Pacific/Apia.generic.long=Heure des Samoas occidentales -Pacific/Auckland.generic.long=Nouvelle-Z\u00E9lande -Pacific/Chatham.generic.long=Chatham -Pacific/Chuuk.daylight.long=Heure d'\u00E9t\u00E9 de Chuuk -Pacific/Chuuk.generic.long=Heure de Chuuk -Pacific/Chuuk.standard.long=Heure de Chuuk -Pacific/Easter.generic.long=Heure de l'Ile de P\u00E2ques -Pacific/Efate.generic.long=Heure du Vanuatu -Pacific/Enderbury.generic.long=Heure de l'Ile de Phoenix -Pacific/Fakaofo.generic.long=Heure de Tokelau -Pacific/Fiji.generic.long=Heure de Fidji -Pacific/Funafuti.generic.long=Heure de Tuvalu -Pacific/Galapagos.generic.long=Heure des Galapagos -Pacific/Gambier.generic.long=Heure de Gambi -Pacific/Guadalcanal.generic.long=Heure des Iles Salomon -Pacific/Guam.generic.long=Chamorro -Pacific/Honolulu.generic.long=Hawa\u00EF -Pacific/Johnston.generic.long=Hawa\u00EF -Pacific/Kiritimati.generic.long=Heure de l'Ile de Line -Pacific/Kosrae.generic.long=Heure de Kusaie -Pacific/Kwajalein.generic.long=Heure des Iles Marshall -Pacific/Majuro.generic.long=Heure des Iles Marshall -Pacific/Marquesas.generic.long=Heure des Marquises -Pacific/Midway.generic.long=Samoa -Pacific/Nauru.generic.long=Heure de Nauru -Pacific/Niue.generic.long=Heure de Niue -Pacific/Norfolk.generic.long=Heure de Norfolk -Pacific/Noumea.generic.long=Heure de Nouvelle-Cal\u00E9donie -Pacific/Pago_Pago.generic.long=Samoa -Pacific/Palau.generic.long=Heure de Palaos -Pacific/Pitcairn.generic.long=Pitcairn -Pacific/Pohnpei.daylight.long=Heure d'\u00E9t\u00E9 de Pohnpei -Pacific/Pohnpei.generic.long=Ponape -Pacific/Pohnpei.standard.long=Heure de Pohnpei -Pacific/Ponape.daylight.long=Heure d'\u00E9t\u00E9 de Pohnpei -Pacific/Ponape.generic.long=Ponape -Pacific/Ponape.standard.long=Heure de Pohnpei -Pacific/Port_Moresby.generic.long=Heure de Papouasie-Nouvelle-Guin\u00E9e -Pacific/Rarotonga.generic.long=Heure des Iles Cook -Pacific/Saipan.generic.long=Chamorro -Pacific/Samoa.generic.long=Samoa -Pacific/Tahiti.generic.long=Heure de Tahiti -Pacific/Tarawa.generic.long=Heure de Kiribati -Pacific/Tongatapu.generic.long=Heure de Tonga -Pacific/Truk.daylight.long=Heure d'\u00E9t\u00E9 de Chuuk -Pacific/Truk.generic.long=Heure de Chuuk -Pacific/Truk.standard.long=Heure de Chuuk -Pacific/Wake.generic.long=Heure de Wake -Pacific/Wallis.generic.long=Heure de Wallis-et-Futuna -Pacific/Yap.daylight.long=Heure d'\u00E9t\u00E9 de Chuuk -Pacific/Yap.generic.long=Heure de Chuuk -Pacific/Yap.standard.long=Heure de Chuuk -Poland.generic.long=Heure d'Europe centrale -Portugal.generic.long=Heure d'Europe de l'Ouest -ROK.generic.long=Cor\u00E9e -SST.generic.long=Heure des Iles Salomon -Singapore.generic.long=Heure de Singapour -SystemV/AST4.generic.long=Atlantique -SystemV/AST4ADT.generic.long=Atlantique -SystemV/CST6.generic.long=Centre -SystemV/CST6CDT.generic.long=Centre -SystemV/EST5.generic.long=C\u00F4te Est -SystemV/EST5EDT.generic.long=C\u00F4te Est -SystemV/HST10.generic.long=Hawa\u00EF -SystemV/MST7.generic.long=Rocheuses -SystemV/MST7MDT.generic.long=Rocheuses -SystemV/PST8.generic.long=Pacifique -SystemV/PST8PDT.generic.long=Pacifique -SystemV/YST9.generic.long=Alaska -SystemV/YST9YDT.generic.long=Alaska -Turkey.generic.long=Heure d'Europe de l'Est -UCT.generic.long=Temps universel coordonn\u00E9 -US/Alaska.generic.long=Alaska -US/Aleutian.generic.long=Hawa\u00EF-Iles Al\u00E9outiennes -US/Arizona.generic.long=Rocheuses -US/Central.generic.long=Centre -US/East-Indiana.generic.long=C\u00F4te Est -US/Eastern.generic.long=C\u00F4te Est -US/Hawaii.generic.long=Hawa\u00EF -US/Indiana-Starke.generic.long=Centre -US/Michigan.generic.long=C\u00F4te Est -US/Mountain.generic.long=Rocheuses -US/Pacific-New.generic.long=Pacifique -US/Pacific.generic.long=Pacifique -US/Samoa.generic.long=Samoa -UTC.generic.long=Temps universel coordonn\u00E9 -Universal.generic.long=Temps universel coordonn\u00E9 -VST.generic.long=Heure d'Indochine -W-SU.generic.long=Moscou -WET.generic.long=Heure d'Europe de l'Ouest -Zulu.generic.long=Temps universel coordonn\u00E9 diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_fr_short.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_fr_short.properties deleted file mode 100644 index 095522a68d1..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_fr_short.properties +++ /dev/null @@ -1,1743 +0,0 @@ -ACT.daylight.short=CST -ACT.generic.short=CT -ACT.standard.short=CST -AET.daylight.short=EST -AET.generic.short=ET -AET.standard.short=EST -Africa/Abidjan.daylight.short=GMT -Africa/Abidjan.generic.short=GMT -Africa/Abidjan.standard.short=GMT -Africa/Accra.daylight.short=GHST -Africa/Accra.generic.short=GMT -Africa/Accra.standard.short=GMT -Africa/Addis_Ababa.daylight.short=EAST -Africa/Addis_Ababa.generic.short=EAT -Africa/Addis_Ababa.standard.short=EAT -Africa/Algiers.daylight.short=CEST -Africa/Algiers.generic.short=CET -Africa/Algiers.standard.short=CET -Africa/Asmara.daylight.short=EAST -Africa/Asmara.generic.short=EAT -Africa/Asmara.standard.short=EAT -Africa/Asmera.daylight.short=EAST -Africa/Asmera.generic.short=EAT -Africa/Asmera.standard.short=EAT -Africa/Bamako.daylight.short=GMT -Africa/Bamako.generic.short=GMT -Africa/Bamako.standard.short=GMT -Africa/Bangui.daylight.short=WAST -Africa/Bangui.generic.short=WAT -Africa/Bangui.standard.short=WAT -Africa/Banjul.daylight.short=GMT -Africa/Banjul.generic.short=GMT -Africa/Banjul.standard.short=GMT -Africa/Bissau.daylight.short=GMT -Africa/Bissau.generic.short=GMT -Africa/Bissau.standard.short=GMT -Africa/Blantyre.daylight.short=CAST -Africa/Blantyre.generic.short=CAT -Africa/Blantyre.standard.short=CAT -Africa/Brazzaville.daylight.short=WAST -Africa/Brazzaville.generic.short=WAT -Africa/Brazzaville.standard.short=WAT -Africa/Bujumbura.daylight.short=CAST -Africa/Bujumbura.generic.short=CAT -Africa/Bujumbura.standard.short=CAT -Africa/Cairo.daylight.short=EEST -Africa/Cairo.generic.short=EET -Africa/Cairo.standard.short=EET -Africa/Casablanca.daylight.short=WEST -Africa/Casablanca.generic.short=WET -Africa/Casablanca.standard.short=WET -Africa/Ceuta.daylight.short=CEST -Africa/Ceuta.generic.short=CET -Africa/Ceuta.standard.short=CET -Africa/Conakry.daylight.short=GMT -Africa/Conakry.generic.short=GMT -Africa/Conakry.standard.short=GMT -Africa/Dakar.daylight.short=GMT -Africa/Dakar.generic.short=GMT -Africa/Dakar.standard.short=GMT -Africa/Dar_es_Salaam.daylight.short=EAST -Africa/Dar_es_Salaam.generic.short=EAT -Africa/Dar_es_Salaam.standard.short=EAT -Africa/Djibouti.daylight.short=EAST -Africa/Djibouti.generic.short=EAT -Africa/Djibouti.standard.short=EAT -Africa/Douala.daylight.short=WAST -Africa/Douala.generic.short=WAT -Africa/Douala.standard.short=WAT -Africa/El_Aaiun.daylight.short=WEST -Africa/El_Aaiun.generic.short=WET -Africa/El_Aaiun.standard.short=WET -Africa/Freetown.daylight.short=SLST -Africa/Freetown.generic.short=SLT -Africa/Freetown.standard.short=GMT -Africa/Gaborone.daylight.short=CAST -Africa/Gaborone.generic.short=CAT -Africa/Gaborone.standard.short=CAT -Africa/Harare.daylight.short=CAST -Africa/Harare.generic.short=CAT -Africa/Harare.standard.short=CAT -Africa/Johannesburg.daylight.short=SAST -Africa/Johannesburg.generic.short=SAT -Africa/Johannesburg.standard.short=SAST -Africa/Juba.daylight.short=EAST -Africa/Juba.generic.short=EAT -Africa/Juba.standard.short=EAT -Africa/Kampala.daylight.short=EAST -Africa/Kampala.generic.short=EAT -Africa/Kampala.standard.short=EAT -Africa/Khartoum.daylight.short=EAST -Africa/Khartoum.generic.short=EAT -Africa/Khartoum.standard.short=EAT -Africa/Kigali.daylight.short=CAST -Africa/Kigali.generic.short=CAT -Africa/Kigali.standard.short=CAT -Africa/Kinshasa.daylight.short=WAST -Africa/Kinshasa.generic.short=WAT -Africa/Kinshasa.standard.short=WAT -Africa/Lagos.daylight.short=WAST -Africa/Lagos.generic.short=WAT -Africa/Lagos.standard.short=WAT -Africa/Libreville.daylight.short=WAST -Africa/Libreville.generic.short=WAT -Africa/Libreville.standard.short=WAT -Africa/Lome.daylight.short=GMT -Africa/Lome.generic.short=GMT -Africa/Lome.standard.short=GMT -Africa/Luanda.daylight.short=WAST -Africa/Luanda.generic.short=WAT -Africa/Luanda.standard.short=WAT -Africa/Lubumbashi.daylight.short=CAST -Africa/Lubumbashi.generic.short=CAT -Africa/Lubumbashi.standard.short=CAT -Africa/Lusaka.daylight.short=CAST -Africa/Lusaka.generic.short=CAT -Africa/Lusaka.standard.short=CAT -Africa/Malabo.daylight.short=WAST -Africa/Malabo.generic.short=WAT -Africa/Malabo.standard.short=WAT -Africa/Maputo.daylight.short=CAST -Africa/Maputo.generic.short=CAT -Africa/Maputo.standard.short=CAT -Africa/Maseru.daylight.short=SAST -Africa/Maseru.generic.short=SAT -Africa/Maseru.standard.short=SAST -Africa/Mbabane.daylight.short=SAST -Africa/Mbabane.generic.short=SAT -Africa/Mbabane.standard.short=SAST -Africa/Mogadishu.daylight.short=EAST -Africa/Mogadishu.generic.short=EAT -Africa/Mogadishu.standard.short=EAT -Africa/Monrovia.daylight.short=GMT -Africa/Monrovia.generic.short=GMT -Africa/Monrovia.standard.short=GMT -Africa/Nairobi.daylight.short=EAST -Africa/Nairobi.generic.short=EAT -Africa/Nairobi.standard.short=EAT -Africa/Ndjamena.daylight.short=WAST -Africa/Ndjamena.generic.short=WAT -Africa/Ndjamena.standard.short=WAT -Africa/Niamey.daylight.short=WAST -Africa/Niamey.generic.short=WAT -Africa/Niamey.standard.short=WAT -Africa/Nouakchott.daylight.short=GMT -Africa/Nouakchott.generic.short=GMT -Africa/Nouakchott.standard.short=GMT -Africa/Ouagadougou.daylight.short=GMT -Africa/Ouagadougou.generic.short=GMT -Africa/Ouagadougou.standard.short=GMT -Africa/Porto-Novo.daylight.short=WAST -Africa/Porto-Novo.generic.short=WAT -Africa/Porto-Novo.standard.short=WAT -Africa/Sao_Tome.daylight.short=GMT -Africa/Sao_Tome.generic.short=GMT -Africa/Sao_Tome.standard.short=GMT -Africa/Timbuktu.daylight.short=GMT -Africa/Timbuktu.generic.short=GMT -Africa/Timbuktu.standard.short=GMT -Africa/Tripoli.daylight.short=EEST -Africa/Tripoli.generic.short=EET -Africa/Tripoli.standard.short=EET -Africa/Tunis.daylight.short=CEST -Africa/Tunis.generic.short=CET -Africa/Tunis.standard.short=CET -Africa/Windhoek.daylight.short=WAST -Africa/Windhoek.generic.short=WAT -Africa/Windhoek.standard.short=WAT -AGT.daylight.short=ARST -AGT.generic.short=ART -AGT.standard.short=ART -America/Adak.daylight.short=HADT -America/Adak.generic.short=HAT -America/Adak.standard.short=HAST -America/Anchorage.daylight.short=AKDT -America/Anchorage.generic.short=AKT -America/Anchorage.standard.short=AKST -America/Anguilla.daylight.short=ADT -America/Anguilla.generic.short=AT -America/Anguilla.standard.short=AST -America/Antigua.daylight.short=ADT -America/Antigua.generic.short=AT -America/Antigua.standard.short=AST -America/Araguaina.daylight.short=BRST -America/Araguaina.generic.short=BRT -America/Araguaina.standard.short=BRT -America/Argentina/Buenos_Aires.daylight.short=ARST -America/Argentina/Buenos_Aires.generic.short=ART -America/Argentina/Buenos_Aires.standard.short=ART -America/Argentina/Catamarca.daylight.short=ARST -America/Argentina/Catamarca.generic.short=ART -America/Argentina/Catamarca.standard.short=ART -America/Argentina/ComodRivadavia.daylight.short=ARST -America/Argentina/ComodRivadavia.generic.short=ART -America/Argentina/ComodRivadavia.standard.short=ART -America/Argentina/Cordoba.daylight.short=ARST -America/Argentina/Cordoba.generic.short=ART -America/Argentina/Cordoba.standard.short=ART -America/Argentina/Jujuy.daylight.short=ARST -America/Argentina/Jujuy.generic.short=ART -America/Argentina/Jujuy.standard.short=ART -America/Argentina/La_Rioja.daylight.short=ARST -America/Argentina/La_Rioja.generic.short=ART -America/Argentina/La_Rioja.standard.short=ART -America/Argentina/Mendoza.daylight.short=ARST -America/Argentina/Mendoza.generic.short=ART -America/Argentina/Mendoza.standard.short=ART -America/Argentina/Rio_Gallegos.daylight.short=ARST -America/Argentina/Rio_Gallegos.generic.short=ART -America/Argentina/Rio_Gallegos.standard.short=ART -America/Argentina/Salta.daylight.short=ARST -America/Argentina/Salta.generic.short=ART -America/Argentina/Salta.standard.short=ART -America/Argentina/San_Juan.daylight.short=ARST -America/Argentina/San_Juan.generic.short=ART -America/Argentina/San_Juan.standard.short=ART -America/Argentina/San_Luis.daylight.short=ARST -America/Argentina/San_Luis.generic.short=ART -America/Argentina/San_Luis.standard.short=ART -America/Argentina/Tucuman.daylight.short=ARST -America/Argentina/Tucuman.generic.short=ART -America/Argentina/Tucuman.standard.short=ART -America/Argentina/Ushuaia.daylight.short=ARST -America/Argentina/Ushuaia.generic.short=ART -America/Argentina/Ushuaia.standard.short=ART -America/Aruba.daylight.short=ADT -America/Aruba.generic.short=AT -America/Aruba.standard.short=AST -America/Asuncion.daylight.short=PYST -America/Asuncion.generic.short=PYT -America/Asuncion.standard.short=PYT -America/Atikokan.daylight.short=EDT -America/Atikokan.generic.short=ET -America/Atikokan.standard.short=EST -America/Atka.daylight.short=HADT -America/Atka.generic.short=HAT -America/Atka.standard.short=HAST -America/Bahia_Banderas.daylight.short=CDT -America/Bahia_Banderas.generic.short=CT -America/Bahia_Banderas.standard.short=CST -America/Bahia.daylight.short=BRST -America/Bahia.generic.short=BRT -America/Bahia.standard.short=BRT -America/Barbados.daylight.short=ADT -America/Barbados.generic.short=AT -America/Barbados.standard.short=AST -America/Belem.daylight.short=BRST -America/Belem.generic.short=BRT -America/Belem.standard.short=BRT -America/Belize.daylight.short=CDT -America/Belize.generic.short=CT -America/Belize.standard.short=CST -America/Blanc-Sablon.daylight.short=ADT -America/Blanc-Sablon.generic.short=AT -America/Blanc-Sablon.standard.short=AST -America/Boa_Vista.daylight.short=AMST -America/Boa_Vista.generic.short=AMT -America/Boa_Vista.standard.short=AMT -America/Bogota.daylight.short=COST -America/Bogota.generic.short=COT -America/Bogota.standard.short=COT -America/Boise.daylight.short=MDT -America/Boise.generic.short=MT -America/Boise.standard.short=MST -America/Buenos_Aires.daylight.short=ARST -America/Buenos_Aires.generic.short=ART -America/Buenos_Aires.standard.short=ART -America/Cambridge_Bay.daylight.short=MDT -America/Cambridge_Bay.generic.short=MT -America/Cambridge_Bay.standard.short=MST -America/Campo_Grande.daylight.short=AMST -America/Campo_Grande.generic.short=AMT -America/Campo_Grande.standard.short=AMT -America/Cancun.daylight.short=CDT -America/Cancun.generic.short=CT -America/Cancun.standard.short=CST -America/Caracas.daylight.short=VEST -America/Caracas.generic.short=VET -America/Caracas.standard.short=VET -America/Catamarca.daylight.short=ARST -America/Catamarca.generic.short=ART -America/Catamarca.standard.short=ART -America/Cayenne.daylight.short=GFST -America/Cayenne.generic.short=GFT -America/Cayenne.standard.short=GFT -America/Cayman.daylight.short=EDT -America/Cayman.generic.short=ET -America/Cayman.standard.short=EST -America/Chicago.daylight.short=CDT -America/Chicago.generic.short=CT -America/Chicago.standard.short=CST -America/Chihuahua.daylight.short=MDT -America/Chihuahua.generic.short=MT -America/Chihuahua.standard.short=MST -America/Coral_Harbour.daylight.short=EDT -America/Coral_Harbour.generic.short=ET -America/Coral_Harbour.standard.short=EST -America/Cordoba.daylight.short=ARST -America/Cordoba.generic.short=ART -America/Cordoba.standard.short=ART -America/Costa_Rica.daylight.short=CDT -America/Costa_Rica.generic.short=CT -America/Costa_Rica.standard.short=CST -America/Creston.daylight.short=MDT -America/Creston.generic.short=MT -America/Creston.standard.short=MST -America/Cuiaba.daylight.short=AMST -America/Cuiaba.generic.short=AMT -America/Cuiaba.standard.short=AMT -America/Curacao.daylight.short=ADT -America/Curacao.generic.short=AT -America/Curacao.standard.short=AST -America/Danmarkshavn.daylight.short=GMT -America/Danmarkshavn.generic.short=GMT -America/Danmarkshavn.standard.short=GMT -America/Dawson_Creek.daylight.short=MDT -America/Dawson_Creek.generic.short=MT -America/Dawson_Creek.standard.short=MST -America/Dawson.daylight.short=PDT -America/Dawson.generic.short=PT -America/Dawson.standard.short=PST -America/Denver.daylight.short=MDT -America/Denver.generic.short=MT -America/Denver.standard.short=MST -America/Detroit.daylight.short=EDT -America/Detroit.generic.short=ET -America/Detroit.standard.short=EST -America/Dominica.daylight.short=ADT -America/Dominica.generic.short=AT -America/Dominica.standard.short=AST -America/Edmonton.daylight.short=MDT -America/Edmonton.generic.short=MT -America/Edmonton.standard.short=MST -America/Eirunepe.daylight.short=ACST -America/Eirunepe.generic.short=ACT -America/Eirunepe.standard.short=ACT -America/El_Salvador.daylight.short=CDT -America/El_Salvador.generic.short=CT -America/El_Salvador.standard.short=CST -America/Ensenada.daylight.short=PDT -America/Ensenada.generic.short=PT -America/Ensenada.standard.short=PST -America/Fortaleza.daylight.short=BRST -America/Fortaleza.generic.short=BRT -America/Fortaleza.standard.short=BRT -America/Fort_Wayne.daylight.short=EDT -America/Fort_Wayne.generic.short=ET -America/Fort_Wayne.standard.short=EST -America/Glace_Bay.daylight.short=ADT -America/Glace_Bay.generic.short=AT -America/Glace_Bay.standard.short=AST -America/Godthab.daylight.short=WGST -America/Godthab.generic.short=WGT -America/Godthab.standard.short=WGT -America/Goose_Bay.daylight.short=ADT -America/Goose_Bay.generic.short=AT -America/Goose_Bay.standard.short=AST -America/Grand_Turk.daylight.short=EDT -America/Grand_Turk.generic.short=ET -America/Grand_Turk.standard.short=EST -America/Grenada.daylight.short=ADT -America/Grenada.generic.short=AT -America/Grenada.standard.short=AST -America/Guadeloupe.daylight.short=ADT -America/Guadeloupe.generic.short=AT -America/Guadeloupe.standard.short=AST -America/Guatemala.daylight.short=CDT -America/Guatemala.generic.short=CT -America/Guatemala.standard.short=CST -America/Guayaquil.daylight.short=ECST -America/Guayaquil.generic.short=ECT -America/Guayaquil.standard.short=ECT -America/Guyana.daylight.short=GYST -America/Guyana.generic.short=GYT -America/Guyana.standard.short=GYT -America/Halifax.daylight.short=ADT -America/Halifax.generic.short=AT -America/Halifax.standard.short=AST -America/Havana.daylight.short=CDT -America/Havana.generic.short=CT -America/Havana.standard.short=CST -America/Hermosillo.daylight.short=MDT -America/Hermosillo.generic.short=MT -America/Hermosillo.standard.short=MST -America/Indiana/Indianapolis.daylight.short=EDT -America/Indiana/Indianapolis.generic.short=ET -America/Indiana/Indianapolis.standard.short=EST -America/Indiana/Knox.daylight.short=CDT -America/Indiana/Knox.generic.short=CT -America/Indiana/Knox.standard.short=CST -America/Indiana/Marengo.daylight.short=EDT -America/Indiana/Marengo.generic.short=ET -America/Indiana/Marengo.standard.short=EST -America/Indiana/Petersburg.daylight.short=EDT -America/Indiana/Petersburg.generic.short=ET -America/Indiana/Petersburg.standard.short=EST -America/Indianapolis.daylight.short=EDT -America/Indianapolis.generic.short=ET -America/Indianapolis.standard.short=EST -America/Indiana/Tell_City.daylight.short=CDT -America/Indiana/Tell_City.generic.short=CT -America/Indiana/Tell_City.standard.short=CST -America/Indiana/Vevay.daylight.short=EDT -America/Indiana/Vevay.generic.short=ET -America/Indiana/Vevay.standard.short=EST -America/Indiana/Vincennes.daylight.short=EDT -America/Indiana/Vincennes.generic.short=ET -America/Indiana/Vincennes.standard.short=EST -America/Indiana/Winamac.daylight.short=EDT -America/Indiana/Winamac.generic.short=ET -America/Indiana/Winamac.standard.short=EST -America/Inuvik.daylight.short=MDT -America/Inuvik.generic.short=MT -America/Inuvik.standard.short=MST -America/Iqaluit.daylight.short=EDT -America/Iqaluit.generic.short=ET -America/Iqaluit.standard.short=EST -America/Jamaica.daylight.short=EDT -America/Jamaica.generic.short=ET -America/Jamaica.standard.short=EST -America/Jujuy.daylight.short=ARST -America/Jujuy.generic.short=ART -America/Jujuy.standard.short=ART -America/Juneau.daylight.short=AKDT -America/Juneau.generic.short=AKT -America/Juneau.standard.short=AKST -America/Kentucky/Louisville.daylight.short=EDT -America/Kentucky/Louisville.generic.short=ET -America/Kentucky/Louisville.standard.short=EST -America/Kentucky/Monticello.daylight.short=EDT -America/Kentucky/Monticello.generic.short=ET -America/Kentucky/Monticello.standard.short=EST -America/Knox_IN.daylight.short=CDT -America/Knox_IN.generic.short=CT -America/Knox_IN.standard.short=CST -America/Kralendijk.daylight.short=ADT -America/Kralendijk.generic.short=AT -America/Kralendijk.standard.short=AST -America/La_Paz.daylight.short=BOST -America/La_Paz.generic.short=BOT -America/La_Paz.standard.short=BOT -America/Lima.daylight.short=PEST -America/Lima.generic.short=PET -America/Lima.standard.short=PET -America/Los_Angeles.daylight.short=PDT -America/Los_Angeles.generic.short=PT -America/Los_Angeles.standard.short=PST -America/Louisville.daylight.short=EDT -America/Louisville.generic.short=ET -America/Louisville.standard.short=EST -America/Lower_Princes.daylight.short=ADT -America/Lower_Princes.generic.short=AT -America/Lower_Princes.standard.short=AST -America/Maceio.daylight.short=BRST -America/Maceio.generic.short=BRT -America/Maceio.standard.short=BRT -America/Managua.daylight.short=CDT -America/Managua.generic.short=CT -America/Managua.standard.short=CST -America/Manaus.daylight.short=AMST -America/Manaus.generic.short=AMT -America/Manaus.standard.short=AMT -America/Marigot.daylight.short=ADT -America/Marigot.generic.short=AT -America/Marigot.standard.short=AST -America/Martinique.daylight.short=ADT -America/Martinique.generic.short=AT -America/Martinique.standard.short=AST -America/Matamoros.daylight.short=CDT -America/Matamoros.generic.short=CT -America/Matamoros.standard.short=CST -America/Mazatlan.daylight.short=MDT -America/Mazatlan.generic.short=MT -America/Mazatlan.standard.short=MST -America/Mendoza.daylight.short=ARST -America/Mendoza.generic.short=ART -America/Mendoza.standard.short=ART -America/Menominee.daylight.short=CDT -America/Menominee.generic.short=CT -America/Menominee.standard.short=CST -America/Merida.daylight.short=CDT -America/Merida.generic.short=CT -America/Merida.standard.short=CST -America/Metlakatla.daylight.short=MeDT -America/Metlakatla.generic.short=MeT -America/Metlakatla.standard.short=MeST -America/Mexico_City.daylight.short=CDT -America/Mexico_City.generic.short=CT -America/Mexico_City.standard.short=CST -America/Miquelon.daylight.short=PMDT -America/Miquelon.generic.short=PMT -America/Miquelon.standard.short=PMST -America/Moncton.daylight.short=ADT -America/Moncton.generic.short=AT -America/Moncton.standard.short=AST -America/Monterrey.daylight.short=CDT -America/Monterrey.generic.short=CT -America/Monterrey.standard.short=CST -America/Montevideo.daylight.short=UYST -America/Montevideo.generic.short=UYT -America/Montevideo.standard.short=UYT -America/Montreal.daylight.short=EDT -America/Montreal.generic.short=ET -America/Montreal.standard.short=EST -America/Montserrat.daylight.short=ADT -America/Montserrat.generic.short=AT -America/Montserrat.standard.short=AST -America/Nassau.daylight.short=EDT -America/Nassau.generic.short=ET -America/Nassau.standard.short=EST -America/New_York.daylight.short=EDT -America/New_York.generic.short=ET -America/New_York.standard.short=EST -America/Nipigon.daylight.short=EDT -America/Nipigon.generic.short=ET -America/Nipigon.standard.short=EST -America/Nome.daylight.short=AKDT -America/Nome.generic.short=AKT -America/Nome.standard.short=AKST -America/Noronha.daylight.short=FNST -America/Noronha.generic.short=FNT -America/Noronha.standard.short=FNT -America/North_Dakota/Beulah.daylight.short=CDT -America/North_Dakota/Beulah.generic.short=CT -America/North_Dakota/Beulah.standard.short=CST -America/North_Dakota/Center.daylight.short=CDT -America/North_Dakota/Center.generic.short=CT -America/North_Dakota/Center.standard.short=CST -America/North_Dakota/New_Salem.daylight.short=CDT -America/North_Dakota/New_Salem.generic.short=CT -America/North_Dakota/New_Salem.standard.short=CST -America/Ojinaga.daylight.short=MDT -America/Ojinaga.generic.short=MT -America/Ojinaga.standard.short=MST -America/Panama.daylight.short=EDT -America/Panama.generic.short=ET -America/Panama.standard.short=EST -America/Pangnirtung.daylight.short=EDT -America/Pangnirtung.generic.short=ET -America/Pangnirtung.standard.short=EST -America/Paramaribo.daylight.short=SRST -America/Paramaribo.generic.short=SRT -America/Paramaribo.standard.short=SRT -America/Phoenix.daylight.short=MDT -America/Phoenix.generic.short=MT -America/Phoenix.standard.short=MST -America/Port-au-Prince.daylight.short=EDT -America/Port-au-Prince.generic.short=ET -America/Port-au-Prince.standard.short=EST -America/Porto_Acre.daylight.short=ACST -America/Porto_Acre.generic.short=ACT -America/Porto_Acre.standard.short=ACT -America/Port_of_Spain.daylight.short=ADT -America/Port_of_Spain.generic.short=AT -America/Port_of_Spain.standard.short=AST -America/Porto_Velho.daylight.short=AMST -America/Porto_Velho.generic.short=AMT -America/Porto_Velho.standard.short=AMT -America/Puerto_Rico.daylight.short=ADT -America/Puerto_Rico.generic.short=AT -America/Puerto_Rico.standard.short=AST -America/Rainy_River.daylight.short=CDT -America/Rainy_River.generic.short=CT -America/Rainy_River.standard.short=CST -America/Rankin_Inlet.daylight.short=CDT -America/Rankin_Inlet.generic.short=CT -America/Rankin_Inlet.standard.short=CST -America/Recife.daylight.short=BRST -America/Recife.generic.short=BRT -America/Recife.standard.short=BRT -America/Regina.daylight.short=CDT -America/Regina.generic.short=CT -America/Regina.standard.short=CST -America/Resolute.daylight.short=CDT -America/Resolute.generic.short=CT -America/Resolute.standard.short=CST -America/Rio_Branco.daylight.short=ACST -America/Rio_Branco.generic.short=ACT -America/Rio_Branco.standard.short=ACT -America/Rosario.daylight.short=ARST -America/Rosario.generic.short=ART -America/Rosario.standard.short=ART -America/Santa_Isabel.daylight.short=PDT -America/Santa_Isabel.generic.short=PT -America/Santa_Isabel.standard.short=PST -America/Santarem.daylight.short=BRST -America/Santarem.generic.short=BRT -America/Santarem.standard.short=BRT -America/Santiago.daylight.short=CLST -America/Santiago.generic.short=CLT -America/Santiago.standard.short=CLT -America/Santo_Domingo.daylight.short=ADT -America/Santo_Domingo.generic.short=AT -America/Santo_Domingo.standard.short=AST -America/Sao_Paulo.daylight.short=BRST -America/Sao_Paulo.generic.short=BRT -America/Sao_Paulo.standard.short=BRT -America/Scoresbysund.daylight.short=EGST -America/Scoresbysund.generic.short=EGT -America/Scoresbysund.standard.short=EGT -America/Shiprock.daylight.short=MDT -America/Shiprock.generic.short=MT -America/Shiprock.standard.short=MST -America/Sitka.daylight.short=AKDT -America/Sitka.generic.short=AKT -America/Sitka.standard.short=AKST -America/St_Barthelemy.daylight.short=ADT -America/St_Barthelemy.generic.short=AT -America/St_Barthelemy.standard.short=AST -America/St_Johns.daylight.short=NDT -America/St_Johns.generic.short=NT -America/St_Johns.standard.short=NST -America/St_Kitts.daylight.short=ADT -America/St_Kitts.generic.short=AT -America/St_Kitts.standard.short=AST -America/St_Lucia.daylight.short=ADT -America/St_Lucia.generic.short=AT -America/St_Lucia.standard.short=AST -America/St_Thomas.daylight.short=ADT -America/St_Thomas.generic.short=AT -America/St_Thomas.standard.short=AST -America/St_Vincent.daylight.short=ADT -America/St_Vincent.generic.short=AT -America/St_Vincent.standard.short=AST -America/Swift_Current.daylight.short=CDT -America/Swift_Current.generic.short=CT -America/Swift_Current.standard.short=CST -America/Tegucigalpa.daylight.short=CDT -America/Tegucigalpa.generic.short=CT -America/Tegucigalpa.standard.short=CST -America/Thule.daylight.short=ADT -America/Thule.generic.short=AT -America/Thule.standard.short=AST -America/Thunder_Bay.daylight.short=EDT -America/Thunder_Bay.generic.short=ET -America/Thunder_Bay.standard.short=EST -America/Tijuana.daylight.short=PDT -America/Tijuana.generic.short=PT -America/Tijuana.standard.short=PST -America/Toronto.daylight.short=EDT -America/Toronto.generic.short=ET -America/Toronto.standard.short=EST -America/Tortola.daylight.short=ADT -America/Tortola.generic.short=AT -America/Tortola.standard.short=AST -America/Vancouver.daylight.short=PDT -America/Vancouver.generic.short=PT -America/Vancouver.standard.short=PST -America/Virgin.daylight.short=ADT -America/Virgin.generic.short=AT -America/Virgin.standard.short=AST -America/Whitehorse.daylight.short=PDT -America/Whitehorse.generic.short=PT -America/Whitehorse.standard.short=PST -America/Winnipeg.daylight.short=CDT -America/Winnipeg.generic.short=CT -America/Winnipeg.standard.short=CST -America/Yakutat.daylight.short=AKDT -America/Yakutat.generic.short=AKT -America/Yakutat.standard.short=AKST -America/Yellowknife.daylight.short=MDT -America/Yellowknife.generic.short=MT -America/Yellowknife.standard.short=MST -Antarctica/Casey.daylight.short=WST -Antarctica/Casey.generic.short=WT -Antarctica/Casey.standard.short=WST -Antarctica/Davis.daylight.short=DAVST -Antarctica/Davis.generic.short=DAVT -Antarctica/Davis.standard.short=DAVT -Antarctica/DumontDUrville.daylight.short=DDUST -Antarctica/DumontDUrville.generic.short=DDUT -Antarctica/DumontDUrville.standard.short=DDUT -Antarctica/Macquarie.daylight.short=MIST -Antarctica/Macquarie.generic.short=MIST -Antarctica/Macquarie.standard.short=MIST -Antarctica/Mawson.daylight.short=MAWST -Antarctica/Mawson.generic.short=MAWT -Antarctica/Mawson.standard.short=MAWT -Antarctica/McMurdo.daylight.short=NZDT -Antarctica/McMurdo.generic.short=NZT -Antarctica/McMurdo.standard.short=NZST -Antarctica/Palmer.daylight.short=CLST -Antarctica/Palmer.generic.short=CLT -Antarctica/Palmer.standard.short=CLT -Antarctica/Rothera.daylight.short=ROTST -Antarctica/Rothera.generic.short=ROTT -Antarctica/Rothera.standard.short=ROTT -Antarctica/South_Pole.daylight.short=NZDT -Antarctica/South_Pole.generic.short=NZT -Antarctica/South_Pole.standard.short=NZST -Antarctica/Syowa.daylight.short=SYOST -Antarctica/Syowa.generic.short=SYOT -Antarctica/Syowa.standard.short=SYOT -Antarctica/Vostok.daylight.short=VOSST -Antarctica/Vostok.generic.short=VOST -Antarctica/Vostok.standard.short=VOST -Arctic/Longyearbyen.daylight.short=CEST -Arctic/Longyearbyen.generic.short=CET -Arctic/Longyearbyen.standard.short=CET -ART.daylight.short=EEST -ART.generic.short=EET -ART.standard.short=EET -Asia/Aden.daylight.short=ADT -Asia/Aden.generic.short=AT -Asia/Aden.standard.short=AST -Asia/Almaty.daylight.short=ALMST -Asia/Almaty.generic.short=ALMT -Asia/Almaty.standard.short=ALMT -Asia/Amman.daylight.short=ADT -Asia/Amman.generic.short=AT -Asia/Amman.standard.short=AST -Asia/Anadyr.daylight.short=ANAST -Asia/Anadyr.generic.short=ANAT -Asia/Anadyr.standard.short=ANAT -Asia/Aqtau.daylight.short=AQTST -Asia/Aqtau.generic.short=AQTT -Asia/Aqtau.standard.short=AQTT -Asia/Aqtobe.daylight.short=AQTST -Asia/Aqtobe.generic.short=AQTT -Asia/Aqtobe.standard.short=AQTT -Asia/Ashgabat.daylight.short=TMST -Asia/Ashgabat.generic.short=TMT -Asia/Ashgabat.standard.short=TMT -Asia/Ashkhabad.daylight.short=TMST -Asia/Ashkhabad.generic.short=TMT -Asia/Ashkhabad.standard.short=TMT -Asia/Baghdad.daylight.short=ADT -Asia/Baghdad.generic.short=AT -Asia/Baghdad.standard.short=AST -Asia/Bahrain.daylight.short=ADT -Asia/Bahrain.generic.short=AT -Asia/Bahrain.standard.short=AST -Asia/Baku.daylight.short=AZST -Asia/Baku.generic.short=AZT -Asia/Baku.standard.short=AZT -Asia/Bangkok.daylight.short=ICST -Asia/Bangkok.generic.short=ICT -Asia/Bangkok.standard.short=ICT -Asia/Beirut.daylight.short=EEST -Asia/Beirut.generic.short=EET -Asia/Beirut.standard.short=EET -Asia/Bishkek.daylight.short=KGST -Asia/Bishkek.generic.short=KGT -Asia/Bishkek.standard.short=KGT -Asia/Brunei.daylight.short=BNST -Asia/Brunei.generic.short=BNT -Asia/Brunei.standard.short=BNT -Asia/Calcutta.daylight.short=IDT -Asia/Calcutta.generic.short=IT -Asia/Calcutta.standard.short=IST -Asia/Choibalsan.daylight.short=CHOST -Asia/Choibalsan.generic.short=CHOT -Asia/Choibalsan.standard.short=CHOT -Asia/Chongqing.daylight.short=CDT -Asia/Chongqing.generic.short=CT -Asia/Chongqing.standard.short=CST -Asia/Chungking.daylight.short=CDT -Asia/Chungking.generic.short=CT -Asia/Chungking.standard.short=CST -Asia/Colombo.daylight.short=IDT -Asia/Colombo.generic.short=IT -Asia/Colombo.standard.short=IST -Asia/Dacca.daylight.short=BDST -Asia/Dacca.generic.short=BDT -Asia/Dacca.standard.short=BDT -Asia/Damascus.daylight.short=EEST -Asia/Damascus.generic.short=EET -Asia/Damascus.standard.short=EET -Asia/Dhaka.daylight.short=BDST -Asia/Dhaka.generic.short=BDT -Asia/Dhaka.standard.short=BDT -Asia/Dili.daylight.short=TLST -Asia/Dili.generic.short=TLT -Asia/Dili.standard.short=TLT -Asia/Dubai.daylight.short=GDT -Asia/Dubai.generic.short=GT -Asia/Dubai.standard.short=GST -Asia/Dushanbe.daylight.short=TJST -Asia/Dushanbe.generic.short=TJT -Asia/Dushanbe.standard.short=TJT -Asia/Gaza.daylight.short=EEST -Asia/Gaza.generic.short=EET -Asia/Gaza.standard.short=EET -Asia/Harbin.daylight.short=CDT -Asia/Harbin.generic.short=CT -Asia/Harbin.standard.short=CST -Asia/Hebron.daylight.short=EEST -Asia/Hebron.generic.short=EET -Asia/Hebron.standard.short=EET -Asia/Ho_Chi_Minh.daylight.short=ICST -Asia/Ho_Chi_Minh.generic.short=ICT -Asia/Ho_Chi_Minh.standard.short=ICT -Asia/Hong_Kong.daylight.short=HKST -Asia/Hong_Kong.generic.short=HKT -Asia/Hong_Kong.standard.short=HKT -Asia/Hovd.daylight.short=HOVST -Asia/Hovd.generic.short=HOVT -Asia/Hovd.standard.short=HOVT -Asia/Irkutsk.daylight.short=IRKST -Asia/Irkutsk.generic.short=IRKT -Asia/Irkutsk.standard.short=IRKT -Asia/Istanbul.daylight.short=EEST -Asia/Istanbul.generic.short=EET -Asia/Istanbul.standard.short=EET -Asia/Jakarta.daylight.short=WIST -Asia/Jakarta.generic.short=WIB -Asia/Jakarta.standard.short=WIB -Asia/Jayapura.daylight.short=EIST -Asia/Jayapura.generic.short=WIT -Asia/Jayapura.standard.short=WIT -Asia/Jerusalem.daylight.short=IDT -Asia/Jerusalem.generic.short=IT -Asia/Jerusalem.standard.short=IST -Asia/Kabul.daylight.short=AFST -Asia/Kabul.generic.short=AFT -Asia/Kabul.standard.short=AFT -Asia/Kamchatka.daylight.short=PETST -Asia/Kamchatka.generic.short=PETT -Asia/Kamchatka.standard.short=PETT -Asia/Karachi.daylight.short=PKST -Asia/Karachi.generic.short=PKT -Asia/Karachi.standard.short=PKT -Asia/Kashgar.daylight.short=CDT -Asia/Kashgar.generic.short=CT -Asia/Kashgar.standard.short=CST -Asia/Kathmandu.daylight.short=NPST -Asia/Kathmandu.generic.short=NPT -Asia/Kathmandu.standard.short=NPT -Asia/Katmandu.daylight.short=NPST -Asia/Katmandu.generic.short=NPT -Asia/Katmandu.standard.short=NPT -Asia/Khandyga.daylight.short=YAKST -Asia/Khandyga.generic.short=YAKT -Asia/Khandyga.standard.short=YAKT -Asia/Kolkata.daylight.short=IDT -Asia/Kolkata.generic.short=IT -Asia/Kolkata.standard.short=IST -Asia/Krasnoyarsk.daylight.short=KRAST -Asia/Krasnoyarsk.generic.short=KRAT -Asia/Krasnoyarsk.standard.short=KRAT -Asia/Kuala_Lumpur.daylight.short=MYST -Asia/Kuala_Lumpur.generic.short=MYT -Asia/Kuala_Lumpur.standard.short=MYT -Asia/Kuching.daylight.short=MYST -Asia/Kuching.generic.short=MYT -Asia/Kuching.standard.short=MYT -Asia/Kuwait.daylight.short=ADT -Asia/Kuwait.generic.short=AT -Asia/Kuwait.standard.short=AST -Asia/Macao.daylight.short=CDT -Asia/Macao.generic.short=CT -Asia/Macao.standard.short=CST -Asia/Macau.daylight.short=CDT -Asia/Macau.generic.short=CT -Asia/Macau.standard.short=CST -Asia/Magadan.daylight.short=MAGST -Asia/Magadan.generic.short=MAGT -Asia/Magadan.standard.short=MAGT -Asia/Makassar.daylight.short=CIST -Asia/Makassar.generic.short=WITA -Asia/Makassar.standard.short=WITA -Asia/Manila.daylight.short=PHST -Asia/Manila.generic.short=PHT -Asia/Manila.standard.short=PHT -Asia/Muscat.daylight.short=GDT -Asia/Muscat.generic.short=GT -Asia/Muscat.standard.short=GST -Asia/Nicosia.daylight.short=EEST -Asia/Nicosia.generic.short=EET -Asia/Nicosia.standard.short=EET -Asia/Novokuznetsk.daylight.short=NOVST -Asia/Novokuznetsk.generic.short=NOVT -Asia/Novokuznetsk.standard.short=NOVT -Asia/Novosibirsk.daylight.short=NOVST -Asia/Novosibirsk.generic.short=NOVT -Asia/Novosibirsk.standard.short=NOVT -Asia/Omsk.daylight.short=OMSST -Asia/Omsk.generic.short=OMST -Asia/Omsk.standard.short=OMST -Asia/Oral.daylight.short=ORAST -Asia/Oral.generic.short=ORAT -Asia/Oral.standard.short=ORAT -Asia/Phnom_Penh.daylight.short=ICST -Asia/Phnom_Penh.generic.short=ICT -Asia/Phnom_Penh.standard.short=ICT -Asia/Pontianak.daylight.short=WIST -Asia/Pontianak.generic.short=WIB -Asia/Pontianak.standard.short=WIB -Asia/Pyongyang.daylight.short=KDT -Asia/Pyongyang.generic.short=KT -Asia/Pyongyang.standard.short=KST -Asia/Qatar.daylight.short=ADT -Asia/Qatar.generic.short=AT -Asia/Qatar.standard.short=AST -Asia/Qyzylorda.daylight.short=QYZST -Asia/Qyzylorda.generic.short=QYZT -Asia/Qyzylorda.standard.short=QYZT -Asia/Rangoon.daylight.short=MMST -Asia/Rangoon.generic.short=MMT -Asia/Rangoon.standard.short=MMT -Asia/Saigon.daylight.short=ICST -Asia/Saigon.generic.short=ICT -Asia/Saigon.standard.short=ICT -Asia/Sakhalin.daylight.short=SAKST -Asia/Sakhalin.generic.short=SAKT -Asia/Sakhalin.standard.short=SAKT -Asia/Samarkand.daylight.short=UZST -Asia/Samarkand.generic.short=UZT -Asia/Samarkand.standard.short=UZT -Asia/Seoul.daylight.short=KDT -Asia/Seoul.generic.short=KT -Asia/Seoul.standard.short=KST -Asia/Shanghai.daylight.short=CDT -Asia/Shanghai.generic.short=CT -Asia/Shanghai.standard.short=CST -Asia/Singapore.daylight.short=SGST -Asia/Singapore.generic.short=SGT -Asia/Singapore.standard.short=SGT -Asia/Taipei.daylight.short=CDT -Asia/Taipei.generic.short=CT -Asia/Taipei.standard.short=CST -Asia/Tashkent.daylight.short=UZST -Asia/Tashkent.generic.short=UZT -Asia/Tashkent.standard.short=UZT -Asia/Tbilisi.daylight.short=GEST -Asia/Tbilisi.generic.short=GET -Asia/Tbilisi.standard.short=GET -Asia/Tehran.daylight.short=IRDT -Asia/Tehran.generic.short=IRT -Asia/Tehran.standard.short=IRST -Asia/Tel_Aviv.daylight.short=IDT -Asia/Tel_Aviv.generic.short=IT -Asia/Tel_Aviv.standard.short=IST -Asia/Thimbu.daylight.short=BTST -Asia/Thimbu.generic.short=BTT -Asia/Thimbu.standard.short=BTT -Asia/Thimphu.daylight.short=BTST -Asia/Thimphu.generic.short=BTT -Asia/Thimphu.standard.short=BTT -Asia/Tokyo.daylight.short=JDT -Asia/Tokyo.generic.short=JT -Asia/Tokyo.standard.short=JST -Asia/Ujung_Pandang.daylight.short=CIST -Asia/Ujung_Pandang.generic.short=WITA -Asia/Ujung_Pandang.standard.short=WITA -Asia/Ulaanbaatar.daylight.short=ULAST -Asia/Ulaanbaatar.generic.short=ULAT -Asia/Ulaanbaatar.standard.short=ULAT -Asia/Ulan_Bator.daylight.short=ULAST -Asia/Ulan_Bator.generic.short=ULAT -Asia/Ulan_Bator.standard.short=ULAT -Asia/Urumqi.daylight.short=CDT -Asia/Urumqi.generic.short=CT -Asia/Urumqi.standard.short=CST -Asia/Ust-Nera.daylight.short=VLAST -Asia/Ust-Nera.generic.short=VLAT -Asia/Ust-Nera.standard.short=VLAT -Asia/Vientiane.daylight.short=ICST -Asia/Vientiane.generic.short=ICT -Asia/Vientiane.standard.short=ICT -Asia/Vladivostok.daylight.short=VLAST -Asia/Vladivostok.generic.short=VLAT -Asia/Vladivostok.standard.short=VLAT -Asia/Yakutsk.daylight.short=YAKST -Asia/Yakutsk.generic.short=YAKT -Asia/Yakutsk.standard.short=YAKT -Asia/Yekaterinburg.daylight.short=YEKST -Asia/Yekaterinburg.generic.short=YEKT -Asia/Yekaterinburg.standard.short=YEKT -Asia/Yerevan.daylight.short=AMST -Asia/Yerevan.generic.short=AMT -Asia/Yerevan.standard.short=AMT -AST.daylight.short=AKDT -AST.generic.short=AKT -AST.standard.short=AKST -Atlantic/Azores.daylight.short=AZOST -Atlantic/Azores.generic.short=AZOT -Atlantic/Azores.standard.short=AZOT -Atlantic/Bermuda.daylight.short=ADT -Atlantic/Bermuda.generic.short=AT -Atlantic/Bermuda.standard.short=AST -Atlantic/Canary.daylight.short=WEST -Atlantic/Canary.generic.short=WET -Atlantic/Canary.standard.short=WET -Atlantic/Cape_Verde.daylight.short=CVST -Atlantic/Cape_Verde.generic.short=CVT -Atlantic/Cape_Verde.standard.short=CVT -Atlantic/Faeroe.daylight.short=WEST -Atlantic/Faeroe.generic.short=WET -Atlantic/Faeroe.standard.short=WET -Atlantic/Faroe.daylight.short=WEST -Atlantic/Faroe.generic.short=WET -Atlantic/Faroe.standard.short=WET -Atlantic/Jan_Mayen.daylight.short=CEST -Atlantic/Jan_Mayen.generic.short=CET -Atlantic/Jan_Mayen.standard.short=CET -Atlantic/Madeira.daylight.short=WEST -Atlantic/Madeira.generic.short=WET -Atlantic/Madeira.standard.short=WET -Atlantic/Reykjavik.daylight.short=GMT -Atlantic/Reykjavik.generic.short=GMT -Atlantic/Reykjavik.standard.short=GMT -Atlantic/South_Georgia.daylight.short=GDT -Atlantic/South_Georgia.generic.short=GT -Atlantic/South_Georgia.standard.short=GST -Atlantic/Stanley.daylight.short=FKST -Atlantic/Stanley.generic.short=FKT -Atlantic/Stanley.standard.short=FKT -Atlantic/St_Helena.daylight.short=GMT -Atlantic/St_Helena.generic.short=GMT -Atlantic/St_Helena.standard.short=GMT -Australia/ACT.daylight.short=EST -Australia/ACT.generic.short=ET -Australia/ACT.standard.short=EST -Australia/Adelaide.daylight.short=CST -Australia/Adelaide.generic.short=CT -Australia/Adelaide.standard.short=CST -Australia/Brisbane.daylight.short=EST -Australia/Brisbane.generic.short=ET -Australia/Brisbane.standard.short=EST -Australia/Broken_Hill.daylight.short=CST -Australia/Broken_Hill.generic.short=CT -Australia/Broken_Hill.standard.short=CST -Australia/Canberra.daylight.short=EST -Australia/Canberra.generic.short=ET -Australia/Canberra.standard.short=EST -Australia/Currie.daylight.short=EST -Australia/Currie.generic.short=ET -Australia/Currie.standard.short=EST -Australia/Darwin.daylight.short=CST -Australia/Darwin.generic.short=CT -Australia/Darwin.standard.short=CST -Australia/Eucla.daylight.short=CWST -Australia/Eucla.generic.short=CWT -Australia/Eucla.standard.short=CWST -Australia/Hobart.daylight.short=EST -Australia/Hobart.generic.short=ET -Australia/Hobart.standard.short=EST -Australia/LHI.daylight.short=LHST -Australia/LHI.generic.short=LHT -Australia/LHI.standard.short=LHST -Australia/Lindeman.daylight.short=EST -Australia/Lindeman.generic.short=ET -Australia/Lindeman.standard.short=EST -Australia/Lord_Howe.daylight.short=LHST -Australia/Lord_Howe.generic.short=LHT -Australia/Lord_Howe.standard.short=LHST -Australia/Melbourne.daylight.short=EST -Australia/Melbourne.generic.short=ET -Australia/Melbourne.standard.short=EST -Australia/North.daylight.short=CST -Australia/North.generic.short=CT -Australia/North.standard.short=CST -Australia/NSW.daylight.short=EST -Australia/NSW.generic.short=ET -Australia/NSW.standard.short=EST -Australia/Perth.daylight.short=WST -Australia/Perth.generic.short=WT -Australia/Perth.standard.short=WST -Australia/Queensland.daylight.short=EST -Australia/Queensland.generic.short=ET -Australia/Queensland.standard.short=EST -Australia/South.daylight.short=CST -Australia/South.generic.short=CT -Australia/South.standard.short=CST -Australia/Sydney.daylight.short=EST -Australia/Sydney.generic.short=ET -Australia/Sydney.standard.short=EST -Australia/Tasmania.daylight.short=EST -Australia/Tasmania.generic.short=ET -Australia/Tasmania.standard.short=EST -Australia/Victoria.daylight.short=EST -Australia/Victoria.generic.short=ET -Australia/Victoria.standard.short=EST -Australia/West.daylight.short=WST -Australia/West.generic.short=WT -Australia/West.standard.short=WST -Australia/Yancowinna.daylight.short=CST -Australia/Yancowinna.generic.short=CT -Australia/Yancowinna.standard.short=CST -BET.daylight.short=BRST -BET.generic.short=BRT -BET.standard.short=BRT -Brazil/Acre.daylight.short=ACST -Brazil/Acre.generic.short=ACT -Brazil/Acre.standard.short=ACT -Brazil/DeNoronha.daylight.short=FNST -Brazil/DeNoronha.generic.short=FNT -Brazil/DeNoronha.standard.short=FNT -Brazil/East.daylight.short=BRST -Brazil/East.generic.short=BRT -Brazil/East.standard.short=BRT -Brazil/West.daylight.short=AMST -Brazil/West.generic.short=AMT -Brazil/West.standard.short=AMT -BST.daylight.short=BDST -BST.generic.short=BDT -BST.standard.short=BDT -Canada/Atlantic.daylight.short=ADT -Canada/Atlantic.generic.short=AT -Canada/Atlantic.standard.short=AST -Canada/Central.daylight.short=CDT -Canada/Central.generic.short=CT -Canada/Central.standard.short=CST -Canada/Eastern.daylight.short=EDT -Canada/Eastern.generic.short=ET -Canada/Eastern.standard.short=EST -Canada/East-Saskatchewan.daylight.short=CDT -Canada/East-Saskatchewan.generic.short=CT -Canada/East-Saskatchewan.standard.short=CST -Canada/Mountain.daylight.short=MDT -Canada/Mountain.generic.short=MT -Canada/Mountain.standard.short=MST -Canada/Newfoundland.daylight.short=NDT -Canada/Newfoundland.generic.short=NT -Canada/Newfoundland.standard.short=NST -Canada/Pacific.daylight.short=PDT -Canada/Pacific.generic.short=PT -Canada/Pacific.standard.short=PST -Canada/Saskatchewan.daylight.short=CDT -Canada/Saskatchewan.generic.short=CT -Canada/Saskatchewan.standard.short=CST -Canada/Yukon.daylight.short=PDT -Canada/Yukon.generic.short=PT -Canada/Yukon.standard.short=PST -CAT.daylight.short=CAST -CAT.generic.short=CAT -CAT.standard.short=CAT -CET.daylight.short=CEST -CET.generic.short=CET -CET.standard.short=CET -Chile/Continental.daylight.short=CLST -Chile/Continental.generic.short=CLT -Chile/Continental.standard.short=CLT -Chile/EasterIsland.daylight.short=EASST -Chile/EasterIsland.generic.short=EAST -Chile/EasterIsland.standard.short=EAST -CNT.daylight.short=NDT -CNT.generic.short=NT -CNT.standard.short=NST -CST6CDT.daylight.short=CDT -CST6CDT.generic.short=CT -CST6CDT.standard.short=CST -CST.daylight.short=CDT -CST.generic.short=CT -CST.standard.short=CST -CTT.daylight.short=CDT -CTT.generic.short=CT -CTT.standard.short=CST -Cuba.daylight.short=CDT -Cuba.generic.short=CT -Cuba.standard.short=CST -EAT.daylight.short=EAST -EAT.generic.short=EAT -EAT.standard.short=EAT -ECT.daylight.short=CEST -ECT.generic.short=CET -ECT.standard.short=CET -EET.daylight.short=EEST -EET.generic.short=EET -EET.standard.short=EET -Egypt.daylight.short=EEST -Egypt.generic.short=EET -Egypt.standard.short=EET -Eire.daylight.short=IST -Eire.generic.short=IT -Eire.standard.short=GMT -EST5EDT.daylight.short=EDT -EST5EDT.generic.short=ET -EST5EDT.standard.short=EST -EST.daylight.short=EDT -EST.generic.short=ET -EST.standard.short=EST -Etc/Greenwich.daylight.short=GMT -Etc/Greenwich.generic.short=GMT -Etc/Greenwich.standard.short=GMT -Etc/UCT.daylight.short=UTC -Etc/UCT.generic.short=UTC -Etc/UCT.standard.short=UTC -Etc/Universal.daylight.short=UTC -Etc/Universal.generic.short=UTC -Etc/Universal.standard.short=UTC -Etc/UTC.daylight.short=UTC -Etc/UTC.generic.short=UTC -Etc/UTC.standard.short=UTC -Etc/Zulu.daylight.short=UTC -Etc/Zulu.generic.short=UTC -Etc/Zulu.standard.short=UTC -Europe/Amsterdam.daylight.short=CEST -Europe/Amsterdam.generic.short=CET -Europe/Amsterdam.standard.short=CET -Europe/Andorra.daylight.short=CEST -Europe/Andorra.generic.short=CET -Europe/Andorra.standard.short=CET -Europe/Athens.daylight.short=EEST -Europe/Athens.generic.short=EET -Europe/Athens.standard.short=EET -Europe/Belfast.daylight.short=BST -Europe/Belfast.generic.short=BT -Europe/Belfast.standard.short=GMT -Europe/Belgrade.daylight.short=CEST -Europe/Belgrade.generic.short=CET -Europe/Belgrade.standard.short=CET -Europe/Berlin.daylight.short=CEST -Europe/Berlin.generic.short=CET -Europe/Berlin.standard.short=CET -Europe/Bratislava.daylight.short=CEST -Europe/Bratislava.generic.short=CET -Europe/Bratislava.standard.short=CET -Europe/Brussels.daylight.short=CEST -Europe/Brussels.generic.short=CET -Europe/Brussels.standard.short=CET -Europe/Bucharest.daylight.short=EEST -Europe/Bucharest.generic.short=EET -Europe/Bucharest.standard.short=EET -Europe/Budapest.daylight.short=CEST -Europe/Budapest.generic.short=CET -Europe/Budapest.standard.short=CET -Europe/Busingen.daylight.short=CEST -Europe/Busingen.generic.short=CET -Europe/Busingen.standard.short=CET -Europe/Chisinau.daylight.short=EEST -Europe/Chisinau.generic.short=EET -Europe/Chisinau.standard.short=EET -Europe/Copenhagen.daylight.short=CEST -Europe/Copenhagen.generic.short=CET -Europe/Copenhagen.standard.short=CET -Europe/Dublin.daylight.short=IST -Europe/Dublin.generic.short=IT -Europe/Dublin.standard.short=GMT -Europe/Gibraltar.daylight.short=CEST -Europe/Gibraltar.generic.short=CET -Europe/Gibraltar.standard.short=CET -Europe/Guernsey.daylight.short=BST -Europe/Guernsey.generic.short=BT -Europe/Guernsey.standard.short=GMT -Europe/Helsinki.daylight.short=EEST -Europe/Helsinki.generic.short=EET -Europe/Helsinki.standard.short=EET -Europe/Isle_of_Man.daylight.short=BST -Europe/Isle_of_Man.generic.short=BT -Europe/Isle_of_Man.standard.short=GMT -Europe/Istanbul.daylight.short=EEST -Europe/Istanbul.generic.short=EET -Europe/Istanbul.standard.short=EET -Europe/Jersey.daylight.short=BST -Europe/Jersey.generic.short=BT -Europe/Jersey.standard.short=GMT -Europe/Kaliningrad.daylight.short=FEST -Europe/Kaliningrad.generic.short=FET -Europe/Kaliningrad.standard.short=FET -Europe/Kiev.daylight.short=EEST -Europe/Kiev.generic.short=EET -Europe/Kiev.standard.short=EET -Europe/Lisbon.daylight.short=WEST -Europe/Lisbon.generic.short=WET -Europe/Lisbon.standard.short=WET -Europe/Ljubljana.daylight.short=CEST -Europe/Ljubljana.generic.short=CET -Europe/Ljubljana.standard.short=CET -Europe/London.daylight.short=BST -Europe/London.generic.short=BT -Europe/London.standard.short=GMT -Europe/Luxembourg.daylight.short=CEST -Europe/Luxembourg.generic.short=CET -Europe/Luxembourg.standard.short=CET -Europe/Madrid.daylight.short=CEST -Europe/Madrid.generic.short=CET -Europe/Madrid.standard.short=CET -Europe/Malta.daylight.short=CEST -Europe/Malta.generic.short=CET -Europe/Malta.standard.short=CET -Europe/Mariehamn.daylight.short=EEST -Europe/Mariehamn.generic.short=EET -Europe/Mariehamn.standard.short=EET -Europe/Minsk.daylight.short=FEST -Europe/Minsk.generic.short=FET -Europe/Minsk.standard.short=FET -Europe/Monaco.daylight.short=CEST -Europe/Monaco.generic.short=CET -Europe/Monaco.standard.short=CET -Europe/Moscow.daylight.short=MSD -Europe/Moscow.generic.short=MT -Europe/Moscow.standard.short=MSK -Europe/Nicosia.daylight.short=EEST -Europe/Nicosia.generic.short=EET -Europe/Nicosia.standard.short=EET -Europe/Oslo.daylight.short=CEST -Europe/Oslo.generic.short=CET -Europe/Oslo.standard.short=CET -Europe/Paris.daylight.short=CEST -Europe/Paris.generic.short=CET -Europe/Paris.standard.short=CET -Europe/Podgorica.daylight.short=CEST -Europe/Podgorica.generic.short=CET -Europe/Podgorica.standard.short=CET -Europe/Prague.daylight.short=CEST -Europe/Prague.generic.short=CET -Europe/Prague.standard.short=CET -Europe/Riga.daylight.short=EEST -Europe/Riga.generic.short=EET -Europe/Riga.standard.short=EET -Europe/Rome.daylight.short=CEST -Europe/Rome.generic.short=CET -Europe/Rome.standard.short=CET -Europe/Samara.daylight.short=SAMST -Europe/Samara.generic.short=SAMT -Europe/Samara.standard.short=SAMT -Europe/San_Marino.daylight.short=CEST -Europe/San_Marino.generic.short=CET -Europe/San_Marino.standard.short=CET -Europe/Sarajevo.daylight.short=CEST -Europe/Sarajevo.generic.short=CET -Europe/Sarajevo.standard.short=CET -Europe/Simferopol.daylight.short=EEST -Europe/Simferopol.generic.short=EET -Europe/Simferopol.standard.short=EET -Europe/Skopje.daylight.short=CEST -Europe/Skopje.generic.short=CET -Europe/Skopje.standard.short=CET -Europe/Sofia.daylight.short=EEST -Europe/Sofia.generic.short=EET -Europe/Sofia.standard.short=EET -Europe/Stockholm.daylight.short=CEST -Europe/Stockholm.generic.short=CET -Europe/Stockholm.standard.short=CET -Europe/Tallinn.daylight.short=EEST -Europe/Tallinn.generic.short=EET -Europe/Tallinn.standard.short=EET -Europe/Tirane.daylight.short=CEST -Europe/Tirane.generic.short=CET -Europe/Tirane.standard.short=CET -Europe/Tiraspol.daylight.short=EEST -Europe/Tiraspol.generic.short=EET -Europe/Tiraspol.standard.short=EET -Europe/Uzhgorod.daylight.short=EEST -Europe/Uzhgorod.generic.short=EET -Europe/Uzhgorod.standard.short=EET -Europe/Vaduz.daylight.short=CEST -Europe/Vaduz.generic.short=CET -Europe/Vaduz.standard.short=CET -Europe/Vatican.daylight.short=CEST -Europe/Vatican.generic.short=CET -Europe/Vatican.standard.short=CET -Europe/Vienna.daylight.short=CEST -Europe/Vienna.generic.short=CET -Europe/Vienna.standard.short=CET -Europe/Vilnius.daylight.short=EEST -Europe/Vilnius.generic.short=EET -Europe/Vilnius.standard.short=EET -Europe/Volgograd.daylight.short=VOLST -Europe/Volgograd.generic.short=VOLT -Europe/Volgograd.standard.short=VOLT -Europe/Warsaw.daylight.short=CEST -Europe/Warsaw.generic.short=CET -Europe/Warsaw.standard.short=CET -Europe/Zagreb.daylight.short=CEST -Europe/Zagreb.generic.short=CET -Europe/Zagreb.standard.short=CET -Europe/Zaporozhye.daylight.short=EEST -Europe/Zaporozhye.generic.short=EET -Europe/Zaporozhye.standard.short=EET -Europe/Zurich.daylight.short=CEST -Europe/Zurich.generic.short=CET -Europe/Zurich.standard.short=CET -GB.daylight.short=BST -GB-Eire.daylight.short=BST -GB-Eire.generic.short=BT -GB-Eire.standard.short=GMT -GB.generic.short=BT -GB.standard.short=GMT -GMT.daylight.short=GMT -GMT.generic.short=GMT -GMT.standard.short=GMT -Greenwich.daylight.short=GMT -Greenwich.generic.short=GMT -Greenwich.standard.short=GMT -Hongkong.daylight.short=HKST -Hongkong.generic.short=HKT -Hongkong.standard.short=HKT -HST.daylight.short=HDT -HST.generic.short=HT -HST.standard.short=HST -Iceland.daylight.short=GMT -Iceland.generic.short=GMT -Iceland.standard.short=GMT -IET.daylight.short=EDT -IET.generic.short=ET -IET.standard.short=EST -Indian/Antananarivo.daylight.short=EAST -Indian/Antananarivo.generic.short=EAT -Indian/Antananarivo.standard.short=EAT -Indian/Chagos.daylight.short=IOST -Indian/Chagos.generic.short=IOT -Indian/Chagos.standard.short=IOT -Indian/Christmas.daylight.short=CXST -Indian/Christmas.generic.short=CIT -Indian/Christmas.standard.short=CXT -Indian/Cocos.daylight.short=CCST -Indian/Cocos.generic.short=CCT -Indian/Cocos.standard.short=CCT -Indian/Comoro.daylight.short=EAST -Indian/Comoro.generic.short=EAT -Indian/Comoro.standard.short=EAT -Indian/Kerguelen.daylight.short=TFST -Indian/Kerguelen.generic.short=TFT -Indian/Kerguelen.standard.short=TFT -Indian/Mahe.daylight.short=SCST -Indian/Mahe.generic.short=SCT -Indian/Mahe.standard.short=SCT -Indian/Maldives.daylight.short=MVST -Indian/Maldives.generic.short=MVT -Indian/Maldives.standard.short=MVT -Indian/Mauritius.daylight.short=MUST -Indian/Mauritius.generic.short=MUT -Indian/Mauritius.standard.short=MUT -Indian/Mayotte.daylight.short=EAST -Indian/Mayotte.generic.short=EAT -Indian/Mayotte.standard.short=EAT -Indian/Reunion.daylight.short=REST -Indian/Reunion.generic.short=RET -Indian/Reunion.standard.short=RET -Iran.daylight.short=IRDT -Iran.generic.short=IRT -Iran.standard.short=IRST -Israel.daylight.short=IDT -Israel.generic.short=IT -Israel.standard.short=IST -IST.daylight.short=IDT -IST.generic.short=IT -IST.standard.short=IST -Jamaica.daylight.short=EDT -Jamaica.generic.short=ET -Jamaica.standard.short=EST -Japan.daylight.short=JDT -Japan.generic.short=JT -Japan.standard.short=JST -JST.daylight.short=JDT -JST.generic.short=JT -JST.standard.short=JST -Kwajalein.daylight.short=MHST -Kwajalein.generic.short=MHT -Kwajalein.standard.short=MHT -Libya.daylight.short=EEST -Libya.generic.short=EET -Libya.standard.short=EET -MET.daylight.short=MEST -MET.generic.short=MET -MET.standard.short=MET -Mexico/BajaNorte.daylight.short=PDT -Mexico/BajaNorte.generic.short=PT -Mexico/BajaNorte.standard.short=PST -Mexico/BajaSur.daylight.short=MDT -Mexico/BajaSur.generic.short=MT -Mexico/BajaSur.standard.short=MST -Mexico/General.daylight.short=CDT -Mexico/General.generic.short=CT -Mexico/General.standard.short=CST -MIT.daylight.short=WSDT -MIT.generic.short=WST -MIT.standard.short=WST -MST7MDT.daylight.short=MDT -MST7MDT.generic.short=MT -MST7MDT.standard.short=MST -MST.daylight.short=MDT -MST.generic.short=MT -MST.standard.short=MST -Navajo.daylight.short=MDT -Navajo.generic.short=MT -Navajo.standard.short=MST -NET.daylight.short=AMST -NET.generic.short=AMT -NET.standard.short=AMT -NST.daylight.short=NZDT -NST.generic.short=NZT -NST.standard.short=NZST -NZ-CHAT.daylight.short=CHADT -NZ-CHAT.generic.short=CHAT -NZ-CHAT.standard.short=CHAST -NZ.daylight.short=NZDT -NZ.generic.short=NZT -NZ.standard.short=NZST -Pacific/Apia.daylight.short=WSDT -Pacific/Apia.generic.short=WST -Pacific/Apia.standard.short=WST -Pacific/Auckland.daylight.short=NZDT -Pacific/Auckland.generic.short=NZT -Pacific/Auckland.standard.short=NZST -Pacific/Chatham.daylight.short=CHADT -Pacific/Chatham.generic.short=CHAT -Pacific/Chatham.standard.short=CHAST -Pacific/Chuuk.daylight.short=CHUST -Pacific/Chuuk.generic.short=CHUT -Pacific/Chuuk.standard.short=CHUT -Pacific/Easter.daylight.short=EASST -Pacific/Easter.generic.short=EAST -Pacific/Easter.standard.short=EAST -Pacific/Efate.daylight.short=VUST -Pacific/Efate.generic.short=VUT -Pacific/Efate.standard.short=VUT -Pacific/Enderbury.daylight.short=PHOST -Pacific/Enderbury.generic.short=PHOT -Pacific/Enderbury.standard.short=PHOT -Pacific/Fakaofo.daylight.short=TKST -Pacific/Fakaofo.generic.short=TKT -Pacific/Fakaofo.standard.short=TKT -Pacific/Fiji.daylight.short=FJST -Pacific/Fiji.generic.short=FJT -Pacific/Fiji.standard.short=FJT -Pacific/Funafuti.daylight.short=TVST -Pacific/Funafuti.generic.short=TVT -Pacific/Funafuti.standard.short=TVT -Pacific/Galapagos.daylight.short=GALST -Pacific/Galapagos.generic.short=GALT -Pacific/Galapagos.standard.short=GALT -Pacific/Gambier.daylight.short=GAMST -Pacific/Gambier.generic.short=GAMT -Pacific/Gambier.standard.short=GAMT -Pacific/Guadalcanal.daylight.short=SBST -Pacific/Guadalcanal.generic.short=SBT -Pacific/Guadalcanal.standard.short=SBT -Pacific/Guam.daylight.short=ChDT -Pacific/Guam.generic.short=ChT -Pacific/Guam.standard.short=ChST -Pacific/Honolulu.daylight.short=HDT -Pacific/Honolulu.generic.short=HT -Pacific/Honolulu.standard.short=HST -Pacific/Johnston.daylight.short=HDT -Pacific/Johnston.generic.short=HT -Pacific/Johnston.standard.short=HST -Pacific/Kiritimati.daylight.short=LINST -Pacific/Kiritimati.generic.short=LINT -Pacific/Kiritimati.standard.short=LINT -Pacific/Kosrae.daylight.short=KOSST -Pacific/Kosrae.generic.short=KOST -Pacific/Kosrae.standard.short=KOST -Pacific/Kwajalein.daylight.short=MHST -Pacific/Kwajalein.generic.short=MHT -Pacific/Kwajalein.standard.short=MHT -Pacific/Majuro.daylight.short=MHST -Pacific/Majuro.generic.short=MHT -Pacific/Majuro.standard.short=MHT -Pacific/Marquesas.daylight.short=MARST -Pacific/Marquesas.generic.short=MART -Pacific/Marquesas.standard.short=MART -Pacific/Midway.daylight.short=SDT -Pacific/Midway.generic.short=ST -Pacific/Midway.standard.short=SST -Pacific/Nauru.daylight.short=NRST -Pacific/Nauru.generic.short=NRT -Pacific/Nauru.standard.short=NRT -Pacific/Niue.daylight.short=NUST -Pacific/Niue.generic.short=NUT -Pacific/Niue.standard.short=NUT -Pacific/Norfolk.daylight.short=NFST -Pacific/Norfolk.generic.short=NFT -Pacific/Norfolk.standard.short=NFT -Pacific/Noumea.daylight.short=NCST -Pacific/Noumea.generic.short=NCT -Pacific/Noumea.standard.short=NCT -Pacific/Pago_Pago.daylight.short=SDT -Pacific/Pago_Pago.generic.short=ST -Pacific/Pago_Pago.standard.short=SST -Pacific/Palau.daylight.short=PWST -Pacific/Palau.generic.short=PWT -Pacific/Palau.standard.short=PWT -Pacific/Pitcairn.daylight.short=PDT -Pacific/Pitcairn.generic.short=PT -Pacific/Pitcairn.standard.short=PST -Pacific/Pohnpei.daylight.short=PONST -Pacific/Pohnpei.generic.short=PONT -Pacific/Pohnpei.standard.short=PONT -Pacific/Ponape.daylight.short=PONST -Pacific/Ponape.generic.short=PONT -Pacific/Ponape.standard.short=PONT -Pacific/Port_Moresby.daylight.short=PGST -Pacific/Port_Moresby.generic.short=PGT -Pacific/Port_Moresby.standard.short=PGT -Pacific/Rarotonga.daylight.short=CKHST -Pacific/Rarotonga.generic.short=CKT -Pacific/Rarotonga.standard.short=CKT -Pacific/Saipan.daylight.short=ChDT -Pacific/Saipan.generic.short=ChT -Pacific/Saipan.standard.short=ChST -Pacific/Samoa.daylight.short=SDT -Pacific/Samoa.generic.short=ST -Pacific/Samoa.standard.short=SST -Pacific/Tahiti.daylight.short=TAHST -Pacific/Tahiti.generic.short=TAHT -Pacific/Tahiti.standard.short=TAHT -Pacific/Tarawa.daylight.short=GILST -Pacific/Tarawa.generic.short=GILT -Pacific/Tarawa.standard.short=GILT -Pacific/Tongatapu.daylight.short=TOST -Pacific/Tongatapu.generic.short=TOT -Pacific/Tongatapu.standard.short=TOT -Pacific/Truk.daylight.short=CHUST -Pacific/Truk.generic.short=CHUT -Pacific/Truk.standard.short=CHUT -Pacific/Wake.daylight.short=WAKST -Pacific/Wake.generic.short=WAKT -Pacific/Wake.standard.short=WAKT -Pacific/Wallis.daylight.short=WFST -Pacific/Wallis.generic.short=WFT -Pacific/Wallis.standard.short=WFT -Pacific/Yap.daylight.short=CHUST -Pacific/Yap.generic.short=CHUT -Pacific/Yap.standard.short=CHUT -PLT.daylight.short=PKST -PLT.generic.short=PKT -PLT.standard.short=PKT -PNT.daylight.short=MDT -PNT.generic.short=MT -PNT.standard.short=MST -Poland.daylight.short=CEST -Poland.generic.short=CET -Poland.standard.short=CET -Portugal.daylight.short=WEST -Portugal.generic.short=WET -Portugal.standard.short=WET -PRC.daylight.short=CDT -PRC.generic.short=CT -PRC.standard.short=CST -PRT.daylight.short=ADT -PRT.generic.short=AT -PRT.standard.short=AST -PST8PDT.daylight.short=PDT -PST8PDT.generic.short=PT -PST8PDT.standard.short=PST -PST.daylight.short=PDT -PST.generic.short=PT -PST.standard.short=PST -ROK.daylight.short=KDT -ROK.generic.short=KT -ROK.standard.short=KST -Singapore.daylight.short=SGST -Singapore.generic.short=SGT -Singapore.standard.short=SGT -SST.daylight.short=SBST -SST.generic.short=SBT -SST.standard.short=SBT -SystemV/AST4ADT.daylight.short=ADT -SystemV/AST4ADT.generic.short=AT -SystemV/AST4ADT.standard.short=AST -SystemV/AST4.daylight.short=ADT -SystemV/AST4.generic.short=AT -SystemV/AST4.standard.short=AST -SystemV/CST6CDT.daylight.short=CDT -SystemV/CST6CDT.generic.short=CT -SystemV/CST6CDT.standard.short=CST -SystemV/CST6.daylight.short=CDT -SystemV/CST6.generic.short=CT -SystemV/CST6.standard.short=CST -SystemV/EST5.daylight.short=EDT -SystemV/EST5EDT.daylight.short=EDT -SystemV/EST5EDT.generic.short=ET -SystemV/EST5EDT.standard.short=EST -SystemV/EST5.generic.short=ET -SystemV/EST5.standard.short=EST -SystemV/HST10.daylight.short=HDT -SystemV/HST10.generic.short=HT -SystemV/HST10.standard.short=HST -SystemV/MST7.daylight.short=MDT -SystemV/MST7.generic.short=MT -SystemV/MST7MDT.daylight.short=MDT -SystemV/MST7MDT.generic.short=MT -SystemV/MST7MDT.standard.short=MST -SystemV/MST7.standard.short=MST -SystemV/PST8.daylight.short=PDT -SystemV/PST8.generic.short=PT -SystemV/PST8PDT.daylight.short=PDT -SystemV/PST8PDT.generic.short=PT -SystemV/PST8PDT.standard.short=PST -SystemV/PST8.standard.short=PST -SystemV/YST9.daylight.short=AKDT -SystemV/YST9.generic.short=AKT -SystemV/YST9.standard.short=AKST -SystemV/YST9YDT.daylight.short=AKDT -SystemV/YST9YDT.generic.short=AKT -SystemV/YST9YDT.standard.short=AKST -Turkey.daylight.short=EEST -Turkey.generic.short=EET -Turkey.standard.short=EET -UCT.daylight.short=UTC -UCT.generic.short=UTC -UCT.standard.short=UTC -Universal.daylight.short=UTC -Universal.generic.short=UTC -Universal.standard.short=UTC -US/Alaska.daylight.short=AKDT -US/Alaska.generic.short=AKT -US/Alaska.standard.short=AKST -US/Aleutian.daylight.short=HADT -US/Aleutian.generic.short=HAT -US/Aleutian.standard.short=HAST -US/Arizona.daylight.short=MDT -US/Arizona.generic.short=MT -US/Arizona.standard.short=MST -US/Central.daylight.short=CDT -US/Central.generic.short=CT -US/Central.standard.short=CST -US/Eastern.daylight.short=EDT -US/Eastern.generic.short=ET -US/Eastern.standard.short=EST -US/East-Indiana.daylight.short=EDT -US/East-Indiana.generic.short=ET -US/East-Indiana.standard.short=EST -US/Hawaii.daylight.short=HDT -US/Hawaii.generic.short=HT -US/Hawaii.standard.short=HST -US/Indiana-Starke.daylight.short=CDT -US/Indiana-Starke.generic.short=CT -US/Indiana-Starke.standard.short=CST -US/Michigan.daylight.short=EDT -US/Michigan.generic.short=ET -US/Michigan.standard.short=EST -US/Mountain.daylight.short=MDT -US/Mountain.generic.short=MT -US/Mountain.standard.short=MST -US/Pacific.daylight.short=PDT -US/Pacific.generic.short=PT -US/Pacific-New.daylight.short=PDT -US/Pacific-New.generic.short=PT -US/Pacific-New.standard.short=PST -US/Pacific.standard.short=PST -US/Samoa.daylight.short=SDT -US/Samoa.generic.short=ST -US/Samoa.standard.short=SST -UTC.daylight.short=UTC -UTC.generic.short=UTC -UTC.standard.short=UTC -VST.daylight.short=ICST -VST.generic.short=ICT -VST.standard.short=ICT -WET.daylight.short=WEST -WET.generic.short=WET -WET.standard.short=WET -W-SU.daylight.short=MSD -W-SU.generic.short=MT -W-SU.standard.short=MSK -Zulu.daylight.short=UTC -Zulu.generic.short=UTC -Zulu.standard.short=UTC diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_it.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_it.properties deleted file mode 100644 index 6a4c8280ced..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_it.properties +++ /dev/null @@ -1,651 +0,0 @@ -ACT.daylight.long=Ora estiva centrale (Territori del Nord) -ACT.generic.long=Ora fuso centrale (Territori del Nord) -ACT.standard.long=Ora standard centrale (Territori del Nord) -AET.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud) -AET.generic.long=Ora fuso orientale (Nuovo Galles del Sud) -AET.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud) -AGT.generic.long=Ora dell'Argentina -ART.generic.long=Ora dell'Europa orientale -AST.generic.long=Ora Alaska -Africa/Abidjan.generic.long=Ora media di Greenwich -Africa/Accra.generic.long=Ora media del Ghana -Africa/Addis_Ababa.generic.long=Ora dell'Africa orientale -Africa/Algiers.generic.long=Ora dell'Europa centrale -Africa/Asmara.generic.long=Ora dell'Africa orientale -Africa/Asmera.generic.long=Ora dell'Africa orientale -Africa/Bamako.generic.long=Ora media di Greenwich -Africa/Bangui.generic.long=Ora dell'Africa occidentale -Africa/Banjul.generic.long=Ora media di Greenwich -Africa/Bissau.generic.long=Ora media di Greenwich -Africa/Blantyre.generic.long=Ora dell'Africa centrale -Africa/Brazzaville.generic.long=Ora dell'Africa occidentale -Africa/Bujumbura.generic.long=Ora dell'Africa centrale -Africa/Cairo.generic.long=Ora dell'Europa orientale -Africa/Casablanca.generic.long=Ora dell'Europa occidentale -Africa/Ceuta.generic.long=Ora dell'Europa centrale -Africa/Conakry.generic.long=Ora media di Greenwich -Africa/Dakar.generic.long=Ora media di Greenwich -Africa/Dar_es_Salaam.generic.long=Ora dell'Africa orientale -Africa/Djibouti.generic.long=Ora dell'Africa orientale -Africa/Douala.generic.long=Ora dell'Africa occidentale -Africa/El_Aaiun.generic.long=Ora dell'Europa occidentale -Africa/Freetown.generic.long=Ora della Sierra Leone -Africa/Gaborone.generic.long=Ora dell'Africa centrale -Africa/Harare.generic.long=Ora dell'Africa centrale -Africa/Johannesburg.generic.long=Ora Sudafrica -Africa/Juba.generic.long=Ora dell'Africa orientale -Africa/Kampala.generic.long=Ora dell'Africa orientale -Africa/Khartoum.generic.long=Ora dell'Africa orientale -Africa/Kigali.generic.long=Ora dell'Africa centrale -Africa/Kinshasa.generic.long=Ora dell'Africa occidentale -Africa/Lagos.generic.long=Ora dell'Africa occidentale -Africa/Libreville.generic.long=Ora dell'Africa occidentale -Africa/Lome.generic.long=Ora media di Greenwich -Africa/Luanda.generic.long=Ora dell'Africa occidentale -Africa/Lubumbashi.generic.long=Ora dell'Africa centrale -Africa/Lusaka.generic.long=Ora dell'Africa centrale -Africa/Malabo.generic.long=Ora dell'Africa occidentale -Africa/Maputo.generic.long=Ora dell'Africa centrale -Africa/Maseru.generic.long=Ora Sudafrica -Africa/Mbabane.generic.long=Ora Sudafrica -Africa/Mogadishu.generic.long=Ora dell'Africa orientale -Africa/Monrovia.generic.long=Ora media di Greenwich -Africa/Nairobi.generic.long=Ora dell'Africa orientale -Africa/Ndjamena.generic.long=Ora dell'Africa occidentale -Africa/Niamey.generic.long=Ora dell'Africa occidentale -Africa/Nouakchott.generic.long=Ora media di Greenwich -Africa/Ouagadougou.generic.long=Ora media di Greenwich -Africa/Porto-Novo.generic.long=Ora dell'Africa occidentale -Africa/Sao_Tome.generic.long=Ora media di Greenwich -Africa/Timbuktu.generic.long=Ora media di Greenwich -Africa/Tripoli.generic.long=Ora dell'Europa orientale -Africa/Tunis.generic.long=Ora dell'Europa centrale -Africa/Windhoek.generic.long=Ora dell'Africa occidentale -America/Adak.generic.long=Ora Hawaii-Aleutine -America/Anchorage.generic.long=Ora Alaska -America/Anguilla.generic.long=Fuso dell'Atlantico -America/Antigua.generic.long=Fuso dell'Atlantico -America/Araguaina.generic.long=Ora di Brasilia -America/Argentina/Buenos_Aires.generic.long=Ora dell'Argentina -America/Argentina/Catamarca.generic.long=Ora dell'Argentina -America/Argentina/ComodRivadavia.generic.long=Ora dell'Argentina -America/Argentina/Cordoba.generic.long=Ora dell'Argentina -America/Argentina/Jujuy.generic.long=Ora dell'Argentina -America/Argentina/La_Rioja.generic.long=Ora dell'Argentina -America/Argentina/Mendoza.generic.long=Ora dell'Argentina -America/Argentina/Rio_Gallegos.generic.long=Ora dell'Argentina -America/Argentina/Salta.generic.long=Ora dell'Argentina -America/Argentina/San_Juan.generic.long=Ora dell'Argentina -America/Argentina/San_Luis.generic.long=Ora dell'Argentina -America/Argentina/Tucuman.generic.long=Ora dell'Argentina -America/Argentina/Ushuaia.generic.long=Ora dell'Argentina -America/Aruba.generic.long=Fuso dell'Atlantico -America/Asuncion.generic.long=Ora del Paraguay -America/Atikokan.generic.long=Fuso orientale -America/Atka.generic.long=Ora Hawaii-Aleutine -America/Bahia.generic.long=Ora di Brasilia -America/Bahia_Banderas.generic.long=Ora fuso centrale -America/Barbados.generic.long=Fuso dell'Atlantico -America/Belem.generic.long=Ora di Brasilia -America/Belize.generic.long=Ora fuso centrale -America/Blanc-Sablon.generic.long=Fuso dell'Atlantico -America/Boa_Vista.generic.long=Ora dell'Amazzonia -America/Bogota.generic.long=Ora della Colombia -America/Boise.generic.long=Ora fuso occidentale -America/Buenos_Aires.generic.long=Ora dell'Argentina -America/Cambridge_Bay.generic.long=Ora fuso occidentale -America/Campo_Grande.generic.long=Ora dell'Amazzonia -America/Cancun.generic.long=Ora fuso centrale -America/Caracas.generic.long=Ora del Venezuela -America/Catamarca.generic.long=Ora dell'Argentina -America/Cayenne.generic.long=Ora della Guyana Francese -America/Cayman.generic.long=Fuso orientale -America/Chicago.generic.long=Ora fuso centrale -America/Chihuahua.generic.long=Ora fuso occidentale -America/Coral_Harbour.generic.long=Fuso orientale -America/Cordoba.generic.long=Ora dell'Argentina -America/Costa_Rica.generic.long=Ora fuso centrale -America/Creston.generic.long=Ora fuso occidentale -America/Cuiaba.generic.long=Ora dell'Amazzonia -America/Curacao.generic.long=Fuso dell'Atlantico -America/Danmarkshavn.generic.long=Ora media di Greenwich -America/Dawson.generic.long=Fuso del Pacifico -America/Dawson_Creek.generic.long=Ora fuso occidentale -America/Denver.generic.long=Ora fuso occidentale -America/Detroit.generic.long=Fuso orientale -America/Dominica.generic.long=Fuso dell'Atlantico -America/Edmonton.generic.long=Ora fuso occidentale -America/Eirunepe.generic.long=Ora di Acre -America/El_Salvador.generic.long=Ora fuso centrale -America/Ensenada.generic.long=Fuso del Pacifico -America/Fort_Wayne.generic.long=Fuso orientale -America/Fortaleza.generic.long=Ora di Brasilia -America/Glace_Bay.generic.long=Fuso dell'Atlantico -America/Godthab.generic.long=Ora della Groenlandia occidentale -America/Goose_Bay.generic.long=Fuso dell'Atlantico -America/Grand_Turk.generic.long=Fuso orientale -America/Grenada.generic.long=Fuso dell'Atlantico -America/Guadeloupe.generic.long=Fuso dell'Atlantico -America/Guatemala.generic.long=Ora fuso centrale -America/Guayaquil.generic.long=Ora dell'Ecuador -America/Guyana.generic.long=Ora della Guyana -America/Halifax.generic.long=Fuso dell'Atlantico -America/Havana.generic.long=Ora di Cuba -America/Hermosillo.generic.long=Ora fuso occidentale -America/Indiana/Indianapolis.generic.long=Fuso orientale -America/Indiana/Knox.generic.long=Ora fuso centrale -America/Indiana/Marengo.generic.long=Fuso orientale -America/Indiana/Petersburg.generic.long=Fuso orientale -America/Indiana/Tell_City.generic.long=Ora fuso centrale -America/Indiana/Vevay.generic.long=Fuso orientale -America/Indiana/Vincennes.generic.long=Fuso orientale -America/Indiana/Winamac.generic.long=Fuso orientale -America/Indianapolis.generic.long=Fuso orientale -America/Inuvik.generic.long=Ora fuso occidentale -America/Iqaluit.generic.long=Fuso orientale -America/Jamaica.generic.long=Fuso orientale -America/Jujuy.generic.long=Ora dell'Argentina -America/Juneau.generic.long=Ora Alaska -America/Kentucky/Louisville.generic.long=Fuso orientale -America/Kentucky/Monticello.generic.long=Fuso orientale -America/Knox_IN.generic.long=Ora fuso centrale -America/Kralendijk.generic.long=Fuso dell'Atlantico -America/La_Paz.generic.long=Ora della Bolivia -America/Lima.generic.long=Ora del Per\u00F9 -America/Los_Angeles.generic.long=Fuso del Pacifico -America/Louisville.generic.long=Fuso orientale -America/Lower_Princes.generic.long=Fuso dell'Atlantico -America/Maceio.generic.long=Ora di Brasilia -America/Managua.generic.long=Ora fuso centrale -America/Manaus.generic.long=Ora dell'Amazzonia -America/Marigot.generic.long=Fuso dell'Atlantico -America/Martinique.generic.long=Fuso dell'Atlantico -America/Matamoros.generic.long=Ora fuso centrale -America/Mazatlan.generic.long=Ora fuso occidentale -America/Mendoza.generic.long=Ora dell'Argentina -America/Menominee.generic.long=Ora fuso centrale -America/Merida.generic.long=Ora fuso centrale -America/Metlakatla.daylight.long=Ora legale di Metlakatla -America/Metlakatla.generic.long=Ora di Metlakatla -America/Metlakatla.standard.long=Ora standard di Metlakatla -America/Mexico_City.generic.long=Ora fuso centrale -America/Miquelon.generic.long=Ora Saint-Pierre e Miquelon -America/Moncton.generic.long=Fuso dell'Atlantico -America/Monterrey.generic.long=Ora fuso centrale -America/Montevideo.generic.long=Ora dell'Uruguay -America/Montreal.generic.long=Fuso orientale -America/Montserrat.generic.long=Fuso dell'Atlantico -America/Nassau.generic.long=Fuso orientale -America/New_York.generic.long=Fuso orientale -America/Nipigon.generic.long=Fuso orientale -America/Nome.generic.long=Ora Alaska -America/Noronha.generic.long=Ora di Fernando de Noronha -America/North_Dakota/Beulah.generic.long=Ora fuso centrale -America/North_Dakota/Center.generic.long=Ora fuso centrale -America/North_Dakota/New_Salem.generic.long=Ora fuso centrale -America/Ojinaga.generic.long=Ora fuso occidentale -America/Panama.generic.long=Fuso orientale -America/Pangnirtung.generic.long=Fuso orientale -America/Paramaribo.generic.long=Ora di Suriname -America/Phoenix.generic.long=Ora fuso occidentale -America/Port-au-Prince.generic.long=Fuso orientale -America/Port_of_Spain.generic.long=Fuso dell'Atlantico -America/Porto_Acre.generic.long=Ora di Acre -America/Porto_Velho.generic.long=Ora dell'Amazzonia -America/Puerto_Rico.generic.long=Fuso dell'Atlantico -America/Rainy_River.generic.long=Ora fuso centrale -America/Rankin_Inlet.generic.long=Ora fuso centrale -America/Recife.generic.long=Ora di Brasilia -America/Regina.generic.long=Ora fuso centrale -America/Resolute.generic.long=Ora fuso centrale -America/Rio_Branco.generic.long=Ora di Acre -America/Rosario.generic.long=Ora dell'Argentina -America/Santa_Isabel.generic.long=Fuso del Pacifico -America/Santarem.generic.long=Ora di Brasilia -America/Santiago.generic.long=Ora del Cile -America/Santo_Domingo.generic.long=Fuso dell'Atlantico -America/Sao_Paulo.generic.long=Ora di Brasilia -America/Scoresbysund.generic.long=Ora della Groenlandia orientale -America/Shiprock.generic.long=Ora fuso occidentale -America/Sitka.generic.long=Ora Alaska -America/St_Barthelemy.generic.long=Fuso dell'Atlantico -America/St_Johns.generic.long=Ora Terranova -America/St_Kitts.generic.long=Fuso dell'Atlantico -America/St_Lucia.generic.long=Fuso dell'Atlantico -America/St_Thomas.generic.long=Fuso dell'Atlantico -America/St_Vincent.generic.long=Fuso dell'Atlantico -America/Swift_Current.generic.long=Ora fuso centrale -America/Tegucigalpa.generic.long=Ora fuso centrale -America/Thule.generic.long=Fuso dell'Atlantico -America/Thunder_Bay.generic.long=Fuso orientale -America/Tijuana.generic.long=Fuso del Pacifico -America/Toronto.generic.long=Fuso orientale -America/Tortola.generic.long=Fuso dell'Atlantico -America/Vancouver.generic.long=Fuso del Pacifico -America/Virgin.generic.long=Fuso dell'Atlantico -America/Whitehorse.generic.long=Fuso del Pacifico -America/Winnipeg.generic.long=Ora fuso centrale -America/Yakutat.generic.long=Ora Alaska -America/Yellowknife.generic.long=Ora fuso occidentale -Antarctica/Casey.daylight.long=Ora estiva dell'Australia occidentale -Antarctica/Casey.generic.long=Ora Australia occidentale -Antarctica/Casey.standard.long=Ora standard dell'Australia occidentale -Antarctica/Davis.generic.long=Ora di Davis -Antarctica/DumontDUrville.generic.long=Ora di Dumont-d'Urville -Antarctica/Macquarie.daylight.long=Ora estiva dell'Isola Macquarie -Antarctica/Macquarie.generic.long=Ora dell'Isola Macquarie -Antarctica/Macquarie.standard.long=Ora dell'Isola Macquarie -Antarctica/Mawson.generic.long=Ora di Mawson -Antarctica/McMurdo.generic.long=Ora Nuova Zelanda -Antarctica/Palmer.generic.long=Ora del Cile -Antarctica/Rothera.generic.long=Ora di Rothera -Antarctica/South_Pole.generic.long=Ora Nuova Zelanda -Antarctica/Syowa.generic.long=Ora di Syowa -Antarctica/Vostok.generic.long=Ora di Vostok -Arctic/Longyearbyen.generic.long=Ora dell'Europa centrale -Asia/Aden.generic.long=Ora Arabia Saudita -Asia/Almaty.generic.long=Ora di Alma-Ata -Asia/Amman.generic.long=Ora Arabia Saudita -Asia/Anadyr.generic.long=Ora di Anadyr -Asia/Aqtau.generic.long=Ora di Aqtau -Asia/Aqtobe.generic.long=Ora di Aqtobe -Asia/Ashgabat.generic.long=Ora del Turkmenistan -Asia/Ashkhabad.generic.long=Ora del Turkmenistan -Asia/Baghdad.generic.long=Ora Arabia Saudita -Asia/Bahrain.generic.long=Ora Arabia Saudita -Asia/Baku.generic.long=Ora dell'Azerbaigian -Asia/Bangkok.generic.long=Ora dell'Indocina -Asia/Beirut.generic.long=Ora dell'Europa orientale -Asia/Bishkek.generic.long=Ora del Kirghizistan -Asia/Brunei.generic.long=Ora del Brunei -Asia/Calcutta.generic.long=Ora India -Asia/Choibalsan.generic.long=Ora di Choibalsan -Asia/Chongqing.generic.long=Ora Cina -Asia/Chungking.generic.long=Ora Cina -Asia/Colombo.generic.long=Ora India -Asia/Dacca.generic.long=Ora del Bangladesh -Asia/Damascus.generic.long=Ora dell'Europa orientale -Asia/Dhaka.generic.long=Ora del Bangladesh -Asia/Dili.generic.long=Ora di Timor Est -Asia/Dubai.generic.long=Ora del golfo -Asia/Dushanbe.generic.long=Ora del Tagikistan -Asia/Gaza.generic.long=Ora dell'Europa orientale -Asia/Harbin.generic.long=Ora Cina -Asia/Hebron.generic.long=Ora dell'Europa orientale -Asia/Ho_Chi_Minh.generic.long=Ora dell'Indocina -Asia/Hong_Kong.generic.long=Ora di Hong Kong -Asia/Hovd.generic.long=Ora di Hovd -Asia/Irkutsk.generic.long=Ora di Irkutsk -Asia/Istanbul.generic.long=Ora dell'Europa orientale -Asia/Jakarta.generic.long=Ora dell'Indonesia occidentale -Asia/Jayapura.generic.long=Ora dell'Indonesia orientale -Asia/Jerusalem.generic.long=Ora Israele -Asia/Kabul.generic.long=Ora dell'Afghanistan -Asia/Kamchatka.generic.long=Ora di Petropavlovsk-Kamchatski -Asia/Karachi.generic.long=Ora del Pakistan -Asia/Kashgar.generic.long=Ora Cina -Asia/Kathmandu.generic.long=Ora del Nepal -Asia/Katmandu.generic.long=Ora del Nepal -Asia/Khandyga.daylight.long=Ora estiva di Khandyga -Asia/Khandyga.generic.long=Ora di Khandyga -Asia/Khandyga.standard.long=Ora di Khandyga -Asia/Kolkata.generic.long=Ora India -Asia/Krasnoyarsk.generic.long=Ora di Krasnojarsk -Asia/Kuala_Lumpur.generic.long=Ora della Malaysia -Asia/Kuching.generic.long=Ora della Malaysia -Asia/Kuwait.generic.long=Ora Arabia Saudita -Asia/Macao.generic.long=Ora Cina -Asia/Macau.generic.long=Ora Cina -Asia/Magadan.generic.long=Ora di Magadan -Asia/Makassar.generic.long=Ora dell'Indonesia centrale -Asia/Manila.generic.long=Ora delle Filippine -Asia/Muscat.generic.long=Ora del golfo -Asia/Nicosia.generic.long=Ora dell'Europa orientale -Asia/Novokuznetsk.generic.long=Ora di Novosibirsk -Asia/Novosibirsk.generic.long=Ora di Novosibirsk -Asia/Omsk.generic.long=Ora di Omsk -Asia/Oral.generic.long=Ora di Oral -Asia/Phnom_Penh.generic.long=Ora dell'Indocina -Asia/Pontianak.generic.long=Ora dell'Indonesia occidentale -Asia/Pyongyang.generic.long=Ora Corea -Asia/Qatar.generic.long=Ora Arabia Saudita -Asia/Qyzylorda.generic.long=Ora di Qyzylorda -Asia/Rangoon.generic.long=Ora della Birmania/Myanmar -Asia/Saigon.generic.long=Ora dell'Indocina -Asia/Sakhalin.generic.long=Ora di Sakhalin -Asia/Samarkand.generic.long=Ora dell'Uzbekistan -Asia/Seoul.generic.long=Ora Corea -Asia/Shanghai.generic.long=Ora Cina -Asia/Singapore.generic.long=Ora di Singapore -Asia/Taipei.generic.long=Ora Cina -Asia/Tashkent.generic.long=Ora dell'Uzbekistan -Asia/Tbilisi.generic.long=Ora della Georgia -Asia/Tehran.generic.long=Ora Iran -Asia/Tel_Aviv.generic.long=Ora Israele -Asia/Thimbu.generic.long=Ora del Bhutan -Asia/Thimphu.generic.long=Ora del Bhutan -Asia/Tokyo.generic.long=Ora Giappone -Asia/Ujung_Pandang.generic.long=Ora dell'Indonesia centrale -Asia/Ulaanbaatar.generic.long=Ora di Ulaanbaatar -Asia/Ulan_Bator.generic.long=Ora di Ulaanbaatar -Asia/Urumqi.generic.long=Ora Cina -Asia/Ust-Nera.daylight.long=Ora estiva di Ust-Nera -Asia/Ust-Nera.generic.long=Ora di Ust-Nera -Asia/Ust-Nera.standard.long=Ora di Ust-Nera -Asia/Vientiane.generic.long=Ora dell'Indocina -Asia/Vladivostok.generic.long=Ora di Vladivostok -Asia/Yakutsk.generic.long=Ora di Yakutsk -Asia/Yekaterinburg.generic.long=Ora di Ekaterinburg -Asia/Yerevan.generic.long=Ora dell'Armenia -Atlantic/Azores.generic.long=Ora delle Azzorre -Atlantic/Bermuda.generic.long=Fuso dell'Atlantico -Atlantic/Canary.generic.long=Ora dell'Europa occidentale -Atlantic/Cape_Verde.generic.long=Ora di Capo Verde -Atlantic/Faeroe.generic.long=Ora dell'Europa occidentale -Atlantic/Faroe.generic.long=Ora dell'Europa occidentale -Atlantic/Jan_Mayen.generic.long=Ora dell'Europa centrale -Atlantic/Madeira.generic.long=Ora dell'Europa occidentale -Atlantic/Reykjavik.generic.long=Ora media di Greenwich -Atlantic/South_Georgia.generic.long=Ora Georgia del Sud -Atlantic/St_Helena.generic.long=Ora media di Greenwich -Atlantic/Stanley.generic.long=Ora delle Falkland -Australia/ACT.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud) -Australia/ACT.generic.long=Ora fuso orientale (Nuovo Galles del Sud) -Australia/ACT.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud) -Australia/Adelaide.daylight.long=Ora estiva centrale (Australia del Sud) -Australia/Adelaide.generic.long=Ora fuso centrale (Australia del Sud) -Australia/Adelaide.standard.long=Ora standard centrale (Australia del Sud) -Australia/Brisbane.daylight.long=Ora estiva orientale (Queensland) -Australia/Brisbane.generic.long=Ora fuso orientale (Queensland) -Australia/Brisbane.standard.long=Ora standard orientale (Queensland) -Australia/Broken_Hill.daylight.long=Ora estiva centrale (Australia del Sud/Nuovo Galles del Sud) -Australia/Broken_Hill.generic.long=Ora fuso centrale (Australia del Sud/Nuovo Galles del Sud) -Australia/Broken_Hill.standard.long=Ora standard centrale (Australia del Sud/Nuovo Galles del Sud) -Australia/Canberra.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud) -Australia/Canberra.generic.long=Ora fuso orientale (Nuovo Galles del Sud) -Australia/Canberra.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud) -Australia/Currie.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud) -Australia/Currie.generic.long=Ora fuso orientale (Nuovo Galles del Sud) -Australia/Currie.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud) -Australia/Darwin.daylight.long=Ora estiva centrale (Territori del Nord) -Australia/Darwin.generic.long=Ora fuso centrale (Territori del Nord) -Australia/Darwin.standard.long=Ora standard centrale (Territori del Nord) -Australia/Eucla.daylight.long=Ora estiva Australia centro-occidentale -Australia/Eucla.generic.long=Ora Australia centro-occidentale -Australia/Eucla.standard.long=Ora standard Australia centro-occidentale -Australia/Hobart.daylight.long=Ora estiva orientale (Tasmania) -Australia/Hobart.generic.long=Ora fuso orientale (Tasmania) -Australia/Hobart.standard.long=Ora standard orientale (Tasmania) -Australia/LHI.generic.long=Ora di Lord Howe -Australia/Lindeman.daylight.long=Ora estiva orientale (Queensland) -Australia/Lindeman.generic.long=Ora fuso orientale (Queensland) -Australia/Lindeman.standard.long=Ora standard orientale (Queensland) -Australia/Lord_Howe.generic.long=Ora di Lord Howe -Australia/Melbourne.daylight.long=Ora estiva orientale (Victoria) -Australia/Melbourne.generic.long=Ora fuso orientale (Victoria) -Australia/Melbourne.standard.long=Ora standard orientale (Victoria) -Australia/NSW.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud) -Australia/NSW.generic.long=Ora fuso orientale (Nuovo Galles del Sud) -Australia/NSW.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud) -Australia/North.daylight.long=Ora estiva centrale (Territori del Nord) -Australia/North.generic.long=Ora fuso centrale (Territori del Nord) -Australia/North.standard.long=Ora standard centrale (Territori del Nord) -Australia/Perth.daylight.long=Ora estiva dell'Australia occidentale -Australia/Perth.generic.long=Ora Australia occidentale -Australia/Perth.standard.long=Ora standard dell'Australia occidentale -Australia/Queensland.daylight.long=Ora estiva orientale (Queensland) -Australia/Queensland.generic.long=Ora fuso orientale (Queensland) -Australia/Queensland.standard.long=Ora standard orientale (Queensland) -Australia/South.daylight.long=Ora estiva centrale (Australia del Sud) -Australia/South.generic.long=Ora fuso centrale (Australia del Sud) -Australia/South.standard.long=Ora standard centrale (Australia del Sud) -Australia/Sydney.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud) -Australia/Sydney.generic.long=Ora fuso orientale (Nuovo Galles del Sud) -Australia/Sydney.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud) -Australia/Tasmania.daylight.long=Ora estiva orientale (Tasmania) -Australia/Tasmania.generic.long=Ora fuso orientale (Tasmania) -Australia/Tasmania.standard.long=Ora standard orientale (Tasmania) -Australia/Victoria.daylight.long=Ora estiva orientale (Victoria) -Australia/Victoria.generic.long=Ora fuso orientale (Victoria) -Australia/Victoria.standard.long=Ora standard orientale (Victoria) -Australia/West.daylight.long=Ora estiva dell'Australia occidentale -Australia/West.generic.long=Ora Australia occidentale -Australia/West.standard.long=Ora standard dell'Australia occidentale -Australia/Yancowinna.daylight.long=Ora estiva centrale (Australia del Sud/Nuovo Galles del Sud) -Australia/Yancowinna.generic.long=Ora fuso centrale (Australia del Sud/Nuovo Galles del Sud) -Australia/Yancowinna.standard.long=Ora standard centrale (Australia del Sud/Nuovo Galles del Sud) -BET.generic.long=Ora di Brasilia -BST.generic.long=Ora del Bangladesh -Brazil/Acre.generic.long=Ora di Acre -Brazil/DeNoronha.generic.long=Ora di Fernando de Noronha -Brazil/East.generic.long=Ora di Brasilia -Brazil/West.generic.long=Ora dell'Amazzonia -CAT.generic.long=Ora dell'Africa centrale -CET.generic.long=Ora dell'Europa centrale -CNT.generic.long=Ora Terranova -CST.generic.long=Ora fuso centrale -CST6CDT.generic.long=Ora fuso centrale -CTT.generic.long=Ora Cina -Canada/Atlantic.generic.long=Fuso dell'Atlantico -Canada/Central.generic.long=Ora fuso centrale -Canada/East-Saskatchewan.generic.long=Ora fuso centrale -Canada/Eastern.generic.long=Fuso orientale -Canada/Mountain.generic.long=Ora fuso occidentale -Canada/Newfoundland.generic.long=Ora Terranova -Canada/Pacific.generic.long=Fuso del Pacifico -Canada/Saskatchewan.generic.long=Ora fuso centrale -Canada/Yukon.generic.long=Fuso del Pacifico -Chile/Continental.generic.long=Ora del Cile -Chile/EasterIsland.generic.long=Ora dell'Isola di Pasqua -Cuba.generic.long=Ora di Cuba -EAT.generic.long=Ora dell'Africa orientale -ECT.generic.long=Ora dell'Europa centrale -EET.generic.long=Ora dell'Europa orientale -EST.generic.long=Fuso orientale -EST5EDT.generic.long=Fuso orientale -Egypt.generic.long=Ora dell'Europa orientale -Eire.generic.long=Ora irlandese -Etc/Greenwich.generic.long=Ora media di Greenwich -Etc/UCT.generic.long=Tempo universale coordinato -Etc/UTC.generic.long=Tempo universale coordinato -Etc/Universal.generic.long=Tempo universale coordinato -Etc/Zulu.generic.long=Tempo universale coordinato -Europe/Amsterdam.generic.long=Ora dell'Europa centrale -Europe/Andorra.generic.long=Ora dell'Europa centrale -Europe/Athens.generic.long=Ora dell'Europa orientale -Europe/Belfast.generic.long=Ora britannica -Europe/Belgrade.generic.long=Ora dell'Europa centrale -Europe/Berlin.generic.long=Ora dell'Europa centrale -Europe/Bratislava.generic.long=Ora dell'Europa centrale -Europe/Brussels.generic.long=Ora dell'Europa centrale -Europe/Bucharest.generic.long=Ora dell'Europa orientale -Europe/Budapest.generic.long=Ora dell'Europa centrale -Europe/Busingen.generic.long=Ora dell'Europa centrale -Europe/Chisinau.generic.long=Ora dell'Europa orientale -Europe/Copenhagen.generic.long=Ora dell'Europa centrale -Europe/Dublin.generic.long=Ora irlandese -Europe/Gibraltar.generic.long=Ora dell'Europa centrale -Europe/Guernsey.generic.long=Ora britannica -Europe/Helsinki.generic.long=Ora dell'Europa orientale -Europe/Isle_of_Man.generic.long=Ora britannica -Europe/Istanbul.generic.long=Ora dell'Europa orientale -Europe/Jersey.generic.long=Ora britannica -Europe/Kaliningrad.daylight.long=Ora estiva dei paesi europei pi\u00F9 orientali -Europe/Kaliningrad.generic.long=Ora dei paesi europei pi\u00F9 orientali -Europe/Kaliningrad.standard.long=Ora dei paesi europei pi\u00F9 orientali -Europe/Kiev.generic.long=Ora dell'Europa orientale -Europe/Lisbon.generic.long=Ora dell'Europa occidentale -Europe/Ljubljana.generic.long=Ora dell'Europa centrale -Europe/London.generic.long=Ora britannica -Europe/Luxembourg.generic.long=Ora dell'Europa centrale -Europe/Madrid.generic.long=Ora dell'Europa centrale -Europe/Malta.generic.long=Ora dell'Europa centrale -Europe/Mariehamn.generic.long=Ora dell'Europa orientale -Europe/Minsk.daylight.long=Ora estiva dei paesi europei pi\u00F9 orientali -Europe/Minsk.generic.long=Ora dei paesi europei pi\u00F9 orientali -Europe/Minsk.standard.long=Ora dei paesi europei pi\u00F9 orientali -Europe/Monaco.generic.long=Ora dell'Europa centrale -Europe/Moscow.generic.long=Ora Mosca -Europe/Nicosia.generic.long=Ora dell'Europa orientale -Europe/Oslo.generic.long=Ora dell'Europa centrale -Europe/Paris.generic.long=Ora dell'Europa centrale -Europe/Podgorica.generic.long=Ora dell'Europa centrale -Europe/Prague.generic.long=Ora dell'Europa centrale -Europe/Riga.generic.long=Ora dell'Europa orientale -Europe/Rome.generic.long=Ora dell'Europa centrale -Europe/Samara.generic.long=Ora di Samara -Europe/San_Marino.generic.long=Ora dell'Europa centrale -Europe/Sarajevo.generic.long=Ora dell'Europa centrale -Europe/Simferopol.generic.long=Ora dell'Europa orientale -Europe/Skopje.generic.long=Ora dell'Europa centrale -Europe/Sofia.generic.long=Ora dell'Europa orientale -Europe/Stockholm.generic.long=Ora dell'Europa centrale -Europe/Tallinn.generic.long=Ora dell'Europa orientale -Europe/Tirane.generic.long=Ora dell'Europa centrale -Europe/Tiraspol.generic.long=Ora dell'Europa orientale -Europe/Uzhgorod.generic.long=Ora dell'Europa orientale -Europe/Vaduz.generic.long=Ora dell'Europa centrale -Europe/Vatican.generic.long=Ora dell'Europa centrale -Europe/Vienna.generic.long=Ora dell'Europa centrale -Europe/Vilnius.generic.long=Ora dell'Europa orientale -Europe/Volgograd.generic.long=Ora di Volgograd -Europe/Warsaw.generic.long=Ora dell'Europa centrale -Europe/Zagreb.generic.long=Ora dell'Europa centrale -Europe/Zaporozhye.generic.long=Ora dell'Europa orientale -Europe/Zurich.generic.long=Ora dell'Europa centrale -GB-Eire.generic.long=Ora britannica -GB.generic.long=Ora britannica -GMT.generic.long=Ora media di Greenwich -Greenwich.generic.long=Ora media di Greenwich -HST.generic.long=Ora Hawaii -Hongkong.generic.long=Ora di Hong Kong -IET.generic.long=Fuso orientale -IST.generic.long=Ora India -Iceland.generic.long=Ora media di Greenwich -Indian/Antananarivo.generic.long=Ora dell'Africa orientale -Indian/Chagos.generic.long=Ora del Territorio Britannico dell'Oceano Indiano -Indian/Christmas.generic.long=Ora dell'Isola Christmas -Indian/Cocos.generic.long=Ora delle Isole Cocos -Indian/Comoro.generic.long=Ora dell'Africa orientale -Indian/Kerguelen.generic.long=Ora delle Terre Australi e Antartiche Francesi -Indian/Mahe.generic.long=Ora delle Seychelles -Indian/Maldives.generic.long=Ora delle Maldive -Indian/Mauritius.generic.long=Ora di Mauritius -Indian/Mayotte.generic.long=Ora dell'Africa orientale -Indian/Reunion.generic.long=Ora di Reunion -Iran.generic.long=Ora Iran -Israel.generic.long=Ora Israele -JST.generic.long=Ora Giappone -Jamaica.generic.long=Fuso orientale -Japan.generic.long=Ora Giappone -Kwajalein.generic.long=Ora delle Isole Marshall -Libya.generic.long=Ora dell'Europa orientale -MET.generic.long=MET -MIT.generic.long=Ora di Samoa occidentale -MST.generic.long=Ora fuso occidentale -MST7MDT.generic.long=Ora fuso occidentale -Mexico/BajaNorte.generic.long=Fuso del Pacifico -Mexico/BajaSur.generic.long=Ora fuso occidentale -Mexico/General.generic.long=Ora fuso centrale -NET.generic.long=Ora dell'Armenia -NST.generic.long=Ora Nuova Zelanda -NZ-CHAT.generic.long=Ora Chatham -NZ.generic.long=Ora Nuova Zelanda -Navajo.generic.long=Ora fuso occidentale -PLT.generic.long=Ora del Pakistan -PNT.generic.long=Ora fuso occidentale -PRC.generic.long=Ora Cina -PRT.generic.long=Fuso dell'Atlantico -PST.generic.long=Fuso del Pacifico -PST8PDT.generic.long=Fuso del Pacifico -Pacific/Apia.generic.long=Ora di Samoa occidentale -Pacific/Auckland.generic.long=Ora Nuova Zelanda -Pacific/Chatham.generic.long=Ora Chatham -Pacific/Chuuk.daylight.long=Ora estiva di Chuuk -Pacific/Chuuk.generic.long=Ora di Chuuk -Pacific/Chuuk.standard.long=Ora di Chuuk -Pacific/Easter.generic.long=Ora dell'Isola di Pasqua -Pacific/Efate.generic.long=Ora di Vanuatu -Pacific/Enderbury.generic.long=Ora delle Isole Phoenix -Pacific/Fakaofo.generic.long=Ora di Tokelau -Pacific/Fiji.generic.long=Ora di Figi -Pacific/Funafuti.generic.long=Ora di Tuvalu -Pacific/Galapagos.generic.long=Ora delle Galapagos -Pacific/Gambier.generic.long=Ora di Gambier -Pacific/Guadalcanal.generic.long=Ora delle Isole Salomone -Pacific/Guam.generic.long=Ora Chamorro -Pacific/Honolulu.generic.long=Ora Hawaii -Pacific/Johnston.generic.long=Ora Hawaii -Pacific/Kiritimati.generic.long=Ora delle Line Islands -Pacific/Kosrae.generic.long=Ora di Kosrae -Pacific/Kwajalein.generic.long=Ora delle Isole Marshall -Pacific/Majuro.generic.long=Ora delle Isole Marshall -Pacific/Marquesas.generic.long=Ora delle Isole Marchesi -Pacific/Midway.generic.long=Ora Samoa -Pacific/Nauru.generic.long=Ora di Nauru -Pacific/Niue.generic.long=Ora di Niue -Pacific/Norfolk.generic.long=Ora di Norfolk -Pacific/Noumea.generic.long=Ora della Nuova Caledonia -Pacific/Pago_Pago.generic.long=Ora Samoa -Pacific/Palau.generic.long=Ora di Palau -Pacific/Pitcairn.generic.long=Ora Pitcairn -Pacific/Pohnpei.daylight.long=Ora estiva di Pohnpei -Pacific/Pohnpei.generic.long=Ora Ponape -Pacific/Pohnpei.standard.long=Ora di Pohnpei -Pacific/Ponape.daylight.long=Ora estiva di Pohnpei -Pacific/Ponape.generic.long=Ora Ponape -Pacific/Ponape.standard.long=Ora di Pohnpei -Pacific/Port_Moresby.generic.long=Ora di Papua Nuova Guinea -Pacific/Rarotonga.generic.long=Ora delle Isole Cook -Pacific/Saipan.generic.long=Ora Chamorro -Pacific/Samoa.generic.long=Ora Samoa -Pacific/Tahiti.generic.long=Ora di Tahiti -Pacific/Tarawa.generic.long=Ora delle Isole Gilbert -Pacific/Tongatapu.generic.long=Ora di Tonga -Pacific/Truk.daylight.long=Ora estiva di Chuuk -Pacific/Truk.generic.long=Ora di Chuuk -Pacific/Truk.standard.long=Ora di Chuuk -Pacific/Wake.generic.long=Ora di Wake -Pacific/Wallis.generic.long=Ora di Wallis e Futuna -Pacific/Yap.daylight.long=Ora estiva di Chuuk -Pacific/Yap.generic.long=Ora di Chuuk -Pacific/Yap.standard.long=Ora di Chuuk -Poland.generic.long=Ora dell'Europa centrale -Portugal.generic.long=Ora dell'Europa occidentale -ROK.generic.long=Ora Corea -SST.generic.long=Ora delle Isole Salomone -Singapore.generic.long=Ora di Singapore -SystemV/AST4.generic.long=Fuso dell'Atlantico -SystemV/AST4ADT.generic.long=Fuso dell'Atlantico -SystemV/CST6.generic.long=Ora fuso centrale -SystemV/CST6CDT.generic.long=Ora fuso centrale -SystemV/EST5.generic.long=Fuso orientale -SystemV/EST5EDT.generic.long=Fuso orientale -SystemV/HST10.generic.long=Ora Hawaii -SystemV/MST7.generic.long=Ora fuso occidentale -SystemV/MST7MDT.generic.long=Ora fuso occidentale -SystemV/PST8.generic.long=Fuso del Pacifico -SystemV/PST8PDT.generic.long=Fuso del Pacifico -SystemV/YST9.generic.long=Ora Alaska -SystemV/YST9YDT.generic.long=Ora Alaska -Turkey.generic.long=Ora dell'Europa orientale -UCT.generic.long=Tempo universale coordinato -US/Alaska.generic.long=Ora Alaska -US/Aleutian.generic.long=Ora Hawaii-Aleutine -US/Arizona.generic.long=Ora fuso occidentale -US/Central.generic.long=Ora fuso centrale -US/East-Indiana.generic.long=Fuso orientale -US/Eastern.generic.long=Fuso orientale -US/Hawaii.generic.long=Ora Hawaii -US/Indiana-Starke.generic.long=Ora fuso centrale -US/Michigan.generic.long=Fuso orientale -US/Mountain.generic.long=Ora fuso occidentale -US/Pacific-New.generic.long=Fuso del Pacifico -US/Pacific.generic.long=Fuso del Pacifico -US/Samoa.generic.long=Ora Samoa -UTC.generic.long=Tempo universale coordinato -Universal.generic.long=Tempo universale coordinato -VST.generic.long=Ora dell'Indocina -W-SU.generic.long=Ora Mosca -WET.generic.long=Ora dell'Europa occidentale -Zulu.generic.long=Tempo universale coordinato diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_it_short.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_it_short.properties deleted file mode 100644 index 095522a68d1..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_it_short.properties +++ /dev/null @@ -1,1743 +0,0 @@ -ACT.daylight.short=CST -ACT.generic.short=CT -ACT.standard.short=CST -AET.daylight.short=EST -AET.generic.short=ET -AET.standard.short=EST -Africa/Abidjan.daylight.short=GMT -Africa/Abidjan.generic.short=GMT -Africa/Abidjan.standard.short=GMT -Africa/Accra.daylight.short=GHST -Africa/Accra.generic.short=GMT -Africa/Accra.standard.short=GMT -Africa/Addis_Ababa.daylight.short=EAST -Africa/Addis_Ababa.generic.short=EAT -Africa/Addis_Ababa.standard.short=EAT -Africa/Algiers.daylight.short=CEST -Africa/Algiers.generic.short=CET -Africa/Algiers.standard.short=CET -Africa/Asmara.daylight.short=EAST -Africa/Asmara.generic.short=EAT -Africa/Asmara.standard.short=EAT -Africa/Asmera.daylight.short=EAST -Africa/Asmera.generic.short=EAT -Africa/Asmera.standard.short=EAT -Africa/Bamako.daylight.short=GMT -Africa/Bamako.generic.short=GMT -Africa/Bamako.standard.short=GMT -Africa/Bangui.daylight.short=WAST -Africa/Bangui.generic.short=WAT -Africa/Bangui.standard.short=WAT -Africa/Banjul.daylight.short=GMT -Africa/Banjul.generic.short=GMT -Africa/Banjul.standard.short=GMT -Africa/Bissau.daylight.short=GMT -Africa/Bissau.generic.short=GMT -Africa/Bissau.standard.short=GMT -Africa/Blantyre.daylight.short=CAST -Africa/Blantyre.generic.short=CAT -Africa/Blantyre.standard.short=CAT -Africa/Brazzaville.daylight.short=WAST -Africa/Brazzaville.generic.short=WAT -Africa/Brazzaville.standard.short=WAT -Africa/Bujumbura.daylight.short=CAST -Africa/Bujumbura.generic.short=CAT -Africa/Bujumbura.standard.short=CAT -Africa/Cairo.daylight.short=EEST -Africa/Cairo.generic.short=EET -Africa/Cairo.standard.short=EET -Africa/Casablanca.daylight.short=WEST -Africa/Casablanca.generic.short=WET -Africa/Casablanca.standard.short=WET -Africa/Ceuta.daylight.short=CEST -Africa/Ceuta.generic.short=CET -Africa/Ceuta.standard.short=CET -Africa/Conakry.daylight.short=GMT -Africa/Conakry.generic.short=GMT -Africa/Conakry.standard.short=GMT -Africa/Dakar.daylight.short=GMT -Africa/Dakar.generic.short=GMT -Africa/Dakar.standard.short=GMT -Africa/Dar_es_Salaam.daylight.short=EAST -Africa/Dar_es_Salaam.generic.short=EAT -Africa/Dar_es_Salaam.standard.short=EAT -Africa/Djibouti.daylight.short=EAST -Africa/Djibouti.generic.short=EAT -Africa/Djibouti.standard.short=EAT -Africa/Douala.daylight.short=WAST -Africa/Douala.generic.short=WAT -Africa/Douala.standard.short=WAT -Africa/El_Aaiun.daylight.short=WEST -Africa/El_Aaiun.generic.short=WET -Africa/El_Aaiun.standard.short=WET -Africa/Freetown.daylight.short=SLST -Africa/Freetown.generic.short=SLT -Africa/Freetown.standard.short=GMT -Africa/Gaborone.daylight.short=CAST -Africa/Gaborone.generic.short=CAT -Africa/Gaborone.standard.short=CAT -Africa/Harare.daylight.short=CAST -Africa/Harare.generic.short=CAT -Africa/Harare.standard.short=CAT -Africa/Johannesburg.daylight.short=SAST -Africa/Johannesburg.generic.short=SAT -Africa/Johannesburg.standard.short=SAST -Africa/Juba.daylight.short=EAST -Africa/Juba.generic.short=EAT -Africa/Juba.standard.short=EAT -Africa/Kampala.daylight.short=EAST -Africa/Kampala.generic.short=EAT -Africa/Kampala.standard.short=EAT -Africa/Khartoum.daylight.short=EAST -Africa/Khartoum.generic.short=EAT -Africa/Khartoum.standard.short=EAT -Africa/Kigali.daylight.short=CAST -Africa/Kigali.generic.short=CAT -Africa/Kigali.standard.short=CAT -Africa/Kinshasa.daylight.short=WAST -Africa/Kinshasa.generic.short=WAT -Africa/Kinshasa.standard.short=WAT -Africa/Lagos.daylight.short=WAST -Africa/Lagos.generic.short=WAT -Africa/Lagos.standard.short=WAT -Africa/Libreville.daylight.short=WAST -Africa/Libreville.generic.short=WAT -Africa/Libreville.standard.short=WAT -Africa/Lome.daylight.short=GMT -Africa/Lome.generic.short=GMT -Africa/Lome.standard.short=GMT -Africa/Luanda.daylight.short=WAST -Africa/Luanda.generic.short=WAT -Africa/Luanda.standard.short=WAT -Africa/Lubumbashi.daylight.short=CAST -Africa/Lubumbashi.generic.short=CAT -Africa/Lubumbashi.standard.short=CAT -Africa/Lusaka.daylight.short=CAST -Africa/Lusaka.generic.short=CAT -Africa/Lusaka.standard.short=CAT -Africa/Malabo.daylight.short=WAST -Africa/Malabo.generic.short=WAT -Africa/Malabo.standard.short=WAT -Africa/Maputo.daylight.short=CAST -Africa/Maputo.generic.short=CAT -Africa/Maputo.standard.short=CAT -Africa/Maseru.daylight.short=SAST -Africa/Maseru.generic.short=SAT -Africa/Maseru.standard.short=SAST -Africa/Mbabane.daylight.short=SAST -Africa/Mbabane.generic.short=SAT -Africa/Mbabane.standard.short=SAST -Africa/Mogadishu.daylight.short=EAST -Africa/Mogadishu.generic.short=EAT -Africa/Mogadishu.standard.short=EAT -Africa/Monrovia.daylight.short=GMT -Africa/Monrovia.generic.short=GMT -Africa/Monrovia.standard.short=GMT -Africa/Nairobi.daylight.short=EAST -Africa/Nairobi.generic.short=EAT -Africa/Nairobi.standard.short=EAT -Africa/Ndjamena.daylight.short=WAST -Africa/Ndjamena.generic.short=WAT -Africa/Ndjamena.standard.short=WAT -Africa/Niamey.daylight.short=WAST -Africa/Niamey.generic.short=WAT -Africa/Niamey.standard.short=WAT -Africa/Nouakchott.daylight.short=GMT -Africa/Nouakchott.generic.short=GMT -Africa/Nouakchott.standard.short=GMT -Africa/Ouagadougou.daylight.short=GMT -Africa/Ouagadougou.generic.short=GMT -Africa/Ouagadougou.standard.short=GMT -Africa/Porto-Novo.daylight.short=WAST -Africa/Porto-Novo.generic.short=WAT -Africa/Porto-Novo.standard.short=WAT -Africa/Sao_Tome.daylight.short=GMT -Africa/Sao_Tome.generic.short=GMT -Africa/Sao_Tome.standard.short=GMT -Africa/Timbuktu.daylight.short=GMT -Africa/Timbuktu.generic.short=GMT -Africa/Timbuktu.standard.short=GMT -Africa/Tripoli.daylight.short=EEST -Africa/Tripoli.generic.short=EET -Africa/Tripoli.standard.short=EET -Africa/Tunis.daylight.short=CEST -Africa/Tunis.generic.short=CET -Africa/Tunis.standard.short=CET -Africa/Windhoek.daylight.short=WAST -Africa/Windhoek.generic.short=WAT -Africa/Windhoek.standard.short=WAT -AGT.daylight.short=ARST -AGT.generic.short=ART -AGT.standard.short=ART -America/Adak.daylight.short=HADT -America/Adak.generic.short=HAT -America/Adak.standard.short=HAST -America/Anchorage.daylight.short=AKDT -America/Anchorage.generic.short=AKT -America/Anchorage.standard.short=AKST -America/Anguilla.daylight.short=ADT -America/Anguilla.generic.short=AT -America/Anguilla.standard.short=AST -America/Antigua.daylight.short=ADT -America/Antigua.generic.short=AT -America/Antigua.standard.short=AST -America/Araguaina.daylight.short=BRST -America/Araguaina.generic.short=BRT -America/Araguaina.standard.short=BRT -America/Argentina/Buenos_Aires.daylight.short=ARST -America/Argentina/Buenos_Aires.generic.short=ART -America/Argentina/Buenos_Aires.standard.short=ART -America/Argentina/Catamarca.daylight.short=ARST -America/Argentina/Catamarca.generic.short=ART -America/Argentina/Catamarca.standard.short=ART -America/Argentina/ComodRivadavia.daylight.short=ARST -America/Argentina/ComodRivadavia.generic.short=ART -America/Argentina/ComodRivadavia.standard.short=ART -America/Argentina/Cordoba.daylight.short=ARST -America/Argentina/Cordoba.generic.short=ART -America/Argentina/Cordoba.standard.short=ART -America/Argentina/Jujuy.daylight.short=ARST -America/Argentina/Jujuy.generic.short=ART -America/Argentina/Jujuy.standard.short=ART -America/Argentina/La_Rioja.daylight.short=ARST -America/Argentina/La_Rioja.generic.short=ART -America/Argentina/La_Rioja.standard.short=ART -America/Argentina/Mendoza.daylight.short=ARST -America/Argentina/Mendoza.generic.short=ART -America/Argentina/Mendoza.standard.short=ART -America/Argentina/Rio_Gallegos.daylight.short=ARST -America/Argentina/Rio_Gallegos.generic.short=ART -America/Argentina/Rio_Gallegos.standard.short=ART -America/Argentina/Salta.daylight.short=ARST -America/Argentina/Salta.generic.short=ART -America/Argentina/Salta.standard.short=ART -America/Argentina/San_Juan.daylight.short=ARST -America/Argentina/San_Juan.generic.short=ART -America/Argentina/San_Juan.standard.short=ART -America/Argentina/San_Luis.daylight.short=ARST -America/Argentina/San_Luis.generic.short=ART -America/Argentina/San_Luis.standard.short=ART -America/Argentina/Tucuman.daylight.short=ARST -America/Argentina/Tucuman.generic.short=ART -America/Argentina/Tucuman.standard.short=ART -America/Argentina/Ushuaia.daylight.short=ARST -America/Argentina/Ushuaia.generic.short=ART -America/Argentina/Ushuaia.standard.short=ART -America/Aruba.daylight.short=ADT -America/Aruba.generic.short=AT -America/Aruba.standard.short=AST -America/Asuncion.daylight.short=PYST -America/Asuncion.generic.short=PYT -America/Asuncion.standard.short=PYT -America/Atikokan.daylight.short=EDT -America/Atikokan.generic.short=ET -America/Atikokan.standard.short=EST -America/Atka.daylight.short=HADT -America/Atka.generic.short=HAT -America/Atka.standard.short=HAST -America/Bahia_Banderas.daylight.short=CDT -America/Bahia_Banderas.generic.short=CT -America/Bahia_Banderas.standard.short=CST -America/Bahia.daylight.short=BRST -America/Bahia.generic.short=BRT -America/Bahia.standard.short=BRT -America/Barbados.daylight.short=ADT -America/Barbados.generic.short=AT -America/Barbados.standard.short=AST -America/Belem.daylight.short=BRST -America/Belem.generic.short=BRT -America/Belem.standard.short=BRT -America/Belize.daylight.short=CDT -America/Belize.generic.short=CT -America/Belize.standard.short=CST -America/Blanc-Sablon.daylight.short=ADT -America/Blanc-Sablon.generic.short=AT -America/Blanc-Sablon.standard.short=AST -America/Boa_Vista.daylight.short=AMST -America/Boa_Vista.generic.short=AMT -America/Boa_Vista.standard.short=AMT -America/Bogota.daylight.short=COST -America/Bogota.generic.short=COT -America/Bogota.standard.short=COT -America/Boise.daylight.short=MDT -America/Boise.generic.short=MT -America/Boise.standard.short=MST -America/Buenos_Aires.daylight.short=ARST -America/Buenos_Aires.generic.short=ART -America/Buenos_Aires.standard.short=ART -America/Cambridge_Bay.daylight.short=MDT -America/Cambridge_Bay.generic.short=MT -America/Cambridge_Bay.standard.short=MST -America/Campo_Grande.daylight.short=AMST -America/Campo_Grande.generic.short=AMT -America/Campo_Grande.standard.short=AMT -America/Cancun.daylight.short=CDT -America/Cancun.generic.short=CT -America/Cancun.standard.short=CST -America/Caracas.daylight.short=VEST -America/Caracas.generic.short=VET -America/Caracas.standard.short=VET -America/Catamarca.daylight.short=ARST -America/Catamarca.generic.short=ART -America/Catamarca.standard.short=ART -America/Cayenne.daylight.short=GFST -America/Cayenne.generic.short=GFT -America/Cayenne.standard.short=GFT -America/Cayman.daylight.short=EDT -America/Cayman.generic.short=ET -America/Cayman.standard.short=EST -America/Chicago.daylight.short=CDT -America/Chicago.generic.short=CT -America/Chicago.standard.short=CST -America/Chihuahua.daylight.short=MDT -America/Chihuahua.generic.short=MT -America/Chihuahua.standard.short=MST -America/Coral_Harbour.daylight.short=EDT -America/Coral_Harbour.generic.short=ET -America/Coral_Harbour.standard.short=EST -America/Cordoba.daylight.short=ARST -America/Cordoba.generic.short=ART -America/Cordoba.standard.short=ART -America/Costa_Rica.daylight.short=CDT -America/Costa_Rica.generic.short=CT -America/Costa_Rica.standard.short=CST -America/Creston.daylight.short=MDT -America/Creston.generic.short=MT -America/Creston.standard.short=MST -America/Cuiaba.daylight.short=AMST -America/Cuiaba.generic.short=AMT -America/Cuiaba.standard.short=AMT -America/Curacao.daylight.short=ADT -America/Curacao.generic.short=AT -America/Curacao.standard.short=AST -America/Danmarkshavn.daylight.short=GMT -America/Danmarkshavn.generic.short=GMT -America/Danmarkshavn.standard.short=GMT -America/Dawson_Creek.daylight.short=MDT -America/Dawson_Creek.generic.short=MT -America/Dawson_Creek.standard.short=MST -America/Dawson.daylight.short=PDT -America/Dawson.generic.short=PT -America/Dawson.standard.short=PST -America/Denver.daylight.short=MDT -America/Denver.generic.short=MT -America/Denver.standard.short=MST -America/Detroit.daylight.short=EDT -America/Detroit.generic.short=ET -America/Detroit.standard.short=EST -America/Dominica.daylight.short=ADT -America/Dominica.generic.short=AT -America/Dominica.standard.short=AST -America/Edmonton.daylight.short=MDT -America/Edmonton.generic.short=MT -America/Edmonton.standard.short=MST -America/Eirunepe.daylight.short=ACST -America/Eirunepe.generic.short=ACT -America/Eirunepe.standard.short=ACT -America/El_Salvador.daylight.short=CDT -America/El_Salvador.generic.short=CT -America/El_Salvador.standard.short=CST -America/Ensenada.daylight.short=PDT -America/Ensenada.generic.short=PT -America/Ensenada.standard.short=PST -America/Fortaleza.daylight.short=BRST -America/Fortaleza.generic.short=BRT -America/Fortaleza.standard.short=BRT -America/Fort_Wayne.daylight.short=EDT -America/Fort_Wayne.generic.short=ET -America/Fort_Wayne.standard.short=EST -America/Glace_Bay.daylight.short=ADT -America/Glace_Bay.generic.short=AT -America/Glace_Bay.standard.short=AST -America/Godthab.daylight.short=WGST -America/Godthab.generic.short=WGT -America/Godthab.standard.short=WGT -America/Goose_Bay.daylight.short=ADT -America/Goose_Bay.generic.short=AT -America/Goose_Bay.standard.short=AST -America/Grand_Turk.daylight.short=EDT -America/Grand_Turk.generic.short=ET -America/Grand_Turk.standard.short=EST -America/Grenada.daylight.short=ADT -America/Grenada.generic.short=AT -America/Grenada.standard.short=AST -America/Guadeloupe.daylight.short=ADT -America/Guadeloupe.generic.short=AT -America/Guadeloupe.standard.short=AST -America/Guatemala.daylight.short=CDT -America/Guatemala.generic.short=CT -America/Guatemala.standard.short=CST -America/Guayaquil.daylight.short=ECST -America/Guayaquil.generic.short=ECT -America/Guayaquil.standard.short=ECT -America/Guyana.daylight.short=GYST -America/Guyana.generic.short=GYT -America/Guyana.standard.short=GYT -America/Halifax.daylight.short=ADT -America/Halifax.generic.short=AT -America/Halifax.standard.short=AST -America/Havana.daylight.short=CDT -America/Havana.generic.short=CT -America/Havana.standard.short=CST -America/Hermosillo.daylight.short=MDT -America/Hermosillo.generic.short=MT -America/Hermosillo.standard.short=MST -America/Indiana/Indianapolis.daylight.short=EDT -America/Indiana/Indianapolis.generic.short=ET -America/Indiana/Indianapolis.standard.short=EST -America/Indiana/Knox.daylight.short=CDT -America/Indiana/Knox.generic.short=CT -America/Indiana/Knox.standard.short=CST -America/Indiana/Marengo.daylight.short=EDT -America/Indiana/Marengo.generic.short=ET -America/Indiana/Marengo.standard.short=EST -America/Indiana/Petersburg.daylight.short=EDT -America/Indiana/Petersburg.generic.short=ET -America/Indiana/Petersburg.standard.short=EST -America/Indianapolis.daylight.short=EDT -America/Indianapolis.generic.short=ET -America/Indianapolis.standard.short=EST -America/Indiana/Tell_City.daylight.short=CDT -America/Indiana/Tell_City.generic.short=CT -America/Indiana/Tell_City.standard.short=CST -America/Indiana/Vevay.daylight.short=EDT -America/Indiana/Vevay.generic.short=ET -America/Indiana/Vevay.standard.short=EST -America/Indiana/Vincennes.daylight.short=EDT -America/Indiana/Vincennes.generic.short=ET -America/Indiana/Vincennes.standard.short=EST -America/Indiana/Winamac.daylight.short=EDT -America/Indiana/Winamac.generic.short=ET -America/Indiana/Winamac.standard.short=EST -America/Inuvik.daylight.short=MDT -America/Inuvik.generic.short=MT -America/Inuvik.standard.short=MST -America/Iqaluit.daylight.short=EDT -America/Iqaluit.generic.short=ET -America/Iqaluit.standard.short=EST -America/Jamaica.daylight.short=EDT -America/Jamaica.generic.short=ET -America/Jamaica.standard.short=EST -America/Jujuy.daylight.short=ARST -America/Jujuy.generic.short=ART -America/Jujuy.standard.short=ART -America/Juneau.daylight.short=AKDT -America/Juneau.generic.short=AKT -America/Juneau.standard.short=AKST -America/Kentucky/Louisville.daylight.short=EDT -America/Kentucky/Louisville.generic.short=ET -America/Kentucky/Louisville.standard.short=EST -America/Kentucky/Monticello.daylight.short=EDT -America/Kentucky/Monticello.generic.short=ET -America/Kentucky/Monticello.standard.short=EST -America/Knox_IN.daylight.short=CDT -America/Knox_IN.generic.short=CT -America/Knox_IN.standard.short=CST -America/Kralendijk.daylight.short=ADT -America/Kralendijk.generic.short=AT -America/Kralendijk.standard.short=AST -America/La_Paz.daylight.short=BOST -America/La_Paz.generic.short=BOT -America/La_Paz.standard.short=BOT -America/Lima.daylight.short=PEST -America/Lima.generic.short=PET -America/Lima.standard.short=PET -America/Los_Angeles.daylight.short=PDT -America/Los_Angeles.generic.short=PT -America/Los_Angeles.standard.short=PST -America/Louisville.daylight.short=EDT -America/Louisville.generic.short=ET -America/Louisville.standard.short=EST -America/Lower_Princes.daylight.short=ADT -America/Lower_Princes.generic.short=AT -America/Lower_Princes.standard.short=AST -America/Maceio.daylight.short=BRST -America/Maceio.generic.short=BRT -America/Maceio.standard.short=BRT -America/Managua.daylight.short=CDT -America/Managua.generic.short=CT -America/Managua.standard.short=CST -America/Manaus.daylight.short=AMST -America/Manaus.generic.short=AMT -America/Manaus.standard.short=AMT -America/Marigot.daylight.short=ADT -America/Marigot.generic.short=AT -America/Marigot.standard.short=AST -America/Martinique.daylight.short=ADT -America/Martinique.generic.short=AT -America/Martinique.standard.short=AST -America/Matamoros.daylight.short=CDT -America/Matamoros.generic.short=CT -America/Matamoros.standard.short=CST -America/Mazatlan.daylight.short=MDT -America/Mazatlan.generic.short=MT -America/Mazatlan.standard.short=MST -America/Mendoza.daylight.short=ARST -America/Mendoza.generic.short=ART -America/Mendoza.standard.short=ART -America/Menominee.daylight.short=CDT -America/Menominee.generic.short=CT -America/Menominee.standard.short=CST -America/Merida.daylight.short=CDT -America/Merida.generic.short=CT -America/Merida.standard.short=CST -America/Metlakatla.daylight.short=MeDT -America/Metlakatla.generic.short=MeT -America/Metlakatla.standard.short=MeST -America/Mexico_City.daylight.short=CDT -America/Mexico_City.generic.short=CT -America/Mexico_City.standard.short=CST -America/Miquelon.daylight.short=PMDT -America/Miquelon.generic.short=PMT -America/Miquelon.standard.short=PMST -America/Moncton.daylight.short=ADT -America/Moncton.generic.short=AT -America/Moncton.standard.short=AST -America/Monterrey.daylight.short=CDT -America/Monterrey.generic.short=CT -America/Monterrey.standard.short=CST -America/Montevideo.daylight.short=UYST -America/Montevideo.generic.short=UYT -America/Montevideo.standard.short=UYT -America/Montreal.daylight.short=EDT -America/Montreal.generic.short=ET -America/Montreal.standard.short=EST -America/Montserrat.daylight.short=ADT -America/Montserrat.generic.short=AT -America/Montserrat.standard.short=AST -America/Nassau.daylight.short=EDT -America/Nassau.generic.short=ET -America/Nassau.standard.short=EST -America/New_York.daylight.short=EDT -America/New_York.generic.short=ET -America/New_York.standard.short=EST -America/Nipigon.daylight.short=EDT -America/Nipigon.generic.short=ET -America/Nipigon.standard.short=EST -America/Nome.daylight.short=AKDT -America/Nome.generic.short=AKT -America/Nome.standard.short=AKST -America/Noronha.daylight.short=FNST -America/Noronha.generic.short=FNT -America/Noronha.standard.short=FNT -America/North_Dakota/Beulah.daylight.short=CDT -America/North_Dakota/Beulah.generic.short=CT -America/North_Dakota/Beulah.standard.short=CST -America/North_Dakota/Center.daylight.short=CDT -America/North_Dakota/Center.generic.short=CT -America/North_Dakota/Center.standard.short=CST -America/North_Dakota/New_Salem.daylight.short=CDT -America/North_Dakota/New_Salem.generic.short=CT -America/North_Dakota/New_Salem.standard.short=CST -America/Ojinaga.daylight.short=MDT -America/Ojinaga.generic.short=MT -America/Ojinaga.standard.short=MST -America/Panama.daylight.short=EDT -America/Panama.generic.short=ET -America/Panama.standard.short=EST -America/Pangnirtung.daylight.short=EDT -America/Pangnirtung.generic.short=ET -America/Pangnirtung.standard.short=EST -America/Paramaribo.daylight.short=SRST -America/Paramaribo.generic.short=SRT -America/Paramaribo.standard.short=SRT -America/Phoenix.daylight.short=MDT -America/Phoenix.generic.short=MT -America/Phoenix.standard.short=MST -America/Port-au-Prince.daylight.short=EDT -America/Port-au-Prince.generic.short=ET -America/Port-au-Prince.standard.short=EST -America/Porto_Acre.daylight.short=ACST -America/Porto_Acre.generic.short=ACT -America/Porto_Acre.standard.short=ACT -America/Port_of_Spain.daylight.short=ADT -America/Port_of_Spain.generic.short=AT -America/Port_of_Spain.standard.short=AST -America/Porto_Velho.daylight.short=AMST -America/Porto_Velho.generic.short=AMT -America/Porto_Velho.standard.short=AMT -America/Puerto_Rico.daylight.short=ADT -America/Puerto_Rico.generic.short=AT -America/Puerto_Rico.standard.short=AST -America/Rainy_River.daylight.short=CDT -America/Rainy_River.generic.short=CT -America/Rainy_River.standard.short=CST -America/Rankin_Inlet.daylight.short=CDT -America/Rankin_Inlet.generic.short=CT -America/Rankin_Inlet.standard.short=CST -America/Recife.daylight.short=BRST -America/Recife.generic.short=BRT -America/Recife.standard.short=BRT -America/Regina.daylight.short=CDT -America/Regina.generic.short=CT -America/Regina.standard.short=CST -America/Resolute.daylight.short=CDT -America/Resolute.generic.short=CT -America/Resolute.standard.short=CST -America/Rio_Branco.daylight.short=ACST -America/Rio_Branco.generic.short=ACT -America/Rio_Branco.standard.short=ACT -America/Rosario.daylight.short=ARST -America/Rosario.generic.short=ART -America/Rosario.standard.short=ART -America/Santa_Isabel.daylight.short=PDT -America/Santa_Isabel.generic.short=PT -America/Santa_Isabel.standard.short=PST -America/Santarem.daylight.short=BRST -America/Santarem.generic.short=BRT -America/Santarem.standard.short=BRT -America/Santiago.daylight.short=CLST -America/Santiago.generic.short=CLT -America/Santiago.standard.short=CLT -America/Santo_Domingo.daylight.short=ADT -America/Santo_Domingo.generic.short=AT -America/Santo_Domingo.standard.short=AST -America/Sao_Paulo.daylight.short=BRST -America/Sao_Paulo.generic.short=BRT -America/Sao_Paulo.standard.short=BRT -America/Scoresbysund.daylight.short=EGST -America/Scoresbysund.generic.short=EGT -America/Scoresbysund.standard.short=EGT -America/Shiprock.daylight.short=MDT -America/Shiprock.generic.short=MT -America/Shiprock.standard.short=MST -America/Sitka.daylight.short=AKDT -America/Sitka.generic.short=AKT -America/Sitka.standard.short=AKST -America/St_Barthelemy.daylight.short=ADT -America/St_Barthelemy.generic.short=AT -America/St_Barthelemy.standard.short=AST -America/St_Johns.daylight.short=NDT -America/St_Johns.generic.short=NT -America/St_Johns.standard.short=NST -America/St_Kitts.daylight.short=ADT -America/St_Kitts.generic.short=AT -America/St_Kitts.standard.short=AST -America/St_Lucia.daylight.short=ADT -America/St_Lucia.generic.short=AT -America/St_Lucia.standard.short=AST -America/St_Thomas.daylight.short=ADT -America/St_Thomas.generic.short=AT -America/St_Thomas.standard.short=AST -America/St_Vincent.daylight.short=ADT -America/St_Vincent.generic.short=AT -America/St_Vincent.standard.short=AST -America/Swift_Current.daylight.short=CDT -America/Swift_Current.generic.short=CT -America/Swift_Current.standard.short=CST -America/Tegucigalpa.daylight.short=CDT -America/Tegucigalpa.generic.short=CT -America/Tegucigalpa.standard.short=CST -America/Thule.daylight.short=ADT -America/Thule.generic.short=AT -America/Thule.standard.short=AST -America/Thunder_Bay.daylight.short=EDT -America/Thunder_Bay.generic.short=ET -America/Thunder_Bay.standard.short=EST -America/Tijuana.daylight.short=PDT -America/Tijuana.generic.short=PT -America/Tijuana.standard.short=PST -America/Toronto.daylight.short=EDT -America/Toronto.generic.short=ET -America/Toronto.standard.short=EST -America/Tortola.daylight.short=ADT -America/Tortola.generic.short=AT -America/Tortola.standard.short=AST -America/Vancouver.daylight.short=PDT -America/Vancouver.generic.short=PT -America/Vancouver.standard.short=PST -America/Virgin.daylight.short=ADT -America/Virgin.generic.short=AT -America/Virgin.standard.short=AST -America/Whitehorse.daylight.short=PDT -America/Whitehorse.generic.short=PT -America/Whitehorse.standard.short=PST -America/Winnipeg.daylight.short=CDT -America/Winnipeg.generic.short=CT -America/Winnipeg.standard.short=CST -America/Yakutat.daylight.short=AKDT -America/Yakutat.generic.short=AKT -America/Yakutat.standard.short=AKST -America/Yellowknife.daylight.short=MDT -America/Yellowknife.generic.short=MT -America/Yellowknife.standard.short=MST -Antarctica/Casey.daylight.short=WST -Antarctica/Casey.generic.short=WT -Antarctica/Casey.standard.short=WST -Antarctica/Davis.daylight.short=DAVST -Antarctica/Davis.generic.short=DAVT -Antarctica/Davis.standard.short=DAVT -Antarctica/DumontDUrville.daylight.short=DDUST -Antarctica/DumontDUrville.generic.short=DDUT -Antarctica/DumontDUrville.standard.short=DDUT -Antarctica/Macquarie.daylight.short=MIST -Antarctica/Macquarie.generic.short=MIST -Antarctica/Macquarie.standard.short=MIST -Antarctica/Mawson.daylight.short=MAWST -Antarctica/Mawson.generic.short=MAWT -Antarctica/Mawson.standard.short=MAWT -Antarctica/McMurdo.daylight.short=NZDT -Antarctica/McMurdo.generic.short=NZT -Antarctica/McMurdo.standard.short=NZST -Antarctica/Palmer.daylight.short=CLST -Antarctica/Palmer.generic.short=CLT -Antarctica/Palmer.standard.short=CLT -Antarctica/Rothera.daylight.short=ROTST -Antarctica/Rothera.generic.short=ROTT -Antarctica/Rothera.standard.short=ROTT -Antarctica/South_Pole.daylight.short=NZDT -Antarctica/South_Pole.generic.short=NZT -Antarctica/South_Pole.standard.short=NZST -Antarctica/Syowa.daylight.short=SYOST -Antarctica/Syowa.generic.short=SYOT -Antarctica/Syowa.standard.short=SYOT -Antarctica/Vostok.daylight.short=VOSST -Antarctica/Vostok.generic.short=VOST -Antarctica/Vostok.standard.short=VOST -Arctic/Longyearbyen.daylight.short=CEST -Arctic/Longyearbyen.generic.short=CET -Arctic/Longyearbyen.standard.short=CET -ART.daylight.short=EEST -ART.generic.short=EET -ART.standard.short=EET -Asia/Aden.daylight.short=ADT -Asia/Aden.generic.short=AT -Asia/Aden.standard.short=AST -Asia/Almaty.daylight.short=ALMST -Asia/Almaty.generic.short=ALMT -Asia/Almaty.standard.short=ALMT -Asia/Amman.daylight.short=ADT -Asia/Amman.generic.short=AT -Asia/Amman.standard.short=AST -Asia/Anadyr.daylight.short=ANAST -Asia/Anadyr.generic.short=ANAT -Asia/Anadyr.standard.short=ANAT -Asia/Aqtau.daylight.short=AQTST -Asia/Aqtau.generic.short=AQTT -Asia/Aqtau.standard.short=AQTT -Asia/Aqtobe.daylight.short=AQTST -Asia/Aqtobe.generic.short=AQTT -Asia/Aqtobe.standard.short=AQTT -Asia/Ashgabat.daylight.short=TMST -Asia/Ashgabat.generic.short=TMT -Asia/Ashgabat.standard.short=TMT -Asia/Ashkhabad.daylight.short=TMST -Asia/Ashkhabad.generic.short=TMT -Asia/Ashkhabad.standard.short=TMT -Asia/Baghdad.daylight.short=ADT -Asia/Baghdad.generic.short=AT -Asia/Baghdad.standard.short=AST -Asia/Bahrain.daylight.short=ADT -Asia/Bahrain.generic.short=AT -Asia/Bahrain.standard.short=AST -Asia/Baku.daylight.short=AZST -Asia/Baku.generic.short=AZT -Asia/Baku.standard.short=AZT -Asia/Bangkok.daylight.short=ICST -Asia/Bangkok.generic.short=ICT -Asia/Bangkok.standard.short=ICT -Asia/Beirut.daylight.short=EEST -Asia/Beirut.generic.short=EET -Asia/Beirut.standard.short=EET -Asia/Bishkek.daylight.short=KGST -Asia/Bishkek.generic.short=KGT -Asia/Bishkek.standard.short=KGT -Asia/Brunei.daylight.short=BNST -Asia/Brunei.generic.short=BNT -Asia/Brunei.standard.short=BNT -Asia/Calcutta.daylight.short=IDT -Asia/Calcutta.generic.short=IT -Asia/Calcutta.standard.short=IST -Asia/Choibalsan.daylight.short=CHOST -Asia/Choibalsan.generic.short=CHOT -Asia/Choibalsan.standard.short=CHOT -Asia/Chongqing.daylight.short=CDT -Asia/Chongqing.generic.short=CT -Asia/Chongqing.standard.short=CST -Asia/Chungking.daylight.short=CDT -Asia/Chungking.generic.short=CT -Asia/Chungking.standard.short=CST -Asia/Colombo.daylight.short=IDT -Asia/Colombo.generic.short=IT -Asia/Colombo.standard.short=IST -Asia/Dacca.daylight.short=BDST -Asia/Dacca.generic.short=BDT -Asia/Dacca.standard.short=BDT -Asia/Damascus.daylight.short=EEST -Asia/Damascus.generic.short=EET -Asia/Damascus.standard.short=EET -Asia/Dhaka.daylight.short=BDST -Asia/Dhaka.generic.short=BDT -Asia/Dhaka.standard.short=BDT -Asia/Dili.daylight.short=TLST -Asia/Dili.generic.short=TLT -Asia/Dili.standard.short=TLT -Asia/Dubai.daylight.short=GDT -Asia/Dubai.generic.short=GT -Asia/Dubai.standard.short=GST -Asia/Dushanbe.daylight.short=TJST -Asia/Dushanbe.generic.short=TJT -Asia/Dushanbe.standard.short=TJT -Asia/Gaza.daylight.short=EEST -Asia/Gaza.generic.short=EET -Asia/Gaza.standard.short=EET -Asia/Harbin.daylight.short=CDT -Asia/Harbin.generic.short=CT -Asia/Harbin.standard.short=CST -Asia/Hebron.daylight.short=EEST -Asia/Hebron.generic.short=EET -Asia/Hebron.standard.short=EET -Asia/Ho_Chi_Minh.daylight.short=ICST -Asia/Ho_Chi_Minh.generic.short=ICT -Asia/Ho_Chi_Minh.standard.short=ICT -Asia/Hong_Kong.daylight.short=HKST -Asia/Hong_Kong.generic.short=HKT -Asia/Hong_Kong.standard.short=HKT -Asia/Hovd.daylight.short=HOVST -Asia/Hovd.generic.short=HOVT -Asia/Hovd.standard.short=HOVT -Asia/Irkutsk.daylight.short=IRKST -Asia/Irkutsk.generic.short=IRKT -Asia/Irkutsk.standard.short=IRKT -Asia/Istanbul.daylight.short=EEST -Asia/Istanbul.generic.short=EET -Asia/Istanbul.standard.short=EET -Asia/Jakarta.daylight.short=WIST -Asia/Jakarta.generic.short=WIB -Asia/Jakarta.standard.short=WIB -Asia/Jayapura.daylight.short=EIST -Asia/Jayapura.generic.short=WIT -Asia/Jayapura.standard.short=WIT -Asia/Jerusalem.daylight.short=IDT -Asia/Jerusalem.generic.short=IT -Asia/Jerusalem.standard.short=IST -Asia/Kabul.daylight.short=AFST -Asia/Kabul.generic.short=AFT -Asia/Kabul.standard.short=AFT -Asia/Kamchatka.daylight.short=PETST -Asia/Kamchatka.generic.short=PETT -Asia/Kamchatka.standard.short=PETT -Asia/Karachi.daylight.short=PKST -Asia/Karachi.generic.short=PKT -Asia/Karachi.standard.short=PKT -Asia/Kashgar.daylight.short=CDT -Asia/Kashgar.generic.short=CT -Asia/Kashgar.standard.short=CST -Asia/Kathmandu.daylight.short=NPST -Asia/Kathmandu.generic.short=NPT -Asia/Kathmandu.standard.short=NPT -Asia/Katmandu.daylight.short=NPST -Asia/Katmandu.generic.short=NPT -Asia/Katmandu.standard.short=NPT -Asia/Khandyga.daylight.short=YAKST -Asia/Khandyga.generic.short=YAKT -Asia/Khandyga.standard.short=YAKT -Asia/Kolkata.daylight.short=IDT -Asia/Kolkata.generic.short=IT -Asia/Kolkata.standard.short=IST -Asia/Krasnoyarsk.daylight.short=KRAST -Asia/Krasnoyarsk.generic.short=KRAT -Asia/Krasnoyarsk.standard.short=KRAT -Asia/Kuala_Lumpur.daylight.short=MYST -Asia/Kuala_Lumpur.generic.short=MYT -Asia/Kuala_Lumpur.standard.short=MYT -Asia/Kuching.daylight.short=MYST -Asia/Kuching.generic.short=MYT -Asia/Kuching.standard.short=MYT -Asia/Kuwait.daylight.short=ADT -Asia/Kuwait.generic.short=AT -Asia/Kuwait.standard.short=AST -Asia/Macao.daylight.short=CDT -Asia/Macao.generic.short=CT -Asia/Macao.standard.short=CST -Asia/Macau.daylight.short=CDT -Asia/Macau.generic.short=CT -Asia/Macau.standard.short=CST -Asia/Magadan.daylight.short=MAGST -Asia/Magadan.generic.short=MAGT -Asia/Magadan.standard.short=MAGT -Asia/Makassar.daylight.short=CIST -Asia/Makassar.generic.short=WITA -Asia/Makassar.standard.short=WITA -Asia/Manila.daylight.short=PHST -Asia/Manila.generic.short=PHT -Asia/Manila.standard.short=PHT -Asia/Muscat.daylight.short=GDT -Asia/Muscat.generic.short=GT -Asia/Muscat.standard.short=GST -Asia/Nicosia.daylight.short=EEST -Asia/Nicosia.generic.short=EET -Asia/Nicosia.standard.short=EET -Asia/Novokuznetsk.daylight.short=NOVST -Asia/Novokuznetsk.generic.short=NOVT -Asia/Novokuznetsk.standard.short=NOVT -Asia/Novosibirsk.daylight.short=NOVST -Asia/Novosibirsk.generic.short=NOVT -Asia/Novosibirsk.standard.short=NOVT -Asia/Omsk.daylight.short=OMSST -Asia/Omsk.generic.short=OMST -Asia/Omsk.standard.short=OMST -Asia/Oral.daylight.short=ORAST -Asia/Oral.generic.short=ORAT -Asia/Oral.standard.short=ORAT -Asia/Phnom_Penh.daylight.short=ICST -Asia/Phnom_Penh.generic.short=ICT -Asia/Phnom_Penh.standard.short=ICT -Asia/Pontianak.daylight.short=WIST -Asia/Pontianak.generic.short=WIB -Asia/Pontianak.standard.short=WIB -Asia/Pyongyang.daylight.short=KDT -Asia/Pyongyang.generic.short=KT -Asia/Pyongyang.standard.short=KST -Asia/Qatar.daylight.short=ADT -Asia/Qatar.generic.short=AT -Asia/Qatar.standard.short=AST -Asia/Qyzylorda.daylight.short=QYZST -Asia/Qyzylorda.generic.short=QYZT -Asia/Qyzylorda.standard.short=QYZT -Asia/Rangoon.daylight.short=MMST -Asia/Rangoon.generic.short=MMT -Asia/Rangoon.standard.short=MMT -Asia/Saigon.daylight.short=ICST -Asia/Saigon.generic.short=ICT -Asia/Saigon.standard.short=ICT -Asia/Sakhalin.daylight.short=SAKST -Asia/Sakhalin.generic.short=SAKT -Asia/Sakhalin.standard.short=SAKT -Asia/Samarkand.daylight.short=UZST -Asia/Samarkand.generic.short=UZT -Asia/Samarkand.standard.short=UZT -Asia/Seoul.daylight.short=KDT -Asia/Seoul.generic.short=KT -Asia/Seoul.standard.short=KST -Asia/Shanghai.daylight.short=CDT -Asia/Shanghai.generic.short=CT -Asia/Shanghai.standard.short=CST -Asia/Singapore.daylight.short=SGST -Asia/Singapore.generic.short=SGT -Asia/Singapore.standard.short=SGT -Asia/Taipei.daylight.short=CDT -Asia/Taipei.generic.short=CT -Asia/Taipei.standard.short=CST -Asia/Tashkent.daylight.short=UZST -Asia/Tashkent.generic.short=UZT -Asia/Tashkent.standard.short=UZT -Asia/Tbilisi.daylight.short=GEST -Asia/Tbilisi.generic.short=GET -Asia/Tbilisi.standard.short=GET -Asia/Tehran.daylight.short=IRDT -Asia/Tehran.generic.short=IRT -Asia/Tehran.standard.short=IRST -Asia/Tel_Aviv.daylight.short=IDT -Asia/Tel_Aviv.generic.short=IT -Asia/Tel_Aviv.standard.short=IST -Asia/Thimbu.daylight.short=BTST -Asia/Thimbu.generic.short=BTT -Asia/Thimbu.standard.short=BTT -Asia/Thimphu.daylight.short=BTST -Asia/Thimphu.generic.short=BTT -Asia/Thimphu.standard.short=BTT -Asia/Tokyo.daylight.short=JDT -Asia/Tokyo.generic.short=JT -Asia/Tokyo.standard.short=JST -Asia/Ujung_Pandang.daylight.short=CIST -Asia/Ujung_Pandang.generic.short=WITA -Asia/Ujung_Pandang.standard.short=WITA -Asia/Ulaanbaatar.daylight.short=ULAST -Asia/Ulaanbaatar.generic.short=ULAT -Asia/Ulaanbaatar.standard.short=ULAT -Asia/Ulan_Bator.daylight.short=ULAST -Asia/Ulan_Bator.generic.short=ULAT -Asia/Ulan_Bator.standard.short=ULAT -Asia/Urumqi.daylight.short=CDT -Asia/Urumqi.generic.short=CT -Asia/Urumqi.standard.short=CST -Asia/Ust-Nera.daylight.short=VLAST -Asia/Ust-Nera.generic.short=VLAT -Asia/Ust-Nera.standard.short=VLAT -Asia/Vientiane.daylight.short=ICST -Asia/Vientiane.generic.short=ICT -Asia/Vientiane.standard.short=ICT -Asia/Vladivostok.daylight.short=VLAST -Asia/Vladivostok.generic.short=VLAT -Asia/Vladivostok.standard.short=VLAT -Asia/Yakutsk.daylight.short=YAKST -Asia/Yakutsk.generic.short=YAKT -Asia/Yakutsk.standard.short=YAKT -Asia/Yekaterinburg.daylight.short=YEKST -Asia/Yekaterinburg.generic.short=YEKT -Asia/Yekaterinburg.standard.short=YEKT -Asia/Yerevan.daylight.short=AMST -Asia/Yerevan.generic.short=AMT -Asia/Yerevan.standard.short=AMT -AST.daylight.short=AKDT -AST.generic.short=AKT -AST.standard.short=AKST -Atlantic/Azores.daylight.short=AZOST -Atlantic/Azores.generic.short=AZOT -Atlantic/Azores.standard.short=AZOT -Atlantic/Bermuda.daylight.short=ADT -Atlantic/Bermuda.generic.short=AT -Atlantic/Bermuda.standard.short=AST -Atlantic/Canary.daylight.short=WEST -Atlantic/Canary.generic.short=WET -Atlantic/Canary.standard.short=WET -Atlantic/Cape_Verde.daylight.short=CVST -Atlantic/Cape_Verde.generic.short=CVT -Atlantic/Cape_Verde.standard.short=CVT -Atlantic/Faeroe.daylight.short=WEST -Atlantic/Faeroe.generic.short=WET -Atlantic/Faeroe.standard.short=WET -Atlantic/Faroe.daylight.short=WEST -Atlantic/Faroe.generic.short=WET -Atlantic/Faroe.standard.short=WET -Atlantic/Jan_Mayen.daylight.short=CEST -Atlantic/Jan_Mayen.generic.short=CET -Atlantic/Jan_Mayen.standard.short=CET -Atlantic/Madeira.daylight.short=WEST -Atlantic/Madeira.generic.short=WET -Atlantic/Madeira.standard.short=WET -Atlantic/Reykjavik.daylight.short=GMT -Atlantic/Reykjavik.generic.short=GMT -Atlantic/Reykjavik.standard.short=GMT -Atlantic/South_Georgia.daylight.short=GDT -Atlantic/South_Georgia.generic.short=GT -Atlantic/South_Georgia.standard.short=GST -Atlantic/Stanley.daylight.short=FKST -Atlantic/Stanley.generic.short=FKT -Atlantic/Stanley.standard.short=FKT -Atlantic/St_Helena.daylight.short=GMT -Atlantic/St_Helena.generic.short=GMT -Atlantic/St_Helena.standard.short=GMT -Australia/ACT.daylight.short=EST -Australia/ACT.generic.short=ET -Australia/ACT.standard.short=EST -Australia/Adelaide.daylight.short=CST -Australia/Adelaide.generic.short=CT -Australia/Adelaide.standard.short=CST -Australia/Brisbane.daylight.short=EST -Australia/Brisbane.generic.short=ET -Australia/Brisbane.standard.short=EST -Australia/Broken_Hill.daylight.short=CST -Australia/Broken_Hill.generic.short=CT -Australia/Broken_Hill.standard.short=CST -Australia/Canberra.daylight.short=EST -Australia/Canberra.generic.short=ET -Australia/Canberra.standard.short=EST -Australia/Currie.daylight.short=EST -Australia/Currie.generic.short=ET -Australia/Currie.standard.short=EST -Australia/Darwin.daylight.short=CST -Australia/Darwin.generic.short=CT -Australia/Darwin.standard.short=CST -Australia/Eucla.daylight.short=CWST -Australia/Eucla.generic.short=CWT -Australia/Eucla.standard.short=CWST -Australia/Hobart.daylight.short=EST -Australia/Hobart.generic.short=ET -Australia/Hobart.standard.short=EST -Australia/LHI.daylight.short=LHST -Australia/LHI.generic.short=LHT -Australia/LHI.standard.short=LHST -Australia/Lindeman.daylight.short=EST -Australia/Lindeman.generic.short=ET -Australia/Lindeman.standard.short=EST -Australia/Lord_Howe.daylight.short=LHST -Australia/Lord_Howe.generic.short=LHT -Australia/Lord_Howe.standard.short=LHST -Australia/Melbourne.daylight.short=EST -Australia/Melbourne.generic.short=ET -Australia/Melbourne.standard.short=EST -Australia/North.daylight.short=CST -Australia/North.generic.short=CT -Australia/North.standard.short=CST -Australia/NSW.daylight.short=EST -Australia/NSW.generic.short=ET -Australia/NSW.standard.short=EST -Australia/Perth.daylight.short=WST -Australia/Perth.generic.short=WT -Australia/Perth.standard.short=WST -Australia/Queensland.daylight.short=EST -Australia/Queensland.generic.short=ET -Australia/Queensland.standard.short=EST -Australia/South.daylight.short=CST -Australia/South.generic.short=CT -Australia/South.standard.short=CST -Australia/Sydney.daylight.short=EST -Australia/Sydney.generic.short=ET -Australia/Sydney.standard.short=EST -Australia/Tasmania.daylight.short=EST -Australia/Tasmania.generic.short=ET -Australia/Tasmania.standard.short=EST -Australia/Victoria.daylight.short=EST -Australia/Victoria.generic.short=ET -Australia/Victoria.standard.short=EST -Australia/West.daylight.short=WST -Australia/West.generic.short=WT -Australia/West.standard.short=WST -Australia/Yancowinna.daylight.short=CST -Australia/Yancowinna.generic.short=CT -Australia/Yancowinna.standard.short=CST -BET.daylight.short=BRST -BET.generic.short=BRT -BET.standard.short=BRT -Brazil/Acre.daylight.short=ACST -Brazil/Acre.generic.short=ACT -Brazil/Acre.standard.short=ACT -Brazil/DeNoronha.daylight.short=FNST -Brazil/DeNoronha.generic.short=FNT -Brazil/DeNoronha.standard.short=FNT -Brazil/East.daylight.short=BRST -Brazil/East.generic.short=BRT -Brazil/East.standard.short=BRT -Brazil/West.daylight.short=AMST -Brazil/West.generic.short=AMT -Brazil/West.standard.short=AMT -BST.daylight.short=BDST -BST.generic.short=BDT -BST.standard.short=BDT -Canada/Atlantic.daylight.short=ADT -Canada/Atlantic.generic.short=AT -Canada/Atlantic.standard.short=AST -Canada/Central.daylight.short=CDT -Canada/Central.generic.short=CT -Canada/Central.standard.short=CST -Canada/Eastern.daylight.short=EDT -Canada/Eastern.generic.short=ET -Canada/Eastern.standard.short=EST -Canada/East-Saskatchewan.daylight.short=CDT -Canada/East-Saskatchewan.generic.short=CT -Canada/East-Saskatchewan.standard.short=CST -Canada/Mountain.daylight.short=MDT -Canada/Mountain.generic.short=MT -Canada/Mountain.standard.short=MST -Canada/Newfoundland.daylight.short=NDT -Canada/Newfoundland.generic.short=NT -Canada/Newfoundland.standard.short=NST -Canada/Pacific.daylight.short=PDT -Canada/Pacific.generic.short=PT -Canada/Pacific.standard.short=PST -Canada/Saskatchewan.daylight.short=CDT -Canada/Saskatchewan.generic.short=CT -Canada/Saskatchewan.standard.short=CST -Canada/Yukon.daylight.short=PDT -Canada/Yukon.generic.short=PT -Canada/Yukon.standard.short=PST -CAT.daylight.short=CAST -CAT.generic.short=CAT -CAT.standard.short=CAT -CET.daylight.short=CEST -CET.generic.short=CET -CET.standard.short=CET -Chile/Continental.daylight.short=CLST -Chile/Continental.generic.short=CLT -Chile/Continental.standard.short=CLT -Chile/EasterIsland.daylight.short=EASST -Chile/EasterIsland.generic.short=EAST -Chile/EasterIsland.standard.short=EAST -CNT.daylight.short=NDT -CNT.generic.short=NT -CNT.standard.short=NST -CST6CDT.daylight.short=CDT -CST6CDT.generic.short=CT -CST6CDT.standard.short=CST -CST.daylight.short=CDT -CST.generic.short=CT -CST.standard.short=CST -CTT.daylight.short=CDT -CTT.generic.short=CT -CTT.standard.short=CST -Cuba.daylight.short=CDT -Cuba.generic.short=CT -Cuba.standard.short=CST -EAT.daylight.short=EAST -EAT.generic.short=EAT -EAT.standard.short=EAT -ECT.daylight.short=CEST -ECT.generic.short=CET -ECT.standard.short=CET -EET.daylight.short=EEST -EET.generic.short=EET -EET.standard.short=EET -Egypt.daylight.short=EEST -Egypt.generic.short=EET -Egypt.standard.short=EET -Eire.daylight.short=IST -Eire.generic.short=IT -Eire.standard.short=GMT -EST5EDT.daylight.short=EDT -EST5EDT.generic.short=ET -EST5EDT.standard.short=EST -EST.daylight.short=EDT -EST.generic.short=ET -EST.standard.short=EST -Etc/Greenwich.daylight.short=GMT -Etc/Greenwich.generic.short=GMT -Etc/Greenwich.standard.short=GMT -Etc/UCT.daylight.short=UTC -Etc/UCT.generic.short=UTC -Etc/UCT.standard.short=UTC -Etc/Universal.daylight.short=UTC -Etc/Universal.generic.short=UTC -Etc/Universal.standard.short=UTC -Etc/UTC.daylight.short=UTC -Etc/UTC.generic.short=UTC -Etc/UTC.standard.short=UTC -Etc/Zulu.daylight.short=UTC -Etc/Zulu.generic.short=UTC -Etc/Zulu.standard.short=UTC -Europe/Amsterdam.daylight.short=CEST -Europe/Amsterdam.generic.short=CET -Europe/Amsterdam.standard.short=CET -Europe/Andorra.daylight.short=CEST -Europe/Andorra.generic.short=CET -Europe/Andorra.standard.short=CET -Europe/Athens.daylight.short=EEST -Europe/Athens.generic.short=EET -Europe/Athens.standard.short=EET -Europe/Belfast.daylight.short=BST -Europe/Belfast.generic.short=BT -Europe/Belfast.standard.short=GMT -Europe/Belgrade.daylight.short=CEST -Europe/Belgrade.generic.short=CET -Europe/Belgrade.standard.short=CET -Europe/Berlin.daylight.short=CEST -Europe/Berlin.generic.short=CET -Europe/Berlin.standard.short=CET -Europe/Bratislava.daylight.short=CEST -Europe/Bratislava.generic.short=CET -Europe/Bratislava.standard.short=CET -Europe/Brussels.daylight.short=CEST -Europe/Brussels.generic.short=CET -Europe/Brussels.standard.short=CET -Europe/Bucharest.daylight.short=EEST -Europe/Bucharest.generic.short=EET -Europe/Bucharest.standard.short=EET -Europe/Budapest.daylight.short=CEST -Europe/Budapest.generic.short=CET -Europe/Budapest.standard.short=CET -Europe/Busingen.daylight.short=CEST -Europe/Busingen.generic.short=CET -Europe/Busingen.standard.short=CET -Europe/Chisinau.daylight.short=EEST -Europe/Chisinau.generic.short=EET -Europe/Chisinau.standard.short=EET -Europe/Copenhagen.daylight.short=CEST -Europe/Copenhagen.generic.short=CET -Europe/Copenhagen.standard.short=CET -Europe/Dublin.daylight.short=IST -Europe/Dublin.generic.short=IT -Europe/Dublin.standard.short=GMT -Europe/Gibraltar.daylight.short=CEST -Europe/Gibraltar.generic.short=CET -Europe/Gibraltar.standard.short=CET -Europe/Guernsey.daylight.short=BST -Europe/Guernsey.generic.short=BT -Europe/Guernsey.standard.short=GMT -Europe/Helsinki.daylight.short=EEST -Europe/Helsinki.generic.short=EET -Europe/Helsinki.standard.short=EET -Europe/Isle_of_Man.daylight.short=BST -Europe/Isle_of_Man.generic.short=BT -Europe/Isle_of_Man.standard.short=GMT -Europe/Istanbul.daylight.short=EEST -Europe/Istanbul.generic.short=EET -Europe/Istanbul.standard.short=EET -Europe/Jersey.daylight.short=BST -Europe/Jersey.generic.short=BT -Europe/Jersey.standard.short=GMT -Europe/Kaliningrad.daylight.short=FEST -Europe/Kaliningrad.generic.short=FET -Europe/Kaliningrad.standard.short=FET -Europe/Kiev.daylight.short=EEST -Europe/Kiev.generic.short=EET -Europe/Kiev.standard.short=EET -Europe/Lisbon.daylight.short=WEST -Europe/Lisbon.generic.short=WET -Europe/Lisbon.standard.short=WET -Europe/Ljubljana.daylight.short=CEST -Europe/Ljubljana.generic.short=CET -Europe/Ljubljana.standard.short=CET -Europe/London.daylight.short=BST -Europe/London.generic.short=BT -Europe/London.standard.short=GMT -Europe/Luxembourg.daylight.short=CEST -Europe/Luxembourg.generic.short=CET -Europe/Luxembourg.standard.short=CET -Europe/Madrid.daylight.short=CEST -Europe/Madrid.generic.short=CET -Europe/Madrid.standard.short=CET -Europe/Malta.daylight.short=CEST -Europe/Malta.generic.short=CET -Europe/Malta.standard.short=CET -Europe/Mariehamn.daylight.short=EEST -Europe/Mariehamn.generic.short=EET -Europe/Mariehamn.standard.short=EET -Europe/Minsk.daylight.short=FEST -Europe/Minsk.generic.short=FET -Europe/Minsk.standard.short=FET -Europe/Monaco.daylight.short=CEST -Europe/Monaco.generic.short=CET -Europe/Monaco.standard.short=CET -Europe/Moscow.daylight.short=MSD -Europe/Moscow.generic.short=MT -Europe/Moscow.standard.short=MSK -Europe/Nicosia.daylight.short=EEST -Europe/Nicosia.generic.short=EET -Europe/Nicosia.standard.short=EET -Europe/Oslo.daylight.short=CEST -Europe/Oslo.generic.short=CET -Europe/Oslo.standard.short=CET -Europe/Paris.daylight.short=CEST -Europe/Paris.generic.short=CET -Europe/Paris.standard.short=CET -Europe/Podgorica.daylight.short=CEST -Europe/Podgorica.generic.short=CET -Europe/Podgorica.standard.short=CET -Europe/Prague.daylight.short=CEST -Europe/Prague.generic.short=CET -Europe/Prague.standard.short=CET -Europe/Riga.daylight.short=EEST -Europe/Riga.generic.short=EET -Europe/Riga.standard.short=EET -Europe/Rome.daylight.short=CEST -Europe/Rome.generic.short=CET -Europe/Rome.standard.short=CET -Europe/Samara.daylight.short=SAMST -Europe/Samara.generic.short=SAMT -Europe/Samara.standard.short=SAMT -Europe/San_Marino.daylight.short=CEST -Europe/San_Marino.generic.short=CET -Europe/San_Marino.standard.short=CET -Europe/Sarajevo.daylight.short=CEST -Europe/Sarajevo.generic.short=CET -Europe/Sarajevo.standard.short=CET -Europe/Simferopol.daylight.short=EEST -Europe/Simferopol.generic.short=EET -Europe/Simferopol.standard.short=EET -Europe/Skopje.daylight.short=CEST -Europe/Skopje.generic.short=CET -Europe/Skopje.standard.short=CET -Europe/Sofia.daylight.short=EEST -Europe/Sofia.generic.short=EET -Europe/Sofia.standard.short=EET -Europe/Stockholm.daylight.short=CEST -Europe/Stockholm.generic.short=CET -Europe/Stockholm.standard.short=CET -Europe/Tallinn.daylight.short=EEST -Europe/Tallinn.generic.short=EET -Europe/Tallinn.standard.short=EET -Europe/Tirane.daylight.short=CEST -Europe/Tirane.generic.short=CET -Europe/Tirane.standard.short=CET -Europe/Tiraspol.daylight.short=EEST -Europe/Tiraspol.generic.short=EET -Europe/Tiraspol.standard.short=EET -Europe/Uzhgorod.daylight.short=EEST -Europe/Uzhgorod.generic.short=EET -Europe/Uzhgorod.standard.short=EET -Europe/Vaduz.daylight.short=CEST -Europe/Vaduz.generic.short=CET -Europe/Vaduz.standard.short=CET -Europe/Vatican.daylight.short=CEST -Europe/Vatican.generic.short=CET -Europe/Vatican.standard.short=CET -Europe/Vienna.daylight.short=CEST -Europe/Vienna.generic.short=CET -Europe/Vienna.standard.short=CET -Europe/Vilnius.daylight.short=EEST -Europe/Vilnius.generic.short=EET -Europe/Vilnius.standard.short=EET -Europe/Volgograd.daylight.short=VOLST -Europe/Volgograd.generic.short=VOLT -Europe/Volgograd.standard.short=VOLT -Europe/Warsaw.daylight.short=CEST -Europe/Warsaw.generic.short=CET -Europe/Warsaw.standard.short=CET -Europe/Zagreb.daylight.short=CEST -Europe/Zagreb.generic.short=CET -Europe/Zagreb.standard.short=CET -Europe/Zaporozhye.daylight.short=EEST -Europe/Zaporozhye.generic.short=EET -Europe/Zaporozhye.standard.short=EET -Europe/Zurich.daylight.short=CEST -Europe/Zurich.generic.short=CET -Europe/Zurich.standard.short=CET -GB.daylight.short=BST -GB-Eire.daylight.short=BST -GB-Eire.generic.short=BT -GB-Eire.standard.short=GMT -GB.generic.short=BT -GB.standard.short=GMT -GMT.daylight.short=GMT -GMT.generic.short=GMT -GMT.standard.short=GMT -Greenwich.daylight.short=GMT -Greenwich.generic.short=GMT -Greenwich.standard.short=GMT -Hongkong.daylight.short=HKST -Hongkong.generic.short=HKT -Hongkong.standard.short=HKT -HST.daylight.short=HDT -HST.generic.short=HT -HST.standard.short=HST -Iceland.daylight.short=GMT -Iceland.generic.short=GMT -Iceland.standard.short=GMT -IET.daylight.short=EDT -IET.generic.short=ET -IET.standard.short=EST -Indian/Antananarivo.daylight.short=EAST -Indian/Antananarivo.generic.short=EAT -Indian/Antananarivo.standard.short=EAT -Indian/Chagos.daylight.short=IOST -Indian/Chagos.generic.short=IOT -Indian/Chagos.standard.short=IOT -Indian/Christmas.daylight.short=CXST -Indian/Christmas.generic.short=CIT -Indian/Christmas.standard.short=CXT -Indian/Cocos.daylight.short=CCST -Indian/Cocos.generic.short=CCT -Indian/Cocos.standard.short=CCT -Indian/Comoro.daylight.short=EAST -Indian/Comoro.generic.short=EAT -Indian/Comoro.standard.short=EAT -Indian/Kerguelen.daylight.short=TFST -Indian/Kerguelen.generic.short=TFT -Indian/Kerguelen.standard.short=TFT -Indian/Mahe.daylight.short=SCST -Indian/Mahe.generic.short=SCT -Indian/Mahe.standard.short=SCT -Indian/Maldives.daylight.short=MVST -Indian/Maldives.generic.short=MVT -Indian/Maldives.standard.short=MVT -Indian/Mauritius.daylight.short=MUST -Indian/Mauritius.generic.short=MUT -Indian/Mauritius.standard.short=MUT -Indian/Mayotte.daylight.short=EAST -Indian/Mayotte.generic.short=EAT -Indian/Mayotte.standard.short=EAT -Indian/Reunion.daylight.short=REST -Indian/Reunion.generic.short=RET -Indian/Reunion.standard.short=RET -Iran.daylight.short=IRDT -Iran.generic.short=IRT -Iran.standard.short=IRST -Israel.daylight.short=IDT -Israel.generic.short=IT -Israel.standard.short=IST -IST.daylight.short=IDT -IST.generic.short=IT -IST.standard.short=IST -Jamaica.daylight.short=EDT -Jamaica.generic.short=ET -Jamaica.standard.short=EST -Japan.daylight.short=JDT -Japan.generic.short=JT -Japan.standard.short=JST -JST.daylight.short=JDT -JST.generic.short=JT -JST.standard.short=JST -Kwajalein.daylight.short=MHST -Kwajalein.generic.short=MHT -Kwajalein.standard.short=MHT -Libya.daylight.short=EEST -Libya.generic.short=EET -Libya.standard.short=EET -MET.daylight.short=MEST -MET.generic.short=MET -MET.standard.short=MET -Mexico/BajaNorte.daylight.short=PDT -Mexico/BajaNorte.generic.short=PT -Mexico/BajaNorte.standard.short=PST -Mexico/BajaSur.daylight.short=MDT -Mexico/BajaSur.generic.short=MT -Mexico/BajaSur.standard.short=MST -Mexico/General.daylight.short=CDT -Mexico/General.generic.short=CT -Mexico/General.standard.short=CST -MIT.daylight.short=WSDT -MIT.generic.short=WST -MIT.standard.short=WST -MST7MDT.daylight.short=MDT -MST7MDT.generic.short=MT -MST7MDT.standard.short=MST -MST.daylight.short=MDT -MST.generic.short=MT -MST.standard.short=MST -Navajo.daylight.short=MDT -Navajo.generic.short=MT -Navajo.standard.short=MST -NET.daylight.short=AMST -NET.generic.short=AMT -NET.standard.short=AMT -NST.daylight.short=NZDT -NST.generic.short=NZT -NST.standard.short=NZST -NZ-CHAT.daylight.short=CHADT -NZ-CHAT.generic.short=CHAT -NZ-CHAT.standard.short=CHAST -NZ.daylight.short=NZDT -NZ.generic.short=NZT -NZ.standard.short=NZST -Pacific/Apia.daylight.short=WSDT -Pacific/Apia.generic.short=WST -Pacific/Apia.standard.short=WST -Pacific/Auckland.daylight.short=NZDT -Pacific/Auckland.generic.short=NZT -Pacific/Auckland.standard.short=NZST -Pacific/Chatham.daylight.short=CHADT -Pacific/Chatham.generic.short=CHAT -Pacific/Chatham.standard.short=CHAST -Pacific/Chuuk.daylight.short=CHUST -Pacific/Chuuk.generic.short=CHUT -Pacific/Chuuk.standard.short=CHUT -Pacific/Easter.daylight.short=EASST -Pacific/Easter.generic.short=EAST -Pacific/Easter.standard.short=EAST -Pacific/Efate.daylight.short=VUST -Pacific/Efate.generic.short=VUT -Pacific/Efate.standard.short=VUT -Pacific/Enderbury.daylight.short=PHOST -Pacific/Enderbury.generic.short=PHOT -Pacific/Enderbury.standard.short=PHOT -Pacific/Fakaofo.daylight.short=TKST -Pacific/Fakaofo.generic.short=TKT -Pacific/Fakaofo.standard.short=TKT -Pacific/Fiji.daylight.short=FJST -Pacific/Fiji.generic.short=FJT -Pacific/Fiji.standard.short=FJT -Pacific/Funafuti.daylight.short=TVST -Pacific/Funafuti.generic.short=TVT -Pacific/Funafuti.standard.short=TVT -Pacific/Galapagos.daylight.short=GALST -Pacific/Galapagos.generic.short=GALT -Pacific/Galapagos.standard.short=GALT -Pacific/Gambier.daylight.short=GAMST -Pacific/Gambier.generic.short=GAMT -Pacific/Gambier.standard.short=GAMT -Pacific/Guadalcanal.daylight.short=SBST -Pacific/Guadalcanal.generic.short=SBT -Pacific/Guadalcanal.standard.short=SBT -Pacific/Guam.daylight.short=ChDT -Pacific/Guam.generic.short=ChT -Pacific/Guam.standard.short=ChST -Pacific/Honolulu.daylight.short=HDT -Pacific/Honolulu.generic.short=HT -Pacific/Honolulu.standard.short=HST -Pacific/Johnston.daylight.short=HDT -Pacific/Johnston.generic.short=HT -Pacific/Johnston.standard.short=HST -Pacific/Kiritimati.daylight.short=LINST -Pacific/Kiritimati.generic.short=LINT -Pacific/Kiritimati.standard.short=LINT -Pacific/Kosrae.daylight.short=KOSST -Pacific/Kosrae.generic.short=KOST -Pacific/Kosrae.standard.short=KOST -Pacific/Kwajalein.daylight.short=MHST -Pacific/Kwajalein.generic.short=MHT -Pacific/Kwajalein.standard.short=MHT -Pacific/Majuro.daylight.short=MHST -Pacific/Majuro.generic.short=MHT -Pacific/Majuro.standard.short=MHT -Pacific/Marquesas.daylight.short=MARST -Pacific/Marquesas.generic.short=MART -Pacific/Marquesas.standard.short=MART -Pacific/Midway.daylight.short=SDT -Pacific/Midway.generic.short=ST -Pacific/Midway.standard.short=SST -Pacific/Nauru.daylight.short=NRST -Pacific/Nauru.generic.short=NRT -Pacific/Nauru.standard.short=NRT -Pacific/Niue.daylight.short=NUST -Pacific/Niue.generic.short=NUT -Pacific/Niue.standard.short=NUT -Pacific/Norfolk.daylight.short=NFST -Pacific/Norfolk.generic.short=NFT -Pacific/Norfolk.standard.short=NFT -Pacific/Noumea.daylight.short=NCST -Pacific/Noumea.generic.short=NCT -Pacific/Noumea.standard.short=NCT -Pacific/Pago_Pago.daylight.short=SDT -Pacific/Pago_Pago.generic.short=ST -Pacific/Pago_Pago.standard.short=SST -Pacific/Palau.daylight.short=PWST -Pacific/Palau.generic.short=PWT -Pacific/Palau.standard.short=PWT -Pacific/Pitcairn.daylight.short=PDT -Pacific/Pitcairn.generic.short=PT -Pacific/Pitcairn.standard.short=PST -Pacific/Pohnpei.daylight.short=PONST -Pacific/Pohnpei.generic.short=PONT -Pacific/Pohnpei.standard.short=PONT -Pacific/Ponape.daylight.short=PONST -Pacific/Ponape.generic.short=PONT -Pacific/Ponape.standard.short=PONT -Pacific/Port_Moresby.daylight.short=PGST -Pacific/Port_Moresby.generic.short=PGT -Pacific/Port_Moresby.standard.short=PGT -Pacific/Rarotonga.daylight.short=CKHST -Pacific/Rarotonga.generic.short=CKT -Pacific/Rarotonga.standard.short=CKT -Pacific/Saipan.daylight.short=ChDT -Pacific/Saipan.generic.short=ChT -Pacific/Saipan.standard.short=ChST -Pacific/Samoa.daylight.short=SDT -Pacific/Samoa.generic.short=ST -Pacific/Samoa.standard.short=SST -Pacific/Tahiti.daylight.short=TAHST -Pacific/Tahiti.generic.short=TAHT -Pacific/Tahiti.standard.short=TAHT -Pacific/Tarawa.daylight.short=GILST -Pacific/Tarawa.generic.short=GILT -Pacific/Tarawa.standard.short=GILT -Pacific/Tongatapu.daylight.short=TOST -Pacific/Tongatapu.generic.short=TOT -Pacific/Tongatapu.standard.short=TOT -Pacific/Truk.daylight.short=CHUST -Pacific/Truk.generic.short=CHUT -Pacific/Truk.standard.short=CHUT -Pacific/Wake.daylight.short=WAKST -Pacific/Wake.generic.short=WAKT -Pacific/Wake.standard.short=WAKT -Pacific/Wallis.daylight.short=WFST -Pacific/Wallis.generic.short=WFT -Pacific/Wallis.standard.short=WFT -Pacific/Yap.daylight.short=CHUST -Pacific/Yap.generic.short=CHUT -Pacific/Yap.standard.short=CHUT -PLT.daylight.short=PKST -PLT.generic.short=PKT -PLT.standard.short=PKT -PNT.daylight.short=MDT -PNT.generic.short=MT -PNT.standard.short=MST -Poland.daylight.short=CEST -Poland.generic.short=CET -Poland.standard.short=CET -Portugal.daylight.short=WEST -Portugal.generic.short=WET -Portugal.standard.short=WET -PRC.daylight.short=CDT -PRC.generic.short=CT -PRC.standard.short=CST -PRT.daylight.short=ADT -PRT.generic.short=AT -PRT.standard.short=AST -PST8PDT.daylight.short=PDT -PST8PDT.generic.short=PT -PST8PDT.standard.short=PST -PST.daylight.short=PDT -PST.generic.short=PT -PST.standard.short=PST -ROK.daylight.short=KDT -ROK.generic.short=KT -ROK.standard.short=KST -Singapore.daylight.short=SGST -Singapore.generic.short=SGT -Singapore.standard.short=SGT -SST.daylight.short=SBST -SST.generic.short=SBT -SST.standard.short=SBT -SystemV/AST4ADT.daylight.short=ADT -SystemV/AST4ADT.generic.short=AT -SystemV/AST4ADT.standard.short=AST -SystemV/AST4.daylight.short=ADT -SystemV/AST4.generic.short=AT -SystemV/AST4.standard.short=AST -SystemV/CST6CDT.daylight.short=CDT -SystemV/CST6CDT.generic.short=CT -SystemV/CST6CDT.standard.short=CST -SystemV/CST6.daylight.short=CDT -SystemV/CST6.generic.short=CT -SystemV/CST6.standard.short=CST -SystemV/EST5.daylight.short=EDT -SystemV/EST5EDT.daylight.short=EDT -SystemV/EST5EDT.generic.short=ET -SystemV/EST5EDT.standard.short=EST -SystemV/EST5.generic.short=ET -SystemV/EST5.standard.short=EST -SystemV/HST10.daylight.short=HDT -SystemV/HST10.generic.short=HT -SystemV/HST10.standard.short=HST -SystemV/MST7.daylight.short=MDT -SystemV/MST7.generic.short=MT -SystemV/MST7MDT.daylight.short=MDT -SystemV/MST7MDT.generic.short=MT -SystemV/MST7MDT.standard.short=MST -SystemV/MST7.standard.short=MST -SystemV/PST8.daylight.short=PDT -SystemV/PST8.generic.short=PT -SystemV/PST8PDT.daylight.short=PDT -SystemV/PST8PDT.generic.short=PT -SystemV/PST8PDT.standard.short=PST -SystemV/PST8.standard.short=PST -SystemV/YST9.daylight.short=AKDT -SystemV/YST9.generic.short=AKT -SystemV/YST9.standard.short=AKST -SystemV/YST9YDT.daylight.short=AKDT -SystemV/YST9YDT.generic.short=AKT -SystemV/YST9YDT.standard.short=AKST -Turkey.daylight.short=EEST -Turkey.generic.short=EET -Turkey.standard.short=EET -UCT.daylight.short=UTC -UCT.generic.short=UTC -UCT.standard.short=UTC -Universal.daylight.short=UTC -Universal.generic.short=UTC -Universal.standard.short=UTC -US/Alaska.daylight.short=AKDT -US/Alaska.generic.short=AKT -US/Alaska.standard.short=AKST -US/Aleutian.daylight.short=HADT -US/Aleutian.generic.short=HAT -US/Aleutian.standard.short=HAST -US/Arizona.daylight.short=MDT -US/Arizona.generic.short=MT -US/Arizona.standard.short=MST -US/Central.daylight.short=CDT -US/Central.generic.short=CT -US/Central.standard.short=CST -US/Eastern.daylight.short=EDT -US/Eastern.generic.short=ET -US/Eastern.standard.short=EST -US/East-Indiana.daylight.short=EDT -US/East-Indiana.generic.short=ET -US/East-Indiana.standard.short=EST -US/Hawaii.daylight.short=HDT -US/Hawaii.generic.short=HT -US/Hawaii.standard.short=HST -US/Indiana-Starke.daylight.short=CDT -US/Indiana-Starke.generic.short=CT -US/Indiana-Starke.standard.short=CST -US/Michigan.daylight.short=EDT -US/Michigan.generic.short=ET -US/Michigan.standard.short=EST -US/Mountain.daylight.short=MDT -US/Mountain.generic.short=MT -US/Mountain.standard.short=MST -US/Pacific.daylight.short=PDT -US/Pacific.generic.short=PT -US/Pacific-New.daylight.short=PDT -US/Pacific-New.generic.short=PT -US/Pacific-New.standard.short=PST -US/Pacific.standard.short=PST -US/Samoa.daylight.short=SDT -US/Samoa.generic.short=ST -US/Samoa.standard.short=SST -UTC.daylight.short=UTC -UTC.generic.short=UTC -UTC.standard.short=UTC -VST.daylight.short=ICST -VST.generic.short=ICT -VST.standard.short=ICT -WET.daylight.short=WEST -WET.generic.short=WET -WET.standard.short=WET -W-SU.daylight.short=MSD -W-SU.generic.short=MT -W-SU.standard.short=MSK -Zulu.daylight.short=UTC -Zulu.generic.short=UTC -Zulu.standard.short=UTC diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ja.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ja.properties deleted file mode 100644 index ac5a86d36ba..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ja.properties +++ /dev/null @@ -1,651 +0,0 @@ -ACT.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC) -ACT.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC) -ACT.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC) -AET.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -AET.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -AET.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -AGT.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -ART.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -AST.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593 -Africa/Abidjan.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Africa/Accra.generic.long=\u30AC\u30FC\u30CA\u6A19\u6E96\u6642 -Africa/Addis_Ababa.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Algiers.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Africa/Asmara.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Asmera.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Bamako.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Africa/Bangui.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Banjul.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Africa/Bissau.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Africa/Blantyre.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Brazzaville.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Bujumbura.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Cairo.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Africa/Casablanca.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Africa/Ceuta.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Africa/Conakry.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Africa/Dakar.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Africa/Dar_es_Salaam.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Djibouti.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Douala.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/El_Aaiun.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Africa/Freetown.generic.long=\u30B7\u30A8\u30E9\u30EC\u30AA\u30CD\u6642\u9593 -Africa/Gaborone.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Harare.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Johannesburg.generic.long=\u5357\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Juba.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Kampala.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Khartoum.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Kigali.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Kinshasa.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Lagos.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Libreville.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Lome.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Africa/Luanda.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Lubumbashi.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Lusaka.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Malabo.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Maputo.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Maseru.generic.long=\u5357\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Mbabane.generic.long=\u5357\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Mogadishu.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Monrovia.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Africa/Nairobi.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Ndjamena.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Niamey.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Nouakchott.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Africa/Ouagadougou.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Africa/Porto-Novo.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Africa/Sao_Tome.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Africa/Timbuktu.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Africa/Tripoli.generic.long=\u6771\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593 -Africa/Tunis.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Africa/Windhoek.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -America/Adak.generic.long=\u30CF\u30EF\u30A4\u30FB\u30A2\u30EA\u30E5\u30FC\u30B7\u30E3\u30F3\u6642\u9593 -America/Anchorage.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593 -America/Anguilla.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Antigua.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Araguaina.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593 -America/Argentina/Buenos_Aires.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Argentina/Catamarca.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Argentina/ComodRivadavia.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Argentina/Cordoba.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Argentina/Jujuy.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Argentina/La_Rioja.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Argentina/Mendoza.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Argentina/Rio_Gallegos.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Argentina/Salta.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Argentina/San_Juan.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Argentina/San_Luis.generic.long=\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593 -America/Argentina/Tucuman.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Argentina/Ushuaia.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Aruba.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Asuncion.generic.long=\u30D1\u30E9\u30B0\u30A2\u30A4\u6642\u9593 -America/Atikokan.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Atka.generic.long=\u30CF\u30EF\u30A4\u30FB\u30A2\u30EA\u30E5\u30FC\u30B7\u30E3\u30F3\u6642\u9593 -America/Bahia.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593 -America/Bahia_Banderas.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Barbados.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Belem.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593 -America/Belize.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Blanc-Sablon.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Boa_Vista.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593 -America/Bogota.generic.long=\u30B3\u30ED\u30F3\u30D3\u30A2\u6642\u9593 -America/Boise.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -America/Buenos_Aires.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Cambridge_Bay.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -America/Campo_Grande.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593 -America/Cancun.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Caracas.generic.long=\u30D9\u30CD\u30BA\u30A8\u30E9\u6642\u9593 -America/Catamarca.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Cayenne.generic.long=\u30D5\u30E9\u30F3\u30B9\u9818\u30AE\u30A2\u30CA\u6642\u9593 -America/Cayman.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Chicago.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Chihuahua.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -America/Coral_Harbour.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Cordoba.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Costa_Rica.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Creston.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -America/Cuiaba.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593 -America/Curacao.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Danmarkshavn.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -America/Dawson.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -America/Dawson_Creek.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -America/Denver.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -America/Detroit.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Dominica.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Edmonton.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -America/Eirunepe.generic.long=\u30a2\u30af\u30ec\u6642\u9593 -America/El_Salvador.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Ensenada.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -America/Fort_Wayne.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Fortaleza.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593 -America/Glace_Bay.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Godthab.generic.long=\u897F\u90E8\u30B0\u30EA\u30FC\u30F3\u30E9\u30F3\u30C9\u6642\u9593 -America/Goose_Bay.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Grand_Turk.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Grenada.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Guadeloupe.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Guatemala.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Guayaquil.generic.long=\u30A8\u30AF\u30A2\u30C9\u30EB\u6642\u9593 -America/Guyana.generic.long=\u30AC\u30A4\u30A2\u30CA\u6642\u9593 -America/Halifax.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Havana.generic.long=\u30AD\u30E5\u30FC\u30D0\u6642\u9593 -America/Hermosillo.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -America/Indiana/Indianapolis.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Indiana/Knox.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Indiana/Marengo.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Indiana/Petersburg.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Indiana/Tell_City.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Indiana/Vevay.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Indiana/Vincennes.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Indiana/Winamac.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Indianapolis.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Inuvik.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -America/Iqaluit.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Jamaica.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Jujuy.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Juneau.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593 -America/Kentucky/Louisville.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Kentucky/Monticello.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Knox_IN.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Kralendijk.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/La_Paz.generic.long=\u30DC\u30EA\u30D3\u30A2\u6642\u9593 -America/Lima.generic.long=\u30DA\u30EB\u30FC\u6642\u9593 -America/Los_Angeles.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -America/Louisville.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Lower_Princes.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Maceio.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593 -America/Managua.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Manaus.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593 -America/Marigot.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Martinique.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Matamoros.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Mazatlan.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -America/Mendoza.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Menominee.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Merida.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Metlakatla.daylight.long=\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u590F\u6642\u9593 -America/Metlakatla.generic.long=\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u6642\u9593 -America/Metlakatla.standard.long=\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u6A19\u6E96\u6642\u9593 -America/Mexico_City.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Miquelon.generic.long=\u30D4\u30A8\u30FC\u30EB\u30FB\u30DF\u30AF\u30ED\u30F3\u6642\u9593 -America/Moncton.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Monterrey.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Montevideo.generic.long=\u30A6\u30EB\u30B0\u30A2\u30A4\u6642\u9593 -America/Montreal.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Montserrat.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Nassau.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/New_York.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Nipigon.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Nome.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593 -America/Noronha.generic.long=\u30D5\u30A7\u30EB\u30CA\u30F3\u30C9\u30FB\u30C7\u30FB\u30CE\u30ED\u30FC\u30CB\u30E3\u6642\u9593 -America/North_Dakota/Beulah.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/North_Dakota/Center.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/North_Dakota/New_Salem.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Ojinaga.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -America/Panama.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Pangnirtung.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Paramaribo.generic.long=\u30B9\u30EA\u30CA\u30E0\u6642\u9593 -America/Phoenix.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -America/Port-au-Prince.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Port_of_Spain.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Porto_Acre.generic.long=\u30a2\u30af\u30ec\u6642\u9593 -America/Porto_Velho.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593 -America/Puerto_Rico.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Rainy_River.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Rankin_Inlet.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Recife.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593 -America/Regina.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Resolute.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Rio_Branco.generic.long=\u30a2\u30af\u30ec\u6642\u9593 -America/Rosario.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593 -America/Santa_Isabel.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -America/Santarem.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593 -America/Santiago.generic.long=\u30C1\u30EA\u6642\u9593 -America/Santo_Domingo.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Sao_Paulo.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593 -America/Scoresbysund.generic.long=\u6771\u90E8\u30B0\u30EA\u30FC\u30F3\u30E9\u30F3\u30C9\u6642\u9593 -America/Shiprock.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -America/Sitka.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593 -America/St_Barthelemy.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/St_Johns.generic.long=\u30CB\u30E5\u30FC\u30D5\u30A1\u30F3\u30C9\u30E9\u30F3\u30C9\u6642\u9593 -America/St_Kitts.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/St_Lucia.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/St_Thomas.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/St_Vincent.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Swift_Current.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Tegucigalpa.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Thule.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Thunder_Bay.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Tijuana.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -America/Toronto.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -America/Tortola.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Vancouver.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -America/Virgin.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -America/Whitehorse.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -America/Winnipeg.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -America/Yakutat.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593 -America/Yellowknife.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -Antarctica/Casey.daylight.long=\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Antarctica/Casey.generic.long=\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Antarctica/Casey.standard.long=\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Antarctica/Davis.generic.long=\u30C7\u30FC\u30D3\u30B9\u6642\u9593 -Antarctica/DumontDUrville.generic.long=\u30C7\u30E5\u30E2\u30F3\u30FB\u30C7\u30E5\u30EB\u30D3\u30EB\u6642\u9593 -Antarctica/Macquarie.daylight.long=\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u590F\u6642\u9593 -Antarctica/Macquarie.generic.long=\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u6642\u9593 -Antarctica/Macquarie.standard.long=\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u6642\u9593 -Antarctica/Mawson.generic.long=\u30E2\u30FC\u30BD\u30F3\u6642\u9593 -Antarctica/McMurdo.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593 -Antarctica/Palmer.generic.long=\u30C1\u30EA\u6642\u9593 -Antarctica/Rothera.generic.long=\u30ED\u30BC\u30E9\u6642\u9593 -Antarctica/South_Pole.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593 -Antarctica/Syowa.generic.long=\u662D\u548C\u57FA\u5730\u6642\u9593 -Antarctica/Vostok.generic.long=\u30DC\u30B9\u30C8\u30FC\u30AF\u6642\u9593 -Arctic/Longyearbyen.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Asia/Aden.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593 -Asia/Almaty.generic.long=\u30A2\u30EB\u30DE\u30A2\u30BF\u6642\u9593 -Asia/Amman.generic.long=\u30a2\u30e9\u30d3\u30a2\u6642\u9593 -Asia/Anadyr.generic.long=\u30A2\u30CA\u30C7\u30A3\u30EA\u6642\u9593 -Asia/Aqtau.generic.long=\u30A2\u30AF\u30BF\u30A6\u6642\u9593 -Asia/Aqtobe.generic.long=\u30A2\u30AF\u30C8\u30D9\u6642\u9593 -Asia/Ashgabat.generic.long=\u30C8\u30EB\u30AF\u30E1\u30CB\u30B9\u30BF\u30F3\u6642\u9593 -Asia/Ashkhabad.generic.long=\u30C8\u30EB\u30AF\u30E1\u30CB\u30B9\u30BF\u30F3\u6642\u9593 -Asia/Baghdad.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593 -Asia/Bahrain.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593 -Asia/Baku.generic.long=\u30A2\u30BC\u30EB\u30D0\u30A4\u30B8\u30E3\u30F3\u6642\u9593 -Asia/Bangkok.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593 -Asia/Beirut.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Asia/Bishkek.generic.long=\u30AD\u30EB\u30AE\u30B9\u6642\u9593 -Asia/Brunei.generic.long=\u30D6\u30EB\u30CD\u30A4\u6642\u9593 -Asia/Calcutta.generic.long=\u30A4\u30F3\u30C9\u6642\u9593 -Asia/Choibalsan.generic.long=\u30C1\u30E7\u30A4\u30D0\u30EB\u30B5\u30F3\u6642\u9593 -Asia/Chongqing.generic.long=\u4E2D\u56FD\u6642\u9593 -Asia/Chungking.generic.long=\u4E2D\u56FD\u6642\u9593 -Asia/Colombo.generic.long=\u30A4\u30F3\u30C9\u6642\u9593 -Asia/Dacca.generic.long=\u30D0\u30F3\u30B0\u30E9\u30C7\u30B7\u30E5\u6642\u9593 -Asia/Damascus.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Asia/Dhaka.generic.long=\u30D0\u30F3\u30B0\u30E9\u30C7\u30B7\u30E5\u6642\u9593 -Asia/Dili.generic.long=\u6771\u30C6\u30A3\u30E2\u30FC\u30EB\u6642\u9593 -Asia/Dubai.generic.long=\u6E7E\u5CB8\u6642\u9593 -Asia/Dushanbe.generic.long=\u30BF\u30B8\u30AD\u30B9\u30BF\u30F3\u6642\u9593 -Asia/Gaza.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Asia/Harbin.generic.long=\u4E2D\u56FD\u6642\u9593 -Asia/Hebron.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Asia/Ho_Chi_Minh.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593 -Asia/Hong_Kong.generic.long=\u9999\u6E2F\u6642\u9593 -Asia/Hovd.generic.long=\u30DB\u30D6\u30C9\u6642\u9593 -Asia/Irkutsk.generic.long=\u30A4\u30EB\u30AF\u30FC\u30C4\u30AF\u6642\u9593 -Asia/Istanbul.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Asia/Jakarta.generic.long=\u897F\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593 -Asia/Jayapura.generic.long=\u6771\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593 -Asia/Jerusalem.generic.long=\u30A4\u30B9\u30E9\u30A8\u30EB\u6642\u9593 -Asia/Kabul.generic.long=\u30A2\u30D5\u30AC\u30CB\u30B9\u30BF\u30F3\u6642\u9593 -Asia/Kamchatka.generic.long=\u30DA\u30C8\u30ED\u30D1\u30D6\u30ED\u30D5\u30B9\u30AF\u30FB\u30AB\u30E0\u30C1\u30E3\u30C4\u30AD\u30FC\u6642\u9593 -Asia/Karachi.generic.long=\u30D1\u30AD\u30B9\u30BF\u30F3\u6642\u9593 -Asia/Kashgar.generic.long=\u4E2D\u56FD\u6642\u9593 -Asia/Kathmandu.generic.long=\u30CD\u30D1\u30FC\u30EB\u6642\u9593 -Asia/Katmandu.generic.long=\u30CD\u30D1\u30FC\u30EB\u6642\u9593 -Asia/Khandyga.daylight.long=\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u590F\u6642\u9593 -Asia/Khandyga.generic.long=\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u6642\u9593 -Asia/Khandyga.standard.long=\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u6642\u9593 -Asia/Kolkata.generic.long=\u30A4\u30F3\u30C9\u6642\u9593 -Asia/Krasnoyarsk.generic.long=\u30AF\u30E9\u30B9\u30CE\u30E4\u30EB\u30B9\u30AF\u6642\u9593 -Asia/Kuala_Lumpur.generic.long=\u30DE\u30EC\u30FC\u30B7\u30A2\u6642\u9593 -Asia/Kuching.generic.long=\u30DE\u30EC\u30FC\u30B7\u30A2\u6642\u9593 -Asia/Kuwait.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593 -Asia/Macao.generic.long=\u4E2D\u56FD\u6642\u9593 -Asia/Macau.generic.long=\u4E2D\u56FD\u6642\u9593 -Asia/Magadan.generic.long=\u30DE\u30AC\u30C0\u30F3\u6642\u9593 -Asia/Makassar.generic.long=\u4E2D\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593 -Asia/Manila.generic.long=\u30D5\u30A3\u30EA\u30D4\u30F3\u6642\u9593 -Asia/Muscat.generic.long=\u6E7E\u5CB8\u6642\u9593 -Asia/Nicosia.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Asia/Novokuznetsk.generic.long=\u30CE\u30F4\u30A9\u30B7\u30D3\u30EB\u30B9\u30AF\u6642\u9593 -Asia/Novosibirsk.generic.long=\u30CE\u30F4\u30A9\u30B7\u30D3\u30EB\u30B9\u30AF\u6642\u9593 -Asia/Omsk.generic.long=\u30AA\u30E0\u30B9\u30AF\u6642\u9593 -Asia/Oral.generic.long=\u30AA\u30E9\u30EB\u6642\u9593 -Asia/Phnom_Penh.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593 -Asia/Pontianak.generic.long=\u897F\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593 -Asia/Pyongyang.generic.long=\u97D3\u56FD\u6642\u9593 -Asia/Qatar.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593 -Asia/Qyzylorda.generic.long=\u30AF\u30BA\u30ED\u30EB\u30C0\u6642\u9593 -Asia/Rangoon.generic.long=\u30DF\u30E3\u30F3\u30DE\u30FC\u6642\u9593 -Asia/Saigon.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593 -Asia/Sakhalin.generic.long=\u30B5\u30CF\u30EA\u30F3\u6642\u9593 -Asia/Samarkand.generic.long=\u30A6\u30BA\u30D9\u30AD\u30B9\u30BF\u30F3\u6642\u9593 -Asia/Seoul.generic.long=\u97D3\u56FD\u6642\u9593 -Asia/Shanghai.generic.long=\u4E2D\u56FD\u6642\u9593 -Asia/Singapore.generic.long=\u30B7\u30F3\u30AC\u30DD\u30FC\u30EB\u6642\u9593 -Asia/Taipei.generic.long=\u4E2D\u56FD\u6642\u9593 -Asia/Tashkent.generic.long=\u30A6\u30BA\u30D9\u30AD\u30B9\u30BF\u30F3\u6642\u9593 -Asia/Tbilisi.generic.long=\u30B0\u30EB\u30B8\u30A2\u6642\u9593 -Asia/Tehran.generic.long=\u30A4\u30E9\u30F3\u6642\u9593 -Asia/Tel_Aviv.generic.long=\u30A4\u30B9\u30E9\u30A8\u30EB\u6642\u9593 -Asia/Thimbu.generic.long=\u30D6\u30FC\u30BF\u30F3\u6642\u9593 -Asia/Thimphu.generic.long=\u30D6\u30FC\u30BF\u30F3\u6642\u9593 -Asia/Tokyo.generic.long=\u65E5\u672C\u6642\u9593 -Asia/Ujung_Pandang.generic.long=\u4E2D\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593 -Asia/Ulaanbaatar.generic.long=\u30A6\u30E9\u30F3\u30D0\u30FC\u30C8\u30EB\u6642\u9593 -Asia/Ulan_Bator.generic.long=\u30A6\u30E9\u30F3\u30D0\u30FC\u30C8\u30EB\u6642\u9593 -Asia/Urumqi.generic.long=\u4E2D\u56FD\u6642\u9593 -Asia/Ust-Nera.daylight.long=\u30A6\u30B9\u30C1\u30CD\u30E9\u590F\u6642\u9593 -Asia/Ust-Nera.generic.long=\u30A6\u30B9\u30C1\u30CD\u30E9\u6642\u9593 -Asia/Ust-Nera.standard.long=\u30A6\u30B9\u30C1\u30CD\u30E9\u6642\u9593 -Asia/Vientiane.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593 -Asia/Vladivostok.generic.long=\u30A6\u30E9\u30B8\u30AA\u30B9\u30C8\u30AF\u6642\u9593 -Asia/Yakutsk.generic.long=\u30E4\u30AF\u30FC\u30C4\u30AF\u6642\u9593 -Asia/Yekaterinburg.generic.long=\u30A8\u30AB\u30C6\u30EA\u30F3\u30D6\u30EB\u30AF\u6642\u9593 -Asia/Yerevan.generic.long=\u30A2\u30EB\u30E1\u30CB\u30A2\u6642\u9593 -Atlantic/Azores.generic.long=\u30A2\u30BE\u30EC\u30B9\u6642\u9593 -Atlantic/Bermuda.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -Atlantic/Canary.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Atlantic/Cape_Verde.generic.long=\u30AB\u30FC\u30DC\u30D9\u30EB\u30C7\u6642\u9593 -Atlantic/Faeroe.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Atlantic/Faroe.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Atlantic/Jan_Mayen.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Atlantic/Madeira.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Atlantic/Reykjavik.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Atlantic/South_Georgia.generic.long=\u5357\u30B8\u30E7\u30FC\u30B8\u30A2\u6642\u9593 -Atlantic/St_Helena.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Atlantic/Stanley.generic.long=\u30D5\u30A9\u30FC\u30AF\u30E9\u30F3\u30C9\u8AF8\u5CF6\u6642\u9593 -Australia/ACT.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/ACT.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/ACT.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Adelaide.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/Adelaide.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/Adelaide.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/Brisbane.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9) -Australia/Brisbane.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9) -Australia/Brisbane.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9) -Australia/Broken_Hill.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Broken_Hill.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Broken_Hill.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Canberra.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Canberra.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Canberra.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Currie.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Currie.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Currie.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Darwin.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC) -Australia/Darwin.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC) -Australia/Darwin.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC) -Australia/Eucla.daylight.long=\u4E2D\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/Eucla.generic.long=\u4E2D\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/Eucla.standard.long=\u4E2D\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/Hobart.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30BF\u30B9\u30DE\u30CB\u30A2) -Australia/Hobart.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2) -Australia/Hobart.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2) -Australia/LHI.generic.long=\u30ED\u30FC\u30C9\u30CF\u30A6\u6642\u9593 -Australia/Lindeman.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9) -Australia/Lindeman.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9) -Australia/Lindeman.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9) -Australia/Lord_Howe.generic.long=\u30ED\u30FC\u30C9\u30CF\u30A6\u6642\u9593 -Australia/Melbourne.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30D3\u30AF\u30C8\u30EA\u30A2) -Australia/Melbourne.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2) -Australia/Melbourne.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2) -Australia/NSW.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/NSW.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/NSW.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/North.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC) -Australia/North.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC) -Australia/North.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC) -Australia/Perth.daylight.long=\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/Perth.generic.long=\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/Perth.standard.long=\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/Queensland.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9) -Australia/Queensland.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9) -Australia/Queensland.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9) -Australia/South.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/South.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/South.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/Sydney.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Sydney.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Sydney.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Tasmania.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30BF\u30B9\u30DE\u30CB\u30A2) -Australia/Tasmania.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2) -Australia/Tasmania.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2) -Australia/Victoria.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30D3\u30AF\u30C8\u30EA\u30A2) -Australia/Victoria.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2) -Australia/Victoria.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2) -Australia/West.daylight.long=\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/West.generic.long=\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/West.standard.long=\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2) -Australia/Yancowinna.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Yancowinna.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -Australia/Yancowinna.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA) -BET.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593 -BST.generic.long=\u30D0\u30F3\u30B0\u30E9\u30C7\u30B7\u30E5\u6642\u9593 -Brazil/Acre.generic.long=\u30a2\u30af\u30ec\u6642\u9593 -Brazil/DeNoronha.generic.long=\u30D5\u30A7\u30EB\u30CA\u30F3\u30C9\u30FB\u30C7\u30FB\u30CE\u30ED\u30FC\u30CB\u30E3\u6642\u9593 -Brazil/East.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593 -Brazil/West.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593 -CAT.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -CET.generic.long=\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593 -CNT.generic.long=\u30CB\u30E5\u30FC\u30D5\u30A1\u30F3\u30C9\u30E9\u30F3\u30C9\u6642\u9593 -CST.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -CST6CDT.generic.long=\u4e2d\u90e8\u6a19\u6e96\u6642 -CTT.generic.long=\u4E2D\u56FD\u6642\u9593 -Canada/Atlantic.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -Canada/Central.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -Canada/East-Saskatchewan.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -Canada/Eastern.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -Canada/Mountain.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -Canada/Newfoundland.generic.long=\u30CB\u30E5\u30FC\u30D5\u30A1\u30F3\u30C9\u30E9\u30F3\u30C9\u6642\u9593 -Canada/Pacific.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -Canada/Saskatchewan.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -Canada/Yukon.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -Chile/Continental.generic.long=\u30C1\u30EA\u6642\u9593 -Chile/EasterIsland.generic.long=\u30A4\u30FC\u30B9\u30BF\u30FC\u5CF6\u6642\u9593 -Cuba.generic.long=\u30AD\u30E5\u30FC\u30D0\u6642\u9593 -EAT.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -ECT.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -EET.generic.long=\u6771\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593 -EST.generic.long=\u6771\u90e8\u6a19\u6e96\u6642 -EST5EDT.generic.long=\u6771\u90e8\u6a19\u6e96\u6642 -Egypt.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Eire.generic.long=\u30A2\u30A4\u30EB\u30E9\u30F3\u30C9\u6642\u9593 -Etc/Greenwich.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Etc/UCT.generic.long=\u5354\u5B9A\u4E16\u754C\u6642 -Etc/UTC.generic.long=\u5354\u5B9A\u4E16\u754C\u6642 -Etc/Universal.generic.long=\u5354\u5B9A\u4E16\u754C\u6642 -Etc/Zulu.generic.long=\u5354\u5B9A\u4E16\u754C\u6642 -Europe/Amsterdam.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Andorra.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Athens.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Belfast.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593 -Europe/Belgrade.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Berlin.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Bratislava.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Brussels.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Bucharest.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Budapest.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Busingen.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Chisinau.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Copenhagen.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Dublin.generic.long=\u30A2\u30A4\u30EB\u30E9\u30F3\u30C9\u6642\u9593 -Europe/Gibraltar.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Guernsey.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593 -Europe/Helsinki.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Isle_of_Man.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593 -Europe/Istanbul.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Jersey.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593 -Europe/Kaliningrad.daylight.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u590F\u6642\u9593 -Europe/Kaliningrad.generic.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Kaliningrad.standard.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Kiev.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Lisbon.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Ljubljana.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/London.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593 -Europe/Luxembourg.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Madrid.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Malta.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Mariehamn.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Minsk.daylight.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u590F\u6642\u9593 -Europe/Minsk.generic.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Minsk.standard.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Monaco.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Moscow.generic.long=\u30E2\u30B9\u30AF\u30EF\u6642\u9593 -Europe/Nicosia.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Oslo.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Paris.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Podgorica.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Prague.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Riga.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Rome.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Samara.generic.long=\u30B5\u30DE\u30E9\u6642\u9593 -Europe/San_Marino.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Sarajevo.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Simferopol.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Skopje.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Sofia.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Stockholm.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Tallinn.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Tirane.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Tiraspol.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Uzhgorod.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Vaduz.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Vatican.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Vienna.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Vilnius.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Volgograd.generic.long=\u30DC\u30EB\u30B4\u30B0\u30E9\u30FC\u30C9\u6642\u9593 -Europe/Warsaw.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Zagreb.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Zaporozhye.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Europe/Zurich.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -GB-Eire.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593 -GB.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593 -GMT.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Greenwich.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -HST.generic.long=\u30cf\u30ef\u30a4\u6642\u9593 -Hongkong.generic.long=\u9999\u6E2F\u6642\u9593 -IET.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -IST.generic.long=\u30A4\u30F3\u30C9\u6642\u9593 -Iceland.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642 -Indian/Antananarivo.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Indian/Chagos.generic.long=\u30A4\u30F3\u30C9\u6D0B\u5730\u57DF\u6642\u9593 -Indian/Christmas.generic.long=\u30AF\u30EA\u30B9\u30DE\u30B9\u5CF6\u6642\u9593 -Indian/Cocos.generic.long=\u30B3\u30B3\u30B9\u8AF8\u5CF6\u6642\u9593 -Indian/Comoro.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Indian/Kerguelen.generic.long=\u30D5\u30E9\u30F3\u30B9\u9818\u5357\u65B9\u304A\u3088\u3073\u5357\u6975\u5927\u9678\u6642\u9593 -Indian/Mahe.generic.long=\u30BB\u30FC\u30B7\u30A7\u30EB\u6642\u9593 -Indian/Maldives.generic.long=\u30E2\u30EB\u30B8\u30D6\u6642\u9593 -Indian/Mauritius.generic.long=\u30E2\u30FC\u30EA\u30B7\u30E3\u30B9\u6642\u9593 -Indian/Mayotte.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593 -Indian/Reunion.generic.long=\u30EC\u30E6\u30CB\u30AA\u30F3\u6642\u9593 -Iran.generic.long=\u30A4\u30E9\u30F3\u6642\u9593 -Israel.generic.long=\u30A4\u30B9\u30E9\u30A8\u30EB\u6642\u9593 -JST.generic.long=\u65E5\u672C\u6642\u9593 -Jamaica.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -Japan.generic.long=\u65E5\u672C\u6642\u9593 -Kwajalein.generic.long=\u30DE\u30FC\u30B7\u30E3\u30EB\u8AF8\u5CF6\u6642\u9593 -Libya.generic.long=\u6771\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593 -MET.generic.long=MET -MIT.generic.long=\u897F\u30B5\u30E2\u30A2\u6642\u9593 -MST.generic.long=\u5c71\u5730\u6a19\u6e96\u6642 -MST7MDT.generic.long=\u5c71\u5730\u6a19\u6e96\u6642 -Mexico/BajaNorte.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -Mexico/BajaSur.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -Mexico/General.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -NET.generic.long=\u30A2\u30EB\u30E1\u30CB\u30A2\u6642\u9593 -NST.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593 -NZ-CHAT.generic.long=\u30C1\u30E3\u30BF\u30E0\u6642\u9593 -NZ.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593 -Navajo.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -PLT.generic.long=\u30D1\u30AD\u30B9\u30BF\u30F3\u6642\u9593 -PNT.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -PRC.generic.long=\u4E2D\u56FD\u6642\u9593 -PRT.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -PST.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -PST8PDT.generic.long=\u592a\u5e73\u6d0b\u6a19\u6e96\u6642 -Pacific/Apia.generic.long=\u897F\u30B5\u30E2\u30A2\u6642\u9593 -Pacific/Auckland.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593 -Pacific/Chatham.generic.long=\u30C1\u30E3\u30BF\u30E0\u6642\u9593 -Pacific/Chuuk.daylight.long=Chuuk Time -Pacific/Chuuk.generic.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593 -Pacific/Chuuk.standard.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593 -Pacific/Easter.generic.long=\u30A4\u30FC\u30B9\u30BF\u30FC\u5CF6\u6642\u9593 -Pacific/Efate.generic.long=\u30D0\u30CC\u30A2\u30C4\u6642\u9593 -Pacific/Enderbury.generic.long=\u30D5\u30A7\u30CB\u30C3\u30AF\u30B9\u8AF8\u5CF6\u6642\u9593 -Pacific/Fakaofo.generic.long=\u30C8\u30B1\u30E9\u30A6\u6642\u9593 -Pacific/Fiji.generic.long=\u30D5\u30A3\u30B8\u30FC\u6642\u9593 -Pacific/Funafuti.generic.long=\u30C4\u30D0\u30EB\u6642\u9593 -Pacific/Galapagos.generic.long=\u30AC\u30E9\u30D1\u30B4\u30B9\u6642\u9593 -Pacific/Gambier.generic.long=\u30AC\u30F3\u30D3\u30A8\u6642\u9593 -Pacific/Guadalcanal.generic.long=\u30BD\u30ED\u30E2\u30F3\u8AF8\u5CF6\u6642\u9593 -Pacific/Guam.generic.long=\u30C1\u30E3\u30E2\u30ED\u6642\u9593 -Pacific/Honolulu.generic.long=\u30CF\u30EF\u30A4\u6642\u9593 -Pacific/Johnston.generic.long=\u30CF\u30EF\u30A4\u6642\u9593 -Pacific/Kiritimati.generic.long=\u30E9\u30A4\u30F3\u8AF8\u5CF6\u6642\u9593 -Pacific/Kosrae.generic.long=\u30B3\u30B9\u30E9\u30A8\u6642\u9593 -Pacific/Kwajalein.generic.long=\u30DE\u30FC\u30B7\u30E3\u30EB\u8AF8\u5CF6\u6642\u9593 -Pacific/Majuro.generic.long=\u30DE\u30FC\u30B7\u30E3\u30EB\u8AF8\u5CF6\u6642\u9593 -Pacific/Marquesas.generic.long=\u30DE\u30EB\u30AD\u30FC\u30BA\u6642\u9593 -Pacific/Midway.generic.long=\u30B5\u30E2\u30A2\u6642\u9593 -Pacific/Nauru.generic.long=\u30CA\u30A6\u30EB\u6642\u9593 -Pacific/Niue.generic.long=\u30CB\u30A6\u30A8\u6642\u9593 -Pacific/Norfolk.generic.long=\u30CE\u30FC\u30D5\u30A9\u30FC\u30AF\u6642\u9593 -Pacific/Noumea.generic.long=\u30CB\u30E5\u30FC\u30AB\u30EC\u30C9\u30CB\u30A2\u6642\u9593 -Pacific/Pago_Pago.generic.long=\u30B5\u30E2\u30A2\u6642\u9593 -Pacific/Palau.generic.long=\u30D1\u30E9\u30AA\u6642\u9593 -Pacific/Pitcairn.generic.long=\u30D4\u30C8\u30B1\u30A2\u30F3\u6642\u9593 -Pacific/Pohnpei.daylight.long=\u30DD\u30F3\u30DA\u30A4\u590F\u6642\u9593 -Pacific/Pohnpei.generic.long=\u30DD\u30CA\u30DA\u6642\u9593 -Pacific/Pohnpei.standard.long=\u30DD\u30F3\u30DA\u30A4\u6642\u9593 -Pacific/Ponape.daylight.long=\u30DD\u30F3\u30DA\u30A4\u590F\u6642\u9593 -Pacific/Ponape.generic.long=\u30DD\u30CA\u30DA\u6642\u9593 -Pacific/Ponape.standard.long=\u30DD\u30F3\u30DA\u30A4\u6642\u9593 -Pacific/Port_Moresby.generic.long=\u30D1\u30D7\u30A2\u30CB\u30E5\u30FC\u30AE\u30CB\u30A2\u6642\u9593 -Pacific/Rarotonga.generic.long=\u30AF\u30C3\u30AF\u8AF8\u5CF6\u6642\u9593 -Pacific/Saipan.generic.long=\u30C1\u30E3\u30E2\u30ED\u6642\u9593 -Pacific/Samoa.generic.long=\u30B5\u30E2\u30A2\u6642\u9593 -Pacific/Tahiti.generic.long=\u30BF\u30D2\u30C1\u6642\u9593 -Pacific/Tarawa.generic.long=\u30AE\u30EB\u30D0\u30FC\u30C8\u8AF8\u5CF6\u6642\u9593 -Pacific/Tongatapu.generic.long=\u30C8\u30F3\u30AC\u6642\u9593 -Pacific/Truk.daylight.long=Chuuk Time -Pacific/Truk.generic.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593 -Pacific/Truk.standard.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593 -Pacific/Wake.generic.long=\u30A6\u30A7\u30FC\u30AF\u6642\u9593 -Pacific/Wallis.generic.long=\u30A6\u30A9\u30EA\u30B9\u30FB\u30D5\u30C4\u30CA\u6642\u9593 -Pacific/Yap.daylight.long=Chuuk Time -Pacific/Yap.generic.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593 -Pacific/Yap.standard.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593 -Poland.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -Portugal.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -ROK.generic.long=\u97D3\u56FD\u6642\u9593 -SST.generic.long=\u30BD\u30ED\u30E2\u30F3\u8AF8\u5CF6\u6642\u9593 -Singapore.generic.long=\u30B7\u30F3\u30AC\u30DD\u30FC\u30EB\u6642\u9593 -SystemV/AST4.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -SystemV/AST4ADT.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642 -SystemV/CST6.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -SystemV/CST6CDT.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -SystemV/EST5.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -SystemV/EST5EDT.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -SystemV/HST10.generic.long=\u30CF\u30EF\u30A4\u6642\u9593 -SystemV/MST7.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -SystemV/MST7MDT.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -SystemV/PST8.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -SystemV/PST8PDT.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -SystemV/YST9.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593 -SystemV/YST9YDT.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593 -Turkey.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593 -UCT.generic.long=\u5354\u5B9A\u4E16\u754C\u6642 -US/Alaska.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593 -US/Aleutian.generic.long=\u30CF\u30EF\u30A4\u30FB\u30A2\u30EA\u30E5\u30FC\u30B7\u30E3\u30F3\u6642\u9593 -US/Arizona.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -US/Central.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -US/East-Indiana.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -US/Eastern.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -US/Hawaii.generic.long=\u30CF\u30EF\u30A4\u6642\u9593 -US/Indiana-Starke.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642 -US/Michigan.generic.long=\u6771\u90E8\u6A19\u6E96\u6642 -US/Mountain.generic.long=\u5C71\u5730\u6A19\u6E96\u6642 -US/Pacific-New.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -US/Pacific.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642 -US/Samoa.generic.long=\u30B5\u30E2\u30A2\u6642\u9593 -UTC.generic.long=\u5354\u5B9A\u4E16\u754C\u6642 -Universal.generic.long=\u5354\u5B9A\u4E16\u754C\u6642 -VST.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593 -W-SU.generic.long=\u30E2\u30B9\u30AF\u30EF\u6642\u9593 -WET.generic.long=\u897f\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593 -Zulu.generic.long=\u5354\u5B9A\u4E16\u754C\u6642 diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ja_short.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ja_short.properties deleted file mode 100644 index 095522a68d1..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ja_short.properties +++ /dev/null @@ -1,1743 +0,0 @@ -ACT.daylight.short=CST -ACT.generic.short=CT -ACT.standard.short=CST -AET.daylight.short=EST -AET.generic.short=ET -AET.standard.short=EST -Africa/Abidjan.daylight.short=GMT -Africa/Abidjan.generic.short=GMT -Africa/Abidjan.standard.short=GMT -Africa/Accra.daylight.short=GHST -Africa/Accra.generic.short=GMT -Africa/Accra.standard.short=GMT -Africa/Addis_Ababa.daylight.short=EAST -Africa/Addis_Ababa.generic.short=EAT -Africa/Addis_Ababa.standard.short=EAT -Africa/Algiers.daylight.short=CEST -Africa/Algiers.generic.short=CET -Africa/Algiers.standard.short=CET -Africa/Asmara.daylight.short=EAST -Africa/Asmara.generic.short=EAT -Africa/Asmara.standard.short=EAT -Africa/Asmera.daylight.short=EAST -Africa/Asmera.generic.short=EAT -Africa/Asmera.standard.short=EAT -Africa/Bamako.daylight.short=GMT -Africa/Bamako.generic.short=GMT -Africa/Bamako.standard.short=GMT -Africa/Bangui.daylight.short=WAST -Africa/Bangui.generic.short=WAT -Africa/Bangui.standard.short=WAT -Africa/Banjul.daylight.short=GMT -Africa/Banjul.generic.short=GMT -Africa/Banjul.standard.short=GMT -Africa/Bissau.daylight.short=GMT -Africa/Bissau.generic.short=GMT -Africa/Bissau.standard.short=GMT -Africa/Blantyre.daylight.short=CAST -Africa/Blantyre.generic.short=CAT -Africa/Blantyre.standard.short=CAT -Africa/Brazzaville.daylight.short=WAST -Africa/Brazzaville.generic.short=WAT -Africa/Brazzaville.standard.short=WAT -Africa/Bujumbura.daylight.short=CAST -Africa/Bujumbura.generic.short=CAT -Africa/Bujumbura.standard.short=CAT -Africa/Cairo.daylight.short=EEST -Africa/Cairo.generic.short=EET -Africa/Cairo.standard.short=EET -Africa/Casablanca.daylight.short=WEST -Africa/Casablanca.generic.short=WET -Africa/Casablanca.standard.short=WET -Africa/Ceuta.daylight.short=CEST -Africa/Ceuta.generic.short=CET -Africa/Ceuta.standard.short=CET -Africa/Conakry.daylight.short=GMT -Africa/Conakry.generic.short=GMT -Africa/Conakry.standard.short=GMT -Africa/Dakar.daylight.short=GMT -Africa/Dakar.generic.short=GMT -Africa/Dakar.standard.short=GMT -Africa/Dar_es_Salaam.daylight.short=EAST -Africa/Dar_es_Salaam.generic.short=EAT -Africa/Dar_es_Salaam.standard.short=EAT -Africa/Djibouti.daylight.short=EAST -Africa/Djibouti.generic.short=EAT -Africa/Djibouti.standard.short=EAT -Africa/Douala.daylight.short=WAST -Africa/Douala.generic.short=WAT -Africa/Douala.standard.short=WAT -Africa/El_Aaiun.daylight.short=WEST -Africa/El_Aaiun.generic.short=WET -Africa/El_Aaiun.standard.short=WET -Africa/Freetown.daylight.short=SLST -Africa/Freetown.generic.short=SLT -Africa/Freetown.standard.short=GMT -Africa/Gaborone.daylight.short=CAST -Africa/Gaborone.generic.short=CAT -Africa/Gaborone.standard.short=CAT -Africa/Harare.daylight.short=CAST -Africa/Harare.generic.short=CAT -Africa/Harare.standard.short=CAT -Africa/Johannesburg.daylight.short=SAST -Africa/Johannesburg.generic.short=SAT -Africa/Johannesburg.standard.short=SAST -Africa/Juba.daylight.short=EAST -Africa/Juba.generic.short=EAT -Africa/Juba.standard.short=EAT -Africa/Kampala.daylight.short=EAST -Africa/Kampala.generic.short=EAT -Africa/Kampala.standard.short=EAT -Africa/Khartoum.daylight.short=EAST -Africa/Khartoum.generic.short=EAT -Africa/Khartoum.standard.short=EAT -Africa/Kigali.daylight.short=CAST -Africa/Kigali.generic.short=CAT -Africa/Kigali.standard.short=CAT -Africa/Kinshasa.daylight.short=WAST -Africa/Kinshasa.generic.short=WAT -Africa/Kinshasa.standard.short=WAT -Africa/Lagos.daylight.short=WAST -Africa/Lagos.generic.short=WAT -Africa/Lagos.standard.short=WAT -Africa/Libreville.daylight.short=WAST -Africa/Libreville.generic.short=WAT -Africa/Libreville.standard.short=WAT -Africa/Lome.daylight.short=GMT -Africa/Lome.generic.short=GMT -Africa/Lome.standard.short=GMT -Africa/Luanda.daylight.short=WAST -Africa/Luanda.generic.short=WAT -Africa/Luanda.standard.short=WAT -Africa/Lubumbashi.daylight.short=CAST -Africa/Lubumbashi.generic.short=CAT -Africa/Lubumbashi.standard.short=CAT -Africa/Lusaka.daylight.short=CAST -Africa/Lusaka.generic.short=CAT -Africa/Lusaka.standard.short=CAT -Africa/Malabo.daylight.short=WAST -Africa/Malabo.generic.short=WAT -Africa/Malabo.standard.short=WAT -Africa/Maputo.daylight.short=CAST -Africa/Maputo.generic.short=CAT -Africa/Maputo.standard.short=CAT -Africa/Maseru.daylight.short=SAST -Africa/Maseru.generic.short=SAT -Africa/Maseru.standard.short=SAST -Africa/Mbabane.daylight.short=SAST -Africa/Mbabane.generic.short=SAT -Africa/Mbabane.standard.short=SAST -Africa/Mogadishu.daylight.short=EAST -Africa/Mogadishu.generic.short=EAT -Africa/Mogadishu.standard.short=EAT -Africa/Monrovia.daylight.short=GMT -Africa/Monrovia.generic.short=GMT -Africa/Monrovia.standard.short=GMT -Africa/Nairobi.daylight.short=EAST -Africa/Nairobi.generic.short=EAT -Africa/Nairobi.standard.short=EAT -Africa/Ndjamena.daylight.short=WAST -Africa/Ndjamena.generic.short=WAT -Africa/Ndjamena.standard.short=WAT -Africa/Niamey.daylight.short=WAST -Africa/Niamey.generic.short=WAT -Africa/Niamey.standard.short=WAT -Africa/Nouakchott.daylight.short=GMT -Africa/Nouakchott.generic.short=GMT -Africa/Nouakchott.standard.short=GMT -Africa/Ouagadougou.daylight.short=GMT -Africa/Ouagadougou.generic.short=GMT -Africa/Ouagadougou.standard.short=GMT -Africa/Porto-Novo.daylight.short=WAST -Africa/Porto-Novo.generic.short=WAT -Africa/Porto-Novo.standard.short=WAT -Africa/Sao_Tome.daylight.short=GMT -Africa/Sao_Tome.generic.short=GMT -Africa/Sao_Tome.standard.short=GMT -Africa/Timbuktu.daylight.short=GMT -Africa/Timbuktu.generic.short=GMT -Africa/Timbuktu.standard.short=GMT -Africa/Tripoli.daylight.short=EEST -Africa/Tripoli.generic.short=EET -Africa/Tripoli.standard.short=EET -Africa/Tunis.daylight.short=CEST -Africa/Tunis.generic.short=CET -Africa/Tunis.standard.short=CET -Africa/Windhoek.daylight.short=WAST -Africa/Windhoek.generic.short=WAT -Africa/Windhoek.standard.short=WAT -AGT.daylight.short=ARST -AGT.generic.short=ART -AGT.standard.short=ART -America/Adak.daylight.short=HADT -America/Adak.generic.short=HAT -America/Adak.standard.short=HAST -America/Anchorage.daylight.short=AKDT -America/Anchorage.generic.short=AKT -America/Anchorage.standard.short=AKST -America/Anguilla.daylight.short=ADT -America/Anguilla.generic.short=AT -America/Anguilla.standard.short=AST -America/Antigua.daylight.short=ADT -America/Antigua.generic.short=AT -America/Antigua.standard.short=AST -America/Araguaina.daylight.short=BRST -America/Araguaina.generic.short=BRT -America/Araguaina.standard.short=BRT -America/Argentina/Buenos_Aires.daylight.short=ARST -America/Argentina/Buenos_Aires.generic.short=ART -America/Argentina/Buenos_Aires.standard.short=ART -America/Argentina/Catamarca.daylight.short=ARST -America/Argentina/Catamarca.generic.short=ART -America/Argentina/Catamarca.standard.short=ART -America/Argentina/ComodRivadavia.daylight.short=ARST -America/Argentina/ComodRivadavia.generic.short=ART -America/Argentina/ComodRivadavia.standard.short=ART -America/Argentina/Cordoba.daylight.short=ARST -America/Argentina/Cordoba.generic.short=ART -America/Argentina/Cordoba.standard.short=ART -America/Argentina/Jujuy.daylight.short=ARST -America/Argentina/Jujuy.generic.short=ART -America/Argentina/Jujuy.standard.short=ART -America/Argentina/La_Rioja.daylight.short=ARST -America/Argentina/La_Rioja.generic.short=ART -America/Argentina/La_Rioja.standard.short=ART -America/Argentina/Mendoza.daylight.short=ARST -America/Argentina/Mendoza.generic.short=ART -America/Argentina/Mendoza.standard.short=ART -America/Argentina/Rio_Gallegos.daylight.short=ARST -America/Argentina/Rio_Gallegos.generic.short=ART -America/Argentina/Rio_Gallegos.standard.short=ART -America/Argentina/Salta.daylight.short=ARST -America/Argentina/Salta.generic.short=ART -America/Argentina/Salta.standard.short=ART -America/Argentina/San_Juan.daylight.short=ARST -America/Argentina/San_Juan.generic.short=ART -America/Argentina/San_Juan.standard.short=ART -America/Argentina/San_Luis.daylight.short=ARST -America/Argentina/San_Luis.generic.short=ART -America/Argentina/San_Luis.standard.short=ART -America/Argentina/Tucuman.daylight.short=ARST -America/Argentina/Tucuman.generic.short=ART -America/Argentina/Tucuman.standard.short=ART -America/Argentina/Ushuaia.daylight.short=ARST -America/Argentina/Ushuaia.generic.short=ART -America/Argentina/Ushuaia.standard.short=ART -America/Aruba.daylight.short=ADT -America/Aruba.generic.short=AT -America/Aruba.standard.short=AST -America/Asuncion.daylight.short=PYST -America/Asuncion.generic.short=PYT -America/Asuncion.standard.short=PYT -America/Atikokan.daylight.short=EDT -America/Atikokan.generic.short=ET -America/Atikokan.standard.short=EST -America/Atka.daylight.short=HADT -America/Atka.generic.short=HAT -America/Atka.standard.short=HAST -America/Bahia_Banderas.daylight.short=CDT -America/Bahia_Banderas.generic.short=CT -America/Bahia_Banderas.standard.short=CST -America/Bahia.daylight.short=BRST -America/Bahia.generic.short=BRT -America/Bahia.standard.short=BRT -America/Barbados.daylight.short=ADT -America/Barbados.generic.short=AT -America/Barbados.standard.short=AST -America/Belem.daylight.short=BRST -America/Belem.generic.short=BRT -America/Belem.standard.short=BRT -America/Belize.daylight.short=CDT -America/Belize.generic.short=CT -America/Belize.standard.short=CST -America/Blanc-Sablon.daylight.short=ADT -America/Blanc-Sablon.generic.short=AT -America/Blanc-Sablon.standard.short=AST -America/Boa_Vista.daylight.short=AMST -America/Boa_Vista.generic.short=AMT -America/Boa_Vista.standard.short=AMT -America/Bogota.daylight.short=COST -America/Bogota.generic.short=COT -America/Bogota.standard.short=COT -America/Boise.daylight.short=MDT -America/Boise.generic.short=MT -America/Boise.standard.short=MST -America/Buenos_Aires.daylight.short=ARST -America/Buenos_Aires.generic.short=ART -America/Buenos_Aires.standard.short=ART -America/Cambridge_Bay.daylight.short=MDT -America/Cambridge_Bay.generic.short=MT -America/Cambridge_Bay.standard.short=MST -America/Campo_Grande.daylight.short=AMST -America/Campo_Grande.generic.short=AMT -America/Campo_Grande.standard.short=AMT -America/Cancun.daylight.short=CDT -America/Cancun.generic.short=CT -America/Cancun.standard.short=CST -America/Caracas.daylight.short=VEST -America/Caracas.generic.short=VET -America/Caracas.standard.short=VET -America/Catamarca.daylight.short=ARST -America/Catamarca.generic.short=ART -America/Catamarca.standard.short=ART -America/Cayenne.daylight.short=GFST -America/Cayenne.generic.short=GFT -America/Cayenne.standard.short=GFT -America/Cayman.daylight.short=EDT -America/Cayman.generic.short=ET -America/Cayman.standard.short=EST -America/Chicago.daylight.short=CDT -America/Chicago.generic.short=CT -America/Chicago.standard.short=CST -America/Chihuahua.daylight.short=MDT -America/Chihuahua.generic.short=MT -America/Chihuahua.standard.short=MST -America/Coral_Harbour.daylight.short=EDT -America/Coral_Harbour.generic.short=ET -America/Coral_Harbour.standard.short=EST -America/Cordoba.daylight.short=ARST -America/Cordoba.generic.short=ART -America/Cordoba.standard.short=ART -America/Costa_Rica.daylight.short=CDT -America/Costa_Rica.generic.short=CT -America/Costa_Rica.standard.short=CST -America/Creston.daylight.short=MDT -America/Creston.generic.short=MT -America/Creston.standard.short=MST -America/Cuiaba.daylight.short=AMST -America/Cuiaba.generic.short=AMT -America/Cuiaba.standard.short=AMT -America/Curacao.daylight.short=ADT -America/Curacao.generic.short=AT -America/Curacao.standard.short=AST -America/Danmarkshavn.daylight.short=GMT -America/Danmarkshavn.generic.short=GMT -America/Danmarkshavn.standard.short=GMT -America/Dawson_Creek.daylight.short=MDT -America/Dawson_Creek.generic.short=MT -America/Dawson_Creek.standard.short=MST -America/Dawson.daylight.short=PDT -America/Dawson.generic.short=PT -America/Dawson.standard.short=PST -America/Denver.daylight.short=MDT -America/Denver.generic.short=MT -America/Denver.standard.short=MST -America/Detroit.daylight.short=EDT -America/Detroit.generic.short=ET -America/Detroit.standard.short=EST -America/Dominica.daylight.short=ADT -America/Dominica.generic.short=AT -America/Dominica.standard.short=AST -America/Edmonton.daylight.short=MDT -America/Edmonton.generic.short=MT -America/Edmonton.standard.short=MST -America/Eirunepe.daylight.short=ACST -America/Eirunepe.generic.short=ACT -America/Eirunepe.standard.short=ACT -America/El_Salvador.daylight.short=CDT -America/El_Salvador.generic.short=CT -America/El_Salvador.standard.short=CST -America/Ensenada.daylight.short=PDT -America/Ensenada.generic.short=PT -America/Ensenada.standard.short=PST -America/Fortaleza.daylight.short=BRST -America/Fortaleza.generic.short=BRT -America/Fortaleza.standard.short=BRT -America/Fort_Wayne.daylight.short=EDT -America/Fort_Wayne.generic.short=ET -America/Fort_Wayne.standard.short=EST -America/Glace_Bay.daylight.short=ADT -America/Glace_Bay.generic.short=AT -America/Glace_Bay.standard.short=AST -America/Godthab.daylight.short=WGST -America/Godthab.generic.short=WGT -America/Godthab.standard.short=WGT -America/Goose_Bay.daylight.short=ADT -America/Goose_Bay.generic.short=AT -America/Goose_Bay.standard.short=AST -America/Grand_Turk.daylight.short=EDT -America/Grand_Turk.generic.short=ET -America/Grand_Turk.standard.short=EST -America/Grenada.daylight.short=ADT -America/Grenada.generic.short=AT -America/Grenada.standard.short=AST -America/Guadeloupe.daylight.short=ADT -America/Guadeloupe.generic.short=AT -America/Guadeloupe.standard.short=AST -America/Guatemala.daylight.short=CDT -America/Guatemala.generic.short=CT -America/Guatemala.standard.short=CST -America/Guayaquil.daylight.short=ECST -America/Guayaquil.generic.short=ECT -America/Guayaquil.standard.short=ECT -America/Guyana.daylight.short=GYST -America/Guyana.generic.short=GYT -America/Guyana.standard.short=GYT -America/Halifax.daylight.short=ADT -America/Halifax.generic.short=AT -America/Halifax.standard.short=AST -America/Havana.daylight.short=CDT -America/Havana.generic.short=CT -America/Havana.standard.short=CST -America/Hermosillo.daylight.short=MDT -America/Hermosillo.generic.short=MT -America/Hermosillo.standard.short=MST -America/Indiana/Indianapolis.daylight.short=EDT -America/Indiana/Indianapolis.generic.short=ET -America/Indiana/Indianapolis.standard.short=EST -America/Indiana/Knox.daylight.short=CDT -America/Indiana/Knox.generic.short=CT -America/Indiana/Knox.standard.short=CST -America/Indiana/Marengo.daylight.short=EDT -America/Indiana/Marengo.generic.short=ET -America/Indiana/Marengo.standard.short=EST -America/Indiana/Petersburg.daylight.short=EDT -America/Indiana/Petersburg.generic.short=ET -America/Indiana/Petersburg.standard.short=EST -America/Indianapolis.daylight.short=EDT -America/Indianapolis.generic.short=ET -America/Indianapolis.standard.short=EST -America/Indiana/Tell_City.daylight.short=CDT -America/Indiana/Tell_City.generic.short=CT -America/Indiana/Tell_City.standard.short=CST -America/Indiana/Vevay.daylight.short=EDT -America/Indiana/Vevay.generic.short=ET -America/Indiana/Vevay.standard.short=EST -America/Indiana/Vincennes.daylight.short=EDT -America/Indiana/Vincennes.generic.short=ET -America/Indiana/Vincennes.standard.short=EST -America/Indiana/Winamac.daylight.short=EDT -America/Indiana/Winamac.generic.short=ET -America/Indiana/Winamac.standard.short=EST -America/Inuvik.daylight.short=MDT -America/Inuvik.generic.short=MT -America/Inuvik.standard.short=MST -America/Iqaluit.daylight.short=EDT -America/Iqaluit.generic.short=ET -America/Iqaluit.standard.short=EST -America/Jamaica.daylight.short=EDT -America/Jamaica.generic.short=ET -America/Jamaica.standard.short=EST -America/Jujuy.daylight.short=ARST -America/Jujuy.generic.short=ART -America/Jujuy.standard.short=ART -America/Juneau.daylight.short=AKDT -America/Juneau.generic.short=AKT -America/Juneau.standard.short=AKST -America/Kentucky/Louisville.daylight.short=EDT -America/Kentucky/Louisville.generic.short=ET -America/Kentucky/Louisville.standard.short=EST -America/Kentucky/Monticello.daylight.short=EDT -America/Kentucky/Monticello.generic.short=ET -America/Kentucky/Monticello.standard.short=EST -America/Knox_IN.daylight.short=CDT -America/Knox_IN.generic.short=CT -America/Knox_IN.standard.short=CST -America/Kralendijk.daylight.short=ADT -America/Kralendijk.generic.short=AT -America/Kralendijk.standard.short=AST -America/La_Paz.daylight.short=BOST -America/La_Paz.generic.short=BOT -America/La_Paz.standard.short=BOT -America/Lima.daylight.short=PEST -America/Lima.generic.short=PET -America/Lima.standard.short=PET -America/Los_Angeles.daylight.short=PDT -America/Los_Angeles.generic.short=PT -America/Los_Angeles.standard.short=PST -America/Louisville.daylight.short=EDT -America/Louisville.generic.short=ET -America/Louisville.standard.short=EST -America/Lower_Princes.daylight.short=ADT -America/Lower_Princes.generic.short=AT -America/Lower_Princes.standard.short=AST -America/Maceio.daylight.short=BRST -America/Maceio.generic.short=BRT -America/Maceio.standard.short=BRT -America/Managua.daylight.short=CDT -America/Managua.generic.short=CT -America/Managua.standard.short=CST -America/Manaus.daylight.short=AMST -America/Manaus.generic.short=AMT -America/Manaus.standard.short=AMT -America/Marigot.daylight.short=ADT -America/Marigot.generic.short=AT -America/Marigot.standard.short=AST -America/Martinique.daylight.short=ADT -America/Martinique.generic.short=AT -America/Martinique.standard.short=AST -America/Matamoros.daylight.short=CDT -America/Matamoros.generic.short=CT -America/Matamoros.standard.short=CST -America/Mazatlan.daylight.short=MDT -America/Mazatlan.generic.short=MT -America/Mazatlan.standard.short=MST -America/Mendoza.daylight.short=ARST -America/Mendoza.generic.short=ART -America/Mendoza.standard.short=ART -America/Menominee.daylight.short=CDT -America/Menominee.generic.short=CT -America/Menominee.standard.short=CST -America/Merida.daylight.short=CDT -America/Merida.generic.short=CT -America/Merida.standard.short=CST -America/Metlakatla.daylight.short=MeDT -America/Metlakatla.generic.short=MeT -America/Metlakatla.standard.short=MeST -America/Mexico_City.daylight.short=CDT -America/Mexico_City.generic.short=CT -America/Mexico_City.standard.short=CST -America/Miquelon.daylight.short=PMDT -America/Miquelon.generic.short=PMT -America/Miquelon.standard.short=PMST -America/Moncton.daylight.short=ADT -America/Moncton.generic.short=AT -America/Moncton.standard.short=AST -America/Monterrey.daylight.short=CDT -America/Monterrey.generic.short=CT -America/Monterrey.standard.short=CST -America/Montevideo.daylight.short=UYST -America/Montevideo.generic.short=UYT -America/Montevideo.standard.short=UYT -America/Montreal.daylight.short=EDT -America/Montreal.generic.short=ET -America/Montreal.standard.short=EST -America/Montserrat.daylight.short=ADT -America/Montserrat.generic.short=AT -America/Montserrat.standard.short=AST -America/Nassau.daylight.short=EDT -America/Nassau.generic.short=ET -America/Nassau.standard.short=EST -America/New_York.daylight.short=EDT -America/New_York.generic.short=ET -America/New_York.standard.short=EST -America/Nipigon.daylight.short=EDT -America/Nipigon.generic.short=ET -America/Nipigon.standard.short=EST -America/Nome.daylight.short=AKDT -America/Nome.generic.short=AKT -America/Nome.standard.short=AKST -America/Noronha.daylight.short=FNST -America/Noronha.generic.short=FNT -America/Noronha.standard.short=FNT -America/North_Dakota/Beulah.daylight.short=CDT -America/North_Dakota/Beulah.generic.short=CT -America/North_Dakota/Beulah.standard.short=CST -America/North_Dakota/Center.daylight.short=CDT -America/North_Dakota/Center.generic.short=CT -America/North_Dakota/Center.standard.short=CST -America/North_Dakota/New_Salem.daylight.short=CDT -America/North_Dakota/New_Salem.generic.short=CT -America/North_Dakota/New_Salem.standard.short=CST -America/Ojinaga.daylight.short=MDT -America/Ojinaga.generic.short=MT -America/Ojinaga.standard.short=MST -America/Panama.daylight.short=EDT -America/Panama.generic.short=ET -America/Panama.standard.short=EST -America/Pangnirtung.daylight.short=EDT -America/Pangnirtung.generic.short=ET -America/Pangnirtung.standard.short=EST -America/Paramaribo.daylight.short=SRST -America/Paramaribo.generic.short=SRT -America/Paramaribo.standard.short=SRT -America/Phoenix.daylight.short=MDT -America/Phoenix.generic.short=MT -America/Phoenix.standard.short=MST -America/Port-au-Prince.daylight.short=EDT -America/Port-au-Prince.generic.short=ET -America/Port-au-Prince.standard.short=EST -America/Porto_Acre.daylight.short=ACST -America/Porto_Acre.generic.short=ACT -America/Porto_Acre.standard.short=ACT -America/Port_of_Spain.daylight.short=ADT -America/Port_of_Spain.generic.short=AT -America/Port_of_Spain.standard.short=AST -America/Porto_Velho.daylight.short=AMST -America/Porto_Velho.generic.short=AMT -America/Porto_Velho.standard.short=AMT -America/Puerto_Rico.daylight.short=ADT -America/Puerto_Rico.generic.short=AT -America/Puerto_Rico.standard.short=AST -America/Rainy_River.daylight.short=CDT -America/Rainy_River.generic.short=CT -America/Rainy_River.standard.short=CST -America/Rankin_Inlet.daylight.short=CDT -America/Rankin_Inlet.generic.short=CT -America/Rankin_Inlet.standard.short=CST -America/Recife.daylight.short=BRST -America/Recife.generic.short=BRT -America/Recife.standard.short=BRT -America/Regina.daylight.short=CDT -America/Regina.generic.short=CT -America/Regina.standard.short=CST -America/Resolute.daylight.short=CDT -America/Resolute.generic.short=CT -America/Resolute.standard.short=CST -America/Rio_Branco.daylight.short=ACST -America/Rio_Branco.generic.short=ACT -America/Rio_Branco.standard.short=ACT -America/Rosario.daylight.short=ARST -America/Rosario.generic.short=ART -America/Rosario.standard.short=ART -America/Santa_Isabel.daylight.short=PDT -America/Santa_Isabel.generic.short=PT -America/Santa_Isabel.standard.short=PST -America/Santarem.daylight.short=BRST -America/Santarem.generic.short=BRT -America/Santarem.standard.short=BRT -America/Santiago.daylight.short=CLST -America/Santiago.generic.short=CLT -America/Santiago.standard.short=CLT -America/Santo_Domingo.daylight.short=ADT -America/Santo_Domingo.generic.short=AT -America/Santo_Domingo.standard.short=AST -America/Sao_Paulo.daylight.short=BRST -America/Sao_Paulo.generic.short=BRT -America/Sao_Paulo.standard.short=BRT -America/Scoresbysund.daylight.short=EGST -America/Scoresbysund.generic.short=EGT -America/Scoresbysund.standard.short=EGT -America/Shiprock.daylight.short=MDT -America/Shiprock.generic.short=MT -America/Shiprock.standard.short=MST -America/Sitka.daylight.short=AKDT -America/Sitka.generic.short=AKT -America/Sitka.standard.short=AKST -America/St_Barthelemy.daylight.short=ADT -America/St_Barthelemy.generic.short=AT -America/St_Barthelemy.standard.short=AST -America/St_Johns.daylight.short=NDT -America/St_Johns.generic.short=NT -America/St_Johns.standard.short=NST -America/St_Kitts.daylight.short=ADT -America/St_Kitts.generic.short=AT -America/St_Kitts.standard.short=AST -America/St_Lucia.daylight.short=ADT -America/St_Lucia.generic.short=AT -America/St_Lucia.standard.short=AST -America/St_Thomas.daylight.short=ADT -America/St_Thomas.generic.short=AT -America/St_Thomas.standard.short=AST -America/St_Vincent.daylight.short=ADT -America/St_Vincent.generic.short=AT -America/St_Vincent.standard.short=AST -America/Swift_Current.daylight.short=CDT -America/Swift_Current.generic.short=CT -America/Swift_Current.standard.short=CST -America/Tegucigalpa.daylight.short=CDT -America/Tegucigalpa.generic.short=CT -America/Tegucigalpa.standard.short=CST -America/Thule.daylight.short=ADT -America/Thule.generic.short=AT -America/Thule.standard.short=AST -America/Thunder_Bay.daylight.short=EDT -America/Thunder_Bay.generic.short=ET -America/Thunder_Bay.standard.short=EST -America/Tijuana.daylight.short=PDT -America/Tijuana.generic.short=PT -America/Tijuana.standard.short=PST -America/Toronto.daylight.short=EDT -America/Toronto.generic.short=ET -America/Toronto.standard.short=EST -America/Tortola.daylight.short=ADT -America/Tortola.generic.short=AT -America/Tortola.standard.short=AST -America/Vancouver.daylight.short=PDT -America/Vancouver.generic.short=PT -America/Vancouver.standard.short=PST -America/Virgin.daylight.short=ADT -America/Virgin.generic.short=AT -America/Virgin.standard.short=AST -America/Whitehorse.daylight.short=PDT -America/Whitehorse.generic.short=PT -America/Whitehorse.standard.short=PST -America/Winnipeg.daylight.short=CDT -America/Winnipeg.generic.short=CT -America/Winnipeg.standard.short=CST -America/Yakutat.daylight.short=AKDT -America/Yakutat.generic.short=AKT -America/Yakutat.standard.short=AKST -America/Yellowknife.daylight.short=MDT -America/Yellowknife.generic.short=MT -America/Yellowknife.standard.short=MST -Antarctica/Casey.daylight.short=WST -Antarctica/Casey.generic.short=WT -Antarctica/Casey.standard.short=WST -Antarctica/Davis.daylight.short=DAVST -Antarctica/Davis.generic.short=DAVT -Antarctica/Davis.standard.short=DAVT -Antarctica/DumontDUrville.daylight.short=DDUST -Antarctica/DumontDUrville.generic.short=DDUT -Antarctica/DumontDUrville.standard.short=DDUT -Antarctica/Macquarie.daylight.short=MIST -Antarctica/Macquarie.generic.short=MIST -Antarctica/Macquarie.standard.short=MIST -Antarctica/Mawson.daylight.short=MAWST -Antarctica/Mawson.generic.short=MAWT -Antarctica/Mawson.standard.short=MAWT -Antarctica/McMurdo.daylight.short=NZDT -Antarctica/McMurdo.generic.short=NZT -Antarctica/McMurdo.standard.short=NZST -Antarctica/Palmer.daylight.short=CLST -Antarctica/Palmer.generic.short=CLT -Antarctica/Palmer.standard.short=CLT -Antarctica/Rothera.daylight.short=ROTST -Antarctica/Rothera.generic.short=ROTT -Antarctica/Rothera.standard.short=ROTT -Antarctica/South_Pole.daylight.short=NZDT -Antarctica/South_Pole.generic.short=NZT -Antarctica/South_Pole.standard.short=NZST -Antarctica/Syowa.daylight.short=SYOST -Antarctica/Syowa.generic.short=SYOT -Antarctica/Syowa.standard.short=SYOT -Antarctica/Vostok.daylight.short=VOSST -Antarctica/Vostok.generic.short=VOST -Antarctica/Vostok.standard.short=VOST -Arctic/Longyearbyen.daylight.short=CEST -Arctic/Longyearbyen.generic.short=CET -Arctic/Longyearbyen.standard.short=CET -ART.daylight.short=EEST -ART.generic.short=EET -ART.standard.short=EET -Asia/Aden.daylight.short=ADT -Asia/Aden.generic.short=AT -Asia/Aden.standard.short=AST -Asia/Almaty.daylight.short=ALMST -Asia/Almaty.generic.short=ALMT -Asia/Almaty.standard.short=ALMT -Asia/Amman.daylight.short=ADT -Asia/Amman.generic.short=AT -Asia/Amman.standard.short=AST -Asia/Anadyr.daylight.short=ANAST -Asia/Anadyr.generic.short=ANAT -Asia/Anadyr.standard.short=ANAT -Asia/Aqtau.daylight.short=AQTST -Asia/Aqtau.generic.short=AQTT -Asia/Aqtau.standard.short=AQTT -Asia/Aqtobe.daylight.short=AQTST -Asia/Aqtobe.generic.short=AQTT -Asia/Aqtobe.standard.short=AQTT -Asia/Ashgabat.daylight.short=TMST -Asia/Ashgabat.generic.short=TMT -Asia/Ashgabat.standard.short=TMT -Asia/Ashkhabad.daylight.short=TMST -Asia/Ashkhabad.generic.short=TMT -Asia/Ashkhabad.standard.short=TMT -Asia/Baghdad.daylight.short=ADT -Asia/Baghdad.generic.short=AT -Asia/Baghdad.standard.short=AST -Asia/Bahrain.daylight.short=ADT -Asia/Bahrain.generic.short=AT -Asia/Bahrain.standard.short=AST -Asia/Baku.daylight.short=AZST -Asia/Baku.generic.short=AZT -Asia/Baku.standard.short=AZT -Asia/Bangkok.daylight.short=ICST -Asia/Bangkok.generic.short=ICT -Asia/Bangkok.standard.short=ICT -Asia/Beirut.daylight.short=EEST -Asia/Beirut.generic.short=EET -Asia/Beirut.standard.short=EET -Asia/Bishkek.daylight.short=KGST -Asia/Bishkek.generic.short=KGT -Asia/Bishkek.standard.short=KGT -Asia/Brunei.daylight.short=BNST -Asia/Brunei.generic.short=BNT -Asia/Brunei.standard.short=BNT -Asia/Calcutta.daylight.short=IDT -Asia/Calcutta.generic.short=IT -Asia/Calcutta.standard.short=IST -Asia/Choibalsan.daylight.short=CHOST -Asia/Choibalsan.generic.short=CHOT -Asia/Choibalsan.standard.short=CHOT -Asia/Chongqing.daylight.short=CDT -Asia/Chongqing.generic.short=CT -Asia/Chongqing.standard.short=CST -Asia/Chungking.daylight.short=CDT -Asia/Chungking.generic.short=CT -Asia/Chungking.standard.short=CST -Asia/Colombo.daylight.short=IDT -Asia/Colombo.generic.short=IT -Asia/Colombo.standard.short=IST -Asia/Dacca.daylight.short=BDST -Asia/Dacca.generic.short=BDT -Asia/Dacca.standard.short=BDT -Asia/Damascus.daylight.short=EEST -Asia/Damascus.generic.short=EET -Asia/Damascus.standard.short=EET -Asia/Dhaka.daylight.short=BDST -Asia/Dhaka.generic.short=BDT -Asia/Dhaka.standard.short=BDT -Asia/Dili.daylight.short=TLST -Asia/Dili.generic.short=TLT -Asia/Dili.standard.short=TLT -Asia/Dubai.daylight.short=GDT -Asia/Dubai.generic.short=GT -Asia/Dubai.standard.short=GST -Asia/Dushanbe.daylight.short=TJST -Asia/Dushanbe.generic.short=TJT -Asia/Dushanbe.standard.short=TJT -Asia/Gaza.daylight.short=EEST -Asia/Gaza.generic.short=EET -Asia/Gaza.standard.short=EET -Asia/Harbin.daylight.short=CDT -Asia/Harbin.generic.short=CT -Asia/Harbin.standard.short=CST -Asia/Hebron.daylight.short=EEST -Asia/Hebron.generic.short=EET -Asia/Hebron.standard.short=EET -Asia/Ho_Chi_Minh.daylight.short=ICST -Asia/Ho_Chi_Minh.generic.short=ICT -Asia/Ho_Chi_Minh.standard.short=ICT -Asia/Hong_Kong.daylight.short=HKST -Asia/Hong_Kong.generic.short=HKT -Asia/Hong_Kong.standard.short=HKT -Asia/Hovd.daylight.short=HOVST -Asia/Hovd.generic.short=HOVT -Asia/Hovd.standard.short=HOVT -Asia/Irkutsk.daylight.short=IRKST -Asia/Irkutsk.generic.short=IRKT -Asia/Irkutsk.standard.short=IRKT -Asia/Istanbul.daylight.short=EEST -Asia/Istanbul.generic.short=EET -Asia/Istanbul.standard.short=EET -Asia/Jakarta.daylight.short=WIST -Asia/Jakarta.generic.short=WIB -Asia/Jakarta.standard.short=WIB -Asia/Jayapura.daylight.short=EIST -Asia/Jayapura.generic.short=WIT -Asia/Jayapura.standard.short=WIT -Asia/Jerusalem.daylight.short=IDT -Asia/Jerusalem.generic.short=IT -Asia/Jerusalem.standard.short=IST -Asia/Kabul.daylight.short=AFST -Asia/Kabul.generic.short=AFT -Asia/Kabul.standard.short=AFT -Asia/Kamchatka.daylight.short=PETST -Asia/Kamchatka.generic.short=PETT -Asia/Kamchatka.standard.short=PETT -Asia/Karachi.daylight.short=PKST -Asia/Karachi.generic.short=PKT -Asia/Karachi.standard.short=PKT -Asia/Kashgar.daylight.short=CDT -Asia/Kashgar.generic.short=CT -Asia/Kashgar.standard.short=CST -Asia/Kathmandu.daylight.short=NPST -Asia/Kathmandu.generic.short=NPT -Asia/Kathmandu.standard.short=NPT -Asia/Katmandu.daylight.short=NPST -Asia/Katmandu.generic.short=NPT -Asia/Katmandu.standard.short=NPT -Asia/Khandyga.daylight.short=YAKST -Asia/Khandyga.generic.short=YAKT -Asia/Khandyga.standard.short=YAKT -Asia/Kolkata.daylight.short=IDT -Asia/Kolkata.generic.short=IT -Asia/Kolkata.standard.short=IST -Asia/Krasnoyarsk.daylight.short=KRAST -Asia/Krasnoyarsk.generic.short=KRAT -Asia/Krasnoyarsk.standard.short=KRAT -Asia/Kuala_Lumpur.daylight.short=MYST -Asia/Kuala_Lumpur.generic.short=MYT -Asia/Kuala_Lumpur.standard.short=MYT -Asia/Kuching.daylight.short=MYST -Asia/Kuching.generic.short=MYT -Asia/Kuching.standard.short=MYT -Asia/Kuwait.daylight.short=ADT -Asia/Kuwait.generic.short=AT -Asia/Kuwait.standard.short=AST -Asia/Macao.daylight.short=CDT -Asia/Macao.generic.short=CT -Asia/Macao.standard.short=CST -Asia/Macau.daylight.short=CDT -Asia/Macau.generic.short=CT -Asia/Macau.standard.short=CST -Asia/Magadan.daylight.short=MAGST -Asia/Magadan.generic.short=MAGT -Asia/Magadan.standard.short=MAGT -Asia/Makassar.daylight.short=CIST -Asia/Makassar.generic.short=WITA -Asia/Makassar.standard.short=WITA -Asia/Manila.daylight.short=PHST -Asia/Manila.generic.short=PHT -Asia/Manila.standard.short=PHT -Asia/Muscat.daylight.short=GDT -Asia/Muscat.generic.short=GT -Asia/Muscat.standard.short=GST -Asia/Nicosia.daylight.short=EEST -Asia/Nicosia.generic.short=EET -Asia/Nicosia.standard.short=EET -Asia/Novokuznetsk.daylight.short=NOVST -Asia/Novokuznetsk.generic.short=NOVT -Asia/Novokuznetsk.standard.short=NOVT -Asia/Novosibirsk.daylight.short=NOVST -Asia/Novosibirsk.generic.short=NOVT -Asia/Novosibirsk.standard.short=NOVT -Asia/Omsk.daylight.short=OMSST -Asia/Omsk.generic.short=OMST -Asia/Omsk.standard.short=OMST -Asia/Oral.daylight.short=ORAST -Asia/Oral.generic.short=ORAT -Asia/Oral.standard.short=ORAT -Asia/Phnom_Penh.daylight.short=ICST -Asia/Phnom_Penh.generic.short=ICT -Asia/Phnom_Penh.standard.short=ICT -Asia/Pontianak.daylight.short=WIST -Asia/Pontianak.generic.short=WIB -Asia/Pontianak.standard.short=WIB -Asia/Pyongyang.daylight.short=KDT -Asia/Pyongyang.generic.short=KT -Asia/Pyongyang.standard.short=KST -Asia/Qatar.daylight.short=ADT -Asia/Qatar.generic.short=AT -Asia/Qatar.standard.short=AST -Asia/Qyzylorda.daylight.short=QYZST -Asia/Qyzylorda.generic.short=QYZT -Asia/Qyzylorda.standard.short=QYZT -Asia/Rangoon.daylight.short=MMST -Asia/Rangoon.generic.short=MMT -Asia/Rangoon.standard.short=MMT -Asia/Saigon.daylight.short=ICST -Asia/Saigon.generic.short=ICT -Asia/Saigon.standard.short=ICT -Asia/Sakhalin.daylight.short=SAKST -Asia/Sakhalin.generic.short=SAKT -Asia/Sakhalin.standard.short=SAKT -Asia/Samarkand.daylight.short=UZST -Asia/Samarkand.generic.short=UZT -Asia/Samarkand.standard.short=UZT -Asia/Seoul.daylight.short=KDT -Asia/Seoul.generic.short=KT -Asia/Seoul.standard.short=KST -Asia/Shanghai.daylight.short=CDT -Asia/Shanghai.generic.short=CT -Asia/Shanghai.standard.short=CST -Asia/Singapore.daylight.short=SGST -Asia/Singapore.generic.short=SGT -Asia/Singapore.standard.short=SGT -Asia/Taipei.daylight.short=CDT -Asia/Taipei.generic.short=CT -Asia/Taipei.standard.short=CST -Asia/Tashkent.daylight.short=UZST -Asia/Tashkent.generic.short=UZT -Asia/Tashkent.standard.short=UZT -Asia/Tbilisi.daylight.short=GEST -Asia/Tbilisi.generic.short=GET -Asia/Tbilisi.standard.short=GET -Asia/Tehran.daylight.short=IRDT -Asia/Tehran.generic.short=IRT -Asia/Tehran.standard.short=IRST -Asia/Tel_Aviv.daylight.short=IDT -Asia/Tel_Aviv.generic.short=IT -Asia/Tel_Aviv.standard.short=IST -Asia/Thimbu.daylight.short=BTST -Asia/Thimbu.generic.short=BTT -Asia/Thimbu.standard.short=BTT -Asia/Thimphu.daylight.short=BTST -Asia/Thimphu.generic.short=BTT -Asia/Thimphu.standard.short=BTT -Asia/Tokyo.daylight.short=JDT -Asia/Tokyo.generic.short=JT -Asia/Tokyo.standard.short=JST -Asia/Ujung_Pandang.daylight.short=CIST -Asia/Ujung_Pandang.generic.short=WITA -Asia/Ujung_Pandang.standard.short=WITA -Asia/Ulaanbaatar.daylight.short=ULAST -Asia/Ulaanbaatar.generic.short=ULAT -Asia/Ulaanbaatar.standard.short=ULAT -Asia/Ulan_Bator.daylight.short=ULAST -Asia/Ulan_Bator.generic.short=ULAT -Asia/Ulan_Bator.standard.short=ULAT -Asia/Urumqi.daylight.short=CDT -Asia/Urumqi.generic.short=CT -Asia/Urumqi.standard.short=CST -Asia/Ust-Nera.daylight.short=VLAST -Asia/Ust-Nera.generic.short=VLAT -Asia/Ust-Nera.standard.short=VLAT -Asia/Vientiane.daylight.short=ICST -Asia/Vientiane.generic.short=ICT -Asia/Vientiane.standard.short=ICT -Asia/Vladivostok.daylight.short=VLAST -Asia/Vladivostok.generic.short=VLAT -Asia/Vladivostok.standard.short=VLAT -Asia/Yakutsk.daylight.short=YAKST -Asia/Yakutsk.generic.short=YAKT -Asia/Yakutsk.standard.short=YAKT -Asia/Yekaterinburg.daylight.short=YEKST -Asia/Yekaterinburg.generic.short=YEKT -Asia/Yekaterinburg.standard.short=YEKT -Asia/Yerevan.daylight.short=AMST -Asia/Yerevan.generic.short=AMT -Asia/Yerevan.standard.short=AMT -AST.daylight.short=AKDT -AST.generic.short=AKT -AST.standard.short=AKST -Atlantic/Azores.daylight.short=AZOST -Atlantic/Azores.generic.short=AZOT -Atlantic/Azores.standard.short=AZOT -Atlantic/Bermuda.daylight.short=ADT -Atlantic/Bermuda.generic.short=AT -Atlantic/Bermuda.standard.short=AST -Atlantic/Canary.daylight.short=WEST -Atlantic/Canary.generic.short=WET -Atlantic/Canary.standard.short=WET -Atlantic/Cape_Verde.daylight.short=CVST -Atlantic/Cape_Verde.generic.short=CVT -Atlantic/Cape_Verde.standard.short=CVT -Atlantic/Faeroe.daylight.short=WEST -Atlantic/Faeroe.generic.short=WET -Atlantic/Faeroe.standard.short=WET -Atlantic/Faroe.daylight.short=WEST -Atlantic/Faroe.generic.short=WET -Atlantic/Faroe.standard.short=WET -Atlantic/Jan_Mayen.daylight.short=CEST -Atlantic/Jan_Mayen.generic.short=CET -Atlantic/Jan_Mayen.standard.short=CET -Atlantic/Madeira.daylight.short=WEST -Atlantic/Madeira.generic.short=WET -Atlantic/Madeira.standard.short=WET -Atlantic/Reykjavik.daylight.short=GMT -Atlantic/Reykjavik.generic.short=GMT -Atlantic/Reykjavik.standard.short=GMT -Atlantic/South_Georgia.daylight.short=GDT -Atlantic/South_Georgia.generic.short=GT -Atlantic/South_Georgia.standard.short=GST -Atlantic/Stanley.daylight.short=FKST -Atlantic/Stanley.generic.short=FKT -Atlantic/Stanley.standard.short=FKT -Atlantic/St_Helena.daylight.short=GMT -Atlantic/St_Helena.generic.short=GMT -Atlantic/St_Helena.standard.short=GMT -Australia/ACT.daylight.short=EST -Australia/ACT.generic.short=ET -Australia/ACT.standard.short=EST -Australia/Adelaide.daylight.short=CST -Australia/Adelaide.generic.short=CT -Australia/Adelaide.standard.short=CST -Australia/Brisbane.daylight.short=EST -Australia/Brisbane.generic.short=ET -Australia/Brisbane.standard.short=EST -Australia/Broken_Hill.daylight.short=CST -Australia/Broken_Hill.generic.short=CT -Australia/Broken_Hill.standard.short=CST -Australia/Canberra.daylight.short=EST -Australia/Canberra.generic.short=ET -Australia/Canberra.standard.short=EST -Australia/Currie.daylight.short=EST -Australia/Currie.generic.short=ET -Australia/Currie.standard.short=EST -Australia/Darwin.daylight.short=CST -Australia/Darwin.generic.short=CT -Australia/Darwin.standard.short=CST -Australia/Eucla.daylight.short=CWST -Australia/Eucla.generic.short=CWT -Australia/Eucla.standard.short=CWST -Australia/Hobart.daylight.short=EST -Australia/Hobart.generic.short=ET -Australia/Hobart.standard.short=EST -Australia/LHI.daylight.short=LHST -Australia/LHI.generic.short=LHT -Australia/LHI.standard.short=LHST -Australia/Lindeman.daylight.short=EST -Australia/Lindeman.generic.short=ET -Australia/Lindeman.standard.short=EST -Australia/Lord_Howe.daylight.short=LHST -Australia/Lord_Howe.generic.short=LHT -Australia/Lord_Howe.standard.short=LHST -Australia/Melbourne.daylight.short=EST -Australia/Melbourne.generic.short=ET -Australia/Melbourne.standard.short=EST -Australia/North.daylight.short=CST -Australia/North.generic.short=CT -Australia/North.standard.short=CST -Australia/NSW.daylight.short=EST -Australia/NSW.generic.short=ET -Australia/NSW.standard.short=EST -Australia/Perth.daylight.short=WST -Australia/Perth.generic.short=WT -Australia/Perth.standard.short=WST -Australia/Queensland.daylight.short=EST -Australia/Queensland.generic.short=ET -Australia/Queensland.standard.short=EST -Australia/South.daylight.short=CST -Australia/South.generic.short=CT -Australia/South.standard.short=CST -Australia/Sydney.daylight.short=EST -Australia/Sydney.generic.short=ET -Australia/Sydney.standard.short=EST -Australia/Tasmania.daylight.short=EST -Australia/Tasmania.generic.short=ET -Australia/Tasmania.standard.short=EST -Australia/Victoria.daylight.short=EST -Australia/Victoria.generic.short=ET -Australia/Victoria.standard.short=EST -Australia/West.daylight.short=WST -Australia/West.generic.short=WT -Australia/West.standard.short=WST -Australia/Yancowinna.daylight.short=CST -Australia/Yancowinna.generic.short=CT -Australia/Yancowinna.standard.short=CST -BET.daylight.short=BRST -BET.generic.short=BRT -BET.standard.short=BRT -Brazil/Acre.daylight.short=ACST -Brazil/Acre.generic.short=ACT -Brazil/Acre.standard.short=ACT -Brazil/DeNoronha.daylight.short=FNST -Brazil/DeNoronha.generic.short=FNT -Brazil/DeNoronha.standard.short=FNT -Brazil/East.daylight.short=BRST -Brazil/East.generic.short=BRT -Brazil/East.standard.short=BRT -Brazil/West.daylight.short=AMST -Brazil/West.generic.short=AMT -Brazil/West.standard.short=AMT -BST.daylight.short=BDST -BST.generic.short=BDT -BST.standard.short=BDT -Canada/Atlantic.daylight.short=ADT -Canada/Atlantic.generic.short=AT -Canada/Atlantic.standard.short=AST -Canada/Central.daylight.short=CDT -Canada/Central.generic.short=CT -Canada/Central.standard.short=CST -Canada/Eastern.daylight.short=EDT -Canada/Eastern.generic.short=ET -Canada/Eastern.standard.short=EST -Canada/East-Saskatchewan.daylight.short=CDT -Canada/East-Saskatchewan.generic.short=CT -Canada/East-Saskatchewan.standard.short=CST -Canada/Mountain.daylight.short=MDT -Canada/Mountain.generic.short=MT -Canada/Mountain.standard.short=MST -Canada/Newfoundland.daylight.short=NDT -Canada/Newfoundland.generic.short=NT -Canada/Newfoundland.standard.short=NST -Canada/Pacific.daylight.short=PDT -Canada/Pacific.generic.short=PT -Canada/Pacific.standard.short=PST -Canada/Saskatchewan.daylight.short=CDT -Canada/Saskatchewan.generic.short=CT -Canada/Saskatchewan.standard.short=CST -Canada/Yukon.daylight.short=PDT -Canada/Yukon.generic.short=PT -Canada/Yukon.standard.short=PST -CAT.daylight.short=CAST -CAT.generic.short=CAT -CAT.standard.short=CAT -CET.daylight.short=CEST -CET.generic.short=CET -CET.standard.short=CET -Chile/Continental.daylight.short=CLST -Chile/Continental.generic.short=CLT -Chile/Continental.standard.short=CLT -Chile/EasterIsland.daylight.short=EASST -Chile/EasterIsland.generic.short=EAST -Chile/EasterIsland.standard.short=EAST -CNT.daylight.short=NDT -CNT.generic.short=NT -CNT.standard.short=NST -CST6CDT.daylight.short=CDT -CST6CDT.generic.short=CT -CST6CDT.standard.short=CST -CST.daylight.short=CDT -CST.generic.short=CT -CST.standard.short=CST -CTT.daylight.short=CDT -CTT.generic.short=CT -CTT.standard.short=CST -Cuba.daylight.short=CDT -Cuba.generic.short=CT -Cuba.standard.short=CST -EAT.daylight.short=EAST -EAT.generic.short=EAT -EAT.standard.short=EAT -ECT.daylight.short=CEST -ECT.generic.short=CET -ECT.standard.short=CET -EET.daylight.short=EEST -EET.generic.short=EET -EET.standard.short=EET -Egypt.daylight.short=EEST -Egypt.generic.short=EET -Egypt.standard.short=EET -Eire.daylight.short=IST -Eire.generic.short=IT -Eire.standard.short=GMT -EST5EDT.daylight.short=EDT -EST5EDT.generic.short=ET -EST5EDT.standard.short=EST -EST.daylight.short=EDT -EST.generic.short=ET -EST.standard.short=EST -Etc/Greenwich.daylight.short=GMT -Etc/Greenwich.generic.short=GMT -Etc/Greenwich.standard.short=GMT -Etc/UCT.daylight.short=UTC -Etc/UCT.generic.short=UTC -Etc/UCT.standard.short=UTC -Etc/Universal.daylight.short=UTC -Etc/Universal.generic.short=UTC -Etc/Universal.standard.short=UTC -Etc/UTC.daylight.short=UTC -Etc/UTC.generic.short=UTC -Etc/UTC.standard.short=UTC -Etc/Zulu.daylight.short=UTC -Etc/Zulu.generic.short=UTC -Etc/Zulu.standard.short=UTC -Europe/Amsterdam.daylight.short=CEST -Europe/Amsterdam.generic.short=CET -Europe/Amsterdam.standard.short=CET -Europe/Andorra.daylight.short=CEST -Europe/Andorra.generic.short=CET -Europe/Andorra.standard.short=CET -Europe/Athens.daylight.short=EEST -Europe/Athens.generic.short=EET -Europe/Athens.standard.short=EET -Europe/Belfast.daylight.short=BST -Europe/Belfast.generic.short=BT -Europe/Belfast.standard.short=GMT -Europe/Belgrade.daylight.short=CEST -Europe/Belgrade.generic.short=CET -Europe/Belgrade.standard.short=CET -Europe/Berlin.daylight.short=CEST -Europe/Berlin.generic.short=CET -Europe/Berlin.standard.short=CET -Europe/Bratislava.daylight.short=CEST -Europe/Bratislava.generic.short=CET -Europe/Bratislava.standard.short=CET -Europe/Brussels.daylight.short=CEST -Europe/Brussels.generic.short=CET -Europe/Brussels.standard.short=CET -Europe/Bucharest.daylight.short=EEST -Europe/Bucharest.generic.short=EET -Europe/Bucharest.standard.short=EET -Europe/Budapest.daylight.short=CEST -Europe/Budapest.generic.short=CET -Europe/Budapest.standard.short=CET -Europe/Busingen.daylight.short=CEST -Europe/Busingen.generic.short=CET -Europe/Busingen.standard.short=CET -Europe/Chisinau.daylight.short=EEST -Europe/Chisinau.generic.short=EET -Europe/Chisinau.standard.short=EET -Europe/Copenhagen.daylight.short=CEST -Europe/Copenhagen.generic.short=CET -Europe/Copenhagen.standard.short=CET -Europe/Dublin.daylight.short=IST -Europe/Dublin.generic.short=IT -Europe/Dublin.standard.short=GMT -Europe/Gibraltar.daylight.short=CEST -Europe/Gibraltar.generic.short=CET -Europe/Gibraltar.standard.short=CET -Europe/Guernsey.daylight.short=BST -Europe/Guernsey.generic.short=BT -Europe/Guernsey.standard.short=GMT -Europe/Helsinki.daylight.short=EEST -Europe/Helsinki.generic.short=EET -Europe/Helsinki.standard.short=EET -Europe/Isle_of_Man.daylight.short=BST -Europe/Isle_of_Man.generic.short=BT -Europe/Isle_of_Man.standard.short=GMT -Europe/Istanbul.daylight.short=EEST -Europe/Istanbul.generic.short=EET -Europe/Istanbul.standard.short=EET -Europe/Jersey.daylight.short=BST -Europe/Jersey.generic.short=BT -Europe/Jersey.standard.short=GMT -Europe/Kaliningrad.daylight.short=FEST -Europe/Kaliningrad.generic.short=FET -Europe/Kaliningrad.standard.short=FET -Europe/Kiev.daylight.short=EEST -Europe/Kiev.generic.short=EET -Europe/Kiev.standard.short=EET -Europe/Lisbon.daylight.short=WEST -Europe/Lisbon.generic.short=WET -Europe/Lisbon.standard.short=WET -Europe/Ljubljana.daylight.short=CEST -Europe/Ljubljana.generic.short=CET -Europe/Ljubljana.standard.short=CET -Europe/London.daylight.short=BST -Europe/London.generic.short=BT -Europe/London.standard.short=GMT -Europe/Luxembourg.daylight.short=CEST -Europe/Luxembourg.generic.short=CET -Europe/Luxembourg.standard.short=CET -Europe/Madrid.daylight.short=CEST -Europe/Madrid.generic.short=CET -Europe/Madrid.standard.short=CET -Europe/Malta.daylight.short=CEST -Europe/Malta.generic.short=CET -Europe/Malta.standard.short=CET -Europe/Mariehamn.daylight.short=EEST -Europe/Mariehamn.generic.short=EET -Europe/Mariehamn.standard.short=EET -Europe/Minsk.daylight.short=FEST -Europe/Minsk.generic.short=FET -Europe/Minsk.standard.short=FET -Europe/Monaco.daylight.short=CEST -Europe/Monaco.generic.short=CET -Europe/Monaco.standard.short=CET -Europe/Moscow.daylight.short=MSD -Europe/Moscow.generic.short=MT -Europe/Moscow.standard.short=MSK -Europe/Nicosia.daylight.short=EEST -Europe/Nicosia.generic.short=EET -Europe/Nicosia.standard.short=EET -Europe/Oslo.daylight.short=CEST -Europe/Oslo.generic.short=CET -Europe/Oslo.standard.short=CET -Europe/Paris.daylight.short=CEST -Europe/Paris.generic.short=CET -Europe/Paris.standard.short=CET -Europe/Podgorica.daylight.short=CEST -Europe/Podgorica.generic.short=CET -Europe/Podgorica.standard.short=CET -Europe/Prague.daylight.short=CEST -Europe/Prague.generic.short=CET -Europe/Prague.standard.short=CET -Europe/Riga.daylight.short=EEST -Europe/Riga.generic.short=EET -Europe/Riga.standard.short=EET -Europe/Rome.daylight.short=CEST -Europe/Rome.generic.short=CET -Europe/Rome.standard.short=CET -Europe/Samara.daylight.short=SAMST -Europe/Samara.generic.short=SAMT -Europe/Samara.standard.short=SAMT -Europe/San_Marino.daylight.short=CEST -Europe/San_Marino.generic.short=CET -Europe/San_Marino.standard.short=CET -Europe/Sarajevo.daylight.short=CEST -Europe/Sarajevo.generic.short=CET -Europe/Sarajevo.standard.short=CET -Europe/Simferopol.daylight.short=EEST -Europe/Simferopol.generic.short=EET -Europe/Simferopol.standard.short=EET -Europe/Skopje.daylight.short=CEST -Europe/Skopje.generic.short=CET -Europe/Skopje.standard.short=CET -Europe/Sofia.daylight.short=EEST -Europe/Sofia.generic.short=EET -Europe/Sofia.standard.short=EET -Europe/Stockholm.daylight.short=CEST -Europe/Stockholm.generic.short=CET -Europe/Stockholm.standard.short=CET -Europe/Tallinn.daylight.short=EEST -Europe/Tallinn.generic.short=EET -Europe/Tallinn.standard.short=EET -Europe/Tirane.daylight.short=CEST -Europe/Tirane.generic.short=CET -Europe/Tirane.standard.short=CET -Europe/Tiraspol.daylight.short=EEST -Europe/Tiraspol.generic.short=EET -Europe/Tiraspol.standard.short=EET -Europe/Uzhgorod.daylight.short=EEST -Europe/Uzhgorod.generic.short=EET -Europe/Uzhgorod.standard.short=EET -Europe/Vaduz.daylight.short=CEST -Europe/Vaduz.generic.short=CET -Europe/Vaduz.standard.short=CET -Europe/Vatican.daylight.short=CEST -Europe/Vatican.generic.short=CET -Europe/Vatican.standard.short=CET -Europe/Vienna.daylight.short=CEST -Europe/Vienna.generic.short=CET -Europe/Vienna.standard.short=CET -Europe/Vilnius.daylight.short=EEST -Europe/Vilnius.generic.short=EET -Europe/Vilnius.standard.short=EET -Europe/Volgograd.daylight.short=VOLST -Europe/Volgograd.generic.short=VOLT -Europe/Volgograd.standard.short=VOLT -Europe/Warsaw.daylight.short=CEST -Europe/Warsaw.generic.short=CET -Europe/Warsaw.standard.short=CET -Europe/Zagreb.daylight.short=CEST -Europe/Zagreb.generic.short=CET -Europe/Zagreb.standard.short=CET -Europe/Zaporozhye.daylight.short=EEST -Europe/Zaporozhye.generic.short=EET -Europe/Zaporozhye.standard.short=EET -Europe/Zurich.daylight.short=CEST -Europe/Zurich.generic.short=CET -Europe/Zurich.standard.short=CET -GB.daylight.short=BST -GB-Eire.daylight.short=BST -GB-Eire.generic.short=BT -GB-Eire.standard.short=GMT -GB.generic.short=BT -GB.standard.short=GMT -GMT.daylight.short=GMT -GMT.generic.short=GMT -GMT.standard.short=GMT -Greenwich.daylight.short=GMT -Greenwich.generic.short=GMT -Greenwich.standard.short=GMT -Hongkong.daylight.short=HKST -Hongkong.generic.short=HKT -Hongkong.standard.short=HKT -HST.daylight.short=HDT -HST.generic.short=HT -HST.standard.short=HST -Iceland.daylight.short=GMT -Iceland.generic.short=GMT -Iceland.standard.short=GMT -IET.daylight.short=EDT -IET.generic.short=ET -IET.standard.short=EST -Indian/Antananarivo.daylight.short=EAST -Indian/Antananarivo.generic.short=EAT -Indian/Antananarivo.standard.short=EAT -Indian/Chagos.daylight.short=IOST -Indian/Chagos.generic.short=IOT -Indian/Chagos.standard.short=IOT -Indian/Christmas.daylight.short=CXST -Indian/Christmas.generic.short=CIT -Indian/Christmas.standard.short=CXT -Indian/Cocos.daylight.short=CCST -Indian/Cocos.generic.short=CCT -Indian/Cocos.standard.short=CCT -Indian/Comoro.daylight.short=EAST -Indian/Comoro.generic.short=EAT -Indian/Comoro.standard.short=EAT -Indian/Kerguelen.daylight.short=TFST -Indian/Kerguelen.generic.short=TFT -Indian/Kerguelen.standard.short=TFT -Indian/Mahe.daylight.short=SCST -Indian/Mahe.generic.short=SCT -Indian/Mahe.standard.short=SCT -Indian/Maldives.daylight.short=MVST -Indian/Maldives.generic.short=MVT -Indian/Maldives.standard.short=MVT -Indian/Mauritius.daylight.short=MUST -Indian/Mauritius.generic.short=MUT -Indian/Mauritius.standard.short=MUT -Indian/Mayotte.daylight.short=EAST -Indian/Mayotte.generic.short=EAT -Indian/Mayotte.standard.short=EAT -Indian/Reunion.daylight.short=REST -Indian/Reunion.generic.short=RET -Indian/Reunion.standard.short=RET -Iran.daylight.short=IRDT -Iran.generic.short=IRT -Iran.standard.short=IRST -Israel.daylight.short=IDT -Israel.generic.short=IT -Israel.standard.short=IST -IST.daylight.short=IDT -IST.generic.short=IT -IST.standard.short=IST -Jamaica.daylight.short=EDT -Jamaica.generic.short=ET -Jamaica.standard.short=EST -Japan.daylight.short=JDT -Japan.generic.short=JT -Japan.standard.short=JST -JST.daylight.short=JDT -JST.generic.short=JT -JST.standard.short=JST -Kwajalein.daylight.short=MHST -Kwajalein.generic.short=MHT -Kwajalein.standard.short=MHT -Libya.daylight.short=EEST -Libya.generic.short=EET -Libya.standard.short=EET -MET.daylight.short=MEST -MET.generic.short=MET -MET.standard.short=MET -Mexico/BajaNorte.daylight.short=PDT -Mexico/BajaNorte.generic.short=PT -Mexico/BajaNorte.standard.short=PST -Mexico/BajaSur.daylight.short=MDT -Mexico/BajaSur.generic.short=MT -Mexico/BajaSur.standard.short=MST -Mexico/General.daylight.short=CDT -Mexico/General.generic.short=CT -Mexico/General.standard.short=CST -MIT.daylight.short=WSDT -MIT.generic.short=WST -MIT.standard.short=WST -MST7MDT.daylight.short=MDT -MST7MDT.generic.short=MT -MST7MDT.standard.short=MST -MST.daylight.short=MDT -MST.generic.short=MT -MST.standard.short=MST -Navajo.daylight.short=MDT -Navajo.generic.short=MT -Navajo.standard.short=MST -NET.daylight.short=AMST -NET.generic.short=AMT -NET.standard.short=AMT -NST.daylight.short=NZDT -NST.generic.short=NZT -NST.standard.short=NZST -NZ-CHAT.daylight.short=CHADT -NZ-CHAT.generic.short=CHAT -NZ-CHAT.standard.short=CHAST -NZ.daylight.short=NZDT -NZ.generic.short=NZT -NZ.standard.short=NZST -Pacific/Apia.daylight.short=WSDT -Pacific/Apia.generic.short=WST -Pacific/Apia.standard.short=WST -Pacific/Auckland.daylight.short=NZDT -Pacific/Auckland.generic.short=NZT -Pacific/Auckland.standard.short=NZST -Pacific/Chatham.daylight.short=CHADT -Pacific/Chatham.generic.short=CHAT -Pacific/Chatham.standard.short=CHAST -Pacific/Chuuk.daylight.short=CHUST -Pacific/Chuuk.generic.short=CHUT -Pacific/Chuuk.standard.short=CHUT -Pacific/Easter.daylight.short=EASST -Pacific/Easter.generic.short=EAST -Pacific/Easter.standard.short=EAST -Pacific/Efate.daylight.short=VUST -Pacific/Efate.generic.short=VUT -Pacific/Efate.standard.short=VUT -Pacific/Enderbury.daylight.short=PHOST -Pacific/Enderbury.generic.short=PHOT -Pacific/Enderbury.standard.short=PHOT -Pacific/Fakaofo.daylight.short=TKST -Pacific/Fakaofo.generic.short=TKT -Pacific/Fakaofo.standard.short=TKT -Pacific/Fiji.daylight.short=FJST -Pacific/Fiji.generic.short=FJT -Pacific/Fiji.standard.short=FJT -Pacific/Funafuti.daylight.short=TVST -Pacific/Funafuti.generic.short=TVT -Pacific/Funafuti.standard.short=TVT -Pacific/Galapagos.daylight.short=GALST -Pacific/Galapagos.generic.short=GALT -Pacific/Galapagos.standard.short=GALT -Pacific/Gambier.daylight.short=GAMST -Pacific/Gambier.generic.short=GAMT -Pacific/Gambier.standard.short=GAMT -Pacific/Guadalcanal.daylight.short=SBST -Pacific/Guadalcanal.generic.short=SBT -Pacific/Guadalcanal.standard.short=SBT -Pacific/Guam.daylight.short=ChDT -Pacific/Guam.generic.short=ChT -Pacific/Guam.standard.short=ChST -Pacific/Honolulu.daylight.short=HDT -Pacific/Honolulu.generic.short=HT -Pacific/Honolulu.standard.short=HST -Pacific/Johnston.daylight.short=HDT -Pacific/Johnston.generic.short=HT -Pacific/Johnston.standard.short=HST -Pacific/Kiritimati.daylight.short=LINST -Pacific/Kiritimati.generic.short=LINT -Pacific/Kiritimati.standard.short=LINT -Pacific/Kosrae.daylight.short=KOSST -Pacific/Kosrae.generic.short=KOST -Pacific/Kosrae.standard.short=KOST -Pacific/Kwajalein.daylight.short=MHST -Pacific/Kwajalein.generic.short=MHT -Pacific/Kwajalein.standard.short=MHT -Pacific/Majuro.daylight.short=MHST -Pacific/Majuro.generic.short=MHT -Pacific/Majuro.standard.short=MHT -Pacific/Marquesas.daylight.short=MARST -Pacific/Marquesas.generic.short=MART -Pacific/Marquesas.standard.short=MART -Pacific/Midway.daylight.short=SDT -Pacific/Midway.generic.short=ST -Pacific/Midway.standard.short=SST -Pacific/Nauru.daylight.short=NRST -Pacific/Nauru.generic.short=NRT -Pacific/Nauru.standard.short=NRT -Pacific/Niue.daylight.short=NUST -Pacific/Niue.generic.short=NUT -Pacific/Niue.standard.short=NUT -Pacific/Norfolk.daylight.short=NFST -Pacific/Norfolk.generic.short=NFT -Pacific/Norfolk.standard.short=NFT -Pacific/Noumea.daylight.short=NCST -Pacific/Noumea.generic.short=NCT -Pacific/Noumea.standard.short=NCT -Pacific/Pago_Pago.daylight.short=SDT -Pacific/Pago_Pago.generic.short=ST -Pacific/Pago_Pago.standard.short=SST -Pacific/Palau.daylight.short=PWST -Pacific/Palau.generic.short=PWT -Pacific/Palau.standard.short=PWT -Pacific/Pitcairn.daylight.short=PDT -Pacific/Pitcairn.generic.short=PT -Pacific/Pitcairn.standard.short=PST -Pacific/Pohnpei.daylight.short=PONST -Pacific/Pohnpei.generic.short=PONT -Pacific/Pohnpei.standard.short=PONT -Pacific/Ponape.daylight.short=PONST -Pacific/Ponape.generic.short=PONT -Pacific/Ponape.standard.short=PONT -Pacific/Port_Moresby.daylight.short=PGST -Pacific/Port_Moresby.generic.short=PGT -Pacific/Port_Moresby.standard.short=PGT -Pacific/Rarotonga.daylight.short=CKHST -Pacific/Rarotonga.generic.short=CKT -Pacific/Rarotonga.standard.short=CKT -Pacific/Saipan.daylight.short=ChDT -Pacific/Saipan.generic.short=ChT -Pacific/Saipan.standard.short=ChST -Pacific/Samoa.daylight.short=SDT -Pacific/Samoa.generic.short=ST -Pacific/Samoa.standard.short=SST -Pacific/Tahiti.daylight.short=TAHST -Pacific/Tahiti.generic.short=TAHT -Pacific/Tahiti.standard.short=TAHT -Pacific/Tarawa.daylight.short=GILST -Pacific/Tarawa.generic.short=GILT -Pacific/Tarawa.standard.short=GILT -Pacific/Tongatapu.daylight.short=TOST -Pacific/Tongatapu.generic.short=TOT -Pacific/Tongatapu.standard.short=TOT -Pacific/Truk.daylight.short=CHUST -Pacific/Truk.generic.short=CHUT -Pacific/Truk.standard.short=CHUT -Pacific/Wake.daylight.short=WAKST -Pacific/Wake.generic.short=WAKT -Pacific/Wake.standard.short=WAKT -Pacific/Wallis.daylight.short=WFST -Pacific/Wallis.generic.short=WFT -Pacific/Wallis.standard.short=WFT -Pacific/Yap.daylight.short=CHUST -Pacific/Yap.generic.short=CHUT -Pacific/Yap.standard.short=CHUT -PLT.daylight.short=PKST -PLT.generic.short=PKT -PLT.standard.short=PKT -PNT.daylight.short=MDT -PNT.generic.short=MT -PNT.standard.short=MST -Poland.daylight.short=CEST -Poland.generic.short=CET -Poland.standard.short=CET -Portugal.daylight.short=WEST -Portugal.generic.short=WET -Portugal.standard.short=WET -PRC.daylight.short=CDT -PRC.generic.short=CT -PRC.standard.short=CST -PRT.daylight.short=ADT -PRT.generic.short=AT -PRT.standard.short=AST -PST8PDT.daylight.short=PDT -PST8PDT.generic.short=PT -PST8PDT.standard.short=PST -PST.daylight.short=PDT -PST.generic.short=PT -PST.standard.short=PST -ROK.daylight.short=KDT -ROK.generic.short=KT -ROK.standard.short=KST -Singapore.daylight.short=SGST -Singapore.generic.short=SGT -Singapore.standard.short=SGT -SST.daylight.short=SBST -SST.generic.short=SBT -SST.standard.short=SBT -SystemV/AST4ADT.daylight.short=ADT -SystemV/AST4ADT.generic.short=AT -SystemV/AST4ADT.standard.short=AST -SystemV/AST4.daylight.short=ADT -SystemV/AST4.generic.short=AT -SystemV/AST4.standard.short=AST -SystemV/CST6CDT.daylight.short=CDT -SystemV/CST6CDT.generic.short=CT -SystemV/CST6CDT.standard.short=CST -SystemV/CST6.daylight.short=CDT -SystemV/CST6.generic.short=CT -SystemV/CST6.standard.short=CST -SystemV/EST5.daylight.short=EDT -SystemV/EST5EDT.daylight.short=EDT -SystemV/EST5EDT.generic.short=ET -SystemV/EST5EDT.standard.short=EST -SystemV/EST5.generic.short=ET -SystemV/EST5.standard.short=EST -SystemV/HST10.daylight.short=HDT -SystemV/HST10.generic.short=HT -SystemV/HST10.standard.short=HST -SystemV/MST7.daylight.short=MDT -SystemV/MST7.generic.short=MT -SystemV/MST7MDT.daylight.short=MDT -SystemV/MST7MDT.generic.short=MT -SystemV/MST7MDT.standard.short=MST -SystemV/MST7.standard.short=MST -SystemV/PST8.daylight.short=PDT -SystemV/PST8.generic.short=PT -SystemV/PST8PDT.daylight.short=PDT -SystemV/PST8PDT.generic.short=PT -SystemV/PST8PDT.standard.short=PST -SystemV/PST8.standard.short=PST -SystemV/YST9.daylight.short=AKDT -SystemV/YST9.generic.short=AKT -SystemV/YST9.standard.short=AKST -SystemV/YST9YDT.daylight.short=AKDT -SystemV/YST9YDT.generic.short=AKT -SystemV/YST9YDT.standard.short=AKST -Turkey.daylight.short=EEST -Turkey.generic.short=EET -Turkey.standard.short=EET -UCT.daylight.short=UTC -UCT.generic.short=UTC -UCT.standard.short=UTC -Universal.daylight.short=UTC -Universal.generic.short=UTC -Universal.standard.short=UTC -US/Alaska.daylight.short=AKDT -US/Alaska.generic.short=AKT -US/Alaska.standard.short=AKST -US/Aleutian.daylight.short=HADT -US/Aleutian.generic.short=HAT -US/Aleutian.standard.short=HAST -US/Arizona.daylight.short=MDT -US/Arizona.generic.short=MT -US/Arizona.standard.short=MST -US/Central.daylight.short=CDT -US/Central.generic.short=CT -US/Central.standard.short=CST -US/Eastern.daylight.short=EDT -US/Eastern.generic.short=ET -US/Eastern.standard.short=EST -US/East-Indiana.daylight.short=EDT -US/East-Indiana.generic.short=ET -US/East-Indiana.standard.short=EST -US/Hawaii.daylight.short=HDT -US/Hawaii.generic.short=HT -US/Hawaii.standard.short=HST -US/Indiana-Starke.daylight.short=CDT -US/Indiana-Starke.generic.short=CT -US/Indiana-Starke.standard.short=CST -US/Michigan.daylight.short=EDT -US/Michigan.generic.short=ET -US/Michigan.standard.short=EST -US/Mountain.daylight.short=MDT -US/Mountain.generic.short=MT -US/Mountain.standard.short=MST -US/Pacific.daylight.short=PDT -US/Pacific.generic.short=PT -US/Pacific-New.daylight.short=PDT -US/Pacific-New.generic.short=PT -US/Pacific-New.standard.short=PST -US/Pacific.standard.short=PST -US/Samoa.daylight.short=SDT -US/Samoa.generic.short=ST -US/Samoa.standard.short=SST -UTC.daylight.short=UTC -UTC.generic.short=UTC -UTC.standard.short=UTC -VST.daylight.short=ICST -VST.generic.short=ICT -VST.standard.short=ICT -WET.daylight.short=WEST -WET.generic.short=WET -WET.standard.short=WET -W-SU.daylight.short=MSD -W-SU.generic.short=MT -W-SU.standard.short=MSK -Zulu.daylight.short=UTC -Zulu.generic.short=UTC -Zulu.standard.short=UTC diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ko.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ko.properties deleted file mode 100644 index 52c2bc820ad..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ko.properties +++ /dev/null @@ -1,651 +0,0 @@ -ACT.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBD81\uBD80 \uC9C0\uC5ED) -ACT.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED) -ACT.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED) -AET.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -AET.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -AET.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -AGT.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -ART.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -AST.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC -Africa/Abidjan.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Africa/Accra.generic.long=\uAC00\uB098 \uD45C\uC900\uC2DC -Africa/Addis_Ababa.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Algiers.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Africa/Asmara.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Asmera.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Bamako.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Africa/Bangui.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Banjul.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Africa/Bissau.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Africa/Blantyre.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Brazzaville.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Bujumbura.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Cairo.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Africa/Casablanca.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Africa/Ceuta.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Africa/Conakry.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Africa/Dakar.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Africa/Dar_es_Salaam.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Djibouti.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Douala.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/El_Aaiun.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Africa/Freetown.generic.long=\uC2DC\uC5D0\uB77C\uB9AC\uC628 \uD45C\uC900\uC2DC -Africa/Gaborone.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Harare.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Johannesburg.generic.long=\uB0A8\uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Juba.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Kampala.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Khartoum.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Kigali.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Kinshasa.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Lagos.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Libreville.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Lome.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Africa/Luanda.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Lubumbashi.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Lusaka.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Malabo.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Maputo.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Maseru.generic.long=\uB0A8\uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Mbabane.generic.long=\uB0A8\uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Mogadishu.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Monrovia.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Africa/Nairobi.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Ndjamena.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Niamey.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Nouakchott.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Africa/Ouagadougou.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Africa/Porto-Novo.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Africa/Sao_Tome.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Africa/Timbuktu.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Africa/Tripoli.generic.long=\ub3d9\ubd80 \uc720\ub7fd \ud45c\uc900\uc2dc -Africa/Tunis.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Africa/Windhoek.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -America/Adak.generic.long=\uD558\uC640\uC774-\uC54C\uB8E8\uC0E8 \uD45C\uC900\uC2DC -America/Anchorage.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC -America/Anguilla.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Antigua.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Araguaina.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC -America/Argentina/Buenos_Aires.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Argentina/Catamarca.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Argentina/ComodRivadavia.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Argentina/Cordoba.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Argentina/Jujuy.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Argentina/La_Rioja.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Argentina/Mendoza.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Argentina/Rio_Gallegos.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Argentina/Salta.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Argentina/San_Juan.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Argentina/San_Luis.generic.long=\uc544\ub974\ud5e8\ud2f0\ub098 \ud45c\uc900\uc2dc -America/Argentina/Tucuman.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Argentina/Ushuaia.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Aruba.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Asuncion.generic.long=\uD30C\uB77C\uACFC\uC774 \uD45C\uC900\uC2DC -America/Atikokan.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Atka.generic.long=\uD558\uC640\uC774-\uC54C\uB8E8\uC0E8 \uD45C\uC900\uC2DC -America/Bahia.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC -America/Bahia_Banderas.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Barbados.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Belem.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC -America/Belize.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Blanc-Sablon.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Boa_Vista.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC -America/Bogota.generic.long=\uCF5C\uB86C\uBE44\uC544 \uD45C\uC900\uC2DC -America/Boise.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -America/Buenos_Aires.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Cambridge_Bay.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -America/Campo_Grande.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC -America/Cancun.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Caracas.generic.long=\uBCA0\uB124\uC218\uC5D8\uB77C \uD45C\uC900\uC2DC -America/Catamarca.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Cayenne.generic.long=\uD504\uB791\uC2A4\uB839 \uAE30\uC544\uB098 \uD45C\uC900\uC2DC -America/Cayman.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Chicago.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Chihuahua.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -America/Coral_Harbour.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Cordoba.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Costa_Rica.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Creston.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -America/Cuiaba.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC -America/Curacao.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Danmarkshavn.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -America/Dawson.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -America/Dawson_Creek.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -America/Denver.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -America/Detroit.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Dominica.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Edmonton.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -America/Eirunepe.generic.long=\uc5d0\uc774\ucee4 \uc2dc\uac04 -America/El_Salvador.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Ensenada.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -America/Fort_Wayne.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Fortaleza.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC -America/Glace_Bay.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Godthab.generic.long=\uC11C\uBD80 \uADF8\uB9B0\uB780\uB4DC \uD45C\uC900\uC2DC -America/Goose_Bay.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Grand_Turk.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Grenada.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Guadeloupe.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Guatemala.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Guayaquil.generic.long=\uC5D0\uCF70\uB3C4\uB974 \uD45C\uC900\uC2DC -America/Guyana.generic.long=\uAC00\uC774\uC544\uB098 \uD45C\uC900\uC2DC -America/Halifax.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Havana.generic.long=\uCFE0\uBC14 \uD45C\uC900\uC2DC -America/Hermosillo.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -America/Indiana/Indianapolis.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Indiana/Knox.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Indiana/Marengo.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Indiana/Petersburg.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Indiana/Tell_City.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Indiana/Vevay.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Indiana/Vincennes.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Indiana/Winamac.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Indianapolis.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Inuvik.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -America/Iqaluit.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Jamaica.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Jujuy.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Juneau.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC -America/Kentucky/Louisville.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Kentucky/Monticello.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Knox_IN.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Kralendijk.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/La_Paz.generic.long=\uBCFC\uB9AC\uBE44\uC544 \uD45C\uC900\uC2DC -America/Lima.generic.long=\uD398\uB8E8 \uD45C\uC900\uC2DC -America/Los_Angeles.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -America/Louisville.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Lower_Princes.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Maceio.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC -America/Managua.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Manaus.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC -America/Marigot.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Martinique.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Matamoros.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Mazatlan.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -America/Mendoza.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Menominee.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Merida.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Metlakatla.daylight.long=\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04 -America/Metlakatla.generic.long=\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uD45C\uC900\uC2DC -America/Metlakatla.standard.long=\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uD45C\uC900\uC2DC -America/Mexico_City.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Miquelon.generic.long=\uD53C\uC5D0\uB974 \uBBF8\uD074\uB871 \uD45C\uC900\uC2DC -America/Moncton.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Monterrey.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Montevideo.generic.long=\uC6B0\uB8E8\uACFC\uC774 \uD45C\uC900\uC2DC -America/Montreal.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Montserrat.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Nassau.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/New_York.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Nipigon.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Nome.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC -America/Noronha.generic.long=\uD398\uB974\uB09C\uB3C4 \uB4DC \uB178\uB85C\uD558 \uD45C\uC900\uC2DC -America/North_Dakota/Beulah.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/North_Dakota/Center.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/North_Dakota/New_Salem.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Ojinaga.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -America/Panama.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Pangnirtung.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Paramaribo.generic.long=\uC218\uB9AC\uB0A8 \uD45C\uC900\uC2DC -America/Phoenix.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -America/Port-au-Prince.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Port_of_Spain.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Porto_Acre.generic.long=\uc5d0\uc774\ucee4 \uc2dc\uac04 -America/Porto_Velho.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC -America/Puerto_Rico.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Rainy_River.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Rankin_Inlet.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Recife.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC -America/Regina.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Resolute.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Rio_Branco.generic.long=\uc5d0\uc774\ucee4 \uc2dc\uac04 -America/Rosario.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC -America/Santa_Isabel.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -America/Santarem.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC -America/Santiago.generic.long=\uCE60\uB808 \uD45C\uC900\uC2DC -America/Santo_Domingo.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Sao_Paulo.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC -America/Scoresbysund.generic.long=\uB3D9\uBD80 \uADF8\uB9B0\uB780\uB4DC \uD45C\uC900\uC2DC -America/Shiprock.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -America/Sitka.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC -America/St_Barthelemy.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/St_Johns.generic.long=\uB274\uD380\uB4E4\uB79C\uB4DC \uD45C\uC900\uC2DC -America/St_Kitts.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/St_Lucia.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/St_Thomas.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/St_Vincent.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Swift_Current.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Tegucigalpa.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Thule.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Thunder_Bay.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Tijuana.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -America/Toronto.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -America/Tortola.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Vancouver.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -America/Virgin.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -America/Whitehorse.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -America/Winnipeg.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -America/Yakutat.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC -America/Yellowknife.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -Antarctica/Casey.daylight.long=\uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Antarctica/Casey.generic.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Antarctica/Casey.standard.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Antarctica/Davis.generic.long=\uB370\uC774\uBE44\uC2A4 \uD45C\uC900\uC2DC -Antarctica/DumontDUrville.generic.long=\uB450\uBAAC\uD2B8\uC6B0\uB974\uBE4C \uD45C\uC900\uC2DC -Antarctica/Macquarie.daylight.long=\uB9E4\uCF70\uB9AC \uC12C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04 -Antarctica/Macquarie.generic.long=\uB9E4\uCF70\uB9AC \uC12C \uD45C\uC900\uC2DC -Antarctica/Macquarie.standard.long=\uB9E4\uCF70\uB9AC \uC12C \uD45C\uC900\uC2DC -Antarctica/Mawson.generic.long=\uB9C8\uC2A8 \uD45C\uC900\uC2DC -Antarctica/McMurdo.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC -Antarctica/Palmer.generic.long=\uCE60\uB808 \uD45C\uC900\uC2DC -Antarctica/Rothera.generic.long=\uB85C\uB354\uB77C \uD45C\uC900\uC2DC -Antarctica/South_Pole.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC -Antarctica/Syowa.generic.long=\uC1FC\uC640 \uD45C\uC900\uC2DC -Antarctica/Vostok.generic.long=\uBCF4\uC2A4\uD1A1 \uD45C\uC900\uC2DC -Arctic/Longyearbyen.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Asia/Aden.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC -Asia/Almaty.generic.long=\uC54C\uB9C8\uC544\uD0C0 \uD45C\uC900\uC2DC -Asia/Amman.generic.long=\uc544\ub77c\ube44\uc544 \ud45c\uc900\uc2dc -Asia/Anadyr.generic.long=\uC544\uB098\uB514\uB9AC \uD45C\uC900\uC2DC -Asia/Aqtau.generic.long=\uC544\uD06C\uD0C0\uC6B0 \uD45C\uC900\uC2DC -Asia/Aqtobe.generic.long=\uC544\uD06C\uD1A0\uBCA0 \uD45C\uC900\uC2DC -Asia/Ashgabat.generic.long=\uD22C\uB974\uD06C\uBA54\uB2C8\uC2A4\uD0C4 \uD45C\uC900\uC2DC -Asia/Ashkhabad.generic.long=\uD22C\uB974\uD06C\uBA54\uB2C8\uC2A4\uD0C4 \uD45C\uC900\uC2DC -Asia/Baghdad.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC -Asia/Bahrain.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC -Asia/Baku.generic.long=\uC544\uC81C\uB974\uBC14\uC774\uC794 \uD45C\uC900\uC2DC -Asia/Bangkok.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC -Asia/Beirut.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Asia/Bishkek.generic.long=\uD0A4\uB974\uAE30\uC2A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC -Asia/Brunei.generic.long=\uBE0C\uB8E8\uB098\uC774 \uD45C\uC900\uC2DC -Asia/Calcutta.generic.long=\uC778\uB3C4 \uD45C\uC900\uC2DC -Asia/Choibalsan.generic.long=\uCD08\uC774\uBC1C\uC0B0 \uD45C\uC900\uC2DC -Asia/Chongqing.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC -Asia/Chungking.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC -Asia/Colombo.generic.long=\uC778\uB3C4 \uD45C\uC900\uC2DC -Asia/Dacca.generic.long=\uBC29\uAE00\uB77C\uB370\uC2DC \uD45C\uC900\uC2DC -Asia/Damascus.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Asia/Dhaka.generic.long=\uBC29\uAE00\uB77C\uB370\uC2DC \uD45C\uC900\uC2DC -Asia/Dili.generic.long=\uB3D9\uD2F0\uBAA8\uB974 \uD45C\uC900\uC2DC -Asia/Dubai.generic.long=\uAC78\uD504\uB9CC \uD45C\uC900\uC2DC -Asia/Dushanbe.generic.long=\uD0C0\uC9C0\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC -Asia/Gaza.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Asia/Harbin.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC -Asia/Hebron.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Asia/Ho_Chi_Minh.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC -Asia/Hong_Kong.generic.long=\uD64D\uCF69 \uD45C\uC900\uC2DC -Asia/Hovd.generic.long=\uD638\uBE0C\uB4DC \uD45C\uC900\uC2DC -Asia/Irkutsk.generic.long=\uC774\uB974\uCFE0\uCE20\uD06C \uD45C\uC900\uC2DC -Asia/Istanbul.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Asia/Jakarta.generic.long=\uC11C\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC -Asia/Jayapura.generic.long=\uB3D9\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC -Asia/Jerusalem.generic.long=\uC544\uC2A4\uB77C\uC5D8 \uD45C\uC900\uC2DC -Asia/Kabul.generic.long=\uC544\uD504\uAC00\uB2C8\uC2A4\uD0C4 \uD45C\uC900\uC2DC -Asia/Kamchatka.generic.long=\uD398\uD2B8\uB85C\uD30C\uBE0C\uB85C\uD504\uC2A4\uD06C-\uCE84\uCC28\uCE20\uD0A4 \uD45C\uC900\uC2DC -Asia/Karachi.generic.long=\uD30C\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC -Asia/Kashgar.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC -Asia/Kathmandu.generic.long=\uB124\uD314 \uD45C\uC900\uC2DC -Asia/Katmandu.generic.long=\uB124\uD314 \uD45C\uC900\uC2DC -Asia/Khandyga.daylight.long=\uD55C\uB514\uAC00 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04 -Asia/Khandyga.generic.long=\uD55C\uB514\uAC00 \uD45C\uC900\uC2DC -Asia/Khandyga.standard.long=\uD55C\uB514\uAC00 \uD45C\uC900\uC2DC -Asia/Kolkata.generic.long=\uC778\uB3C4 \uD45C\uC900\uC2DC -Asia/Krasnoyarsk.generic.long=\uD06C\uB77C\uC2A4\uB178\uC57C\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC -Asia/Kuala_Lumpur.generic.long=\uB9D0\uB808\uC774\uC2DC\uC544 \uD45C\uC900\uC2DC -Asia/Kuching.generic.long=\uB9D0\uB808\uC774\uC2DC\uC544 \uD45C\uC900\uC2DC -Asia/Kuwait.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC -Asia/Macao.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC -Asia/Macau.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC -Asia/Magadan.generic.long=\uB9C8\uAC00\uB2E8 \uD45C\uC900\uC2DC -Asia/Makassar.generic.long=\uC911\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC -Asia/Manila.generic.long=\uD544\uB9AC\uD540 \uD45C\uC900\uC2DC -Asia/Muscat.generic.long=\uAC78\uD504\uB9CC \uD45C\uC900\uC2DC -Asia/Nicosia.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Asia/Novokuznetsk.generic.long=\uB178\uBCF4\uC2DC\uBE44\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC -Asia/Novosibirsk.generic.long=\uB178\uBCF4\uC2DC\uBE44\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC -Asia/Omsk.generic.long=\uC634\uC2A4\uD06C \uD45C\uC900\uC2DC -Asia/Oral.generic.long=\uC624\uB7F4 \uD45C\uC900\uC2DC -Asia/Phnom_Penh.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC -Asia/Pontianak.generic.long=\uC11C\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC -Asia/Pyongyang.generic.long=\uB300\uD55C\uBBFC\uAD6D \uD45C\uC900\uC2DC -Asia/Qatar.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC -Asia/Qyzylorda.generic.long=\uD0A4\uC9C8\uB85C\uB974\uB2E4 \uD45C\uC900\uC2DC -Asia/Rangoon.generic.long=\uBBF8\uC580\uB9C8 \uD45C\uC900\uC2DC -Asia/Saigon.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC -Asia/Sakhalin.generic.long=\uC0AC\uD560\uB9B0 \uD45C\uC900\uC2DC -Asia/Samarkand.generic.long=\uC6B0\uC988\uBCA0\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC -Asia/Seoul.generic.long=\uB300\uD55C\uBBFC\uAD6D \uD45C\uC900\uC2DC -Asia/Shanghai.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC -Asia/Singapore.generic.long=\uC2F1\uAC00\uD3EC\uB974 \uD45C\uC900\uC2DC -Asia/Taipei.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC -Asia/Tashkent.generic.long=\uC6B0\uC988\uBCA0\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC -Asia/Tbilisi.generic.long=\uADF8\uB8E8\uC9C0\uC57C \uD45C\uC900\uC2DC -Asia/Tehran.generic.long=\uC774\uB780 \uD45C\uC900\uC2DC -Asia/Tel_Aviv.generic.long=\uC544\uC2A4\uB77C\uC5D8 \uD45C\uC900\uC2DC -Asia/Thimbu.generic.long=\uBD80\uD0C4 \uD45C\uC900\uC2DC -Asia/Thimphu.generic.long=\uBD80\uD0C4 \uD45C\uC900\uC2DC -Asia/Tokyo.generic.long=\uC77C\uBCF8 \uD45C\uC900\uC2DC -Asia/Ujung_Pandang.generic.long=\uC911\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC -Asia/Ulaanbaatar.generic.long=\uC6B8\uB780\uBC14\uD1A0\uB974 \uD45C\uC900\uC2DC -Asia/Ulan_Bator.generic.long=\uC6B8\uB780\uBC14\uD1A0\uB974 \uD45C\uC900\uC2DC -Asia/Urumqi.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC -Asia/Ust-Nera.daylight.long=\uC6B0\uC2A4\uD2F0\uB124\uB77C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04 -Asia/Ust-Nera.generic.long=\uC6B0\uC2A4\uD2F0\uB124\uB77C \uD45C\uC900\uC2DC -Asia/Ust-Nera.standard.long=\uC6B0\uC2A4\uD2F0\uB124\uB77C \uD45C\uC900\uC2DC -Asia/Vientiane.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC -Asia/Vladivostok.generic.long=\uBE14\uB77C\uB514\uBCF4\uC2A4\uD1A1 \uD45C\uC900\uC2DC -Asia/Yakutsk.generic.long=\uC57C\uCFE0\uCE20\uD06C \uD45C\uC900\uC2DC -Asia/Yekaterinburg.generic.long=\uC608\uCE74\uD14C\uB9B0\uBD80\uB974\uD06C \uD45C\uC900\uC2DC -Asia/Yerevan.generic.long=\uC544\uB974\uBA54\uB2C8\uC544 \uD45C\uC900\uC2DC -Atlantic/Azores.generic.long=\uC544\uC870\uB808\uC2A4 \uD45C\uC900\uC2DC -Atlantic/Bermuda.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -Atlantic/Canary.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Atlantic/Cape_Verde.generic.long=\uCF00\uC774\uD504\uBCA0\uB974\uB370 \uD45C\uC900\uC2DC -Atlantic/Faeroe.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Atlantic/Faroe.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Atlantic/Jan_Mayen.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Atlantic/Madeira.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Atlantic/Reykjavik.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Atlantic/South_Georgia.generic.long=\uC0AC\uC6B0\uC2A4\uC870\uC9C0\uC544 \uD45C\uC900\uC2DC -Atlantic/St_Helena.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Atlantic/Stanley.generic.long=\uD3EC\uD074\uB79C\uB4DC \uC81C\uB3C4 \uD45C\uC900\uC2DC -Australia/ACT.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/ACT.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/ACT.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Adelaide.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/Adelaide.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/Adelaide.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/Brisbane.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD038\uC990\uB79C\uB4DC) -Australia/Brisbane.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC) -Australia/Brisbane.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC) -Australia/Broken_Hill.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Broken_Hill.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Broken_Hill.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Canberra.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Canberra.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Canberra.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Currie.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Currie.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Currie.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Darwin.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBD81\uBD80 \uC9C0\uC5ED) -Australia/Darwin.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED) -Australia/Darwin.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED) -Australia/Eucla.daylight.long=\uC911\uC559 \uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/Eucla.generic.long=\uC911\uC559 \uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/Eucla.standard.long=\uC911\uC559 \uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/Hobart.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544) -Australia/Hobart.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544) -Australia/Hobart.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544) -Australia/LHI.generic.long=\uB85C\uB4DC\uD558\uC6B0 \uD45C\uC900\uC2DC -Australia/Lindeman.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD038\uC990\uB79C\uB4DC) -Australia/Lindeman.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC) -Australia/Lindeman.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC) -Australia/Lord_Howe.generic.long=\uB85C\uB4DC\uD558\uC6B0 \uD45C\uC900\uC2DC -Australia/Melbourne.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBE45\uD1A0\uB9AC\uC544) -Australia/Melbourne.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544) -Australia/Melbourne.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544) -Australia/NSW.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/NSW.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/NSW.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/North.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBD81\uBD80 \uC9C0\uC5ED) -Australia/North.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED) -Australia/North.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED) -Australia/Perth.daylight.long=\uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/Perth.generic.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/Perth.standard.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/Queensland.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD038\uC990\uB79C\uB4DC) -Australia/Queensland.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC) -Australia/Queensland.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC) -Australia/South.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/South.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/South.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/Sydney.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Sydney.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Sydney.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Tasmania.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544) -Australia/Tasmania.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544) -Australia/Tasmania.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544) -Australia/Victoria.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBE45\uD1A0\uB9AC\uC544) -Australia/Victoria.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544) -Australia/Victoria.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544) -Australia/West.daylight.long=\uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/West.generic.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/West.standard.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544) -Australia/Yancowinna.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Yancowinna.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -Australia/Yancowinna.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988) -BET.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC -BST.generic.long=\uBC29\uAE00\uB77C\uB370\uC2DC \uD45C\uC900\uC2DC -Brazil/Acre.generic.long=\uc5d0\uc774\ucee4 \uc2dc\uac04 -Brazil/DeNoronha.generic.long=\uD398\uB974\uB09C\uB3C4 \uB4DC \uB178\uB85C\uD558 \uD45C\uC900\uC2DC -Brazil/East.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC -Brazil/West.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC -CAT.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -CET.generic.long=\uc911\uc559 \uc720\ub7fd \ud45c\uc900\uc2dc -CNT.generic.long=\uB274\uD380\uB4E4\uB79C\uB4DC \uD45C\uC900\uC2DC -CST.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -CST6CDT.generic.long=\uc911\ubd80 \ud45c\uc900\uc2dc -CTT.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC -Canada/Atlantic.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -Canada/Central.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -Canada/East-Saskatchewan.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -Canada/Eastern.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -Canada/Mountain.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -Canada/Newfoundland.generic.long=\uB274\uD380\uB4E4\uB79C\uB4DC \uD45C\uC900\uC2DC -Canada/Pacific.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -Canada/Saskatchewan.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -Canada/Yukon.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -Chile/Continental.generic.long=\uCE60\uB808 \uD45C\uC900\uC2DC -Chile/EasterIsland.generic.long=\uC774\uC2A4\uD130 \uC12C \uD45C\uC900\uC2DC -Cuba.generic.long=\uCFE0\uBC14 \uD45C\uC900\uC2DC -EAT.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -ECT.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -EET.generic.long=\ub3d9\ubd80 \uc720\ub7fd \ud45c\uc900\uc2dc -EST.generic.long=\ub3d9\ubd80 \ud45c\uc900\uc2dc -EST5EDT.generic.long=\ub3d9\ubd80 \ud45c\uc900\uc2dc -Egypt.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Eire.generic.long=\uC544\uC77C\uB79C\uB4DC \uD45C\uC900\uC2DC -Etc/Greenwich.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Etc/UCT.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC -Etc/UTC.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC -Etc/Universal.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC -Etc/Zulu.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC -Europe/Amsterdam.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Andorra.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Athens.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Belfast.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC -Europe/Belgrade.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Berlin.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Bratislava.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Brussels.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Bucharest.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Budapest.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Busingen.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Chisinau.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Copenhagen.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Dublin.generic.long=\uC544\uC77C\uB79C\uB4DC \uD45C\uC900\uC2DC -Europe/Gibraltar.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Guernsey.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC -Europe/Helsinki.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Isle_of_Man.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC -Europe/Istanbul.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Jersey.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC -Europe/Kaliningrad.daylight.long=\uADF9\uB3D9 \uC720\uB7FD \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04 -Europe/Kaliningrad.generic.long=\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Kaliningrad.standard.long=\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Kiev.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Lisbon.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Ljubljana.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/London.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC -Europe/Luxembourg.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Madrid.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Malta.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Mariehamn.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Minsk.daylight.long=\uADF9\uB3D9 \uC720\uB7FD \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04 -Europe/Minsk.generic.long=\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Minsk.standard.long=\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Monaco.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Moscow.generic.long=\uBAA8\uC2A4\uD06C\uBC14 \uD45C\uC900\uC2DC -Europe/Nicosia.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Oslo.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Paris.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Podgorica.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Prague.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Riga.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Rome.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Samara.generic.long=\uC0AC\uB9C8\uB77C \uD45C\uC900\uC2DC -Europe/San_Marino.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Sarajevo.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Simferopol.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Skopje.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Sofia.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Stockholm.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Tallinn.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Tirane.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Tiraspol.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Uzhgorod.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Vaduz.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Vatican.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Vienna.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Vilnius.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Volgograd.generic.long=\uBCFC\uACE0\uADF8\uB77C\uB4DC \uD45C\uC900\uC2DC -Europe/Warsaw.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Zagreb.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Zaporozhye.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -Europe/Zurich.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -GB-Eire.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC -GB.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC -GMT.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Greenwich.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -HST.generic.long=\ud558\uc640\uc774 \ud45c\uc900\uc2dc -Hongkong.generic.long=\uD64D\uCF69 \uD45C\uC900\uC2DC -IET.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -IST.generic.long=\uC778\uB3C4 \uD45C\uC900\uC2DC -Iceland.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC -Indian/Antananarivo.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Indian/Chagos.generic.long=\uC778\uB3C4\uC591 \uC2DD\uBBFC\uC9C0 \uD45C\uC900\uC2DC -Indian/Christmas.generic.long=\uD06C\uB9AC\uC2A4\uB9C8\uC2A4 \uC12C \uD45C\uC900\uC2DC -Indian/Cocos.generic.long=\uCF54\uCF54\uC2A4 \uC81C\uB3C4 \uD45C\uC900\uC2DC -Indian/Comoro.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Indian/Kerguelen.generic.long=\uD504\uB791\uC2A4\uB839 \uB0A8\uBD80 \uBC0F \uB0A8\uADF9 \uB300\uB959 \uD45C\uC900\uC2DC -Indian/Mahe.generic.long=\uC138\uC774\uC178 \uD45C\uC900\uC2DC -Indian/Maldives.generic.long=\uBAB0\uB514\uBE0C \uD45C\uC900\uC2DC -Indian/Mauritius.generic.long=\uBAA8\uB9AC\uC154\uC2A4 \uD45C\uC900\uC2DC -Indian/Mayotte.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC -Indian/Reunion.generic.long=\uB808\uC704\uB2C8\uC639 \uD45C\uC900\uC2DC -Iran.generic.long=\uC774\uB780 \uD45C\uC900\uC2DC -Israel.generic.long=\uC544\uC2A4\uB77C\uC5D8 \uD45C\uC900\uC2DC -JST.generic.long=\uC77C\uBCF8 \uD45C\uC900\uC2DC -Jamaica.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -Japan.generic.long=\uC77C\uBCF8 \uD45C\uC900\uC2DC -Kwajalein.generic.long=\uB9C8\uC15C \uC81C\uB3C4 \uD45C\uC900\uC2DC -Libya.generic.long=\ub3d9\ubd80 \uc720\ub7fd \ud45c\uc900\uc2dc -MET.generic.long=MET -MIT.generic.long=\uC11C\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC -MST.generic.long=\uc0b0\uc9c0 \ud45c\uc900\uc2dc -MST7MDT.generic.long=\uc0b0\uc9c0 \ud45c\uc900\uc2dc -Mexico/BajaNorte.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -Mexico/BajaSur.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -Mexico/General.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -NET.generic.long=\uC544\uB974\uBA54\uB2C8\uC544 \uD45C\uC900\uC2DC -NST.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC -NZ-CHAT.generic.long=\uCC44\uD140 \uD45C\uC900\uC2DC -NZ.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC -Navajo.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -PLT.generic.long=\uD30C\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC -PNT.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -PRC.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC -PRT.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -PST.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -PST8PDT.generic.long=\ud0dc\ud3c9\uc591 \ud45c\uc900\uc2dc -Pacific/Apia.generic.long=\uC11C\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC -Pacific/Auckland.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC -Pacific/Chatham.generic.long=\uCC44\uD140 \uD45C\uC900\uC2DC -Pacific/Chuuk.daylight.long=\uCD94\uD06C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04 -Pacific/Chuuk.generic.long=\uCD94\uD06C \uD45C\uC900\uC2DC -Pacific/Chuuk.standard.long=\uCD94\uD06C \uD45C\uC900\uC2DC -Pacific/Easter.generic.long=\uC774\uC2A4\uD130 \uC12C \uD45C\uC900\uC2DC -Pacific/Efate.generic.long=\uBC14\uB204\uC544\uD22C \uD45C\uC900\uC2DC -Pacific/Enderbury.generic.long=\uD53C\uB2C9\uC2A4 \uC81C\uB3C4 \uD45C\uC900\uC2DC -Pacific/Fakaofo.generic.long=\uD1A0\uCF08\uB77C\uC6B0 \uD45C\uC900\uC2DC -Pacific/Fiji.generic.long=\uD53C\uC9C0 \uD45C\uC900\uC2DC -Pacific/Funafuti.generic.long=\uD22C\uBC1C\uB8E8 \uD45C\uC900\uC2DC -Pacific/Galapagos.generic.long=\uAC08\uB77C\uD30C\uACE0\uC2A4 \uD45C\uC900\uC2DC -Pacific/Gambier.generic.long=\uC7A0\uBE44\uC544 \uD45C\uC900\uC2DC -Pacific/Guadalcanal.generic.long=\uC194\uB85C\uBAAC \uC81C\uB3C4 \uD45C\uC900\uC2DC -Pacific/Guam.generic.long=\uCC28\uBAA8\uB974 \uD45C\uC900\uC2DC -Pacific/Honolulu.generic.long=\uD558\uC640\uC774 \uD45C\uC900\uC2DC -Pacific/Johnston.generic.long=\uD558\uC640\uC774 \uD45C\uC900\uC2DC -Pacific/Kiritimati.generic.long=\uB77C\uC778 \uC81C\uB3C4 \uD45C\uC900\uC2DC -Pacific/Kosrae.generic.long=\uCF54\uC2A4\uB808 \uD45C\uC900\uC2DC -Pacific/Kwajalein.generic.long=\uB9C8\uC15C \uC81C\uB3C4 \uD45C\uC900\uC2DC -Pacific/Majuro.generic.long=\uB9C8\uC15C \uC81C\uB3C4 \uD45C\uC900\uC2DC -Pacific/Marquesas.generic.long=\uB9C8\uD0A4\uC800\uC2A4 \uD45C\uC900\uC2DC -Pacific/Midway.generic.long=\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC -Pacific/Nauru.generic.long=\uB098\uC6B0\uB8E8 \uD45C\uC900\uC2DC -Pacific/Niue.generic.long=\uB2C8\uC6B0\uC5D0 \uD45C\uC900\uC2DC -Pacific/Norfolk.generic.long=\uB178\uD37D \uD45C\uC900\uC2DC -Pacific/Noumea.generic.long=\uB274 \uCE7C\uB808\uB3C4\uB2C8\uC544 \uD45C\uC900\uC2DC -Pacific/Pago_Pago.generic.long=\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC -Pacific/Palau.generic.long=\uD314\uB77C\uC6B0 \uD45C\uC900\uC2DC -Pacific/Pitcairn.generic.long=\uD54F\uCF00\uC5B8 \uD45C\uC900\uC2DC -Pacific/Pohnpei.daylight.long=\uD3F0\uD398\uC774 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04 -Pacific/Pohnpei.generic.long=\uD3EC\uB098\uD398 \uD45C\uC900\uC2DC -Pacific/Pohnpei.standard.long=\uD3F0\uD398\uC774 \uD45C\uC900\uC2DC -Pacific/Ponape.daylight.long=\uD3F0\uD398\uC774 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04 -Pacific/Ponape.generic.long=\uD3EC\uB098\uD398 \uD45C\uC900\uC2DC -Pacific/Ponape.standard.long=\uD3F0\uD398\uC774 \uD45C\uC900\uC2DC -Pacific/Port_Moresby.generic.long=\uD30C\uD478\uC544 \uB274\uAE30\uB2C8\uC544 \uD45C\uC900\uC2DC -Pacific/Rarotonga.generic.long=\uCFE1 \uC81C\uB3C4 \uD45C\uC900\uC2DC -Pacific/Saipan.generic.long=\uCC28\uBAA8\uB974 \uD45C\uC900\uC2DC -Pacific/Samoa.generic.long=\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC -Pacific/Tahiti.generic.long=\uD0C0\uD788\uD2F0 \uD45C\uC900\uC2DC -Pacific/Tarawa.generic.long=\uAE38\uBC84\uD2B8 \uC81C\uB3C4 \uD45C\uC900\uC2DC -Pacific/Tongatapu.generic.long=\uD1B5\uAC00 \uD45C\uC900\uC2DC -Pacific/Truk.daylight.long=\uCD94\uD06C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04 -Pacific/Truk.generic.long=\uCD94\uD06C \uD45C\uC900\uC2DC -Pacific/Truk.standard.long=\uCD94\uD06C \uD45C\uC900\uC2DC -Pacific/Wake.generic.long=\uC6E8\uC774\uD06C \uD45C\uC900\uC2DC -Pacific/Wallis.generic.long=\uC6D4\uB9AC\uC2A4 \uD478\uD22C\uB098 \uD45C\uC900\uC2DC -Pacific/Yap.daylight.long=\uCD94\uD06C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04 -Pacific/Yap.generic.long=\uCD94\uD06C \uD45C\uC900\uC2DC -Pacific/Yap.standard.long=\uCD94\uD06C \uD45C\uC900\uC2DC -Poland.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC -Portugal.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -ROK.generic.long=\uB300\uD55C\uBBFC\uAD6D \uD45C\uC900\uC2DC -SST.generic.long=\uC194\uB85C\uBAAC \uC81C\uB3C4 \uD45C\uC900\uC2DC -Singapore.generic.long=\uC2F1\uAC00\uD3EC\uB974 \uD45C\uC900\uC2DC -SystemV/AST4.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -SystemV/AST4ADT.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC -SystemV/CST6.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -SystemV/CST6CDT.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -SystemV/EST5.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -SystemV/EST5EDT.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -SystemV/HST10.generic.long=\uD558\uC640\uC774 \uD45C\uC900\uC2DC -SystemV/MST7.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -SystemV/MST7MDT.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -SystemV/PST8.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -SystemV/PST8PDT.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -SystemV/YST9.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC -SystemV/YST9YDT.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC -Turkey.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC -UCT.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC -US/Alaska.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC -US/Aleutian.generic.long=\uD558\uC640\uC774-\uC54C\uB8E8\uC0E8 \uD45C\uC900\uC2DC -US/Arizona.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -US/Central.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -US/East-Indiana.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -US/Eastern.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -US/Hawaii.generic.long=\uD558\uC640\uC774 \uD45C\uC900\uC2DC -US/Indiana-Starke.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC -US/Michigan.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC -US/Mountain.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC -US/Pacific-New.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -US/Pacific.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC -US/Samoa.generic.long=\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC -UTC.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC -Universal.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC -VST.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC -W-SU.generic.long=\uBAA8\uC2A4\uD06C\uBC14 \uD45C\uC900\uC2DC -WET.generic.long=\uc11c\ubd80 \uc720\ub7fd \ud45c\uc900\uc2dc -Zulu.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ko_short.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ko_short.properties deleted file mode 100644 index 095522a68d1..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ko_short.properties +++ /dev/null @@ -1,1743 +0,0 @@ -ACT.daylight.short=CST -ACT.generic.short=CT -ACT.standard.short=CST -AET.daylight.short=EST -AET.generic.short=ET -AET.standard.short=EST -Africa/Abidjan.daylight.short=GMT -Africa/Abidjan.generic.short=GMT -Africa/Abidjan.standard.short=GMT -Africa/Accra.daylight.short=GHST -Africa/Accra.generic.short=GMT -Africa/Accra.standard.short=GMT -Africa/Addis_Ababa.daylight.short=EAST -Africa/Addis_Ababa.generic.short=EAT -Africa/Addis_Ababa.standard.short=EAT -Africa/Algiers.daylight.short=CEST -Africa/Algiers.generic.short=CET -Africa/Algiers.standard.short=CET -Africa/Asmara.daylight.short=EAST -Africa/Asmara.generic.short=EAT -Africa/Asmara.standard.short=EAT -Africa/Asmera.daylight.short=EAST -Africa/Asmera.generic.short=EAT -Africa/Asmera.standard.short=EAT -Africa/Bamako.daylight.short=GMT -Africa/Bamako.generic.short=GMT -Africa/Bamako.standard.short=GMT -Africa/Bangui.daylight.short=WAST -Africa/Bangui.generic.short=WAT -Africa/Bangui.standard.short=WAT -Africa/Banjul.daylight.short=GMT -Africa/Banjul.generic.short=GMT -Africa/Banjul.standard.short=GMT -Africa/Bissau.daylight.short=GMT -Africa/Bissau.generic.short=GMT -Africa/Bissau.standard.short=GMT -Africa/Blantyre.daylight.short=CAST -Africa/Blantyre.generic.short=CAT -Africa/Blantyre.standard.short=CAT -Africa/Brazzaville.daylight.short=WAST -Africa/Brazzaville.generic.short=WAT -Africa/Brazzaville.standard.short=WAT -Africa/Bujumbura.daylight.short=CAST -Africa/Bujumbura.generic.short=CAT -Africa/Bujumbura.standard.short=CAT -Africa/Cairo.daylight.short=EEST -Africa/Cairo.generic.short=EET -Africa/Cairo.standard.short=EET -Africa/Casablanca.daylight.short=WEST -Africa/Casablanca.generic.short=WET -Africa/Casablanca.standard.short=WET -Africa/Ceuta.daylight.short=CEST -Africa/Ceuta.generic.short=CET -Africa/Ceuta.standard.short=CET -Africa/Conakry.daylight.short=GMT -Africa/Conakry.generic.short=GMT -Africa/Conakry.standard.short=GMT -Africa/Dakar.daylight.short=GMT -Africa/Dakar.generic.short=GMT -Africa/Dakar.standard.short=GMT -Africa/Dar_es_Salaam.daylight.short=EAST -Africa/Dar_es_Salaam.generic.short=EAT -Africa/Dar_es_Salaam.standard.short=EAT -Africa/Djibouti.daylight.short=EAST -Africa/Djibouti.generic.short=EAT -Africa/Djibouti.standard.short=EAT -Africa/Douala.daylight.short=WAST -Africa/Douala.generic.short=WAT -Africa/Douala.standard.short=WAT -Africa/El_Aaiun.daylight.short=WEST -Africa/El_Aaiun.generic.short=WET -Africa/El_Aaiun.standard.short=WET -Africa/Freetown.daylight.short=SLST -Africa/Freetown.generic.short=SLT -Africa/Freetown.standard.short=GMT -Africa/Gaborone.daylight.short=CAST -Africa/Gaborone.generic.short=CAT -Africa/Gaborone.standard.short=CAT -Africa/Harare.daylight.short=CAST -Africa/Harare.generic.short=CAT -Africa/Harare.standard.short=CAT -Africa/Johannesburg.daylight.short=SAST -Africa/Johannesburg.generic.short=SAT -Africa/Johannesburg.standard.short=SAST -Africa/Juba.daylight.short=EAST -Africa/Juba.generic.short=EAT -Africa/Juba.standard.short=EAT -Africa/Kampala.daylight.short=EAST -Africa/Kampala.generic.short=EAT -Africa/Kampala.standard.short=EAT -Africa/Khartoum.daylight.short=EAST -Africa/Khartoum.generic.short=EAT -Africa/Khartoum.standard.short=EAT -Africa/Kigali.daylight.short=CAST -Africa/Kigali.generic.short=CAT -Africa/Kigali.standard.short=CAT -Africa/Kinshasa.daylight.short=WAST -Africa/Kinshasa.generic.short=WAT -Africa/Kinshasa.standard.short=WAT -Africa/Lagos.daylight.short=WAST -Africa/Lagos.generic.short=WAT -Africa/Lagos.standard.short=WAT -Africa/Libreville.daylight.short=WAST -Africa/Libreville.generic.short=WAT -Africa/Libreville.standard.short=WAT -Africa/Lome.daylight.short=GMT -Africa/Lome.generic.short=GMT -Africa/Lome.standard.short=GMT -Africa/Luanda.daylight.short=WAST -Africa/Luanda.generic.short=WAT -Africa/Luanda.standard.short=WAT -Africa/Lubumbashi.daylight.short=CAST -Africa/Lubumbashi.generic.short=CAT -Africa/Lubumbashi.standard.short=CAT -Africa/Lusaka.daylight.short=CAST -Africa/Lusaka.generic.short=CAT -Africa/Lusaka.standard.short=CAT -Africa/Malabo.daylight.short=WAST -Africa/Malabo.generic.short=WAT -Africa/Malabo.standard.short=WAT -Africa/Maputo.daylight.short=CAST -Africa/Maputo.generic.short=CAT -Africa/Maputo.standard.short=CAT -Africa/Maseru.daylight.short=SAST -Africa/Maseru.generic.short=SAT -Africa/Maseru.standard.short=SAST -Africa/Mbabane.daylight.short=SAST -Africa/Mbabane.generic.short=SAT -Africa/Mbabane.standard.short=SAST -Africa/Mogadishu.daylight.short=EAST -Africa/Mogadishu.generic.short=EAT -Africa/Mogadishu.standard.short=EAT -Africa/Monrovia.daylight.short=GMT -Africa/Monrovia.generic.short=GMT -Africa/Monrovia.standard.short=GMT -Africa/Nairobi.daylight.short=EAST -Africa/Nairobi.generic.short=EAT -Africa/Nairobi.standard.short=EAT -Africa/Ndjamena.daylight.short=WAST -Africa/Ndjamena.generic.short=WAT -Africa/Ndjamena.standard.short=WAT -Africa/Niamey.daylight.short=WAST -Africa/Niamey.generic.short=WAT -Africa/Niamey.standard.short=WAT -Africa/Nouakchott.daylight.short=GMT -Africa/Nouakchott.generic.short=GMT -Africa/Nouakchott.standard.short=GMT -Africa/Ouagadougou.daylight.short=GMT -Africa/Ouagadougou.generic.short=GMT -Africa/Ouagadougou.standard.short=GMT -Africa/Porto-Novo.daylight.short=WAST -Africa/Porto-Novo.generic.short=WAT -Africa/Porto-Novo.standard.short=WAT -Africa/Sao_Tome.daylight.short=GMT -Africa/Sao_Tome.generic.short=GMT -Africa/Sao_Tome.standard.short=GMT -Africa/Timbuktu.daylight.short=GMT -Africa/Timbuktu.generic.short=GMT -Africa/Timbuktu.standard.short=GMT -Africa/Tripoli.daylight.short=EEST -Africa/Tripoli.generic.short=EET -Africa/Tripoli.standard.short=EET -Africa/Tunis.daylight.short=CEST -Africa/Tunis.generic.short=CET -Africa/Tunis.standard.short=CET -Africa/Windhoek.daylight.short=WAST -Africa/Windhoek.generic.short=WAT -Africa/Windhoek.standard.short=WAT -AGT.daylight.short=ARST -AGT.generic.short=ART -AGT.standard.short=ART -America/Adak.daylight.short=HADT -America/Adak.generic.short=HAT -America/Adak.standard.short=HAST -America/Anchorage.daylight.short=AKDT -America/Anchorage.generic.short=AKT -America/Anchorage.standard.short=AKST -America/Anguilla.daylight.short=ADT -America/Anguilla.generic.short=AT -America/Anguilla.standard.short=AST -America/Antigua.daylight.short=ADT -America/Antigua.generic.short=AT -America/Antigua.standard.short=AST -America/Araguaina.daylight.short=BRST -America/Araguaina.generic.short=BRT -America/Araguaina.standard.short=BRT -America/Argentina/Buenos_Aires.daylight.short=ARST -America/Argentina/Buenos_Aires.generic.short=ART -America/Argentina/Buenos_Aires.standard.short=ART -America/Argentina/Catamarca.daylight.short=ARST -America/Argentina/Catamarca.generic.short=ART -America/Argentina/Catamarca.standard.short=ART -America/Argentina/ComodRivadavia.daylight.short=ARST -America/Argentina/ComodRivadavia.generic.short=ART -America/Argentina/ComodRivadavia.standard.short=ART -America/Argentina/Cordoba.daylight.short=ARST -America/Argentina/Cordoba.generic.short=ART -America/Argentina/Cordoba.standard.short=ART -America/Argentina/Jujuy.daylight.short=ARST -America/Argentina/Jujuy.generic.short=ART -America/Argentina/Jujuy.standard.short=ART -America/Argentina/La_Rioja.daylight.short=ARST -America/Argentina/La_Rioja.generic.short=ART -America/Argentina/La_Rioja.standard.short=ART -America/Argentina/Mendoza.daylight.short=ARST -America/Argentina/Mendoza.generic.short=ART -America/Argentina/Mendoza.standard.short=ART -America/Argentina/Rio_Gallegos.daylight.short=ARST -America/Argentina/Rio_Gallegos.generic.short=ART -America/Argentina/Rio_Gallegos.standard.short=ART -America/Argentina/Salta.daylight.short=ARST -America/Argentina/Salta.generic.short=ART -America/Argentina/Salta.standard.short=ART -America/Argentina/San_Juan.daylight.short=ARST -America/Argentina/San_Juan.generic.short=ART -America/Argentina/San_Juan.standard.short=ART -America/Argentina/San_Luis.daylight.short=ARST -America/Argentina/San_Luis.generic.short=ART -America/Argentina/San_Luis.standard.short=ART -America/Argentina/Tucuman.daylight.short=ARST -America/Argentina/Tucuman.generic.short=ART -America/Argentina/Tucuman.standard.short=ART -America/Argentina/Ushuaia.daylight.short=ARST -America/Argentina/Ushuaia.generic.short=ART -America/Argentina/Ushuaia.standard.short=ART -America/Aruba.daylight.short=ADT -America/Aruba.generic.short=AT -America/Aruba.standard.short=AST -America/Asuncion.daylight.short=PYST -America/Asuncion.generic.short=PYT -America/Asuncion.standard.short=PYT -America/Atikokan.daylight.short=EDT -America/Atikokan.generic.short=ET -America/Atikokan.standard.short=EST -America/Atka.daylight.short=HADT -America/Atka.generic.short=HAT -America/Atka.standard.short=HAST -America/Bahia_Banderas.daylight.short=CDT -America/Bahia_Banderas.generic.short=CT -America/Bahia_Banderas.standard.short=CST -America/Bahia.daylight.short=BRST -America/Bahia.generic.short=BRT -America/Bahia.standard.short=BRT -America/Barbados.daylight.short=ADT -America/Barbados.generic.short=AT -America/Barbados.standard.short=AST -America/Belem.daylight.short=BRST -America/Belem.generic.short=BRT -America/Belem.standard.short=BRT -America/Belize.daylight.short=CDT -America/Belize.generic.short=CT -America/Belize.standard.short=CST -America/Blanc-Sablon.daylight.short=ADT -America/Blanc-Sablon.generic.short=AT -America/Blanc-Sablon.standard.short=AST -America/Boa_Vista.daylight.short=AMST -America/Boa_Vista.generic.short=AMT -America/Boa_Vista.standard.short=AMT -America/Bogota.daylight.short=COST -America/Bogota.generic.short=COT -America/Bogota.standard.short=COT -America/Boise.daylight.short=MDT -America/Boise.generic.short=MT -America/Boise.standard.short=MST -America/Buenos_Aires.daylight.short=ARST -America/Buenos_Aires.generic.short=ART -America/Buenos_Aires.standard.short=ART -America/Cambridge_Bay.daylight.short=MDT -America/Cambridge_Bay.generic.short=MT -America/Cambridge_Bay.standard.short=MST -America/Campo_Grande.daylight.short=AMST -America/Campo_Grande.generic.short=AMT -America/Campo_Grande.standard.short=AMT -America/Cancun.daylight.short=CDT -America/Cancun.generic.short=CT -America/Cancun.standard.short=CST -America/Caracas.daylight.short=VEST -America/Caracas.generic.short=VET -America/Caracas.standard.short=VET -America/Catamarca.daylight.short=ARST -America/Catamarca.generic.short=ART -America/Catamarca.standard.short=ART -America/Cayenne.daylight.short=GFST -America/Cayenne.generic.short=GFT -America/Cayenne.standard.short=GFT -America/Cayman.daylight.short=EDT -America/Cayman.generic.short=ET -America/Cayman.standard.short=EST -America/Chicago.daylight.short=CDT -America/Chicago.generic.short=CT -America/Chicago.standard.short=CST -America/Chihuahua.daylight.short=MDT -America/Chihuahua.generic.short=MT -America/Chihuahua.standard.short=MST -America/Coral_Harbour.daylight.short=EDT -America/Coral_Harbour.generic.short=ET -America/Coral_Harbour.standard.short=EST -America/Cordoba.daylight.short=ARST -America/Cordoba.generic.short=ART -America/Cordoba.standard.short=ART -America/Costa_Rica.daylight.short=CDT -America/Costa_Rica.generic.short=CT -America/Costa_Rica.standard.short=CST -America/Creston.daylight.short=MDT -America/Creston.generic.short=MT -America/Creston.standard.short=MST -America/Cuiaba.daylight.short=AMST -America/Cuiaba.generic.short=AMT -America/Cuiaba.standard.short=AMT -America/Curacao.daylight.short=ADT -America/Curacao.generic.short=AT -America/Curacao.standard.short=AST -America/Danmarkshavn.daylight.short=GMT -America/Danmarkshavn.generic.short=GMT -America/Danmarkshavn.standard.short=GMT -America/Dawson_Creek.daylight.short=MDT -America/Dawson_Creek.generic.short=MT -America/Dawson_Creek.standard.short=MST -America/Dawson.daylight.short=PDT -America/Dawson.generic.short=PT -America/Dawson.standard.short=PST -America/Denver.daylight.short=MDT -America/Denver.generic.short=MT -America/Denver.standard.short=MST -America/Detroit.daylight.short=EDT -America/Detroit.generic.short=ET -America/Detroit.standard.short=EST -America/Dominica.daylight.short=ADT -America/Dominica.generic.short=AT -America/Dominica.standard.short=AST -America/Edmonton.daylight.short=MDT -America/Edmonton.generic.short=MT -America/Edmonton.standard.short=MST -America/Eirunepe.daylight.short=ACST -America/Eirunepe.generic.short=ACT -America/Eirunepe.standard.short=ACT -America/El_Salvador.daylight.short=CDT -America/El_Salvador.generic.short=CT -America/El_Salvador.standard.short=CST -America/Ensenada.daylight.short=PDT -America/Ensenada.generic.short=PT -America/Ensenada.standard.short=PST -America/Fortaleza.daylight.short=BRST -America/Fortaleza.generic.short=BRT -America/Fortaleza.standard.short=BRT -America/Fort_Wayne.daylight.short=EDT -America/Fort_Wayne.generic.short=ET -America/Fort_Wayne.standard.short=EST -America/Glace_Bay.daylight.short=ADT -America/Glace_Bay.generic.short=AT -America/Glace_Bay.standard.short=AST -America/Godthab.daylight.short=WGST -America/Godthab.generic.short=WGT -America/Godthab.standard.short=WGT -America/Goose_Bay.daylight.short=ADT -America/Goose_Bay.generic.short=AT -America/Goose_Bay.standard.short=AST -America/Grand_Turk.daylight.short=EDT -America/Grand_Turk.generic.short=ET -America/Grand_Turk.standard.short=EST -America/Grenada.daylight.short=ADT -America/Grenada.generic.short=AT -America/Grenada.standard.short=AST -America/Guadeloupe.daylight.short=ADT -America/Guadeloupe.generic.short=AT -America/Guadeloupe.standard.short=AST -America/Guatemala.daylight.short=CDT -America/Guatemala.generic.short=CT -America/Guatemala.standard.short=CST -America/Guayaquil.daylight.short=ECST -America/Guayaquil.generic.short=ECT -America/Guayaquil.standard.short=ECT -America/Guyana.daylight.short=GYST -America/Guyana.generic.short=GYT -America/Guyana.standard.short=GYT -America/Halifax.daylight.short=ADT -America/Halifax.generic.short=AT -America/Halifax.standard.short=AST -America/Havana.daylight.short=CDT -America/Havana.generic.short=CT -America/Havana.standard.short=CST -America/Hermosillo.daylight.short=MDT -America/Hermosillo.generic.short=MT -America/Hermosillo.standard.short=MST -America/Indiana/Indianapolis.daylight.short=EDT -America/Indiana/Indianapolis.generic.short=ET -America/Indiana/Indianapolis.standard.short=EST -America/Indiana/Knox.daylight.short=CDT -America/Indiana/Knox.generic.short=CT -America/Indiana/Knox.standard.short=CST -America/Indiana/Marengo.daylight.short=EDT -America/Indiana/Marengo.generic.short=ET -America/Indiana/Marengo.standard.short=EST -America/Indiana/Petersburg.daylight.short=EDT -America/Indiana/Petersburg.generic.short=ET -America/Indiana/Petersburg.standard.short=EST -America/Indianapolis.daylight.short=EDT -America/Indianapolis.generic.short=ET -America/Indianapolis.standard.short=EST -America/Indiana/Tell_City.daylight.short=CDT -America/Indiana/Tell_City.generic.short=CT -America/Indiana/Tell_City.standard.short=CST -America/Indiana/Vevay.daylight.short=EDT -America/Indiana/Vevay.generic.short=ET -America/Indiana/Vevay.standard.short=EST -America/Indiana/Vincennes.daylight.short=EDT -America/Indiana/Vincennes.generic.short=ET -America/Indiana/Vincennes.standard.short=EST -America/Indiana/Winamac.daylight.short=EDT -America/Indiana/Winamac.generic.short=ET -America/Indiana/Winamac.standard.short=EST -America/Inuvik.daylight.short=MDT -America/Inuvik.generic.short=MT -America/Inuvik.standard.short=MST -America/Iqaluit.daylight.short=EDT -America/Iqaluit.generic.short=ET -America/Iqaluit.standard.short=EST -America/Jamaica.daylight.short=EDT -America/Jamaica.generic.short=ET -America/Jamaica.standard.short=EST -America/Jujuy.daylight.short=ARST -America/Jujuy.generic.short=ART -America/Jujuy.standard.short=ART -America/Juneau.daylight.short=AKDT -America/Juneau.generic.short=AKT -America/Juneau.standard.short=AKST -America/Kentucky/Louisville.daylight.short=EDT -America/Kentucky/Louisville.generic.short=ET -America/Kentucky/Louisville.standard.short=EST -America/Kentucky/Monticello.daylight.short=EDT -America/Kentucky/Monticello.generic.short=ET -America/Kentucky/Monticello.standard.short=EST -America/Knox_IN.daylight.short=CDT -America/Knox_IN.generic.short=CT -America/Knox_IN.standard.short=CST -America/Kralendijk.daylight.short=ADT -America/Kralendijk.generic.short=AT -America/Kralendijk.standard.short=AST -America/La_Paz.daylight.short=BOST -America/La_Paz.generic.short=BOT -America/La_Paz.standard.short=BOT -America/Lima.daylight.short=PEST -America/Lima.generic.short=PET -America/Lima.standard.short=PET -America/Los_Angeles.daylight.short=PDT -America/Los_Angeles.generic.short=PT -America/Los_Angeles.standard.short=PST -America/Louisville.daylight.short=EDT -America/Louisville.generic.short=ET -America/Louisville.standard.short=EST -America/Lower_Princes.daylight.short=ADT -America/Lower_Princes.generic.short=AT -America/Lower_Princes.standard.short=AST -America/Maceio.daylight.short=BRST -America/Maceio.generic.short=BRT -America/Maceio.standard.short=BRT -America/Managua.daylight.short=CDT -America/Managua.generic.short=CT -America/Managua.standard.short=CST -America/Manaus.daylight.short=AMST -America/Manaus.generic.short=AMT -America/Manaus.standard.short=AMT -America/Marigot.daylight.short=ADT -America/Marigot.generic.short=AT -America/Marigot.standard.short=AST -America/Martinique.daylight.short=ADT -America/Martinique.generic.short=AT -America/Martinique.standard.short=AST -America/Matamoros.daylight.short=CDT -America/Matamoros.generic.short=CT -America/Matamoros.standard.short=CST -America/Mazatlan.daylight.short=MDT -America/Mazatlan.generic.short=MT -America/Mazatlan.standard.short=MST -America/Mendoza.daylight.short=ARST -America/Mendoza.generic.short=ART -America/Mendoza.standard.short=ART -America/Menominee.daylight.short=CDT -America/Menominee.generic.short=CT -America/Menominee.standard.short=CST -America/Merida.daylight.short=CDT -America/Merida.generic.short=CT -America/Merida.standard.short=CST -America/Metlakatla.daylight.short=MeDT -America/Metlakatla.generic.short=MeT -America/Metlakatla.standard.short=MeST -America/Mexico_City.daylight.short=CDT -America/Mexico_City.generic.short=CT -America/Mexico_City.standard.short=CST -America/Miquelon.daylight.short=PMDT -America/Miquelon.generic.short=PMT -America/Miquelon.standard.short=PMST -America/Moncton.daylight.short=ADT -America/Moncton.generic.short=AT -America/Moncton.standard.short=AST -America/Monterrey.daylight.short=CDT -America/Monterrey.generic.short=CT -America/Monterrey.standard.short=CST -America/Montevideo.daylight.short=UYST -America/Montevideo.generic.short=UYT -America/Montevideo.standard.short=UYT -America/Montreal.daylight.short=EDT -America/Montreal.generic.short=ET -America/Montreal.standard.short=EST -America/Montserrat.daylight.short=ADT -America/Montserrat.generic.short=AT -America/Montserrat.standard.short=AST -America/Nassau.daylight.short=EDT -America/Nassau.generic.short=ET -America/Nassau.standard.short=EST -America/New_York.daylight.short=EDT -America/New_York.generic.short=ET -America/New_York.standard.short=EST -America/Nipigon.daylight.short=EDT -America/Nipigon.generic.short=ET -America/Nipigon.standard.short=EST -America/Nome.daylight.short=AKDT -America/Nome.generic.short=AKT -America/Nome.standard.short=AKST -America/Noronha.daylight.short=FNST -America/Noronha.generic.short=FNT -America/Noronha.standard.short=FNT -America/North_Dakota/Beulah.daylight.short=CDT -America/North_Dakota/Beulah.generic.short=CT -America/North_Dakota/Beulah.standard.short=CST -America/North_Dakota/Center.daylight.short=CDT -America/North_Dakota/Center.generic.short=CT -America/North_Dakota/Center.standard.short=CST -America/North_Dakota/New_Salem.daylight.short=CDT -America/North_Dakota/New_Salem.generic.short=CT -America/North_Dakota/New_Salem.standard.short=CST -America/Ojinaga.daylight.short=MDT -America/Ojinaga.generic.short=MT -America/Ojinaga.standard.short=MST -America/Panama.daylight.short=EDT -America/Panama.generic.short=ET -America/Panama.standard.short=EST -America/Pangnirtung.daylight.short=EDT -America/Pangnirtung.generic.short=ET -America/Pangnirtung.standard.short=EST -America/Paramaribo.daylight.short=SRST -America/Paramaribo.generic.short=SRT -America/Paramaribo.standard.short=SRT -America/Phoenix.daylight.short=MDT -America/Phoenix.generic.short=MT -America/Phoenix.standard.short=MST -America/Port-au-Prince.daylight.short=EDT -America/Port-au-Prince.generic.short=ET -America/Port-au-Prince.standard.short=EST -America/Porto_Acre.daylight.short=ACST -America/Porto_Acre.generic.short=ACT -America/Porto_Acre.standard.short=ACT -America/Port_of_Spain.daylight.short=ADT -America/Port_of_Spain.generic.short=AT -America/Port_of_Spain.standard.short=AST -America/Porto_Velho.daylight.short=AMST -America/Porto_Velho.generic.short=AMT -America/Porto_Velho.standard.short=AMT -America/Puerto_Rico.daylight.short=ADT -America/Puerto_Rico.generic.short=AT -America/Puerto_Rico.standard.short=AST -America/Rainy_River.daylight.short=CDT -America/Rainy_River.generic.short=CT -America/Rainy_River.standard.short=CST -America/Rankin_Inlet.daylight.short=CDT -America/Rankin_Inlet.generic.short=CT -America/Rankin_Inlet.standard.short=CST -America/Recife.daylight.short=BRST -America/Recife.generic.short=BRT -America/Recife.standard.short=BRT -America/Regina.daylight.short=CDT -America/Regina.generic.short=CT -America/Regina.standard.short=CST -America/Resolute.daylight.short=CDT -America/Resolute.generic.short=CT -America/Resolute.standard.short=CST -America/Rio_Branco.daylight.short=ACST -America/Rio_Branco.generic.short=ACT -America/Rio_Branco.standard.short=ACT -America/Rosario.daylight.short=ARST -America/Rosario.generic.short=ART -America/Rosario.standard.short=ART -America/Santa_Isabel.daylight.short=PDT -America/Santa_Isabel.generic.short=PT -America/Santa_Isabel.standard.short=PST -America/Santarem.daylight.short=BRST -America/Santarem.generic.short=BRT -America/Santarem.standard.short=BRT -America/Santiago.daylight.short=CLST -America/Santiago.generic.short=CLT -America/Santiago.standard.short=CLT -America/Santo_Domingo.daylight.short=ADT -America/Santo_Domingo.generic.short=AT -America/Santo_Domingo.standard.short=AST -America/Sao_Paulo.daylight.short=BRST -America/Sao_Paulo.generic.short=BRT -America/Sao_Paulo.standard.short=BRT -America/Scoresbysund.daylight.short=EGST -America/Scoresbysund.generic.short=EGT -America/Scoresbysund.standard.short=EGT -America/Shiprock.daylight.short=MDT -America/Shiprock.generic.short=MT -America/Shiprock.standard.short=MST -America/Sitka.daylight.short=AKDT -America/Sitka.generic.short=AKT -America/Sitka.standard.short=AKST -America/St_Barthelemy.daylight.short=ADT -America/St_Barthelemy.generic.short=AT -America/St_Barthelemy.standard.short=AST -America/St_Johns.daylight.short=NDT -America/St_Johns.generic.short=NT -America/St_Johns.standard.short=NST -America/St_Kitts.daylight.short=ADT -America/St_Kitts.generic.short=AT -America/St_Kitts.standard.short=AST -America/St_Lucia.daylight.short=ADT -America/St_Lucia.generic.short=AT -America/St_Lucia.standard.short=AST -America/St_Thomas.daylight.short=ADT -America/St_Thomas.generic.short=AT -America/St_Thomas.standard.short=AST -America/St_Vincent.daylight.short=ADT -America/St_Vincent.generic.short=AT -America/St_Vincent.standard.short=AST -America/Swift_Current.daylight.short=CDT -America/Swift_Current.generic.short=CT -America/Swift_Current.standard.short=CST -America/Tegucigalpa.daylight.short=CDT -America/Tegucigalpa.generic.short=CT -America/Tegucigalpa.standard.short=CST -America/Thule.daylight.short=ADT -America/Thule.generic.short=AT -America/Thule.standard.short=AST -America/Thunder_Bay.daylight.short=EDT -America/Thunder_Bay.generic.short=ET -America/Thunder_Bay.standard.short=EST -America/Tijuana.daylight.short=PDT -America/Tijuana.generic.short=PT -America/Tijuana.standard.short=PST -America/Toronto.daylight.short=EDT -America/Toronto.generic.short=ET -America/Toronto.standard.short=EST -America/Tortola.daylight.short=ADT -America/Tortola.generic.short=AT -America/Tortola.standard.short=AST -America/Vancouver.daylight.short=PDT -America/Vancouver.generic.short=PT -America/Vancouver.standard.short=PST -America/Virgin.daylight.short=ADT -America/Virgin.generic.short=AT -America/Virgin.standard.short=AST -America/Whitehorse.daylight.short=PDT -America/Whitehorse.generic.short=PT -America/Whitehorse.standard.short=PST -America/Winnipeg.daylight.short=CDT -America/Winnipeg.generic.short=CT -America/Winnipeg.standard.short=CST -America/Yakutat.daylight.short=AKDT -America/Yakutat.generic.short=AKT -America/Yakutat.standard.short=AKST -America/Yellowknife.daylight.short=MDT -America/Yellowknife.generic.short=MT -America/Yellowknife.standard.short=MST -Antarctica/Casey.daylight.short=WST -Antarctica/Casey.generic.short=WT -Antarctica/Casey.standard.short=WST -Antarctica/Davis.daylight.short=DAVST -Antarctica/Davis.generic.short=DAVT -Antarctica/Davis.standard.short=DAVT -Antarctica/DumontDUrville.daylight.short=DDUST -Antarctica/DumontDUrville.generic.short=DDUT -Antarctica/DumontDUrville.standard.short=DDUT -Antarctica/Macquarie.daylight.short=MIST -Antarctica/Macquarie.generic.short=MIST -Antarctica/Macquarie.standard.short=MIST -Antarctica/Mawson.daylight.short=MAWST -Antarctica/Mawson.generic.short=MAWT -Antarctica/Mawson.standard.short=MAWT -Antarctica/McMurdo.daylight.short=NZDT -Antarctica/McMurdo.generic.short=NZT -Antarctica/McMurdo.standard.short=NZST -Antarctica/Palmer.daylight.short=CLST -Antarctica/Palmer.generic.short=CLT -Antarctica/Palmer.standard.short=CLT -Antarctica/Rothera.daylight.short=ROTST -Antarctica/Rothera.generic.short=ROTT -Antarctica/Rothera.standard.short=ROTT -Antarctica/South_Pole.daylight.short=NZDT -Antarctica/South_Pole.generic.short=NZT -Antarctica/South_Pole.standard.short=NZST -Antarctica/Syowa.daylight.short=SYOST -Antarctica/Syowa.generic.short=SYOT -Antarctica/Syowa.standard.short=SYOT -Antarctica/Vostok.daylight.short=VOSST -Antarctica/Vostok.generic.short=VOST -Antarctica/Vostok.standard.short=VOST -Arctic/Longyearbyen.daylight.short=CEST -Arctic/Longyearbyen.generic.short=CET -Arctic/Longyearbyen.standard.short=CET -ART.daylight.short=EEST -ART.generic.short=EET -ART.standard.short=EET -Asia/Aden.daylight.short=ADT -Asia/Aden.generic.short=AT -Asia/Aden.standard.short=AST -Asia/Almaty.daylight.short=ALMST -Asia/Almaty.generic.short=ALMT -Asia/Almaty.standard.short=ALMT -Asia/Amman.daylight.short=ADT -Asia/Amman.generic.short=AT -Asia/Amman.standard.short=AST -Asia/Anadyr.daylight.short=ANAST -Asia/Anadyr.generic.short=ANAT -Asia/Anadyr.standard.short=ANAT -Asia/Aqtau.daylight.short=AQTST -Asia/Aqtau.generic.short=AQTT -Asia/Aqtau.standard.short=AQTT -Asia/Aqtobe.daylight.short=AQTST -Asia/Aqtobe.generic.short=AQTT -Asia/Aqtobe.standard.short=AQTT -Asia/Ashgabat.daylight.short=TMST -Asia/Ashgabat.generic.short=TMT -Asia/Ashgabat.standard.short=TMT -Asia/Ashkhabad.daylight.short=TMST -Asia/Ashkhabad.generic.short=TMT -Asia/Ashkhabad.standard.short=TMT -Asia/Baghdad.daylight.short=ADT -Asia/Baghdad.generic.short=AT -Asia/Baghdad.standard.short=AST -Asia/Bahrain.daylight.short=ADT -Asia/Bahrain.generic.short=AT -Asia/Bahrain.standard.short=AST -Asia/Baku.daylight.short=AZST -Asia/Baku.generic.short=AZT -Asia/Baku.standard.short=AZT -Asia/Bangkok.daylight.short=ICST -Asia/Bangkok.generic.short=ICT -Asia/Bangkok.standard.short=ICT -Asia/Beirut.daylight.short=EEST -Asia/Beirut.generic.short=EET -Asia/Beirut.standard.short=EET -Asia/Bishkek.daylight.short=KGST -Asia/Bishkek.generic.short=KGT -Asia/Bishkek.standard.short=KGT -Asia/Brunei.daylight.short=BNST -Asia/Brunei.generic.short=BNT -Asia/Brunei.standard.short=BNT -Asia/Calcutta.daylight.short=IDT -Asia/Calcutta.generic.short=IT -Asia/Calcutta.standard.short=IST -Asia/Choibalsan.daylight.short=CHOST -Asia/Choibalsan.generic.short=CHOT -Asia/Choibalsan.standard.short=CHOT -Asia/Chongqing.daylight.short=CDT -Asia/Chongqing.generic.short=CT -Asia/Chongqing.standard.short=CST -Asia/Chungking.daylight.short=CDT -Asia/Chungking.generic.short=CT -Asia/Chungking.standard.short=CST -Asia/Colombo.daylight.short=IDT -Asia/Colombo.generic.short=IT -Asia/Colombo.standard.short=IST -Asia/Dacca.daylight.short=BDST -Asia/Dacca.generic.short=BDT -Asia/Dacca.standard.short=BDT -Asia/Damascus.daylight.short=EEST -Asia/Damascus.generic.short=EET -Asia/Damascus.standard.short=EET -Asia/Dhaka.daylight.short=BDST -Asia/Dhaka.generic.short=BDT -Asia/Dhaka.standard.short=BDT -Asia/Dili.daylight.short=TLST -Asia/Dili.generic.short=TLT -Asia/Dili.standard.short=TLT -Asia/Dubai.daylight.short=GDT -Asia/Dubai.generic.short=GT -Asia/Dubai.standard.short=GST -Asia/Dushanbe.daylight.short=TJST -Asia/Dushanbe.generic.short=TJT -Asia/Dushanbe.standard.short=TJT -Asia/Gaza.daylight.short=EEST -Asia/Gaza.generic.short=EET -Asia/Gaza.standard.short=EET -Asia/Harbin.daylight.short=CDT -Asia/Harbin.generic.short=CT -Asia/Harbin.standard.short=CST -Asia/Hebron.daylight.short=EEST -Asia/Hebron.generic.short=EET -Asia/Hebron.standard.short=EET -Asia/Ho_Chi_Minh.daylight.short=ICST -Asia/Ho_Chi_Minh.generic.short=ICT -Asia/Ho_Chi_Minh.standard.short=ICT -Asia/Hong_Kong.daylight.short=HKST -Asia/Hong_Kong.generic.short=HKT -Asia/Hong_Kong.standard.short=HKT -Asia/Hovd.daylight.short=HOVST -Asia/Hovd.generic.short=HOVT -Asia/Hovd.standard.short=HOVT -Asia/Irkutsk.daylight.short=IRKST -Asia/Irkutsk.generic.short=IRKT -Asia/Irkutsk.standard.short=IRKT -Asia/Istanbul.daylight.short=EEST -Asia/Istanbul.generic.short=EET -Asia/Istanbul.standard.short=EET -Asia/Jakarta.daylight.short=WIST -Asia/Jakarta.generic.short=WIB -Asia/Jakarta.standard.short=WIB -Asia/Jayapura.daylight.short=EIST -Asia/Jayapura.generic.short=WIT -Asia/Jayapura.standard.short=WIT -Asia/Jerusalem.daylight.short=IDT -Asia/Jerusalem.generic.short=IT -Asia/Jerusalem.standard.short=IST -Asia/Kabul.daylight.short=AFST -Asia/Kabul.generic.short=AFT -Asia/Kabul.standard.short=AFT -Asia/Kamchatka.daylight.short=PETST -Asia/Kamchatka.generic.short=PETT -Asia/Kamchatka.standard.short=PETT -Asia/Karachi.daylight.short=PKST -Asia/Karachi.generic.short=PKT -Asia/Karachi.standard.short=PKT -Asia/Kashgar.daylight.short=CDT -Asia/Kashgar.generic.short=CT -Asia/Kashgar.standard.short=CST -Asia/Kathmandu.daylight.short=NPST -Asia/Kathmandu.generic.short=NPT -Asia/Kathmandu.standard.short=NPT -Asia/Katmandu.daylight.short=NPST -Asia/Katmandu.generic.short=NPT -Asia/Katmandu.standard.short=NPT -Asia/Khandyga.daylight.short=YAKST -Asia/Khandyga.generic.short=YAKT -Asia/Khandyga.standard.short=YAKT -Asia/Kolkata.daylight.short=IDT -Asia/Kolkata.generic.short=IT -Asia/Kolkata.standard.short=IST -Asia/Krasnoyarsk.daylight.short=KRAST -Asia/Krasnoyarsk.generic.short=KRAT -Asia/Krasnoyarsk.standard.short=KRAT -Asia/Kuala_Lumpur.daylight.short=MYST -Asia/Kuala_Lumpur.generic.short=MYT -Asia/Kuala_Lumpur.standard.short=MYT -Asia/Kuching.daylight.short=MYST -Asia/Kuching.generic.short=MYT -Asia/Kuching.standard.short=MYT -Asia/Kuwait.daylight.short=ADT -Asia/Kuwait.generic.short=AT -Asia/Kuwait.standard.short=AST -Asia/Macao.daylight.short=CDT -Asia/Macao.generic.short=CT -Asia/Macao.standard.short=CST -Asia/Macau.daylight.short=CDT -Asia/Macau.generic.short=CT -Asia/Macau.standard.short=CST -Asia/Magadan.daylight.short=MAGST -Asia/Magadan.generic.short=MAGT -Asia/Magadan.standard.short=MAGT -Asia/Makassar.daylight.short=CIST -Asia/Makassar.generic.short=WITA -Asia/Makassar.standard.short=WITA -Asia/Manila.daylight.short=PHST -Asia/Manila.generic.short=PHT -Asia/Manila.standard.short=PHT -Asia/Muscat.daylight.short=GDT -Asia/Muscat.generic.short=GT -Asia/Muscat.standard.short=GST -Asia/Nicosia.daylight.short=EEST -Asia/Nicosia.generic.short=EET -Asia/Nicosia.standard.short=EET -Asia/Novokuznetsk.daylight.short=NOVST -Asia/Novokuznetsk.generic.short=NOVT -Asia/Novokuznetsk.standard.short=NOVT -Asia/Novosibirsk.daylight.short=NOVST -Asia/Novosibirsk.generic.short=NOVT -Asia/Novosibirsk.standard.short=NOVT -Asia/Omsk.daylight.short=OMSST -Asia/Omsk.generic.short=OMST -Asia/Omsk.standard.short=OMST -Asia/Oral.daylight.short=ORAST -Asia/Oral.generic.short=ORAT -Asia/Oral.standard.short=ORAT -Asia/Phnom_Penh.daylight.short=ICST -Asia/Phnom_Penh.generic.short=ICT -Asia/Phnom_Penh.standard.short=ICT -Asia/Pontianak.daylight.short=WIST -Asia/Pontianak.generic.short=WIB -Asia/Pontianak.standard.short=WIB -Asia/Pyongyang.daylight.short=KDT -Asia/Pyongyang.generic.short=KT -Asia/Pyongyang.standard.short=KST -Asia/Qatar.daylight.short=ADT -Asia/Qatar.generic.short=AT -Asia/Qatar.standard.short=AST -Asia/Qyzylorda.daylight.short=QYZST -Asia/Qyzylorda.generic.short=QYZT -Asia/Qyzylorda.standard.short=QYZT -Asia/Rangoon.daylight.short=MMST -Asia/Rangoon.generic.short=MMT -Asia/Rangoon.standard.short=MMT -Asia/Saigon.daylight.short=ICST -Asia/Saigon.generic.short=ICT -Asia/Saigon.standard.short=ICT -Asia/Sakhalin.daylight.short=SAKST -Asia/Sakhalin.generic.short=SAKT -Asia/Sakhalin.standard.short=SAKT -Asia/Samarkand.daylight.short=UZST -Asia/Samarkand.generic.short=UZT -Asia/Samarkand.standard.short=UZT -Asia/Seoul.daylight.short=KDT -Asia/Seoul.generic.short=KT -Asia/Seoul.standard.short=KST -Asia/Shanghai.daylight.short=CDT -Asia/Shanghai.generic.short=CT -Asia/Shanghai.standard.short=CST -Asia/Singapore.daylight.short=SGST -Asia/Singapore.generic.short=SGT -Asia/Singapore.standard.short=SGT -Asia/Taipei.daylight.short=CDT -Asia/Taipei.generic.short=CT -Asia/Taipei.standard.short=CST -Asia/Tashkent.daylight.short=UZST -Asia/Tashkent.generic.short=UZT -Asia/Tashkent.standard.short=UZT -Asia/Tbilisi.daylight.short=GEST -Asia/Tbilisi.generic.short=GET -Asia/Tbilisi.standard.short=GET -Asia/Tehran.daylight.short=IRDT -Asia/Tehran.generic.short=IRT -Asia/Tehran.standard.short=IRST -Asia/Tel_Aviv.daylight.short=IDT -Asia/Tel_Aviv.generic.short=IT -Asia/Tel_Aviv.standard.short=IST -Asia/Thimbu.daylight.short=BTST -Asia/Thimbu.generic.short=BTT -Asia/Thimbu.standard.short=BTT -Asia/Thimphu.daylight.short=BTST -Asia/Thimphu.generic.short=BTT -Asia/Thimphu.standard.short=BTT -Asia/Tokyo.daylight.short=JDT -Asia/Tokyo.generic.short=JT -Asia/Tokyo.standard.short=JST -Asia/Ujung_Pandang.daylight.short=CIST -Asia/Ujung_Pandang.generic.short=WITA -Asia/Ujung_Pandang.standard.short=WITA -Asia/Ulaanbaatar.daylight.short=ULAST -Asia/Ulaanbaatar.generic.short=ULAT -Asia/Ulaanbaatar.standard.short=ULAT -Asia/Ulan_Bator.daylight.short=ULAST -Asia/Ulan_Bator.generic.short=ULAT -Asia/Ulan_Bator.standard.short=ULAT -Asia/Urumqi.daylight.short=CDT -Asia/Urumqi.generic.short=CT -Asia/Urumqi.standard.short=CST -Asia/Ust-Nera.daylight.short=VLAST -Asia/Ust-Nera.generic.short=VLAT -Asia/Ust-Nera.standard.short=VLAT -Asia/Vientiane.daylight.short=ICST -Asia/Vientiane.generic.short=ICT -Asia/Vientiane.standard.short=ICT -Asia/Vladivostok.daylight.short=VLAST -Asia/Vladivostok.generic.short=VLAT -Asia/Vladivostok.standard.short=VLAT -Asia/Yakutsk.daylight.short=YAKST -Asia/Yakutsk.generic.short=YAKT -Asia/Yakutsk.standard.short=YAKT -Asia/Yekaterinburg.daylight.short=YEKST -Asia/Yekaterinburg.generic.short=YEKT -Asia/Yekaterinburg.standard.short=YEKT -Asia/Yerevan.daylight.short=AMST -Asia/Yerevan.generic.short=AMT -Asia/Yerevan.standard.short=AMT -AST.daylight.short=AKDT -AST.generic.short=AKT -AST.standard.short=AKST -Atlantic/Azores.daylight.short=AZOST -Atlantic/Azores.generic.short=AZOT -Atlantic/Azores.standard.short=AZOT -Atlantic/Bermuda.daylight.short=ADT -Atlantic/Bermuda.generic.short=AT -Atlantic/Bermuda.standard.short=AST -Atlantic/Canary.daylight.short=WEST -Atlantic/Canary.generic.short=WET -Atlantic/Canary.standard.short=WET -Atlantic/Cape_Verde.daylight.short=CVST -Atlantic/Cape_Verde.generic.short=CVT -Atlantic/Cape_Verde.standard.short=CVT -Atlantic/Faeroe.daylight.short=WEST -Atlantic/Faeroe.generic.short=WET -Atlantic/Faeroe.standard.short=WET -Atlantic/Faroe.daylight.short=WEST -Atlantic/Faroe.generic.short=WET -Atlantic/Faroe.standard.short=WET -Atlantic/Jan_Mayen.daylight.short=CEST -Atlantic/Jan_Mayen.generic.short=CET -Atlantic/Jan_Mayen.standard.short=CET -Atlantic/Madeira.daylight.short=WEST -Atlantic/Madeira.generic.short=WET -Atlantic/Madeira.standard.short=WET -Atlantic/Reykjavik.daylight.short=GMT -Atlantic/Reykjavik.generic.short=GMT -Atlantic/Reykjavik.standard.short=GMT -Atlantic/South_Georgia.daylight.short=GDT -Atlantic/South_Georgia.generic.short=GT -Atlantic/South_Georgia.standard.short=GST -Atlantic/Stanley.daylight.short=FKST -Atlantic/Stanley.generic.short=FKT -Atlantic/Stanley.standard.short=FKT -Atlantic/St_Helena.daylight.short=GMT -Atlantic/St_Helena.generic.short=GMT -Atlantic/St_Helena.standard.short=GMT -Australia/ACT.daylight.short=EST -Australia/ACT.generic.short=ET -Australia/ACT.standard.short=EST -Australia/Adelaide.daylight.short=CST -Australia/Adelaide.generic.short=CT -Australia/Adelaide.standard.short=CST -Australia/Brisbane.daylight.short=EST -Australia/Brisbane.generic.short=ET -Australia/Brisbane.standard.short=EST -Australia/Broken_Hill.daylight.short=CST -Australia/Broken_Hill.generic.short=CT -Australia/Broken_Hill.standard.short=CST -Australia/Canberra.daylight.short=EST -Australia/Canberra.generic.short=ET -Australia/Canberra.standard.short=EST -Australia/Currie.daylight.short=EST -Australia/Currie.generic.short=ET -Australia/Currie.standard.short=EST -Australia/Darwin.daylight.short=CST -Australia/Darwin.generic.short=CT -Australia/Darwin.standard.short=CST -Australia/Eucla.daylight.short=CWST -Australia/Eucla.generic.short=CWT -Australia/Eucla.standard.short=CWST -Australia/Hobart.daylight.short=EST -Australia/Hobart.generic.short=ET -Australia/Hobart.standard.short=EST -Australia/LHI.daylight.short=LHST -Australia/LHI.generic.short=LHT -Australia/LHI.standard.short=LHST -Australia/Lindeman.daylight.short=EST -Australia/Lindeman.generic.short=ET -Australia/Lindeman.standard.short=EST -Australia/Lord_Howe.daylight.short=LHST -Australia/Lord_Howe.generic.short=LHT -Australia/Lord_Howe.standard.short=LHST -Australia/Melbourne.daylight.short=EST -Australia/Melbourne.generic.short=ET -Australia/Melbourne.standard.short=EST -Australia/North.daylight.short=CST -Australia/North.generic.short=CT -Australia/North.standard.short=CST -Australia/NSW.daylight.short=EST -Australia/NSW.generic.short=ET -Australia/NSW.standard.short=EST -Australia/Perth.daylight.short=WST -Australia/Perth.generic.short=WT -Australia/Perth.standard.short=WST -Australia/Queensland.daylight.short=EST -Australia/Queensland.generic.short=ET -Australia/Queensland.standard.short=EST -Australia/South.daylight.short=CST -Australia/South.generic.short=CT -Australia/South.standard.short=CST -Australia/Sydney.daylight.short=EST -Australia/Sydney.generic.short=ET -Australia/Sydney.standard.short=EST -Australia/Tasmania.daylight.short=EST -Australia/Tasmania.generic.short=ET -Australia/Tasmania.standard.short=EST -Australia/Victoria.daylight.short=EST -Australia/Victoria.generic.short=ET -Australia/Victoria.standard.short=EST -Australia/West.daylight.short=WST -Australia/West.generic.short=WT -Australia/West.standard.short=WST -Australia/Yancowinna.daylight.short=CST -Australia/Yancowinna.generic.short=CT -Australia/Yancowinna.standard.short=CST -BET.daylight.short=BRST -BET.generic.short=BRT -BET.standard.short=BRT -Brazil/Acre.daylight.short=ACST -Brazil/Acre.generic.short=ACT -Brazil/Acre.standard.short=ACT -Brazil/DeNoronha.daylight.short=FNST -Brazil/DeNoronha.generic.short=FNT -Brazil/DeNoronha.standard.short=FNT -Brazil/East.daylight.short=BRST -Brazil/East.generic.short=BRT -Brazil/East.standard.short=BRT -Brazil/West.daylight.short=AMST -Brazil/West.generic.short=AMT -Brazil/West.standard.short=AMT -BST.daylight.short=BDST -BST.generic.short=BDT -BST.standard.short=BDT -Canada/Atlantic.daylight.short=ADT -Canada/Atlantic.generic.short=AT -Canada/Atlantic.standard.short=AST -Canada/Central.daylight.short=CDT -Canada/Central.generic.short=CT -Canada/Central.standard.short=CST -Canada/Eastern.daylight.short=EDT -Canada/Eastern.generic.short=ET -Canada/Eastern.standard.short=EST -Canada/East-Saskatchewan.daylight.short=CDT -Canada/East-Saskatchewan.generic.short=CT -Canada/East-Saskatchewan.standard.short=CST -Canada/Mountain.daylight.short=MDT -Canada/Mountain.generic.short=MT -Canada/Mountain.standard.short=MST -Canada/Newfoundland.daylight.short=NDT -Canada/Newfoundland.generic.short=NT -Canada/Newfoundland.standard.short=NST -Canada/Pacific.daylight.short=PDT -Canada/Pacific.generic.short=PT -Canada/Pacific.standard.short=PST -Canada/Saskatchewan.daylight.short=CDT -Canada/Saskatchewan.generic.short=CT -Canada/Saskatchewan.standard.short=CST -Canada/Yukon.daylight.short=PDT -Canada/Yukon.generic.short=PT -Canada/Yukon.standard.short=PST -CAT.daylight.short=CAST -CAT.generic.short=CAT -CAT.standard.short=CAT -CET.daylight.short=CEST -CET.generic.short=CET -CET.standard.short=CET -Chile/Continental.daylight.short=CLST -Chile/Continental.generic.short=CLT -Chile/Continental.standard.short=CLT -Chile/EasterIsland.daylight.short=EASST -Chile/EasterIsland.generic.short=EAST -Chile/EasterIsland.standard.short=EAST -CNT.daylight.short=NDT -CNT.generic.short=NT -CNT.standard.short=NST -CST6CDT.daylight.short=CDT -CST6CDT.generic.short=CT -CST6CDT.standard.short=CST -CST.daylight.short=CDT -CST.generic.short=CT -CST.standard.short=CST -CTT.daylight.short=CDT -CTT.generic.short=CT -CTT.standard.short=CST -Cuba.daylight.short=CDT -Cuba.generic.short=CT -Cuba.standard.short=CST -EAT.daylight.short=EAST -EAT.generic.short=EAT -EAT.standard.short=EAT -ECT.daylight.short=CEST -ECT.generic.short=CET -ECT.standard.short=CET -EET.daylight.short=EEST -EET.generic.short=EET -EET.standard.short=EET -Egypt.daylight.short=EEST -Egypt.generic.short=EET -Egypt.standard.short=EET -Eire.daylight.short=IST -Eire.generic.short=IT -Eire.standard.short=GMT -EST5EDT.daylight.short=EDT -EST5EDT.generic.short=ET -EST5EDT.standard.short=EST -EST.daylight.short=EDT -EST.generic.short=ET -EST.standard.short=EST -Etc/Greenwich.daylight.short=GMT -Etc/Greenwich.generic.short=GMT -Etc/Greenwich.standard.short=GMT -Etc/UCT.daylight.short=UTC -Etc/UCT.generic.short=UTC -Etc/UCT.standard.short=UTC -Etc/Universal.daylight.short=UTC -Etc/Universal.generic.short=UTC -Etc/Universal.standard.short=UTC -Etc/UTC.daylight.short=UTC -Etc/UTC.generic.short=UTC -Etc/UTC.standard.short=UTC -Etc/Zulu.daylight.short=UTC -Etc/Zulu.generic.short=UTC -Etc/Zulu.standard.short=UTC -Europe/Amsterdam.daylight.short=CEST -Europe/Amsterdam.generic.short=CET -Europe/Amsterdam.standard.short=CET -Europe/Andorra.daylight.short=CEST -Europe/Andorra.generic.short=CET -Europe/Andorra.standard.short=CET -Europe/Athens.daylight.short=EEST -Europe/Athens.generic.short=EET -Europe/Athens.standard.short=EET -Europe/Belfast.daylight.short=BST -Europe/Belfast.generic.short=BT -Europe/Belfast.standard.short=GMT -Europe/Belgrade.daylight.short=CEST -Europe/Belgrade.generic.short=CET -Europe/Belgrade.standard.short=CET -Europe/Berlin.daylight.short=CEST -Europe/Berlin.generic.short=CET -Europe/Berlin.standard.short=CET -Europe/Bratislava.daylight.short=CEST -Europe/Bratislava.generic.short=CET -Europe/Bratislava.standard.short=CET -Europe/Brussels.daylight.short=CEST -Europe/Brussels.generic.short=CET -Europe/Brussels.standard.short=CET -Europe/Bucharest.daylight.short=EEST -Europe/Bucharest.generic.short=EET -Europe/Bucharest.standard.short=EET -Europe/Budapest.daylight.short=CEST -Europe/Budapest.generic.short=CET -Europe/Budapest.standard.short=CET -Europe/Busingen.daylight.short=CEST -Europe/Busingen.generic.short=CET -Europe/Busingen.standard.short=CET -Europe/Chisinau.daylight.short=EEST -Europe/Chisinau.generic.short=EET -Europe/Chisinau.standard.short=EET -Europe/Copenhagen.daylight.short=CEST -Europe/Copenhagen.generic.short=CET -Europe/Copenhagen.standard.short=CET -Europe/Dublin.daylight.short=IST -Europe/Dublin.generic.short=IT -Europe/Dublin.standard.short=GMT -Europe/Gibraltar.daylight.short=CEST -Europe/Gibraltar.generic.short=CET -Europe/Gibraltar.standard.short=CET -Europe/Guernsey.daylight.short=BST -Europe/Guernsey.generic.short=BT -Europe/Guernsey.standard.short=GMT -Europe/Helsinki.daylight.short=EEST -Europe/Helsinki.generic.short=EET -Europe/Helsinki.standard.short=EET -Europe/Isle_of_Man.daylight.short=BST -Europe/Isle_of_Man.generic.short=BT -Europe/Isle_of_Man.standard.short=GMT -Europe/Istanbul.daylight.short=EEST -Europe/Istanbul.generic.short=EET -Europe/Istanbul.standard.short=EET -Europe/Jersey.daylight.short=BST -Europe/Jersey.generic.short=BT -Europe/Jersey.standard.short=GMT -Europe/Kaliningrad.daylight.short=FEST -Europe/Kaliningrad.generic.short=FET -Europe/Kaliningrad.standard.short=FET -Europe/Kiev.daylight.short=EEST -Europe/Kiev.generic.short=EET -Europe/Kiev.standard.short=EET -Europe/Lisbon.daylight.short=WEST -Europe/Lisbon.generic.short=WET -Europe/Lisbon.standard.short=WET -Europe/Ljubljana.daylight.short=CEST -Europe/Ljubljana.generic.short=CET -Europe/Ljubljana.standard.short=CET -Europe/London.daylight.short=BST -Europe/London.generic.short=BT -Europe/London.standard.short=GMT -Europe/Luxembourg.daylight.short=CEST -Europe/Luxembourg.generic.short=CET -Europe/Luxembourg.standard.short=CET -Europe/Madrid.daylight.short=CEST -Europe/Madrid.generic.short=CET -Europe/Madrid.standard.short=CET -Europe/Malta.daylight.short=CEST -Europe/Malta.generic.short=CET -Europe/Malta.standard.short=CET -Europe/Mariehamn.daylight.short=EEST -Europe/Mariehamn.generic.short=EET -Europe/Mariehamn.standard.short=EET -Europe/Minsk.daylight.short=FEST -Europe/Minsk.generic.short=FET -Europe/Minsk.standard.short=FET -Europe/Monaco.daylight.short=CEST -Europe/Monaco.generic.short=CET -Europe/Monaco.standard.short=CET -Europe/Moscow.daylight.short=MSD -Europe/Moscow.generic.short=MT -Europe/Moscow.standard.short=MSK -Europe/Nicosia.daylight.short=EEST -Europe/Nicosia.generic.short=EET -Europe/Nicosia.standard.short=EET -Europe/Oslo.daylight.short=CEST -Europe/Oslo.generic.short=CET -Europe/Oslo.standard.short=CET -Europe/Paris.daylight.short=CEST -Europe/Paris.generic.short=CET -Europe/Paris.standard.short=CET -Europe/Podgorica.daylight.short=CEST -Europe/Podgorica.generic.short=CET -Europe/Podgorica.standard.short=CET -Europe/Prague.daylight.short=CEST -Europe/Prague.generic.short=CET -Europe/Prague.standard.short=CET -Europe/Riga.daylight.short=EEST -Europe/Riga.generic.short=EET -Europe/Riga.standard.short=EET -Europe/Rome.daylight.short=CEST -Europe/Rome.generic.short=CET -Europe/Rome.standard.short=CET -Europe/Samara.daylight.short=SAMST -Europe/Samara.generic.short=SAMT -Europe/Samara.standard.short=SAMT -Europe/San_Marino.daylight.short=CEST -Europe/San_Marino.generic.short=CET -Europe/San_Marino.standard.short=CET -Europe/Sarajevo.daylight.short=CEST -Europe/Sarajevo.generic.short=CET -Europe/Sarajevo.standard.short=CET -Europe/Simferopol.daylight.short=EEST -Europe/Simferopol.generic.short=EET -Europe/Simferopol.standard.short=EET -Europe/Skopje.daylight.short=CEST -Europe/Skopje.generic.short=CET -Europe/Skopje.standard.short=CET -Europe/Sofia.daylight.short=EEST -Europe/Sofia.generic.short=EET -Europe/Sofia.standard.short=EET -Europe/Stockholm.daylight.short=CEST -Europe/Stockholm.generic.short=CET -Europe/Stockholm.standard.short=CET -Europe/Tallinn.daylight.short=EEST -Europe/Tallinn.generic.short=EET -Europe/Tallinn.standard.short=EET -Europe/Tirane.daylight.short=CEST -Europe/Tirane.generic.short=CET -Europe/Tirane.standard.short=CET -Europe/Tiraspol.daylight.short=EEST -Europe/Tiraspol.generic.short=EET -Europe/Tiraspol.standard.short=EET -Europe/Uzhgorod.daylight.short=EEST -Europe/Uzhgorod.generic.short=EET -Europe/Uzhgorod.standard.short=EET -Europe/Vaduz.daylight.short=CEST -Europe/Vaduz.generic.short=CET -Europe/Vaduz.standard.short=CET -Europe/Vatican.daylight.short=CEST -Europe/Vatican.generic.short=CET -Europe/Vatican.standard.short=CET -Europe/Vienna.daylight.short=CEST -Europe/Vienna.generic.short=CET -Europe/Vienna.standard.short=CET -Europe/Vilnius.daylight.short=EEST -Europe/Vilnius.generic.short=EET -Europe/Vilnius.standard.short=EET -Europe/Volgograd.daylight.short=VOLST -Europe/Volgograd.generic.short=VOLT -Europe/Volgograd.standard.short=VOLT -Europe/Warsaw.daylight.short=CEST -Europe/Warsaw.generic.short=CET -Europe/Warsaw.standard.short=CET -Europe/Zagreb.daylight.short=CEST -Europe/Zagreb.generic.short=CET -Europe/Zagreb.standard.short=CET -Europe/Zaporozhye.daylight.short=EEST -Europe/Zaporozhye.generic.short=EET -Europe/Zaporozhye.standard.short=EET -Europe/Zurich.daylight.short=CEST -Europe/Zurich.generic.short=CET -Europe/Zurich.standard.short=CET -GB.daylight.short=BST -GB-Eire.daylight.short=BST -GB-Eire.generic.short=BT -GB-Eire.standard.short=GMT -GB.generic.short=BT -GB.standard.short=GMT -GMT.daylight.short=GMT -GMT.generic.short=GMT -GMT.standard.short=GMT -Greenwich.daylight.short=GMT -Greenwich.generic.short=GMT -Greenwich.standard.short=GMT -Hongkong.daylight.short=HKST -Hongkong.generic.short=HKT -Hongkong.standard.short=HKT -HST.daylight.short=HDT -HST.generic.short=HT -HST.standard.short=HST -Iceland.daylight.short=GMT -Iceland.generic.short=GMT -Iceland.standard.short=GMT -IET.daylight.short=EDT -IET.generic.short=ET -IET.standard.short=EST -Indian/Antananarivo.daylight.short=EAST -Indian/Antananarivo.generic.short=EAT -Indian/Antananarivo.standard.short=EAT -Indian/Chagos.daylight.short=IOST -Indian/Chagos.generic.short=IOT -Indian/Chagos.standard.short=IOT -Indian/Christmas.daylight.short=CXST -Indian/Christmas.generic.short=CIT -Indian/Christmas.standard.short=CXT -Indian/Cocos.daylight.short=CCST -Indian/Cocos.generic.short=CCT -Indian/Cocos.standard.short=CCT -Indian/Comoro.daylight.short=EAST -Indian/Comoro.generic.short=EAT -Indian/Comoro.standard.short=EAT -Indian/Kerguelen.daylight.short=TFST -Indian/Kerguelen.generic.short=TFT -Indian/Kerguelen.standard.short=TFT -Indian/Mahe.daylight.short=SCST -Indian/Mahe.generic.short=SCT -Indian/Mahe.standard.short=SCT -Indian/Maldives.daylight.short=MVST -Indian/Maldives.generic.short=MVT -Indian/Maldives.standard.short=MVT -Indian/Mauritius.daylight.short=MUST -Indian/Mauritius.generic.short=MUT -Indian/Mauritius.standard.short=MUT -Indian/Mayotte.daylight.short=EAST -Indian/Mayotte.generic.short=EAT -Indian/Mayotte.standard.short=EAT -Indian/Reunion.daylight.short=REST -Indian/Reunion.generic.short=RET -Indian/Reunion.standard.short=RET -Iran.daylight.short=IRDT -Iran.generic.short=IRT -Iran.standard.short=IRST -Israel.daylight.short=IDT -Israel.generic.short=IT -Israel.standard.short=IST -IST.daylight.short=IDT -IST.generic.short=IT -IST.standard.short=IST -Jamaica.daylight.short=EDT -Jamaica.generic.short=ET -Jamaica.standard.short=EST -Japan.daylight.short=JDT -Japan.generic.short=JT -Japan.standard.short=JST -JST.daylight.short=JDT -JST.generic.short=JT -JST.standard.short=JST -Kwajalein.daylight.short=MHST -Kwajalein.generic.short=MHT -Kwajalein.standard.short=MHT -Libya.daylight.short=EEST -Libya.generic.short=EET -Libya.standard.short=EET -MET.daylight.short=MEST -MET.generic.short=MET -MET.standard.short=MET -Mexico/BajaNorte.daylight.short=PDT -Mexico/BajaNorte.generic.short=PT -Mexico/BajaNorte.standard.short=PST -Mexico/BajaSur.daylight.short=MDT -Mexico/BajaSur.generic.short=MT -Mexico/BajaSur.standard.short=MST -Mexico/General.daylight.short=CDT -Mexico/General.generic.short=CT -Mexico/General.standard.short=CST -MIT.daylight.short=WSDT -MIT.generic.short=WST -MIT.standard.short=WST -MST7MDT.daylight.short=MDT -MST7MDT.generic.short=MT -MST7MDT.standard.short=MST -MST.daylight.short=MDT -MST.generic.short=MT -MST.standard.short=MST -Navajo.daylight.short=MDT -Navajo.generic.short=MT -Navajo.standard.short=MST -NET.daylight.short=AMST -NET.generic.short=AMT -NET.standard.short=AMT -NST.daylight.short=NZDT -NST.generic.short=NZT -NST.standard.short=NZST -NZ-CHAT.daylight.short=CHADT -NZ-CHAT.generic.short=CHAT -NZ-CHAT.standard.short=CHAST -NZ.daylight.short=NZDT -NZ.generic.short=NZT -NZ.standard.short=NZST -Pacific/Apia.daylight.short=WSDT -Pacific/Apia.generic.short=WST -Pacific/Apia.standard.short=WST -Pacific/Auckland.daylight.short=NZDT -Pacific/Auckland.generic.short=NZT -Pacific/Auckland.standard.short=NZST -Pacific/Chatham.daylight.short=CHADT -Pacific/Chatham.generic.short=CHAT -Pacific/Chatham.standard.short=CHAST -Pacific/Chuuk.daylight.short=CHUST -Pacific/Chuuk.generic.short=CHUT -Pacific/Chuuk.standard.short=CHUT -Pacific/Easter.daylight.short=EASST -Pacific/Easter.generic.short=EAST -Pacific/Easter.standard.short=EAST -Pacific/Efate.daylight.short=VUST -Pacific/Efate.generic.short=VUT -Pacific/Efate.standard.short=VUT -Pacific/Enderbury.daylight.short=PHOST -Pacific/Enderbury.generic.short=PHOT -Pacific/Enderbury.standard.short=PHOT -Pacific/Fakaofo.daylight.short=TKST -Pacific/Fakaofo.generic.short=TKT -Pacific/Fakaofo.standard.short=TKT -Pacific/Fiji.daylight.short=FJST -Pacific/Fiji.generic.short=FJT -Pacific/Fiji.standard.short=FJT -Pacific/Funafuti.daylight.short=TVST -Pacific/Funafuti.generic.short=TVT -Pacific/Funafuti.standard.short=TVT -Pacific/Galapagos.daylight.short=GALST -Pacific/Galapagos.generic.short=GALT -Pacific/Galapagos.standard.short=GALT -Pacific/Gambier.daylight.short=GAMST -Pacific/Gambier.generic.short=GAMT -Pacific/Gambier.standard.short=GAMT -Pacific/Guadalcanal.daylight.short=SBST -Pacific/Guadalcanal.generic.short=SBT -Pacific/Guadalcanal.standard.short=SBT -Pacific/Guam.daylight.short=ChDT -Pacific/Guam.generic.short=ChT -Pacific/Guam.standard.short=ChST -Pacific/Honolulu.daylight.short=HDT -Pacific/Honolulu.generic.short=HT -Pacific/Honolulu.standard.short=HST -Pacific/Johnston.daylight.short=HDT -Pacific/Johnston.generic.short=HT -Pacific/Johnston.standard.short=HST -Pacific/Kiritimati.daylight.short=LINST -Pacific/Kiritimati.generic.short=LINT -Pacific/Kiritimati.standard.short=LINT -Pacific/Kosrae.daylight.short=KOSST -Pacific/Kosrae.generic.short=KOST -Pacific/Kosrae.standard.short=KOST -Pacific/Kwajalein.daylight.short=MHST -Pacific/Kwajalein.generic.short=MHT -Pacific/Kwajalein.standard.short=MHT -Pacific/Majuro.daylight.short=MHST -Pacific/Majuro.generic.short=MHT -Pacific/Majuro.standard.short=MHT -Pacific/Marquesas.daylight.short=MARST -Pacific/Marquesas.generic.short=MART -Pacific/Marquesas.standard.short=MART -Pacific/Midway.daylight.short=SDT -Pacific/Midway.generic.short=ST -Pacific/Midway.standard.short=SST -Pacific/Nauru.daylight.short=NRST -Pacific/Nauru.generic.short=NRT -Pacific/Nauru.standard.short=NRT -Pacific/Niue.daylight.short=NUST -Pacific/Niue.generic.short=NUT -Pacific/Niue.standard.short=NUT -Pacific/Norfolk.daylight.short=NFST -Pacific/Norfolk.generic.short=NFT -Pacific/Norfolk.standard.short=NFT -Pacific/Noumea.daylight.short=NCST -Pacific/Noumea.generic.short=NCT -Pacific/Noumea.standard.short=NCT -Pacific/Pago_Pago.daylight.short=SDT -Pacific/Pago_Pago.generic.short=ST -Pacific/Pago_Pago.standard.short=SST -Pacific/Palau.daylight.short=PWST -Pacific/Palau.generic.short=PWT -Pacific/Palau.standard.short=PWT -Pacific/Pitcairn.daylight.short=PDT -Pacific/Pitcairn.generic.short=PT -Pacific/Pitcairn.standard.short=PST -Pacific/Pohnpei.daylight.short=PONST -Pacific/Pohnpei.generic.short=PONT -Pacific/Pohnpei.standard.short=PONT -Pacific/Ponape.daylight.short=PONST -Pacific/Ponape.generic.short=PONT -Pacific/Ponape.standard.short=PONT -Pacific/Port_Moresby.daylight.short=PGST -Pacific/Port_Moresby.generic.short=PGT -Pacific/Port_Moresby.standard.short=PGT -Pacific/Rarotonga.daylight.short=CKHST -Pacific/Rarotonga.generic.short=CKT -Pacific/Rarotonga.standard.short=CKT -Pacific/Saipan.daylight.short=ChDT -Pacific/Saipan.generic.short=ChT -Pacific/Saipan.standard.short=ChST -Pacific/Samoa.daylight.short=SDT -Pacific/Samoa.generic.short=ST -Pacific/Samoa.standard.short=SST -Pacific/Tahiti.daylight.short=TAHST -Pacific/Tahiti.generic.short=TAHT -Pacific/Tahiti.standard.short=TAHT -Pacific/Tarawa.daylight.short=GILST -Pacific/Tarawa.generic.short=GILT -Pacific/Tarawa.standard.short=GILT -Pacific/Tongatapu.daylight.short=TOST -Pacific/Tongatapu.generic.short=TOT -Pacific/Tongatapu.standard.short=TOT -Pacific/Truk.daylight.short=CHUST -Pacific/Truk.generic.short=CHUT -Pacific/Truk.standard.short=CHUT -Pacific/Wake.daylight.short=WAKST -Pacific/Wake.generic.short=WAKT -Pacific/Wake.standard.short=WAKT -Pacific/Wallis.daylight.short=WFST -Pacific/Wallis.generic.short=WFT -Pacific/Wallis.standard.short=WFT -Pacific/Yap.daylight.short=CHUST -Pacific/Yap.generic.short=CHUT -Pacific/Yap.standard.short=CHUT -PLT.daylight.short=PKST -PLT.generic.short=PKT -PLT.standard.short=PKT -PNT.daylight.short=MDT -PNT.generic.short=MT -PNT.standard.short=MST -Poland.daylight.short=CEST -Poland.generic.short=CET -Poland.standard.short=CET -Portugal.daylight.short=WEST -Portugal.generic.short=WET -Portugal.standard.short=WET -PRC.daylight.short=CDT -PRC.generic.short=CT -PRC.standard.short=CST -PRT.daylight.short=ADT -PRT.generic.short=AT -PRT.standard.short=AST -PST8PDT.daylight.short=PDT -PST8PDT.generic.short=PT -PST8PDT.standard.short=PST -PST.daylight.short=PDT -PST.generic.short=PT -PST.standard.short=PST -ROK.daylight.short=KDT -ROK.generic.short=KT -ROK.standard.short=KST -Singapore.daylight.short=SGST -Singapore.generic.short=SGT -Singapore.standard.short=SGT -SST.daylight.short=SBST -SST.generic.short=SBT -SST.standard.short=SBT -SystemV/AST4ADT.daylight.short=ADT -SystemV/AST4ADT.generic.short=AT -SystemV/AST4ADT.standard.short=AST -SystemV/AST4.daylight.short=ADT -SystemV/AST4.generic.short=AT -SystemV/AST4.standard.short=AST -SystemV/CST6CDT.daylight.short=CDT -SystemV/CST6CDT.generic.short=CT -SystemV/CST6CDT.standard.short=CST -SystemV/CST6.daylight.short=CDT -SystemV/CST6.generic.short=CT -SystemV/CST6.standard.short=CST -SystemV/EST5.daylight.short=EDT -SystemV/EST5EDT.daylight.short=EDT -SystemV/EST5EDT.generic.short=ET -SystemV/EST5EDT.standard.short=EST -SystemV/EST5.generic.short=ET -SystemV/EST5.standard.short=EST -SystemV/HST10.daylight.short=HDT -SystemV/HST10.generic.short=HT -SystemV/HST10.standard.short=HST -SystemV/MST7.daylight.short=MDT -SystemV/MST7.generic.short=MT -SystemV/MST7MDT.daylight.short=MDT -SystemV/MST7MDT.generic.short=MT -SystemV/MST7MDT.standard.short=MST -SystemV/MST7.standard.short=MST -SystemV/PST8.daylight.short=PDT -SystemV/PST8.generic.short=PT -SystemV/PST8PDT.daylight.short=PDT -SystemV/PST8PDT.generic.short=PT -SystemV/PST8PDT.standard.short=PST -SystemV/PST8.standard.short=PST -SystemV/YST9.daylight.short=AKDT -SystemV/YST9.generic.short=AKT -SystemV/YST9.standard.short=AKST -SystemV/YST9YDT.daylight.short=AKDT -SystemV/YST9YDT.generic.short=AKT -SystemV/YST9YDT.standard.short=AKST -Turkey.daylight.short=EEST -Turkey.generic.short=EET -Turkey.standard.short=EET -UCT.daylight.short=UTC -UCT.generic.short=UTC -UCT.standard.short=UTC -Universal.daylight.short=UTC -Universal.generic.short=UTC -Universal.standard.short=UTC -US/Alaska.daylight.short=AKDT -US/Alaska.generic.short=AKT -US/Alaska.standard.short=AKST -US/Aleutian.daylight.short=HADT -US/Aleutian.generic.short=HAT -US/Aleutian.standard.short=HAST -US/Arizona.daylight.short=MDT -US/Arizona.generic.short=MT -US/Arizona.standard.short=MST -US/Central.daylight.short=CDT -US/Central.generic.short=CT -US/Central.standard.short=CST -US/Eastern.daylight.short=EDT -US/Eastern.generic.short=ET -US/Eastern.standard.short=EST -US/East-Indiana.daylight.short=EDT -US/East-Indiana.generic.short=ET -US/East-Indiana.standard.short=EST -US/Hawaii.daylight.short=HDT -US/Hawaii.generic.short=HT -US/Hawaii.standard.short=HST -US/Indiana-Starke.daylight.short=CDT -US/Indiana-Starke.generic.short=CT -US/Indiana-Starke.standard.short=CST -US/Michigan.daylight.short=EDT -US/Michigan.generic.short=ET -US/Michigan.standard.short=EST -US/Mountain.daylight.short=MDT -US/Mountain.generic.short=MT -US/Mountain.standard.short=MST -US/Pacific.daylight.short=PDT -US/Pacific.generic.short=PT -US/Pacific-New.daylight.short=PDT -US/Pacific-New.generic.short=PT -US/Pacific-New.standard.short=PST -US/Pacific.standard.short=PST -US/Samoa.daylight.short=SDT -US/Samoa.generic.short=ST -US/Samoa.standard.short=SST -UTC.daylight.short=UTC -UTC.generic.short=UTC -UTC.standard.short=UTC -VST.daylight.short=ICST -VST.generic.short=ICT -VST.standard.short=ICT -WET.daylight.short=WEST -WET.generic.short=WET -WET.standard.short=WET -W-SU.daylight.short=MSD -W-SU.generic.short=MT -W-SU.standard.short=MSK -Zulu.daylight.short=UTC -Zulu.generic.short=UTC -Zulu.standard.short=UTC diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_pt_BR.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_pt_BR.properties deleted file mode 100644 index 763311b50ca..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_pt_BR.properties +++ /dev/null @@ -1,651 +0,0 @@ -ACT.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Territ\u00F3rio do Norte) -ACT.generic.long=Hor\u00E1rio Central (Territ\u00F3rio do Norte) -ACT.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Territ\u00F3rio do Norte) -AET.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul) -AET.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul) -AET.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul) -AGT.generic.long=Hor\u00E1rio da Argentina -ART.generic.long=Hor\u00E1rio da Europa Oriental -AST.generic.long=Hor\u00E1rio do Alasca -Africa/Abidjan.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Africa/Accra.generic.long=Fuso Hor\u00E1rio do Meridiano de Gana -Africa/Addis_Ababa.generic.long=Hor\u00E1rio do Leste da \u00C1frica -Africa/Algiers.generic.long=Hor\u00E1rio da Europa Central -Africa/Asmara.generic.long=Hor\u00E1rio do Leste da \u00C1frica -Africa/Asmera.generic.long=Hor\u00E1rio do Leste da \u00C1frica -Africa/Bamako.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Africa/Bangui.generic.long=Hor\u00E1rio da \u00C1frica Ocidental -Africa/Banjul.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Africa/Bissau.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Africa/Blantyre.generic.long=Hor\u00E1rio da \u00C1frica Central -Africa/Brazzaville.generic.long=Hor\u00E1rio da \u00C1frica Ocidental -Africa/Bujumbura.generic.long=Hor\u00E1rio da \u00C1frica Central -Africa/Cairo.generic.long=Hor\u00E1rio da Europa Oriental -Africa/Casablanca.generic.long=Hor\u00E1rio da Europa Ocidental -Africa/Ceuta.generic.long=Hor\u00E1rio da Europa Central -Africa/Conakry.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Africa/Dakar.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Africa/Dar_es_Salaam.generic.long=Hor\u00E1rio do Leste da \u00C1frica -Africa/Djibouti.generic.long=Hor\u00E1rio do Leste da \u00C1frica -Africa/Douala.generic.long=Hor\u00E1rio da \u00C1frica Ocidental -Africa/El_Aaiun.generic.long=Hor\u00E1rio da Europa Ocidental -Africa/Freetown.generic.long=Hor\u00E1rio de Serra Leoa -Africa/Gaborone.generic.long=Hor\u00E1rio da \u00C1frica Central -Africa/Harare.generic.long=Hor\u00E1rio da \u00C1frica Central -Africa/Johannesburg.generic.long=Hor\u00E1rio da \u00C1frica do Sul -Africa/Juba.generic.long=Hor\u00E1rio do Leste da \u00C1frica -Africa/Kampala.generic.long=Hor\u00E1rio do Leste da \u00C1frica -Africa/Khartoum.generic.long=Hor\u00E1rio do Leste da \u00C1frica -Africa/Kigali.generic.long=Hor\u00E1rio da \u00C1frica Central -Africa/Kinshasa.generic.long=Hor\u00E1rio da \u00C1frica Ocidental -Africa/Lagos.generic.long=Hor\u00E1rio da \u00C1frica Ocidental -Africa/Libreville.generic.long=Hor\u00E1rio da \u00C1frica Ocidental -Africa/Lome.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Africa/Luanda.generic.long=Hor\u00E1rio da \u00C1frica Ocidental -Africa/Lubumbashi.generic.long=Hor\u00E1rio da \u00C1frica Central -Africa/Lusaka.generic.long=Hor\u00E1rio da \u00C1frica Central -Africa/Malabo.generic.long=Hor\u00E1rio da \u00C1frica Ocidental -Africa/Maputo.generic.long=Hor\u00E1rio da \u00C1frica Central -Africa/Maseru.generic.long=Hor\u00E1rio da \u00C1frica do Sul -Africa/Mbabane.generic.long=Hor\u00E1rio da \u00C1frica do Sul -Africa/Mogadishu.generic.long=Hor\u00E1rio do Leste da \u00C1frica -Africa/Monrovia.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Africa/Nairobi.generic.long=Hor\u00E1rio do Leste da \u00C1frica -Africa/Ndjamena.generic.long=Hor\u00E1rio da \u00C1frica Ocidental -Africa/Niamey.generic.long=Hor\u00E1rio da \u00C1frica Ocidental -Africa/Nouakchott.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Africa/Ouagadougou.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Africa/Porto-Novo.generic.long=Hor\u00E1rio da \u00C1frica Ocidental -Africa/Sao_Tome.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Africa/Timbuktu.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Africa/Tripoli.generic.long=Hor\u00e1rio da Europa Oriental -Africa/Tunis.generic.long=Hor\u00E1rio da Europa Central -Africa/Windhoek.generic.long=Hor\u00E1rio da \u00C1frica Ocidental -America/Adak.generic.long=Hor\u00E1rio do Hava\u00ED-Aleutas -America/Anchorage.generic.long=Hor\u00E1rio do Alasca -America/Anguilla.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Antigua.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Araguaina.generic.long=Hor\u00E1rio de Bras\u00EDlia -America/Argentina/Buenos_Aires.generic.long=Hor\u00E1rio da Argentina -America/Argentina/Catamarca.generic.long=Hor\u00E1rio da Argentina -America/Argentina/ComodRivadavia.generic.long=Hor\u00E1rio da Argentina -America/Argentina/Cordoba.generic.long=Hor\u00E1rio da Argentina -America/Argentina/Jujuy.generic.long=Hor\u00E1rio da Argentina -America/Argentina/La_Rioja.generic.long=Hor\u00E1rio da Argentina -America/Argentina/Mendoza.generic.long=Hor\u00E1rio da Argentina -America/Argentina/Rio_Gallegos.generic.long=Hor\u00E1rio da Argentina -America/Argentina/Salta.generic.long=Hor\u00E1rio da Argentina -America/Argentina/San_Juan.generic.long=Hor\u00E1rio da Argentina -America/Argentina/San_Luis.generic.long=Hor\u00e1rio da Argentina -America/Argentina/Tucuman.generic.long=Hor\u00E1rio da Argentina -America/Argentina/Ushuaia.generic.long=Hor\u00E1rio da Argentina -America/Aruba.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Asuncion.generic.long=Hor\u00E1rio do Paraguai -America/Atikokan.generic.long=Hor\u00E1rio do Leste -America/Atka.generic.long=Hor\u00E1rio do Hava\u00ED-Aleutas -America/Bahia.generic.long=Hor\u00E1rio de Bras\u00EDlia -America/Bahia_Banderas.generic.long=Hor\u00E1rio Central -America/Barbados.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Belem.generic.long=Hor\u00E1rio de Bras\u00EDlia -America/Belize.generic.long=Hor\u00E1rio Central -America/Blanc-Sablon.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Boa_Vista.generic.long=Hor\u00E1rio do Amazonas -America/Bogota.generic.long=Hor\u00E1rio da Col\u00F4mbia -America/Boise.generic.long=Hor\u00E1rio das Montanhas Rochosas -America/Buenos_Aires.generic.long=Hor\u00E1rio da Argentina -America/Cambridge_Bay.generic.long=Hor\u00E1rio das Montanhas Rochosas -America/Campo_Grande.generic.long=Hor\u00E1rio do Amazonas -America/Cancun.generic.long=Hor\u00E1rio Central -America/Caracas.generic.long=Hor\u00E1rio da Venezuela -America/Catamarca.generic.long=Hor\u00E1rio da Argentina -America/Cayenne.generic.long=Hor\u00E1rio da Guiana Francesa -America/Cayman.generic.long=Hor\u00E1rio do Leste -America/Chicago.generic.long=Hor\u00E1rio Central -America/Chihuahua.generic.long=Hor\u00E1rio das Montanhas Rochosas -America/Coral_Harbour.generic.long=Hor\u00E1rio do Leste -America/Cordoba.generic.long=Hor\u00E1rio da Argentina -America/Costa_Rica.generic.long=Hor\u00E1rio Central -America/Creston.generic.long=Hor\u00E1rio das Montanhas Rochosas -America/Cuiaba.generic.long=Hor\u00E1rio do Amazonas -America/Curacao.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Danmarkshavn.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -America/Dawson.generic.long=Hor\u00E1rio do Pac\u00EDfico -America/Dawson_Creek.generic.long=Hor\u00E1rio das Montanhas Rochosas -America/Denver.generic.long=Hor\u00E1rio das Montanhas Rochosas -America/Detroit.generic.long=Hor\u00E1rio do Leste -America/Dominica.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Edmonton.generic.long=Hor\u00E1rio das Montanhas Rochosas -America/Eirunepe.generic.long=Fuso hor\u00e1rio do Acre -America/El_Salvador.generic.long=Hor\u00E1rio Central -America/Ensenada.generic.long=Hor\u00E1rio do Pac\u00EDfico -America/Fort_Wayne.generic.long=Hor\u00E1rio do Leste -America/Fortaleza.generic.long=Hor\u00E1rio de Bras\u00EDlia -America/Glace_Bay.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Godthab.generic.long=Hor\u00E1rio da Groenl\u00E2ndia Ocidental -America/Goose_Bay.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Grand_Turk.generic.long=Hor\u00E1rio do Leste -America/Grenada.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Guadeloupe.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Guatemala.generic.long=Hor\u00E1rio Central -America/Guayaquil.generic.long=Hor\u00E1rio do Equador -America/Guyana.generic.long=Hor\u00E1rios da Guiana -America/Halifax.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Havana.generic.long=Hor\u00E1rio de Cuba -America/Hermosillo.generic.long=Hor\u00E1rio das Montanhas Rochosas -America/Indiana/Indianapolis.generic.long=Hor\u00E1rio do Leste -America/Indiana/Knox.generic.long=Hor\u00E1rio Central -America/Indiana/Marengo.generic.long=Hor\u00E1rio do Leste -America/Indiana/Petersburg.generic.long=Hor\u00E1rio do Leste -America/Indiana/Tell_City.generic.long=Hor\u00E1rio Central -America/Indiana/Vevay.generic.long=Hor\u00E1rio do Leste -America/Indiana/Vincennes.generic.long=Hor\u00E1rio do Leste -America/Indiana/Winamac.generic.long=Hor\u00E1rio do Leste -America/Indianapolis.generic.long=Hor\u00E1rio do Leste -America/Inuvik.generic.long=Hor\u00E1rio das Montanhas Rochosas -America/Iqaluit.generic.long=Hor\u00E1rio do Leste -America/Jamaica.generic.long=Hor\u00E1rio do Leste -America/Jujuy.generic.long=Hor\u00E1rio da Argentina -America/Juneau.generic.long=Hor\u00E1rio do Alasca -America/Kentucky/Louisville.generic.long=Hor\u00E1rio do Leste -America/Kentucky/Monticello.generic.long=Hor\u00E1rio do Leste -America/Knox_IN.generic.long=Hor\u00E1rio Central -America/Kralendijk.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/La_Paz.generic.long=Hor\u00E1rio da Bol\u00EDvia -America/Lima.generic.long=Hor\u00E1rio do Peru -America/Los_Angeles.generic.long=Hor\u00E1rio do Pac\u00EDfico -America/Louisville.generic.long=Hor\u00E1rio do Leste -America/Lower_Princes.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Maceio.generic.long=Hor\u00E1rio de Bras\u00EDlia -America/Managua.generic.long=Hor\u00E1rio Central -America/Manaus.generic.long=Hor\u00E1rio do Amazonas -America/Marigot.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Martinique.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Matamoros.generic.long=Hor\u00E1rio Central -America/Mazatlan.generic.long=Hor\u00E1rio das Montanhas Rochosas -America/Mendoza.generic.long=Hor\u00E1rio da Argentina -America/Menominee.generic.long=Hor\u00E1rio Central -America/Merida.generic.long=Hor\u00E1rio Central -America/Metlakatla.daylight.long=Hor\u00E1rio de Luz Natural de Metlakatla -America/Metlakatla.generic.long=Hor\u00E1rio de Metlakatla -America/Metlakatla.standard.long=Hor\u00E1rio Padr\u00E3o de Metlakatla -America/Mexico_City.generic.long=Hor\u00E1rio Central -America/Miquelon.generic.long=Hor\u00E1rio de Saint Pierre e Miquelon -America/Moncton.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Monterrey.generic.long=Hor\u00E1rio Central -America/Montevideo.generic.long=Hor\u00E1rio do Uruguai -America/Montreal.generic.long=Hor\u00E1rio do Leste -America/Montserrat.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Nassau.generic.long=Hor\u00E1rio do Leste -America/New_York.generic.long=Hor\u00E1rio do Leste -America/Nipigon.generic.long=Hor\u00E1rio do Leste -America/Nome.generic.long=Hor\u00E1rio do Alasca -America/Noronha.generic.long=Hor\u00E1rio de Fernando de Noronha -America/North_Dakota/Beulah.generic.long=Hor\u00E1rio Central -America/North_Dakota/Center.generic.long=Hor\u00E1rio Central -America/North_Dakota/New_Salem.generic.long=Hor\u00E1rio Central -America/Ojinaga.generic.long=Hor\u00E1rio das Montanhas Rochosas -America/Panama.generic.long=Hor\u00E1rio do Leste -America/Pangnirtung.generic.long=Hor\u00E1rio do Leste -America/Paramaribo.generic.long=Hor\u00E1rio do Suriname -America/Phoenix.generic.long=Hor\u00E1rio das Montanhas Rochosas -America/Port-au-Prince.generic.long=Hor\u00E1rio do Leste -America/Port_of_Spain.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Porto_Acre.generic.long=Fuso hor\u00e1rio do Acre -America/Porto_Velho.generic.long=Hor\u00E1rio do Amazonas -America/Puerto_Rico.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Rainy_River.generic.long=Hor\u00E1rio Central -America/Rankin_Inlet.generic.long=Hor\u00E1rio Central -America/Recife.generic.long=Hor\u00E1rio de Bras\u00EDlia -America/Regina.generic.long=Hor\u00E1rio Central -America/Resolute.generic.long=Hor\u00E1rio Central -America/Rio_Branco.generic.long=Fuso hor\u00e1rio do Acre -America/Rosario.generic.long=Hor\u00E1rio da Argentina -America/Santa_Isabel.generic.long=Hor\u00E1rio do Pac\u00EDfico -America/Santarem.generic.long=Hor\u00E1rio de Bras\u00EDlia -America/Santiago.generic.long=Hor\u00E1rio do Chile -America/Santo_Domingo.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Sao_Paulo.generic.long=Hor\u00E1rio de Bras\u00EDlia -America/Scoresbysund.generic.long=Hor\u00E1rio da Groenl\u00E2ndia Oriental -America/Shiprock.generic.long=Hor\u00E1rio das Montanhas Rochosas -America/Sitka.generic.long=Hor\u00E1rio do Alasca -America/St_Barthelemy.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/St_Johns.generic.long=Hor\u00E1rio de Terra Nova -America/St_Kitts.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/St_Lucia.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/St_Thomas.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/St_Vincent.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Swift_Current.generic.long=Hor\u00E1rio Central -America/Tegucigalpa.generic.long=Hor\u00E1rio Central -America/Thule.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Thunder_Bay.generic.long=Hor\u00E1rio do Leste -America/Tijuana.generic.long=Hor\u00E1rio do Pac\u00EDfico -America/Toronto.generic.long=Hor\u00E1rio do Leste -America/Tortola.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Vancouver.generic.long=Hor\u00E1rio do Pac\u00EDfico -America/Virgin.generic.long=Hor\u00E1rio do Atl\u00E2ntico -America/Whitehorse.generic.long=Hor\u00E1rio do Pac\u00EDfico -America/Winnipeg.generic.long=Hor\u00E1rio Central -America/Yakutat.generic.long=Hor\u00E1rio do Alasca -America/Yellowknife.generic.long=Hor\u00E1rio das Montanhas Rochosas -Antarctica/Casey.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Ocidental (Austr\u00E1lia) -Antarctica/Casey.generic.long=Hor\u00E1rio Ocidental (Austr\u00E1lia) -Antarctica/Casey.standard.long=Hor\u00E1rio-Padr\u00E3o Ocidental (Austr\u00E1lia) -Antarctica/Davis.generic.long=Hor\u00E1rio de Davis -Antarctica/DumontDUrville.generic.long=Fuso Hor\u00E1rio de Dumont-d'Urville -Antarctica/Macquarie.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o da Ilha de Macquarie -Antarctica/Macquarie.generic.long=Fuso Hor\u00E1rio da Ilha de Macquarie -Antarctica/Macquarie.standard.long=Fuso Hor\u00E1rio da Ilha de Macquarie -Antarctica/Mawson.generic.long=Hor\u00E1rio de Mawson -Antarctica/McMurdo.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia -Antarctica/Palmer.generic.long=Hor\u00E1rio do Chile -Antarctica/Rothera.generic.long=Hor\u00E1rio de Rothera -Antarctica/South_Pole.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia -Antarctica/Syowa.generic.long=Hor\u00E1rio de Syowa -Antarctica/Vostok.generic.long=Hor\u00E1rio de Vostok -Arctic/Longyearbyen.generic.long=Hor\u00E1rio da Europa Central -Asia/Aden.generic.long=Hor\u00E1rio da Ar\u00E1bia -Asia/Almaty.generic.long=Hor\u00E1rio de Alma-Ata -Asia/Amman.generic.long=Hor\u00e1rio da Ar\u00e1bia -Asia/Anadyr.generic.long=Hor\u00E1rio de Anadyr -Asia/Aqtau.generic.long=Hor\u00E1rio de Aqtau -Asia/Aqtobe.generic.long=Hor\u00E1rio de Aqtobe -Asia/Ashgabat.generic.long=Hor\u00E1rio do Turcomenist\u00E3o -Asia/Ashkhabad.generic.long=Hor\u00E1rio do Turcomenist\u00E3o -Asia/Baghdad.generic.long=Hor\u00E1rio da Ar\u00E1bia -Asia/Bahrain.generic.long=Hor\u00E1rio da Ar\u00E1bia -Asia/Baku.generic.long=Hor\u00E1rio do Azerbaij\u00E3o -Asia/Bangkok.generic.long=Hor\u00E1rio da Indochina -Asia/Beirut.generic.long=Hor\u00E1rio da Europa Oriental -Asia/Bishkek.generic.long=Hor\u00E1rio do Quirguist\u00E3o -Asia/Brunei.generic.long=Hor\u00E1rio de Brunei -Asia/Calcutta.generic.long=Hor\u00E1rio da \u00CDndia -Asia/Choibalsan.generic.long=Hor\u00E1rio de Choibalsan -Asia/Chongqing.generic.long=Hor\u00E1rio da China -Asia/Chungking.generic.long=Hor\u00E1rio da China -Asia/Colombo.generic.long=Hor\u00E1rio da \u00CDndia -Asia/Dacca.generic.long=Hor\u00E1rio de Bangladesh -Asia/Damascus.generic.long=Hor\u00E1rio da Europa Oriental -Asia/Dhaka.generic.long=Hor\u00E1rio de Bangladesh -Asia/Dili.generic.long=Hor\u00E1rio do Timor-Leste -Asia/Dubai.generic.long=Hor\u00E1rio do Golfo -Asia/Dushanbe.generic.long=Hor\u00E1rio do Tadjiquist\u00E3o -Asia/Gaza.generic.long=Hor\u00E1rio da Europa Oriental -Asia/Harbin.generic.long=Hor\u00E1rio da China -Asia/Hebron.generic.long=Hor\u00E1rio da Europa Oriental -Asia/Ho_Chi_Minh.generic.long=Hor\u00E1rio da Indochina -Asia/Hong_Kong.generic.long=Hor\u00E1rio de Hong Kong -Asia/Hovd.generic.long=Hor\u00E1rio de Hovd -Asia/Irkutsk.generic.long=Hor\u00E1rio de Irkutsk -Asia/Istanbul.generic.long=Hor\u00E1rio da Europa Oriental -Asia/Jakarta.generic.long=Hor\u00E1rio da Indon\u00E9sia Ocidental -Asia/Jayapura.generic.long=Hor\u00E1rio da Indon\u00E9sia Oriental -Asia/Jerusalem.generic.long=Hor\u00E1rio de Israel -Asia/Kabul.generic.long=Hor\u00E1rio do Afeganist\u00E3o -Asia/Kamchatka.generic.long=Hor\u00E1rio de Petropavlovsk-Kamchatski -Asia/Karachi.generic.long=Hor\u00E1rio do Paquist\u00E3o -Asia/Kashgar.generic.long=Hor\u00E1rio da China -Asia/Kathmandu.generic.long=Hor\u00E1rio do Nepal -Asia/Katmandu.generic.long=Hor\u00E1rio do Nepal -Asia/Khandyga.daylight.long=Hor\u00E1rio de Ver\u00E3o de Khandyga -Asia/Khandyga.generic.long=Hor\u00E1rio de Khandyga -Asia/Khandyga.standard.long=Hor\u00E1rio de Khandyga -Asia/Kolkata.generic.long=Hor\u00E1rio da \u00CDndia -Asia/Krasnoyarsk.generic.long=Hor\u00E1rio de Krasnoyarsk -Asia/Kuala_Lumpur.generic.long=Hor\u00E1rio da Mal\u00E1sia -Asia/Kuching.generic.long=Hor\u00E1rio da Mal\u00E1sia -Asia/Kuwait.generic.long=Hor\u00E1rio da Ar\u00E1bia -Asia/Macao.generic.long=Hor\u00E1rio da China -Asia/Macau.generic.long=Hor\u00E1rio da China -Asia/Magadan.generic.long=Hor\u00E1rio de Magadan -Asia/Makassar.generic.long=Hor\u00E1rio da Indon\u00E9sia Central -Asia/Manila.generic.long=Hor\u00E1rio das Filipinas -Asia/Muscat.generic.long=Hor\u00E1rio do Golfo -Asia/Nicosia.generic.long=Hor\u00E1rio da Europa Oriental -Asia/Novokuznetsk.generic.long=Hor\u00E1rio de Novosibirsk -Asia/Novosibirsk.generic.long=Hor\u00E1rio de Novosibirsk -Asia/Omsk.generic.long=Hor\u00E1rio de Omsk -Asia/Oral.generic.long=Hor\u00E1rio de Uralsk -Asia/Phnom_Penh.generic.long=Hor\u00E1rio da Indochina -Asia/Pontianak.generic.long=Hor\u00E1rio da Indon\u00E9sia Ocidental -Asia/Pyongyang.generic.long=Hor\u00E1rio da Coreia -Asia/Qatar.generic.long=Hor\u00E1rio da Ar\u00E1bia -Asia/Qyzylorda.generic.long=Hor\u00E1rio de Qyzylorda -Asia/Rangoon.generic.long=Hor\u00E1rio de Mianmar -Asia/Saigon.generic.long=Hor\u00E1rio da Indochina -Asia/Sakhalin.generic.long=Hor\u00E1rio de Sakhalin -Asia/Samarkand.generic.long=Hor\u00E1rio do Uzbequist\u00E3o -Asia/Seoul.generic.long=Hor\u00E1rio da Coreia -Asia/Shanghai.generic.long=Hor\u00E1rio da China -Asia/Singapore.generic.long=Hor\u00E1rio de Cingapura -Asia/Taipei.generic.long=Hor\u00E1rio da China -Asia/Tashkent.generic.long=Hor\u00E1rio do Uzbequist\u00E3o -Asia/Tbilisi.generic.long=Hor\u00E1rio da Ge\u00F3rgia -Asia/Tehran.generic.long=Hor\u00E1rio do Ir\u00E3 -Asia/Tel_Aviv.generic.long=Hor\u00E1rio de Israel -Asia/Thimbu.generic.long=Hor\u00E1rio do But\u00E3o -Asia/Thimphu.generic.long=Hor\u00E1rio do But\u00E3o -Asia/Tokyo.generic.long=Hor\u00E1rio do Jap\u00E3o -Asia/Ujung_Pandang.generic.long=Hor\u00E1rio da Indon\u00E9sia Central -Asia/Ulaanbaatar.generic.long=Hor\u00E1rio de Ulaanbaatar -Asia/Ulan_Bator.generic.long=Hor\u00E1rio de Ulaanbaatar -Asia/Urumqi.generic.long=Hor\u00E1rio da China -Asia/Ust-Nera.daylight.long=Hor\u00E1rio de Ver\u00E3o de Ust-Nera -Asia/Ust-Nera.generic.long=Hor\u00E1rio de Ust-Nera -Asia/Ust-Nera.standard.long=Hor\u00E1rio de Ust-Nera -Asia/Vientiane.generic.long=Hor\u00E1rio da Indochina -Asia/Vladivostok.generic.long=Hor\u00E1rio de Vladivostok -Asia/Yakutsk.generic.long=Hor\u00E1rio de Yakutsk -Asia/Yekaterinburg.generic.long=Hor\u00E1rio de Yekaterinburg -Asia/Yerevan.generic.long=Hor\u00E1rio da Arm\u00EAnia -Atlantic/Azores.generic.long=Hor\u00E1rio de A\u00E7ores -Atlantic/Bermuda.generic.long=Hor\u00E1rio do Atl\u00E2ntico -Atlantic/Canary.generic.long=Hor\u00E1rio da Europa Ocidental -Atlantic/Cape_Verde.generic.long=Hor\u00E1rio de Cabo Verde -Atlantic/Faeroe.generic.long=Hor\u00E1rio da Europa Ocidental -Atlantic/Faroe.generic.long=Hor\u00E1rio da Europa Ocidental -Atlantic/Jan_Mayen.generic.long=Hor\u00E1rio da Europa Central -Atlantic/Madeira.generic.long=Hor\u00E1rio da Europa Ocidental -Atlantic/Reykjavik.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Atlantic/South_Georgia.generic.long=Hor\u00E1rio da Ge\u00F3rgia do Sul -Atlantic/St_Helena.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Atlantic/Stanley.generic.long=Hor\u00E1rio das Ilhas Malvinas -Australia/ACT.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul) -Australia/ACT.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul) -Australia/ACT.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul) -Australia/Adelaide.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul) -Australia/Adelaide.generic.long=Hor\u00E1rio Central (Austr\u00E1lia do Sul) -Australia/Adelaide.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul) -Australia/Brisbane.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Queensland) -Australia/Brisbane.generic.long=Hor\u00E1rio do Leste (Queensland) -Australia/Brisbane.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Queensland) -Australia/Broken_Hill.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul) -Australia/Broken_Hill.generic.long=Hor\u00E1rio Central (Austr\u00E1lia do Sul/Nova Gales do Sul) -Australia/Broken_Hill.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul) -Australia/Canberra.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul) -Australia/Canberra.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul) -Australia/Canberra.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul) -Australia/Currie.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul) -Australia/Currie.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul) -Australia/Currie.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul) -Australia/Darwin.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Territ\u00F3rio do Norte) -Australia/Darwin.generic.long=Hor\u00E1rio Central (Territ\u00F3rio do Norte) -Australia/Darwin.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Territ\u00F3rio do Norte) -Australia/Eucla.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Ocidental Central (Austr\u00E1lia) -Australia/Eucla.generic.long=Hor\u00E1rio Ocidental Central (Austr\u00E1lia) -Australia/Eucla.standard.long=Fuso Hor\u00E1rio Ocidental Central (Austr\u00E1lia) -Australia/Hobart.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Tasm\u00E2nia) -Australia/Hobart.generic.long=Hor\u00E1rio do Leste (Tasm\u00E2nia) -Australia/Hobart.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Tasm\u00E2nia) -Australia/LHI.generic.long=Hor\u00E1rio de Lord Howe -Australia/Lindeman.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Queensland) -Australia/Lindeman.generic.long=Hor\u00E1rio do Leste (Queensland) -Australia/Lindeman.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Queensland) -Australia/Lord_Howe.generic.long=Hor\u00E1rio de Lord Howe -Australia/Melbourne.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Victoria) -Australia/Melbourne.generic.long=Hor\u00E1rio do Leste (Victoria) -Australia/Melbourne.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Victoria) -Australia/NSW.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul) -Australia/NSW.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul) -Australia/NSW.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul) -Australia/North.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Territ\u00F3rio do Norte) -Australia/North.generic.long=Hor\u00E1rio Central (Territ\u00F3rio do Norte) -Australia/North.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Territ\u00F3rio do Norte) -Australia/Perth.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Ocidental (Austr\u00E1lia) -Australia/Perth.generic.long=Hor\u00E1rio Ocidental (Austr\u00E1lia) -Australia/Perth.standard.long=Hor\u00E1rio-Padr\u00E3o Ocidental (Austr\u00E1lia) -Australia/Queensland.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Queensland) -Australia/Queensland.generic.long=Hor\u00E1rio do Leste (Queensland) -Australia/Queensland.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Queensland) -Australia/South.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul) -Australia/South.generic.long=Hor\u00E1rio Central (Austr\u00E1lia do Sul) -Australia/South.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul) -Australia/Sydney.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul) -Australia/Sydney.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul) -Australia/Sydney.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul) -Australia/Tasmania.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Tasm\u00E2nia) -Australia/Tasmania.generic.long=Hor\u00E1rio do Leste (Tasm\u00E2nia) -Australia/Tasmania.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Tasm\u00E2nia) -Australia/Victoria.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Victoria) -Australia/Victoria.generic.long=Hor\u00E1rio do Leste (Victoria) -Australia/Victoria.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Victoria) -Australia/West.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Ocidental (Austr\u00E1lia) -Australia/West.generic.long=Hor\u00E1rio Ocidental (Austr\u00E1lia) -Australia/West.standard.long=Hor\u00E1rio-Padr\u00E3o Ocidental (Austr\u00E1lia) -Australia/Yancowinna.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul) -Australia/Yancowinna.generic.long=Hor\u00E1rio Central (Austr\u00E1lia do Sul/Nova Gales do Sul) -Australia/Yancowinna.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul) -BET.generic.long=Hor\u00E1rio de Bras\u00EDlia -BST.generic.long=Hor\u00E1rio de Bangladesh -Brazil/Acre.generic.long=Fuso hor\u00e1rio do Acre -Brazil/DeNoronha.generic.long=Hor\u00E1rio de Fernando de Noronha -Brazil/East.generic.long=Hor\u00E1rio de Bras\u00EDlia -Brazil/West.generic.long=Hor\u00E1rio do Amazonas -CAT.generic.long=Hor\u00E1rio da \u00C1frica Central -CET.generic.long=Hor\u00e1rio da Europa Central -CNT.generic.long=Hor\u00E1rio de Terra Nova -CST.generic.long=Hor\u00E1rio Central -CST6CDT.generic.long=Hor\u00e1rio Central -CTT.generic.long=Hor\u00E1rio da China -Canada/Atlantic.generic.long=Hor\u00E1rio do Atl\u00E2ntico -Canada/Central.generic.long=Hor\u00E1rio Central -Canada/East-Saskatchewan.generic.long=Hor\u00E1rio Central -Canada/Eastern.generic.long=Hor\u00E1rio do Leste -Canada/Mountain.generic.long=Hor\u00E1rio das Montanhas Rochosas -Canada/Newfoundland.generic.long=Hor\u00E1rio de Terra Nova -Canada/Pacific.generic.long=Hor\u00E1rio do Pac\u00EDfico -Canada/Saskatchewan.generic.long=Hor\u00E1rio Central -Canada/Yukon.generic.long=Hor\u00E1rio do Pac\u00EDfico -Chile/Continental.generic.long=Hor\u00E1rio do Chile -Chile/EasterIsland.generic.long=Hor\u00E1rio da Ilha de P\u00E1scoa -Cuba.generic.long=Hor\u00E1rio de Cuba -EAT.generic.long=Hor\u00E1rio do Leste da \u00C1frica -ECT.generic.long=Hor\u00E1rio da Europa Central -EET.generic.long=Hor\u00e1rio da Europa Oriental -EST.generic.long=Hor\u00e1rio do Leste -EST5EDT.generic.long=Hor\u00e1rio do Leste -Egypt.generic.long=Hor\u00E1rio da Europa Oriental -Eire.generic.long=Hor\u00E1rio da Rep\u00FAblica da Irlanda -Etc/Greenwich.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Etc/UCT.generic.long=Hor\u00E1rio Universal Coordenado -Etc/UTC.generic.long=Hor\u00E1rio Universal Coordenado -Etc/Universal.generic.long=Hor\u00E1rio Universal Coordenado -Etc/Zulu.generic.long=Hor\u00E1rio Universal Coordenado -Europe/Amsterdam.generic.long=Hor\u00E1rio da Europa Central -Europe/Andorra.generic.long=Hor\u00E1rio da Europa Central -Europe/Athens.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Belfast.generic.long=Hor\u00E1rio do Reino Unido -Europe/Belgrade.generic.long=Hor\u00E1rio da Europa Central -Europe/Berlin.generic.long=Hor\u00E1rio da Europa Central -Europe/Bratislava.generic.long=Hor\u00E1rio da Europa Central -Europe/Brussels.generic.long=Hor\u00E1rio da Europa Central -Europe/Bucharest.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Budapest.generic.long=Hor\u00E1rio da Europa Central -Europe/Busingen.generic.long=Hor\u00E1rio da Europa Central -Europe/Chisinau.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Copenhagen.generic.long=Hor\u00E1rio da Europa Central -Europe/Dublin.generic.long=Hor\u00E1rio da Rep\u00FAblica da Irlanda -Europe/Gibraltar.generic.long=Hor\u00E1rio da Europa Central -Europe/Guernsey.generic.long=Hor\u00E1rio do Reino Unido -Europe/Helsinki.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Isle_of_Man.generic.long=Hor\u00E1rio do Reino Unido -Europe/Istanbul.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Jersey.generic.long=Hor\u00E1rio do Reino Unido -Europe/Kaliningrad.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o do Extremo Leste Europeu -Europe/Kaliningrad.generic.long=Hor\u00E1rio do Extremo Leste Europeu (FET) -Europe/Kaliningrad.standard.long=Hor\u00E1rio do Extremo Leste Europeu (FET) -Europe/Kiev.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Lisbon.generic.long=Hor\u00E1rio da Europa Ocidental -Europe/Ljubljana.generic.long=Hor\u00E1rio da Europa Central -Europe/London.generic.long=Hor\u00E1rio do Reino Unido -Europe/Luxembourg.generic.long=Hor\u00E1rio da Europa Central -Europe/Madrid.generic.long=Hor\u00E1rio da Europa Central -Europe/Malta.generic.long=Hor\u00E1rio da Europa Central -Europe/Mariehamn.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Minsk.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o do Extremo Leste Europeu -Europe/Minsk.generic.long=Hor\u00E1rio do Extremo Leste Europeu (FET) -Europe/Minsk.standard.long=Hor\u00E1rio do Extremo Leste Europeu (FET) -Europe/Monaco.generic.long=Hor\u00E1rio da Europa Central -Europe/Moscow.generic.long=Hor\u00E1rio de Moscou -Europe/Nicosia.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Oslo.generic.long=Hor\u00E1rio da Europa Central -Europe/Paris.generic.long=Hor\u00E1rio da Europa Central -Europe/Podgorica.generic.long=Hor\u00E1rio da Europa Central -Europe/Prague.generic.long=Hor\u00E1rio da Europa Central -Europe/Riga.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Rome.generic.long=Hor\u00E1rio da Europa Central -Europe/Samara.generic.long=Hor\u00E1rio de Samara -Europe/San_Marino.generic.long=Hor\u00E1rio da Europa Central -Europe/Sarajevo.generic.long=Hor\u00E1rio da Europa Central -Europe/Simferopol.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Skopje.generic.long=Hor\u00E1rio da Europa Central -Europe/Sofia.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Stockholm.generic.long=Hor\u00E1rio da Europa Central -Europe/Tallinn.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Tirane.generic.long=Hor\u00E1rio da Europa Central -Europe/Tiraspol.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Uzhgorod.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Vaduz.generic.long=Hor\u00E1rio da Europa Central -Europe/Vatican.generic.long=Hor\u00E1rio da Europa Central -Europe/Vienna.generic.long=Hor\u00E1rio da Europa Central -Europe/Vilnius.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Volgograd.generic.long=Hor\u00E1rio de Volgogrado -Europe/Warsaw.generic.long=Hor\u00E1rio da Europa Central -Europe/Zagreb.generic.long=Hor\u00E1rio da Europa Central -Europe/Zaporozhye.generic.long=Hor\u00E1rio da Europa Oriental -Europe/Zurich.generic.long=Hor\u00E1rio da Europa Central -GB-Eire.generic.long=Hor\u00E1rio do Reino Unido -GB.generic.long=Hor\u00E1rio do Reino Unido -GMT.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Greenwich.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -HST.generic.long=Hor\u00e1rio do Hava\u00ed -Hongkong.generic.long=Hor\u00E1rio de Hong Kong -IET.generic.long=Hor\u00E1rio do Leste -IST.generic.long=Hor\u00E1rio da \u00CDndia -Iceland.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich -Indian/Antananarivo.generic.long=Hor\u00E1rio do Leste da \u00C1frica -Indian/Chagos.generic.long=Hor\u00E1rio do Territ\u00F3rio do Oceano \u00CDndico -Indian/Christmas.generic.long=Hor\u00E1rio da Ilha Christmas -Indian/Cocos.generic.long=Hor\u00E1rio das Ilhas Cocos -Indian/Comoro.generic.long=Hor\u00E1rio do Leste da \u00C1frica -Indian/Kerguelen.generic.long=Hor\u00E1rio do Territ\u00F3rio Franc\u00EAs no Sul da Ant\u00E1rtica -Indian/Mahe.generic.long=Hor\u00E1rio de Seychelles -Indian/Maldives.generic.long=Hor\u00E1rio das Maldivas -Indian/Mauritius.generic.long=Hor\u00E1rio de Maur\u00EDcio -Indian/Mayotte.generic.long=Hor\u00E1rio do Leste da \u00C1frica -Indian/Reunion.generic.long=Hor\u00E1rio das Ilhas Reuni\u00E3o -Iran.generic.long=Hor\u00E1rio do Ir\u00E3 -Israel.generic.long=Hor\u00E1rio de Israel -JST.generic.long=Hor\u00E1rio do Jap\u00E3o -Jamaica.generic.long=Hor\u00E1rio do Leste -Japan.generic.long=Hor\u00E1rio do Jap\u00E3o -Kwajalein.generic.long=Hor\u00E1rio das Ilhas Marshall -Libya.generic.long=Hor\u00e1rio da Europa Oriental -MET.generic.long=MET -MIT.generic.long=Fuso Hor\u00E1rio de Samoa Ocidental -MST.generic.long=Hor\u00e1rio das Montanhas Rochosas -MST7MDT.generic.long=Hor\u00e1rio das Montanhas Rochosas -Mexico/BajaNorte.generic.long=Hor\u00E1rio do Pac\u00EDfico -Mexico/BajaSur.generic.long=Hor\u00E1rio das Montanhas Rochosas -Mexico/General.generic.long=Hor\u00E1rio Central -NET.generic.long=Hor\u00E1rio da Arm\u00EAnia -NST.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia -NZ-CHAT.generic.long=Hor\u00E1rio de Chatham -NZ.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia -Navajo.generic.long=Hor\u00E1rio das Montanhas Rochosas -PLT.generic.long=Hor\u00E1rio do Paquist\u00E3o -PNT.generic.long=Hor\u00E1rio das Montanhas Rochosas -PRC.generic.long=Hor\u00E1rio da China -PRT.generic.long=Hor\u00E1rio do Atl\u00E2ntico -PST.generic.long=Hor\u00E1rio do Pac\u00EDfico -PST8PDT.generic.long=Hor\u00e1rio do Pac\u00edfico -Pacific/Apia.generic.long=Fuso Hor\u00E1rio de Samoa Ocidental -Pacific/Auckland.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia -Pacific/Chatham.generic.long=Hor\u00E1rio de Chatham -Pacific/Chuuk.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Chuuk -Pacific/Chuuk.generic.long=Fuso Hor\u00E1rio de Chuuk -Pacific/Chuuk.standard.long=Fuso Hor\u00E1rio de Chuuk -Pacific/Easter.generic.long=Hor\u00E1rio da Ilha de P\u00E1scoa -Pacific/Efate.generic.long=Hor\u00E1rio de Vanuatu -Pacific/Enderbury.generic.long=Hor\u00E1rio da Ilha Phoenix -Pacific/Fakaofo.generic.long=Hor\u00E1rio de Toquelau -Pacific/Fiji.generic.long=Hor\u00E1rio de Fiji -Pacific/Funafuti.generic.long=Hor\u00E1rio de Tuvalu -Pacific/Galapagos.generic.long=Hor\u00E1rio de Gal\u00E1pagos -Pacific/Gambier.generic.long=Hor\u00E1rio de Gambier -Pacific/Guadalcanal.generic.long=Hor\u00E1rio das Ilhas Salom\u00E3o -Pacific/Guam.generic.long=Hor\u00E1rio de Chamorro -Pacific/Honolulu.generic.long=Hor\u00E1rio do Hava\u00ED -Pacific/Johnston.generic.long=Hor\u00E1rio do Hava\u00ED -Pacific/Kiritimati.generic.long=Hor\u00E1rio das Ilhas Line -Pacific/Kosrae.generic.long=Hor\u00E1rio de Kosrae -Pacific/Kwajalein.generic.long=Hor\u00E1rio das Ilhas Marshall -Pacific/Majuro.generic.long=Hor\u00E1rio das Ilhas Marshall -Pacific/Marquesas.generic.long=Hor\u00E1rio das Ilhas Marquesas -Pacific/Midway.generic.long=Hor\u00E1rio da Samoa -Pacific/Nauru.generic.long=Hor\u00E1rio de Nauru -Pacific/Niue.generic.long=Hor\u00E1rio de Niue -Pacific/Norfolk.generic.long=Hor\u00E1rio de Norfolk -Pacific/Noumea.generic.long=Hor\u00E1rio da Nova Caled\u00F4nia -Pacific/Pago_Pago.generic.long=Hor\u00E1rio da Samoa -Pacific/Palau.generic.long=Hor\u00E1rio de Palau -Pacific/Pitcairn.generic.long=Hor\u00E1rio de Pitcairn -Pacific/Pohnpei.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Pohnpei -Pacific/Pohnpei.generic.long=Hor\u00E1rio de Ponape -Pacific/Pohnpei.standard.long=Fuso Hor\u00E1rio de Pohnpei -Pacific/Ponape.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Pohnpei -Pacific/Ponape.generic.long=Hor\u00E1rio de Ponape -Pacific/Ponape.standard.long=Fuso Hor\u00E1rio de Pohnpei -Pacific/Port_Moresby.generic.long=Hor\u00E1rio de Papua-Nova Guin\u00E9 -Pacific/Rarotonga.generic.long=Hor\u00E1rio das Ilhas Cook -Pacific/Saipan.generic.long=Hor\u00E1rio de Chamorro -Pacific/Samoa.generic.long=Hor\u00E1rio da Samoa -Pacific/Tahiti.generic.long=Hor\u00E1rio do Tahiti -Pacific/Tarawa.generic.long=Hor\u00E1rio das Ilhas Gilbert -Pacific/Tongatapu.generic.long=Hor\u00E1rio de Tonga -Pacific/Truk.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Chuuk -Pacific/Truk.generic.long=Fuso Hor\u00E1rio de Chuuk -Pacific/Truk.standard.long=Fuso Hor\u00E1rio de Chuuk -Pacific/Wake.generic.long=Hor\u00E1rio de Wake -Pacific/Wallis.generic.long=Hor\u00E1rio das Ilhas Wallis e Futuna -Pacific/Yap.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Chuuk -Pacific/Yap.generic.long=Fuso Hor\u00E1rio de Chuuk -Pacific/Yap.standard.long=Fuso Hor\u00E1rio de Chuuk -Poland.generic.long=Hor\u00E1rio da Europa Central -Portugal.generic.long=Hor\u00E1rio da Europa Ocidental -ROK.generic.long=Hor\u00E1rio da Coreia -SST.generic.long=Hor\u00E1rio das Ilhas Salom\u00E3o -Singapore.generic.long=Hor\u00E1rio de Cingapura -SystemV/AST4.generic.long=Hor\u00E1rio do Atl\u00E2ntico -SystemV/AST4ADT.generic.long=Hor\u00E1rio do Atl\u00E2ntico -SystemV/CST6.generic.long=Hor\u00E1rio Central -SystemV/CST6CDT.generic.long=Hor\u00E1rio Central -SystemV/EST5.generic.long=Hor\u00E1rio do Leste -SystemV/EST5EDT.generic.long=Hor\u00E1rio do Leste -SystemV/HST10.generic.long=Hor\u00E1rio do Hava\u00ED -SystemV/MST7.generic.long=Hor\u00E1rio das Montanhas Rochosas -SystemV/MST7MDT.generic.long=Hor\u00E1rio das Montanhas Rochosas -SystemV/PST8.generic.long=Hor\u00E1rio do Pac\u00EDfico -SystemV/PST8PDT.generic.long=Hor\u00E1rio do Pac\u00EDfico -SystemV/YST9.generic.long=Hor\u00E1rio do Alasca -SystemV/YST9YDT.generic.long=Hor\u00E1rio do Alasca -Turkey.generic.long=Hor\u00E1rio da Europa Oriental -UCT.generic.long=Hor\u00E1rio Universal Coordenado -US/Alaska.generic.long=Hor\u00E1rio do Alasca -US/Aleutian.generic.long=Hor\u00E1rio do Hava\u00ED-Aleutas -US/Arizona.generic.long=Hor\u00E1rio das Montanhas Rochosas -US/Central.generic.long=Hor\u00E1rio Central -US/East-Indiana.generic.long=Hor\u00E1rio do Leste -US/Eastern.generic.long=Hor\u00E1rio do Leste -US/Hawaii.generic.long=Hor\u00E1rio do Hava\u00ED -US/Indiana-Starke.generic.long=Hor\u00E1rio Central -US/Michigan.generic.long=Hor\u00E1rio do Leste -US/Mountain.generic.long=Hor\u00E1rio das Montanhas Rochosas -US/Pacific-New.generic.long=Hor\u00E1rio do Pac\u00EDfico -US/Pacific.generic.long=Hor\u00E1rio do Pac\u00EDfico -US/Samoa.generic.long=Hor\u00E1rio da Samoa -UTC.generic.long=Hor\u00E1rio Universal Coordenado -Universal.generic.long=Hor\u00E1rio Universal Coordenado -VST.generic.long=Hor\u00E1rio da Indochina -W-SU.generic.long=Hor\u00E1rio de Moscou -WET.generic.long=Hor\u00e1rio da Europa Ocidental -Zulu.generic.long=Hor\u00E1rio Universal Coordenado diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_pt_BR_short.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_pt_BR_short.properties deleted file mode 100644 index 095522a68d1..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_pt_BR_short.properties +++ /dev/null @@ -1,1743 +0,0 @@ -ACT.daylight.short=CST -ACT.generic.short=CT -ACT.standard.short=CST -AET.daylight.short=EST -AET.generic.short=ET -AET.standard.short=EST -Africa/Abidjan.daylight.short=GMT -Africa/Abidjan.generic.short=GMT -Africa/Abidjan.standard.short=GMT -Africa/Accra.daylight.short=GHST -Africa/Accra.generic.short=GMT -Africa/Accra.standard.short=GMT -Africa/Addis_Ababa.daylight.short=EAST -Africa/Addis_Ababa.generic.short=EAT -Africa/Addis_Ababa.standard.short=EAT -Africa/Algiers.daylight.short=CEST -Africa/Algiers.generic.short=CET -Africa/Algiers.standard.short=CET -Africa/Asmara.daylight.short=EAST -Africa/Asmara.generic.short=EAT -Africa/Asmara.standard.short=EAT -Africa/Asmera.daylight.short=EAST -Africa/Asmera.generic.short=EAT -Africa/Asmera.standard.short=EAT -Africa/Bamako.daylight.short=GMT -Africa/Bamako.generic.short=GMT -Africa/Bamako.standard.short=GMT -Africa/Bangui.daylight.short=WAST -Africa/Bangui.generic.short=WAT -Africa/Bangui.standard.short=WAT -Africa/Banjul.daylight.short=GMT -Africa/Banjul.generic.short=GMT -Africa/Banjul.standard.short=GMT -Africa/Bissau.daylight.short=GMT -Africa/Bissau.generic.short=GMT -Africa/Bissau.standard.short=GMT -Africa/Blantyre.daylight.short=CAST -Africa/Blantyre.generic.short=CAT -Africa/Blantyre.standard.short=CAT -Africa/Brazzaville.daylight.short=WAST -Africa/Brazzaville.generic.short=WAT -Africa/Brazzaville.standard.short=WAT -Africa/Bujumbura.daylight.short=CAST -Africa/Bujumbura.generic.short=CAT -Africa/Bujumbura.standard.short=CAT -Africa/Cairo.daylight.short=EEST -Africa/Cairo.generic.short=EET -Africa/Cairo.standard.short=EET -Africa/Casablanca.daylight.short=WEST -Africa/Casablanca.generic.short=WET -Africa/Casablanca.standard.short=WET -Africa/Ceuta.daylight.short=CEST -Africa/Ceuta.generic.short=CET -Africa/Ceuta.standard.short=CET -Africa/Conakry.daylight.short=GMT -Africa/Conakry.generic.short=GMT -Africa/Conakry.standard.short=GMT -Africa/Dakar.daylight.short=GMT -Africa/Dakar.generic.short=GMT -Africa/Dakar.standard.short=GMT -Africa/Dar_es_Salaam.daylight.short=EAST -Africa/Dar_es_Salaam.generic.short=EAT -Africa/Dar_es_Salaam.standard.short=EAT -Africa/Djibouti.daylight.short=EAST -Africa/Djibouti.generic.short=EAT -Africa/Djibouti.standard.short=EAT -Africa/Douala.daylight.short=WAST -Africa/Douala.generic.short=WAT -Africa/Douala.standard.short=WAT -Africa/El_Aaiun.daylight.short=WEST -Africa/El_Aaiun.generic.short=WET -Africa/El_Aaiun.standard.short=WET -Africa/Freetown.daylight.short=SLST -Africa/Freetown.generic.short=SLT -Africa/Freetown.standard.short=GMT -Africa/Gaborone.daylight.short=CAST -Africa/Gaborone.generic.short=CAT -Africa/Gaborone.standard.short=CAT -Africa/Harare.daylight.short=CAST -Africa/Harare.generic.short=CAT -Africa/Harare.standard.short=CAT -Africa/Johannesburg.daylight.short=SAST -Africa/Johannesburg.generic.short=SAT -Africa/Johannesburg.standard.short=SAST -Africa/Juba.daylight.short=EAST -Africa/Juba.generic.short=EAT -Africa/Juba.standard.short=EAT -Africa/Kampala.daylight.short=EAST -Africa/Kampala.generic.short=EAT -Africa/Kampala.standard.short=EAT -Africa/Khartoum.daylight.short=EAST -Africa/Khartoum.generic.short=EAT -Africa/Khartoum.standard.short=EAT -Africa/Kigali.daylight.short=CAST -Africa/Kigali.generic.short=CAT -Africa/Kigali.standard.short=CAT -Africa/Kinshasa.daylight.short=WAST -Africa/Kinshasa.generic.short=WAT -Africa/Kinshasa.standard.short=WAT -Africa/Lagos.daylight.short=WAST -Africa/Lagos.generic.short=WAT -Africa/Lagos.standard.short=WAT -Africa/Libreville.daylight.short=WAST -Africa/Libreville.generic.short=WAT -Africa/Libreville.standard.short=WAT -Africa/Lome.daylight.short=GMT -Africa/Lome.generic.short=GMT -Africa/Lome.standard.short=GMT -Africa/Luanda.daylight.short=WAST -Africa/Luanda.generic.short=WAT -Africa/Luanda.standard.short=WAT -Africa/Lubumbashi.daylight.short=CAST -Africa/Lubumbashi.generic.short=CAT -Africa/Lubumbashi.standard.short=CAT -Africa/Lusaka.daylight.short=CAST -Africa/Lusaka.generic.short=CAT -Africa/Lusaka.standard.short=CAT -Africa/Malabo.daylight.short=WAST -Africa/Malabo.generic.short=WAT -Africa/Malabo.standard.short=WAT -Africa/Maputo.daylight.short=CAST -Africa/Maputo.generic.short=CAT -Africa/Maputo.standard.short=CAT -Africa/Maseru.daylight.short=SAST -Africa/Maseru.generic.short=SAT -Africa/Maseru.standard.short=SAST -Africa/Mbabane.daylight.short=SAST -Africa/Mbabane.generic.short=SAT -Africa/Mbabane.standard.short=SAST -Africa/Mogadishu.daylight.short=EAST -Africa/Mogadishu.generic.short=EAT -Africa/Mogadishu.standard.short=EAT -Africa/Monrovia.daylight.short=GMT -Africa/Monrovia.generic.short=GMT -Africa/Monrovia.standard.short=GMT -Africa/Nairobi.daylight.short=EAST -Africa/Nairobi.generic.short=EAT -Africa/Nairobi.standard.short=EAT -Africa/Ndjamena.daylight.short=WAST -Africa/Ndjamena.generic.short=WAT -Africa/Ndjamena.standard.short=WAT -Africa/Niamey.daylight.short=WAST -Africa/Niamey.generic.short=WAT -Africa/Niamey.standard.short=WAT -Africa/Nouakchott.daylight.short=GMT -Africa/Nouakchott.generic.short=GMT -Africa/Nouakchott.standard.short=GMT -Africa/Ouagadougou.daylight.short=GMT -Africa/Ouagadougou.generic.short=GMT -Africa/Ouagadougou.standard.short=GMT -Africa/Porto-Novo.daylight.short=WAST -Africa/Porto-Novo.generic.short=WAT -Africa/Porto-Novo.standard.short=WAT -Africa/Sao_Tome.daylight.short=GMT -Africa/Sao_Tome.generic.short=GMT -Africa/Sao_Tome.standard.short=GMT -Africa/Timbuktu.daylight.short=GMT -Africa/Timbuktu.generic.short=GMT -Africa/Timbuktu.standard.short=GMT -Africa/Tripoli.daylight.short=EEST -Africa/Tripoli.generic.short=EET -Africa/Tripoli.standard.short=EET -Africa/Tunis.daylight.short=CEST -Africa/Tunis.generic.short=CET -Africa/Tunis.standard.short=CET -Africa/Windhoek.daylight.short=WAST -Africa/Windhoek.generic.short=WAT -Africa/Windhoek.standard.short=WAT -AGT.daylight.short=ARST -AGT.generic.short=ART -AGT.standard.short=ART -America/Adak.daylight.short=HADT -America/Adak.generic.short=HAT -America/Adak.standard.short=HAST -America/Anchorage.daylight.short=AKDT -America/Anchorage.generic.short=AKT -America/Anchorage.standard.short=AKST -America/Anguilla.daylight.short=ADT -America/Anguilla.generic.short=AT -America/Anguilla.standard.short=AST -America/Antigua.daylight.short=ADT -America/Antigua.generic.short=AT -America/Antigua.standard.short=AST -America/Araguaina.daylight.short=BRST -America/Araguaina.generic.short=BRT -America/Araguaina.standard.short=BRT -America/Argentina/Buenos_Aires.daylight.short=ARST -America/Argentina/Buenos_Aires.generic.short=ART -America/Argentina/Buenos_Aires.standard.short=ART -America/Argentina/Catamarca.daylight.short=ARST -America/Argentina/Catamarca.generic.short=ART -America/Argentina/Catamarca.standard.short=ART -America/Argentina/ComodRivadavia.daylight.short=ARST -America/Argentina/ComodRivadavia.generic.short=ART -America/Argentina/ComodRivadavia.standard.short=ART -America/Argentina/Cordoba.daylight.short=ARST -America/Argentina/Cordoba.generic.short=ART -America/Argentina/Cordoba.standard.short=ART -America/Argentina/Jujuy.daylight.short=ARST -America/Argentina/Jujuy.generic.short=ART -America/Argentina/Jujuy.standard.short=ART -America/Argentina/La_Rioja.daylight.short=ARST -America/Argentina/La_Rioja.generic.short=ART -America/Argentina/La_Rioja.standard.short=ART -America/Argentina/Mendoza.daylight.short=ARST -America/Argentina/Mendoza.generic.short=ART -America/Argentina/Mendoza.standard.short=ART -America/Argentina/Rio_Gallegos.daylight.short=ARST -America/Argentina/Rio_Gallegos.generic.short=ART -America/Argentina/Rio_Gallegos.standard.short=ART -America/Argentina/Salta.daylight.short=ARST -America/Argentina/Salta.generic.short=ART -America/Argentina/Salta.standard.short=ART -America/Argentina/San_Juan.daylight.short=ARST -America/Argentina/San_Juan.generic.short=ART -America/Argentina/San_Juan.standard.short=ART -America/Argentina/San_Luis.daylight.short=ARST -America/Argentina/San_Luis.generic.short=ART -America/Argentina/San_Luis.standard.short=ART -America/Argentina/Tucuman.daylight.short=ARST -America/Argentina/Tucuman.generic.short=ART -America/Argentina/Tucuman.standard.short=ART -America/Argentina/Ushuaia.daylight.short=ARST -America/Argentina/Ushuaia.generic.short=ART -America/Argentina/Ushuaia.standard.short=ART -America/Aruba.daylight.short=ADT -America/Aruba.generic.short=AT -America/Aruba.standard.short=AST -America/Asuncion.daylight.short=PYST -America/Asuncion.generic.short=PYT -America/Asuncion.standard.short=PYT -America/Atikokan.daylight.short=EDT -America/Atikokan.generic.short=ET -America/Atikokan.standard.short=EST -America/Atka.daylight.short=HADT -America/Atka.generic.short=HAT -America/Atka.standard.short=HAST -America/Bahia_Banderas.daylight.short=CDT -America/Bahia_Banderas.generic.short=CT -America/Bahia_Banderas.standard.short=CST -America/Bahia.daylight.short=BRST -America/Bahia.generic.short=BRT -America/Bahia.standard.short=BRT -America/Barbados.daylight.short=ADT -America/Barbados.generic.short=AT -America/Barbados.standard.short=AST -America/Belem.daylight.short=BRST -America/Belem.generic.short=BRT -America/Belem.standard.short=BRT -America/Belize.daylight.short=CDT -America/Belize.generic.short=CT -America/Belize.standard.short=CST -America/Blanc-Sablon.daylight.short=ADT -America/Blanc-Sablon.generic.short=AT -America/Blanc-Sablon.standard.short=AST -America/Boa_Vista.daylight.short=AMST -America/Boa_Vista.generic.short=AMT -America/Boa_Vista.standard.short=AMT -America/Bogota.daylight.short=COST -America/Bogota.generic.short=COT -America/Bogota.standard.short=COT -America/Boise.daylight.short=MDT -America/Boise.generic.short=MT -America/Boise.standard.short=MST -America/Buenos_Aires.daylight.short=ARST -America/Buenos_Aires.generic.short=ART -America/Buenos_Aires.standard.short=ART -America/Cambridge_Bay.daylight.short=MDT -America/Cambridge_Bay.generic.short=MT -America/Cambridge_Bay.standard.short=MST -America/Campo_Grande.daylight.short=AMST -America/Campo_Grande.generic.short=AMT -America/Campo_Grande.standard.short=AMT -America/Cancun.daylight.short=CDT -America/Cancun.generic.short=CT -America/Cancun.standard.short=CST -America/Caracas.daylight.short=VEST -America/Caracas.generic.short=VET -America/Caracas.standard.short=VET -America/Catamarca.daylight.short=ARST -America/Catamarca.generic.short=ART -America/Catamarca.standard.short=ART -America/Cayenne.daylight.short=GFST -America/Cayenne.generic.short=GFT -America/Cayenne.standard.short=GFT -America/Cayman.daylight.short=EDT -America/Cayman.generic.short=ET -America/Cayman.standard.short=EST -America/Chicago.daylight.short=CDT -America/Chicago.generic.short=CT -America/Chicago.standard.short=CST -America/Chihuahua.daylight.short=MDT -America/Chihuahua.generic.short=MT -America/Chihuahua.standard.short=MST -America/Coral_Harbour.daylight.short=EDT -America/Coral_Harbour.generic.short=ET -America/Coral_Harbour.standard.short=EST -America/Cordoba.daylight.short=ARST -America/Cordoba.generic.short=ART -America/Cordoba.standard.short=ART -America/Costa_Rica.daylight.short=CDT -America/Costa_Rica.generic.short=CT -America/Costa_Rica.standard.short=CST -America/Creston.daylight.short=MDT -America/Creston.generic.short=MT -America/Creston.standard.short=MST -America/Cuiaba.daylight.short=AMST -America/Cuiaba.generic.short=AMT -America/Cuiaba.standard.short=AMT -America/Curacao.daylight.short=ADT -America/Curacao.generic.short=AT -America/Curacao.standard.short=AST -America/Danmarkshavn.daylight.short=GMT -America/Danmarkshavn.generic.short=GMT -America/Danmarkshavn.standard.short=GMT -America/Dawson_Creek.daylight.short=MDT -America/Dawson_Creek.generic.short=MT -America/Dawson_Creek.standard.short=MST -America/Dawson.daylight.short=PDT -America/Dawson.generic.short=PT -America/Dawson.standard.short=PST -America/Denver.daylight.short=MDT -America/Denver.generic.short=MT -America/Denver.standard.short=MST -America/Detroit.daylight.short=EDT -America/Detroit.generic.short=ET -America/Detroit.standard.short=EST -America/Dominica.daylight.short=ADT -America/Dominica.generic.short=AT -America/Dominica.standard.short=AST -America/Edmonton.daylight.short=MDT -America/Edmonton.generic.short=MT -America/Edmonton.standard.short=MST -America/Eirunepe.daylight.short=ACST -America/Eirunepe.generic.short=ACT -America/Eirunepe.standard.short=ACT -America/El_Salvador.daylight.short=CDT -America/El_Salvador.generic.short=CT -America/El_Salvador.standard.short=CST -America/Ensenada.daylight.short=PDT -America/Ensenada.generic.short=PT -America/Ensenada.standard.short=PST -America/Fortaleza.daylight.short=BRST -America/Fortaleza.generic.short=BRT -America/Fortaleza.standard.short=BRT -America/Fort_Wayne.daylight.short=EDT -America/Fort_Wayne.generic.short=ET -America/Fort_Wayne.standard.short=EST -America/Glace_Bay.daylight.short=ADT -America/Glace_Bay.generic.short=AT -America/Glace_Bay.standard.short=AST -America/Godthab.daylight.short=WGST -America/Godthab.generic.short=WGT -America/Godthab.standard.short=WGT -America/Goose_Bay.daylight.short=ADT -America/Goose_Bay.generic.short=AT -America/Goose_Bay.standard.short=AST -America/Grand_Turk.daylight.short=EDT -America/Grand_Turk.generic.short=ET -America/Grand_Turk.standard.short=EST -America/Grenada.daylight.short=ADT -America/Grenada.generic.short=AT -America/Grenada.standard.short=AST -America/Guadeloupe.daylight.short=ADT -America/Guadeloupe.generic.short=AT -America/Guadeloupe.standard.short=AST -America/Guatemala.daylight.short=CDT -America/Guatemala.generic.short=CT -America/Guatemala.standard.short=CST -America/Guayaquil.daylight.short=ECST -America/Guayaquil.generic.short=ECT -America/Guayaquil.standard.short=ECT -America/Guyana.daylight.short=GYST -America/Guyana.generic.short=GYT -America/Guyana.standard.short=GYT -America/Halifax.daylight.short=ADT -America/Halifax.generic.short=AT -America/Halifax.standard.short=AST -America/Havana.daylight.short=CDT -America/Havana.generic.short=CT -America/Havana.standard.short=CST -America/Hermosillo.daylight.short=MDT -America/Hermosillo.generic.short=MT -America/Hermosillo.standard.short=MST -America/Indiana/Indianapolis.daylight.short=EDT -America/Indiana/Indianapolis.generic.short=ET -America/Indiana/Indianapolis.standard.short=EST -America/Indiana/Knox.daylight.short=CDT -America/Indiana/Knox.generic.short=CT -America/Indiana/Knox.standard.short=CST -America/Indiana/Marengo.daylight.short=EDT -America/Indiana/Marengo.generic.short=ET -America/Indiana/Marengo.standard.short=EST -America/Indiana/Petersburg.daylight.short=EDT -America/Indiana/Petersburg.generic.short=ET -America/Indiana/Petersburg.standard.short=EST -America/Indianapolis.daylight.short=EDT -America/Indianapolis.generic.short=ET -America/Indianapolis.standard.short=EST -America/Indiana/Tell_City.daylight.short=CDT -America/Indiana/Tell_City.generic.short=CT -America/Indiana/Tell_City.standard.short=CST -America/Indiana/Vevay.daylight.short=EDT -America/Indiana/Vevay.generic.short=ET -America/Indiana/Vevay.standard.short=EST -America/Indiana/Vincennes.daylight.short=EDT -America/Indiana/Vincennes.generic.short=ET -America/Indiana/Vincennes.standard.short=EST -America/Indiana/Winamac.daylight.short=EDT -America/Indiana/Winamac.generic.short=ET -America/Indiana/Winamac.standard.short=EST -America/Inuvik.daylight.short=MDT -America/Inuvik.generic.short=MT -America/Inuvik.standard.short=MST -America/Iqaluit.daylight.short=EDT -America/Iqaluit.generic.short=ET -America/Iqaluit.standard.short=EST -America/Jamaica.daylight.short=EDT -America/Jamaica.generic.short=ET -America/Jamaica.standard.short=EST -America/Jujuy.daylight.short=ARST -America/Jujuy.generic.short=ART -America/Jujuy.standard.short=ART -America/Juneau.daylight.short=AKDT -America/Juneau.generic.short=AKT -America/Juneau.standard.short=AKST -America/Kentucky/Louisville.daylight.short=EDT -America/Kentucky/Louisville.generic.short=ET -America/Kentucky/Louisville.standard.short=EST -America/Kentucky/Monticello.daylight.short=EDT -America/Kentucky/Monticello.generic.short=ET -America/Kentucky/Monticello.standard.short=EST -America/Knox_IN.daylight.short=CDT -America/Knox_IN.generic.short=CT -America/Knox_IN.standard.short=CST -America/Kralendijk.daylight.short=ADT -America/Kralendijk.generic.short=AT -America/Kralendijk.standard.short=AST -America/La_Paz.daylight.short=BOST -America/La_Paz.generic.short=BOT -America/La_Paz.standard.short=BOT -America/Lima.daylight.short=PEST -America/Lima.generic.short=PET -America/Lima.standard.short=PET -America/Los_Angeles.daylight.short=PDT -America/Los_Angeles.generic.short=PT -America/Los_Angeles.standard.short=PST -America/Louisville.daylight.short=EDT -America/Louisville.generic.short=ET -America/Louisville.standard.short=EST -America/Lower_Princes.daylight.short=ADT -America/Lower_Princes.generic.short=AT -America/Lower_Princes.standard.short=AST -America/Maceio.daylight.short=BRST -America/Maceio.generic.short=BRT -America/Maceio.standard.short=BRT -America/Managua.daylight.short=CDT -America/Managua.generic.short=CT -America/Managua.standard.short=CST -America/Manaus.daylight.short=AMST -America/Manaus.generic.short=AMT -America/Manaus.standard.short=AMT -America/Marigot.daylight.short=ADT -America/Marigot.generic.short=AT -America/Marigot.standard.short=AST -America/Martinique.daylight.short=ADT -America/Martinique.generic.short=AT -America/Martinique.standard.short=AST -America/Matamoros.daylight.short=CDT -America/Matamoros.generic.short=CT -America/Matamoros.standard.short=CST -America/Mazatlan.daylight.short=MDT -America/Mazatlan.generic.short=MT -America/Mazatlan.standard.short=MST -America/Mendoza.daylight.short=ARST -America/Mendoza.generic.short=ART -America/Mendoza.standard.short=ART -America/Menominee.daylight.short=CDT -America/Menominee.generic.short=CT -America/Menominee.standard.short=CST -America/Merida.daylight.short=CDT -America/Merida.generic.short=CT -America/Merida.standard.short=CST -America/Metlakatla.daylight.short=MeDT -America/Metlakatla.generic.short=MeT -America/Metlakatla.standard.short=MeST -America/Mexico_City.daylight.short=CDT -America/Mexico_City.generic.short=CT -America/Mexico_City.standard.short=CST -America/Miquelon.daylight.short=PMDT -America/Miquelon.generic.short=PMT -America/Miquelon.standard.short=PMST -America/Moncton.daylight.short=ADT -America/Moncton.generic.short=AT -America/Moncton.standard.short=AST -America/Monterrey.daylight.short=CDT -America/Monterrey.generic.short=CT -America/Monterrey.standard.short=CST -America/Montevideo.daylight.short=UYST -America/Montevideo.generic.short=UYT -America/Montevideo.standard.short=UYT -America/Montreal.daylight.short=EDT -America/Montreal.generic.short=ET -America/Montreal.standard.short=EST -America/Montserrat.daylight.short=ADT -America/Montserrat.generic.short=AT -America/Montserrat.standard.short=AST -America/Nassau.daylight.short=EDT -America/Nassau.generic.short=ET -America/Nassau.standard.short=EST -America/New_York.daylight.short=EDT -America/New_York.generic.short=ET -America/New_York.standard.short=EST -America/Nipigon.daylight.short=EDT -America/Nipigon.generic.short=ET -America/Nipigon.standard.short=EST -America/Nome.daylight.short=AKDT -America/Nome.generic.short=AKT -America/Nome.standard.short=AKST -America/Noronha.daylight.short=FNST -America/Noronha.generic.short=FNT -America/Noronha.standard.short=FNT -America/North_Dakota/Beulah.daylight.short=CDT -America/North_Dakota/Beulah.generic.short=CT -America/North_Dakota/Beulah.standard.short=CST -America/North_Dakota/Center.daylight.short=CDT -America/North_Dakota/Center.generic.short=CT -America/North_Dakota/Center.standard.short=CST -America/North_Dakota/New_Salem.daylight.short=CDT -America/North_Dakota/New_Salem.generic.short=CT -America/North_Dakota/New_Salem.standard.short=CST -America/Ojinaga.daylight.short=MDT -America/Ojinaga.generic.short=MT -America/Ojinaga.standard.short=MST -America/Panama.daylight.short=EDT -America/Panama.generic.short=ET -America/Panama.standard.short=EST -America/Pangnirtung.daylight.short=EDT -America/Pangnirtung.generic.short=ET -America/Pangnirtung.standard.short=EST -America/Paramaribo.daylight.short=SRST -America/Paramaribo.generic.short=SRT -America/Paramaribo.standard.short=SRT -America/Phoenix.daylight.short=MDT -America/Phoenix.generic.short=MT -America/Phoenix.standard.short=MST -America/Port-au-Prince.daylight.short=EDT -America/Port-au-Prince.generic.short=ET -America/Port-au-Prince.standard.short=EST -America/Porto_Acre.daylight.short=ACST -America/Porto_Acre.generic.short=ACT -America/Porto_Acre.standard.short=ACT -America/Port_of_Spain.daylight.short=ADT -America/Port_of_Spain.generic.short=AT -America/Port_of_Spain.standard.short=AST -America/Porto_Velho.daylight.short=AMST -America/Porto_Velho.generic.short=AMT -America/Porto_Velho.standard.short=AMT -America/Puerto_Rico.daylight.short=ADT -America/Puerto_Rico.generic.short=AT -America/Puerto_Rico.standard.short=AST -America/Rainy_River.daylight.short=CDT -America/Rainy_River.generic.short=CT -America/Rainy_River.standard.short=CST -America/Rankin_Inlet.daylight.short=CDT -America/Rankin_Inlet.generic.short=CT -America/Rankin_Inlet.standard.short=CST -America/Recife.daylight.short=BRST -America/Recife.generic.short=BRT -America/Recife.standard.short=BRT -America/Regina.daylight.short=CDT -America/Regina.generic.short=CT -America/Regina.standard.short=CST -America/Resolute.daylight.short=CDT -America/Resolute.generic.short=CT -America/Resolute.standard.short=CST -America/Rio_Branco.daylight.short=ACST -America/Rio_Branco.generic.short=ACT -America/Rio_Branco.standard.short=ACT -America/Rosario.daylight.short=ARST -America/Rosario.generic.short=ART -America/Rosario.standard.short=ART -America/Santa_Isabel.daylight.short=PDT -America/Santa_Isabel.generic.short=PT -America/Santa_Isabel.standard.short=PST -America/Santarem.daylight.short=BRST -America/Santarem.generic.short=BRT -America/Santarem.standard.short=BRT -America/Santiago.daylight.short=CLST -America/Santiago.generic.short=CLT -America/Santiago.standard.short=CLT -America/Santo_Domingo.daylight.short=ADT -America/Santo_Domingo.generic.short=AT -America/Santo_Domingo.standard.short=AST -America/Sao_Paulo.daylight.short=BRST -America/Sao_Paulo.generic.short=BRT -America/Sao_Paulo.standard.short=BRT -America/Scoresbysund.daylight.short=EGST -America/Scoresbysund.generic.short=EGT -America/Scoresbysund.standard.short=EGT -America/Shiprock.daylight.short=MDT -America/Shiprock.generic.short=MT -America/Shiprock.standard.short=MST -America/Sitka.daylight.short=AKDT -America/Sitka.generic.short=AKT -America/Sitka.standard.short=AKST -America/St_Barthelemy.daylight.short=ADT -America/St_Barthelemy.generic.short=AT -America/St_Barthelemy.standard.short=AST -America/St_Johns.daylight.short=NDT -America/St_Johns.generic.short=NT -America/St_Johns.standard.short=NST -America/St_Kitts.daylight.short=ADT -America/St_Kitts.generic.short=AT -America/St_Kitts.standard.short=AST -America/St_Lucia.daylight.short=ADT -America/St_Lucia.generic.short=AT -America/St_Lucia.standard.short=AST -America/St_Thomas.daylight.short=ADT -America/St_Thomas.generic.short=AT -America/St_Thomas.standard.short=AST -America/St_Vincent.daylight.short=ADT -America/St_Vincent.generic.short=AT -America/St_Vincent.standard.short=AST -America/Swift_Current.daylight.short=CDT -America/Swift_Current.generic.short=CT -America/Swift_Current.standard.short=CST -America/Tegucigalpa.daylight.short=CDT -America/Tegucigalpa.generic.short=CT -America/Tegucigalpa.standard.short=CST -America/Thule.daylight.short=ADT -America/Thule.generic.short=AT -America/Thule.standard.short=AST -America/Thunder_Bay.daylight.short=EDT -America/Thunder_Bay.generic.short=ET -America/Thunder_Bay.standard.short=EST -America/Tijuana.daylight.short=PDT -America/Tijuana.generic.short=PT -America/Tijuana.standard.short=PST -America/Toronto.daylight.short=EDT -America/Toronto.generic.short=ET -America/Toronto.standard.short=EST -America/Tortola.daylight.short=ADT -America/Tortola.generic.short=AT -America/Tortola.standard.short=AST -America/Vancouver.daylight.short=PDT -America/Vancouver.generic.short=PT -America/Vancouver.standard.short=PST -America/Virgin.daylight.short=ADT -America/Virgin.generic.short=AT -America/Virgin.standard.short=AST -America/Whitehorse.daylight.short=PDT -America/Whitehorse.generic.short=PT -America/Whitehorse.standard.short=PST -America/Winnipeg.daylight.short=CDT -America/Winnipeg.generic.short=CT -America/Winnipeg.standard.short=CST -America/Yakutat.daylight.short=AKDT -America/Yakutat.generic.short=AKT -America/Yakutat.standard.short=AKST -America/Yellowknife.daylight.short=MDT -America/Yellowknife.generic.short=MT -America/Yellowknife.standard.short=MST -Antarctica/Casey.daylight.short=WST -Antarctica/Casey.generic.short=WT -Antarctica/Casey.standard.short=WST -Antarctica/Davis.daylight.short=DAVST -Antarctica/Davis.generic.short=DAVT -Antarctica/Davis.standard.short=DAVT -Antarctica/DumontDUrville.daylight.short=DDUST -Antarctica/DumontDUrville.generic.short=DDUT -Antarctica/DumontDUrville.standard.short=DDUT -Antarctica/Macquarie.daylight.short=MIST -Antarctica/Macquarie.generic.short=MIST -Antarctica/Macquarie.standard.short=MIST -Antarctica/Mawson.daylight.short=MAWST -Antarctica/Mawson.generic.short=MAWT -Antarctica/Mawson.standard.short=MAWT -Antarctica/McMurdo.daylight.short=NZDT -Antarctica/McMurdo.generic.short=NZT -Antarctica/McMurdo.standard.short=NZST -Antarctica/Palmer.daylight.short=CLST -Antarctica/Palmer.generic.short=CLT -Antarctica/Palmer.standard.short=CLT -Antarctica/Rothera.daylight.short=ROTST -Antarctica/Rothera.generic.short=ROTT -Antarctica/Rothera.standard.short=ROTT -Antarctica/South_Pole.daylight.short=NZDT -Antarctica/South_Pole.generic.short=NZT -Antarctica/South_Pole.standard.short=NZST -Antarctica/Syowa.daylight.short=SYOST -Antarctica/Syowa.generic.short=SYOT -Antarctica/Syowa.standard.short=SYOT -Antarctica/Vostok.daylight.short=VOSST -Antarctica/Vostok.generic.short=VOST -Antarctica/Vostok.standard.short=VOST -Arctic/Longyearbyen.daylight.short=CEST -Arctic/Longyearbyen.generic.short=CET -Arctic/Longyearbyen.standard.short=CET -ART.daylight.short=EEST -ART.generic.short=EET -ART.standard.short=EET -Asia/Aden.daylight.short=ADT -Asia/Aden.generic.short=AT -Asia/Aden.standard.short=AST -Asia/Almaty.daylight.short=ALMST -Asia/Almaty.generic.short=ALMT -Asia/Almaty.standard.short=ALMT -Asia/Amman.daylight.short=ADT -Asia/Amman.generic.short=AT -Asia/Amman.standard.short=AST -Asia/Anadyr.daylight.short=ANAST -Asia/Anadyr.generic.short=ANAT -Asia/Anadyr.standard.short=ANAT -Asia/Aqtau.daylight.short=AQTST -Asia/Aqtau.generic.short=AQTT -Asia/Aqtau.standard.short=AQTT -Asia/Aqtobe.daylight.short=AQTST -Asia/Aqtobe.generic.short=AQTT -Asia/Aqtobe.standard.short=AQTT -Asia/Ashgabat.daylight.short=TMST -Asia/Ashgabat.generic.short=TMT -Asia/Ashgabat.standard.short=TMT -Asia/Ashkhabad.daylight.short=TMST -Asia/Ashkhabad.generic.short=TMT -Asia/Ashkhabad.standard.short=TMT -Asia/Baghdad.daylight.short=ADT -Asia/Baghdad.generic.short=AT -Asia/Baghdad.standard.short=AST -Asia/Bahrain.daylight.short=ADT -Asia/Bahrain.generic.short=AT -Asia/Bahrain.standard.short=AST -Asia/Baku.daylight.short=AZST -Asia/Baku.generic.short=AZT -Asia/Baku.standard.short=AZT -Asia/Bangkok.daylight.short=ICST -Asia/Bangkok.generic.short=ICT -Asia/Bangkok.standard.short=ICT -Asia/Beirut.daylight.short=EEST -Asia/Beirut.generic.short=EET -Asia/Beirut.standard.short=EET -Asia/Bishkek.daylight.short=KGST -Asia/Bishkek.generic.short=KGT -Asia/Bishkek.standard.short=KGT -Asia/Brunei.daylight.short=BNST -Asia/Brunei.generic.short=BNT -Asia/Brunei.standard.short=BNT -Asia/Calcutta.daylight.short=IDT -Asia/Calcutta.generic.short=IT -Asia/Calcutta.standard.short=IST -Asia/Choibalsan.daylight.short=CHOST -Asia/Choibalsan.generic.short=CHOT -Asia/Choibalsan.standard.short=CHOT -Asia/Chongqing.daylight.short=CDT -Asia/Chongqing.generic.short=CT -Asia/Chongqing.standard.short=CST -Asia/Chungking.daylight.short=CDT -Asia/Chungking.generic.short=CT -Asia/Chungking.standard.short=CST -Asia/Colombo.daylight.short=IDT -Asia/Colombo.generic.short=IT -Asia/Colombo.standard.short=IST -Asia/Dacca.daylight.short=BDST -Asia/Dacca.generic.short=BDT -Asia/Dacca.standard.short=BDT -Asia/Damascus.daylight.short=EEST -Asia/Damascus.generic.short=EET -Asia/Damascus.standard.short=EET -Asia/Dhaka.daylight.short=BDST -Asia/Dhaka.generic.short=BDT -Asia/Dhaka.standard.short=BDT -Asia/Dili.daylight.short=TLST -Asia/Dili.generic.short=TLT -Asia/Dili.standard.short=TLT -Asia/Dubai.daylight.short=GDT -Asia/Dubai.generic.short=GT -Asia/Dubai.standard.short=GST -Asia/Dushanbe.daylight.short=TJST -Asia/Dushanbe.generic.short=TJT -Asia/Dushanbe.standard.short=TJT -Asia/Gaza.daylight.short=EEST -Asia/Gaza.generic.short=EET -Asia/Gaza.standard.short=EET -Asia/Harbin.daylight.short=CDT -Asia/Harbin.generic.short=CT -Asia/Harbin.standard.short=CST -Asia/Hebron.daylight.short=EEST -Asia/Hebron.generic.short=EET -Asia/Hebron.standard.short=EET -Asia/Ho_Chi_Minh.daylight.short=ICST -Asia/Ho_Chi_Minh.generic.short=ICT -Asia/Ho_Chi_Minh.standard.short=ICT -Asia/Hong_Kong.daylight.short=HKST -Asia/Hong_Kong.generic.short=HKT -Asia/Hong_Kong.standard.short=HKT -Asia/Hovd.daylight.short=HOVST -Asia/Hovd.generic.short=HOVT -Asia/Hovd.standard.short=HOVT -Asia/Irkutsk.daylight.short=IRKST -Asia/Irkutsk.generic.short=IRKT -Asia/Irkutsk.standard.short=IRKT -Asia/Istanbul.daylight.short=EEST -Asia/Istanbul.generic.short=EET -Asia/Istanbul.standard.short=EET -Asia/Jakarta.daylight.short=WIST -Asia/Jakarta.generic.short=WIB -Asia/Jakarta.standard.short=WIB -Asia/Jayapura.daylight.short=EIST -Asia/Jayapura.generic.short=WIT -Asia/Jayapura.standard.short=WIT -Asia/Jerusalem.daylight.short=IDT -Asia/Jerusalem.generic.short=IT -Asia/Jerusalem.standard.short=IST -Asia/Kabul.daylight.short=AFST -Asia/Kabul.generic.short=AFT -Asia/Kabul.standard.short=AFT -Asia/Kamchatka.daylight.short=PETST -Asia/Kamchatka.generic.short=PETT -Asia/Kamchatka.standard.short=PETT -Asia/Karachi.daylight.short=PKST -Asia/Karachi.generic.short=PKT -Asia/Karachi.standard.short=PKT -Asia/Kashgar.daylight.short=CDT -Asia/Kashgar.generic.short=CT -Asia/Kashgar.standard.short=CST -Asia/Kathmandu.daylight.short=NPST -Asia/Kathmandu.generic.short=NPT -Asia/Kathmandu.standard.short=NPT -Asia/Katmandu.daylight.short=NPST -Asia/Katmandu.generic.short=NPT -Asia/Katmandu.standard.short=NPT -Asia/Khandyga.daylight.short=YAKST -Asia/Khandyga.generic.short=YAKT -Asia/Khandyga.standard.short=YAKT -Asia/Kolkata.daylight.short=IDT -Asia/Kolkata.generic.short=IT -Asia/Kolkata.standard.short=IST -Asia/Krasnoyarsk.daylight.short=KRAST -Asia/Krasnoyarsk.generic.short=KRAT -Asia/Krasnoyarsk.standard.short=KRAT -Asia/Kuala_Lumpur.daylight.short=MYST -Asia/Kuala_Lumpur.generic.short=MYT -Asia/Kuala_Lumpur.standard.short=MYT -Asia/Kuching.daylight.short=MYST -Asia/Kuching.generic.short=MYT -Asia/Kuching.standard.short=MYT -Asia/Kuwait.daylight.short=ADT -Asia/Kuwait.generic.short=AT -Asia/Kuwait.standard.short=AST -Asia/Macao.daylight.short=CDT -Asia/Macao.generic.short=CT -Asia/Macao.standard.short=CST -Asia/Macau.daylight.short=CDT -Asia/Macau.generic.short=CT -Asia/Macau.standard.short=CST -Asia/Magadan.daylight.short=MAGST -Asia/Magadan.generic.short=MAGT -Asia/Magadan.standard.short=MAGT -Asia/Makassar.daylight.short=CIST -Asia/Makassar.generic.short=WITA -Asia/Makassar.standard.short=WITA -Asia/Manila.daylight.short=PHST -Asia/Manila.generic.short=PHT -Asia/Manila.standard.short=PHT -Asia/Muscat.daylight.short=GDT -Asia/Muscat.generic.short=GT -Asia/Muscat.standard.short=GST -Asia/Nicosia.daylight.short=EEST -Asia/Nicosia.generic.short=EET -Asia/Nicosia.standard.short=EET -Asia/Novokuznetsk.daylight.short=NOVST -Asia/Novokuznetsk.generic.short=NOVT -Asia/Novokuznetsk.standard.short=NOVT -Asia/Novosibirsk.daylight.short=NOVST -Asia/Novosibirsk.generic.short=NOVT -Asia/Novosibirsk.standard.short=NOVT -Asia/Omsk.daylight.short=OMSST -Asia/Omsk.generic.short=OMST -Asia/Omsk.standard.short=OMST -Asia/Oral.daylight.short=ORAST -Asia/Oral.generic.short=ORAT -Asia/Oral.standard.short=ORAT -Asia/Phnom_Penh.daylight.short=ICST -Asia/Phnom_Penh.generic.short=ICT -Asia/Phnom_Penh.standard.short=ICT -Asia/Pontianak.daylight.short=WIST -Asia/Pontianak.generic.short=WIB -Asia/Pontianak.standard.short=WIB -Asia/Pyongyang.daylight.short=KDT -Asia/Pyongyang.generic.short=KT -Asia/Pyongyang.standard.short=KST -Asia/Qatar.daylight.short=ADT -Asia/Qatar.generic.short=AT -Asia/Qatar.standard.short=AST -Asia/Qyzylorda.daylight.short=QYZST -Asia/Qyzylorda.generic.short=QYZT -Asia/Qyzylorda.standard.short=QYZT -Asia/Rangoon.daylight.short=MMST -Asia/Rangoon.generic.short=MMT -Asia/Rangoon.standard.short=MMT -Asia/Saigon.daylight.short=ICST -Asia/Saigon.generic.short=ICT -Asia/Saigon.standard.short=ICT -Asia/Sakhalin.daylight.short=SAKST -Asia/Sakhalin.generic.short=SAKT -Asia/Sakhalin.standard.short=SAKT -Asia/Samarkand.daylight.short=UZST -Asia/Samarkand.generic.short=UZT -Asia/Samarkand.standard.short=UZT -Asia/Seoul.daylight.short=KDT -Asia/Seoul.generic.short=KT -Asia/Seoul.standard.short=KST -Asia/Shanghai.daylight.short=CDT -Asia/Shanghai.generic.short=CT -Asia/Shanghai.standard.short=CST -Asia/Singapore.daylight.short=SGST -Asia/Singapore.generic.short=SGT -Asia/Singapore.standard.short=SGT -Asia/Taipei.daylight.short=CDT -Asia/Taipei.generic.short=CT -Asia/Taipei.standard.short=CST -Asia/Tashkent.daylight.short=UZST -Asia/Tashkent.generic.short=UZT -Asia/Tashkent.standard.short=UZT -Asia/Tbilisi.daylight.short=GEST -Asia/Tbilisi.generic.short=GET -Asia/Tbilisi.standard.short=GET -Asia/Tehran.daylight.short=IRDT -Asia/Tehran.generic.short=IRT -Asia/Tehran.standard.short=IRST -Asia/Tel_Aviv.daylight.short=IDT -Asia/Tel_Aviv.generic.short=IT -Asia/Tel_Aviv.standard.short=IST -Asia/Thimbu.daylight.short=BTST -Asia/Thimbu.generic.short=BTT -Asia/Thimbu.standard.short=BTT -Asia/Thimphu.daylight.short=BTST -Asia/Thimphu.generic.short=BTT -Asia/Thimphu.standard.short=BTT -Asia/Tokyo.daylight.short=JDT -Asia/Tokyo.generic.short=JT -Asia/Tokyo.standard.short=JST -Asia/Ujung_Pandang.daylight.short=CIST -Asia/Ujung_Pandang.generic.short=WITA -Asia/Ujung_Pandang.standard.short=WITA -Asia/Ulaanbaatar.daylight.short=ULAST -Asia/Ulaanbaatar.generic.short=ULAT -Asia/Ulaanbaatar.standard.short=ULAT -Asia/Ulan_Bator.daylight.short=ULAST -Asia/Ulan_Bator.generic.short=ULAT -Asia/Ulan_Bator.standard.short=ULAT -Asia/Urumqi.daylight.short=CDT -Asia/Urumqi.generic.short=CT -Asia/Urumqi.standard.short=CST -Asia/Ust-Nera.daylight.short=VLAST -Asia/Ust-Nera.generic.short=VLAT -Asia/Ust-Nera.standard.short=VLAT -Asia/Vientiane.daylight.short=ICST -Asia/Vientiane.generic.short=ICT -Asia/Vientiane.standard.short=ICT -Asia/Vladivostok.daylight.short=VLAST -Asia/Vladivostok.generic.short=VLAT -Asia/Vladivostok.standard.short=VLAT -Asia/Yakutsk.daylight.short=YAKST -Asia/Yakutsk.generic.short=YAKT -Asia/Yakutsk.standard.short=YAKT -Asia/Yekaterinburg.daylight.short=YEKST -Asia/Yekaterinburg.generic.short=YEKT -Asia/Yekaterinburg.standard.short=YEKT -Asia/Yerevan.daylight.short=AMST -Asia/Yerevan.generic.short=AMT -Asia/Yerevan.standard.short=AMT -AST.daylight.short=AKDT -AST.generic.short=AKT -AST.standard.short=AKST -Atlantic/Azores.daylight.short=AZOST -Atlantic/Azores.generic.short=AZOT -Atlantic/Azores.standard.short=AZOT -Atlantic/Bermuda.daylight.short=ADT -Atlantic/Bermuda.generic.short=AT -Atlantic/Bermuda.standard.short=AST -Atlantic/Canary.daylight.short=WEST -Atlantic/Canary.generic.short=WET -Atlantic/Canary.standard.short=WET -Atlantic/Cape_Verde.daylight.short=CVST -Atlantic/Cape_Verde.generic.short=CVT -Atlantic/Cape_Verde.standard.short=CVT -Atlantic/Faeroe.daylight.short=WEST -Atlantic/Faeroe.generic.short=WET -Atlantic/Faeroe.standard.short=WET -Atlantic/Faroe.daylight.short=WEST -Atlantic/Faroe.generic.short=WET -Atlantic/Faroe.standard.short=WET -Atlantic/Jan_Mayen.daylight.short=CEST -Atlantic/Jan_Mayen.generic.short=CET -Atlantic/Jan_Mayen.standard.short=CET -Atlantic/Madeira.daylight.short=WEST -Atlantic/Madeira.generic.short=WET -Atlantic/Madeira.standard.short=WET -Atlantic/Reykjavik.daylight.short=GMT -Atlantic/Reykjavik.generic.short=GMT -Atlantic/Reykjavik.standard.short=GMT -Atlantic/South_Georgia.daylight.short=GDT -Atlantic/South_Georgia.generic.short=GT -Atlantic/South_Georgia.standard.short=GST -Atlantic/Stanley.daylight.short=FKST -Atlantic/Stanley.generic.short=FKT -Atlantic/Stanley.standard.short=FKT -Atlantic/St_Helena.daylight.short=GMT -Atlantic/St_Helena.generic.short=GMT -Atlantic/St_Helena.standard.short=GMT -Australia/ACT.daylight.short=EST -Australia/ACT.generic.short=ET -Australia/ACT.standard.short=EST -Australia/Adelaide.daylight.short=CST -Australia/Adelaide.generic.short=CT -Australia/Adelaide.standard.short=CST -Australia/Brisbane.daylight.short=EST -Australia/Brisbane.generic.short=ET -Australia/Brisbane.standard.short=EST -Australia/Broken_Hill.daylight.short=CST -Australia/Broken_Hill.generic.short=CT -Australia/Broken_Hill.standard.short=CST -Australia/Canberra.daylight.short=EST -Australia/Canberra.generic.short=ET -Australia/Canberra.standard.short=EST -Australia/Currie.daylight.short=EST -Australia/Currie.generic.short=ET -Australia/Currie.standard.short=EST -Australia/Darwin.daylight.short=CST -Australia/Darwin.generic.short=CT -Australia/Darwin.standard.short=CST -Australia/Eucla.daylight.short=CWST -Australia/Eucla.generic.short=CWT -Australia/Eucla.standard.short=CWST -Australia/Hobart.daylight.short=EST -Australia/Hobart.generic.short=ET -Australia/Hobart.standard.short=EST -Australia/LHI.daylight.short=LHST -Australia/LHI.generic.short=LHT -Australia/LHI.standard.short=LHST -Australia/Lindeman.daylight.short=EST -Australia/Lindeman.generic.short=ET -Australia/Lindeman.standard.short=EST -Australia/Lord_Howe.daylight.short=LHST -Australia/Lord_Howe.generic.short=LHT -Australia/Lord_Howe.standard.short=LHST -Australia/Melbourne.daylight.short=EST -Australia/Melbourne.generic.short=ET -Australia/Melbourne.standard.short=EST -Australia/North.daylight.short=CST -Australia/North.generic.short=CT -Australia/North.standard.short=CST -Australia/NSW.daylight.short=EST -Australia/NSW.generic.short=ET -Australia/NSW.standard.short=EST -Australia/Perth.daylight.short=WST -Australia/Perth.generic.short=WT -Australia/Perth.standard.short=WST -Australia/Queensland.daylight.short=EST -Australia/Queensland.generic.short=ET -Australia/Queensland.standard.short=EST -Australia/South.daylight.short=CST -Australia/South.generic.short=CT -Australia/South.standard.short=CST -Australia/Sydney.daylight.short=EST -Australia/Sydney.generic.short=ET -Australia/Sydney.standard.short=EST -Australia/Tasmania.daylight.short=EST -Australia/Tasmania.generic.short=ET -Australia/Tasmania.standard.short=EST -Australia/Victoria.daylight.short=EST -Australia/Victoria.generic.short=ET -Australia/Victoria.standard.short=EST -Australia/West.daylight.short=WST -Australia/West.generic.short=WT -Australia/West.standard.short=WST -Australia/Yancowinna.daylight.short=CST -Australia/Yancowinna.generic.short=CT -Australia/Yancowinna.standard.short=CST -BET.daylight.short=BRST -BET.generic.short=BRT -BET.standard.short=BRT -Brazil/Acre.daylight.short=ACST -Brazil/Acre.generic.short=ACT -Brazil/Acre.standard.short=ACT -Brazil/DeNoronha.daylight.short=FNST -Brazil/DeNoronha.generic.short=FNT -Brazil/DeNoronha.standard.short=FNT -Brazil/East.daylight.short=BRST -Brazil/East.generic.short=BRT -Brazil/East.standard.short=BRT -Brazil/West.daylight.short=AMST -Brazil/West.generic.short=AMT -Brazil/West.standard.short=AMT -BST.daylight.short=BDST -BST.generic.short=BDT -BST.standard.short=BDT -Canada/Atlantic.daylight.short=ADT -Canada/Atlantic.generic.short=AT -Canada/Atlantic.standard.short=AST -Canada/Central.daylight.short=CDT -Canada/Central.generic.short=CT -Canada/Central.standard.short=CST -Canada/Eastern.daylight.short=EDT -Canada/Eastern.generic.short=ET -Canada/Eastern.standard.short=EST -Canada/East-Saskatchewan.daylight.short=CDT -Canada/East-Saskatchewan.generic.short=CT -Canada/East-Saskatchewan.standard.short=CST -Canada/Mountain.daylight.short=MDT -Canada/Mountain.generic.short=MT -Canada/Mountain.standard.short=MST -Canada/Newfoundland.daylight.short=NDT -Canada/Newfoundland.generic.short=NT -Canada/Newfoundland.standard.short=NST -Canada/Pacific.daylight.short=PDT -Canada/Pacific.generic.short=PT -Canada/Pacific.standard.short=PST -Canada/Saskatchewan.daylight.short=CDT -Canada/Saskatchewan.generic.short=CT -Canada/Saskatchewan.standard.short=CST -Canada/Yukon.daylight.short=PDT -Canada/Yukon.generic.short=PT -Canada/Yukon.standard.short=PST -CAT.daylight.short=CAST -CAT.generic.short=CAT -CAT.standard.short=CAT -CET.daylight.short=CEST -CET.generic.short=CET -CET.standard.short=CET -Chile/Continental.daylight.short=CLST -Chile/Continental.generic.short=CLT -Chile/Continental.standard.short=CLT -Chile/EasterIsland.daylight.short=EASST -Chile/EasterIsland.generic.short=EAST -Chile/EasterIsland.standard.short=EAST -CNT.daylight.short=NDT -CNT.generic.short=NT -CNT.standard.short=NST -CST6CDT.daylight.short=CDT -CST6CDT.generic.short=CT -CST6CDT.standard.short=CST -CST.daylight.short=CDT -CST.generic.short=CT -CST.standard.short=CST -CTT.daylight.short=CDT -CTT.generic.short=CT -CTT.standard.short=CST -Cuba.daylight.short=CDT -Cuba.generic.short=CT -Cuba.standard.short=CST -EAT.daylight.short=EAST -EAT.generic.short=EAT -EAT.standard.short=EAT -ECT.daylight.short=CEST -ECT.generic.short=CET -ECT.standard.short=CET -EET.daylight.short=EEST -EET.generic.short=EET -EET.standard.short=EET -Egypt.daylight.short=EEST -Egypt.generic.short=EET -Egypt.standard.short=EET -Eire.daylight.short=IST -Eire.generic.short=IT -Eire.standard.short=GMT -EST5EDT.daylight.short=EDT -EST5EDT.generic.short=ET -EST5EDT.standard.short=EST -EST.daylight.short=EDT -EST.generic.short=ET -EST.standard.short=EST -Etc/Greenwich.daylight.short=GMT -Etc/Greenwich.generic.short=GMT -Etc/Greenwich.standard.short=GMT -Etc/UCT.daylight.short=UTC -Etc/UCT.generic.short=UTC -Etc/UCT.standard.short=UTC -Etc/Universal.daylight.short=UTC -Etc/Universal.generic.short=UTC -Etc/Universal.standard.short=UTC -Etc/UTC.daylight.short=UTC -Etc/UTC.generic.short=UTC -Etc/UTC.standard.short=UTC -Etc/Zulu.daylight.short=UTC -Etc/Zulu.generic.short=UTC -Etc/Zulu.standard.short=UTC -Europe/Amsterdam.daylight.short=CEST -Europe/Amsterdam.generic.short=CET -Europe/Amsterdam.standard.short=CET -Europe/Andorra.daylight.short=CEST -Europe/Andorra.generic.short=CET -Europe/Andorra.standard.short=CET -Europe/Athens.daylight.short=EEST -Europe/Athens.generic.short=EET -Europe/Athens.standard.short=EET -Europe/Belfast.daylight.short=BST -Europe/Belfast.generic.short=BT -Europe/Belfast.standard.short=GMT -Europe/Belgrade.daylight.short=CEST -Europe/Belgrade.generic.short=CET -Europe/Belgrade.standard.short=CET -Europe/Berlin.daylight.short=CEST -Europe/Berlin.generic.short=CET -Europe/Berlin.standard.short=CET -Europe/Bratislava.daylight.short=CEST -Europe/Bratislava.generic.short=CET -Europe/Bratislava.standard.short=CET -Europe/Brussels.daylight.short=CEST -Europe/Brussels.generic.short=CET -Europe/Brussels.standard.short=CET -Europe/Bucharest.daylight.short=EEST -Europe/Bucharest.generic.short=EET -Europe/Bucharest.standard.short=EET -Europe/Budapest.daylight.short=CEST -Europe/Budapest.generic.short=CET -Europe/Budapest.standard.short=CET -Europe/Busingen.daylight.short=CEST -Europe/Busingen.generic.short=CET -Europe/Busingen.standard.short=CET -Europe/Chisinau.daylight.short=EEST -Europe/Chisinau.generic.short=EET -Europe/Chisinau.standard.short=EET -Europe/Copenhagen.daylight.short=CEST -Europe/Copenhagen.generic.short=CET -Europe/Copenhagen.standard.short=CET -Europe/Dublin.daylight.short=IST -Europe/Dublin.generic.short=IT -Europe/Dublin.standard.short=GMT -Europe/Gibraltar.daylight.short=CEST -Europe/Gibraltar.generic.short=CET -Europe/Gibraltar.standard.short=CET -Europe/Guernsey.daylight.short=BST -Europe/Guernsey.generic.short=BT -Europe/Guernsey.standard.short=GMT -Europe/Helsinki.daylight.short=EEST -Europe/Helsinki.generic.short=EET -Europe/Helsinki.standard.short=EET -Europe/Isle_of_Man.daylight.short=BST -Europe/Isle_of_Man.generic.short=BT -Europe/Isle_of_Man.standard.short=GMT -Europe/Istanbul.daylight.short=EEST -Europe/Istanbul.generic.short=EET -Europe/Istanbul.standard.short=EET -Europe/Jersey.daylight.short=BST -Europe/Jersey.generic.short=BT -Europe/Jersey.standard.short=GMT -Europe/Kaliningrad.daylight.short=FEST -Europe/Kaliningrad.generic.short=FET -Europe/Kaliningrad.standard.short=FET -Europe/Kiev.daylight.short=EEST -Europe/Kiev.generic.short=EET -Europe/Kiev.standard.short=EET -Europe/Lisbon.daylight.short=WEST -Europe/Lisbon.generic.short=WET -Europe/Lisbon.standard.short=WET -Europe/Ljubljana.daylight.short=CEST -Europe/Ljubljana.generic.short=CET -Europe/Ljubljana.standard.short=CET -Europe/London.daylight.short=BST -Europe/London.generic.short=BT -Europe/London.standard.short=GMT -Europe/Luxembourg.daylight.short=CEST -Europe/Luxembourg.generic.short=CET -Europe/Luxembourg.standard.short=CET -Europe/Madrid.daylight.short=CEST -Europe/Madrid.generic.short=CET -Europe/Madrid.standard.short=CET -Europe/Malta.daylight.short=CEST -Europe/Malta.generic.short=CET -Europe/Malta.standard.short=CET -Europe/Mariehamn.daylight.short=EEST -Europe/Mariehamn.generic.short=EET -Europe/Mariehamn.standard.short=EET -Europe/Minsk.daylight.short=FEST -Europe/Minsk.generic.short=FET -Europe/Minsk.standard.short=FET -Europe/Monaco.daylight.short=CEST -Europe/Monaco.generic.short=CET -Europe/Monaco.standard.short=CET -Europe/Moscow.daylight.short=MSD -Europe/Moscow.generic.short=MT -Europe/Moscow.standard.short=MSK -Europe/Nicosia.daylight.short=EEST -Europe/Nicosia.generic.short=EET -Europe/Nicosia.standard.short=EET -Europe/Oslo.daylight.short=CEST -Europe/Oslo.generic.short=CET -Europe/Oslo.standard.short=CET -Europe/Paris.daylight.short=CEST -Europe/Paris.generic.short=CET -Europe/Paris.standard.short=CET -Europe/Podgorica.daylight.short=CEST -Europe/Podgorica.generic.short=CET -Europe/Podgorica.standard.short=CET -Europe/Prague.daylight.short=CEST -Europe/Prague.generic.short=CET -Europe/Prague.standard.short=CET -Europe/Riga.daylight.short=EEST -Europe/Riga.generic.short=EET -Europe/Riga.standard.short=EET -Europe/Rome.daylight.short=CEST -Europe/Rome.generic.short=CET -Europe/Rome.standard.short=CET -Europe/Samara.daylight.short=SAMST -Europe/Samara.generic.short=SAMT -Europe/Samara.standard.short=SAMT -Europe/San_Marino.daylight.short=CEST -Europe/San_Marino.generic.short=CET -Europe/San_Marino.standard.short=CET -Europe/Sarajevo.daylight.short=CEST -Europe/Sarajevo.generic.short=CET -Europe/Sarajevo.standard.short=CET -Europe/Simferopol.daylight.short=EEST -Europe/Simferopol.generic.short=EET -Europe/Simferopol.standard.short=EET -Europe/Skopje.daylight.short=CEST -Europe/Skopje.generic.short=CET -Europe/Skopje.standard.short=CET -Europe/Sofia.daylight.short=EEST -Europe/Sofia.generic.short=EET -Europe/Sofia.standard.short=EET -Europe/Stockholm.daylight.short=CEST -Europe/Stockholm.generic.short=CET -Europe/Stockholm.standard.short=CET -Europe/Tallinn.daylight.short=EEST -Europe/Tallinn.generic.short=EET -Europe/Tallinn.standard.short=EET -Europe/Tirane.daylight.short=CEST -Europe/Tirane.generic.short=CET -Europe/Tirane.standard.short=CET -Europe/Tiraspol.daylight.short=EEST -Europe/Tiraspol.generic.short=EET -Europe/Tiraspol.standard.short=EET -Europe/Uzhgorod.daylight.short=EEST -Europe/Uzhgorod.generic.short=EET -Europe/Uzhgorod.standard.short=EET -Europe/Vaduz.daylight.short=CEST -Europe/Vaduz.generic.short=CET -Europe/Vaduz.standard.short=CET -Europe/Vatican.daylight.short=CEST -Europe/Vatican.generic.short=CET -Europe/Vatican.standard.short=CET -Europe/Vienna.daylight.short=CEST -Europe/Vienna.generic.short=CET -Europe/Vienna.standard.short=CET -Europe/Vilnius.daylight.short=EEST -Europe/Vilnius.generic.short=EET -Europe/Vilnius.standard.short=EET -Europe/Volgograd.daylight.short=VOLST -Europe/Volgograd.generic.short=VOLT -Europe/Volgograd.standard.short=VOLT -Europe/Warsaw.daylight.short=CEST -Europe/Warsaw.generic.short=CET -Europe/Warsaw.standard.short=CET -Europe/Zagreb.daylight.short=CEST -Europe/Zagreb.generic.short=CET -Europe/Zagreb.standard.short=CET -Europe/Zaporozhye.daylight.short=EEST -Europe/Zaporozhye.generic.short=EET -Europe/Zaporozhye.standard.short=EET -Europe/Zurich.daylight.short=CEST -Europe/Zurich.generic.short=CET -Europe/Zurich.standard.short=CET -GB.daylight.short=BST -GB-Eire.daylight.short=BST -GB-Eire.generic.short=BT -GB-Eire.standard.short=GMT -GB.generic.short=BT -GB.standard.short=GMT -GMT.daylight.short=GMT -GMT.generic.short=GMT -GMT.standard.short=GMT -Greenwich.daylight.short=GMT -Greenwich.generic.short=GMT -Greenwich.standard.short=GMT -Hongkong.daylight.short=HKST -Hongkong.generic.short=HKT -Hongkong.standard.short=HKT -HST.daylight.short=HDT -HST.generic.short=HT -HST.standard.short=HST -Iceland.daylight.short=GMT -Iceland.generic.short=GMT -Iceland.standard.short=GMT -IET.daylight.short=EDT -IET.generic.short=ET -IET.standard.short=EST -Indian/Antananarivo.daylight.short=EAST -Indian/Antananarivo.generic.short=EAT -Indian/Antananarivo.standard.short=EAT -Indian/Chagos.daylight.short=IOST -Indian/Chagos.generic.short=IOT -Indian/Chagos.standard.short=IOT -Indian/Christmas.daylight.short=CXST -Indian/Christmas.generic.short=CIT -Indian/Christmas.standard.short=CXT -Indian/Cocos.daylight.short=CCST -Indian/Cocos.generic.short=CCT -Indian/Cocos.standard.short=CCT -Indian/Comoro.daylight.short=EAST -Indian/Comoro.generic.short=EAT -Indian/Comoro.standard.short=EAT -Indian/Kerguelen.daylight.short=TFST -Indian/Kerguelen.generic.short=TFT -Indian/Kerguelen.standard.short=TFT -Indian/Mahe.daylight.short=SCST -Indian/Mahe.generic.short=SCT -Indian/Mahe.standard.short=SCT -Indian/Maldives.daylight.short=MVST -Indian/Maldives.generic.short=MVT -Indian/Maldives.standard.short=MVT -Indian/Mauritius.daylight.short=MUST -Indian/Mauritius.generic.short=MUT -Indian/Mauritius.standard.short=MUT -Indian/Mayotte.daylight.short=EAST -Indian/Mayotte.generic.short=EAT -Indian/Mayotte.standard.short=EAT -Indian/Reunion.daylight.short=REST -Indian/Reunion.generic.short=RET -Indian/Reunion.standard.short=RET -Iran.daylight.short=IRDT -Iran.generic.short=IRT -Iran.standard.short=IRST -Israel.daylight.short=IDT -Israel.generic.short=IT -Israel.standard.short=IST -IST.daylight.short=IDT -IST.generic.short=IT -IST.standard.short=IST -Jamaica.daylight.short=EDT -Jamaica.generic.short=ET -Jamaica.standard.short=EST -Japan.daylight.short=JDT -Japan.generic.short=JT -Japan.standard.short=JST -JST.daylight.short=JDT -JST.generic.short=JT -JST.standard.short=JST -Kwajalein.daylight.short=MHST -Kwajalein.generic.short=MHT -Kwajalein.standard.short=MHT -Libya.daylight.short=EEST -Libya.generic.short=EET -Libya.standard.short=EET -MET.daylight.short=MEST -MET.generic.short=MET -MET.standard.short=MET -Mexico/BajaNorte.daylight.short=PDT -Mexico/BajaNorte.generic.short=PT -Mexico/BajaNorte.standard.short=PST -Mexico/BajaSur.daylight.short=MDT -Mexico/BajaSur.generic.short=MT -Mexico/BajaSur.standard.short=MST -Mexico/General.daylight.short=CDT -Mexico/General.generic.short=CT -Mexico/General.standard.short=CST -MIT.daylight.short=WSDT -MIT.generic.short=WST -MIT.standard.short=WST -MST7MDT.daylight.short=MDT -MST7MDT.generic.short=MT -MST7MDT.standard.short=MST -MST.daylight.short=MDT -MST.generic.short=MT -MST.standard.short=MST -Navajo.daylight.short=MDT -Navajo.generic.short=MT -Navajo.standard.short=MST -NET.daylight.short=AMST -NET.generic.short=AMT -NET.standard.short=AMT -NST.daylight.short=NZDT -NST.generic.short=NZT -NST.standard.short=NZST -NZ-CHAT.daylight.short=CHADT -NZ-CHAT.generic.short=CHAT -NZ-CHAT.standard.short=CHAST -NZ.daylight.short=NZDT -NZ.generic.short=NZT -NZ.standard.short=NZST -Pacific/Apia.daylight.short=WSDT -Pacific/Apia.generic.short=WST -Pacific/Apia.standard.short=WST -Pacific/Auckland.daylight.short=NZDT -Pacific/Auckland.generic.short=NZT -Pacific/Auckland.standard.short=NZST -Pacific/Chatham.daylight.short=CHADT -Pacific/Chatham.generic.short=CHAT -Pacific/Chatham.standard.short=CHAST -Pacific/Chuuk.daylight.short=CHUST -Pacific/Chuuk.generic.short=CHUT -Pacific/Chuuk.standard.short=CHUT -Pacific/Easter.daylight.short=EASST -Pacific/Easter.generic.short=EAST -Pacific/Easter.standard.short=EAST -Pacific/Efate.daylight.short=VUST -Pacific/Efate.generic.short=VUT -Pacific/Efate.standard.short=VUT -Pacific/Enderbury.daylight.short=PHOST -Pacific/Enderbury.generic.short=PHOT -Pacific/Enderbury.standard.short=PHOT -Pacific/Fakaofo.daylight.short=TKST -Pacific/Fakaofo.generic.short=TKT -Pacific/Fakaofo.standard.short=TKT -Pacific/Fiji.daylight.short=FJST -Pacific/Fiji.generic.short=FJT -Pacific/Fiji.standard.short=FJT -Pacific/Funafuti.daylight.short=TVST -Pacific/Funafuti.generic.short=TVT -Pacific/Funafuti.standard.short=TVT -Pacific/Galapagos.daylight.short=GALST -Pacific/Galapagos.generic.short=GALT -Pacific/Galapagos.standard.short=GALT -Pacific/Gambier.daylight.short=GAMST -Pacific/Gambier.generic.short=GAMT -Pacific/Gambier.standard.short=GAMT -Pacific/Guadalcanal.daylight.short=SBST -Pacific/Guadalcanal.generic.short=SBT -Pacific/Guadalcanal.standard.short=SBT -Pacific/Guam.daylight.short=ChDT -Pacific/Guam.generic.short=ChT -Pacific/Guam.standard.short=ChST -Pacific/Honolulu.daylight.short=HDT -Pacific/Honolulu.generic.short=HT -Pacific/Honolulu.standard.short=HST -Pacific/Johnston.daylight.short=HDT -Pacific/Johnston.generic.short=HT -Pacific/Johnston.standard.short=HST -Pacific/Kiritimati.daylight.short=LINST -Pacific/Kiritimati.generic.short=LINT -Pacific/Kiritimati.standard.short=LINT -Pacific/Kosrae.daylight.short=KOSST -Pacific/Kosrae.generic.short=KOST -Pacific/Kosrae.standard.short=KOST -Pacific/Kwajalein.daylight.short=MHST -Pacific/Kwajalein.generic.short=MHT -Pacific/Kwajalein.standard.short=MHT -Pacific/Majuro.daylight.short=MHST -Pacific/Majuro.generic.short=MHT -Pacific/Majuro.standard.short=MHT -Pacific/Marquesas.daylight.short=MARST -Pacific/Marquesas.generic.short=MART -Pacific/Marquesas.standard.short=MART -Pacific/Midway.daylight.short=SDT -Pacific/Midway.generic.short=ST -Pacific/Midway.standard.short=SST -Pacific/Nauru.daylight.short=NRST -Pacific/Nauru.generic.short=NRT -Pacific/Nauru.standard.short=NRT -Pacific/Niue.daylight.short=NUST -Pacific/Niue.generic.short=NUT -Pacific/Niue.standard.short=NUT -Pacific/Norfolk.daylight.short=NFST -Pacific/Norfolk.generic.short=NFT -Pacific/Norfolk.standard.short=NFT -Pacific/Noumea.daylight.short=NCST -Pacific/Noumea.generic.short=NCT -Pacific/Noumea.standard.short=NCT -Pacific/Pago_Pago.daylight.short=SDT -Pacific/Pago_Pago.generic.short=ST -Pacific/Pago_Pago.standard.short=SST -Pacific/Palau.daylight.short=PWST -Pacific/Palau.generic.short=PWT -Pacific/Palau.standard.short=PWT -Pacific/Pitcairn.daylight.short=PDT -Pacific/Pitcairn.generic.short=PT -Pacific/Pitcairn.standard.short=PST -Pacific/Pohnpei.daylight.short=PONST -Pacific/Pohnpei.generic.short=PONT -Pacific/Pohnpei.standard.short=PONT -Pacific/Ponape.daylight.short=PONST -Pacific/Ponape.generic.short=PONT -Pacific/Ponape.standard.short=PONT -Pacific/Port_Moresby.daylight.short=PGST -Pacific/Port_Moresby.generic.short=PGT -Pacific/Port_Moresby.standard.short=PGT -Pacific/Rarotonga.daylight.short=CKHST -Pacific/Rarotonga.generic.short=CKT -Pacific/Rarotonga.standard.short=CKT -Pacific/Saipan.daylight.short=ChDT -Pacific/Saipan.generic.short=ChT -Pacific/Saipan.standard.short=ChST -Pacific/Samoa.daylight.short=SDT -Pacific/Samoa.generic.short=ST -Pacific/Samoa.standard.short=SST -Pacific/Tahiti.daylight.short=TAHST -Pacific/Tahiti.generic.short=TAHT -Pacific/Tahiti.standard.short=TAHT -Pacific/Tarawa.daylight.short=GILST -Pacific/Tarawa.generic.short=GILT -Pacific/Tarawa.standard.short=GILT -Pacific/Tongatapu.daylight.short=TOST -Pacific/Tongatapu.generic.short=TOT -Pacific/Tongatapu.standard.short=TOT -Pacific/Truk.daylight.short=CHUST -Pacific/Truk.generic.short=CHUT -Pacific/Truk.standard.short=CHUT -Pacific/Wake.daylight.short=WAKST -Pacific/Wake.generic.short=WAKT -Pacific/Wake.standard.short=WAKT -Pacific/Wallis.daylight.short=WFST -Pacific/Wallis.generic.short=WFT -Pacific/Wallis.standard.short=WFT -Pacific/Yap.daylight.short=CHUST -Pacific/Yap.generic.short=CHUT -Pacific/Yap.standard.short=CHUT -PLT.daylight.short=PKST -PLT.generic.short=PKT -PLT.standard.short=PKT -PNT.daylight.short=MDT -PNT.generic.short=MT -PNT.standard.short=MST -Poland.daylight.short=CEST -Poland.generic.short=CET -Poland.standard.short=CET -Portugal.daylight.short=WEST -Portugal.generic.short=WET -Portugal.standard.short=WET -PRC.daylight.short=CDT -PRC.generic.short=CT -PRC.standard.short=CST -PRT.daylight.short=ADT -PRT.generic.short=AT -PRT.standard.short=AST -PST8PDT.daylight.short=PDT -PST8PDT.generic.short=PT -PST8PDT.standard.short=PST -PST.daylight.short=PDT -PST.generic.short=PT -PST.standard.short=PST -ROK.daylight.short=KDT -ROK.generic.short=KT -ROK.standard.short=KST -Singapore.daylight.short=SGST -Singapore.generic.short=SGT -Singapore.standard.short=SGT -SST.daylight.short=SBST -SST.generic.short=SBT -SST.standard.short=SBT -SystemV/AST4ADT.daylight.short=ADT -SystemV/AST4ADT.generic.short=AT -SystemV/AST4ADT.standard.short=AST -SystemV/AST4.daylight.short=ADT -SystemV/AST4.generic.short=AT -SystemV/AST4.standard.short=AST -SystemV/CST6CDT.daylight.short=CDT -SystemV/CST6CDT.generic.short=CT -SystemV/CST6CDT.standard.short=CST -SystemV/CST6.daylight.short=CDT -SystemV/CST6.generic.short=CT -SystemV/CST6.standard.short=CST -SystemV/EST5.daylight.short=EDT -SystemV/EST5EDT.daylight.short=EDT -SystemV/EST5EDT.generic.short=ET -SystemV/EST5EDT.standard.short=EST -SystemV/EST5.generic.short=ET -SystemV/EST5.standard.short=EST -SystemV/HST10.daylight.short=HDT -SystemV/HST10.generic.short=HT -SystemV/HST10.standard.short=HST -SystemV/MST7.daylight.short=MDT -SystemV/MST7.generic.short=MT -SystemV/MST7MDT.daylight.short=MDT -SystemV/MST7MDT.generic.short=MT -SystemV/MST7MDT.standard.short=MST -SystemV/MST7.standard.short=MST -SystemV/PST8.daylight.short=PDT -SystemV/PST8.generic.short=PT -SystemV/PST8PDT.daylight.short=PDT -SystemV/PST8PDT.generic.short=PT -SystemV/PST8PDT.standard.short=PST -SystemV/PST8.standard.short=PST -SystemV/YST9.daylight.short=AKDT -SystemV/YST9.generic.short=AKT -SystemV/YST9.standard.short=AKST -SystemV/YST9YDT.daylight.short=AKDT -SystemV/YST9YDT.generic.short=AKT -SystemV/YST9YDT.standard.short=AKST -Turkey.daylight.short=EEST -Turkey.generic.short=EET -Turkey.standard.short=EET -UCT.daylight.short=UTC -UCT.generic.short=UTC -UCT.standard.short=UTC -Universal.daylight.short=UTC -Universal.generic.short=UTC -Universal.standard.short=UTC -US/Alaska.daylight.short=AKDT -US/Alaska.generic.short=AKT -US/Alaska.standard.short=AKST -US/Aleutian.daylight.short=HADT -US/Aleutian.generic.short=HAT -US/Aleutian.standard.short=HAST -US/Arizona.daylight.short=MDT -US/Arizona.generic.short=MT -US/Arizona.standard.short=MST -US/Central.daylight.short=CDT -US/Central.generic.short=CT -US/Central.standard.short=CST -US/Eastern.daylight.short=EDT -US/Eastern.generic.short=ET -US/Eastern.standard.short=EST -US/East-Indiana.daylight.short=EDT -US/East-Indiana.generic.short=ET -US/East-Indiana.standard.short=EST -US/Hawaii.daylight.short=HDT -US/Hawaii.generic.short=HT -US/Hawaii.standard.short=HST -US/Indiana-Starke.daylight.short=CDT -US/Indiana-Starke.generic.short=CT -US/Indiana-Starke.standard.short=CST -US/Michigan.daylight.short=EDT -US/Michigan.generic.short=ET -US/Michigan.standard.short=EST -US/Mountain.daylight.short=MDT -US/Mountain.generic.short=MT -US/Mountain.standard.short=MST -US/Pacific.daylight.short=PDT -US/Pacific.generic.short=PT -US/Pacific-New.daylight.short=PDT -US/Pacific-New.generic.short=PT -US/Pacific-New.standard.short=PST -US/Pacific.standard.short=PST -US/Samoa.daylight.short=SDT -US/Samoa.generic.short=ST -US/Samoa.standard.short=SST -UTC.daylight.short=UTC -UTC.generic.short=UTC -UTC.standard.short=UTC -VST.daylight.short=ICST -VST.generic.short=ICT -VST.standard.short=ICT -WET.daylight.short=WEST -WET.generic.short=WET -WET.standard.short=WET -W-SU.daylight.short=MSD -W-SU.generic.short=MT -W-SU.standard.short=MSK -Zulu.daylight.short=UTC -Zulu.generic.short=UTC -Zulu.standard.short=UTC diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_short.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_short.properties deleted file mode 100644 index 095522a68d1..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_short.properties +++ /dev/null @@ -1,1743 +0,0 @@ -ACT.daylight.short=CST -ACT.generic.short=CT -ACT.standard.short=CST -AET.daylight.short=EST -AET.generic.short=ET -AET.standard.short=EST -Africa/Abidjan.daylight.short=GMT -Africa/Abidjan.generic.short=GMT -Africa/Abidjan.standard.short=GMT -Africa/Accra.daylight.short=GHST -Africa/Accra.generic.short=GMT -Africa/Accra.standard.short=GMT -Africa/Addis_Ababa.daylight.short=EAST -Africa/Addis_Ababa.generic.short=EAT -Africa/Addis_Ababa.standard.short=EAT -Africa/Algiers.daylight.short=CEST -Africa/Algiers.generic.short=CET -Africa/Algiers.standard.short=CET -Africa/Asmara.daylight.short=EAST -Africa/Asmara.generic.short=EAT -Africa/Asmara.standard.short=EAT -Africa/Asmera.daylight.short=EAST -Africa/Asmera.generic.short=EAT -Africa/Asmera.standard.short=EAT -Africa/Bamako.daylight.short=GMT -Africa/Bamako.generic.short=GMT -Africa/Bamako.standard.short=GMT -Africa/Bangui.daylight.short=WAST -Africa/Bangui.generic.short=WAT -Africa/Bangui.standard.short=WAT -Africa/Banjul.daylight.short=GMT -Africa/Banjul.generic.short=GMT -Africa/Banjul.standard.short=GMT -Africa/Bissau.daylight.short=GMT -Africa/Bissau.generic.short=GMT -Africa/Bissau.standard.short=GMT -Africa/Blantyre.daylight.short=CAST -Africa/Blantyre.generic.short=CAT -Africa/Blantyre.standard.short=CAT -Africa/Brazzaville.daylight.short=WAST -Africa/Brazzaville.generic.short=WAT -Africa/Brazzaville.standard.short=WAT -Africa/Bujumbura.daylight.short=CAST -Africa/Bujumbura.generic.short=CAT -Africa/Bujumbura.standard.short=CAT -Africa/Cairo.daylight.short=EEST -Africa/Cairo.generic.short=EET -Africa/Cairo.standard.short=EET -Africa/Casablanca.daylight.short=WEST -Africa/Casablanca.generic.short=WET -Africa/Casablanca.standard.short=WET -Africa/Ceuta.daylight.short=CEST -Africa/Ceuta.generic.short=CET -Africa/Ceuta.standard.short=CET -Africa/Conakry.daylight.short=GMT -Africa/Conakry.generic.short=GMT -Africa/Conakry.standard.short=GMT -Africa/Dakar.daylight.short=GMT -Africa/Dakar.generic.short=GMT -Africa/Dakar.standard.short=GMT -Africa/Dar_es_Salaam.daylight.short=EAST -Africa/Dar_es_Salaam.generic.short=EAT -Africa/Dar_es_Salaam.standard.short=EAT -Africa/Djibouti.daylight.short=EAST -Africa/Djibouti.generic.short=EAT -Africa/Djibouti.standard.short=EAT -Africa/Douala.daylight.short=WAST -Africa/Douala.generic.short=WAT -Africa/Douala.standard.short=WAT -Africa/El_Aaiun.daylight.short=WEST -Africa/El_Aaiun.generic.short=WET -Africa/El_Aaiun.standard.short=WET -Africa/Freetown.daylight.short=SLST -Africa/Freetown.generic.short=SLT -Africa/Freetown.standard.short=GMT -Africa/Gaborone.daylight.short=CAST -Africa/Gaborone.generic.short=CAT -Africa/Gaborone.standard.short=CAT -Africa/Harare.daylight.short=CAST -Africa/Harare.generic.short=CAT -Africa/Harare.standard.short=CAT -Africa/Johannesburg.daylight.short=SAST -Africa/Johannesburg.generic.short=SAT -Africa/Johannesburg.standard.short=SAST -Africa/Juba.daylight.short=EAST -Africa/Juba.generic.short=EAT -Africa/Juba.standard.short=EAT -Africa/Kampala.daylight.short=EAST -Africa/Kampala.generic.short=EAT -Africa/Kampala.standard.short=EAT -Africa/Khartoum.daylight.short=EAST -Africa/Khartoum.generic.short=EAT -Africa/Khartoum.standard.short=EAT -Africa/Kigali.daylight.short=CAST -Africa/Kigali.generic.short=CAT -Africa/Kigali.standard.short=CAT -Africa/Kinshasa.daylight.short=WAST -Africa/Kinshasa.generic.short=WAT -Africa/Kinshasa.standard.short=WAT -Africa/Lagos.daylight.short=WAST -Africa/Lagos.generic.short=WAT -Africa/Lagos.standard.short=WAT -Africa/Libreville.daylight.short=WAST -Africa/Libreville.generic.short=WAT -Africa/Libreville.standard.short=WAT -Africa/Lome.daylight.short=GMT -Africa/Lome.generic.short=GMT -Africa/Lome.standard.short=GMT -Africa/Luanda.daylight.short=WAST -Africa/Luanda.generic.short=WAT -Africa/Luanda.standard.short=WAT -Africa/Lubumbashi.daylight.short=CAST -Africa/Lubumbashi.generic.short=CAT -Africa/Lubumbashi.standard.short=CAT -Africa/Lusaka.daylight.short=CAST -Africa/Lusaka.generic.short=CAT -Africa/Lusaka.standard.short=CAT -Africa/Malabo.daylight.short=WAST -Africa/Malabo.generic.short=WAT -Africa/Malabo.standard.short=WAT -Africa/Maputo.daylight.short=CAST -Africa/Maputo.generic.short=CAT -Africa/Maputo.standard.short=CAT -Africa/Maseru.daylight.short=SAST -Africa/Maseru.generic.short=SAT -Africa/Maseru.standard.short=SAST -Africa/Mbabane.daylight.short=SAST -Africa/Mbabane.generic.short=SAT -Africa/Mbabane.standard.short=SAST -Africa/Mogadishu.daylight.short=EAST -Africa/Mogadishu.generic.short=EAT -Africa/Mogadishu.standard.short=EAT -Africa/Monrovia.daylight.short=GMT -Africa/Monrovia.generic.short=GMT -Africa/Monrovia.standard.short=GMT -Africa/Nairobi.daylight.short=EAST -Africa/Nairobi.generic.short=EAT -Africa/Nairobi.standard.short=EAT -Africa/Ndjamena.daylight.short=WAST -Africa/Ndjamena.generic.short=WAT -Africa/Ndjamena.standard.short=WAT -Africa/Niamey.daylight.short=WAST -Africa/Niamey.generic.short=WAT -Africa/Niamey.standard.short=WAT -Africa/Nouakchott.daylight.short=GMT -Africa/Nouakchott.generic.short=GMT -Africa/Nouakchott.standard.short=GMT -Africa/Ouagadougou.daylight.short=GMT -Africa/Ouagadougou.generic.short=GMT -Africa/Ouagadougou.standard.short=GMT -Africa/Porto-Novo.daylight.short=WAST -Africa/Porto-Novo.generic.short=WAT -Africa/Porto-Novo.standard.short=WAT -Africa/Sao_Tome.daylight.short=GMT -Africa/Sao_Tome.generic.short=GMT -Africa/Sao_Tome.standard.short=GMT -Africa/Timbuktu.daylight.short=GMT -Africa/Timbuktu.generic.short=GMT -Africa/Timbuktu.standard.short=GMT -Africa/Tripoli.daylight.short=EEST -Africa/Tripoli.generic.short=EET -Africa/Tripoli.standard.short=EET -Africa/Tunis.daylight.short=CEST -Africa/Tunis.generic.short=CET -Africa/Tunis.standard.short=CET -Africa/Windhoek.daylight.short=WAST -Africa/Windhoek.generic.short=WAT -Africa/Windhoek.standard.short=WAT -AGT.daylight.short=ARST -AGT.generic.short=ART -AGT.standard.short=ART -America/Adak.daylight.short=HADT -America/Adak.generic.short=HAT -America/Adak.standard.short=HAST -America/Anchorage.daylight.short=AKDT -America/Anchorage.generic.short=AKT -America/Anchorage.standard.short=AKST -America/Anguilla.daylight.short=ADT -America/Anguilla.generic.short=AT -America/Anguilla.standard.short=AST -America/Antigua.daylight.short=ADT -America/Antigua.generic.short=AT -America/Antigua.standard.short=AST -America/Araguaina.daylight.short=BRST -America/Araguaina.generic.short=BRT -America/Araguaina.standard.short=BRT -America/Argentina/Buenos_Aires.daylight.short=ARST -America/Argentina/Buenos_Aires.generic.short=ART -America/Argentina/Buenos_Aires.standard.short=ART -America/Argentina/Catamarca.daylight.short=ARST -America/Argentina/Catamarca.generic.short=ART -America/Argentina/Catamarca.standard.short=ART -America/Argentina/ComodRivadavia.daylight.short=ARST -America/Argentina/ComodRivadavia.generic.short=ART -America/Argentina/ComodRivadavia.standard.short=ART -America/Argentina/Cordoba.daylight.short=ARST -America/Argentina/Cordoba.generic.short=ART -America/Argentina/Cordoba.standard.short=ART -America/Argentina/Jujuy.daylight.short=ARST -America/Argentina/Jujuy.generic.short=ART -America/Argentina/Jujuy.standard.short=ART -America/Argentina/La_Rioja.daylight.short=ARST -America/Argentina/La_Rioja.generic.short=ART -America/Argentina/La_Rioja.standard.short=ART -America/Argentina/Mendoza.daylight.short=ARST -America/Argentina/Mendoza.generic.short=ART -America/Argentina/Mendoza.standard.short=ART -America/Argentina/Rio_Gallegos.daylight.short=ARST -America/Argentina/Rio_Gallegos.generic.short=ART -America/Argentina/Rio_Gallegos.standard.short=ART -America/Argentina/Salta.daylight.short=ARST -America/Argentina/Salta.generic.short=ART -America/Argentina/Salta.standard.short=ART -America/Argentina/San_Juan.daylight.short=ARST -America/Argentina/San_Juan.generic.short=ART -America/Argentina/San_Juan.standard.short=ART -America/Argentina/San_Luis.daylight.short=ARST -America/Argentina/San_Luis.generic.short=ART -America/Argentina/San_Luis.standard.short=ART -America/Argentina/Tucuman.daylight.short=ARST -America/Argentina/Tucuman.generic.short=ART -America/Argentina/Tucuman.standard.short=ART -America/Argentina/Ushuaia.daylight.short=ARST -America/Argentina/Ushuaia.generic.short=ART -America/Argentina/Ushuaia.standard.short=ART -America/Aruba.daylight.short=ADT -America/Aruba.generic.short=AT -America/Aruba.standard.short=AST -America/Asuncion.daylight.short=PYST -America/Asuncion.generic.short=PYT -America/Asuncion.standard.short=PYT -America/Atikokan.daylight.short=EDT -America/Atikokan.generic.short=ET -America/Atikokan.standard.short=EST -America/Atka.daylight.short=HADT -America/Atka.generic.short=HAT -America/Atka.standard.short=HAST -America/Bahia_Banderas.daylight.short=CDT -America/Bahia_Banderas.generic.short=CT -America/Bahia_Banderas.standard.short=CST -America/Bahia.daylight.short=BRST -America/Bahia.generic.short=BRT -America/Bahia.standard.short=BRT -America/Barbados.daylight.short=ADT -America/Barbados.generic.short=AT -America/Barbados.standard.short=AST -America/Belem.daylight.short=BRST -America/Belem.generic.short=BRT -America/Belem.standard.short=BRT -America/Belize.daylight.short=CDT -America/Belize.generic.short=CT -America/Belize.standard.short=CST -America/Blanc-Sablon.daylight.short=ADT -America/Blanc-Sablon.generic.short=AT -America/Blanc-Sablon.standard.short=AST -America/Boa_Vista.daylight.short=AMST -America/Boa_Vista.generic.short=AMT -America/Boa_Vista.standard.short=AMT -America/Bogota.daylight.short=COST -America/Bogota.generic.short=COT -America/Bogota.standard.short=COT -America/Boise.daylight.short=MDT -America/Boise.generic.short=MT -America/Boise.standard.short=MST -America/Buenos_Aires.daylight.short=ARST -America/Buenos_Aires.generic.short=ART -America/Buenos_Aires.standard.short=ART -America/Cambridge_Bay.daylight.short=MDT -America/Cambridge_Bay.generic.short=MT -America/Cambridge_Bay.standard.short=MST -America/Campo_Grande.daylight.short=AMST -America/Campo_Grande.generic.short=AMT -America/Campo_Grande.standard.short=AMT -America/Cancun.daylight.short=CDT -America/Cancun.generic.short=CT -America/Cancun.standard.short=CST -America/Caracas.daylight.short=VEST -America/Caracas.generic.short=VET -America/Caracas.standard.short=VET -America/Catamarca.daylight.short=ARST -America/Catamarca.generic.short=ART -America/Catamarca.standard.short=ART -America/Cayenne.daylight.short=GFST -America/Cayenne.generic.short=GFT -America/Cayenne.standard.short=GFT -America/Cayman.daylight.short=EDT -America/Cayman.generic.short=ET -America/Cayman.standard.short=EST -America/Chicago.daylight.short=CDT -America/Chicago.generic.short=CT -America/Chicago.standard.short=CST -America/Chihuahua.daylight.short=MDT -America/Chihuahua.generic.short=MT -America/Chihuahua.standard.short=MST -America/Coral_Harbour.daylight.short=EDT -America/Coral_Harbour.generic.short=ET -America/Coral_Harbour.standard.short=EST -America/Cordoba.daylight.short=ARST -America/Cordoba.generic.short=ART -America/Cordoba.standard.short=ART -America/Costa_Rica.daylight.short=CDT -America/Costa_Rica.generic.short=CT -America/Costa_Rica.standard.short=CST -America/Creston.daylight.short=MDT -America/Creston.generic.short=MT -America/Creston.standard.short=MST -America/Cuiaba.daylight.short=AMST -America/Cuiaba.generic.short=AMT -America/Cuiaba.standard.short=AMT -America/Curacao.daylight.short=ADT -America/Curacao.generic.short=AT -America/Curacao.standard.short=AST -America/Danmarkshavn.daylight.short=GMT -America/Danmarkshavn.generic.short=GMT -America/Danmarkshavn.standard.short=GMT -America/Dawson_Creek.daylight.short=MDT -America/Dawson_Creek.generic.short=MT -America/Dawson_Creek.standard.short=MST -America/Dawson.daylight.short=PDT -America/Dawson.generic.short=PT -America/Dawson.standard.short=PST -America/Denver.daylight.short=MDT -America/Denver.generic.short=MT -America/Denver.standard.short=MST -America/Detroit.daylight.short=EDT -America/Detroit.generic.short=ET -America/Detroit.standard.short=EST -America/Dominica.daylight.short=ADT -America/Dominica.generic.short=AT -America/Dominica.standard.short=AST -America/Edmonton.daylight.short=MDT -America/Edmonton.generic.short=MT -America/Edmonton.standard.short=MST -America/Eirunepe.daylight.short=ACST -America/Eirunepe.generic.short=ACT -America/Eirunepe.standard.short=ACT -America/El_Salvador.daylight.short=CDT -America/El_Salvador.generic.short=CT -America/El_Salvador.standard.short=CST -America/Ensenada.daylight.short=PDT -America/Ensenada.generic.short=PT -America/Ensenada.standard.short=PST -America/Fortaleza.daylight.short=BRST -America/Fortaleza.generic.short=BRT -America/Fortaleza.standard.short=BRT -America/Fort_Wayne.daylight.short=EDT -America/Fort_Wayne.generic.short=ET -America/Fort_Wayne.standard.short=EST -America/Glace_Bay.daylight.short=ADT -America/Glace_Bay.generic.short=AT -America/Glace_Bay.standard.short=AST -America/Godthab.daylight.short=WGST -America/Godthab.generic.short=WGT -America/Godthab.standard.short=WGT -America/Goose_Bay.daylight.short=ADT -America/Goose_Bay.generic.short=AT -America/Goose_Bay.standard.short=AST -America/Grand_Turk.daylight.short=EDT -America/Grand_Turk.generic.short=ET -America/Grand_Turk.standard.short=EST -America/Grenada.daylight.short=ADT -America/Grenada.generic.short=AT -America/Grenada.standard.short=AST -America/Guadeloupe.daylight.short=ADT -America/Guadeloupe.generic.short=AT -America/Guadeloupe.standard.short=AST -America/Guatemala.daylight.short=CDT -America/Guatemala.generic.short=CT -America/Guatemala.standard.short=CST -America/Guayaquil.daylight.short=ECST -America/Guayaquil.generic.short=ECT -America/Guayaquil.standard.short=ECT -America/Guyana.daylight.short=GYST -America/Guyana.generic.short=GYT -America/Guyana.standard.short=GYT -America/Halifax.daylight.short=ADT -America/Halifax.generic.short=AT -America/Halifax.standard.short=AST -America/Havana.daylight.short=CDT -America/Havana.generic.short=CT -America/Havana.standard.short=CST -America/Hermosillo.daylight.short=MDT -America/Hermosillo.generic.short=MT -America/Hermosillo.standard.short=MST -America/Indiana/Indianapolis.daylight.short=EDT -America/Indiana/Indianapolis.generic.short=ET -America/Indiana/Indianapolis.standard.short=EST -America/Indiana/Knox.daylight.short=CDT -America/Indiana/Knox.generic.short=CT -America/Indiana/Knox.standard.short=CST -America/Indiana/Marengo.daylight.short=EDT -America/Indiana/Marengo.generic.short=ET -America/Indiana/Marengo.standard.short=EST -America/Indiana/Petersburg.daylight.short=EDT -America/Indiana/Petersburg.generic.short=ET -America/Indiana/Petersburg.standard.short=EST -America/Indianapolis.daylight.short=EDT -America/Indianapolis.generic.short=ET -America/Indianapolis.standard.short=EST -America/Indiana/Tell_City.daylight.short=CDT -America/Indiana/Tell_City.generic.short=CT -America/Indiana/Tell_City.standard.short=CST -America/Indiana/Vevay.daylight.short=EDT -America/Indiana/Vevay.generic.short=ET -America/Indiana/Vevay.standard.short=EST -America/Indiana/Vincennes.daylight.short=EDT -America/Indiana/Vincennes.generic.short=ET -America/Indiana/Vincennes.standard.short=EST -America/Indiana/Winamac.daylight.short=EDT -America/Indiana/Winamac.generic.short=ET -America/Indiana/Winamac.standard.short=EST -America/Inuvik.daylight.short=MDT -America/Inuvik.generic.short=MT -America/Inuvik.standard.short=MST -America/Iqaluit.daylight.short=EDT -America/Iqaluit.generic.short=ET -America/Iqaluit.standard.short=EST -America/Jamaica.daylight.short=EDT -America/Jamaica.generic.short=ET -America/Jamaica.standard.short=EST -America/Jujuy.daylight.short=ARST -America/Jujuy.generic.short=ART -America/Jujuy.standard.short=ART -America/Juneau.daylight.short=AKDT -America/Juneau.generic.short=AKT -America/Juneau.standard.short=AKST -America/Kentucky/Louisville.daylight.short=EDT -America/Kentucky/Louisville.generic.short=ET -America/Kentucky/Louisville.standard.short=EST -America/Kentucky/Monticello.daylight.short=EDT -America/Kentucky/Monticello.generic.short=ET -America/Kentucky/Monticello.standard.short=EST -America/Knox_IN.daylight.short=CDT -America/Knox_IN.generic.short=CT -America/Knox_IN.standard.short=CST -America/Kralendijk.daylight.short=ADT -America/Kralendijk.generic.short=AT -America/Kralendijk.standard.short=AST -America/La_Paz.daylight.short=BOST -America/La_Paz.generic.short=BOT -America/La_Paz.standard.short=BOT -America/Lima.daylight.short=PEST -America/Lima.generic.short=PET -America/Lima.standard.short=PET -America/Los_Angeles.daylight.short=PDT -America/Los_Angeles.generic.short=PT -America/Los_Angeles.standard.short=PST -America/Louisville.daylight.short=EDT -America/Louisville.generic.short=ET -America/Louisville.standard.short=EST -America/Lower_Princes.daylight.short=ADT -America/Lower_Princes.generic.short=AT -America/Lower_Princes.standard.short=AST -America/Maceio.daylight.short=BRST -America/Maceio.generic.short=BRT -America/Maceio.standard.short=BRT -America/Managua.daylight.short=CDT -America/Managua.generic.short=CT -America/Managua.standard.short=CST -America/Manaus.daylight.short=AMST -America/Manaus.generic.short=AMT -America/Manaus.standard.short=AMT -America/Marigot.daylight.short=ADT -America/Marigot.generic.short=AT -America/Marigot.standard.short=AST -America/Martinique.daylight.short=ADT -America/Martinique.generic.short=AT -America/Martinique.standard.short=AST -America/Matamoros.daylight.short=CDT -America/Matamoros.generic.short=CT -America/Matamoros.standard.short=CST -America/Mazatlan.daylight.short=MDT -America/Mazatlan.generic.short=MT -America/Mazatlan.standard.short=MST -America/Mendoza.daylight.short=ARST -America/Mendoza.generic.short=ART -America/Mendoza.standard.short=ART -America/Menominee.daylight.short=CDT -America/Menominee.generic.short=CT -America/Menominee.standard.short=CST -America/Merida.daylight.short=CDT -America/Merida.generic.short=CT -America/Merida.standard.short=CST -America/Metlakatla.daylight.short=MeDT -America/Metlakatla.generic.short=MeT -America/Metlakatla.standard.short=MeST -America/Mexico_City.daylight.short=CDT -America/Mexico_City.generic.short=CT -America/Mexico_City.standard.short=CST -America/Miquelon.daylight.short=PMDT -America/Miquelon.generic.short=PMT -America/Miquelon.standard.short=PMST -America/Moncton.daylight.short=ADT -America/Moncton.generic.short=AT -America/Moncton.standard.short=AST -America/Monterrey.daylight.short=CDT -America/Monterrey.generic.short=CT -America/Monterrey.standard.short=CST -America/Montevideo.daylight.short=UYST -America/Montevideo.generic.short=UYT -America/Montevideo.standard.short=UYT -America/Montreal.daylight.short=EDT -America/Montreal.generic.short=ET -America/Montreal.standard.short=EST -America/Montserrat.daylight.short=ADT -America/Montserrat.generic.short=AT -America/Montserrat.standard.short=AST -America/Nassau.daylight.short=EDT -America/Nassau.generic.short=ET -America/Nassau.standard.short=EST -America/New_York.daylight.short=EDT -America/New_York.generic.short=ET -America/New_York.standard.short=EST -America/Nipigon.daylight.short=EDT -America/Nipigon.generic.short=ET -America/Nipigon.standard.short=EST -America/Nome.daylight.short=AKDT -America/Nome.generic.short=AKT -America/Nome.standard.short=AKST -America/Noronha.daylight.short=FNST -America/Noronha.generic.short=FNT -America/Noronha.standard.short=FNT -America/North_Dakota/Beulah.daylight.short=CDT -America/North_Dakota/Beulah.generic.short=CT -America/North_Dakota/Beulah.standard.short=CST -America/North_Dakota/Center.daylight.short=CDT -America/North_Dakota/Center.generic.short=CT -America/North_Dakota/Center.standard.short=CST -America/North_Dakota/New_Salem.daylight.short=CDT -America/North_Dakota/New_Salem.generic.short=CT -America/North_Dakota/New_Salem.standard.short=CST -America/Ojinaga.daylight.short=MDT -America/Ojinaga.generic.short=MT -America/Ojinaga.standard.short=MST -America/Panama.daylight.short=EDT -America/Panama.generic.short=ET -America/Panama.standard.short=EST -America/Pangnirtung.daylight.short=EDT -America/Pangnirtung.generic.short=ET -America/Pangnirtung.standard.short=EST -America/Paramaribo.daylight.short=SRST -America/Paramaribo.generic.short=SRT -America/Paramaribo.standard.short=SRT -America/Phoenix.daylight.short=MDT -America/Phoenix.generic.short=MT -America/Phoenix.standard.short=MST -America/Port-au-Prince.daylight.short=EDT -America/Port-au-Prince.generic.short=ET -America/Port-au-Prince.standard.short=EST -America/Porto_Acre.daylight.short=ACST -America/Porto_Acre.generic.short=ACT -America/Porto_Acre.standard.short=ACT -America/Port_of_Spain.daylight.short=ADT -America/Port_of_Spain.generic.short=AT -America/Port_of_Spain.standard.short=AST -America/Porto_Velho.daylight.short=AMST -America/Porto_Velho.generic.short=AMT -America/Porto_Velho.standard.short=AMT -America/Puerto_Rico.daylight.short=ADT -America/Puerto_Rico.generic.short=AT -America/Puerto_Rico.standard.short=AST -America/Rainy_River.daylight.short=CDT -America/Rainy_River.generic.short=CT -America/Rainy_River.standard.short=CST -America/Rankin_Inlet.daylight.short=CDT -America/Rankin_Inlet.generic.short=CT -America/Rankin_Inlet.standard.short=CST -America/Recife.daylight.short=BRST -America/Recife.generic.short=BRT -America/Recife.standard.short=BRT -America/Regina.daylight.short=CDT -America/Regina.generic.short=CT -America/Regina.standard.short=CST -America/Resolute.daylight.short=CDT -America/Resolute.generic.short=CT -America/Resolute.standard.short=CST -America/Rio_Branco.daylight.short=ACST -America/Rio_Branco.generic.short=ACT -America/Rio_Branco.standard.short=ACT -America/Rosario.daylight.short=ARST -America/Rosario.generic.short=ART -America/Rosario.standard.short=ART -America/Santa_Isabel.daylight.short=PDT -America/Santa_Isabel.generic.short=PT -America/Santa_Isabel.standard.short=PST -America/Santarem.daylight.short=BRST -America/Santarem.generic.short=BRT -America/Santarem.standard.short=BRT -America/Santiago.daylight.short=CLST -America/Santiago.generic.short=CLT -America/Santiago.standard.short=CLT -America/Santo_Domingo.daylight.short=ADT -America/Santo_Domingo.generic.short=AT -America/Santo_Domingo.standard.short=AST -America/Sao_Paulo.daylight.short=BRST -America/Sao_Paulo.generic.short=BRT -America/Sao_Paulo.standard.short=BRT -America/Scoresbysund.daylight.short=EGST -America/Scoresbysund.generic.short=EGT -America/Scoresbysund.standard.short=EGT -America/Shiprock.daylight.short=MDT -America/Shiprock.generic.short=MT -America/Shiprock.standard.short=MST -America/Sitka.daylight.short=AKDT -America/Sitka.generic.short=AKT -America/Sitka.standard.short=AKST -America/St_Barthelemy.daylight.short=ADT -America/St_Barthelemy.generic.short=AT -America/St_Barthelemy.standard.short=AST -America/St_Johns.daylight.short=NDT -America/St_Johns.generic.short=NT -America/St_Johns.standard.short=NST -America/St_Kitts.daylight.short=ADT -America/St_Kitts.generic.short=AT -America/St_Kitts.standard.short=AST -America/St_Lucia.daylight.short=ADT -America/St_Lucia.generic.short=AT -America/St_Lucia.standard.short=AST -America/St_Thomas.daylight.short=ADT -America/St_Thomas.generic.short=AT -America/St_Thomas.standard.short=AST -America/St_Vincent.daylight.short=ADT -America/St_Vincent.generic.short=AT -America/St_Vincent.standard.short=AST -America/Swift_Current.daylight.short=CDT -America/Swift_Current.generic.short=CT -America/Swift_Current.standard.short=CST -America/Tegucigalpa.daylight.short=CDT -America/Tegucigalpa.generic.short=CT -America/Tegucigalpa.standard.short=CST -America/Thule.daylight.short=ADT -America/Thule.generic.short=AT -America/Thule.standard.short=AST -America/Thunder_Bay.daylight.short=EDT -America/Thunder_Bay.generic.short=ET -America/Thunder_Bay.standard.short=EST -America/Tijuana.daylight.short=PDT -America/Tijuana.generic.short=PT -America/Tijuana.standard.short=PST -America/Toronto.daylight.short=EDT -America/Toronto.generic.short=ET -America/Toronto.standard.short=EST -America/Tortola.daylight.short=ADT -America/Tortola.generic.short=AT -America/Tortola.standard.short=AST -America/Vancouver.daylight.short=PDT -America/Vancouver.generic.short=PT -America/Vancouver.standard.short=PST -America/Virgin.daylight.short=ADT -America/Virgin.generic.short=AT -America/Virgin.standard.short=AST -America/Whitehorse.daylight.short=PDT -America/Whitehorse.generic.short=PT -America/Whitehorse.standard.short=PST -America/Winnipeg.daylight.short=CDT -America/Winnipeg.generic.short=CT -America/Winnipeg.standard.short=CST -America/Yakutat.daylight.short=AKDT -America/Yakutat.generic.short=AKT -America/Yakutat.standard.short=AKST -America/Yellowknife.daylight.short=MDT -America/Yellowknife.generic.short=MT -America/Yellowknife.standard.short=MST -Antarctica/Casey.daylight.short=WST -Antarctica/Casey.generic.short=WT -Antarctica/Casey.standard.short=WST -Antarctica/Davis.daylight.short=DAVST -Antarctica/Davis.generic.short=DAVT -Antarctica/Davis.standard.short=DAVT -Antarctica/DumontDUrville.daylight.short=DDUST -Antarctica/DumontDUrville.generic.short=DDUT -Antarctica/DumontDUrville.standard.short=DDUT -Antarctica/Macquarie.daylight.short=MIST -Antarctica/Macquarie.generic.short=MIST -Antarctica/Macquarie.standard.short=MIST -Antarctica/Mawson.daylight.short=MAWST -Antarctica/Mawson.generic.short=MAWT -Antarctica/Mawson.standard.short=MAWT -Antarctica/McMurdo.daylight.short=NZDT -Antarctica/McMurdo.generic.short=NZT -Antarctica/McMurdo.standard.short=NZST -Antarctica/Palmer.daylight.short=CLST -Antarctica/Palmer.generic.short=CLT -Antarctica/Palmer.standard.short=CLT -Antarctica/Rothera.daylight.short=ROTST -Antarctica/Rothera.generic.short=ROTT -Antarctica/Rothera.standard.short=ROTT -Antarctica/South_Pole.daylight.short=NZDT -Antarctica/South_Pole.generic.short=NZT -Antarctica/South_Pole.standard.short=NZST -Antarctica/Syowa.daylight.short=SYOST -Antarctica/Syowa.generic.short=SYOT -Antarctica/Syowa.standard.short=SYOT -Antarctica/Vostok.daylight.short=VOSST -Antarctica/Vostok.generic.short=VOST -Antarctica/Vostok.standard.short=VOST -Arctic/Longyearbyen.daylight.short=CEST -Arctic/Longyearbyen.generic.short=CET -Arctic/Longyearbyen.standard.short=CET -ART.daylight.short=EEST -ART.generic.short=EET -ART.standard.short=EET -Asia/Aden.daylight.short=ADT -Asia/Aden.generic.short=AT -Asia/Aden.standard.short=AST -Asia/Almaty.daylight.short=ALMST -Asia/Almaty.generic.short=ALMT -Asia/Almaty.standard.short=ALMT -Asia/Amman.daylight.short=ADT -Asia/Amman.generic.short=AT -Asia/Amman.standard.short=AST -Asia/Anadyr.daylight.short=ANAST -Asia/Anadyr.generic.short=ANAT -Asia/Anadyr.standard.short=ANAT -Asia/Aqtau.daylight.short=AQTST -Asia/Aqtau.generic.short=AQTT -Asia/Aqtau.standard.short=AQTT -Asia/Aqtobe.daylight.short=AQTST -Asia/Aqtobe.generic.short=AQTT -Asia/Aqtobe.standard.short=AQTT -Asia/Ashgabat.daylight.short=TMST -Asia/Ashgabat.generic.short=TMT -Asia/Ashgabat.standard.short=TMT -Asia/Ashkhabad.daylight.short=TMST -Asia/Ashkhabad.generic.short=TMT -Asia/Ashkhabad.standard.short=TMT -Asia/Baghdad.daylight.short=ADT -Asia/Baghdad.generic.short=AT -Asia/Baghdad.standard.short=AST -Asia/Bahrain.daylight.short=ADT -Asia/Bahrain.generic.short=AT -Asia/Bahrain.standard.short=AST -Asia/Baku.daylight.short=AZST -Asia/Baku.generic.short=AZT -Asia/Baku.standard.short=AZT -Asia/Bangkok.daylight.short=ICST -Asia/Bangkok.generic.short=ICT -Asia/Bangkok.standard.short=ICT -Asia/Beirut.daylight.short=EEST -Asia/Beirut.generic.short=EET -Asia/Beirut.standard.short=EET -Asia/Bishkek.daylight.short=KGST -Asia/Bishkek.generic.short=KGT -Asia/Bishkek.standard.short=KGT -Asia/Brunei.daylight.short=BNST -Asia/Brunei.generic.short=BNT -Asia/Brunei.standard.short=BNT -Asia/Calcutta.daylight.short=IDT -Asia/Calcutta.generic.short=IT -Asia/Calcutta.standard.short=IST -Asia/Choibalsan.daylight.short=CHOST -Asia/Choibalsan.generic.short=CHOT -Asia/Choibalsan.standard.short=CHOT -Asia/Chongqing.daylight.short=CDT -Asia/Chongqing.generic.short=CT -Asia/Chongqing.standard.short=CST -Asia/Chungking.daylight.short=CDT -Asia/Chungking.generic.short=CT -Asia/Chungking.standard.short=CST -Asia/Colombo.daylight.short=IDT -Asia/Colombo.generic.short=IT -Asia/Colombo.standard.short=IST -Asia/Dacca.daylight.short=BDST -Asia/Dacca.generic.short=BDT -Asia/Dacca.standard.short=BDT -Asia/Damascus.daylight.short=EEST -Asia/Damascus.generic.short=EET -Asia/Damascus.standard.short=EET -Asia/Dhaka.daylight.short=BDST -Asia/Dhaka.generic.short=BDT -Asia/Dhaka.standard.short=BDT -Asia/Dili.daylight.short=TLST -Asia/Dili.generic.short=TLT -Asia/Dili.standard.short=TLT -Asia/Dubai.daylight.short=GDT -Asia/Dubai.generic.short=GT -Asia/Dubai.standard.short=GST -Asia/Dushanbe.daylight.short=TJST -Asia/Dushanbe.generic.short=TJT -Asia/Dushanbe.standard.short=TJT -Asia/Gaza.daylight.short=EEST -Asia/Gaza.generic.short=EET -Asia/Gaza.standard.short=EET -Asia/Harbin.daylight.short=CDT -Asia/Harbin.generic.short=CT -Asia/Harbin.standard.short=CST -Asia/Hebron.daylight.short=EEST -Asia/Hebron.generic.short=EET -Asia/Hebron.standard.short=EET -Asia/Ho_Chi_Minh.daylight.short=ICST -Asia/Ho_Chi_Minh.generic.short=ICT -Asia/Ho_Chi_Minh.standard.short=ICT -Asia/Hong_Kong.daylight.short=HKST -Asia/Hong_Kong.generic.short=HKT -Asia/Hong_Kong.standard.short=HKT -Asia/Hovd.daylight.short=HOVST -Asia/Hovd.generic.short=HOVT -Asia/Hovd.standard.short=HOVT -Asia/Irkutsk.daylight.short=IRKST -Asia/Irkutsk.generic.short=IRKT -Asia/Irkutsk.standard.short=IRKT -Asia/Istanbul.daylight.short=EEST -Asia/Istanbul.generic.short=EET -Asia/Istanbul.standard.short=EET -Asia/Jakarta.daylight.short=WIST -Asia/Jakarta.generic.short=WIB -Asia/Jakarta.standard.short=WIB -Asia/Jayapura.daylight.short=EIST -Asia/Jayapura.generic.short=WIT -Asia/Jayapura.standard.short=WIT -Asia/Jerusalem.daylight.short=IDT -Asia/Jerusalem.generic.short=IT -Asia/Jerusalem.standard.short=IST -Asia/Kabul.daylight.short=AFST -Asia/Kabul.generic.short=AFT -Asia/Kabul.standard.short=AFT -Asia/Kamchatka.daylight.short=PETST -Asia/Kamchatka.generic.short=PETT -Asia/Kamchatka.standard.short=PETT -Asia/Karachi.daylight.short=PKST -Asia/Karachi.generic.short=PKT -Asia/Karachi.standard.short=PKT -Asia/Kashgar.daylight.short=CDT -Asia/Kashgar.generic.short=CT -Asia/Kashgar.standard.short=CST -Asia/Kathmandu.daylight.short=NPST -Asia/Kathmandu.generic.short=NPT -Asia/Kathmandu.standard.short=NPT -Asia/Katmandu.daylight.short=NPST -Asia/Katmandu.generic.short=NPT -Asia/Katmandu.standard.short=NPT -Asia/Khandyga.daylight.short=YAKST -Asia/Khandyga.generic.short=YAKT -Asia/Khandyga.standard.short=YAKT -Asia/Kolkata.daylight.short=IDT -Asia/Kolkata.generic.short=IT -Asia/Kolkata.standard.short=IST -Asia/Krasnoyarsk.daylight.short=KRAST -Asia/Krasnoyarsk.generic.short=KRAT -Asia/Krasnoyarsk.standard.short=KRAT -Asia/Kuala_Lumpur.daylight.short=MYST -Asia/Kuala_Lumpur.generic.short=MYT -Asia/Kuala_Lumpur.standard.short=MYT -Asia/Kuching.daylight.short=MYST -Asia/Kuching.generic.short=MYT -Asia/Kuching.standard.short=MYT -Asia/Kuwait.daylight.short=ADT -Asia/Kuwait.generic.short=AT -Asia/Kuwait.standard.short=AST -Asia/Macao.daylight.short=CDT -Asia/Macao.generic.short=CT -Asia/Macao.standard.short=CST -Asia/Macau.daylight.short=CDT -Asia/Macau.generic.short=CT -Asia/Macau.standard.short=CST -Asia/Magadan.daylight.short=MAGST -Asia/Magadan.generic.short=MAGT -Asia/Magadan.standard.short=MAGT -Asia/Makassar.daylight.short=CIST -Asia/Makassar.generic.short=WITA -Asia/Makassar.standard.short=WITA -Asia/Manila.daylight.short=PHST -Asia/Manila.generic.short=PHT -Asia/Manila.standard.short=PHT -Asia/Muscat.daylight.short=GDT -Asia/Muscat.generic.short=GT -Asia/Muscat.standard.short=GST -Asia/Nicosia.daylight.short=EEST -Asia/Nicosia.generic.short=EET -Asia/Nicosia.standard.short=EET -Asia/Novokuznetsk.daylight.short=NOVST -Asia/Novokuznetsk.generic.short=NOVT -Asia/Novokuznetsk.standard.short=NOVT -Asia/Novosibirsk.daylight.short=NOVST -Asia/Novosibirsk.generic.short=NOVT -Asia/Novosibirsk.standard.short=NOVT -Asia/Omsk.daylight.short=OMSST -Asia/Omsk.generic.short=OMST -Asia/Omsk.standard.short=OMST -Asia/Oral.daylight.short=ORAST -Asia/Oral.generic.short=ORAT -Asia/Oral.standard.short=ORAT -Asia/Phnom_Penh.daylight.short=ICST -Asia/Phnom_Penh.generic.short=ICT -Asia/Phnom_Penh.standard.short=ICT -Asia/Pontianak.daylight.short=WIST -Asia/Pontianak.generic.short=WIB -Asia/Pontianak.standard.short=WIB -Asia/Pyongyang.daylight.short=KDT -Asia/Pyongyang.generic.short=KT -Asia/Pyongyang.standard.short=KST -Asia/Qatar.daylight.short=ADT -Asia/Qatar.generic.short=AT -Asia/Qatar.standard.short=AST -Asia/Qyzylorda.daylight.short=QYZST -Asia/Qyzylorda.generic.short=QYZT -Asia/Qyzylorda.standard.short=QYZT -Asia/Rangoon.daylight.short=MMST -Asia/Rangoon.generic.short=MMT -Asia/Rangoon.standard.short=MMT -Asia/Saigon.daylight.short=ICST -Asia/Saigon.generic.short=ICT -Asia/Saigon.standard.short=ICT -Asia/Sakhalin.daylight.short=SAKST -Asia/Sakhalin.generic.short=SAKT -Asia/Sakhalin.standard.short=SAKT -Asia/Samarkand.daylight.short=UZST -Asia/Samarkand.generic.short=UZT -Asia/Samarkand.standard.short=UZT -Asia/Seoul.daylight.short=KDT -Asia/Seoul.generic.short=KT -Asia/Seoul.standard.short=KST -Asia/Shanghai.daylight.short=CDT -Asia/Shanghai.generic.short=CT -Asia/Shanghai.standard.short=CST -Asia/Singapore.daylight.short=SGST -Asia/Singapore.generic.short=SGT -Asia/Singapore.standard.short=SGT -Asia/Taipei.daylight.short=CDT -Asia/Taipei.generic.short=CT -Asia/Taipei.standard.short=CST -Asia/Tashkent.daylight.short=UZST -Asia/Tashkent.generic.short=UZT -Asia/Tashkent.standard.short=UZT -Asia/Tbilisi.daylight.short=GEST -Asia/Tbilisi.generic.short=GET -Asia/Tbilisi.standard.short=GET -Asia/Tehran.daylight.short=IRDT -Asia/Tehran.generic.short=IRT -Asia/Tehran.standard.short=IRST -Asia/Tel_Aviv.daylight.short=IDT -Asia/Tel_Aviv.generic.short=IT -Asia/Tel_Aviv.standard.short=IST -Asia/Thimbu.daylight.short=BTST -Asia/Thimbu.generic.short=BTT -Asia/Thimbu.standard.short=BTT -Asia/Thimphu.daylight.short=BTST -Asia/Thimphu.generic.short=BTT -Asia/Thimphu.standard.short=BTT -Asia/Tokyo.daylight.short=JDT -Asia/Tokyo.generic.short=JT -Asia/Tokyo.standard.short=JST -Asia/Ujung_Pandang.daylight.short=CIST -Asia/Ujung_Pandang.generic.short=WITA -Asia/Ujung_Pandang.standard.short=WITA -Asia/Ulaanbaatar.daylight.short=ULAST -Asia/Ulaanbaatar.generic.short=ULAT -Asia/Ulaanbaatar.standard.short=ULAT -Asia/Ulan_Bator.daylight.short=ULAST -Asia/Ulan_Bator.generic.short=ULAT -Asia/Ulan_Bator.standard.short=ULAT -Asia/Urumqi.daylight.short=CDT -Asia/Urumqi.generic.short=CT -Asia/Urumqi.standard.short=CST -Asia/Ust-Nera.daylight.short=VLAST -Asia/Ust-Nera.generic.short=VLAT -Asia/Ust-Nera.standard.short=VLAT -Asia/Vientiane.daylight.short=ICST -Asia/Vientiane.generic.short=ICT -Asia/Vientiane.standard.short=ICT -Asia/Vladivostok.daylight.short=VLAST -Asia/Vladivostok.generic.short=VLAT -Asia/Vladivostok.standard.short=VLAT -Asia/Yakutsk.daylight.short=YAKST -Asia/Yakutsk.generic.short=YAKT -Asia/Yakutsk.standard.short=YAKT -Asia/Yekaterinburg.daylight.short=YEKST -Asia/Yekaterinburg.generic.short=YEKT -Asia/Yekaterinburg.standard.short=YEKT -Asia/Yerevan.daylight.short=AMST -Asia/Yerevan.generic.short=AMT -Asia/Yerevan.standard.short=AMT -AST.daylight.short=AKDT -AST.generic.short=AKT -AST.standard.short=AKST -Atlantic/Azores.daylight.short=AZOST -Atlantic/Azores.generic.short=AZOT -Atlantic/Azores.standard.short=AZOT -Atlantic/Bermuda.daylight.short=ADT -Atlantic/Bermuda.generic.short=AT -Atlantic/Bermuda.standard.short=AST -Atlantic/Canary.daylight.short=WEST -Atlantic/Canary.generic.short=WET -Atlantic/Canary.standard.short=WET -Atlantic/Cape_Verde.daylight.short=CVST -Atlantic/Cape_Verde.generic.short=CVT -Atlantic/Cape_Verde.standard.short=CVT -Atlantic/Faeroe.daylight.short=WEST -Atlantic/Faeroe.generic.short=WET -Atlantic/Faeroe.standard.short=WET -Atlantic/Faroe.daylight.short=WEST -Atlantic/Faroe.generic.short=WET -Atlantic/Faroe.standard.short=WET -Atlantic/Jan_Mayen.daylight.short=CEST -Atlantic/Jan_Mayen.generic.short=CET -Atlantic/Jan_Mayen.standard.short=CET -Atlantic/Madeira.daylight.short=WEST -Atlantic/Madeira.generic.short=WET -Atlantic/Madeira.standard.short=WET -Atlantic/Reykjavik.daylight.short=GMT -Atlantic/Reykjavik.generic.short=GMT -Atlantic/Reykjavik.standard.short=GMT -Atlantic/South_Georgia.daylight.short=GDT -Atlantic/South_Georgia.generic.short=GT -Atlantic/South_Georgia.standard.short=GST -Atlantic/Stanley.daylight.short=FKST -Atlantic/Stanley.generic.short=FKT -Atlantic/Stanley.standard.short=FKT -Atlantic/St_Helena.daylight.short=GMT -Atlantic/St_Helena.generic.short=GMT -Atlantic/St_Helena.standard.short=GMT -Australia/ACT.daylight.short=EST -Australia/ACT.generic.short=ET -Australia/ACT.standard.short=EST -Australia/Adelaide.daylight.short=CST -Australia/Adelaide.generic.short=CT -Australia/Adelaide.standard.short=CST -Australia/Brisbane.daylight.short=EST -Australia/Brisbane.generic.short=ET -Australia/Brisbane.standard.short=EST -Australia/Broken_Hill.daylight.short=CST -Australia/Broken_Hill.generic.short=CT -Australia/Broken_Hill.standard.short=CST -Australia/Canberra.daylight.short=EST -Australia/Canberra.generic.short=ET -Australia/Canberra.standard.short=EST -Australia/Currie.daylight.short=EST -Australia/Currie.generic.short=ET -Australia/Currie.standard.short=EST -Australia/Darwin.daylight.short=CST -Australia/Darwin.generic.short=CT -Australia/Darwin.standard.short=CST -Australia/Eucla.daylight.short=CWST -Australia/Eucla.generic.short=CWT -Australia/Eucla.standard.short=CWST -Australia/Hobart.daylight.short=EST -Australia/Hobart.generic.short=ET -Australia/Hobart.standard.short=EST -Australia/LHI.daylight.short=LHST -Australia/LHI.generic.short=LHT -Australia/LHI.standard.short=LHST -Australia/Lindeman.daylight.short=EST -Australia/Lindeman.generic.short=ET -Australia/Lindeman.standard.short=EST -Australia/Lord_Howe.daylight.short=LHST -Australia/Lord_Howe.generic.short=LHT -Australia/Lord_Howe.standard.short=LHST -Australia/Melbourne.daylight.short=EST -Australia/Melbourne.generic.short=ET -Australia/Melbourne.standard.short=EST -Australia/North.daylight.short=CST -Australia/North.generic.short=CT -Australia/North.standard.short=CST -Australia/NSW.daylight.short=EST -Australia/NSW.generic.short=ET -Australia/NSW.standard.short=EST -Australia/Perth.daylight.short=WST -Australia/Perth.generic.short=WT -Australia/Perth.standard.short=WST -Australia/Queensland.daylight.short=EST -Australia/Queensland.generic.short=ET -Australia/Queensland.standard.short=EST -Australia/South.daylight.short=CST -Australia/South.generic.short=CT -Australia/South.standard.short=CST -Australia/Sydney.daylight.short=EST -Australia/Sydney.generic.short=ET -Australia/Sydney.standard.short=EST -Australia/Tasmania.daylight.short=EST -Australia/Tasmania.generic.short=ET -Australia/Tasmania.standard.short=EST -Australia/Victoria.daylight.short=EST -Australia/Victoria.generic.short=ET -Australia/Victoria.standard.short=EST -Australia/West.daylight.short=WST -Australia/West.generic.short=WT -Australia/West.standard.short=WST -Australia/Yancowinna.daylight.short=CST -Australia/Yancowinna.generic.short=CT -Australia/Yancowinna.standard.short=CST -BET.daylight.short=BRST -BET.generic.short=BRT -BET.standard.short=BRT -Brazil/Acre.daylight.short=ACST -Brazil/Acre.generic.short=ACT -Brazil/Acre.standard.short=ACT -Brazil/DeNoronha.daylight.short=FNST -Brazil/DeNoronha.generic.short=FNT -Brazil/DeNoronha.standard.short=FNT -Brazil/East.daylight.short=BRST -Brazil/East.generic.short=BRT -Brazil/East.standard.short=BRT -Brazil/West.daylight.short=AMST -Brazil/West.generic.short=AMT -Brazil/West.standard.short=AMT -BST.daylight.short=BDST -BST.generic.short=BDT -BST.standard.short=BDT -Canada/Atlantic.daylight.short=ADT -Canada/Atlantic.generic.short=AT -Canada/Atlantic.standard.short=AST -Canada/Central.daylight.short=CDT -Canada/Central.generic.short=CT -Canada/Central.standard.short=CST -Canada/Eastern.daylight.short=EDT -Canada/Eastern.generic.short=ET -Canada/Eastern.standard.short=EST -Canada/East-Saskatchewan.daylight.short=CDT -Canada/East-Saskatchewan.generic.short=CT -Canada/East-Saskatchewan.standard.short=CST -Canada/Mountain.daylight.short=MDT -Canada/Mountain.generic.short=MT -Canada/Mountain.standard.short=MST -Canada/Newfoundland.daylight.short=NDT -Canada/Newfoundland.generic.short=NT -Canada/Newfoundland.standard.short=NST -Canada/Pacific.daylight.short=PDT -Canada/Pacific.generic.short=PT -Canada/Pacific.standard.short=PST -Canada/Saskatchewan.daylight.short=CDT -Canada/Saskatchewan.generic.short=CT -Canada/Saskatchewan.standard.short=CST -Canada/Yukon.daylight.short=PDT -Canada/Yukon.generic.short=PT -Canada/Yukon.standard.short=PST -CAT.daylight.short=CAST -CAT.generic.short=CAT -CAT.standard.short=CAT -CET.daylight.short=CEST -CET.generic.short=CET -CET.standard.short=CET -Chile/Continental.daylight.short=CLST -Chile/Continental.generic.short=CLT -Chile/Continental.standard.short=CLT -Chile/EasterIsland.daylight.short=EASST -Chile/EasterIsland.generic.short=EAST -Chile/EasterIsland.standard.short=EAST -CNT.daylight.short=NDT -CNT.generic.short=NT -CNT.standard.short=NST -CST6CDT.daylight.short=CDT -CST6CDT.generic.short=CT -CST6CDT.standard.short=CST -CST.daylight.short=CDT -CST.generic.short=CT -CST.standard.short=CST -CTT.daylight.short=CDT -CTT.generic.short=CT -CTT.standard.short=CST -Cuba.daylight.short=CDT -Cuba.generic.short=CT -Cuba.standard.short=CST -EAT.daylight.short=EAST -EAT.generic.short=EAT -EAT.standard.short=EAT -ECT.daylight.short=CEST -ECT.generic.short=CET -ECT.standard.short=CET -EET.daylight.short=EEST -EET.generic.short=EET -EET.standard.short=EET -Egypt.daylight.short=EEST -Egypt.generic.short=EET -Egypt.standard.short=EET -Eire.daylight.short=IST -Eire.generic.short=IT -Eire.standard.short=GMT -EST5EDT.daylight.short=EDT -EST5EDT.generic.short=ET -EST5EDT.standard.short=EST -EST.daylight.short=EDT -EST.generic.short=ET -EST.standard.short=EST -Etc/Greenwich.daylight.short=GMT -Etc/Greenwich.generic.short=GMT -Etc/Greenwich.standard.short=GMT -Etc/UCT.daylight.short=UTC -Etc/UCT.generic.short=UTC -Etc/UCT.standard.short=UTC -Etc/Universal.daylight.short=UTC -Etc/Universal.generic.short=UTC -Etc/Universal.standard.short=UTC -Etc/UTC.daylight.short=UTC -Etc/UTC.generic.short=UTC -Etc/UTC.standard.short=UTC -Etc/Zulu.daylight.short=UTC -Etc/Zulu.generic.short=UTC -Etc/Zulu.standard.short=UTC -Europe/Amsterdam.daylight.short=CEST -Europe/Amsterdam.generic.short=CET -Europe/Amsterdam.standard.short=CET -Europe/Andorra.daylight.short=CEST -Europe/Andorra.generic.short=CET -Europe/Andorra.standard.short=CET -Europe/Athens.daylight.short=EEST -Europe/Athens.generic.short=EET -Europe/Athens.standard.short=EET -Europe/Belfast.daylight.short=BST -Europe/Belfast.generic.short=BT -Europe/Belfast.standard.short=GMT -Europe/Belgrade.daylight.short=CEST -Europe/Belgrade.generic.short=CET -Europe/Belgrade.standard.short=CET -Europe/Berlin.daylight.short=CEST -Europe/Berlin.generic.short=CET -Europe/Berlin.standard.short=CET -Europe/Bratislava.daylight.short=CEST -Europe/Bratislava.generic.short=CET -Europe/Bratislava.standard.short=CET -Europe/Brussels.daylight.short=CEST -Europe/Brussels.generic.short=CET -Europe/Brussels.standard.short=CET -Europe/Bucharest.daylight.short=EEST -Europe/Bucharest.generic.short=EET -Europe/Bucharest.standard.short=EET -Europe/Budapest.daylight.short=CEST -Europe/Budapest.generic.short=CET -Europe/Budapest.standard.short=CET -Europe/Busingen.daylight.short=CEST -Europe/Busingen.generic.short=CET -Europe/Busingen.standard.short=CET -Europe/Chisinau.daylight.short=EEST -Europe/Chisinau.generic.short=EET -Europe/Chisinau.standard.short=EET -Europe/Copenhagen.daylight.short=CEST -Europe/Copenhagen.generic.short=CET -Europe/Copenhagen.standard.short=CET -Europe/Dublin.daylight.short=IST -Europe/Dublin.generic.short=IT -Europe/Dublin.standard.short=GMT -Europe/Gibraltar.daylight.short=CEST -Europe/Gibraltar.generic.short=CET -Europe/Gibraltar.standard.short=CET -Europe/Guernsey.daylight.short=BST -Europe/Guernsey.generic.short=BT -Europe/Guernsey.standard.short=GMT -Europe/Helsinki.daylight.short=EEST -Europe/Helsinki.generic.short=EET -Europe/Helsinki.standard.short=EET -Europe/Isle_of_Man.daylight.short=BST -Europe/Isle_of_Man.generic.short=BT -Europe/Isle_of_Man.standard.short=GMT -Europe/Istanbul.daylight.short=EEST -Europe/Istanbul.generic.short=EET -Europe/Istanbul.standard.short=EET -Europe/Jersey.daylight.short=BST -Europe/Jersey.generic.short=BT -Europe/Jersey.standard.short=GMT -Europe/Kaliningrad.daylight.short=FEST -Europe/Kaliningrad.generic.short=FET -Europe/Kaliningrad.standard.short=FET -Europe/Kiev.daylight.short=EEST -Europe/Kiev.generic.short=EET -Europe/Kiev.standard.short=EET -Europe/Lisbon.daylight.short=WEST -Europe/Lisbon.generic.short=WET -Europe/Lisbon.standard.short=WET -Europe/Ljubljana.daylight.short=CEST -Europe/Ljubljana.generic.short=CET -Europe/Ljubljana.standard.short=CET -Europe/London.daylight.short=BST -Europe/London.generic.short=BT -Europe/London.standard.short=GMT -Europe/Luxembourg.daylight.short=CEST -Europe/Luxembourg.generic.short=CET -Europe/Luxembourg.standard.short=CET -Europe/Madrid.daylight.short=CEST -Europe/Madrid.generic.short=CET -Europe/Madrid.standard.short=CET -Europe/Malta.daylight.short=CEST -Europe/Malta.generic.short=CET -Europe/Malta.standard.short=CET -Europe/Mariehamn.daylight.short=EEST -Europe/Mariehamn.generic.short=EET -Europe/Mariehamn.standard.short=EET -Europe/Minsk.daylight.short=FEST -Europe/Minsk.generic.short=FET -Europe/Minsk.standard.short=FET -Europe/Monaco.daylight.short=CEST -Europe/Monaco.generic.short=CET -Europe/Monaco.standard.short=CET -Europe/Moscow.daylight.short=MSD -Europe/Moscow.generic.short=MT -Europe/Moscow.standard.short=MSK -Europe/Nicosia.daylight.short=EEST -Europe/Nicosia.generic.short=EET -Europe/Nicosia.standard.short=EET -Europe/Oslo.daylight.short=CEST -Europe/Oslo.generic.short=CET -Europe/Oslo.standard.short=CET -Europe/Paris.daylight.short=CEST -Europe/Paris.generic.short=CET -Europe/Paris.standard.short=CET -Europe/Podgorica.daylight.short=CEST -Europe/Podgorica.generic.short=CET -Europe/Podgorica.standard.short=CET -Europe/Prague.daylight.short=CEST -Europe/Prague.generic.short=CET -Europe/Prague.standard.short=CET -Europe/Riga.daylight.short=EEST -Europe/Riga.generic.short=EET -Europe/Riga.standard.short=EET -Europe/Rome.daylight.short=CEST -Europe/Rome.generic.short=CET -Europe/Rome.standard.short=CET -Europe/Samara.daylight.short=SAMST -Europe/Samara.generic.short=SAMT -Europe/Samara.standard.short=SAMT -Europe/San_Marino.daylight.short=CEST -Europe/San_Marino.generic.short=CET -Europe/San_Marino.standard.short=CET -Europe/Sarajevo.daylight.short=CEST -Europe/Sarajevo.generic.short=CET -Europe/Sarajevo.standard.short=CET -Europe/Simferopol.daylight.short=EEST -Europe/Simferopol.generic.short=EET -Europe/Simferopol.standard.short=EET -Europe/Skopje.daylight.short=CEST -Europe/Skopje.generic.short=CET -Europe/Skopje.standard.short=CET -Europe/Sofia.daylight.short=EEST -Europe/Sofia.generic.short=EET -Europe/Sofia.standard.short=EET -Europe/Stockholm.daylight.short=CEST -Europe/Stockholm.generic.short=CET -Europe/Stockholm.standard.short=CET -Europe/Tallinn.daylight.short=EEST -Europe/Tallinn.generic.short=EET -Europe/Tallinn.standard.short=EET -Europe/Tirane.daylight.short=CEST -Europe/Tirane.generic.short=CET -Europe/Tirane.standard.short=CET -Europe/Tiraspol.daylight.short=EEST -Europe/Tiraspol.generic.short=EET -Europe/Tiraspol.standard.short=EET -Europe/Uzhgorod.daylight.short=EEST -Europe/Uzhgorod.generic.short=EET -Europe/Uzhgorod.standard.short=EET -Europe/Vaduz.daylight.short=CEST -Europe/Vaduz.generic.short=CET -Europe/Vaduz.standard.short=CET -Europe/Vatican.daylight.short=CEST -Europe/Vatican.generic.short=CET -Europe/Vatican.standard.short=CET -Europe/Vienna.daylight.short=CEST -Europe/Vienna.generic.short=CET -Europe/Vienna.standard.short=CET -Europe/Vilnius.daylight.short=EEST -Europe/Vilnius.generic.short=EET -Europe/Vilnius.standard.short=EET -Europe/Volgograd.daylight.short=VOLST -Europe/Volgograd.generic.short=VOLT -Europe/Volgograd.standard.short=VOLT -Europe/Warsaw.daylight.short=CEST -Europe/Warsaw.generic.short=CET -Europe/Warsaw.standard.short=CET -Europe/Zagreb.daylight.short=CEST -Europe/Zagreb.generic.short=CET -Europe/Zagreb.standard.short=CET -Europe/Zaporozhye.daylight.short=EEST -Europe/Zaporozhye.generic.short=EET -Europe/Zaporozhye.standard.short=EET -Europe/Zurich.daylight.short=CEST -Europe/Zurich.generic.short=CET -Europe/Zurich.standard.short=CET -GB.daylight.short=BST -GB-Eire.daylight.short=BST -GB-Eire.generic.short=BT -GB-Eire.standard.short=GMT -GB.generic.short=BT -GB.standard.short=GMT -GMT.daylight.short=GMT -GMT.generic.short=GMT -GMT.standard.short=GMT -Greenwich.daylight.short=GMT -Greenwich.generic.short=GMT -Greenwich.standard.short=GMT -Hongkong.daylight.short=HKST -Hongkong.generic.short=HKT -Hongkong.standard.short=HKT -HST.daylight.short=HDT -HST.generic.short=HT -HST.standard.short=HST -Iceland.daylight.short=GMT -Iceland.generic.short=GMT -Iceland.standard.short=GMT -IET.daylight.short=EDT -IET.generic.short=ET -IET.standard.short=EST -Indian/Antananarivo.daylight.short=EAST -Indian/Antananarivo.generic.short=EAT -Indian/Antananarivo.standard.short=EAT -Indian/Chagos.daylight.short=IOST -Indian/Chagos.generic.short=IOT -Indian/Chagos.standard.short=IOT -Indian/Christmas.daylight.short=CXST -Indian/Christmas.generic.short=CIT -Indian/Christmas.standard.short=CXT -Indian/Cocos.daylight.short=CCST -Indian/Cocos.generic.short=CCT -Indian/Cocos.standard.short=CCT -Indian/Comoro.daylight.short=EAST -Indian/Comoro.generic.short=EAT -Indian/Comoro.standard.short=EAT -Indian/Kerguelen.daylight.short=TFST -Indian/Kerguelen.generic.short=TFT -Indian/Kerguelen.standard.short=TFT -Indian/Mahe.daylight.short=SCST -Indian/Mahe.generic.short=SCT -Indian/Mahe.standard.short=SCT -Indian/Maldives.daylight.short=MVST -Indian/Maldives.generic.short=MVT -Indian/Maldives.standard.short=MVT -Indian/Mauritius.daylight.short=MUST -Indian/Mauritius.generic.short=MUT -Indian/Mauritius.standard.short=MUT -Indian/Mayotte.daylight.short=EAST -Indian/Mayotte.generic.short=EAT -Indian/Mayotte.standard.short=EAT -Indian/Reunion.daylight.short=REST -Indian/Reunion.generic.short=RET -Indian/Reunion.standard.short=RET -Iran.daylight.short=IRDT -Iran.generic.short=IRT -Iran.standard.short=IRST -Israel.daylight.short=IDT -Israel.generic.short=IT -Israel.standard.short=IST -IST.daylight.short=IDT -IST.generic.short=IT -IST.standard.short=IST -Jamaica.daylight.short=EDT -Jamaica.generic.short=ET -Jamaica.standard.short=EST -Japan.daylight.short=JDT -Japan.generic.short=JT -Japan.standard.short=JST -JST.daylight.short=JDT -JST.generic.short=JT -JST.standard.short=JST -Kwajalein.daylight.short=MHST -Kwajalein.generic.short=MHT -Kwajalein.standard.short=MHT -Libya.daylight.short=EEST -Libya.generic.short=EET -Libya.standard.short=EET -MET.daylight.short=MEST -MET.generic.short=MET -MET.standard.short=MET -Mexico/BajaNorte.daylight.short=PDT -Mexico/BajaNorte.generic.short=PT -Mexico/BajaNorte.standard.short=PST -Mexico/BajaSur.daylight.short=MDT -Mexico/BajaSur.generic.short=MT -Mexico/BajaSur.standard.short=MST -Mexico/General.daylight.short=CDT -Mexico/General.generic.short=CT -Mexico/General.standard.short=CST -MIT.daylight.short=WSDT -MIT.generic.short=WST -MIT.standard.short=WST -MST7MDT.daylight.short=MDT -MST7MDT.generic.short=MT -MST7MDT.standard.short=MST -MST.daylight.short=MDT -MST.generic.short=MT -MST.standard.short=MST -Navajo.daylight.short=MDT -Navajo.generic.short=MT -Navajo.standard.short=MST -NET.daylight.short=AMST -NET.generic.short=AMT -NET.standard.short=AMT -NST.daylight.short=NZDT -NST.generic.short=NZT -NST.standard.short=NZST -NZ-CHAT.daylight.short=CHADT -NZ-CHAT.generic.short=CHAT -NZ-CHAT.standard.short=CHAST -NZ.daylight.short=NZDT -NZ.generic.short=NZT -NZ.standard.short=NZST -Pacific/Apia.daylight.short=WSDT -Pacific/Apia.generic.short=WST -Pacific/Apia.standard.short=WST -Pacific/Auckland.daylight.short=NZDT -Pacific/Auckland.generic.short=NZT -Pacific/Auckland.standard.short=NZST -Pacific/Chatham.daylight.short=CHADT -Pacific/Chatham.generic.short=CHAT -Pacific/Chatham.standard.short=CHAST -Pacific/Chuuk.daylight.short=CHUST -Pacific/Chuuk.generic.short=CHUT -Pacific/Chuuk.standard.short=CHUT -Pacific/Easter.daylight.short=EASST -Pacific/Easter.generic.short=EAST -Pacific/Easter.standard.short=EAST -Pacific/Efate.daylight.short=VUST -Pacific/Efate.generic.short=VUT -Pacific/Efate.standard.short=VUT -Pacific/Enderbury.daylight.short=PHOST -Pacific/Enderbury.generic.short=PHOT -Pacific/Enderbury.standard.short=PHOT -Pacific/Fakaofo.daylight.short=TKST -Pacific/Fakaofo.generic.short=TKT -Pacific/Fakaofo.standard.short=TKT -Pacific/Fiji.daylight.short=FJST -Pacific/Fiji.generic.short=FJT -Pacific/Fiji.standard.short=FJT -Pacific/Funafuti.daylight.short=TVST -Pacific/Funafuti.generic.short=TVT -Pacific/Funafuti.standard.short=TVT -Pacific/Galapagos.daylight.short=GALST -Pacific/Galapagos.generic.short=GALT -Pacific/Galapagos.standard.short=GALT -Pacific/Gambier.daylight.short=GAMST -Pacific/Gambier.generic.short=GAMT -Pacific/Gambier.standard.short=GAMT -Pacific/Guadalcanal.daylight.short=SBST -Pacific/Guadalcanal.generic.short=SBT -Pacific/Guadalcanal.standard.short=SBT -Pacific/Guam.daylight.short=ChDT -Pacific/Guam.generic.short=ChT -Pacific/Guam.standard.short=ChST -Pacific/Honolulu.daylight.short=HDT -Pacific/Honolulu.generic.short=HT -Pacific/Honolulu.standard.short=HST -Pacific/Johnston.daylight.short=HDT -Pacific/Johnston.generic.short=HT -Pacific/Johnston.standard.short=HST -Pacific/Kiritimati.daylight.short=LINST -Pacific/Kiritimati.generic.short=LINT -Pacific/Kiritimati.standard.short=LINT -Pacific/Kosrae.daylight.short=KOSST -Pacific/Kosrae.generic.short=KOST -Pacific/Kosrae.standard.short=KOST -Pacific/Kwajalein.daylight.short=MHST -Pacific/Kwajalein.generic.short=MHT -Pacific/Kwajalein.standard.short=MHT -Pacific/Majuro.daylight.short=MHST -Pacific/Majuro.generic.short=MHT -Pacific/Majuro.standard.short=MHT -Pacific/Marquesas.daylight.short=MARST -Pacific/Marquesas.generic.short=MART -Pacific/Marquesas.standard.short=MART -Pacific/Midway.daylight.short=SDT -Pacific/Midway.generic.short=ST -Pacific/Midway.standard.short=SST -Pacific/Nauru.daylight.short=NRST -Pacific/Nauru.generic.short=NRT -Pacific/Nauru.standard.short=NRT -Pacific/Niue.daylight.short=NUST -Pacific/Niue.generic.short=NUT -Pacific/Niue.standard.short=NUT -Pacific/Norfolk.daylight.short=NFST -Pacific/Norfolk.generic.short=NFT -Pacific/Norfolk.standard.short=NFT -Pacific/Noumea.daylight.short=NCST -Pacific/Noumea.generic.short=NCT -Pacific/Noumea.standard.short=NCT -Pacific/Pago_Pago.daylight.short=SDT -Pacific/Pago_Pago.generic.short=ST -Pacific/Pago_Pago.standard.short=SST -Pacific/Palau.daylight.short=PWST -Pacific/Palau.generic.short=PWT -Pacific/Palau.standard.short=PWT -Pacific/Pitcairn.daylight.short=PDT -Pacific/Pitcairn.generic.short=PT -Pacific/Pitcairn.standard.short=PST -Pacific/Pohnpei.daylight.short=PONST -Pacific/Pohnpei.generic.short=PONT -Pacific/Pohnpei.standard.short=PONT -Pacific/Ponape.daylight.short=PONST -Pacific/Ponape.generic.short=PONT -Pacific/Ponape.standard.short=PONT -Pacific/Port_Moresby.daylight.short=PGST -Pacific/Port_Moresby.generic.short=PGT -Pacific/Port_Moresby.standard.short=PGT -Pacific/Rarotonga.daylight.short=CKHST -Pacific/Rarotonga.generic.short=CKT -Pacific/Rarotonga.standard.short=CKT -Pacific/Saipan.daylight.short=ChDT -Pacific/Saipan.generic.short=ChT -Pacific/Saipan.standard.short=ChST -Pacific/Samoa.daylight.short=SDT -Pacific/Samoa.generic.short=ST -Pacific/Samoa.standard.short=SST -Pacific/Tahiti.daylight.short=TAHST -Pacific/Tahiti.generic.short=TAHT -Pacific/Tahiti.standard.short=TAHT -Pacific/Tarawa.daylight.short=GILST -Pacific/Tarawa.generic.short=GILT -Pacific/Tarawa.standard.short=GILT -Pacific/Tongatapu.daylight.short=TOST -Pacific/Tongatapu.generic.short=TOT -Pacific/Tongatapu.standard.short=TOT -Pacific/Truk.daylight.short=CHUST -Pacific/Truk.generic.short=CHUT -Pacific/Truk.standard.short=CHUT -Pacific/Wake.daylight.short=WAKST -Pacific/Wake.generic.short=WAKT -Pacific/Wake.standard.short=WAKT -Pacific/Wallis.daylight.short=WFST -Pacific/Wallis.generic.short=WFT -Pacific/Wallis.standard.short=WFT -Pacific/Yap.daylight.short=CHUST -Pacific/Yap.generic.short=CHUT -Pacific/Yap.standard.short=CHUT -PLT.daylight.short=PKST -PLT.generic.short=PKT -PLT.standard.short=PKT -PNT.daylight.short=MDT -PNT.generic.short=MT -PNT.standard.short=MST -Poland.daylight.short=CEST -Poland.generic.short=CET -Poland.standard.short=CET -Portugal.daylight.short=WEST -Portugal.generic.short=WET -Portugal.standard.short=WET -PRC.daylight.short=CDT -PRC.generic.short=CT -PRC.standard.short=CST -PRT.daylight.short=ADT -PRT.generic.short=AT -PRT.standard.short=AST -PST8PDT.daylight.short=PDT -PST8PDT.generic.short=PT -PST8PDT.standard.short=PST -PST.daylight.short=PDT -PST.generic.short=PT -PST.standard.short=PST -ROK.daylight.short=KDT -ROK.generic.short=KT -ROK.standard.short=KST -Singapore.daylight.short=SGST -Singapore.generic.short=SGT -Singapore.standard.short=SGT -SST.daylight.short=SBST -SST.generic.short=SBT -SST.standard.short=SBT -SystemV/AST4ADT.daylight.short=ADT -SystemV/AST4ADT.generic.short=AT -SystemV/AST4ADT.standard.short=AST -SystemV/AST4.daylight.short=ADT -SystemV/AST4.generic.short=AT -SystemV/AST4.standard.short=AST -SystemV/CST6CDT.daylight.short=CDT -SystemV/CST6CDT.generic.short=CT -SystemV/CST6CDT.standard.short=CST -SystemV/CST6.daylight.short=CDT -SystemV/CST6.generic.short=CT -SystemV/CST6.standard.short=CST -SystemV/EST5.daylight.short=EDT -SystemV/EST5EDT.daylight.short=EDT -SystemV/EST5EDT.generic.short=ET -SystemV/EST5EDT.standard.short=EST -SystemV/EST5.generic.short=ET -SystemV/EST5.standard.short=EST -SystemV/HST10.daylight.short=HDT -SystemV/HST10.generic.short=HT -SystemV/HST10.standard.short=HST -SystemV/MST7.daylight.short=MDT -SystemV/MST7.generic.short=MT -SystemV/MST7MDT.daylight.short=MDT -SystemV/MST7MDT.generic.short=MT -SystemV/MST7MDT.standard.short=MST -SystemV/MST7.standard.short=MST -SystemV/PST8.daylight.short=PDT -SystemV/PST8.generic.short=PT -SystemV/PST8PDT.daylight.short=PDT -SystemV/PST8PDT.generic.short=PT -SystemV/PST8PDT.standard.short=PST -SystemV/PST8.standard.short=PST -SystemV/YST9.daylight.short=AKDT -SystemV/YST9.generic.short=AKT -SystemV/YST9.standard.short=AKST -SystemV/YST9YDT.daylight.short=AKDT -SystemV/YST9YDT.generic.short=AKT -SystemV/YST9YDT.standard.short=AKST -Turkey.daylight.short=EEST -Turkey.generic.short=EET -Turkey.standard.short=EET -UCT.daylight.short=UTC -UCT.generic.short=UTC -UCT.standard.short=UTC -Universal.daylight.short=UTC -Universal.generic.short=UTC -Universal.standard.short=UTC -US/Alaska.daylight.short=AKDT -US/Alaska.generic.short=AKT -US/Alaska.standard.short=AKST -US/Aleutian.daylight.short=HADT -US/Aleutian.generic.short=HAT -US/Aleutian.standard.short=HAST -US/Arizona.daylight.short=MDT -US/Arizona.generic.short=MT -US/Arizona.standard.short=MST -US/Central.daylight.short=CDT -US/Central.generic.short=CT -US/Central.standard.short=CST -US/Eastern.daylight.short=EDT -US/Eastern.generic.short=ET -US/Eastern.standard.short=EST -US/East-Indiana.daylight.short=EDT -US/East-Indiana.generic.short=ET -US/East-Indiana.standard.short=EST -US/Hawaii.daylight.short=HDT -US/Hawaii.generic.short=HT -US/Hawaii.standard.short=HST -US/Indiana-Starke.daylight.short=CDT -US/Indiana-Starke.generic.short=CT -US/Indiana-Starke.standard.short=CST -US/Michigan.daylight.short=EDT -US/Michigan.generic.short=ET -US/Michigan.standard.short=EST -US/Mountain.daylight.short=MDT -US/Mountain.generic.short=MT -US/Mountain.standard.short=MST -US/Pacific.daylight.short=PDT -US/Pacific.generic.short=PT -US/Pacific-New.daylight.short=PDT -US/Pacific-New.generic.short=PT -US/Pacific-New.standard.short=PST -US/Pacific.standard.short=PST -US/Samoa.daylight.short=SDT -US/Samoa.generic.short=ST -US/Samoa.standard.short=SST -UTC.daylight.short=UTC -UTC.generic.short=UTC -UTC.standard.short=UTC -VST.daylight.short=ICST -VST.generic.short=ICT -VST.standard.short=ICT -WET.daylight.short=WEST -WET.generic.short=WET -WET.standard.short=WET -W-SU.daylight.short=MSD -W-SU.generic.short=MT -W-SU.standard.short=MSK -Zulu.daylight.short=UTC -Zulu.generic.short=UTC -Zulu.standard.short=UTC diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_sv.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_sv.properties deleted file mode 100644 index e1db445c4a4..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_sv.properties +++ /dev/null @@ -1,651 +0,0 @@ -ACT.daylight.long=Central sommartid (Nordterritoriet) -ACT.generic.long=Central tid (Nordterritoriet) -ACT.standard.long=Central standardtid (Nordterritoriet) -AET.daylight.long=\u00D6stlig sommartid (New South Wales) -AET.generic.long=\u00D6stlig tid (New South Wales) -AET.standard.long=\u00D6stlig standardtid (New South Wales) -AGT.generic.long=Argentinsk tid -ART.generic.long=\u00D6steuropeisk tid -AST.generic.long=Alaskisk tid -Africa/Abidjan.generic.long=Greenwichtid -Africa/Accra.generic.long=Ghana, normaltid -Africa/Addis_Ababa.generic.long=\u00D6stafrikansk tid -Africa/Algiers.generic.long=Centraleuropeisk tid -Africa/Asmara.generic.long=\u00D6stafrikansk tid -Africa/Asmera.generic.long=\u00D6stafrikansk tid -Africa/Bamako.generic.long=Greenwichtid -Africa/Bangui.generic.long=V\u00E4stafrikansk tid -Africa/Banjul.generic.long=Greenwichtid -Africa/Bissau.generic.long=Greenwichtid -Africa/Blantyre.generic.long=Centralafrikansk tid -Africa/Brazzaville.generic.long=V\u00E4stafrikansk tid -Africa/Bujumbura.generic.long=Centralafrikansk tid -Africa/Cairo.generic.long=\u00D6steuropeisk tid -Africa/Casablanca.generic.long=V\u00E4steuropeisk tid -Africa/Ceuta.generic.long=Centraleuropeisk tid -Africa/Conakry.generic.long=Greenwichtid -Africa/Dakar.generic.long=Greenwichtid -Africa/Dar_es_Salaam.generic.long=\u00D6stafrikansk tid -Africa/Djibouti.generic.long=\u00D6stafrikansk tid -Africa/Douala.generic.long=V\u00E4stafrikansk tid -Africa/El_Aaiun.generic.long=V\u00E4steuropeisk tid -Africa/Freetown.generic.long=Sierra Leone-tid -Africa/Gaborone.generic.long=Centralafrikansk tid -Africa/Harare.generic.long=Centralafrikansk tid -Africa/Johannesburg.generic.long=Sydafrikansk tid -Africa/Juba.generic.long=\u00D6stafrikansk tid -Africa/Kampala.generic.long=\u00D6stafrikansk tid -Africa/Khartoum.generic.long=\u00D6stafrikansk tid -Africa/Kigali.generic.long=Centralafrikansk tid -Africa/Kinshasa.generic.long=V\u00E4stafrikansk tid -Africa/Lagos.generic.long=V\u00E4stafrikansk tid -Africa/Libreville.generic.long=V\u00E4stafrikansk tid -Africa/Lome.generic.long=Greenwichtid -Africa/Luanda.generic.long=V\u00E4stafrikansk tid -Africa/Lubumbashi.generic.long=Centralafrikansk tid -Africa/Lusaka.generic.long=Centralafrikansk tid -Africa/Malabo.generic.long=V\u00E4stafrikansk tid -Africa/Maputo.generic.long=Centralafrikansk tid -Africa/Maseru.generic.long=Sydafrikansk tid -Africa/Mbabane.generic.long=Sydafrikansk tid -Africa/Mogadishu.generic.long=\u00D6stafrikansk tid -Africa/Monrovia.generic.long=Greenwichtid -Africa/Nairobi.generic.long=\u00D6stafrikansk tid -Africa/Ndjamena.generic.long=V\u00E4stafrikansk tid -Africa/Niamey.generic.long=V\u00E4stafrikansk tid -Africa/Nouakchott.generic.long=Greenwichtid -Africa/Ouagadougou.generic.long=Greenwichtid -Africa/Porto-Novo.generic.long=V\u00E4stafrikansk tid -Africa/Sao_Tome.generic.long=Greenwichtid -Africa/Timbuktu.generic.long=Greenwichtid -Africa/Tripoli.generic.long=\u00d6steuropeisk tid -Africa/Tunis.generic.long=Centraleuropeisk tid -Africa/Windhoek.generic.long=V\u00E4stafrikansk tid -America/Adak.generic.long=Hawaiiansk-aleutisk tid -America/Anchorage.generic.long=Alaskisk tid -America/Anguilla.generic.long=Atlantisk tid -America/Antigua.generic.long=Atlantisk tid -America/Araguaina.generic.long=Brasiliansk tid -America/Argentina/Buenos_Aires.generic.long=Argentinsk tid -America/Argentina/Catamarca.generic.long=Argentinsk tid -America/Argentina/ComodRivadavia.generic.long=Argentinsk tid -America/Argentina/Cordoba.generic.long=Argentinsk tid -America/Argentina/Jujuy.generic.long=Argentinsk tid -America/Argentina/La_Rioja.generic.long=Argentinsk tid -America/Argentina/Mendoza.generic.long=Argentinsk tid -America/Argentina/Rio_Gallegos.generic.long=Argentinsk tid -America/Argentina/Salta.generic.long=Argentinsk tid -America/Argentina/San_Juan.generic.long=Argentinsk tid -America/Argentina/San_Luis.generic.long=Argentinsk tid -America/Argentina/Tucuman.generic.long=Argentinsk tid -America/Argentina/Ushuaia.generic.long=Argentinsk tid -America/Aruba.generic.long=Atlantisk tid -America/Asuncion.generic.long=Paraguayansk tid -America/Atikokan.generic.long=\u00D6stlig tid -America/Atka.generic.long=Hawaiiansk-aleutisk tid -America/Bahia.generic.long=Brasiliansk tid -America/Bahia_Banderas.generic.long=Central tid -America/Barbados.generic.long=Atlantisk tid -America/Belem.generic.long=Brasiliansk tid -America/Belize.generic.long=Central tid -America/Blanc-Sablon.generic.long=Atlantisk tid -America/Boa_Vista.generic.long=Amazonas-tid -America/Bogota.generic.long=Kolombiansk tid -America/Boise.generic.long=Mountain-tid -America/Buenos_Aires.generic.long=Argentinsk tid -America/Cambridge_Bay.generic.long=Mountain-tid -America/Campo_Grande.generic.long=Amazonas-tid -America/Cancun.generic.long=Central tid -America/Caracas.generic.long=Venezuelansk tid -America/Catamarca.generic.long=Argentinsk tid -America/Cayenne.generic.long=Franska Guyana-tid -America/Cayman.generic.long=\u00D6stlig tid -America/Chicago.generic.long=Central tid -America/Chihuahua.generic.long=Mountain-tid -America/Coral_Harbour.generic.long=\u00D6stlig tid -America/Cordoba.generic.long=Argentinsk tid -America/Costa_Rica.generic.long=Central tid -America/Creston.generic.long=Mountain-tid -America/Cuiaba.generic.long=Amazonas-tid -America/Curacao.generic.long=Atlantisk tid -America/Danmarkshavn.generic.long=Greenwichtid -America/Dawson.generic.long=Stillahavet -America/Dawson_Creek.generic.long=Mountain-tid -America/Denver.generic.long=Mountain-tid -America/Detroit.generic.long=\u00D6stlig tid -America/Dominica.generic.long=Atlantisk tid -America/Edmonton.generic.long=Mountain-tid -America/Eirunepe.generic.long=Acre, normaltid -America/El_Salvador.generic.long=Central tid -America/Ensenada.generic.long=Stillahavet -America/Fort_Wayne.generic.long=\u00D6stlig tid -America/Fortaleza.generic.long=Brasiliansk tid -America/Glace_Bay.generic.long=Atlantisk tid -America/Godthab.generic.long=V\u00E4stgr\u00F6nl\u00E4ndsk tid -America/Goose_Bay.generic.long=Atlantisk tid -America/Grand_Turk.generic.long=\u00D6stlig tid -America/Grenada.generic.long=Atlantisk tid -America/Guadeloupe.generic.long=Atlantisk tid -America/Guatemala.generic.long=Central tid -America/Guayaquil.generic.long=Ecuadoriansk tid -America/Guyana.generic.long=Guyansk tid -America/Halifax.generic.long=Atlantisk tid -America/Havana.generic.long=Kubansk tid -America/Hermosillo.generic.long=Mountain-tid -America/Indiana/Indianapolis.generic.long=\u00D6stlig tid -America/Indiana/Knox.generic.long=Central tid -America/Indiana/Marengo.generic.long=\u00D6stlig tid -America/Indiana/Petersburg.generic.long=\u00D6stlig tid -America/Indiana/Tell_City.generic.long=Central tid -America/Indiana/Vevay.generic.long=\u00D6stlig tid -America/Indiana/Vincennes.generic.long=\u00D6stlig tid -America/Indiana/Winamac.generic.long=\u00D6stlig tid -America/Indianapolis.generic.long=\u00D6stlig tid -America/Inuvik.generic.long=Mountain-tid -America/Iqaluit.generic.long=\u00D6stlig tid -America/Jamaica.generic.long=\u00D6stlig tid -America/Jujuy.generic.long=Argentinsk tid -America/Juneau.generic.long=Alaskisk tid -America/Kentucky/Louisville.generic.long=\u00D6stlig tid -America/Kentucky/Monticello.generic.long=\u00D6stlig tid -America/Knox_IN.generic.long=Central tid -America/Kralendijk.generic.long=Atlantisk tid -America/La_Paz.generic.long=Boliviansk tid -America/Lima.generic.long=Peruansk tid -America/Los_Angeles.generic.long=Stillahavet -America/Louisville.generic.long=\u00D6stlig tid -America/Lower_Princes.generic.long=Atlantisk tid -America/Maceio.generic.long=Brasiliansk tid -America/Managua.generic.long=Central tid -America/Manaus.generic.long=Amazonas-tid -America/Marigot.generic.long=Atlantisk tid -America/Martinique.generic.long=Atlantisk tid -America/Matamoros.generic.long=Central tid -America/Mazatlan.generic.long=Mountain-tid -America/Mendoza.generic.long=Argentinsk tid -America/Menominee.generic.long=Central tid -America/Merida.generic.long=Central tid -America/Metlakatla.daylight.long=Metlakatla, sommartid -America/Metlakatla.generic.long=Metlakatla-tid -America/Metlakatla.standard.long=Metlakatla, normaltid -America/Mexico_City.generic.long=Central tid -America/Miquelon.generic.long=Saint-Pierre och Miquelons tid -America/Moncton.generic.long=Atlantisk tid -America/Monterrey.generic.long=Central tid -America/Montevideo.generic.long=Uruguayansk tid -America/Montreal.generic.long=\u00D6stlig tid -America/Montserrat.generic.long=Atlantisk tid -America/Nassau.generic.long=\u00D6stlig tid -America/New_York.generic.long=\u00D6stlig tid -America/Nipigon.generic.long=\u00D6stlig tid -America/Nome.generic.long=Alaskisk tid -America/Noronha.generic.long=Fernando de Noronha-tid -America/North_Dakota/Beulah.generic.long=Central tid -America/North_Dakota/Center.generic.long=Central tid -America/North_Dakota/New_Salem.generic.long=Central tid -America/Ojinaga.generic.long=Mountain-tid -America/Panama.generic.long=\u00D6stlig tid -America/Pangnirtung.generic.long=\u00D6stlig tid -America/Paramaribo.generic.long=Surinamsk tid -America/Phoenix.generic.long=Mountain-tid -America/Port-au-Prince.generic.long=\u00D6stlig tid -America/Port_of_Spain.generic.long=Atlantisk tid -America/Porto_Acre.generic.long=Acre, normaltid -America/Porto_Velho.generic.long=Amazonas-tid -America/Puerto_Rico.generic.long=Atlantisk tid -America/Rainy_River.generic.long=Central tid -America/Rankin_Inlet.generic.long=Central tid -America/Recife.generic.long=Brasiliansk tid -America/Regina.generic.long=Central tid -America/Resolute.generic.long=Central tid -America/Rio_Branco.generic.long=Acre, normaltid -America/Rosario.generic.long=Argentinsk tid -America/Santa_Isabel.generic.long=Stillahavet -America/Santarem.generic.long=Brasiliansk tid -America/Santiago.generic.long=Chilensk tid -America/Santo_Domingo.generic.long=Atlantisk tid -America/Sao_Paulo.generic.long=Brasiliansk tid -America/Scoresbysund.generic.long=\u00D6stgr\u00F6nl\u00E4ndsk tid -America/Shiprock.generic.long=Mountain-tid -America/Sitka.generic.long=Alaskisk tid -America/St_Barthelemy.generic.long=Atlantisk tid -America/St_Johns.generic.long=Newfoundl\u00E4ndsk tid -America/St_Kitts.generic.long=Atlantisk tid -America/St_Lucia.generic.long=Atlantisk tid -America/St_Thomas.generic.long=Atlantisk tid -America/St_Vincent.generic.long=Atlantisk tid -America/Swift_Current.generic.long=Central tid -America/Tegucigalpa.generic.long=Central tid -America/Thule.generic.long=Atlantisk tid -America/Thunder_Bay.generic.long=\u00D6stlig tid -America/Tijuana.generic.long=Stillahavet -America/Toronto.generic.long=\u00D6stlig tid -America/Tortola.generic.long=Atlantisk tid -America/Vancouver.generic.long=Stillahavet -America/Virgin.generic.long=Atlantisk tid -America/Whitehorse.generic.long=Stillahavet -America/Winnipeg.generic.long=Central tid -America/Yakutat.generic.long=Alaskisk tid -America/Yellowknife.generic.long=Mountain-tid -Antarctica/Casey.daylight.long=V\u00E4stlig sommartid (Australien) -Antarctica/Casey.generic.long=V\u00E4stlig tid (Australien) -Antarctica/Casey.standard.long=Western Standard Time (Australien) -Antarctica/Davis.generic.long=Davis-tid -Antarctica/DumontDUrville.generic.long=Dumont-d'Urville-tid -Antarctica/Macquarie.daylight.long=Macquarie\u00F6n, sommartid -Antarctica/Macquarie.generic.long=Macquarie\u00F6n, normaltid -Antarctica/Macquarie.standard.long=Macquarie\u00F6n, normaltid -Antarctica/Mawson.generic.long=Mawson-tid -Antarctica/McMurdo.generic.long=Nyzeel\u00E4ndsk tid -Antarctica/Palmer.generic.long=Chilensk tid -Antarctica/Rothera.generic.long=Rothera-tid -Antarctica/South_Pole.generic.long=Nyzeel\u00E4ndsk tid -Antarctica/Syowa.generic.long=Syowa-tid -Antarctica/Vostok.generic.long=Vostok-tid -Arctic/Longyearbyen.generic.long=Centraleuropeisk tid -Asia/Aden.generic.long=Arabisk tid -Asia/Almaty.generic.long=Alma-Ata-tid -Asia/Amman.generic.long=Arabisk tid -Asia/Anadyr.generic.long=Anadyr-tid -Asia/Aqtau.generic.long=Aqtau-tid -Asia/Aqtobe.generic.long=Aqtobe-tid -Asia/Ashgabat.generic.long=Turkmensk tid -Asia/Ashkhabad.generic.long=Turkmensk tid -Asia/Baghdad.generic.long=Arabisk tid -Asia/Bahrain.generic.long=Arabisk tid -Asia/Baku.generic.long=Azerbajdzjansk tid -Asia/Bangkok.generic.long=Indokinesisk tid -Asia/Beirut.generic.long=\u00D6steuropeisk tid -Asia/Bishkek.generic.long=Kirgizisk tid -Asia/Brunei.generic.long=Bruneisk tid -Asia/Calcutta.generic.long=Indisk tid -Asia/Choibalsan.generic.long=Choibalsan-tid -Asia/Chongqing.generic.long=Kinesisk tid -Asia/Chungking.generic.long=Kinesisk tid -Asia/Colombo.generic.long=Indisk tid -Asia/Dacca.generic.long=Bangladeshisk tid -Asia/Damascus.generic.long=\u00D6steuropeisk tid -Asia/Dhaka.generic.long=Bangladeshisk tid -Asia/Dili.generic.long=\u00D6sttimor, normaltid -Asia/Dubai.generic.long=Golfens tid -Asia/Dushanbe.generic.long=Tadzjikisk tid -Asia/Gaza.generic.long=\u00D6steuropeisk tid -Asia/Harbin.generic.long=Kinesisk tid -Asia/Hebron.generic.long=\u00D6steuropeisk tid -Asia/Ho_Chi_Minh.generic.long=Indokinesisk tid -Asia/Hong_Kong.generic.long=Hongkong-tid -Asia/Hovd.generic.long=Hovd-tid -Asia/Irkutsk.generic.long=Irkutsk-tid -Asia/Istanbul.generic.long=\u00D6steuropeisk tid -Asia/Jakarta.generic.long=V\u00E4stindonesisk tid -Asia/Jayapura.generic.long=\u00D6stindonesisk tid -Asia/Jerusalem.generic.long=Israelisk tid -Asia/Kabul.generic.long=Afghansk tid -Asia/Kamchatka.generic.long=Petropavlovsk-Kamtjatskij-tid -Asia/Karachi.generic.long=Pakistansk tid -Asia/Kashgar.generic.long=Kinesisk tid -Asia/Kathmandu.generic.long=Nepalesisk tid -Asia/Katmandu.generic.long=Nepalesisk tid -Asia/Khandyga.daylight.long=Khandyga, sommartid -Asia/Khandyga.generic.long=Khandyga, normaltid -Asia/Khandyga.standard.long=Khandyga, normaltid -Asia/Kolkata.generic.long=Indisk tid -Asia/Krasnoyarsk.generic.long=Krasnojarsk-tid -Asia/Kuala_Lumpur.generic.long=Malaysisk tid -Asia/Kuching.generic.long=Malaysisk tid -Asia/Kuwait.generic.long=Arabisk tid -Asia/Macao.generic.long=Kinesisk tid -Asia/Macau.generic.long=Kinesisk tid -Asia/Magadan.generic.long=Magadan-tid -Asia/Makassar.generic.long=Centralindonesisk tid -Asia/Manila.generic.long=Filippinsk tid -Asia/Muscat.generic.long=Golfens tid -Asia/Nicosia.generic.long=\u00D6steuropeisk tid -Asia/Novokuznetsk.generic.long=Sibirisk tid -Asia/Novosibirsk.generic.long=Sibirisk tid -Asia/Omsk.generic.long=Omsk-tid -Asia/Oral.generic.long=Oral-tid -Asia/Phnom_Penh.generic.long=Indokinesisk tid -Asia/Pontianak.generic.long=V\u00E4stindonesisk tid -Asia/Pyongyang.generic.long=Koreansk tid -Asia/Qatar.generic.long=Arabisk tid -Asia/Qyzylorda.generic.long=Qyzylorda-tid -Asia/Rangoon.generic.long=Myanmar-tid -Asia/Saigon.generic.long=Indokinesisk tid -Asia/Sakhalin.generic.long=Sakhalin-tid -Asia/Samarkand.generic.long=Uzbekisk tid -Asia/Seoul.generic.long=Koreansk tid -Asia/Shanghai.generic.long=Kinesisk tid -Asia/Singapore.generic.long=Singapore-tid -Asia/Taipei.generic.long=Kinesisk tid -Asia/Tashkent.generic.long=Uzbekisk tid -Asia/Tbilisi.generic.long=Georgisk tid -Asia/Tehran.generic.long=Iransk tid -Asia/Tel_Aviv.generic.long=Israelisk tid -Asia/Thimbu.generic.long=Bhutanesisk tid -Asia/Thimphu.generic.long=Bhutanesisk tid -Asia/Tokyo.generic.long=Japansk tid -Asia/Ujung_Pandang.generic.long=Centralindonesisk tid -Asia/Ulaanbaatar.generic.long=Ulaanbaatar-tid -Asia/Ulan_Bator.generic.long=Ulaanbaatar-tid -Asia/Urumqi.generic.long=Kinesisk tid -Asia/Ust-Nera.daylight.long=Ust-Nera, sommartid -Asia/Ust-Nera.generic.long=Ust-Nera, normaltid -Asia/Ust-Nera.standard.long=Ust-Nera, normaltid -Asia/Vientiane.generic.long=Indokinesisk tid -Asia/Vladivostok.generic.long=Vladivostok-tid -Asia/Yakutsk.generic.long=Jakutsk-tid -Asia/Yekaterinburg.generic.long=Jekaterinburg-tid -Asia/Yerevan.generic.long=Armenisk tid -Atlantic/Azores.generic.long=Azorerna-tid -Atlantic/Bermuda.generic.long=Atlantisk tid -Atlantic/Canary.generic.long=V\u00E4steuropeisk tid -Atlantic/Cape_Verde.generic.long=Kap Verde-tid -Atlantic/Faeroe.generic.long=V\u00E4steuropeisk tid -Atlantic/Faroe.generic.long=V\u00E4steuropeisk tid -Atlantic/Jan_Mayen.generic.long=Centraleuropeisk tid -Atlantic/Madeira.generic.long=V\u00E4steuropeisk tid -Atlantic/Reykjavik.generic.long=Greenwichtid -Atlantic/South_Georgia.generic.long=Sydgeorgisk tid -Atlantic/St_Helena.generic.long=Greenwichtid -Atlantic/Stanley.generic.long=Falklands\u00F6arna-tid -Australia/ACT.daylight.long=\u00D6stlig sommartid (New South Wales) -Australia/ACT.generic.long=\u00D6stlig tid (New South Wales) -Australia/ACT.standard.long=\u00D6stlig standardtid (New South Wales) -Australia/Adelaide.daylight.long=Central sommartid (South Australia) -Australia/Adelaide.generic.long=Central tid (Sydaustralien) -Australia/Adelaide.standard.long=Central standardtid (Sydaustralien) -Australia/Brisbane.daylight.long=\u00D6stlig sommartid (Queensland) -Australia/Brisbane.generic.long=\u00D6stlig tid (Queensland) -Australia/Brisbane.standard.long=\u00D6stlig standardtid (Queensland) -Australia/Broken_Hill.daylight.long=Central sommartid (South Australia/New South Wales) -Australia/Broken_Hill.generic.long=Central tid (Sydaustralien/New South Wales) -Australia/Broken_Hill.standard.long=Central standardtid (Sydaustralien/New South Wales) -Australia/Canberra.daylight.long=\u00D6stlig sommartid (New South Wales) -Australia/Canberra.generic.long=\u00D6stlig tid (New South Wales) -Australia/Canberra.standard.long=\u00D6stlig standardtid (New South Wales) -Australia/Currie.daylight.long=\u00D6stlig sommartid (New South Wales) -Australia/Currie.generic.long=\u00D6stlig tid (New South Wales) -Australia/Currie.standard.long=\u00D6stlig standardtid (New South Wales) -Australia/Darwin.daylight.long=Central sommartid (Nordterritoriet) -Australia/Darwin.generic.long=Central tid (Nordterritoriet) -Australia/Darwin.standard.long=Central standardtid (Nordterritoriet) -Australia/Eucla.daylight.long=Central v\u00E4stlig sommartid (Australien) -Australia/Eucla.generic.long=Central v\u00E4stlig tid (Australien) -Australia/Eucla.standard.long=Central v\u00E4stlig normaltid (Australien) -Australia/Hobart.daylight.long=\u00D6stlig sommartid (Tasmanien) -Australia/Hobart.generic.long=\u00D6stlig tid (Tasmania) -Australia/Hobart.standard.long=\u00D6stlig standardtid (Tasmania) -Australia/LHI.generic.long=Lord Howe-tid -Australia/Lindeman.daylight.long=\u00D6stlig sommartid (Queensland) -Australia/Lindeman.generic.long=\u00D6stlig tid (Queensland) -Australia/Lindeman.standard.long=\u00D6stlig standardtid (Queensland) -Australia/Lord_Howe.generic.long=Lord Howe-tid -Australia/Melbourne.daylight.long=\u00D6stlig sommartid (Victoria) -Australia/Melbourne.generic.long=\u00D6stlig tid (Victoria) -Australia/Melbourne.standard.long=\u00D6stlig standardtid (Victoria) -Australia/NSW.daylight.long=\u00D6stlig sommartid (New South Wales) -Australia/NSW.generic.long=\u00D6stlig tid (New South Wales) -Australia/NSW.standard.long=\u00D6stlig standardtid (New South Wales) -Australia/North.daylight.long=Central sommartid (Nordterritoriet) -Australia/North.generic.long=Central tid (Nordterritoriet) -Australia/North.standard.long=Central standardtid (Nordterritoriet) -Australia/Perth.daylight.long=V\u00E4stlig sommartid (Australien) -Australia/Perth.generic.long=V\u00E4stlig tid (Australien) -Australia/Perth.standard.long=Western Standard Time (Australien) -Australia/Queensland.daylight.long=\u00D6stlig sommartid (Queensland) -Australia/Queensland.generic.long=\u00D6stlig tid (Queensland) -Australia/Queensland.standard.long=\u00D6stlig standardtid (Queensland) -Australia/South.daylight.long=Central sommartid (South Australia) -Australia/South.generic.long=Central tid (Sydaustralien) -Australia/South.standard.long=Central standardtid (Sydaustralien) -Australia/Sydney.daylight.long=\u00D6stlig sommartid (New South Wales) -Australia/Sydney.generic.long=\u00D6stlig tid (New South Wales) -Australia/Sydney.standard.long=\u00D6stlig standardtid (New South Wales) -Australia/Tasmania.daylight.long=\u00D6stlig sommartid (Tasmanien) -Australia/Tasmania.generic.long=\u00D6stlig tid (Tasmania) -Australia/Tasmania.standard.long=\u00D6stlig standardtid (Tasmania) -Australia/Victoria.daylight.long=\u00D6stlig sommartid (Victoria) -Australia/Victoria.generic.long=\u00D6stlig tid (Victoria) -Australia/Victoria.standard.long=\u00D6stlig standardtid (Victoria) -Australia/West.daylight.long=V\u00E4stlig sommartid (Australien) -Australia/West.generic.long=V\u00E4stlig tid (Australien) -Australia/West.standard.long=Western Standard Time (Australien) -Australia/Yancowinna.daylight.long=Central sommartid (South Australia/New South Wales) -Australia/Yancowinna.generic.long=Central tid (Sydaustralien/New South Wales) -Australia/Yancowinna.standard.long=Central standardtid (Sydaustralien/New South Wales) -BET.generic.long=Brasiliansk tid -BST.generic.long=Bangladeshisk tid -Brazil/Acre.generic.long=Acre, normaltid -Brazil/DeNoronha.generic.long=Fernando de Noronha-tid -Brazil/East.generic.long=Brasiliansk tid -Brazil/West.generic.long=Amazonas-tid -CAT.generic.long=Centralafrikansk tid -CET.generic.long=Centraleuropeisk tid -CNT.generic.long=Newfoundl\u00E4ndsk tid -CST.generic.long=Central tid -CST6CDT.generic.long=Central tid -CTT.generic.long=Kinesisk tid -Canada/Atlantic.generic.long=Atlantisk tid -Canada/Central.generic.long=Central tid -Canada/East-Saskatchewan.generic.long=Central tid -Canada/Eastern.generic.long=\u00D6stlig tid -Canada/Mountain.generic.long=Mountain-tid -Canada/Newfoundland.generic.long=Newfoundl\u00E4ndsk tid -Canada/Pacific.generic.long=Stillahavet -Canada/Saskatchewan.generic.long=Central tid -Canada/Yukon.generic.long=Stillahavet -Chile/Continental.generic.long=Chilensk tid -Chile/EasterIsland.generic.long=P\u00E5sk\u00F6n-tid -Cuba.generic.long=Kubansk tid -EAT.generic.long=\u00D6stafrikansk tid -ECT.generic.long=Centraleuropeisk tid -EET.generic.long=\u00d6steuropeisk tid -EST.generic.long=\u00d6stlig tid -EST5EDT.generic.long=\u00d6stlig tid -Egypt.generic.long=\u00D6steuropeisk tid -Eire.generic.long=Irl\u00E4ndsk tid -Etc/Greenwich.generic.long=Greenwichtid -Etc/UCT.generic.long=UTC (koordinerad v\u00E4rldstid) -Etc/UTC.generic.long=UTC (koordinerad v\u00E4rldstid) -Etc/Universal.generic.long=UTC (koordinerad v\u00E4rldstid) -Etc/Zulu.generic.long=UTC (koordinerad v\u00E4rldstid) -Europe/Amsterdam.generic.long=Centraleuropeisk tid -Europe/Andorra.generic.long=Centraleuropeisk tid -Europe/Athens.generic.long=\u00D6steuropeisk tid -Europe/Belfast.generic.long=Brittisk tid -Europe/Belgrade.generic.long=Centraleuropeisk tid -Europe/Berlin.generic.long=Centraleuropeisk tid -Europe/Bratislava.generic.long=Centraleuropeisk tid -Europe/Brussels.generic.long=Centraleuropeisk tid -Europe/Bucharest.generic.long=\u00D6steuropeisk tid -Europe/Budapest.generic.long=Centraleuropeisk tid -Europe/Busingen.generic.long=Centraleuropeisk tid -Europe/Chisinau.generic.long=\u00D6steuropeisk tid -Europe/Copenhagen.generic.long=Centraleuropeisk tid -Europe/Dublin.generic.long=Irl\u00E4ndsk tid -Europe/Gibraltar.generic.long=Centraleuropeisk tid -Europe/Guernsey.generic.long=Brittisk tid -Europe/Helsinki.generic.long=\u00D6steuropeisk tid -Europe/Isle_of_Man.generic.long=Brittisk tid -Europe/Istanbul.generic.long=\u00D6steuropeisk tid -Europe/Jersey.generic.long=Brittisk tid -Europe/Kaliningrad.daylight.long=\u00D6steuropeisk sommartid -Europe/Kaliningrad.generic.long=Kaliningradtid -Europe/Kaliningrad.standard.long=Kaliningradtid -Europe/Kiev.generic.long=\u00D6steuropeisk tid -Europe/Lisbon.generic.long=V\u00E4steuropeisk tid -Europe/Ljubljana.generic.long=Centraleuropeisk tid -Europe/London.generic.long=Brittisk tid -Europe/Luxembourg.generic.long=Centraleuropeisk tid -Europe/Madrid.generic.long=Centraleuropeisk tid -Europe/Malta.generic.long=Centraleuropeisk tid -Europe/Mariehamn.generic.long=\u00D6steuropeisk tid -Europe/Minsk.daylight.long=\u00D6steuropeisk sommartid -Europe/Minsk.generic.long=Kaliningradtid -Europe/Minsk.standard.long=Kaliningradtid -Europe/Monaco.generic.long=Centraleuropeisk tid -Europe/Moscow.generic.long=Moskvas tid -Europe/Nicosia.generic.long=\u00D6steuropeisk tid -Europe/Oslo.generic.long=Centraleuropeisk tid -Europe/Paris.generic.long=Centraleuropeisk tid -Europe/Podgorica.generic.long=Centraleuropeisk tid -Europe/Prague.generic.long=Centraleuropeisk tid -Europe/Riga.generic.long=\u00D6steuropeisk tid -Europe/Rome.generic.long=Centraleuropeisk tid -Europe/Samara.generic.long=Samara-tid -Europe/San_Marino.generic.long=Centraleuropeisk tid -Europe/Sarajevo.generic.long=Centraleuropeisk tid -Europe/Simferopol.generic.long=\u00D6steuropeisk tid -Europe/Skopje.generic.long=Centraleuropeisk tid -Europe/Sofia.generic.long=\u00D6steuropeisk tid -Europe/Stockholm.generic.long=Centraleuropeisk tid -Europe/Tallinn.generic.long=\u00D6steuropeisk tid -Europe/Tirane.generic.long=Centraleuropeisk tid -Europe/Tiraspol.generic.long=\u00D6steuropeisk tid -Europe/Uzhgorod.generic.long=\u00D6steuropeisk tid -Europe/Vaduz.generic.long=Centraleuropeisk tid -Europe/Vatican.generic.long=Centraleuropeisk tid -Europe/Vienna.generic.long=Centraleuropeisk tid -Europe/Vilnius.generic.long=\u00D6steuropeisk tid -Europe/Volgograd.generic.long=Volgograd, normaltid -Europe/Warsaw.generic.long=Centraleuropeisk tid -Europe/Zagreb.generic.long=Centraleuropeisk tid -Europe/Zaporozhye.generic.long=\u00D6steuropeisk tid -Europe/Zurich.generic.long=Centraleuropeisk tid -GB-Eire.generic.long=Brittisk tid -GB.generic.long=Brittisk tid -GMT.generic.long=Greenwichtid -Greenwich.generic.long=Greenwichtid -HST.generic.long=Hawaiiansk tid -Hongkong.generic.long=Hongkong-tid -IET.generic.long=\u00D6stlig tid -IST.generic.long=Indisk tid -Iceland.generic.long=Greenwichtid -Indian/Antananarivo.generic.long=\u00D6stafrikansk tid -Indian/Chagos.generic.long=Indiska Ocean\u00F6arna-tid -Indian/Christmas.generic.long=Jul\u00F6n-tid -Indian/Cocos.generic.long=Kokos\u00F6arna-tid -Indian/Comoro.generic.long=\u00D6stafrikansk tid -Indian/Kerguelen.generic.long=Franska s\u00F6dra och antarktiska \u00F6arna-tid -Indian/Mahe.generic.long=Seychellisk tid -Indian/Maldives.generic.long=Maldivisk tid -Indian/Mauritius.generic.long=Mauritiansk tid -Indian/Mayotte.generic.long=\u00D6stafrikansk tid -Indian/Reunion.generic.long=Reunion-tid -Iran.generic.long=Iransk tid -Israel.generic.long=Israelisk tid -JST.generic.long=Japansk tid -Jamaica.generic.long=\u00D6stlig tid -Japan.generic.long=Japansk tid -Kwajalein.generic.long=Marshall\u00F6arna-tid -Libya.generic.long=\u00d6steuropeisk tid -MET.generic.long=MET -MIT.generic.long=V\u00E4stsamoansk tid -MST.generic.long=Mountain-tid -MST7MDT.generic.long=Mountain-tid -Mexico/BajaNorte.generic.long=Stillahavet -Mexico/BajaSur.generic.long=Mountain-tid -Mexico/General.generic.long=Central tid -NET.generic.long=Armenisk tid -NST.generic.long=Nyzeel\u00E4ndsk tid -NZ-CHAT.generic.long=Chathams tid -NZ.generic.long=Nyzeel\u00E4ndsk tid -Navajo.generic.long=Mountain-tid -PLT.generic.long=Pakistansk tid -PNT.generic.long=Mountain-tid -PRC.generic.long=Kinesisk tid -PRT.generic.long=Atlantisk tid -PST.generic.long=Stillahavet -PST8PDT.generic.long=Stillahavet -Pacific/Apia.generic.long=V\u00E4stsamoansk tid -Pacific/Auckland.generic.long=Nyzeel\u00E4ndsk tid -Pacific/Chatham.generic.long=Chathams tid -Pacific/Chuuk.daylight.long=Chuuk, sommartid -Pacific/Chuuk.generic.long=Chuuk, normaltid -Pacific/Chuuk.standard.long=Chuuk, normaltid -Pacific/Easter.generic.long=P\u00E5sk\u00F6n-tid -Pacific/Efate.generic.long=Vanuatu-tid -Pacific/Enderbury.generic.long=Phoenix\u00F6arna-tid -Pacific/Fakaofo.generic.long=Tokelau-tid -Pacific/Fiji.generic.long=Fijiansk tid -Pacific/Funafuti.generic.long=Tuvalu-tid -Pacific/Galapagos.generic.long=Galapagos-tid -Pacific/Gambier.generic.long=Gambier\u00F6arna-tid -Pacific/Guadalcanal.generic.long=Salomon\u00F6arna-tid -Pacific/Guam.generic.long=Chamorros tid -Pacific/Honolulu.generic.long=Hawaiiansk tid -Pacific/Johnston.generic.long=Hawaiiansk tid -Pacific/Kiritimati.generic.long=Line Islands-tid -Pacific/Kosrae.generic.long=Kosrae-tid -Pacific/Kwajalein.generic.long=Marshall\u00F6arna-tid -Pacific/Majuro.generic.long=Marshall\u00F6arna-tid -Pacific/Marquesas.generic.long=Marquesas\u00F6arna-tid -Pacific/Midway.generic.long=Samoansk tid -Pacific/Nauru.generic.long=Nauruansk tid -Pacific/Niue.generic.long=Niue-tid -Pacific/Norfolk.generic.long=Norfolk-tid -Pacific/Noumea.generic.long=Nya Kaledonien-tid -Pacific/Pago_Pago.generic.long=Samoansk tid -Pacific/Palau.generic.long=Palau-tid -Pacific/Pitcairn.generic.long=Pitcairn-tid -Pacific/Pohnpei.daylight.long=Pohnpei, sommartid -Pacific/Pohnpei.generic.long=Ponape-tid -Pacific/Pohnpei.standard.long=Pohnpei, normaltid -Pacific/Ponape.daylight.long=Pohnpei, sommartid -Pacific/Ponape.generic.long=Ponape-tid -Pacific/Ponape.standard.long=Pohnpei, normaltid -Pacific/Port_Moresby.generic.long=Papua Nya Guinea-tid -Pacific/Rarotonga.generic.long=Cook\u00F6arna-tid -Pacific/Saipan.generic.long=Chamorros tid -Pacific/Samoa.generic.long=Samoansk tid -Pacific/Tahiti.generic.long=Tahiti-tid -Pacific/Tarawa.generic.long=Gilbert\u00F6arna-tid -Pacific/Tongatapu.generic.long=Tonga-tid -Pacific/Truk.daylight.long=Chuuk, sommartid -Pacific/Truk.generic.long=Chuuk, normaltid -Pacific/Truk.standard.long=Chuuk, normaltid -Pacific/Wake.generic.long=Wake-tid -Pacific/Wallis.generic.long=Wallis- och Futuna\u00F6arna-tid -Pacific/Yap.daylight.long=Chuuk, sommartid -Pacific/Yap.generic.long=Chuuk, normaltid -Pacific/Yap.standard.long=Chuuk, normaltid -Poland.generic.long=Centraleuropeisk tid -Portugal.generic.long=V\u00E4steuropeisk tid -ROK.generic.long=Koreansk tid -SST.generic.long=Salomon\u00F6arna-tid -Singapore.generic.long=Singapore-tid -SystemV/AST4.generic.long=Atlantisk tid -SystemV/AST4ADT.generic.long=Atlantisk tid -SystemV/CST6.generic.long=Central tid -SystemV/CST6CDT.generic.long=Central tid -SystemV/EST5.generic.long=\u00D6stlig tid -SystemV/EST5EDT.generic.long=\u00D6stlig tid -SystemV/HST10.generic.long=Hawaiiansk tid -SystemV/MST7.generic.long=Mountain-tid -SystemV/MST7MDT.generic.long=Mountain-tid -SystemV/PST8.generic.long=Stillahavet -SystemV/PST8PDT.generic.long=Stillahavet -SystemV/YST9.generic.long=Alaskisk tid -SystemV/YST9YDT.generic.long=Alaskisk tid -Turkey.generic.long=\u00D6steuropeisk tid -UCT.generic.long=UTC (koordinerad v\u00E4rldstid) -US/Alaska.generic.long=Alaskisk tid -US/Aleutian.generic.long=Hawaiiansk-aleutisk tid -US/Arizona.generic.long=Mountain-tid -US/Central.generic.long=Central tid -US/East-Indiana.generic.long=\u00D6stlig tid -US/Eastern.generic.long=\u00D6stlig tid -US/Hawaii.generic.long=Hawaiiansk tid -US/Indiana-Starke.generic.long=Central tid -US/Michigan.generic.long=\u00D6stlig tid -US/Mountain.generic.long=Mountain-tid -US/Pacific-New.generic.long=Stillahavet -US/Pacific.generic.long=Stillahavet -US/Samoa.generic.long=Samoansk tid -UTC.generic.long=UTC (koordinerad v\u00E4rldstid) -Universal.generic.long=UTC (koordinerad v\u00E4rldstid) -VST.generic.long=Indokinesisk tid -W-SU.generic.long=Moskvas tid -WET.generic.long=V\u00e4steuropeisk tid -Zulu.generic.long=UTC (koordinerad v\u00E4rldstid) diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_sv_short.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_sv_short.properties deleted file mode 100644 index 095522a68d1..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_sv_short.properties +++ /dev/null @@ -1,1743 +0,0 @@ -ACT.daylight.short=CST -ACT.generic.short=CT -ACT.standard.short=CST -AET.daylight.short=EST -AET.generic.short=ET -AET.standard.short=EST -Africa/Abidjan.daylight.short=GMT -Africa/Abidjan.generic.short=GMT -Africa/Abidjan.standard.short=GMT -Africa/Accra.daylight.short=GHST -Africa/Accra.generic.short=GMT -Africa/Accra.standard.short=GMT -Africa/Addis_Ababa.daylight.short=EAST -Africa/Addis_Ababa.generic.short=EAT -Africa/Addis_Ababa.standard.short=EAT -Africa/Algiers.daylight.short=CEST -Africa/Algiers.generic.short=CET -Africa/Algiers.standard.short=CET -Africa/Asmara.daylight.short=EAST -Africa/Asmara.generic.short=EAT -Africa/Asmara.standard.short=EAT -Africa/Asmera.daylight.short=EAST -Africa/Asmera.generic.short=EAT -Africa/Asmera.standard.short=EAT -Africa/Bamako.daylight.short=GMT -Africa/Bamako.generic.short=GMT -Africa/Bamako.standard.short=GMT -Africa/Bangui.daylight.short=WAST -Africa/Bangui.generic.short=WAT -Africa/Bangui.standard.short=WAT -Africa/Banjul.daylight.short=GMT -Africa/Banjul.generic.short=GMT -Africa/Banjul.standard.short=GMT -Africa/Bissau.daylight.short=GMT -Africa/Bissau.generic.short=GMT -Africa/Bissau.standard.short=GMT -Africa/Blantyre.daylight.short=CAST -Africa/Blantyre.generic.short=CAT -Africa/Blantyre.standard.short=CAT -Africa/Brazzaville.daylight.short=WAST -Africa/Brazzaville.generic.short=WAT -Africa/Brazzaville.standard.short=WAT -Africa/Bujumbura.daylight.short=CAST -Africa/Bujumbura.generic.short=CAT -Africa/Bujumbura.standard.short=CAT -Africa/Cairo.daylight.short=EEST -Africa/Cairo.generic.short=EET -Africa/Cairo.standard.short=EET -Africa/Casablanca.daylight.short=WEST -Africa/Casablanca.generic.short=WET -Africa/Casablanca.standard.short=WET -Africa/Ceuta.daylight.short=CEST -Africa/Ceuta.generic.short=CET -Africa/Ceuta.standard.short=CET -Africa/Conakry.daylight.short=GMT -Africa/Conakry.generic.short=GMT -Africa/Conakry.standard.short=GMT -Africa/Dakar.daylight.short=GMT -Africa/Dakar.generic.short=GMT -Africa/Dakar.standard.short=GMT -Africa/Dar_es_Salaam.daylight.short=EAST -Africa/Dar_es_Salaam.generic.short=EAT -Africa/Dar_es_Salaam.standard.short=EAT -Africa/Djibouti.daylight.short=EAST -Africa/Djibouti.generic.short=EAT -Africa/Djibouti.standard.short=EAT -Africa/Douala.daylight.short=WAST -Africa/Douala.generic.short=WAT -Africa/Douala.standard.short=WAT -Africa/El_Aaiun.daylight.short=WEST -Africa/El_Aaiun.generic.short=WET -Africa/El_Aaiun.standard.short=WET -Africa/Freetown.daylight.short=SLST -Africa/Freetown.generic.short=SLT -Africa/Freetown.standard.short=GMT -Africa/Gaborone.daylight.short=CAST -Africa/Gaborone.generic.short=CAT -Africa/Gaborone.standard.short=CAT -Africa/Harare.daylight.short=CAST -Africa/Harare.generic.short=CAT -Africa/Harare.standard.short=CAT -Africa/Johannesburg.daylight.short=SAST -Africa/Johannesburg.generic.short=SAT -Africa/Johannesburg.standard.short=SAST -Africa/Juba.daylight.short=EAST -Africa/Juba.generic.short=EAT -Africa/Juba.standard.short=EAT -Africa/Kampala.daylight.short=EAST -Africa/Kampala.generic.short=EAT -Africa/Kampala.standard.short=EAT -Africa/Khartoum.daylight.short=EAST -Africa/Khartoum.generic.short=EAT -Africa/Khartoum.standard.short=EAT -Africa/Kigali.daylight.short=CAST -Africa/Kigali.generic.short=CAT -Africa/Kigali.standard.short=CAT -Africa/Kinshasa.daylight.short=WAST -Africa/Kinshasa.generic.short=WAT -Africa/Kinshasa.standard.short=WAT -Africa/Lagos.daylight.short=WAST -Africa/Lagos.generic.short=WAT -Africa/Lagos.standard.short=WAT -Africa/Libreville.daylight.short=WAST -Africa/Libreville.generic.short=WAT -Africa/Libreville.standard.short=WAT -Africa/Lome.daylight.short=GMT -Africa/Lome.generic.short=GMT -Africa/Lome.standard.short=GMT -Africa/Luanda.daylight.short=WAST -Africa/Luanda.generic.short=WAT -Africa/Luanda.standard.short=WAT -Africa/Lubumbashi.daylight.short=CAST -Africa/Lubumbashi.generic.short=CAT -Africa/Lubumbashi.standard.short=CAT -Africa/Lusaka.daylight.short=CAST -Africa/Lusaka.generic.short=CAT -Africa/Lusaka.standard.short=CAT -Africa/Malabo.daylight.short=WAST -Africa/Malabo.generic.short=WAT -Africa/Malabo.standard.short=WAT -Africa/Maputo.daylight.short=CAST -Africa/Maputo.generic.short=CAT -Africa/Maputo.standard.short=CAT -Africa/Maseru.daylight.short=SAST -Africa/Maseru.generic.short=SAT -Africa/Maseru.standard.short=SAST -Africa/Mbabane.daylight.short=SAST -Africa/Mbabane.generic.short=SAT -Africa/Mbabane.standard.short=SAST -Africa/Mogadishu.daylight.short=EAST -Africa/Mogadishu.generic.short=EAT -Africa/Mogadishu.standard.short=EAT -Africa/Monrovia.daylight.short=GMT -Africa/Monrovia.generic.short=GMT -Africa/Monrovia.standard.short=GMT -Africa/Nairobi.daylight.short=EAST -Africa/Nairobi.generic.short=EAT -Africa/Nairobi.standard.short=EAT -Africa/Ndjamena.daylight.short=WAST -Africa/Ndjamena.generic.short=WAT -Africa/Ndjamena.standard.short=WAT -Africa/Niamey.daylight.short=WAST -Africa/Niamey.generic.short=WAT -Africa/Niamey.standard.short=WAT -Africa/Nouakchott.daylight.short=GMT -Africa/Nouakchott.generic.short=GMT -Africa/Nouakchott.standard.short=GMT -Africa/Ouagadougou.daylight.short=GMT -Africa/Ouagadougou.generic.short=GMT -Africa/Ouagadougou.standard.short=GMT -Africa/Porto-Novo.daylight.short=WAST -Africa/Porto-Novo.generic.short=WAT -Africa/Porto-Novo.standard.short=WAT -Africa/Sao_Tome.daylight.short=GMT -Africa/Sao_Tome.generic.short=GMT -Africa/Sao_Tome.standard.short=GMT -Africa/Timbuktu.daylight.short=GMT -Africa/Timbuktu.generic.short=GMT -Africa/Timbuktu.standard.short=GMT -Africa/Tripoli.daylight.short=EEST -Africa/Tripoli.generic.short=EET -Africa/Tripoli.standard.short=EET -Africa/Tunis.daylight.short=CEST -Africa/Tunis.generic.short=CET -Africa/Tunis.standard.short=CET -Africa/Windhoek.daylight.short=WAST -Africa/Windhoek.generic.short=WAT -Africa/Windhoek.standard.short=WAT -AGT.daylight.short=ARST -AGT.generic.short=ART -AGT.standard.short=ART -America/Adak.daylight.short=HADT -America/Adak.generic.short=HAT -America/Adak.standard.short=HAST -America/Anchorage.daylight.short=AKDT -America/Anchorage.generic.short=AKT -America/Anchorage.standard.short=AKST -America/Anguilla.daylight.short=ADT -America/Anguilla.generic.short=AT -America/Anguilla.standard.short=AST -America/Antigua.daylight.short=ADT -America/Antigua.generic.short=AT -America/Antigua.standard.short=AST -America/Araguaina.daylight.short=BRST -America/Araguaina.generic.short=BRT -America/Araguaina.standard.short=BRT -America/Argentina/Buenos_Aires.daylight.short=ARST -America/Argentina/Buenos_Aires.generic.short=ART -America/Argentina/Buenos_Aires.standard.short=ART -America/Argentina/Catamarca.daylight.short=ARST -America/Argentina/Catamarca.generic.short=ART -America/Argentina/Catamarca.standard.short=ART -America/Argentina/ComodRivadavia.daylight.short=ARST -America/Argentina/ComodRivadavia.generic.short=ART -America/Argentina/ComodRivadavia.standard.short=ART -America/Argentina/Cordoba.daylight.short=ARST -America/Argentina/Cordoba.generic.short=ART -America/Argentina/Cordoba.standard.short=ART -America/Argentina/Jujuy.daylight.short=ARST -America/Argentina/Jujuy.generic.short=ART -America/Argentina/Jujuy.standard.short=ART -America/Argentina/La_Rioja.daylight.short=ARST -America/Argentina/La_Rioja.generic.short=ART -America/Argentina/La_Rioja.standard.short=ART -America/Argentina/Mendoza.daylight.short=ARST -America/Argentina/Mendoza.generic.short=ART -America/Argentina/Mendoza.standard.short=ART -America/Argentina/Rio_Gallegos.daylight.short=ARST -America/Argentina/Rio_Gallegos.generic.short=ART -America/Argentina/Rio_Gallegos.standard.short=ART -America/Argentina/Salta.daylight.short=ARST -America/Argentina/Salta.generic.short=ART -America/Argentina/Salta.standard.short=ART -America/Argentina/San_Juan.daylight.short=ARST -America/Argentina/San_Juan.generic.short=ART -America/Argentina/San_Juan.standard.short=ART -America/Argentina/San_Luis.daylight.short=ARST -America/Argentina/San_Luis.generic.short=ART -America/Argentina/San_Luis.standard.short=ART -America/Argentina/Tucuman.daylight.short=ARST -America/Argentina/Tucuman.generic.short=ART -America/Argentina/Tucuman.standard.short=ART -America/Argentina/Ushuaia.daylight.short=ARST -America/Argentina/Ushuaia.generic.short=ART -America/Argentina/Ushuaia.standard.short=ART -America/Aruba.daylight.short=ADT -America/Aruba.generic.short=AT -America/Aruba.standard.short=AST -America/Asuncion.daylight.short=PYST -America/Asuncion.generic.short=PYT -America/Asuncion.standard.short=PYT -America/Atikokan.daylight.short=EDT -America/Atikokan.generic.short=ET -America/Atikokan.standard.short=EST -America/Atka.daylight.short=HADT -America/Atka.generic.short=HAT -America/Atka.standard.short=HAST -America/Bahia_Banderas.daylight.short=CDT -America/Bahia_Banderas.generic.short=CT -America/Bahia_Banderas.standard.short=CST -America/Bahia.daylight.short=BRST -America/Bahia.generic.short=BRT -America/Bahia.standard.short=BRT -America/Barbados.daylight.short=ADT -America/Barbados.generic.short=AT -America/Barbados.standard.short=AST -America/Belem.daylight.short=BRST -America/Belem.generic.short=BRT -America/Belem.standard.short=BRT -America/Belize.daylight.short=CDT -America/Belize.generic.short=CT -America/Belize.standard.short=CST -America/Blanc-Sablon.daylight.short=ADT -America/Blanc-Sablon.generic.short=AT -America/Blanc-Sablon.standard.short=AST -America/Boa_Vista.daylight.short=AMST -America/Boa_Vista.generic.short=AMT -America/Boa_Vista.standard.short=AMT -America/Bogota.daylight.short=COST -America/Bogota.generic.short=COT -America/Bogota.standard.short=COT -America/Boise.daylight.short=MDT -America/Boise.generic.short=MT -America/Boise.standard.short=MST -America/Buenos_Aires.daylight.short=ARST -America/Buenos_Aires.generic.short=ART -America/Buenos_Aires.standard.short=ART -America/Cambridge_Bay.daylight.short=MDT -America/Cambridge_Bay.generic.short=MT -America/Cambridge_Bay.standard.short=MST -America/Campo_Grande.daylight.short=AMST -America/Campo_Grande.generic.short=AMT -America/Campo_Grande.standard.short=AMT -America/Cancun.daylight.short=CDT -America/Cancun.generic.short=CT -America/Cancun.standard.short=CST -America/Caracas.daylight.short=VEST -America/Caracas.generic.short=VET -America/Caracas.standard.short=VET -America/Catamarca.daylight.short=ARST -America/Catamarca.generic.short=ART -America/Catamarca.standard.short=ART -America/Cayenne.daylight.short=GFST -America/Cayenne.generic.short=GFT -America/Cayenne.standard.short=GFT -America/Cayman.daylight.short=EDT -America/Cayman.generic.short=ET -America/Cayman.standard.short=EST -America/Chicago.daylight.short=CDT -America/Chicago.generic.short=CT -America/Chicago.standard.short=CST -America/Chihuahua.daylight.short=MDT -America/Chihuahua.generic.short=MT -America/Chihuahua.standard.short=MST -America/Coral_Harbour.daylight.short=EDT -America/Coral_Harbour.generic.short=ET -America/Coral_Harbour.standard.short=EST -America/Cordoba.daylight.short=ARST -America/Cordoba.generic.short=ART -America/Cordoba.standard.short=ART -America/Costa_Rica.daylight.short=CDT -America/Costa_Rica.generic.short=CT -America/Costa_Rica.standard.short=CST -America/Creston.daylight.short=MDT -America/Creston.generic.short=MT -America/Creston.standard.short=MST -America/Cuiaba.daylight.short=AMST -America/Cuiaba.generic.short=AMT -America/Cuiaba.standard.short=AMT -America/Curacao.daylight.short=ADT -America/Curacao.generic.short=AT -America/Curacao.standard.short=AST -America/Danmarkshavn.daylight.short=GMT -America/Danmarkshavn.generic.short=GMT -America/Danmarkshavn.standard.short=GMT -America/Dawson_Creek.daylight.short=MDT -America/Dawson_Creek.generic.short=MT -America/Dawson_Creek.standard.short=MST -America/Dawson.daylight.short=PDT -America/Dawson.generic.short=PT -America/Dawson.standard.short=PST -America/Denver.daylight.short=MDT -America/Denver.generic.short=MT -America/Denver.standard.short=MST -America/Detroit.daylight.short=EDT -America/Detroit.generic.short=ET -America/Detroit.standard.short=EST -America/Dominica.daylight.short=ADT -America/Dominica.generic.short=AT -America/Dominica.standard.short=AST -America/Edmonton.daylight.short=MDT -America/Edmonton.generic.short=MT -America/Edmonton.standard.short=MST -America/Eirunepe.daylight.short=ACST -America/Eirunepe.generic.short=ACT -America/Eirunepe.standard.short=ACT -America/El_Salvador.daylight.short=CDT -America/El_Salvador.generic.short=CT -America/El_Salvador.standard.short=CST -America/Ensenada.daylight.short=PDT -America/Ensenada.generic.short=PT -America/Ensenada.standard.short=PST -America/Fortaleza.daylight.short=BRST -America/Fortaleza.generic.short=BRT -America/Fortaleza.standard.short=BRT -America/Fort_Wayne.daylight.short=EDT -America/Fort_Wayne.generic.short=ET -America/Fort_Wayne.standard.short=EST -America/Glace_Bay.daylight.short=ADT -America/Glace_Bay.generic.short=AT -America/Glace_Bay.standard.short=AST -America/Godthab.daylight.short=WGST -America/Godthab.generic.short=WGT -America/Godthab.standard.short=WGT -America/Goose_Bay.daylight.short=ADT -America/Goose_Bay.generic.short=AT -America/Goose_Bay.standard.short=AST -America/Grand_Turk.daylight.short=EDT -America/Grand_Turk.generic.short=ET -America/Grand_Turk.standard.short=EST -America/Grenada.daylight.short=ADT -America/Grenada.generic.short=AT -America/Grenada.standard.short=AST -America/Guadeloupe.daylight.short=ADT -America/Guadeloupe.generic.short=AT -America/Guadeloupe.standard.short=AST -America/Guatemala.daylight.short=CDT -America/Guatemala.generic.short=CT -America/Guatemala.standard.short=CST -America/Guayaquil.daylight.short=ECST -America/Guayaquil.generic.short=ECT -America/Guayaquil.standard.short=ECT -America/Guyana.daylight.short=GYST -America/Guyana.generic.short=GYT -America/Guyana.standard.short=GYT -America/Halifax.daylight.short=ADT -America/Halifax.generic.short=AT -America/Halifax.standard.short=AST -America/Havana.daylight.short=CDT -America/Havana.generic.short=CT -America/Havana.standard.short=CST -America/Hermosillo.daylight.short=MDT -America/Hermosillo.generic.short=MT -America/Hermosillo.standard.short=MST -America/Indiana/Indianapolis.daylight.short=EDT -America/Indiana/Indianapolis.generic.short=ET -America/Indiana/Indianapolis.standard.short=EST -America/Indiana/Knox.daylight.short=CDT -America/Indiana/Knox.generic.short=CT -America/Indiana/Knox.standard.short=CST -America/Indiana/Marengo.daylight.short=EDT -America/Indiana/Marengo.generic.short=ET -America/Indiana/Marengo.standard.short=EST -America/Indiana/Petersburg.daylight.short=EDT -America/Indiana/Petersburg.generic.short=ET -America/Indiana/Petersburg.standard.short=EST -America/Indianapolis.daylight.short=EDT -America/Indianapolis.generic.short=ET -America/Indianapolis.standard.short=EST -America/Indiana/Tell_City.daylight.short=CDT -America/Indiana/Tell_City.generic.short=CT -America/Indiana/Tell_City.standard.short=CST -America/Indiana/Vevay.daylight.short=EDT -America/Indiana/Vevay.generic.short=ET -America/Indiana/Vevay.standard.short=EST -America/Indiana/Vincennes.daylight.short=EDT -America/Indiana/Vincennes.generic.short=ET -America/Indiana/Vincennes.standard.short=EST -America/Indiana/Winamac.daylight.short=EDT -America/Indiana/Winamac.generic.short=ET -America/Indiana/Winamac.standard.short=EST -America/Inuvik.daylight.short=MDT -America/Inuvik.generic.short=MT -America/Inuvik.standard.short=MST -America/Iqaluit.daylight.short=EDT -America/Iqaluit.generic.short=ET -America/Iqaluit.standard.short=EST -America/Jamaica.daylight.short=EDT -America/Jamaica.generic.short=ET -America/Jamaica.standard.short=EST -America/Jujuy.daylight.short=ARST -America/Jujuy.generic.short=ART -America/Jujuy.standard.short=ART -America/Juneau.daylight.short=AKDT -America/Juneau.generic.short=AKT -America/Juneau.standard.short=AKST -America/Kentucky/Louisville.daylight.short=EDT -America/Kentucky/Louisville.generic.short=ET -America/Kentucky/Louisville.standard.short=EST -America/Kentucky/Monticello.daylight.short=EDT -America/Kentucky/Monticello.generic.short=ET -America/Kentucky/Monticello.standard.short=EST -America/Knox_IN.daylight.short=CDT -America/Knox_IN.generic.short=CT -America/Knox_IN.standard.short=CST -America/Kralendijk.daylight.short=ADT -America/Kralendijk.generic.short=AT -America/Kralendijk.standard.short=AST -America/La_Paz.daylight.short=BOST -America/La_Paz.generic.short=BOT -America/La_Paz.standard.short=BOT -America/Lima.daylight.short=PEST -America/Lima.generic.short=PET -America/Lima.standard.short=PET -America/Los_Angeles.daylight.short=PDT -America/Los_Angeles.generic.short=PT -America/Los_Angeles.standard.short=PST -America/Louisville.daylight.short=EDT -America/Louisville.generic.short=ET -America/Louisville.standard.short=EST -America/Lower_Princes.daylight.short=ADT -America/Lower_Princes.generic.short=AT -America/Lower_Princes.standard.short=AST -America/Maceio.daylight.short=BRST -America/Maceio.generic.short=BRT -America/Maceio.standard.short=BRT -America/Managua.daylight.short=CDT -America/Managua.generic.short=CT -America/Managua.standard.short=CST -America/Manaus.daylight.short=AMST -America/Manaus.generic.short=AMT -America/Manaus.standard.short=AMT -America/Marigot.daylight.short=ADT -America/Marigot.generic.short=AT -America/Marigot.standard.short=AST -America/Martinique.daylight.short=ADT -America/Martinique.generic.short=AT -America/Martinique.standard.short=AST -America/Matamoros.daylight.short=CDT -America/Matamoros.generic.short=CT -America/Matamoros.standard.short=CST -America/Mazatlan.daylight.short=MDT -America/Mazatlan.generic.short=MT -America/Mazatlan.standard.short=MST -America/Mendoza.daylight.short=ARST -America/Mendoza.generic.short=ART -America/Mendoza.standard.short=ART -America/Menominee.daylight.short=CDT -America/Menominee.generic.short=CT -America/Menominee.standard.short=CST -America/Merida.daylight.short=CDT -America/Merida.generic.short=CT -America/Merida.standard.short=CST -America/Metlakatla.daylight.short=MeDT -America/Metlakatla.generic.short=MeT -America/Metlakatla.standard.short=MeST -America/Mexico_City.daylight.short=CDT -America/Mexico_City.generic.short=CT -America/Mexico_City.standard.short=CST -America/Miquelon.daylight.short=PMDT -America/Miquelon.generic.short=PMT -America/Miquelon.standard.short=PMST -America/Moncton.daylight.short=ADT -America/Moncton.generic.short=AT -America/Moncton.standard.short=AST -America/Monterrey.daylight.short=CDT -America/Monterrey.generic.short=CT -America/Monterrey.standard.short=CST -America/Montevideo.daylight.short=UYST -America/Montevideo.generic.short=UYT -America/Montevideo.standard.short=UYT -America/Montreal.daylight.short=EDT -America/Montreal.generic.short=ET -America/Montreal.standard.short=EST -America/Montserrat.daylight.short=ADT -America/Montserrat.generic.short=AT -America/Montserrat.standard.short=AST -America/Nassau.daylight.short=EDT -America/Nassau.generic.short=ET -America/Nassau.standard.short=EST -America/New_York.daylight.short=EDT -America/New_York.generic.short=ET -America/New_York.standard.short=EST -America/Nipigon.daylight.short=EDT -America/Nipigon.generic.short=ET -America/Nipigon.standard.short=EST -America/Nome.daylight.short=AKDT -America/Nome.generic.short=AKT -America/Nome.standard.short=AKST -America/Noronha.daylight.short=FNST -America/Noronha.generic.short=FNT -America/Noronha.standard.short=FNT -America/North_Dakota/Beulah.daylight.short=CDT -America/North_Dakota/Beulah.generic.short=CT -America/North_Dakota/Beulah.standard.short=CST -America/North_Dakota/Center.daylight.short=CDT -America/North_Dakota/Center.generic.short=CT -America/North_Dakota/Center.standard.short=CST -America/North_Dakota/New_Salem.daylight.short=CDT -America/North_Dakota/New_Salem.generic.short=CT -America/North_Dakota/New_Salem.standard.short=CST -America/Ojinaga.daylight.short=MDT -America/Ojinaga.generic.short=MT -America/Ojinaga.standard.short=MST -America/Panama.daylight.short=EDT -America/Panama.generic.short=ET -America/Panama.standard.short=EST -America/Pangnirtung.daylight.short=EDT -America/Pangnirtung.generic.short=ET -America/Pangnirtung.standard.short=EST -America/Paramaribo.daylight.short=SRST -America/Paramaribo.generic.short=SRT -America/Paramaribo.standard.short=SRT -America/Phoenix.daylight.short=MDT -America/Phoenix.generic.short=MT -America/Phoenix.standard.short=MST -America/Port-au-Prince.daylight.short=EDT -America/Port-au-Prince.generic.short=ET -America/Port-au-Prince.standard.short=EST -America/Porto_Acre.daylight.short=ACST -America/Porto_Acre.generic.short=ACT -America/Porto_Acre.standard.short=ACT -America/Port_of_Spain.daylight.short=ADT -America/Port_of_Spain.generic.short=AT -America/Port_of_Spain.standard.short=AST -America/Porto_Velho.daylight.short=AMST -America/Porto_Velho.generic.short=AMT -America/Porto_Velho.standard.short=AMT -America/Puerto_Rico.daylight.short=ADT -America/Puerto_Rico.generic.short=AT -America/Puerto_Rico.standard.short=AST -America/Rainy_River.daylight.short=CDT -America/Rainy_River.generic.short=CT -America/Rainy_River.standard.short=CST -America/Rankin_Inlet.daylight.short=CDT -America/Rankin_Inlet.generic.short=CT -America/Rankin_Inlet.standard.short=CST -America/Recife.daylight.short=BRST -America/Recife.generic.short=BRT -America/Recife.standard.short=BRT -America/Regina.daylight.short=CDT -America/Regina.generic.short=CT -America/Regina.standard.short=CST -America/Resolute.daylight.short=CDT -America/Resolute.generic.short=CT -America/Resolute.standard.short=CST -America/Rio_Branco.daylight.short=ACST -America/Rio_Branco.generic.short=ACT -America/Rio_Branco.standard.short=ACT -America/Rosario.daylight.short=ARST -America/Rosario.generic.short=ART -America/Rosario.standard.short=ART -America/Santa_Isabel.daylight.short=PDT -America/Santa_Isabel.generic.short=PT -America/Santa_Isabel.standard.short=PST -America/Santarem.daylight.short=BRST -America/Santarem.generic.short=BRT -America/Santarem.standard.short=BRT -America/Santiago.daylight.short=CLST -America/Santiago.generic.short=CLT -America/Santiago.standard.short=CLT -America/Santo_Domingo.daylight.short=ADT -America/Santo_Domingo.generic.short=AT -America/Santo_Domingo.standard.short=AST -America/Sao_Paulo.daylight.short=BRST -America/Sao_Paulo.generic.short=BRT -America/Sao_Paulo.standard.short=BRT -America/Scoresbysund.daylight.short=EGST -America/Scoresbysund.generic.short=EGT -America/Scoresbysund.standard.short=EGT -America/Shiprock.daylight.short=MDT -America/Shiprock.generic.short=MT -America/Shiprock.standard.short=MST -America/Sitka.daylight.short=AKDT -America/Sitka.generic.short=AKT -America/Sitka.standard.short=AKST -America/St_Barthelemy.daylight.short=ADT -America/St_Barthelemy.generic.short=AT -America/St_Barthelemy.standard.short=AST -America/St_Johns.daylight.short=NDT -America/St_Johns.generic.short=NT -America/St_Johns.standard.short=NST -America/St_Kitts.daylight.short=ADT -America/St_Kitts.generic.short=AT -America/St_Kitts.standard.short=AST -America/St_Lucia.daylight.short=ADT -America/St_Lucia.generic.short=AT -America/St_Lucia.standard.short=AST -America/St_Thomas.daylight.short=ADT -America/St_Thomas.generic.short=AT -America/St_Thomas.standard.short=AST -America/St_Vincent.daylight.short=ADT -America/St_Vincent.generic.short=AT -America/St_Vincent.standard.short=AST -America/Swift_Current.daylight.short=CDT -America/Swift_Current.generic.short=CT -America/Swift_Current.standard.short=CST -America/Tegucigalpa.daylight.short=CDT -America/Tegucigalpa.generic.short=CT -America/Tegucigalpa.standard.short=CST -America/Thule.daylight.short=ADT -America/Thule.generic.short=AT -America/Thule.standard.short=AST -America/Thunder_Bay.daylight.short=EDT -America/Thunder_Bay.generic.short=ET -America/Thunder_Bay.standard.short=EST -America/Tijuana.daylight.short=PDT -America/Tijuana.generic.short=PT -America/Tijuana.standard.short=PST -America/Toronto.daylight.short=EDT -America/Toronto.generic.short=ET -America/Toronto.standard.short=EST -America/Tortola.daylight.short=ADT -America/Tortola.generic.short=AT -America/Tortola.standard.short=AST -America/Vancouver.daylight.short=PDT -America/Vancouver.generic.short=PT -America/Vancouver.standard.short=PST -America/Virgin.daylight.short=ADT -America/Virgin.generic.short=AT -America/Virgin.standard.short=AST -America/Whitehorse.daylight.short=PDT -America/Whitehorse.generic.short=PT -America/Whitehorse.standard.short=PST -America/Winnipeg.daylight.short=CDT -America/Winnipeg.generic.short=CT -America/Winnipeg.standard.short=CST -America/Yakutat.daylight.short=AKDT -America/Yakutat.generic.short=AKT -America/Yakutat.standard.short=AKST -America/Yellowknife.daylight.short=MDT -America/Yellowknife.generic.short=MT -America/Yellowknife.standard.short=MST -Antarctica/Casey.daylight.short=WST -Antarctica/Casey.generic.short=WT -Antarctica/Casey.standard.short=WST -Antarctica/Davis.daylight.short=DAVST -Antarctica/Davis.generic.short=DAVT -Antarctica/Davis.standard.short=DAVT -Antarctica/DumontDUrville.daylight.short=DDUST -Antarctica/DumontDUrville.generic.short=DDUT -Antarctica/DumontDUrville.standard.short=DDUT -Antarctica/Macquarie.daylight.short=MIST -Antarctica/Macquarie.generic.short=MIST -Antarctica/Macquarie.standard.short=MIST -Antarctica/Mawson.daylight.short=MAWST -Antarctica/Mawson.generic.short=MAWT -Antarctica/Mawson.standard.short=MAWT -Antarctica/McMurdo.daylight.short=NZDT -Antarctica/McMurdo.generic.short=NZT -Antarctica/McMurdo.standard.short=NZST -Antarctica/Palmer.daylight.short=CLST -Antarctica/Palmer.generic.short=CLT -Antarctica/Palmer.standard.short=CLT -Antarctica/Rothera.daylight.short=ROTST -Antarctica/Rothera.generic.short=ROTT -Antarctica/Rothera.standard.short=ROTT -Antarctica/South_Pole.daylight.short=NZDT -Antarctica/South_Pole.generic.short=NZT -Antarctica/South_Pole.standard.short=NZST -Antarctica/Syowa.daylight.short=SYOST -Antarctica/Syowa.generic.short=SYOT -Antarctica/Syowa.standard.short=SYOT -Antarctica/Vostok.daylight.short=VOSST -Antarctica/Vostok.generic.short=VOST -Antarctica/Vostok.standard.short=VOST -Arctic/Longyearbyen.daylight.short=CEST -Arctic/Longyearbyen.generic.short=CET -Arctic/Longyearbyen.standard.short=CET -ART.daylight.short=EEST -ART.generic.short=EET -ART.standard.short=EET -Asia/Aden.daylight.short=ADT -Asia/Aden.generic.short=AT -Asia/Aden.standard.short=AST -Asia/Almaty.daylight.short=ALMST -Asia/Almaty.generic.short=ALMT -Asia/Almaty.standard.short=ALMT -Asia/Amman.daylight.short=ADT -Asia/Amman.generic.short=AT -Asia/Amman.standard.short=AST -Asia/Anadyr.daylight.short=ANAST -Asia/Anadyr.generic.short=ANAT -Asia/Anadyr.standard.short=ANAT -Asia/Aqtau.daylight.short=AQTST -Asia/Aqtau.generic.short=AQTT -Asia/Aqtau.standard.short=AQTT -Asia/Aqtobe.daylight.short=AQTST -Asia/Aqtobe.generic.short=AQTT -Asia/Aqtobe.standard.short=AQTT -Asia/Ashgabat.daylight.short=TMST -Asia/Ashgabat.generic.short=TMT -Asia/Ashgabat.standard.short=TMT -Asia/Ashkhabad.daylight.short=TMST -Asia/Ashkhabad.generic.short=TMT -Asia/Ashkhabad.standard.short=TMT -Asia/Baghdad.daylight.short=ADT -Asia/Baghdad.generic.short=AT -Asia/Baghdad.standard.short=AST -Asia/Bahrain.daylight.short=ADT -Asia/Bahrain.generic.short=AT -Asia/Bahrain.standard.short=AST -Asia/Baku.daylight.short=AZST -Asia/Baku.generic.short=AZT -Asia/Baku.standard.short=AZT -Asia/Bangkok.daylight.short=ICST -Asia/Bangkok.generic.short=ICT -Asia/Bangkok.standard.short=ICT -Asia/Beirut.daylight.short=EEST -Asia/Beirut.generic.short=EET -Asia/Beirut.standard.short=EET -Asia/Bishkek.daylight.short=KGST -Asia/Bishkek.generic.short=KGT -Asia/Bishkek.standard.short=KGT -Asia/Brunei.daylight.short=BNST -Asia/Brunei.generic.short=BNT -Asia/Brunei.standard.short=BNT -Asia/Calcutta.daylight.short=IDT -Asia/Calcutta.generic.short=IT -Asia/Calcutta.standard.short=IST -Asia/Choibalsan.daylight.short=CHOST -Asia/Choibalsan.generic.short=CHOT -Asia/Choibalsan.standard.short=CHOT -Asia/Chongqing.daylight.short=CDT -Asia/Chongqing.generic.short=CT -Asia/Chongqing.standard.short=CST -Asia/Chungking.daylight.short=CDT -Asia/Chungking.generic.short=CT -Asia/Chungking.standard.short=CST -Asia/Colombo.daylight.short=IDT -Asia/Colombo.generic.short=IT -Asia/Colombo.standard.short=IST -Asia/Dacca.daylight.short=BDST -Asia/Dacca.generic.short=BDT -Asia/Dacca.standard.short=BDT -Asia/Damascus.daylight.short=EEST -Asia/Damascus.generic.short=EET -Asia/Damascus.standard.short=EET -Asia/Dhaka.daylight.short=BDST -Asia/Dhaka.generic.short=BDT -Asia/Dhaka.standard.short=BDT -Asia/Dili.daylight.short=TLST -Asia/Dili.generic.short=TLT -Asia/Dili.standard.short=TLT -Asia/Dubai.daylight.short=GDT -Asia/Dubai.generic.short=GT -Asia/Dubai.standard.short=GST -Asia/Dushanbe.daylight.short=TJST -Asia/Dushanbe.generic.short=TJT -Asia/Dushanbe.standard.short=TJT -Asia/Gaza.daylight.short=EEST -Asia/Gaza.generic.short=EET -Asia/Gaza.standard.short=EET -Asia/Harbin.daylight.short=CDT -Asia/Harbin.generic.short=CT -Asia/Harbin.standard.short=CST -Asia/Hebron.daylight.short=EEST -Asia/Hebron.generic.short=EET -Asia/Hebron.standard.short=EET -Asia/Ho_Chi_Minh.daylight.short=ICST -Asia/Ho_Chi_Minh.generic.short=ICT -Asia/Ho_Chi_Minh.standard.short=ICT -Asia/Hong_Kong.daylight.short=HKST -Asia/Hong_Kong.generic.short=HKT -Asia/Hong_Kong.standard.short=HKT -Asia/Hovd.daylight.short=HOVST -Asia/Hovd.generic.short=HOVT -Asia/Hovd.standard.short=HOVT -Asia/Irkutsk.daylight.short=IRKST -Asia/Irkutsk.generic.short=IRKT -Asia/Irkutsk.standard.short=IRKT -Asia/Istanbul.daylight.short=EEST -Asia/Istanbul.generic.short=EET -Asia/Istanbul.standard.short=EET -Asia/Jakarta.daylight.short=WIST -Asia/Jakarta.generic.short=WIB -Asia/Jakarta.standard.short=WIB -Asia/Jayapura.daylight.short=EIST -Asia/Jayapura.generic.short=WIT -Asia/Jayapura.standard.short=WIT -Asia/Jerusalem.daylight.short=IDT -Asia/Jerusalem.generic.short=IT -Asia/Jerusalem.standard.short=IST -Asia/Kabul.daylight.short=AFST -Asia/Kabul.generic.short=AFT -Asia/Kabul.standard.short=AFT -Asia/Kamchatka.daylight.short=PETST -Asia/Kamchatka.generic.short=PETT -Asia/Kamchatka.standard.short=PETT -Asia/Karachi.daylight.short=PKST -Asia/Karachi.generic.short=PKT -Asia/Karachi.standard.short=PKT -Asia/Kashgar.daylight.short=CDT -Asia/Kashgar.generic.short=CT -Asia/Kashgar.standard.short=CST -Asia/Kathmandu.daylight.short=NPST -Asia/Kathmandu.generic.short=NPT -Asia/Kathmandu.standard.short=NPT -Asia/Katmandu.daylight.short=NPST -Asia/Katmandu.generic.short=NPT -Asia/Katmandu.standard.short=NPT -Asia/Khandyga.daylight.short=YAKST -Asia/Khandyga.generic.short=YAKT -Asia/Khandyga.standard.short=YAKT -Asia/Kolkata.daylight.short=IDT -Asia/Kolkata.generic.short=IT -Asia/Kolkata.standard.short=IST -Asia/Krasnoyarsk.daylight.short=KRAST -Asia/Krasnoyarsk.generic.short=KRAT -Asia/Krasnoyarsk.standard.short=KRAT -Asia/Kuala_Lumpur.daylight.short=MYST -Asia/Kuala_Lumpur.generic.short=MYT -Asia/Kuala_Lumpur.standard.short=MYT -Asia/Kuching.daylight.short=MYST -Asia/Kuching.generic.short=MYT -Asia/Kuching.standard.short=MYT -Asia/Kuwait.daylight.short=ADT -Asia/Kuwait.generic.short=AT -Asia/Kuwait.standard.short=AST -Asia/Macao.daylight.short=CDT -Asia/Macao.generic.short=CT -Asia/Macao.standard.short=CST -Asia/Macau.daylight.short=CDT -Asia/Macau.generic.short=CT -Asia/Macau.standard.short=CST -Asia/Magadan.daylight.short=MAGST -Asia/Magadan.generic.short=MAGT -Asia/Magadan.standard.short=MAGT -Asia/Makassar.daylight.short=CIST -Asia/Makassar.generic.short=WITA -Asia/Makassar.standard.short=WITA -Asia/Manila.daylight.short=PHST -Asia/Manila.generic.short=PHT -Asia/Manila.standard.short=PHT -Asia/Muscat.daylight.short=GDT -Asia/Muscat.generic.short=GT -Asia/Muscat.standard.short=GST -Asia/Nicosia.daylight.short=EEST -Asia/Nicosia.generic.short=EET -Asia/Nicosia.standard.short=EET -Asia/Novokuznetsk.daylight.short=NOVST -Asia/Novokuznetsk.generic.short=NOVT -Asia/Novokuznetsk.standard.short=NOVT -Asia/Novosibirsk.daylight.short=NOVST -Asia/Novosibirsk.generic.short=NOVT -Asia/Novosibirsk.standard.short=NOVT -Asia/Omsk.daylight.short=OMSST -Asia/Omsk.generic.short=OMST -Asia/Omsk.standard.short=OMST -Asia/Oral.daylight.short=ORAST -Asia/Oral.generic.short=ORAT -Asia/Oral.standard.short=ORAT -Asia/Phnom_Penh.daylight.short=ICST -Asia/Phnom_Penh.generic.short=ICT -Asia/Phnom_Penh.standard.short=ICT -Asia/Pontianak.daylight.short=WIST -Asia/Pontianak.generic.short=WIB -Asia/Pontianak.standard.short=WIB -Asia/Pyongyang.daylight.short=KDT -Asia/Pyongyang.generic.short=KT -Asia/Pyongyang.standard.short=KST -Asia/Qatar.daylight.short=ADT -Asia/Qatar.generic.short=AT -Asia/Qatar.standard.short=AST -Asia/Qyzylorda.daylight.short=QYZST -Asia/Qyzylorda.generic.short=QYZT -Asia/Qyzylorda.standard.short=QYZT -Asia/Rangoon.daylight.short=MMST -Asia/Rangoon.generic.short=MMT -Asia/Rangoon.standard.short=MMT -Asia/Saigon.daylight.short=ICST -Asia/Saigon.generic.short=ICT -Asia/Saigon.standard.short=ICT -Asia/Sakhalin.daylight.short=SAKST -Asia/Sakhalin.generic.short=SAKT -Asia/Sakhalin.standard.short=SAKT -Asia/Samarkand.daylight.short=UZST -Asia/Samarkand.generic.short=UZT -Asia/Samarkand.standard.short=UZT -Asia/Seoul.daylight.short=KDT -Asia/Seoul.generic.short=KT -Asia/Seoul.standard.short=KST -Asia/Shanghai.daylight.short=CDT -Asia/Shanghai.generic.short=CT -Asia/Shanghai.standard.short=CST -Asia/Singapore.daylight.short=SGST -Asia/Singapore.generic.short=SGT -Asia/Singapore.standard.short=SGT -Asia/Taipei.daylight.short=CDT -Asia/Taipei.generic.short=CT -Asia/Taipei.standard.short=CST -Asia/Tashkent.daylight.short=UZST -Asia/Tashkent.generic.short=UZT -Asia/Tashkent.standard.short=UZT -Asia/Tbilisi.daylight.short=GEST -Asia/Tbilisi.generic.short=GET -Asia/Tbilisi.standard.short=GET -Asia/Tehran.daylight.short=IRDT -Asia/Tehran.generic.short=IRT -Asia/Tehran.standard.short=IRST -Asia/Tel_Aviv.daylight.short=IDT -Asia/Tel_Aviv.generic.short=IT -Asia/Tel_Aviv.standard.short=IST -Asia/Thimbu.daylight.short=BTST -Asia/Thimbu.generic.short=BTT -Asia/Thimbu.standard.short=BTT -Asia/Thimphu.daylight.short=BTST -Asia/Thimphu.generic.short=BTT -Asia/Thimphu.standard.short=BTT -Asia/Tokyo.daylight.short=JDT -Asia/Tokyo.generic.short=JT -Asia/Tokyo.standard.short=JST -Asia/Ujung_Pandang.daylight.short=CIST -Asia/Ujung_Pandang.generic.short=WITA -Asia/Ujung_Pandang.standard.short=WITA -Asia/Ulaanbaatar.daylight.short=ULAST -Asia/Ulaanbaatar.generic.short=ULAT -Asia/Ulaanbaatar.standard.short=ULAT -Asia/Ulan_Bator.daylight.short=ULAST -Asia/Ulan_Bator.generic.short=ULAT -Asia/Ulan_Bator.standard.short=ULAT -Asia/Urumqi.daylight.short=CDT -Asia/Urumqi.generic.short=CT -Asia/Urumqi.standard.short=CST -Asia/Ust-Nera.daylight.short=VLAST -Asia/Ust-Nera.generic.short=VLAT -Asia/Ust-Nera.standard.short=VLAT -Asia/Vientiane.daylight.short=ICST -Asia/Vientiane.generic.short=ICT -Asia/Vientiane.standard.short=ICT -Asia/Vladivostok.daylight.short=VLAST -Asia/Vladivostok.generic.short=VLAT -Asia/Vladivostok.standard.short=VLAT -Asia/Yakutsk.daylight.short=YAKST -Asia/Yakutsk.generic.short=YAKT -Asia/Yakutsk.standard.short=YAKT -Asia/Yekaterinburg.daylight.short=YEKST -Asia/Yekaterinburg.generic.short=YEKT -Asia/Yekaterinburg.standard.short=YEKT -Asia/Yerevan.daylight.short=AMST -Asia/Yerevan.generic.short=AMT -Asia/Yerevan.standard.short=AMT -AST.daylight.short=AKDT -AST.generic.short=AKT -AST.standard.short=AKST -Atlantic/Azores.daylight.short=AZOST -Atlantic/Azores.generic.short=AZOT -Atlantic/Azores.standard.short=AZOT -Atlantic/Bermuda.daylight.short=ADT -Atlantic/Bermuda.generic.short=AT -Atlantic/Bermuda.standard.short=AST -Atlantic/Canary.daylight.short=WEST -Atlantic/Canary.generic.short=WET -Atlantic/Canary.standard.short=WET -Atlantic/Cape_Verde.daylight.short=CVST -Atlantic/Cape_Verde.generic.short=CVT -Atlantic/Cape_Verde.standard.short=CVT -Atlantic/Faeroe.daylight.short=WEST -Atlantic/Faeroe.generic.short=WET -Atlantic/Faeroe.standard.short=WET -Atlantic/Faroe.daylight.short=WEST -Atlantic/Faroe.generic.short=WET -Atlantic/Faroe.standard.short=WET -Atlantic/Jan_Mayen.daylight.short=CEST -Atlantic/Jan_Mayen.generic.short=CET -Atlantic/Jan_Mayen.standard.short=CET -Atlantic/Madeira.daylight.short=WEST -Atlantic/Madeira.generic.short=WET -Atlantic/Madeira.standard.short=WET -Atlantic/Reykjavik.daylight.short=GMT -Atlantic/Reykjavik.generic.short=GMT -Atlantic/Reykjavik.standard.short=GMT -Atlantic/South_Georgia.daylight.short=GDT -Atlantic/South_Georgia.generic.short=GT -Atlantic/South_Georgia.standard.short=GST -Atlantic/Stanley.daylight.short=FKST -Atlantic/Stanley.generic.short=FKT -Atlantic/Stanley.standard.short=FKT -Atlantic/St_Helena.daylight.short=GMT -Atlantic/St_Helena.generic.short=GMT -Atlantic/St_Helena.standard.short=GMT -Australia/ACT.daylight.short=EST -Australia/ACT.generic.short=ET -Australia/ACT.standard.short=EST -Australia/Adelaide.daylight.short=CST -Australia/Adelaide.generic.short=CT -Australia/Adelaide.standard.short=CST -Australia/Brisbane.daylight.short=EST -Australia/Brisbane.generic.short=ET -Australia/Brisbane.standard.short=EST -Australia/Broken_Hill.daylight.short=CST -Australia/Broken_Hill.generic.short=CT -Australia/Broken_Hill.standard.short=CST -Australia/Canberra.daylight.short=EST -Australia/Canberra.generic.short=ET -Australia/Canberra.standard.short=EST -Australia/Currie.daylight.short=EST -Australia/Currie.generic.short=ET -Australia/Currie.standard.short=EST -Australia/Darwin.daylight.short=CST -Australia/Darwin.generic.short=CT -Australia/Darwin.standard.short=CST -Australia/Eucla.daylight.short=CWST -Australia/Eucla.generic.short=CWT -Australia/Eucla.standard.short=CWST -Australia/Hobart.daylight.short=EST -Australia/Hobart.generic.short=ET -Australia/Hobart.standard.short=EST -Australia/LHI.daylight.short=LHST -Australia/LHI.generic.short=LHT -Australia/LHI.standard.short=LHST -Australia/Lindeman.daylight.short=EST -Australia/Lindeman.generic.short=ET -Australia/Lindeman.standard.short=EST -Australia/Lord_Howe.daylight.short=LHST -Australia/Lord_Howe.generic.short=LHT -Australia/Lord_Howe.standard.short=LHST -Australia/Melbourne.daylight.short=EST -Australia/Melbourne.generic.short=ET -Australia/Melbourne.standard.short=EST -Australia/North.daylight.short=CST -Australia/North.generic.short=CT -Australia/North.standard.short=CST -Australia/NSW.daylight.short=EST -Australia/NSW.generic.short=ET -Australia/NSW.standard.short=EST -Australia/Perth.daylight.short=WST -Australia/Perth.generic.short=WT -Australia/Perth.standard.short=WST -Australia/Queensland.daylight.short=EST -Australia/Queensland.generic.short=ET -Australia/Queensland.standard.short=EST -Australia/South.daylight.short=CST -Australia/South.generic.short=CT -Australia/South.standard.short=CST -Australia/Sydney.daylight.short=EST -Australia/Sydney.generic.short=ET -Australia/Sydney.standard.short=EST -Australia/Tasmania.daylight.short=EST -Australia/Tasmania.generic.short=ET -Australia/Tasmania.standard.short=EST -Australia/Victoria.daylight.short=EST -Australia/Victoria.generic.short=ET -Australia/Victoria.standard.short=EST -Australia/West.daylight.short=WST -Australia/West.generic.short=WT -Australia/West.standard.short=WST -Australia/Yancowinna.daylight.short=CST -Australia/Yancowinna.generic.short=CT -Australia/Yancowinna.standard.short=CST -BET.daylight.short=BRST -BET.generic.short=BRT -BET.standard.short=BRT -Brazil/Acre.daylight.short=ACST -Brazil/Acre.generic.short=ACT -Brazil/Acre.standard.short=ACT -Brazil/DeNoronha.daylight.short=FNST -Brazil/DeNoronha.generic.short=FNT -Brazil/DeNoronha.standard.short=FNT -Brazil/East.daylight.short=BRST -Brazil/East.generic.short=BRT -Brazil/East.standard.short=BRT -Brazil/West.daylight.short=AMST -Brazil/West.generic.short=AMT -Brazil/West.standard.short=AMT -BST.daylight.short=BDST -BST.generic.short=BDT -BST.standard.short=BDT -Canada/Atlantic.daylight.short=ADT -Canada/Atlantic.generic.short=AT -Canada/Atlantic.standard.short=AST -Canada/Central.daylight.short=CDT -Canada/Central.generic.short=CT -Canada/Central.standard.short=CST -Canada/Eastern.daylight.short=EDT -Canada/Eastern.generic.short=ET -Canada/Eastern.standard.short=EST -Canada/East-Saskatchewan.daylight.short=CDT -Canada/East-Saskatchewan.generic.short=CT -Canada/East-Saskatchewan.standard.short=CST -Canada/Mountain.daylight.short=MDT -Canada/Mountain.generic.short=MT -Canada/Mountain.standard.short=MST -Canada/Newfoundland.daylight.short=NDT -Canada/Newfoundland.generic.short=NT -Canada/Newfoundland.standard.short=NST -Canada/Pacific.daylight.short=PDT -Canada/Pacific.generic.short=PT -Canada/Pacific.standard.short=PST -Canada/Saskatchewan.daylight.short=CDT -Canada/Saskatchewan.generic.short=CT -Canada/Saskatchewan.standard.short=CST -Canada/Yukon.daylight.short=PDT -Canada/Yukon.generic.short=PT -Canada/Yukon.standard.short=PST -CAT.daylight.short=CAST -CAT.generic.short=CAT -CAT.standard.short=CAT -CET.daylight.short=CEST -CET.generic.short=CET -CET.standard.short=CET -Chile/Continental.daylight.short=CLST -Chile/Continental.generic.short=CLT -Chile/Continental.standard.short=CLT -Chile/EasterIsland.daylight.short=EASST -Chile/EasterIsland.generic.short=EAST -Chile/EasterIsland.standard.short=EAST -CNT.daylight.short=NDT -CNT.generic.short=NT -CNT.standard.short=NST -CST6CDT.daylight.short=CDT -CST6CDT.generic.short=CT -CST6CDT.standard.short=CST -CST.daylight.short=CDT -CST.generic.short=CT -CST.standard.short=CST -CTT.daylight.short=CDT -CTT.generic.short=CT -CTT.standard.short=CST -Cuba.daylight.short=CDT -Cuba.generic.short=CT -Cuba.standard.short=CST -EAT.daylight.short=EAST -EAT.generic.short=EAT -EAT.standard.short=EAT -ECT.daylight.short=CEST -ECT.generic.short=CET -ECT.standard.short=CET -EET.daylight.short=EEST -EET.generic.short=EET -EET.standard.short=EET -Egypt.daylight.short=EEST -Egypt.generic.short=EET -Egypt.standard.short=EET -Eire.daylight.short=IST -Eire.generic.short=IT -Eire.standard.short=GMT -EST5EDT.daylight.short=EDT -EST5EDT.generic.short=ET -EST5EDT.standard.short=EST -EST.daylight.short=EDT -EST.generic.short=ET -EST.standard.short=EST -Etc/Greenwich.daylight.short=GMT -Etc/Greenwich.generic.short=GMT -Etc/Greenwich.standard.short=GMT -Etc/UCT.daylight.short=UTC -Etc/UCT.generic.short=UTC -Etc/UCT.standard.short=UTC -Etc/Universal.daylight.short=UTC -Etc/Universal.generic.short=UTC -Etc/Universal.standard.short=UTC -Etc/UTC.daylight.short=UTC -Etc/UTC.generic.short=UTC -Etc/UTC.standard.short=UTC -Etc/Zulu.daylight.short=UTC -Etc/Zulu.generic.short=UTC -Etc/Zulu.standard.short=UTC -Europe/Amsterdam.daylight.short=CEST -Europe/Amsterdam.generic.short=CET -Europe/Amsterdam.standard.short=CET -Europe/Andorra.daylight.short=CEST -Europe/Andorra.generic.short=CET -Europe/Andorra.standard.short=CET -Europe/Athens.daylight.short=EEST -Europe/Athens.generic.short=EET -Europe/Athens.standard.short=EET -Europe/Belfast.daylight.short=BST -Europe/Belfast.generic.short=BT -Europe/Belfast.standard.short=GMT -Europe/Belgrade.daylight.short=CEST -Europe/Belgrade.generic.short=CET -Europe/Belgrade.standard.short=CET -Europe/Berlin.daylight.short=CEST -Europe/Berlin.generic.short=CET -Europe/Berlin.standard.short=CET -Europe/Bratislava.daylight.short=CEST -Europe/Bratislava.generic.short=CET -Europe/Bratislava.standard.short=CET -Europe/Brussels.daylight.short=CEST -Europe/Brussels.generic.short=CET -Europe/Brussels.standard.short=CET -Europe/Bucharest.daylight.short=EEST -Europe/Bucharest.generic.short=EET -Europe/Bucharest.standard.short=EET -Europe/Budapest.daylight.short=CEST -Europe/Budapest.generic.short=CET -Europe/Budapest.standard.short=CET -Europe/Busingen.daylight.short=CEST -Europe/Busingen.generic.short=CET -Europe/Busingen.standard.short=CET -Europe/Chisinau.daylight.short=EEST -Europe/Chisinau.generic.short=EET -Europe/Chisinau.standard.short=EET -Europe/Copenhagen.daylight.short=CEST -Europe/Copenhagen.generic.short=CET -Europe/Copenhagen.standard.short=CET -Europe/Dublin.daylight.short=IST -Europe/Dublin.generic.short=IT -Europe/Dublin.standard.short=GMT -Europe/Gibraltar.daylight.short=CEST -Europe/Gibraltar.generic.short=CET -Europe/Gibraltar.standard.short=CET -Europe/Guernsey.daylight.short=BST -Europe/Guernsey.generic.short=BT -Europe/Guernsey.standard.short=GMT -Europe/Helsinki.daylight.short=EEST -Europe/Helsinki.generic.short=EET -Europe/Helsinki.standard.short=EET -Europe/Isle_of_Man.daylight.short=BST -Europe/Isle_of_Man.generic.short=BT -Europe/Isle_of_Man.standard.short=GMT -Europe/Istanbul.daylight.short=EEST -Europe/Istanbul.generic.short=EET -Europe/Istanbul.standard.short=EET -Europe/Jersey.daylight.short=BST -Europe/Jersey.generic.short=BT -Europe/Jersey.standard.short=GMT -Europe/Kaliningrad.daylight.short=FEST -Europe/Kaliningrad.generic.short=FET -Europe/Kaliningrad.standard.short=FET -Europe/Kiev.daylight.short=EEST -Europe/Kiev.generic.short=EET -Europe/Kiev.standard.short=EET -Europe/Lisbon.daylight.short=WEST -Europe/Lisbon.generic.short=WET -Europe/Lisbon.standard.short=WET -Europe/Ljubljana.daylight.short=CEST -Europe/Ljubljana.generic.short=CET -Europe/Ljubljana.standard.short=CET -Europe/London.daylight.short=BST -Europe/London.generic.short=BT -Europe/London.standard.short=GMT -Europe/Luxembourg.daylight.short=CEST -Europe/Luxembourg.generic.short=CET -Europe/Luxembourg.standard.short=CET -Europe/Madrid.daylight.short=CEST -Europe/Madrid.generic.short=CET -Europe/Madrid.standard.short=CET -Europe/Malta.daylight.short=CEST -Europe/Malta.generic.short=CET -Europe/Malta.standard.short=CET -Europe/Mariehamn.daylight.short=EEST -Europe/Mariehamn.generic.short=EET -Europe/Mariehamn.standard.short=EET -Europe/Minsk.daylight.short=FEST -Europe/Minsk.generic.short=FET -Europe/Minsk.standard.short=FET -Europe/Monaco.daylight.short=CEST -Europe/Monaco.generic.short=CET -Europe/Monaco.standard.short=CET -Europe/Moscow.daylight.short=MSD -Europe/Moscow.generic.short=MT -Europe/Moscow.standard.short=MSK -Europe/Nicosia.daylight.short=EEST -Europe/Nicosia.generic.short=EET -Europe/Nicosia.standard.short=EET -Europe/Oslo.daylight.short=CEST -Europe/Oslo.generic.short=CET -Europe/Oslo.standard.short=CET -Europe/Paris.daylight.short=CEST -Europe/Paris.generic.short=CET -Europe/Paris.standard.short=CET -Europe/Podgorica.daylight.short=CEST -Europe/Podgorica.generic.short=CET -Europe/Podgorica.standard.short=CET -Europe/Prague.daylight.short=CEST -Europe/Prague.generic.short=CET -Europe/Prague.standard.short=CET -Europe/Riga.daylight.short=EEST -Europe/Riga.generic.short=EET -Europe/Riga.standard.short=EET -Europe/Rome.daylight.short=CEST -Europe/Rome.generic.short=CET -Europe/Rome.standard.short=CET -Europe/Samara.daylight.short=SAMST -Europe/Samara.generic.short=SAMT -Europe/Samara.standard.short=SAMT -Europe/San_Marino.daylight.short=CEST -Europe/San_Marino.generic.short=CET -Europe/San_Marino.standard.short=CET -Europe/Sarajevo.daylight.short=CEST -Europe/Sarajevo.generic.short=CET -Europe/Sarajevo.standard.short=CET -Europe/Simferopol.daylight.short=EEST -Europe/Simferopol.generic.short=EET -Europe/Simferopol.standard.short=EET -Europe/Skopje.daylight.short=CEST -Europe/Skopje.generic.short=CET -Europe/Skopje.standard.short=CET -Europe/Sofia.daylight.short=EEST -Europe/Sofia.generic.short=EET -Europe/Sofia.standard.short=EET -Europe/Stockholm.daylight.short=CEST -Europe/Stockholm.generic.short=CET -Europe/Stockholm.standard.short=CET -Europe/Tallinn.daylight.short=EEST -Europe/Tallinn.generic.short=EET -Europe/Tallinn.standard.short=EET -Europe/Tirane.daylight.short=CEST -Europe/Tirane.generic.short=CET -Europe/Tirane.standard.short=CET -Europe/Tiraspol.daylight.short=EEST -Europe/Tiraspol.generic.short=EET -Europe/Tiraspol.standard.short=EET -Europe/Uzhgorod.daylight.short=EEST -Europe/Uzhgorod.generic.short=EET -Europe/Uzhgorod.standard.short=EET -Europe/Vaduz.daylight.short=CEST -Europe/Vaduz.generic.short=CET -Europe/Vaduz.standard.short=CET -Europe/Vatican.daylight.short=CEST -Europe/Vatican.generic.short=CET -Europe/Vatican.standard.short=CET -Europe/Vienna.daylight.short=CEST -Europe/Vienna.generic.short=CET -Europe/Vienna.standard.short=CET -Europe/Vilnius.daylight.short=EEST -Europe/Vilnius.generic.short=EET -Europe/Vilnius.standard.short=EET -Europe/Volgograd.daylight.short=VOLST -Europe/Volgograd.generic.short=VOLT -Europe/Volgograd.standard.short=VOLT -Europe/Warsaw.daylight.short=CEST -Europe/Warsaw.generic.short=CET -Europe/Warsaw.standard.short=CET -Europe/Zagreb.daylight.short=CEST -Europe/Zagreb.generic.short=CET -Europe/Zagreb.standard.short=CET -Europe/Zaporozhye.daylight.short=EEST -Europe/Zaporozhye.generic.short=EET -Europe/Zaporozhye.standard.short=EET -Europe/Zurich.daylight.short=CEST -Europe/Zurich.generic.short=CET -Europe/Zurich.standard.short=CET -GB.daylight.short=BST -GB-Eire.daylight.short=BST -GB-Eire.generic.short=BT -GB-Eire.standard.short=GMT -GB.generic.short=BT -GB.standard.short=GMT -GMT.daylight.short=GMT -GMT.generic.short=GMT -GMT.standard.short=GMT -Greenwich.daylight.short=GMT -Greenwich.generic.short=GMT -Greenwich.standard.short=GMT -Hongkong.daylight.short=HKST -Hongkong.generic.short=HKT -Hongkong.standard.short=HKT -HST.daylight.short=HDT -HST.generic.short=HT -HST.standard.short=HST -Iceland.daylight.short=GMT -Iceland.generic.short=GMT -Iceland.standard.short=GMT -IET.daylight.short=EDT -IET.generic.short=ET -IET.standard.short=EST -Indian/Antananarivo.daylight.short=EAST -Indian/Antananarivo.generic.short=EAT -Indian/Antananarivo.standard.short=EAT -Indian/Chagos.daylight.short=IOST -Indian/Chagos.generic.short=IOT -Indian/Chagos.standard.short=IOT -Indian/Christmas.daylight.short=CXST -Indian/Christmas.generic.short=CIT -Indian/Christmas.standard.short=CXT -Indian/Cocos.daylight.short=CCST -Indian/Cocos.generic.short=CCT -Indian/Cocos.standard.short=CCT -Indian/Comoro.daylight.short=EAST -Indian/Comoro.generic.short=EAT -Indian/Comoro.standard.short=EAT -Indian/Kerguelen.daylight.short=TFST -Indian/Kerguelen.generic.short=TFT -Indian/Kerguelen.standard.short=TFT -Indian/Mahe.daylight.short=SCST -Indian/Mahe.generic.short=SCT -Indian/Mahe.standard.short=SCT -Indian/Maldives.daylight.short=MVST -Indian/Maldives.generic.short=MVT -Indian/Maldives.standard.short=MVT -Indian/Mauritius.daylight.short=MUST -Indian/Mauritius.generic.short=MUT -Indian/Mauritius.standard.short=MUT -Indian/Mayotte.daylight.short=EAST -Indian/Mayotte.generic.short=EAT -Indian/Mayotte.standard.short=EAT -Indian/Reunion.daylight.short=REST -Indian/Reunion.generic.short=RET -Indian/Reunion.standard.short=RET -Iran.daylight.short=IRDT -Iran.generic.short=IRT -Iran.standard.short=IRST -Israel.daylight.short=IDT -Israel.generic.short=IT -Israel.standard.short=IST -IST.daylight.short=IDT -IST.generic.short=IT -IST.standard.short=IST -Jamaica.daylight.short=EDT -Jamaica.generic.short=ET -Jamaica.standard.short=EST -Japan.daylight.short=JDT -Japan.generic.short=JT -Japan.standard.short=JST -JST.daylight.short=JDT -JST.generic.short=JT -JST.standard.short=JST -Kwajalein.daylight.short=MHST -Kwajalein.generic.short=MHT -Kwajalein.standard.short=MHT -Libya.daylight.short=EEST -Libya.generic.short=EET -Libya.standard.short=EET -MET.daylight.short=MEST -MET.generic.short=MET -MET.standard.short=MET -Mexico/BajaNorte.daylight.short=PDT -Mexico/BajaNorte.generic.short=PT -Mexico/BajaNorte.standard.short=PST -Mexico/BajaSur.daylight.short=MDT -Mexico/BajaSur.generic.short=MT -Mexico/BajaSur.standard.short=MST -Mexico/General.daylight.short=CDT -Mexico/General.generic.short=CT -Mexico/General.standard.short=CST -MIT.daylight.short=WSDT -MIT.generic.short=WST -MIT.standard.short=WST -MST7MDT.daylight.short=MDT -MST7MDT.generic.short=MT -MST7MDT.standard.short=MST -MST.daylight.short=MDT -MST.generic.short=MT -MST.standard.short=MST -Navajo.daylight.short=MDT -Navajo.generic.short=MT -Navajo.standard.short=MST -NET.daylight.short=AMST -NET.generic.short=AMT -NET.standard.short=AMT -NST.daylight.short=NZDT -NST.generic.short=NZT -NST.standard.short=NZST -NZ-CHAT.daylight.short=CHADT -NZ-CHAT.generic.short=CHAT -NZ-CHAT.standard.short=CHAST -NZ.daylight.short=NZDT -NZ.generic.short=NZT -NZ.standard.short=NZST -Pacific/Apia.daylight.short=WSDT -Pacific/Apia.generic.short=WST -Pacific/Apia.standard.short=WST -Pacific/Auckland.daylight.short=NZDT -Pacific/Auckland.generic.short=NZT -Pacific/Auckland.standard.short=NZST -Pacific/Chatham.daylight.short=CHADT -Pacific/Chatham.generic.short=CHAT -Pacific/Chatham.standard.short=CHAST -Pacific/Chuuk.daylight.short=CHUST -Pacific/Chuuk.generic.short=CHUT -Pacific/Chuuk.standard.short=CHUT -Pacific/Easter.daylight.short=EASST -Pacific/Easter.generic.short=EAST -Pacific/Easter.standard.short=EAST -Pacific/Efate.daylight.short=VUST -Pacific/Efate.generic.short=VUT -Pacific/Efate.standard.short=VUT -Pacific/Enderbury.daylight.short=PHOST -Pacific/Enderbury.generic.short=PHOT -Pacific/Enderbury.standard.short=PHOT -Pacific/Fakaofo.daylight.short=TKST -Pacific/Fakaofo.generic.short=TKT -Pacific/Fakaofo.standard.short=TKT -Pacific/Fiji.daylight.short=FJST -Pacific/Fiji.generic.short=FJT -Pacific/Fiji.standard.short=FJT -Pacific/Funafuti.daylight.short=TVST -Pacific/Funafuti.generic.short=TVT -Pacific/Funafuti.standard.short=TVT -Pacific/Galapagos.daylight.short=GALST -Pacific/Galapagos.generic.short=GALT -Pacific/Galapagos.standard.short=GALT -Pacific/Gambier.daylight.short=GAMST -Pacific/Gambier.generic.short=GAMT -Pacific/Gambier.standard.short=GAMT -Pacific/Guadalcanal.daylight.short=SBST -Pacific/Guadalcanal.generic.short=SBT -Pacific/Guadalcanal.standard.short=SBT -Pacific/Guam.daylight.short=ChDT -Pacific/Guam.generic.short=ChT -Pacific/Guam.standard.short=ChST -Pacific/Honolulu.daylight.short=HDT -Pacific/Honolulu.generic.short=HT -Pacific/Honolulu.standard.short=HST -Pacific/Johnston.daylight.short=HDT -Pacific/Johnston.generic.short=HT -Pacific/Johnston.standard.short=HST -Pacific/Kiritimati.daylight.short=LINST -Pacific/Kiritimati.generic.short=LINT -Pacific/Kiritimati.standard.short=LINT -Pacific/Kosrae.daylight.short=KOSST -Pacific/Kosrae.generic.short=KOST -Pacific/Kosrae.standard.short=KOST -Pacific/Kwajalein.daylight.short=MHST -Pacific/Kwajalein.generic.short=MHT -Pacific/Kwajalein.standard.short=MHT -Pacific/Majuro.daylight.short=MHST -Pacific/Majuro.generic.short=MHT -Pacific/Majuro.standard.short=MHT -Pacific/Marquesas.daylight.short=MARST -Pacific/Marquesas.generic.short=MART -Pacific/Marquesas.standard.short=MART -Pacific/Midway.daylight.short=SDT -Pacific/Midway.generic.short=ST -Pacific/Midway.standard.short=SST -Pacific/Nauru.daylight.short=NRST -Pacific/Nauru.generic.short=NRT -Pacific/Nauru.standard.short=NRT -Pacific/Niue.daylight.short=NUST -Pacific/Niue.generic.short=NUT -Pacific/Niue.standard.short=NUT -Pacific/Norfolk.daylight.short=NFST -Pacific/Norfolk.generic.short=NFT -Pacific/Norfolk.standard.short=NFT -Pacific/Noumea.daylight.short=NCST -Pacific/Noumea.generic.short=NCT -Pacific/Noumea.standard.short=NCT -Pacific/Pago_Pago.daylight.short=SDT -Pacific/Pago_Pago.generic.short=ST -Pacific/Pago_Pago.standard.short=SST -Pacific/Palau.daylight.short=PWST -Pacific/Palau.generic.short=PWT -Pacific/Palau.standard.short=PWT -Pacific/Pitcairn.daylight.short=PDT -Pacific/Pitcairn.generic.short=PT -Pacific/Pitcairn.standard.short=PST -Pacific/Pohnpei.daylight.short=PONST -Pacific/Pohnpei.generic.short=PONT -Pacific/Pohnpei.standard.short=PONT -Pacific/Ponape.daylight.short=PONST -Pacific/Ponape.generic.short=PONT -Pacific/Ponape.standard.short=PONT -Pacific/Port_Moresby.daylight.short=PGST -Pacific/Port_Moresby.generic.short=PGT -Pacific/Port_Moresby.standard.short=PGT -Pacific/Rarotonga.daylight.short=CKHST -Pacific/Rarotonga.generic.short=CKT -Pacific/Rarotonga.standard.short=CKT -Pacific/Saipan.daylight.short=ChDT -Pacific/Saipan.generic.short=ChT -Pacific/Saipan.standard.short=ChST -Pacific/Samoa.daylight.short=SDT -Pacific/Samoa.generic.short=ST -Pacific/Samoa.standard.short=SST -Pacific/Tahiti.daylight.short=TAHST -Pacific/Tahiti.generic.short=TAHT -Pacific/Tahiti.standard.short=TAHT -Pacific/Tarawa.daylight.short=GILST -Pacific/Tarawa.generic.short=GILT -Pacific/Tarawa.standard.short=GILT -Pacific/Tongatapu.daylight.short=TOST -Pacific/Tongatapu.generic.short=TOT -Pacific/Tongatapu.standard.short=TOT -Pacific/Truk.daylight.short=CHUST -Pacific/Truk.generic.short=CHUT -Pacific/Truk.standard.short=CHUT -Pacific/Wake.daylight.short=WAKST -Pacific/Wake.generic.short=WAKT -Pacific/Wake.standard.short=WAKT -Pacific/Wallis.daylight.short=WFST -Pacific/Wallis.generic.short=WFT -Pacific/Wallis.standard.short=WFT -Pacific/Yap.daylight.short=CHUST -Pacific/Yap.generic.short=CHUT -Pacific/Yap.standard.short=CHUT -PLT.daylight.short=PKST -PLT.generic.short=PKT -PLT.standard.short=PKT -PNT.daylight.short=MDT -PNT.generic.short=MT -PNT.standard.short=MST -Poland.daylight.short=CEST -Poland.generic.short=CET -Poland.standard.short=CET -Portugal.daylight.short=WEST -Portugal.generic.short=WET -Portugal.standard.short=WET -PRC.daylight.short=CDT -PRC.generic.short=CT -PRC.standard.short=CST -PRT.daylight.short=ADT -PRT.generic.short=AT -PRT.standard.short=AST -PST8PDT.daylight.short=PDT -PST8PDT.generic.short=PT -PST8PDT.standard.short=PST -PST.daylight.short=PDT -PST.generic.short=PT -PST.standard.short=PST -ROK.daylight.short=KDT -ROK.generic.short=KT -ROK.standard.short=KST -Singapore.daylight.short=SGST -Singapore.generic.short=SGT -Singapore.standard.short=SGT -SST.daylight.short=SBST -SST.generic.short=SBT -SST.standard.short=SBT -SystemV/AST4ADT.daylight.short=ADT -SystemV/AST4ADT.generic.short=AT -SystemV/AST4ADT.standard.short=AST -SystemV/AST4.daylight.short=ADT -SystemV/AST4.generic.short=AT -SystemV/AST4.standard.short=AST -SystemV/CST6CDT.daylight.short=CDT -SystemV/CST6CDT.generic.short=CT -SystemV/CST6CDT.standard.short=CST -SystemV/CST6.daylight.short=CDT -SystemV/CST6.generic.short=CT -SystemV/CST6.standard.short=CST -SystemV/EST5.daylight.short=EDT -SystemV/EST5EDT.daylight.short=EDT -SystemV/EST5EDT.generic.short=ET -SystemV/EST5EDT.standard.short=EST -SystemV/EST5.generic.short=ET -SystemV/EST5.standard.short=EST -SystemV/HST10.daylight.short=HDT -SystemV/HST10.generic.short=HT -SystemV/HST10.standard.short=HST -SystemV/MST7.daylight.short=MDT -SystemV/MST7.generic.short=MT -SystemV/MST7MDT.daylight.short=MDT -SystemV/MST7MDT.generic.short=MT -SystemV/MST7MDT.standard.short=MST -SystemV/MST7.standard.short=MST -SystemV/PST8.daylight.short=PDT -SystemV/PST8.generic.short=PT -SystemV/PST8PDT.daylight.short=PDT -SystemV/PST8PDT.generic.short=PT -SystemV/PST8PDT.standard.short=PST -SystemV/PST8.standard.short=PST -SystemV/YST9.daylight.short=AKDT -SystemV/YST9.generic.short=AKT -SystemV/YST9.standard.short=AKST -SystemV/YST9YDT.daylight.short=AKDT -SystemV/YST9YDT.generic.short=AKT -SystemV/YST9YDT.standard.short=AKST -Turkey.daylight.short=EEST -Turkey.generic.short=EET -Turkey.standard.short=EET -UCT.daylight.short=UTC -UCT.generic.short=UTC -UCT.standard.short=UTC -Universal.daylight.short=UTC -Universal.generic.short=UTC -Universal.standard.short=UTC -US/Alaska.daylight.short=AKDT -US/Alaska.generic.short=AKT -US/Alaska.standard.short=AKST -US/Aleutian.daylight.short=HADT -US/Aleutian.generic.short=HAT -US/Aleutian.standard.short=HAST -US/Arizona.daylight.short=MDT -US/Arizona.generic.short=MT -US/Arizona.standard.short=MST -US/Central.daylight.short=CDT -US/Central.generic.short=CT -US/Central.standard.short=CST -US/Eastern.daylight.short=EDT -US/Eastern.generic.short=ET -US/Eastern.standard.short=EST -US/East-Indiana.daylight.short=EDT -US/East-Indiana.generic.short=ET -US/East-Indiana.standard.short=EST -US/Hawaii.daylight.short=HDT -US/Hawaii.generic.short=HT -US/Hawaii.standard.short=HST -US/Indiana-Starke.daylight.short=CDT -US/Indiana-Starke.generic.short=CT -US/Indiana-Starke.standard.short=CST -US/Michigan.daylight.short=EDT -US/Michigan.generic.short=ET -US/Michigan.standard.short=EST -US/Mountain.daylight.short=MDT -US/Mountain.generic.short=MT -US/Mountain.standard.short=MST -US/Pacific.daylight.short=PDT -US/Pacific.generic.short=PT -US/Pacific-New.daylight.short=PDT -US/Pacific-New.generic.short=PT -US/Pacific-New.standard.short=PST -US/Pacific.standard.short=PST -US/Samoa.daylight.short=SDT -US/Samoa.generic.short=ST -US/Samoa.standard.short=SST -UTC.daylight.short=UTC -UTC.generic.short=UTC -UTC.standard.short=UTC -VST.daylight.short=ICST -VST.generic.short=ICT -VST.standard.short=ICT -WET.daylight.short=WEST -WET.generic.short=WET -WET.standard.short=WET -W-SU.daylight.short=MSD -W-SU.generic.short=MT -W-SU.standard.short=MSK -Zulu.daylight.short=UTC -Zulu.generic.short=UTC -Zulu.standard.short=UTC diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_CN.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_CN.properties deleted file mode 100644 index 62ccf2936e0..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_CN.properties +++ /dev/null @@ -1,651 +0,0 @@ -ACT.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5317\u9886\u5730) -ACT.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5317\u90E8\u5730\u533A) -ACT.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5317\u9886\u5730) -AET.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF) -AET.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF) -AET.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF) -AGT.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -ART.generic.long=\u4E1C\u6B27\u65F6\u95F4 -AST.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4 -Africa/Abidjan.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Africa/Accra.generic.long=\u52A0\u7EB3\u65F6\u95F4 -Africa/Addis_Ababa.generic.long=\u4E1C\u975E\u65F6\u95F4 -Africa/Algiers.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Africa/Asmara.generic.long=\u4E1C\u975E\u65F6\u95F4 -Africa/Asmera.generic.long=\u4E1C\u975E\u65F6\u95F4 -Africa/Bamako.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Africa/Bangui.generic.long=\u897F\u975E\u65F6\u95F4 -Africa/Banjul.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Africa/Bissau.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Africa/Blantyre.generic.long=\u4E2D\u975E\u65F6\u95F4 -Africa/Brazzaville.generic.long=\u897F\u975E\u65F6\u95F4 -Africa/Bujumbura.generic.long=\u4E2D\u975E\u65F6\u95F4 -Africa/Cairo.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Africa/Casablanca.generic.long=\u897F\u6B27\u65F6\u95F4 -Africa/Ceuta.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Africa/Conakry.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Africa/Dakar.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Africa/Dar_es_Salaam.generic.long=\u4E1C\u975E\u65F6\u95F4 -Africa/Djibouti.generic.long=\u4E1C\u975E\u65F6\u95F4 -Africa/Douala.generic.long=\u897F\u975E\u65F6\u95F4 -Africa/El_Aaiun.generic.long=\u897F\u6B27\u65F6\u95F4 -Africa/Freetown.generic.long=\u585E\u62C9\u91CC\u6602\u65F6\u95F4 -Africa/Gaborone.generic.long=\u4E2D\u975E\u65F6\u95F4 -Africa/Harare.generic.long=\u4E2D\u975E\u65F6\u95F4 -Africa/Johannesburg.generic.long=\u5357\u975E\u65F6\u95F4 -Africa/Juba.generic.long=\u4E1C\u975E\u65F6\u95F4 -Africa/Kampala.generic.long=\u4E1C\u975E\u65F6\u95F4 -Africa/Khartoum.generic.long=\u4E1C\u975E\u65F6\u95F4 -Africa/Kigali.generic.long=\u4E2D\u975E\u65F6\u95F4 -Africa/Kinshasa.generic.long=\u897F\u975E\u65F6\u95F4 -Africa/Lagos.generic.long=\u897F\u975E\u65F6\u95F4 -Africa/Libreville.generic.long=\u897F\u975E\u65F6\u95F4 -Africa/Lome.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Africa/Luanda.generic.long=\u897F\u975E\u65F6\u95F4 -Africa/Lubumbashi.generic.long=\u4E2D\u975E\u65F6\u95F4 -Africa/Lusaka.generic.long=\u4E2D\u975E\u65F6\u95F4 -Africa/Malabo.generic.long=\u897F\u975E\u65F6\u95F4 -Africa/Maputo.generic.long=\u4E2D\u975E\u65F6\u95F4 -Africa/Maseru.generic.long=\u5357\u975E\u65F6\u95F4 -Africa/Mbabane.generic.long=\u5357\u975E\u65F6\u95F4 -Africa/Mogadishu.generic.long=\u4E1C\u975E\u65F6\u95F4 -Africa/Monrovia.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Africa/Nairobi.generic.long=\u4E1C\u975E\u65F6\u95F4 -Africa/Ndjamena.generic.long=\u897F\u975E\u65F6\u95F4 -Africa/Niamey.generic.long=\u897F\u975E\u65F6\u95F4 -Africa/Nouakchott.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Africa/Ouagadougou.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Africa/Porto-Novo.generic.long=\u897F\u975E\u65F6\u95F4 -Africa/Sao_Tome.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Africa/Timbuktu.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Africa/Tripoli.generic.long=\u4e1c\u6b27\u65f6\u95f4 -Africa/Tunis.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Africa/Windhoek.generic.long=\u897F\u975E\u65F6\u95F4 -America/Adak.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u65F6\u95F4 -America/Anchorage.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4 -America/Anguilla.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Antigua.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Araguaina.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4 -America/Argentina/Buenos_Aires.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Argentina/Catamarca.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Argentina/ComodRivadavia.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Argentina/Cordoba.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Argentina/Jujuy.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Argentina/La_Rioja.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Argentina/Mendoza.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Argentina/Rio_Gallegos.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Argentina/Salta.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Argentina/San_Juan.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Argentina/San_Luis.generic.long=\u963f\u6839\u5ef7\u65f6\u95f4 -America/Argentina/Tucuman.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Argentina/Ushuaia.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Aruba.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Asuncion.generic.long=\u5DF4\u62C9\u572D\u65F6\u95F4 -America/Atikokan.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Atka.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u65F6\u95F4 -America/Bahia.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4 -America/Bahia_Banderas.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Barbados.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Belem.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4 -America/Belize.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Blanc-Sablon.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Boa_Vista.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4 -America/Bogota.generic.long=\u54E5\u4F26\u6BD4\u4E9A\u65F6\u95F4 -America/Boise.generic.long=\u5C71\u5730\u65F6\u95F4 -America/Buenos_Aires.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Cambridge_Bay.generic.long=\u5C71\u5730\u65F6\u95F4 -America/Campo_Grande.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4 -America/Cancun.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Caracas.generic.long=\u59D4\u5185\u745E\u62C9\u65F6\u95F4 -America/Catamarca.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Cayenne.generic.long=\u6CD5\u5C5E\u572D\u4E9A\u90A3\u65F6\u95F4 -America/Cayman.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Chicago.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Chihuahua.generic.long=\u5C71\u5730\u65F6\u95F4 -America/Coral_Harbour.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Cordoba.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Costa_Rica.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Creston.generic.long=\u5C71\u5730\u65F6\u95F4 -America/Cuiaba.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4 -America/Curacao.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Danmarkshavn.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -America/Dawson.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -America/Dawson_Creek.generic.long=\u5C71\u5730\u65F6\u95F4 -America/Denver.generic.long=\u5C71\u5730\u65F6\u95F4 -America/Detroit.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Dominica.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Edmonton.generic.long=\u5C71\u5730\u65F6\u95F4 -America/Eirunepe.generic.long=Acre \u65f6\u95f4 -America/El_Salvador.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Ensenada.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -America/Fort_Wayne.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Fortaleza.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4 -America/Glace_Bay.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Godthab.generic.long=\u897F\u683C\u6797\u5170\u5C9B\u65F6\u95F4 -America/Goose_Bay.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Grand_Turk.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Grenada.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Guadeloupe.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Guatemala.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Guayaquil.generic.long=\u5384\u74DC\u591A\u5C14\u65F6\u95F4 -America/Guyana.generic.long=\u572D\u4E9A\u90A3\u65F6\u95F4 -America/Halifax.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Havana.generic.long=\u53E4\u5DF4\u65F6\u95F4 -America/Hermosillo.generic.long=\u5C71\u5730\u65F6\u95F4 -America/Indiana/Indianapolis.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Indiana/Knox.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Indiana/Marengo.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Indiana/Petersburg.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Indiana/Tell_City.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Indiana/Vevay.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Indiana/Vincennes.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Indiana/Winamac.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Indianapolis.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Inuvik.generic.long=\u5C71\u5730\u65F6\u95F4 -America/Iqaluit.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Jamaica.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Jujuy.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Juneau.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4 -America/Kentucky/Louisville.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Kentucky/Monticello.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Knox_IN.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Kralendijk.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/La_Paz.generic.long=\u73BB\u5229\u7EF4\u4E9A\u65F6\u95F4 -America/Lima.generic.long=\u79D8\u9C81\u65F6\u95F4 -America/Los_Angeles.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -America/Louisville.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Lower_Princes.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Maceio.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4 -America/Managua.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Manaus.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4 -America/Marigot.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Martinique.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Matamoros.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Mazatlan.generic.long=\u5C71\u5730\u65F6\u95F4 -America/Mendoza.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Menominee.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Merida.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Metlakatla.daylight.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u590F\u4EE4\u65F6 -America/Metlakatla.generic.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u65F6\u95F4 -America/Metlakatla.standard.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u6807\u51C6\u65F6\u95F4 -America/Mexico_City.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Miquelon.generic.long=\u76AE\u57C3\u5C14\u548C\u5BC6\u514B\u9686\u5C9B\u65F6\u95F4 -America/Moncton.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Monterrey.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Montevideo.generic.long=\u4E4C\u62C9\u572D\u65F6\u95F4 -America/Montreal.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Montserrat.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Nassau.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/New_York.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Nipigon.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Nome.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4 -America/Noronha.generic.long=\u8D39\u5C14\u5357\u591A\u5FB7\u8BFA\u7F57\u5C3C\u4E9A\u65F6\u95F4 -America/North_Dakota/Beulah.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/North_Dakota/Center.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/North_Dakota/New_Salem.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Ojinaga.generic.long=\u5C71\u5730\u65F6\u95F4 -America/Panama.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Pangnirtung.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Paramaribo.generic.long=\u82CF\u5229\u5357\u65F6\u95F4 -America/Phoenix.generic.long=\u5C71\u5730\u65F6\u95F4 -America/Port-au-Prince.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Port_of_Spain.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Porto_Acre.generic.long=Acre \u65f6\u95f4 -America/Porto_Velho.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4 -America/Puerto_Rico.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Rainy_River.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Rankin_Inlet.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Recife.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4 -America/Regina.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Resolute.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Rio_Branco.generic.long=Acre \u65f6\u95f4 -America/Rosario.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4 -America/Santa_Isabel.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -America/Santarem.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4 -America/Santiago.generic.long=\u667A\u5229\u65F6\u95F4 -America/Santo_Domingo.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Sao_Paulo.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4 -America/Scoresbysund.generic.long=\u4E1C\u683C\u6797\u5C9B\u65F6\u95F4 -America/Shiprock.generic.long=\u5C71\u5730\u65F6\u95F4 -America/Sitka.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4 -America/St_Barthelemy.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/St_Johns.generic.long=\u7EBD\u82AC\u5170\u65F6\u95F4 -America/St_Kitts.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/St_Lucia.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/St_Thomas.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/St_Vincent.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Swift_Current.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Tegucigalpa.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Thule.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Thunder_Bay.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Tijuana.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -America/Toronto.generic.long=\u4E1C\u90E8\u65F6\u95F4 -America/Tortola.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Vancouver.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -America/Virgin.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -America/Whitehorse.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -America/Winnipeg.generic.long=\u4E2D\u90E8\u65F6\u95F4 -America/Yakutat.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4 -America/Yellowknife.generic.long=\u5C71\u5730\u65F6\u95F4 -Antarctica/Casey.daylight.long=\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A) -Antarctica/Casey.generic.long=\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A) -Antarctica/Casey.standard.long=\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A) -Antarctica/Davis.generic.long=\u6234\u7EF4\u65AF\u65F6\u95F4 -Antarctica/DumontDUrville.generic.long=Dumont-d'Urville \u65F6\u95F4 -Antarctica/Macquarie.daylight.long=\u9EA6\u5938\u91CC\u5C9B\u590F\u4EE4\u65F6 -Antarctica/Macquarie.generic.long=\u9EA6\u5938\u91CC\u5C9B\u65F6\u95F4 -Antarctica/Macquarie.standard.long=\u9EA6\u5938\u91CC\u5C9B\u65F6\u95F4 -Antarctica/Mawson.generic.long=\u83AB\u68EE\u65F6\u95F4 -Antarctica/McMurdo.generic.long=\u65B0\u897F\u5170\u65F6\u95F4 -Antarctica/Palmer.generic.long=\u667A\u5229\u65F6\u95F4 -Antarctica/Rothera.generic.long=\u7F57\u745F\u62C9\u65F6\u95F4 -Antarctica/South_Pole.generic.long=\u65B0\u897F\u5170\u65F6\u95F4 -Antarctica/Syowa.generic.long=Syowa \u65F6\u95F4 -Antarctica/Vostok.generic.long=\u83AB\u65AF\u6258\u514B\u65F6\u95F4 -Arctic/Longyearbyen.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Asia/Aden.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4 -Asia/Almaty.generic.long=Alma-Ata \u65F6\u95F4 -Asia/Amman.generic.long=\u963f\u62c9\u4f2f\u534a\u5c9b\u65f6\u95f4 -Asia/Anadyr.generic.long=\u963F\u90A3\u5E95\u6CB3\u65F6\u95F4 -Asia/Aqtau.generic.long=Aqtau \u65F6\u95F4 -Asia/Aqtobe.generic.long=Aqtobe \u65F6\u95F4 -Asia/Ashgabat.generic.long=\u571F\u5E93\u66FC\u65F6\u95F4 -Asia/Ashkhabad.generic.long=\u571F\u5E93\u66FC\u65F6\u95F4 -Asia/Baghdad.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4 -Asia/Bahrain.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4 -Asia/Baku.generic.long=\u4E9A\u585E\u62DC\u7136\u65F6\u95F4 -Asia/Bangkok.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4 -Asia/Beirut.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Asia/Bishkek.generic.long=\u5409\u5C14\u5409\u65AF\u65AF\u5766\u65F6\u95F4 -Asia/Brunei.generic.long=\u6587\u83B1\u65F6\u95F4 -Asia/Calcutta.generic.long=\u5370\u5EA6\u65F6\u95F4 -Asia/Choibalsan.generic.long=Choibalsan \u65F6\u95F4 -Asia/Chongqing.generic.long=\u4E2D\u56FD\u65F6\u95F4 -Asia/Chungking.generic.long=\u4E2D\u56FD\u65F6\u95F4 -Asia/Colombo.generic.long=\u5370\u5EA6\u65F6\u95F4 -Asia/Dacca.generic.long=\u5B5F\u52A0\u62C9\u65F6\u95F4 -Asia/Damascus.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Asia/Dhaka.generic.long=\u5B5F\u52A0\u62C9\u65F6\u95F4 -Asia/Dili.generic.long=\u4E1C\u5E1D\u6C76\u65F6\u95F4 -Asia/Dubai.generic.long=\u6D77\u6E7E\u65F6\u95F4 -Asia/Dushanbe.generic.long=\u5854\u5409\u514B\u65AF\u5766\u65F6\u95F4 -Asia/Gaza.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Asia/Harbin.generic.long=\u4E2D\u56FD\u65F6\u95F4 -Asia/Hebron.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Asia/Ho_Chi_Minh.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4 -Asia/Hong_Kong.generic.long=\u9999\u6E2F\u65F6\u95F4 -Asia/Hovd.generic.long=\u79D1\u5E03\u591A\u65F6\u95F4 -Asia/Irkutsk.generic.long=\u4F0A\u5C14\u5E93\u6B21\u514B\u65F6\u95F4 -Asia/Istanbul.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Asia/Jakarta.generic.long=\u897F\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4 -Asia/Jayapura.generic.long=\u4E1C\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4 -Asia/Jerusalem.generic.long=\u4EE5\u8272\u5217\u65F6\u95F4 -Asia/Kabul.generic.long=\u963F\u5BCC\u6C57\u65F6\u95F4 -Asia/Kamchatka.generic.long=\u5F7C\u5F97\u7F57\u5DF4\u752B\u6D1B\u592B\u65AF\u514B\u65F6\u95F4 -Asia/Karachi.generic.long=\u5DF4\u57FA\u65AF\u5766\u65F6\u95F4 -Asia/Kashgar.generic.long=\u4E2D\u56FD\u65F6\u95F4 -Asia/Kathmandu.generic.long=\u5C3C\u6CCA\u5C14\u65F6\u95F4 -Asia/Katmandu.generic.long=\u5C3C\u6CCA\u5C14\u65F6\u95F4 -Asia/Khandyga.daylight.long=\u6C49\u5FB7\u52A0\u590F\u4EE4\u65F6 -Asia/Khandyga.generic.long=\u6C49\u5FB7\u52A0\u65F6\u95F4 -Asia/Khandyga.standard.long=\u6C49\u5FB7\u52A0\u65F6\u95F4 -Asia/Kolkata.generic.long=\u5370\u5EA6\u65F6\u95F4 -Asia/Krasnoyarsk.generic.long=\u514B\u62C9\u65AF\u8BFA\u4E9A\u5C14\u65AF\u514B\u65F6\u95F4 -Asia/Kuala_Lumpur.generic.long=\u9A6C\u6765\u897F\u4E9A\u65F6\u95F4 -Asia/Kuching.generic.long=\u9A6C\u6765\u897F\u4E9A\u65F6\u95F4 -Asia/Kuwait.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4 -Asia/Macao.generic.long=\u4E2D\u56FD\u65F6\u95F4 -Asia/Macau.generic.long=\u4E2D\u56FD\u65F6\u95F4 -Asia/Magadan.generic.long=Magadan \u65F6\u95F4 -Asia/Makassar.generic.long=\u4E2D\u90E8\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4 -Asia/Manila.generic.long=\u83F2\u5F8B\u5BBE\u65F6\u95F4 -Asia/Muscat.generic.long=\u6D77\u6E7E\u65F6\u95F4 -Asia/Nicosia.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Asia/Novokuznetsk.generic.long=Novosibirsk \u65F6\u95F4 -Asia/Novosibirsk.generic.long=Novosibirsk \u65F6\u95F4 -Asia/Omsk.generic.long=\u9102\u6728\u65AF\u514B\u65F6\u95F4 -Asia/Oral.generic.long=Oral \u65F6\u95F4 -Asia/Phnom_Penh.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4 -Asia/Pontianak.generic.long=\u897F\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4 -Asia/Pyongyang.generic.long=\u97E9\u56FD\u65F6\u95F4 -Asia/Qatar.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4 -Asia/Qyzylorda.generic.long=Qyzylorda \u65F6\u95F4 -Asia/Rangoon.generic.long=\u7F05\u7538\u65F6\u95F4 -Asia/Saigon.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4 -Asia/Sakhalin.generic.long=\u5E93\u9875\u5C9B\u65F6\u95F4 -Asia/Samarkand.generic.long=\u4E4C\u5179\u522B\u514B\u65AF\u5766\u65F6\u95F4 -Asia/Seoul.generic.long=\u97E9\u56FD\u65F6\u95F4 -Asia/Shanghai.generic.long=\u4E2D\u56FD\u65F6\u95F4 -Asia/Singapore.generic.long=\u65B0\u52A0\u5761\u65F6\u95F4 -Asia/Taipei.generic.long=\u4E2D\u56FD\u65F6\u95F4 -Asia/Tashkent.generic.long=\u4E4C\u5179\u522B\u514B\u65AF\u5766\u65F6\u95F4 -Asia/Tbilisi.generic.long=\u4E54\u6CBB\u4E9A\u65F6\u95F4 -Asia/Tehran.generic.long=\u4F0A\u6717\u65F6\u95F4 -Asia/Tel_Aviv.generic.long=\u4EE5\u8272\u5217\u65F6\u95F4 -Asia/Thimbu.generic.long=\u4E0D\u4E39\u65F6\u95F4 -Asia/Thimphu.generic.long=\u4E0D\u4E39\u65F6\u95F4 -Asia/Tokyo.generic.long=\u65E5\u672C\u65F6\u95F4 -Asia/Ujung_Pandang.generic.long=\u4E2D\u90E8\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4 -Asia/Ulaanbaatar.generic.long=\u5E93\u4F26\u65F6\u95F4 -Asia/Ulan_Bator.generic.long=\u5E93\u4F26\u65F6\u95F4 -Asia/Urumqi.generic.long=\u4E2D\u56FD\u65F6\u95F4 -Asia/Ust-Nera.daylight.long=\u4E4C\u65AF\u5B63\u6D85\u62C9\u590F\u4EE4\u65F6 -Asia/Ust-Nera.generic.long=\u4E4C\u65AF\u5B63\u6D85\u62C9\u65F6\u95F4 -Asia/Ust-Nera.standard.long=\u4E4C\u65AF\u5B63\u6D85\u62C9\u65F6\u95F4 -Asia/Vientiane.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4 -Asia/Vladivostok.generic.long=\u6D77\u53C2\u5D34\u65F6\u95F4 -Asia/Yakutsk.generic.long=\u4E9A\u5E93\u6B21\u514B\u65F6\u95F4 -Asia/Yekaterinburg.generic.long=Yekaterinburg \u65F6\u95F4 -Asia/Yerevan.generic.long=\u4E9A\u7F8E\u5C3C\u4E9A\u65F6\u95F4 -Atlantic/Azores.generic.long=\u4E9A\u901F\u5C14\u7FA4\u5C9B\u65F6\u95F4 -Atlantic/Bermuda.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -Atlantic/Canary.generic.long=\u897F\u6B27\u65F6\u95F4 -Atlantic/Cape_Verde.generic.long=\u4F5B\u5FB7\u89D2\u65F6\u95F4 -Atlantic/Faeroe.generic.long=\u897F\u6B27\u65F6\u95F4 -Atlantic/Faroe.generic.long=\u897F\u6B27\u65F6\u95F4 -Atlantic/Jan_Mayen.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Atlantic/Madeira.generic.long=\u897F\u6B27\u65F6\u95F4 -Atlantic/Reykjavik.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Atlantic/South_Georgia.generic.long=\u5357\u4E54\u6CBB\u4E9A\u5C9B\u65F6\u95F4 -Atlantic/St_Helena.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Atlantic/Stanley.generic.long=\u798F\u514B\u5170\u7FA4\u5C9B\u65F6\u95F4 -Australia/ACT.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/ACT.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/ACT.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Adelaide.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A) -Australia/Adelaide.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A) -Australia/Adelaide.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A) -Australia/Brisbane.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u6606\u58EB\u5170) -Australia/Brisbane.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u6606\u58EB\u5170) -Australia/Brisbane.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u6606\u58EB\u5170) -Australia/Broken_Hill.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Broken_Hill.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Broken_Hill.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Canberra.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Canberra.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Canberra.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Currie.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Currie.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Currie.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Darwin.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5317\u9886\u5730) -Australia/Darwin.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5317\u90E8\u5730\u533A) -Australia/Darwin.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5317\u9886\u5730) -Australia/Eucla.daylight.long=\u4E2D\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A) -Australia/Eucla.generic.long=\u4E2D\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A) -Australia/Eucla.standard.long=\u4E2D\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A) -Australia/Hobart.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u5854\u65AF\u9A6C\u5C3C\u4E9A) -Australia/Hobart.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A) -Australia/Hobart.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A) -Australia/LHI.generic.long=\u8C6A\u516C\u65F6\u95F4 -Australia/Lindeman.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u6606\u58EB\u5170) -Australia/Lindeman.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u6606\u58EB\u5170) -Australia/Lindeman.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u6606\u58EB\u5170) -Australia/Lord_Howe.generic.long=\u8C6A\u516C\u65F6\u95F4 -Australia/Melbourne.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u7EF4\u591A\u5229\u4E9A) -Australia/Melbourne.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A) -Australia/Melbourne.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A) -Australia/NSW.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/NSW.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/NSW.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/North.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5317\u9886\u5730) -Australia/North.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5317\u90E8\u5730\u533A) -Australia/North.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5317\u9886\u5730) -Australia/Perth.daylight.long=\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A) -Australia/Perth.generic.long=\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A) -Australia/Perth.standard.long=\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A) -Australia/Queensland.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u6606\u58EB\u5170) -Australia/Queensland.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u6606\u58EB\u5170) -Australia/Queensland.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u6606\u58EB\u5170) -Australia/South.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A) -Australia/South.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A) -Australia/South.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A) -Australia/Sydney.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Sydney.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Sydney.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Tasmania.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u5854\u65AF\u9A6C\u5C3C\u4E9A) -Australia/Tasmania.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A) -Australia/Tasmania.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A) -Australia/Victoria.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u7EF4\u591A\u5229\u4E9A) -Australia/Victoria.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A) -Australia/Victoria.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A) -Australia/West.daylight.long=\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A) -Australia/West.generic.long=\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A) -Australia/West.standard.long=\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A) -Australia/Yancowinna.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Yancowinna.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF) -Australia/Yancowinna.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF) -BET.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4 -BST.generic.long=\u5B5F\u52A0\u62C9\u65F6\u95F4 -Brazil/Acre.generic.long=Acre \u65f6\u95f4 -Brazil/DeNoronha.generic.long=\u8D39\u5C14\u5357\u591A\u5FB7\u8BFA\u7F57\u5C3C\u4E9A\u65F6\u95F4 -Brazil/East.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4 -Brazil/West.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4 -CAT.generic.long=\u4E2D\u975E\u65F6\u95F4 -CET.generic.long=\u4e2d\u6b27\u65f6\u95f4 -CNT.generic.long=\u7EBD\u82AC\u5170\u65F6\u95F4 -CST.generic.long=\u4E2D\u90E8\u65F6\u95F4 -CST6CDT.generic.long=\u4e2d\u90e8\u65f6\u95f4 -CTT.generic.long=\u4E2D\u56FD\u65F6\u95F4 -Canada/Atlantic.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -Canada/Central.generic.long=\u4E2D\u90E8\u65F6\u95F4 -Canada/East-Saskatchewan.generic.long=\u4E2D\u90E8\u65F6\u95F4 -Canada/Eastern.generic.long=\u4E1C\u90E8\u65F6\u95F4 -Canada/Mountain.generic.long=\u5C71\u5730\u65F6\u95F4 -Canada/Newfoundland.generic.long=\u7EBD\u82AC\u5170\u65F6\u95F4 -Canada/Pacific.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -Canada/Saskatchewan.generic.long=\u4E2D\u90E8\u65F6\u95F4 -Canada/Yukon.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -Chile/Continental.generic.long=\u667A\u5229\u65F6\u95F4 -Chile/EasterIsland.generic.long=\u590D\u6D3B\u5C9B\u65F6\u95F4 -Cuba.generic.long=\u53E4\u5DF4\u65F6\u95F4 -EAT.generic.long=\u4E1C\u975E\u65F6\u95F4 -ECT.generic.long=\u4E2D\u6B27\u65F6\u95F4 -EET.generic.long=\u4e1c\u6b27\u65f6\u95f4 -EST.generic.long=\u4e1c\u90e8\u65f6\u95f4 -EST5EDT.generic.long=\u4e1c\u90e8\u65f6\u95f4 -Egypt.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Eire.generic.long=\u7231\u5C14\u5170\u65F6\u95F4 -Etc/Greenwich.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Etc/UCT.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4 -Etc/UTC.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4 -Etc/Universal.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4 -Etc/Zulu.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4 -Europe/Amsterdam.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Andorra.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Athens.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Belfast.generic.long=\u82F1\u56FD\u65F6\u95F4 -Europe/Belgrade.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Berlin.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Bratislava.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Brussels.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Bucharest.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Budapest.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Busingen.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Chisinau.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Copenhagen.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Dublin.generic.long=\u7231\u5C14\u5170\u65F6\u95F4 -Europe/Gibraltar.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Guernsey.generic.long=\u82F1\u56FD\u65F6\u95F4 -Europe/Helsinki.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Isle_of_Man.generic.long=\u82F1\u56FD\u65F6\u95F4 -Europe/Istanbul.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Jersey.generic.long=\u82F1\u56FD\u65F6\u95F4 -Europe/Kaliningrad.daylight.long=\u8FDC\u4E1C\u6B27\u590F\u4EE4\u65F6 -Europe/Kaliningrad.generic.long=\u8FDC\u4E1C\u6B27\u65F6\u95F4 -Europe/Kaliningrad.standard.long=\u8FDC\u4E1C\u6B27\u65F6\u95F4 -Europe/Kiev.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Lisbon.generic.long=\u897F\u6B27\u65F6\u95F4 -Europe/Ljubljana.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/London.generic.long=\u82F1\u56FD\u65F6\u95F4 -Europe/Luxembourg.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Madrid.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Malta.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Mariehamn.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Minsk.daylight.long=\u8FDC\u4E1C\u6B27\u590F\u4EE4\u65F6 -Europe/Minsk.generic.long=\u8FDC\u4E1C\u6B27\u65F6\u95F4 -Europe/Minsk.standard.long=\u8FDC\u4E1C\u6B27\u65F6\u95F4 -Europe/Monaco.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Moscow.generic.long=\u83AB\u65AF\u79D1\u65F6\u95F4 -Europe/Nicosia.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Oslo.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Paris.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Podgorica.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Prague.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Riga.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Rome.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Samara.generic.long=\u6C99\u9A6C\u62C9\u65F6\u95F4 -Europe/San_Marino.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Sarajevo.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Simferopol.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Skopje.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Sofia.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Stockholm.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Tallinn.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Tirane.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Tiraspol.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Uzhgorod.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Vaduz.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Vatican.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Vienna.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Vilnius.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Volgograd.generic.long=\u4F0F\u5C14\u52A0\u683C\u52D2\u65F6\u95F4 -Europe/Warsaw.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Zagreb.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Europe/Zaporozhye.generic.long=\u4E1C\u6B27\u65F6\u95F4 -Europe/Zurich.generic.long=\u4E2D\u6B27\u65F6\u95F4 -GB-Eire.generic.long=\u82F1\u56FD\u65F6\u95F4 -GB.generic.long=\u82F1\u56FD\u65F6\u95F4 -GMT.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Greenwich.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -HST.generic.long=\u590f\u5a01\u5937\u65f6\u95f4 -Hongkong.generic.long=\u9999\u6E2F\u65F6\u95F4 -IET.generic.long=\u4E1C\u90E8\u65F6\u95F4 -IST.generic.long=\u5370\u5EA6\u65F6\u95F4 -Iceland.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4 -Indian/Antananarivo.generic.long=\u4E1C\u975E\u65F6\u95F4 -Indian/Chagos.generic.long=\u5370\u5EA6\u6D0B\u5730\u5E26\u65F6\u95F4 -Indian/Christmas.generic.long=\u5723\u8BDE\u5C9B\u65F6\u95F4 -Indian/Cocos.generic.long=\u53EF\u53EF\u65AF\u7FA4\u5C9B\u65F6\u95F4 -Indian/Comoro.generic.long=\u4E1C\u975E\u65F6\u95F4 -Indian/Kerguelen.generic.long=\u6CD5\u5C5E\u5357\u6781\u65F6\u95F4 -Indian/Mahe.generic.long=\u585E\u5E2D\u5C14\u7FA4\u5C9B\u65F6\u95F4 -Indian/Maldives.generic.long=\u9A6C\u5C14\u4EE3\u592B\u65F6\u95F4 -Indian/Mauritius.generic.long=\u6469\u91CC\u897F\u65AF\u65F6\u95F4 -Indian/Mayotte.generic.long=\u4E1C\u975E\u65F6\u95F4 -Indian/Reunion.generic.long=\u7559\u5C3C\u65FA\u5C9B\u65F6\u95F4 -Iran.generic.long=\u4F0A\u6717\u65F6\u95F4 -Israel.generic.long=\u4EE5\u8272\u5217\u65F6\u95F4 -JST.generic.long=\u65E5\u672C\u65F6\u95F4 -Jamaica.generic.long=\u4E1C\u90E8\u65F6\u95F4 -Japan.generic.long=\u65E5\u672C\u65F6\u95F4 -Kwajalein.generic.long=\u9A6C\u7ECD\u5C14\u7FA4\u5C9B\u65F6\u95F4 -Libya.generic.long=\u4e1c\u6b27\u65f6\u95f4 -MET.generic.long=MET -MIT.generic.long=\u897F\u8428\u6469\u4E9A\u65F6\u95F4 -MST.generic.long=\u5c71\u5730\u65f6\u95f4 -MST7MDT.generic.long=\u5c71\u5730\u65f6\u95f4 -Mexico/BajaNorte.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -Mexico/BajaSur.generic.long=\u5C71\u5730\u65F6\u95F4 -Mexico/General.generic.long=\u4E2D\u90E8\u65F6\u95F4 -NET.generic.long=\u4E9A\u7F8E\u5C3C\u4E9A\u65F6\u95F4 -NST.generic.long=\u65B0\u897F\u5170\u65F6\u95F4 -NZ-CHAT.generic.long=\u67E5\u5854\u59C6\u65F6\u95F4 -NZ.generic.long=\u65B0\u897F\u5170\u65F6\u95F4 -Navajo.generic.long=\u5C71\u5730\u65F6\u95F4 -PLT.generic.long=\u5DF4\u57FA\u65AF\u5766\u65F6\u95F4 -PNT.generic.long=\u5C71\u5730\u65F6\u95F4 -PRC.generic.long=\u4E2D\u56FD\u65F6\u95F4 -PRT.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -PST.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -PST8PDT.generic.long=\u592a\u5e73\u6d0b\u65f6\u95f4 -Pacific/Apia.generic.long=\u897F\u8428\u6469\u4E9A\u65F6\u95F4 -Pacific/Auckland.generic.long=\u65B0\u897F\u5170\u65F6\u95F4 -Pacific/Chatham.generic.long=\u67E5\u5854\u59C6\u65F6\u95F4 -Pacific/Chuuk.daylight.long=\u4E18\u514B\u590F\u4EE4\u65F6 -Pacific/Chuuk.generic.long=\u4E18\u514B\u65F6\u95F4 -Pacific/Chuuk.standard.long=\u4E18\u514B\u65F6\u95F4 -Pacific/Easter.generic.long=\u590D\u6D3B\u5C9B\u65F6\u95F4 -Pacific/Efate.generic.long=\u74E6\u5974\u963F\u56FE\u65F6\u95F4 -Pacific/Enderbury.generic.long=\u83F2\u5C3C\u514B\u65AF\u7FA4\u5C9B\u65F6\u95F4 -Pacific/Fakaofo.generic.long=\u6258\u514B\u52B3\u7FA4\u5C9B\u65F6\u95F4 -Pacific/Fiji.generic.long=\u6590\u6D4E\u65F6\u95F4 -Pacific/Funafuti.generic.long=\u5410\u9C81\u74E6\u65F6\u95F4 -Pacific/Galapagos.generic.long=\u52A0\u62C9\u5DF4\u54E5\u65F6\u95F4 -Pacific/Gambier.generic.long=\u5188\u6BD4\u4E9A\u65F6\u95F4 -Pacific/Guadalcanal.generic.long=\u6240\u7F57\u95E8\u7FA4\u5C9B\u65F6\u95F4 -Pacific/Guam.generic.long=\u67E5\u6469\u6D1B\u65F6\u95F4 -Pacific/Honolulu.generic.long=\u590F\u5A01\u5937\u65F6\u95F4 -Pacific/Johnston.generic.long=\u590F\u5A01\u5937\u65F6\u95F4 -Pacific/Kiritimati.generic.long=Line \u5C9B\u65F6\u95F4 -Pacific/Kosrae.generic.long=Kosrae \u65F6\u95F4 -Pacific/Kwajalein.generic.long=\u9A6C\u7ECD\u5C14\u7FA4\u5C9B\u65F6\u95F4 -Pacific/Majuro.generic.long=\u9A6C\u7ECD\u5C14\u7FA4\u5C9B\u65F6\u95F4 -Pacific/Marquesas.generic.long=\u9A6C\u514B\u8428\u65AF\u65F6\u95F4 -Pacific/Midway.generic.long=\u8428\u6469\u4E9A\u65F6\u95F4 -Pacific/Nauru.generic.long=\u8BFA\u9C81\u65F6\u95F4 -Pacific/Niue.generic.long=\u7EBD\u5A01\u5C9B\u65F6\u95F4 -Pacific/Norfolk.generic.long=\u8BFA\u798F\u514B\u65F6\u95F4 -Pacific/Noumea.generic.long=\u65B0\u52A0\u52D2\u591A\u5C3C\u4E9A\u65F6\u95F4 -Pacific/Pago_Pago.generic.long=\u8428\u6469\u4E9A\u65F6\u95F4 -Pacific/Palau.generic.long=\u5E1B\u7409\u65F6\u95F4 -Pacific/Pitcairn.generic.long=\u76AE\u7279\u51EF\u6069\u65F6\u95F4 -Pacific/Pohnpei.daylight.long=\u6CE2\u7EB3\u4F69\u590F\u4EE4\u65F6 -Pacific/Pohnpei.generic.long=\u6CE2\u7EB3\u4F69\u65F6\u95F4 -Pacific/Pohnpei.standard.long=\u6CE2\u7EB3\u4F69\u65F6\u95F4 -Pacific/Ponape.daylight.long=\u6CE2\u7EB3\u4F69\u590F\u4EE4\u65F6 -Pacific/Ponape.generic.long=\u6CE2\u7EB3\u4F69\u65F6\u95F4 -Pacific/Ponape.standard.long=\u6CE2\u7EB3\u4F69\u65F6\u95F4 -Pacific/Port_Moresby.generic.long=\u5DF4\u5E03\u4E9A\u65B0\u51E0\u5185\u4E9A\u65F6\u95F4 -Pacific/Rarotonga.generic.long=\u5E93\u514B\u7FA4\u5C9B\u65F6\u95F4 -Pacific/Saipan.generic.long=\u67E5\u6469\u6D1B\u65F6\u95F4 -Pacific/Samoa.generic.long=\u8428\u6469\u4E9A\u65F6\u95F4 -Pacific/Tahiti.generic.long=\u5927\u6EAA\u5730\u5C9B\u65F6\u95F4 -Pacific/Tarawa.generic.long=\u5409\u4F2F\u7279\u7FA4\u5C9B\u65F6\u95F4 -Pacific/Tongatapu.generic.long=\u4E1C\u52A0\u65F6\u95F4 -Pacific/Truk.daylight.long=\u4E18\u514B\u590F\u4EE4\u65F6 -Pacific/Truk.generic.long=\u4E18\u514B\u65F6\u95F4 -Pacific/Truk.standard.long=\u4E18\u514B\u65F6\u95F4 -Pacific/Wake.generic.long=\u5A01\u514B\u65F6\u95F4 -Pacific/Wallis.generic.long=\u74E6\u5229\u65AF\u53CA\u798F\u675C\u7EB3\u7FA4\u5C9B\u65F6\u95F4 -Pacific/Yap.daylight.long=\u4E18\u514B\u590F\u4EE4\u65F6 -Pacific/Yap.generic.long=\u4E18\u514B\u65F6\u95F4 -Pacific/Yap.standard.long=\u4E18\u514B\u65F6\u95F4 -Poland.generic.long=\u4E2D\u6B27\u65F6\u95F4 -Portugal.generic.long=\u897F\u6B27\u65F6\u95F4 -ROK.generic.long=\u97E9\u56FD\u65F6\u95F4 -SST.generic.long=\u6240\u7F57\u95E8\u7FA4\u5C9B\u65F6\u95F4 -Singapore.generic.long=\u65B0\u52A0\u5761\u65F6\u95F4 -SystemV/AST4.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -SystemV/AST4ADT.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4 -SystemV/CST6.generic.long=\u4E2D\u90E8\u65F6\u95F4 -SystemV/CST6CDT.generic.long=\u4E2D\u90E8\u65F6\u95F4 -SystemV/EST5.generic.long=\u4E1C\u90E8\u65F6\u95F4 -SystemV/EST5EDT.generic.long=\u4E1C\u90E8\u65F6\u95F4 -SystemV/HST10.generic.long=\u590F\u5A01\u5937\u65F6\u95F4 -SystemV/MST7.generic.long=\u5C71\u5730\u65F6\u95F4 -SystemV/MST7MDT.generic.long=\u5C71\u5730\u65F6\u95F4 -SystemV/PST8.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -SystemV/PST8PDT.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -SystemV/YST9.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4 -SystemV/YST9YDT.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4 -Turkey.generic.long=\u4E1C\u6B27\u65F6\u95F4 -UCT.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4 -US/Alaska.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4 -US/Aleutian.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u65F6\u95F4 -US/Arizona.generic.long=\u5C71\u5730\u65F6\u95F4 -US/Central.generic.long=\u4E2D\u90E8\u65F6\u95F4 -US/East-Indiana.generic.long=\u4E1C\u90E8\u65F6\u95F4 -US/Eastern.generic.long=\u4E1C\u90E8\u65F6\u95F4 -US/Hawaii.generic.long=\u590F\u5A01\u5937\u65F6\u95F4 -US/Indiana-Starke.generic.long=\u4E2D\u90E8\u65F6\u95F4 -US/Michigan.generic.long=\u4E1C\u90E8\u65F6\u95F4 -US/Mountain.generic.long=\u5C71\u5730\u65F6\u95F4 -US/Pacific-New.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -US/Pacific.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4 -US/Samoa.generic.long=\u8428\u6469\u4E9A\u65F6\u95F4 -UTC.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4 -Universal.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4 -VST.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4 -W-SU.generic.long=\u83AB\u65AF\u79D1\u65F6\u95F4 -WET.generic.long=\u897f\u6b27\u65f6\u95f4 -Zulu.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4 diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_CN_short.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_CN_short.properties deleted file mode 100644 index 095522a68d1..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_CN_short.properties +++ /dev/null @@ -1,1743 +0,0 @@ -ACT.daylight.short=CST -ACT.generic.short=CT -ACT.standard.short=CST -AET.daylight.short=EST -AET.generic.short=ET -AET.standard.short=EST -Africa/Abidjan.daylight.short=GMT -Africa/Abidjan.generic.short=GMT -Africa/Abidjan.standard.short=GMT -Africa/Accra.daylight.short=GHST -Africa/Accra.generic.short=GMT -Africa/Accra.standard.short=GMT -Africa/Addis_Ababa.daylight.short=EAST -Africa/Addis_Ababa.generic.short=EAT -Africa/Addis_Ababa.standard.short=EAT -Africa/Algiers.daylight.short=CEST -Africa/Algiers.generic.short=CET -Africa/Algiers.standard.short=CET -Africa/Asmara.daylight.short=EAST -Africa/Asmara.generic.short=EAT -Africa/Asmara.standard.short=EAT -Africa/Asmera.daylight.short=EAST -Africa/Asmera.generic.short=EAT -Africa/Asmera.standard.short=EAT -Africa/Bamako.daylight.short=GMT -Africa/Bamako.generic.short=GMT -Africa/Bamako.standard.short=GMT -Africa/Bangui.daylight.short=WAST -Africa/Bangui.generic.short=WAT -Africa/Bangui.standard.short=WAT -Africa/Banjul.daylight.short=GMT -Africa/Banjul.generic.short=GMT -Africa/Banjul.standard.short=GMT -Africa/Bissau.daylight.short=GMT -Africa/Bissau.generic.short=GMT -Africa/Bissau.standard.short=GMT -Africa/Blantyre.daylight.short=CAST -Africa/Blantyre.generic.short=CAT -Africa/Blantyre.standard.short=CAT -Africa/Brazzaville.daylight.short=WAST -Africa/Brazzaville.generic.short=WAT -Africa/Brazzaville.standard.short=WAT -Africa/Bujumbura.daylight.short=CAST -Africa/Bujumbura.generic.short=CAT -Africa/Bujumbura.standard.short=CAT -Africa/Cairo.daylight.short=EEST -Africa/Cairo.generic.short=EET -Africa/Cairo.standard.short=EET -Africa/Casablanca.daylight.short=WEST -Africa/Casablanca.generic.short=WET -Africa/Casablanca.standard.short=WET -Africa/Ceuta.daylight.short=CEST -Africa/Ceuta.generic.short=CET -Africa/Ceuta.standard.short=CET -Africa/Conakry.daylight.short=GMT -Africa/Conakry.generic.short=GMT -Africa/Conakry.standard.short=GMT -Africa/Dakar.daylight.short=GMT -Africa/Dakar.generic.short=GMT -Africa/Dakar.standard.short=GMT -Africa/Dar_es_Salaam.daylight.short=EAST -Africa/Dar_es_Salaam.generic.short=EAT -Africa/Dar_es_Salaam.standard.short=EAT -Africa/Djibouti.daylight.short=EAST -Africa/Djibouti.generic.short=EAT -Africa/Djibouti.standard.short=EAT -Africa/Douala.daylight.short=WAST -Africa/Douala.generic.short=WAT -Africa/Douala.standard.short=WAT -Africa/El_Aaiun.daylight.short=WEST -Africa/El_Aaiun.generic.short=WET -Africa/El_Aaiun.standard.short=WET -Africa/Freetown.daylight.short=SLST -Africa/Freetown.generic.short=SLT -Africa/Freetown.standard.short=GMT -Africa/Gaborone.daylight.short=CAST -Africa/Gaborone.generic.short=CAT -Africa/Gaborone.standard.short=CAT -Africa/Harare.daylight.short=CAST -Africa/Harare.generic.short=CAT -Africa/Harare.standard.short=CAT -Africa/Johannesburg.daylight.short=SAST -Africa/Johannesburg.generic.short=SAT -Africa/Johannesburg.standard.short=SAST -Africa/Juba.daylight.short=EAST -Africa/Juba.generic.short=EAT -Africa/Juba.standard.short=EAT -Africa/Kampala.daylight.short=EAST -Africa/Kampala.generic.short=EAT -Africa/Kampala.standard.short=EAT -Africa/Khartoum.daylight.short=EAST -Africa/Khartoum.generic.short=EAT -Africa/Khartoum.standard.short=EAT -Africa/Kigali.daylight.short=CAST -Africa/Kigali.generic.short=CAT -Africa/Kigali.standard.short=CAT -Africa/Kinshasa.daylight.short=WAST -Africa/Kinshasa.generic.short=WAT -Africa/Kinshasa.standard.short=WAT -Africa/Lagos.daylight.short=WAST -Africa/Lagos.generic.short=WAT -Africa/Lagos.standard.short=WAT -Africa/Libreville.daylight.short=WAST -Africa/Libreville.generic.short=WAT -Africa/Libreville.standard.short=WAT -Africa/Lome.daylight.short=GMT -Africa/Lome.generic.short=GMT -Africa/Lome.standard.short=GMT -Africa/Luanda.daylight.short=WAST -Africa/Luanda.generic.short=WAT -Africa/Luanda.standard.short=WAT -Africa/Lubumbashi.daylight.short=CAST -Africa/Lubumbashi.generic.short=CAT -Africa/Lubumbashi.standard.short=CAT -Africa/Lusaka.daylight.short=CAST -Africa/Lusaka.generic.short=CAT -Africa/Lusaka.standard.short=CAT -Africa/Malabo.daylight.short=WAST -Africa/Malabo.generic.short=WAT -Africa/Malabo.standard.short=WAT -Africa/Maputo.daylight.short=CAST -Africa/Maputo.generic.short=CAT -Africa/Maputo.standard.short=CAT -Africa/Maseru.daylight.short=SAST -Africa/Maseru.generic.short=SAT -Africa/Maseru.standard.short=SAST -Africa/Mbabane.daylight.short=SAST -Africa/Mbabane.generic.short=SAT -Africa/Mbabane.standard.short=SAST -Africa/Mogadishu.daylight.short=EAST -Africa/Mogadishu.generic.short=EAT -Africa/Mogadishu.standard.short=EAT -Africa/Monrovia.daylight.short=GMT -Africa/Monrovia.generic.short=GMT -Africa/Monrovia.standard.short=GMT -Africa/Nairobi.daylight.short=EAST -Africa/Nairobi.generic.short=EAT -Africa/Nairobi.standard.short=EAT -Africa/Ndjamena.daylight.short=WAST -Africa/Ndjamena.generic.short=WAT -Africa/Ndjamena.standard.short=WAT -Africa/Niamey.daylight.short=WAST -Africa/Niamey.generic.short=WAT -Africa/Niamey.standard.short=WAT -Africa/Nouakchott.daylight.short=GMT -Africa/Nouakchott.generic.short=GMT -Africa/Nouakchott.standard.short=GMT -Africa/Ouagadougou.daylight.short=GMT -Africa/Ouagadougou.generic.short=GMT -Africa/Ouagadougou.standard.short=GMT -Africa/Porto-Novo.daylight.short=WAST -Africa/Porto-Novo.generic.short=WAT -Africa/Porto-Novo.standard.short=WAT -Africa/Sao_Tome.daylight.short=GMT -Africa/Sao_Tome.generic.short=GMT -Africa/Sao_Tome.standard.short=GMT -Africa/Timbuktu.daylight.short=GMT -Africa/Timbuktu.generic.short=GMT -Africa/Timbuktu.standard.short=GMT -Africa/Tripoli.daylight.short=EEST -Africa/Tripoli.generic.short=EET -Africa/Tripoli.standard.short=EET -Africa/Tunis.daylight.short=CEST -Africa/Tunis.generic.short=CET -Africa/Tunis.standard.short=CET -Africa/Windhoek.daylight.short=WAST -Africa/Windhoek.generic.short=WAT -Africa/Windhoek.standard.short=WAT -AGT.daylight.short=ARST -AGT.generic.short=ART -AGT.standard.short=ART -America/Adak.daylight.short=HADT -America/Adak.generic.short=HAT -America/Adak.standard.short=HAST -America/Anchorage.daylight.short=AKDT -America/Anchorage.generic.short=AKT -America/Anchorage.standard.short=AKST -America/Anguilla.daylight.short=ADT -America/Anguilla.generic.short=AT -America/Anguilla.standard.short=AST -America/Antigua.daylight.short=ADT -America/Antigua.generic.short=AT -America/Antigua.standard.short=AST -America/Araguaina.daylight.short=BRST -America/Araguaina.generic.short=BRT -America/Araguaina.standard.short=BRT -America/Argentina/Buenos_Aires.daylight.short=ARST -America/Argentina/Buenos_Aires.generic.short=ART -America/Argentina/Buenos_Aires.standard.short=ART -America/Argentina/Catamarca.daylight.short=ARST -America/Argentina/Catamarca.generic.short=ART -America/Argentina/Catamarca.standard.short=ART -America/Argentina/ComodRivadavia.daylight.short=ARST -America/Argentina/ComodRivadavia.generic.short=ART -America/Argentina/ComodRivadavia.standard.short=ART -America/Argentina/Cordoba.daylight.short=ARST -America/Argentina/Cordoba.generic.short=ART -America/Argentina/Cordoba.standard.short=ART -America/Argentina/Jujuy.daylight.short=ARST -America/Argentina/Jujuy.generic.short=ART -America/Argentina/Jujuy.standard.short=ART -America/Argentina/La_Rioja.daylight.short=ARST -America/Argentina/La_Rioja.generic.short=ART -America/Argentina/La_Rioja.standard.short=ART -America/Argentina/Mendoza.daylight.short=ARST -America/Argentina/Mendoza.generic.short=ART -America/Argentina/Mendoza.standard.short=ART -America/Argentina/Rio_Gallegos.daylight.short=ARST -America/Argentina/Rio_Gallegos.generic.short=ART -America/Argentina/Rio_Gallegos.standard.short=ART -America/Argentina/Salta.daylight.short=ARST -America/Argentina/Salta.generic.short=ART -America/Argentina/Salta.standard.short=ART -America/Argentina/San_Juan.daylight.short=ARST -America/Argentina/San_Juan.generic.short=ART -America/Argentina/San_Juan.standard.short=ART -America/Argentina/San_Luis.daylight.short=ARST -America/Argentina/San_Luis.generic.short=ART -America/Argentina/San_Luis.standard.short=ART -America/Argentina/Tucuman.daylight.short=ARST -America/Argentina/Tucuman.generic.short=ART -America/Argentina/Tucuman.standard.short=ART -America/Argentina/Ushuaia.daylight.short=ARST -America/Argentina/Ushuaia.generic.short=ART -America/Argentina/Ushuaia.standard.short=ART -America/Aruba.daylight.short=ADT -America/Aruba.generic.short=AT -America/Aruba.standard.short=AST -America/Asuncion.daylight.short=PYST -America/Asuncion.generic.short=PYT -America/Asuncion.standard.short=PYT -America/Atikokan.daylight.short=EDT -America/Atikokan.generic.short=ET -America/Atikokan.standard.short=EST -America/Atka.daylight.short=HADT -America/Atka.generic.short=HAT -America/Atka.standard.short=HAST -America/Bahia_Banderas.daylight.short=CDT -America/Bahia_Banderas.generic.short=CT -America/Bahia_Banderas.standard.short=CST -America/Bahia.daylight.short=BRST -America/Bahia.generic.short=BRT -America/Bahia.standard.short=BRT -America/Barbados.daylight.short=ADT -America/Barbados.generic.short=AT -America/Barbados.standard.short=AST -America/Belem.daylight.short=BRST -America/Belem.generic.short=BRT -America/Belem.standard.short=BRT -America/Belize.daylight.short=CDT -America/Belize.generic.short=CT -America/Belize.standard.short=CST -America/Blanc-Sablon.daylight.short=ADT -America/Blanc-Sablon.generic.short=AT -America/Blanc-Sablon.standard.short=AST -America/Boa_Vista.daylight.short=AMST -America/Boa_Vista.generic.short=AMT -America/Boa_Vista.standard.short=AMT -America/Bogota.daylight.short=COST -America/Bogota.generic.short=COT -America/Bogota.standard.short=COT -America/Boise.daylight.short=MDT -America/Boise.generic.short=MT -America/Boise.standard.short=MST -America/Buenos_Aires.daylight.short=ARST -America/Buenos_Aires.generic.short=ART -America/Buenos_Aires.standard.short=ART -America/Cambridge_Bay.daylight.short=MDT -America/Cambridge_Bay.generic.short=MT -America/Cambridge_Bay.standard.short=MST -America/Campo_Grande.daylight.short=AMST -America/Campo_Grande.generic.short=AMT -America/Campo_Grande.standard.short=AMT -America/Cancun.daylight.short=CDT -America/Cancun.generic.short=CT -America/Cancun.standard.short=CST -America/Caracas.daylight.short=VEST -America/Caracas.generic.short=VET -America/Caracas.standard.short=VET -America/Catamarca.daylight.short=ARST -America/Catamarca.generic.short=ART -America/Catamarca.standard.short=ART -America/Cayenne.daylight.short=GFST -America/Cayenne.generic.short=GFT -America/Cayenne.standard.short=GFT -America/Cayman.daylight.short=EDT -America/Cayman.generic.short=ET -America/Cayman.standard.short=EST -America/Chicago.daylight.short=CDT -America/Chicago.generic.short=CT -America/Chicago.standard.short=CST -America/Chihuahua.daylight.short=MDT -America/Chihuahua.generic.short=MT -America/Chihuahua.standard.short=MST -America/Coral_Harbour.daylight.short=EDT -America/Coral_Harbour.generic.short=ET -America/Coral_Harbour.standard.short=EST -America/Cordoba.daylight.short=ARST -America/Cordoba.generic.short=ART -America/Cordoba.standard.short=ART -America/Costa_Rica.daylight.short=CDT -America/Costa_Rica.generic.short=CT -America/Costa_Rica.standard.short=CST -America/Creston.daylight.short=MDT -America/Creston.generic.short=MT -America/Creston.standard.short=MST -America/Cuiaba.daylight.short=AMST -America/Cuiaba.generic.short=AMT -America/Cuiaba.standard.short=AMT -America/Curacao.daylight.short=ADT -America/Curacao.generic.short=AT -America/Curacao.standard.short=AST -America/Danmarkshavn.daylight.short=GMT -America/Danmarkshavn.generic.short=GMT -America/Danmarkshavn.standard.short=GMT -America/Dawson_Creek.daylight.short=MDT -America/Dawson_Creek.generic.short=MT -America/Dawson_Creek.standard.short=MST -America/Dawson.daylight.short=PDT -America/Dawson.generic.short=PT -America/Dawson.standard.short=PST -America/Denver.daylight.short=MDT -America/Denver.generic.short=MT -America/Denver.standard.short=MST -America/Detroit.daylight.short=EDT -America/Detroit.generic.short=ET -America/Detroit.standard.short=EST -America/Dominica.daylight.short=ADT -America/Dominica.generic.short=AT -America/Dominica.standard.short=AST -America/Edmonton.daylight.short=MDT -America/Edmonton.generic.short=MT -America/Edmonton.standard.short=MST -America/Eirunepe.daylight.short=ACST -America/Eirunepe.generic.short=ACT -America/Eirunepe.standard.short=ACT -America/El_Salvador.daylight.short=CDT -America/El_Salvador.generic.short=CT -America/El_Salvador.standard.short=CST -America/Ensenada.daylight.short=PDT -America/Ensenada.generic.short=PT -America/Ensenada.standard.short=PST -America/Fortaleza.daylight.short=BRST -America/Fortaleza.generic.short=BRT -America/Fortaleza.standard.short=BRT -America/Fort_Wayne.daylight.short=EDT -America/Fort_Wayne.generic.short=ET -America/Fort_Wayne.standard.short=EST -America/Glace_Bay.daylight.short=ADT -America/Glace_Bay.generic.short=AT -America/Glace_Bay.standard.short=AST -America/Godthab.daylight.short=WGST -America/Godthab.generic.short=WGT -America/Godthab.standard.short=WGT -America/Goose_Bay.daylight.short=ADT -America/Goose_Bay.generic.short=AT -America/Goose_Bay.standard.short=AST -America/Grand_Turk.daylight.short=EDT -America/Grand_Turk.generic.short=ET -America/Grand_Turk.standard.short=EST -America/Grenada.daylight.short=ADT -America/Grenada.generic.short=AT -America/Grenada.standard.short=AST -America/Guadeloupe.daylight.short=ADT -America/Guadeloupe.generic.short=AT -America/Guadeloupe.standard.short=AST -America/Guatemala.daylight.short=CDT -America/Guatemala.generic.short=CT -America/Guatemala.standard.short=CST -America/Guayaquil.daylight.short=ECST -America/Guayaquil.generic.short=ECT -America/Guayaquil.standard.short=ECT -America/Guyana.daylight.short=GYST -America/Guyana.generic.short=GYT -America/Guyana.standard.short=GYT -America/Halifax.daylight.short=ADT -America/Halifax.generic.short=AT -America/Halifax.standard.short=AST -America/Havana.daylight.short=CDT -America/Havana.generic.short=CT -America/Havana.standard.short=CST -America/Hermosillo.daylight.short=MDT -America/Hermosillo.generic.short=MT -America/Hermosillo.standard.short=MST -America/Indiana/Indianapolis.daylight.short=EDT -America/Indiana/Indianapolis.generic.short=ET -America/Indiana/Indianapolis.standard.short=EST -America/Indiana/Knox.daylight.short=CDT -America/Indiana/Knox.generic.short=CT -America/Indiana/Knox.standard.short=CST -America/Indiana/Marengo.daylight.short=EDT -America/Indiana/Marengo.generic.short=ET -America/Indiana/Marengo.standard.short=EST -America/Indiana/Petersburg.daylight.short=EDT -America/Indiana/Petersburg.generic.short=ET -America/Indiana/Petersburg.standard.short=EST -America/Indianapolis.daylight.short=EDT -America/Indianapolis.generic.short=ET -America/Indianapolis.standard.short=EST -America/Indiana/Tell_City.daylight.short=CDT -America/Indiana/Tell_City.generic.short=CT -America/Indiana/Tell_City.standard.short=CST -America/Indiana/Vevay.daylight.short=EDT -America/Indiana/Vevay.generic.short=ET -America/Indiana/Vevay.standard.short=EST -America/Indiana/Vincennes.daylight.short=EDT -America/Indiana/Vincennes.generic.short=ET -America/Indiana/Vincennes.standard.short=EST -America/Indiana/Winamac.daylight.short=EDT -America/Indiana/Winamac.generic.short=ET -America/Indiana/Winamac.standard.short=EST -America/Inuvik.daylight.short=MDT -America/Inuvik.generic.short=MT -America/Inuvik.standard.short=MST -America/Iqaluit.daylight.short=EDT -America/Iqaluit.generic.short=ET -America/Iqaluit.standard.short=EST -America/Jamaica.daylight.short=EDT -America/Jamaica.generic.short=ET -America/Jamaica.standard.short=EST -America/Jujuy.daylight.short=ARST -America/Jujuy.generic.short=ART -America/Jujuy.standard.short=ART -America/Juneau.daylight.short=AKDT -America/Juneau.generic.short=AKT -America/Juneau.standard.short=AKST -America/Kentucky/Louisville.daylight.short=EDT -America/Kentucky/Louisville.generic.short=ET -America/Kentucky/Louisville.standard.short=EST -America/Kentucky/Monticello.daylight.short=EDT -America/Kentucky/Monticello.generic.short=ET -America/Kentucky/Monticello.standard.short=EST -America/Knox_IN.daylight.short=CDT -America/Knox_IN.generic.short=CT -America/Knox_IN.standard.short=CST -America/Kralendijk.daylight.short=ADT -America/Kralendijk.generic.short=AT -America/Kralendijk.standard.short=AST -America/La_Paz.daylight.short=BOST -America/La_Paz.generic.short=BOT -America/La_Paz.standard.short=BOT -America/Lima.daylight.short=PEST -America/Lima.generic.short=PET -America/Lima.standard.short=PET -America/Los_Angeles.daylight.short=PDT -America/Los_Angeles.generic.short=PT -America/Los_Angeles.standard.short=PST -America/Louisville.daylight.short=EDT -America/Louisville.generic.short=ET -America/Louisville.standard.short=EST -America/Lower_Princes.daylight.short=ADT -America/Lower_Princes.generic.short=AT -America/Lower_Princes.standard.short=AST -America/Maceio.daylight.short=BRST -America/Maceio.generic.short=BRT -America/Maceio.standard.short=BRT -America/Managua.daylight.short=CDT -America/Managua.generic.short=CT -America/Managua.standard.short=CST -America/Manaus.daylight.short=AMST -America/Manaus.generic.short=AMT -America/Manaus.standard.short=AMT -America/Marigot.daylight.short=ADT -America/Marigot.generic.short=AT -America/Marigot.standard.short=AST -America/Martinique.daylight.short=ADT -America/Martinique.generic.short=AT -America/Martinique.standard.short=AST -America/Matamoros.daylight.short=CDT -America/Matamoros.generic.short=CT -America/Matamoros.standard.short=CST -America/Mazatlan.daylight.short=MDT -America/Mazatlan.generic.short=MT -America/Mazatlan.standard.short=MST -America/Mendoza.daylight.short=ARST -America/Mendoza.generic.short=ART -America/Mendoza.standard.short=ART -America/Menominee.daylight.short=CDT -America/Menominee.generic.short=CT -America/Menominee.standard.short=CST -America/Merida.daylight.short=CDT -America/Merida.generic.short=CT -America/Merida.standard.short=CST -America/Metlakatla.daylight.short=MeDT -America/Metlakatla.generic.short=MeT -America/Metlakatla.standard.short=MeST -America/Mexico_City.daylight.short=CDT -America/Mexico_City.generic.short=CT -America/Mexico_City.standard.short=CST -America/Miquelon.daylight.short=PMDT -America/Miquelon.generic.short=PMT -America/Miquelon.standard.short=PMST -America/Moncton.daylight.short=ADT -America/Moncton.generic.short=AT -America/Moncton.standard.short=AST -America/Monterrey.daylight.short=CDT -America/Monterrey.generic.short=CT -America/Monterrey.standard.short=CST -America/Montevideo.daylight.short=UYST -America/Montevideo.generic.short=UYT -America/Montevideo.standard.short=UYT -America/Montreal.daylight.short=EDT -America/Montreal.generic.short=ET -America/Montreal.standard.short=EST -America/Montserrat.daylight.short=ADT -America/Montserrat.generic.short=AT -America/Montserrat.standard.short=AST -America/Nassau.daylight.short=EDT -America/Nassau.generic.short=ET -America/Nassau.standard.short=EST -America/New_York.daylight.short=EDT -America/New_York.generic.short=ET -America/New_York.standard.short=EST -America/Nipigon.daylight.short=EDT -America/Nipigon.generic.short=ET -America/Nipigon.standard.short=EST -America/Nome.daylight.short=AKDT -America/Nome.generic.short=AKT -America/Nome.standard.short=AKST -America/Noronha.daylight.short=FNST -America/Noronha.generic.short=FNT -America/Noronha.standard.short=FNT -America/North_Dakota/Beulah.daylight.short=CDT -America/North_Dakota/Beulah.generic.short=CT -America/North_Dakota/Beulah.standard.short=CST -America/North_Dakota/Center.daylight.short=CDT -America/North_Dakota/Center.generic.short=CT -America/North_Dakota/Center.standard.short=CST -America/North_Dakota/New_Salem.daylight.short=CDT -America/North_Dakota/New_Salem.generic.short=CT -America/North_Dakota/New_Salem.standard.short=CST -America/Ojinaga.daylight.short=MDT -America/Ojinaga.generic.short=MT -America/Ojinaga.standard.short=MST -America/Panama.daylight.short=EDT -America/Panama.generic.short=ET -America/Panama.standard.short=EST -America/Pangnirtung.daylight.short=EDT -America/Pangnirtung.generic.short=ET -America/Pangnirtung.standard.short=EST -America/Paramaribo.daylight.short=SRST -America/Paramaribo.generic.short=SRT -America/Paramaribo.standard.short=SRT -America/Phoenix.daylight.short=MDT -America/Phoenix.generic.short=MT -America/Phoenix.standard.short=MST -America/Port-au-Prince.daylight.short=EDT -America/Port-au-Prince.generic.short=ET -America/Port-au-Prince.standard.short=EST -America/Porto_Acre.daylight.short=ACST -America/Porto_Acre.generic.short=ACT -America/Porto_Acre.standard.short=ACT -America/Port_of_Spain.daylight.short=ADT -America/Port_of_Spain.generic.short=AT -America/Port_of_Spain.standard.short=AST -America/Porto_Velho.daylight.short=AMST -America/Porto_Velho.generic.short=AMT -America/Porto_Velho.standard.short=AMT -America/Puerto_Rico.daylight.short=ADT -America/Puerto_Rico.generic.short=AT -America/Puerto_Rico.standard.short=AST -America/Rainy_River.daylight.short=CDT -America/Rainy_River.generic.short=CT -America/Rainy_River.standard.short=CST -America/Rankin_Inlet.daylight.short=CDT -America/Rankin_Inlet.generic.short=CT -America/Rankin_Inlet.standard.short=CST -America/Recife.daylight.short=BRST -America/Recife.generic.short=BRT -America/Recife.standard.short=BRT -America/Regina.daylight.short=CDT -America/Regina.generic.short=CT -America/Regina.standard.short=CST -America/Resolute.daylight.short=CDT -America/Resolute.generic.short=CT -America/Resolute.standard.short=CST -America/Rio_Branco.daylight.short=ACST -America/Rio_Branco.generic.short=ACT -America/Rio_Branco.standard.short=ACT -America/Rosario.daylight.short=ARST -America/Rosario.generic.short=ART -America/Rosario.standard.short=ART -America/Santa_Isabel.daylight.short=PDT -America/Santa_Isabel.generic.short=PT -America/Santa_Isabel.standard.short=PST -America/Santarem.daylight.short=BRST -America/Santarem.generic.short=BRT -America/Santarem.standard.short=BRT -America/Santiago.daylight.short=CLST -America/Santiago.generic.short=CLT -America/Santiago.standard.short=CLT -America/Santo_Domingo.daylight.short=ADT -America/Santo_Domingo.generic.short=AT -America/Santo_Domingo.standard.short=AST -America/Sao_Paulo.daylight.short=BRST -America/Sao_Paulo.generic.short=BRT -America/Sao_Paulo.standard.short=BRT -America/Scoresbysund.daylight.short=EGST -America/Scoresbysund.generic.short=EGT -America/Scoresbysund.standard.short=EGT -America/Shiprock.daylight.short=MDT -America/Shiprock.generic.short=MT -America/Shiprock.standard.short=MST -America/Sitka.daylight.short=AKDT -America/Sitka.generic.short=AKT -America/Sitka.standard.short=AKST -America/St_Barthelemy.daylight.short=ADT -America/St_Barthelemy.generic.short=AT -America/St_Barthelemy.standard.short=AST -America/St_Johns.daylight.short=NDT -America/St_Johns.generic.short=NT -America/St_Johns.standard.short=NST -America/St_Kitts.daylight.short=ADT -America/St_Kitts.generic.short=AT -America/St_Kitts.standard.short=AST -America/St_Lucia.daylight.short=ADT -America/St_Lucia.generic.short=AT -America/St_Lucia.standard.short=AST -America/St_Thomas.daylight.short=ADT -America/St_Thomas.generic.short=AT -America/St_Thomas.standard.short=AST -America/St_Vincent.daylight.short=ADT -America/St_Vincent.generic.short=AT -America/St_Vincent.standard.short=AST -America/Swift_Current.daylight.short=CDT -America/Swift_Current.generic.short=CT -America/Swift_Current.standard.short=CST -America/Tegucigalpa.daylight.short=CDT -America/Tegucigalpa.generic.short=CT -America/Tegucigalpa.standard.short=CST -America/Thule.daylight.short=ADT -America/Thule.generic.short=AT -America/Thule.standard.short=AST -America/Thunder_Bay.daylight.short=EDT -America/Thunder_Bay.generic.short=ET -America/Thunder_Bay.standard.short=EST -America/Tijuana.daylight.short=PDT -America/Tijuana.generic.short=PT -America/Tijuana.standard.short=PST -America/Toronto.daylight.short=EDT -America/Toronto.generic.short=ET -America/Toronto.standard.short=EST -America/Tortola.daylight.short=ADT -America/Tortola.generic.short=AT -America/Tortola.standard.short=AST -America/Vancouver.daylight.short=PDT -America/Vancouver.generic.short=PT -America/Vancouver.standard.short=PST -America/Virgin.daylight.short=ADT -America/Virgin.generic.short=AT -America/Virgin.standard.short=AST -America/Whitehorse.daylight.short=PDT -America/Whitehorse.generic.short=PT -America/Whitehorse.standard.short=PST -America/Winnipeg.daylight.short=CDT -America/Winnipeg.generic.short=CT -America/Winnipeg.standard.short=CST -America/Yakutat.daylight.short=AKDT -America/Yakutat.generic.short=AKT -America/Yakutat.standard.short=AKST -America/Yellowknife.daylight.short=MDT -America/Yellowknife.generic.short=MT -America/Yellowknife.standard.short=MST -Antarctica/Casey.daylight.short=WST -Antarctica/Casey.generic.short=WT -Antarctica/Casey.standard.short=WST -Antarctica/Davis.daylight.short=DAVST -Antarctica/Davis.generic.short=DAVT -Antarctica/Davis.standard.short=DAVT -Antarctica/DumontDUrville.daylight.short=DDUST -Antarctica/DumontDUrville.generic.short=DDUT -Antarctica/DumontDUrville.standard.short=DDUT -Antarctica/Macquarie.daylight.short=MIST -Antarctica/Macquarie.generic.short=MIST -Antarctica/Macquarie.standard.short=MIST -Antarctica/Mawson.daylight.short=MAWST -Antarctica/Mawson.generic.short=MAWT -Antarctica/Mawson.standard.short=MAWT -Antarctica/McMurdo.daylight.short=NZDT -Antarctica/McMurdo.generic.short=NZT -Antarctica/McMurdo.standard.short=NZST -Antarctica/Palmer.daylight.short=CLST -Antarctica/Palmer.generic.short=CLT -Antarctica/Palmer.standard.short=CLT -Antarctica/Rothera.daylight.short=ROTST -Antarctica/Rothera.generic.short=ROTT -Antarctica/Rothera.standard.short=ROTT -Antarctica/South_Pole.daylight.short=NZDT -Antarctica/South_Pole.generic.short=NZT -Antarctica/South_Pole.standard.short=NZST -Antarctica/Syowa.daylight.short=SYOST -Antarctica/Syowa.generic.short=SYOT -Antarctica/Syowa.standard.short=SYOT -Antarctica/Vostok.daylight.short=VOSST -Antarctica/Vostok.generic.short=VOST -Antarctica/Vostok.standard.short=VOST -Arctic/Longyearbyen.daylight.short=CEST -Arctic/Longyearbyen.generic.short=CET -Arctic/Longyearbyen.standard.short=CET -ART.daylight.short=EEST -ART.generic.short=EET -ART.standard.short=EET -Asia/Aden.daylight.short=ADT -Asia/Aden.generic.short=AT -Asia/Aden.standard.short=AST -Asia/Almaty.daylight.short=ALMST -Asia/Almaty.generic.short=ALMT -Asia/Almaty.standard.short=ALMT -Asia/Amman.daylight.short=ADT -Asia/Amman.generic.short=AT -Asia/Amman.standard.short=AST -Asia/Anadyr.daylight.short=ANAST -Asia/Anadyr.generic.short=ANAT -Asia/Anadyr.standard.short=ANAT -Asia/Aqtau.daylight.short=AQTST -Asia/Aqtau.generic.short=AQTT -Asia/Aqtau.standard.short=AQTT -Asia/Aqtobe.daylight.short=AQTST -Asia/Aqtobe.generic.short=AQTT -Asia/Aqtobe.standard.short=AQTT -Asia/Ashgabat.daylight.short=TMST -Asia/Ashgabat.generic.short=TMT -Asia/Ashgabat.standard.short=TMT -Asia/Ashkhabad.daylight.short=TMST -Asia/Ashkhabad.generic.short=TMT -Asia/Ashkhabad.standard.short=TMT -Asia/Baghdad.daylight.short=ADT -Asia/Baghdad.generic.short=AT -Asia/Baghdad.standard.short=AST -Asia/Bahrain.daylight.short=ADT -Asia/Bahrain.generic.short=AT -Asia/Bahrain.standard.short=AST -Asia/Baku.daylight.short=AZST -Asia/Baku.generic.short=AZT -Asia/Baku.standard.short=AZT -Asia/Bangkok.daylight.short=ICST -Asia/Bangkok.generic.short=ICT -Asia/Bangkok.standard.short=ICT -Asia/Beirut.daylight.short=EEST -Asia/Beirut.generic.short=EET -Asia/Beirut.standard.short=EET -Asia/Bishkek.daylight.short=KGST -Asia/Bishkek.generic.short=KGT -Asia/Bishkek.standard.short=KGT -Asia/Brunei.daylight.short=BNST -Asia/Brunei.generic.short=BNT -Asia/Brunei.standard.short=BNT -Asia/Calcutta.daylight.short=IDT -Asia/Calcutta.generic.short=IT -Asia/Calcutta.standard.short=IST -Asia/Choibalsan.daylight.short=CHOST -Asia/Choibalsan.generic.short=CHOT -Asia/Choibalsan.standard.short=CHOT -Asia/Chongqing.daylight.short=CDT -Asia/Chongqing.generic.short=CT -Asia/Chongqing.standard.short=CST -Asia/Chungking.daylight.short=CDT -Asia/Chungking.generic.short=CT -Asia/Chungking.standard.short=CST -Asia/Colombo.daylight.short=IDT -Asia/Colombo.generic.short=IT -Asia/Colombo.standard.short=IST -Asia/Dacca.daylight.short=BDST -Asia/Dacca.generic.short=BDT -Asia/Dacca.standard.short=BDT -Asia/Damascus.daylight.short=EEST -Asia/Damascus.generic.short=EET -Asia/Damascus.standard.short=EET -Asia/Dhaka.daylight.short=BDST -Asia/Dhaka.generic.short=BDT -Asia/Dhaka.standard.short=BDT -Asia/Dili.daylight.short=TLST -Asia/Dili.generic.short=TLT -Asia/Dili.standard.short=TLT -Asia/Dubai.daylight.short=GDT -Asia/Dubai.generic.short=GT -Asia/Dubai.standard.short=GST -Asia/Dushanbe.daylight.short=TJST -Asia/Dushanbe.generic.short=TJT -Asia/Dushanbe.standard.short=TJT -Asia/Gaza.daylight.short=EEST -Asia/Gaza.generic.short=EET -Asia/Gaza.standard.short=EET -Asia/Harbin.daylight.short=CDT -Asia/Harbin.generic.short=CT -Asia/Harbin.standard.short=CST -Asia/Hebron.daylight.short=EEST -Asia/Hebron.generic.short=EET -Asia/Hebron.standard.short=EET -Asia/Ho_Chi_Minh.daylight.short=ICST -Asia/Ho_Chi_Minh.generic.short=ICT -Asia/Ho_Chi_Minh.standard.short=ICT -Asia/Hong_Kong.daylight.short=HKST -Asia/Hong_Kong.generic.short=HKT -Asia/Hong_Kong.standard.short=HKT -Asia/Hovd.daylight.short=HOVST -Asia/Hovd.generic.short=HOVT -Asia/Hovd.standard.short=HOVT -Asia/Irkutsk.daylight.short=IRKST -Asia/Irkutsk.generic.short=IRKT -Asia/Irkutsk.standard.short=IRKT -Asia/Istanbul.daylight.short=EEST -Asia/Istanbul.generic.short=EET -Asia/Istanbul.standard.short=EET -Asia/Jakarta.daylight.short=WIST -Asia/Jakarta.generic.short=WIB -Asia/Jakarta.standard.short=WIB -Asia/Jayapura.daylight.short=EIST -Asia/Jayapura.generic.short=WIT -Asia/Jayapura.standard.short=WIT -Asia/Jerusalem.daylight.short=IDT -Asia/Jerusalem.generic.short=IT -Asia/Jerusalem.standard.short=IST -Asia/Kabul.daylight.short=AFST -Asia/Kabul.generic.short=AFT -Asia/Kabul.standard.short=AFT -Asia/Kamchatka.daylight.short=PETST -Asia/Kamchatka.generic.short=PETT -Asia/Kamchatka.standard.short=PETT -Asia/Karachi.daylight.short=PKST -Asia/Karachi.generic.short=PKT -Asia/Karachi.standard.short=PKT -Asia/Kashgar.daylight.short=CDT -Asia/Kashgar.generic.short=CT -Asia/Kashgar.standard.short=CST -Asia/Kathmandu.daylight.short=NPST -Asia/Kathmandu.generic.short=NPT -Asia/Kathmandu.standard.short=NPT -Asia/Katmandu.daylight.short=NPST -Asia/Katmandu.generic.short=NPT -Asia/Katmandu.standard.short=NPT -Asia/Khandyga.daylight.short=YAKST -Asia/Khandyga.generic.short=YAKT -Asia/Khandyga.standard.short=YAKT -Asia/Kolkata.daylight.short=IDT -Asia/Kolkata.generic.short=IT -Asia/Kolkata.standard.short=IST -Asia/Krasnoyarsk.daylight.short=KRAST -Asia/Krasnoyarsk.generic.short=KRAT -Asia/Krasnoyarsk.standard.short=KRAT -Asia/Kuala_Lumpur.daylight.short=MYST -Asia/Kuala_Lumpur.generic.short=MYT -Asia/Kuala_Lumpur.standard.short=MYT -Asia/Kuching.daylight.short=MYST -Asia/Kuching.generic.short=MYT -Asia/Kuching.standard.short=MYT -Asia/Kuwait.daylight.short=ADT -Asia/Kuwait.generic.short=AT -Asia/Kuwait.standard.short=AST -Asia/Macao.daylight.short=CDT -Asia/Macao.generic.short=CT -Asia/Macao.standard.short=CST -Asia/Macau.daylight.short=CDT -Asia/Macau.generic.short=CT -Asia/Macau.standard.short=CST -Asia/Magadan.daylight.short=MAGST -Asia/Magadan.generic.short=MAGT -Asia/Magadan.standard.short=MAGT -Asia/Makassar.daylight.short=CIST -Asia/Makassar.generic.short=WITA -Asia/Makassar.standard.short=WITA -Asia/Manila.daylight.short=PHST -Asia/Manila.generic.short=PHT -Asia/Manila.standard.short=PHT -Asia/Muscat.daylight.short=GDT -Asia/Muscat.generic.short=GT -Asia/Muscat.standard.short=GST -Asia/Nicosia.daylight.short=EEST -Asia/Nicosia.generic.short=EET -Asia/Nicosia.standard.short=EET -Asia/Novokuznetsk.daylight.short=NOVST -Asia/Novokuznetsk.generic.short=NOVT -Asia/Novokuznetsk.standard.short=NOVT -Asia/Novosibirsk.daylight.short=NOVST -Asia/Novosibirsk.generic.short=NOVT -Asia/Novosibirsk.standard.short=NOVT -Asia/Omsk.daylight.short=OMSST -Asia/Omsk.generic.short=OMST -Asia/Omsk.standard.short=OMST -Asia/Oral.daylight.short=ORAST -Asia/Oral.generic.short=ORAT -Asia/Oral.standard.short=ORAT -Asia/Phnom_Penh.daylight.short=ICST -Asia/Phnom_Penh.generic.short=ICT -Asia/Phnom_Penh.standard.short=ICT -Asia/Pontianak.daylight.short=WIST -Asia/Pontianak.generic.short=WIB -Asia/Pontianak.standard.short=WIB -Asia/Pyongyang.daylight.short=KDT -Asia/Pyongyang.generic.short=KT -Asia/Pyongyang.standard.short=KST -Asia/Qatar.daylight.short=ADT -Asia/Qatar.generic.short=AT -Asia/Qatar.standard.short=AST -Asia/Qyzylorda.daylight.short=QYZST -Asia/Qyzylorda.generic.short=QYZT -Asia/Qyzylorda.standard.short=QYZT -Asia/Rangoon.daylight.short=MMST -Asia/Rangoon.generic.short=MMT -Asia/Rangoon.standard.short=MMT -Asia/Saigon.daylight.short=ICST -Asia/Saigon.generic.short=ICT -Asia/Saigon.standard.short=ICT -Asia/Sakhalin.daylight.short=SAKST -Asia/Sakhalin.generic.short=SAKT -Asia/Sakhalin.standard.short=SAKT -Asia/Samarkand.daylight.short=UZST -Asia/Samarkand.generic.short=UZT -Asia/Samarkand.standard.short=UZT -Asia/Seoul.daylight.short=KDT -Asia/Seoul.generic.short=KT -Asia/Seoul.standard.short=KST -Asia/Shanghai.daylight.short=CDT -Asia/Shanghai.generic.short=CT -Asia/Shanghai.standard.short=CST -Asia/Singapore.daylight.short=SGST -Asia/Singapore.generic.short=SGT -Asia/Singapore.standard.short=SGT -Asia/Taipei.daylight.short=CDT -Asia/Taipei.generic.short=CT -Asia/Taipei.standard.short=CST -Asia/Tashkent.daylight.short=UZST -Asia/Tashkent.generic.short=UZT -Asia/Tashkent.standard.short=UZT -Asia/Tbilisi.daylight.short=GEST -Asia/Tbilisi.generic.short=GET -Asia/Tbilisi.standard.short=GET -Asia/Tehran.daylight.short=IRDT -Asia/Tehran.generic.short=IRT -Asia/Tehran.standard.short=IRST -Asia/Tel_Aviv.daylight.short=IDT -Asia/Tel_Aviv.generic.short=IT -Asia/Tel_Aviv.standard.short=IST -Asia/Thimbu.daylight.short=BTST -Asia/Thimbu.generic.short=BTT -Asia/Thimbu.standard.short=BTT -Asia/Thimphu.daylight.short=BTST -Asia/Thimphu.generic.short=BTT -Asia/Thimphu.standard.short=BTT -Asia/Tokyo.daylight.short=JDT -Asia/Tokyo.generic.short=JT -Asia/Tokyo.standard.short=JST -Asia/Ujung_Pandang.daylight.short=CIST -Asia/Ujung_Pandang.generic.short=WITA -Asia/Ujung_Pandang.standard.short=WITA -Asia/Ulaanbaatar.daylight.short=ULAST -Asia/Ulaanbaatar.generic.short=ULAT -Asia/Ulaanbaatar.standard.short=ULAT -Asia/Ulan_Bator.daylight.short=ULAST -Asia/Ulan_Bator.generic.short=ULAT -Asia/Ulan_Bator.standard.short=ULAT -Asia/Urumqi.daylight.short=CDT -Asia/Urumqi.generic.short=CT -Asia/Urumqi.standard.short=CST -Asia/Ust-Nera.daylight.short=VLAST -Asia/Ust-Nera.generic.short=VLAT -Asia/Ust-Nera.standard.short=VLAT -Asia/Vientiane.daylight.short=ICST -Asia/Vientiane.generic.short=ICT -Asia/Vientiane.standard.short=ICT -Asia/Vladivostok.daylight.short=VLAST -Asia/Vladivostok.generic.short=VLAT -Asia/Vladivostok.standard.short=VLAT -Asia/Yakutsk.daylight.short=YAKST -Asia/Yakutsk.generic.short=YAKT -Asia/Yakutsk.standard.short=YAKT -Asia/Yekaterinburg.daylight.short=YEKST -Asia/Yekaterinburg.generic.short=YEKT -Asia/Yekaterinburg.standard.short=YEKT -Asia/Yerevan.daylight.short=AMST -Asia/Yerevan.generic.short=AMT -Asia/Yerevan.standard.short=AMT -AST.daylight.short=AKDT -AST.generic.short=AKT -AST.standard.short=AKST -Atlantic/Azores.daylight.short=AZOST -Atlantic/Azores.generic.short=AZOT -Atlantic/Azores.standard.short=AZOT -Atlantic/Bermuda.daylight.short=ADT -Atlantic/Bermuda.generic.short=AT -Atlantic/Bermuda.standard.short=AST -Atlantic/Canary.daylight.short=WEST -Atlantic/Canary.generic.short=WET -Atlantic/Canary.standard.short=WET -Atlantic/Cape_Verde.daylight.short=CVST -Atlantic/Cape_Verde.generic.short=CVT -Atlantic/Cape_Verde.standard.short=CVT -Atlantic/Faeroe.daylight.short=WEST -Atlantic/Faeroe.generic.short=WET -Atlantic/Faeroe.standard.short=WET -Atlantic/Faroe.daylight.short=WEST -Atlantic/Faroe.generic.short=WET -Atlantic/Faroe.standard.short=WET -Atlantic/Jan_Mayen.daylight.short=CEST -Atlantic/Jan_Mayen.generic.short=CET -Atlantic/Jan_Mayen.standard.short=CET -Atlantic/Madeira.daylight.short=WEST -Atlantic/Madeira.generic.short=WET -Atlantic/Madeira.standard.short=WET -Atlantic/Reykjavik.daylight.short=GMT -Atlantic/Reykjavik.generic.short=GMT -Atlantic/Reykjavik.standard.short=GMT -Atlantic/South_Georgia.daylight.short=GDT -Atlantic/South_Georgia.generic.short=GT -Atlantic/South_Georgia.standard.short=GST -Atlantic/Stanley.daylight.short=FKST -Atlantic/Stanley.generic.short=FKT -Atlantic/Stanley.standard.short=FKT -Atlantic/St_Helena.daylight.short=GMT -Atlantic/St_Helena.generic.short=GMT -Atlantic/St_Helena.standard.short=GMT -Australia/ACT.daylight.short=EST -Australia/ACT.generic.short=ET -Australia/ACT.standard.short=EST -Australia/Adelaide.daylight.short=CST -Australia/Adelaide.generic.short=CT -Australia/Adelaide.standard.short=CST -Australia/Brisbane.daylight.short=EST -Australia/Brisbane.generic.short=ET -Australia/Brisbane.standard.short=EST -Australia/Broken_Hill.daylight.short=CST -Australia/Broken_Hill.generic.short=CT -Australia/Broken_Hill.standard.short=CST -Australia/Canberra.daylight.short=EST -Australia/Canberra.generic.short=ET -Australia/Canberra.standard.short=EST -Australia/Currie.daylight.short=EST -Australia/Currie.generic.short=ET -Australia/Currie.standard.short=EST -Australia/Darwin.daylight.short=CST -Australia/Darwin.generic.short=CT -Australia/Darwin.standard.short=CST -Australia/Eucla.daylight.short=CWST -Australia/Eucla.generic.short=CWT -Australia/Eucla.standard.short=CWST -Australia/Hobart.daylight.short=EST -Australia/Hobart.generic.short=ET -Australia/Hobart.standard.short=EST -Australia/LHI.daylight.short=LHST -Australia/LHI.generic.short=LHT -Australia/LHI.standard.short=LHST -Australia/Lindeman.daylight.short=EST -Australia/Lindeman.generic.short=ET -Australia/Lindeman.standard.short=EST -Australia/Lord_Howe.daylight.short=LHST -Australia/Lord_Howe.generic.short=LHT -Australia/Lord_Howe.standard.short=LHST -Australia/Melbourne.daylight.short=EST -Australia/Melbourne.generic.short=ET -Australia/Melbourne.standard.short=EST -Australia/North.daylight.short=CST -Australia/North.generic.short=CT -Australia/North.standard.short=CST -Australia/NSW.daylight.short=EST -Australia/NSW.generic.short=ET -Australia/NSW.standard.short=EST -Australia/Perth.daylight.short=WST -Australia/Perth.generic.short=WT -Australia/Perth.standard.short=WST -Australia/Queensland.daylight.short=EST -Australia/Queensland.generic.short=ET -Australia/Queensland.standard.short=EST -Australia/South.daylight.short=CST -Australia/South.generic.short=CT -Australia/South.standard.short=CST -Australia/Sydney.daylight.short=EST -Australia/Sydney.generic.short=ET -Australia/Sydney.standard.short=EST -Australia/Tasmania.daylight.short=EST -Australia/Tasmania.generic.short=ET -Australia/Tasmania.standard.short=EST -Australia/Victoria.daylight.short=EST -Australia/Victoria.generic.short=ET -Australia/Victoria.standard.short=EST -Australia/West.daylight.short=WST -Australia/West.generic.short=WT -Australia/West.standard.short=WST -Australia/Yancowinna.daylight.short=CST -Australia/Yancowinna.generic.short=CT -Australia/Yancowinna.standard.short=CST -BET.daylight.short=BRST -BET.generic.short=BRT -BET.standard.short=BRT -Brazil/Acre.daylight.short=ACST -Brazil/Acre.generic.short=ACT -Brazil/Acre.standard.short=ACT -Brazil/DeNoronha.daylight.short=FNST -Brazil/DeNoronha.generic.short=FNT -Brazil/DeNoronha.standard.short=FNT -Brazil/East.daylight.short=BRST -Brazil/East.generic.short=BRT -Brazil/East.standard.short=BRT -Brazil/West.daylight.short=AMST -Brazil/West.generic.short=AMT -Brazil/West.standard.short=AMT -BST.daylight.short=BDST -BST.generic.short=BDT -BST.standard.short=BDT -Canada/Atlantic.daylight.short=ADT -Canada/Atlantic.generic.short=AT -Canada/Atlantic.standard.short=AST -Canada/Central.daylight.short=CDT -Canada/Central.generic.short=CT -Canada/Central.standard.short=CST -Canada/Eastern.daylight.short=EDT -Canada/Eastern.generic.short=ET -Canada/Eastern.standard.short=EST -Canada/East-Saskatchewan.daylight.short=CDT -Canada/East-Saskatchewan.generic.short=CT -Canada/East-Saskatchewan.standard.short=CST -Canada/Mountain.daylight.short=MDT -Canada/Mountain.generic.short=MT -Canada/Mountain.standard.short=MST -Canada/Newfoundland.daylight.short=NDT -Canada/Newfoundland.generic.short=NT -Canada/Newfoundland.standard.short=NST -Canada/Pacific.daylight.short=PDT -Canada/Pacific.generic.short=PT -Canada/Pacific.standard.short=PST -Canada/Saskatchewan.daylight.short=CDT -Canada/Saskatchewan.generic.short=CT -Canada/Saskatchewan.standard.short=CST -Canada/Yukon.daylight.short=PDT -Canada/Yukon.generic.short=PT -Canada/Yukon.standard.short=PST -CAT.daylight.short=CAST -CAT.generic.short=CAT -CAT.standard.short=CAT -CET.daylight.short=CEST -CET.generic.short=CET -CET.standard.short=CET -Chile/Continental.daylight.short=CLST -Chile/Continental.generic.short=CLT -Chile/Continental.standard.short=CLT -Chile/EasterIsland.daylight.short=EASST -Chile/EasterIsland.generic.short=EAST -Chile/EasterIsland.standard.short=EAST -CNT.daylight.short=NDT -CNT.generic.short=NT -CNT.standard.short=NST -CST6CDT.daylight.short=CDT -CST6CDT.generic.short=CT -CST6CDT.standard.short=CST -CST.daylight.short=CDT -CST.generic.short=CT -CST.standard.short=CST -CTT.daylight.short=CDT -CTT.generic.short=CT -CTT.standard.short=CST -Cuba.daylight.short=CDT -Cuba.generic.short=CT -Cuba.standard.short=CST -EAT.daylight.short=EAST -EAT.generic.short=EAT -EAT.standard.short=EAT -ECT.daylight.short=CEST -ECT.generic.short=CET -ECT.standard.short=CET -EET.daylight.short=EEST -EET.generic.short=EET -EET.standard.short=EET -Egypt.daylight.short=EEST -Egypt.generic.short=EET -Egypt.standard.short=EET -Eire.daylight.short=IST -Eire.generic.short=IT -Eire.standard.short=GMT -EST5EDT.daylight.short=EDT -EST5EDT.generic.short=ET -EST5EDT.standard.short=EST -EST.daylight.short=EDT -EST.generic.short=ET -EST.standard.short=EST -Etc/Greenwich.daylight.short=GMT -Etc/Greenwich.generic.short=GMT -Etc/Greenwich.standard.short=GMT -Etc/UCT.daylight.short=UTC -Etc/UCT.generic.short=UTC -Etc/UCT.standard.short=UTC -Etc/Universal.daylight.short=UTC -Etc/Universal.generic.short=UTC -Etc/Universal.standard.short=UTC -Etc/UTC.daylight.short=UTC -Etc/UTC.generic.short=UTC -Etc/UTC.standard.short=UTC -Etc/Zulu.daylight.short=UTC -Etc/Zulu.generic.short=UTC -Etc/Zulu.standard.short=UTC -Europe/Amsterdam.daylight.short=CEST -Europe/Amsterdam.generic.short=CET -Europe/Amsterdam.standard.short=CET -Europe/Andorra.daylight.short=CEST -Europe/Andorra.generic.short=CET -Europe/Andorra.standard.short=CET -Europe/Athens.daylight.short=EEST -Europe/Athens.generic.short=EET -Europe/Athens.standard.short=EET -Europe/Belfast.daylight.short=BST -Europe/Belfast.generic.short=BT -Europe/Belfast.standard.short=GMT -Europe/Belgrade.daylight.short=CEST -Europe/Belgrade.generic.short=CET -Europe/Belgrade.standard.short=CET -Europe/Berlin.daylight.short=CEST -Europe/Berlin.generic.short=CET -Europe/Berlin.standard.short=CET -Europe/Bratislava.daylight.short=CEST -Europe/Bratislava.generic.short=CET -Europe/Bratislava.standard.short=CET -Europe/Brussels.daylight.short=CEST -Europe/Brussels.generic.short=CET -Europe/Brussels.standard.short=CET -Europe/Bucharest.daylight.short=EEST -Europe/Bucharest.generic.short=EET -Europe/Bucharest.standard.short=EET -Europe/Budapest.daylight.short=CEST -Europe/Budapest.generic.short=CET -Europe/Budapest.standard.short=CET -Europe/Busingen.daylight.short=CEST -Europe/Busingen.generic.short=CET -Europe/Busingen.standard.short=CET -Europe/Chisinau.daylight.short=EEST -Europe/Chisinau.generic.short=EET -Europe/Chisinau.standard.short=EET -Europe/Copenhagen.daylight.short=CEST -Europe/Copenhagen.generic.short=CET -Europe/Copenhagen.standard.short=CET -Europe/Dublin.daylight.short=IST -Europe/Dublin.generic.short=IT -Europe/Dublin.standard.short=GMT -Europe/Gibraltar.daylight.short=CEST -Europe/Gibraltar.generic.short=CET -Europe/Gibraltar.standard.short=CET -Europe/Guernsey.daylight.short=BST -Europe/Guernsey.generic.short=BT -Europe/Guernsey.standard.short=GMT -Europe/Helsinki.daylight.short=EEST -Europe/Helsinki.generic.short=EET -Europe/Helsinki.standard.short=EET -Europe/Isle_of_Man.daylight.short=BST -Europe/Isle_of_Man.generic.short=BT -Europe/Isle_of_Man.standard.short=GMT -Europe/Istanbul.daylight.short=EEST -Europe/Istanbul.generic.short=EET -Europe/Istanbul.standard.short=EET -Europe/Jersey.daylight.short=BST -Europe/Jersey.generic.short=BT -Europe/Jersey.standard.short=GMT -Europe/Kaliningrad.daylight.short=FEST -Europe/Kaliningrad.generic.short=FET -Europe/Kaliningrad.standard.short=FET -Europe/Kiev.daylight.short=EEST -Europe/Kiev.generic.short=EET -Europe/Kiev.standard.short=EET -Europe/Lisbon.daylight.short=WEST -Europe/Lisbon.generic.short=WET -Europe/Lisbon.standard.short=WET -Europe/Ljubljana.daylight.short=CEST -Europe/Ljubljana.generic.short=CET -Europe/Ljubljana.standard.short=CET -Europe/London.daylight.short=BST -Europe/London.generic.short=BT -Europe/London.standard.short=GMT -Europe/Luxembourg.daylight.short=CEST -Europe/Luxembourg.generic.short=CET -Europe/Luxembourg.standard.short=CET -Europe/Madrid.daylight.short=CEST -Europe/Madrid.generic.short=CET -Europe/Madrid.standard.short=CET -Europe/Malta.daylight.short=CEST -Europe/Malta.generic.short=CET -Europe/Malta.standard.short=CET -Europe/Mariehamn.daylight.short=EEST -Europe/Mariehamn.generic.short=EET -Europe/Mariehamn.standard.short=EET -Europe/Minsk.daylight.short=FEST -Europe/Minsk.generic.short=FET -Europe/Minsk.standard.short=FET -Europe/Monaco.daylight.short=CEST -Europe/Monaco.generic.short=CET -Europe/Monaco.standard.short=CET -Europe/Moscow.daylight.short=MSD -Europe/Moscow.generic.short=MT -Europe/Moscow.standard.short=MSK -Europe/Nicosia.daylight.short=EEST -Europe/Nicosia.generic.short=EET -Europe/Nicosia.standard.short=EET -Europe/Oslo.daylight.short=CEST -Europe/Oslo.generic.short=CET -Europe/Oslo.standard.short=CET -Europe/Paris.daylight.short=CEST -Europe/Paris.generic.short=CET -Europe/Paris.standard.short=CET -Europe/Podgorica.daylight.short=CEST -Europe/Podgorica.generic.short=CET -Europe/Podgorica.standard.short=CET -Europe/Prague.daylight.short=CEST -Europe/Prague.generic.short=CET -Europe/Prague.standard.short=CET -Europe/Riga.daylight.short=EEST -Europe/Riga.generic.short=EET -Europe/Riga.standard.short=EET -Europe/Rome.daylight.short=CEST -Europe/Rome.generic.short=CET -Europe/Rome.standard.short=CET -Europe/Samara.daylight.short=SAMST -Europe/Samara.generic.short=SAMT -Europe/Samara.standard.short=SAMT -Europe/San_Marino.daylight.short=CEST -Europe/San_Marino.generic.short=CET -Europe/San_Marino.standard.short=CET -Europe/Sarajevo.daylight.short=CEST -Europe/Sarajevo.generic.short=CET -Europe/Sarajevo.standard.short=CET -Europe/Simferopol.daylight.short=EEST -Europe/Simferopol.generic.short=EET -Europe/Simferopol.standard.short=EET -Europe/Skopje.daylight.short=CEST -Europe/Skopje.generic.short=CET -Europe/Skopje.standard.short=CET -Europe/Sofia.daylight.short=EEST -Europe/Sofia.generic.short=EET -Europe/Sofia.standard.short=EET -Europe/Stockholm.daylight.short=CEST -Europe/Stockholm.generic.short=CET -Europe/Stockholm.standard.short=CET -Europe/Tallinn.daylight.short=EEST -Europe/Tallinn.generic.short=EET -Europe/Tallinn.standard.short=EET -Europe/Tirane.daylight.short=CEST -Europe/Tirane.generic.short=CET -Europe/Tirane.standard.short=CET -Europe/Tiraspol.daylight.short=EEST -Europe/Tiraspol.generic.short=EET -Europe/Tiraspol.standard.short=EET -Europe/Uzhgorod.daylight.short=EEST -Europe/Uzhgorod.generic.short=EET -Europe/Uzhgorod.standard.short=EET -Europe/Vaduz.daylight.short=CEST -Europe/Vaduz.generic.short=CET -Europe/Vaduz.standard.short=CET -Europe/Vatican.daylight.short=CEST -Europe/Vatican.generic.short=CET -Europe/Vatican.standard.short=CET -Europe/Vienna.daylight.short=CEST -Europe/Vienna.generic.short=CET -Europe/Vienna.standard.short=CET -Europe/Vilnius.daylight.short=EEST -Europe/Vilnius.generic.short=EET -Europe/Vilnius.standard.short=EET -Europe/Volgograd.daylight.short=VOLST -Europe/Volgograd.generic.short=VOLT -Europe/Volgograd.standard.short=VOLT -Europe/Warsaw.daylight.short=CEST -Europe/Warsaw.generic.short=CET -Europe/Warsaw.standard.short=CET -Europe/Zagreb.daylight.short=CEST -Europe/Zagreb.generic.short=CET -Europe/Zagreb.standard.short=CET -Europe/Zaporozhye.daylight.short=EEST -Europe/Zaporozhye.generic.short=EET -Europe/Zaporozhye.standard.short=EET -Europe/Zurich.daylight.short=CEST -Europe/Zurich.generic.short=CET -Europe/Zurich.standard.short=CET -GB.daylight.short=BST -GB-Eire.daylight.short=BST -GB-Eire.generic.short=BT -GB-Eire.standard.short=GMT -GB.generic.short=BT -GB.standard.short=GMT -GMT.daylight.short=GMT -GMT.generic.short=GMT -GMT.standard.short=GMT -Greenwich.daylight.short=GMT -Greenwich.generic.short=GMT -Greenwich.standard.short=GMT -Hongkong.daylight.short=HKST -Hongkong.generic.short=HKT -Hongkong.standard.short=HKT -HST.daylight.short=HDT -HST.generic.short=HT -HST.standard.short=HST -Iceland.daylight.short=GMT -Iceland.generic.short=GMT -Iceland.standard.short=GMT -IET.daylight.short=EDT -IET.generic.short=ET -IET.standard.short=EST -Indian/Antananarivo.daylight.short=EAST -Indian/Antananarivo.generic.short=EAT -Indian/Antananarivo.standard.short=EAT -Indian/Chagos.daylight.short=IOST -Indian/Chagos.generic.short=IOT -Indian/Chagos.standard.short=IOT -Indian/Christmas.daylight.short=CXST -Indian/Christmas.generic.short=CIT -Indian/Christmas.standard.short=CXT -Indian/Cocos.daylight.short=CCST -Indian/Cocos.generic.short=CCT -Indian/Cocos.standard.short=CCT -Indian/Comoro.daylight.short=EAST -Indian/Comoro.generic.short=EAT -Indian/Comoro.standard.short=EAT -Indian/Kerguelen.daylight.short=TFST -Indian/Kerguelen.generic.short=TFT -Indian/Kerguelen.standard.short=TFT -Indian/Mahe.daylight.short=SCST -Indian/Mahe.generic.short=SCT -Indian/Mahe.standard.short=SCT -Indian/Maldives.daylight.short=MVST -Indian/Maldives.generic.short=MVT -Indian/Maldives.standard.short=MVT -Indian/Mauritius.daylight.short=MUST -Indian/Mauritius.generic.short=MUT -Indian/Mauritius.standard.short=MUT -Indian/Mayotte.daylight.short=EAST -Indian/Mayotte.generic.short=EAT -Indian/Mayotte.standard.short=EAT -Indian/Reunion.daylight.short=REST -Indian/Reunion.generic.short=RET -Indian/Reunion.standard.short=RET -Iran.daylight.short=IRDT -Iran.generic.short=IRT -Iran.standard.short=IRST -Israel.daylight.short=IDT -Israel.generic.short=IT -Israel.standard.short=IST -IST.daylight.short=IDT -IST.generic.short=IT -IST.standard.short=IST -Jamaica.daylight.short=EDT -Jamaica.generic.short=ET -Jamaica.standard.short=EST -Japan.daylight.short=JDT -Japan.generic.short=JT -Japan.standard.short=JST -JST.daylight.short=JDT -JST.generic.short=JT -JST.standard.short=JST -Kwajalein.daylight.short=MHST -Kwajalein.generic.short=MHT -Kwajalein.standard.short=MHT -Libya.daylight.short=EEST -Libya.generic.short=EET -Libya.standard.short=EET -MET.daylight.short=MEST -MET.generic.short=MET -MET.standard.short=MET -Mexico/BajaNorte.daylight.short=PDT -Mexico/BajaNorte.generic.short=PT -Mexico/BajaNorte.standard.short=PST -Mexico/BajaSur.daylight.short=MDT -Mexico/BajaSur.generic.short=MT -Mexico/BajaSur.standard.short=MST -Mexico/General.daylight.short=CDT -Mexico/General.generic.short=CT -Mexico/General.standard.short=CST -MIT.daylight.short=WSDT -MIT.generic.short=WST -MIT.standard.short=WST -MST7MDT.daylight.short=MDT -MST7MDT.generic.short=MT -MST7MDT.standard.short=MST -MST.daylight.short=MDT -MST.generic.short=MT -MST.standard.short=MST -Navajo.daylight.short=MDT -Navajo.generic.short=MT -Navajo.standard.short=MST -NET.daylight.short=AMST -NET.generic.short=AMT -NET.standard.short=AMT -NST.daylight.short=NZDT -NST.generic.short=NZT -NST.standard.short=NZST -NZ-CHAT.daylight.short=CHADT -NZ-CHAT.generic.short=CHAT -NZ-CHAT.standard.short=CHAST -NZ.daylight.short=NZDT -NZ.generic.short=NZT -NZ.standard.short=NZST -Pacific/Apia.daylight.short=WSDT -Pacific/Apia.generic.short=WST -Pacific/Apia.standard.short=WST -Pacific/Auckland.daylight.short=NZDT -Pacific/Auckland.generic.short=NZT -Pacific/Auckland.standard.short=NZST -Pacific/Chatham.daylight.short=CHADT -Pacific/Chatham.generic.short=CHAT -Pacific/Chatham.standard.short=CHAST -Pacific/Chuuk.daylight.short=CHUST -Pacific/Chuuk.generic.short=CHUT -Pacific/Chuuk.standard.short=CHUT -Pacific/Easter.daylight.short=EASST -Pacific/Easter.generic.short=EAST -Pacific/Easter.standard.short=EAST -Pacific/Efate.daylight.short=VUST -Pacific/Efate.generic.short=VUT -Pacific/Efate.standard.short=VUT -Pacific/Enderbury.daylight.short=PHOST -Pacific/Enderbury.generic.short=PHOT -Pacific/Enderbury.standard.short=PHOT -Pacific/Fakaofo.daylight.short=TKST -Pacific/Fakaofo.generic.short=TKT -Pacific/Fakaofo.standard.short=TKT -Pacific/Fiji.daylight.short=FJST -Pacific/Fiji.generic.short=FJT -Pacific/Fiji.standard.short=FJT -Pacific/Funafuti.daylight.short=TVST -Pacific/Funafuti.generic.short=TVT -Pacific/Funafuti.standard.short=TVT -Pacific/Galapagos.daylight.short=GALST -Pacific/Galapagos.generic.short=GALT -Pacific/Galapagos.standard.short=GALT -Pacific/Gambier.daylight.short=GAMST -Pacific/Gambier.generic.short=GAMT -Pacific/Gambier.standard.short=GAMT -Pacific/Guadalcanal.daylight.short=SBST -Pacific/Guadalcanal.generic.short=SBT -Pacific/Guadalcanal.standard.short=SBT -Pacific/Guam.daylight.short=ChDT -Pacific/Guam.generic.short=ChT -Pacific/Guam.standard.short=ChST -Pacific/Honolulu.daylight.short=HDT -Pacific/Honolulu.generic.short=HT -Pacific/Honolulu.standard.short=HST -Pacific/Johnston.daylight.short=HDT -Pacific/Johnston.generic.short=HT -Pacific/Johnston.standard.short=HST -Pacific/Kiritimati.daylight.short=LINST -Pacific/Kiritimati.generic.short=LINT -Pacific/Kiritimati.standard.short=LINT -Pacific/Kosrae.daylight.short=KOSST -Pacific/Kosrae.generic.short=KOST -Pacific/Kosrae.standard.short=KOST -Pacific/Kwajalein.daylight.short=MHST -Pacific/Kwajalein.generic.short=MHT -Pacific/Kwajalein.standard.short=MHT -Pacific/Majuro.daylight.short=MHST -Pacific/Majuro.generic.short=MHT -Pacific/Majuro.standard.short=MHT -Pacific/Marquesas.daylight.short=MARST -Pacific/Marquesas.generic.short=MART -Pacific/Marquesas.standard.short=MART -Pacific/Midway.daylight.short=SDT -Pacific/Midway.generic.short=ST -Pacific/Midway.standard.short=SST -Pacific/Nauru.daylight.short=NRST -Pacific/Nauru.generic.short=NRT -Pacific/Nauru.standard.short=NRT -Pacific/Niue.daylight.short=NUST -Pacific/Niue.generic.short=NUT -Pacific/Niue.standard.short=NUT -Pacific/Norfolk.daylight.short=NFST -Pacific/Norfolk.generic.short=NFT -Pacific/Norfolk.standard.short=NFT -Pacific/Noumea.daylight.short=NCST -Pacific/Noumea.generic.short=NCT -Pacific/Noumea.standard.short=NCT -Pacific/Pago_Pago.daylight.short=SDT -Pacific/Pago_Pago.generic.short=ST -Pacific/Pago_Pago.standard.short=SST -Pacific/Palau.daylight.short=PWST -Pacific/Palau.generic.short=PWT -Pacific/Palau.standard.short=PWT -Pacific/Pitcairn.daylight.short=PDT -Pacific/Pitcairn.generic.short=PT -Pacific/Pitcairn.standard.short=PST -Pacific/Pohnpei.daylight.short=PONST -Pacific/Pohnpei.generic.short=PONT -Pacific/Pohnpei.standard.short=PONT -Pacific/Ponape.daylight.short=PONST -Pacific/Ponape.generic.short=PONT -Pacific/Ponape.standard.short=PONT -Pacific/Port_Moresby.daylight.short=PGST -Pacific/Port_Moresby.generic.short=PGT -Pacific/Port_Moresby.standard.short=PGT -Pacific/Rarotonga.daylight.short=CKHST -Pacific/Rarotonga.generic.short=CKT -Pacific/Rarotonga.standard.short=CKT -Pacific/Saipan.daylight.short=ChDT -Pacific/Saipan.generic.short=ChT -Pacific/Saipan.standard.short=ChST -Pacific/Samoa.daylight.short=SDT -Pacific/Samoa.generic.short=ST -Pacific/Samoa.standard.short=SST -Pacific/Tahiti.daylight.short=TAHST -Pacific/Tahiti.generic.short=TAHT -Pacific/Tahiti.standard.short=TAHT -Pacific/Tarawa.daylight.short=GILST -Pacific/Tarawa.generic.short=GILT -Pacific/Tarawa.standard.short=GILT -Pacific/Tongatapu.daylight.short=TOST -Pacific/Tongatapu.generic.short=TOT -Pacific/Tongatapu.standard.short=TOT -Pacific/Truk.daylight.short=CHUST -Pacific/Truk.generic.short=CHUT -Pacific/Truk.standard.short=CHUT -Pacific/Wake.daylight.short=WAKST -Pacific/Wake.generic.short=WAKT -Pacific/Wake.standard.short=WAKT -Pacific/Wallis.daylight.short=WFST -Pacific/Wallis.generic.short=WFT -Pacific/Wallis.standard.short=WFT -Pacific/Yap.daylight.short=CHUST -Pacific/Yap.generic.short=CHUT -Pacific/Yap.standard.short=CHUT -PLT.daylight.short=PKST -PLT.generic.short=PKT -PLT.standard.short=PKT -PNT.daylight.short=MDT -PNT.generic.short=MT -PNT.standard.short=MST -Poland.daylight.short=CEST -Poland.generic.short=CET -Poland.standard.short=CET -Portugal.daylight.short=WEST -Portugal.generic.short=WET -Portugal.standard.short=WET -PRC.daylight.short=CDT -PRC.generic.short=CT -PRC.standard.short=CST -PRT.daylight.short=ADT -PRT.generic.short=AT -PRT.standard.short=AST -PST8PDT.daylight.short=PDT -PST8PDT.generic.short=PT -PST8PDT.standard.short=PST -PST.daylight.short=PDT -PST.generic.short=PT -PST.standard.short=PST -ROK.daylight.short=KDT -ROK.generic.short=KT -ROK.standard.short=KST -Singapore.daylight.short=SGST -Singapore.generic.short=SGT -Singapore.standard.short=SGT -SST.daylight.short=SBST -SST.generic.short=SBT -SST.standard.short=SBT -SystemV/AST4ADT.daylight.short=ADT -SystemV/AST4ADT.generic.short=AT -SystemV/AST4ADT.standard.short=AST -SystemV/AST4.daylight.short=ADT -SystemV/AST4.generic.short=AT -SystemV/AST4.standard.short=AST -SystemV/CST6CDT.daylight.short=CDT -SystemV/CST6CDT.generic.short=CT -SystemV/CST6CDT.standard.short=CST -SystemV/CST6.daylight.short=CDT -SystemV/CST6.generic.short=CT -SystemV/CST6.standard.short=CST -SystemV/EST5.daylight.short=EDT -SystemV/EST5EDT.daylight.short=EDT -SystemV/EST5EDT.generic.short=ET -SystemV/EST5EDT.standard.short=EST -SystemV/EST5.generic.short=ET -SystemV/EST5.standard.short=EST -SystemV/HST10.daylight.short=HDT -SystemV/HST10.generic.short=HT -SystemV/HST10.standard.short=HST -SystemV/MST7.daylight.short=MDT -SystemV/MST7.generic.short=MT -SystemV/MST7MDT.daylight.short=MDT -SystemV/MST7MDT.generic.short=MT -SystemV/MST7MDT.standard.short=MST -SystemV/MST7.standard.short=MST -SystemV/PST8.daylight.short=PDT -SystemV/PST8.generic.short=PT -SystemV/PST8PDT.daylight.short=PDT -SystemV/PST8PDT.generic.short=PT -SystemV/PST8PDT.standard.short=PST -SystemV/PST8.standard.short=PST -SystemV/YST9.daylight.short=AKDT -SystemV/YST9.generic.short=AKT -SystemV/YST9.standard.short=AKST -SystemV/YST9YDT.daylight.short=AKDT -SystemV/YST9YDT.generic.short=AKT -SystemV/YST9YDT.standard.short=AKST -Turkey.daylight.short=EEST -Turkey.generic.short=EET -Turkey.standard.short=EET -UCT.daylight.short=UTC -UCT.generic.short=UTC -UCT.standard.short=UTC -Universal.daylight.short=UTC -Universal.generic.short=UTC -Universal.standard.short=UTC -US/Alaska.daylight.short=AKDT -US/Alaska.generic.short=AKT -US/Alaska.standard.short=AKST -US/Aleutian.daylight.short=HADT -US/Aleutian.generic.short=HAT -US/Aleutian.standard.short=HAST -US/Arizona.daylight.short=MDT -US/Arizona.generic.short=MT -US/Arizona.standard.short=MST -US/Central.daylight.short=CDT -US/Central.generic.short=CT -US/Central.standard.short=CST -US/Eastern.daylight.short=EDT -US/Eastern.generic.short=ET -US/Eastern.standard.short=EST -US/East-Indiana.daylight.short=EDT -US/East-Indiana.generic.short=ET -US/East-Indiana.standard.short=EST -US/Hawaii.daylight.short=HDT -US/Hawaii.generic.short=HT -US/Hawaii.standard.short=HST -US/Indiana-Starke.daylight.short=CDT -US/Indiana-Starke.generic.short=CT -US/Indiana-Starke.standard.short=CST -US/Michigan.daylight.short=EDT -US/Michigan.generic.short=ET -US/Michigan.standard.short=EST -US/Mountain.daylight.short=MDT -US/Mountain.generic.short=MT -US/Mountain.standard.short=MST -US/Pacific.daylight.short=PDT -US/Pacific.generic.short=PT -US/Pacific-New.daylight.short=PDT -US/Pacific-New.generic.short=PT -US/Pacific-New.standard.short=PST -US/Pacific.standard.short=PST -US/Samoa.daylight.short=SDT -US/Samoa.generic.short=ST -US/Samoa.standard.short=SST -UTC.daylight.short=UTC -UTC.generic.short=UTC -UTC.standard.short=UTC -VST.daylight.short=ICST -VST.generic.short=ICT -VST.standard.short=ICT -WET.daylight.short=WEST -WET.generic.short=WET -WET.standard.short=WET -W-SU.daylight.short=MSD -W-SU.generic.short=MT -W-SU.standard.short=MSK -Zulu.daylight.short=UTC -Zulu.generic.short=UTC -Zulu.standard.short=UTC diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_TW.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_TW.properties deleted file mode 100644 index a9b77a60a66..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_TW.properties +++ /dev/null @@ -1,651 +0,0 @@ -ACT.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340) -ACT.generic.long=\u6FB3\u5927\u5229\u4E9E\u4E2D\u90E8\u6642\u9593 (\u5317\u65B9\u5340\u57DF) -ACT.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340) -AET.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -AET.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -AET.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -AGT.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -ART.generic.long=\u6771\u6B50\u6642\u9593 -AST.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593 -Africa/Abidjan.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Africa/Accra.generic.long=\u8FE6\u7D0D\u6642\u9593 -Africa/Addis_Ababa.generic.long=\u6771\u975E\u6642\u9593 -Africa/Algiers.generic.long=\u4E2D\u6B50\u6642\u9593 -Africa/Asmara.generic.long=\u6771\u975E\u6642\u9593 -Africa/Asmera.generic.long=\u6771\u975E\u6642\u9593 -Africa/Bamako.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Africa/Bangui.generic.long=\u897F\u975E\u6642\u9593 -Africa/Banjul.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Africa/Bissau.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Africa/Blantyre.generic.long=\u4E2D\u975E\u6642\u9593 -Africa/Brazzaville.generic.long=\u897F\u975E\u6642\u9593 -Africa/Bujumbura.generic.long=\u4E2D\u975E\u6642\u9593 -Africa/Cairo.generic.long=\u6771\u6B50\u6642\u9593 -Africa/Casablanca.generic.long=\u897F\u6B50\u6642\u9593 -Africa/Ceuta.generic.long=\u4E2D\u6B50\u6642\u9593 -Africa/Conakry.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Africa/Dakar.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Africa/Dar_es_Salaam.generic.long=\u6771\u975E\u6642\u9593 -Africa/Djibouti.generic.long=\u6771\u975E\u6642\u9593 -Africa/Douala.generic.long=\u897F\u975E\u6642\u9593 -Africa/El_Aaiun.generic.long=\u897F\u6B50\u6642\u9593 -Africa/Freetown.generic.long=\u7345\u5B50\u5C71\u6642\u9593 -Africa/Gaborone.generic.long=\u4E2D\u975E\u6642\u9593 -Africa/Harare.generic.long=\u4E2D\u975E\u6642\u9593 -Africa/Johannesburg.generic.long=\u5357\u975E\u6642\u9593 -Africa/Juba.generic.long=\u6771\u975E\u6642\u9593 -Africa/Kampala.generic.long=\u6771\u975E\u6642\u9593 -Africa/Khartoum.generic.long=\u6771\u975E\u6642\u9593 -Africa/Kigali.generic.long=\u4E2D\u975E\u6642\u9593 -Africa/Kinshasa.generic.long=\u897F\u975E\u6642\u9593 -Africa/Lagos.generic.long=\u897F\u975E\u6642\u9593 -Africa/Libreville.generic.long=\u897F\u975E\u6642\u9593 -Africa/Lome.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Africa/Luanda.generic.long=\u897F\u975E\u6642\u9593 -Africa/Lubumbashi.generic.long=\u4E2D\u975E\u6642\u9593 -Africa/Lusaka.generic.long=\u4E2D\u975E\u6642\u9593 -Africa/Malabo.generic.long=\u897F\u975E\u6642\u9593 -Africa/Maputo.generic.long=\u4E2D\u975E\u6642\u9593 -Africa/Maseru.generic.long=\u5357\u975E\u6642\u9593 -Africa/Mbabane.generic.long=\u5357\u975E\u6642\u9593 -Africa/Mogadishu.generic.long=\u6771\u975E\u6642\u9593 -Africa/Monrovia.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Africa/Nairobi.generic.long=\u6771\u975E\u6642\u9593 -Africa/Ndjamena.generic.long=\u897F\u975E\u6642\u9593 -Africa/Niamey.generic.long=\u897F\u975E\u6642\u9593 -Africa/Nouakchott.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Africa/Ouagadougou.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Africa/Porto-Novo.generic.long=\u897F\u975E\u6642\u9593 -Africa/Sao_Tome.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Africa/Timbuktu.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Africa/Tripoli.generic.long=\u6771\u6b50\u6642\u9593 -Africa/Tunis.generic.long=\u4E2D\u6B50\u6642\u9593 -Africa/Windhoek.generic.long=\u897F\u975E\u6642\u9593 -America/Adak.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u6642\u9593 -America/Anchorage.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593 -America/Anguilla.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Antigua.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Araguaina.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593 -America/Argentina/Buenos_Aires.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Argentina/Catamarca.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Argentina/ComodRivadavia.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Argentina/Cordoba.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Argentina/Jujuy.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Argentina/La_Rioja.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Argentina/Mendoza.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Argentina/Rio_Gallegos.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Argentina/Salta.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Argentina/San_Juan.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Argentina/San_Luis.generic.long=\u963f\u6839\u5ef7\u6642\u9593 -America/Argentina/Tucuman.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Argentina/Ushuaia.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Aruba.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Asuncion.generic.long=\u5DF4\u62C9\u572D\u6642\u9593 -America/Atikokan.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Atka.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u6642\u9593 -America/Bahia.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593 -America/Bahia_Banderas.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Barbados.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Belem.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593 -America/Belize.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Blanc-Sablon.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Boa_Vista.generic.long=\u4E9E\u99AC\u905C\u6642\u9593 -America/Bogota.generic.long=\u54E5\u502B\u6BD4\u4E9E\u6642\u9593 -America/Boise.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -America/Buenos_Aires.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Cambridge_Bay.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -America/Campo_Grande.generic.long=\u4E9E\u99AC\u905C\u6642\u9593 -America/Cancun.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Caracas.generic.long=\u59D4\u5167\u745E\u62C9\u6642\u9593 -America/Catamarca.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Cayenne.generic.long=\u6CD5\u5C6C\u572D\u4E9E\u90A3\u6642\u9593 -America/Cayman.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Chicago.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Chihuahua.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -America/Coral_Harbour.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Cordoba.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Costa_Rica.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Creston.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -America/Cuiaba.generic.long=\u4E9E\u99AC\u905C\u6642\u9593 -America/Curacao.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Danmarkshavn.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -America/Dawson.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -America/Dawson_Creek.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -America/Denver.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -America/Detroit.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Dominica.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Edmonton.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -America/Eirunepe.generic.long=Acre \u6642\u9593 -America/El_Salvador.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Ensenada.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -America/Fort_Wayne.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Fortaleza.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593 -America/Glace_Bay.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Godthab.generic.long=\u897F\u683C\u9675\u862D\u6642\u9593 -America/Goose_Bay.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Grand_Turk.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Grenada.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Guadeloupe.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Guatemala.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Guayaquil.generic.long=\u5384\u74DC\u591A\u723E\u6642\u9593 -America/Guyana.generic.long=\u84CB\u4E9E\u90A3\u6642\u9593 -America/Halifax.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Havana.generic.long=\u53E4\u5DF4\u6642\u9593 -America/Hermosillo.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -America/Indiana/Indianapolis.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Indiana/Knox.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Indiana/Marengo.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Indiana/Petersburg.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Indiana/Tell_City.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Indiana/Vevay.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Indiana/Vincennes.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Indiana/Winamac.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Indianapolis.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Inuvik.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -America/Iqaluit.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Jamaica.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Jujuy.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Juneau.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593 -America/Kentucky/Louisville.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Kentucky/Monticello.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Knox_IN.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Kralendijk.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/La_Paz.generic.long=\u73BB\u5229\u7DAD\u4E9E\u6642\u9593 -America/Lima.generic.long=\u7955\u9B6F\u6642\u9593 -America/Los_Angeles.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -America/Louisville.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Lower_Princes.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Maceio.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593 -America/Managua.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Manaus.generic.long=\u4E9E\u99AC\u905C\u6642\u9593 -America/Marigot.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Martinique.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Matamoros.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Mazatlan.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -America/Mendoza.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Menominee.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Merida.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Metlakatla.daylight.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u65E5\u5149\u7BC0\u7D04\u6642\u9593 -America/Metlakatla.generic.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u6642\u9593 -America/Metlakatla.standard.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u6A19\u6E96\u6642\u9593 -America/Mexico_City.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Miquelon.generic.long=\u8056\u5F7C\u5FB7\u8207\u5BC6\u555F\u5D19\u6642\u9593 -America/Moncton.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Monterrey.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Montevideo.generic.long=\u70CF\u62C9\u572D\u6642\u9593 -America/Montreal.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Montserrat.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Nassau.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/New_York.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Nipigon.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Nome.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593 -America/Noronha.generic.long=\u8CBB\u723E\u5357\u591A-\u8FEA\u8AFE\u7F85\u5C3C\u4E9E\u6642\u9593 -America/North_Dakota/Beulah.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/North_Dakota/Center.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/North_Dakota/New_Salem.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Ojinaga.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -America/Panama.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Pangnirtung.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Paramaribo.generic.long=\u8607\u5229\u5357\u6642\u9593 -America/Phoenix.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -America/Port-au-Prince.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Port_of_Spain.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Porto_Acre.generic.long=Acre \u6642\u9593 -America/Porto_Velho.generic.long=\u4E9E\u99AC\u905C\u6642\u9593 -America/Puerto_Rico.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Rainy_River.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Rankin_Inlet.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Recife.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593 -America/Regina.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Resolute.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Rio_Branco.generic.long=Acre \u6642\u9593 -America/Rosario.generic.long=\u963F\u6839\u5EF7\u6642\u9593 -America/Santa_Isabel.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -America/Santarem.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593 -America/Santiago.generic.long=\u667A\u5229\u6642\u9593 -America/Santo_Domingo.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Sao_Paulo.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593 -America/Scoresbysund.generic.long=\u6771\u683C\u9675\u862D\u6642\u9593 -America/Shiprock.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -America/Sitka.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593 -America/St_Barthelemy.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/St_Johns.generic.long=\u7D10\u82AC\u862D\u6642\u9593 -America/St_Kitts.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/St_Lucia.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/St_Thomas.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/St_Vincent.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Swift_Current.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Tegucigalpa.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Thule.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Thunder_Bay.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Tijuana.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -America/Toronto.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -America/Tortola.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Vancouver.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -America/Virgin.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -America/Whitehorse.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -America/Winnipeg.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -America/Yakutat.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593 -America/Yellowknife.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -Antarctica/Casey.daylight.long=\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E) -Antarctica/Casey.generic.long=\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E) -Antarctica/Casey.standard.long=\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E) -Antarctica/Davis.generic.long=\u81FA\u7DAD\u65AF\u6642\u9593 -Antarctica/DumontDUrville.generic.long=Dumont-d'Urville \u6642\u9593 -Antarctica/Macquarie.daylight.long=\u9EA5\u5938\u5229\u5CF6\u590F\u4EE4\u6642\u9593 -Antarctica/Macquarie.generic.long=\u9EA5\u5938\u5229\u5CF6\u6642\u9593 -Antarctica/Macquarie.standard.long=\u9EA5\u5938\u5229\u5CF6\u6642\u9593 -Antarctica/Mawson.generic.long=\u83AB\u68EE\u6642\u9593 -Antarctica/McMurdo.generic.long=\u7D10\u897F\u862D\u6642\u9593 -Antarctica/Palmer.generic.long=\u667A\u5229\u6642\u9593 -Antarctica/Rothera.generic.long=\u7F85\u897F\u62C9\u6642\u9593 -Antarctica/South_Pole.generic.long=\u7D10\u897F\u862D\u6642\u9593 -Antarctica/Syowa.generic.long=\u5915\u6B50\u74E6 (Syowa) \u6642\u9593 -Antarctica/Vostok.generic.long=\u4F5B\u65AF\u6258 (Vostok) \u6642\u9593 -Arctic/Longyearbyen.generic.long=\u4E2D\u6B50\u6642\u9593 -Asia/Aden.generic.long=\u963F\u62C9\u4F2F\u6642\u9593 -Asia/Almaty.generic.long=\u963F\u62C9\u6728\u5716\u6642\u9593 -Asia/Amman.generic.long=\u963f\u62c9\u4f2f\u6642\u9593 -Asia/Anadyr.generic.long=\u963F\u90A3\u5E95\u6CB3\u6642\u9593 -Asia/Aqtau.generic.long=\u963F\u514B\u5957\u6642\u9593 -Asia/Aqtobe.generic.long=\u963F\u514B\u6258\u5225\u6642\u9593 -Asia/Ashgabat.generic.long=\u571F\u5EAB\u66FC\u6642\u9593 -Asia/Ashkhabad.generic.long=\u571F\u5EAB\u66FC\u6642\u9593 -Asia/Baghdad.generic.long=\u963F\u62C9\u4F2F\u6642\u9593 -Asia/Bahrain.generic.long=\u963F\u62C9\u4F2F\u6642\u9593 -Asia/Baku.generic.long=\u4E9E\u585E\u62DC\u7136\u6642\u9593 -Asia/Bangkok.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593 -Asia/Beirut.generic.long=\u6771\u6B50\u6642\u9593 -Asia/Bishkek.generic.long=\u5409\u723E\u5409\u65AF\u6642\u9593 -Asia/Brunei.generic.long=\u6C76\u840A\u6642\u9593 -Asia/Calcutta.generic.long=\u5370\u5EA6\u6642\u9593 -Asia/Choibalsan.generic.long=\u5DE7\u5DF4\u5C71 (Choibalsan) \u6642\u9593 -Asia/Chongqing.generic.long=\u4E2D\u570B\u6642\u9593 -Asia/Chungking.generic.long=\u4E2D\u570B\u6642\u9593 -Asia/Colombo.generic.long=\u5370\u5EA6\u6642\u9593 -Asia/Dacca.generic.long=\u5B5F\u52A0\u62C9\u6642\u9593 -Asia/Damascus.generic.long=\u6771\u6B50\u6642\u9593 -Asia/Dhaka.generic.long=\u5B5F\u52A0\u62C9\u6642\u9593 -Asia/Dili.generic.long=\u6771\u5E1D\u6C76\u6642\u9593 -Asia/Dubai.generic.long=\u6CE2\u65AF\u7063\u6642\u9593 -Asia/Dushanbe.generic.long=\u5854\u5409\u514B\u6642\u9593 -Asia/Gaza.generic.long=\u6771\u6B50\u6642\u9593 -Asia/Harbin.generic.long=\u4E2D\u570B\u6642\u9593 -Asia/Hebron.generic.long=\u6771\u6B50\u6642\u9593 -Asia/Ho_Chi_Minh.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593 -Asia/Hong_Kong.generic.long=\u9999\u6E2F\u6642\u9593 -Asia/Hovd.generic.long=\u4FAF\u5FB7 (Hovd) \u6642\u9593 -Asia/Irkutsk.generic.long=\u4F0A\u723E\u5EAB\u6B21\u514B\u6642\u9593 -Asia/Istanbul.generic.long=\u6771\u6B50\u6642\u9593 -Asia/Jakarta.generic.long=\u897F\u5370\u5C3C\u6642\u9593 -Asia/Jayapura.generic.long=\u6771\u5370\u5EA6\u5C3C\u897F\u4E9E\u6642\u9593 -Asia/Jerusalem.generic.long=\u4EE5\u8272\u5217\u6642\u9593 -Asia/Kabul.generic.long=\u963F\u5BCC\u6C57\u6642\u9593 -Asia/Kamchatka.generic.long=Petropavlovsk-Kamchatski \u6642\u9593 -Asia/Karachi.generic.long=\u5DF4\u57FA\u65AF\u5766\u6642\u9593 -Asia/Kashgar.generic.long=\u4E2D\u570B\u6642\u9593 -Asia/Kathmandu.generic.long=\u5C3C\u6CCA\u723E\u6642\u9593 -Asia/Katmandu.generic.long=\u5C3C\u6CCA\u723E\u6642\u9593 -Asia/Khandyga.daylight.long=\u6F22\u5730\u52A0 (Khandyga) \u590F\u4EE4\u6642\u9593 -Asia/Khandyga.generic.long=\u6F22\u5730\u52A0 (Khandyga) \u6642\u9593 -Asia/Khandyga.standard.long=\u6F22\u5730\u52A0 (Khandyga) \u6642\u9593 -Asia/Kolkata.generic.long=\u5370\u5EA6\u6642\u9593 -Asia/Krasnoyarsk.generic.long=\u514B\u62C9\u65AF\u8AFE\u4E9E\u723E\u65AF\u514B\u6642\u9593 -Asia/Kuala_Lumpur.generic.long=\u99AC\u4F86\u897F\u4E9E\u6642\u9593 -Asia/Kuching.generic.long=\u99AC\u4F86\u897F\u4E9E\u6642\u9593 -Asia/Kuwait.generic.long=\u963F\u62C9\u4F2F\u6642\u9593 -Asia/Macao.generic.long=\u4E2D\u570B\u6642\u9593 -Asia/Macau.generic.long=\u4E2D\u570B\u6642\u9593 -Asia/Magadan.generic.long=\u99AC\u52A0\u4E39\u6642\u9593 -Asia/Makassar.generic.long=\u4E2D\u5370\u5EA6\u5C3C\u897F\u4E9E\u6642\u9593 -Asia/Manila.generic.long=\u83F2\u5F8B\u8CD3\u6642\u9593 -Asia/Muscat.generic.long=\u6CE2\u65AF\u7063\u6642\u9593 -Asia/Nicosia.generic.long=\u6771\u6B50\u6642\u9593 -Asia/Novokuznetsk.generic.long=\u65B0\u897F\u4F2F\u5229\u4E9E\u6642\u9593 -Asia/Novosibirsk.generic.long=\u65B0\u897F\u4F2F\u5229\u4E9E\u6642\u9593 -Asia/Omsk.generic.long=\u6B50\u59C6\u65AF\u514B (Omsk) \u6642\u9593 -Asia/Oral.generic.long=\u6B50\u4F5B\u6642\u9593 -Asia/Phnom_Penh.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593 -Asia/Pontianak.generic.long=\u897F\u5370\u5C3C\u6642\u9593 -Asia/Pyongyang.generic.long=\u97D3\u570B\u6642\u9593 -Asia/Qatar.generic.long=\u963F\u62C9\u4F2F\u6642\u9593 -Asia/Qyzylorda.generic.long=\u514B\u5B5C\u6D1B\u723E\u9054\u6642\u9593 -Asia/Rangoon.generic.long=\u7DEC\u7538\u6642\u9593 -Asia/Saigon.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593 -Asia/Sakhalin.generic.long=\u5EAB\u9801\u5CF6\u6642\u9593 -Asia/Samarkand.generic.long=\u70CF\u8332\u5225\u514B\u65AF\u5766\u6642\u9593 -Asia/Seoul.generic.long=\u97D3\u570B\u6642\u9593 -Asia/Shanghai.generic.long=\u4E2D\u570B\u6642\u9593 -Asia/Singapore.generic.long=\u65B0\u52A0\u5761\u6642\u9593 -Asia/Taipei.generic.long=\u53f0\u7063\u6642\u9593 -Asia/Tashkent.generic.long=\u70CF\u8332\u5225\u514B\u65AF\u5766\u6642\u9593 -Asia/Tbilisi.generic.long=\u55AC\u6CBB\u4E9E\u6642\u9593 -Asia/Tehran.generic.long=\u4F0A\u6717\u6642\u9593 -Asia/Tel_Aviv.generic.long=\u4EE5\u8272\u5217\u6642\u9593 -Asia/Thimbu.generic.long=\u4E0D\u4E39\u6642\u9593 -Asia/Thimphu.generic.long=\u4E0D\u4E39\u6642\u9593 -Asia/Tokyo.generic.long=\u65E5\u672C\u6642\u9593 -Asia/Ujung_Pandang.generic.long=\u4E2D\u5370\u5EA6\u5C3C\u897F\u4E9E\u6642\u9593 -Asia/Ulaanbaatar.generic.long=\u5EAB\u502B\u6642\u9593 -Asia/Ulan_Bator.generic.long=\u5EAB\u502B\u6642\u9593 -Asia/Urumqi.generic.long=\u4E2D\u570B\u6642\u9593 -Asia/Ust-Nera.daylight.long=\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u590F\u4EE4\u6642\u9593 -Asia/Ust-Nera.generic.long=\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u6642\u9593 -Asia/Ust-Nera.standard.long=\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u6642\u9593 -Asia/Vientiane.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593 -Asia/Vladivostok.generic.long=\u6D77\u53C3\u5D34\u6642\u9593 -Asia/Yakutsk.generic.long=\u4E9E\u5EAB\u6B21\u514B\u6642\u9593 -Asia/Yekaterinburg.generic.long=\u8449\u5361\u6377\u7433\u5821\u6642\u9593 -Asia/Yerevan.generic.long=\u4E9E\u7F8E\u5C3C\u4E9E\u6642\u9593 -Atlantic/Azores.generic.long=\u4E9E\u901F\u723E\u7FA4\u5CF6\u6642\u9593 -Atlantic/Bermuda.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -Atlantic/Canary.generic.long=\u897F\u6B50\u6642\u9593 -Atlantic/Cape_Verde.generic.long=\u4F5B\u5FB7\u89D2\u6642\u9593 -Atlantic/Faeroe.generic.long=\u897F\u6B50\u6642\u9593 -Atlantic/Faroe.generic.long=\u897F\u6B50\u6642\u9593 -Atlantic/Jan_Mayen.generic.long=\u4E2D\u6B50\u6642\u9593 -Atlantic/Madeira.generic.long=\u897F\u6B50\u6642\u9593 -Atlantic/Reykjavik.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Atlantic/South_Georgia.generic.long=\u5357\u55AC\u6CBB\u4E9E\u6642\u9593 -Atlantic/St_Helena.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Atlantic/Stanley.generic.long=\u798F\u514B\u862D\u7FA4\u5CF6\u6642\u9593 -Australia/ACT.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/ACT.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/ACT.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Adelaide.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340) -Australia/Adelaide.generic.long=\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8) -Australia/Adelaide.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8) -Australia/Brisbane.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u6606\u58EB\u862D) -Australia/Brisbane.generic.long=\u6771\u90E8\u6642\u9593 (\u6606\u58EB\u862D) -Australia/Brisbane.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u6606\u58EB\u862D) -Australia/Broken_Hill.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Broken_Hill.generic.long=\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8/\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Broken_Hill.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Canberra.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Canberra.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Canberra.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Currie.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Currie.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Currie.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Darwin.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340) -Australia/Darwin.generic.long=\u6FB3\u5927\u5229\u4E9E\u4E2D\u90E8\u6642\u9593 (\u5317\u65B9\u5340\u57DF) -Australia/Darwin.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340) -Australia/Eucla.daylight.long=\u4E2D\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E) -Australia/Eucla.generic.long=\u4E2D\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E) -Australia/Eucla.standard.long=\u4E2D\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E) -Australia/Hobart.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6) -Australia/Hobart.generic.long=\u6FB3\u5927\u5229\u4E9E\u6771\u90E8\u6642\u9593 (\u5854\u65AF\u99AC\u5C3C\u4E9E\u5CF6) -Australia/Hobart.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6) -Australia/LHI.generic.long=\u8C6A\u52F3\u7235\u5CF6\u6642\u9593 -Australia/Lindeman.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u6606\u58EB\u862D) -Australia/Lindeman.generic.long=\u6771\u90E8\u6642\u9593 (\u6606\u58EB\u862D) -Australia/Lindeman.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u6606\u58EB\u862D) -Australia/Lord_Howe.generic.long=\u8C6A\u52F3\u7235\u5CF6\u6642\u9593 -Australia/Melbourne.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6) -Australia/Melbourne.generic.long=\u6771\u90E8\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E) -Australia/Melbourne.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6) -Australia/NSW.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/NSW.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/NSW.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/North.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340) -Australia/North.generic.long=\u6FB3\u5927\u5229\u4E9E\u4E2D\u90E8\u6642\u9593 (\u5317\u65B9\u5340\u57DF) -Australia/North.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340) -Australia/Perth.daylight.long=\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E) -Australia/Perth.generic.long=\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E) -Australia/Perth.standard.long=\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E) -Australia/Queensland.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u6606\u58EB\u862D) -Australia/Queensland.generic.long=\u6771\u90E8\u6642\u9593 (\u6606\u58EB\u862D) -Australia/Queensland.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u6606\u58EB\u862D) -Australia/South.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340) -Australia/South.generic.long=\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8) -Australia/South.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8) -Australia/Sydney.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Sydney.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Sydney.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Tasmania.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6) -Australia/Tasmania.generic.long=\u6FB3\u5927\u5229\u4E9E\u6771\u90E8\u6642\u9593 (\u5854\u65AF\u99AC\u5C3C\u4E9E\u5CF6) -Australia/Tasmania.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6) -Australia/Victoria.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6) -Australia/Victoria.generic.long=\u6771\u90E8\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E) -Australia/Victoria.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6) -Australia/West.daylight.long=\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E) -Australia/West.generic.long=\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E) -Australia/West.standard.long=\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E) -Australia/Yancowinna.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Yancowinna.generic.long=\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8/\u65B0\u5357\u5A01\u723E\u65AF) -Australia/Yancowinna.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF) -BET.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593 -BST.generic.long=\u5B5F\u52A0\u62C9\u6642\u9593 -Brazil/Acre.generic.long=Acre \u6642\u9593 -Brazil/DeNoronha.generic.long=\u8CBB\u723E\u5357\u591A-\u8FEA\u8AFE\u7F85\u5C3C\u4E9E\u6642\u9593 -Brazil/East.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593 -Brazil/West.generic.long=\u4E9E\u99AC\u905C\u6642\u9593 -CAT.generic.long=\u4E2D\u975E\u6642\u9593 -CET.generic.long=\u4e2d\u6b50\u6642\u9593 -CNT.generic.long=\u7D10\u82AC\u862D\u6642\u9593 -CST.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -CST6CDT.generic.long=\u7f8e\u570b\u4e2d\u90e8\u6642\u9593 -CTT.generic.long=\u4E2D\u570B\u6642\u9593 -Canada/Atlantic.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -Canada/Central.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -Canada/East-Saskatchewan.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -Canada/Eastern.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -Canada/Mountain.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -Canada/Newfoundland.generic.long=\u7D10\u82AC\u862D\u6642\u9593 -Canada/Pacific.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -Canada/Saskatchewan.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -Canada/Yukon.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -Chile/Continental.generic.long=\u667A\u5229\u6642\u9593 -Chile/EasterIsland.generic.long=\u5FA9\u6D3B\u5CF6\u6642\u9593 -Cuba.generic.long=\u53E4\u5DF4\u6642\u9593 -EAT.generic.long=\u6771\u975E\u6642\u9593 -ECT.generic.long=\u4E2D\u6B50\u6642\u9593 -EET.generic.long=\u6771\u6b50\u6642\u9593 -EST.generic.long=\u7f8e\u570b\u6771\u90e8\u6642\u9593 -EST5EDT.generic.long=\u7f8e\u570b\u6771\u90e8\u6642\u9593 -Egypt.generic.long=\u6771\u6B50\u6642\u9593 -Eire.generic.long=\u611B\u723E\u862D\u6587\u6642\u9593 -Etc/Greenwich.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Etc/UCT.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593 -Etc/UTC.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593 -Etc/Universal.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593 -Etc/Zulu.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593 -Europe/Amsterdam.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Andorra.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Athens.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Belfast.generic.long=\u82F1\u570B\u6642\u9593 -Europe/Belgrade.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Berlin.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Bratislava.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Brussels.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Bucharest.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Budapest.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Busingen.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Chisinau.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Copenhagen.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Dublin.generic.long=\u611B\u723E\u862D\u6587\u6642\u9593 -Europe/Gibraltar.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Guernsey.generic.long=\u82F1\u570B\u6642\u9593 -Europe/Helsinki.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Isle_of_Man.generic.long=\u82F1\u570B\u6642\u9593 -Europe/Istanbul.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Jersey.generic.long=\u82F1\u570B\u6642\u9593 -Europe/Kaliningrad.daylight.long=\u6771\u6B50\u5167\u9678\u590F\u4EE4\u6642\u9593 -Europe/Kaliningrad.generic.long=\u6771\u6B50\u5167\u9678\u6642\u9593 -Europe/Kaliningrad.standard.long=\u6771\u6B50\u5167\u9678\u6642\u9593 -Europe/Kiev.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Lisbon.generic.long=\u897F\u6B50\u6642\u9593 -Europe/Ljubljana.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/London.generic.long=\u82F1\u570B\u6642\u9593 -Europe/Luxembourg.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Madrid.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Malta.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Mariehamn.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Minsk.daylight.long=\u6771\u6B50\u5167\u9678\u590F\u4EE4\u6642\u9593 -Europe/Minsk.generic.long=\u6771\u6B50\u5167\u9678\u6642\u9593 -Europe/Minsk.standard.long=\u6771\u6B50\u5167\u9678\u6642\u9593 -Europe/Monaco.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Moscow.generic.long=\u83AB\u65AF\u79D1\u6642\u9593 -Europe/Nicosia.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Oslo.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Paris.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Podgorica.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Prague.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Riga.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Rome.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Samara.generic.long=\u6C99\u99AC\u62C9\u6642\u9593 -Europe/San_Marino.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Sarajevo.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Simferopol.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Skopje.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Sofia.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Stockholm.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Tallinn.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Tirane.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Tiraspol.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Uzhgorod.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Vaduz.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Vatican.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Vienna.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Vilnius.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Volgograd.generic.long=\u4F0F\u723E\u52A0\u683C\u52D2\u6642\u9593 -Europe/Warsaw.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Zagreb.generic.long=\u4E2D\u6B50\u6642\u9593 -Europe/Zaporozhye.generic.long=\u6771\u6B50\u6642\u9593 -Europe/Zurich.generic.long=\u4E2D\u6B50\u6642\u9593 -GB-Eire.generic.long=\u82F1\u570B\u6642\u9593 -GB.generic.long=\u82F1\u570B\u6642\u9593 -GMT.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Greenwich.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -HST.generic.long=\u590f\u5a01\u5937\u6642\u9593 -Hongkong.generic.long=\u9999\u6E2F\u6642\u9593 -IET.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -IST.generic.long=\u5370\u5EA6\u6642\u9593 -Iceland.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593 -Indian/Antananarivo.generic.long=\u6771\u975E\u6642\u9593 -Indian/Chagos.generic.long=\u82F1\u5C6C\u5370\u5EA6\u6D0B\u5730\u5340 -Indian/Christmas.generic.long=\u8056\u8A95\u5CF6\u6642\u9593 -Indian/Cocos.generic.long=\u53EF\u53EF\u65AF\u7FA4\u5CF6\u6642\u9593 -Indian/Comoro.generic.long=\u6771\u975E\u6642\u9593 -Indian/Kerguelen.generic.long=\u6CD5\u570B\u5357\u534A\u7403\u53CA\u5357\u6975\u5C6C\u5730\u6642\u9593 -Indian/Mahe.generic.long=\u585E\u5E2D\u723E\u7FA4\u5CF6\u6642\u9593 -Indian/Maldives.generic.long=\u99AC\u723E\u5730\u592B\u6642\u9593 -Indian/Mauritius.generic.long=\u6469\u91CC\u897F\u65AF\u6642\u9593 -Indian/Mayotte.generic.long=\u6771\u975E\u6642\u9593 -Indian/Reunion.generic.long=\u7559\u5C3C\u65FA\u5CF6\u6642\u9593 -Iran.generic.long=\u4F0A\u6717\u6642\u9593 -Israel.generic.long=\u4EE5\u8272\u5217\u6642\u9593 -JST.generic.long=\u65E5\u672C\u6642\u9593 -Jamaica.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -Japan.generic.long=\u65E5\u672C\u6642\u9593 -Kwajalein.generic.long=\u99AC\u7D39\u723E\u7FA4\u5CF6\u6642\u9593 -Libya.generic.long=\u6771\u6b50\u6642\u9593 -MET.generic.long=MET -MIT.generic.long=\u897F\u85A9\u6469\u4E9E\u6642\u9593 -MST.generic.long=\u7f8e\u570b\u5c71\u5340\u6642\u9593 -MST7MDT.generic.long=\u7f8e\u570b\u5c71\u5340\u6642\u9593 -Mexico/BajaNorte.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -Mexico/BajaSur.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -Mexico/General.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -NET.generic.long=\u4E9E\u7F8E\u5C3C\u4E9E\u6642\u9593 -NST.generic.long=\u7D10\u897F\u862D\u6642\u9593 -NZ-CHAT.generic.long=\u67E5\u5766\u6642\u9593 -NZ.generic.long=\u7D10\u897F\u862D\u6642\u9593 -Navajo.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -PLT.generic.long=\u5DF4\u57FA\u65AF\u5766\u6642\u9593 -PNT.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -PRC.generic.long=\u4E2D\u570B\u6642\u9593 -PRT.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -PST.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -PST8PDT.generic.long=\u592a\u5e73\u6d0b\u6642\u9593 -Pacific/Apia.generic.long=\u897F\u85A9\u6469\u4E9E\u6642\u9593 -Pacific/Auckland.generic.long=\u7D10\u897F\u862D\u6642\u9593 -Pacific/Chatham.generic.long=\u67E5\u5766\u6642\u9593 -Pacific/Chuuk.daylight.long=\u695A\u514B\u590F\u4EE4\u6642\u9593 -Pacific/Chuuk.generic.long=\u695A\u514B\u6642\u9593 -Pacific/Chuuk.standard.long=\u695A\u514B\u6642\u9593 -Pacific/Easter.generic.long=\u5FA9\u6D3B\u5CF6\u6642\u9593 -Pacific/Efate.generic.long=\u74E6\u5974\u963F\u5716\u6642\u9593 -Pacific/Enderbury.generic.long=\u83F2\u5C3C\u514B\u65AF\u7FA4\u5CF6\u6642\u9593 -Pacific/Fakaofo.generic.long=\u6258\u514B\u52DE\u7FA4\u5CF6\u6642\u9593 -Pacific/Fiji.generic.long=\u6590\u6FDF\u6642\u9593 -Pacific/Funafuti.generic.long=\u5410\u74E6\u9B6F\u6642\u9593 -Pacific/Galapagos.generic.long=\u52A0\u62C9\u5DF4\u54E5\u6642\u9593 -Pacific/Gambier.generic.long=\u7518\u6BD4\u723E\u6642\u9593 -Pacific/Guadalcanal.generic.long=\u6240\u7F85\u9580\u7FA4\u5CF6\u6642\u9593 -Pacific/Guam.generic.long=\u67E5\u83AB\u7F85\u6642\u9593 -Pacific/Honolulu.generic.long=\u590F\u5A01\u5937\u6642\u9593 -Pacific/Johnston.generic.long=\u590F\u5A01\u5937\u6642\u9593 -Pacific/Kiritimati.generic.long=\u5217\u5DBC\u7FA4\u5CF6\u6642\u9593 -Pacific/Kosrae.generic.long=Kosrae \u6642\u9593 -Pacific/Kwajalein.generic.long=\u99AC\u7D39\u723E\u7FA4\u5CF6\u6642\u9593 -Pacific/Majuro.generic.long=\u99AC\u7D39\u723E\u7FA4\u5CF6\u6642\u9593 -Pacific/Marquesas.generic.long=\u99AC\u514B\u85A9\u65AF\u6642\u9593 -Pacific/Midway.generic.long=\u85A9\u6469\u4E9E\u6642\u9593 -Pacific/Nauru.generic.long=\u8AFE\u9B6F\u6642\u9593 -Pacific/Niue.generic.long=\u7D10\u5A01\u5CF6\u6642\u9593 -Pacific/Norfolk.generic.long=\u8AFE\u798F\u514B\u6642\u9593 -Pacific/Noumea.generic.long=\u65B0\u52A0\u52D2\u591A\u5C3C\u4E9E\u6642\u9593 -Pacific/Pago_Pago.generic.long=\u85A9\u6469\u4E9E\u6642\u9593 -Pacific/Palau.generic.long=\u5E1B\u7409\u6642\u9593 -Pacific/Pitcairn.generic.long=\u76AE\u7279\u5EB7\u6642\u9593 -Pacific/Pohnpei.daylight.long=\u6CE2\u7D0D\u4F69\u590F\u4EE4\u6642\u9593 -Pacific/Pohnpei.generic.long=\u6CE2\u7D0D\u4F69\u5CF6\u6642\u9593 -Pacific/Pohnpei.standard.long=\u6CE2\u7D0D\u4F69\u6642\u9593 -Pacific/Ponape.daylight.long=\u6CE2\u7D0D\u4F69\u590F\u4EE4\u6642\u9593 -Pacific/Ponape.generic.long=\u6CE2\u7D0D\u4F69\u5CF6\u6642\u9593 -Pacific/Ponape.standard.long=\u6CE2\u7D0D\u4F69\u6642\u9593 -Pacific/Port_Moresby.generic.long=\u5DF4\u5E03\u4E9E\u65B0\u5E7E\u5167\u4E9E\u6642\u9593 -Pacific/Rarotonga.generic.long=\u5EAB\u514B\u7FA4\u5CF6\u6642\u9593 -Pacific/Saipan.generic.long=\u67E5\u83AB\u7F85\u6642\u9593 -Pacific/Samoa.generic.long=\u85A9\u6469\u4E9E\u6642\u9593 -Pacific/Tahiti.generic.long=\u5927\u6EAA\u5730\u6642\u9593 -Pacific/Tarawa.generic.long=\u5409\u4F2F\u7279\u7FA4\u5CF6\u6642\u9593 -Pacific/Tongatapu.generic.long=\u6771\u52A0\u6642\u9593 -Pacific/Truk.daylight.long=\u695A\u514B\u590F\u4EE4\u6642\u9593 -Pacific/Truk.generic.long=\u695A\u514B\u6642\u9593 -Pacific/Truk.standard.long=\u695A\u514B\u6642\u9593 -Pacific/Wake.generic.long=\u5A01\u514B\u6642\u9593 -Pacific/Wallis.generic.long=\u74E6\u5229\u65AF\u53CA\u798F\u675C\u7D0D\u7FA4\u5CF6\u6642\u9593 -Pacific/Yap.daylight.long=\u695A\u514B\u590F\u4EE4\u6642\u9593 -Pacific/Yap.generic.long=\u695A\u514B\u6642\u9593 -Pacific/Yap.standard.long=\u695A\u514B\u6642\u9593 -Poland.generic.long=\u4E2D\u6B50\u6642\u9593 -Portugal.generic.long=\u897F\u6B50\u6642\u9593 -ROK.generic.long=\u97D3\u570B\u6642\u9593 -SST.generic.long=\u6240\u7F85\u9580\u7FA4\u5CF6\u6642\u9593 -Singapore.generic.long=\u65B0\u52A0\u5761\u6642\u9593 -SystemV/AST4.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -SystemV/AST4ADT.generic.long=\u5927\u897F\u6D0B\u6642\u9593 -SystemV/CST6.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -SystemV/CST6CDT.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -SystemV/EST5.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -SystemV/EST5EDT.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -SystemV/HST10.generic.long=\u590F\u5A01\u5937\u6642\u9593 -SystemV/MST7.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -SystemV/MST7MDT.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -SystemV/PST8.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -SystemV/PST8PDT.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -SystemV/YST9.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593 -SystemV/YST9YDT.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593 -Turkey.generic.long=\u6771\u6B50\u6642\u9593 -UCT.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593 -US/Alaska.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593 -US/Aleutian.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u6642\u9593 -US/Arizona.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -US/Central.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -US/East-Indiana.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -US/Eastern.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -US/Hawaii.generic.long=\u590F\u5A01\u5937\u6642\u9593 -US/Indiana-Starke.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593 -US/Michigan.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593 -US/Mountain.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593 -US/Pacific-New.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -US/Pacific.generic.long=\u592A\u5E73\u6D0B\u6642\u9593 -US/Samoa.generic.long=\u85A9\u6469\u4E9E\u6642\u9593 -UTC.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593 -Universal.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593 -VST.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593 -W-SU.generic.long=\u83AB\u65AF\u79D1\u6642\u9593 -WET.generic.long=\u897f\u6b50\u6642\u9593 -Zulu.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593 diff --git a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_TW_short.properties b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_TW_short.properties deleted file mode 100644 index c2de6fde89e..00000000000 --- a/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_TW_short.properties +++ /dev/null @@ -1,1743 +0,0 @@ -ACT.daylight.short=CST -ACT.generic.short=CT -ACT.standard.short=CST -AET.daylight.short=EST -AET.generic.short=ET -AET.standard.short=EST -Africa/Abidjan.daylight.short=GMT -Africa/Abidjan.generic.short=GMT -Africa/Abidjan.standard.short=GMT -Africa/Accra.daylight.short=GHST -Africa/Accra.generic.short=GMT -Africa/Accra.standard.short=GMT -Africa/Addis_Ababa.daylight.short=EAST -Africa/Addis_Ababa.generic.short=EAT -Africa/Addis_Ababa.standard.short=EAT -Africa/Algiers.daylight.short=CEST -Africa/Algiers.generic.short=CET -Africa/Algiers.standard.short=CET -Africa/Asmara.daylight.short=EAST -Africa/Asmara.generic.short=EAT -Africa/Asmara.standard.short=EAT -Africa/Asmera.daylight.short=EAST -Africa/Asmera.generic.short=EAT -Africa/Asmera.standard.short=EAT -Africa/Bamako.daylight.short=GMT -Africa/Bamako.generic.short=GMT -Africa/Bamako.standard.short=GMT -Africa/Bangui.daylight.short=WAST -Africa/Bangui.generic.short=WAT -Africa/Bangui.standard.short=WAT -Africa/Banjul.daylight.short=GMT -Africa/Banjul.generic.short=GMT -Africa/Banjul.standard.short=GMT -Africa/Bissau.daylight.short=GMT -Africa/Bissau.generic.short=GMT -Africa/Bissau.standard.short=GMT -Africa/Blantyre.daylight.short=CAST -Africa/Blantyre.generic.short=CAT -Africa/Blantyre.standard.short=CAT -Africa/Brazzaville.daylight.short=WAST -Africa/Brazzaville.generic.short=WAT -Africa/Brazzaville.standard.short=WAT -Africa/Bujumbura.daylight.short=CAST -Africa/Bujumbura.generic.short=CAT -Africa/Bujumbura.standard.short=CAT -Africa/Cairo.daylight.short=EEST -Africa/Cairo.generic.short=EET -Africa/Cairo.standard.short=EET -Africa/Casablanca.daylight.short=WEST -Africa/Casablanca.generic.short=WET -Africa/Casablanca.standard.short=WET -Africa/Ceuta.daylight.short=CEST -Africa/Ceuta.generic.short=CET -Africa/Ceuta.standard.short=CET -Africa/Conakry.daylight.short=GMT -Africa/Conakry.generic.short=GMT -Africa/Conakry.standard.short=GMT -Africa/Dakar.daylight.short=GMT -Africa/Dakar.generic.short=GMT -Africa/Dakar.standard.short=GMT -Africa/Dar_es_Salaam.daylight.short=EAST -Africa/Dar_es_Salaam.generic.short=EAT -Africa/Dar_es_Salaam.standard.short=EAT -Africa/Djibouti.daylight.short=EAST -Africa/Djibouti.generic.short=EAT -Africa/Djibouti.standard.short=EAT -Africa/Douala.daylight.short=WAST -Africa/Douala.generic.short=WAT -Africa/Douala.standard.short=WAT -Africa/El_Aaiun.daylight.short=WEST -Africa/El_Aaiun.generic.short=WET -Africa/El_Aaiun.standard.short=WET -Africa/Freetown.daylight.short=SLST -Africa/Freetown.generic.short=SLT -Africa/Freetown.standard.short=GMT -Africa/Gaborone.daylight.short=CAST -Africa/Gaborone.generic.short=CAT -Africa/Gaborone.standard.short=CAT -Africa/Harare.daylight.short=CAST -Africa/Harare.generic.short=CAT -Africa/Harare.standard.short=CAT -Africa/Johannesburg.daylight.short=SAST -Africa/Johannesburg.generic.short=SAT -Africa/Johannesburg.standard.short=SAST -Africa/Juba.daylight.short=EAST -Africa/Juba.generic.short=EAT -Africa/Juba.standard.short=EAT -Africa/Kampala.daylight.short=EAST -Africa/Kampala.generic.short=EAT -Africa/Kampala.standard.short=EAT -Africa/Khartoum.daylight.short=EAST -Africa/Khartoum.generic.short=EAT -Africa/Khartoum.standard.short=EAT -Africa/Kigali.daylight.short=CAST -Africa/Kigali.generic.short=CAT -Africa/Kigali.standard.short=CAT -Africa/Kinshasa.daylight.short=WAST -Africa/Kinshasa.generic.short=WAT -Africa/Kinshasa.standard.short=WAT -Africa/Lagos.daylight.short=WAST -Africa/Lagos.generic.short=WAT -Africa/Lagos.standard.short=WAT -Africa/Libreville.daylight.short=WAST -Africa/Libreville.generic.short=WAT -Africa/Libreville.standard.short=WAT -Africa/Lome.daylight.short=GMT -Africa/Lome.generic.short=GMT -Africa/Lome.standard.short=GMT -Africa/Luanda.daylight.short=WAST -Africa/Luanda.generic.short=WAT -Africa/Luanda.standard.short=WAT -Africa/Lubumbashi.daylight.short=CAST -Africa/Lubumbashi.generic.short=CAT -Africa/Lubumbashi.standard.short=CAT -Africa/Lusaka.daylight.short=CAST -Africa/Lusaka.generic.short=CAT -Africa/Lusaka.standard.short=CAT -Africa/Malabo.daylight.short=WAST -Africa/Malabo.generic.short=WAT -Africa/Malabo.standard.short=WAT -Africa/Maputo.daylight.short=CAST -Africa/Maputo.generic.short=CAT -Africa/Maputo.standard.short=CAT -Africa/Maseru.daylight.short=SAST -Africa/Maseru.generic.short=SAT -Africa/Maseru.standard.short=SAST -Africa/Mbabane.daylight.short=SAST -Africa/Mbabane.generic.short=SAT -Africa/Mbabane.standard.short=SAST -Africa/Mogadishu.daylight.short=EAST -Africa/Mogadishu.generic.short=EAT -Africa/Mogadishu.standard.short=EAT -Africa/Monrovia.daylight.short=GMT -Africa/Monrovia.generic.short=GMT -Africa/Monrovia.standard.short=GMT -Africa/Nairobi.daylight.short=EAST -Africa/Nairobi.generic.short=EAT -Africa/Nairobi.standard.short=EAT -Africa/Ndjamena.daylight.short=WAST -Africa/Ndjamena.generic.short=WAT -Africa/Ndjamena.standard.short=WAT -Africa/Niamey.daylight.short=WAST -Africa/Niamey.generic.short=WAT -Africa/Niamey.standard.short=WAT -Africa/Nouakchott.daylight.short=GMT -Africa/Nouakchott.generic.short=GMT -Africa/Nouakchott.standard.short=GMT -Africa/Ouagadougou.daylight.short=GMT -Africa/Ouagadougou.generic.short=GMT -Africa/Ouagadougou.standard.short=GMT -Africa/Porto-Novo.daylight.short=WAST -Africa/Porto-Novo.generic.short=WAT -Africa/Porto-Novo.standard.short=WAT -Africa/Sao_Tome.daylight.short=GMT -Africa/Sao_Tome.generic.short=GMT -Africa/Sao_Tome.standard.short=GMT -Africa/Timbuktu.daylight.short=GMT -Africa/Timbuktu.generic.short=GMT -Africa/Timbuktu.standard.short=GMT -Africa/Tripoli.daylight.short=EEST -Africa/Tripoli.generic.short=EET -Africa/Tripoli.standard.short=EET -Africa/Tunis.daylight.short=CEST -Africa/Tunis.generic.short=CET -Africa/Tunis.standard.short=CET -Africa/Windhoek.daylight.short=WAST -Africa/Windhoek.generic.short=WAT -Africa/Windhoek.standard.short=WAT -AGT.daylight.short=ARST -AGT.generic.short=ART -AGT.standard.short=ART -America/Adak.daylight.short=HADT -America/Adak.generic.short=HAT -America/Adak.standard.short=HAST -America/Anchorage.daylight.short=AKDT -America/Anchorage.generic.short=AKT -America/Anchorage.standard.short=AKST -America/Anguilla.daylight.short=ADT -America/Anguilla.generic.short=AT -America/Anguilla.standard.short=AST -America/Antigua.daylight.short=ADT -America/Antigua.generic.short=AT -America/Antigua.standard.short=AST -America/Araguaina.daylight.short=BRST -America/Araguaina.generic.short=BRT -America/Araguaina.standard.short=BRT -America/Argentina/Buenos_Aires.daylight.short=ARST -America/Argentina/Buenos_Aires.generic.short=ART -America/Argentina/Buenos_Aires.standard.short=ART -America/Argentina/Catamarca.daylight.short=ARST -America/Argentina/Catamarca.generic.short=ART -America/Argentina/Catamarca.standard.short=ART -America/Argentina/ComodRivadavia.daylight.short=ARST -America/Argentina/ComodRivadavia.generic.short=ART -America/Argentina/ComodRivadavia.standard.short=ART -America/Argentina/Cordoba.daylight.short=ARST -America/Argentina/Cordoba.generic.short=ART -America/Argentina/Cordoba.standard.short=ART -America/Argentina/Jujuy.daylight.short=ARST -America/Argentina/Jujuy.generic.short=ART -America/Argentina/Jujuy.standard.short=ART -America/Argentina/La_Rioja.daylight.short=ARST -America/Argentina/La_Rioja.generic.short=ART -America/Argentina/La_Rioja.standard.short=ART -America/Argentina/Mendoza.daylight.short=ARST -America/Argentina/Mendoza.generic.short=ART -America/Argentina/Mendoza.standard.short=ART -America/Argentina/Rio_Gallegos.daylight.short=ARST -America/Argentina/Rio_Gallegos.generic.short=ART -America/Argentina/Rio_Gallegos.standard.short=ART -America/Argentina/Salta.daylight.short=ARST -America/Argentina/Salta.generic.short=ART -America/Argentina/Salta.standard.short=ART -America/Argentina/San_Juan.daylight.short=ARST -America/Argentina/San_Juan.generic.short=ART -America/Argentina/San_Juan.standard.short=ART -America/Argentina/San_Luis.daylight.short=ARST -America/Argentina/San_Luis.generic.short=ART -America/Argentina/San_Luis.standard.short=ART -America/Argentina/Tucuman.daylight.short=ARST -America/Argentina/Tucuman.generic.short=ART -America/Argentina/Tucuman.standard.short=ART -America/Argentina/Ushuaia.daylight.short=ARST -America/Argentina/Ushuaia.generic.short=ART -America/Argentina/Ushuaia.standard.short=ART -America/Aruba.daylight.short=ADT -America/Aruba.generic.short=AT -America/Aruba.standard.short=AST -America/Asuncion.daylight.short=PYST -America/Asuncion.generic.short=PYT -America/Asuncion.standard.short=PYT -America/Atikokan.daylight.short=EDT -America/Atikokan.generic.short=ET -America/Atikokan.standard.short=EST -America/Atka.daylight.short=HADT -America/Atka.generic.short=HAT -America/Atka.standard.short=HAST -America/Bahia_Banderas.daylight.short=CDT -America/Bahia_Banderas.generic.short=CT -America/Bahia_Banderas.standard.short=CST -America/Bahia.daylight.short=BRST -America/Bahia.generic.short=BRT -America/Bahia.standard.short=BRT -America/Barbados.daylight.short=ADT -America/Barbados.generic.short=AT -America/Barbados.standard.short=AST -America/Belem.daylight.short=BRST -America/Belem.generic.short=BRT -America/Belem.standard.short=BRT -America/Belize.daylight.short=CDT -America/Belize.generic.short=CT -America/Belize.standard.short=CST -America/Blanc-Sablon.daylight.short=ADT -America/Blanc-Sablon.generic.short=AT -America/Blanc-Sablon.standard.short=AST -America/Boa_Vista.daylight.short=AMST -America/Boa_Vista.generic.short=AMT -America/Boa_Vista.standard.short=AMT -America/Bogota.daylight.short=COST -America/Bogota.generic.short=COT -America/Bogota.standard.short=COT -America/Boise.daylight.short=MDT -America/Boise.generic.short=MT -America/Boise.standard.short=MST -America/Buenos_Aires.daylight.short=ARST -America/Buenos_Aires.generic.short=ART -America/Buenos_Aires.standard.short=ART -America/Cambridge_Bay.daylight.short=MDT -America/Cambridge_Bay.generic.short=MT -America/Cambridge_Bay.standard.short=MST -America/Campo_Grande.daylight.short=AMST -America/Campo_Grande.generic.short=AMT -America/Campo_Grande.standard.short=AMT -America/Cancun.daylight.short=CDT -America/Cancun.generic.short=CT -America/Cancun.standard.short=CST -America/Caracas.daylight.short=VEST -America/Caracas.generic.short=VET -America/Caracas.standard.short=VET -America/Catamarca.daylight.short=ARST -America/Catamarca.generic.short=ART -America/Catamarca.standard.short=ART -America/Cayenne.daylight.short=GFST -America/Cayenne.generic.short=GFT -America/Cayenne.standard.short=GFT -America/Cayman.daylight.short=EDT -America/Cayman.generic.short=ET -America/Cayman.standard.short=EST -America/Chicago.daylight.short=CDT -America/Chicago.generic.short=CT -America/Chicago.standard.short=CST -America/Chihuahua.daylight.short=MDT -America/Chihuahua.generic.short=MT -America/Chihuahua.standard.short=MST -America/Coral_Harbour.daylight.short=EDT -America/Coral_Harbour.generic.short=ET -America/Coral_Harbour.standard.short=EST -America/Cordoba.daylight.short=ARST -America/Cordoba.generic.short=ART -America/Cordoba.standard.short=ART -America/Costa_Rica.daylight.short=CDT -America/Costa_Rica.generic.short=CT -America/Costa_Rica.standard.short=CST -America/Creston.daylight.short=MDT -America/Creston.generic.short=MT -America/Creston.standard.short=MST -America/Cuiaba.daylight.short=AMST -America/Cuiaba.generic.short=AMT -America/Cuiaba.standard.short=AMT -America/Curacao.daylight.short=ADT -America/Curacao.generic.short=AT -America/Curacao.standard.short=AST -America/Danmarkshavn.daylight.short=GMT -America/Danmarkshavn.generic.short=GMT -America/Danmarkshavn.standard.short=GMT -America/Dawson_Creek.daylight.short=MDT -America/Dawson_Creek.generic.short=MT -America/Dawson_Creek.standard.short=MST -America/Dawson.daylight.short=PDT -America/Dawson.generic.short=PT -America/Dawson.standard.short=PST -America/Denver.daylight.short=MDT -America/Denver.generic.short=MT -America/Denver.standard.short=MST -America/Detroit.daylight.short=EDT -America/Detroit.generic.short=ET -America/Detroit.standard.short=EST -America/Dominica.daylight.short=ADT -America/Dominica.generic.short=AT -America/Dominica.standard.short=AST -America/Edmonton.daylight.short=MDT -America/Edmonton.generic.short=MT -America/Edmonton.standard.short=MST -America/Eirunepe.daylight.short=ACST -America/Eirunepe.generic.short=ACT -America/Eirunepe.standard.short=ACT -America/El_Salvador.daylight.short=CDT -America/El_Salvador.generic.short=CT -America/El_Salvador.standard.short=CST -America/Ensenada.daylight.short=PDT -America/Ensenada.generic.short=PT -America/Ensenada.standard.short=PST -America/Fortaleza.daylight.short=BRST -America/Fortaleza.generic.short=BRT -America/Fortaleza.standard.short=BRT -America/Fort_Wayne.daylight.short=EDT -America/Fort_Wayne.generic.short=ET -America/Fort_Wayne.standard.short=EST -America/Glace_Bay.daylight.short=ADT -America/Glace_Bay.generic.short=AT -America/Glace_Bay.standard.short=AST -America/Godthab.daylight.short=WGST -America/Godthab.generic.short=WGT -America/Godthab.standard.short=WGT -America/Goose_Bay.daylight.short=ADT -America/Goose_Bay.generic.short=AT -America/Goose_Bay.standard.short=AST -America/Grand_Turk.daylight.short=EDT -America/Grand_Turk.generic.short=ET -America/Grand_Turk.standard.short=EST -America/Grenada.daylight.short=ADT -America/Grenada.generic.short=AT -America/Grenada.standard.short=AST -America/Guadeloupe.daylight.short=ADT -America/Guadeloupe.generic.short=AT -America/Guadeloupe.standard.short=AST -America/Guatemala.daylight.short=CDT -America/Guatemala.generic.short=CT -America/Guatemala.standard.short=CST -America/Guayaquil.daylight.short=ECST -America/Guayaquil.generic.short=ECT -America/Guayaquil.standard.short=ECT -America/Guyana.daylight.short=GYST -America/Guyana.generic.short=GYT -America/Guyana.standard.short=GYT -America/Halifax.daylight.short=ADT -America/Halifax.generic.short=AT -America/Halifax.standard.short=AST -America/Havana.daylight.short=CDT -America/Havana.generic.short=CT -America/Havana.standard.short=CST -America/Hermosillo.daylight.short=MDT -America/Hermosillo.generic.short=MT -America/Hermosillo.standard.short=MST -America/Indiana/Indianapolis.daylight.short=EDT -America/Indiana/Indianapolis.generic.short=ET -America/Indiana/Indianapolis.standard.short=EST -America/Indiana/Knox.daylight.short=CDT -America/Indiana/Knox.generic.short=CT -America/Indiana/Knox.standard.short=CST -America/Indiana/Marengo.daylight.short=EDT -America/Indiana/Marengo.generic.short=ET -America/Indiana/Marengo.standard.short=EST -America/Indiana/Petersburg.daylight.short=EDT -America/Indiana/Petersburg.generic.short=ET -America/Indiana/Petersburg.standard.short=EST -America/Indianapolis.daylight.short=EDT -America/Indianapolis.generic.short=ET -America/Indianapolis.standard.short=EST -America/Indiana/Tell_City.daylight.short=CDT -America/Indiana/Tell_City.generic.short=CT -America/Indiana/Tell_City.standard.short=CST -America/Indiana/Vevay.daylight.short=EDT -America/Indiana/Vevay.generic.short=ET -America/Indiana/Vevay.standard.short=EST -America/Indiana/Vincennes.daylight.short=EDT -America/Indiana/Vincennes.generic.short=ET -America/Indiana/Vincennes.standard.short=EST -America/Indiana/Winamac.daylight.short=EDT -America/Indiana/Winamac.generic.short=ET -America/Indiana/Winamac.standard.short=EST -America/Inuvik.daylight.short=MDT -America/Inuvik.generic.short=MT -America/Inuvik.standard.short=MST -America/Iqaluit.daylight.short=EDT -America/Iqaluit.generic.short=ET -America/Iqaluit.standard.short=EST -America/Jamaica.daylight.short=EDT -America/Jamaica.generic.short=ET -America/Jamaica.standard.short=EST -America/Jujuy.daylight.short=ARST -America/Jujuy.generic.short=ART -America/Jujuy.standard.short=ART -America/Juneau.daylight.short=AKDT -America/Juneau.generic.short=AKT -America/Juneau.standard.short=AKST -America/Kentucky/Louisville.daylight.short=EDT -America/Kentucky/Louisville.generic.short=ET -America/Kentucky/Louisville.standard.short=EST -America/Kentucky/Monticello.daylight.short=EDT -America/Kentucky/Monticello.generic.short=ET -America/Kentucky/Monticello.standard.short=EST -America/Knox_IN.daylight.short=CDT -America/Knox_IN.generic.short=CT -America/Knox_IN.standard.short=CST -America/Kralendijk.daylight.short=ADT -America/Kralendijk.generic.short=AT -America/Kralendijk.standard.short=AST -America/La_Paz.daylight.short=BOST -America/La_Paz.generic.short=BOT -America/La_Paz.standard.short=BOT -America/Lima.daylight.short=PEST -America/Lima.generic.short=PET -America/Lima.standard.short=PET -America/Los_Angeles.daylight.short=PDT -America/Los_Angeles.generic.short=PT -America/Los_Angeles.standard.short=PST -America/Louisville.daylight.short=EDT -America/Louisville.generic.short=ET -America/Louisville.standard.short=EST -America/Lower_Princes.daylight.short=ADT -America/Lower_Princes.generic.short=AT -America/Lower_Princes.standard.short=AST -America/Maceio.daylight.short=BRST -America/Maceio.generic.short=BRT -America/Maceio.standard.short=BRT -America/Managua.daylight.short=CDT -America/Managua.generic.short=CT -America/Managua.standard.short=CST -America/Manaus.daylight.short=AMST -America/Manaus.generic.short=AMT -America/Manaus.standard.short=AMT -America/Marigot.daylight.short=ADT -America/Marigot.generic.short=AT -America/Marigot.standard.short=AST -America/Martinique.daylight.short=ADT -America/Martinique.generic.short=AT -America/Martinique.standard.short=AST -America/Matamoros.daylight.short=CDT -America/Matamoros.generic.short=CT -America/Matamoros.standard.short=CST -America/Mazatlan.daylight.short=MDT -America/Mazatlan.generic.short=MT -America/Mazatlan.standard.short=MST -America/Mendoza.daylight.short=ARST -America/Mendoza.generic.short=ART -America/Mendoza.standard.short=ART -America/Menominee.daylight.short=CDT -America/Menominee.generic.short=CT -America/Menominee.standard.short=CST -America/Merida.daylight.short=CDT -America/Merida.generic.short=CT -America/Merida.standard.short=CST -America/Metlakatla.daylight.short=MeDT -America/Metlakatla.generic.short=MeT -America/Metlakatla.standard.short=MeST -America/Mexico_City.daylight.short=CDT -America/Mexico_City.generic.short=CT -America/Mexico_City.standard.short=CST -America/Miquelon.daylight.short=PMDT -America/Miquelon.generic.short=PMT -America/Miquelon.standard.short=PMST -America/Moncton.daylight.short=ADT -America/Moncton.generic.short=AT -America/Moncton.standard.short=AST -America/Monterrey.daylight.short=CDT -America/Monterrey.generic.short=CT -America/Monterrey.standard.short=CST -America/Montevideo.daylight.short=UYST -America/Montevideo.generic.short=UYT -America/Montevideo.standard.short=UYT -America/Montreal.daylight.short=EDT -America/Montreal.generic.short=ET -America/Montreal.standard.short=EST -America/Montserrat.daylight.short=ADT -America/Montserrat.generic.short=AT -America/Montserrat.standard.short=AST -America/Nassau.daylight.short=EDT -America/Nassau.generic.short=ET -America/Nassau.standard.short=EST -America/New_York.daylight.short=EDT -America/New_York.generic.short=ET -America/New_York.standard.short=EST -America/Nipigon.daylight.short=EDT -America/Nipigon.generic.short=ET -America/Nipigon.standard.short=EST -America/Nome.daylight.short=AKDT -America/Nome.generic.short=AKT -America/Nome.standard.short=AKST -America/Noronha.daylight.short=FNST -America/Noronha.generic.short=FNT -America/Noronha.standard.short=FNT -America/North_Dakota/Beulah.daylight.short=CDT -America/North_Dakota/Beulah.generic.short=CT -America/North_Dakota/Beulah.standard.short=CST -America/North_Dakota/Center.daylight.short=CDT -America/North_Dakota/Center.generic.short=CT -America/North_Dakota/Center.standard.short=CST -America/North_Dakota/New_Salem.daylight.short=CDT -America/North_Dakota/New_Salem.generic.short=CT -America/North_Dakota/New_Salem.standard.short=CST -America/Ojinaga.daylight.short=MDT -America/Ojinaga.generic.short=MT -America/Ojinaga.standard.short=MST -America/Panama.daylight.short=EDT -America/Panama.generic.short=ET -America/Panama.standard.short=EST -America/Pangnirtung.daylight.short=EDT -America/Pangnirtung.generic.short=ET -America/Pangnirtung.standard.short=EST -America/Paramaribo.daylight.short=SRST -America/Paramaribo.generic.short=SRT -America/Paramaribo.standard.short=SRT -America/Phoenix.daylight.short=MDT -America/Phoenix.generic.short=MT -America/Phoenix.standard.short=MST -America/Port-au-Prince.daylight.short=EDT -America/Port-au-Prince.generic.short=ET -America/Port-au-Prince.standard.short=EST -America/Porto_Acre.daylight.short=ACST -America/Porto_Acre.generic.short=ACT -America/Porto_Acre.standard.short=ACT -America/Port_of_Spain.daylight.short=ADT -America/Port_of_Spain.generic.short=AT -America/Port_of_Spain.standard.short=AST -America/Porto_Velho.daylight.short=AMST -America/Porto_Velho.generic.short=AMT -America/Porto_Velho.standard.short=AMT -America/Puerto_Rico.daylight.short=ADT -America/Puerto_Rico.generic.short=AT -America/Puerto_Rico.standard.short=AST -America/Rainy_River.daylight.short=CDT -America/Rainy_River.generic.short=CT -America/Rainy_River.standard.short=CST -America/Rankin_Inlet.daylight.short=CDT -America/Rankin_Inlet.generic.short=CT -America/Rankin_Inlet.standard.short=CST -America/Recife.daylight.short=BRST -America/Recife.generic.short=BRT -America/Recife.standard.short=BRT -America/Regina.daylight.short=CDT -America/Regina.generic.short=CT -America/Regina.standard.short=CST -America/Resolute.daylight.short=CDT -America/Resolute.generic.short=CT -America/Resolute.standard.short=CST -America/Rio_Branco.daylight.short=ACST -America/Rio_Branco.generic.short=ACT -America/Rio_Branco.standard.short=ACT -America/Rosario.daylight.short=ARST -America/Rosario.generic.short=ART -America/Rosario.standard.short=ART -America/Santa_Isabel.daylight.short=PDT -America/Santa_Isabel.generic.short=PT -America/Santa_Isabel.standard.short=PST -America/Santarem.daylight.short=BRST -America/Santarem.generic.short=BRT -America/Santarem.standard.short=BRT -America/Santiago.daylight.short=CLST -America/Santiago.generic.short=CLT -America/Santiago.standard.short=CLT -America/Santo_Domingo.daylight.short=ADT -America/Santo_Domingo.generic.short=AT -America/Santo_Domingo.standard.short=AST -America/Sao_Paulo.daylight.short=BRST -America/Sao_Paulo.generic.short=BRT -America/Sao_Paulo.standard.short=BRT -America/Scoresbysund.daylight.short=EGST -America/Scoresbysund.generic.short=EGT -America/Scoresbysund.standard.short=EGT -America/Shiprock.daylight.short=MDT -America/Shiprock.generic.short=MT -America/Shiprock.standard.short=MST -America/Sitka.daylight.short=AKDT -America/Sitka.generic.short=AKT -America/Sitka.standard.short=AKST -America/St_Barthelemy.daylight.short=ADT -America/St_Barthelemy.generic.short=AT -America/St_Barthelemy.standard.short=AST -America/St_Johns.daylight.short=NDT -America/St_Johns.generic.short=NT -America/St_Johns.standard.short=NST -America/St_Kitts.daylight.short=ADT -America/St_Kitts.generic.short=AT -America/St_Kitts.standard.short=AST -America/St_Lucia.daylight.short=ADT -America/St_Lucia.generic.short=AT -America/St_Lucia.standard.short=AST -America/St_Thomas.daylight.short=ADT -America/St_Thomas.generic.short=AT -America/St_Thomas.standard.short=AST -America/St_Vincent.daylight.short=ADT -America/St_Vincent.generic.short=AT -America/St_Vincent.standard.short=AST -America/Swift_Current.daylight.short=CDT -America/Swift_Current.generic.short=CT -America/Swift_Current.standard.short=CST -America/Tegucigalpa.daylight.short=CDT -America/Tegucigalpa.generic.short=CT -America/Tegucigalpa.standard.short=CST -America/Thule.daylight.short=ADT -America/Thule.generic.short=AT -America/Thule.standard.short=AST -America/Thunder_Bay.daylight.short=EDT -America/Thunder_Bay.generic.short=ET -America/Thunder_Bay.standard.short=EST -America/Tijuana.daylight.short=PDT -America/Tijuana.generic.short=PT -America/Tijuana.standard.short=PST -America/Toronto.daylight.short=EDT -America/Toronto.generic.short=ET -America/Toronto.standard.short=EST -America/Tortola.daylight.short=ADT -America/Tortola.generic.short=AT -America/Tortola.standard.short=AST -America/Vancouver.daylight.short=PDT -America/Vancouver.generic.short=PT -America/Vancouver.standard.short=PST -America/Virgin.daylight.short=ADT -America/Virgin.generic.short=AT -America/Virgin.standard.short=AST -America/Whitehorse.daylight.short=PDT -America/Whitehorse.generic.short=PT -America/Whitehorse.standard.short=PST -America/Winnipeg.daylight.short=CDT -America/Winnipeg.generic.short=CT -America/Winnipeg.standard.short=CST -America/Yakutat.daylight.short=AKDT -America/Yakutat.generic.short=AKT -America/Yakutat.standard.short=AKST -America/Yellowknife.daylight.short=MDT -America/Yellowknife.generic.short=MT -America/Yellowknife.standard.short=MST -Antarctica/Casey.daylight.short=WST -Antarctica/Casey.generic.short=WT -Antarctica/Casey.standard.short=WST -Antarctica/Davis.daylight.short=DAVST -Antarctica/Davis.generic.short=DAVT -Antarctica/Davis.standard.short=DAVT -Antarctica/DumontDUrville.daylight.short=DDUST -Antarctica/DumontDUrville.generic.short=DDUT -Antarctica/DumontDUrville.standard.short=DDUT -Antarctica/Macquarie.daylight.short=MIST -Antarctica/Macquarie.generic.short=MIST -Antarctica/Macquarie.standard.short=MIST -Antarctica/Mawson.daylight.short=MAWST -Antarctica/Mawson.generic.short=MAWT -Antarctica/Mawson.standard.short=MAWT -Antarctica/McMurdo.daylight.short=NZDT -Antarctica/McMurdo.generic.short=NZT -Antarctica/McMurdo.standard.short=NZST -Antarctica/Palmer.daylight.short=CLST -Antarctica/Palmer.generic.short=CLT -Antarctica/Palmer.standard.short=CLT -Antarctica/Rothera.daylight.short=ROTST -Antarctica/Rothera.generic.short=ROTT -Antarctica/Rothera.standard.short=ROTT -Antarctica/South_Pole.daylight.short=NZDT -Antarctica/South_Pole.generic.short=NZT -Antarctica/South_Pole.standard.short=NZST -Antarctica/Syowa.daylight.short=SYOST -Antarctica/Syowa.generic.short=SYOT -Antarctica/Syowa.standard.short=SYOT -Antarctica/Vostok.daylight.short=VOSST -Antarctica/Vostok.generic.short=VOST -Antarctica/Vostok.standard.short=VOST -Arctic/Longyearbyen.daylight.short=CEST -Arctic/Longyearbyen.generic.short=CET -Arctic/Longyearbyen.standard.short=CET -ART.daylight.short=EEST -ART.generic.short=EET -ART.standard.short=EET -Asia/Aden.daylight.short=ADT -Asia/Aden.generic.short=AT -Asia/Aden.standard.short=AST -Asia/Almaty.daylight.short=ALMST -Asia/Almaty.generic.short=ALMT -Asia/Almaty.standard.short=ALMT -Asia/Amman.daylight.short=ADT -Asia/Amman.generic.short=AT -Asia/Amman.standard.short=AST -Asia/Anadyr.daylight.short=ANAST -Asia/Anadyr.generic.short=ANAT -Asia/Anadyr.standard.short=ANAT -Asia/Aqtau.daylight.short=AQTST -Asia/Aqtau.generic.short=AQTT -Asia/Aqtau.standard.short=AQTT -Asia/Aqtobe.daylight.short=AQTST -Asia/Aqtobe.generic.short=AQTT -Asia/Aqtobe.standard.short=AQTT -Asia/Ashgabat.daylight.short=TMST -Asia/Ashgabat.generic.short=TMT -Asia/Ashgabat.standard.short=TMT -Asia/Ashkhabad.daylight.short=TMST -Asia/Ashkhabad.generic.short=TMT -Asia/Ashkhabad.standard.short=TMT -Asia/Baghdad.daylight.short=ADT -Asia/Baghdad.generic.short=AT -Asia/Baghdad.standard.short=AST -Asia/Bahrain.daylight.short=ADT -Asia/Bahrain.generic.short=AT -Asia/Bahrain.standard.short=AST -Asia/Baku.daylight.short=AZST -Asia/Baku.generic.short=AZT -Asia/Baku.standard.short=AZT -Asia/Bangkok.daylight.short=ICST -Asia/Bangkok.generic.short=ICT -Asia/Bangkok.standard.short=ICT -Asia/Beirut.daylight.short=EEST -Asia/Beirut.generic.short=EET -Asia/Beirut.standard.short=EET -Asia/Bishkek.daylight.short=KGST -Asia/Bishkek.generic.short=KGT -Asia/Bishkek.standard.short=KGT -Asia/Brunei.daylight.short=BNST -Asia/Brunei.generic.short=BNT -Asia/Brunei.standard.short=BNT -Asia/Calcutta.daylight.short=IDT -Asia/Calcutta.generic.short=IT -Asia/Calcutta.standard.short=IST -Asia/Choibalsan.daylight.short=CHOST -Asia/Choibalsan.generic.short=CHOT -Asia/Choibalsan.standard.short=CHOT -Asia/Chongqing.daylight.short=CDT -Asia/Chongqing.generic.short=CT -Asia/Chongqing.standard.short=CST -Asia/Chungking.daylight.short=CDT -Asia/Chungking.generic.short=CT -Asia/Chungking.standard.short=CST -Asia/Colombo.daylight.short=IDT -Asia/Colombo.generic.short=IT -Asia/Colombo.standard.short=IST -Asia/Dacca.daylight.short=BDST -Asia/Dacca.generic.short=BDT -Asia/Dacca.standard.short=BDT -Asia/Damascus.daylight.short=EEST -Asia/Damascus.generic.short=EET -Asia/Damascus.standard.short=EET -Asia/Dhaka.daylight.short=BDST -Asia/Dhaka.generic.short=BDT -Asia/Dhaka.standard.short=BDT -Asia/Dili.daylight.short=TLST -Asia/Dili.generic.short=TLT -Asia/Dili.standard.short=TLT -Asia/Dubai.daylight.short=GDT -Asia/Dubai.generic.short=GT -Asia/Dubai.standard.short=GST -Asia/Dushanbe.daylight.short=TJST -Asia/Dushanbe.generic.short=TJT -Asia/Dushanbe.standard.short=TJT -Asia/Gaza.daylight.short=EEST -Asia/Gaza.generic.short=EET -Asia/Gaza.standard.short=EET -Asia/Harbin.daylight.short=CDT -Asia/Harbin.generic.short=CT -Asia/Harbin.standard.short=CST -Asia/Hebron.daylight.short=EEST -Asia/Hebron.generic.short=EET -Asia/Hebron.standard.short=EET -Asia/Ho_Chi_Minh.daylight.short=ICST -Asia/Ho_Chi_Minh.generic.short=ICT -Asia/Ho_Chi_Minh.standard.short=ICT -Asia/Hong_Kong.daylight.short=HKST -Asia/Hong_Kong.generic.short=HKT -Asia/Hong_Kong.standard.short=HKT -Asia/Hovd.daylight.short=HOVST -Asia/Hovd.generic.short=HOVT -Asia/Hovd.standard.short=HOVT -Asia/Irkutsk.daylight.short=IRKST -Asia/Irkutsk.generic.short=IRKT -Asia/Irkutsk.standard.short=IRKT -Asia/Istanbul.daylight.short=EEST -Asia/Istanbul.generic.short=EET -Asia/Istanbul.standard.short=EET -Asia/Jakarta.daylight.short=WIST -Asia/Jakarta.generic.short=WIB -Asia/Jakarta.standard.short=WIB -Asia/Jayapura.daylight.short=EIST -Asia/Jayapura.generic.short=WIT -Asia/Jayapura.standard.short=WIT -Asia/Jerusalem.daylight.short=IDT -Asia/Jerusalem.generic.short=IT -Asia/Jerusalem.standard.short=IST -Asia/Kabul.daylight.short=AFST -Asia/Kabul.generic.short=AFT -Asia/Kabul.standard.short=AFT -Asia/Kamchatka.daylight.short=PETST -Asia/Kamchatka.generic.short=PETT -Asia/Kamchatka.standard.short=PETT -Asia/Karachi.daylight.short=PKST -Asia/Karachi.generic.short=PKT -Asia/Karachi.standard.short=PKT -Asia/Kashgar.daylight.short=CDT -Asia/Kashgar.generic.short=CT -Asia/Kashgar.standard.short=CST -Asia/Kathmandu.daylight.short=NPST -Asia/Kathmandu.generic.short=NPT -Asia/Kathmandu.standard.short=NPT -Asia/Katmandu.daylight.short=NPST -Asia/Katmandu.generic.short=NPT -Asia/Katmandu.standard.short=NPT -Asia/Khandyga.daylight.short=YAKST -Asia/Khandyga.generic.short=YAKT -Asia/Khandyga.standard.short=YAKT -Asia/Kolkata.daylight.short=IDT -Asia/Kolkata.generic.short=IT -Asia/Kolkata.standard.short=IST -Asia/Krasnoyarsk.daylight.short=KRAST -Asia/Krasnoyarsk.generic.short=KRAT -Asia/Krasnoyarsk.standard.short=KRAT -Asia/Kuala_Lumpur.daylight.short=MYST -Asia/Kuala_Lumpur.generic.short=MYT -Asia/Kuala_Lumpur.standard.short=MYT -Asia/Kuching.daylight.short=MYST -Asia/Kuching.generic.short=MYT -Asia/Kuching.standard.short=MYT -Asia/Kuwait.daylight.short=ADT -Asia/Kuwait.generic.short=AT -Asia/Kuwait.standard.short=AST -Asia/Macao.daylight.short=CDT -Asia/Macao.generic.short=CT -Asia/Macao.standard.short=CST -Asia/Macau.daylight.short=CDT -Asia/Macau.generic.short=CT -Asia/Macau.standard.short=CST -Asia/Magadan.daylight.short=MAGST -Asia/Magadan.generic.short=MAGT -Asia/Magadan.standard.short=MAGT -Asia/Makassar.daylight.short=CIST -Asia/Makassar.generic.short=WITA -Asia/Makassar.standard.short=WITA -Asia/Manila.daylight.short=PHST -Asia/Manila.generic.short=PHT -Asia/Manila.standard.short=PHT -Asia/Muscat.daylight.short=GDT -Asia/Muscat.generic.short=GT -Asia/Muscat.standard.short=GST -Asia/Nicosia.daylight.short=EEST -Asia/Nicosia.generic.short=EET -Asia/Nicosia.standard.short=EET -Asia/Novokuznetsk.daylight.short=NOVST -Asia/Novokuznetsk.generic.short=NOVT -Asia/Novokuznetsk.standard.short=NOVT -Asia/Novosibirsk.daylight.short=NOVST -Asia/Novosibirsk.generic.short=NOVT -Asia/Novosibirsk.standard.short=NOVT -Asia/Omsk.daylight.short=OMSST -Asia/Omsk.generic.short=OMST -Asia/Omsk.standard.short=OMST -Asia/Oral.daylight.short=ORAST -Asia/Oral.generic.short=ORAT -Asia/Oral.standard.short=ORAT -Asia/Phnom_Penh.daylight.short=ICST -Asia/Phnom_Penh.generic.short=ICT -Asia/Phnom_Penh.standard.short=ICT -Asia/Pontianak.daylight.short=WIST -Asia/Pontianak.generic.short=WIB -Asia/Pontianak.standard.short=WIB -Asia/Pyongyang.daylight.short=KDT -Asia/Pyongyang.generic.short=KT -Asia/Pyongyang.standard.short=KST -Asia/Qatar.daylight.short=ADT -Asia/Qatar.generic.short=AT -Asia/Qatar.standard.short=AST -Asia/Qyzylorda.daylight.short=QYZST -Asia/Qyzylorda.generic.short=QYZT -Asia/Qyzylorda.standard.short=QYZT -Asia/Rangoon.daylight.short=MMST -Asia/Rangoon.generic.short=MMT -Asia/Rangoon.standard.short=MMT -Asia/Saigon.daylight.short=ICST -Asia/Saigon.generic.short=ICT -Asia/Saigon.standard.short=ICT -Asia/Sakhalin.daylight.short=SAKST -Asia/Sakhalin.generic.short=SAKT -Asia/Sakhalin.standard.short=SAKT -Asia/Samarkand.daylight.short=UZST -Asia/Samarkand.generic.short=UZT -Asia/Samarkand.standard.short=UZT -Asia/Seoul.daylight.short=KDT -Asia/Seoul.generic.short=KT -Asia/Seoul.standard.short=KST -Asia/Shanghai.daylight.short=CDT -Asia/Shanghai.generic.short=CT -Asia/Shanghai.standard.short=CST -Asia/Singapore.daylight.short=SGST -Asia/Singapore.generic.short=SGT -Asia/Singapore.standard.short=SGT -Asia/Taipei.daylight.short=TDT -Asia/Taipei.generic.short=TT -Asia/Taipei.standard.short=TST -Asia/Tashkent.daylight.short=UZST -Asia/Tashkent.generic.short=UZT -Asia/Tashkent.standard.short=UZT -Asia/Tbilisi.daylight.short=GEST -Asia/Tbilisi.generic.short=GET -Asia/Tbilisi.standard.short=GET -Asia/Tehran.daylight.short=IRDT -Asia/Tehran.generic.short=IRT -Asia/Tehran.standard.short=IRST -Asia/Tel_Aviv.daylight.short=IDT -Asia/Tel_Aviv.generic.short=IT -Asia/Tel_Aviv.standard.short=IST -Asia/Thimbu.daylight.short=BTST -Asia/Thimbu.generic.short=BTT -Asia/Thimbu.standard.short=BTT -Asia/Thimphu.daylight.short=BTST -Asia/Thimphu.generic.short=BTT -Asia/Thimphu.standard.short=BTT -Asia/Tokyo.daylight.short=JDT -Asia/Tokyo.generic.short=JT -Asia/Tokyo.standard.short=JST -Asia/Ujung_Pandang.daylight.short=CIST -Asia/Ujung_Pandang.generic.short=WITA -Asia/Ujung_Pandang.standard.short=WITA -Asia/Ulaanbaatar.daylight.short=ULAST -Asia/Ulaanbaatar.generic.short=ULAT -Asia/Ulaanbaatar.standard.short=ULAT -Asia/Ulan_Bator.daylight.short=ULAST -Asia/Ulan_Bator.generic.short=ULAT -Asia/Ulan_Bator.standard.short=ULAT -Asia/Urumqi.daylight.short=CDT -Asia/Urumqi.generic.short=CT -Asia/Urumqi.standard.short=CST -Asia/Ust-Nera.daylight.short=VLAST -Asia/Ust-Nera.generic.short=VLAT -Asia/Ust-Nera.standard.short=VLAT -Asia/Vientiane.daylight.short=ICST -Asia/Vientiane.generic.short=ICT -Asia/Vientiane.standard.short=ICT -Asia/Vladivostok.daylight.short=VLAST -Asia/Vladivostok.generic.short=VLAT -Asia/Vladivostok.standard.short=VLAT -Asia/Yakutsk.daylight.short=YAKST -Asia/Yakutsk.generic.short=YAKT -Asia/Yakutsk.standard.short=YAKT -Asia/Yekaterinburg.daylight.short=YEKST -Asia/Yekaterinburg.generic.short=YEKT -Asia/Yekaterinburg.standard.short=YEKT -Asia/Yerevan.daylight.short=AMST -Asia/Yerevan.generic.short=AMT -Asia/Yerevan.standard.short=AMT -AST.daylight.short=AKDT -AST.generic.short=AKT -AST.standard.short=AKST -Atlantic/Azores.daylight.short=AZOST -Atlantic/Azores.generic.short=AZOT -Atlantic/Azores.standard.short=AZOT -Atlantic/Bermuda.daylight.short=ADT -Atlantic/Bermuda.generic.short=AT -Atlantic/Bermuda.standard.short=AST -Atlantic/Canary.daylight.short=WEST -Atlantic/Canary.generic.short=WET -Atlantic/Canary.standard.short=WET -Atlantic/Cape_Verde.daylight.short=CVST -Atlantic/Cape_Verde.generic.short=CVT -Atlantic/Cape_Verde.standard.short=CVT -Atlantic/Faeroe.daylight.short=WEST -Atlantic/Faeroe.generic.short=WET -Atlantic/Faeroe.standard.short=WET -Atlantic/Faroe.daylight.short=WEST -Atlantic/Faroe.generic.short=WET -Atlantic/Faroe.standard.short=WET -Atlantic/Jan_Mayen.daylight.short=CEST -Atlantic/Jan_Mayen.generic.short=CET -Atlantic/Jan_Mayen.standard.short=CET -Atlantic/Madeira.daylight.short=WEST -Atlantic/Madeira.generic.short=WET -Atlantic/Madeira.standard.short=WET -Atlantic/Reykjavik.daylight.short=GMT -Atlantic/Reykjavik.generic.short=GMT -Atlantic/Reykjavik.standard.short=GMT -Atlantic/South_Georgia.daylight.short=GDT -Atlantic/South_Georgia.generic.short=GT -Atlantic/South_Georgia.standard.short=GST -Atlantic/Stanley.daylight.short=FKST -Atlantic/Stanley.generic.short=FKT -Atlantic/Stanley.standard.short=FKT -Atlantic/St_Helena.daylight.short=GMT -Atlantic/St_Helena.generic.short=GMT -Atlantic/St_Helena.standard.short=GMT -Australia/ACT.daylight.short=EST -Australia/ACT.generic.short=ET -Australia/ACT.standard.short=EST -Australia/Adelaide.daylight.short=CST -Australia/Adelaide.generic.short=CT -Australia/Adelaide.standard.short=CST -Australia/Brisbane.daylight.short=EST -Australia/Brisbane.generic.short=ET -Australia/Brisbane.standard.short=EST -Australia/Broken_Hill.daylight.short=CST -Australia/Broken_Hill.generic.short=CT -Australia/Broken_Hill.standard.short=CST -Australia/Canberra.daylight.short=EST -Australia/Canberra.generic.short=ET -Australia/Canberra.standard.short=EST -Australia/Currie.daylight.short=EST -Australia/Currie.generic.short=ET -Australia/Currie.standard.short=EST -Australia/Darwin.daylight.short=CST -Australia/Darwin.generic.short=CT -Australia/Darwin.standard.short=CST -Australia/Eucla.daylight.short=CWST -Australia/Eucla.generic.short=CWT -Australia/Eucla.standard.short=CWST -Australia/Hobart.daylight.short=EST -Australia/Hobart.generic.short=ET -Australia/Hobart.standard.short=EST -Australia/LHI.daylight.short=LHST -Australia/LHI.generic.short=LHT -Australia/LHI.standard.short=LHST -Australia/Lindeman.daylight.short=EST -Australia/Lindeman.generic.short=ET -Australia/Lindeman.standard.short=EST -Australia/Lord_Howe.daylight.short=LHST -Australia/Lord_Howe.generic.short=LHT -Australia/Lord_Howe.standard.short=LHST -Australia/Melbourne.daylight.short=EST -Australia/Melbourne.generic.short=ET -Australia/Melbourne.standard.short=EST -Australia/North.daylight.short=CST -Australia/North.generic.short=CT -Australia/North.standard.short=CST -Australia/NSW.daylight.short=EST -Australia/NSW.generic.short=ET -Australia/NSW.standard.short=EST -Australia/Perth.daylight.short=WST -Australia/Perth.generic.short=WT -Australia/Perth.standard.short=WST -Australia/Queensland.daylight.short=EST -Australia/Queensland.generic.short=ET -Australia/Queensland.standard.short=EST -Australia/South.daylight.short=CST -Australia/South.generic.short=CT -Australia/South.standard.short=CST -Australia/Sydney.daylight.short=EST -Australia/Sydney.generic.short=ET -Australia/Sydney.standard.short=EST -Australia/Tasmania.daylight.short=EST -Australia/Tasmania.generic.short=ET -Australia/Tasmania.standard.short=EST -Australia/Victoria.daylight.short=EST -Australia/Victoria.generic.short=ET -Australia/Victoria.standard.short=EST -Australia/West.daylight.short=WST -Australia/West.generic.short=WT -Australia/West.standard.short=WST -Australia/Yancowinna.daylight.short=CST -Australia/Yancowinna.generic.short=CT -Australia/Yancowinna.standard.short=CST -BET.daylight.short=BRST -BET.generic.short=BRT -BET.standard.short=BRT -Brazil/Acre.daylight.short=ACST -Brazil/Acre.generic.short=ACT -Brazil/Acre.standard.short=ACT -Brazil/DeNoronha.daylight.short=FNST -Brazil/DeNoronha.generic.short=FNT -Brazil/DeNoronha.standard.short=FNT -Brazil/East.daylight.short=BRST -Brazil/East.generic.short=BRT -Brazil/East.standard.short=BRT -Brazil/West.daylight.short=AMST -Brazil/West.generic.short=AMT -Brazil/West.standard.short=AMT -BST.daylight.short=BDST -BST.generic.short=BDT -BST.standard.short=BDT -Canada/Atlantic.daylight.short=ADT -Canada/Atlantic.generic.short=AT -Canada/Atlantic.standard.short=AST -Canada/Central.daylight.short=CDT -Canada/Central.generic.short=CT -Canada/Central.standard.short=CST -Canada/Eastern.daylight.short=EDT -Canada/Eastern.generic.short=ET -Canada/Eastern.standard.short=EST -Canada/East-Saskatchewan.daylight.short=CDT -Canada/East-Saskatchewan.generic.short=CT -Canada/East-Saskatchewan.standard.short=CST -Canada/Mountain.daylight.short=MDT -Canada/Mountain.generic.short=MT -Canada/Mountain.standard.short=MST -Canada/Newfoundland.daylight.short=NDT -Canada/Newfoundland.generic.short=NT -Canada/Newfoundland.standard.short=NST -Canada/Pacific.daylight.short=PDT -Canada/Pacific.generic.short=PT -Canada/Pacific.standard.short=PST -Canada/Saskatchewan.daylight.short=CDT -Canada/Saskatchewan.generic.short=CT -Canada/Saskatchewan.standard.short=CST -Canada/Yukon.daylight.short=PDT -Canada/Yukon.generic.short=PT -Canada/Yukon.standard.short=PST -CAT.daylight.short=CAST -CAT.generic.short=CAT -CAT.standard.short=CAT -CET.daylight.short=CEST -CET.generic.short=CET -CET.standard.short=CET -Chile/Continental.daylight.short=CLST -Chile/Continental.generic.short=CLT -Chile/Continental.standard.short=CLT -Chile/EasterIsland.daylight.short=EASST -Chile/EasterIsland.generic.short=EAST -Chile/EasterIsland.standard.short=EAST -CNT.daylight.short=NDT -CNT.generic.short=NT -CNT.standard.short=NST -CST6CDT.daylight.short=CDT -CST6CDT.generic.short=CT -CST6CDT.standard.short=CST -CST.daylight.short=CDT -CST.generic.short=CT -CST.standard.short=CST -CTT.daylight.short=CDT -CTT.generic.short=CT -CTT.standard.short=CST -Cuba.daylight.short=CDT -Cuba.generic.short=CT -Cuba.standard.short=CST -EAT.daylight.short=EAST -EAT.generic.short=EAT -EAT.standard.short=EAT -ECT.daylight.short=CEST -ECT.generic.short=CET -ECT.standard.short=CET -EET.daylight.short=EEST -EET.generic.short=EET -EET.standard.short=EET -Egypt.daylight.short=EEST -Egypt.generic.short=EET -Egypt.standard.short=EET -Eire.daylight.short=IST -Eire.generic.short=IT -Eire.standard.short=GMT -EST5EDT.daylight.short=EDT -EST5EDT.generic.short=ET -EST5EDT.standard.short=EST -EST.daylight.short=EDT -EST.generic.short=ET -EST.standard.short=EST -Etc/Greenwich.daylight.short=GMT -Etc/Greenwich.generic.short=GMT -Etc/Greenwich.standard.short=GMT -Etc/UCT.daylight.short=UTC -Etc/UCT.generic.short=UTC -Etc/UCT.standard.short=UTC -Etc/Universal.daylight.short=UTC -Etc/Universal.generic.short=UTC -Etc/Universal.standard.short=UTC -Etc/UTC.daylight.short=UTC -Etc/UTC.generic.short=UTC -Etc/UTC.standard.short=UTC -Etc/Zulu.daylight.short=UTC -Etc/Zulu.generic.short=UTC -Etc/Zulu.standard.short=UTC -Europe/Amsterdam.daylight.short=CEST -Europe/Amsterdam.generic.short=CET -Europe/Amsterdam.standard.short=CET -Europe/Andorra.daylight.short=CEST -Europe/Andorra.generic.short=CET -Europe/Andorra.standard.short=CET -Europe/Athens.daylight.short=EEST -Europe/Athens.generic.short=EET -Europe/Athens.standard.short=EET -Europe/Belfast.daylight.short=BST -Europe/Belfast.generic.short=BT -Europe/Belfast.standard.short=GMT -Europe/Belgrade.daylight.short=CEST -Europe/Belgrade.generic.short=CET -Europe/Belgrade.standard.short=CET -Europe/Berlin.daylight.short=CEST -Europe/Berlin.generic.short=CET -Europe/Berlin.standard.short=CET -Europe/Bratislava.daylight.short=CEST -Europe/Bratislava.generic.short=CET -Europe/Bratislava.standard.short=CET -Europe/Brussels.daylight.short=CEST -Europe/Brussels.generic.short=CET -Europe/Brussels.standard.short=CET -Europe/Bucharest.daylight.short=EEST -Europe/Bucharest.generic.short=EET -Europe/Bucharest.standard.short=EET -Europe/Budapest.daylight.short=CEST -Europe/Budapest.generic.short=CET -Europe/Budapest.standard.short=CET -Europe/Busingen.daylight.short=CEST -Europe/Busingen.generic.short=CET -Europe/Busingen.standard.short=CET -Europe/Chisinau.daylight.short=EEST -Europe/Chisinau.generic.short=EET -Europe/Chisinau.standard.short=EET -Europe/Copenhagen.daylight.short=CEST -Europe/Copenhagen.generic.short=CET -Europe/Copenhagen.standard.short=CET -Europe/Dublin.daylight.short=IST -Europe/Dublin.generic.short=IT -Europe/Dublin.standard.short=GMT -Europe/Gibraltar.daylight.short=CEST -Europe/Gibraltar.generic.short=CET -Europe/Gibraltar.standard.short=CET -Europe/Guernsey.daylight.short=BST -Europe/Guernsey.generic.short=BT -Europe/Guernsey.standard.short=GMT -Europe/Helsinki.daylight.short=EEST -Europe/Helsinki.generic.short=EET -Europe/Helsinki.standard.short=EET -Europe/Isle_of_Man.daylight.short=BST -Europe/Isle_of_Man.generic.short=BT -Europe/Isle_of_Man.standard.short=GMT -Europe/Istanbul.daylight.short=EEST -Europe/Istanbul.generic.short=EET -Europe/Istanbul.standard.short=EET -Europe/Jersey.daylight.short=BST -Europe/Jersey.generic.short=BT -Europe/Jersey.standard.short=GMT -Europe/Kaliningrad.daylight.short=FEST -Europe/Kaliningrad.generic.short=FET -Europe/Kaliningrad.standard.short=FET -Europe/Kiev.daylight.short=EEST -Europe/Kiev.generic.short=EET -Europe/Kiev.standard.short=EET -Europe/Lisbon.daylight.short=WEST -Europe/Lisbon.generic.short=WET -Europe/Lisbon.standard.short=WET -Europe/Ljubljana.daylight.short=CEST -Europe/Ljubljana.generic.short=CET -Europe/Ljubljana.standard.short=CET -Europe/London.daylight.short=BST -Europe/London.generic.short=BT -Europe/London.standard.short=GMT -Europe/Luxembourg.daylight.short=CEST -Europe/Luxembourg.generic.short=CET -Europe/Luxembourg.standard.short=CET -Europe/Madrid.daylight.short=CEST -Europe/Madrid.generic.short=CET -Europe/Madrid.standard.short=CET -Europe/Malta.daylight.short=CEST -Europe/Malta.generic.short=CET -Europe/Malta.standard.short=CET -Europe/Mariehamn.daylight.short=EEST -Europe/Mariehamn.generic.short=EET -Europe/Mariehamn.standard.short=EET -Europe/Minsk.daylight.short=FEST -Europe/Minsk.generic.short=FET -Europe/Minsk.standard.short=FET -Europe/Monaco.daylight.short=CEST -Europe/Monaco.generic.short=CET -Europe/Monaco.standard.short=CET -Europe/Moscow.daylight.short=MSD -Europe/Moscow.generic.short=MT -Europe/Moscow.standard.short=MSK -Europe/Nicosia.daylight.short=EEST -Europe/Nicosia.generic.short=EET -Europe/Nicosia.standard.short=EET -Europe/Oslo.daylight.short=CEST -Europe/Oslo.generic.short=CET -Europe/Oslo.standard.short=CET -Europe/Paris.daylight.short=CEST -Europe/Paris.generic.short=CET -Europe/Paris.standard.short=CET -Europe/Podgorica.daylight.short=CEST -Europe/Podgorica.generic.short=CET -Europe/Podgorica.standard.short=CET -Europe/Prague.daylight.short=CEST -Europe/Prague.generic.short=CET -Europe/Prague.standard.short=CET -Europe/Riga.daylight.short=EEST -Europe/Riga.generic.short=EET -Europe/Riga.standard.short=EET -Europe/Rome.daylight.short=CEST -Europe/Rome.generic.short=CET -Europe/Rome.standard.short=CET -Europe/Samara.daylight.short=SAMST -Europe/Samara.generic.short=SAMT -Europe/Samara.standard.short=SAMT -Europe/San_Marino.daylight.short=CEST -Europe/San_Marino.generic.short=CET -Europe/San_Marino.standard.short=CET -Europe/Sarajevo.daylight.short=CEST -Europe/Sarajevo.generic.short=CET -Europe/Sarajevo.standard.short=CET -Europe/Simferopol.daylight.short=EEST -Europe/Simferopol.generic.short=EET -Europe/Simferopol.standard.short=EET -Europe/Skopje.daylight.short=CEST -Europe/Skopje.generic.short=CET -Europe/Skopje.standard.short=CET -Europe/Sofia.daylight.short=EEST -Europe/Sofia.generic.short=EET -Europe/Sofia.standard.short=EET -Europe/Stockholm.daylight.short=CEST -Europe/Stockholm.generic.short=CET -Europe/Stockholm.standard.short=CET -Europe/Tallinn.daylight.short=EEST -Europe/Tallinn.generic.short=EET -Europe/Tallinn.standard.short=EET -Europe/Tirane.daylight.short=CEST -Europe/Tirane.generic.short=CET -Europe/Tirane.standard.short=CET -Europe/Tiraspol.daylight.short=EEST -Europe/Tiraspol.generic.short=EET -Europe/Tiraspol.standard.short=EET -Europe/Uzhgorod.daylight.short=EEST -Europe/Uzhgorod.generic.short=EET -Europe/Uzhgorod.standard.short=EET -Europe/Vaduz.daylight.short=CEST -Europe/Vaduz.generic.short=CET -Europe/Vaduz.standard.short=CET -Europe/Vatican.daylight.short=CEST -Europe/Vatican.generic.short=CET -Europe/Vatican.standard.short=CET -Europe/Vienna.daylight.short=CEST -Europe/Vienna.generic.short=CET -Europe/Vienna.standard.short=CET -Europe/Vilnius.daylight.short=EEST -Europe/Vilnius.generic.short=EET -Europe/Vilnius.standard.short=EET -Europe/Volgograd.daylight.short=VOLST -Europe/Volgograd.generic.short=VOLT -Europe/Volgograd.standard.short=VOLT -Europe/Warsaw.daylight.short=CEST -Europe/Warsaw.generic.short=CET -Europe/Warsaw.standard.short=CET -Europe/Zagreb.daylight.short=CEST -Europe/Zagreb.generic.short=CET -Europe/Zagreb.standard.short=CET -Europe/Zaporozhye.daylight.short=EEST -Europe/Zaporozhye.generic.short=EET -Europe/Zaporozhye.standard.short=EET -Europe/Zurich.daylight.short=CEST -Europe/Zurich.generic.short=CET -Europe/Zurich.standard.short=CET -GB.daylight.short=BST -GB-Eire.daylight.short=BST -GB-Eire.generic.short=BT -GB-Eire.standard.short=GMT -GB.generic.short=BT -GB.standard.short=GMT -GMT.daylight.short=GMT -GMT.generic.short=GMT -GMT.standard.short=GMT -Greenwich.daylight.short=GMT -Greenwich.generic.short=GMT -Greenwich.standard.short=GMT -Hongkong.daylight.short=HKST -Hongkong.generic.short=HKT -Hongkong.standard.short=HKT -HST.daylight.short=HDT -HST.generic.short=HT -HST.standard.short=HST -Iceland.daylight.short=GMT -Iceland.generic.short=GMT -Iceland.standard.short=GMT -IET.daylight.short=EDT -IET.generic.short=ET -IET.standard.short=EST -Indian/Antananarivo.daylight.short=EAST -Indian/Antananarivo.generic.short=EAT -Indian/Antananarivo.standard.short=EAT -Indian/Chagos.daylight.short=IOST -Indian/Chagos.generic.short=IOT -Indian/Chagos.standard.short=IOT -Indian/Christmas.daylight.short=CXST -Indian/Christmas.generic.short=CIT -Indian/Christmas.standard.short=CXT -Indian/Cocos.daylight.short=CCST -Indian/Cocos.generic.short=CCT -Indian/Cocos.standard.short=CCT -Indian/Comoro.daylight.short=EAST -Indian/Comoro.generic.short=EAT -Indian/Comoro.standard.short=EAT -Indian/Kerguelen.daylight.short=TFST -Indian/Kerguelen.generic.short=TFT -Indian/Kerguelen.standard.short=TFT -Indian/Mahe.daylight.short=SCST -Indian/Mahe.generic.short=SCT -Indian/Mahe.standard.short=SCT -Indian/Maldives.daylight.short=MVST -Indian/Maldives.generic.short=MVT -Indian/Maldives.standard.short=MVT -Indian/Mauritius.daylight.short=MUST -Indian/Mauritius.generic.short=MUT -Indian/Mauritius.standard.short=MUT -Indian/Mayotte.daylight.short=EAST -Indian/Mayotte.generic.short=EAT -Indian/Mayotte.standard.short=EAT -Indian/Reunion.daylight.short=REST -Indian/Reunion.generic.short=RET -Indian/Reunion.standard.short=RET -Iran.daylight.short=IRDT -Iran.generic.short=IRT -Iran.standard.short=IRST -Israel.daylight.short=IDT -Israel.generic.short=IT -Israel.standard.short=IST -IST.daylight.short=IDT -IST.generic.short=IT -IST.standard.short=IST -Jamaica.daylight.short=EDT -Jamaica.generic.short=ET -Jamaica.standard.short=EST -Japan.daylight.short=JDT -Japan.generic.short=JT -Japan.standard.short=JST -JST.daylight.short=JDT -JST.generic.short=JT -JST.standard.short=JST -Kwajalein.daylight.short=MHST -Kwajalein.generic.short=MHT -Kwajalein.standard.short=MHT -Libya.daylight.short=EEST -Libya.generic.short=EET -Libya.standard.short=EET -MET.daylight.short=MEST -MET.generic.short=MET -MET.standard.short=MET -Mexico/BajaNorte.daylight.short=PDT -Mexico/BajaNorte.generic.short=PT -Mexico/BajaNorte.standard.short=PST -Mexico/BajaSur.daylight.short=MDT -Mexico/BajaSur.generic.short=MT -Mexico/BajaSur.standard.short=MST -Mexico/General.daylight.short=CDT -Mexico/General.generic.short=CT -Mexico/General.standard.short=CST -MIT.daylight.short=WSDT -MIT.generic.short=WST -MIT.standard.short=WST -MST7MDT.daylight.short=MDT -MST7MDT.generic.short=MT -MST7MDT.standard.short=MST -MST.daylight.short=MDT -MST.generic.short=MT -MST.standard.short=MST -Navajo.daylight.short=MDT -Navajo.generic.short=MT -Navajo.standard.short=MST -NET.daylight.short=AMST -NET.generic.short=AMT -NET.standard.short=AMT -NST.daylight.short=NZDT -NST.generic.short=NZT -NST.standard.short=NZST -NZ-CHAT.daylight.short=CHADT -NZ-CHAT.generic.short=CHAT -NZ-CHAT.standard.short=CHAST -NZ.daylight.short=NZDT -NZ.generic.short=NZT -NZ.standard.short=NZST -Pacific/Apia.daylight.short=WSDT -Pacific/Apia.generic.short=WST -Pacific/Apia.standard.short=WST -Pacific/Auckland.daylight.short=NZDT -Pacific/Auckland.generic.short=NZT -Pacific/Auckland.standard.short=NZST -Pacific/Chatham.daylight.short=CHADT -Pacific/Chatham.generic.short=CHAT -Pacific/Chatham.standard.short=CHAST -Pacific/Chuuk.daylight.short=CHUST -Pacific/Chuuk.generic.short=CHUT -Pacific/Chuuk.standard.short=CHUT -Pacific/Easter.daylight.short=EASST -Pacific/Easter.generic.short=EAST -Pacific/Easter.standard.short=EAST -Pacific/Efate.daylight.short=VUST -Pacific/Efate.generic.short=VUT -Pacific/Efate.standard.short=VUT -Pacific/Enderbury.daylight.short=PHOST -Pacific/Enderbury.generic.short=PHOT -Pacific/Enderbury.standard.short=PHOT -Pacific/Fakaofo.daylight.short=TKST -Pacific/Fakaofo.generic.short=TKT -Pacific/Fakaofo.standard.short=TKT -Pacific/Fiji.daylight.short=FJST -Pacific/Fiji.generic.short=FJT -Pacific/Fiji.standard.short=FJT -Pacific/Funafuti.daylight.short=TVST -Pacific/Funafuti.generic.short=TVT -Pacific/Funafuti.standard.short=TVT -Pacific/Galapagos.daylight.short=GALST -Pacific/Galapagos.generic.short=GALT -Pacific/Galapagos.standard.short=GALT -Pacific/Gambier.daylight.short=GAMST -Pacific/Gambier.generic.short=GAMT -Pacific/Gambier.standard.short=GAMT -Pacific/Guadalcanal.daylight.short=SBST -Pacific/Guadalcanal.generic.short=SBT -Pacific/Guadalcanal.standard.short=SBT -Pacific/Guam.daylight.short=ChDT -Pacific/Guam.generic.short=ChT -Pacific/Guam.standard.short=ChST -Pacific/Honolulu.daylight.short=HDT -Pacific/Honolulu.generic.short=HT -Pacific/Honolulu.standard.short=HST -Pacific/Johnston.daylight.short=HDT -Pacific/Johnston.generic.short=HT -Pacific/Johnston.standard.short=HST -Pacific/Kiritimati.daylight.short=LINST -Pacific/Kiritimati.generic.short=LINT -Pacific/Kiritimati.standard.short=LINT -Pacific/Kosrae.daylight.short=KOSST -Pacific/Kosrae.generic.short=KOST -Pacific/Kosrae.standard.short=KOST -Pacific/Kwajalein.daylight.short=MHST -Pacific/Kwajalein.generic.short=MHT -Pacific/Kwajalein.standard.short=MHT -Pacific/Majuro.daylight.short=MHST -Pacific/Majuro.generic.short=MHT -Pacific/Majuro.standard.short=MHT -Pacific/Marquesas.daylight.short=MARST -Pacific/Marquesas.generic.short=MART -Pacific/Marquesas.standard.short=MART -Pacific/Midway.daylight.short=SDT -Pacific/Midway.generic.short=ST -Pacific/Midway.standard.short=SST -Pacific/Nauru.daylight.short=NRST -Pacific/Nauru.generic.short=NRT -Pacific/Nauru.standard.short=NRT -Pacific/Niue.daylight.short=NUST -Pacific/Niue.generic.short=NUT -Pacific/Niue.standard.short=NUT -Pacific/Norfolk.daylight.short=NFST -Pacific/Norfolk.generic.short=NFT -Pacific/Norfolk.standard.short=NFT -Pacific/Noumea.daylight.short=NCST -Pacific/Noumea.generic.short=NCT -Pacific/Noumea.standard.short=NCT -Pacific/Pago_Pago.daylight.short=SDT -Pacific/Pago_Pago.generic.short=ST -Pacific/Pago_Pago.standard.short=SST -Pacific/Palau.daylight.short=PWST -Pacific/Palau.generic.short=PWT -Pacific/Palau.standard.short=PWT -Pacific/Pitcairn.daylight.short=PDT -Pacific/Pitcairn.generic.short=PT -Pacific/Pitcairn.standard.short=PST -Pacific/Pohnpei.daylight.short=PONST -Pacific/Pohnpei.generic.short=PONT -Pacific/Pohnpei.standard.short=PONT -Pacific/Ponape.daylight.short=PONST -Pacific/Ponape.generic.short=PONT -Pacific/Ponape.standard.short=PONT -Pacific/Port_Moresby.daylight.short=PGST -Pacific/Port_Moresby.generic.short=PGT -Pacific/Port_Moresby.standard.short=PGT -Pacific/Rarotonga.daylight.short=CKHST -Pacific/Rarotonga.generic.short=CKT -Pacific/Rarotonga.standard.short=CKT -Pacific/Saipan.daylight.short=ChDT -Pacific/Saipan.generic.short=ChT -Pacific/Saipan.standard.short=ChST -Pacific/Samoa.daylight.short=SDT -Pacific/Samoa.generic.short=ST -Pacific/Samoa.standard.short=SST -Pacific/Tahiti.daylight.short=TAHST -Pacific/Tahiti.generic.short=TAHT -Pacific/Tahiti.standard.short=TAHT -Pacific/Tarawa.daylight.short=GILST -Pacific/Tarawa.generic.short=GILT -Pacific/Tarawa.standard.short=GILT -Pacific/Tongatapu.daylight.short=TOST -Pacific/Tongatapu.generic.short=TOT -Pacific/Tongatapu.standard.short=TOT -Pacific/Truk.daylight.short=CHUST -Pacific/Truk.generic.short=CHUT -Pacific/Truk.standard.short=CHUT -Pacific/Wake.daylight.short=WAKST -Pacific/Wake.generic.short=WAKT -Pacific/Wake.standard.short=WAKT -Pacific/Wallis.daylight.short=WFST -Pacific/Wallis.generic.short=WFT -Pacific/Wallis.standard.short=WFT -Pacific/Yap.daylight.short=CHUST -Pacific/Yap.generic.short=CHUT -Pacific/Yap.standard.short=CHUT -PLT.daylight.short=PKST -PLT.generic.short=PKT -PLT.standard.short=PKT -PNT.daylight.short=MDT -PNT.generic.short=MT -PNT.standard.short=MST -Poland.daylight.short=CEST -Poland.generic.short=CET -Poland.standard.short=CET -Portugal.daylight.short=WEST -Portugal.generic.short=WET -Portugal.standard.short=WET -PRC.daylight.short=CDT -PRC.generic.short=CT -PRC.standard.short=CST -PRT.daylight.short=ADT -PRT.generic.short=AT -PRT.standard.short=AST -PST8PDT.daylight.short=PDT -PST8PDT.generic.short=PT -PST8PDT.standard.short=PST -PST.daylight.short=PDT -PST.generic.short=PT -PST.standard.short=PST -ROK.daylight.short=KDT -ROK.generic.short=KT -ROK.standard.short=KST -Singapore.daylight.short=SGST -Singapore.generic.short=SGT -Singapore.standard.short=SGT -SST.daylight.short=SBST -SST.generic.short=SBT -SST.standard.short=SBT -SystemV/AST4ADT.daylight.short=ADT -SystemV/AST4ADT.generic.short=AT -SystemV/AST4ADT.standard.short=AST -SystemV/AST4.daylight.short=ADT -SystemV/AST4.generic.short=AT -SystemV/AST4.standard.short=AST -SystemV/CST6CDT.daylight.short=CDT -SystemV/CST6CDT.generic.short=CT -SystemV/CST6CDT.standard.short=CST -SystemV/CST6.daylight.short=CDT -SystemV/CST6.generic.short=CT -SystemV/CST6.standard.short=CST -SystemV/EST5.daylight.short=EDT -SystemV/EST5EDT.daylight.short=EDT -SystemV/EST5EDT.generic.short=ET -SystemV/EST5EDT.standard.short=EST -SystemV/EST5.generic.short=ET -SystemV/EST5.standard.short=EST -SystemV/HST10.daylight.short=HDT -SystemV/HST10.generic.short=HT -SystemV/HST10.standard.short=HST -SystemV/MST7.daylight.short=MDT -SystemV/MST7.generic.short=MT -SystemV/MST7MDT.daylight.short=MDT -SystemV/MST7MDT.generic.short=MT -SystemV/MST7MDT.standard.short=MST -SystemV/MST7.standard.short=MST -SystemV/PST8.daylight.short=PDT -SystemV/PST8.generic.short=PT -SystemV/PST8PDT.daylight.short=PDT -SystemV/PST8PDT.generic.short=PT -SystemV/PST8PDT.standard.short=PST -SystemV/PST8.standard.short=PST -SystemV/YST9.daylight.short=AKDT -SystemV/YST9.generic.short=AKT -SystemV/YST9.standard.short=AKST -SystemV/YST9YDT.daylight.short=AKDT -SystemV/YST9YDT.generic.short=AKT -SystemV/YST9YDT.standard.short=AKST -Turkey.daylight.short=EEST -Turkey.generic.short=EET -Turkey.standard.short=EET -UCT.daylight.short=UTC -UCT.generic.short=UTC -UCT.standard.short=UTC -Universal.daylight.short=UTC -Universal.generic.short=UTC -Universal.standard.short=UTC -US/Alaska.daylight.short=AKDT -US/Alaska.generic.short=AKT -US/Alaska.standard.short=AKST -US/Aleutian.daylight.short=HADT -US/Aleutian.generic.short=HAT -US/Aleutian.standard.short=HAST -US/Arizona.daylight.short=MDT -US/Arizona.generic.short=MT -US/Arizona.standard.short=MST -US/Central.daylight.short=CDT -US/Central.generic.short=CT -US/Central.standard.short=CST -US/Eastern.daylight.short=EDT -US/Eastern.generic.short=ET -US/Eastern.standard.short=EST -US/East-Indiana.daylight.short=EDT -US/East-Indiana.generic.short=ET -US/East-Indiana.standard.short=EST -US/Hawaii.daylight.short=HDT -US/Hawaii.generic.short=HT -US/Hawaii.standard.short=HST -US/Indiana-Starke.daylight.short=CDT -US/Indiana-Starke.generic.short=CT -US/Indiana-Starke.standard.short=CST -US/Michigan.daylight.short=EDT -US/Michigan.generic.short=ET -US/Michigan.standard.short=EST -US/Mountain.daylight.short=MDT -US/Mountain.generic.short=MT -US/Mountain.standard.short=MST -US/Pacific.daylight.short=PDT -US/Pacific.generic.short=PT -US/Pacific-New.daylight.short=PDT -US/Pacific-New.generic.short=PT -US/Pacific-New.standard.short=PST -US/Pacific.standard.short=PST -US/Samoa.daylight.short=SDT -US/Samoa.generic.short=ST -US/Samoa.standard.short=SST -UTC.daylight.short=UTC -UTC.generic.short=UTC -UTC.standard.short=UTC -VST.daylight.short=ICST -VST.generic.short=ICT -VST.standard.short=ICT -WET.daylight.short=WEST -WET.generic.short=WET -WET.standard.short=WET -W-SU.daylight.short=MSD -W-SU.generic.short=MT -W-SU.standard.short=MSK -Zulu.daylight.short=UTC -Zulu.generic.short=UTC -Zulu.standard.short=UTC From 91796b96b90d19cbde241ada875a8fcc999b31a6 Mon Sep 17 00:00:00 2001 From: Peter Levart Date: Thu, 30 Jan 2014 15:36:04 +0100 Subject: [PATCH 101/158] 8022321: java/lang/ref/OOMEInReferenceHandler.java fails intermittently Preload/preinitialize InterruptedException and Cleaner classes and catch OOME from instanceof operator in ReferenceHandler Reviewed-by: dholmes, mchung, srikchan --- .../classes/java/lang/ref/Reference.java | 75 ++++++++++++------- 1 file changed, 47 insertions(+), 28 deletions(-) diff --git a/jdk/src/share/classes/java/lang/ref/Reference.java b/jdk/src/share/classes/java/lang/ref/Reference.java index 42d2ba97814..49f68d145f4 100644 --- a/jdk/src/share/classes/java/lang/ref/Reference.java +++ b/jdk/src/share/classes/java/lang/ref/Reference.java @@ -111,7 +111,7 @@ public abstract class Reference { * therefore critical that any code holding this lock complete as quickly * as possible, allocate no new objects, and avoid calling user code. */ - static private class Lock { }; + static private class Lock { } private static Lock lock = new Lock(); @@ -126,6 +126,22 @@ public abstract class Reference { */ private static class ReferenceHandler extends Thread { + private static void ensureClassInitialized(Class clazz) { + try { + Class.forName(clazz.getName(), true, clazz.getClassLoader()); + } catch (ClassNotFoundException e) { + throw (Error) new NoClassDefFoundError(e.getMessage()).initCause(e); + } + } + + static { + // pre-load and initialize InterruptedException and Cleaner classes + // so that we don't get into trouble later in the run loop if there's + // memory shortage while loading/initializing them lazily. + ensureClassInitialized(InterruptedException.class); + ensureClassInitialized(Cleaner.class); + } + ReferenceHandler(ThreadGroup g, String name) { super(g, name); } @@ -133,37 +149,40 @@ public abstract class Reference { public void run() { for (;;) { Reference r; - synchronized (lock) { - if (pending != null) { - r = pending; - pending = r.discovered; - r.discovered = null; - } else { - // The waiting on the lock may cause an OOME because it may try to allocate - // exception objects, so also catch OOME here to avoid silent exit of the - // reference handler thread. - // - // Explicitly define the order of the two exceptions we catch here - // when waiting for the lock. - // - // We do not want to try to potentially load the InterruptedException class - // (which would be done if this was its first use, and InterruptedException - // were checked first) in this situation. - // - // This may lead to the VM not ever trying to load the InterruptedException - // class again. - try { - try { - lock.wait(); - } catch (OutOfMemoryError x) { } - } catch (InterruptedException x) { } - continue; + Cleaner c; + try { + synchronized (lock) { + if (pending != null) { + r = pending; + // 'instanceof' might throw OutOfMemoryError sometimes + // so do this before un-linking 'r' from the 'pending' chain... + c = r instanceof Cleaner ? (Cleaner) r : null; + // unlink 'r' from 'pending' chain + pending = r.discovered; + r.discovered = null; + } else { + // The waiting on the lock may cause an OutOfMemoryError + // because it may try to allocate exception objects. + lock.wait(); + continue; + } } + } catch (OutOfMemoryError x) { + // Give other threads CPU time so they hopefully drop some live references + // and GC reclaims some space. + // Also prevent CPU intensive spinning in case 'r instanceof Cleaner' above + // persistently throws OOME for some time... + Thread.yield(); + // retry + continue; + } catch (InterruptedException x) { + // retry + continue; } // Fast path for cleaners - if (r instanceof Cleaner) { - ((Cleaner)r).clean(); + if (c != null) { + c.clean(); continue; } From 01e48af83f551e51fe684c0290e4ca5b97b94d37 Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Thu, 30 Jan 2014 09:15:13 -0800 Subject: [PATCH 102/158] 8033221: Fix serial lint warnings in sun.swing.* Reviewed-by: alexsch --- .../sun/swing/AbstractFilterComboBoxModel.java | 3 ++- .../share/classes/sun/swing/BakedArrayList.java | 3 ++- jdk/src/share/classes/sun/swing/FilePane.java | 15 +++++++++++++-- .../classes/sun/swing/ImageIconUIResource.java | 3 ++- .../classes/sun/swing/JLightweightFrame.java | 4 +++- .../classes/sun/swing/PrintColorUIResource.java | 3 ++- .../share/classes/sun/swing/PrintingStatus.java | 3 ++- .../share/classes/sun/swing/WindowsPlacesBar.java | 3 ++- .../classes/sun/swing/icon/SortArrowIcon.java | 3 ++- .../sun/swing/plaf/synth/SynthFileChooserUI.java | 4 +++- .../swing/plaf/synth/SynthFileChooserUIImpl.java | 7 ++++++- .../swing/plaf/windows/ClassicSortArrowIcon.java | 3 ++- .../table/DefaultTableCellHeaderRenderer.java | 4 +++- .../sun/swing/text/TextComponentPrintable.java | 3 ++- 14 files changed, 46 insertions(+), 15 deletions(-) diff --git a/jdk/src/share/classes/sun/swing/AbstractFilterComboBoxModel.java b/jdk/src/share/classes/sun/swing/AbstractFilterComboBoxModel.java index 355d3ca89db..fb7c9d100b2 100644 --- a/jdk/src/share/classes/sun/swing/AbstractFilterComboBoxModel.java +++ b/jdk/src/share/classes/sun/swing/AbstractFilterComboBoxModel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, 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,6 +34,7 @@ import java.beans.PropertyChangeListener; /** * Data model for a type-face selection combo-box. */ +@SuppressWarnings("serial") // JDK-implementation class public abstract class AbstractFilterComboBoxModel extends AbstractListModel implements ComboBoxModel, PropertyChangeListener { diff --git a/jdk/src/share/classes/sun/swing/BakedArrayList.java b/jdk/src/share/classes/sun/swing/BakedArrayList.java index f689104b716..0d4670878db 100644 --- a/jdk/src/share/classes/sun/swing/BakedArrayList.java +++ b/jdk/src/share/classes/sun/swing/BakedArrayList.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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,6 +43,7 @@ import java.util.*; * * @author Scott Violet */ +@SuppressWarnings("serial") // JDK-implementation class public class BakedArrayList extends ArrayList { /** * The cached hashCode. diff --git a/jdk/src/share/classes/sun/swing/FilePane.java b/jdk/src/share/classes/sun/swing/FilePane.java index 44aedab3d28..9b21815469d 100644 --- a/jdk/src/share/classes/sun/swing/FilePane.java +++ b/jdk/src/share/classes/sun/swing/FilePane.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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,6 +58,7 @@ import sun.awt.shell.*; * * @author Leif Samuelsson */ +@SuppressWarnings("serial") // JDK-implementation class public class FilePane extends JPanel implements PropertyChangeListener { // Constants for actions. These are used for the actions' ACTION_COMMAND_KEY // and as keys in the action maps for FilePane and the corresponding UI classes @@ -391,6 +392,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { firePropertyChange("viewType", oldValue, viewType); } + @SuppressWarnings("serial") // JDK-implementation class class ViewTypeAction extends AbstractAction { private int viewType; @@ -470,6 +472,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { */ public Action[] getActions() { if (actions == null) { + @SuppressWarnings("serial") // JDK-implementation class class FilePaneAction extends AbstractAction { FilePaneAction(String name) { this(name, name); @@ -577,6 +580,8 @@ public class FilePane extends JPanel implements PropertyChangeListener { public JPanel createList() { JPanel p = new JPanel(new BorderLayout()); final JFileChooser fileChooser = getFileChooser(); + + @SuppressWarnings("serial") // anonymous class final JList list = new JList() { public int getNextMatch(String prefix, int startIndex, Position.Bias bias) { ListModel model = getModel(); @@ -651,6 +656,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { /** * This model allows for sorting JList */ + @SuppressWarnings("serial") // JDK-implementation class private class SortableListModel extends AbstractListModel implements TableModelListener, RowSorterListener { @@ -684,6 +690,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { return detailsTableModel; } + @SuppressWarnings("serial") // JDK-implementation class class DetailsTableModel extends AbstractTableModel implements ListDataListener { JFileChooser chooser; BasicDirectoryModel directoryModel; @@ -1003,6 +1010,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { return tableCellEditor; } + @SuppressWarnings("serial") // JDK-implementation class private class DetailsTableCellEditor extends DefaultCellEditor { private final JTextField tf; @@ -1025,7 +1033,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { } } - + @SuppressWarnings("serial") // JDK-implementation class class DetailsTableCellRenderer extends DefaultTableCellRenderer { JFileChooser chooser; DateFormat df; @@ -1129,6 +1137,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { JPanel p = new JPanel(new BorderLayout()); + @SuppressWarnings("serial") // anonymous class final JTable detailsTable = new JTable(getDetailsTableModel()) { // Handle Escape key events here protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed) { @@ -1447,6 +1456,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { protected Action newFolderAction; + @SuppressWarnings("serial") // anonymous class inside public Action getNewFolderAction() { if (!readOnly && newFolderAction == null) { newFolderAction = new AbstractAction(newFolderActionLabelText) { @@ -1479,6 +1489,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { return newFolderAction; } + @SuppressWarnings("serial") // JDK-implementation class protected class FileRenderer extends DefaultListCellRenderer { public Component getListCellRendererComponent(JList list, Object value, diff --git a/jdk/src/share/classes/sun/swing/ImageIconUIResource.java b/jdk/src/share/classes/sun/swing/ImageIconUIResource.java index 75906cac6a6..6ecf32379eb 100644 --- a/jdk/src/share/classes/sun/swing/ImageIconUIResource.java +++ b/jdk/src/share/classes/sun/swing/ImageIconUIResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,7 @@ import java.awt.Image; * @author Shannon Hickey * */ +@SuppressWarnings("serial") // JDK-implementation class public class ImageIconUIResource extends ImageIcon implements UIResource { /** diff --git a/jdk/src/share/classes/sun/swing/JLightweightFrame.java b/jdk/src/share/classes/sun/swing/JLightweightFrame.java index dfba20fae2c..f94cdbc46ca 100644 --- a/jdk/src/share/classes/sun/swing/JLightweightFrame.java +++ b/jdk/src/share/classes/sun/swing/JLightweightFrame.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, 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 @@ -64,6 +64,7 @@ import sun.security.action.GetPropertyAction; * @author Artem Ananiev * @author Anton Tarasov */ +@SuppressWarnings("serial") // JDK-implementation class public final class JLightweightFrame extends LightweightFrame implements RootPaneContainer { private final JRootPane rootPane = new JRootPane(); @@ -209,6 +210,7 @@ public final class JLightweightFrame extends LightweightFrame implements RootPan } } + @SuppressWarnings("serial") // anonymous class inside private void initInterior() { contentPane = new JPanel() { @Override diff --git a/jdk/src/share/classes/sun/swing/PrintColorUIResource.java b/jdk/src/share/classes/sun/swing/PrintColorUIResource.java index 93d6d18fc7e..9669be85465 100644 --- a/jdk/src/share/classes/sun/swing/PrintColorUIResource.java +++ b/jdk/src/share/classes/sun/swing/PrintColorUIResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2014, 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,6 +36,7 @@ import javax.swing.plaf.ColorUIResource; * @author Shannon Hickey * */ +@SuppressWarnings("serial") // JDK-implementation class public class PrintColorUIResource extends ColorUIResource { /** The color to use during printing */ diff --git a/jdk/src/share/classes/sun/swing/PrintingStatus.java b/jdk/src/share/classes/sun/swing/PrintingStatus.java index d5b7aee900c..0dd01a4593b 100644 --- a/jdk/src/share/classes/sun/swing/PrintingStatus.java +++ b/jdk/src/share/classes/sun/swing/PrintingStatus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, 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 @@ -62,6 +62,7 @@ public class PrintingStatus { private final AtomicBoolean isAborted = new AtomicBoolean(false); // the action that will abort printing + @SuppressWarnings("serial") // anonymous class private final Action abortAction = new AbstractAction() { public void actionPerformed(ActionEvent ae) { if (!isAborted.get()) { diff --git a/jdk/src/share/classes/sun/swing/WindowsPlacesBar.java b/jdk/src/share/classes/sun/swing/WindowsPlacesBar.java index 8b033ca3e7f..994f70029ec 100644 --- a/jdk/src/share/classes/sun/swing/WindowsPlacesBar.java +++ b/jdk/src/share/classes/sun/swing/WindowsPlacesBar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -47,6 +47,7 @@ import sun.awt.OSInfo; * * @author Leif Samuelsson */ +@SuppressWarnings("serial") // JDK-implementation class public class WindowsPlacesBar extends JToolBar implements ActionListener, PropertyChangeListener { JFileChooser fc; diff --git a/jdk/src/share/classes/sun/swing/icon/SortArrowIcon.java b/jdk/src/share/classes/sun/swing/icon/SortArrowIcon.java index 7aac1159910..54a0238640c 100644 --- a/jdk/src/share/classes/sun/swing/icon/SortArrowIcon.java +++ b/jdk/src/share/classes/sun/swing/icon/SortArrowIcon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, 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,6 +36,7 @@ import javax.swing.plaf.UIResource; * Sorting icon. * */ +@SuppressWarnings("serial") // JDK-implementation class public class SortArrowIcon implements Icon, UIResource, Serializable { // Height of the arrow, the width is ARROW_HEIGHT private static final int ARROW_HEIGHT = 5; diff --git a/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUI.java b/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUI.java index 085a9999dc3..1f93fa7fc24 100644 --- a/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUI.java +++ b/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -303,6 +303,7 @@ public abstract class SynthFileChooserUI extends BasicFileChooserUI implements /** * Responds to a File Name completion request (e.g. Tab) */ + @SuppressWarnings("serial") // JDK-implementation class private class FileNameCompletionAction extends AbstractAction { protected FileNameCompletionAction() { super("fileNameCompletion"); @@ -538,6 +539,7 @@ public abstract class SynthFileChooserUI extends BasicFileChooserUI implements public void clearIconCache() { } // Copied as SynthBorder is package private in synth + @SuppressWarnings("serial") // JDK-implementation clas private class UIBorder extends AbstractBorder implements UIResource { private Insets _insets; UIBorder(Insets insets) { diff --git a/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java b/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java index bd7c9b4371e..a933377d995 100644 --- a/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java +++ b/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -190,6 +190,7 @@ public class SynthFileChooserUIImpl extends SynthFileChooserUI { readOnly = UIManager.getBoolean("FileChooser.readOnly"); } + @SuppressWarnings("serial") // anonymous classes inside public void installComponents(JFileChooser fc) { super.installComponents(fc); @@ -734,6 +735,7 @@ public class SynthFileChooserUIImpl extends SynthFileChooserUI { /** * Data model for a type-face selection combo-box. */ + @SuppressWarnings("serial") // JDK-implementation class protected class DirectoryComboBoxModel extends AbstractListModel implements ComboBoxModel { Vector directories = new Vector(); int[] depths = null; @@ -863,6 +865,7 @@ public class SynthFileChooserUIImpl extends SynthFileChooserUI { /** * Acts when DirectoryComboBox has changed the selected item. */ + @SuppressWarnings("serial") // JDK-implementation class protected class DirectoryComboBoxAction extends AbstractAction { protected DirectoryComboBoxAction() { super("DirectoryComboBoxAction"); @@ -923,6 +926,7 @@ public class SynthFileChooserUIImpl extends SynthFileChooserUI { /** * Data model for a type-face selection combo-box. */ + @SuppressWarnings("serial") // JDK-implementation class protected class FilterComboBoxModel extends AbstractFilterComboBoxModel { protected JFileChooser getFileChooser() { return SynthFileChooserUIImpl.this.getFileChooser(); @@ -1012,6 +1016,7 @@ public class SynthFileChooserUIImpl extends SynthFileChooserUI { } } + @SuppressWarnings("serial") // JDK-implementation class private class AlignedLabel extends JLabel { private AlignedLabel[] group; private int maxWidth = 0; diff --git a/jdk/src/share/classes/sun/swing/plaf/windows/ClassicSortArrowIcon.java b/jdk/src/share/classes/sun/swing/plaf/windows/ClassicSortArrowIcon.java index 3931ef8135c..6430a71f06e 100644 --- a/jdk/src/share/classes/sun/swing/plaf/windows/ClassicSortArrowIcon.java +++ b/jdk/src/share/classes/sun/swing/plaf/windows/ClassicSortArrowIcon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, 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,6 +36,7 @@ import javax.swing.plaf.UIResource; * Classic sort icons. * */ +@SuppressWarnings("serial") // JDK-implementation class public class ClassicSortArrowIcon implements Icon, UIResource, Serializable{ private static final int X_OFFSET = 9; private boolean ascending; diff --git a/jdk/src/share/classes/sun/swing/table/DefaultTableCellHeaderRenderer.java b/jdk/src/share/classes/sun/swing/table/DefaultTableCellHeaderRenderer.java index 68aada7d758..8aa945d166e 100644 --- a/jdk/src/share/classes/sun/swing/table/DefaultTableCellHeaderRenderer.java +++ b/jdk/src/share/classes/sun/swing/table/DefaultTableCellHeaderRenderer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, 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,6 +39,7 @@ import javax.swing.plaf.UIResource; import javax.swing.border.Border; import javax.swing.table.*; +@SuppressWarnings("serial") // JDK-implementation class public class DefaultTableCellHeaderRenderer extends DefaultTableCellRenderer implements UIResource { private boolean horizontalTextPositionSet; @@ -187,6 +188,7 @@ public class DefaultTableCellHeaderRenderer extends DefaultTableCellRenderer return new Point(x, y); } + @SuppressWarnings("serial") // JDK-implementation class private class EmptyIcon implements Icon, Serializable { int width = 0; int height = 0; diff --git a/jdk/src/share/classes/sun/swing/text/TextComponentPrintable.java b/jdk/src/share/classes/sun/swing/text/TextComponentPrintable.java index bf4d3f59b31..63d3c5890dd 100644 --- a/jdk/src/share/classes/sun/swing/text/TextComponentPrintable.java +++ b/jdk/src/share/classes/sun/swing/text/TextComponentPrintable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, 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 @@ -324,6 +324,7 @@ public class TextComponentPrintable implements CountingPrintable { } } } + @SuppressWarnings("serial") // anonymous class inside private JTextComponent createPrintShellOnEDT(final JTextComponent textComponent) { assert SwingUtilities.isEventDispatchThread(); From 4399edf7b26d2e2a04998b584780ebfa5b726001 Mon Sep 17 00:00:00 2001 From: Stuart Marks Date: Thu, 30 Jan 2014 15:12:38 -0800 Subject: [PATCH 103/158] 8023541: Race condition in rmid initialization Reviewed-by: alanb, dfuchs, dholmes, plevart, psandoz, tyan --- .../classes/sun/rmi/server/Activation.java | 40 +++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/jdk/src/share/classes/sun/rmi/server/Activation.java b/jdk/src/share/classes/sun/rmi/server/Activation.java index 3098bb0562c..1cd509f2c0e 100644 --- a/jdk/src/share/classes/sun/rmi/server/Activation.java +++ b/jdk/src/share/classes/sun/rmi/server/Activation.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -299,7 +299,7 @@ public class Activation implements Serializable { private static final String NAME = ActivationSystem.class.getName(); private static final long serialVersionUID = 4877330021609408794L; - private final ActivationSystem systemStub; + private ActivationSystem systemStub = null; SystemRegistryImpl(int port, RMIClientSocketFactory csf, @@ -308,7 +308,39 @@ public class Activation implements Serializable { throws RemoteException { super(port, csf, ssf); - this.systemStub = systemStub; + assert systemStub != null; + synchronized (this) { + this.systemStub = systemStub; + notifyAll(); + } + } + + /** + * Waits for systemStub to be initialized and returns its + * initialized value. Any remote call that uses systemStub must + * call this method to get it instead of using direct field + * access. This is necessary because the super() call in the + * constructor exports this object before systemStub is initialized + * (see JDK-8023541), allowing remote calls to come in during this + * time. We can't use checkShutdown() like other nested classes + * because this is a static class. + */ + private synchronized ActivationSystem getSystemStub() { + boolean interrupted = false; + + while (systemStub == null) { + try { + wait(); + } catch (InterruptedException ie) { + interrupted = true; + } + } + + if (interrupted) { + Thread.currentThread().interrupt(); + } + + return systemStub; } /** @@ -321,7 +353,7 @@ public class Activation implements Serializable { throws RemoteException, NotBoundException { if (name.equals(NAME)) { - return systemStub; + return getSystemStub(); } else { return super.lookup(name); } From 5569aab6865e74ba34e735f12598a7a5798bebe1 Mon Sep 17 00:00:00 2001 From: Andrey Nazarov Date: Fri, 31 Jan 2014 11:56:47 +0100 Subject: [PATCH 104/158] 8032025: Update repeating annotations demo Reviewed-by: jfranck --- .../PluginChecker/src/checker/Device.java | 66 ++++++++ .../PluginChecker/src/checker/Kettle.xml | 57 +++++++ .../PluginChecker/src/checker/Module.java | 49 ++++++ .../src/checker/PluginChecker.java | 145 ++++++++++++++++++ .../PluginChecker/src/checker/Require.java | 81 ++++++++++ .../src/checker/RequireContainer.java | 51 ++++++ .../Plugins/src/plugins/BoilerPlugin.java | 83 ++++++++++ .../src/plugins/ExtendedBoilerPlugin.java | 75 +++++++++ .../Plugins/src/plugins/TimerPlugin.java | 71 +++++++++ .../src/PositiveIntegerSupplier.java | 59 +++++++ .../Validator/src/SupplierValidator.java | 66 ++++++++ .../annotations/Validator/src/Validate.java | 74 +++++++++ .../annotations/Validator/src/Validator.java | 99 ++++++++++++ jdk/src/share/sample/annotations/index.html | 67 ++++++++ 14 files changed, 1043 insertions(+) create mode 100644 jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Device.java create mode 100644 jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Kettle.xml create mode 100644 jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Module.java create mode 100644 jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/PluginChecker.java create mode 100644 jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Require.java create mode 100644 jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/RequireContainer.java create mode 100644 jdk/src/share/sample/annotations/DependencyChecker/Plugins/src/plugins/BoilerPlugin.java create mode 100644 jdk/src/share/sample/annotations/DependencyChecker/Plugins/src/plugins/ExtendedBoilerPlugin.java create mode 100644 jdk/src/share/sample/annotations/DependencyChecker/Plugins/src/plugins/TimerPlugin.java create mode 100644 jdk/src/share/sample/annotations/Validator/src/PositiveIntegerSupplier.java create mode 100644 jdk/src/share/sample/annotations/Validator/src/SupplierValidator.java create mode 100644 jdk/src/share/sample/annotations/Validator/src/Validate.java create mode 100644 jdk/src/share/sample/annotations/Validator/src/Validator.java create mode 100644 jdk/src/share/sample/annotations/index.html diff --git a/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Device.java b/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Device.java new file mode 100644 index 00000000000..f4fd2c50a05 --- /dev/null +++ b/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Device.java @@ -0,0 +1,66 @@ +package checker; + +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation and proper error handling, might not be present in + * this sample code. + */ + + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import java.util.Collections; +import java.util.EnumMap; +import java.util.Map; + +/** + * Represents the device configuration. The values are loaded from an XML file by JAXB. + */ +@XmlRootElement +public class Device { + + @XmlElement() + private Map supportedModules = new EnumMap<>(Module.class); + + /** + * Returns map of supported modules. The map key is module. The map value is version. + * + * @return map of supported modules. + */ + public Map getSupportedModules() { + return Collections.unmodifiableMap(supportedModules); + } +} diff --git a/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Kettle.xml b/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Kettle.xml new file mode 100644 index 00000000000..2e0357d2f46 --- /dev/null +++ b/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Kettle.xml @@ -0,0 +1,57 @@ + + + + + + + DISPLAY + 2 + + + THERMOMETER + 1 + + + CLOCK + 4 + + + \ No newline at end of file diff --git a/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Module.java b/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Module.java new file mode 100644 index 00000000000..2b97b4e832d --- /dev/null +++ b/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Module.java @@ -0,0 +1,49 @@ +package checker; + +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation and proper error handling, might not be present in + * this sample code. + */ + + +/** + * Represents available modules. + */ +public enum Module { + + DISPLAY, CLOCK, THERMOMETER, HEATER, SPEAKER, GSM, LED; +} diff --git a/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/PluginChecker.java b/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/PluginChecker.java new file mode 100644 index 00000000000..6db5bae4141 --- /dev/null +++ b/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/PluginChecker.java @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation and proper error handling, might not be present in + * this sample code. + */ +package checker; + +import javax.annotation.processing.ProcessingEnvironment; +import javax.annotation.processing.RoundEnvironment; +import javax.annotation.processing.SupportedAnnotationTypes; +import javax.annotation.processing.SupportedSourceVersion; +import javax.lang.model.SourceVersion; +import javax.lang.model.element.Element; +import javax.lang.model.element.TypeElement; +import javax.tools.Diagnostic; +import javax.xml.bind.JAXBContext; +import java.io.File; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +import javax.xml.bind.JAXBException; + +/** + * Reads the device configuration from the XML file specified by -Adevice=device.xml. + * For each class in a project, checks required modules. If the device doesn't have + * the required module, then a compilation error will be shown. + */ +@SupportedAnnotationTypes("checker.RequireContainer") +@SupportedSourceVersion(SourceVersion.RELEASE_8) +public class PluginChecker extends javax.annotation.processing.AbstractProcessor { + + /** + * Name of the option to get the path to the xml with device configuration. + */ + public static final String DEVICE_OPTION = "device"; + private Device device; + + /** + * Only the device option is supported. + * + * {@inheritDoc} + */ + @Override + public Set getSupportedOptions() { + return new HashSet<>(Arrays.asList(DEVICE_OPTION)); + } + + /** + * Initializes the processor by loading the device configuration. + * + * {@inheritDoc} + */ + @Override + public synchronized void init(ProcessingEnvironment processingEnv) { + super.init(processingEnv); + try { + String deviceOption = processingEnv.getOptions().get(DEVICE_OPTION); + device = (Device) JAXBContext.newInstance(Device.class) + .createUnmarshaller().unmarshal(new File(deviceOption)); + } catch (JAXBException e) { + throw new RuntimeException( + "Please specify device by -Adevice=device.xml\n" + + e.toString(), e); + } + } + + /** + * Processes @Require annotations and checks that Device meets requirements. + * + * {@inheritDoc} + */ + @Override + public boolean process(Set annotations, + RoundEnvironment roundEnv) { + for (Element el : roundEnv.getElementsAnnotatedWith(RequireContainer.class)) { + for (Require req : el.getAnnotationsByType(Require.class)) { + //for every Require annotation checks if device has module of required version. + Integer version = device.getSupportedModules().get(req.value()); + + if (version == null + || version < req.minVersion() + || version > req.maxVersion()) { + //if module is optional then show only warning not error + if (req.optional()) { + processingEnv.getMessager() + .printMessage(Diagnostic.Kind.WARNING, + "Plugin [" + el + "] requires " + req + + "\n but device " + (version == null + ? "doesn't have such module." + + " This module is optional." + + " So plugin will work but miss" + + " some functionality" + : "has " + version + + " version of that module")); + } else { + processingEnv.getMessager() + .printMessage(Diagnostic.Kind.ERROR, + "Plugin [" + el + "] requires " + req + + "\n but device " + + (version == null + ? "doesn't have such module" + : "has " + version + + " version of that module")); + } + } + } + return true; + } + return false; + } +} diff --git a/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Require.java b/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Require.java new file mode 100644 index 00000000000..6681c2810e2 --- /dev/null +++ b/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/Require.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation and proper error handling, might not be present in + * this sample code. + */ +package checker; + +import java.lang.annotation.Repeatable; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Indicates that a plug-in depends on a module. + */ +@Retention(RetentionPolicy.CLASS) +@Repeatable(RequireContainer.class) +public @interface Require { + + /** + * Returns the required module. + * + * @return required module. + */ + Module value(); + + /** + * Returns the minimum supported version of a module. + * + * @return minimum supported version of a module. + */ + int minVersion() default 1; + + /** + * Returns the maximum supported version of a module. + * + * @return maximum supported version of a module. + */ + int maxVersion() default Integer.MAX_VALUE; + + /** + * Returns true if a module is optional. A module is optional if a system + * works without that module but is missing some functionality. Returns false if a system + * won't work without the specified module. + * + * @return true if module is optional. False otherwise. + */ + boolean optional() default false; +} diff --git a/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/RequireContainer.java b/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/RequireContainer.java new file mode 100644 index 00000000000..d18e0d523c0 --- /dev/null +++ b/jdk/src/share/sample/annotations/DependencyChecker/PluginChecker/src/checker/RequireContainer.java @@ -0,0 +1,51 @@ +package checker; + +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation and proper error handling, might not be present in + * this sample code. + */ +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * A container for the repeatable @Require annotation. + */ +@Retention(RetentionPolicy.CLASS) +public @interface RequireContainer { + + Require[] value(); +} diff --git a/jdk/src/share/sample/annotations/DependencyChecker/Plugins/src/plugins/BoilerPlugin.java b/jdk/src/share/sample/annotations/DependencyChecker/Plugins/src/plugins/BoilerPlugin.java new file mode 100644 index 00000000000..3a9d842e5b0 --- /dev/null +++ b/jdk/src/share/sample/annotations/DependencyChecker/Plugins/src/plugins/BoilerPlugin.java @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation and proper error handling, might not be present in + * this sample code. + */ +package plugins; + +import checker.Module; +import checker.Require; + +/** + * BoilerPlugin provides support for boiling water and keeping water warm. + */ +@Require(value = Module.CLOCK, maxVersion = 3) +@Require(value = Module.THERMOMETER) +@Require(value = Module.HEATER) +@Require(value = Module.LED, optional = true) //will use if present +public class BoilerPlugin { + + /** + * Heats water up to 100 degrees Celsius. + */ + public void boil() { + boil(100); + } + + /** + * Heats water up to temperature. + * + * @param temperature - desired temperature of the water in the boiler + */ + public void boil(int temperature) { + /* + * Turn on heater and wait while temperature reaches desired temperature + * in Celsius. Finally, turn off heater. + * If present, the LED light changes color according to the temperature. + */ + } + + /** + * Keeps desired temperature. + * + * @param temperature - desired temperature of the water in the boiler + * @param seconds - period of time for checking temperature in seconds + */ + public void keepWarm(int temperature, int seconds) { + //Every n seconds check temperature and warm up, if necessary. + } + +} diff --git a/jdk/src/share/sample/annotations/DependencyChecker/Plugins/src/plugins/ExtendedBoilerPlugin.java b/jdk/src/share/sample/annotations/DependencyChecker/Plugins/src/plugins/ExtendedBoilerPlugin.java new file mode 100644 index 00000000000..b7be61025a0 --- /dev/null +++ b/jdk/src/share/sample/annotations/DependencyChecker/Plugins/src/plugins/ExtendedBoilerPlugin.java @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation and proper error handling, might not be present in + * this sample code. + */ +package plugins; + +import checker.Module; +import checker.Require; +import java.util.Calendar; + +/** + * Introduces new features for BoilerPlugin. Features are boiling water by an + * SMS and boiling water by date with notification by a phone call. + */ +@Require(value = Module.SPEAKER) +@Require(value = Module.GSM, minVersion = 3) +@Require(value = Module.DISPLAY) +public class ExtendedBoilerPlugin extends BoilerPlugin { + + /** + * Boils water at the appointed time and wakes you up by a ring and phone + * call. Shows "Good morning" and a quote of the day from the Internet on the + * display. + * + * @param calendar - date and time when water should be boiled + * @param phoneNumber - phone number to call + */ + public void boilAndWakeUp(Calendar calendar, int phoneNumber) { + //implementation + } + + /** + * Boils water at the appointed time by getting an SMS of fixed format. + * Sends an SMS on finish. + * + * @param sms - text of SMS + */ + public void boilBySMS(String sms) { + //implementation + } +} diff --git a/jdk/src/share/sample/annotations/DependencyChecker/Plugins/src/plugins/TimerPlugin.java b/jdk/src/share/sample/annotations/DependencyChecker/Plugins/src/plugins/TimerPlugin.java new file mode 100644 index 00000000000..678785c5cf4 --- /dev/null +++ b/jdk/src/share/sample/annotations/DependencyChecker/Plugins/src/plugins/TimerPlugin.java @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation and proper error handling, might not be present in + * this sample code. + */ +package plugins; + +import checker.Module; +import checker.Require; + +/** + * Timer plug-in is used to support an alarm and a timer. It depends on Display and + * Clock modules. + */ +@Require(Module.DISPLAY) +@Require(value = Module.CLOCK, maxVersion = 3) +public class TimerPlugin { + + /** + * Sets timer. + * + * @param time - the remaining time. + */ + public void timer(long time) { + //start timer + //show the remaining time on display + } + + /** + * Sets alarm. + * + * @param time - the alarm time. + */ + public void alarm(long time) { + //start alarm + //show current time and alarm time on display + } +} diff --git a/jdk/src/share/sample/annotations/Validator/src/PositiveIntegerSupplier.java b/jdk/src/share/sample/annotations/Validator/src/PositiveIntegerSupplier.java new file mode 100644 index 00000000000..0a149139b53 --- /dev/null +++ b/jdk/src/share/sample/annotations/Validator/src/PositiveIntegerSupplier.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation and proper error handling, might not be present in + * this sample code. + */ +import java.util.function.Supplier; + +/** + * Supplies a positive number. + */ +@Validate(value = Validator.INTEGER_NUMBER, + description = "It's not an Integer ") +@Validate(value = Validator.POSITIVE_NUMBER, + description = "It's not a positive Number") +public class PositiveIntegerSupplier implements Supplier { + + /** + * Returns a string representation of a positive integer. + * + * @return string representation of a positive integer. + */ + @Override + public String get() { + return "20005"; //random number + } +} diff --git a/jdk/src/share/sample/annotations/Validator/src/SupplierValidator.java b/jdk/src/share/sample/annotations/Validator/src/SupplierValidator.java new file mode 100644 index 00000000000..479ac8643e1 --- /dev/null +++ b/jdk/src/share/sample/annotations/Validator/src/SupplierValidator.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation and proper error handling, might not be present in + * this sample code. + */ +import javax.xml.bind.ValidationException; +import java.util.function.Supplier; + +/** + * Validates the supplier. + */ +public class SupplierValidator { + + /** + * Validates the supplier. + * + * @param supplier - Supplier that needs to be validated. + * @return true if supplier has passed validation check. False otherwise. + */ + public static boolean validate(Supplier supplier) { + for (Validate annotation + : supplier.getClass().getAnnotationsByType(Validate.class)) { + try { + annotation.value().validate(supplier); + } catch (ValidationException e) { + System.out.println(annotation.description()); + e.printStackTrace(); + return false; + } + } + return true; + } +} diff --git a/jdk/src/share/sample/annotations/Validator/src/Validate.java b/jdk/src/share/sample/annotations/Validator/src/Validate.java new file mode 100644 index 00000000000..e0404ea9471 --- /dev/null +++ b/jdk/src/share/sample/annotations/Validator/src/Validate.java @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation and proper error handling, might not be present in + * this sample code. + */ +import java.lang.annotation.Repeatable; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Indicates that the class should be validated by the specified validator. + */ +@Retention(RetentionPolicy.RUNTIME) +@Repeatable(ValidateContainer.class) +public @interface Validate { + + /** + * Returns the validator that should validate the annotated class. + * + * @return Validator that should validate annotated class. + */ + Validator value(); + + /** + * Returns text to describe the failure of the validation check. + * + * @return text to describe the failure of the validation check. + */ + String description() default ""; +} + +/** + * A container for the repeatable @Validate annotation. + * + * @author Andrey Nazarov + */ +@Retention(RetentionPolicy.RUNTIME) +@interface ValidateContainer { + + Validate[] value(); +} diff --git a/jdk/src/share/sample/annotations/Validator/src/Validator.java b/jdk/src/share/sample/annotations/Validator/src/Validator.java new file mode 100644 index 00000000000..9e074f5a8e5 --- /dev/null +++ b/jdk/src/share/sample/annotations/Validator/src/Validator.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation and proper error handling, might not be present in + * this sample code. + */ +import javax.xml.bind.ValidationException; +import java.util.function.Supplier; + +/** + * Enum of Validator implementations. + */ +public enum Validator { + + /** + * This validator checks that the string represents an integer. + */ + INTEGER_NUMBER { + /** + * Checks that the string represents an integer. + * + * @param string - a string supplier + * @throws ValidationException if the validation check fails + */ + @Override + void validate(Supplier string) throws ValidationException { + try { + Integer.parseInt((String) string.get()); + } catch (NumberFormatException ex) { + throw new ValidationException("Error while validating " + + string.get()); + } + } + }, + /** + * This validator checks that the string represents a positive number. + */ + POSITIVE_NUMBER { + /** + * Checks that the string represents a positive number. + * + * @param string - an string supplier + * @throws ValidationException if the validation check fails + */ + @Override + void validate(Supplier string) throws ValidationException { + try { + if (Double.compare(0.0, Double.parseDouble( + (String) string.get())) > 0) { + throw new Exception(); + } + } catch (Exception ex) { + throw new ValidationException("Error while validating " + + string.get()); + } + } + }; + + /** + * Checks that the supplier is valid. + * + * @param string - a string supplier + * @throws ValidationException if validation check fails + */ + abstract void validate(Supplier string) throws ValidationException; + +} diff --git a/jdk/src/share/sample/annotations/index.html b/jdk/src/share/sample/annotations/index.html new file mode 100644 index 00000000000..804c83df441 --- /dev/null +++ b/jdk/src/share/sample/annotations/index.html @@ -0,0 +1,67 @@ + + + + Repeating Annotations Demo + + +

Repeating Annotations Demo

+ +

+ This demo shows how to use repeating annotations at runtime and at compile time. +

+ +
    +
  • Dependency checker.

    + +

    + Shows how to define repeating annotations and process them at compile time. + The problem domain is some code that performs useful operations on hardware devices. + The code relies on "modules" to be present on the devices. Applicability of the code to a particular + device is checked while compiling the code for a particular device. + A set of modules provided by a device is listed in an xml file that turns red during the compilation + phase and is compared with the required module set specified by annotations. + For instance, there is kettle with hardware modules: thermometer, display, and clock. + There is also a boiler plug-in that requires clock, thermometer, heater, and optionally an LED light. + + Build the PluginChecker annotation processor first. + Then, run javac with the annotation processor against plug-in sources using the following command:

    + + javac -cp "PluginChecker.jar" -processor checker.PluginChecker -Adevice=Kettle.xml -proc:only <source + files> + +

    + where PluginChecker.jar - path to jar file that contains PluginChecker annotation processor + class.
    + Kettle.xml - path to device descriptor Kettle.xml
    + <source files> - source files in Plugins/src +

    + For more information, see the source files. +

    + + +
  • Validator.

    + +

    + Shows how to define repeating annotations and process them at runtime. + A problem domain is code that needs to validate provided Suppliers for conformance to some criteria. + The criteria are implemented by the Validator class which is applied by using annotations that are placed in + the code whenever validation is needed. For more information, see the + source files. +

    + +

    +

    +

    + Sources: Validator/src/ +
+ + \ No newline at end of file From 7bdf4708b27ba1b8634de6554b8005073a470c40 Mon Sep 17 00:00:00 2001 From: Andrey Nazarov Date: Fri, 31 Jan 2014 11:57:12 +0100 Subject: [PATCH 105/158] 8031650: Update bulk operation demo Reviewed-by: psandoz, mduigou --- .../lambda/BulkDataOperations/index.html | 49 +++ .../BulkDataOperations/src/CSVProcessor.java | 368 ++++++++++++++++++ .../lambda/BulkDataOperations/src/Grep.java | 185 +++++++++ .../src/PasswordGenerator.java | 113 ++++++ .../lambda/BulkDataOperations/src/WC.java | 217 +++++++++++ 5 files changed, 932 insertions(+) create mode 100644 jdk/src/share/sample/lambda/BulkDataOperations/index.html create mode 100644 jdk/src/share/sample/lambda/BulkDataOperations/src/CSVProcessor.java create mode 100644 jdk/src/share/sample/lambda/BulkDataOperations/src/Grep.java create mode 100644 jdk/src/share/sample/lambda/BulkDataOperations/src/PasswordGenerator.java create mode 100644 jdk/src/share/sample/lambda/BulkDataOperations/src/WC.java diff --git a/jdk/src/share/sample/lambda/BulkDataOperations/index.html b/jdk/src/share/sample/lambda/BulkDataOperations/index.html new file mode 100644 index 00000000000..5a16695f21d --- /dev/null +++ b/jdk/src/share/sample/lambda/BulkDataOperations/index.html @@ -0,0 +1,49 @@ + + + + Bulk Data Operations Demo + + +

Bulk Data Operations Demo

+ +

+ This demo shows how to use bulk data operations with the new JDK8 + Collections API. + The demo also demonstrates new features of JDK8 such as lambda expressions + and method/constructor references. +

+ +
    +
  • CSV Processor

    + +

    + Analyzes a CSV file, finds and collects useful information, computes + different statistics. For more information, see the source file. +

    + Source: src/CSVProcessor.java +
  • Grep

    + +

    + Behaves like the standard Linux tool Grep. For more information, see + the source file. +

    + Source: src/Grep.java +
  • PasswordGenerator

    + +

    + Produces a password of desired length. For more information see + source file. +

    + Source: src/PasswordGenerator.java +
  • WC

    + +

    + Counts newlines, words, characters, and the maximum line length of a + text file. For more information, see the source + file. +

    + Source: src/WC.java +
+ + \ No newline at end of file diff --git a/jdk/src/share/sample/lambda/BulkDataOperations/src/CSVProcessor.java b/jdk/src/share/sample/lambda/BulkDataOperations/src/CSVProcessor.java new file mode 100644 index 00000000000..ded9030209d --- /dev/null +++ b/jdk/src/share/sample/lambda/BulkDataOperations/src/CSVProcessor.java @@ -0,0 +1,368 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation, and proper error handling, might not be present in + * this sample code. + */ + +import java.io.BufferedReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.*; +import java.util.function.*; +import java.util.regex.Pattern; +import java.util.stream.Collector; +import java.util.stream.Collectors; + +import static java.lang.Double.parseDouble; +import static java.util.stream.Collectors.*; + +/** + * CSVProcessor is a tool for processing CSV files. There are several + * command-line options. Consult the {@link #printUsageAndExit} method for + * instructions and command line parameters. This sample shows examples of the + * following features: + *
    + *
  • Lambda and bulk operations. Working with streams: map(...), filter(...), + * sorted(...) methods. The collect(...) method with different collectors: + * Collectors.maxBy(...), Collectors.minBy(...), Collectors.toList(), + * Collectors.toCollection(...), Collectors.groupingBy(...), + * Collectors.toDoubleSummaryStatistics(...), and a custom Collector.
  • + *
  • Static method reference for printing values.
  • + *
  • Try-with-resources feature for closing files.
  • + *
  • Switch by String feature.
  • + *
  • Other new APIs: Pattern.asPredicate(), BinaryOperator + * BufferedReader.lines(), Collection.forEach(...), Comparator.comparing(...), + * Comparator.reversed(), Arrays.stream(...).
  • + *
+ * + */ +public class CSVProcessor { + + //Number of characters that may be read + private static final int READ_AHEAD_LIMIT = 100_000_000; + + /** + * The main method for the CSVProcessor program. Run the program with an + * empty argument list to see possible arguments. + * + * @param args the argument list for CSVProcessor. + */ + public static void main(String[] args) { + if (args.length < 2) { + printUsageAndExit(); + } + try (BufferedReader br = new BufferedReader( + Files.newBufferedReader(Paths.get(args[args.length - 1])))) { + //Assume that the first line contains column names. + List header = Arrays.stream(br.readLine().split(",")) + .map(String::trim).collect(toList()); + //Calculate an index of the column in question. + int column = getColumnNumber(header, args[1]); + switch (args[0]) { + case "sort": + verifyArgumentNumber(args, 4); + //Define the sort order. + boolean isAsc; + switch (args[2].toUpperCase()) { + case "ASC": + isAsc = true; + break; + case "DESC": + isAsc = false; + break; + default: + printUsageAndExit("Illegal argument" + args[2]); + return;//Should not be reached. + } + /* + * Create a comparator that compares lines by comparing + * values in the specified column. + */ + Comparator cmp + = Comparator.comparing(str -> getCell(str, column), + String.CASE_INSENSITIVE_ORDER); + /* + * sorted(...) is used to sort records. + * forEach(...) is used to output sorted records. + */ + br.lines().sorted(isAsc ? cmp : cmp.reversed()) + .forEach(System.out::println); + break; + case "search": + verifyArgumentNumber(args, 4); + /* + * Records are filtered by a regex. + * forEach(...) is used to output filtered records. + */ + Predicate pattern + = Pattern.compile(args[2]).asPredicate(); + br.lines().filter(str -> pattern.test(getCell(str, column))) + .forEach(System.out::println); + break; + case "groupby": + verifyArgumentNumber(args, 3); + /* + * Group lines by values in the column with collect(...), and + * print with forEach(...) for every distinct value within + * the column. + */ + br.lines().collect( + Collectors.groupingBy(str -> getCell(str, column), + toCollection(TreeSet::new))) + .forEach((str, set) -> { + System.out.println(str + ":"); + set.forEach(System.out::println); + }); + break; + case "stat": + verifyArgumentNumber(args, 3); + + /* + * BufferedReader will be read several times. + * Mark this point to return here after each pass. + * BufferedReader will be read right after the headers line + * because it is already read. + */ + br.mark(READ_AHEAD_LIMIT); + + /* + * Statistics can be collected by a custom collector in one + * pass. One pass is preferable. + */ + System.out.println( + br.lines().collect(new Statistics(column))); + + /* + * Alternatively, statistics can be collected + * by a built-in API in several passes. + * This method demonstrates how separate operations can be + * implemented using a built-in API. + */ + br.reset(); + statInSeveralPasses(br, column); + break; + default: + printUsageAndExit("Illegal argument" + args[0]); + } + } catch (IOException e) { + printUsageAndExit(e.toString()); + } + } + + private static void statInSeveralPasses(BufferedReader br, int column) + throws IOException { + System.out.println("#-----Statistics in several passes-------#"); + //Create a comparator to compare records by the column. + Comparator comparator + = Comparator.comparing( + (String str) -> parseDouble(getCell(str, column))); + //Find max record by using Collectors.maxBy(...) + System.out.println( + "Max: " + br.lines().collect(maxBy(comparator)).get()); + br.reset(); + //Find min record by using Collectors.minBy(...) + System.out.println( + "Min: " + br.lines().collect(minBy(comparator)).get()); + br.reset(); + //Compute the average value and sum with + //Collectors.toDoubleSummaryStatistics(...) + DoubleSummaryStatistics doubleSummaryStatistics + = br.lines().collect(summarizingDouble( + str -> parseDouble(getCell(str, column)))); + System.out.println("Average: " + doubleSummaryStatistics.getAverage()); + System.out.println("Sum: " + doubleSummaryStatistics.getSum()); + } + + private static void verifyArgumentNumber(String[] args, int n) { + if (args.length != n) { + printUsageAndExit("Expected " + n + " arguments but was " + + args.length); + } + } + + private static int getColumnNumber(List header, String name) { + int column = header.indexOf(name); + if (column == -1) { + printUsageAndExit("There is no column with name " + name); + } + return column; + } + + private static String getCell(String record, int column) { + return record.split(",")[column].trim(); + } + + private static void printUsageAndExit(String... str) { + System.out.println("Usages:"); + + System.out.println("CSVProcessor sort COLUMN_NAME ASC|DESC FILE"); + System.out.println("Sort lines by column COLUMN_NAME in CSV FILE\n"); + + System.out.println("CSVProcessor search COLUMN_NAME REGEX FILE"); + System.out.println("Search for REGEX in column COLUMN_NAME in CSV FILE\n"); + + System.out.println("CSVProcessor groupby COLUMN_NAME FILE"); + System.out.println("Split lines into different groups according to column " + + "COLUMN_NAME value\n"); + + System.out.println("CSVProcessor stat COLUMN_NAME FILE"); + System.out.println("Compute max/min/average/sum statistics by column " + + "COLUMN_NAME\n"); + + Arrays.asList(str).forEach(System.err::println); + System.exit(1); + } + + /* + * This is a custom implementation of the Collector interface. + * Statistics are objects gather max,min,sum,average statistics. + */ + private static class Statistics + implements Collector { + + + /* + * This implementation does not need to be thread safe because + * the parallel implementation of + * {@link java.util.stream.Stream#collect Stream.collect()} + * provides the necessary partitioning and isolation for safe parallel + * execution. + */ + private String maxRecord; + private String minRecord; + + private double sum; + private int lineCount; + private final BinaryOperator maxOperator; + private final BinaryOperator minOperator; + private final int column; + + public Statistics(int column) { + this.column = column; + Comparator cmp = Comparator.comparing( + (String str) -> parseDouble(getCell(str, column))); + maxOperator = BinaryOperator.maxBy(cmp); + minOperator = BinaryOperator.minBy(cmp); + } + + /* + * Process line. + */ + public Statistics accept(String line) { + maxRecord = maxRecord == null + ? line : maxOperator.apply(maxRecord, line); + minRecord = minRecord == null + ? line : minOperator.apply(minRecord, line); + + sum += parseDouble(getCell(line, column)); + lineCount++; + return this; + } + + + /* + * Merge two Statistics. + */ + public Statistics combine(Statistics stat) { + maxRecord = maxOperator.apply(maxRecord, stat.getMaxRecord()); + minRecord = minOperator.apply(minRecord, stat.getMinRecord()); + sum += stat.getSum(); + lineCount += stat.getLineCount(); + return this; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("#------Statistics------#\n"); + sb.append("Max: ").append(getMaxRecord()).append("\n"); + sb.append("Min: ").append(getMinRecord()).append("\n"); + sb.append("Sum = ").append(getSum()).append("\n"); + sb.append("Average = ").append(average()).append("\n"); + sb.append("#------Statistics------#\n"); + return sb.toString(); + } + + @Override + public Supplier supplier() { + return () -> new Statistics(column); + } + + @Override + public BiConsumer accumulator() { + return Statistics::accept; + } + + @Override + public BinaryOperator combiner() { + return Statistics::combine; + + } + + @Override + public Function finisher() { + return stat -> stat; + } + + @Override + public Set characteristics() { + return EnumSet.of(Characteristics.IDENTITY_FINISH); + } + + private String getMaxRecord() { + return maxRecord; + } + + private String getMinRecord() { + return minRecord; + } + + private double getSum() { + return sum; + } + + private double average() { + return sum / lineCount; + } + + private int getLineCount() { + return lineCount; + } + + } + +} diff --git a/jdk/src/share/sample/lambda/BulkDataOperations/src/Grep.java b/jdk/src/share/sample/lambda/BulkDataOperations/src/Grep.java new file mode 100644 index 00000000000..cb4bdf765cb --- /dev/null +++ b/jdk/src/share/sample/lambda/BulkDataOperations/src/Grep.java @@ -0,0 +1,185 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation, and proper error handling, might not be present in + * this sample code. + */ + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.List; +import java.util.regex.Pattern; +import java.util.stream.Stream; + +import static java.util.stream.Collectors.toList; + +/** + * Grep prints lines matching a regex. See {@link #printUsageAndExit(String...)} + * method for instructions and command line parameters. This sample shows + * examples of using next features: + *
    + *
  • Lambda and bulk operations. Working with streams: + * map(...),filter(...),flatMap(...),limit(...) methods.
  • + *
  • Static method reference for printing values.
  • + *
  • New Collections API forEach(...) method.
  • + *
  • Try-with-resources feature.
  • + *
  • new Files.walk(...), Files.lines(...) API.
  • + *
  • Streams that need to be closed.
  • + *
+ * + */ +public class Grep { + + private static void printUsageAndExit(String... str) { + System.out.println("Usage: " + Grep.class.getSimpleName() + + " [OPTION]... PATTERN FILE..."); + System.out.println("Search for PATTERN in each FILE. " + + "If FILE is a directory then whole file tree of the directory" + + " will be processed."); + System.out.println("Example: grep -m 100 'hello world' menu.h main.c"); + System.out.println("Options:"); + System.out.println(" -m NUM: stop analysis after NUM matches"); + Arrays.asList(str).forEach(System.err::println); + System.exit(1); + } + + /** + * The main method for the Grep program. Run program with empty argument + * list to see possible arguments. + * + * @param args the argument list for Grep. + * @throws java.io.IOException If an I/O error occurs. + */ + public static void main(String[] args) throws IOException { + long maxCount = Long.MAX_VALUE; + if (args.length < 2) { + printUsageAndExit(); + } + int i = 0; + //parse OPTIONS + while (args[i].startsWith("-")) { + switch (args[i]) { + case "-m": + try { + maxCount = Long.parseLong(args[++i]); + } catch (NumberFormatException ex) { + printUsageAndExit(ex.toString()); + } + break; + default: + printUsageAndExit("Unexpected option " + args[i]); + } + i++; + } + //parse PATTERN + Pattern pattern = Pattern.compile(args[i++]); + if (i == args.length) { + printUsageAndExit("There are no files for input"); + } + + try { + /* + * First obtain the list of all paths. + * For a small number of arguments there is little to be gained + * by producing this list in parallel. For one argument + * there will be no parallelism. + * + * File names are converted to paths. If a path is a directory then + * Stream is populated with whole file tree of the directory by + * flatMap() method. Files are filtered from directories. + */ + List files = Arrays.stream(args, i, args.length) + .map(Paths::get) + // flatMap will ensure each I/O-based stream will be closed + .flatMap(Grep::getPathStream) + .filter(Files::isRegularFile) + .collect(toList()); + /* + * Then operate on that list in parallel. + * This is likely to give a more even distribution of work for + * parallel execution. + * + * Lines are extracted from files. Lines are filtered by pattern. + * Stream is limited by number of matches. Each remaining string is + * displayed in std output by method reference System.out::println. + */ + files.parallelStream() + // flatMap will ensure each I/O-based stream will be closed + .flatMap(Grep::path2Lines) + .filter(pattern.asPredicate()) + .limit(maxCount) + .forEachOrdered(System.out::println); + } catch (UncheckedIOException ioe) { + printUsageAndExit(ioe.toString()); + } + } + + /** + * Flattens file system hierarchy into a stream. This code is not inlined + * for the reason of Files.walk() throwing a checked IOException that must + * be caught. + * + * @param path - the file or directory + * @return Whole file tree starting from path, a stream with one element - + * the path itself - if it is a file. + */ + private static Stream getPathStream(Path path) { + try { + return Files.walk(path); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } + + /** + * Produces a stream of lines from a file. The result is a stream in order + * to close it later. This code is not inlined for the reason of + * Files.lines() throwing a checked IOException that must be caught. + * + * @param path - the file to read + * @return stream of lines from the file + */ + private static Stream path2Lines(Path path) { + try { + return Files.lines(path); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } +} diff --git a/jdk/src/share/sample/lambda/BulkDataOperations/src/PasswordGenerator.java b/jdk/src/share/sample/lambda/BulkDataOperations/src/PasswordGenerator.java new file mode 100644 index 00000000000..e4677985929 --- /dev/null +++ b/jdk/src/share/sample/lambda/BulkDataOperations/src/PasswordGenerator.java @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation, and proper error handling, might not be present in + * this sample code. + */ + +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.IntStream; + +/** + * Generates password of desired length. See {@link #usage} method + * for instructions and command line parameters. This sample shows usages of: + *
    + *
  • Method references.
  • + *
  • Lambda and bulk operations. A stream of random integers is mapped to + * chars, limited by desired length and printed in standard output as password + * string.
  • + *
+ * + */ +public class PasswordGenerator { + + private static void usage() { + System.out.println("Usage: PasswordGenerator LENGTH"); + System.out.println( + "Password Generator produces password of desired LENGTH."); + } + + private static final List PASSWORD_CHARS = new ArrayList<>(); + + //Valid symbols. + static { + IntStream.rangeClosed('0', '9').forEach(PASSWORD_CHARS::add); // 0-9 + IntStream.rangeClosed('A', 'Z').forEach(PASSWORD_CHARS::add); // A-Z + IntStream.rangeClosed('a', 'z').forEach(PASSWORD_CHARS::add); // a-z + } + + /** + * The main method for the PasswordGenerator program. Run program with empty + * argument list to see possible arguments. + * + * @param args the argument list for PasswordGenerator. + */ + public static void main(String[] args) { + + if (args.length != 1) { + usage(); + return; + } + + long passwordLength; + try { + passwordLength = Long.parseLong(args[0]); + if (passwordLength < 1) { + printMessageAndUsage("Length has to be positive"); + return; + } + } catch (NumberFormatException ex) { + printMessageAndUsage("Unexpected number format" + args[0]); + return; + } + /* + * Stream of random integers is created containing Integer values + * in range from 0 to PASSWORD_CHARS.size(). + * The stream is limited by passwordLength. + * Valid chars are selected by generated index. + */ + new SecureRandom().ints(passwordLength, 0, PASSWORD_CHARS.size()) + .map(PASSWORD_CHARS::get) + .forEach(i -> System.out.print((char) i)); + } + + private static void printMessageAndUsage(String message) { + System.err.println(message); + usage(); + } + +} diff --git a/jdk/src/share/sample/lambda/BulkDataOperations/src/WC.java b/jdk/src/share/sample/lambda/BulkDataOperations/src/WC.java new file mode 100644 index 00000000000..c724f159a19 --- /dev/null +++ b/jdk/src/share/sample/lambda/BulkDataOperations/src/WC.java @@ -0,0 +1,217 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation, and proper error handling, might not be present in + * this sample code. + */ + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.util.function.Consumer; +import java.util.regex.Pattern; + +/** + * WC - Prints newline, word, and character counts for each file. See + * the {@link #usage} method for instructions and command line parameters. This + * sample shows usages of: + *
    + *
  • Lambda and bulk operations. Shows how to create a custom collector to + * gather custom statistics. Implements the collection of statistics using a + * built-in API.
  • + *
  • Constructor reference.
  • + *
  • Try-with-resources feature.
  • + *
+ * + */ +public class WC { + + //The number of characters that may be read. + private static final int READ_AHEAD_LIMIT = 100_000_000; + + //The pattern for splitting strings by non word characters to get words. + private static final Pattern nonWordPattern = Pattern.compile("\\W"); + + /** + * The main method for the WC program. Run the program with an empty + * argument list to see possible arguments. + * + * @param args the argument list for WC + * @throws java.io.IOException If an input exception occurred. + */ + public static void main(String[] args) throws IOException { + + if (args.length != 1) { + usage(); + return; + } + + try (BufferedReader reader = new BufferedReader( + new FileReader(args[0]))) { + reader.mark(READ_AHEAD_LIMIT); + /* + * Statistics can be gathered in four passes using a built-in API. + * The method demonstrates how separate operations can be + * implemented using a built-in API. + */ + collectInFourPasses(reader); + /* + * Usage of several passes to collect data is not the best way. + * Statistics can be gathered by a custom collector in one pass. + */ + reader.reset(); + collectInOnePass(reader); + } catch (FileNotFoundException e) { + usage(); + System.err.println(e); + } + } + + private static void collectInFourPasses(BufferedReader reader) + throws IOException { + /* + * Input is read as a stream of lines by lines(). + * Every line is turned into a stream of chars by the flatMapToInt(...) + * method. + * Length of the stream is counted by count(). + */ + System.out.println("Character count = " + + reader.lines().flatMapToInt(String::chars).count()); + /* + * Input is read as a stream of lines by lines(). + * Every line is split by nonWordPattern into words by flatMap(...) + * method. + * Empty lines are removed by the filter(...) method. + * Length of the stream is counted by count(). + */ + reader.reset(); + System.out.println("Word count = " + + reader.lines() + .flatMap(nonWordPattern::splitAsStream) + .filter(str -> !str.isEmpty()).count()); + + reader.reset(); + System.out.println("Newline count = " + reader.lines().count()); + /* + * Input is read as a stream of lines by lines(). + * Every line is mapped to its length. + * Maximum of the lengths is calculated. + */ + reader.reset(); + System.out.println("Max line length = " + + reader.lines().mapToInt(String::length).max().getAsInt()); + } + + private static void collectInOnePass(BufferedReader reader) { + /* + * The collect() method has three parameters: + * The first parameter is the {@code WCStatistic} constructor reference. + * collect() will create {@code WCStatistics} instances, where + * statistics will be aggregated. + * The second parameter shows how {@code WCStatistics} will process + * String. + * The third parameter shows how to merge two {@code WCStatistic} + * instances. + * + * Also {@code Collector} can be used, which would be more reusable + * solution. See {@code CSVProcessor} example for how {@code Collector} + * can be implemented. + * + * Note that the any performance increase when going parallel will + * depend on the size of the input (lines) and the cost per-element. + */ + WCStatistics wc = reader.lines().parallel() + .collect(WCStatistics::new, + WCStatistics::accept, + WCStatistics::combine); + System.out.println(wc); + } + + private static void usage() { + System.out.println("Usage: " + WC.class.getSimpleName() + " FILE"); + System.out.println("Print newline, word," + + " character counts and max line length for FILE."); + } + + private static class WCStatistics implements Consumer { + /* + * @implNote This implementation does not need to be thread safe because + * the parallel implementation of + * {@link java.util.stream.Stream#collect Stream.collect()} + * provides the necessary partitioning and isolation for safe parallel + * execution. + */ + + private long characterCount; + private long lineCount; + private long wordCount; + private long maxLineLength; + + + /* + * Processes line. + */ + @Override + public void accept(String line) { + characterCount += line.length(); + lineCount++; + wordCount += nonWordPattern.splitAsStream(line) + .filter(str -> !str.isEmpty()).count(); + maxLineLength = Math.max(maxLineLength, line.length()); + } + + /* + * Merges two WCStatistics. + */ + public void combine(WCStatistics stat) { + wordCount += stat.wordCount; + lineCount += stat.lineCount; + characterCount += stat.characterCount; + maxLineLength = Math.max(maxLineLength, stat.maxLineLength); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("#------WCStatistic------#\n"); + sb.append("Character count = ").append(characterCount).append('\n'); + sb.append("Word count = ").append(wordCount).append('\n'); + sb.append("Newline count = ").append(lineCount).append('\n'); + sb.append("Max line length = ").append(maxLineLength).append('\n'); + return sb.toString(); + } + } +} From a7acbb1cb79a7250ab6f0ebd45bc512e4d08f135 Mon Sep 17 00:00:00 2001 From: Andrey Nazarov Date: Fri, 31 Jan 2014 11:57:38 +0100 Subject: [PATCH 106/158] 8032020: Update try-with-resources demo Reviewed-by: darcy, alanb, smarks --- .../sample/try-with-resources/index.html | 36 +++++ .../src/CustomAutoCloseableSample.java | 137 ++++++++++++++++++ .../sample/try-with-resources/src/Unzip.java | 83 +++++++++++ .../sample/try-with-resources/src/ZipCat.java | 83 +++++++++++ 4 files changed, 339 insertions(+) create mode 100644 jdk/src/share/sample/try-with-resources/index.html create mode 100644 jdk/src/share/sample/try-with-resources/src/CustomAutoCloseableSample.java create mode 100644 jdk/src/share/sample/try-with-resources/src/Unzip.java create mode 100644 jdk/src/share/sample/try-with-resources/src/ZipCat.java diff --git a/jdk/src/share/sample/try-with-resources/index.html b/jdk/src/share/sample/try-with-resources/index.html new file mode 100644 index 00000000000..ff237d89ce6 --- /dev/null +++ b/jdk/src/share/sample/try-with-resources/index.html @@ -0,0 +1,36 @@ + + + + + Try-with-Resources Feature Demo + + +

Try-with-Resources Feature Demo

+ +

+ This demo shows how to use the try-with-resources feature introduced in JDK7. +

+ +
    +
  • Custom AutoCloseable.

    + +

    + Shows how to use a custom resource with the try-with-resources construct. + For more information, see the source file. +

    + Source: src/CustomAutoCloseableSample.java + +
  • Unzip

    + +

    + Extracts archived files. For more information, see the source file. +

    + Source: src/Unzip.java +
  • ZipCat

    + +

    Prints data about a specified file from an archive. For more information, see the source file.

    + Source: src/ZipCat.java + +
+ + \ No newline at end of file diff --git a/jdk/src/share/sample/try-with-resources/src/CustomAutoCloseableSample.java b/jdk/src/share/sample/try-with-resources/src/CustomAutoCloseableSample.java new file mode 100644 index 00000000000..9bbe09aa1ed --- /dev/null +++ b/jdk/src/share/sample/try-with-resources/src/CustomAutoCloseableSample.java @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation, and proper error handling, might not be present in + * this sample code. + */ + +import java.io.BufferedOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +/** + * This sample demonstrates the ability to create custom resource that + * implements the {@code AutoCloseable} interface. This resource can be used in + * the try-with-resources construct. + */ +public class CustomAutoCloseableSample { + + /** + * The main method for the CustomAutoCloseableSample program. + * + * @param args is not used. + */ + public static void main(String[] args) { + /* + * TeeStream will be closed automatically after the try block. + */ + try (TeeStream teeStream = new TeeStream(System.out, Paths.get("out.txt")); + PrintStream out = new PrintStream(teeStream)) { + out.print("Hello, world"); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + /** + * Passes the output through to the specified output stream while copying it into a file. + * The TeeStream functionality is similar to the Unix tee utility. + * TeeStream implements AutoCloseable interface. See OutputStream for details. + */ + public static class TeeStream extends OutputStream { + + private final OutputStream fileStream; + private final OutputStream outputStream; + + /** + * Creates a TeeStream. + * + * @param outputStream an output stream. + * @param outputFile an path to file. + * @throws IOException If an I/O error occurs. + */ + public TeeStream(OutputStream outputStream, Path outputFile) throws IOException { + this.fileStream = new BufferedOutputStream(Files.newOutputStream(outputFile)); + this.outputStream = outputStream; + } + + /** + * Writes the specified byte to the specified output stream + * and copies it to the file. + * + * @param b the byte to be written. + * @throws IOException If an I/O error occurs. + */ + @Override + public void write(int b) throws IOException { + fileStream.write(b); + outputStream.write(b); + } + + /** + * Flushes this output stream and forces any buffered output bytes + * to be written out. + * The flush method of TeeStream flushes + * the specified output stream and the file output stream. + * + * @throws IOException if an I/O error occurs. + */ + @Override + public void flush() throws IOException { + outputStream.flush(); + fileStream.flush(); + } + + /** + * Closes underlying streams and resources. + * The external output stream won't be closed. + * This method is the member of AutoCloseable interface and + * it will be invoked automatically after the try-with-resources block. + * + * @throws IOException If an I/O error occurs. + */ + @Override + public void close() throws IOException { + try (OutputStream file = fileStream) { + flush(); + } + } + } +} diff --git a/jdk/src/share/sample/try-with-resources/src/Unzip.java b/jdk/src/share/sample/try-with-resources/src/Unzip.java new file mode 100644 index 00000000000..d75eba52c78 --- /dev/null +++ b/jdk/src/share/sample/try-with-resources/src/Unzip.java @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation, and proper error handling, might not be present in + * this sample code. + */ + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.nio.file.*; + +import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; + +/** + * Extract (unzip) a file to the current directory. + */ +public class Unzip { + + /** + * The main method for the Unzip program. Run the program with an empty + * argument list to see possible arguments. + * + * @param args the argument list for {@code Unzip}. + */ + public static void main(String[] args) { + if (args.length != 1) { + System.out.println("Usage: Unzip zipfile"); + } + final Path destDir = Paths.get("."); + /* + * Create AutoCloseable FileSystem. It will be closed automatically + * after the try block. + */ + try (FileSystem zipFileSystem = FileSystems.newFileSystem(Paths.get(args[0]), null)) { + + Path top = zipFileSystem.getPath("/"); + Files.walk(top).skip(1).forEach(file -> { + Path target = destDir.resolve(top.relativize(file).toString()); + System.out.println("Extracting " + target); + try { + Files.copy(file, target, REPLACE_EXISTING); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + }); + } catch (UncheckedIOException | IOException e) { + e.printStackTrace(); + System.exit(1); + } + } +} diff --git a/jdk/src/share/sample/try-with-resources/src/ZipCat.java b/jdk/src/share/sample/try-with-resources/src/ZipCat.java new file mode 100644 index 00000000000..4bbf513a538 --- /dev/null +++ b/jdk/src/share/sample/try-with-resources/src/ZipCat.java @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This source code is provided to illustrate the usage of a given feature + * or technique and has been deliberately simplified. Additional steps + * required for a production-quality application, such as security checks, + * input validation, and proper error handling, might not be present in + * this sample code. + */ + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Paths; + +/** + * Prints data of the specified file to standard output from a zip archive. + */ +public class ZipCat { + + /** + * The main method for the ZipCat program. Run the program with an empty + * argument list to see possible arguments. + * + * @param args the argument list for ZipCat + */ + public static void main(String[] args) { + if (args.length != 2) { + System.out.println("Usage: ZipCat zipfile fileToPrint"); + } + /* + * Creates AutoCloseable FileSystem and BufferedReader. + * They will be closed automatically after the try block. + * If reader initialization fails, then zipFileSystem will be closed + * automatically. + */ + try (FileSystem zipFileSystem + = FileSystems.newFileSystem(Paths.get(args[0]),null); + InputStream input + = Files.newInputStream(zipFileSystem.getPath(args[1]))) { + byte[] buffer = new byte[1024]; + int len; + while ((len = input.read(buffer)) != -1) { + System.out.write(buffer, 0, len); + } + + } catch (IOException e) { + e.printStackTrace(); + System.exit(1); + } + } +} From 9378d4b0660391d7372f824ba184dad882d45cf1 Mon Sep 17 00:00:00 2001 From: Taras Ledkov Date: Fri, 31 Jan 2014 11:57:53 +0100 Subject: [PATCH 107/158] 8032056: Create demo to illustrate new practices of the default methods usage Reviewed-by: briangoetz, rfield, psandoz --- .../lambda/DefaultMethods/ArrayIterator.java | 118 ++++++++++++++ .../DefaultMethods/DiamondInheritance.java | 145 ++++++++++++++++++ .../lambda/DefaultMethods/Inheritance.java | 142 +++++++++++++++++ .../sample/lambda/DefaultMethods/MixIn.java | 114 ++++++++++++++ .../lambda/DefaultMethods/Reflection.java | 136 ++++++++++++++++ .../lambda/DefaultMethods/SimplestUsage.java | 91 +++++++++++ 6 files changed, 746 insertions(+) create mode 100644 jdk/src/share/sample/lambda/DefaultMethods/ArrayIterator.java create mode 100644 jdk/src/share/sample/lambda/DefaultMethods/DiamondInheritance.java create mode 100644 jdk/src/share/sample/lambda/DefaultMethods/Inheritance.java create mode 100644 jdk/src/share/sample/lambda/DefaultMethods/MixIn.java create mode 100644 jdk/src/share/sample/lambda/DefaultMethods/Reflection.java create mode 100644 jdk/src/share/sample/lambda/DefaultMethods/SimplestUsage.java diff --git a/jdk/src/share/sample/lambda/DefaultMethods/ArrayIterator.java b/jdk/src/share/sample/lambda/DefaultMethods/ArrayIterator.java new file mode 100644 index 00000000000..2eca80149b8 --- /dev/null +++ b/jdk/src/share/sample/lambda/DefaultMethods/ArrayIterator.java @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.util.Iterator; +import java.util.NoSuchElementException; + +/** + * The code sample illustrates the usage of default methods in the JDK 8. Most + * implementations of {@link Iterator} don't provide a useful + * {@link Iterator#remove()} method, however, + * they still have to implement this method to throw + * an UnsupportedOperationException. With the default method, the same + * default behavior in interface Iterator itself can be provided. + */ +public class ArrayIterator { + + /** Close the constructor because ArrayIterator is part of the utility + * class. + */ + protected ArrayIterator() { + throw new UnsupportedOperationException(); + } + + /** + * Returns an iterator that goes over the elements in the array. + * + * @param type of an array element + * @param array source array to iterate over it + * @return an iterator that goes over the elements in the array + */ + public static Iterator iterator(final E[] array) { + return new Iterator() { + /** + * Index of the current position + * + */ + private int index = 0; + + /** + * Returns the next element in the iteration + * + * @return the next element in the iteration + * @throws NoSuchElementException if the iteration has no more + * elements + */ + @Override + public boolean hasNext() { + return (index < array.length); + } + + /** + * Returns {@code true} if the iteration has more elements. (In + * other words, returns {@code true} if {@link #next} returns + * an element, rather than throwing an exception.) + * + * @return {@code true} if the iteration has more elements + */ + @Override + public E next() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + return array[index++]; + } + + /** + * This method does not need to be overwritten in JDK 8. + */ + //@Override + //public void remove() { + // throw UnsupportedOperationException( + // "Arrays don't support remove.") + //} + }; + } + + /** + * Sample usage of the ArrayIterator + * + * @param args command-line arguments + */ + public static void main(final String[] args) { + Iterator it = ArrayIterator.iterator( + new String[]{"one", "two", "three"}); + + while (it.hasNext()) { + System.out.println(it.next()); + } + } +} diff --git a/jdk/src/share/sample/lambda/DefaultMethods/DiamondInheritance.java b/jdk/src/share/sample/lambda/DefaultMethods/DiamondInheritance.java new file mode 100644 index 00000000000..9214d58a788 --- /dev/null +++ b/jdk/src/share/sample/lambda/DefaultMethods/DiamondInheritance.java @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * This sample diamond interface inheritance with default methods. + * If there's not already a unique method implementation to inherit, + * you must provide it. The inheritance diagram is similar to the following: + *
+ *                   Animal
+ *                    /   \
+ *                 Horse   Bird
+ *                    \   /
+ *                   Pegasus
+ * 
+ * + * Both {@link Horse} and {@link Bird} interfaces implements the go + * method. The {@link Pegasus} class have to overrides the + * go method. + * + * The new syntax of super-call is used here: + *
+ *     <interface_name>.super.<method>(...);
+ *     For example:  Horse.super.go();
+ * 
So, Pegasus moves like a horse. + */ +public class DiamondInheritance { + + /** + * Base interface to illustrate the diamond inheritance. + * + * @see DiamondInheritance + */ + public interface Animal { + + /** + * Return string representation of the "go" action for concrete animal + * + * @return string representation of the "go" action for concrete animal + */ + String go(); + } + + /** + * Interface to illustrate the diamond inheritance. + * + * @see DiamondInheritance + */ + public interface Horse extends Animal { + + /** + * Return string representation of the "go" action for horse + * + * @return string representation of the "go" action for horse + */ + @Override + default String go() { + return this.getClass().getSimpleName() + " walks on four legs"; + } + } + + /** + * Interface to illustrate the diamond inheritance. + * + * @see DiamondInheritance + */ + public interface Bird extends Animal { + + /** + * Return string representation of the "go" action for bird + * + * @return string representation of the "go" action for bird + */ + @Override + default String go() { + return this.getClass().getSimpleName() + " walks on two legs"; + } + + /** + * Return string representation of the "fly" action for bird + * + * @return string representation of the "fly" action for bird + */ + default String fly() { + return "I can fly"; + } + } + + /** + * Class to illustrate the diamond inheritance. Pegasus must mix horse and + * bird behavior. + * + * @see DiamondInheritance + */ + public static class Pegasus implements Horse, Bird { + + /** + * Return string representation of the "go" action for the fictitious + * creature Pegasus + * + * @return string representation of the "go" action for the fictitious + * creature Pegasus + */ + @Override + public String go() { + return Horse.super.go(); + } + } + + /** + * Illustrate the behavior of the {@link Pegasus} class + * + * @param args command line arguments + */ + public static void main(final String[] args) { + System.out.println(new Pegasus().go()); + } +} diff --git a/jdk/src/share/sample/lambda/DefaultMethods/Inheritance.java b/jdk/src/share/sample/lambda/DefaultMethods/Inheritance.java new file mode 100644 index 00000000000..961de2c24d5 --- /dev/null +++ b/jdk/src/share/sample/lambda/DefaultMethods/Inheritance.java @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * The sample illustrates rules to resolve conflicts between inheritance + * candidates with default methods. There are two simple rules: + *
    + *
  • Class wins. If the superclass has a concrete or abstract declaration of + * this method, then it is preferred over all defaults.
  • + *
  • Subtype wins. If an interface extends another interface, and both provide + * a default, then the more specific interface wins.
  • + *
+ */ +public class Inheritance { + + /** + * The behavior of an creature that can swim + */ + public interface Swimable { + + /** + * Return string representation of the swim action for a creature that + * can swim + * + * @return string representation of the swim action for a creature + * that can swim + */ + default String swim() { + return "I can swim."; + } + } + + /** + * The abstract class that overrides {@link #swim} method + */ + public abstract static class Fish implements Swimable { + + /** + * Return string representation of the swim action for a fish + * + * @return string representation of the swim action for a fish + */ + @Override + public String swim() { + return this.getClass().getSimpleName() + " swims under water"; + } + } + + /** + * This class is used for the illustration rule of 1. See the source code + * of the {@link #main} method. + *
+     *      System.out.println(new Tuna().swim()); //"Tuna swims under water" output is suspected here
+     * 
+ */ + public static class Tuna extends Fish implements Swimable { + } + + /** + * The behavior of an creature that can dive: the interface that overrides + * {@link #swim} method (subtype of {@link Swimable}) + */ + public interface Diveable extends Swimable { + + /** + * Return string representation of the swim action for a creature that + * can dive + * + * @return string representation of the swim action for a creature + * that can dive + */ + @Override + default String swim() { + return "I can swim on the surface of the water."; + } + + /** + * Return string representation of the dive action for a creature that + * can dive + * + * @return string representation of the dive action for a creature + * that can dive + */ + default String dive() { + return "I can dive."; + } + } + + /** + * This class is used for the illustration of rule 2. See the source code + * of the {@link #main} method + *
+     *      //"I can swim on the surface of the water." output is suspected here
+     *      System.out.println(new Duck().swim());
+     * 
+ */ + public static class Duck implements Swimable, Diveable { + } + + /** + * Illustrate behavior of the classes: {@link Tuna} and {@link Duck} + * + * @param args command line arguments + */ + public static void main(final String[] args) { + // Illustrates rule 1. The Fish.swim() implementation wins + //"Tuna swims under water" is output + System.out.println(new Tuna().swim()); + + // Illustrates rule 2. The Diveable.swim() implementation wins + //"I can swim on the surface of the water." is output + System.out.println(new Duck().swim()); + } +} diff --git a/jdk/src/share/sample/lambda/DefaultMethods/MixIn.java b/jdk/src/share/sample/lambda/DefaultMethods/MixIn.java new file mode 100644 index 00000000000..d9ed81dee27 --- /dev/null +++ b/jdk/src/share/sample/lambda/DefaultMethods/MixIn.java @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.io.IOException; +import java.lang.reflect.Field; + +/** + * The example illustrates how to use the default method for mixin. + * @see BuildType + * @see Debuggable + */ +public class MixIn { + + /** + * Implement this interface for a class that must be in debug print + */ + public interface Debuggable { + + /** + * Print the class name and all fields to a string. Uses reflection to + * obtain and access fields of this object. + * + * @return the string formatted like the following:
+         * State of the: <Class Name>
+         * <member name> : <value>
+         * ...
+         * 
+ */ + default String toDebugString() { + StringBuilder sb = new StringBuilder(); + sb.append("State of the: ").append( + this.getClass().getSimpleName()).append("\n"); + for (Class cls = this.getClass(); + cls != null; + cls = cls.getSuperclass()) { + for (Field f : cls.getDeclaredFields()) { + try { + f.setAccessible(true); + sb.append(f.getName()).append(" : "). + append(f.get(this)).append("\n"); + } catch (IllegalAccessException e) { + } + } + } + return sb.toString(); + } + } + + /** + * Sample exception class to demonstrate mixin. This enum inherits the + * behavior of the {@link Debuggable} + */ + public static enum BuildType implements Debuggable { + + BUILD(0, "-build"), + PLAN(0, "-plan"), + EXCLUDE(1, "-exclude"), + TOTAL(2, "-total"); + + private final int compareOrder; + private final String pathSuffix; + + private BuildType(int compareOrder, String pathSuffix) { + this.compareOrder = compareOrder; + this.pathSuffix = pathSuffix; + } + + public int getCompareOrder() { + return compareOrder; + } + + public String getPathSuffix() { + return pathSuffix; + } + } + + /** + * Illustrate the behavior of the MixClass + * + * @param args command-line arguments + * @throws java.io.IOException internal demo error + */ + public static void main(final String[] args) throws IOException { + System.out.println(BuildType.BUILD.toDebugString()); + } +} diff --git a/jdk/src/share/sample/lambda/DefaultMethods/Reflection.java b/jdk/src/share/sample/lambda/DefaultMethods/Reflection.java new file mode 100644 index 00000000000..78424a240e8 --- /dev/null +++ b/jdk/src/share/sample/lambda/DefaultMethods/Reflection.java @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.stream.Stream; + +/** + * The code sample illustrates changes in the reflection API linked + * default methods. Since Java SE 8, a new method is added into the class + * java.lang.reflect.Method, with which you can reflectively + * determine whether or not a default method provided by an interface + * (Method.isDefault()). + */ +public class Reflection { + + /** + * Base interface to illustrate the new reflection API. + * + * @see Dog + */ + public interface Animal { + + /** + * Return string representation of the eat action for Animal + * + * @return string representation of the eat action for Animal + */ + default String eat() { + return this.getClass().getSimpleName() + + " eats like an ordinary animal"; + } + + /** + * Return string representation of the sleep action for Animal + * + * @return string representation of the sleep action for Animal + */ + default String sleep() { + return this.getClass().getSimpleName() + + " sleeps like an ordinary animal"; + } + + /** + * Return string representation of the go action for Animal + * + * @return string representation of the go action for Animal + */ + String go(); + } + + /** + * Dog class to illustrate the new reflection API. You can see that: + *
    + *
  • the {@link #go} and {@link #sleep} methods are not default. + * {@link #go} is not the default implementation and the {@link #sleep} + * method implementation wins as subtype (according with {@link Inheritance} + * rule. 2)
  • + *
  • the {@link #eat} is a simple default method that is not overridden + * in this class. + *
  • + *
+ */ + public static class Dog implements Animal { + + /** + * Return string representation of the go action for Dog + * + * @return string representation of the go action for Dog + */ + @Override + public String go() { + return "Dog walks on four legs"; + } + + /** + * Return string representation of the sleep action for Dog + * + * @return string representation of the sleep action for Dog + */ + @Override + public String sleep() { + return "Dog sleeps"; + } + } + + /** + * Illustrate the usage of the method java.lang.reflect.Method.isDefault() + * + * @param args command-line arguments + * @throws NoSuchMethodException internal demo error + */ + public static void main(final String[] args) throws NoSuchMethodException { + Dog dog = new Dog(); + Stream.of(Dog.class.getMethod("eat"), Dog.class.getMethod("go"), Dog.class.getMethod("sleep")) + .forEach((m) -> { + System.out.println("Method name: " + m.getName()); + System.out.println(" isDefault: " + m.isDefault()); + System.out.print(" invoke: "); + try { + m.invoke(dog); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) { + } + System.out.println(); + }); + } +} diff --git a/jdk/src/share/sample/lambda/DefaultMethods/SimplestUsage.java b/jdk/src/share/sample/lambda/DefaultMethods/SimplestUsage.java new file mode 100644 index 00000000000..a971858f589 --- /dev/null +++ b/jdk/src/share/sample/lambda/DefaultMethods/SimplestUsage.java @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * The sample illustrates the simplest use case of the default methods. + */ +public class SimplestUsage { + + /** + * The Animal interface provides the default implementation + * of the {@link #eat} method. + */ + public interface Animal { + + /** + * Return string representation of the eat action for Animal + * + * @return string representation of the eat action for Animal + */ + default String eat() { + return this.getClass().getSimpleName() + + " eats like an ordinary animal"; + } + } + + /** + * The Dog class doesn't have its own implementation of the {@link #eat} + * method and uses the default implementation. + */ + public static class Dog implements Animal { + } + + /** + * The Mosquito class implements {@link #eat} method, its own implementation + * overrides the default implementation. + * + */ + public static class Mosquito implements Animal { + + /** + * Return string representation of the eat action for Mosquito + * + * @return string representation of the eat action for Mosquito + */ + @Override + public String eat() { + return "Mosquito consumes blood"; + } + } + + /** + * Illustrate behavior of the classes: {@link Dog} and {@link Mosquito} + * + * @param args command-line arguments + */ + public static void main(String[] args) { + // "Dog eats like an ordinary animal" is output + System.out.println(new Dog().eat()); + + // "Mosquito consumes blood" is output + System.out.println(new Mosquito().eat()); + } +} From e3f4248c427de75f5d7fa953e283946cf0745079 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Gr=C3=B6nlund?= Date: Fri, 31 Jan 2014 12:06:34 +0100 Subject: [PATCH 108/158] 8032518: fatal error has been detected by the Java Runtime Environment(access violation) Reviewed-by: sla, dholmes, jbachorik, dsamersoff, coleenp --- .../native/sun/management/DiagnosticCommandImpl.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/jdk/src/share/native/sun/management/DiagnosticCommandImpl.c b/jdk/src/share/native/sun/management/DiagnosticCommandImpl.c index 6258ac3e9cf..59f3f7db971 100644 --- a/jdk/src/share/native/sun/management/DiagnosticCommandImpl.c +++ b/jdk/src/share/native/sun/management/DiagnosticCommandImpl.c @@ -30,12 +30,12 @@ JNIEXPORT void JNICALL Java_sun_management_DiagnosticCommandImpl_setNotificationEnabled (JNIEnv *env, jobject dummy, jboolean enabled) { - if(jmm_version > JMM_VERSION_1_2_2) { - jmm_interface->SetDiagnosticFrameworkNotificationEnabled(env, enabled); - } else { + if (jmm_version <= JMM_VERSION_1_2_2) { JNU_ThrowByName(env, "java/lang/UnsupportedOperationException", "JMX interface to diagnostic framework notifications is not supported by this VM"); + return; } + jmm_interface->SetDiagnosticFrameworkNotificationEnabled(env, enabled); } JNIEXPORT jobjectArray JNICALL @@ -124,6 +124,7 @@ Java_sun_management_DiagnosticCommandImpl_getDiagnosticCommandInfo result = (*env)->NewObjectArray(env, num_commands, dcmdInfoCls, NULL); if (result == NULL) { JNU_ThrowOutOfMemoryError(env, 0); + return NULL; } if (num_commands == 0) { /* Handle the 'zero commands' case specially to avoid calling 'malloc()' */ @@ -133,6 +134,7 @@ Java_sun_management_DiagnosticCommandImpl_getDiagnosticCommandInfo dcmd_info_array = (dcmdInfo*) malloc(num_commands * sizeof(dcmdInfo)); if (dcmd_info_array == NULL) { JNU_ThrowOutOfMemoryError(env, NULL); + return NULL; } jmm_interface->GetDiagnosticCommandInfo(env, commands, dcmd_info_array); for (i=0; iSetObjectArrayElement(env, result, i, obj); } From 49605b7bf933f2e1470498aeb415f85103c5641b Mon Sep 17 00:00:00 2001 From: Chris Hegarty Date: Fri, 31 Jan 2014 11:10:36 +0000 Subject: [PATCH 109/158] 7150539: HttpURLConnection.getResponseMessage() doesn't throw IOException on server error (OS X) Reviewed-by: michaelm, alanb --- jdk/test/sun/net/www/http/HttpClient/RetryPost.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jdk/test/sun/net/www/http/HttpClient/RetryPost.java b/jdk/test/sun/net/www/http/HttpClient/RetryPost.java index 2f5add47afa..da7d868c3f2 100644 --- a/jdk/test/sun/net/www/http/HttpClient/RetryPost.java +++ b/jdk/test/sun/net/www/http/HttpClient/RetryPost.java @@ -55,8 +55,8 @@ public class RetryPost void doClient() { try { InetSocketAddress address = httpServer.getAddress(); - URL url = new URL("http://" + address.getHostName() + ":" + address.getPort() + "/test/"); - HttpURLConnection uc = (HttpURLConnection)url.openConnection(); + URL url = new URL("http://localhost:" + address.getPort() + "/test/"); + HttpURLConnection uc = (HttpURLConnection)url.openConnection(Proxy.NO_PROXY); uc.setDoOutput(true); uc.setRequestMethod("POST"); uc.getResponseCode(); From 592907e7f24d7262a2c0f69cd123c0e88d3d6753 Mon Sep 17 00:00:00 2001 From: Ivan Gerasimov Date: Thu, 30 Jan 2014 00:02:46 +0400 Subject: [PATCH 110/158] 8027348: (process) Enhancement of handling async close of ProcessInputStream Reviewed-by: martin --- .../classes/java/lang/UNIXProcess.java.bsd | 44 +++--- .../classes/java/lang/UNIXProcess.java.linux | 44 +++--- .../java/lang/ProcessBuilder/CloseRace.java | 140 +++++++++++++++++ .../java/lang/Runtime/exec/CloseRace.java | 146 ------------------ 4 files changed, 176 insertions(+), 198 deletions(-) create mode 100644 jdk/test/java/lang/ProcessBuilder/CloseRace.java delete mode 100644 jdk/test/java/lang/Runtime/exec/CloseRace.java diff --git a/jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd b/jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd index df22bd2f3b9..7f0c3b12bf0 100644 --- a/jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd +++ b/jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd @@ -342,47 +342,39 @@ final class UNIXProcess extends Process { ProcessPipeInputStream(int fd) { super(new FileInputStream(newFileDescriptor(fd))); } - - private InputStream drainInputStream(InputStream in) + private static byte[] drainInputStream(InputStream in) throws IOException { int n = 0; int j; byte[] a = null; - synchronized (closeLock) { - if (buf == null) // asynchronous close()? - return null; // discard - j = in.available(); - } - while (j > 0) { + while ((j = in.available()) > 0) { a = (a == null) ? new byte[j] : Arrays.copyOf(a, n + j); - synchronized (closeLock) { - if (buf == null) // asynchronous close()? - return null; // discard - n += in.read(a, n, j); - j = in.available(); - } + n += in.read(a, n, j); } - return (a == null) ? - ProcessBuilder.NullInputStream.INSTANCE : - new ByteArrayInputStream(n == a.length ? a : Arrays.copyOf(a, n)); + return (a == null || n == a.length) ? a : Arrays.copyOf(a, n); } /** Called by the process reaper thread when the process exits. */ synchronized void processExited() { - try { - InputStream in = this.in; - if (in != null) { - InputStream stragglers = drainInputStream(in); - in.close(); - this.in = stragglers; - } - } catch (IOException ignored) { } + synchronized (closeLock) { + try { + InputStream in = this.in; + // this stream is closed if and only if: in == null + if (in != null) { + byte[] stragglers = drainInputStream(in); + in.close(); + this.in = (stragglers == null) ? + ProcessBuilder.NullInputStream.INSTANCE : + new ByteArrayInputStream(stragglers); + } + } catch (IOException ignored) {} + } } @Override public void close() throws IOException { // BufferedInputStream#close() is not synchronized unlike most other methods. - // Synchronizing helps avoid racing with drainInputStream(). + // Synchronizing helps avoid race with processExited(). synchronized (closeLock) { super.close(); } diff --git a/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux b/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux index 5ce8a61682a..be267d3ef0c 100644 --- a/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux +++ b/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux @@ -344,47 +344,39 @@ final class UNIXProcess extends Process { ProcessPipeInputStream(int fd) { super(new FileInputStream(newFileDescriptor(fd))); } - - private InputStream drainInputStream(InputStream in) + private static byte[] drainInputStream(InputStream in) throws IOException { int n = 0; int j; byte[] a = null; - synchronized (closeLock) { - if (buf == null) // asynchronous close()? - return null; // discard - j = in.available(); - } - while (j > 0) { + while ((j = in.available()) > 0) { a = (a == null) ? new byte[j] : Arrays.copyOf(a, n + j); - synchronized (closeLock) { - if (buf == null) // asynchronous close()? - return null; // discard - n += in.read(a, n, j); - j = in.available(); - } + n += in.read(a, n, j); } - return (a == null) ? - ProcessBuilder.NullInputStream.INSTANCE : - new ByteArrayInputStream(n == a.length ? a : Arrays.copyOf(a, n)); + return (a == null || n == a.length) ? a : Arrays.copyOf(a, n); } /** Called by the process reaper thread when the process exits. */ synchronized void processExited() { - try { - InputStream in = this.in; - if (in != null) { - InputStream stragglers = drainInputStream(in); - in.close(); - this.in = stragglers; - } - } catch (IOException ignored) { } + synchronized (closeLock) { + try { + InputStream in = this.in; + // this stream is closed if and only if: in == null + if (in != null) { + byte[] stragglers = drainInputStream(in); + in.close(); + this.in = (stragglers == null) ? + ProcessBuilder.NullInputStream.INSTANCE : + new ByteArrayInputStream(stragglers); + } + } catch (IOException ignored) {} + } } @Override public void close() throws IOException { // BufferedInputStream#close() is not synchronized unlike most other methods. - // Synchronizing helps avoid racing with drainInputStream(). + // Synchronizing helps avoid race with processExited(). synchronized (closeLock) { super.close(); } diff --git a/jdk/test/java/lang/ProcessBuilder/CloseRace.java b/jdk/test/java/lang/ProcessBuilder/CloseRace.java new file mode 100644 index 00000000000..ff2e81fe7a8 --- /dev/null +++ b/jdk/test/java/lang/ProcessBuilder/CloseRace.java @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2013, 2014 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8024521 + * @summary Closing ProcessPipeInputStream at the time the process exits is racy + * and leads to data corruption. Run this test manually (as + * an ordinary java program) with -Xmx8M to repro bug 8024521. + * @run main/othervm -Xmx8M -Dtest.duration=2 CloseRace + */ + +import java.io.*; +import java.util.ArrayList; +import java.util.List; + +public class CloseRace { + private static final String BIG_FILE = "bigfile"; + + private static final int[] procFDs = new int[6]; + + /** default value sufficient to repro bug 8024521. */ + private static final int testDurationSeconds + = Integer.getInteger("test.duration", 600); + + static boolean fdInUse(int i) { + return new File("/proc/self/fd/" + i).exists(); + } + + static boolean[] procFDsInUse() { + boolean[] inUse = new boolean[procFDs.length]; + for (int i = 0; i < procFDs.length; i++) + inUse[i] = fdInUse(procFDs[i]); + return inUse; + } + + static int count(boolean[] bits) { + int count = 0; + for (int i = 0; i < bits.length; i++) + count += bits[i] ? 1 : 0; + return count; + } + + public static void main(String args[]) throws Exception { + if (!(new File("/proc/self/fd").isDirectory())) + return; + + // Catch Errors from process reaper + Thread.setDefaultUncaughtExceptionHandler + ((t, e) -> { e.printStackTrace(); System.exit(1); }); + + try (RandomAccessFile f = new RandomAccessFile(BIG_FILE, "rw")) { + f.setLength(Runtime.getRuntime().maxMemory()); // provoke OOME + } + + for (int i = 0, j = 0; j < procFDs.length; i++) + if (!fdInUse(i)) + procFDs[j++] = i; + + Thread[] threads = { + new Thread(new OpenLoop()), + new Thread(new ExecLoop()), + }; + for (Thread thread : threads) + thread.start(); + + Thread.sleep(testDurationSeconds * 1000); + + for (Thread thread : threads) + thread.interrupt(); + for (Thread thread : threads) + thread.join(); + } + + static class OpenLoop implements Runnable { + public void run() { + while (!Thread.interrupted()) { + try { + // wait for ExecLoop to finish creating process + do {} while (count(procFDsInUse()) != 3); + List iss = new ArrayList<>(4); + + // eat up three "holes" (closed ends of pipe fd pairs) + for (int i = 0; i < 3; i++) + iss.add(new FileInputStream(BIG_FILE)); + do {} while (count(procFDsInUse()) == procFDs.length); + // hopefully this will racily occupy empty fd slot + iss.add(new FileInputStream(BIG_FILE)); + Thread.sleep(1); // Widen race window + for (InputStream is : iss) + is.close(); + } catch (InterruptedException e) { + break; + } catch (Exception e) { + throw new Error(e); + } + } + } + } + + static class ExecLoop implements Runnable { + public void run() { + ProcessBuilder builder = new ProcessBuilder("/bin/true"); + while (!Thread.interrupted()) { + try { + // wait for OpenLoop to finish + do {} while (count(procFDsInUse()) > 0); + Process process = builder.start(); + InputStream is = process.getInputStream(); + process.waitFor(); + is.close(); + } catch (InterruptedException e) { + break; + } catch (Exception e) { + throw new Error(e); + } + } + } + } +} diff --git a/jdk/test/java/lang/Runtime/exec/CloseRace.java b/jdk/test/java/lang/Runtime/exec/CloseRace.java deleted file mode 100644 index a1e57902e31..00000000000 --- a/jdk/test/java/lang/Runtime/exec/CloseRace.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 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. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** - * @test - * @bug 8024521 - * @summary Closing ProcessPipeInputStream at the time the process exits is racy - * and leads to the data corruption. - * @library /lib/testlibrary - * @run main/othervm/timeout=80 CloseRace - */ - -/** - * This test has a little chance to catch the race during the given default - * time gap of 20 seconds. To increase the time gap, set the system property - * CloseRaceTimeGap=N to the number of seconds. - * Jtreg's timeoutFactor should also be set appropriately. - * - * For example, to run the test for 10 minutes: - * > jtreg \ - * -testjdk:$(PATH_TO_TESTED_JDK) \ - * -timeoutFactor:10 \ - * -DCloseRaceTimeGap=600 \ - * $(PATH_TO_TESTED_JDK_SOURCE)/test/java/lang/Runtime/exec/CloseRace.java - */ - -import java.io.*; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; -import jdk.testlibrary.OutputAnalyzer; -import static jdk.testlibrary.ProcessTools.*; - -public class CloseRace { - - public static void main(String args[]) throws Exception { - ProcessBuilder pb = createJavaProcessBuilder("-Xmx64M", "CloseRace$Child", - System.getProperty("CloseRaceTimeGap", "20")); - OutputAnalyzer oa = new OutputAnalyzer(pb.start()); - oa.stderrShouldNotContain("java.lang.OutOfMemoryError"); - } - - public static class Child { - private static final String BIG_FILE = "bigfile"; - private static final String SMALL_FILE = "smallfile"; - private static int timeGap = 20; // seconds - - public static void main(String args[]) throws Exception { - if (args.length > 0) { - try { - timeGap = Integer.parseUnsignedInt(args[0]); - timeGap = Integer.max(timeGap, 10); - timeGap = Integer.min(timeGap, 10 * 60 * 60); // no more than 10 hours - } catch (NumberFormatException ignore) {} - } - try (RandomAccessFile f = new RandomAccessFile(BIG_FILE, "rw")) { - f.setLength(1024 * 1024 * 1024); // 1 Gb, greater than max heap size - } - try (FileOutputStream fs = new FileOutputStream(SMALL_FILE); - PrintStream ps = new PrintStream(fs)) { - for (int i = 0; i < 128; ++i) - ps.println("line of text"); - } - - List threads = new LinkedList<>(); - for (int i = 0; i < 99; ++i) { - Thread t = new Thread (new OpenLoop()); - t.start(); - threads.add(t); - } - Thread t2 = new Thread (new ExecLoop()); - t2.start(); - threads.add(t2); - - Thread.sleep(timeGap); - - for (Thread t : threads) { - t.interrupt(); - t.join(); - } - } - - private static class OpenLoop implements Runnable { - public void run() { - final Path bigFilePath = Paths.get(BIG_FILE); - while (!Thread.interrupted()) { - try (InputStream in = Files.newInputStream(bigFilePath)) { - // Widen the race window by sleeping 1ms - Thread.sleep(1); - } catch (InterruptedException e) { - break; - } catch (Exception e) { - System.err.println(e); - } - } - } - } - - private static class ExecLoop implements Runnable { - public void run() { - List command = new ArrayList<>( - Arrays.asList("/bin/cat", SMALL_FILE)); - while (!Thread.interrupted()) { - try { - ProcessBuilder builder = new ProcessBuilder(command); - final Process process = builder.start(); - InputStream is = process.getInputStream(); - InputStreamReader isr = new InputStreamReader(is); - BufferedReader br = new BufferedReader(isr); - while (br.readLine() != null) {} - process.waitFor(); - isr.close(); - } catch (InterruptedException e) { - break; - } catch (Exception e) { - System.err.println(e); - } - } - } - } - } -} From b9f32d484285c5122114022115cbaa8a65b30c1f Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Wed, 29 Jan 2014 22:55:43 +0100 Subject: [PATCH 111/158] 8033119: Improve and document boot-jdk.m4 Reviewed-by: erikj --- common/autoconf/boot-jdk.m4 | 94 +- common/autoconf/generated-configure.sh | 2121 ++++++++++++++++++++---- common/autoconf/spec.gmk.in | 16 +- 3 files changed, 1866 insertions(+), 365 deletions(-) diff --git a/common/autoconf/boot-jdk.m4 b/common/autoconf/boot-jdk.m4 index ad8dab31e73..dde3c926c2f 100644 --- a/common/autoconf/boot-jdk.m4 +++ b/common/autoconf/boot-jdk.m4 @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2014, 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,6 +23,34 @@ # questions. # +######################################################################## +# This file handles detection of the Boot JDK. The Boot JDK detection +# process has been developed as a response to solve a complex real-world +# problem. Initially, it was simple, but it has grown as platform after +# platform, idiosyncracy after idiosyncracy has been supported. +# +# The basic idea is this: +# 1) You need an acceptable *) JDK to use as a Boot JDK +# 2) There are several ways to locate a JDK, that are mostly platform +# dependent **) +# 3) You can have multiple JDKs installed +# 4) If possible, configure should try to dig out an acceptable JDK +# automatically, without having to resort to command-line options +# +# *) acceptable means e.g. JDK7 for building JDK8, a complete JDK (with +# javac) and not a JRE, etc. +# +# **) On Windows we typically use a well-known path. +# On MacOSX we typically use the tool java_home. +# On Linux we typically find javac in the $PATH, and then follow a +# chain of symlinks that often ends up in a real JDK. +# +# This leads to the code where we check in different ways to locate a +# JDK, and if one is found, check if it is acceptable. If not, we print +# our reasons for rejecting it (useful when debugging non-working +# configure situations) and continue checking the next one. +######################################################################## + # Execute the check given as argument, and verify the result # If the Boot JDK was previously found, do nothing # $1 A command line (typically autoconf macro) to execute @@ -54,10 +82,10 @@ AC_DEFUN([BOOTJDK_DO_CHECK], BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - [FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'`] - if test "x$FOUND_VERSION_78" = x; then + [FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'`] + if test "x$FOUND_CORRECT_VERSION" = x; then AC_MSG_NOTICE([Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring]) - AC_MSG_NOTICE([(Your Boot JDK must be version 7 or 8)]) + AC_MSG_NOTICE([(Your Boot JDK must be version 7, 8 or 9)]) BOOT_JDK_FOUND=no else # We're done! :-) @@ -136,12 +164,26 @@ AC_DEFUN([BOOTJDK_CHECK_JAVA_IN_PATH_IS_SYMLINK], ]) # Test: Is there a /usr/libexec/java_home? (Typically on MacOSX) +# $1: Argument to the java_home binary (optional) AC_DEFUN([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME], [ if test -x /usr/libexec/java_home; then - BOOT_JDK=`/usr/libexec/java_home` + BOOT_JDK=`/usr/libexec/java_home $1` BOOT_JDK_FOUND=maybe - AC_MSG_NOTICE([Found potential Boot JDK using /usr/libexec/java_home]) + AC_MSG_NOTICE([Found potential Boot JDK using /usr/libexec/java_home $1]) + fi +]) + +# Test: On MacOS X, can we find a boot jdk using /usr/libexec/java_home? +AC_DEFUN([BOOTJDK_CHECK_MACOSX_JAVA_LOCATOR], +[ + if test "x$OPENJDK_TARGET_OS" = xmacosx; then + # First check at user selected default + BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME()]) + # If that did not work out (e.g. too old), try explicit versions instead + BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME([-v 1.9])]) + BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME([-v 1.8])]) + BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME([-v 1.7])]) fi ]) @@ -201,14 +243,19 @@ AC_DEFUN([BOOTJDK_CHECK_WELL_KNOWN_LOCATIONS], # $2 = name of binary AC_DEFUN([BOOTJDK_CHECK_TOOL_IN_BOOTJDK], [ - AC_MSG_CHECKING([for $2 in Boot JDK]) - $1=$BOOT_JDK/bin/$2 - if test ! -x [$]$1; then - AC_MSG_RESULT(not found) - AC_MSG_NOTICE([Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk]) - AC_MSG_ERROR([Could not find $2 in the Boot JDK]) - fi - AC_MSG_RESULT(ok) + # Use user overridden value if available, otherwise locate tool in the Boot JDK. + BASIC_SETUP_TOOL($1, + [ + AC_MSG_CHECKING([for $2 in Boot JDK]) + $1=$BOOT_JDK/bin/$2 + if test ! -x [$]$1; then + AC_MSG_RESULT(not found) + AC_MSG_NOTICE([Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk]) + AC_MSG_ERROR([Could not find $2 in the Boot JDK]) + fi + AC_MSG_RESULT(ok) + AC_SUBST($1) + ]) ]) ############################################################################### @@ -238,12 +285,12 @@ AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK], # Test: Is bootjdk available from builddeps? BOOTJDK_DO_CHECK([BOOTJDK_CHECK_BUILDDEPS]) + # Test: On MacOS X, can we find a boot jdk using /usr/libexec/java_home? + BOOTJDK_DO_CHECK([BOOTJDK_CHECK_MACOSX_JAVA_LOCATOR]) + # Test: Is $JAVA_HOME set? BOOTJDK_DO_CHECK([BOOTJDK_CHECK_JAVA_HOME]) - # Test: Is there a /usr/libexec/java_home? (Typically on MacOSX) - BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME]) - # Test: Is there a java or javac in the PATH, which is a symlink to the JDK? BOOTJDK_DO_CHECK([BOOTJDK_CHECK_JAVA_IN_PATH_IS_SYMLINK]) @@ -275,13 +322,12 @@ AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK], AC_SUBST(BOOT_JDK) # Setup tools from the Boot JDK. - BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVA,java) - BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAC,javac) - BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAH,javah) - BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAP,javap) - BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAR,jar) - BOOTJDK_CHECK_TOOL_IN_BOOTJDK(RMIC,rmic) - BOOTJDK_CHECK_TOOL_IN_BOOTJDK(NATIVE2ASCII,native2ascii) + BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVA, java) + BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAC, javac) + BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAH, javah) + BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAR, jar) + BOOTJDK_CHECK_TOOL_IN_BOOTJDK(NATIVE2ASCII, native2ascii) + BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JARSIGNER, jarsigner) # Finally, set some other options... diff --git a/common/autoconf/generated-configure.sh b/common/autoconf/generated-configure.sh index f7dc3f66d6d..998d2004ea2 100644 --- a/common/autoconf/generated-configure.sh +++ b/common/autoconf/generated-configure.sh @@ -792,6 +792,12 @@ LANGTOOLS_TOPDIR BOOT_JDK_JVMARGS JAVAC_FLAGS BOOT_JDK_SOURCETARGET +JARSIGNER +NATIVE2ASCII +JAR +JAVAH +JAVAC +JAVA BOOT_JDK BOOT_TOOLSJAR BOOT_RTJAR @@ -1134,6 +1140,12 @@ DSYMUTIL XATTR CODESIGN PKG_CONFIG +JAVA +JAVAC +JAVAH +JAR +NATIVE2ASCII +JARSIGNER BUILD_CC BUILD_CXX BUILD_LD @@ -1980,6 +1992,13 @@ Some influential environment variables: XATTR Override default value for XATTR CODESIGN Override default value for CODESIGN PKG_CONFIG path to pkg-config utility + JAVA Override default value for JAVA + JAVAC Override default value for JAVAC + JAVAH Override default value for JAVAH + JAR Override default value for JAR + NATIVE2ASCII + Override default value for NATIVE2ASCII + JARSIGNER Override default value for JARSIGNER BUILD_CC Override default value for BUILD_CC BUILD_CXX Override default value for BUILD_CXX BUILD_LD Override default value for BUILD_LD @@ -3485,7 +3504,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # ... then the rest # -# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2014, 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 @@ -3509,6 +3528,34 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # questions. # +######################################################################## +# This file handles detection of the Boot JDK. The Boot JDK detection +# process has been developed as a response to solve a complex real-world +# problem. Initially, it was simple, but it has grown as platform after +# platform, idiosyncracy after idiosyncracy has been supported. +# +# The basic idea is this: +# 1) You need an acceptable *) JDK to use as a Boot JDK +# 2) There are several ways to locate a JDK, that are mostly platform +# dependent **) +# 3) You can have multiple JDKs installed +# 4) If possible, configure should try to dig out an acceptable JDK +# automatically, without having to resort to command-line options +# +# *) acceptable means e.g. JDK7 for building JDK8, a complete JDK (with +# javac) and not a JRE, etc. +# +# **) On Windows we typically use a well-known path. +# On MacOSX we typically use the tool java_home. +# On Linux we typically find javac in the $PATH, and then follow a +# chain of symlinks that often ends up in a real JDK. +# +# This leads to the code where we check in different ways to locate a +# JDK, and if one is found, check if it is acceptable. If not, we print +# our reasons for rejecting it (useful when debugging non-working +# configure situations) and continue checking the next one. +######################################################################## + # Execute the check given as argument, and verify the result # If the Boot JDK was previously found, do nothing # $1 A command line (typically autoconf macro) to execute @@ -3527,6 +3574,10 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Test: Is there a /usr/libexec/java_home? (Typically on MacOSX) +# $1: Argument to the java_home binary (optional) + + +# Test: On MacOS X, can we find a boot jdk using /usr/libexec/java_home? # Look for a jdk in the given path. If there are multiple, try to select the newest. @@ -4036,7 +4087,7 @@ fi #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1390994270 +DATE_WHEN_GENERATED=1391032272 ############################################################################### # @@ -19491,12 +19542,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -19823,12 +19874,942 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} + BOOT_JDK_FOUND=no + else + # We're done! :-) + BOOT_JDK_FOUND=yes + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then + + # Input might be given as Windows format, start by converting to + # unix format. + path="$BOOT_JDK" + new_path=`$CYGPATH -u "$path"` + + # Cygwin tries to hide some aspects of the Windows file system, such that binaries are + # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered + # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then + # "foo.exe" is OK but "foo" is an error. + # + # This test is therefore slightly more accurate than "test -f" to check for file precense. + # It is also a way to make sure we got the proper file name for the real test later on. + test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null` + if test "x$test_shortpath" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5 +$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;} + as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5 + fi + + # Call helper function which possibly converts this using DOS-style short mode. + # If so, the updated path is stored in $new_path. + + input_path="$new_path" + # Check if we need to convert this using DOS-style short mode. If the path + # contains just simple characters, use it. Otherwise (spaces, weird characters), + # take no chances and rewrite it. + # Note: m4 eats our [], so we need to use [ and ] instead. + has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]` + if test "x$has_forbidden_chars" != x; then + # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \) + shortmode_path=`$CYGPATH -s -m -a "$input_path"` + path_after_shortmode=`$CYGPATH -u "$shortmode_path"` + if test "x$path_after_shortmode" != "x$input_to_shortpath"; then + # Going to short mode and back again did indeed matter. Since short mode is + # case insensitive, let's make it lowercase to improve readability. + shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Now convert it back to Unix-stile (cygpath) + input_path=`$CYGPATH -u "$shortmode_path"` + new_path="$input_path" + fi + fi + + test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/` + if test "x$test_cygdrive_prefix" = x; then + # As a simple fix, exclude /usr/bin since it's not a real path. + if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then + # The path is in a Cygwin special directory (e.g. /home). We need this converted to + # a path prefixed by /cygdrive for fixpath to work. + new_path="$CYGWIN_ROOT_PATH$input_path" + fi + fi + + + if test "x$path" != "x$new_path"; then + BOOT_JDK="$new_path" + { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5 +$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;} + fi + + elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then + + path="$BOOT_JDK" + has_colon=`$ECHO $path | $GREP ^.:` + new_path="$path" + if test "x$has_colon" = x; then + # Not in mixed or Windows style, start by that. + new_path=`cmd //c echo $path` + fi + + + input_path="$new_path" + # Check if we need to convert this using DOS-style short mode. If the path + # contains just simple characters, use it. Otherwise (spaces, weird characters), + # take no chances and rewrite it. + # Note: m4 eats our [], so we need to use [ and ] instead. + has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]` + if test "x$has_forbidden_chars" != x; then + # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \) + new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + fi + + + windows_path="$new_path" + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then + unix_path=`$CYGPATH -u "$windows_path"` + new_path="$unix_path" + elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then + unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'` + new_path="$unix_path" + fi + + if test "x$path" != "x$new_path"; then + BOOT_JDK="$new_path" + { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5 +$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;} + fi + + # Save the first 10 bytes of this path to the storage, so fixpath can work. + all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}") + + else + # We're on a posix platform. Hooray! :) + path="$BOOT_JDK" + has_space=`$ECHO "$path" | $GREP " "` + if test "x$has_space" != x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5 +$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;} + as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5 + fi + + # Use eval to expand a potential ~ + eval path="$path" + if test ! -f "$path" && test ! -d "$path"; then + as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5 + fi + + BOOT_JDK="`cd "$path"; $THEPWDCMD -L`" + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5 +$as_echo_n "checking for Boot JDK... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5 +$as_echo "$BOOT_JDK" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5 +$as_echo_n "checking Boot JDK version... " >&6; } + BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5 +$as_echo "$BOOT_JDK_VERSION" >&6; } + fi # end check jdk version + fi # end check rt.jar + fi # end check javac + fi # end check java + fi # end check boot jdk found + fi + + + # Test: On MacOS X, can we find a boot jdk using /usr/libexec/java_home? + + if test "x$BOOT_JDK_FOUND" = xno; then + # Now execute the test + + if test "x$OPENJDK_TARGET_OS" = xmacosx; then + # First check at user selected default + + if test "x$BOOT_JDK_FOUND" = xno; then + # Now execute the test + + if test -x /usr/libexec/java_home; then + BOOT_JDK=`/usr/libexec/java_home ` + BOOT_JDK_FOUND=maybe + { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using /usr/libexec/java_home " >&5 +$as_echo "$as_me: Found potential Boot JDK using /usr/libexec/java_home " >&6;} + fi + + + # If previous step claimed to have found a JDK, check it to see if it seems to be valid. + if test "x$BOOT_JDK_FOUND" = xmaybe; then + # Do we have a bin/java? + if test ! -x "$BOOT_JDK/bin/java"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;} + BOOT_JDK_FOUND=no + else + # Do we have a bin/javac? + if test ! -x "$BOOT_JDK/bin/javac"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5 +$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;} + BOOT_JDK_FOUND=no + else + # Do we have an rt.jar? (On MacOSX it is called classes.jar) + if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;} + BOOT_JDK_FOUND=no + else + # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version? + BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` + + # Extra M4 quote needed to protect [] in grep expression. + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} + BOOT_JDK_FOUND=no + else + # We're done! :-) + BOOT_JDK_FOUND=yes + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then + + # Input might be given as Windows format, start by converting to + # unix format. + path="$BOOT_JDK" + new_path=`$CYGPATH -u "$path"` + + # Cygwin tries to hide some aspects of the Windows file system, such that binaries are + # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered + # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then + # "foo.exe" is OK but "foo" is an error. + # + # This test is therefore slightly more accurate than "test -f" to check for file precense. + # It is also a way to make sure we got the proper file name for the real test later on. + test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null` + if test "x$test_shortpath" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5 +$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;} + as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5 + fi + + # Call helper function which possibly converts this using DOS-style short mode. + # If so, the updated path is stored in $new_path. + + input_path="$new_path" + # Check if we need to convert this using DOS-style short mode. If the path + # contains just simple characters, use it. Otherwise (spaces, weird characters), + # take no chances and rewrite it. + # Note: m4 eats our [], so we need to use [ and ] instead. + has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]` + if test "x$has_forbidden_chars" != x; then + # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \) + shortmode_path=`$CYGPATH -s -m -a "$input_path"` + path_after_shortmode=`$CYGPATH -u "$shortmode_path"` + if test "x$path_after_shortmode" != "x$input_to_shortpath"; then + # Going to short mode and back again did indeed matter. Since short mode is + # case insensitive, let's make it lowercase to improve readability. + shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Now convert it back to Unix-stile (cygpath) + input_path=`$CYGPATH -u "$shortmode_path"` + new_path="$input_path" + fi + fi + + test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/` + if test "x$test_cygdrive_prefix" = x; then + # As a simple fix, exclude /usr/bin since it's not a real path. + if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then + # The path is in a Cygwin special directory (e.g. /home). We need this converted to + # a path prefixed by /cygdrive for fixpath to work. + new_path="$CYGWIN_ROOT_PATH$input_path" + fi + fi + + + if test "x$path" != "x$new_path"; then + BOOT_JDK="$new_path" + { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5 +$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;} + fi + + elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then + + path="$BOOT_JDK" + has_colon=`$ECHO $path | $GREP ^.:` + new_path="$path" + if test "x$has_colon" = x; then + # Not in mixed or Windows style, start by that. + new_path=`cmd //c echo $path` + fi + + + input_path="$new_path" + # Check if we need to convert this using DOS-style short mode. If the path + # contains just simple characters, use it. Otherwise (spaces, weird characters), + # take no chances and rewrite it. + # Note: m4 eats our [], so we need to use [ and ] instead. + has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]` + if test "x$has_forbidden_chars" != x; then + # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \) + new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + fi + + + windows_path="$new_path" + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then + unix_path=`$CYGPATH -u "$windows_path"` + new_path="$unix_path" + elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then + unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'` + new_path="$unix_path" + fi + + if test "x$path" != "x$new_path"; then + BOOT_JDK="$new_path" + { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5 +$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;} + fi + + # Save the first 10 bytes of this path to the storage, so fixpath can work. + all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}") + + else + # We're on a posix platform. Hooray! :) + path="$BOOT_JDK" + has_space=`$ECHO "$path" | $GREP " "` + if test "x$has_space" != x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5 +$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;} + as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5 + fi + + # Use eval to expand a potential ~ + eval path="$path" + if test ! -f "$path" && test ! -d "$path"; then + as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5 + fi + + BOOT_JDK="`cd "$path"; $THEPWDCMD -L`" + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5 +$as_echo_n "checking for Boot JDK... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5 +$as_echo "$BOOT_JDK" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5 +$as_echo_n "checking Boot JDK version... " >&6; } + BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5 +$as_echo "$BOOT_JDK_VERSION" >&6; } + fi # end check jdk version + fi # end check rt.jar + fi # end check javac + fi # end check java + fi # end check boot jdk found + fi + + # If that did not work out (e.g. too old), try explicit versions instead + + if test "x$BOOT_JDK_FOUND" = xno; then + # Now execute the test + + if test -x /usr/libexec/java_home; then + BOOT_JDK=`/usr/libexec/java_home -v 1.9` + BOOT_JDK_FOUND=maybe + { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using /usr/libexec/java_home -v 1.9" >&5 +$as_echo "$as_me: Found potential Boot JDK using /usr/libexec/java_home -v 1.9" >&6;} + fi + + + # If previous step claimed to have found a JDK, check it to see if it seems to be valid. + if test "x$BOOT_JDK_FOUND" = xmaybe; then + # Do we have a bin/java? + if test ! -x "$BOOT_JDK/bin/java"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;} + BOOT_JDK_FOUND=no + else + # Do we have a bin/javac? + if test ! -x "$BOOT_JDK/bin/javac"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5 +$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;} + BOOT_JDK_FOUND=no + else + # Do we have an rt.jar? (On MacOSX it is called classes.jar) + if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;} + BOOT_JDK_FOUND=no + else + # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version? + BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` + + # Extra M4 quote needed to protect [] in grep expression. + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} + BOOT_JDK_FOUND=no + else + # We're done! :-) + BOOT_JDK_FOUND=yes + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then + + # Input might be given as Windows format, start by converting to + # unix format. + path="$BOOT_JDK" + new_path=`$CYGPATH -u "$path"` + + # Cygwin tries to hide some aspects of the Windows file system, such that binaries are + # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered + # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then + # "foo.exe" is OK but "foo" is an error. + # + # This test is therefore slightly more accurate than "test -f" to check for file precense. + # It is also a way to make sure we got the proper file name for the real test later on. + test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null` + if test "x$test_shortpath" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5 +$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;} + as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5 + fi + + # Call helper function which possibly converts this using DOS-style short mode. + # If so, the updated path is stored in $new_path. + + input_path="$new_path" + # Check if we need to convert this using DOS-style short mode. If the path + # contains just simple characters, use it. Otherwise (spaces, weird characters), + # take no chances and rewrite it. + # Note: m4 eats our [], so we need to use [ and ] instead. + has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]` + if test "x$has_forbidden_chars" != x; then + # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \) + shortmode_path=`$CYGPATH -s -m -a "$input_path"` + path_after_shortmode=`$CYGPATH -u "$shortmode_path"` + if test "x$path_after_shortmode" != "x$input_to_shortpath"; then + # Going to short mode and back again did indeed matter. Since short mode is + # case insensitive, let's make it lowercase to improve readability. + shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Now convert it back to Unix-stile (cygpath) + input_path=`$CYGPATH -u "$shortmode_path"` + new_path="$input_path" + fi + fi + + test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/` + if test "x$test_cygdrive_prefix" = x; then + # As a simple fix, exclude /usr/bin since it's not a real path. + if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then + # The path is in a Cygwin special directory (e.g. /home). We need this converted to + # a path prefixed by /cygdrive for fixpath to work. + new_path="$CYGWIN_ROOT_PATH$input_path" + fi + fi + + + if test "x$path" != "x$new_path"; then + BOOT_JDK="$new_path" + { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5 +$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;} + fi + + elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then + + path="$BOOT_JDK" + has_colon=`$ECHO $path | $GREP ^.:` + new_path="$path" + if test "x$has_colon" = x; then + # Not in mixed or Windows style, start by that. + new_path=`cmd //c echo $path` + fi + + + input_path="$new_path" + # Check if we need to convert this using DOS-style short mode. If the path + # contains just simple characters, use it. Otherwise (spaces, weird characters), + # take no chances and rewrite it. + # Note: m4 eats our [], so we need to use [ and ] instead. + has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]` + if test "x$has_forbidden_chars" != x; then + # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \) + new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + fi + + + windows_path="$new_path" + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then + unix_path=`$CYGPATH -u "$windows_path"` + new_path="$unix_path" + elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then + unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'` + new_path="$unix_path" + fi + + if test "x$path" != "x$new_path"; then + BOOT_JDK="$new_path" + { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5 +$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;} + fi + + # Save the first 10 bytes of this path to the storage, so fixpath can work. + all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}") + + else + # We're on a posix platform. Hooray! :) + path="$BOOT_JDK" + has_space=`$ECHO "$path" | $GREP " "` + if test "x$has_space" != x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5 +$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;} + as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5 + fi + + # Use eval to expand a potential ~ + eval path="$path" + if test ! -f "$path" && test ! -d "$path"; then + as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5 + fi + + BOOT_JDK="`cd "$path"; $THEPWDCMD -L`" + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5 +$as_echo_n "checking for Boot JDK... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5 +$as_echo "$BOOT_JDK" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5 +$as_echo_n "checking Boot JDK version... " >&6; } + BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5 +$as_echo "$BOOT_JDK_VERSION" >&6; } + fi # end check jdk version + fi # end check rt.jar + fi # end check javac + fi # end check java + fi # end check boot jdk found + fi + + + if test "x$BOOT_JDK_FOUND" = xno; then + # Now execute the test + + if test -x /usr/libexec/java_home; then + BOOT_JDK=`/usr/libexec/java_home -v 1.8` + BOOT_JDK_FOUND=maybe + { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using /usr/libexec/java_home -v 1.8" >&5 +$as_echo "$as_me: Found potential Boot JDK using /usr/libexec/java_home -v 1.8" >&6;} + fi + + + # If previous step claimed to have found a JDK, check it to see if it seems to be valid. + if test "x$BOOT_JDK_FOUND" = xmaybe; then + # Do we have a bin/java? + if test ! -x "$BOOT_JDK/bin/java"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;} + BOOT_JDK_FOUND=no + else + # Do we have a bin/javac? + if test ! -x "$BOOT_JDK/bin/javac"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5 +$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;} + BOOT_JDK_FOUND=no + else + # Do we have an rt.jar? (On MacOSX it is called classes.jar) + if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;} + BOOT_JDK_FOUND=no + else + # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version? + BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` + + # Extra M4 quote needed to protect [] in grep expression. + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} + BOOT_JDK_FOUND=no + else + # We're done! :-) + BOOT_JDK_FOUND=yes + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then + + # Input might be given as Windows format, start by converting to + # unix format. + path="$BOOT_JDK" + new_path=`$CYGPATH -u "$path"` + + # Cygwin tries to hide some aspects of the Windows file system, such that binaries are + # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered + # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then + # "foo.exe" is OK but "foo" is an error. + # + # This test is therefore slightly more accurate than "test -f" to check for file precense. + # It is also a way to make sure we got the proper file name for the real test later on. + test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null` + if test "x$test_shortpath" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5 +$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;} + as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5 + fi + + # Call helper function which possibly converts this using DOS-style short mode. + # If so, the updated path is stored in $new_path. + + input_path="$new_path" + # Check if we need to convert this using DOS-style short mode. If the path + # contains just simple characters, use it. Otherwise (spaces, weird characters), + # take no chances and rewrite it. + # Note: m4 eats our [], so we need to use [ and ] instead. + has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]` + if test "x$has_forbidden_chars" != x; then + # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \) + shortmode_path=`$CYGPATH -s -m -a "$input_path"` + path_after_shortmode=`$CYGPATH -u "$shortmode_path"` + if test "x$path_after_shortmode" != "x$input_to_shortpath"; then + # Going to short mode and back again did indeed matter. Since short mode is + # case insensitive, let's make it lowercase to improve readability. + shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Now convert it back to Unix-stile (cygpath) + input_path=`$CYGPATH -u "$shortmode_path"` + new_path="$input_path" + fi + fi + + test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/` + if test "x$test_cygdrive_prefix" = x; then + # As a simple fix, exclude /usr/bin since it's not a real path. + if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then + # The path is in a Cygwin special directory (e.g. /home). We need this converted to + # a path prefixed by /cygdrive for fixpath to work. + new_path="$CYGWIN_ROOT_PATH$input_path" + fi + fi + + + if test "x$path" != "x$new_path"; then + BOOT_JDK="$new_path" + { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5 +$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;} + fi + + elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then + + path="$BOOT_JDK" + has_colon=`$ECHO $path | $GREP ^.:` + new_path="$path" + if test "x$has_colon" = x; then + # Not in mixed or Windows style, start by that. + new_path=`cmd //c echo $path` + fi + + + input_path="$new_path" + # Check if we need to convert this using DOS-style short mode. If the path + # contains just simple characters, use it. Otherwise (spaces, weird characters), + # take no chances and rewrite it. + # Note: m4 eats our [], so we need to use [ and ] instead. + has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]` + if test "x$has_forbidden_chars" != x; then + # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \) + new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + fi + + + windows_path="$new_path" + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then + unix_path=`$CYGPATH -u "$windows_path"` + new_path="$unix_path" + elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then + unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'` + new_path="$unix_path" + fi + + if test "x$path" != "x$new_path"; then + BOOT_JDK="$new_path" + { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5 +$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;} + fi + + # Save the first 10 bytes of this path to the storage, so fixpath can work. + all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}") + + else + # We're on a posix platform. Hooray! :) + path="$BOOT_JDK" + has_space=`$ECHO "$path" | $GREP " "` + if test "x$has_space" != x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5 +$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;} + as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5 + fi + + # Use eval to expand a potential ~ + eval path="$path" + if test ! -f "$path" && test ! -d "$path"; then + as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5 + fi + + BOOT_JDK="`cd "$path"; $THEPWDCMD -L`" + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5 +$as_echo_n "checking for Boot JDK... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5 +$as_echo "$BOOT_JDK" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5 +$as_echo_n "checking Boot JDK version... " >&6; } + BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5 +$as_echo "$BOOT_JDK_VERSION" >&6; } + fi # end check jdk version + fi # end check rt.jar + fi # end check javac + fi # end check java + fi # end check boot jdk found + fi + + + if test "x$BOOT_JDK_FOUND" = xno; then + # Now execute the test + + if test -x /usr/libexec/java_home; then + BOOT_JDK=`/usr/libexec/java_home -v 1.7` + BOOT_JDK_FOUND=maybe + { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using /usr/libexec/java_home -v 1.7" >&5 +$as_echo "$as_me: Found potential Boot JDK using /usr/libexec/java_home -v 1.7" >&6;} + fi + + + # If previous step claimed to have found a JDK, check it to see if it seems to be valid. + if test "x$BOOT_JDK_FOUND" = xmaybe; then + # Do we have a bin/java? + if test ! -x "$BOOT_JDK/bin/java"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;} + BOOT_JDK_FOUND=no + else + # Do we have a bin/javac? + if test ! -x "$BOOT_JDK/bin/javac"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5 +$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;} + BOOT_JDK_FOUND=no + else + # Do we have an rt.jar? (On MacOSX it is called classes.jar) + if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;} + BOOT_JDK_FOUND=no + else + # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version? + BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` + + # Extra M4 quote needed to protect [] in grep expression. + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} + BOOT_JDK_FOUND=no + else + # We're done! :-) + BOOT_JDK_FOUND=yes + + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then + + # Input might be given as Windows format, start by converting to + # unix format. + path="$BOOT_JDK" + new_path=`$CYGPATH -u "$path"` + + # Cygwin tries to hide some aspects of the Windows file system, such that binaries are + # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered + # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then + # "foo.exe" is OK but "foo" is an error. + # + # This test is therefore slightly more accurate than "test -f" to check for file precense. + # It is also a way to make sure we got the proper file name for the real test later on. + test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null` + if test "x$test_shortpath" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5 +$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;} + as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5 + fi + + # Call helper function which possibly converts this using DOS-style short mode. + # If so, the updated path is stored in $new_path. + + input_path="$new_path" + # Check if we need to convert this using DOS-style short mode. If the path + # contains just simple characters, use it. Otherwise (spaces, weird characters), + # take no chances and rewrite it. + # Note: m4 eats our [], so we need to use [ and ] instead. + has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]` + if test "x$has_forbidden_chars" != x; then + # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \) + shortmode_path=`$CYGPATH -s -m -a "$input_path"` + path_after_shortmode=`$CYGPATH -u "$shortmode_path"` + if test "x$path_after_shortmode" != "x$input_to_shortpath"; then + # Going to short mode and back again did indeed matter. Since short mode is + # case insensitive, let's make it lowercase to improve readability. + shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Now convert it back to Unix-stile (cygpath) + input_path=`$CYGPATH -u "$shortmode_path"` + new_path="$input_path" + fi + fi + + test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/` + if test "x$test_cygdrive_prefix" = x; then + # As a simple fix, exclude /usr/bin since it's not a real path. + if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then + # The path is in a Cygwin special directory (e.g. /home). We need this converted to + # a path prefixed by /cygdrive for fixpath to work. + new_path="$CYGWIN_ROOT_PATH$input_path" + fi + fi + + + if test "x$path" != "x$new_path"; then + BOOT_JDK="$new_path" + { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5 +$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;} + fi + + elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then + + path="$BOOT_JDK" + has_colon=`$ECHO $path | $GREP ^.:` + new_path="$path" + if test "x$has_colon" = x; then + # Not in mixed or Windows style, start by that. + new_path=`cmd //c echo $path` + fi + + + input_path="$new_path" + # Check if we need to convert this using DOS-style short mode. If the path + # contains just simple characters, use it. Otherwise (spaces, weird characters), + # take no chances and rewrite it. + # Note: m4 eats our [], so we need to use [ and ] instead. + has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]` + if test "x$has_forbidden_chars" != x; then + # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \) + new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + fi + + + windows_path="$new_path" + if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then + unix_path=`$CYGPATH -u "$windows_path"` + new_path="$unix_path" + elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then + unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'` + new_path="$unix_path" + fi + + if test "x$path" != "x$new_path"; then + BOOT_JDK="$new_path" + { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5 +$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;} + fi + + # Save the first 10 bytes of this path to the storage, so fixpath can work. + all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}") + + else + # We're on a posix platform. Hooray! :) + path="$BOOT_JDK" + has_space=`$ECHO "$path" | $GREP " "` + if test "x$has_space" != x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5 +$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;} + as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5 + fi + + # Use eval to expand a potential ~ + eval path="$path" + if test ! -f "$path" && test ! -d "$path"; then + as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5 + fi + + BOOT_JDK="`cd "$path"; $THEPWDCMD -L`" + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5 +$as_echo_n "checking for Boot JDK... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5 +$as_echo "$BOOT_JDK" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5 +$as_echo_n "checking Boot JDK version... " >&6; } + BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5 +$as_echo "$BOOT_JDK_VERSION" >&6; } + fi # end check jdk version + fi # end check rt.jar + fi # end check javac + fi # end check java + fi # end check boot jdk found + fi + + fi + + + # If previous step claimed to have found a JDK, check it to see if it seems to be valid. + if test "x$BOOT_JDK_FOUND" = xmaybe; then + # Do we have a bin/java? + if test ! -x "$BOOT_JDK/bin/java"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;} + BOOT_JDK_FOUND=no + else + # Do we have a bin/javac? + if test ! -x "$BOOT_JDK/bin/javac"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5 +$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;} + BOOT_JDK_FOUND=no + else + # Do we have an rt.jar? (On MacOSX it is called classes.jar) + if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;} + BOOT_JDK_FOUND=no + else + # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version? + BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` + + # Extra M4 quote needed to protect [] in grep expression. + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 +$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -20141,200 +21122,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} - BOOT_JDK_FOUND=no - else - # We're done! :-) - BOOT_JDK_FOUND=yes - - if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then - - # Input might be given as Windows format, start by converting to - # unix format. - path="$BOOT_JDK" - new_path=`$CYGPATH -u "$path"` - - # Cygwin tries to hide some aspects of the Windows file system, such that binaries are - # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered - # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then - # "foo.exe" is OK but "foo" is an error. - # - # This test is therefore slightly more accurate than "test -f" to check for file precense. - # It is also a way to make sure we got the proper file name for the real test later on. - test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null` - if test "x$test_shortpath" = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5 -$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;} - as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5 - fi - - # Call helper function which possibly converts this using DOS-style short mode. - # If so, the updated path is stored in $new_path. - - input_path="$new_path" - # Check if we need to convert this using DOS-style short mode. If the path - # contains just simple characters, use it. Otherwise (spaces, weird characters), - # take no chances and rewrite it. - # Note: m4 eats our [], so we need to use [ and ] instead. - has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]` - if test "x$has_forbidden_chars" != x; then - # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \) - shortmode_path=`$CYGPATH -s -m -a "$input_path"` - path_after_shortmode=`$CYGPATH -u "$shortmode_path"` - if test "x$path_after_shortmode" != "x$input_to_shortpath"; then - # Going to short mode and back again did indeed matter. Since short mode is - # case insensitive, let's make it lowercase to improve readability. - shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Now convert it back to Unix-stile (cygpath) - input_path=`$CYGPATH -u "$shortmode_path"` - new_path="$input_path" - fi - fi - - test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/` - if test "x$test_cygdrive_prefix" = x; then - # As a simple fix, exclude /usr/bin since it's not a real path. - if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then - # The path is in a Cygwin special directory (e.g. /home). We need this converted to - # a path prefixed by /cygdrive for fixpath to work. - new_path="$CYGWIN_ROOT_PATH$input_path" - fi - fi - - - if test "x$path" != "x$new_path"; then - BOOT_JDK="$new_path" - { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5 -$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;} - fi - - elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then - - path="$BOOT_JDK" - has_colon=`$ECHO $path | $GREP ^.:` - new_path="$path" - if test "x$has_colon" = x; then - # Not in mixed or Windows style, start by that. - new_path=`cmd //c echo $path` - fi - - - input_path="$new_path" - # Check if we need to convert this using DOS-style short mode. If the path - # contains just simple characters, use it. Otherwise (spaces, weird characters), - # take no chances and rewrite it. - # Note: m4 eats our [], so we need to use [ and ] instead. - has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]` - if test "x$has_forbidden_chars" != x; then - # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \) - new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - fi - - - windows_path="$new_path" - if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then - unix_path=`$CYGPATH -u "$windows_path"` - new_path="$unix_path" - elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then - unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'` - new_path="$unix_path" - fi - - if test "x$path" != "x$new_path"; then - BOOT_JDK="$new_path" - { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5 -$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;} - fi - - # Save the first 10 bytes of this path to the storage, so fixpath can work. - all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}") - - else - # We're on a posix platform. Hooray! :) - path="$BOOT_JDK" - has_space=`$ECHO "$path" | $GREP " "` - if test "x$has_space" != x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5 -$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;} - as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5 - fi - - # Use eval to expand a potential ~ - eval path="$path" - if test ! -f "$path" && test ! -d "$path"; then - as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5 - fi - - BOOT_JDK="`cd "$path"; $THEPWDCMD -L`" - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5 -$as_echo_n "checking for Boot JDK... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5 -$as_echo "$BOOT_JDK" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5 -$as_echo_n "checking Boot JDK version... " >&6; } - BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5 -$as_echo "$BOOT_JDK_VERSION" >&6; } - fi # end check jdk version - fi # end check rt.jar - fi # end check javac - fi # end check java - fi # end check boot jdk found - fi - - - # Test: Is there a /usr/libexec/java_home? (Typically on MacOSX) - - if test "x$BOOT_JDK_FOUND" = xno; then - # Now execute the test - - if test -x /usr/libexec/java_home; then - BOOT_JDK=`/usr/libexec/java_home` - BOOT_JDK_FOUND=maybe - { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using /usr/libexec/java_home" >&5 -$as_echo "$as_me: Found potential Boot JDK using /usr/libexec/java_home" >&6;} - fi - - - # If previous step claimed to have found a JDK, check it to see if it seems to be valid. - if test "x$BOOT_JDK_FOUND" = xmaybe; then - # Do we have a bin/java? - if test ! -x "$BOOT_JDK/bin/java"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5 -$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;} - BOOT_JDK_FOUND=no - else - # Do we have a bin/javac? - if test ! -x "$BOOT_JDK/bin/javac"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5 -$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5 -$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;} - BOOT_JDK_FOUND=no - else - # Do we have an rt.jar? (On MacOSX it is called classes.jar) - if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5 -$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;} - BOOT_JDK_FOUND=no - else - # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version? - BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` - - # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 -$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -20657,12 +21450,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -20872,12 +21665,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -21052,12 +21845,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -21260,12 +22053,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -21440,12 +22233,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -21648,12 +22441,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -21828,12 +22621,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -22036,12 +22829,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -22216,12 +23009,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -22411,12 +23204,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -22589,12 +23382,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -22785,12 +23578,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -22963,12 +23756,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -23158,12 +23951,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -23336,12 +24129,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -23532,12 +24325,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -23710,12 +24503,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -23887,12 +24680,12 @@ $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.ja BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1` # Extra M4 quote needed to protect [] in grep expression. - FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep '\"1\.[78]\.'` - if test "x$FOUND_VERSION_78" = x; then + FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep '\"1\.[789]\.'` + if test "x$FOUND_CORRECT_VERSION" = x; then { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5 -$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7, 8 or 9)" >&5 +$as_echo "$as_me: (Your Boot JDK must be version 7, 8 or 9)" >&6;} BOOT_JDK_FOUND=no else # We're done! :-) @@ -24093,104 +24886,768 @@ $as_echo "$as_me: This might be fixed by explicitely setting --with-boot-jdk" >& # Setup tools from the Boot JDK. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for java in Boot JDK" >&5 + # Use user overridden value if available, otherwise locate tool in the Boot JDK. + + # Publish this variable in the help. + + + if test "x$JAVA" = x; then + # The variable is not set by user, try to locate tool using the code snippet + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for java in Boot JDK" >&5 $as_echo_n "checking for java in Boot JDK... " >&6; } - JAVA=$BOOT_JDK/bin/java - if test ! -x $JAVA; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 + JAVA=$BOOT_JDK/bin/java + if test ! -x $JAVA; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 $as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} - as_fn_error $? "Could not find java in the Boot JDK" "$LINENO" 5 - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 + as_fn_error $? "Could not find java in the Boot JDK" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for javac in Boot JDK" >&5 + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !JAVA! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!JAVA!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xJAVA" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of JAVA from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of JAVA from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for java in Boot JDK" >&5 +$as_echo_n "checking for java in Boot JDK... " >&6; } + JAVA=$BOOT_JDK/bin/java + if test ! -x $JAVA; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + as_fn_error $? "Could not find java in the Boot JDK" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } + + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$JAVA" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool JAVA=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool JAVA=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_JAVA+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $JAVA in + [\\/]* | ?:[\\/]*) + ac_cv_path_JAVA="$JAVA" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_JAVA="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +JAVA=$ac_cv_path_JAVA +if test -n "$JAVA"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVA" >&5 +$as_echo "$JAVA" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$JAVA" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool JAVA=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool JAVA=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JAVA" >&5 +$as_echo_n "checking for JAVA... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool JAVA=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + + + # Use user overridden value if available, otherwise locate tool in the Boot JDK. + + # Publish this variable in the help. + + + if test "x$JAVAC" = x; then + # The variable is not set by user, try to locate tool using the code snippet + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for javac in Boot JDK" >&5 $as_echo_n "checking for javac in Boot JDK... " >&6; } - JAVAC=$BOOT_JDK/bin/javac - if test ! -x $JAVAC; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 + JAVAC=$BOOT_JDK/bin/javac + if test ! -x $JAVAC; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 $as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} - as_fn_error $? "Could not find javac in the Boot JDK" "$LINENO" 5 - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 + as_fn_error $? "Could not find javac in the Boot JDK" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for javah in Boot JDK" >&5 + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !JAVAC! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!JAVAC!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xJAVAC" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of JAVAC from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of JAVAC from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for javac in Boot JDK" >&5 +$as_echo_n "checking for javac in Boot JDK... " >&6; } + JAVAC=$BOOT_JDK/bin/javac + if test ! -x $JAVAC; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + as_fn_error $? "Could not find javac in the Boot JDK" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } + + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$JAVAC" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool JAVAC=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool JAVAC=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_JAVAC+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $JAVAC in + [\\/]* | ?:[\\/]*) + ac_cv_path_JAVAC="$JAVAC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_JAVAC="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +JAVAC=$ac_cv_path_JAVAC +if test -n "$JAVAC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAC" >&5 +$as_echo "$JAVAC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$JAVAC" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool JAVAC=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool JAVAC=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JAVAC" >&5 +$as_echo_n "checking for JAVAC... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool JAVAC=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + + + # Use user overridden value if available, otherwise locate tool in the Boot JDK. + + # Publish this variable in the help. + + + if test "x$JAVAH" = x; then + # The variable is not set by user, try to locate tool using the code snippet + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for javah in Boot JDK" >&5 $as_echo_n "checking for javah in Boot JDK... " >&6; } - JAVAH=$BOOT_JDK/bin/javah - if test ! -x $JAVAH; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 + JAVAH=$BOOT_JDK/bin/javah + if test ! -x $JAVAH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 $as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} - as_fn_error $? "Could not find javah in the Boot JDK" "$LINENO" 5 - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 + as_fn_error $? "Could not find javah in the Boot JDK" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for javap in Boot JDK" >&5 -$as_echo_n "checking for javap in Boot JDK... " >&6; } - JAVAP=$BOOT_JDK/bin/javap - if test ! -x $JAVAP; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !JAVAH! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!JAVAH!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xJAVAH" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of JAVAH from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of JAVAH from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for javah in Boot JDK" >&5 +$as_echo_n "checking for javah in Boot JDK... " >&6; } + JAVAH=$BOOT_JDK/bin/javah + if test ! -x $JAVAH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 $as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} - as_fn_error $? "Could not find javap in the Boot JDK" "$LINENO" 5 - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 + as_fn_error $? "Could not find javah in the Boot JDK" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jar in Boot JDK" >&5 + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$JAVAH" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool JAVAH=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool JAVAH=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_JAVAH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $JAVAH in + [\\/]* | ?:[\\/]*) + ac_cv_path_JAVAH="$JAVAH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_JAVAH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +JAVAH=$ac_cv_path_JAVAH +if test -n "$JAVAH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAH" >&5 +$as_echo "$JAVAH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$JAVAH" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool JAVAH=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool JAVAH=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JAVAH" >&5 +$as_echo_n "checking for JAVAH... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool JAVAH=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + + + # Use user overridden value if available, otherwise locate tool in the Boot JDK. + + # Publish this variable in the help. + + + if test "x$JAR" = x; then + # The variable is not set by user, try to locate tool using the code snippet + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jar in Boot JDK" >&5 $as_echo_n "checking for jar in Boot JDK... " >&6; } - JAR=$BOOT_JDK/bin/jar - if test ! -x $JAR; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 + JAR=$BOOT_JDK/bin/jar + if test ! -x $JAR; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 $as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} - as_fn_error $? "Could not find jar in the Boot JDK" "$LINENO" 5 - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 + as_fn_error $? "Could not find jar in the Boot JDK" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rmic in Boot JDK" >&5 -$as_echo_n "checking for rmic in Boot JDK... " >&6; } - RMIC=$BOOT_JDK/bin/rmic - if test ! -x $RMIC; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !JAR! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!JAR!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xJAR" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of JAR from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of JAR from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jar in Boot JDK" >&5 +$as_echo_n "checking for jar in Boot JDK... " >&6; } + JAR=$BOOT_JDK/bin/jar + if test ! -x $JAR; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 $as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} - as_fn_error $? "Could not find rmic in the Boot JDK" "$LINENO" 5 - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 + as_fn_error $? "Could not find jar in the Boot JDK" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for native2ascii in Boot JDK" >&5 + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$JAR" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool JAR=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool JAR=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_JAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $JAR in + [\\/]* | ?:[\\/]*) + ac_cv_path_JAR="$JAR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_JAR="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +JAR=$ac_cv_path_JAR +if test -n "$JAR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAR" >&5 +$as_echo "$JAR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$JAR" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool JAR=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool JAR=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JAR" >&5 +$as_echo_n "checking for JAR... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool JAR=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + + + # Use user overridden value if available, otherwise locate tool in the Boot JDK. + + # Publish this variable in the help. + + + if test "x$NATIVE2ASCII" = x; then + # The variable is not set by user, try to locate tool using the code snippet + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for native2ascii in Boot JDK" >&5 $as_echo_n "checking for native2ascii in Boot JDK... " >&6; } - NATIVE2ASCII=$BOOT_JDK/bin/native2ascii - if test ! -x $NATIVE2ASCII; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 + NATIVE2ASCII=$BOOT_JDK/bin/native2ascii + if test ! -x $NATIVE2ASCII; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 $as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} - as_fn_error $? "Could not find native2ascii in the Boot JDK" "$LINENO" 5 - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 + as_fn_error $? "Could not find native2ascii in the Boot JDK" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !NATIVE2ASCII! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!NATIVE2ASCII!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xNATIVE2ASCII" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of NATIVE2ASCII from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of NATIVE2ASCII from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for native2ascii in Boot JDK" >&5 +$as_echo_n "checking for native2ascii in Boot JDK... " >&6; } + NATIVE2ASCII=$BOOT_JDK/bin/native2ascii + if test ! -x $NATIVE2ASCII; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + as_fn_error $? "Could not find native2ascii in the Boot JDK" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } + + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$NATIVE2ASCII" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool NATIVE2ASCII=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool NATIVE2ASCII=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_NATIVE2ASCII+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $NATIVE2ASCII in + [\\/]* | ?:[\\/]*) + ac_cv_path_NATIVE2ASCII="$NATIVE2ASCII" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_NATIVE2ASCII="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +NATIVE2ASCII=$ac_cv_path_NATIVE2ASCII +if test -n "$NATIVE2ASCII"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NATIVE2ASCII" >&5 +$as_echo "$NATIVE2ASCII" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$NATIVE2ASCII" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool NATIVE2ASCII=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool NATIVE2ASCII=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NATIVE2ASCII" >&5 +$as_echo_n "checking for NATIVE2ASCII... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool NATIVE2ASCII=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + + + # Use user overridden value if available, otherwise locate tool in the Boot JDK. + + # Publish this variable in the help. + + + if test "x$JARSIGNER" = x; then + # The variable is not set by user, try to locate tool using the code snippet + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jarsigner in Boot JDK" >&5 +$as_echo_n "checking for jarsigner in Boot JDK... " >&6; } + JARSIGNER=$BOOT_JDK/bin/jarsigner + if test ! -x $JARSIGNER; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + as_fn_error $? "Could not find jarsigner in the Boot JDK" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } + + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !JARSIGNER! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!JARSIGNER!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xJARSIGNER" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of JARSIGNER from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of JARSIGNER from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jarsigner in Boot JDK" >&5 +$as_echo_n "checking for jarsigner in Boot JDK... " >&6; } + JARSIGNER=$BOOT_JDK/bin/jarsigner + if test ! -x $JARSIGNER; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + as_fn_error $? "Could not find jarsigner in the Boot JDK" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } + + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if the provided tool contains a complete path. + tool_specified="$JARSIGNER" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool JARSIGNER=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool JARSIGNER=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_JARSIGNER+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $JARSIGNER in + [\\/]* | ?:[\\/]*) + ac_cv_path_JARSIGNER="$JARSIGNER" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_JARSIGNER="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +JARSIGNER=$ac_cv_path_JARSIGNER +if test -n "$JARSIGNER"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JARSIGNER" >&5 +$as_echo "$JARSIGNER" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$JARSIGNER" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool JARSIGNER=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool JARSIGNER=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JARSIGNER" >&5 +$as_echo_n "checking for JARSIGNER... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool JARSIGNER=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + + # Finally, set some other options... # When compiling code to be executed by the Boot JDK, force jdk7 compatibility. diff --git a/common/autoconf/spec.gmk.in b/common/autoconf/spec.gmk.in index 63fc13ba005..4342d1517ee 100644 --- a/common/autoconf/spec.gmk.in +++ b/common/autoconf/spec.gmk.in @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2014, 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 @@ -438,22 +438,20 @@ POST_MCS_CMD:=@POST_MCS_CMD@ JAVA_FLAGS:=@BOOT_JDK_JVMARGS@ -JAVA=@FIXPATH@ $(BOOT_JDK)/bin/java $(JAVA_FLAGS) +JAVA=@FIXPATH@ @JAVA@ $(JAVA_FLAGS) -JAVAC=@FIXPATH@ $(BOOT_JDK)/bin/javac +JAVAC:=@FIXPATH@ @JAVAC@ # Hotspot sets this variable before reading the SPEC when compiling sa-jdi.jar. Avoid # overriding that value by using ?=. JAVAC_FLAGS?=@JAVAC_FLAGS@ -JAVAH=@FIXPATH@ $(BOOT_JDK)/bin/javah +JAVAH:=@FIXPATH@ @JAVAH@ -JAR=@FIXPATH@ $(BOOT_JDK)/bin/jar +JAR:=@FIXPATH@ @JAR@ -RMIC=@FIXPATH@ $(BOOT_JDK)/bin/rmic +NATIVE2ASCII:=@FIXPATH@ @NATIVE2ASCII@ -NATIVE2ASCII=@FIXPATH@ $(BOOT_JDK)/bin/native2ascii - -JARSIGNER=@FIXPATH@ $(BOOT_JDK)/bin/jarsigner +JARSIGNER:=@FIXPATH@ @JARSIGNER@ # You run the new javac using the boot jdk with $(BOOT_JDK)/bin/java $(NEW_JAVAC) ... BOOTSTRAP_JAVAC_JAR:=$(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar From 5301534dc31502be3d21144b908acb57f0d5ada5 Mon Sep 17 00:00:00 2001 From: Jesper Wilhelmsson Date: Wed, 29 Jan 2014 23:17:05 +0100 Subject: [PATCH 112/158] 8028391: Make the Min/MaxHeapFreeRatio flags manageable Made the flags Min- and MaxHeapFreeRatio manageable, and implemented support for these flags in ParallalGC. Reviewed-by: sla, mgerdin, brutisso --- .../gc_implementation/g1/g1CollectedHeap.cpp | 2 - .../parallelScavenge/psAdaptiveSizePolicy.cpp | 48 ++++++++++++ .../parallelScavenge/psAdaptiveSizePolicy.hpp | 7 +- .../parallelScavenge/psScavenge.cpp | 18 ++++- .../parallelScavenge/psYoungGen.hpp | 6 +- hotspot/src/share/vm/prims/jni.cpp | 2 + hotspot/src/share/vm/runtime/arguments.cpp | 74 +++++++++++++++---- hotspot/src/share/vm/runtime/arguments.hpp | 19 ++++- hotspot/src/share/vm/runtime/globals.hpp | 12 +-- .../src/share/vm/services/attachListener.cpp | 14 ++++ hotspot/src/share/vm/services/management.cpp | 12 +++ 11 files changed, 178 insertions(+), 36 deletions(-) diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp index e3e9303871f..ba1fab4ffcd 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -1575,8 +1575,6 @@ void G1CollectedHeap::do_full_collection(bool clear_all_soft_refs) { void G1CollectedHeap:: resize_if_necessary_after_full_collection(size_t word_size) { - assert(MinHeapFreeRatio <= MaxHeapFreeRatio, "sanity check"); - // Include the current allocation, if any, and bytes that will be // pre-allocated to support collections, as "used". const size_t used_after_gc = used(); diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp index a1b84ced957..5b3dd89e7b3 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp" #include "gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp" #include "gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp" #include "gc_implementation/parallelScavenge/psScavenge.hpp" @@ -76,6 +77,38 @@ PSAdaptiveSizePolicy::PSAdaptiveSizePolicy(size_t init_eden_size, _old_gen_policy_is_ready = false; } +size_t PSAdaptiveSizePolicy::calculate_free_based_on_live(size_t live, uintx ratio_as_percentage) { + // We want to calculate how much free memory there can be based on the + // amount of live data currently in the old gen. Using the formula: + // ratio * (free + live) = free + // Some equation solving later we get: + // free = (live * ratio) / (1 - ratio) + + const double ratio = ratio_as_percentage / 100.0; + const double ratio_inverse = 1.0 - ratio; + const double tmp = live * ratio; + size_t free = (size_t)(tmp / ratio_inverse); + + return free; +} + +size_t PSAdaptiveSizePolicy::calculated_old_free_size_in_bytes() const { + size_t free_size = (size_t)(_promo_size + avg_promoted()->padded_average()); + size_t live = ParallelScavengeHeap::heap()->old_gen()->used_in_bytes(); + + if (MinHeapFreeRatio != 0) { + size_t min_free = calculate_free_based_on_live(live, MinHeapFreeRatio); + free_size = MAX2(free_size, min_free); + } + + if (MaxHeapFreeRatio != 100) { + size_t max_free = calculate_free_based_on_live(live, MaxHeapFreeRatio); + free_size = MIN2(max_free, free_size); + } + + return free_size; +} + void PSAdaptiveSizePolicy::major_collection_begin() { // Update the interval time _major_timer.stop(); @@ -1292,3 +1325,18 @@ bool PSAdaptiveSizePolicy::print_adaptive_size_policy_on(outputStream* st) st, PSScavenge::tenuring_threshold()); } + +#ifndef PRODUCT + +void TestOldFreeSpaceCalculation_test() { + assert(PSAdaptiveSizePolicy::calculate_free_based_on_live(100, 20) == 25, "Calculation of free memory failed"); + assert(PSAdaptiveSizePolicy::calculate_free_based_on_live(100, 50) == 100, "Calculation of free memory failed"); + assert(PSAdaptiveSizePolicy::calculate_free_based_on_live(100, 60) == 150, "Calculation of free memory failed"); + assert(PSAdaptiveSizePolicy::calculate_free_based_on_live(100, 75) == 300, "Calculation of free memory failed"); + assert(PSAdaptiveSizePolicy::calculate_free_based_on_live(400, 20) == 100, "Calculation of free memory failed"); + assert(PSAdaptiveSizePolicy::calculate_free_based_on_live(400, 50) == 400, "Calculation of free memory failed"); + assert(PSAdaptiveSizePolicy::calculate_free_based_on_live(400, 60) == 600, "Calculation of free memory failed"); + assert(PSAdaptiveSizePolicy::calculate_free_based_on_live(400, 75) == 1200, "Calculation of free memory failed"); +} + +#endif /* !PRODUCT */ diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp index 674773b243f..24f0ed473b9 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp @@ -240,7 +240,6 @@ class PSAdaptiveSizePolicy : public AdaptiveSizePolicy { void major_collection_begin(); void major_collection_end(size_t amount_live, GCCause::Cause gc_cause); - // void tenured_allocation(size_t size) { _avg_pretenured->sample(size); } @@ -248,9 +247,9 @@ class PSAdaptiveSizePolicy : public AdaptiveSizePolicy { // Accessors // NEEDS_CLEANUP should use sizes.hpp - size_t calculated_old_free_size_in_bytes() const { - return (size_t)(_promo_size + avg_promoted()->padded_average()); - } + static size_t calculate_free_based_on_live(size_t live, uintx ratio_as_percentage); + + size_t calculated_old_free_size_in_bytes() const; size_t average_old_live_in_bytes() const { return (size_t) avg_old_live()->average(); diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp index ed2c32155c5..a708d8ebb72 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp @@ -529,8 +529,19 @@ bool PSScavenge::invoke_no_policy() { counters->update_survivor_overflowed(_survivor_overflow); } + size_t max_young_size = young_gen->max_size(); + + // Deciding a free ratio in the young generation is tricky, so if + // MinHeapFreeRatio or MaxHeapFreeRatio are in use (implicating + // that the old generation size may have been limited because of them) we + // should then limit our young generation size using NewRatio to have it + // follow the old generation size. + if (MinHeapFreeRatio != 0 || MaxHeapFreeRatio != 100) { + max_young_size = MIN2(old_gen->capacity_in_bytes() / NewRatio, young_gen->max_size()); + } + size_t survivor_limit = - size_policy->max_survivor_size(young_gen->max_size()); + size_policy->max_survivor_size(max_young_size); _tenuring_threshold = size_policy->compute_survivor_space_size_and_threshold( _survivor_overflow, @@ -553,8 +564,7 @@ bool PSScavenge::invoke_no_policy() { // Do call at minor collections? // Don't check if the size_policy is ready at this // level. Let the size_policy check that internally. - if (UseAdaptiveSizePolicy && - UseAdaptiveGenerationSizePolicyAtMinorCollection && + if (UseAdaptiveGenerationSizePolicyAtMinorCollection && ((gc_cause != GCCause::_java_lang_system_gc) || UseAdaptiveSizePolicyWithSystemGC)) { @@ -568,7 +578,7 @@ bool PSScavenge::invoke_no_policy() { size_t eden_live = young_gen->eden_space()->used_in_bytes(); size_t cur_eden = young_gen->eden_space()->capacity_in_bytes(); size_t max_old_gen_size = old_gen->max_gen_size(); - size_t max_eden_size = young_gen->max_size() - + size_t max_eden_size = max_young_size - young_gen->from_space()->capacity_in_bytes() - young_gen->to_space()->capacity_in_bytes(); diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.hpp index 6bc8ef73753..e3da6bdf2b8 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.hpp @@ -127,7 +127,7 @@ class PSYoungGen : public CHeapObj { void adjust_pointers(); void compact(); - // Called during/after gc + // Called during/after GC void swap_spaces(); // Resize generation using suggested free space size and survivor size @@ -146,14 +146,14 @@ class PSYoungGen : public CHeapObj { size_t free_in_words() const; // The max this generation can grow to - size_t max_size() const { return _reserved.byte_size(); } + size_t max_size() const { return _reserved.byte_size(); } // The max this generation can grow to if the boundary between // the generations are allowed to move. size_t gen_size_limit() const { return _max_gen_size; } bool is_maximal_no_gc() const { - return true; // never expands except at a GC + return true; // Never expands except at a GC } // Allocation diff --git a/hotspot/src/share/vm/prims/jni.cpp b/hotspot/src/share/vm/prims/jni.cpp index 449ed679847..f3b65ec92e9 100644 --- a/hotspot/src/share/vm/prims/jni.cpp +++ b/hotspot/src/share/vm/prims/jni.cpp @@ -5061,6 +5061,7 @@ void TestVirtualSpace_test(); void TestMetaspaceAux_test(); void TestMetachunk_test(); void TestVirtualSpaceNode_test(); +void TestOldFreeSpaceCalculation_test(); #if INCLUDE_ALL_GCS void TestG1BiasedArray_test(); #endif @@ -5081,6 +5082,7 @@ void execute_internal_vm_tests() { run_unit_test(QuickSort::test_quick_sort()); run_unit_test(AltHashing::test_alt_hash()); run_unit_test(test_loggc_filename()); + run_unit_test(TestOldFreeSpaceCalculation_test()); #if INCLUDE_VM_STRUCTS run_unit_test(VMStructs::test()); #endif diff --git a/hotspot/src/share/vm/runtime/arguments.cpp b/hotspot/src/share/vm/runtime/arguments.cpp index 0ba3e4e33a1..b0289b9d588 100644 --- a/hotspot/src/share/vm/runtime/arguments.cpp +++ b/hotspot/src/share/vm/runtime/arguments.cpp @@ -1569,6 +1569,16 @@ void Arguments::set_parallel_gc_flags() { vm_exit(1); } + if (UseAdaptiveSizePolicy) { + // We don't want to limit adaptive heap sizing's freedom to adjust the heap + // unless the user actually sets these flags. + if (FLAG_IS_DEFAULT(MinHeapFreeRatio)) { + FLAG_SET_DEFAULT(MinHeapFreeRatio, 0); + } + if (FLAG_IS_DEFAULT(MaxHeapFreeRatio)) { + FLAG_SET_DEFAULT(MaxHeapFreeRatio, 100); + } + } // If InitialSurvivorRatio or MinSurvivorRatio were not specified, but the // SurvivorRatio has been set, reset their default values to SurvivorRatio + @@ -1844,7 +1854,7 @@ bool Arguments::verify_min_value(intx val, intx min, const char* name) { } bool Arguments::verify_percentage(uintx value, const char* name) { - if (value <= 100) { + if (is_percentage(value)) { return true; } jio_fprintf(defaultStream::error_stream(), @@ -1932,6 +1942,34 @@ bool is_filename_valid(const char *file_name) { return count_p < 2 && count_t < 2; } +bool Arguments::verify_MinHeapFreeRatio(FormatBuffer<80>& err_msg, uintx min_heap_free_ratio) { + if (!is_percentage(min_heap_free_ratio)) { + err_msg.print("MinHeapFreeRatio must have a value between 0 and 100"); + return false; + } + if (min_heap_free_ratio > MaxHeapFreeRatio) { + err_msg.print("MinHeapFreeRatio (" UINTX_FORMAT ") must be less than or " + "equal to MaxHeapFreeRatio (" UINTX_FORMAT ")", min_heap_free_ratio, + MaxHeapFreeRatio); + return false; + } + return true; +} + +bool Arguments::verify_MaxHeapFreeRatio(FormatBuffer<80>& err_msg, uintx max_heap_free_ratio) { + if (!is_percentage(max_heap_free_ratio)) { + err_msg.print("MaxHeapFreeRatio must have a value between 0 and 100"); + return false; + } + if (max_heap_free_ratio < MinHeapFreeRatio) { + err_msg.print("MaxHeapFreeRatio (" UINTX_FORMAT ") must be greater than or " + "equal to MinHeapFreeRatio (" UINTX_FORMAT ")", max_heap_free_ratio, + MinHeapFreeRatio); + return false; + } + return true; +} + // Check consistency of GC selection bool Arguments::check_gc_consistency() { check_gclog_consistency(); @@ -2037,8 +2075,6 @@ bool Arguments::check_vm_args_consistency() { status = status && verify_interval(AdaptiveSizePolicyWeight, 0, 100, "AdaptiveSizePolicyWeight"); status = status && verify_percentage(ThresholdTolerance, "ThresholdTolerance"); - status = status && verify_percentage(MinHeapFreeRatio, "MinHeapFreeRatio"); - status = status && verify_percentage(MaxHeapFreeRatio, "MaxHeapFreeRatio"); // Divide by bucket size to prevent a large size from causing rollover when // calculating amount of memory needed to be allocated for the String table. @@ -2048,15 +2084,19 @@ bool Arguments::check_vm_args_consistency() { status = status && verify_interval(SymbolTableSize, minimumSymbolTableSize, (max_uintx / SymbolTable::bucket_size()), "SymbolTable size"); - if (MinHeapFreeRatio > MaxHeapFreeRatio) { - jio_fprintf(defaultStream::error_stream(), - "MinHeapFreeRatio (" UINTX_FORMAT ") must be less than or " - "equal to MaxHeapFreeRatio (" UINTX_FORMAT ")\n", - MinHeapFreeRatio, MaxHeapFreeRatio); - status = false; + { + // Using "else if" below to avoid printing two error messages if min > max. + // This will also prevent us from reporting both min>100 and max>100 at the + // same time, but that is less annoying than printing two identical errors IMHO. + FormatBuffer<80> err_msg(""); + if (!verify_MinHeapFreeRatio(err_msg, MinHeapFreeRatio)) { + jio_fprintf(defaultStream::error_stream(), "%s\n", err_msg.buffer()); + status = false; + } else if (!verify_MaxHeapFreeRatio(err_msg, MaxHeapFreeRatio)) { + jio_fprintf(defaultStream::error_stream(), "%s\n", err_msg.buffer()); + status = false; + } } - // Keeping the heap 100% free is hard ;-) so limit it to 99%. - MinHeapFreeRatio = MIN2(MinHeapFreeRatio, (uintx) 99); // Min/MaxMetaspaceFreeRatio status = status && verify_percentage(MinMetaspaceFreeRatio, "MinMetaspaceFreeRatio"); @@ -2689,7 +2729,7 @@ jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args, } else if (match_option(option, "-Xmaxf", &tail)) { char* err; int maxf = (int)(strtod(tail, &err) * 100); - if (*err != '\0' || maxf < 0 || maxf > 100) { + if (*err != '\0' || *tail == '\0' || maxf < 0 || maxf > 100) { jio_fprintf(defaultStream::error_stream(), "Bad max heap free percentage size: %s\n", option->optionString); @@ -2701,7 +2741,7 @@ jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args, } else if (match_option(option, "-Xminf", &tail)) { char* err; int minf = (int)(strtod(tail, &err) * 100); - if (*err != '\0' || minf < 0 || minf > 100) { + if (*err != '\0' || *tail == '\0' || minf < 0 || minf > 100) { jio_fprintf(defaultStream::error_stream(), "Bad min heap free percentage size: %s\n", option->optionString); @@ -3646,9 +3686,9 @@ jint Arguments::apply_ergo() { // Set per-collector flags if (UseParallelGC || UseParallelOldGC) { set_parallel_gc_flags(); - } else if (UseConcMarkSweepGC) { // should be done before ParNew check below + } else if (UseConcMarkSweepGC) { // Should be done before ParNew check below set_cms_and_parnew_gc_flags(); - } else if (UseParNewGC) { // skipped if CMS is set above + } else if (UseParNewGC) { // Skipped if CMS is set above set_parnew_gc_flags(); } else if (UseG1GC) { set_g1_gc_flags(); @@ -3662,6 +3702,10 @@ jint Arguments::apply_ergo() { " using -XX:ParallelGCThreads=N"); } } + if (MinHeapFreeRatio == 100) { + // Keeping the heap 100% free is hard ;-) so limit it to 99%. + FLAG_SET_ERGO(uintx, MinHeapFreeRatio, 99); + } #else // INCLUDE_ALL_GCS assert(verify_serial_gc_flags(), "SerialGC unset"); #endif // INCLUDE_ALL_GCS diff --git a/hotspot/src/share/vm/runtime/arguments.hpp b/hotspot/src/share/vm/runtime/arguments.hpp index d6a6466f73c..19aba5ea17a 100644 --- a/hotspot/src/share/vm/runtime/arguments.hpp +++ b/hotspot/src/share/vm/runtime/arguments.hpp @@ -27,6 +27,7 @@ #include "runtime/java.hpp" #include "runtime/perfData.hpp" +#include "utilities/debug.hpp" #include "utilities/top.hpp" // Arguments parses the command line and recognizes options @@ -370,11 +371,16 @@ class Arguments : AllStatic { static jint parse_vm_init_args(const JavaVMInitArgs* args); static jint parse_each_vm_init_arg(const JavaVMInitArgs* args, SysClassPath* scp_p, bool* scp_assembly_required_p, Flag::Flags origin); static jint finalize_vm_init_args(SysClassPath* scp_p, bool scp_assembly_required); - static bool is_bad_option(const JavaVMOption* option, jboolean ignore, - const char* option_type); + static bool is_bad_option(const JavaVMOption* option, jboolean ignore, const char* option_type); + static bool is_bad_option(const JavaVMOption* option, jboolean ignore) { return is_bad_option(option, ignore, NULL); } + + static bool is_percentage(uintx val) { + return val <= 100; + } + static bool verify_interval(uintx val, uintx min, uintx max, const char* name); static bool verify_min_value(intx val, intx min, const char* name); @@ -440,6 +446,15 @@ class Arguments : AllStatic { static jint apply_ergo(); // Adjusts the arguments after the OS have adjusted the arguments static jint adjust_after_os(); + + // Verifies that the given value will fit as a MinHeapFreeRatio. If not, an error + // message is returned in the provided buffer. + static bool verify_MinHeapFreeRatio(FormatBuffer<80>& err_msg, uintx min_heap_free_ratio); + + // Verifies that the given value will fit as a MaxHeapFreeRatio. If not, an error + // message is returned in the provided buffer. + static bool verify_MaxHeapFreeRatio(FormatBuffer<80>& err_msg, uintx max_heap_free_ratio); + // Check for consistency in the selection of the garbage collector. static bool check_gc_consistency(); static void check_deprecated_gcs(); diff --git a/hotspot/src/share/vm/runtime/globals.hpp b/hotspot/src/share/vm/runtime/globals.hpp index da65a146848..0a31551d019 100644 --- a/hotspot/src/share/vm/runtime/globals.hpp +++ b/hotspot/src/share/vm/runtime/globals.hpp @@ -3135,15 +3135,15 @@ class CommandLineFlags { "Maximum size of class area in Metaspace when compressed " \ "class pointers are used") \ \ - product(uintx, MinHeapFreeRatio, 40, \ + manageable(uintx, MinHeapFreeRatio, 40, \ "The minimum percentage of heap free after GC to avoid expansion."\ - " For most GCs this applies to the old generation. In G1 it" \ - " applies to the whole heap. Not supported by ParallelGC.") \ + " For most GCs this applies to the old generation. In G1 and" \ + " ParallelGC it applies to the whole heap.") \ \ - product(uintx, MaxHeapFreeRatio, 70, \ + manageable(uintx, MaxHeapFreeRatio, 70, \ "The maximum percentage of heap free after GC to avoid shrinking."\ - " For most GCs this applies to the old generation. In G1 it" \ - " applies to the whole heap. Not supported by ParallelGC.") \ + " For most GCs this applies to the old generation. In G1 and" \ + " ParallelGC it applies to the whole heap.") \ \ product(intx, SoftRefLRUPolicyMSPerMB, 1000, \ "Number of milliseconds per MB of free space in the heap") \ diff --git a/hotspot/src/share/vm/services/attachListener.cpp b/hotspot/src/share/vm/services/attachListener.cpp index 5dd6a7a0ea9..e7d8c380951 100644 --- a/hotspot/src/share/vm/services/attachListener.cpp +++ b/hotspot/src/share/vm/services/attachListener.cpp @@ -282,6 +282,20 @@ static jint set_uintx_flag(const char* name, AttachOperation* op, outputStream* return JNI_ERR; } } + + if (strncmp(name, "MaxHeapFreeRatio", 17) == 0) { + FormatBuffer<80> err_msg(""); + if (!Arguments::verify_MaxHeapFreeRatio(err_msg, value)) { + out->print_cr(err_msg.buffer()); + return JNI_ERR; + } + } else if (strncmp(name, "MinHeapFreeRatio", 17) == 0) { + FormatBuffer<80> err_msg(""); + if (!Arguments::verify_MinHeapFreeRatio(err_msg, value)) { + out->print_cr(err_msg.buffer()); + return JNI_ERR; + } + } bool res = CommandLineFlags::uintxAtPut((char*)name, &value, Flag::ATTACH_ON_DEMAND); if (! res) { out->print_cr("setting flag %s failed", name); diff --git a/hotspot/src/share/vm/services/management.cpp b/hotspot/src/share/vm/services/management.cpp index 404f57c9c55..aae6bc61bb7 100644 --- a/hotspot/src/share/vm/services/management.cpp +++ b/hotspot/src/share/vm/services/management.cpp @@ -1833,6 +1833,18 @@ JVM_ENTRY(void, jmm_SetVMGlobal(JNIEnv *env, jstring flag_name, jvalue new_value succeed = CommandLineFlags::intxAtPut(name, &ivalue, Flag::MANAGEMENT); } else if (flag->is_uintx()) { uintx uvalue = (uintx)new_value.j; + + if (strncmp(name, "MaxHeapFreeRatio", 17) == 0) { + FormatBuffer<80> err_msg(""); + if (!Arguments::verify_MaxHeapFreeRatio(err_msg, uvalue)) { + THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), err_msg.buffer()); + } + } else if (strncmp(name, "MinHeapFreeRatio", 17) == 0) { + FormatBuffer<80> err_msg(""); + if (!Arguments::verify_MinHeapFreeRatio(err_msg, uvalue)) { + THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), err_msg.buffer()); + } + } succeed = CommandLineFlags::uintxAtPut(name, &uvalue, Flag::MANAGEMENT); } else if (flag->is_uint64_t()) { uint64_t uvalue = (uint64_t)new_value.j; From 3d9115510cebf8b94c5cc3b29a105a2f144e0d10 Mon Sep 17 00:00:00 2001 From: Athijegannathan Sundararajan Date: Thu, 30 Jan 2014 18:26:15 +0530 Subject: [PATCH 113/158] 8032943: Improve reflection in Nashorn Reviewed-by: jlaskey, attila, ahgross --- .../internal/objects/NativeObject.java | 3 +- nashorn/test/script/sandbox/classbind.js | 41 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 nashorn/test/script/sandbox/classbind.js diff --git a/nashorn/src/jdk/nashorn/internal/objects/NativeObject.java b/nashorn/src/jdk/nashorn/internal/objects/NativeObject.java index 5777c96c870..74d56ba614b 100644 --- a/nashorn/src/jdk/nashorn/internal/objects/NativeObject.java +++ b/nashorn/src/jdk/nashorn/internal/objects/NativeObject.java @@ -645,10 +645,12 @@ public final class NativeObject { targetObj.addBoundProperties(source, props); } else if (source instanceof StaticClass) { final Class clazz = ((StaticClass)source).getRepresentedClass(); + Bootstrap.checkReflectionAccess(clazz); bindBeanProperties(targetObj, source, BeansLinker.getReadableStaticPropertyNames(clazz), BeansLinker.getWritableStaticPropertyNames(clazz), BeansLinker.getStaticMethodNames(clazz)); } else { final Class clazz = source.getClass(); + Bootstrap.checkReflectionAccess(clazz); bindBeanProperties(targetObj, source, BeansLinker.getReadableInstancePropertyNames(clazz), BeansLinker.getWritableInstancePropertyNames(clazz), BeansLinker.getInstanceMethodNames(clazz)); } @@ -663,7 +665,6 @@ public final class NativeObject { propertyNames.addAll(writablePropertyNames); final Class clazz = source.getClass(); - Bootstrap.checkReflectionAccess(clazz); final MethodType getterType = MethodType.methodType(Object.class, clazz); final MethodType setterType = MethodType.methodType(Object.class, clazz, Object.class); diff --git a/nashorn/test/script/sandbox/classbind.js b/nashorn/test/script/sandbox/classbind.js new file mode 100644 index 00000000000..2dabb3e23d8 --- /dev/null +++ b/nashorn/test/script/sandbox/classbind.js @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2010, 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. + * + * 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. + */ + +/** + * Try to bind properties of StaticClass representing Class. + * + * @test + * @bug JDK-8032943: Improve reflection in Nashorn + */ + + +var obj = {} + +try { + Object.bindProperties(obj, Java.type("java.lang.Class")); + fail("SecurityException should have been thrown"); +} catch (e) { + if (! (e instanceof java.lang.SecurityException)) { + fail("SecurityException expected, got " + e); + } +} From 6d897ac7a88cbca14bd67ac62c02509c823d8b8a Mon Sep 17 00:00:00 2001 From: Athijegannathan Sundararajan Date: Thu, 30 Jan 2014 18:49:47 +0530 Subject: [PATCH 114/158] 8032954: Nashorn: extend Java.extend Reviewed-by: jlaskey, attila, ahgross --- .../runtime/linker/JavaAdapterFactory.java | 2 ++ nashorn/test/script/sandbox/classloader.js | 22 +++++++++++++++++++ .../script/sandbox/classloader.js.EXPECTED | 2 ++ 3 files changed, 26 insertions(+) diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java index b221d000034..878c0058c76 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java @@ -110,6 +110,8 @@ public final class JavaAdapterFactory { for (Class type : types) { // check for restricted package access Context.checkPackageAccess(type); + // check for classes, interfaces in reflection + ReflectionCheckLinker.checkReflectionAccess(type); } } return getAdapterInfo(types).getAdapterClassFor(classOverrides); diff --git a/nashorn/test/script/sandbox/classloader.js b/nashorn/test/script/sandbox/classloader.js index 7676496060d..9de1a5c37f2 100644 --- a/nashorn/test/script/sandbox/classloader.js +++ b/nashorn/test/script/sandbox/classloader.js @@ -26,6 +26,7 @@ * * @test * @security + * @bug JDK-8032954: Nashorn: extend Java.extend */ try { @@ -39,3 +40,24 @@ try { } } +try { + Java.extend(Java.type('java.lang.ClassLoader')); + fail("should have thrown SecurityException"); +} catch (e) { + if (e instanceof java.lang.SecurityException) { + print(e); + } else { + fail("expected SecurityException, got " + e); + } +} + +try { + Java.extend(Java.type("javax.management.loading.MLet")); + fail("should have thrown SecurityException"); +} catch (e) { + if (e instanceof java.lang.SecurityException) { + print(e); + } else { + fail("expected SecurityException, got " + e); + } +} diff --git a/nashorn/test/script/sandbox/classloader.js.EXPECTED b/nashorn/test/script/sandbox/classloader.js.EXPECTED index 356053d4e1d..8c241912f36 100644 --- a/nashorn/test/script/sandbox/classloader.js.EXPECTED +++ b/nashorn/test/script/sandbox/classloader.js.EXPECTED @@ -1 +1,3 @@ java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "nashorn.JavaReflection") +java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "nashorn.JavaReflection") +java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "nashorn.JavaReflection") From ea24aa581b4702756773505782f160263c7f31db Mon Sep 17 00:00:00 2001 From: Athijegannathan Sundararajan Date: Thu, 30 Jan 2014 19:28:40 +0530 Subject: [PATCH 115/158] 8032948: Nashorn linkages awry Reviewed-by: jlaskey, attila, ahgross --- .../internal/objects/NativeObject.java | 4 +- .../internal/runtime/linker/Bootstrap.java | 5 +- .../runtime/linker/JavaAdapterFactory.java | 2 +- .../linker/NashornStaticClassLinker.java | 2 +- .../runtime/linker/ReflectionCheckLinker.java | 23 ++++- .../scripting/ScriptEngineSecurityTest.java | 97 +++++++++++++++++++ .../api/scripting/ScriptEngineTest.java | 25 +++++ 7 files changed, 150 insertions(+), 8 deletions(-) diff --git a/nashorn/src/jdk/nashorn/internal/objects/NativeObject.java b/nashorn/src/jdk/nashorn/internal/objects/NativeObject.java index 74d56ba614b..d102c0fb011 100644 --- a/nashorn/src/jdk/nashorn/internal/objects/NativeObject.java +++ b/nashorn/src/jdk/nashorn/internal/objects/NativeObject.java @@ -645,12 +645,12 @@ public final class NativeObject { targetObj.addBoundProperties(source, props); } else if (source instanceof StaticClass) { final Class clazz = ((StaticClass)source).getRepresentedClass(); - Bootstrap.checkReflectionAccess(clazz); + Bootstrap.checkReflectionAccess(clazz, true); bindBeanProperties(targetObj, source, BeansLinker.getReadableStaticPropertyNames(clazz), BeansLinker.getWritableStaticPropertyNames(clazz), BeansLinker.getStaticMethodNames(clazz)); } else { final Class clazz = source.getClass(); - Bootstrap.checkReflectionAccess(clazz); + Bootstrap.checkReflectionAccess(clazz, false); bindBeanProperties(targetObj, source, BeansLinker.getReadableInstancePropertyNames(clazz), BeansLinker.getWritableInstancePropertyNames(clazz), BeansLinker.getInstanceMethodNames(clazz)); } diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/Bootstrap.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/Bootstrap.java index 0d5f68a1e2f..c8f39fcfaca 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/Bootstrap.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/Bootstrap.java @@ -278,9 +278,10 @@ public final class Bootstrap { * {@code java.lang.invoke} package, as well a {@link Class} and any subclass of {@link ClassLoader}) and there is * a security manager in the system, then it checks the {@code nashorn.JavaReflection} {@code RuntimePermission}. * @param clazz the class being tested + * @param isStatic is access checked for static members (or instance members) */ - public static void checkReflectionAccess(Class clazz) { - ReflectionCheckLinker.checkReflectionAccess(clazz); + public static void checkReflectionAccess(Class clazz, boolean isStatic) { + ReflectionCheckLinker.checkReflectionAccess(clazz, isStatic); } /** diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java index 878c0058c76..ccb2c87982e 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java @@ -111,7 +111,7 @@ public final class JavaAdapterFactory { // check for restricted package access Context.checkPackageAccess(type); // check for classes, interfaces in reflection - ReflectionCheckLinker.checkReflectionAccess(type); + ReflectionCheckLinker.checkReflectionAccess(type, true); } } return getAdapterInfo(types).getAdapterClassFor(classOverrides); diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java index 72ed97666d0..21e2d14eb4e 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java @@ -65,7 +65,7 @@ final class NashornStaticClassLinker implements TypeBasedGuardingDynamicLinker { return null; } final Class receiverClass = ((StaticClass) self).getRepresentedClass(); - Bootstrap.checkReflectionAccess(receiverClass); + Bootstrap.checkReflectionAccess(receiverClass, true); final CallSiteDescriptor desc = request.getCallSiteDescriptor(); // We intercept "new" on StaticClass instances to provide additional capabilities if ("new".equals(desc.getNameToken(CallSiteDescriptor.OPERATOR))) { diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/ReflectionCheckLinker.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/ReflectionCheckLinker.java index 6772cbee037..8fc76c19ed6 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/ReflectionCheckLinker.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/ReflectionCheckLinker.java @@ -26,6 +26,7 @@ package jdk.nashorn.internal.runtime.linker; import java.lang.reflect.Modifier; +import java.lang.reflect.Proxy; import jdk.internal.dynalink.CallSiteDescriptor; import jdk.internal.dynalink.linker.GuardedInvocation; import jdk.internal.dynalink.linker.LinkRequest; @@ -47,6 +48,7 @@ final class ReflectionCheckLinker implements TypeBasedGuardingDynamicLinker{ if (type == Class.class || ClassLoader.class.isAssignableFrom(type)) { return true; } + final String name = type.getName(); return name.startsWith("java.lang.reflect.") || name.startsWith("java.lang.invoke."); } @@ -59,9 +61,25 @@ final class ReflectionCheckLinker implements TypeBasedGuardingDynamicLinker{ return null; } - static void checkReflectionAccess(Class clazz) { + private static boolean isReflectiveCheckNeeded(final Class type, final boolean isStatic) { + // special handling for Proxy subclasses + if (Proxy.class.isAssignableFrom(type)) { + if (Proxy.isProxyClass(type)) { + // real Proxy class - filter only static access + return isStatic; + } + + // fake Proxy subclass - filter it always! + return true; + } + + // check for any other reflective Class + return isReflectionClass(type); + } + + static void checkReflectionAccess(final Class clazz, final boolean isStatic) { final SecurityManager sm = System.getSecurityManager(); - if (sm != null && isReflectionClass(clazz)) { + if (sm != null && isReflectiveCheckNeeded(clazz, isStatic)) { checkReflectionPermission(sm); } } @@ -78,6 +96,7 @@ final class ReflectionCheckLinker implements TypeBasedGuardingDynamicLinker{ if (desc.getNameTokenCount() > CallSiteDescriptor.NAME_OPERAND && "static".equals(desc.getNameToken(CallSiteDescriptor.NAME_OPERAND))) { if (Context.isAccessibleClass((Class)self) && !isReflectionClass((Class)self)) { + // If "getProp:static" passes access checks, allow access. return; } diff --git a/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineSecurityTest.java b/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineSecurityTest.java index 4f036101bfa..9cea21ba2f5 100644 --- a/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineSecurityTest.java +++ b/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineSecurityTest.java @@ -27,6 +27,9 @@ package jdk.nashorn.api.scripting; import static org.testng.Assert.fail; +import java.lang.reflect.Method; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Proxy; import java.util.Objects; import javax.script.Invocable; import javax.script.ScriptEngine; @@ -183,4 +186,98 @@ public class ScriptEngineSecurityTest { } } } + + // @bug 8032948: Nashorn linkages awry + public static class FakeProxy extends Proxy { + public FakeProxy(InvocationHandler ih) { + super(ih); + } + + public static Class makeProxyClass(ClassLoader cl, Class... ifaces) { + return Proxy.getProxyClass(cl, ifaces); + } + } + + @Test + public void fakeProxySubclassAccessCheckTest() throws ScriptException { + if (System.getSecurityManager() == null) { + // pass vacuously + return; + } + + final ScriptEngineManager m = new ScriptEngineManager(); + final ScriptEngine e = m.getEngineByName("nashorn"); + + e.put("name", ScriptEngineSecurityTest.class.getName()); + e.put("cl", ScriptEngineSecurityTest.class.getClassLoader()); + e.put("intfs", new Class[] { Runnable.class }); + + String getClass = "Java.type(name + '$FakeProxy').getProxyClass(cl, intfs);"; + + // Should not be able to call static methods of Proxy via fake subclass + try { + Class c = (Class)e.eval(getClass); + fail("should have thrown SecurityException"); + } catch (final Exception exp) { + if (! (exp instanceof SecurityException)) { + fail("SecurityException expected, got " + exp); + } + } + } + + @Test + public void fakeProxySubclassAccessCheckTest2() throws ScriptException { + if (System.getSecurityManager() == null) { + // pass vacuously + return; + } + + final ScriptEngineManager m = new ScriptEngineManager(); + final ScriptEngine e = m.getEngineByName("nashorn"); + + e.put("name", ScriptEngineSecurityTest.class.getName()); + e.put("cl", ScriptEngineSecurityTest.class.getClassLoader()); + e.put("intfs", new Class[] { Runnable.class }); + + String getClass = "Java.type(name + '$FakeProxy').makeProxyClass(cl, intfs);"; + + // Should not be able to call static methods of Proxy via fake subclass + try { + Class c = (Class)e.eval(getClass); + fail("should have thrown SecurityException"); + } catch (final Exception exp) { + if (! (exp instanceof SecurityException)) { + fail("SecurityException expected, got " + exp); + } + } + } + + @Test + public static void proxyStaticAccessCheckTest() throws ScriptException { + final ScriptEngineManager m = new ScriptEngineManager(); + final ScriptEngine e = m.getEngineByName("nashorn"); + final Runnable r = (Runnable)Proxy.newProxyInstance( + ScriptEngineTest.class.getClassLoader(), + new Class[] { Runnable.class }, + new InvocationHandler() { + @Override + public Object invoke(Object p, Method m, Object[] a) { + return null; + } + }); + + e.put("rc", r.getClass()); + e.put("cl", ScriptEngineSecurityTest.class.getClassLoader()); + e.put("intfs", new Class[] { Runnable.class }); + + // make sure static methods of Proxy is not accessible via subclass + try { + e.eval("rc.static.getProxyClass(cl, intfs)"); + fail("Should have thrown SecurityException"); + } catch (final Exception exp) { + if (! (exp instanceof SecurityException)) { + fail("SecurityException expected, got " + exp); + } + } + } } diff --git a/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java b/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java index 2c7df64d4b6..df8696d8e4c 100644 --- a/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java +++ b/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java @@ -33,7 +33,9 @@ import static org.testng.Assert.fail; import java.io.PrintWriter; import java.io.StringReader; import java.io.StringWriter; +import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; +import java.lang.reflect.Proxy; import java.util.concurrent.Callable; import javax.script.Compilable; import javax.script.CompiledScript; @@ -535,6 +537,29 @@ public class ScriptEngineTest { assertEquals(e.eval("Window.funcJSObject(obj)"), "hello"); } + // @bug 8032948: Nashorn linkages awry + @Test + public void checkProxyAccess() throws ScriptException { + final ScriptEngineManager m = new ScriptEngineManager(); + final ScriptEngine e = m.getEngineByName("nashorn"); + final boolean[] reached = new boolean[1]; + final Runnable r = (Runnable)Proxy.newProxyInstance( + ScriptEngineTest.class.getClassLoader(), + new Class[] { Runnable.class }, + new InvocationHandler() { + @Override + public Object invoke(Object p, Method m, Object[] a) { + reached[0] = true; + return null; + } + }); + + e.put("r", r); + e.eval("r.run()"); + + assertTrue(reached[0]); + } + private static final String LINE_SEPARATOR = System.getProperty("line.separator"); // Returns String that would be the result of calling PrintWriter.println From 281b87b796c3071af54b89c638afda04be83c439 Mon Sep 17 00:00:00 2001 From: Attila Szegedi Date: Thu, 30 Jan 2014 20:13:27 +0100 Subject: [PATCH 116/158] 8032681: Issues with Nashorn Reviewed-by: ahgross, jlaskey, sundar --- .../linker/GuardedTypeConversion.java | 102 +++++++ .../linker/GuardingTypeConverterFactory.java | 20 +- .../dynalink/support/LinkerServicesImpl.java | 25 +- .../support/TypeConverterFactory.java | 73 ++++- .../api/scripting/NashornScriptEngine.java | 6 +- .../nashorn/internal/objects/NativeJava.java | 37 ++- .../internal/objects/NativeJavaImporter.java | 4 +- .../jdk/nashorn/internal/runtime/Context.java | 16 +- .../internal/runtime/NativeJavaPackage.java | 2 + .../internal/runtime/ScriptFunction.java | 9 +- .../runtime/linker/AdaptationResult.java | 3 +- .../runtime/linker/JSObjectLinker.java | 5 +- .../linker/JavaAdapterBytecodeGenerator.java | 275 ++++++++++-------- .../linker/JavaAdapterClassLoader.java | 35 +-- .../runtime/linker/JavaAdapterFactory.java | 94 ++++-- .../runtime/linker/JavaAdapterServices.java | 83 +++++- .../runtime/linker/NashornBottomLinker.java | 9 +- .../runtime/linker/NashornLinker.java | 38 ++- .../linker/NashornPrimitiveLinker.java | 5 +- .../linker/NashornStaticClassLinker.java | 3 +- .../runtime/resources/Messages.properties | 1 + nashorn/test/script/basic/JDK-8014647.js | 7 +- .../test/script/basic/JDK-8014647.js.EXPECTED | 4 +- .../test/script/basic/javaclassoverrides.js | 13 +- .../basic/javaclassoverrides.js.EXPECTED | 6 +- nashorn/test/script/sandbox/javaextend.js | 15 + .../script/sandbox/javaextend.js.EXPECTED | 2 + .../scripting/ScriptEngineSecurityTest.java | 19 +- .../test/models/ClassWithFinalFinalizer.java | 31 ++ .../ClassWithInheritedFinalFinalizer.java | 29 ++ 30 files changed, 727 insertions(+), 244 deletions(-) create mode 100644 nashorn/src/jdk/internal/dynalink/linker/GuardedTypeConversion.java create mode 100644 nashorn/test/src/jdk/nashorn/test/models/ClassWithFinalFinalizer.java create mode 100644 nashorn/test/src/jdk/nashorn/test/models/ClassWithInheritedFinalFinalizer.java diff --git a/nashorn/src/jdk/internal/dynalink/linker/GuardedTypeConversion.java b/nashorn/src/jdk/internal/dynalink/linker/GuardedTypeConversion.java new file mode 100644 index 00000000000..9baed7c0ebd --- /dev/null +++ b/nashorn/src/jdk/internal/dynalink/linker/GuardedTypeConversion.java @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2010, 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. + */ + +/* + * This file is available under and governed by the GNU General Public + * License version 2 only, as published by the Free Software Foundation. + * However, the following notice accompanied the original version of this + * file, and Oracle licenses the original version of this file under the BSD + * license: + */ +/* + Copyright 2009-2013 Attila Szegedi + + Licensed under both the Apache License, Version 2.0 (the "Apache License") + and the BSD License (the "BSD License"), with licensee being free to + choose either of the two at their discretion. + + You may not use this file except in compliance with either the Apache + License or the BSD License. + + If you choose to use this file in compliance with the Apache License, the + following notice applies to you: + + You may obtain a copy of the Apache License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. See the License for the specific language governing + permissions and limitations under the License. + + If you choose to use this file in compliance with the BSD License, the + following notice applies to you: + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the names of + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER + BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package jdk.internal.dynalink.linker; + +public class GuardedTypeConversion { + private final GuardedInvocation conversionInvocation; + private final boolean cacheable; + + public GuardedTypeConversion(final GuardedInvocation conversionInvocation, final boolean cacheable) { + this.conversionInvocation = conversionInvocation; + this.cacheable = cacheable; + } + + public GuardedInvocation getConversionInvocation() { + return conversionInvocation; + } + + public boolean isCacheable() { + return cacheable; + } +} diff --git a/nashorn/src/jdk/internal/dynalink/linker/GuardingTypeConverterFactory.java b/nashorn/src/jdk/internal/dynalink/linker/GuardingTypeConverterFactory.java index 30ab9467ec4..5f66e8a4bca 100644 --- a/nashorn/src/jdk/internal/dynalink/linker/GuardingTypeConverterFactory.java +++ b/nashorn/src/jdk/internal/dynalink/linker/GuardingTypeConverterFactory.java @@ -96,19 +96,19 @@ import jdk.internal.dynalink.support.TypeUtilities; */ public interface GuardingTypeConverterFactory { /** - * Returns a guarded invocation that receives an Object of the specified source type and returns an Object converted - * to the specified target type. The type of the invocation is targetType(sourceType), while the type of the guard - * is boolean(sourceType). Note that this will never be invoked for type conversions allowed by the JLS 5.3 "Method - * Invocation Conversion", see {@link TypeUtilities#isMethodInvocationConvertible(Class, Class)} for details. An - * implementation can assume it is never requested to produce a converter for these conversions. + * Returns a guarded type conversion that receives an Object of the specified source type and returns an Object + * converted to the specified target type. The type of the invocation is targetType(sourceType), while the type of + * the guard is boolean(sourceType). Note that this will never be invoked for type conversions allowed by the JLS + * 5.3 "Method Invocation Conversion", see {@link TypeUtilities#isMethodInvocationConvertible(Class, Class)} for + * details. An implementation can assume it is never requested to produce a converter for these conversions. * * @param sourceType source type * @param targetType the target type. - * @return a guarded invocation that can take an object (if it passes guard) and returns another object that is its - * representation coerced into the target type. In case the factory is certain it is unable to handle a conversion, - * it can return null. In case the factory is certain that it can always handle the conversion, it can return an - * unconditional invocation (one whose guard is null). + * @return a guarded type conversion that contains a guarded invocation that can take an object (if it passes guard) + * and return another object that is its representation coerced into the target type. In case the factory is certain + * it is unable to handle a conversion, it can return null. In case the factory is certain that it can always handle + * the conversion, it can return an unconditional invocation (one whose guard is null). * @throws Exception if there was an error during creation of the converter */ - public GuardedInvocation convertToType(Class sourceType, Class targetType) throws Exception; + public GuardedTypeConversion convertToType(Class sourceType, Class targetType) throws Exception; } diff --git a/nashorn/src/jdk/internal/dynalink/support/LinkerServicesImpl.java b/nashorn/src/jdk/internal/dynalink/support/LinkerServicesImpl.java index 4eb0ca9da7e..3b8e7b46abe 100644 --- a/nashorn/src/jdk/internal/dynalink/support/LinkerServicesImpl.java +++ b/nashorn/src/jdk/internal/dynalink/support/LinkerServicesImpl.java @@ -98,6 +98,9 @@ import jdk.internal.dynalink.linker.LinkerServices; */ public class LinkerServicesImpl implements LinkerServices { + private static final RuntimePermission GET_CURRENT_LINK_REQUEST = new RuntimePermission("dynalink.getCurrentLinkRequest"); + private static final ThreadLocal threadLinkRequest = new ThreadLocal<>(); + private final TypeConverterFactory typeConverterFactory; private final GuardingDynamicLinker topLevelLinker; @@ -135,6 +138,26 @@ public class LinkerServicesImpl implements LinkerServices { @Override public GuardedInvocation getGuardedInvocation(LinkRequest linkRequest) throws Exception { - return topLevelLinker.getGuardedInvocation(linkRequest, this); + final LinkRequest prevLinkRequest = threadLinkRequest.get(); + threadLinkRequest.set(linkRequest); + try { + return topLevelLinker.getGuardedInvocation(linkRequest, this); + } finally { + threadLinkRequest.set(prevLinkRequest); + } + } + + /** + * Returns the currently processed link request, or null if the method is invoked outside of the linking process. + * @return the currently processed link request, or null. + * @throws SecurityException if the calling code doesn't have the {@code "dynalink.getCurrentLinkRequest"} runtime + * permission. + */ + public static LinkRequest getCurrentLinkRequest() { + SecurityManager sm = System.getSecurityManager(); + if(sm != null) { + sm.checkPermission(GET_CURRENT_LINK_REQUEST); + } + return threadLinkRequest.get(); } } diff --git a/nashorn/src/jdk/internal/dynalink/support/TypeConverterFactory.java b/nashorn/src/jdk/internal/dynalink/support/TypeConverterFactory.java index 5ab541f33f9..436acad7faf 100644 --- a/nashorn/src/jdk/internal/dynalink/support/TypeConverterFactory.java +++ b/nashorn/src/jdk/internal/dynalink/support/TypeConverterFactory.java @@ -94,6 +94,7 @@ import java.util.List; import jdk.internal.dynalink.linker.ConversionComparator; import jdk.internal.dynalink.linker.ConversionComparator.Comparison; import jdk.internal.dynalink.linker.GuardedInvocation; +import jdk.internal.dynalink.linker.GuardedTypeConversion; import jdk.internal.dynalink.linker.GuardingTypeConverterFactory; import jdk.internal.dynalink.linker.LinkerServices; @@ -134,8 +135,8 @@ public class TypeConverterFactory { @Override protected MethodHandle computeValue(Class targetType) { if(!canAutoConvert(sourceType, targetType)) { - final MethodHandle converter = getTypeConverterNull(sourceType, targetType); - if(converter != null) { + final MethodHandle converter = getCacheableTypeConverter(sourceType, targetType); + if(converter != IDENTITY_CONVERSION) { return converter; } } @@ -145,6 +146,24 @@ public class TypeConverterFactory { } }; + private final ClassValue> canConvert = new ClassValue>() { + @Override + protected ClassMap computeValue(final Class sourceType) { + return new ClassMap(getClassLoader(sourceType)) { + @Override + protected Boolean computeValue(Class targetType) { + try { + return getTypeConverterNull(sourceType, targetType) != null; + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + }; + } + }; + private static final ClassLoader getClassLoader(final Class clazz) { return AccessController.doPrivileged(new PrivilegedAction() { @Override @@ -253,7 +272,7 @@ public class TypeConverterFactory { * @return true if there can be a conversion, false if there can not. */ public boolean canConvert(final Class from, final Class to) { - return canAutoConvert(from, to) || getTypeConverterNull(from, to) != null; + return canAutoConvert(from, to) || canConvert.get(from).get(to).booleanValue(); } /** @@ -294,11 +313,23 @@ public class TypeConverterFactory { return TypeUtilities.isMethodInvocationConvertible(fromType, toType); } - /*private*/ MethodHandle getTypeConverterNull(Class sourceType, Class targetType) { - final MethodHandle converter = converterMap.get(sourceType).get(targetType); + /*private*/ MethodHandle getCacheableTypeConverterNull(Class sourceType, Class targetType) { + final MethodHandle converter = getCacheableTypeConverter(sourceType, targetType); return converter == IDENTITY_CONVERSION ? null : converter; } + /*private*/ MethodHandle getTypeConverterNull(Class sourceType, Class targetType) { + try { + return getCacheableTypeConverterNull(sourceType, targetType); + } catch(NotCacheableConverter e) { + return e.converter; + } + } + + /*private*/ MethodHandle getCacheableTypeConverter(Class sourceType, Class targetType) { + return converterMap.get(sourceType).get(targetType); + } + /** * Given a source and target type, returns a method handle that converts between them. Never returns null; in worst * case it will return an identity conversion (that might fail for some values at runtime). You can use this method @@ -309,22 +340,44 @@ public class TypeConverterFactory { * @return a method handle performing the conversion. */ public MethodHandle getTypeConverter(Class sourceType, Class targetType) { - return converterIdentityMap.get(sourceType).get(targetType); + try { + return converterIdentityMap.get(sourceType).get(targetType); + } catch(NotCacheableConverter e) { + return e.converter; + } } /*private*/ MethodHandle createConverter(Class sourceType, Class targetType) throws Exception { final MethodType type = MethodType.methodType(targetType, sourceType); final MethodHandle identity = IDENTITY_CONVERSION.asType(type); MethodHandle last = identity; + boolean cacheable = true; for(int i = factories.length; i-- > 0;) { - final GuardedInvocation next = factories[i].convertToType(sourceType, targetType); + final GuardedTypeConversion next = factories[i].convertToType(sourceType, targetType); if(next != null) { - next.assertType(type); - last = next.compose(last); + cacheable = cacheable && next.isCacheable(); + final GuardedInvocation conversionInvocation = next.getConversionInvocation(); + conversionInvocation.assertType(type); + last = conversionInvocation.compose(last); } } - return last == identity ? IDENTITY_CONVERSION : last; + if(last == identity) { + return IDENTITY_CONVERSION; + } + if(cacheable) { + return last; + } + throw new NotCacheableConverter(last); } /*private*/ static final MethodHandle IDENTITY_CONVERSION = MethodHandles.identity(Object.class); + + private static class NotCacheableConverter extends RuntimeException { + final MethodHandle converter; + + NotCacheableConverter(final MethodHandle converter) { + super("", null, false, false); + this.converter = converter; + } + } } diff --git a/nashorn/src/jdk/nashorn/api/scripting/NashornScriptEngine.java b/nashorn/src/jdk/nashorn/api/scripting/NashornScriptEngine.java index 8028cce229e..3c4d29fc025 100644 --- a/nashorn/src/jdk/nashorn/api/scripting/NashornScriptEngine.java +++ b/nashorn/src/jdk/nashorn/api/scripting/NashornScriptEngine.java @@ -32,6 +32,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; +import java.lang.invoke.MethodHandles; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.net.URL; @@ -104,7 +105,7 @@ public final class NashornScriptEngine extends AbstractScriptEngine implements C private volatile Property contextProperty; // default options passed to Nashorn Options object - private static final String[] DEFAULT_OPTIONS = new String[] { "-scripting", "-doe" }; + private static final String[] DEFAULT_OPTIONS = new String[] { "-doe" }; // Nashorn script engine error message management private static final String MESSAGES_RESOURCE = "jdk.nashorn.api.scripting.resources.Messages"; @@ -355,7 +356,8 @@ public final class NashornScriptEngine extends AbstractScriptEngine implements C if (! isInterfaceImplemented(clazz, realSelf)) { return null; } - return clazz.cast(JavaAdapterFactory.getConstructor(realSelf.getClass(), clazz).invoke(realSelf)); + return clazz.cast(JavaAdapterFactory.getConstructor(realSelf.getClass(), clazz, + MethodHandles.publicLookup()).invoke(realSelf)); } finally { if (globalChanged) { Context.setGlobal(oldGlobal); diff --git a/nashorn/src/jdk/nashorn/internal/objects/NativeJava.java b/nashorn/src/jdk/nashorn/internal/objects/NativeJava.java index 5e9ac83d5e1..b863e24f2a5 100644 --- a/nashorn/src/jdk/nashorn/internal/objects/NativeJava.java +++ b/nashorn/src/jdk/nashorn/internal/objects/NativeJava.java @@ -28,6 +28,7 @@ package jdk.nashorn.internal.objects; import static jdk.nashorn.internal.runtime.ECMAErrors.typeError; import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED; +import java.lang.invoke.MethodHandles; import java.lang.reflect.Array; import java.util.Collection; import java.util.Deque; @@ -463,12 +464,14 @@ public final class NativeJava { * * We can see several important concepts in the above example: *
    - *
  • Every specified list of Java types will have exactly one extender subclass in Nashorn - repeated invocations - * of {@code extend} for the same list of types will yield the same extender type. It's a generic adapter that - * delegates to whatever JavaScript functions its implementation object has on a per-instance basis.
  • + *
  • Every specified list of Java types will have one extender subclass in Nashorn per caller protection domain - + * repeated invocations of {@code extend} for the same list of types for scripts same protection domain will yield + * the same extender type. It's a generic adapter that delegates to whatever JavaScript functions its implementation + * object has on a per-instance basis.
  • *
  • If the Java method is overloaded (as in the above example {@code List.add()}), then your JavaScript adapter * must be prepared to deal with all overloads.
  • - *
  • You can't invoke {@code super.*()} from adapters for now.
  • + *
  • To invoke super methods from adapters, call them on the adapter instance prefixing them with {@code super$}, + * or use the special {@link #_super(Object, Object) super-adapter}.
  • *
  • It is also possible to specify an ordinary JavaScript object as the last argument to {@code extend}. In that * case, it is treated as a class-level override. {@code extend} will return an extender class where all instances * will have the methods implemented by functions on that object, just as if that object were passed as the last @@ -486,15 +489,18 @@ public final class NativeJava { * t.join() * * As you can see, you don't have to pass any object when you create a new instance of {@code R1} as its - * {@code run()} function was defined already when extending the class. Of course, you can still provide - * instance-level overrides on these objects. The order of precedence is instance-level method, class-level method, - * superclass method, or {@code UnsupportedOperationException} if the superclass method is abstract. If we continue - * our previous example: + * {@code run()} function was defined already when extending the class. If you also want to add instance-level + * overrides on these objects, you will have to repeatedly use {@code extend()} to subclass the class-level adapter. + * For such adapters, the order of precedence is instance-level method, class-level method, superclass method, or + * {@code UnsupportedOperationException} if the superclass method is abstract. If we continue our previous example: *
    -     * var r2 = new R1(function() { print("r2.run() invoked!") })
    +     * var R2 = Java.extend(R1);
    +     * var r2 = new R2(function() { print("r2.run() invoked!") })
          * r2.run()
          * 
    * We'll see it'll print {@code "r2.run() invoked!"}, thus overriding on instance-level the class-level behavior. + * Note that you must use {@code Java.extend} to explicitly create an instance-override adapter class from a + * class-override adapter class, as the class-override adapter class is no longer abstract. *
  • *
* @param self not used @@ -541,7 +547,18 @@ public final class NativeJava { } catch(final ClassCastException e) { throw typeError("extend.expects.java.types"); } - return JavaAdapterFactory.getAdapterClassFor(stypes, classOverrides); + // Note that while the public API documentation claims self is not used, we actually use it. + // ScriptFunction.findCallMethod will bind the lookup object into it, and we can then use that lookup when + // requesting the adapter class. Note that if Java.extend is invoked with no lookup object, it'll pass the + // public lookup which'll result in generation of a no-permissions adapter. A typical situation this can happen + // is when the extend function is bound. + final MethodHandles.Lookup lookup; + if(self instanceof MethodHandles.Lookup) { + lookup = (MethodHandles.Lookup)self; + } else { + lookup = MethodHandles.publicLookup(); + } + return JavaAdapterFactory.getAdapterClassFor(stypes, classOverrides, lookup); } /** diff --git a/nashorn/src/jdk/nashorn/internal/objects/NativeJavaImporter.java b/nashorn/src/jdk/nashorn/internal/objects/NativeJavaImporter.java index dd9231d9386..56baf66d229 100644 --- a/nashorn/src/jdk/nashorn/internal/objects/NativeJavaImporter.java +++ b/nashorn/src/jdk/nashorn/internal/objects/NativeJavaImporter.java @@ -33,6 +33,7 @@ import jdk.nashorn.internal.objects.annotations.Attribute; import jdk.nashorn.internal.objects.annotations.Constructor; import jdk.nashorn.internal.objects.annotations.Function; import jdk.nashorn.internal.objects.annotations.ScriptClass; +import jdk.nashorn.internal.runtime.Context; import jdk.nashorn.internal.runtime.NativeJavaPackage; import jdk.nashorn.internal.runtime.PropertyMap; import jdk.nashorn.internal.runtime.ScriptObject; @@ -161,8 +162,9 @@ public final class NativeJavaImporter extends ScriptObject { } else if (obj instanceof NativeJavaPackage) { final String pkgName = ((NativeJavaPackage)obj).getName(); final String fullName = pkgName.isEmpty() ? name : (pkgName + "." + name); + final Context context = Global.instance().getContext(); try { - return StaticClass.forClass(Class.forName(fullName)); + return StaticClass.forClass(context.findClass(fullName)); } catch (final ClassNotFoundException e) { // IGNORE } diff --git a/nashorn/src/jdk/nashorn/internal/runtime/Context.java b/nashorn/src/jdk/nashorn/internal/runtime/Context.java index 1817ca928ba..e15ddd2c8fb 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/Context.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/Context.java @@ -37,7 +37,6 @@ import java.io.PrintWriter; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.reflect.Modifier; -import java.util.concurrent.atomic.AtomicLong; import java.net.MalformedURLException; import java.net.URL; import java.security.AccessControlContext; @@ -48,7 +47,7 @@ import java.security.Permissions; import java.security.PrivilegedAction; import java.security.ProtectionDomain; import java.util.Map; - +import java.util.concurrent.atomic.AtomicLong; import jdk.internal.org.objectweb.asm.ClassReader; import jdk.internal.org.objectweb.asm.util.CheckClassAdapter; import jdk.nashorn.api.scripting.ScriptObjectMirror; @@ -651,6 +650,19 @@ public final class Context { } } + /** + * Checks that the given package name can be accessed from no permissions context. + * + * @param pkgName package name + * @throw SecurityException if not accessible + */ + public static void checkPackageAccess(final String pkgName) { + final SecurityManager sm = System.getSecurityManager(); + if (sm != null) { + checkPackageAccess(sm, pkgName.endsWith(".")? pkgName : pkgName + "."); + } + } + /** * Checks that the given package can be accessed from no permissions context. * diff --git a/nashorn/src/jdk/nashorn/internal/runtime/NativeJavaPackage.java b/nashorn/src/jdk/nashorn/internal/runtime/NativeJavaPackage.java index a5abacb2134..591fd327c64 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/NativeJavaPackage.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/NativeJavaPackage.java @@ -85,6 +85,8 @@ public final class NativeJavaPackage extends ScriptObject { */ public NativeJavaPackage(final String name, final ScriptObject proto) { super(proto, null); + // defense-in-path, check here for sensitive packages + Context.checkPackageAccess(name); this.name = name; } diff --git a/nashorn/src/jdk/nashorn/internal/runtime/ScriptFunction.java b/nashorn/src/jdk/nashorn/internal/runtime/ScriptFunction.java index ae59855cb4b..d0669d709de 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/ScriptFunction.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/ScriptFunction.java @@ -26,14 +26,13 @@ package jdk.nashorn.internal.runtime; import static jdk.nashorn.internal.codegen.CompilerConstants.virtualCallNoLookup; +import static jdk.nashorn.internal.lookup.Lookup.MH; import static jdk.nashorn.internal.runtime.ECMAErrors.typeError; import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED; -import static jdk.nashorn.internal.lookup.Lookup.MH; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; - import jdk.internal.dynalink.CallSiteDescriptor; import jdk.internal.dynalink.linker.GuardedInvocation; import jdk.internal.dynalink.linker.LinkRequest; @@ -524,7 +523,11 @@ public abstract class ScriptFunction extends ScriptObject { } } else { final MethodHandle callHandle = getBestInvoker(type.dropParameterTypes(0, 1), request.getArguments()); - if (scopeCall) { + if (data.isBuiltin() && "extend".equals(data.getName())) { + // NOTE: the only built-in named "extend" is NativeJava.extend. As a special-case we're binding the + // current lookup as its "this" so it can do security-sensitive creation of adapter classes. + boundHandle = MH.dropArguments(MH.bindTo(callHandle, desc.getLookup()), 0, Object.class, Object.class); + } else if (scopeCall) { // Make a handle that drops the passed "this" argument and substitutes either Global or Undefined // (this, args...) => (args...) boundHandle = MH.bindTo(callHandle, needsWrappedThis() ? Context.getGlobalTrusted() : ScriptRuntime.UNDEFINED); diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/AdaptationResult.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/AdaptationResult.java index de1cfccc2a9..52511e5d94e 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/AdaptationResult.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/AdaptationResult.java @@ -47,7 +47,8 @@ final class AdaptationResult { ERROR_NON_PUBLIC_CLASS, ERROR_NO_ACCESSIBLE_CONSTRUCTOR, ERROR_MULTIPLE_SUPERCLASSES, - ERROR_NO_COMMON_LOADER + ERROR_NO_COMMON_LOADER, + ERROR_FINAL_FINALIZER } static final AdaptationResult SUCCESSFUL_RESULT = new AdaptationResult(Outcome.SUCCESS, ""); diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java index f0d45317a8a..f3c8284be86 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java @@ -32,6 +32,7 @@ import java.util.HashMap; import java.util.Map; import jdk.internal.dynalink.CallSiteDescriptor; import jdk.internal.dynalink.linker.GuardedInvocation; +import jdk.internal.dynalink.linker.GuardedTypeConversion; import jdk.internal.dynalink.linker.GuardingTypeConverterFactory; import jdk.internal.dynalink.linker.LinkRequest; import jdk.internal.dynalink.linker.LinkerServices; @@ -79,7 +80,7 @@ final class JSObjectLinker implements TypeBasedGuardingDynamicLinker, GuardingTy } @Override - public GuardedInvocation convertToType(final Class sourceType, final Class targetType) throws Exception { + public GuardedTypeConversion convertToType(final Class sourceType, final Class targetType) throws Exception { final boolean sourceIsAlwaysJSObject = JSObject.class.isAssignableFrom(sourceType); if(!sourceIsAlwaysJSObject && !sourceType.isAssignableFrom(JSObject.class)) { return null; @@ -90,7 +91,7 @@ final class JSObjectLinker implements TypeBasedGuardingDynamicLinker, GuardingTy return null; } - return new GuardedInvocation(converter, sourceIsAlwaysJSObject ? null : IS_JSOBJECT_GUARD).asType(MethodType.methodType(targetType, sourceType)); + return new GuardedTypeConversion(new GuardedInvocation(converter, sourceIsAlwaysJSObject ? null : IS_JSOBJECT_GUARD).asType(MethodType.methodType(targetType, sourceType)), true); } diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java index ef2a6829a25..5aceb206331 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java @@ -59,6 +59,7 @@ import java.util.Iterator; import java.util.List; import java.util.Set; import jdk.internal.org.objectweb.asm.ClassWriter; +import jdk.internal.org.objectweb.asm.Handle; import jdk.internal.org.objectweb.asm.Label; import jdk.internal.org.objectweb.asm.Opcodes; import jdk.internal.org.objectweb.asm.Type; @@ -66,21 +67,23 @@ import jdk.internal.org.objectweb.asm.commons.InstructionAdapter; import jdk.nashorn.internal.runtime.Context; import jdk.nashorn.internal.runtime.ScriptFunction; import jdk.nashorn.internal.runtime.ScriptObject; +import jdk.nashorn.internal.runtime.linker.AdaptationResult.Outcome; import sun.reflect.CallerSensitive; /** * Generates bytecode for a Java adapter class. Used by the {@link JavaAdapterFactory}. *

- * For every protected or public constructor in the extended class, the adapter class will have between one to three + * For every protected or public constructor in the extended class, the adapter class will have either one or two * public constructors (visibility of protected constructors in the extended class is promoted to public). - *

    - *
  • In every case, a constructor taking a trailing ScriptObject argument preceded by original constructor arguments - * is always created on the adapter class. When such a constructor is invoked, the passed ScriptObject's member - * functions are used to implement and/or override methods on the original class, dispatched by name. A single - * JavaScript function will act as the implementation for all overloaded methods of the same name. When methods on an - * adapter instance are invoked, the functions are invoked having the ScriptObject passed in the instance constructor as - * their "this". Subsequent changes to the ScriptObject (reassignment or removal of its functions) are not reflected in - * the adapter instance; the method implementations are bound to functions at constructor invocation time. + *
  • + *
  • For adapter classes with instance-level overrides, a constructor taking a trailing ScriptObject argument preceded + * by original constructor arguments is always created on the adapter class. When such a constructor is invoked, the + * passed ScriptObject's member functions are used to implement and/or override methods on the original class, + * dispatched by name. A single JavaScript function will act as the implementation for all overloaded methods of the + * same name. When methods on an adapter instance are invoked, the functions are invoked having the ScriptObject passed + * in the instance constructor as their "this". Subsequent changes to the ScriptObject (reassignment or removal of its + * functions) are not reflected in the adapter instance; the method implementations are bound to functions at + * constructor invocation time. * {@code java.lang.Object} methods {@code equals}, {@code hashCode}, and {@code toString} can also be overridden. The * only restriction is that since every JavaScript object already has a {@code toString} function through the * {@code Object.prototype}, the {@code toString} in the adapter is only overridden if the passed ScriptObject has a @@ -89,16 +92,17 @@ import sun.reflect.CallerSensitive; *
  • *
  • * If the original types collectively have only one abstract method, or have several of them, but all share the - * same name, an additional constructor is provided for every original constructor; this one takes a ScriptFunction as - * its last argument preceded by original constructor arguments. This constructor will use the passed function as the - * implementation for all abstract methods. For consistency, any concrete methods sharing the single abstract method - * name will also be overridden by the function. When methods on the adapter instance are invoked, the ScriptFunction is - * invoked with global or UNDEFINED as its "this" depending whether the function is non-strict or not. + * same name, an additional constructor for instance-level override adapter is provided for every original constructor; + * this one takes a ScriptFunction as its last argument preceded by original constructor arguments. This constructor + * will use the passed function as the implementation for all abstract methods. For consistency, any concrete methods + * sharing the single abstract method name will also be overridden by the function. When methods on the adapter instance + * are invoked, the ScriptFunction is invoked with UNDEFINED or Global as its "this" depending whether the function is + * strict or not. *
  • *
  • * If the adapter being generated can have class-level overrides, constructors taking same arguments as the superclass - * constructors are also created. These constructors simply delegate to the superclass constructor. They are used to - * create instances of the adapter class with no instance-level overrides. + * constructors are created. These constructors simply delegate to the superclass constructor. They are simply used to + * create instances of the adapter class, with no instance-level overrides, as they don't have them. *
  • *
*

@@ -111,16 +115,20 @@ import sun.reflect.CallerSensitive; * source-level script expression new X(a, b) { ... } (which is a proprietary syntax extension Nashorn uses * to resemble Java anonymous classes) is actually equivalent to new X(a, b, { ... }). *

- * It is possible to create two different classes: those that can have both class-level and instance-level overrides, - * and those that can only have instance-level overrides. When - * {@link JavaAdapterFactory#getAdapterClassFor(Class[], ScriptObject)} is invoked with non-null {@code classOverrides} - * parameter, an adapter class is created that can have class-level overrides, and the passed script object will be used - * as the implementations for its methods, just as in the above case of the constructor taking a script object. Note - * that in the case of class-level overrides, a new adapter class is created on every invocation, and the implementation - * object is bound to the class, not to any instance. All created instances will share these functions. Of course, when - * instances of such a class are being created, they can still take another object (or possibly a function) in their - * constructor's trailing position and thus provide further instance-specific overrides. The order of invocation is - * always instance-specified method, then a class-specified method, and finally the superclass method. + * It is possible to create two different adapter classes: those that can have class-level overrides, and those that can + * have instance-level overrides. When {@link JavaAdapterFactory#getAdapterClassFor(Class[], ScriptObject)} is invoked + * with non-null {@code classOverrides} parameter, an adapter class is created that can have class-level overrides, and + * the passed script object will be used as the implementations for its methods, just as in the above case of the + * constructor taking a script object. Note that in the case of class-level overrides, a new adapter class is created on + * every invocation, and the implementation object is bound to the class, not to any instance. All created instances + * will share these functions. If it is required to have both class-level overrides and instance-level overrides, the + * class-level override adapter class should be subclassed with an instance-override adapter. Since adapters delegate to + * super class when an overriding method handle is not specified, this will behave as expected. It is not possible to + * have both class-level and instance-level overrides in the same class for security reasons: adapter classes are + * defined with a protection domain of their creator code, and an adapter class that has both class and instance level + * overrides would need to have two potentially different protection domains: one for class-based behavior and one for + * instance-based behavior; since Java classes can only belong to a single protection domain, this could not be + * implemented securely. */ final class JavaAdapterBytecodeGenerator { static final Type CONTEXT_TYPE = Type.getType(Context.class); @@ -171,7 +179,6 @@ final class JavaAdapterBytecodeGenerator { private static final int MAX_GENERATED_TYPE_NAME_LENGTH = 255; private static final String CLASS_INIT = ""; - private static final String STATIC_GLOBAL_FIELD_NAME = "staticGlobal"; // Method name prefix for invoking super-methods static final String SUPER_PREFIX = "super$"; @@ -199,6 +206,7 @@ final class JavaAdapterBytecodeGenerator { private final Set finalMethods = new HashSet<>(EXCLUDED); private final Set methodInfos = new HashSet<>(); private boolean autoConvertibleFromFunction = false; + private boolean hasExplicitFinalizer = false; private final ClassWriter cw; @@ -207,8 +215,8 @@ final class JavaAdapterBytecodeGenerator { * @param superClass the superclass the adapter will extend. * @param interfaces the interfaces the adapter will implement. * @param commonLoader the class loader that can see all of superClass, interfaces, and Nashorn classes. - * @param classOverride true to generate the bytecode for the adapter that has both class-level and instance-level - * overrides, false to generate the bytecode for the adapter that only has instance-level overrides. + * @param classOverride true to generate the bytecode for the adapter that has class-level overrides, false to + * generate the bytecode for the adapter that has instance-level overrides. * @throws AdaptationException if the adapter can not be generated for some reason. */ JavaAdapterBytecodeGenerator(final Class superClass, final List> interfaces, @@ -230,8 +238,7 @@ final class JavaAdapterBytecodeGenerator { superClassName = Type.getInternalName(superClass); generatedClassName = getGeneratedClassName(superClass, interfaces); - cw.visit(Opcodes.V1_7, ACC_PUBLIC | ACC_SUPER | ACC_FINAL, generatedClassName, null, superClassName, getInternalTypeNames(interfaces)); - + cw.visit(Opcodes.V1_7, ACC_PUBLIC | ACC_SUPER, generatedClassName, null, superClassName, getInternalTypeNames(interfaces)); generateGlobalFields(); gatherMethods(superClass); @@ -244,17 +251,16 @@ final class JavaAdapterBytecodeGenerator { generateConstructors(); generateMethods(); generateSuperMethods(); + if (hasExplicitFinalizer) { + generateFinalizerMethods(); + } // } cw.visitEnd(); } private void generateGlobalFields() { - cw.visitField(ACC_PRIVATE | ACC_FINAL, GLOBAL_FIELD_NAME, SCRIPT_OBJECT_TYPE_DESCRIPTOR, null, null).visitEnd(); + cw.visitField(ACC_PRIVATE | ACC_FINAL | (classOverride ? ACC_STATIC : 0), GLOBAL_FIELD_NAME, SCRIPT_OBJECT_TYPE_DESCRIPTOR, null, null).visitEnd(); usedFieldNames.add(GLOBAL_FIELD_NAME); - if(classOverride) { - cw.visitField(ACC_PRIVATE | ACC_FINAL | ACC_STATIC, STATIC_GLOBAL_FIELD_NAME, SCRIPT_OBJECT_TYPE_DESCRIPTOR, null, null).visitEnd(); - usedFieldNames.add(STATIC_GLOBAL_FIELD_NAME); - } } JavaAdapterClassLoader createAdapterClassLoader() { @@ -305,11 +311,9 @@ final class JavaAdapterBytecodeGenerator { } private void generateHandleFields() { + final int flags = ACC_PRIVATE | ACC_FINAL | (classOverride ? ACC_STATIC : 0); for (final MethodInfo mi: methodInfos) { - cw.visitField(ACC_PRIVATE | ACC_FINAL, mi.methodHandleInstanceFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR, null, null).visitEnd(); - if(classOverride) { - cw.visitField(ACC_PRIVATE | ACC_FINAL | ACC_STATIC, mi.methodHandleClassFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR, null, null).visitEnd(); - } + cw.visitField(flags, mi.methodHandleFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR, null, null).visitEnd(); } } @@ -337,7 +341,7 @@ final class JavaAdapterBytecodeGenerator { } else { mv.visitInsn(ACONST_NULL); } - mv.putstatic(generatedClassName, mi.methodHandleClassFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR); + mv.putstatic(generatedClassName, mi.methodHandleFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR); } initGlobal = new Label(); mv.goTo(initGlobal); @@ -351,15 +355,15 @@ final class JavaAdapterBytecodeGenerator { mv.aconst(mi.getName()); mv.aconst(Type.getMethodType(mi.type.toMethodDescriptorString())); mv.invokestatic(SERVICES_CLASS_TYPE_NAME, "getHandle", GET_HANDLE_OBJECT_DESCRIPTOR, false); - mv.putstatic(generatedClassName, mi.methodHandleClassFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR); + mv.putstatic(generatedClassName, mi.methodHandleFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR); } if(initGlobal != null) { mv.visitLabel(initGlobal); } - // Assign "staticGlobal = Context.getGlobal()" + // Assign "global = Context.getGlobal()" invokeGetGlobalWithNullCheck(mv); - mv.putstatic(generatedClassName, STATIC_GLOBAL_FIELD_NAME, SCRIPT_OBJECT_TYPE_DESCRIPTOR); + mv.putstatic(generatedClassName, GLOBAL_FIELD_NAME, SCRIPT_OBJECT_TYPE_DESCRIPTOR); endInitMethod(mv); } @@ -390,21 +394,21 @@ final class JavaAdapterBytecodeGenerator { // Generate a constructor that just delegates to ctor. This is used with class-level overrides, when we want // to create instances without further per-instance overrides. generateDelegatingConstructor(ctor); - } + } else { + // Generate a constructor that delegates to ctor, but takes an additional ScriptObject parameter at the + // beginning of its parameter list. + generateOverridingConstructor(ctor, false); - // Generate a constructor that delegates to ctor, but takes an additional ScriptObject parameter at the - // beginning of its parameter list. - generateOverridingConstructor(ctor, false); - - if (samName != null) { - if (!autoConvertibleFromFunction && ctor.getParameterTypes().length == 0) { - // If the original type only has a single abstract method name, as well as a default ctor, then it can - // be automatically converted from JS function. - autoConvertibleFromFunction = true; + if (samName != null) { + if (!autoConvertibleFromFunction && ctor.getParameterTypes().length == 0) { + // If the original type only has a single abstract method name, as well as a default ctor, then it can + // be automatically converted from JS function. + autoConvertibleFromFunction = true; + } + // If all our abstract methods have a single name, generate an additional constructor, one that takes a + // ScriptFunction as its first parameter and assigns it as the implementation for all abstract methods. + generateOverridingConstructor(ctor, true); } - // If all our abstract methods have a single name, generate an additional constructor, one that takes a - // ScriptFunction as its first parameter and assigns it as the implementation for all abstract methods. - generateOverridingConstructor(ctor, true); } } @@ -430,7 +434,7 @@ final class JavaAdapterBytecodeGenerator { } /** - * Generates a constructor for the adapter class. This constructor will take the same arguments as the supertype + * Generates a constructor for the instance adapter class. This constructor will take the same arguments as the supertype * constructor passed as the argument here, and delegate to it. However, it will take an additional argument of * either ScriptObject or ScriptFunction type (based on the value of the "fromFunction" parameter), and initialize * all the method handle fields of the adapter instance with functions from the script object (or the script @@ -498,7 +502,7 @@ final class JavaAdapterBytecodeGenerator { mv.aconst(Type.getMethodType(mi.type.toMethodDescriptorString())); mv.invokestatic(SERVICES_CLASS_TYPE_NAME, "getHandle", getHandleDescriptor, false); } - mv.putfield(generatedClassName, mi.methodHandleInstanceFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR); + mv.putfield(generatedClassName, mi.methodHandleFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR); } // Assign "this.global = Context.getGlobal()" @@ -536,8 +540,7 @@ final class JavaAdapterBytecodeGenerator { private static class MethodInfo { private final Method method; private final MethodType type; - private String methodHandleInstanceFieldName; - private String methodHandleClassFieldName; + private String methodHandleFieldName; private MethodInfo(final Class clazz, final String name, final Class... argTypes) throws NoSuchMethodException { this(clazz.getDeclaredMethod(name, argTypes)); @@ -567,25 +570,20 @@ final class JavaAdapterBytecodeGenerator { return getName().hashCode() ^ type.hashCode(); } - void setIsCanonical(final Set usedFieldNames, boolean classOverride) { - methodHandleInstanceFieldName = nextName(usedFieldNames); - if(classOverride) { - methodHandleClassFieldName = nextName(usedFieldNames); - } + void setIsCanonical(final JavaAdapterBytecodeGenerator self) { + methodHandleFieldName = self.nextName(getName()); } + } - String nextName(final Set usedFieldNames) { - int i = 0; - final String name = getName(); - String nextName = name; - while (!usedFieldNames.add(nextName)) { - final String ordinal = String.valueOf(i++); - final int maxNameLen = 255 - ordinal.length(); - nextName = (name.length() <= maxNameLen ? name : name.substring(0, maxNameLen)).concat(ordinal); - } - return nextName; + private String nextName(final String name) { + int i = 0; + String nextName = name; + while (!usedFieldNames.add(nextName)) { + final String ordinal = String.valueOf(i++); + final int maxNameLen = 255 - ordinal.length(); + nextName = (name.length() <= maxNameLen ? name : name.substring(0, maxNameLen)).concat(ordinal); } - + return nextName; } private void generateMethods() { @@ -624,23 +622,19 @@ final class JavaAdapterBytecodeGenerator { methodDesc, null, exceptionNames)); mv.visitCode(); - final Label instanceHandleDefined = new Label(); - final Label classHandleDefined = new Label(); + final Label handleDefined = new Label(); final Type asmReturnType = Type.getType(type.returnType()); - // See if we have instance handle defined - mv.visitVarInsn(ALOAD, 0); - mv.getfield(generatedClassName, mi.methodHandleInstanceFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR); - // stack: [instanceHandle] - jumpIfNonNullKeepOperand(mv, instanceHandleDefined); - + // See if we have overriding method handle defined if(classOverride) { - // See if we have the static handle - mv.getstatic(generatedClassName, mi.methodHandleClassFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR); - // stack: [classHandle] - jumpIfNonNullKeepOperand(mv, classHandleDefined); + mv.getstatic(generatedClassName, mi.methodHandleFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR); + } else { + mv.visitVarInsn(ALOAD, 0); + mv.getfield(generatedClassName, mi.methodHandleFieldName, METHOD_HANDLE_TYPE_DESCRIPTOR); } + // stack: [handle] + jumpIfNonNullKeepOperand(mv, handleDefined); // No handle is available, fall back to default behavior if(Modifier.isAbstract(method.getModifiers())) { @@ -654,25 +648,17 @@ final class JavaAdapterBytecodeGenerator { emitSuperCall(mv, method.getDeclaringClass(), name, methodDesc); } - final Label setupGlobal = new Label(); - + mv.visitLabel(handleDefined); + // Load the creatingGlobal object if(classOverride) { - mv.visitLabel(classHandleDefined); // If class handle is defined, load the static defining global - mv.getstatic(generatedClassName, STATIC_GLOBAL_FIELD_NAME, SCRIPT_OBJECT_TYPE_DESCRIPTOR); - // stack: [creatingGlobal := classGlobal, classHandle] - mv.goTo(setupGlobal); + mv.getstatic(generatedClassName, GLOBAL_FIELD_NAME, SCRIPT_OBJECT_TYPE_DESCRIPTOR); + } else { + mv.visitVarInsn(ALOAD, 0); + mv.getfield(generatedClassName, GLOBAL_FIELD_NAME, SCRIPT_OBJECT_TYPE_DESCRIPTOR); } - - mv.visitLabel(instanceHandleDefined); - // If instance handle is defined, load the instance defining global - mv.visitVarInsn(ALOAD, 0); - mv.getfield(generatedClassName, GLOBAL_FIELD_NAME, SCRIPT_OBJECT_TYPE_DESCRIPTOR); - // stack: [creatingGlobal := instanceGlobal, instanceHandle] - - // fallthrough to setupGlobal - - // stack: [creatingGlobal, someHandle] + // stack: [creatingGlobal, handle] + final Label setupGlobal = new Label(); mv.visitLabel(setupGlobal); // Determine the first index for a local variable @@ -685,38 +671,39 @@ final class JavaAdapterBytecodeGenerator { final int globalsDifferVar = nextLocalVar++; mv.dup(); - // stack: [creatingGlobal, creatingGlobal, someHandle] + // stack: [creatingGlobal, creatingGlobal, handle] // Emit code for switching to the creating global // ScriptObject currentGlobal = Context.getGlobal(); invokeGetGlobal(mv); mv.dup(); + mv.visitVarInsn(ASTORE, currentGlobalVar); - // stack: [currentGlobal, creatingGlobal, creatingGlobal, someHandle] + // stack: [currentGlobal, creatingGlobal, creatingGlobal, handle] // if(definingGlobal == currentGlobal) { final Label globalsDiffer = new Label(); mv.ifacmpne(globalsDiffer); - // stack: [someGlobal, someHandle] + // stack: [creatingGlobal, handle] // globalsDiffer = false mv.pop(); - // stack: [someHandle] + // stack: [handle] mv.iconst(0); // false - // stack: [false, someHandle] + // stack: [false, handle] final Label invokeHandle = new Label(); mv.goTo(invokeHandle); mv.visitLabel(globalsDiffer); // } else { // Context.setGlobal(definingGlobal); - // stack: [someGlobal, someHandle] + // stack: [creatingGlobal, handle] invokeSetGlobal(mv); - // stack: [someHandle] + // stack: [handle] // globalsDiffer = true mv.iconst(1); - // stack: [true, someHandle] + // stack: [true, handle] mv.visitLabel(invokeHandle); mv.visitVarInsn(ISTORE, globalsDifferVar); - // stack: [someHandle] + // stack: [handle] // Load all parameters back on stack for dynamic invocation. int varOffset = 1; @@ -835,7 +822,7 @@ final class JavaAdapterBytecodeGenerator { endMethod(mv); } - private void emitSuperCall(final InstructionAdapter mv, final Class owner, final String name, final String methodDesc) { + private void emitSuperCall(final InstructionAdapter mv, final Class owner, final String name, final String methodDesc) { mv.visitVarInsn(ALOAD, 0); int nextParam = 1; final Type methodType = Type.getMethodType(methodDesc); @@ -853,6 +840,42 @@ final class JavaAdapterBytecodeGenerator { mv.areturn(methodType.getReturnType()); } + private void generateFinalizerMethods() { + final String finalizerDelegateName = nextName("access$"); + generateFinalizerDelegate(finalizerDelegateName); + generateFinalizerOverride(finalizerDelegateName); + } + + private void generateFinalizerDelegate(final String finalizerDelegateName) { + // Generate a delegate that will be invoked from the no-permission trampoline. Note it can be private, as we'll + // refer to it with a MethodHandle constant pool entry in the overridden finalize() method (see + // generateFinalizerOverride()). + final InstructionAdapter mv = new InstructionAdapter(cw.visitMethod(ACC_PRIVATE | ACC_STATIC, + finalizerDelegateName, Type.getMethodDescriptor(Type.VOID_TYPE, OBJECT_TYPE), null, null)); + + // Simply invoke super.finalize() + mv.visitVarInsn(ALOAD, 0); + mv.checkcast(Type.getType(generatedClassName)); + mv.invokespecial(superClassName, "finalize", Type.getMethodDescriptor(Type.VOID_TYPE), false); + + mv.visitInsn(RETURN); + endMethod(mv); + } + + private void generateFinalizerOverride(final String finalizerDelegateName) { + final InstructionAdapter mv = new InstructionAdapter(cw.visitMethod(ACC_PUBLIC, "finalize", + VOID_NOARG_METHOD_DESCRIPTOR, null, null)); + // Overridden finalizer will take a MethodHandle to the finalizer delegating method, ... + mv.aconst(new Handle(Opcodes.H_INVOKESTATIC, generatedClassName, finalizerDelegateName, + Type.getMethodDescriptor(Type.VOID_TYPE, OBJECT_TYPE))); + mv.visitVarInsn(ALOAD, 0); + // ...and invoke it through JavaAdapterServices.invokeNoPermissions + mv.invokestatic(SERVICES_CLASS_TYPE_NAME, "invokeNoPermissions", + Type.getMethodDescriptor(METHOD_HANDLE_TYPE, OBJECT_TYPE), false); + mv.visitInsn(RETURN); + endMethod(mv); + } + private static String[] getExceptionNames(final Class[] exceptions) { final String[] exceptionNames = new String[exceptions.length]; for (int i = 0; i < exceptions.length; ++i) { @@ -873,16 +896,32 @@ final class JavaAdapterBytecodeGenerator { * class. * @param type the type defining the methods. */ - private void gatherMethods(final Class type) { + private void gatherMethods(final Class type) throws AdaptationException { if (Modifier.isPublic(type.getModifiers())) { final Method[] typeMethods = type.isInterface() ? type.getMethods() : type.getDeclaredMethods(); for (final Method typeMethod: typeMethods) { + final String name = typeMethod.getName(); + if(name.startsWith(SUPER_PREFIX)) { + continue; + } final int m = typeMethod.getModifiers(); if (Modifier.isStatic(m)) { continue; } if (Modifier.isPublic(m) || Modifier.isProtected(m)) { + // Is it a "finalize()"? + if(name.equals("finalize") && typeMethod.getParameterCount() == 0) { + if(type != Object.class) { + hasExplicitFinalizer = true; + if(Modifier.isFinal(m)) { + // Must be able to override an explicit finalizer + throw new AdaptationException(Outcome.ERROR_FINAL_FINALIZER, type.getCanonicalName()); + } + } + continue; + } + final MethodInfo mi = new MethodInfo(typeMethod); if (Modifier.isFinal(m) || isCallerSensitive(typeMethod)) { finalMethods.add(mi); @@ -890,7 +929,7 @@ final class JavaAdapterBytecodeGenerator { if (Modifier.isAbstract(m)) { abstractMethodNames.add(mi.getName()); } - mi.setIsCanonical(usedFieldNames, classOverride); + mi.setIsCanonical(this); } } } @@ -911,7 +950,7 @@ final class JavaAdapterBytecodeGenerator { } } - private void gatherMethods(final List> classes) { + private void gatherMethods(final List> classes) throws AdaptationException { for(final Class c: classes) { gatherMethods(c); } diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterClassLoader.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterClassLoader.java index 0062cd5f893..fa162d88d47 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterClassLoader.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterClassLoader.java @@ -27,10 +27,6 @@ package jdk.nashorn.internal.runtime.linker; import java.security.AccessControlContext; import java.security.AccessController; -import java.security.AllPermission; -import java.security.CodeSigner; -import java.security.CodeSource; -import java.security.Permissions; import java.security.PrivilegedAction; import java.security.ProtectionDomain; import java.security.SecureClassLoader; @@ -45,35 +41,29 @@ import jdk.internal.dynalink.beans.StaticClass; */ @SuppressWarnings("javadoc") final class JavaAdapterClassLoader { - private static final ProtectionDomain GENERATED_PROTECTION_DOMAIN = createGeneratedProtectionDomain(); private static final AccessControlContext CREATE_LOADER_ACC_CTXT = ClassAndLoader.createPermAccCtxt("createClassLoader"); private final String className; - private volatile byte[] classBytes; + private final byte[] classBytes; JavaAdapterClassLoader(String className, byte[] classBytes) { this.className = className.replace('/', '.'); this.classBytes = classBytes; } - /** - * clear classBytes after loading class. - */ - void clearClassBytes() { - this.classBytes = null; - } - /** * Loads the generated adapter class into the JVM. * @param parentLoader the parent class loader for the generated class loader + * @param protectionDomain the protection domain for the generated class * @return the generated adapter class */ - StaticClass generateClass(final ClassLoader parentLoader) { + StaticClass generateClass(final ClassLoader parentLoader, final ProtectionDomain protectionDomain) { + assert protectionDomain != null; return AccessController.doPrivileged(new PrivilegedAction() { @Override public StaticClass run() { try { - return StaticClass.forClass(Class.forName(className, true, createClassLoader(parentLoader))); + return StaticClass.forClass(Class.forName(className, true, createClassLoader(parentLoader, protectionDomain))); } catch (final ClassNotFoundException e) { throw new AssertionError(e); // cannot happen } @@ -88,7 +78,7 @@ final class JavaAdapterClassLoader { // it even more by separating its invocation into a separate static method on the adapter class, but then someone // with ability to introspect on the class and use setAccessible(true) on it could invoke the method. It's a // security tradeoff... - private ClassLoader createClassLoader(final ClassLoader parentLoader) { + private ClassLoader createClassLoader(final ClassLoader parentLoader, final ProtectionDomain protectionDomain) { return new SecureClassLoader(parentLoader) { private final ClassLoader myLoader = getClass().getClassLoader(); @@ -112,21 +102,10 @@ final class JavaAdapterClassLoader { protected Class findClass(final String name) throws ClassNotFoundException { if(name.equals(className)) { assert classBytes != null : "what? already cleared .class bytes!!"; - return defineClass(name, classBytes, 0, classBytes.length, GENERATED_PROTECTION_DOMAIN); + return defineClass(name, classBytes, 0, classBytes.length, protectionDomain); } throw new ClassNotFoundException(name); } }; } - - private static ProtectionDomain createGeneratedProtectionDomain() { - // Generated classes need to have AllPermission. Since we require the "createClassLoader" RuntimePermission, we - // can create a class loader that'll load new classes with any permissions. Our generated classes are just - // delegating adapters, so having AllPermission can't cause anything wrong; the effective set of permissions for - // the executing script functions will still be limited by the permissions of the caller and the permissions of - // the script. - final Permissions permissions = new Permissions(); - permissions.add(new AllPermission()); - return new ProtectionDomain(new CodeSource(null, (CodeSigner[])null), permissions); - } } diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java index ccb2c87982e..5e0b890a6d2 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java @@ -29,17 +29,23 @@ import static jdk.nashorn.internal.lookup.Lookup.MH; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodHandles.Lookup; import java.lang.invoke.MethodType; import java.lang.reflect.Modifier; import java.security.AccessControlContext; import java.security.AccessController; +import java.security.CodeSigner; +import java.security.CodeSource; +import java.security.Permissions; import java.security.PrivilegedAction; +import java.security.ProtectionDomain; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import jdk.internal.dynalink.beans.StaticClass; import jdk.internal.dynalink.support.LinkRequestImpl; import jdk.nashorn.internal.objects.NativeJava; @@ -70,6 +76,8 @@ import jdk.nashorn.internal.runtime.ScriptObject; @SuppressWarnings("javadoc") public final class JavaAdapterFactory { + private static final ProtectionDomain MINIMAL_PERMISSION_DOMAIN = createMinimalPermissionDomain(); + // context with permissions needs for AdapterInfo creation private static final AccessControlContext CREATE_ADAPTER_INFO_ACC_CTXT = ClassAndLoader.createPermAccCtxt("createClassLoader", "getClassLoader", @@ -99,11 +107,18 @@ public final class JavaAdapterFactory { * @param classOverrides a JavaScript object with functions serving as the class-level overrides and * implementations. These overrides are defined for all instances of the class, and can be further overridden on a * per-instance basis by passing additional objects in the constructor. + * @param lookup the lookup object identifying the caller class. The generated adapter class will have the + * protection domain of the caller class iff the lookup object is full-strength, otherwise it will be completely + * unprivileged. * @return an adapter class. See this class' documentation for details on the generated adapter class. * @throws ECMAException with a TypeError if the adapter class can not be generated because the original class is * final, non-public, or has no public or protected constructors. */ - public static StaticClass getAdapterClassFor(final Class[] types, ScriptObject classOverrides) { + public static StaticClass getAdapterClassFor(final Class[] types, ScriptObject classOverrides, final MethodHandles.Lookup lookup) { + return getAdapterClassFor(types, classOverrides, getProtectionDomain(lookup)); + } + + private static StaticClass getAdapterClassFor(final Class[] types, ScriptObject classOverrides, final ProtectionDomain protectionDomain) { assert types != null && types.length > 0; final SecurityManager sm = System.getSecurityManager(); if (sm != null) { @@ -114,7 +129,23 @@ public final class JavaAdapterFactory { ReflectionCheckLinker.checkReflectionAccess(type, true); } } - return getAdapterInfo(types).getAdapterClassFor(classOverrides); + return getAdapterInfo(types).getAdapterClass(classOverrides, protectionDomain); + } + + private static ProtectionDomain getProtectionDomain(final MethodHandles.Lookup lookup) { + if((lookup.lookupModes() & Lookup.PRIVATE) == 0) { + return MINIMAL_PERMISSION_DOMAIN; + } + return getProtectionDomain(lookup.lookupClass()); + } + + private static ProtectionDomain getProtectionDomain(final Class clazz) { + return AccessController.doPrivileged(new PrivilegedAction() { + @Override + public ProtectionDomain run() { + return clazz.getProtectionDomain(); + } + }); } /** @@ -129,10 +160,10 @@ public final class JavaAdapterFactory { * @return the constructor method handle. * @throws Exception if anything goes wrong */ - public static MethodHandle getConstructor(final Class sourceType, final Class targetType) throws Exception { - final StaticClass adapterClass = getAdapterClassFor(new Class[] { targetType }, null); + public static MethodHandle getConstructor(final Class sourceType, final Class targetType, final MethodHandles.Lookup lookup) throws Exception { + final StaticClass adapterClass = getAdapterClassFor(new Class[] { targetType }, null, lookup); return MH.bindTo(Bootstrap.getLinkerServices().getGuardedInvocation(new LinkRequestImpl( - NashornCallSiteDescriptor.get(MethodHandles.publicLookup(), "dyn:new", + NashornCallSiteDescriptor.get(lookup, "dyn:new", MethodType.methodType(targetType, StaticClass.class, sourceType), 0), false, adapterClass, null)).getInvocation(), adapterClass); } @@ -220,10 +251,10 @@ public final class JavaAdapterFactory { private static final ClassAndLoader SCRIPT_OBJECT_LOADER = new ClassAndLoader(ScriptObject.class, true); private final ClassLoader commonLoader; - private final JavaAdapterClassLoader adapterGenerator; - // Cacheable adapter class that is shared by all adapter instances that don't have class overrides, only - // instance overrides. - final StaticClass instanceAdapterClass; + // TODO: soft reference the JavaAdapterClassLoader objects. They can be recreated when needed. + private final JavaAdapterClassLoader classAdapterGenerator; + private final JavaAdapterClassLoader instanceAdapterGenerator; + private final Map instanceAdapters = new ConcurrentHashMap<>(); final boolean autoConvertibleFromFunction; final AdaptationResult adaptationResult; @@ -231,11 +262,8 @@ public final class JavaAdapterFactory { this.commonLoader = findCommonLoader(definingLoader); final JavaAdapterBytecodeGenerator gen = new JavaAdapterBytecodeGenerator(superClass, interfaces, commonLoader, false); this.autoConvertibleFromFunction = gen.isAutoConvertibleFromFunction(); - final JavaAdapterClassLoader jacl = gen.createAdapterClassLoader(); - this.instanceAdapterClass = jacl.generateClass(commonLoader); - // loaded Class - no need to keep class bytes around - jacl.clearClassBytes(); - this.adapterGenerator = new JavaAdapterBytecodeGenerator(superClass, interfaces, commonLoader, true).createAdapterClassLoader(); + instanceAdapterGenerator = gen.createAdapterClassLoader(); + this.classAdapterGenerator = new JavaAdapterBytecodeGenerator(superClass, interfaces, commonLoader, true).createAdapterClassLoader(); this.adaptationResult = AdaptationResult.SUCCESSFUL_RESULT; } @@ -245,22 +273,42 @@ public final class JavaAdapterFactory { AdapterInfo(final AdaptationResult adaptationResult) { this.commonLoader = null; - this.adapterGenerator = null; - this.instanceAdapterClass = null; + this.classAdapterGenerator = null; + this.instanceAdapterGenerator = null; this.autoConvertibleFromFunction = false; this.adaptationResult = adaptationResult; } - StaticClass getAdapterClassFor(ScriptObject classOverrides) { + StaticClass getAdapterClass(final ScriptObject classOverrides, final ProtectionDomain protectionDomain) { if(adaptationResult.getOutcome() != AdaptationResult.Outcome.SUCCESS) { throw adaptationResult.typeError(); } - if(classOverrides == null) { + return classOverrides == null ? getInstanceAdapterClass(protectionDomain) : + getClassAdapterClass(classOverrides, protectionDomain); + } + + private StaticClass getInstanceAdapterClass(final ProtectionDomain protectionDomain) { + CodeSource codeSource = protectionDomain.getCodeSource(); + if(codeSource == null) { + codeSource = MINIMAL_PERMISSION_DOMAIN.getCodeSource(); + } + StaticClass instanceAdapterClass = instanceAdapters.get(codeSource); + if(instanceAdapterClass != null) { return instanceAdapterClass; } + // Any "unknown source" code source will default to no permission domain. + final ProtectionDomain effectiveDomain = codeSource.equals(MINIMAL_PERMISSION_DOMAIN.getCodeSource()) ? + MINIMAL_PERMISSION_DOMAIN : protectionDomain; + + instanceAdapterClass = instanceAdapterGenerator.generateClass(commonLoader, effectiveDomain); + final StaticClass existing = instanceAdapters.putIfAbsent(codeSource, instanceAdapterClass); + return existing == null ? instanceAdapterClass : existing; + } + + private StaticClass getClassAdapterClass(final ScriptObject classOverrides, final ProtectionDomain protectionDomain) { JavaAdapterServices.setClassOverrides(classOverrides); try { - return adapterGenerator.generateClass(commonLoader); + return classAdapterGenerator.generateClass(commonLoader, protectionDomain); } finally { JavaAdapterServices.setClassOverrides(null); } @@ -285,4 +333,12 @@ public final class JavaAdapterFactory { throw new AdaptationException(AdaptationResult.Outcome.ERROR_NO_COMMON_LOADER, classAndLoader.getRepresentativeClass().getCanonicalName()); } } + + private static ProtectionDomain createMinimalPermissionDomain() { + // Generated classes need to have at least the permission to access Nashorn runtime and runtime.linker packages. + final Permissions permissions = new Permissions(); + permissions.add(new RuntimePermission("accessClassInPackage.jdk.nashorn.internal.runtime")); + permissions.add(new RuntimePermission("accessClassInPackage.jdk.nashorn.internal.runtime.linker")); + return new ProtectionDomain(new CodeSource(null, (CodeSigner[])null), permissions); + } } diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterServices.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterServices.java index 06ae1b1109b..1188c6b6f73 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterServices.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaAdapterServices.java @@ -25,10 +25,28 @@ package jdk.nashorn.internal.runtime.linker; +import static jdk.internal.org.objectweb.asm.Opcodes.ACC_FINAL; +import static jdk.internal.org.objectweb.asm.Opcodes.ACC_PUBLIC; +import static jdk.internal.org.objectweb.asm.Opcodes.ACC_STATIC; +import static jdk.internal.org.objectweb.asm.Opcodes.ACC_SUPER; +import static jdk.internal.org.objectweb.asm.Opcodes.ALOAD; +import static jdk.internal.org.objectweb.asm.Opcodes.RETURN; import static jdk.nashorn.internal.runtime.ECMAErrors.typeError; import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; +import java.security.AccessController; +import java.security.CodeSigner; +import java.security.CodeSource; +import java.security.Permissions; +import java.security.PrivilegedAction; +import java.security.ProtectionDomain; +import java.security.SecureClassLoader; +import jdk.internal.org.objectweb.asm.ClassWriter; +import jdk.internal.org.objectweb.asm.Opcodes; +import jdk.internal.org.objectweb.asm.Type; +import jdk.internal.org.objectweb.asm.commons.InstructionAdapter; import jdk.nashorn.internal.runtime.Context; import jdk.nashorn.internal.runtime.ScriptFunction; import jdk.nashorn.internal.runtime.ScriptObject; @@ -40,6 +58,7 @@ import jdk.nashorn.internal.runtime.Undefined; */ public final class JavaAdapterServices { private static final ThreadLocal classOverrides = new ThreadLocal<>(); + private static final MethodHandle NO_PERMISSIONS_INVOKER = createNoPermissionsInvoker(); private JavaAdapterServices() { } @@ -55,7 +74,7 @@ public final class JavaAdapterServices { */ public static MethodHandle getHandle(final ScriptFunction fn, final MethodType type) { // JS "this" will be global object or undefined depending on if 'fn' is strict or not - return adaptHandle(fn.getBoundInvokeHandle(fn.isStrict()? ScriptRuntime.UNDEFINED : Context.getGlobal()), type); + return bindAndAdaptHandle(fn, fn.isStrict()? ScriptRuntime.UNDEFINED : Context.getGlobal(), type); } /** @@ -83,7 +102,7 @@ public final class JavaAdapterServices { final Object fnObj = sobj.get(name); if (fnObj instanceof ScriptFunction) { - return adaptHandle(((ScriptFunction)fnObj).getBoundInvokeHandle(sobj), type); + return bindAndAdaptHandle((ScriptFunction)fnObj, sobj, type); } else if(fnObj == null || fnObj instanceof Undefined) { return null; } else { @@ -103,11 +122,67 @@ public final class JavaAdapterServices { return overrides; } + /** + * Takes a method handle and an argument to it, and invokes the method handle passing it the argument. Basically + * equivalent to {@code method.invokeExact(arg)}, except that the method handle will be invoked in a protection + * domain with absolutely no permissions. + * @param method the method handle to invoke. The handle must have the exact type of {@code void(Object)}. + * @param arg the argument to pass to the handle. + * @throws Throwable if anything goes wrong. + */ + public static void invokeNoPermissions(final MethodHandle method, final Object arg) throws Throwable { + NO_PERMISSIONS_INVOKER.invokeExact(method, arg); + } + static void setClassOverrides(ScriptObject overrides) { classOverrides.set(overrides); } - private static MethodHandle adaptHandle(final MethodHandle handle, final MethodType type) { - return Bootstrap.getLinkerServices().asType(ScriptObject.pairArguments(handle, type, false), type); + private static MethodHandle bindAndAdaptHandle(final ScriptFunction fn, final Object self, final MethodType type) { + return Bootstrap.getLinkerServices().asType(ScriptObject.pairArguments(fn.getBoundInvokeHandle(self), type, false), type); + } + + private static MethodHandle createNoPermissionsInvoker() { + final String className = "NoPermissionsInvoker"; + + final ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS); + cw.visit(Opcodes.V1_7, ACC_PUBLIC | ACC_SUPER | ACC_FINAL, className, null, "java/lang/Object", null); + final Type objectType = Type.getType(Object.class); + final Type methodHandleType = Type.getType(MethodHandle.class); + final InstructionAdapter mv = new InstructionAdapter(cw.visitMethod(ACC_PUBLIC | ACC_STATIC, "invoke", + Type.getMethodDescriptor(Type.VOID_TYPE, methodHandleType, objectType), null, null)); + mv.visitCode(); + mv.visitVarInsn(ALOAD, 0); + mv.visitVarInsn(ALOAD, 1); + mv.invokevirtual(methodHandleType.getInternalName(), "invokeExact", Type.getMethodDescriptor( + Type.VOID_TYPE, objectType), false); + mv.visitInsn(RETURN); + mv.visitMaxs(0, 0); + mv.visitEnd(); + cw.visitEnd(); + final byte[] bytes = cw.toByteArray(); + + final ClassLoader loader = AccessController.doPrivileged(new PrivilegedAction() { + @Override + public ClassLoader run() { + return new SecureClassLoader(null) { + @Override + protected Class findClass(String name) throws ClassNotFoundException { + if(name.equals(className)) { + return defineClass(name, bytes, 0, bytes.length, new ProtectionDomain( + new CodeSource(null, (CodeSigner[])null), new Permissions())); + } + throw new ClassNotFoundException(name); + } + }; + } + }); + + try { + return MethodHandles.lookup().findStatic(Class.forName(className, true, loader), "invoke", + MethodType.methodType(void.class, MethodHandle.class, Object.class)); + } catch(ReflectiveOperationException e) { + throw new AssertionError(e.getMessage(), e); + } } } diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornBottomLinker.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornBottomLinker.java index c94df15b192..88ccf5a4847 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornBottomLinker.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornBottomLinker.java @@ -25,19 +25,20 @@ package jdk.nashorn.internal.runtime.linker; +import static jdk.nashorn.internal.lookup.Lookup.MH; import static jdk.nashorn.internal.runtime.ECMAErrors.typeError; import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED; -import static jdk.nashorn.internal.lookup.Lookup.MH; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodType; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.util.Map; import java.util.HashMap; +import java.util.Map; import jdk.internal.dynalink.CallSiteDescriptor; import jdk.internal.dynalink.beans.BeansLinker; import jdk.internal.dynalink.linker.GuardedInvocation; +import jdk.internal.dynalink.linker.GuardedTypeConversion; import jdk.internal.dynalink.linker.GuardingDynamicLinker; import jdk.internal.dynalink.linker.GuardingTypeConverterFactory; import jdk.internal.dynalink.linker.LinkRequest; @@ -134,9 +135,9 @@ final class NashornBottomLinker implements GuardingDynamicLinker, GuardingTypeCo } @Override - public GuardedInvocation convertToType(final Class sourceType, final Class targetType) throws Exception { + public GuardedTypeConversion convertToType(final Class sourceType, final Class targetType) throws Exception { final GuardedInvocation gi = convertToTypeNoCast(sourceType, targetType); - return gi == null ? null : gi.asType(MH.type(targetType, sourceType)); + return gi == null ? null : new GuardedTypeConversion(gi.asType(MH.type(targetType, sourceType)), true); } /** diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornLinker.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornLinker.java index 27e4573f572..0ac5f9a56e5 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornLinker.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornLinker.java @@ -29,7 +29,10 @@ import static jdk.nashorn.internal.lookup.Lookup.MH; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodHandles.Lookup; import java.lang.reflect.Modifier; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.Deque; import java.util.List; import java.util.Map; @@ -37,16 +40,17 @@ import javax.script.Bindings; import jdk.internal.dynalink.CallSiteDescriptor; import jdk.internal.dynalink.linker.ConversionComparator; import jdk.internal.dynalink.linker.GuardedInvocation; +import jdk.internal.dynalink.linker.GuardedTypeConversion; import jdk.internal.dynalink.linker.GuardingTypeConverterFactory; import jdk.internal.dynalink.linker.LinkRequest; import jdk.internal.dynalink.linker.LinkerServices; import jdk.internal.dynalink.linker.TypeBasedGuardingDynamicLinker; import jdk.internal.dynalink.support.Guards; +import jdk.internal.dynalink.support.LinkerServicesImpl; import jdk.nashorn.api.scripting.JSObject; import jdk.nashorn.api.scripting.ScriptObjectMirror; import jdk.nashorn.api.scripting.ScriptUtils; import jdk.nashorn.internal.objects.NativeArray; -import jdk.nashorn.internal.runtime.Context; import jdk.nashorn.internal.runtime.JSType; import jdk.nashorn.internal.runtime.ScriptFunction; import jdk.nashorn.internal.runtime.ScriptObject; @@ -100,9 +104,16 @@ final class NashornLinker implements TypeBasedGuardingDynamicLinker, GuardingTyp } @Override - public GuardedInvocation convertToType(final Class sourceType, final Class targetType) throws Exception { - final GuardedInvocation gi = convertToTypeNoCast(sourceType, targetType); - return gi == null ? null : gi.asType(MH.type(targetType, sourceType)); + public GuardedTypeConversion convertToType(final Class sourceType, final Class targetType) throws Exception { + GuardedInvocation gi = convertToTypeNoCast(sourceType, targetType); + if(gi != null) { + return new GuardedTypeConversion(gi.asType(MH.type(targetType, sourceType)), true); + } + gi = getSamTypeConverter(sourceType, targetType); + if(gi != null) { + return new GuardedTypeConversion(gi.asType(MH.type(targetType, sourceType)), false); + } + return null; } /** @@ -126,12 +137,7 @@ final class NashornLinker implements TypeBasedGuardingDynamicLinker, GuardingTyp return arrayConverter; } - final GuardedInvocation mirrorConverter = getMirrorConverter(sourceType, targetType); - if(mirrorConverter != null) { - return mirrorConverter; - } - - return getSamTypeConverter(sourceType, targetType); + return getMirrorConverter(sourceType, targetType); } /** @@ -150,13 +156,23 @@ final class NashornLinker implements TypeBasedGuardingDynamicLinker, GuardingTyp final boolean isSourceTypeGeneric = sourceType.isAssignableFrom(ScriptFunction.class); if ((isSourceTypeGeneric || ScriptFunction.class.isAssignableFrom(sourceType)) && isAutoConvertibleFromFunction(targetType)) { - final MethodHandle ctor = JavaAdapterFactory.getConstructor(ScriptFunction.class, targetType); + final MethodHandle ctor = JavaAdapterFactory.getConstructor(ScriptFunction.class, targetType, getCurrentLookup()); assert ctor != null; // if isAutoConvertibleFromFunction() returned true, then ctor must exist. return new GuardedInvocation(ctor, isSourceTypeGeneric ? IS_SCRIPT_FUNCTION : null); } return null; } + private static Lookup getCurrentLookup() { + final LinkRequest currentRequest = AccessController.doPrivileged(new PrivilegedAction() { + @Override + public LinkRequest run() { + return LinkerServicesImpl.getCurrentLinkRequest(); + } + }); + return currentRequest == null ? MethodHandles.publicLookup() : currentRequest.getCallSiteDescriptor().getLookup(); + } + /** * Returns a guarded invocation that converts from a source type that is NativeArray to a Java array or List or * Deque type. diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornPrimitiveLinker.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornPrimitiveLinker.java index ccd95fda642..5cc1cd2c632 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornPrimitiveLinker.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornPrimitiveLinker.java @@ -31,6 +31,7 @@ import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import jdk.internal.dynalink.linker.ConversionComparator; import jdk.internal.dynalink.linker.GuardedInvocation; +import jdk.internal.dynalink.linker.GuardedTypeConversion; import jdk.internal.dynalink.linker.GuardingTypeConverterFactory; import jdk.internal.dynalink.linker.LinkRequest; import jdk.internal.dynalink.linker.LinkerServices; @@ -75,13 +76,13 @@ final class NashornPrimitiveLinker implements TypeBasedGuardingDynamicLinker, Gu * @return a conditional converter from source to target type */ @Override - public GuardedInvocation convertToType(final Class sourceType, final Class targetType) { + public GuardedTypeConversion convertToType(final Class sourceType, final Class targetType) { final MethodHandle mh = JavaArgumentConverters.getConverter(targetType); if (mh == null) { return null; } - return new GuardedInvocation(mh, canLinkTypeStatic(sourceType) ? null : GUARD_PRIMITIVE).asType(mh.type().changeParameterType(0, sourceType)); + return new GuardedTypeConversion(new GuardedInvocation(mh, canLinkTypeStatic(sourceType) ? null : GUARD_PRIMITIVE).asType(mh.type().changeParameterType(0, sourceType)), true); } /** diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java index 21e2d14eb4e..272b4ec0ac4 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java @@ -76,7 +76,8 @@ final class NashornStaticClassLinker implements TypeBasedGuardingDynamicLinker { if (NashornLinker.isAbstractClass(receiverClass)) { // Change this link request into a link request on the adapter class. final Object[] args = request.getArguments(); - args[0] = JavaAdapterFactory.getAdapterClassFor(new Class[] { receiverClass }, null); + args[0] = JavaAdapterFactory.getAdapterClassFor(new Class[] { receiverClass }, null, + linkRequest.getCallSiteDescriptor().getLookup()); final LinkRequest adapterRequest = request.replaceArguments(request.getCallSiteDescriptor(), args); final GuardedInvocation gi = checkNullConstructor(delegate(linkerServices, adapterRequest), receiverClass); // Finally, modify the guard to test for the original abstract class. diff --git a/nashorn/src/jdk/nashorn/internal/runtime/resources/Messages.properties b/nashorn/src/jdk/nashorn/internal/runtime/resources/Messages.properties index 1a37ba7bf76..95993c9f40e 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/resources/Messages.properties +++ b/nashorn/src/jdk/nashorn/internal/runtime/resources/Messages.properties @@ -130,6 +130,7 @@ type.error.extend.ERROR_NON_PUBLIC_CLASS=Can not extend/implement non-public cla type.error.extend.ERROR_NO_ACCESSIBLE_CONSTRUCTOR=Can not extend class {0} as it has no public or protected constructors. type.error.extend.ERROR_MULTIPLE_SUPERCLASSES=Can not extend multiple classes {0}. At most one of the specified types can be a class, the rest must all be interfaces. type.error.extend.ERROR_NO_COMMON_LOADER=Can not find a common class loader for ScriptObject and {0}. +type.error.extend.ERROR_FINAL_FINALIZER=Can not extend class because {0} has a final finalize method. type.error.no.constructor.matches.args=Can not construct {0} with the passed arguments; they do not match any of its constructor signatures. type.error.no.method.matches.args=Can not invoke method {0} with the passed arguments; they do not match any of its method signatures. type.error.method.not.constructor=Java method {0} can't be used as a constructor. diff --git a/nashorn/test/script/basic/JDK-8014647.js b/nashorn/test/script/basic/JDK-8014647.js index 8ecc21101d5..8d06848f557 100644 --- a/nashorn/test/script/basic/JDK-8014647.js +++ b/nashorn/test/script/basic/JDK-8014647.js @@ -32,9 +32,10 @@ var RunnableImpl1 = Java.extend(java.lang.Runnable, function() { print("I'm runn var RunnableImpl2 = Java.extend(java.lang.Runnable, function() { print("I'm runnable 2!") }) var r1 = new RunnableImpl1() var r2 = new RunnableImpl2() -var r3 = new RunnableImpl2(function() { print("I'm runnable 3!") }) +var RunnableImpl3 = Java.extend(RunnableImpl2); +var r3 = new RunnableImpl3({ run: function() { print("I'm runnable 3!") }}) r1.run() r2.run() r3.run() -print("r1.class === r2.class: " + (r1.class === r2.class)) -print("r2.class === r3.class: " + (r2.class === r3.class)) +print("r1.class !== r2.class: " + (r1.class !== r2.class)) +print("r2.class !== r3.class: " + (r2.class !== r3.class)) diff --git a/nashorn/test/script/basic/JDK-8014647.js.EXPECTED b/nashorn/test/script/basic/JDK-8014647.js.EXPECTED index 641a13b1d45..f4f51dcc38f 100644 --- a/nashorn/test/script/basic/JDK-8014647.js.EXPECTED +++ b/nashorn/test/script/basic/JDK-8014647.js.EXPECTED @@ -1,5 +1,5 @@ I'm runnable 1! I'm runnable 2! I'm runnable 3! -r1.class === r2.class: false -r2.class === r3.class: true +r1.class !== r2.class: true +r2.class !== r3.class: true diff --git a/nashorn/test/script/basic/javaclassoverrides.js b/nashorn/test/script/basic/javaclassoverrides.js index e7ad61d841f..2fa7a85720d 100644 --- a/nashorn/test/script/basic/javaclassoverrides.js +++ b/nashorn/test/script/basic/javaclassoverrides.js @@ -46,7 +46,8 @@ var R2 = Java.extend(java.lang.Runnable, { var r1 = new R1 var r2 = new R2 // Create one with an instance-override too -var r3 = new R2(function() { print("r3.run() invoked") }) +var R3 = Java.extend(R2) +var r3 = new R3({ run: function() { print("r3.run() invoked") }}) // Run 'em - we're passing them through a Thread to make sure they indeed // are full-blown Runnables @@ -60,9 +61,9 @@ runInThread(r2) runInThread(r3) // Two class-override classes differ -print("r1.class != r2.class: " + (r1.class != r2.class)) -// However, adding instance-overrides doesn't change the class -print("r2.class == r3.class: " + (r2.class == r3.class)) +print("r1.class !== r2.class: " + (r1.class !== r2.class)) +// instance-override class also differs +print("r2.class !== r3.class: " + (r2.class !== r3.class)) function checkAbstract(r) { try { @@ -77,10 +78,10 @@ function checkAbstract(r) { // overrides nor instance overrides are present var RAbstract = Java.extend(java.lang.Runnable, {}) checkAbstract(new RAbstract()) // class override (empty) -checkAbstract(new RAbstract() {}) // class+instance override (empty) +checkAbstract(new (Java.extend(RAbstract))() {}) // class+instance override (empty) // Check we delegate to superclass if neither class // overrides nor instance overrides are present var ExtendsList = Java.extend(java.util.ArrayList, {}) print("(new ExtendsList).size() = " + (new ExtendsList).size()) -print("(new ExtendsList(){}).size() = " + (new ExtendsList(){}).size()) \ No newline at end of file +print("(new (Java.extend(ExtendsList)){}).size() = " + (new (Java.extend(ExtendsList)){}).size()) diff --git a/nashorn/test/script/basic/javaclassoverrides.js.EXPECTED b/nashorn/test/script/basic/javaclassoverrides.js.EXPECTED index 6c534302d48..ceec09cff85 100644 --- a/nashorn/test/script/basic/javaclassoverrides.js.EXPECTED +++ b/nashorn/test/script/basic/javaclassoverrides.js.EXPECTED @@ -1,9 +1,9 @@ R1.run() invoked R2.run() invoked r3.run() invoked -r1.class != r2.class: true -r2.class == r3.class: true +r1.class !== r2.class: true +r2.class !== r3.class: true Got exception: java.lang.UnsupportedOperationException Got exception: java.lang.UnsupportedOperationException (new ExtendsList).size() = 0 -(new ExtendsList(){}).size() = 0 +(new (Java.extend(ExtendsList)){}).size() = 0 diff --git a/nashorn/test/script/sandbox/javaextend.js b/nashorn/test/script/sandbox/javaextend.js index 33cc6b01fa0..60eab74d14c 100644 --- a/nashorn/test/script/sandbox/javaextend.js +++ b/nashorn/test/script/sandbox/javaextend.js @@ -51,6 +51,21 @@ try { print(e) } +// Can't extend a class with explicit non-overridable finalizer +try { + Java.extend(model("ClassWithFinalFinalizer")) +} catch(e) { + print(e) +} + +// Can't extend a class with inherited non-overridable finalizer +try { + Java.extend(model("ClassWithInheritedFinalFinalizer")) +} catch(e) { + print(e) +} + + // Can't extend two classes try { Java.extend(java.lang.Thread,java.lang.Number) diff --git a/nashorn/test/script/sandbox/javaextend.js.EXPECTED b/nashorn/test/script/sandbox/javaextend.js.EXPECTED index 69c7818929c..c72774595e8 100644 --- a/nashorn/test/script/sandbox/javaextend.js.EXPECTED +++ b/nashorn/test/script/sandbox/javaextend.js.EXPECTED @@ -1,6 +1,8 @@ TypeError: Can not extend final class jdk.nashorn.test.models.FinalClass. TypeError: Can not extend class jdk.nashorn.test.models.NoAccessibleConstructorClass as it has no public or protected constructors. TypeError: Can not extend/implement non-public class/interface jdk.nashorn.test.models.NonPublicClass. +TypeError: Can not extend class because jdk.nashorn.test.models.ClassWithFinalFinalizer has a final finalize method. +TypeError: Can not extend class because jdk.nashorn.test.models.ClassWithFinalFinalizer has a final finalize method. TypeError: Can not extend multiple classes java.lang.Number and java.lang.Thread. At most one of the specified types can be a class, the rest must all be interfaces. abcdabcd run-object diff --git a/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineSecurityTest.java b/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineSecurityTest.java index 9cea21ba2f5..6d0d40f6042 100644 --- a/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineSecurityTest.java +++ b/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineSecurityTest.java @@ -33,8 +33,8 @@ import java.lang.reflect.Proxy; import java.util.Objects; import javax.script.Invocable; import javax.script.ScriptEngine; -import javax.script.ScriptException; import javax.script.ScriptEngineManager; +import javax.script.ScriptException; import org.testng.annotations.Test; /** @@ -130,6 +130,23 @@ public class ScriptEngineSecurityTest { } } + + @Test + public void securitySystemExitFromFinalizerThread() throws ScriptException { + if (System.getSecurityManager() == null) { + // pass vacuously + return; + } + + final ScriptEngineManager m = new ScriptEngineManager(); + final ScriptEngine e = m.getEngineByName("nashorn"); + e.eval("var o = Java.extend(Java.type('javax.imageio.spi.ServiceRegistry'), { deregisterAll: this.exit.bind(null, 1234)});\n" + + "new o(new java.util.ArrayList().iterator())"); + System.gc(); + System.runFinalization(); + // NOTE: this test just exits the VM if it fails. + } + @Test public void securitySystemLoadLibrary() { if (System.getSecurityManager() == null) { diff --git a/nashorn/test/src/jdk/nashorn/test/models/ClassWithFinalFinalizer.java b/nashorn/test/src/jdk/nashorn/test/models/ClassWithFinalFinalizer.java new file mode 100644 index 00000000000..ba0d86d8a96 --- /dev/null +++ b/nashorn/test/src/jdk/nashorn/test/models/ClassWithFinalFinalizer.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2010, 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. + */ + +package jdk.nashorn.test.models; + +public class ClassWithFinalFinalizer { + protected final void finalize() { + } +} diff --git a/nashorn/test/src/jdk/nashorn/test/models/ClassWithInheritedFinalFinalizer.java b/nashorn/test/src/jdk/nashorn/test/models/ClassWithInheritedFinalFinalizer.java new file mode 100644 index 00000000000..80393fbbe2b --- /dev/null +++ b/nashorn/test/src/jdk/nashorn/test/models/ClassWithInheritedFinalFinalizer.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010, 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. + */ + +package jdk.nashorn.test.models; + +public class ClassWithInheritedFinalFinalizer extends ClassWithFinalFinalizer { +} From a9618434af9ab788d8c91c306bc7ab836772ab34 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Fri, 31 Jan 2014 10:24:58 +0100 Subject: [PATCH 117/158] 8033292: only warn, not fail, on unknown variables in configure Reviewed-by: erikj --- common/autoconf/basics.m4 | 2 +- common/autoconf/generated-configure.sh | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/common/autoconf/basics.m4 b/common/autoconf/basics.m4 index 6bd29145e39..d34615d5a2a 100644 --- a/common/autoconf/basics.m4 +++ b/common/autoconf/basics.m4 @@ -250,7 +250,7 @@ AC_DEFUN([BASIC_CHECK_LEFTOVER_OVERRIDDEN], if test "x$CONFIGURE_OVERRIDDEN_VARIABLES" != x; then # Replace the separating ! with spaces before presenting for end user. unknown_variables=${CONFIGURE_OVERRIDDEN_VARIABLES//!/ } - AC_MSG_ERROR([The following variables are unknown to configure: $unknown_variables]) + AC_MSG_WARN([The following variables might be unknown to configure: $unknown_variables]) fi ]) diff --git a/common/autoconf/generated-configure.sh b/common/autoconf/generated-configure.sh index 998d2004ea2..a03ee5cdb85 100644 --- a/common/autoconf/generated-configure.sh +++ b/common/autoconf/generated-configure.sh @@ -4087,7 +4087,7 @@ fi #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1391032272 +DATE_WHEN_GENERATED=1391160222 ############################################################################### # @@ -48539,7 +48539,8 @@ $as_echo "no, disabling ccaching of precompiled headers" >&6; } if test "x$CONFIGURE_OVERRIDDEN_VARIABLES" != x; then # Replace the separating ! with spaces before presenting for end user. unknown_variables=${CONFIGURE_OVERRIDDEN_VARIABLES//!/ } - as_fn_error $? "The following variables are unknown to configure: $unknown_variables" "$LINENO" 5 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The following variables might be unknown to configure: $unknown_variables" >&5 +$as_echo "$as_me: WARNING: The following variables might be unknown to configure: $unknown_variables" >&2;} fi From e72d99fef1791ccff064b21ad0a492cf2e1dbc30 Mon Sep 17 00:00:00 2001 From: Naoto Sato Date: Fri, 31 Jan 2014 10:04:16 -0800 Subject: [PATCH 118/158] 8030696: Norwegian locales nb_NO and nn_NO should be available locales Reviewed-by: okutsu --- jdk/make/gensrc/GensrcLocaleDataMetaInfo.gmk | 4 +-- .../resources/no/LocaleNames_no.properties | 2 ++ .../no/LocaleNames_no_NO_NY.properties | 4 ++- jdk/test/java/util/Locale/LocaleTest.java | 27 +++++++++++++++---- 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/jdk/make/gensrc/GensrcLocaleDataMetaInfo.gmk b/jdk/make/gensrc/GensrcLocaleDataMetaInfo.gmk index 98947a0b92c..bf2e3a34552 100644 --- a/jdk/make/gensrc/GensrcLocaleDataMetaInfo.gmk +++ b/jdk/make/gensrc/GensrcLocaleDataMetaInfo.gmk @@ -53,8 +53,8 @@ endif # The EN locales EN_LOCALES := en% -# ja-JP-JP and th-TH-TH need to be manually added, as they don't have any resource files. -ALL_NON_EN_LOCALES := ja-JP-JP th-TH-TH +# Locales that don't have any resource files should be included here. +ALL_NON_EN_LOCALES := ja-JP-JP nb-NO nn-NO th-TH-TH SED_ARGS := -e 's|$(HASH)warn This file is preprocessed before being compiled|// -- This file was mechanically generated: Do not edit! -- //|g' diff --git a/jdk/src/share/classes/sun/util/resources/no/LocaleNames_no.properties b/jdk/src/share/classes/sun/util/resources/no/LocaleNames_no.properties index 3a43b04dcc9..f39dfb66568 100644 --- a/jdk/src/share/classes/sun/util/resources/no/LocaleNames_no.properties +++ b/jdk/src/share/classes/sun/util/resources/no/LocaleNames_no.properties @@ -38,6 +38,8 @@ # language names # key is ISO 639 language code +nb=bokm\u00e5l +nn=nynorsk no=norsk # country names diff --git a/jdk/src/share/classes/sun/util/resources/no/LocaleNames_no_NO_NY.properties b/jdk/src/share/classes/sun/util/resources/no/LocaleNames_no_NO_NY.properties index 3a43b04dcc9..e56e415a512 100644 --- a/jdk/src/share/classes/sun/util/resources/no/LocaleNames_no_NO_NY.properties +++ b/jdk/src/share/classes/sun/util/resources/no/LocaleNames_no_NO_NY.properties @@ -38,12 +38,14 @@ # language names # key is ISO 639 language code +nb=bokm\u00e5l +nn=nynorsk no=norsk # country names # key is ISO 3166 country code -NO=Norge +NO=Noreg # variant names diff --git a/jdk/test/java/util/Locale/LocaleTest.java b/jdk/test/java/util/Locale/LocaleTest.java index 8c9c4f16199..2a6824222b3 100644 --- a/jdk/test/java/util/Locale/LocaleTest.java +++ b/jdk/test/java/util/Locale/LocaleTest.java @@ -25,7 +25,7 @@ * @bug 4052404 4052440 4084688 4092475 4101316 4105828 4107014 4107953 4110613 * 4118587 4118595 4122371 4126371 4126880 4135316 4135752 4139504 4139940 4143951 * 4147315 4147317 4147552 4335196 4778440 4940539 5010672 6475525 6544471 6627549 - * 6786276 7066203 7085757 + * 6786276 7066203 7085757 8030696 * @summary test Locales */ /* @@ -62,6 +62,8 @@ */ import java.text.*; +import java.util.Arrays; +import java.util.List; import java.util.Locale; import java.util.MissingResourceException; import java.util.Date; @@ -925,16 +927,20 @@ test commented out pending API-change approval } /* - * @bug 4147552 4778440 + * @bug 4147552 4778440 8030696 */ public void Test4147552() { Locale[] locales = { new Locale("no", "NO"), new Locale("no", "NO", "B"), - new Locale("no", "NO", "NY") }; + new Locale("no", "NO", "NY"), new Locale("nb", "NO"), + new Locale("nn", "NO") }; String[] englishDisplayNames = { "Norwegian (Norway)", "Norwegian (Norway,Bokm\u00e5l)", - "Norwegian (Norway,Nynorsk)" }; + "Norwegian (Norway,Nynorsk)", + "Norwegian Bokm\u00e5l (Norway)", + "Norwegian Nynorsk (Norway)" }; String[] norwegianDisplayNames = { "norsk (Norge)", - "norsk (Norge,bokm\u00e5l)", "norsk (Norge,nynorsk)" }; + "norsk (Norge,bokm\u00e5l)", "norsk (Noreg,nynorsk)", + "bokm\u00e5l (Norge)", "nynorsk (Noreg)" }; for (int i = 0; i < locales.length; i++) { Locale loc = locales[i]; @@ -948,6 +954,17 @@ test commented out pending API-change approval } } + /* + * @bug 8030696 + */ + public void Test8030696() { + List av = Arrays.asList(Locale.getAvailableLocales()); + if (!av.contains(new Locale("nb", "NO")) || + !av.contains(new Locale("nn", "NO"))) { + errln("\"nb-NO\" and/or \"nn-NO\" locale(s) not returned from getAvailableLocales()."); + } + } + static String escapeUnicode(String s) { StringBuffer buf = new StringBuffer(); for (int i=0; i Date: Fri, 31 Jan 2014 18:32:07 +0000 Subject: [PATCH 119/158] 8011645: CopyOnWriteArrayList.COWSubList.subList does not validate range properly Reviewed-by: martin, psandoz --- .../util/concurrent/CopyOnWriteArrayList.java | 2 +- .../CopyOnWriteArrayList/COWSubList.java | 58 +++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 jdk/test/java/util/concurrent/CopyOnWriteArrayList/COWSubList.java diff --git a/jdk/src/share/classes/java/util/concurrent/CopyOnWriteArrayList.java b/jdk/src/share/classes/java/util/concurrent/CopyOnWriteArrayList.java index fae67b2b2d0..162ad3b51d1 100644 --- a/jdk/src/share/classes/java/util/concurrent/CopyOnWriteArrayList.java +++ b/jdk/src/share/classes/java/util/concurrent/CopyOnWriteArrayList.java @@ -1400,7 +1400,7 @@ public class CopyOnWriteArrayList lock.lock(); try { checkForComodification(); - if (fromIndex < 0 || toIndex > size) + if (fromIndex < 0 || toIndex > size || fromIndex > toIndex) throw new IndexOutOfBoundsException(); return new COWSubList(l, fromIndex + offset, toIndex + offset); diff --git a/jdk/test/java/util/concurrent/CopyOnWriteArrayList/COWSubList.java b/jdk/test/java/util/concurrent/CopyOnWriteArrayList/COWSubList.java new file mode 100644 index 00000000000..5cbfea7ec6b --- /dev/null +++ b/jdk/test/java/util/concurrent/CopyOnWriteArrayList/COWSubList.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8011645 + * @summary CopyOnWriteArrayList.COWSubList.subList does not validate range properly + */ +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + +public class COWSubList { + public static void main(String[] args) { + List list = new CopyOnWriteArrayList<>(); + list.add("A"); + list.add("B"); + list.add("C"); + list.add("D"); + list.add("E"); + + expectThrow(() -> list.subList(-1, 5)); + expectThrow(() -> list.subList(0, 6)); + expectThrow(() -> list.subList(4, 3)); + expectThrow(() -> list.subList(0, 5).subList(-1, 5)); + expectThrow(() -> list.subList(0, 5).subList(0, 6)); + expectThrow(() -> list.subList(0, 5).subList(4, 3)); + } + + static void expectThrow(Runnable r) { + try { + r.run(); + throw new RuntimeException("Failed: expected IOOBE to be thrown"); + } catch (IndexOutOfBoundsException x) { + // ok, excpeted + } + } +} + From 930a4614e6bc8ecdc04a8da28a2bb30f8a0ef1be Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Fri, 31 Jan 2014 13:42:31 -0500 Subject: [PATCH 120/158] 8032221: Typo in java.util.date Trancate -> truncate; updated html and to use {@code ...} Reviewed-by: darcy, lancea --- jdk/src/share/classes/java/util/Date.java | 343 +++++++++++----------- 1 file changed, 170 insertions(+), 173 deletions(-) diff --git a/jdk/src/share/classes/java/util/Date.java b/jdk/src/share/classes/java/util/Date.java index 502daaefdbb..f16ea496604 100644 --- a/jdk/src/share/classes/java/util/Date.java +++ b/jdk/src/share/classes/java/util/Date.java @@ -41,20 +41,20 @@ import sun.util.calendar.Gregorian; import sun.util.calendar.ZoneInfo; /** - * The class Date represents a specific instant + * The class {@code Date} represents a specific instant * in time, with millisecond precision. *

- * Prior to JDK 1.1, the class Date had two additional + * Prior to JDK 1.1, the class {@code Date} had two additional * functions. It allowed the interpretation of dates as year, month, day, hour, * minute, and second values. It also allowed the formatting and parsing * of date strings. Unfortunately, the API for these functions was not * amenable to internationalization. As of JDK 1.1, the - * Calendar class should be used to convert between dates and time - * fields and the DateFormat class should be used to format and + * {@code Calendar} class should be used to convert between dates and time + * fields and the {@code DateFormat} class should be used to format and * parse date strings. - * The corresponding methods in Date are deprecated. + * The corresponding methods in {@code Date} are deprecated. *

- * Although the Date class is intended to reflect + * Although the {@code Date} class is intended to reflect * coordinated universal time (UTC), it may not do so exactly, * depending on the host environment of the Java Virtual Machine. * Nearly all modern operating systems assume that 1 day = @@ -93,12 +93,12 @@ import sun.util.calendar.ZoneInfo; * http://tycho.usno.navy.mil/systime.html * *

- * In all methods of class Date that accept or return + * In all methods of class {@code Date} that accept or return * year, month, date, hours, minutes, and seconds values, the * following representations are used: *

    *
  • A year y is represented by the integer - * y - 1900. + * y {@code - 1900}. *
  • A month is represented by an integer from 0 to 11; 0 is January, * 1 is February, and so forth; thus 11 is December. *
  • A date (day of month) is represented by an integer from 1 to 31 @@ -155,7 +155,7 @@ public class Date private static final long serialVersionUID = 7523967970034938905L; /** - * Allocates a Date object and initializes it so that + * Allocates a {@code Date} object and initializes it so that * it represents the time at which it was allocated, measured to the * nearest millisecond. * @@ -166,7 +166,7 @@ public class Date } /** - * Allocates a Date object and initializes it to + * Allocates a {@code Date} object and initializes it to * represent the specified number of milliseconds since the * standard base time known as "the epoch", namely January 1, * 1970, 00:00:00 GMT. @@ -179,18 +179,18 @@ public class Date } /** - * Allocates a Date object and initializes it so that + * Allocates a {@code Date} object and initializes it so that * it represents midnight, local time, at the beginning of the day - * specified by the year, month, and - * date arguments. + * specified by the {@code year}, {@code month}, and + * {@code date} arguments. * * @param year the year minus 1900. * @param month the month between 0-11. * @param date the day of the month between 1-31. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.set(year + 1900, month, date) - * or GregorianCalendar(year + 1900, month, date). + * replaced by {@code Calendar.set(year + 1900, month, date)} + * or {@code GregorianCalendar(year + 1900, month, date)}. */ @Deprecated public Date(int year, int month, int date) { @@ -198,10 +198,10 @@ public class Date } /** - * Allocates a Date object and initializes it so that + * Allocates a {@code Date} object and initializes it so that * it represents the instant at the start of the minute specified by - * the year, month, date, - * hrs, and min arguments, in the local + * the {@code year}, {@code month}, {@code date}, + * {@code hrs}, and {@code min} arguments, in the local * time zone. * * @param year the year minus 1900. @@ -211,9 +211,8 @@ public class Date * @param min the minutes between 0-59. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.set(year + 1900, month, date, - * hrs, min) or GregorianCalendar(year + 1900, - * month, date, hrs, min). + * replaced by {@code Calendar.set(year + 1900, month, date, hrs, min)} + * or {@code GregorianCalendar(year + 1900, month, date, hrs, min)}. */ @Deprecated public Date(int year, int month, int date, int hrs, int min) { @@ -221,10 +220,10 @@ public class Date } /** - * Allocates a Date object and initializes it so that + * Allocates a {@code Date} object and initializes it so that * it represents the instant at the start of the second specified - * by the year, month, date, - * hrs, min, and sec arguments, + * by the {@code year}, {@code month}, {@code date}, + * {@code hrs}, {@code min}, and {@code sec} arguments, * in the local time zone. * * @param year the year minus 1900. @@ -235,9 +234,8 @@ public class Date * @param sec the seconds between 0-59. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.set(year + 1900, month, date, - * hrs, min, sec) or GregorianCalendar(year + 1900, - * month, date, hrs, min, sec). + * replaced by {@code Calendar.set(year + 1900, month, date, hrs, min, sec)} + * or {@code GregorianCalendar(year + 1900, month, date, hrs, min, sec)}. */ @Deprecated public Date(int year, int month, int date, int hrs, int min, int sec) { @@ -258,16 +256,16 @@ public class Date } /** - * Allocates a Date object and initializes it so that + * Allocates a {@code Date} object and initializes it so that * it represents the date and time indicated by the string - * s, which is interpreted as if by the + * {@code s}, which is interpreted as if by the * {@link Date#parse} method. * * @param s a string representation of the date. * @see java.text.DateFormat * @see java.util.Date#parse(java.lang.String) * @deprecated As of JDK version 1.1, - * replaced by DateFormat.parse(String s). + * replaced by {@code DateFormat.parse(String s)}. */ @Deprecated public Date(String s) { @@ -292,7 +290,7 @@ public class Date * Determines the date and time based on the arguments. The * arguments are interpreted as a year, month, day of the month, * hour of the day, minute within the hour, and second within the - * minute, exactly as for the Date constructor with six + * minute, exactly as for the {@code Date} constructor with six * arguments, except that the arguments are interpreted relative * to UTC rather than to the local time zone. The time indicated is * returned represented as the distance, measured in milliseconds, @@ -308,10 +306,9 @@ public class Date * the date and time specified by the arguments. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.set(year + 1900, month, date, - * hrs, min, sec) or GregorianCalendar(year + 1900, - * month, date, hrs, min, sec), using a UTC - * TimeZone, followed by Calendar.getTime().getTime(). + * replaced by {@code Calendar.set(year + 1900, month, date, hrs, min, sec)} + * or {@code GregorianCalendar(year + 1900, month, date, hrs, min, sec)}, using a UTC + * {@code TimeZone}, followed by {@code Calendar.getTime().getTime()}. */ @Deprecated public static long UTC(int year, int month, int date, @@ -338,12 +335,12 @@ public class Date } /** - * Attempts to interpret the string s as a representation + * Attempts to interpret the string {@code s} as a representation * of a date and time. If the attempt is successful, the time * indicated is returned represented as the distance, measured in * milliseconds, of that time from the epoch (00:00:00 GMT on * January 1, 1970). If the attempt fails, an - * IllegalArgumentException is thrown. + * {@code IllegalArgumentException} is thrown. *

    * It accepts many syntaxes; in particular, it recognizes the IETF * standard date syntax: "Sat, 12 Aug 1995 13:30:00 GMT". It also @@ -353,11 +350,11 @@ public class Date * meridian). If no time zone is specified, the local time zone is * assumed. GMT and UTC are considered equivalent. *

    - * The string s is processed from left to right, looking for - * data of interest. Any material in s that is within the - * ASCII parenthesis characters ( and ) is ignored. + * The string {@code s} is processed from left to right, looking for + * data of interest. Any material in {@code s} that is within the + * ASCII parenthesis characters {@code (} and {@code )} is ignored. * Parentheses may be nested. Otherwise, the only characters permitted - * within s are these ASCII characters: + * within {@code s} are these ASCII characters: *

          * abcdefghijklmnopqrstuvwxyz
          * ABCDEFGHIJKLMNOPQRSTUVWXYZ
    @@ -365,18 +362,18 @@ public class Date
          * and whitespace characters.

    * A consecutive sequence of decimal digits is treated as a decimal * number:

      - *
    • If a number is preceded by + or - and a year + *
    • If a number is preceded by {@code +} or {@code -} and a year * has already been recognized, then the number is a time-zone * offset. If the number is less than 24, it is an offset measured * in hours. Otherwise, it is regarded as an offset in minutes, * expressed in 24-hour time format without punctuation. A - * preceding - means a westward offset. Time zone offsets + * preceding {@code -} means a westward offset. Time zone offsets * are always relative to UTC (Greenwich). Thus, for example, - * -5 occurring in the string would mean "five hours west - * of Greenwich" and +0430 would mean "four hours and + * {@code -5} occurring in the string would mean "five hours west + * of Greenwich" and {@code +0430} would mean "four hours and * thirty minutes east of Greenwich." It is permitted for the - * string to specify GMT, UT, or UTC - * redundantly-for example, GMT-5 or utc+0430. + * string to specify {@code GMT}, {@code UT}, or {@code UTC} + * redundantly-for example, {@code GMT-5} or {@code utc+0430}. *
    • The number is regarded as a year number if one of the * following conditions is true: *
        @@ -399,8 +396,8 @@ public class Date * unless an hour has already been recognized, in which case it is * regarded as a minute. *
      • If the number is followed by a slash, it is regarded as a month - * (it is decreased by 1 to produce a number in the range 0 - * to 11), unless a month has already been recognized, in + * (it is decreased by 1 to produce a number in the range {@code 0} + * to {@code 11}), unless a month has already been recognized, in * which case it is regarded as a day of the month. *
      • If the number is followed by whitespace, a comma, a hyphen, or * end of string, then if an hour has been recognized but not a @@ -409,31 +406,31 @@ public class Date * otherwise, it is regarded as a day of the month.

      * A consecutive sequence of letters is regarded as a word and treated * as follows:

        - *
      • A word that matches AM, ignoring case, is ignored (but + *
      • A word that matches {@code AM}, ignoring case, is ignored (but * the parse fails if an hour has not been recognized or is less - * than 1 or greater than 12). - *
      • A word that matches PM, ignoring case, adds 12 + * than {@code 1} or greater than {@code 12}). + *
      • A word that matches {@code PM}, ignoring case, adds {@code 12} * to the hour (but the parse fails if an hour has not been - * recognized or is less than 1 or greater than 12). - *
      • Any word that matches any prefix of SUNDAY, MONDAY, TUESDAY, - * WEDNESDAY, THURSDAY, FRIDAY, or SATURDAY, ignoring - * case, is ignored. For example, sat, Friday, TUE, and - * Thurs are ignored. - *
      • Otherwise, any word that matches any prefix of JANUARY, + * recognized or is less than {@code 1} or greater than {@code 12}). + *
      • Any word that matches any prefix of {@code SUNDAY, MONDAY, TUESDAY, + * WEDNESDAY, THURSDAY, FRIDAY}, or {@code SATURDAY}, ignoring + * case, is ignored. For example, {@code sat, Friday, TUE}, and + * {@code Thurs} are ignored. + *
      • Otherwise, any word that matches any prefix of {@code JANUARY, * FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, - * OCTOBER, NOVEMBER, or DECEMBER, ignoring case, and + * OCTOBER, NOVEMBER}, or {@code DECEMBER}, ignoring case, and * considering them in the order given here, is recognized as - * specifying a month and is converted to a number (0 to - * 11). For example, aug, Sept, april, and - * NOV are recognized as months. So is Ma, which - * is recognized as MARCH, not MAY. - *
      • Any word that matches GMT, UT, or UTC, ignoring + * specifying a month and is converted to a number ({@code 0} to + * {@code 11}). For example, {@code aug, Sept, april}, and + * {@code NOV} are recognized as months. So is {@code Ma}, which + * is recognized as {@code MARCH}, not {@code MAY}. + *
      • Any word that matches {@code GMT, UT}, or {@code UTC}, ignoring * case, is treated as referring to UTC. - *
      • Any word that matches EST, CST, MST, or PST, + *
      • Any word that matches {@code EST, CST, MST}, or {@code PST}, * ignoring case, is recognized as referring to the time zone in * North America that is five, six, seven, or eight hours west of - * Greenwich, respectively. Any word that matches EDT, CDT, - * MDT, or PDT, ignoring case, is recognized as + * Greenwich, respectively. Any word that matches {@code EDT, CDT, + * MDT}, or {@code PDT}, ignoring case, is recognized as * referring to the same time zone, respectively, during daylight * saving time.

      * Once the entire string s has been scanned, it is converted to a time @@ -448,7 +445,7 @@ public class Date * represented by the string argument. * @see java.text.DateFormat * @deprecated As of JDK version 1.1, - * replaced by DateFormat.parse(String s). + * replaced by {@code DateFormat.parse(String s)}. */ @Deprecated public static long parse(String s) { @@ -638,13 +635,13 @@ public class Date /** * Returns a value that is the result of subtracting 1900 from the * year that contains or begins with the instant in time represented - * by this Date object, as interpreted in the local + * by this {@code Date} object, as interpreted in the local * time zone. * * @return the year represented by this date, minus 1900. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.get(Calendar.YEAR) - 1900. + * replaced by {@code Calendar.get(Calendar.YEAR) - 1900}. */ @Deprecated public int getYear() { @@ -652,8 +649,8 @@ public class Date } /** - * Sets the year of this Date object to be the specified - * value plus 1900. This Date object is modified so + * Sets the year of this {@code Date} object to be the specified + * value plus 1900. This {@code Date} object is modified so * that it represents a point in time within the specified year, * with the month, date, hour, minute, and second the same as * before, as interpreted in the local time zone. (Of course, if @@ -664,7 +661,7 @@ public class Date * @param year the year value. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.set(Calendar.YEAR, year + 1900). + * replaced by {@code Calendar.set(Calendar.YEAR, year + 1900)}. */ @Deprecated public void setYear(int year) { @@ -673,14 +670,14 @@ public class Date /** * Returns a number representing the month that contains or begins - * with the instant in time represented by this Date object. - * The value returned is between 0 and 11, - * with the value 0 representing January. + * with the instant in time represented by this {@code Date} object. + * The value returned is between {@code 0} and {@code 11}, + * with the value {@code 0} representing January. * * @return the month represented by this date. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.get(Calendar.MONTH). + * replaced by {@code Calendar.get(Calendar.MONTH)}. */ @Deprecated public int getMonth() { @@ -689,7 +686,7 @@ public class Date /** * Sets the month of this date to the specified value. This - * Date object is modified so that it represents a point + * {@code Date} object is modified so that it represents a point * in time within the specified month, with the year, date, hour, * minute, and second the same as before, as interpreted in the * local time zone. If the date was October 31, for example, and @@ -699,7 +696,7 @@ public class Date * @param month the month value between 0-11. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.set(Calendar.MONTH, int month). + * replaced by {@code Calendar.set(Calendar.MONTH, int month)}. */ @Deprecated public void setMonth(int month) { @@ -719,16 +716,16 @@ public class Date } /** - * Returns the day of the month represented by this Date object. - * The value returned is between 1 and 31 + * Returns the day of the month represented by this {@code Date} object. + * The value returned is between {@code 1} and {@code 31} * representing the day of the month that contains or begins with the - * instant in time represented by this Date object, as + * instant in time represented by this {@code Date} object, as * interpreted in the local time zone. * * @return the day of the month represented by this date. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.get(Calendar.DAY_OF_MONTH). + * replaced by {@code Calendar.get(Calendar.DAY_OF_MONTH)}. * @deprecated */ @Deprecated @@ -737,8 +734,8 @@ public class Date } /** - * Sets the day of the month of this Date object to the - * specified value. This Date object is modified so that + * Sets the day of the month of this {@code Date} object to the + * specified value. This {@code Date} object is modified so that * it represents a point in time within the specified day of the * month, with the year, month, hour, minute, and second the same * as before, as interpreted in the local time zone. If the date @@ -749,7 +746,7 @@ public class Date * @param date the day of the month value between 1-31. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.set(Calendar.DAY_OF_MONTH, int date). + * replaced by {@code Calendar.set(Calendar.DAY_OF_MONTH, int date)}. */ @Deprecated public void setDate(int date) { @@ -758,17 +755,17 @@ public class Date /** * Returns the day of the week represented by this date. The - * returned value (0 = Sunday, 1 = Monday, - * 2 = Tuesday, 3 = Wednesday, 4 = - * Thursday, 5 = Friday, 6 = Saturday) + * returned value ({@code 0} = Sunday, {@code 1} = Monday, + * {@code 2} = Tuesday, {@code 3} = Wednesday, {@code 4} = + * Thursday, {@code 5} = Friday, {@code 6} = Saturday) * represents the day of the week that contains or begins with - * the instant in time represented by this Date object, + * the instant in time represented by this {@code Date} object, * as interpreted in the local time zone. * * @return the day of the week represented by this date. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.get(Calendar.DAY_OF_WEEK). + * replaced by {@code Calendar.get(Calendar.DAY_OF_WEEK)}. */ @Deprecated public int getDay() { @@ -776,16 +773,16 @@ public class Date } /** - * Returns the hour represented by this Date object. The - * returned value is a number (0 through 23) + * Returns the hour represented by this {@code Date} object. The + * returned value is a number ({@code 0} through {@code 23}) * representing the hour within the day that contains or begins - * with the instant in time represented by this Date + * with the instant in time represented by this {@code Date} * object, as interpreted in the local time zone. * * @return the hour represented by this date. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.get(Calendar.HOUR_OF_DAY). + * replaced by {@code Calendar.get(Calendar.HOUR_OF_DAY)}. */ @Deprecated public int getHours() { @@ -793,8 +790,8 @@ public class Date } /** - * Sets the hour of this Date object to the specified value. - * This Date object is modified so that it represents a point + * Sets the hour of this {@code Date} object to the specified value. + * This {@code Date} object is modified so that it represents a point * in time within the specified hour of the day, with the year, month, * date, minute, and second the same as before, as interpreted in the * local time zone. @@ -802,7 +799,7 @@ public class Date * @param hours the hour value. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.set(Calendar.HOUR_OF_DAY, int hours). + * replaced by {@code Calendar.set(Calendar.HOUR_OF_DAY, int hours)}. */ @Deprecated public void setHours(int hours) { @@ -812,12 +809,12 @@ public class Date /** * Returns the number of minutes past the hour represented by this date, * as interpreted in the local time zone. - * The value returned is between 0 and 59. + * The value returned is between {@code 0} and {@code 59}. * * @return the number of minutes past the hour represented by this date. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.get(Calendar.MINUTE). + * replaced by {@code Calendar.get(Calendar.MINUTE)}. */ @Deprecated public int getMinutes() { @@ -825,8 +822,8 @@ public class Date } /** - * Sets the minutes of this Date object to the specified value. - * This Date object is modified so that it represents a point + * Sets the minutes of this {@code Date} object to the specified value. + * This {@code Date} object is modified so that it represents a point * in time within the specified minute of the hour, with the year, month, * date, hour, and second the same as before, as interpreted in the * local time zone. @@ -834,7 +831,7 @@ public class Date * @param minutes the value of the minutes. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.set(Calendar.MINUTE, int minutes). + * replaced by {@code Calendar.set(Calendar.MINUTE, int minutes)}. */ @Deprecated public void setMinutes(int minutes) { @@ -843,14 +840,14 @@ public class Date /** * Returns the number of seconds past the minute represented by this date. - * The value returned is between 0 and 61. The - * values 60 and 61 can only occur on those + * The value returned is between {@code 0} and {@code 61}. The + * values {@code 60} and {@code 61} can only occur on those * Java Virtual Machines that take leap seconds into account. * * @return the number of seconds past the minute represented by this date. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.get(Calendar.SECOND). + * replaced by {@code Calendar.get(Calendar.SECOND)}. */ @Deprecated public int getSeconds() { @@ -858,8 +855,8 @@ public class Date } /** - * Sets the seconds of this Date to the specified value. - * This Date object is modified so that it represents a + * Sets the seconds of this {@code Date} to the specified value. + * This {@code Date} object is modified so that it represents a * point in time within the specified second of the minute, with * the year, month, date, hour, and minute the same as before, as * interpreted in the local time zone. @@ -867,7 +864,7 @@ public class Date * @param seconds the seconds value. * @see java.util.Calendar * @deprecated As of JDK version 1.1, - * replaced by Calendar.set(Calendar.SECOND, int seconds). + * replaced by {@code Calendar.set(Calendar.SECOND, int seconds)}. */ @Deprecated public void setSeconds(int seconds) { @@ -876,7 +873,7 @@ public class Date /** * Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT - * represented by this Date object. + * represented by this {@code Date} object. * * @return the number of milliseconds since January 1, 1970, 00:00:00 GMT * represented by this date. @@ -893,8 +890,8 @@ public class Date } /** - * Sets this Date object to represent a point in time that is - * time milliseconds after January 1, 1970 00:00:00 GMT. + * Sets this {@code Date} object to represent a point in time that is + * {@code time} milliseconds after January 1, 1970 00:00:00 GMT. * * @param time the number of milliseconds. */ @@ -907,11 +904,11 @@ public class Date * Tests if this date is before the specified date. * * @param when a date. - * @return true if and only if the instant of time - * represented by this Date object is strictly - * earlier than the instant represented by when; - * false otherwise. - * @exception NullPointerException if when is null. + * @return {@code true} if and only if the instant of time + * represented by this {@code Date} object is strictly + * earlier than the instant represented by {@code when}; + * {@code false} otherwise. + * @exception NullPointerException if {@code when} is null. */ public boolean before(Date when) { return getMillisOf(this) < getMillisOf(when); @@ -921,11 +918,11 @@ public class Date * Tests if this date is after the specified date. * * @param when a date. - * @return true if and only if the instant represented - * by this Date object is strictly later than the - * instant represented by when; - * false otherwise. - * @exception NullPointerException if when is null. + * @return {@code true} if and only if the instant represented + * by this {@code Date} object is strictly later than the + * instant represented by {@code when}; + * {@code false} otherwise. + * @exception NullPointerException if {@code when} is null. */ public boolean after(Date when) { return getMillisOf(this) > getMillisOf(when); @@ -933,17 +930,17 @@ public class Date /** * Compares two dates for equality. - * The result is true if and only if the argument is - * not null and is a Date object that + * The result is {@code true} if and only if the argument is + * not {@code null} and is a {@code Date} object that * represents the same point in time, to the millisecond, as this object. *

      - * Thus, two Date objects are equal if and only if the - * getTime method returns the same long + * Thus, two {@code Date} objects are equal if and only if the + * {@code getTime} method returns the same {@code long} * value for both. * * @param obj the object to compare with. - * @return true if the objects are the same; - * false otherwise. + * @return {@code true} if the objects are the same; + * {@code false} otherwise. * @see java.util.Date#getTime() */ public boolean equals(Object obj) { @@ -951,7 +948,7 @@ public class Date } /** - * Returns the millisecond value of this Date object + * Returns the millisecond value of this {@code Date} object * without affecting its internal state. */ static final long getMillisOf(Date date) { @@ -965,13 +962,13 @@ public class Date /** * Compares two Dates for ordering. * - * @param anotherDate the Date to be compared. - * @return the value 0 if the argument Date is equal to - * this Date; a value less than 0 if this Date + * @param anotherDate the {@code Date} to be compared. + * @return the value {@code 0} if the argument Date is equal to + * this Date; a value less than {@code 0} if this Date * is before the Date argument; and a value greater than - * 0 if this Date is after the Date argument. + * {@code 0} if this Date is after the Date argument. * @since 1.2 - * @exception NullPointerException if anotherDate is null. + * @exception NullPointerException if {@code anotherDate} is null. */ public int compareTo(Date anotherDate) { long thisTime = getMillisOf(this); @@ -981,7 +978,7 @@ public class Date /** * Returns a hash code value for this object. The result is the - * exclusive OR of the two halves of the primitive long + * exclusive OR of the two halves of the primitive {@code long} * value returned by the {@link Date#getTime} * method. That is, the hash code is the value of the expression: *

      {@code
      @@ -996,29 +993,29 @@ public class Date
           }
       
           /**
      -     * Converts this Date object to a String
      +     * Converts this {@code Date} object to a {@code String}
            * of the form:
            * 
            * dow mon dd hh:mm:ss zzz yyyy
      * where:
        - *
      • dow is the day of the week (Sun, Mon, Tue, Wed, - * Thu, Fri, Sat). - *
      • mon is the month (Jan, Feb, Mar, Apr, May, Jun, - * Jul, Aug, Sep, Oct, Nov, Dec). - *
      • dd is the day of the month (01 through - * 31), as two decimal digits. - *
      • hh is the hour of the day (00 through - * 23), as two decimal digits. - *
      • mm is the minute within the hour (00 through - * 59), as two decimal digits. - *
      • ss is the second within the minute (00 through - * 61, as two decimal digits. - *
      • zzz is the time zone (and may reflect daylight saving + *
      • {@code dow} is the day of the week ({@code Sun, Mon, Tue, Wed, + * Thu, Fri, Sat}). + *
      • {@code mon} is the month ({@code Jan, Feb, Mar, Apr, May, Jun, + * Jul, Aug, Sep, Oct, Nov, Dec}). + *
      • {@code dd} is the day of the month ({@code 01} through + * {@code 31}), as two decimal digits. + *
      • {@code hh} is the hour of the day ({@code 00} through + * {@code 23}), as two decimal digits. + *
      • {@code mm} is the minute within the hour ({@code 00} through + * {@code 59}), as two decimal digits. + *
      • {@code ss} is the second within the minute ({@code 00} through + * {@code 61}, as two decimal digits. + *
      • {@code zzz} is the time zone (and may reflect daylight saving * time). Standard time zone abbreviations include those - * recognized by the method parse. If time zone - * information is not available, then zzz is empty - + * recognized by the method {@code parse}. If time zone + * information is not available, then {@code zzz} is empty - * that is, it consists of no characters at all. - *
      • yyyy is the year, as four decimal digits. + *
      • {@code yyyy} is the year, as four decimal digits. *
      * * @return a string representation of this date. @@ -1053,7 +1050,7 @@ public class Date /** * Converts the given name to its 3-letter abbreviation (e.g., * "monday" -> "Mon") and stored the abbreviation in the given - * StringBuilder. + * {@code StringBuilder}. */ private static final StringBuilder convertToAbbr(StringBuilder sb, String name) { sb.append(Character.toUpperCase(name.charAt(0))); @@ -1062,11 +1059,11 @@ public class Date } /** - * Creates a string representation of this Date object in an + * Creates a string representation of this {@code Date} object in an * implementation-dependent form. The intent is that the form should * be familiar to the user of the Java application, wherever it may * happen to be running. The intent is comparable to that of the - * "%c" format supported by the strftime() + * "{@code %c}" format supported by the {@code strftime()} * function of ISO C. * * @return a string representation of this date, using the locale @@ -1075,7 +1072,7 @@ public class Date * @see java.util.Date#toString() * @see java.util.Date#toGMTString() * @deprecated As of JDK version 1.1, - * replaced by DateFormat.format(Date date). + * replaced by {@code DateFormat.format(Date date)}. */ @Deprecated public String toLocaleString() { @@ -1084,23 +1081,23 @@ public class Date } /** - * Creates a string representation of this Date object of + * Creates a string representation of this {@code Date} object of * the form: *
            * d mon yyyy hh:mm:ss GMT
      * where:
        - *
      • d is the day of the month (1 through 31), + *
      • d is the day of the month ({@code 1} through {@code 31}), * as one or two decimal digits. - *
      • mon is the month (Jan, Feb, Mar, Apr, May, Jun, Jul, - * Aug, Sep, Oct, Nov, Dec). + *
      • mon is the month ({@code Jan, Feb, Mar, Apr, May, Jun, Jul, + * Aug, Sep, Oct, Nov, Dec}). *
      • yyyy is the year, as four decimal digits. - *
      • hh is the hour of the day (00 through 23), + *
      • hh is the hour of the day ({@code 00} through {@code 23}), * as two decimal digits. - *
      • mm is the minute within the hour (00 through - * 59), as two decimal digits. - *
      • ss is the second within the minute (00 through - * 61), as two decimal digits. - *
      • GMT is exactly the ASCII letters "GMT" to indicate + *
      • mm is the minute within the hour ({@code 00} through + * {@code 59}), as two decimal digits. + *
      • ss is the second within the minute ({@code 00} through + * {@code 61}), as two decimal digits. + *
      • GMT is exactly the ASCII letters "{@code GMT}" to indicate * Greenwich Mean Time. *

      * The result does not depend on the local time zone. @@ -1111,8 +1108,8 @@ public class Date * @see java.util.Date#toString() * @see java.util.Date#toLocaleString() * @deprecated As of JDK version 1.1, - * replaced by DateFormat.format(Date date), using a - * GMT TimeZone. + * replaced by {@code DateFormat.format(Date date)}, using a + * GMT {@code TimeZone}. */ @Deprecated public String toGMTString() { @@ -1135,7 +1132,7 @@ public class Date /** * Returns the offset, measured in minutes, for the local time zone * relative to UTC that is appropriate for the time represented by - * this Date object. + * this {@code Date} object. *

      * For example, in Massachusetts, five time zones west of Greenwich: *

      @@ -1161,8 +1158,8 @@ public class Date
            * @see     java.util.Calendar#DST_OFFSET
            * @see     java.util.TimeZone#getDefault
            * @deprecated As of JDK version 1.1,
      -     * replaced by -(Calendar.get(Calendar.ZONE_OFFSET) +
      -     * Calendar.get(Calendar.DST_OFFSET)) / (60 * 1000).
      +     * replaced by {@code -(Calendar.get(Calendar.ZONE_OFFSET) +
      +     * Calendar.get(Calendar.DST_OFFSET)) / (60 * 1000)}.
            */
           @Deprecated
           public int getTimezoneOffset() {
      @@ -1313,7 +1310,7 @@ public class Date
           /**
            * Save the state of this object to a stream (i.e., serialize it).
            *
      -     * @serialData The value returned by getTime()
      +     * @serialData The value returned by {@code getTime()}
            *             is emitted (long).  This represents the offset from
            *             January 1, 1970, 00:00:00 GMT in milliseconds.
            */
      @@ -1336,7 +1333,7 @@ public class Date
            * Obtains an instance of {@code Date} from an {@code Instant} object.
            * 

      * {@code Instant} uses a precision of nanoseconds, whereas {@code Date} - * uses a precision of milliseconds. The conversion will trancate any + * uses a precision of milliseconds. The conversion will truncate any * excess precision information as though the amount in nanoseconds was * subject to integer division by one million. *

      From 806b45a0f25d94ac3827a5cd6027fcbedffc80b2 Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Sat, 1 Feb 2014 10:27:55 -0800 Subject: [PATCH 121/158] 8033223: Fix serial lint warnings in sun.{font, java2d[.*]} Reviewed-by: bae --- .../com/sun/imageio/plugins/common/BogusColorSpace.java | 3 ++- .../com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.java | 1 + jdk/src/share/classes/sun/font/FontScalerException.java | 3 ++- jdk/src/share/classes/sun/java2d/InvalidPipeException.java | 3 ++- jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java | 3 ++- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/common/BogusColorSpace.java b/jdk/src/share/classes/com/sun/imageio/plugins/common/BogusColorSpace.java index ea7fa4f0272..81924044610 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/common/BogusColorSpace.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/common/BogusColorSpace.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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,6 +31,7 @@ import java.awt.color.ColorSpace; * A dummy ColorSpace to enable ColorModel * for image data which do not have an innate color representation. */ +@SuppressWarnings("serial") // JDK-implementation class public class BogusColorSpace extends ColorSpace { /** * Return the type given the number of components. diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.java b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.java index 21e5a26ad8d..393548e5b14 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.java @@ -558,6 +558,7 @@ class JFIFMarkerSegment extends MarkerSegment { // Could put reason codes in here to be parsed in writeJFXXSegment // in order to provide more meaningful warnings. + @SuppressWarnings("serial") // JDK-implementation class private class IllegalThumbException extends Exception {} /** diff --git a/jdk/src/share/classes/sun/font/FontScalerException.java b/jdk/src/share/classes/sun/font/FontScalerException.java index 32db6d80679..b88aed62773 100644 --- a/jdk/src/share/classes/sun/font/FontScalerException.java +++ b/jdk/src/share/classes/sun/font/FontScalerException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ package sun.font; +@SuppressWarnings("serial") // JDK-implementation class public class FontScalerException extends Exception { public FontScalerException() { super("Font scaler encountered runtime problem."); diff --git a/jdk/src/share/classes/sun/java2d/InvalidPipeException.java b/jdk/src/share/classes/sun/java2d/InvalidPipeException.java index 569bdc7682d..22ac0661093 100644 --- a/jdk/src/share/classes/sun/java2d/InvalidPipeException.java +++ b/jdk/src/share/classes/sun/java2d/InvalidPipeException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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,6 +34,7 @@ package sun.java2d; * windows which toggle the need to use platform graphics or direct * graphics access. */ +@SuppressWarnings("serial") // JDK-implementation class public class InvalidPipeException extends IllegalStateException { /** * Constructs an InvalidPipeException with no detail message. diff --git a/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java b/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java index 2f862cdeb10..1bcb05ccbb7 100644 --- a/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java +++ b/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2014, 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 @@ -376,6 +376,7 @@ class LCMSImageLayout { return (int)res; } + @SuppressWarnings("serial") // JDK-implementation class public static class ImageLayoutException extends Exception { public ImageLayoutException(String message) { super(message); From 24b84458a100ee4e55697820c2c52a20f95da957 Mon Sep 17 00:00:00 2001 From: Alan Bateman Date: Mon, 3 Feb 2014 14:00:43 +0000 Subject: [PATCH 122/158] 8028792: (ch) Channels native code needs to be checked for methods calling JNI with pending excepitons 8032668: Check jdk/src/solaris/native/java/io for pending JNI exception issues Reviewed-by: chegar, simonis --- .../sun/nio/fs/AixNativeDispatcher.java | 2 +- .../native/sun/nio/fs/AixNativeDispatcher.c | 17 +++--- .../native/java/io/UnixFileSystem_md.c | 11 ++-- .../native/sun/nio/ch/DatagramChannelImpl.c | 22 ++++---- jdk/src/solaris/native/sun/nio/ch/FileKey.c | 4 +- jdk/src/solaris/native/sun/nio/ch/IOUtil.c | 4 +- .../sun/nio/ch/ServerSocketChannelImpl.c | 17 +++++- .../native/sun/nio/ch/sctp/SctpChannelImpl.c | 4 +- .../solaris/native/sun/nio/ch/sctp/SctpNet.c | 10 ++-- .../native/sun/nio/fs/BsdNativeDispatcher.c | 9 ++-- .../native/sun/nio/fs/LinuxNativeDispatcher.c | 8 +-- .../sun/nio/fs/SolarisNativeDispatcher.c | 9 ++-- .../native/sun/nio/fs/UnixNativeDispatcher.c | 36 +++++++++---- .../native/java/io/FileDescriptor_md.c | 4 +- .../native/java/io/WinNTFileSystem_md.c | 47 ++++++++-------- .../native/sun/nio/ch/DatagramChannelImpl.c | 20 ++++--- jdk/src/windows/native/sun/nio/ch/FileKey.c | 6 +-- jdk/src/windows/native/sun/nio/ch/IOUtil.c | 6 +-- jdk/src/windows/native/sun/nio/ch/Iocp.c | 11 ++-- .../sun/nio/ch/ServerSocketChannelImpl.c | 14 +++-- .../native/sun/nio/ch/SocketChannelImpl.c | 4 +- .../sun/nio/fs/WindowsNativeDispatcher.c | 53 ++++++++++--------- 22 files changed, 194 insertions(+), 124 deletions(-) diff --git a/jdk/src/aix/classes/sun/nio/fs/AixNativeDispatcher.java b/jdk/src/aix/classes/sun/nio/fs/AixNativeDispatcher.java index d46d80fc97f..76e833ae19a 100644 --- a/jdk/src/aix/classes/sun/nio/fs/AixNativeDispatcher.java +++ b/jdk/src/aix/classes/sun/nio/fs/AixNativeDispatcher.java @@ -43,7 +43,7 @@ class AixNativeDispatcher extends UnixNativeDispatcher { static native UnixMountEntry[] getmntctl() throws UnixException; // initialize - private static native int init(); + private static native void init(); static { AccessController.doPrivileged(new PrivilegedAction() { diff --git a/jdk/src/aix/native/sun/nio/fs/AixNativeDispatcher.c b/jdk/src/aix/native/sun/nio/fs/AixNativeDispatcher.c index 82d8f6203e7..e7afb205280 100644 --- a/jdk/src/aix/native/sun/nio/fs/AixNativeDispatcher.c +++ b/jdk/src/aix/native/sun/nio/fs/AixNativeDispatcher.c @@ -56,23 +56,26 @@ static void throwUnixException(JNIEnv* env, int errnum) { /** * Initialization */ -JNIEXPORT jint JNICALL +JNIEXPORT void JNICALL Java_sun_nio_fs_AixNativeDispatcher_init(JNIEnv* env, jclass this) { - jint flags = 0; jclass clazz; clazz = (*env)->FindClass(env, "sun/nio/fs/UnixMountEntry"); - if (clazz == NULL) { - return 0; - } + CHECK_NULL(clazz); entry_name = (*env)->GetFieldID(env, clazz, "name", "[B"); + CHECK_NULL(entry_name); entry_dir = (*env)->GetFieldID(env, clazz, "dir", "[B"); + CHECK_NULL(entry_dir); entry_fstype = (*env)->GetFieldID(env, clazz, "fstype", "[B"); + CHECK_NULL(entry_fstype); entry_options = (*env)->GetFieldID(env, clazz, "opts", "[B"); + CHECK_NULL(entry_options); entry_cls = (*env)->NewGlobalRef(env, clazz); - - return 0; + if (entry_cls == NULL) { + JNU_ThrowOutOfMemoryError(env, NULL); + return; + } } /** diff --git a/jdk/src/solaris/native/java/io/UnixFileSystem_md.c b/jdk/src/solaris/native/java/io/UnixFileSystem_md.c index 5f95cd998c8..487e8a2bac3 100644 --- a/jdk/src/solaris/native/java/io/UnixFileSystem_md.c +++ b/jdk/src/solaris/native/java/io/UnixFileSystem_md.c @@ -283,6 +283,10 @@ Java_java_io_UnixFileSystem_list(JNIEnv *env, jobject this, struct dirent64 *result; int len, maxlen; jobjectArray rv, old; + jclass str_class; + + str_class = JNU_ClassString(env); + CHECK_NULL_RETURN(str_class, NULL); WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) { dir = opendir(path); @@ -299,7 +303,7 @@ Java_java_io_UnixFileSystem_list(JNIEnv *env, jobject this, /* Allocate an initial String array */ len = 0; maxlen = 16; - rv = (*env)->NewObjectArray(env, maxlen, JNU_ClassString(env), NULL); + rv = (*env)->NewObjectArray(env, maxlen, str_class, NULL); if (rv == NULL) goto error; /* Scan the directory */ @@ -309,8 +313,7 @@ Java_java_io_UnixFileSystem_list(JNIEnv *env, jobject this, continue; if (len == maxlen) { old = rv; - rv = (*env)->NewObjectArray(env, maxlen <<= 1, - JNU_ClassString(env), NULL); + rv = (*env)->NewObjectArray(env, maxlen <<= 1, str_class, NULL); if (rv == NULL) goto error; if (JNU_CopyObjectArray(env, rv, old, len) < 0) goto error; (*env)->DeleteLocalRef(env, old); @@ -329,7 +332,7 @@ Java_java_io_UnixFileSystem_list(JNIEnv *env, jobject this, /* Copy the final results into an appropriately-sized array */ old = rv; - rv = (*env)->NewObjectArray(env, len, JNU_ClassString(env), NULL); + rv = (*env)->NewObjectArray(env, len, str_class, NULL); if (rv == NULL) { return NULL; } diff --git a/jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c b/jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c index 816270c9b8e..f5dd361c4fc 100644 --- a/jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c +++ b/jdk/src/solaris/native/sun/nio/ch/DatagramChannelImpl.c @@ -56,18 +56,28 @@ JNIEXPORT void JNICALL Java_sun_nio_ch_DatagramChannelImpl_initIDs(JNIEnv *env, jclass clazz) { clazz = (*env)->FindClass(env, "java/net/InetSocketAddress"); + CHECK_NULL(clazz); isa_class = (*env)->NewGlobalRef(env, clazz); + if (isa_class == NULL) { + JNU_ThrowOutOfMemoryError(env, NULL); + return; + } isa_ctorID = (*env)->GetMethodID(env, clazz, "", "(Ljava/net/InetAddress;I)V"); + CHECK_NULL(isa_ctorID); clazz = (*env)->FindClass(env, "sun/nio/ch/DatagramChannelImpl"); + CHECK_NULL(clazz); dci_senderID = (*env)->GetFieldID(env, clazz, "sender", "Ljava/net/SocketAddress;"); + CHECK_NULL(dci_senderID); dci_senderAddrID = (*env)->GetFieldID(env, clazz, "cachedSenderInetAddress", "Ljava/net/InetAddress;"); + CHECK_NULL(dci_senderAddrID); dci_senderPortID = (*env)->GetFieldID(env, clazz, "cachedSenderPort", "I"); + CHECK_NULL(dci_senderPortID); } JNIEXPORT void JNICALL @@ -121,7 +131,7 @@ Java_sun_nio_ch_DatagramChannelImpl_disconnect0(JNIEnv *env, jobject this, * but that is acceptable. */ if (rv < 0 && errno == EAFNOSUPPORT) - rv = errno = 0; + rv = errno = 0; #endif } #endif @@ -192,17 +202,11 @@ Java_sun_nio_ch_DatagramChannelImpl_receive0(JNIEnv *env, jobject this, if (senderAddr == NULL) { jobject isa = NULL; int port; - jobject ia = NET_SockaddrToInetAddress(env, (struct sockaddr *)&sa, - &port); - + jobject ia = NET_SockaddrToInetAddress(env, (struct sockaddr *)&sa, &port); if (ia != NULL) { isa = (*env)->NewObject(env, isa_class, isa_ctorID, ia, port); } - - if (isa == NULL) { - JNU_ThrowOutOfMemoryError(env, "heap allocation failed"); - return IOS_THROWN; - } + CHECK_NULL_RETURN(isa, IOS_THROWN); (*env)->SetObjectField(env, this, dci_senderAddrID, ia); (*env)->SetIntField(env, this, dci_senderPortID, diff --git a/jdk/src/solaris/native/sun/nio/ch/FileKey.c b/jdk/src/solaris/native/sun/nio/ch/FileKey.c index ddb88329eca..bdb42a6324b 100644 --- a/jdk/src/solaris/native/sun/nio/ch/FileKey.c +++ b/jdk/src/solaris/native/sun/nio/ch/FileKey.c @@ -43,8 +43,8 @@ static jfieldID key_st_ino; /* id for FileKey.st_ino */ JNIEXPORT void JNICALL Java_sun_nio_ch_FileKey_initIDs(JNIEnv *env, jclass clazz) { - key_st_dev = (*env)->GetFieldID(env, clazz, "st_dev", "J"); - key_st_ino = (*env)->GetFieldID(env, clazz, "st_ino", "J"); + CHECK_NULL(key_st_dev = (*env)->GetFieldID(env, clazz, "st_dev", "J")); + CHECK_NULL(key_st_ino = (*env)->GetFieldID(env, clazz, "st_ino", "J")); } diff --git a/jdk/src/solaris/native/sun/nio/ch/IOUtil.c b/jdk/src/solaris/native/sun/nio/ch/IOUtil.c index 7dbf010fcac..438bf41ddea 100644 --- a/jdk/src/solaris/native/sun/nio/ch/IOUtil.c +++ b/jdk/src/solaris/native/sun/nio/ch/IOUtil.c @@ -42,8 +42,8 @@ static jfieldID fd_fdID; /* for jint 'fd' in java.io.FileDescriptor */ JNIEXPORT void JNICALL Java_sun_nio_ch_IOUtil_initIDs(JNIEnv *env, jclass clazz) { - clazz = (*env)->FindClass(env, "java/io/FileDescriptor"); - fd_fdID = (*env)->GetFieldID(env, clazz, "fd", "I"); + CHECK_NULL(clazz = (*env)->FindClass(env, "java/io/FileDescriptor")); + CHECK_NULL(fd_fdID = (*env)->GetFieldID(env, clazz, "fd", "I")); } JNIEXPORT jboolean JNICALL diff --git a/jdk/src/solaris/native/sun/nio/ch/ServerSocketChannelImpl.c b/jdk/src/solaris/native/sun/nio/ch/ServerSocketChannelImpl.c index 7a730cc0b25..e96c9b0cc0a 100644 --- a/jdk/src/solaris/native/sun/nio/ch/ServerSocketChannelImpl.c +++ b/jdk/src/solaris/native/sun/nio/ch/ServerSocketChannelImpl.c @@ -57,12 +57,20 @@ Java_sun_nio_ch_ServerSocketChannelImpl_initIDs(JNIEnv *env, jclass c) jclass cls; cls = (*env)->FindClass(env, "java/io/FileDescriptor"); + CHECK_NULL(cls); fd_fdID = (*env)->GetFieldID(env, cls, "fd", "I"); + CHECK_NULL(fd_fdID); cls = (*env)->FindClass(env, "java/net/InetSocketAddress"); + CHECK_NULL(cls); isa_class = (*env)->NewGlobalRef(env, cls); + if (isa_class == NULL) { + JNU_ThrowOutOfMemoryError(env, NULL); + return; + } isa_ctorID = (*env)->GetMethodID(env, cls, "", "(Ljava/net/InetAddress;I)V"); + CHECK_NULL(isa_ctorID); } JNIEXPORT jint JNICALL @@ -79,6 +87,10 @@ Java_sun_nio_ch_ServerSocketChannelImpl_accept0(JNIEnv *env, jobject this, jint remote_port; NET_AllocSockaddr(&sa, &alloc_len); + if (sa == NULL) { + JNU_ThrowOutOfMemoryError(env, NULL); + return IOS_THROWN; + } /* * accept connection but ignore ECONNABORTED indicating that @@ -110,8 +122,9 @@ Java_sun_nio_ch_ServerSocketChannelImpl_accept0(JNIEnv *env, jobject this, (*env)->SetIntField(env, newfdo, fd_fdID, newfd); remote_ia = NET_SockaddrToInetAddress(env, sa, (int *)&remote_port); free((void *)sa); - isa = (*env)->NewObject(env, isa_class, isa_ctorID, - remote_ia, remote_port); + CHECK_NULL_RETURN(remote_ia, IOS_THROWN); + isa = (*env)->NewObject(env, isa_class, isa_ctorID, remote_ia, remote_port); + CHECK_NULL_RETURN(isa, IOS_THROWN); (*env)->SetObjectArrayElement(env, isaa, 0, isa); return 1; } diff --git a/jdk/src/solaris/native/sun/nio/ch/sctp/SctpChannelImpl.c b/jdk/src/solaris/native/sun/nio/ch/sctp/SctpChannelImpl.c index 225556b4d9f..54e16af7f6b 100644 --- a/jdk/src/solaris/native/sun/nio/ch/sctp/SctpChannelImpl.c +++ b/jdk/src/solaris/native/sun/nio/ch/sctp/SctpChannelImpl.c @@ -214,6 +214,7 @@ void handleSendFailed /* retrieved address from sockaddr */ isaObj = SockAddrToInetSocketAddress(env, sap); + CHECK_NULL(isaObj); /* data retrieved from sff_data */ if (dataLength > 0) { @@ -338,6 +339,7 @@ void handlePeerAddrChange } addressObj = SockAddrToInetSocketAddress(env, (struct sockaddr*)&spc->spc_aaddr); + CHECK_NULL(addressObj); /* create PeerAddressChanged */ resultObj = (*env)->NewObject(env, spc_class, spc_ctrID, spc->spc_assoc_id, @@ -394,6 +396,7 @@ void handleMessage } isa = SockAddrToInetSocketAddress(env, sap); + CHECK_NULL(isa); getControlData(msg, cdata); /* create MessageInfoImpl */ @@ -580,4 +583,3 @@ JNIEXPORT jint JNICALL Java_sun_nio_ch_sctp_SctpChannelImpl_checkConnect return Java_sun_nio_ch_SocketChannelImpl_checkConnect(env, this, fdo, block, ready); } - diff --git a/jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c b/jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c index 57c4fae4fa5..f03be57b5d0 100644 --- a/jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c +++ b/jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c @@ -382,8 +382,9 @@ JNIEXPORT jobjectArray JNICALL Java_sun_nio_ch_sctp_SctpNet_getLocalAddresses0 ia = NET_SockaddrToInetAddress(env, sap, &port); if (ia != NULL) isa = (*env)->NewObject(env, isaCls, isaCtrID, ia, port); - if (isa != NULL) - (*env)->SetObjectArrayElement(env, isaa, i, isa); + if (isa == NULL) + break; + (*env)->SetObjectArrayElement(env, isaa, i, isa); if (sap->sa_family == AF_INET) addr_buf = ((struct sockaddr_in*)addr_buf) + 1; @@ -433,8 +434,9 @@ jobjectArray getRemoteAddresses ia = NET_SockaddrToInetAddress(env, sap, &port); if (ia != NULL) isa = (*env)->NewObject(env, isaCls, isaCtrID, ia, port); - if (isa != NULL) - (*env)->SetObjectArrayElement(env, isaa, i, isa); + if (isa == NULL) + break; + (*env)->SetObjectArrayElement(env, isaa, i, isa); if (sap->sa_family == AF_INET) addr_buf = ((struct sockaddr_in*)addr_buf) + 1; diff --git a/jdk/src/solaris/native/sun/nio/fs/BsdNativeDispatcher.c b/jdk/src/solaris/native/sun/nio/fs/BsdNativeDispatcher.c index 0b4f2a74dff..9453f75d3de 100644 --- a/jdk/src/solaris/native/sun/nio/fs/BsdNativeDispatcher.c +++ b/jdk/src/solaris/native/sun/nio/fs/BsdNativeDispatcher.c @@ -72,13 +72,15 @@ Java_sun_nio_fs_BsdNativeDispatcher_initIDs(JNIEnv* env, jclass this) jclass clazz; clazz = (*env)->FindClass(env, "sun/nio/fs/UnixMountEntry"); - if (clazz == NULL) { - return; - } + CHECK_NULL(clazz); entry_name = (*env)->GetFieldID(env, clazz, "name", "[B"); + CHECK_NULL(entry_name); entry_dir = (*env)->GetFieldID(env, clazz, "dir", "[B"); + CHECK_NULL(entry_dir); entry_fstype = (*env)->GetFieldID(env, clazz, "fstype", "[B"); + CHECK_NULL(entry_fstype); entry_options = (*env)->GetFieldID(env, clazz, "opts", "[B"); + CHECK_NULL(entry_options); } JNIEXPORT jlong JNICALL @@ -201,4 +203,3 @@ Java_sun_nio_fs_BsdNativeDispatcher_endfsstat(JNIEnv* env, jclass this, jlong va free(iter); } } - diff --git a/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c b/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c index 1de7d5b3c98..c8500db5c87 100644 --- a/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c +++ b/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c @@ -68,13 +68,15 @@ Java_sun_nio_fs_LinuxNativeDispatcher_init(JNIEnv *env, jclass clazz) my_flistxattr_func = (flistxattr_func*)dlsym(RTLD_DEFAULT, "flistxattr"); clazz = (*env)->FindClass(env, "sun/nio/fs/UnixMountEntry"); - if (clazz == NULL) - return; - + CHECK_NULL(clazz); entry_name = (*env)->GetFieldID(env, clazz, "name", "[B"); + CHECK_NULL(entry_name); entry_dir = (*env)->GetFieldID(env, clazz, "dir", "[B"); + CHECK_NULL(entry_dir); entry_fstype = (*env)->GetFieldID(env, clazz, "fstype", "[B"); + CHECK_NULL(entry_fstype); entry_options = (*env)->GetFieldID(env, clazz, "opts", "[B"); + CHECK_NULL(entry_options); } JNIEXPORT jint JNICALL diff --git a/jdk/src/solaris/native/sun/nio/fs/SolarisNativeDispatcher.c b/jdk/src/solaris/native/sun/nio/fs/SolarisNativeDispatcher.c index 1480ea9046b..de04bbddc7c 100644 --- a/jdk/src/solaris/native/sun/nio/fs/SolarisNativeDispatcher.c +++ b/jdk/src/solaris/native/sun/nio/fs/SolarisNativeDispatcher.c @@ -55,14 +55,17 @@ static void throwUnixException(JNIEnv* env, int errnum) { JNIEXPORT void JNICALL Java_sun_nio_fs_SolarisNativeDispatcher_init(JNIEnv *env, jclass clazz) { clazz = (*env)->FindClass(env, "sun/nio/fs/UnixMountEntry"); - if (clazz == NULL) - return; - + CHECK_NULL(clazz); entry_name = (*env)->GetFieldID(env, clazz, "name", "[B"); + CHECK_NULL(entry_name); entry_dir = (*env)->GetFieldID(env, clazz, "dir", "[B"); + CHECK_NULL(entry_dir); entry_fstype = (*env)->GetFieldID(env, clazz, "fstype", "[B"); + CHECK_NULL(entry_fstype); entry_options = (*env)->GetFieldID(env, clazz, "opts", "[B"); + CHECK_NULL(entry_options); entry_dev = (*env)->GetFieldID(env, clazz, "dev", "J"); + CHECK_NULL(entry_dev); } JNIEXPORT jint JNICALL diff --git a/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c b/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c index 12f399d8512..8901376361d 100644 --- a/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c +++ b/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c @@ -179,46 +179,64 @@ Java_sun_nio_fs_UnixNativeDispatcher_init(JNIEnv* env, jclass this) jclass clazz; clazz = (*env)->FindClass(env, "sun/nio/fs/UnixFileAttributes"); - if (clazz == NULL) { - return 0; - } + CHECK_NULL_RETURN(clazz, 0); attrs_st_mode = (*env)->GetFieldID(env, clazz, "st_mode", "I"); + CHECK_NULL_RETURN(attrs_st_mode, 0); attrs_st_ino = (*env)->GetFieldID(env, clazz, "st_ino", "J"); + CHECK_NULL_RETURN(attrs_st_ino, 0); attrs_st_dev = (*env)->GetFieldID(env, clazz, "st_dev", "J"); + CHECK_NULL_RETURN(attrs_st_dev, 0); attrs_st_rdev = (*env)->GetFieldID(env, clazz, "st_rdev", "J"); + CHECK_NULL_RETURN(attrs_st_rdev, 0); attrs_st_nlink = (*env)->GetFieldID(env, clazz, "st_nlink", "I"); + CHECK_NULL_RETURN(attrs_st_nlink, 0); attrs_st_uid = (*env)->GetFieldID(env, clazz, "st_uid", "I"); + CHECK_NULL_RETURN(attrs_st_uid, 0); attrs_st_gid = (*env)->GetFieldID(env, clazz, "st_gid", "I"); + CHECK_NULL_RETURN(attrs_st_gid, 0); attrs_st_size = (*env)->GetFieldID(env, clazz, "st_size", "J"); + CHECK_NULL_RETURN(attrs_st_size, 0); attrs_st_atime_sec = (*env)->GetFieldID(env, clazz, "st_atime_sec", "J"); + CHECK_NULL_RETURN(attrs_st_atime_sec, 0); attrs_st_atime_nsec = (*env)->GetFieldID(env, clazz, "st_atime_nsec", "J"); + CHECK_NULL_RETURN(attrs_st_atime_nsec, 0); attrs_st_mtime_sec = (*env)->GetFieldID(env, clazz, "st_mtime_sec", "J"); + CHECK_NULL_RETURN(attrs_st_mtime_sec, 0); attrs_st_mtime_nsec = (*env)->GetFieldID(env, clazz, "st_mtime_nsec", "J"); + CHECK_NULL_RETURN(attrs_st_mtime_nsec, 0); attrs_st_ctime_sec = (*env)->GetFieldID(env, clazz, "st_ctime_sec", "J"); + CHECK_NULL_RETURN(attrs_st_ctime_sec, 0); attrs_st_ctime_nsec = (*env)->GetFieldID(env, clazz, "st_ctime_nsec", "J"); + CHECK_NULL_RETURN(attrs_st_ctime_nsec, 0); #ifdef _DARWIN_FEATURE_64_BIT_INODE attrs_st_birthtime_sec = (*env)->GetFieldID(env, clazz, "st_birthtime_sec", "J"); + CHECK_NULL_RETURN(attrs_st_birthtime_sec, 0); #endif clazz = (*env)->FindClass(env, "sun/nio/fs/UnixFileStoreAttributes"); - if (clazz == NULL) { - return 0; - } + CHECK_NULL_RETURN(clazz, 0); attrs_f_frsize = (*env)->GetFieldID(env, clazz, "f_frsize", "J"); + CHECK_NULL_RETURN(attrs_f_frsize, 0); attrs_f_blocks = (*env)->GetFieldID(env, clazz, "f_blocks", "J"); + CHECK_NULL_RETURN(attrs_f_blocks, 0); attrs_f_bfree = (*env)->GetFieldID(env, clazz, "f_bfree", "J"); + CHECK_NULL_RETURN(attrs_f_bfree, 0); attrs_f_bavail = (*env)->GetFieldID(env, clazz, "f_bavail", "J"); + CHECK_NULL_RETURN(attrs_f_bavail, 0); clazz = (*env)->FindClass(env, "sun/nio/fs/UnixMountEntry"); - if (clazz == NULL) { - return 0; - } + CHECK_NULL_RETURN(clazz, 0); entry_name = (*env)->GetFieldID(env, clazz, "name", "[B"); + CHECK_NULL_RETURN(entry_name, 0); entry_dir = (*env)->GetFieldID(env, clazz, "dir", "[B"); + CHECK_NULL_RETURN(entry_dir, 0); entry_fstype = (*env)->GetFieldID(env, clazz, "fstype", "[B"); + CHECK_NULL_RETURN(entry_fstype, 0); entry_options = (*env)->GetFieldID(env, clazz, "opts", "[B"); + CHECK_NULL_RETURN(entry_options, 0); entry_dev = (*env)->GetFieldID(env, clazz, "dev", "J"); + CHECK_NULL_RETURN(entry_dev, 0); /* system calls that might not be available at run time */ diff --git a/jdk/src/windows/native/java/io/FileDescriptor_md.c b/jdk/src/windows/native/java/io/FileDescriptor_md.c index 221bf1d9217..db04cd47653 100644 --- a/jdk/src/windows/native/java/io/FileDescriptor_md.c +++ b/jdk/src/windows/native/java/io/FileDescriptor_md.c @@ -48,8 +48,8 @@ jfieldID IO_handle_fdID; JNIEXPORT void JNICALL Java_java_io_FileDescriptor_initIDs(JNIEnv *env, jclass fdClass) { - IO_fd_fdID = (*env)->GetFieldID(env, fdClass, "fd", "I"); - IO_handle_fdID = (*env)->GetFieldID(env, fdClass, "handle", "J"); + CHECK_NULL(IO_fd_fdID = (*env)->GetFieldID(env, fdClass, "fd", "I")); + CHECK_NULL(IO_handle_fdID = (*env)->GetFieldID(env, fdClass, "handle", "J")); } JNIEXPORT jlong JNICALL diff --git a/jdk/src/windows/native/java/io/WinNTFileSystem_md.c b/jdk/src/windows/native/java/io/WinNTFileSystem_md.c index 3c8b821e027..ec7d9d7294b 100644 --- a/jdk/src/windows/native/java/io/WinNTFileSystem_md.c +++ b/jdk/src/windows/native/java/io/WinNTFileSystem_md.c @@ -59,10 +59,12 @@ JNIEXPORT void JNICALL Java_java_io_WinNTFileSystem_initIDs(JNIEnv *env, jclass cls) { HMODULE handle; - jclass fileClass = (*env)->FindClass(env, "java/io/File"); - if (!fileClass) return; - ids.path = - (*env)->GetFieldID(env, fileClass, "path", "Ljava/lang/String;"); + jclass fileClass; + + fileClass = (*env)->FindClass(env, "java/io/File"); + CHECK_NULL(fileClass); + ids.path = (*env)->GetFieldID(env, fileClass, "path", "Ljava/lang/String;"); + CHECK_NULL(ids.path); // GetFinalPathNameByHandle requires Windows Vista or newer if (GetModuleHandleExW((GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | @@ -243,8 +245,8 @@ Java_java_io_WinNTFileSystem_canonicalize0(JNIEnv *env, jobject this, WCHAR canonicalPath[MAX_PATH_LENGTH]; WITH_UNICODE_STRING(env, pathname, path) { - /*we estimate the max length of memory needed as - "currentDir. length + pathname.length" + /* we estimate the max length of memory needed as + "currentDir. length + pathname.length" */ int len = (int)wcslen(path); len += currentDirLength(path, len); @@ -256,12 +258,11 @@ Java_java_io_WinNTFileSystem_canonicalize0(JNIEnv *env, jobject this, } free(cp); } - } else - if (wcanonicalize(path, canonicalPath, MAX_PATH_LENGTH) >= 0) { + } else if (wcanonicalize(path, canonicalPath, MAX_PATH_LENGTH) >= 0) { rv = (*env)->NewString(env, canonicalPath, (jsize)wcslen(canonicalPath)); } } END_UNICODE_STRING(env, path); - if (rv == NULL) { + if (rv == NULL && !(*env)->ExceptionCheck(env)) { JNU_ThrowIOExceptionWithLastError(env, "Bad pathname"); } return rv; @@ -288,15 +289,14 @@ Java_java_io_WinNTFileSystem_canonicalizeWithPrefix0(JNIEnv *env, jobject this, } free(cp); } - } else - if (wcanonicalizeWithPrefix(canonicalPrefix, - pathWithCanonicalPrefix, - canonicalPath, MAX_PATH_LENGTH) >= 0) { + } else if (wcanonicalizeWithPrefix(canonicalPrefix, + pathWithCanonicalPrefix, + canonicalPath, MAX_PATH_LENGTH) >= 0) { rv = (*env)->NewString(env, canonicalPath, (jsize)wcslen(canonicalPath)); } } END_UNICODE_STRING(env, pathWithCanonicalPrefix); } END_UNICODE_STRING(env, canonicalPrefix); - if (rv == NULL) { + if (rv == NULL && !(*env)->ExceptionCheck(env)) { JNU_ThrowIOExceptionWithLastError(env, "Bad pathname"); } return rv; @@ -616,8 +616,13 @@ Java_java_io_WinNTFileSystem_list(JNIEnv *env, jobject this, jobject file) jobjectArray rv, old; DWORD fattr; jstring name; + jclass str_class; + WCHAR *pathbuf; - WCHAR *pathbuf = fileToNTPath(env, file, ids.path); + str_class = JNU_ClassString(env); + CHECK_NULL_RETURN(str_class, NULL); + + pathbuf = fileToNTPath(env, file, ids.path); if (pathbuf == NULL) return NULL; search_path = (WCHAR*)malloc(2*wcslen(pathbuf) + 6); @@ -664,7 +669,7 @@ Java_java_io_WinNTFileSystem_list(JNIEnv *env, jobject this, jobject file) return NULL; } else { // No files found - return an empty array - rv = (*env)->NewObjectArray(env, 0, JNU_ClassString(env), NULL); + rv = (*env)->NewObjectArray(env, 0, str_class, NULL); return rv; } } @@ -672,7 +677,7 @@ Java_java_io_WinNTFileSystem_list(JNIEnv *env, jobject this, jobject file) /* Allocate an initial String array */ len = 0; maxlen = 16; - rv = (*env)->NewObjectArray(env, maxlen, JNU_ClassString(env), NULL); + rv = (*env)->NewObjectArray(env, maxlen, str_class, NULL); if (rv == NULL) // Couldn't allocate an array return NULL; /* Scan the directory */ @@ -686,10 +691,8 @@ Java_java_io_WinNTFileSystem_list(JNIEnv *env, jobject this, jobject file) return NULL; // error; if (len == maxlen) { old = rv; - rv = (*env)->NewObjectArray(env, maxlen <<= 1, - JNU_ClassString(env), NULL); - if ( rv == NULL - || JNU_CopyObjectArray(env, rv, old, len) < 0) + rv = (*env)->NewObjectArray(env, maxlen <<= 1, str_class, NULL); + if (rv == NULL || JNU_CopyObjectArray(env, rv, old, len) < 0) return NULL; // error (*env)->DeleteLocalRef(env, old); } @@ -704,7 +707,7 @@ Java_java_io_WinNTFileSystem_list(JNIEnv *env, jobject this, jobject file) /* Copy the final results into an appropriately-sized array */ old = rv; - rv = (*env)->NewObjectArray(env, len, JNU_ClassString(env), NULL); + rv = (*env)->NewObjectArray(env, len, str_class, NULL); if (rv == NULL) return NULL; /* error */ if (JNU_CopyObjectArray(env, rv, old, len) < 0) diff --git a/jdk/src/windows/native/sun/nio/ch/DatagramChannelImpl.c b/jdk/src/windows/native/sun/nio/ch/DatagramChannelImpl.c index ab46f8d7faa..ecc96a1d8bb 100644 --- a/jdk/src/windows/native/sun/nio/ch/DatagramChannelImpl.c +++ b/jdk/src/windows/native/sun/nio/ch/DatagramChannelImpl.c @@ -45,18 +45,28 @@ JNIEXPORT void JNICALL Java_sun_nio_ch_DatagramChannelImpl_initIDs(JNIEnv *env, jclass clazz) { clazz = (*env)->FindClass(env, "java/net/InetSocketAddress"); + CHECK_NULL(clazz); isa_class = (*env)->NewGlobalRef(env, clazz); + if (isa_class == NULL) { + JNU_ThrowOutOfMemoryError(env, NULL); + return; + } isa_ctorID = (*env)->GetMethodID(env, clazz, "", "(Ljava/net/InetAddress;I)V"); + CHECK_NULL(isa_ctorID); clazz = (*env)->FindClass(env, "sun/nio/ch/DatagramChannelImpl"); + CHECK_NULL(clazz); dci_senderID = (*env)->GetFieldID(env, clazz, "sender", "Ljava/net/SocketAddress;"); + CHECK_NULL(dci_senderID); dci_senderAddrID = (*env)->GetFieldID(env, clazz, "cachedSenderInetAddress", "Ljava/net/InetAddress;"); + CHECK_NULL(dci_senderAddrID); dci_senderPortID = (*env)->GetFieldID(env, clazz, "cachedSenderPort", "I"); + CHECK_NULL(dci_senderPortID); } /* @@ -185,17 +195,11 @@ Java_sun_nio_ch_DatagramChannelImpl_receive0(JNIEnv *env, jobject this, if (senderAddr == NULL) { jobject isa = NULL; int port; - jobject ia = NET_SockaddrToInetAddress(env, (struct sockaddr *)&sa, - &port); - + jobject ia = NET_SockaddrToInetAddress(env, (struct sockaddr *)&sa, &port); if (ia != NULL) { isa = (*env)->NewObject(env, isa_class, isa_ctorID, ia, port); } - - if (isa == NULL) { - JNU_ThrowOutOfMemoryError(env, "heap allocation failed"); - return IOS_THROWN; - } + CHECK_NULL_RETURN(isa, IOS_THROWN); // update cachedSenderInetAddress/cachedSenderPort (*env)->SetObjectField(env, this, dci_senderAddrID, ia); diff --git a/jdk/src/windows/native/sun/nio/ch/FileKey.c b/jdk/src/windows/native/sun/nio/ch/FileKey.c index e095296abeb..65306d1d639 100644 --- a/jdk/src/windows/native/sun/nio/ch/FileKey.c +++ b/jdk/src/windows/native/sun/nio/ch/FileKey.c @@ -38,9 +38,9 @@ static jfieldID key_indexLow; /* id for FileKey.nFileIndexLow */ JNIEXPORT void JNICALL Java_sun_nio_ch_FileKey_initIDs(JNIEnv *env, jclass clazz) { - key_volumeSN = (*env)->GetFieldID(env, clazz, "dwVolumeSerialNumber", "J"); - key_indexHigh = (*env)->GetFieldID(env, clazz, "nFileIndexHigh", "J"); - key_indexLow = (*env)->GetFieldID(env, clazz, "nFileIndexLow", "J"); + CHECK_NULL(key_volumeSN = (*env)->GetFieldID(env, clazz, "dwVolumeSerialNumber", "J")); + CHECK_NULL(key_indexHigh = (*env)->GetFieldID(env, clazz, "nFileIndexHigh", "J")); + CHECK_NULL(key_indexLow = (*env)->GetFieldID(env, clazz, "nFileIndexLow", "J")); } diff --git a/jdk/src/windows/native/sun/nio/ch/IOUtil.c b/jdk/src/windows/native/sun/nio/ch/IOUtil.c index 10c72e4682f..370dcf5e23f 100644 --- a/jdk/src/windows/native/sun/nio/ch/IOUtil.c +++ b/jdk/src/windows/native/sun/nio/ch/IOUtil.c @@ -52,9 +52,9 @@ Java_sun_security_provider_NativeSeedGenerator_nativeGenerateSeed JNIEXPORT void JNICALL Java_sun_nio_ch_IOUtil_initIDs(JNIEnv *env, jclass clazz) { - clazz = (*env)->FindClass(env, "java/io/FileDescriptor"); - fd_fdID = (*env)->GetFieldID(env, clazz, "fd", "I"); - handle_fdID = (*env)->GetFieldID(env, clazz, "handle", "J"); + CHECK_NULL(clazz = (*env)->FindClass(env, "java/io/FileDescriptor")); + CHECK_NULL(fd_fdID = (*env)->GetFieldID(env, clazz, "fd", "I")); + CHECK_NULL(handle_fdID = (*env)->GetFieldID(env, clazz, "handle", "J")); } /************************************************************** diff --git a/jdk/src/windows/native/sun/nio/ch/Iocp.c b/jdk/src/windows/native/sun/nio/ch/Iocp.c index 8f87a8937f7..f9556234075 100644 --- a/jdk/src/windows/native/sun/nio/ch/Iocp.c +++ b/jdk/src/windows/native/sun/nio/ch/Iocp.c @@ -46,16 +46,15 @@ Java_sun_nio_ch_Iocp_initIDs(JNIEnv* env, jclass this) jclass clazz; clazz = (*env)->FindClass(env, "sun/nio/ch/Iocp$CompletionStatus"); - if (clazz == NULL) { - return; - } + CHECK_NULL(clazz); completionStatus_error = (*env)->GetFieldID(env, clazz, "error", "I"); - if (completionStatus_error == NULL) return; + CHECK_NULL(completionStatus_error); completionStatus_bytesTransferred = (*env)->GetFieldID(env, clazz, "bytesTransferred", "I"); - if (completionStatus_bytesTransferred == NULL) return; + CHECK_NULL(completionStatus_bytesTransferred); completionStatus_completionKey = (*env)->GetFieldID(env, clazz, "completionKey", "I"); - if (completionStatus_completionKey == NULL) return; + CHECK_NULL(completionStatus_completionKey); completionStatus_overlapped = (*env)->GetFieldID(env, clazz, "overlapped", "J"); + CHECK_NULL(completionStatus_overlapped); } JNIEXPORT jint JNICALL diff --git a/jdk/src/windows/native/sun/nio/ch/ServerSocketChannelImpl.c b/jdk/src/windows/native/sun/nio/ch/ServerSocketChannelImpl.c index 2af833c2eb7..30d6d641645 100644 --- a/jdk/src/windows/native/sun/nio/ch/ServerSocketChannelImpl.c +++ b/jdk/src/windows/native/sun/nio/ch/ServerSocketChannelImpl.c @@ -56,12 +56,20 @@ JNIEXPORT void JNICALL Java_sun_nio_ch_ServerSocketChannelImpl_initIDs(JNIEnv *env, jclass cls) { cls = (*env)->FindClass(env, "java/io/FileDescriptor"); + CHECK_NULL(cls); fd_fdID = (*env)->GetFieldID(env, cls, "fd", "I"); + CHECK_NULL(fd_fdID); cls = (*env)->FindClass(env, "java/net/InetSocketAddress"); + CHECK_NULL(cls); isa_class = (*env)->NewGlobalRef(env, cls); + if (isa_class == NULL) { + JNU_ThrowOutOfMemoryError(env, NULL); + return; + } isa_ctorID = (*env)->GetMethodID(env, cls, "", "(Ljava/net/InetAddress;I)V"); + CHECK_NULL(isa_ctorID); } JNIEXPORT void JNICALL @@ -99,10 +107,10 @@ Java_sun_nio_ch_ServerSocketChannelImpl_accept0(JNIEnv *env, jobject this, (*env)->SetIntField(env, newfdo, fd_fdID, newfd); remote_ia = NET_SockaddrToInetAddress(env, (struct sockaddr *)&sa, (int *)&remote_port); + CHECK_NULL_RETURN(remote_ia, IOS_THROWN); - isa = (*env)->NewObject(env, isa_class, isa_ctorID, - remote_ia, remote_port); + isa = (*env)->NewObject(env, isa_class, isa_ctorID, remote_ia, remote_port); + CHECK_NULL_RETURN(isa, IOS_THROWN); (*env)->SetObjectArrayElement(env, isaa, 0, isa); - return 1; } diff --git a/jdk/src/windows/native/sun/nio/ch/SocketChannelImpl.c b/jdk/src/windows/native/sun/nio/ch/SocketChannelImpl.c index be50fd69439..5f9fc5000e1 100644 --- a/jdk/src/windows/native/sun/nio/ch/SocketChannelImpl.c +++ b/jdk/src/windows/native/sun/nio/ch/SocketChannelImpl.c @@ -42,8 +42,8 @@ static jfieldID ia_addrID; /* java.net.InetAddress.address */ JNIEXPORT void JNICALL Java_sun_nio_ch_SocketChannelImpl_initIDs(JNIEnv *env, jclass cls) { - cls = (*env)->FindClass(env, "java/net/InetAddress"); - ia_addrID = (*env)->GetFieldID(env, cls, "address", "I"); + CHECK_NULL(cls = (*env)->FindClass(env, "java/net/InetAddress")); + CHECK_NULL(ia_addrID = (*env)->GetFieldID(env, cls, "address", "I")); } jint diff --git a/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c b/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c index 62d8a892b05..3b981f3760b 100644 --- a/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c +++ b/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c @@ -111,65 +111,70 @@ Java_sun_nio_fs_WindowsNativeDispatcher_initIDs(JNIEnv* env, jclass this) HMODULE h; clazz = (*env)->FindClass(env, "sun/nio/fs/WindowsNativeDispatcher$FirstFile"); - if (clazz == NULL) { - return; - } + CHECK_NULL(clazz); findFirst_handle = (*env)->GetFieldID(env, clazz, "handle", "J"); + CHECK_NULL(findFirst_handle); findFirst_name = (*env)->GetFieldID(env, clazz, "name", "Ljava/lang/String;"); + CHECK_NULL(findFirst_name); findFirst_attributes = (*env)->GetFieldID(env, clazz, "attributes", "I"); + CHECK_NULL(findFirst_attributes); clazz = (*env)->FindClass(env, "sun/nio/fs/WindowsNativeDispatcher$FirstStream"); - if (clazz == NULL) { - return; - } + CHECK_NULL(clazz); findStream_handle = (*env)->GetFieldID(env, clazz, "handle", "J"); + CHECK_NULL(findStream_handle); findStream_name = (*env)->GetFieldID(env, clazz, "name", "Ljava/lang/String;"); + CHECK_NULL(findStream_name); clazz = (*env)->FindClass(env, "sun/nio/fs/WindowsNativeDispatcher$VolumeInformation"); - if (clazz == NULL) { - return; - } + CHECK_NULL(clazz); volumeInfo_fsName = (*env)->GetFieldID(env, clazz, "fileSystemName", "Ljava/lang/String;"); + CHECK_NULL(volumeInfo_fsName); volumeInfo_volName = (*env)->GetFieldID(env, clazz, "volumeName", "Ljava/lang/String;"); + CHECK_NULL(volumeInfo_volName); volumeInfo_volSN = (*env)->GetFieldID(env, clazz, "volumeSerialNumber", "I"); + CHECK_NULL(volumeInfo_volSN); volumeInfo_flags = (*env)->GetFieldID(env, clazz, "flags", "I"); + CHECK_NULL(volumeInfo_flags); clazz = (*env)->FindClass(env, "sun/nio/fs/WindowsNativeDispatcher$DiskFreeSpace"); - if (clazz == NULL) { - return; - } + CHECK_NULL(clazz); diskSpace_bytesAvailable = (*env)->GetFieldID(env, clazz, "freeBytesAvailable", "J"); + CHECK_NULL(diskSpace_bytesAvailable); diskSpace_totalBytes = (*env)->GetFieldID(env, clazz, "totalNumberOfBytes", "J"); + CHECK_NULL(diskSpace_totalBytes); diskSpace_totalFree = (*env)->GetFieldID(env, clazz, "totalNumberOfFreeBytes", "J"); + CHECK_NULL(diskSpace_totalFree); clazz = (*env)->FindClass(env, "sun/nio/fs/WindowsNativeDispatcher$Account"); - if (clazz == NULL) { - return; - } + CHECK_NULL(clazz); account_domain = (*env)->GetFieldID(env, clazz, "domain", "Ljava/lang/String;"); + CHECK_NULL(account_domain); account_name = (*env)->GetFieldID(env, clazz, "name", "Ljava/lang/String;"); + CHECK_NULL(account_name); account_use = (*env)->GetFieldID(env, clazz, "use", "I"); + CHECK_NULL(account_use); clazz = (*env)->FindClass(env, "sun/nio/fs/WindowsNativeDispatcher$AclInformation"); - if (clazz == NULL) { - return; - } + CHECK_NULL(clazz); aclInfo_aceCount = (*env)->GetFieldID(env, clazz, "aceCount", "I"); + CHECK_NULL(aclInfo_aceCount); clazz = (*env)->FindClass(env, "sun/nio/fs/WindowsNativeDispatcher$CompletionStatus"); - if (clazz == NULL) { - return; - } + CHECK_NULL(clazz); completionStatus_error = (*env)->GetFieldID(env, clazz, "error", "I"); + CHECK_NULL(completionStatus_error); completionStatus_bytesTransferred = (*env)->GetFieldID(env, clazz, "bytesTransferred", "I"); + CHECK_NULL(completionStatus_bytesTransferred); completionStatus_completionKey = (*env)->GetFieldID(env, clazz, "completionKey", "J"); + CHECK_NULL(completionStatus_completionKey); clazz = (*env)->FindClass(env, "sun/nio/fs/WindowsNativeDispatcher$BackupResult"); - if (clazz == NULL) { - return; - } + CHECK_NULL(clazz); backupResult_bytesTransferred = (*env)->GetFieldID(env, clazz, "bytesTransferred", "I"); + CHECK_NULL(backupResult_bytesTransferred); backupResult_context = (*env)->GetFieldID(env, clazz, "context", "J"); + CHECK_NULL(backupResult_context); // get handle to kernel32 if (GetModuleHandleExW((GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | From 0abb2b14edd9f7b4de461efa47fe31b4cbfb92c1 Mon Sep 17 00:00:00 2001 From: Alan Bateman Date: Mon, 3 Feb 2014 14:18:45 +0000 Subject: [PATCH 123/158] 8030795: java/nio/file/Files/probeContentType/ForceLoad.java failing with ServiceConfigurationError without jtreg -agentvm option Reviewed-by: michaelm --- jdk/test/java/nio/file/Files/probeContentType/ForceLoad.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jdk/test/java/nio/file/Files/probeContentType/ForceLoad.java b/jdk/test/java/nio/file/Files/probeContentType/ForceLoad.java index 5bb19ddaaa0..4a4edb26eb8 100644 --- a/jdk/test/java/nio/file/Files/probeContentType/ForceLoad.java +++ b/jdk/test/java/nio/file/Files/probeContentType/ForceLoad.java @@ -25,6 +25,8 @@ * @bug 4313887 * @summary Test library dependencies by invoking Files.probeContentType * before other methods that would cause nio.dll to be loaded. + * @build ForceLoad SimpleFileTypeDetector + * @run main/othervm ForceLoad */ import java.nio.file.*; From b2af3087a436f146c58752433a7ba2170c79d515 Mon Sep 17 00:00:00 2001 From: Michael McMahon Date: Mon, 3 Feb 2014 14:40:28 +0000 Subject: [PATCH 124/158] 8033425: Delay loading of net library in PortConfig initialization (workaround for for 8033367) Reviewed-by: alanb, chegar --- .../share/classes/java/net/SocketPermission.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/jdk/src/share/classes/java/net/SocketPermission.java b/jdk/src/share/classes/java/net/SocketPermission.java index 70b004af3bc..0f720c52283 100644 --- a/jdk/src/share/classes/java/net/SocketPermission.java +++ b/jdk/src/share/classes/java/net/SocketPermission.java @@ -235,13 +235,11 @@ public final class SocketPermission extends Permission private static Debug debug = null; private static boolean debugInit = false; - // ephemeral port range for this system - private static final int ephemeralLow = initEphemeralPorts( - "low", DEF_EPH_LOW - ); - private static final int ephemeralHigh = initEphemeralPorts( - "high", PORT_MAX - ); + // lazy initializer + private static class EphemeralRange { + static final int low = initEphemeralPorts("low", DEF_EPH_LOW); + static final int high = initEphemeralPorts("high", PORT_MAX); + }; static { Boolean tmp = java.security.AccessController.doPrivileged( @@ -1235,6 +1233,9 @@ public final class SocketPermission extends Permission int policyLow, int policyHigh, int targetLow, int targetHigh ) { + final int ephemeralLow = EphemeralRange.low; + final int ephemeralHigh = EphemeralRange.high; + if (targetLow == 0) { // check policy includes ephemeral range if (!inRange(policyLow, policyHigh, ephemeralLow, ephemeralHigh)) { From 1c571143473e30c79d62cec3959916a3eae0bd2d Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Mon, 3 Feb 2014 09:52:36 -0800 Subject: [PATCH 125/158] 8033416: Remove sun.misc.FpUtils Reviewed-by: alanb, bpb, psandoz --- jdk/src/share/classes/java/lang/Double.java | 3 +- .../share/classes/sun/misc/DoubleConsts.java | 6 +- .../share/classes/sun/misc/FloatConsts.java | 5 +- jdk/src/share/classes/sun/misc/FpUtils.java | 931 ------------------ jdk/test/java/lang/Math/HypotTests.java | 5 +- .../java/lang/Math/IeeeRecommendedTests.java | 40 +- jdk/test/java/lang/Math/Log1pTests.java | 5 +- jdk/test/java/lang/Math/Tests.java | 177 +++- 8 files changed, 203 insertions(+), 969 deletions(-) delete mode 100644 jdk/src/share/classes/sun/misc/FpUtils.java diff --git a/jdk/src/share/classes/java/lang/Double.java b/jdk/src/share/classes/java/lang/Double.java index 9ba150e7156..d76c934bc62 100644 --- a/jdk/src/share/classes/java/lang/Double.java +++ b/jdk/src/share/classes/java/lang/Double.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,7 +26,6 @@ package java.lang; import sun.misc.FloatingDecimal; -import sun.misc.FpUtils; import sun.misc.DoubleConsts; /** diff --git a/jdk/src/share/classes/sun/misc/DoubleConsts.java b/jdk/src/share/classes/sun/misc/DoubleConsts.java index 2c5964b7885..6ee80490102 100644 --- a/jdk/src/share/classes/sun/misc/DoubleConsts.java +++ b/jdk/src/share/classes/sun/misc/DoubleConsts.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -77,9 +77,7 @@ public class DoubleConsts { /** * The exponent the smallest positive double - * subnormal value would have if it could be normalized. It is - * equal to the value returned by - * FpUtils.ilogb(Double.MIN_VALUE). + * subnormal value would have if it could be normalized.. */ public static final int MIN_SUB_EXPONENT = MIN_EXPONENT - (SIGNIFICAND_WIDTH - 1); diff --git a/jdk/src/share/classes/sun/misc/FloatConsts.java b/jdk/src/share/classes/sun/misc/FloatConsts.java index 4345c19fcf3..07396f8bca9 100644 --- a/jdk/src/share/classes/sun/misc/FloatConsts.java +++ b/jdk/src/share/classes/sun/misc/FloatConsts.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -73,8 +73,7 @@ public class FloatConsts { /** * The exponent the smallest positive float subnormal - * value would have if it could be normalized. It is equal to the - * value returned by FpUtils.ilogb(Float.MIN_VALUE). + * value would have if it could be normalized. */ public static final int MIN_SUB_EXPONENT = MIN_EXPONENT - (SIGNIFICAND_WIDTH - 1); diff --git a/jdk/src/share/classes/sun/misc/FpUtils.java b/jdk/src/share/classes/sun/misc/FpUtils.java deleted file mode 100644 index a874c80f628..00000000000 --- a/jdk/src/share/classes/sun/misc/FpUtils.java +++ /dev/null @@ -1,931 +0,0 @@ -/* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package sun.misc; - -import sun.misc.FloatConsts; -import sun.misc.DoubleConsts; - -/** - * The class {@code FpUtils} contains static utility methods for - * manipulating and inspecting {@code float} and - * {@code double} floating-point numbers. These methods include - * functionality recommended or required by the IEEE 754 - * floating-point standard. - * - * @author Joseph D. Darcy - */ - -public class FpUtils { - /* - * The methods in this class are reasonably implemented using - * direct or indirect bit-level manipulation of floating-point - * values. However, having access to the IEEE 754 recommended - * functions would obviate the need for most programmers to engage - * in floating-point bit-twiddling. - * - * An IEEE 754 number has three fields, from most significant bit - * to to least significant, sign, exponent, and significand. - * - * msb lsb - * [sign|exponent| fractional_significand] - * - * Using some encoding cleverness, explained below, the high order - * bit of the logical significand does not need to be explicitly - * stored, thus "fractional_significand" instead of simply - * "significand" in the figure above. - * - * For finite normal numbers, the numerical value encoded is - * - * (-1)^sign * 2^(exponent)*(1.fractional_significand) - * - * Most finite floating-point numbers are normalized; the exponent - * value is reduced until the leading significand bit is 1. - * Therefore, the leading 1 is redundant and is not explicitly - * stored. If a numerical value is so small it cannot be - * normalized, it has a subnormal representation. Subnormal - * numbers don't have a leading 1 in their significand; subnormals - * are encoding using a special exponent value. In other words, - * the high-order bit of the logical significand can be elided in - * from the representation in either case since the bit's value is - * implicit from the exponent value. - * - * The exponent field uses a biased representation; if the bits of - * the exponent are interpreted as a unsigned integer E, the - * exponent represented is E - E_bias where E_bias depends on the - * floating-point format. E can range between E_min and E_max, - * constants which depend on the floating-point format. E_min and - * E_max are -126 and +127 for float, -1022 and +1023 for double. - * - * The 32-bit float format has 1 sign bit, 8 exponent bits, and 23 - * bits for the significand (which is logically 24 bits wide - * because of the implicit bit). The 64-bit double format has 1 - * sign bit, 11 exponent bits, and 52 bits for the significand - * (logically 53 bits). - * - * Subnormal numbers and zero have the special exponent value - * E_min -1; the numerical value represented by a subnormal is: - * - * (-1)^sign * 2^(E_min)*(0.fractional_significand) - * - * Zero is represented by all zero bits in the exponent and all - * zero bits in the significand; zero can have either sign. - * - * Infinity and NaN are encoded using the exponent value E_max + - * 1. Signed infinities have all significand bits zero; NaNs have - * at least one non-zero significand bit. - * - * The details of IEEE 754 floating-point encoding will be used in - * the methods below without further comment. For further - * exposition on IEEE 754 numbers, see "IEEE Standard for Binary - * Floating-Point Arithmetic" ANSI/IEEE Std 754-1985 or William - * Kahan's "Lecture Notes on the Status of IEEE Standard 754 for - * Binary Floating-Point Arithmetic", - * http://www.cs.berkeley.edu/~wkahan/ieee754status/ieee754.ps. - * - * Many of this class's methods are members of the set of IEEE 754 - * recommended functions or similar functions recommended or - * required by IEEE 754R. Discussion of various implementation - * techniques for these functions have occurred in: - * - * W.J. Cody and Jerome T. Coonen, "Algorithm 772 Functions to - * Support the IEEE Standard for Binary Floating-Point - * Arithmetic," ACM Transactions on Mathematical Software, - * vol. 19, no. 4, December 1993, pp. 443-451. - * - * Joseph D. Darcy, "Writing robust IEEE recommended functions in - * ``100% Pure Java''(TM)," University of California, Berkeley - * technical report UCB//CSD-98-1009. - */ - - /** - * Don't let anyone instantiate this class. - */ - private FpUtils() {} - - // Helper Methods - - // The following helper methods are used in the implementation of - // the public recommended functions; they generally omit certain - // tests for exception cases. - - /** - * Returns unbiased exponent of a {@code double}. - * @deprecated Use Math.getExponent. - */ - @Deprecated - public static int getExponent(double d){ - return Math.getExponent(d); - } - - /** - * Returns unbiased exponent of a {@code float}. - * @deprecated Use Math.getExponent. - */ - @Deprecated - public static int getExponent(float f){ - return Math.getExponent(f); - } - - - /** - * Returns the first floating-point argument with the sign of the - * second floating-point argument. Note that unlike the {@link - * FpUtils#copySign(double, double) copySign} method, this method - * does not require NaN {@code sign} arguments to be treated - * as positive values; implementations are permitted to treat some - * NaN arguments as positive and other NaN arguments as negative - * to allow greater performance. - * - * @param magnitude the parameter providing the magnitude of the result - * @param sign the parameter providing the sign of the result - * @return a value with the magnitude of {@code magnitude} - * and the sign of {@code sign}. - * @author Joseph D. Darcy - * @deprecated Use Math.copySign. - */ - @Deprecated - public static double rawCopySign(double magnitude, double sign) { - return Math.copySign(magnitude, sign); - } - - /** - * Returns the first floating-point argument with the sign of the - * second floating-point argument. Note that unlike the {@link - * FpUtils#copySign(float, float) copySign} method, this method - * does not require NaN {@code sign} arguments to be treated - * as positive values; implementations are permitted to treat some - * NaN arguments as positive and other NaN arguments as negative - * to allow greater performance. - * - * @param magnitude the parameter providing the magnitude of the result - * @param sign the parameter providing the sign of the result - * @return a value with the magnitude of {@code magnitude} - * and the sign of {@code sign}. - * @author Joseph D. Darcy - * @deprecated Use Math.copySign. - */ - @Deprecated - public static float rawCopySign(float magnitude, float sign) { - return Math.copySign(magnitude, sign); - } - - /* ***************************************************************** */ - - /** - * Returns {@code true} if the argument is a finite - * floating-point value; returns {@code false} otherwise (for - * NaN and infinity arguments). - * - * @param d the {@code double} value to be tested - * @return {@code true} if the argument is a finite - * floating-point value, {@code false} otherwise. - * @deprecated Use Double.isFinite. - */ - @Deprecated - public static boolean isFinite(double d) { - return Double.isFinite(d); - } - - /** - * Returns {@code true} if the argument is a finite - * floating-point value; returns {@code false} otherwise (for - * NaN and infinity arguments). - * - * @param f the {@code float} value to be tested - * @return {@code true} if the argument is a finite - * floating-point value, {@code false} otherwise. - * @deprecated Use Float.isFinite. - */ - @Deprecated - public static boolean isFinite(float f) { - return Float.isFinite(f); - } - - /** - * Returns {@code true} if the specified number is infinitely - * large in magnitude, {@code false} otherwise. - * - *

      Note that this method is equivalent to the {@link - * Double#isInfinite(double) Double.isInfinite} method; the - * functionality is included in this class for convenience. - * - * @param d the value to be tested. - * @return {@code true} if the value of the argument is positive - * infinity or negative infinity; {@code false} otherwise. - */ - public static boolean isInfinite(double d) { - return Double.isInfinite(d); - } - - /** - * Returns {@code true} if the specified number is infinitely - * large in magnitude, {@code false} otherwise. - * - *

      Note that this method is equivalent to the {@link - * Float#isInfinite(float) Float.isInfinite} method; the - * functionality is included in this class for convenience. - * - * @param f the value to be tested. - * @return {@code true} if the argument is positive infinity or - * negative infinity; {@code false} otherwise. - */ - public static boolean isInfinite(float f) { - return Float.isInfinite(f); - } - - /** - * Returns {@code true} if the specified number is a - * Not-a-Number (NaN) value, {@code false} otherwise. - * - *

      Note that this method is equivalent to the {@link - * Double#isNaN(double) Double.isNaN} method; the functionality is - * included in this class for convenience. - * - * @param d the value to be tested. - * @return {@code true} if the value of the argument is NaN; - * {@code false} otherwise. - */ - public static boolean isNaN(double d) { - return Double.isNaN(d); - } - - /** - * Returns {@code true} if the specified number is a - * Not-a-Number (NaN) value, {@code false} otherwise. - * - *

      Note that this method is equivalent to the {@link - * Float#isNaN(float) Float.isNaN} method; the functionality is - * included in this class for convenience. - * - * @param f the value to be tested. - * @return {@code true} if the argument is NaN; - * {@code false} otherwise. - */ - public static boolean isNaN(float f) { - return Float.isNaN(f); - } - - /** - * Returns {@code true} if the unordered relation holds - * between the two arguments. When two floating-point values are - * unordered, one value is neither less than, equal to, nor - * greater than the other. For the unordered relation to be true, - * at least one argument must be a {@code NaN}. - * - * @param arg1 the first argument - * @param arg2 the second argument - * @return {@code true} if at least one argument is a NaN, - * {@code false} otherwise. - */ - public static boolean isUnordered(double arg1, double arg2) { - return isNaN(arg1) || isNaN(arg2); - } - - /** - * Returns {@code true} if the unordered relation holds - * between the two arguments. When two floating-point values are - * unordered, one value is neither less than, equal to, nor - * greater than the other. For the unordered relation to be true, - * at least one argument must be a {@code NaN}. - * - * @param arg1 the first argument - * @param arg2 the second argument - * @return {@code true} if at least one argument is a NaN, - * {@code false} otherwise. - */ - public static boolean isUnordered(float arg1, float arg2) { - return isNaN(arg1) || isNaN(arg2); - } - - /** - * Returns unbiased exponent of a {@code double}; for - * subnormal values, the number is treated as if it were - * normalized. That is for all finite, non-zero, positive numbers - * x, scalb(x, -ilogb(x)) is - * always in the range [1, 2). - *

      - * Special cases: - *

        - *
      • If the argument is NaN, then the result is 230. - *
      • If the argument is infinite, then the result is 228. - *
      • If the argument is zero, then the result is -(228). - *
      - * - * @param d floating-point number whose exponent is to be extracted - * @return unbiased exponent of the argument. - * @author Joseph D. Darcy - */ - public static int ilogb(double d) { - int exponent = getExponent(d); - - switch (exponent) { - case DoubleConsts.MAX_EXPONENT+1: // NaN or infinity - if( isNaN(d) ) - return (1<<30); // 2^30 - else // infinite value - return (1<<28); // 2^28 - - case DoubleConsts.MIN_EXPONENT-1: // zero or subnormal - if(d == 0.0) { - return -(1<<28); // -(2^28) - } - else { - long transducer = Double.doubleToRawLongBits(d); - - /* - * To avoid causing slow arithmetic on subnormals, - * the scaling to determine when d's significand - * is normalized is done in integer arithmetic. - * (there must be at least one "1" bit in the - * significand since zero has been screened out. - */ - - // isolate significand bits - transducer &= DoubleConsts.SIGNIF_BIT_MASK; - assert(transducer != 0L); - - // This loop is simple and functional. We might be - // able to do something more clever that was faster; - // e.g. number of leading zero detection on - // (transducer << (# exponent and sign bits). - while (transducer < - (1L << (DoubleConsts.SIGNIFICAND_WIDTH - 1))) { - transducer *= 2; - exponent--; - } - exponent++; - assert( exponent >= - DoubleConsts.MIN_EXPONENT - (DoubleConsts.SIGNIFICAND_WIDTH-1) && - exponent < DoubleConsts.MIN_EXPONENT); - return exponent; - } - - default: - assert( exponent >= DoubleConsts.MIN_EXPONENT && - exponent <= DoubleConsts.MAX_EXPONENT); - return exponent; - } - } - - /** - * Returns unbiased exponent of a {@code float}; for - * subnormal values, the number is treated as if it were - * normalized. That is for all finite, non-zero, positive numbers - * x, scalb(x, -ilogb(x)) is - * always in the range [1, 2). - *

      - * Special cases: - *

        - *
      • If the argument is NaN, then the result is 230. - *
      • If the argument is infinite, then the result is 228. - *
      • If the argument is zero, then the result is -(228). - *
      - * - * @param f floating-point number whose exponent is to be extracted - * @return unbiased exponent of the argument. - * @author Joseph D. Darcy - */ - public static int ilogb(float f) { - int exponent = getExponent(f); - - switch (exponent) { - case FloatConsts.MAX_EXPONENT+1: // NaN or infinity - if( isNaN(f) ) - return (1<<30); // 2^30 - else // infinite value - return (1<<28); // 2^28 - - case FloatConsts.MIN_EXPONENT-1: // zero or subnormal - if(f == 0.0f) { - return -(1<<28); // -(2^28) - } - else { - int transducer = Float.floatToRawIntBits(f); - - /* - * To avoid causing slow arithmetic on subnormals, - * the scaling to determine when f's significand - * is normalized is done in integer arithmetic. - * (there must be at least one "1" bit in the - * significand since zero has been screened out. - */ - - // isolate significand bits - transducer &= FloatConsts.SIGNIF_BIT_MASK; - assert(transducer != 0); - - // This loop is simple and functional. We might be - // able to do something more clever that was faster; - // e.g. number of leading zero detection on - // (transducer << (# exponent and sign bits). - while (transducer < - (1 << (FloatConsts.SIGNIFICAND_WIDTH - 1))) { - transducer *= 2; - exponent--; - } - exponent++; - assert( exponent >= - FloatConsts.MIN_EXPONENT - (FloatConsts.SIGNIFICAND_WIDTH-1) && - exponent < FloatConsts.MIN_EXPONENT); - return exponent; - } - - default: - assert( exponent >= FloatConsts.MIN_EXPONENT && - exponent <= FloatConsts.MAX_EXPONENT); - return exponent; - } - } - - - /* - * The scalb operation should be reasonably fast; however, there - * are tradeoffs in writing a method to minimize the worst case - * performance and writing a method to minimize the time for - * expected common inputs. Some processors operate very slowly on - * subnormal operands, taking hundreds or thousands of cycles for - * one floating-point add or multiply as opposed to, say, four - * cycles for normal operands. For processors with very slow - * subnormal execution, scalb would be fastest if written entirely - * with integer operations; in other words, scalb would need to - * include the logic of performing correct rounding of subnormal - * values. This could be reasonably done in at most a few hundred - * cycles. However, this approach may penalize normal operations - * since at least the exponent of the floating-point argument must - * be examined. - * - * The approach taken in this implementation is a compromise. - * Floating-point multiplication is used to do most of the work; - * but knowingly multiplying by a subnormal scaling factor is - * avoided. However, the floating-point argument is not examined - * to see whether or not it is subnormal since subnormal inputs - * are assumed to be rare. At most three multiplies are needed to - * scale from the largest to smallest exponent ranges (scaling - * down, at most two multiplies are needed if subnormal scaling - * factors are allowed). However, in this implementation an - * expensive integer remainder operation is avoided at the cost of - * requiring five floating-point multiplies in the worst case, - * which should still be a performance win. - * - * If scaling of entire arrays is a concern, it would probably be - * more efficient to provide a double[] scalb(double[], int) - * version of scalb to avoid having to recompute the needed - * scaling factors for each floating-point value. - */ - - /** - * Return {@code d} × - * 2{@code scale_factor} rounded as if performed - * by a single correctly rounded floating-point multiply to a - * member of the double value set. See section 4.2.3 of - * The Java™ Language Specification - * for a discussion of floating-point - * value sets. If the exponent of the result is between the - * {@code double}'s minimum exponent and maximum exponent, - * the answer is calculated exactly. If the exponent of the - * result would be larger than {@code doubles}'s maximum - * exponent, an infinity is returned. Note that if the result is - * subnormal, precision may be lost; that is, when {@code scalb(x, - * n)} is subnormal, {@code scalb(scalb(x, n), -n)} may - * not equal x. When the result is non-NaN, the result has - * the same sign as {@code d}. - * - *

      - * Special cases: - *

        - *
      • If the first argument is NaN, NaN is returned. - *
      • If the first argument is infinite, then an infinity of the - * same sign is returned. - *
      • If the first argument is zero, then a zero of the same - * sign is returned. - *
      - * - * @param d number to be scaled by a power of two. - * @param scale_factor power of 2 used to scale {@code d} - * @return {@code d * }2{@code scale_factor} - * @author Joseph D. Darcy - * @deprecated Use Math.scalb. - */ - @Deprecated - public static double scalb(double d, int scale_factor) { - return Math.scalb(d, scale_factor); - } - - /** - * Return {@code f} × - * 2{@code scale_factor} rounded as if performed - * by a single correctly rounded floating-point multiply to a - * member of the float value set. See section 4.2.3 of - * The Java™ Language Specification - * for a discussion of floating-point - * value sets. If the exponent of the result is between the - * {@code float}'s minimum exponent and maximum exponent, the - * answer is calculated exactly. If the exponent of the result - * would be larger than {@code float}'s maximum exponent, an - * infinity is returned. Note that if the result is subnormal, - * precision may be lost; that is, when {@code scalb(x, n)} - * is subnormal, {@code scalb(scalb(x, n), -n)} may not equal - * x. When the result is non-NaN, the result has the same - * sign as {@code f}. - * - *

      - * Special cases: - *

        - *
      • If the first argument is NaN, NaN is returned. - *
      • If the first argument is infinite, then an infinity of the - * same sign is returned. - *
      • If the first argument is zero, then a zero of the same - * sign is returned. - *
      - * - * @param f number to be scaled by a power of two. - * @param scale_factor power of 2 used to scale {@code f} - * @return {@code f * }2{@code scale_factor} - * @author Joseph D. Darcy - * @deprecated Use Math.scalb. - */ - @Deprecated - public static float scalb(float f, int scale_factor) { - return Math.scalb(f, scale_factor); - } - - /** - * Returns the floating-point number adjacent to the first - * argument in the direction of the second argument. If both - * arguments compare as equal the second argument is returned. - * - *

      - * Special cases: - *

        - *
      • If either argument is a NaN, then NaN is returned. - * - *
      • If both arguments are signed zeros, {@code direction} - * is returned unchanged (as implied by the requirement of - * returning the second argument if the arguments compare as - * equal). - * - *
      • If {@code start} is - * ±{@code Double.MIN_VALUE} and {@code direction} - * has a value such that the result should have a smaller - * magnitude, then a zero with the same sign as {@code start} - * is returned. - * - *
      • If {@code start} is infinite and - * {@code direction} has a value such that the result should - * have a smaller magnitude, {@code Double.MAX_VALUE} with the - * same sign as {@code start} is returned. - * - *
      • If {@code start} is equal to ± - * {@code Double.MAX_VALUE} and {@code direction} has a - * value such that the result should have a larger magnitude, an - * infinity with same sign as {@code start} is returned. - *
      - * - * @param start starting floating-point value - * @param direction value indicating which of - * {@code start}'s neighbors or {@code start} should - * be returned - * @return The floating-point number adjacent to {@code start} in the - * direction of {@code direction}. - * @author Joseph D. Darcy - * @deprecated Use Math.nextAfter - */ - @Deprecated - public static double nextAfter(double start, double direction) { - return Math.nextAfter(start, direction); - } - - /** - * Returns the floating-point number adjacent to the first - * argument in the direction of the second argument. If both - * arguments compare as equal, the second argument is returned. - * - *

      - * Special cases: - *

        - *
      • If either argument is a NaN, then NaN is returned. - * - *
      • If both arguments are signed zeros, a {@code float} - * zero with the same sign as {@code direction} is returned - * (as implied by the requirement of returning the second argument - * if the arguments compare as equal). - * - *
      • If {@code start} is - * ±{@code Float.MIN_VALUE} and {@code direction} - * has a value such that the result should have a smaller - * magnitude, then a zero with the same sign as {@code start} - * is returned. - * - *
      • If {@code start} is infinite and - * {@code direction} has a value such that the result should - * have a smaller magnitude, {@code Float.MAX_VALUE} with the - * same sign as {@code start} is returned. - * - *
      • If {@code start} is equal to ± - * {@code Float.MAX_VALUE} and {@code direction} has a - * value such that the result should have a larger magnitude, an - * infinity with same sign as {@code start} is returned. - *
      - * - * @param start starting floating-point value - * @param direction value indicating which of - * {@code start}'s neighbors or {@code start} should - * be returned - * @return The floating-point number adjacent to {@code start} in the - * direction of {@code direction}. - * @author Joseph D. Darcy - * @deprecated Use Math.nextAfter. - */ - @Deprecated - public static float nextAfter(float start, double direction) { - return Math.nextAfter(start, direction); - } - - /** - * Returns the floating-point value adjacent to {@code d} in - * the direction of positive infinity. This method is - * semantically equivalent to {@code nextAfter(d, - * Double.POSITIVE_INFINITY)}; however, a {@code nextUp} - * implementation may run faster than its equivalent - * {@code nextAfter} call. - * - *

      Special Cases: - *

        - *
      • If the argument is NaN, the result is NaN. - * - *
      • If the argument is positive infinity, the result is - * positive infinity. - * - *
      • If the argument is zero, the result is - * {@code Double.MIN_VALUE} - * - *
      - * - * @param d starting floating-point value - * @return The adjacent floating-point value closer to positive - * infinity. - * @author Joseph D. Darcy - * @deprecated use Math.nextUp. - */ - @Deprecated - public static double nextUp(double d) { - return Math.nextUp(d); - } - - /** - * Returns the floating-point value adjacent to {@code f} in - * the direction of positive infinity. This method is - * semantically equivalent to {@code nextAfter(f, - * Double.POSITIVE_INFINITY)}; however, a {@code nextUp} - * implementation may run faster than its equivalent - * {@code nextAfter} call. - * - *

      Special Cases: - *

        - *
      • If the argument is NaN, the result is NaN. - * - *
      • If the argument is positive infinity, the result is - * positive infinity. - * - *
      • If the argument is zero, the result is - * {@code Float.MIN_VALUE} - * - *
      - * - * @param f starting floating-point value - * @return The adjacent floating-point value closer to positive - * infinity. - * @author Joseph D. Darcy - * @deprecated Use Math.nextUp. - */ - @Deprecated - public static float nextUp(float f) { - return Math.nextUp(f); - } - - /** - * Returns the floating-point value adjacent to {@code d} in - * the direction of negative infinity. This method is - * semantically equivalent to {@code nextAfter(d, - * Double.NEGATIVE_INFINITY)}; however, a - * {@code nextDown} implementation may run faster than its - * equivalent {@code nextAfter} call. - * - *

      Special Cases: - *

        - *
      • If the argument is NaN, the result is NaN. - * - *
      • If the argument is negative infinity, the result is - * negative infinity. - * - *
      • If the argument is zero, the result is - * {@code -Double.MIN_VALUE} - * - *
      - * - * @param d starting floating-point value - * @return The adjacent floating-point value closer to negative - * infinity. - * @author Joseph D. Darcy - * @deprecated Use Math.nextDown. - */ - @Deprecated - public static double nextDown(double d) { - return Math.nextDown(d); - } - - /** - * Returns the floating-point value adjacent to {@code f} in - * the direction of negative infinity. This method is - * semantically equivalent to {@code nextAfter(f, - * Float.NEGATIVE_INFINITY)}; however, a - * {@code nextDown} implementation may run faster than its - * equivalent {@code nextAfter} call. - * - *

      Special Cases: - *

        - *
      • If the argument is NaN, the result is NaN. - * - *
      • If the argument is negative infinity, the result is - * negative infinity. - * - *
      • If the argument is zero, the result is - * {@code -Float.MIN_VALUE} - * - *
      - * - * @param f starting floating-point value - * @return The adjacent floating-point value closer to negative - * infinity. - * @author Joseph D. Darcy - * @deprecated Use Math.nextDown. - */ - @Deprecated - public static double nextDown(float f) { - return Math.nextDown(f); - } - - /** - * Returns the first floating-point argument with the sign of the - * second floating-point argument. For this method, a NaN - * {@code sign} argument is always treated as if it were - * positive. - * - * @param magnitude the parameter providing the magnitude of the result - * @param sign the parameter providing the sign of the result - * @return a value with the magnitude of {@code magnitude} - * and the sign of {@code sign}. - * @author Joseph D. Darcy - * @since 1.5 - * @deprecated Use StrictMath.copySign. - */ - @Deprecated - public static double copySign(double magnitude, double sign) { - return StrictMath.copySign(magnitude, sign); - } - - /** - * Returns the first floating-point argument with the sign of the - * second floating-point argument. For this method, a NaN - * {@code sign} argument is always treated as if it were - * positive. - * - * @param magnitude the parameter providing the magnitude of the result - * @param sign the parameter providing the sign of the result - * @return a value with the magnitude of {@code magnitude} - * and the sign of {@code sign}. - * @author Joseph D. Darcy - * @deprecated Use StrictMath.copySign. - */ - @Deprecated - public static float copySign(float magnitude, float sign) { - return StrictMath.copySign(magnitude, sign); - } - - /** - * Returns the size of an ulp of the argument. An ulp of a - * {@code double} value is the positive distance between this - * floating-point value and the {@code double} value next - * larger in magnitude. Note that for non-NaN x, - * ulp(-x) == ulp(x). - * - *

      Special Cases: - *

        - *
      • If the argument is NaN, then the result is NaN. - *
      • If the argument is positive or negative infinity, then the - * result is positive infinity. - *
      • If the argument is positive or negative zero, then the result is - * {@code Double.MIN_VALUE}. - *
      • If the argument is ±{@code Double.MAX_VALUE}, then - * the result is equal to 2971. - *
      - * - * @param d the floating-point value whose ulp is to be returned - * @return the size of an ulp of the argument - * @author Joseph D. Darcy - * @since 1.5 - * @deprecated Use Math.ulp. - */ - @Deprecated - public static double ulp(double d) { - return Math.ulp(d); - } - - /** - * Returns the size of an ulp of the argument. An ulp of a - * {@code float} value is the positive distance between this - * floating-point value and the {@code float} value next - * larger in magnitude. Note that for non-NaN x, - * ulp(-x) == ulp(x). - * - *

      Special Cases: - *

        - *
      • If the argument is NaN, then the result is NaN. - *
      • If the argument is positive or negative infinity, then the - * result is positive infinity. - *
      • If the argument is positive or negative zero, then the result is - * {@code Float.MIN_VALUE}. - *
      • If the argument is ±{@code Float.MAX_VALUE}, then - * the result is equal to 2104. - *
      - * - * @param f the floating-point value whose ulp is to be returned - * @return the size of an ulp of the argument - * @author Joseph D. Darcy - * @since 1.5 - * @deprecated Use Math.ulp. - */ - @Deprecated - public static float ulp(float f) { - return Math.ulp(f); - } - - /** - * Returns the signum function of the argument; zero if the argument - * is zero, 1.0 if the argument is greater than zero, -1.0 if the - * argument is less than zero. - * - *

      Special Cases: - *

        - *
      • If the argument is NaN, then the result is NaN. - *
      • If the argument is positive zero or negative zero, then the - * result is the same as the argument. - *
      - * - * @param d the floating-point value whose signum is to be returned - * @return the signum function of the argument - * @author Joseph D. Darcy - * @since 1.5 - * @deprecated Use Math.signum. - */ - @Deprecated - public static double signum(double d) { - return Math.signum(d); - } - - /** - * Returns the signum function of the argument; zero if the argument - * is zero, 1.0f if the argument is greater than zero, -1.0f if the - * argument is less than zero. - * - *

      Special Cases: - *

        - *
      • If the argument is NaN, then the result is NaN. - *
      • If the argument is positive zero or negative zero, then the - * result is the same as the argument. - *
      - * - * @param f the floating-point value whose signum is to be returned - * @return the signum function of the argument - * @author Joseph D. Darcy - * @since 1.5 - * @deprecated Use Math.signum. - */ - @Deprecated - public static float signum(float f) { - return Math.signum(f); - } -} diff --git a/jdk/test/java/lang/Math/HypotTests.java b/jdk/test/java/lang/Math/HypotTests.java index d48a6f938a0..9582c83daf8 100644 --- a/jdk/test/java/lang/Math/HypotTests.java +++ b/jdk/test/java/lang/Math/HypotTests.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,7 +29,6 @@ */ import sun.misc.DoubleConsts; -import sun.misc.FpUtils; public class HypotTests { private HypotTests(){} @@ -127,7 +126,7 @@ public class HypotTests { double d = rand.nextDouble(); // Scale d to have an exponent equal to MAX_EXPONENT -15 d = Math.scalb(d, DoubleConsts.MAX_EXPONENT - -15 - FpUtils.ilogb(d)); + -15 - Tests.ilogb(d)); for(int j = 0; j <= 13; j += 1) { failures += testHypotCase(3*d, 4*d, 5*d, 2.5); d *= 2.0; // increase exponent by 1 diff --git a/jdk/test/java/lang/Math/IeeeRecommendedTests.java b/jdk/test/java/lang/Math/IeeeRecommendedTests.java index f776bbf5b1c..ce4c6595b4b 100644 --- a/jdk/test/java/lang/Math/IeeeRecommendedTests.java +++ b/jdk/test/java/lang/Math/IeeeRecommendedTests.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -28,7 +28,6 @@ * @author Joseph D. Darcy */ -import sun.misc.FpUtils; import sun.misc.DoubleConsts; import sun.misc.FloatConsts; @@ -708,21 +707,21 @@ public class IeeeRecommendedTests { for(int i = 0; i < testCases.length; i++) { // isNaN - failures+=Tests.test("FpUtils.isNaN(float)", testCases[i], - FpUtils.isNaN(testCases[i]), (i ==0)); + failures+=Tests.test("Float.isNaN(float)", testCases[i], + Float.isNaN(testCases[i]), (i ==0)); // isFinite failures+=Tests.test("Float.isFinite(float)", testCases[i], Float.isFinite(testCases[i]), (i >= 3)); // isInfinite - failures+=Tests.test("FpUtils.isInfinite(float)", testCases[i], - FpUtils.isInfinite(testCases[i]), (i==1 || i==2)); + failures+=Tests.test("Float.isInfinite(float)", testCases[i], + Float.isInfinite(testCases[i]), (i==1 || i==2)); // isUnorderd for(int j = 0; j < testCases.length; j++) { - failures+=Tests.test("FpUtils.isUnordered(float, float)", testCases[i],testCases[j], - FpUtils.isUnordered(testCases[i],testCases[j]), (i==0 || j==0)); + failures+=Tests.test("Tests.isUnordered(float, float)", testCases[i],testCases[j], + Tests.isUnordered(testCases[i],testCases[j]), (i==0 || j==0)); } } @@ -758,21 +757,21 @@ public class IeeeRecommendedTests { for(int i = 0; i < testCases.length; i++) { // isNaN - failures+=Tests.test("FpUtils.isNaN(double)", testCases[i], - FpUtils.isNaN(testCases[i]), (i ==0)); + failures+=Tests.test("Double.isNaN(double)", testCases[i], + Double.isNaN(testCases[i]), (i ==0)); // isFinite failures+=Tests.test("Double.isFinite(double)", testCases[i], Double.isFinite(testCases[i]), (i >= 3)); // isInfinite - failures+=Tests.test("FpUtils.isInfinite(double)", testCases[i], - FpUtils.isInfinite(testCases[i]), (i==1 || i==2)); + failures+=Tests.test("Double.isInfinite(double)", testCases[i], + Double.isInfinite(testCases[i]), (i==1 || i==2)); // isUnorderd for(int j = 0; j < testCases.length; j++) { - failures+=Tests.test("FpUtils.isUnordered(double, double)", testCases[i],testCases[j], - FpUtils.isUnordered(testCases[i],testCases[j]), (i==0 || j==0)); + failures+=Tests.test("Tests.isUnordered(double, double)", testCases[i],testCases[j], + Tests.isUnordered(testCases[i],testCases[j]), (i==0 || j==0)); } } @@ -1023,8 +1022,8 @@ public class IeeeRecommendedTests { 2*FloatConsts.MIN_EXPONENT, // -252 2*FloatConsts.MIN_EXPONENT+1, // -251 - FpUtils.ilogb(Float.MIN_VALUE)-1, // -150 - FpUtils.ilogb(Float.MIN_VALUE), // -149 + FloatConsts.MIN_EXPONENT - FloatConsts.SIGNIFICAND_WIDTH, + FloatConsts.MIN_SUB_EXPONENT, -FloatConsts.MAX_EXPONENT, // -127 FloatConsts.MIN_EXPONENT, // -126 @@ -1100,7 +1099,7 @@ public class IeeeRecommendedTests { failures+=testScalbCase(value, scaleFactor, - (FpUtils.ilogb(value) +j > FloatConsts.MAX_EXPONENT ) ? + (Tests.ilogb(value) +j > FloatConsts.MAX_EXPONENT ) ? Math.copySign(infinityF, value) : // overflow // calculate right answer twoToTheMaxExp*(twoToTheMaxExp*(scale*value)) ); @@ -1230,8 +1229,9 @@ public class IeeeRecommendedTests { 2*DoubleConsts.MIN_EXPONENT, // -2044 2*DoubleConsts.MIN_EXPONENT+1, // -2043 - FpUtils.ilogb(Double.MIN_VALUE)-1, // -1076 - FpUtils.ilogb(Double.MIN_VALUE), // -1075 + DoubleConsts.MIN_EXPONENT, // -1022 + DoubleConsts.MIN_EXPONENT - DoubleConsts.SIGNIFICAND_WIDTH, + DoubleConsts.MIN_SUB_EXPONENT, -DoubleConsts.MAX_EXPONENT, // -1023 DoubleConsts.MIN_EXPONENT, // -1022 @@ -1307,7 +1307,7 @@ public class IeeeRecommendedTests { failures+=testScalbCase(value, scaleFactor, - (FpUtils.ilogb(value) +j > DoubleConsts.MAX_EXPONENT ) ? + (Tests.ilogb(value) +j > DoubleConsts.MAX_EXPONENT ) ? Math.copySign(infinityD, value) : // overflow // calculate right answer twoToTheMaxExp*(twoToTheMaxExp*(scale*value)) ); diff --git a/jdk/test/java/lang/Math/Log1pTests.java b/jdk/test/java/lang/Math/Log1pTests.java index 56a80047aa9..5fe373edc78 100644 --- a/jdk/test/java/lang/Math/Log1pTests.java +++ b/jdk/test/java/lang/Math/Log1pTests.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,7 +29,6 @@ */ import sun.misc.DoubleConsts; -import sun.misc.FpUtils; public class Log1pTests { private Log1pTests(){} @@ -105,7 +104,7 @@ public class Log1pTests { for(int i = 0; i < 1000; i++) { double d = rand.nextDouble(); - d = Math.scalb(d, -53 - FpUtils.ilogb(d)); + d = Math.scalb(d, -53 - Tests.ilogb(d)); for(int j = -53; j <= 52; j++) { failures += testLog1pCaseWithUlpDiff(d, hp15cLogp(d), 5); diff --git a/jdk/test/java/lang/Math/Tests.java b/jdk/test/java/lang/Math/Tests.java index 7dd6d68075f..c06c4ed79e3 100644 --- a/jdk/test/java/lang/Math/Tests.java +++ b/jdk/test/java/lang/Math/Tests.java @@ -30,7 +30,8 @@ * and finally the expected result. */ -import sun.misc.FpUtils; +import sun.misc.FloatConsts; +import sun.misc.DoubleConsts; public class Tests { private Tests(){}; // do not instantiate @@ -59,6 +60,176 @@ public class Tests { return -Math.nextUp(-d); } + /** + * Returns unbiased exponent of a {@code float}; for + * subnormal values, the number is treated as if it were + * normalized. That is for all finite, non-zero, positive numbers + * x, scalb(x, -ilogb(x)) is + * always in the range [1, 2). + *

      + * Special cases: + *

        + *
      • If the argument is NaN, then the result is 230. + *
      • If the argument is infinite, then the result is 228. + *
      • If the argument is zero, then the result is -(228). + *
      + * + * @param f floating-point number whose exponent is to be extracted + * @return unbiased exponent of the argument. + */ + public static int ilogb(double d) { + int exponent = Math.getExponent(d); + + switch (exponent) { + case DoubleConsts.MAX_EXPONENT+1: // NaN or infinity + if( Double.isNaN(d) ) + return (1<<30); // 2^30 + else // infinite value + return (1<<28); // 2^28 + + case DoubleConsts.MIN_EXPONENT-1: // zero or subnormal + if(d == 0.0) { + return -(1<<28); // -(2^28) + } + else { + long transducer = Double.doubleToRawLongBits(d); + + /* + * To avoid causing slow arithmetic on subnormals, + * the scaling to determine when d's significand + * is normalized is done in integer arithmetic. + * (there must be at least one "1" bit in the + * significand since zero has been screened out. + */ + + // isolate significand bits + transducer &= DoubleConsts.SIGNIF_BIT_MASK; + assert(transducer != 0L); + + // This loop is simple and functional. We might be + // able to do something more clever that was faster; + // e.g. number of leading zero detection on + // (transducer << (# exponent and sign bits). + while (transducer < + (1L << (DoubleConsts.SIGNIFICAND_WIDTH - 1))) { + transducer *= 2; + exponent--; + } + exponent++; + assert( exponent >= + DoubleConsts.MIN_EXPONENT - (DoubleConsts.SIGNIFICAND_WIDTH-1) && + exponent < DoubleConsts.MIN_EXPONENT); + return exponent; + } + + default: + assert( exponent >= DoubleConsts.MIN_EXPONENT && + exponent <= DoubleConsts.MAX_EXPONENT); + return exponent; + } + } + + /** + * Returns unbiased exponent of a {@code float}; for + * subnormal values, the number is treated as if it were + * normalized. That is for all finite, non-zero, positive numbers + * x, scalb(x, -ilogb(x)) is + * always in the range [1, 2). + *

      + * Special cases: + *

        + *
      • If the argument is NaN, then the result is 230. + *
      • If the argument is infinite, then the result is 228. + *
      • If the argument is zero, then the result is -(228). + *
      + * + * @param f floating-point number whose exponent is to be extracted + * @return unbiased exponent of the argument. + */ + public static int ilogb(float f) { + int exponent = Math.getExponent(f); + + switch (exponent) { + case FloatConsts.MAX_EXPONENT+1: // NaN or infinity + if( Float.isNaN(f) ) + return (1<<30); // 2^30 + else // infinite value + return (1<<28); // 2^28 + + case FloatConsts.MIN_EXPONENT-1: // zero or subnormal + if(f == 0.0f) { + return -(1<<28); // -(2^28) + } + else { + int transducer = Float.floatToRawIntBits(f); + + /* + * To avoid causing slow arithmetic on subnormals, + * the scaling to determine when f's significand + * is normalized is done in integer arithmetic. + * (there must be at least one "1" bit in the + * significand since zero has been screened out. + */ + + // isolate significand bits + transducer &= FloatConsts.SIGNIF_BIT_MASK; + assert(transducer != 0); + + // This loop is simple and functional. We might be + // able to do something more clever that was faster; + // e.g. number of leading zero detection on + // (transducer << (# exponent and sign bits). + while (transducer < + (1 << (FloatConsts.SIGNIFICAND_WIDTH - 1))) { + transducer *= 2; + exponent--; + } + exponent++; + assert( exponent >= + FloatConsts.MIN_EXPONENT - (FloatConsts.SIGNIFICAND_WIDTH-1) && + exponent < FloatConsts.MIN_EXPONENT); + return exponent; + } + + default: + assert( exponent >= FloatConsts.MIN_EXPONENT && + exponent <= FloatConsts.MAX_EXPONENT); + return exponent; + } + } + + /** + * Returns {@code true} if the unordered relation holds + * between the two arguments. When two floating-point values are + * unordered, one value is neither less than, equal to, nor + * greater than the other. For the unordered relation to be true, + * at least one argument must be a {@code NaN}. + * + * @param arg1 the first argument + * @param arg2 the second argument + * @return {@code true} if at least one argument is a NaN, + * {@code false} otherwise. + */ + public static boolean isUnordered(float arg1, float arg2) { + return Float.isNaN(arg1) || Float.isNaN(arg2); + } + + /** + * Returns {@code true} if the unordered relation holds + * between the two arguments. When two floating-point values are + * unordered, one value is neither less than, equal to, nor + * greater than the other. For the unordered relation to be true, + * at least one argument must be a {@code NaN}. + * + * @param arg1 the first argument + * @param arg2 the second argument + * @return {@code true} if at least one argument is a NaN, + * {@code false} otherwise. + */ + public static boolean isUnordered(double arg1, double arg2) { + return Double.isNaN(arg1) || Double.isNaN(arg2); + } + public static int test(String testName, float input, boolean result, boolean expected) { if (expected != result) { @@ -237,7 +408,7 @@ public class Tests { return 1; } else { double difference = expected - result; - if (FpUtils.isUnordered(expected, result) || + if (isUnordered(expected, result) || Double.isNaN(difference) || // fail if greater than or unordered !(Math.abs( difference/Math.ulp(expected) ) <= Math.abs(ulps)) ) { @@ -332,7 +503,7 @@ public class Tests { double result, double expected, double tolerance) { if (Double.compare(expected, result ) != 0) { double difference = expected - result; - if (FpUtils.isUnordered(expected, result) || + if (isUnordered(expected, result) || Double.isNaN(difference) || // fail if greater than or unordered !(Math.abs((difference)/expected) <= StrictMath.pow(10, -tolerance)) ) { From b0082203739bdb64715ac624242e0779c7f1c07a Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Mon, 3 Feb 2014 10:05:56 -0800 Subject: [PATCH 126/158] 8033181: Fix doclint missing issues in java.awt.{peer, im[.spi]} Reviewed-by: alanb --- jdk/src/share/classes/java/awt/im/InputContext.java | 3 ++- .../classes/java/awt/im/InputMethodHighlight.java | 5 ++++- .../classes/java/awt/im/spi/InputMethodContext.java | 10 +++++++++- .../classes/java/awt/im/spi/InputMethodDescriptor.java | 7 ++++++- jdk/src/share/classes/java/awt/peer/CanvasPeer.java | 4 +++- jdk/src/share/classes/java/awt/peer/ComponentPeer.java | 6 ++++-- jdk/src/share/classes/java/awt/peer/MouseInfoPeer.java | 9 ++++++++- jdk/src/share/classes/java/awt/peer/WindowPeer.java | 7 ++++--- 8 files changed, 40 insertions(+), 11 deletions(-) diff --git a/jdk/src/share/classes/java/awt/im/InputContext.java b/jdk/src/share/classes/java/awt/im/InputContext.java index 615029120dd..9d6122d2781 100644 --- a/jdk/src/share/classes/java/awt/im/InputContext.java +++ b/jdk/src/share/classes/java/awt/im/InputContext.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -87,6 +87,7 @@ public class InputContext { /** * Returns a new InputContext instance. + * @return a new InputContext instance */ public static InputContext getInstance() { return new sun.awt.im.InputMethodContext(); diff --git a/jdk/src/share/classes/java/awt/im/InputMethodHighlight.java b/jdk/src/share/classes/java/awt/im/InputMethodHighlight.java index 55905d97708..df09076410d 100644 --- a/jdk/src/share/classes/java/awt/im/InputMethodHighlight.java +++ b/jdk/src/share/classes/java/awt/im/InputMethodHighlight.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -157,6 +157,7 @@ public class InputMethodHighlight { /** * Returns whether the text range is selected. + * @return whether the text range is selected */ public boolean isSelected() { return selected; @@ -174,6 +175,7 @@ public class InputMethodHighlight { /** * Returns the variation of the text range. + * @return the variation of the text range */ public int getVariation() { return variation; @@ -181,6 +183,7 @@ public class InputMethodHighlight { /** * Returns the rendering style attributes for the text range, or null. + * @return the rendering style attributes for the text range, or null * @since 1.3 */ public Map getStyle() { diff --git a/jdk/src/share/classes/java/awt/im/spi/InputMethodContext.java b/jdk/src/share/classes/java/awt/im/spi/InputMethodContext.java index 8e06c39299b..45517c37b23 100644 --- a/jdk/src/share/classes/java/awt/im/spi/InputMethodContext.java +++ b/jdk/src/share/classes/java/awt/im/spi/InputMethodContext.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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,6 +52,14 @@ public interface InputMethodContext extends InputMethodRequests { * Creates an input method event from the arguments given * and dispatches it to the client component. For arguments, * see {@link java.awt.event.InputMethodEvent#InputMethodEvent}. + * @param id the event type + * @param text the combined committed and composed text + * @param committedCharacterCount the number of committed characters in the text + * @param caret the caret (a.k.a. insertion point); null if + * there's no caret within current composed text + * @param visiblePosition the position that's most important to be + * visible; null if there's no recommendation for a visible + * position within current composed text */ public void dispatchInputMethodEvent(int id, AttributedCharacterIterator text, int committedCharacterCount, diff --git a/jdk/src/share/classes/java/awt/im/spi/InputMethodDescriptor.java b/jdk/src/share/classes/java/awt/im/spi/InputMethodDescriptor.java index d462095bb8f..885e7ad4e09 100644 --- a/jdk/src/share/classes/java/awt/im/spi/InputMethodDescriptor.java +++ b/jdk/src/share/classes/java/awt/im/spi/InputMethodDescriptor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -72,6 +72,8 @@ public interface InputMethodDescriptor { * Returns whether the list of available locales can change * at runtime. This may be the case, for example, for adapters * that access real input methods over the network. + * @return whether the list of available locales can change at + * runtime */ boolean hasDynamicLocaleList(); @@ -92,6 +94,9 @@ public interface InputMethodDescriptor { * * @param inputLocale the locale for which text input is supported, or null * @param displayLanguage the language in which the name will be displayed + * @return the user-visible name of the corresponding input method + * for the given input locale in the language in which the name + * will be displayed */ String getInputMethodDisplayName(Locale inputLocale, Locale displayLanguage); diff --git a/jdk/src/share/classes/java/awt/peer/CanvasPeer.java b/jdk/src/share/classes/java/awt/peer/CanvasPeer.java index ba17df0252c..da1c4c0fe5a 100644 --- a/jdk/src/share/classes/java/awt/peer/CanvasPeer.java +++ b/jdk/src/share/classes/java/awt/peer/CanvasPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, 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 @@ -42,6 +42,8 @@ public interface CanvasPeer extends ComponentPeer { * from the requested GC passed as the argument to this method. This method * must return a non-null value (given the argument is non-null as well). * + * @param gc the requested graphics configuration + * @return a graphics configuration that best suits this Canvas * @since 1.7 */ GraphicsConfiguration getAppropriateGraphicsConfiguration( diff --git a/jdk/src/share/classes/java/awt/peer/ComponentPeer.java b/jdk/src/share/classes/java/awt/peer/ComponentPeer.java index b34f40f1cdd..8f0366711e5 100644 --- a/jdk/src/share/classes/java/awt/peer/ComponentPeer.java +++ b/jdk/src/share/classes/java/awt/peer/ComponentPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, 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 @@ -516,6 +516,7 @@ public interface ComponentPeer { /** * Applies the shape to the native component window. + * @param shape the shape to apply * @since 1.7 * * @see Component#applyCompoundShape @@ -525,12 +526,13 @@ public interface ComponentPeer { /** * Lowers this component at the bottom of the above HW peer. If the above parameter * is null then the method places this component at the top of the Z-order. + * @param above the peer to lower this component with respect to */ void setZOrder(ComponentPeer above); /** * Updates internal data structures related to the component's GC. - * + * @param gc the reference graphics configuration * @return if the peer needs to be recreated for the changes to take effect * @since 1.7 */ diff --git a/jdk/src/share/classes/java/awt/peer/MouseInfoPeer.java b/jdk/src/share/classes/java/awt/peer/MouseInfoPeer.java index 0594bda78bb..9087810b37d 100644 --- a/jdk/src/share/classes/java/awt/peer/MouseInfoPeer.java +++ b/jdk/src/share/classes/java/awt/peer/MouseInfoPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -55,6 +55,10 @@ public interface MouseInfoPeer { * is located. * See java.awt.GraphicsConfiguration documentation for more * details about virtual screen devices. + * @param point holder for the current coordinates of the mouse + * cursor + * @return the number of the screen device where the pointer is + * located */ int fillPointWithCoords(Point point); @@ -63,6 +67,9 @@ public interface MouseInfoPeer { * pointer. The window is considered to be under the mouse pointer * if it is showing on the screen, and the mouse pointer is above * the part of the window that is not obscured by any other windows. + * @param w the window to check + * @return whether or not the window is located under the mouse + * pointer */ boolean isWindowUnderMouse(Window w); diff --git a/jdk/src/share/classes/java/awt/peer/WindowPeer.java b/jdk/src/share/classes/java/awt/peer/WindowPeer.java index e181b5b3018..65346489990 100644 --- a/jdk/src/share/classes/java/awt/peer/WindowPeer.java +++ b/jdk/src/share/classes/java/awt/peer/WindowPeer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, 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 @@ -94,14 +94,15 @@ public interface WindowPeer extends ContainerPeer { /** * Sets the level of opacity for the window. - * + * @param opacity the level of opacity * @see Window#setOpacity(float) */ void setOpacity(float opacity); /** * Enables the per-pixel alpha support for the window. - * + * @param isOpaque whether or not per-pixel alpha support is + * enabled * @see Window#setBackground(Color) */ void setOpaque(boolean isOpaque); From 6261c40dcaa64104fb4ee2ce6d01b8d6e368dfeb Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Mon, 3 Feb 2014 10:21:58 -0800 Subject: [PATCH 127/158] 8033222: Fix serial lint warnings in sun.awt.* Reviewed-by: alanb --- jdk/src/share/classes/sun/awt/CustomCursor.java | 3 ++- jdk/src/share/classes/sun/awt/FontConfiguration.java | 1 + jdk/src/share/classes/sun/awt/TimedWindowEvent.java | 3 ++- jdk/src/share/classes/sun/awt/dnd/SunDropTargetEvent.java | 3 ++- jdk/src/share/classes/sun/awt/event/IgnorePaintEvent.java | 3 ++- jdk/src/share/classes/sun/awt/image/BadDepthException.java | 3 ++- jdk/src/share/classes/sun/awt/image/ImageAccessException.java | 3 ++- jdk/src/share/classes/sun/awt/image/ImageFormatException.java | 3 ++- jdk/src/share/classes/sun/awt/image/PNGImageDecoder.java | 3 ++- jdk/src/share/classes/sun/awt/shell/DefaultShellFolder.java | 4 ++-- jdk/src/share/classes/sun/awt/shell/ShellFolder.java | 4 ++-- 11 files changed, 21 insertions(+), 12 deletions(-) diff --git a/jdk/src/share/classes/sun/awt/CustomCursor.java b/jdk/src/share/classes/sun/awt/CustomCursor.java index a3863e9b6bd..6dad03c8c71 100644 --- a/jdk/src/share/classes/sun/awt/CustomCursor.java +++ b/jdk/src/share/classes/sun/awt/CustomCursor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,6 +33,7 @@ import java.awt.image.*; * * @author ThomasBall */ +@SuppressWarnings("serial") // JDK-implementation class public abstract class CustomCursor extends Cursor { protected Image image; diff --git a/jdk/src/share/classes/sun/awt/FontConfiguration.java b/jdk/src/share/classes/sun/awt/FontConfiguration.java index 5d8b35ebe39..4cdc3d80c94 100644 --- a/jdk/src/share/classes/sun/awt/FontConfiguration.java +++ b/jdk/src/share/classes/sun/awt/FontConfiguration.java @@ -2109,6 +2109,7 @@ public abstract class FontConfiguration { return ret; } + @SuppressWarnings("serial") // JDK-implementation class class FontProperties extends Properties { public synchronized Object put(Object k, Object v) { parseProperty((String)k, (String)v); diff --git a/jdk/src/share/classes/sun/awt/TimedWindowEvent.java b/jdk/src/share/classes/sun/awt/TimedWindowEvent.java index 21353f789d7..780b3d572e6 100644 --- a/jdk/src/share/classes/sun/awt/TimedWindowEvent.java +++ b/jdk/src/share/classes/sun/awt/TimedWindowEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014, 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 @@ -28,6 +28,7 @@ package sun.awt; import java.awt.event.WindowEvent; import java.awt.Window; +@SuppressWarnings("serial") // JDK-implementation class public class TimedWindowEvent extends WindowEvent { private long time; diff --git a/jdk/src/share/classes/sun/awt/dnd/SunDropTargetEvent.java b/jdk/src/share/classes/sun/awt/dnd/SunDropTargetEvent.java index aff7b8a80d6..64685e571a2 100644 --- a/jdk/src/share/classes/sun/awt/dnd/SunDropTargetEvent.java +++ b/jdk/src/share/classes/sun/awt/dnd/SunDropTargetEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,7 @@ import java.awt.Component; import java.awt.dnd.InvalidDnDOperationException; import java.awt.event.MouseEvent; +@SuppressWarnings("serial") // JDK-implementation class public class SunDropTargetEvent extends MouseEvent { public static final int MOUSE_DROPPED = MouseEvent.MOUSE_RELEASED; diff --git a/jdk/src/share/classes/sun/awt/event/IgnorePaintEvent.java b/jdk/src/share/classes/sun/awt/event/IgnorePaintEvent.java index c0d38694381..1f59869027d 100644 --- a/jdk/src/share/classes/sun/awt/event/IgnorePaintEvent.java +++ b/jdk/src/share/classes/sun/awt/event/IgnorePaintEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,7 @@ import java.awt.event.PaintEvent; * Look at javax.swing.SwingPaintEventDispatcher for more. * */ +@SuppressWarnings("serial") // JDK-implementation class public class IgnorePaintEvent extends PaintEvent { public IgnorePaintEvent(Component source, int id, Rectangle updateRect) { super(source, id, updateRect); diff --git a/jdk/src/share/classes/sun/awt/image/BadDepthException.java b/jdk/src/share/classes/sun/awt/image/BadDepthException.java index 19adf69fbe6..f9d264f22fb 100644 --- a/jdk/src/share/classes/sun/awt/image/BadDepthException.java +++ b/jdk/src/share/classes/sun/awt/image/BadDepthException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ package sun.awt.image; +@SuppressWarnings("serial") // JDK-implementation class public class BadDepthException extends Exception { public BadDepthException() { } diff --git a/jdk/src/share/classes/sun/awt/image/ImageAccessException.java b/jdk/src/share/classes/sun/awt/image/ImageAccessException.java index 43602f64b66..402e2a26caa 100644 --- a/jdk/src/share/classes/sun/awt/image/ImageAccessException.java +++ b/jdk/src/share/classes/sun/awt/image/ImageAccessException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ package sun.awt.image; +@SuppressWarnings("serial") // JDK-implementation class public class ImageAccessException extends Exception { public ImageAccessException(String s) { super(s); diff --git a/jdk/src/share/classes/sun/awt/image/ImageFormatException.java b/jdk/src/share/classes/sun/awt/image/ImageFormatException.java index 4812efe37c2..6a70d728f8f 100644 --- a/jdk/src/share/classes/sun/awt/image/ImageFormatException.java +++ b/jdk/src/share/classes/sun/awt/image/ImageFormatException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ package sun.awt.image; +@SuppressWarnings("serial") // JDK-implementation class public class ImageFormatException extends Exception { public ImageFormatException(String s) { super(s); diff --git a/jdk/src/share/classes/sun/awt/image/PNGImageDecoder.java b/jdk/src/share/classes/sun/awt/image/PNGImageDecoder.java index 69bb984c514..adbdb766da1 100644 --- a/jdk/src/share/classes/sun/awt/image/PNGImageDecoder.java +++ b/jdk/src/share/classes/sun/awt/image/PNGImageDecoder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -231,6 +231,7 @@ public class PNGImageDecoder extends ImageDecoder } return true; } + @SuppressWarnings("serial") // JDK-implementation class public class PNGException extends IOException { PNGException(String s) { super(s); } } diff --git a/jdk/src/share/classes/sun/awt/shell/DefaultShellFolder.java b/jdk/src/share/classes/sun/awt/shell/DefaultShellFolder.java index 860c980d6aa..b44776228d8 100644 --- a/jdk/src/share/classes/sun/awt/shell/DefaultShellFolder.java +++ b/jdk/src/share/classes/sun/awt/shell/DefaultShellFolder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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,7 @@ import sun.security.action.GetPropertyAction; * @author Michael Martak * @since 1.4 */ - +@SuppressWarnings("serial") // JDK-implementation class class DefaultShellFolder extends ShellFolder { /** diff --git a/jdk/src/share/classes/sun/awt/shell/ShellFolder.java b/jdk/src/share/classes/sun/awt/shell/ShellFolder.java index 630d4faa9cd..cb9459f1d41 100644 --- a/jdk/src/share/classes/sun/awt/shell/ShellFolder.java +++ b/jdk/src/share/classes/sun/awt/shell/ShellFolder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,7 +37,7 @@ import java.util.concurrent.Callable; * @author Michael Martak * @since 1.4 */ - +@SuppressWarnings("serial") // JDK-implementation class public abstract class ShellFolder extends File { private static final String COLUMN_NAME = "FileChooser.fileNameHeaderText"; private static final String COLUMN_SIZE = "FileChooser.fileSizeHeaderText"; From c4f2b88d813409eff4a9a72358ccc260c429c29b Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Mon, 3 Feb 2014 16:58:02 -0500 Subject: [PATCH 128/158] 8031737: CHECK_NULL and CHECK_EXCEPTION macros cleanup Rename CHECK_EXCEPTION macros with JNU prefix; use the defensive do {...} while (0) macro definition Reviewed-by: chegar, mchung, ksrini, lancea, alanb --- jdk/src/share/native/common/jni_util.h | 33 +++++++++++++++++++++---- jdk/src/share/native/sun/misc/Version.c | 20 +++++++-------- 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/jdk/src/share/native/common/jni_util.h b/jdk/src/share/native/common/jni_util.h index 0dab24c3392..b8d23cd1c21 100644 --- a/jdk/src/share/native/common/jni_util.h +++ b/jdk/src/share/native/common/jni_util.h @@ -279,14 +279,37 @@ JNU_NotifyAll(JNIEnv *env, jobject object); #define JNU_IsNull(env,obj) ((obj) == NULL) /************************************************************************ - * Miscellaneous utilities used by the class libraries to check for exceptions + * Miscellaneous utilities used by the class libraries to return from + * a function if a value is NULL or an exception is pending. */ -#define CHECK_NULL(x) if ((x) == NULL) return; -#define CHECK_NULL_RETURN(x, y) if ((x) == NULL) return (y); +#define CHECK_NULL(x) \ + do { \ + if ((x) == NULL) { \ + return; \ + } \ + } while (0) \ -#define CHECK_EXCEPTION(env) if ((*env)->ExceptionCheck(env)) return; -#define CHECK_EXCEPTION_RETURN(env, y) if ((*env)->ExceptionCheck(env)) return (y); +#define CHECK_NULL_RETURN(x, y) \ + do { \ + if ((x) == NULL) { \ + return (y); \ + } \ + } while (0) \ + +#define JNU_CHECK_EXCEPTION(env) \ + do { \ + if ((*env)->ExceptionCheck(env)) { \ + return; \ + } \ + } while (0) \ + +#define JNU_CHECK_EXCEPTION_RETURN(env, y) \ + do { \ + if ((*env)->ExceptionCheck(env)) { \ + return (y); \ + } \ + } while (0) /************************************************************************ * Debugging utilities diff --git a/jdk/src/share/native/sun/misc/Version.c b/jdk/src/share/native/sun/misc/Version.c index d37010e15d5..4dbcf1c8089 100644 --- a/jdk/src/share/native/sun/misc/Version.c +++ b/jdk/src/share/native/sun/misc/Version.c @@ -60,15 +60,15 @@ Java_sun_misc_Version_getJvmVersionInfo(JNIEnv *env, jclass cls) (*func_p)(env, &info, sizeof(info)); setStaticIntField(env, cls, "jvm_major_version", JVM_VERSION_MAJOR(info.jvm_version)); - CHECK_EXCEPTION_RETURN(env, JNI_FALSE); + JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); setStaticIntField(env, cls, "jvm_minor_version", JVM_VERSION_MINOR(info.jvm_version)); - CHECK_EXCEPTION_RETURN(env, JNI_FALSE); + JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); setStaticIntField(env, cls, "jvm_micro_version", JVM_VERSION_MICRO(info.jvm_version)); - CHECK_EXCEPTION_RETURN(env, JNI_FALSE); + JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); setStaticIntField(env, cls, "jvm_build_number", JVM_VERSION_BUILD(info.jvm_version)); - CHECK_EXCEPTION_RETURN(env, JNI_FALSE); + JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); setStaticIntField(env, cls, "jvm_update_version", info.update_version); - CHECK_EXCEPTION_RETURN(env, JNI_FALSE); + JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); jvm_special_version = info.special_update_version; return JNI_TRUE; @@ -91,15 +91,15 @@ Java_sun_misc_Version_getJdkVersionInfo(JNIEnv *env, jclass cls) JDK_GetVersionInfo0(&info, sizeof(info)); setStaticIntField(env, cls, "jdk_major_version", JDK_VERSION_MAJOR(info.jdk_version)); - CHECK_EXCEPTION(env); + JNU_CHECK_EXCEPTION(env); setStaticIntField(env, cls, "jdk_minor_version", JDK_VERSION_MINOR(info.jdk_version)); - CHECK_EXCEPTION(env); + JNU_CHECK_EXCEPTION(env); setStaticIntField(env, cls, "jdk_micro_version", JDK_VERSION_MICRO(info.jdk_version)); - CHECK_EXCEPTION(env); + JNU_CHECK_EXCEPTION(env); setStaticIntField(env, cls, "jdk_build_number", JDK_VERSION_BUILD(info.jdk_version)); - CHECK_EXCEPTION(env); + JNU_CHECK_EXCEPTION(env); setStaticIntField(env, cls, "jdk_update_version", info.update_version); - CHECK_EXCEPTION(env); + JNU_CHECK_EXCEPTION(env); jdk_special_version = info.special_update_version; } From a80e3ed0ee72e396578df5bdfce82041780d8035 Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Mon, 3 Feb 2014 22:26:26 -0800 Subject: [PATCH 129/158] 8033527: Fix raw type lint warning in sun.nio.ch Reviewed-by: henryjen, mchung --- jdk/src/share/classes/sun/nio/ch/Reflect.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jdk/src/share/classes/sun/nio/ch/Reflect.java b/jdk/src/share/classes/sun/nio/ch/Reflect.java index 3ef3d9309f0..fc5276c53c4 100644 --- a/jdk/src/share/classes/sun/nio/ch/Reflect.java +++ b/jdk/src/share/classes/sun/nio/ch/Reflect.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -75,7 +75,7 @@ class Reflect { // package-private static Method lookupMethod(String className, String methodName, - Class... paramTypes) + Class... paramTypes) { try { Class cl = Class.forName(className); From 6c54a7ef11b18d547db38372ab0490f6ab7acde4 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Tue, 4 Feb 2014 10:00:24 +0100 Subject: [PATCH 130/158] 8033236: Update GensrcCharsetMapping.gmk to build-infra standards Reviewed-by: erikj, mduigou, sherman --- jdk/make/GenerateSources.gmk | 1 + jdk/make/Tools.gmk | 2 +- .../data/charsetmapping}/standard-charsets | 7 +- jdk/make/gensrc/GensrcCharsetMapping.gmk | 181 ++++++++++++------ jdk/make/scripts/genCharsetProvider.sh | 131 ------------- .../classes/build/tools/hasher/Hasher.java | 15 +- .../sun/nio/cs/StandardCharsets.java.template | 48 +++++ 7 files changed, 184 insertions(+), 201 deletions(-) rename jdk/{src/share/classes/sun/nio/cs => make/data/charsetmapping}/standard-charsets (97%) delete mode 100644 jdk/make/scripts/genCharsetProvider.sh create mode 100644 jdk/src/share/classes/sun/nio/cs/StandardCharsets.java.template diff --git a/jdk/make/GenerateSources.gmk b/jdk/make/GenerateSources.gmk index ba443f7da52..732c0c83f8a 100644 --- a/jdk/make/GenerateSources.gmk +++ b/jdk/make/GenerateSources.gmk @@ -29,6 +29,7 @@ include $(SPEC) include MakeBase.gmk include JavaCompilation.gmk include NativeCompilation.gmk +include TextFileProcessing.gmk # Setup the java compilers for the JDK build. include Setup.gmk diff --git a/jdk/make/Tools.gmk b/jdk/make/Tools.gmk index 1c3b791f621..2336ed4ce98 100644 --- a/jdk/make/Tools.gmk +++ b/jdk/make/Tools.gmk @@ -102,7 +102,7 @@ TOOL_JDWPGEN = $(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses build.tools.jdwpgen.Main # TODO: Lots of files in jdk/make/tools/CharsetMapping dir TOOL_CHARSETMAPPING = $(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \ - build.tools.charsetmapping.Main + build.tools.charsetmapping.Main $(LOG_INFO) TOOL_SPP = $(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses build.tools.spp.Spp diff --git a/jdk/src/share/classes/sun/nio/cs/standard-charsets b/jdk/make/data/charsetmapping/standard-charsets similarity index 97% rename from jdk/src/share/classes/sun/nio/cs/standard-charsets rename to jdk/make/data/charsetmapping/standard-charsets index 0785a4edafc..f9f4db12c6a 100644 --- a/jdk/src/share/classes/sun/nio/cs/standard-charsets +++ b/jdk/make/data/charsetmapping/standard-charsets @@ -1,5 +1,5 @@ # -# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -34,11 +34,6 @@ # compared to the charsets packaged in "ExtendedCharsets" provider, # which is lazy initialized. -# This year should only change if the generated source is modified. -copyright 2000, 2007, -package sun.nio.cs -class StandardCharsets - charset US-ASCII US_ASCII # IANA aliases diff --git a/jdk/make/gensrc/GensrcCharsetMapping.gmk b/jdk/make/gensrc/GensrcCharsetMapping.gmk index 5624ebfae4b..821f4e03071 100644 --- a/jdk/make/gensrc/GensrcCharsetMapping.gmk +++ b/jdk/make/gensrc/GensrcCharsetMapping.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2014, 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,80 +25,151 @@ GENSRC_CHARSETMAPPING := -GENSRC_TMP := $(JDK_OUTPUTDIR)/gensrc -GENSRC_DST := $(JDK_OUTPUTDIR)/gensrc/sun/nio/cs - -GENSRC_DATA := $(JDK_TOPDIR)/make/data/charsetmapping -GENSRC_JAVA_SRC := $(JDK_TOPDIR)/make/src/classes/build/tools/charsetmapping - -GENSRC_TEMPLATES := $(GENSRC_DATA)/SingleByte-X.java.template $(GENSRC_DATA)/DoubleByte-X.java.template +CHARSET_DATA_DIR := $(JDK_TOPDIR)/make/data/charsetmapping ### - -$(GENSRC_TMP)/_the.charsetmapping.dir: - $(ECHO) Generating charsetmapping classes - $(MKDIR) -p $(GENSRC_DST)/ext - $(TOUCH) $@ - +### Generate files using the charsetmapping tool ### -GENSRC_SB := $(GENSRC_TMP)/_the.charsetmapping.sbcs +CHARSET_GENSRC_JAVA_DIR := $(JDK_OUTPUTDIR)/gensrc/sun/nio/cs +CHARSET_DONE := $(CHARSET_GENSRC_JAVA_DIR)/_the.charsetmapping +CHARSET_COPYRIGHT_HEADER_BASE := $(JDK_TOPDIR)/make/src/classes/build/tools/charsetmapping +CHARSET_TEMPLATES := \ + $(CHARSET_DATA_DIR)/SingleByte-X.java.template \ + $(CHARSET_DATA_DIR)/DoubleByte-X.java.template -$(GENSRC_SB): $(GENSRC_DATA)/sbcs $(GENSRC_TEMPLATES) $(GENSRC_TMP)/_the.charsetmapping.dir - $(TOOL_CHARSETMAPPING) $(LOG_INFO) $(GENSRC_DATA) $(GENSRC_DST) sbcs - $(TOUCH) $@ +# This target should be referenced using the order-only operator (|) +$(CHARSET_GENSRC_JAVA_DIR)/ext: + $(ECHO) "Generating charset mappings" + $(MKDIR) -p $(CHARSET_GENSRC_JAVA_DIR)/ext -GENSRC_CHARSETMAPPING += $(GENSRC_SB) +$(CHARSET_DONE)-sbcs: $(CHARSET_DATA_DIR)/sbcs \ + $(CHARSET_TEMPLATES) $(BUILD_TOOLS) | $(CHARSET_GENSRC_JAVA_DIR)/ext + $(TOOL_CHARSETMAPPING) $(CHARSET_DATA_DIR) $(CHARSET_GENSRC_JAVA_DIR) sbcs + $(TOUCH) '$@' + +$(CHARSET_DONE)-extsbcs: $(CHARSET_DATA_DIR)/extsbcs \ + $(CHARSET_DONE)-sbcs $(CHARSET_TEMPLATES) $(BUILD_TOOLS) + $(TOOL_CHARSETMAPPING) $(CHARSET_DATA_DIR) $(CHARSET_GENSRC_JAVA_DIR)/ext extsbcs + $(TOUCH) '$@' + +$(CHARSET_DONE)-dbcs: $(CHARSET_DATA_DIR)/dbcs \ + $(CHARSET_DONE)-sbcs $(CHARSET_TEMPLATES) $(BUILD_TOOLS) + $(TOOL_CHARSETMAPPING) $(CHARSET_DATA_DIR) $(CHARSET_GENSRC_JAVA_DIR)/ext dbcs + $(TOUCH) '$@' + +$(CHARSET_DONE)-hkscs: $(CHARSET_COPYRIGHT_HEADER_BASE)/HKSCS.java \ + $(CHARSET_DONE)-sbcs $(BUILD_TOOLS) + $(TOOL_CHARSETMAPPING) $(CHARSET_DATA_DIR) $(CHARSET_GENSRC_JAVA_DIR)/ext hkscs '$<' + $(TOUCH) '$@' + +$(CHARSET_DONE)-euctw: $(CHARSET_COPYRIGHT_HEADER_BASE)/EUC_TW.java \ + $(CHARSET_DONE)-sbcs $(BUILD_TOOLS) + $(TOOL_CHARSETMAPPING) $(CHARSET_DATA_DIR) $(CHARSET_GENSRC_JAVA_DIR)/ext euctw '$<' + $(TOUCH) '$@' + +$(CHARSET_GENSRC_JAVA_DIR)/ext/sjis0213.dat: $(CHARSET_DATA_DIR)/sjis0213.map \ + $(CHARSET_DONE)-sbcs $(BUILD_TOOLS) + $(TOOL_CHARSETMAPPING) '$<' '$@' sjis0213 + +GENSRC_CHARSETMAPPING += \ + $(CHARSET_DONE)-sbcs \ + $(CHARSET_DONE)-extsbcs \ + $(CHARSET_DONE)-dbcs \ + $(CHARSET_DONE)-hkscs \ + $(CHARSET_DONE)-euctw \ + $(CHARSET_GENSRC_JAVA_DIR)/ext/sjis0213.dat \ + # ### - -$(GENSRC_DST)/ext/sjis0213.dat: $(GENSRC_DATA)/sjis0213.map $(GENSRC_SB) - $(TOOL_CHARSETMAPPING) $(LOG_INFO) $< $@ sjis0213 - -GENSRC_CHARSETMAPPING += $(GENSRC_DST)/ext/sjis0213.dat - +### Generate the sun/nio/cs/StandardCharsets.java file ### -$(GENSRC_DST)/ext/EUC_TWMapping.java: $(GENSRC_JAVA_SRC)/EUC_TW.java $(GENSRC_SB) - $(TOOL_CHARSETMAPPING) $(LOG_INFO) $(GENSRC_DATA) $(GENSRC_DST)/ext euctw $(GENSRC_JAVA_SRC)/EUC_TW.java +CHARSET_STANDARD_GENSRC_DIR := $(JDK_OUTPUTDIR)/gensrc/standardcharsets +CHARSET_STANDARD_DATA := $(CHARSET_DATA_DIR)/standard-charsets +CHARSET_STANDARD_JAVA := sun/nio/cs/StandardCharsets.java -GENSRC_CHARSETMAPPING += $(GENSRC_DST)/ext/EUC_TWMapping.java +CHARSET_ALIASES_TABLES_AWK := ' \ + BEGIN { n = 1; m = 1; } \ + /^[ \t]*charset / { \ + csn = $$2; cln = $$3; \ + lcsn = tolower(csn); \ + lcsns[n++] = lcsn; \ + csns[lcsn] = csn; \ + classMap[lcsn] = cln; \ + if (n > 2) \ + printf " };\n\n"; \ + printf " static final String[] aliases_%s = new String[] {\n", cln; \ + } \ + /^[ \t]*alias / { \ + acsns[m++] = tolower($$2); \ + aliasMap[tolower($$2)] = lcsn; \ + printf " \"%s\",\n", $$2; \ + } \ + END { \ + printf " };\n\n"; \ + } ' -### +CHARSET_ALIASES_MAP_AWK := ' \ + /^[ \t]*charset / { \ + csn = $$2; \ + lcsn = tolower(csn); \ + } \ + /^[ \t]*alias / { \ + an = tolower($$2); \ + printf "%-20s \"%s\"\n", an, lcsn; \ + } ' -$(GENSRC_DST)/ext/HKSCSMapping.java: $(GENSRC_JAVA_SRC)/HKSCS.java $(GENSRC_SB) - $(TOOL_CHARSETMAPPING) $(LOG_INFO) $(GENSRC_DATA) $(GENSRC_DST)/ext hkscs $(GENSRC_JAVA_SRC)/HKSCS.java +CHARSET_CLASSES_MAP_AWK := ' \ + /^[ \t]*charset / { \ + csn = $$2; cln = $$3; \ + lcsn = tolower(csn); \ + printf "%-20s \"%s\"\n", lcsn, cln; \ + } ' -GENSRC_CHARSETMAPPING += $(GENSRC_DST)/ext/HKSCSMapping.java +# This target should be referenced using the order-only operator (|) +$(CHARSET_STANDARD_GENSRC_DIR): + $(MKDIR) -p '$@' -### +$(CHARSET_STANDARD_GENSRC_DIR)/aliases-tables.java.snippet: $(CHARSET_STANDARD_DATA) \ + | $(CHARSET_STANDARD_GENSRC_DIR) + $(NAWK) < '$<' > '$@' $(CHARSET_ALIASES_TABLES_AWK) -$(GENSRC_TMP)/gensrc_the.charsetmapping.extsbcs: $(GENSRC_DATA)/extsbcs $(GENSRC_TEMPLATES) $(GENSRC_SB) - $(TOOL_CHARSETMAPPING) $(GENSRC_DATA) $(LOG_INFO) $(GENSRC_DST)/ext extsbcs - $(TOUCH) $@ +$(CHARSET_STANDARD_GENSRC_DIR)/aliases-map: $(CHARSET_STANDARD_DATA) \ + | $(CHARSET_STANDARD_GENSRC_DIR) + $(NAWK) < '$<' > '$@' $(CHARSET_ALIASES_MAP_AWK) -GENSRC_CHARSETMAPPING += $(GENSRC_TMP)/gensrc_the.charsetmapping.extsbcs +$(CHARSET_STANDARD_GENSRC_DIR)/classes-map: $(CHARSET_STANDARD_DATA) \ + | $(CHARSET_STANDARD_GENSRC_DIR) + $(NAWK) < '$<' > '$@' $(CHARSET_CLASSES_MAP_AWK) -### +$(CHARSET_STANDARD_GENSRC_DIR)/aliases-map.java.snippet: $(CHARSET_STANDARD_GENSRC_DIR)/aliases-map \ + $(BUILD_TOOLS) | $(CHARSET_STANDARD_GENSRC_DIR) + $(TOOL_HASHER) -i Aliases < '$<' > '$@' -$(GENSRC_TMP)/gensrc_the.charsetmapping.dbcs: $(GENSRC_DATA)/dbcs $(GENSRC_TEMPLATES) $(GENSRC_SB) - $(TOOL_CHARSETMAPPING) $(GENSRC_DATA) $(LOG_INFO) $(GENSRC_DST)/ext dbcs - $(TOUCH) $@ +$(CHARSET_STANDARD_GENSRC_DIR)/classes-map.java.snippet: $(CHARSET_STANDARD_GENSRC_DIR)/classes-map \ + $(BUILD_TOOLS) | $(CHARSET_STANDARD_GENSRC_DIR) + $(TOOL_HASHER) -i Classes < '$<' > '$@' -GENSRC_CHARSETMAPPING += $(GENSRC_TMP)/gensrc_the.charsetmapping.dbcs +$(CHARSET_STANDARD_GENSRC_DIR)/cache-map.java.snippet: $(CHARSET_STANDARD_GENSRC_DIR)/classes-map \ + $(BUILD_TOOLS) | $(CHARSET_STANDARD_GENSRC_DIR) + $(TOOL_HASHER) -i -e Cache -t Charset < '$<' > '$@' -### +$(eval $(call SetupTextFileProcessing, BUILD_CHARSET_STANDARD, \ + SOURCE_FILES := $(JDK_TOPDIR)/src/share/classes/$(CHARSET_STANDARD_JAVA).template, \ + OUTPUT_FILE := $(JDK_OUTPUTDIR)/gensrc/$(CHARSET_STANDARD_JAVA), \ + INCLUDES := \ + _INCLUDE_ALIASES_TABLES_ => $(CHARSET_STANDARD_GENSRC_DIR)/aliases-tables.java.snippet ; \ + _INCLUDE_ALIASES_MAP_ => $(CHARSET_STANDARD_GENSRC_DIR)/aliases-map.java.snippet ; \ + _INCLUDE_CLASSES_MAP_ => $(CHARSET_STANDARD_GENSRC_DIR)/classes-map.java.snippet ; \ + _INCLUDE_CACHE_MAP_ => $(CHARSET_STANDARD_GENSRC_DIR)/cache-map.java.snippet ; , \ +)) -GENSRC_CHARSET_PROVIDER_CMD := $(JDK_TOPDIR)/make/scripts/genCharsetProvider.sh +# Processing of template depends on the snippets being generated first +$(BUILD_CHARSET_STANDARD): \ + $(CHARSET_STANDARD_GENSRC_DIR)/aliases-tables.java.snippet \ + $(CHARSET_STANDARD_GENSRC_DIR)/aliases-map.java.snippet \ + $(CHARSET_STANDARD_GENSRC_DIR)/classes-map.java.snippet \ + $(CHARSET_STANDARD_GENSRC_DIR)/cache-map.java.snippet -$(GENSRC_DST)/StandardCharsets.java: $(JDK_TOPDIR)/src/share/classes/sun/nio/cs/standard-charsets \ - $(GENSRC_CHARSET_PROVIDER_CMD) \ - $(GENSRC_TMP)/_the.charsetmapping.dir - NAWK="$(NAWK)" TEMPDIR="$(GENSRC_TMP)" SH="$(SH)" \ - HASHER="$(TOOL_HASHER)" \ - SCRIPTS="$(JDK_TOPDIR)/make/scripts" \ - $(SH) -e $(GENSRC_CHARSET_PROVIDER_CMD) $(LOG_INFO) $< $(@D) - -GENSRC_CHARSETMAPPING += $(GENSRC_DST)/StandardCharsets.java - -$(GENSRC_CHARSETMAPPING): $(BUILD_TOOLS) +GENSRC_CHARSETMAPPING += $(BUILD_CHARSET_STANDARD) diff --git a/jdk/make/scripts/genCharsetProvider.sh b/jdk/make/scripts/genCharsetProvider.sh deleted file mode 100644 index d14527483a4..00000000000 --- a/jdk/make/scripts/genCharsetProvider.sh +++ /dev/null @@ -1,131 +0,0 @@ -#! /bin/sh - -# -# Copyright (c) 2004, 2012, 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. -# - -# Generate a charset provider class - -# Required environment variables -# NAWK awk tool -# TEMPDIR temporary directory -# HASHER Hasher program - -SPEC=$1; shift -DST=$1; shift - -eval `$NAWK <$SPEC ' - /^[ \t]*copyright / { printf "COPYRIGHT_YEARS=\"%s %s\"\n", $2, $3; } - /^[ \t]*package / { printf "PKG=%s\n", $2; } - /^[ \t]*class / { printf "CLASS=%s\n", $2; } -'` - -OUT=$DST/$CLASS.java -echo '-->' $OUT - - -# Header -# - -$SH ${SCRIPTS}/addNotices.sh "$COPYRIGHT_YEARS" > $OUT - -cat <<__END__ >>$OUT - -// -- This file was mechanically generated: Do not edit! -- // - -package $PKG; - -import java.nio.charset.*; - - -public class $CLASS - extends FastCharsetProvider -{ - -__END__ - - -# Alias tables -# -$NAWK <$SPEC >>$OUT ' - BEGIN { n = 1; m = 1; } - - /^[ \t]*charset / { - csn = $2; cln = $3; - lcsn = tolower(csn); - lcsns[n++] = lcsn; - csns[lcsn] = csn; - classMap[lcsn] = cln; - if (n > 2) - printf " };\n\n"; - printf " static final String[] aliases_%s = new String[] {\n", cln; - } - - /^[ \t]*alias / { - acsns[m++] = tolower($2); - aliasMap[tolower($2)] = lcsn; - printf " \"%s\",\n", $2; - } - - END { - printf " };\n\n"; - } -' - - -# Prehashed alias and class maps -# -$NAWK <$SPEC >$TEMPDIR/aliases ' - /^[ \t]*charset / { - csn = $2; - lcsn = tolower(csn); - } - /^[ \t]*alias / { - an = tolower($2); - printf "%-20s \"%s\"\n", an, lcsn; - } -' - -$NAWK <$SPEC >$TEMPDIR/classes ' - /^[ \t]*charset / { - csn = $2; cln = $3; - lcsn = tolower(csn); - printf "%-20s \"%s\"\n", lcsn, cln; - } -' - -${HASHER} -i Aliases <$TEMPDIR/aliases >>$OUT -${HASHER} -i Classes <$TEMPDIR/classes >>$OUT -${HASHER} -i -e Cache -t Charset <$TEMPDIR/classes >>$OUT - - -# Constructor -# -cat <<__END__ >>$OUT - public $CLASS() { - super("$PKG", new Aliases(), new Classes(), new Cache()); - } - -} -__END__ diff --git a/jdk/make/src/classes/build/tools/hasher/Hasher.java b/jdk/make/src/classes/build/tools/hasher/Hasher.java index bf041976ef2..058655e767c 100644 --- a/jdk/make/src/classes/build/tools/hasher/Hasher.java +++ b/jdk/make/src/classes/build/tools/hasher/Hasher.java @@ -43,9 +43,6 @@ import java.util.*; public class Hasher { - // This class cannot, sadly, make use of 1.5 features since it must be - // compiled and run with the bootstrap JDK, which is 1.4.2. - static final PrintStream out = System.out; static final PrintStream err = System.err; @@ -184,11 +181,13 @@ public class Hasher { if (md <= maxDepth) { // Success out.flush(); - if (cln != null) - err.print(cln + ": "); - err.println("Table size " + (1 << nb) + " (" + nb + " bits)" - + ", shift " + shift - + ", max chain depth " + md); + if (verbose) { + if (cln != null) + err.print(cln + ": "); + err.println("Table size " + (1 << nb) + " (" + nb + " bits)" + + ", shift " + shift + + ", max chain depth " + md); + } return this; } } diff --git a/jdk/src/share/classes/sun/nio/cs/StandardCharsets.java.template b/jdk/src/share/classes/sun/nio/cs/StandardCharsets.java.template new file mode 100644 index 00000000000..468934b017a --- /dev/null +++ b/jdk/src/share/classes/sun/nio/cs/StandardCharsets.java.template @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +// -- This file was mechanically generated: Do not edit! -- // + +package sun.nio.cs; + +import java.nio.charset.*; + + +public class StandardCharsets + extends FastCharsetProvider +{ + + _INCLUDE_ALIASES_TABLES_ + _INCLUDE_ALIASES_MAP_ + _INCLUDE_CLASSES_MAP_ + _INCLUDE_CACHE_MAP_ + + public StandardCharsets() { + super("sun.nio.cs", new Aliases(), new Classes(), new Cache()); + } + +} From f9c28e97a25ae0a75dd77ffd2b11c81f0a32e321 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Tue, 4 Feb 2014 10:01:20 +0100 Subject: [PATCH 131/158] 8033236: Update GensrcCharsetMapping.gmk to build-infra standards Reviewed-by: erikj, mduigou, sherman --- common/autoconf/spec.gmk.in | 2 + make/common/TextFileProcessing.gmk | 234 +++++++++++++++++++++++++++++ 2 files changed, 236 insertions(+) create mode 100644 make/common/TextFileProcessing.gmk diff --git a/common/autoconf/spec.gmk.in b/common/autoconf/spec.gmk.in index 4342d1517ee..b92db9125da 100644 --- a/common/autoconf/spec.gmk.in +++ b/common/autoconf/spec.gmk.in @@ -37,6 +37,8 @@ X:= SPACE:=$(X) $(X) COMMA:=, HASH:=\# +LEFT_PAREN:=( +RIGHT_PAREN:=) SQUOTE:=' #' DQUOTE:=" diff --git a/make/common/TextFileProcessing.gmk b/make/common/TextFileProcessing.gmk new file mode 100644 index 00000000000..f5101626b0d --- /dev/null +++ b/make/common/TextFileProcessing.gmk @@ -0,0 +1,234 @@ +# +# Copyright (c) 2013, 2014 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 EvalDebugWrapper + $(if $(DEBUG_$1), + $(info -------- <<< Begin expansion of $1) + $(info $2) + $(info -------- >>> End expansion of $1) + ) + + $2 +endef + +# Helper function for SetupTextFileProcessing; adds a rule for a single file +# to be processed. +# param 1 = The namespace argument, e.g. BUILD_VERSION_FILE +# param 2 = the source file name (full path) +# param 3 = the target base directory +# param 4 = the target file name (possibly with a partial path) +define SetupSingleTextFileForProcessing + $(strip $3)/$(strip $4): $2 + $(ECHO) $(LOG_INFO) "Processing $(strip $4)" + $(MKDIR) -p '$$(@D)' + $(RM) '$$@' '$$@.includes.tmp' '$$@.replacements.tmp' + $$($1_INCLUDES_COMMAND_LINE) < '$$<' > '$$@.includes.tmp' + $$($1_REPLACEMENTS_COMMAND_LINE) < '$$@.includes.tmp' > '$$@.replacements.tmp' + $(RM) '$$@.includes.tmp' + $(MV) '$$@.replacements.tmp' '$$@' + + $1 += $(strip $3)/$(strip $4) +endef + +# Setup a text file for processing, in which specified markers are replaced with +# a given text, or with the contents of a given file. +# +# param 1 is the name space for this setup, e.g. BUILD_VERSION_FILE +# param 2, 3, .. etc are named args: +# SOURCE_DIRS one or more directory roots to search for files to process +# SOURCE_FILES complete paths to one or more files to process +# OUTPUT_DIR the directory where we store the processed files. +# OUTPUT_FILE the name of the resulting file. Only allowed if processing a +# single file. +# SOURCE_BASE_DIR a common root to all SOURCE_DIRS. +# If specified, files will keep the path relative to the base in the +# OUTPUT_DIR. Otherwise, the hierarchy will be flattened into the OUTPUT_DIR. +# INCLUDE_FILES only include files matching these patterns (used only with +# SOURCE_DIRS) +# EXCLUDE_FILES exclude files matching these patterns (used only with +# SOURCE_DIRS) +# INCLUDES replace the occurances of a pattern with the contents of a file; +# one or more such include pattern, using the syntax: +# PLACEHOLDER => FILE_TO_INCLUDE ; ... +# Each PLACEHOLDER must be on a single, otherwise empty line (whitespace +# padding is allowed). +# REPLACEMENTS one or more text replacement patterns, using the syntax: +# PATTERN => REPLACEMENT_TEXT ; ... +# +# At least one of INCLUDES or REPLACEMENTS must be present. If both are +# present, then the includes will be processed first, and replacements will be +# done on the included fragments as well. +# +define SetupTextFileProcessing + $(if $(16),$(error Internal makefile error: Too many arguments to SetupTextFileProcessing, please update TextFileProcessing.gmk)) + $(call EvalDebugWrapper,$(strip $1),$(call SetupTextFileProcessingInner,$(strip $1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15))) +endef + +define SetupTextFileProcessingInner + $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15, $(if $(strip $($i)),$1_$(strip $($i)))$(NEWLINE)) + $(call LogSetupMacroEntry,SetupTextFileProcessing($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15)) + $(if $(16),$(error Internal makefile error: Too many arguments to SetupTextFileProcessing, please update TextFileProcessing.gmk)) + + ifeq ($$($1_REPLACEMENTS)$$($1_INCLUDES),) + $$(error At least one of REPLACEMENTS or INCLUDES are required for $1) + endif + + ifneq ($$($1_SOURCE_FILES),) + ifneq ($$($1_SOURCE_DIRS),) + $$(error Cannot use both SOURCE_FILES and SOURCE_DIRS (in $1)) + endif + ifneq ($$($1_SOURCE_BASE_DIR),) + $$(error Cannot use SOURCE_BASE_DIR without SOURCE_DIRS (in $1)) + endif + ifneq ($$($1_EXCLUDE_FILES)$$($1_INCLUDE_FILES),) + $$(error Cannot INCLUDE/EXCLUDE_FILES with SOURCE_FILES (in $1)) + endif + else + # Find all files in the source trees. Sort to remove duplicates. + $$(foreach src, $$($1_SOURCE_DIRS), $$(if $$(wildcard $$(src)), , \ + $$(error SOURCE_DIRS contains missing directory $$(src) (in $1)))) + ifneq ($$($1_SOURCE_BASE_DIR),) + $$(foreach src, $$($1_SOURCE_DIRS), \ + $$(if $$(findstring $$($1_SOURCE_BASE_DIR), $$(src)), , \ + $$(error SOURCE_DIRS contains directory $$(src) outside \ + SOURCE_BASE_DIR $$($1_SOURCE_BASE_DIR) (in $1)))) + endif + $1_SOURCE_FILES := $$(sort $$(call CacheFind,$$($1_SOURCE_DIRS))) + $1_EXCLUDE_FILES:=$$(foreach i,$$($1_SOURCE_DIRS),$$(addprefix $$i/,$$($1_EXCLUDE_FILES))) + $1_INCLUDE_FILES:=$$(foreach i,$$($1_SOURCE_DIRS),$$(addprefix $$i/,$$($1_INCLUDE_FILES))) + $1_SOURCE_FILES := $$(filter-out $$($1_EXCLUDE_FILES),$$($1_SOURCE_FILES)) + ifneq (,$$(strip $$($1_INCLUDE_FILES))) + $1_SOURCE_FILES := $$(filter $$($1_INCLUDE_FILES),$$($1_SOURCE_FILES)) + endif + ifeq (,$$($1_SOURCE_FILES)) + $$(info No sources found for $1 when looking inside the dirs $$($1_SRC)) + endif + endif + + ifneq ($$($1_REPLACEMENTS),) + # We have a replacement request, prepare it for the recipe + ifneq ($$(findstring /,$$($1_REPLACEMENTS)),) + # Cannot use / as separator + ifneq ($$(findstring @,$$($1_REPLACEMENTS)),) + # Cannot use @ as separator + ifneq ($$(findstring |,$$($1_REPLACEMENTS)),) + # Cannot use | as separator + ifneq ($$(findstring !,$$($1_REPLACEMENTS)),) + # Cannot use ! as separator. Give up. + $$(error No suitable sed separator can be found for $1. Tested /, @, | and !) + else + $1_SEP := ! + endif + else + $1_SEP := | + endif + else + $1_SEP := @ + endif + else + $1_SEP := / + endif + + # If we have a trailing "=>" (i.e. last rule replaces with empty, and is not + # terminated by a ;), add a trailing ; to minimize the number of corner + # cases in the hairy subst expression.. + ifeq ($$(lastword $$($1_REPLACEMENTS)), =>) + $1_REPLACEMENTS += ; + endif + + # If we have a trailing ";", add a dummy replacement, since there is no easy + # way to delete the last word in make. + ifeq ($$(lastword $$($1_REPLACEMENTS)), ;) + $1_REPLACEMENTS += DUMMY_REPLACEMENT => DUMMY_REPLACEMENT + endif + + # Convert the REPLACEMENTS syntax ( A => B ; C => D ; ...) to a sed command + # line (-e "s/A/B/" -e "s/C/D/" ...), basically by replacing '=>' with '/' + # and ';' with '/" -e "s/', and adjusting for edge cases. + $1_REPLACEMENTS_COMMAND_LINE := $(SED) -e "s$$($1_SEP)$$(subst $$(SPACE);$$(SPACE),$$($1_SEP)" \ + -e "s$$($1_SEP),$$(subst $$(SPACE)=>$$(SPACE),$$($1_SEP),$$(subst $$(SPACE)=>$$(SPACE);$$(SPACE),//" \ + -e "s$$($1_SEP),$$(strip $$($1_REPLACEMENTS)))))$$($1_SEP)" + else + # We don't have any replacements, just pipe the file through cat. + $1_REPLACEMENTS_COMMAND_LINE := $(CAT) + endif + + ifneq ($$($1_INCLUDES),) + # We have a include request, prepare it for the recipe. + # Convert an INCLUDE like this PATTERN_1 => file1 ; PATTERN_2 => file2 ; + # into an awk script fragment like this: + # { + # if (matches("PATTERN_1")) { include("file1") } else + # if (matches("PATTERN_2")) { include("file2") } else + # print + # } + + $1_INCLUDES_HEADER_AWK := \ + function matches(pattern) { return ($$$$0 ~ "^[ \t]*" pattern "[ \t]*$$$$") } \ + function include(filename) { while ((getline < filename) == 1) print ; close(filename) } + $1_INCLUDES_PARTIAL_AWK := $$(subst $$(SPACE);,,$$(subst $$(SPACE)=>$$(SPACE),"$$(RIGHT_PAREN)$$(RIGHT_PAREN) \ + { include$$(LEFT_PAREN)",$$(subst $$(SPACE);$$(SPACE),"$$(RIGHT_PAREN) } \ + else if $$(LEFT_PAREN)matches$$(LEFT_PAREN)",$$(strip $$($1_INCLUDES))))) + $1_INCLUDES_COMMAND_LINE := $(NAWK) '$$($1_INCLUDES_HEADER_AWK) \ + { if (matches("$$($1_INCLUDES_PARTIAL_AWK)") } else print }' + else + # We don't have any includes, just pipe the file through cat. + $1_INCLUDES_COMMAND_LINE := $(CAT) + endif + + # Reset target list before populating it + $1 := + + ifneq ($$($1_OUTPUT_FILE),) + ifneq ($$(words $$($1_SOURCE_FILES)), 1) + $$(error Cannot use OUTPUT_FILE for more than one source file (in $1)) + endif + + # Note that $1 is space sensitive and must disobey whitespace rules + $$(eval $$(call SetupSingleTextFileForProcessing,$1, $$($1_SOURCE_FILES), \ + $$(dir $$($1_OUTPUT_FILE)), $$(notdir $$($1_OUTPUT_FILE)))) + else + ifeq ($$($1_OUTPUT_DIR),) + $$(error Neither OUTPUT_FILE nor OUTPUT_DIR was specified (in $1)) + endif + + # Now call add_native_source for each source file we are going to process. + ifeq ($$($1_SOURCE_BASE_DIR),) + # With no base dir specified, put all files in target dir, flattening any + # hierarchies. Note that $1 is space sensitive and must disobey whitespace + # rules. + $$(foreach src, $$($1_SOURCE_FILES), \ + $$(eval $$(call SetupSingleTextFileForProcessing,$1, $$(src), \ + $$($1_OUTPUT_DIR), $$(notdir $$(src))))) + else + # With a base dir, extract the relative portion of the path. Note that $1 + # is space sensitive and must disobey whitespace rules, and so is the + # arguments to patsubst. + $$(foreach src, $$($1_SOURCE_FILES), \ + $$(eval $$(call SetupSingleTextFileForProcessing,$1, $$(src), \ + $$($1_OUTPUT_DIR), $$(patsubst $$($1_SOURCE_BASE_DIR)/%,%,$$(src))))) + endif + endif +endef From fbe3b00b09724cae6edb1f15b77636c09605717b Mon Sep 17 00:00:00 2001 From: Michael McMahon Date: Tue, 4 Feb 2014 11:31:27 +0000 Subject: [PATCH 132/158] 8028725: [Parfait] warnings from b116 for jdk.src.solaris.native.java.net: JNI pending exceptions Reviewed-by: alanb --- jdk/src/solaris/native/java/net/Inet6AddressImpl.c | 2 ++ jdk/src/windows/native/java/net/Inet6AddressImpl.c | 1 + 2 files changed, 3 insertions(+) diff --git a/jdk/src/solaris/native/java/net/Inet6AddressImpl.c b/jdk/src/solaris/native/java/net/Inet6AddressImpl.c index 7ac26c0cbb6..1e4e7d684d1 100644 --- a/jdk/src/solaris/native/java/net/Inet6AddressImpl.c +++ b/jdk/src/solaris/native/java/net/Inet6AddressImpl.c @@ -196,6 +196,7 @@ lookupIfLocalhost(JNIEnv *env, const char *hostname, jboolean includeV6) } name = (*env)->NewStringUTF(env, hostname); + CHECK_NULL(name); /* Iterate over the interfaces, and total up the number of IPv4 and IPv6 * addresses we have. Also keep a count of loopback addresses. We need to @@ -548,6 +549,7 @@ Java_java_net_Inet6AddressImpl_getHostByAddr(JNIEnv *env, jobject this, if (!error) { ret = (*env)->NewStringUTF(env, host); + CHECK_NULL(ret); } #endif /* AF_INET6 */ diff --git a/jdk/src/windows/native/java/net/Inet6AddressImpl.c b/jdk/src/windows/native/java/net/Inet6AddressImpl.c index f77d5ab79c7..24176b29278 100644 --- a/jdk/src/windows/native/java/net/Inet6AddressImpl.c +++ b/jdk/src/windows/native/java/net/Inet6AddressImpl.c @@ -347,6 +347,7 @@ Java_java_net_Inet6AddressImpl_getHostByAddr(JNIEnv *env, jobject this, if (!error) { ret = (*env)->NewStringUTF(env, host); + CHECK_NULL(ret); } if (ret == NULL) { From 28e1b6ccf23461bc43840e72826f977bcf379a48 Mon Sep 17 00:00:00 2001 From: Alan Bateman Date: Tue, 4 Feb 2014 12:05:13 +0000 Subject: [PATCH 133/158] 8033372: Check jdk/src/share/native/java/lang for JNI pending exception issues 8033371: jdk/src/solaris/native/java/lang/ProcessEnvironment.c environ doesn't check for JNI pending exceptions 8030116: (process) Check Parfait warnings in src/solaris/native/java/lang/* 8028769: Check src/share/native/java/lang/*.c for cases when JNI calls are used with pending warnings Reviewed-by: chegar --- jdk/src/share/native/java/io/io_util.c | 1 + jdk/src/share/native/java/lang/ClassLoader.c | 3 - jdk/src/share/native/java/lang/System.c | 109 +++++++++++------- .../native/java/lang/ProcessEnvironment_md.c | 7 +- .../solaris/native/java/lang/UNIXProcess_md.c | 1 + .../solaris/native/java/lang/java_props_md.c | 3 + .../native/java/lang/ProcessEnvironment_md.c | 11 +- 7 files changed, 82 insertions(+), 53 deletions(-) diff --git a/jdk/src/share/native/java/io/io_util.c b/jdk/src/share/native/java/io/io_util.c index 5dd822382f0..f256af4074b 100644 --- a/jdk/src/share/native/java/io/io_util.c +++ b/jdk/src/share/native/java/io/io_util.c @@ -216,6 +216,7 @@ throwFileNotFoundException(JNIEnv *env, jstring path) #else why = JNU_NewStringPlatform(env, buf); #endif + CHECK_NULL(why); } x = JNU_NewObjectByName(env, "java/io/FileNotFoundException", diff --git a/jdk/src/share/native/java/lang/ClassLoader.c b/jdk/src/share/native/java/lang/ClassLoader.c index f6d0583990c..8e0b950406a 100644 --- a/jdk/src/share/native/java/lang/ClassLoader.c +++ b/jdk/src/share/native/java/lang/ClassLoader.c @@ -132,7 +132,6 @@ Java_java_lang_ClassLoader_defineClass1(JNIEnv *env, if (name != NULL) { utfName = getUTF(env, name, buf, sizeof(buf)); if (utfName == NULL) { - JNU_ThrowOutOfMemoryError(env, NULL); goto free_body; } VerifyFixClassname(utfName); @@ -143,7 +142,6 @@ Java_java_lang_ClassLoader_defineClass1(JNIEnv *env, if (source != NULL) { utfSource = getUTF(env, source, sourceBuf, sizeof(sourceBuf)); if (utfSource == NULL) { - JNU_ThrowOutOfMemoryError(env, NULL); goto free_utfName; } } else { @@ -519,7 +517,6 @@ Java_java_lang_ClassLoader_00024NativeLibrary_findBuiltinLib procHandle = getProcessHandle(); cname = JNU_GetStringPlatformChars(env, name, 0); if (cname == NULL) { - JNU_ThrowOutOfMemoryError(env, NULL); return NULL; } // Copy name Skipping PREFIX diff --git a/jdk/src/share/native/java/lang/System.c b/jdk/src/share/native/java/lang/System.c index 660b21e68e1..9c2f591fab4 100644 --- a/jdk/src/share/native/java/lang/System.c +++ b/jdk/src/share/native/java/lang/System.c @@ -56,44 +56,56 @@ Java_java_lang_System_identityHashCode(JNIEnv *env, jobject this, jobject x) return JVM_IHashCode(env, x); } -#define PUTPROP(props, key, val) \ - if (1) { \ - jstring jkey = (*env)->NewStringUTF(env, key); \ - jstring jval = (*env)->NewStringUTF(env, val); \ - jobject r = (*env)->CallObjectMethod(env, props, putID, jkey, jval); \ - if ((*env)->ExceptionOccurred(env)) return NULL; \ - (*env)->DeleteLocalRef(env, jkey); \ - (*env)->DeleteLocalRef(env, jval); \ - (*env)->DeleteLocalRef(env, r); \ +#define PUTPROP(props, key, val) \ + if (1) { \ + jstring jkey, jval; \ + jobject r; \ + jkey = (*env)->NewStringUTF(env, key); \ + if (jkey == NULL) return NULL; \ + jval = (*env)->NewStringUTF(env, val); \ + if (jval == NULL) return NULL; \ + r = (*env)->CallObjectMethod(env, props, putID, jkey, jval); \ + if ((*env)->ExceptionOccurred(env)) return NULL; \ + (*env)->DeleteLocalRef(env, jkey); \ + (*env)->DeleteLocalRef(env, jval); \ + (*env)->DeleteLocalRef(env, r); \ } else ((void) 0) /* "key" is a char type string with only ASCII character in it. "val" is a nchar (typedefed in java_props.h) type string */ -#define PUTPROP_ForPlatformNString(props, key, val) \ - if (1) { \ - jstring jkey = (*env)->NewStringUTF(env, key); \ - jstring jval = GetStringPlatform(env, val); \ - jobject r = (*env)->CallObjectMethod(env, props, putID, jkey, jval); \ - if ((*env)->ExceptionOccurred(env)) return NULL; \ - (*env)->DeleteLocalRef(env, jkey); \ - (*env)->DeleteLocalRef(env, jval); \ - (*env)->DeleteLocalRef(env, r); \ +#define PUTPROP_ForPlatformNString(props, key, val) \ + if (1) { \ + jstring jkey, jval; \ + jobject r; \ + jkey = (*env)->NewStringUTF(env, key); \ + if (jkey == NULL) return NULL; \ + jval = GetStringPlatform(env, val); \ + if (jval == NULL) return NULL; \ + r = (*env)->CallObjectMethod(env, props, putID, jkey, jval); \ + if ((*env)->ExceptionOccurred(env)) return NULL; \ + (*env)->DeleteLocalRef(env, jkey); \ + (*env)->DeleteLocalRef(env, jval); \ + (*env)->DeleteLocalRef(env, r); \ } else ((void) 0) -#define REMOVEPROP(props, key) \ - if (1) { \ - jstring jkey = JNU_NewStringPlatform(env, key); \ - jobject r = (*env)->CallObjectMethod(env, props, removeID, jkey); \ - if ((*env)->ExceptionOccurred(env)) return NULL; \ - (*env)->DeleteLocalRef(env, jkey); \ - (*env)->DeleteLocalRef(env, r); \ +#define REMOVEPROP(props, key) \ + if (1) { \ + jstring jkey; \ + jobject r; \ + jkey = JNU_NewStringPlatform(env, key); \ + if (jkey == NULL) return NULL; \ + r = (*env)->CallObjectMethod(env, props, removeID, jkey); \ + if ((*env)->ExceptionOccurred(env)) return NULL; \ + (*env)->DeleteLocalRef(env, jkey); \ + (*env)->DeleteLocalRef(env, r); \ } else ((void) 0) -#define GETPROP(props, key, jret) \ - if (1) { \ - jstring jkey = JNU_NewStringPlatform(env, key); \ +#define GETPROP(props, key, jret) \ + if (1) { \ + jstring jkey = JNU_NewStringPlatform(env, key); \ + if (jkey == NULL) return NULL; \ jret = (*env)->CallObjectMethod(env, props, getPropID, jkey); \ - if ((*env)->ExceptionOccurred(env)) return NULL; \ - (*env)->DeleteLocalRef(env, jkey); \ + if ((*env)->ExceptionOccurred(env)) return NULL; \ + (*env)->DeleteLocalRef(env, jkey); \ } else ((void) 0) #ifndef VENDOR /* Third party may overwrite this. */ @@ -169,23 +181,31 @@ JNIEXPORT jobject JNICALL Java_java_lang_System_initProperties(JNIEnv *env, jclass cla, jobject props) { char buf[128]; - java_props_t *sprops = GetJavaProperties(env); - jmethodID putID = (*env)->GetMethodID(env, - (*env)->GetObjectClass(env, props), - "put", - "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); - jmethodID removeID = (*env)->GetMethodID(env, - (*env)->GetObjectClass(env, props), - "remove", - "(Ljava/lang/Object;)Ljava/lang/Object;"); - jmethodID getPropID = (*env)->GetMethodID(env, - (*env)->GetObjectClass(env, props), - "getProperty", - "(Ljava/lang/String;)Ljava/lang/String;"); + java_props_t *sprops; + jmethodID putID, removeID, getPropID; jobject ret = NULL; jstring jVMVal = NULL; - if (sprops == NULL || putID == NULL ) return NULL; + sprops = GetJavaProperties(env); + CHECK_NULL_RETURN(sprops, NULL); + + putID = (*env)->GetMethodID(env, + (*env)->GetObjectClass(env, props), + "put", + "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); + CHECK_NULL_RETURN(putID, NULL); + + removeID = (*env)->GetMethodID(env, + (*env)->GetObjectClass(env, props), + "remove", + "(Ljava/lang/Object;)Ljava/lang/Object;"); + CHECK_NULL_RETURN(removeID, NULL); + + getPropID = (*env)->GetMethodID(env, + (*env)->GetObjectClass(env, props), + "getProperty", + "(Ljava/lang/String;)Ljava/lang/String;"); + CHECK_NULL_RETURN(getPropID, NULL); PUTPROP(props, "java.specification.version", JDK_MAJOR_VERSION "." JDK_MINOR_VERSION); @@ -382,6 +402,7 @@ Java_java_lang_System_initProperties(JNIEnv *env, jclass cla, jobject props) GETPROP(props, "sun.locale.formatasdefault", jVMVal); if (jVMVal) { const char * val = (*env)->GetStringUTFChars(env, jVMVal, 0); + CHECK_NULL_RETURN(val, NULL); fmtdefault = !strcmp(val, "true"); (*env)->ReleaseStringUTFChars(env, jVMVal, val); (*env)->DeleteLocalRef(env, jVMVal); diff --git a/jdk/src/solaris/native/java/lang/ProcessEnvironment_md.c b/jdk/src/solaris/native/java/lang/ProcessEnvironment_md.c index f597bff742d..54aa7142a36 100644 --- a/jdk/src/solaris/native/java/lang/ProcessEnvironment_md.c +++ b/jdk/src/solaris/native/java/lang/ProcessEnvironment_md.c @@ -53,6 +53,7 @@ Java_java_lang_ProcessEnvironment_environ(JNIEnv *env, jclass ign) jsize i, j; jobjectArray result; jclass byteArrCls = (*env)->FindClass(env, "[B"); + CHECK_NULL_RETURN(byteArrCls, NULL); for (i = 0; environ[i]; i++) { /* Ignore corrupted environment variables */ @@ -61,7 +62,7 @@ Java_java_lang_ProcessEnvironment_environ(JNIEnv *env, jclass ign) } result = (*env)->NewObjectArray(env, 2*count, byteArrCls, 0); - if (result == NULL) return NULL; + CHECK_NULL_RETURN(result, NULL); for (i = 0, j = 0; environ[i]; i++) { const char * varEnd = strchr(environ[i], '='); @@ -72,9 +73,9 @@ Java_java_lang_ProcessEnvironment_environ(JNIEnv *env, jclass ign) jsize varLength = varEnd - environ[i]; jsize valLength = strlen(valBeg); var = (*env)->NewByteArray(env, varLength); - if (var == NULL) return NULL; + CHECK_NULL_RETURN(var, NULL); val = (*env)->NewByteArray(env, valLength); - if (val == NULL) return NULL; + CHECK_NULL_RETURN(val, NULL); (*env)->SetByteArrayRegion(env, var, 0, varLength, (jbyte*) environ[i]); (*env)->SetByteArrayRegion(env, val, 0, valLength, diff --git a/jdk/src/solaris/native/java/lang/UNIXProcess_md.c b/jdk/src/solaris/native/java/lang/UNIXProcess_md.c index ec85b685dc6..da5be2257d0 100644 --- a/jdk/src/solaris/native/java/lang/UNIXProcess_md.c +++ b/jdk/src/solaris/native/java/lang/UNIXProcess_md.c @@ -206,6 +206,7 @@ JNIEXPORT void JNICALL Java_java_lang_UNIXProcess_init(JNIEnv *env, jclass clazz) { parentPathv = effectivePathv(env); + CHECK_NULL(parentPathv); setSIGCHLDHandler(env); } diff --git a/jdk/src/solaris/native/java/lang/java_props_md.c b/jdk/src/solaris/native/java/lang/java_props_md.c index 1830b20fd0c..df55fd32b5b 100644 --- a/jdk/src/solaris/native/java/lang/java_props_md.c +++ b/jdk/src/solaris/native/java/lang/java_props_md.c @@ -546,6 +546,9 @@ GetJavaProperties(JNIEnv *env) sprops.display_country = sprops.country; sprops.display_variant = sprops.variant; + /* ParseLocale failed with OOME */ + JNU_CHECK_EXCEPTION_RETURN(env, NULL); + #ifdef MACOSX sprops.sun_jnu_encoding = "UTF-8"; #else diff --git a/jdk/src/windows/native/java/lang/ProcessEnvironment_md.c b/jdk/src/windows/native/java/lang/ProcessEnvironment_md.c index e64d30b74af..3b73dd1d326 100644 --- a/jdk/src/windows/native/java/lang/ProcessEnvironment_md.c +++ b/jdk/src/windows/native/java/lang/ProcessEnvironment_md.c @@ -32,10 +32,15 @@ static jstring environmentBlock9x(JNIEnv *env) { int i; - jmethodID String_init_ID = - (*env)->GetMethodID(env, JNU_ClassString(env), "", "([B)V"); + jmethodID String_init_ID; jbyteArray bytes; - jbyte *blockA = (jbyte *) GetEnvironmentStringsA(); + jbyte *blockA; + + String_init_ID = + (*env)->GetMethodID(env, JNU_ClassString(env), "", "([B)V"); + CHECK_NULL_RETURN(String_init_ID, NULL); + + blockA = (jbyte *) GetEnvironmentStringsA(); if (blockA == NULL) { /* Both GetEnvironmentStringsW and GetEnvironmentStringsA * failed. Out of memory is our best guess. */ From 579b11a884524a6895985ee7ae210e7e3d245160 Mon Sep 17 00:00:00 2001 From: Staffan Larsen Date: Tue, 4 Feb 2014 15:25:10 +0100 Subject: [PATCH 134/158] 8029808: com/sun/jdi/ProcessAttachTest.sh times out Reviewed-by: alanb, dsamersoff --- jdk/test/com/sun/jdi/ProcessAttachTest.sh | 68 ++++++++++++++--------- 1 file changed, 43 insertions(+), 25 deletions(-) diff --git a/jdk/test/com/sun/jdi/ProcessAttachTest.sh b/jdk/test/com/sun/jdi/ProcessAttachTest.sh index 76a531bad38..739b53abb10 100644 --- a/jdk/test/com/sun/jdi/ProcessAttachTest.sh +++ b/jdk/test/com/sun/jdi/ProcessAttachTest.sh @@ -29,7 +29,7 @@ # @summary Unit test for ProcessAttachingConnector # # @build ProcessAttachDebugger ProcessAttachDebuggee ShutdownDebuggee -# @run shell ProcessAttachTest.sh +# @run shell/timeout=120 ProcessAttachTest.sh if [ "${TESTJAVA}" = "" ] then @@ -69,8 +69,8 @@ esac startDebuggee() { - OUTPUTFILE=${TESTCLASSES}/Debuggee.out - ${JAVA} "$@" > ${OUTPUTFILE} & + rm -f ${OUTPUTFILE} + ${JAVA} "$@" > ${OUTPUTFILE} 2>&1 & startpid="$!" pid="${startpid}" @@ -93,11 +93,11 @@ startDebuggee() echo "Waiting for Debuggee to initialize..." attempts=0 while true; do - sleep 1 out=`tail -1 ${OUTPUTFILE}` if [ ! -z "$out" ]; then break fi + sleep 1 attempts=`expr $attempts + 1` echo "Waiting $attempts second(s) ..." done @@ -107,9 +107,23 @@ startDebuggee() stopDebuggee() { - $JAVA -classpath "${TESTCLASSES}" ShutdownDebuggee $1 + # We have to make sure the debuggee has written the portfile before + # trying to read it. + + echo "Waiting for port file to be written..." + attempts=0 + while true; do + attempts=`expr $attempts + 1` + if [ -f ${PORTFILE} ]; then + break + fi + sleep 1 + echo "Waiting $attempts second(s) ..." + done + + $JAVA -classpath "${TESTCLASSES}" ShutdownDebuggee $1 2>&1 if [ $? != 0 ] ; then - echo "Error: ShutdownDebuggee failed" + echo "Error: ShutdownDebuggee failed: $?" failures=`expr $failures + 1` kill -9 ${startpid} fi @@ -120,7 +134,8 @@ failures=0 ######################################################### echo "Test 1: Debuggee start with suspend=n" -PORTFILE="${TESTCLASSES}"/shutdown1.port +PORTFILE=shutdown1.port +OUTPUTFILE=Debuggee1.out DEBUGGEEFLAGS= if [ -r $TESTCLASSES/@debuggeeVMOptions ] ; then @@ -136,17 +151,27 @@ startDebuggee \ $JAVA -classpath "${TESTCLASSES}${PS}${TESTJAVA}/lib/tools.jar" \ ProcessAttachDebugger $pid 2>&1 -if [ $? != 0 ]; then failures=`expr $failures + 1`; fi + +if [ $? != 0 ]; then + echo "Error: ProcessAttachDebugger failed: $?" + failures=`expr $failures + 1` +fi # Note that when the debugger disconnects, the debuggee picks another # port and outputs another 'Listening for transport ... ' msg. stopDebuggee "${PORTFILE}" +echo "${OUTPUTFILE}:" +cat $OUTPUTFILE +echo "-----" + ######################################################### echo "\nTest 2: Debuggee start with suspend=y" -PORTFILE="${TESTCLASSES}"/shutdown2.port +PORTFILE=shutdown2.port +OUTPUTFILE=Debuggee2.out + startDebuggee \ $DEBUGGEEFLAGS \ -agentlib:jdwp=transport=dt_socket,server=y,suspend=y \ @@ -155,27 +180,20 @@ startDebuggee \ $JAVA -classpath "${TESTCLASSES}${PS}${TESTJAVA}/lib/tools.jar" \ ProcessAttachDebugger $pid 2>&1 -# The debuggee is suspended and doesn't run until the debugger -# disconnects. We have to give it time to write the port number -# to ${PORTFILE} +if [ $? != 0 ]; then + echo "Error: ProcessAttachDebugger failed: $?" + failures=`expr $failures + 1` +fi -echo "Waiting for port file to be written..." -attempts=0 -while true; do - sleep 1 - attempts=`expr $attempts + 1` - if [ -f ${PORTFILE} ]; then - break - fi - echo "Waiting $attempts second(s) ..." -done - -if [ $? != 0 ]; then failures=`expr $failures + 1`; fi stopDebuggee "${PORTFILE}" +echo $OUTPUTFILE : +cat $OUTPUTFILE +echo ----- + ### if [ $failures = 0 ]; then echo "All tests passed."; - else echo "$failures test(s) failed:"; cat ${OUTPUTFILE}; + else echo "$failures test(s) failed." fi exit $failures From 5fc6cd2aa9fc755ace96d48fc12fefe8cd5628fd Mon Sep 17 00:00:00 2001 From: Sean Coffey Date: Tue, 4 Feb 2014 15:39:40 +0000 Subject: [PATCH 135/158] 8029020: Check src/share/native/java/util/zip code for JNI pending exceptions Reviewed-by: alanb, chegar --- jdk/src/share/native/java/util/zip/Deflater.c | 16 ++++++++++++---- jdk/src/share/native/java/util/zip/Inflater.c | 13 +++++++++---- jdk/src/share/native/java/util/zip/ZipFile.c | 14 +++++++++----- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/jdk/src/share/native/java/util/zip/Deflater.c b/jdk/src/share/native/java/util/zip/Deflater.c index a9f403db172..d7f751d37a9 100644 --- a/jdk/src/share/native/java/util/zip/Deflater.c +++ b/jdk/src/share/native/java/util/zip/Deflater.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -49,13 +49,21 @@ JNIEXPORT void JNICALL Java_java_util_zip_Deflater_initIDs(JNIEnv *env, jclass cls) { levelID = (*env)->GetFieldID(env, cls, "level", "I"); + CHECK_NULL(levelID); strategyID = (*env)->GetFieldID(env, cls, "strategy", "I"); + CHECK_NULL(strategyID); setParamsID = (*env)->GetFieldID(env, cls, "setParams", "Z"); + CHECK_NULL(setParamsID); finishID = (*env)->GetFieldID(env, cls, "finish", "Z"); + CHECK_NULL(finishID); finishedID = (*env)->GetFieldID(env, cls, "finished", "Z"); + CHECK_NULL(finishedID); bufID = (*env)->GetFieldID(env, cls, "buf", "[B"); + CHECK_NULL(bufID); offID = (*env)->GetFieldID(env, cls, "off", "I"); + CHECK_NULL(offID); lenID = (*env)->GetFieldID(env, cls, "len", "I"); + CHECK_NULL(lenID); } JNIEXPORT jlong JNICALL @@ -132,14 +140,14 @@ Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this, jlong addr, in_buf = (*env)->GetPrimitiveArrayCritical(env, this_buf, 0); if (in_buf == NULL) { // Throw OOME only when length is not zero - if (this_len != 0) + if (this_len != 0 && (*env)->ExceptionOccurred(env) == NULL) JNU_ThrowOutOfMemoryError(env, 0); return 0; } out_buf = (*env)->GetPrimitiveArrayCritical(env, b, 0); if (out_buf == NULL) { (*env)->ReleasePrimitiveArrayCritical(env, this_buf, in_buf, 0); - if (len != 0) + if (len != 0 && (*env)->ExceptionOccurred(env) == NULL) JNU_ThrowOutOfMemoryError(env, 0); return 0; } @@ -158,7 +166,7 @@ Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this, jlong addr, this_off += this_len - strm->avail_in; (*env)->SetIntField(env, this, offID, this_off); (*env)->SetIntField(env, this, lenID, strm->avail_in); - return len - strm->avail_out; + return (jint) (len - strm->avail_out); case Z_BUF_ERROR: (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE); return 0; diff --git a/jdk/src/share/native/java/util/zip/Inflater.c b/jdk/src/share/native/java/util/zip/Inflater.c index 3778ff4e40c..2e21d084b39 100644 --- a/jdk/src/share/native/java/util/zip/Inflater.c +++ b/jdk/src/share/native/java/util/zip/Inflater.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -50,10 +50,15 @@ JNIEXPORT void JNICALL Java_java_util_zip_Inflater_initIDs(JNIEnv *env, jclass cls) { needDictID = (*env)->GetFieldID(env, cls, "needDict", "Z"); + CHECK_NULL(needDictID); finishedID = (*env)->GetFieldID(env, cls, "finished", "Z"); + CHECK_NULL(finishedID); bufID = (*env)->GetFieldID(env, cls, "buf", "[B"); + CHECK_NULL(bufID); offID = (*env)->GetFieldID(env, cls, "off", "I"); + CHECK_NULL(offID); lenID = (*env)->GetFieldID(env, cls, "len", "I"); + CHECK_NULL(lenID); } JNIEXPORT jlong JNICALL @@ -127,14 +132,14 @@ Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this, jlong addr, in_buf = (*env)->GetPrimitiveArrayCritical(env, this_buf, 0); if (in_buf == NULL) { - if (this_len != 0) + if (this_len != 0 && (*env)->ExceptionOccurred(env) == NULL) JNU_ThrowOutOfMemoryError(env, 0); return 0; } out_buf = (*env)->GetPrimitiveArrayCritical(env, b, 0); if (out_buf == NULL) { (*env)->ReleasePrimitiveArrayCritical(env, this_buf, in_buf, 0); - if (len != 0) + if (len != 0 && (*env)->ExceptionOccurred(env) == NULL) JNU_ThrowOutOfMemoryError(env, 0); return 0; } @@ -154,7 +159,7 @@ Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this, jlong addr, this_off += this_len - strm->avail_in; (*env)->SetIntField(env, this, offID, this_off); (*env)->SetIntField(env, this, lenID, strm->avail_in); - return len - strm->avail_out; + return (jint) (len - strm->avail_out); case Z_NEED_DICT: (*env)->SetBooleanField(env, this, needDictID, JNI_TRUE); /* Might have consumed some input here! */ diff --git a/jdk/src/share/native/java/util/zip/ZipFile.c b/jdk/src/share/native/java/util/zip/ZipFile.c index d66cccb747a..5fd4936a803 100644 --- a/jdk/src/share/native/java/util/zip/ZipFile.c +++ b/jdk/src/share/native/java/util/zip/ZipFile.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -71,11 +71,13 @@ ThrowZipException(JNIEnv *env, const char *msg) if (msg != NULL) { s = JNU_NewStringPlatform(env, msg); } - x = JNU_NewObjectByName(env, + if (s != NULL) { + x = JNU_NewObjectByName(env, "java/util/zip/ZipException", "(Ljava/lang/String;)V", s); - if (x != NULL) { - (*env)->Throw(env, x); + if (x != NULL) { + (*env)->Throw(env, x); + } } } @@ -367,8 +369,10 @@ Java_java_util_jar_JarFile_getMetaInfEntryNames(JNIEnv *env, jobject obj) /* If some names were found then build array of java strings */ if (count > 0) { - jclass cls = (*env)->FindClass(env, "java/lang/String"); + jclass cls = JNU_ClassString(env); + CHECK_NULL_RETURN(cls, NULL); result = (*env)->NewObjectArray(env, count, cls, 0); + CHECK_NULL_RETURN(result, NULL); if (result != 0) { for (i = 0; i < count; i++) { jstring str = (*env)->NewStringUTF(env, zip->metanames[i]); From 8d903056f3403ccb6742b169350d5191c4c30063 Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Tue, 4 Feb 2014 08:58:06 -0800 Subject: [PATCH 136/158] 8033525: Fix raw and unchecked lint warnings in sun.swing.* Reviewed-by: alexsch --- .../classes/sun/swing/BakedArrayList.java | 4 +-- jdk/src/share/classes/sun/swing/FilePane.java | 31 ++++++++++--------- .../classes/sun/swing/SwingLazyValue.java | 12 +++---- .../classes/sun/swing/SwingUtilities2.java | 16 +++++----- .../swing/plaf/synth/DefaultSynthStyle.java | 28 ++++++++--------- .../plaf/synth/SynthFileChooserUIImpl.java | 4 +-- 6 files changed, 48 insertions(+), 47 deletions(-) diff --git a/jdk/src/share/classes/sun/swing/BakedArrayList.java b/jdk/src/share/classes/sun/swing/BakedArrayList.java index 0d4670878db..8f9377b81fe 100644 --- a/jdk/src/share/classes/sun/swing/BakedArrayList.java +++ b/jdk/src/share/classes/sun/swing/BakedArrayList.java @@ -44,7 +44,7 @@ import java.util.*; * @author Scott Violet */ @SuppressWarnings("serial") // JDK-implementation class -public class BakedArrayList extends ArrayList { +public class BakedArrayList extends ArrayList { /** * The cached hashCode. */ @@ -54,7 +54,7 @@ public class BakedArrayList extends ArrayList { super(size); } - public BakedArrayList(java.util.List data) { + public BakedArrayList(java.util.List data) { this(data.size()); for (int counter = 0, max = data.size(); counter < max; counter++){ add(data.get(counter)); diff --git a/jdk/src/share/classes/sun/swing/FilePane.java b/jdk/src/share/classes/sun/swing/FilePane.java index 9b21815469d..763c027a2ab 100644 --- a/jdk/src/share/classes/sun/swing/FilePane.java +++ b/jdk/src/share/classes/sun/swing/FilePane.java @@ -240,7 +240,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { } } - private void repaintListSelection(JList list) { + private void repaintListSelection(JList list) { int[] indices = list.getSelectedIndices(); for (int i : indices) { Rectangle bounds = list.getCellBounds(i, i); @@ -272,7 +272,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { private boolean fullRowSelection = false; private ListSelectionModel listSelectionModel; - private JList list; + private JList list; private JTable detailsTable; private static final int COLUMN_FILENAME = 0; @@ -332,7 +332,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { createdViewPanel = createList(); } - list = (JList) findChildComponent(createdViewPanel, JList.class); + list = findChildComponent(createdViewPanel, JList.class); if (listSelectionModel == null) { listSelectionModel = list.getSelectionModel(); if (detailsTable != null) { @@ -353,7 +353,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { createdViewPanel = createDetailsView(); } - detailsTable = (JTable) findChildComponent(createdViewPanel, JTable.class); + detailsTable = findChildComponent(createdViewPanel, JTable.class); detailsTable.setRowHeight(Math.max(detailsTable.getFont().getSize() + 4, 16 + 1)); if (listSelectionModel != null) { detailsTable.setSelectionModel(listSelectionModel); @@ -569,7 +569,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { } - private void updateListRowCount(JList list) { + private void updateListRowCount(JList list) { if (smallIconsView) { list.setVisibleRowCount(getModel().getSize() / 3); } else { @@ -584,7 +584,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { @SuppressWarnings("serial") // anonymous class final JList list = new JList() { public int getNextMatch(String prefix, int startIndex, Position.Bias bias) { - ListModel model = getModel(); + ListModel model = getModel(); int max = model.getSize(); if (prefix == null || startIndex < 0 || startIndex >= max) { throw new IllegalArgumentException(); @@ -918,7 +918,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { public void updateComparators(ShellFolderColumnInfo [] columns) { for (int i = 0; i < columns.length; i++) { - Comparator c = columns[i].getComparator(); + Comparator c = columns[i].getComparator(); if (c != null) { c = new DirectoriesFirstComparatorWrapper(i, c); } @@ -969,12 +969,13 @@ public class FilePane extends JPanel implements PropertyChangeListener { * directory and file to file using the wrapped comparator. */ private class DirectoriesFirstComparatorWrapper implements Comparator { - private Comparator comparator; + private Comparator comparator; private int column; - public DirectoriesFirstComparatorWrapper(int column, Comparator comparator) { + @SuppressWarnings("unchecked") + public DirectoriesFirstComparatorWrapper(int column, Comparator comparator) { this.column = column; - this.comparator = comparator; + this.comparator = (Comparator)comparator; } public int compare(File f1, File f2) { @@ -1492,7 +1493,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { @SuppressWarnings("serial") // JDK-implementation class protected class FileRenderer extends DefaultListCellRenderer { - public Component getListCellRendererComponent(JList list, Object value, + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { @@ -1968,14 +1969,14 @@ public class FilePane extends JPanel implements PropertyChangeListener { return fileChooserUIAccessor.getDirectory(); } - private Component findChildComponent(Container container, Class cls) { + private T findChildComponent(Container container, Class cls) { int n = container.getComponentCount(); for (int i = 0; i < n; i++) { Component comp = container.getComponent(i); if (cls.isInstance(comp)) { - return comp; + return cls.cast(comp); } else if (comp instanceof Container) { - Component c = findChildComponent((Container)comp, cls); + T c = findChildComponent((Container)comp, cls); if (c != null) { return c; } @@ -2029,7 +2030,7 @@ public class FilePane extends JPanel implements PropertyChangeListener { public Action getApproveSelectionAction(); public Action getChangeToParentDirectoryAction(); public Action getNewFolderAction(); - public MouseListener createDoubleClickListener(JList list); + public MouseListener createDoubleClickListener(JList list); public ListSelectionListener createListSelectionListener(); } } diff --git a/jdk/src/share/classes/sun/swing/SwingLazyValue.java b/jdk/src/share/classes/sun/swing/SwingLazyValue.java index a9e6f2c1bc8..87205f3398c 100644 --- a/jdk/src/share/classes/sun/swing/SwingLazyValue.java +++ b/jdk/src/share/classes/sun/swing/SwingLazyValue.java @@ -67,13 +67,13 @@ public class SwingLazyValue implements UIDefaults.LazyValue { ReflectUtil.checkPackageAccess(className); Class c = Class.forName(className, true, null); if (methodName != null) { - Class[] types = getClassArray(args); + Class[] types = getClassArray(args); Method m = c.getMethod(methodName, types); makeAccessible(m); return m.invoke(c, args); } else { - Class[] types = getClassArray(args); - Constructor constructor = c.getConstructor(types); + Class[] types = getClassArray(args); + Constructor constructor = c.getConstructor(types); makeAccessible(constructor); return constructor.newInstance(args); } @@ -96,10 +96,10 @@ public class SwingLazyValue implements UIDefaults.LazyValue { }); } - private Class[] getClassArray(Object[] args) { - Class[] types = null; + private Class[] getClassArray(Object[] args) { + Class[] types = null; if (args!=null) { - types = new Class[args.length]; + types = new Class[args.length]; for (int i = 0; i< args.length; i++) { /* PENDING(ges): At present only the primitive types used are handled correctly; this should eventually diff --git a/jdk/src/share/classes/sun/swing/SwingUtilities2.java b/jdk/src/share/classes/sun/swing/SwingUtilities2.java index 9e410ed3977..75a0a4f9b72 100644 --- a/jdk/src/share/classes/sun/swing/SwingUtilities2.java +++ b/jdk/src/share/classes/sun/swing/SwingUtilities2.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -127,7 +127,7 @@ public class SwingUtilities2 { */ public static class AATextInfo { - private static AATextInfo getAATextInfoFromMap(Map hints) { + private static AATextInfo getAATextInfoFromMap(Map hints) { Object aaHint = hints.get(KEY_TEXT_ANTIALIASING); Object contHint = hints.get(KEY_TEXT_LCD_CONTRAST); @@ -141,12 +141,13 @@ public class SwingUtilities2 { } } + @SuppressWarnings("unchecked") public static AATextInfo getAATextInfo(boolean lafCondition) { SunToolkit.setAAFontSettingsCondition(lafCondition); Toolkit tk = Toolkit.getDefaultToolkit(); Object map = tk.getDesktopProperty(SunToolkit.DESKTOPFONTHINTS); if (map instanceof Map) { - return getAATextInfoFromMap((Map)map); + return getAATextInfoFromMap((Map)map); } else { return null; } @@ -663,7 +664,7 @@ public class SwingUtilities2 { * Otherwise, this method returns -1. * This is used to make WindowsL&F JFileChooser act like native dialogs. */ - public static int loc2IndexFileList(JList list, Point point) { + public static int loc2IndexFileList(JList list, Point point) { int index = list.locationToIndex(point); if (index != -1) { Object bySize = list.getClientProperty("List.isFileList"); @@ -680,11 +681,10 @@ public class SwingUtilities2 { * Returns true if the given point is within the actual bounds of the * JList item at index (not just inside the cell). */ - private static boolean pointIsInActualBounds(JList list, int index, + private static boolean pointIsInActualBounds(JList list, int index, Point point) { - ListCellRenderer renderer = list.getCellRenderer(); - ListModel dataModel = list.getModel(); - Object value = dataModel.getElementAt(index); + ListCellRenderer renderer = list.getCellRenderer(); + T value = list.getModel().getElementAt(index); Component item = renderer.getListCellRendererComponent(list, value, index, false, false); Dimension itemSize = item.getPreferredSize(); diff --git a/jdk/src/share/classes/sun/swing/plaf/synth/DefaultSynthStyle.java b/jdk/src/share/classes/sun/swing/plaf/synth/DefaultSynthStyle.java index 3da946bcb2f..1297bcd26a5 100644 --- a/jdk/src/share/classes/sun/swing/plaf/synth/DefaultSynthStyle.java +++ b/jdk/src/share/classes/sun/swing/plaf/synth/DefaultSynthStyle.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -61,7 +61,7 @@ public class DefaultSynthStyle extends SynthStyle implements Cloneable { /** * User specific data. */ - private Map data; + private Map data; /** * Font to use if there is no matching StateInfo, or the StateInfo doesn't @@ -106,7 +106,7 @@ public class DefaultSynthStyle extends SynthStyle implements Cloneable { } } if (style.data != null) { - data = new HashMap(); + data = new HashMap<>(); data.putAll(style.data); } font = style.font; @@ -124,7 +124,7 @@ public class DefaultSynthStyle extends SynthStyle implements Cloneable { * @param data Style specific data. */ public DefaultSynthStyle(Insets insets, boolean opaque, - StateInfo[] states, Map data) { + StateInfo[] states, Map data) { this.insets = insets; this.opaque = opaque; this.states = states; @@ -366,7 +366,7 @@ public class DefaultSynthStyle extends SynthStyle implements Cloneable { * * @param data Style specific values */ - public void setData(Map data) { + public void setData(Map data) { this.data = data; } @@ -375,7 +375,7 @@ public class DefaultSynthStyle extends SynthStyle implements Cloneable { * * @return Style specific data. */ - public Map getData() { + public Map getData() { return data; } @@ -402,7 +402,7 @@ public class DefaultSynthStyle extends SynthStyle implements Cloneable { } - private Object getKeyFromData(Map stateData, Object key) { + private Object getKeyFromData(Map stateData, Object key) { Object value = null; if (stateData != null) { @@ -462,7 +462,7 @@ public class DefaultSynthStyle extends SynthStyle implements Cloneable { } } if (data != null) { - style.data = new HashMap(); + style.data = new HashMap<>(); style.data.putAll(data); } return style; @@ -570,7 +570,7 @@ public class DefaultSynthStyle extends SynthStyle implements Cloneable { } if (data != null) { if (style.data == null) { - style.data = new HashMap(); + style.data = new HashMap<>(); } style.data.putAll(data); } @@ -708,7 +708,7 @@ public class DefaultSynthStyle extends SynthStyle implements Cloneable { * a component. */ public static class StateInfo { - private Map data; + private Map data; private Font font; private Color[] colors; private int state; @@ -746,7 +746,7 @@ public class DefaultSynthStyle extends SynthStyle implements Cloneable { this.font = info.font; if(info.data != null) { if(data == null) { - data = new HashMap(); + data = new HashMap<>(); } data.putAll(info.data); } @@ -756,11 +756,11 @@ public class DefaultSynthStyle extends SynthStyle implements Cloneable { } } - public Map getData() { + public Map getData() { return data; } - public void setData(Map data) { + public void setData(Map data) { this.data = data; } @@ -836,7 +836,7 @@ public class DefaultSynthStyle extends SynthStyle implements Cloneable { } if(data != null) { if(info.data == null) { - info.data = new HashMap(); + info.data = new HashMap<>(); } info.data.putAll(data); } diff --git a/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java b/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java index a933377d995..f0d0ac31c14 100644 --- a/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java +++ b/jdk/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java @@ -175,7 +175,7 @@ public class SynthFileChooserUIImpl extends SynthFileChooserUI { return SynthFileChooserUIImpl.this.getNewFolderAction(); } - public MouseListener createDoubleClickListener(JList list) { + public MouseListener createDoubleClickListener(JList list) { return SynthFileChooserUIImpl.this.createDoubleClickListener(getFileChooser(), list); } @@ -563,7 +563,7 @@ public class SynthFileChooserUIImpl extends SynthFileChooserUI { if (currentDirectory != null) { JComponent cb = getDirectoryComboBox(); if (cb instanceof JComboBox) { - ComboBoxModel model = ((JComboBox)cb).getModel(); + ComboBoxModel model = ((JComboBox)cb).getModel(); if (model instanceof DirectoryComboBoxModel) { ((DirectoryComboBoxModel)model).addItem(currentDirectory); } From 60f386c8bb9f9aa219d63119ce1c2447b52586ea Mon Sep 17 00:00:00 2001 From: Vinnie Ryan Date: Tue, 4 Feb 2014 18:37:12 +0000 Subject: [PATCH 137/158] 8028727: [parfait] warnings from b116 for jdk.src.share.native.sun.security.ec: JNI pending exceptions Reviewed-by: alanb --- .../share/native/sun/security/ec/ECC_JNI.cpp | 47 +++++++++++++++++-- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp b/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp index dff675f9500..8273e7f8dbb 100644 --- a/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp +++ b/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2014, 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,7 +41,9 @@ extern "C" { void ThrowException(JNIEnv *env, const char *exceptionName) { jclass exceptionClazz = env->FindClass(exceptionName); - env->ThrowNew(exceptionClazz, NULL); + if (exceptionClazz != NULL) { + env->ThrowNew(exceptionClazz, NULL); + } } /* @@ -73,7 +75,7 @@ JNIEXPORT jlongArray JNICALL Java_sun_security_ec_ECKeyPairGenerator_generateECKeyPair (JNIEnv *env, jclass clazz, jint keySize, jbyteArray encodedParams, jbyteArray seed) { - ECPrivateKey *privKey; /* contains both public and private values */ + ECPrivateKey *privKey = NULL; /* contains both public and private values */ ECParams *ecparams = NULL; SECKEYECParams params_item; jint jSeedLength; @@ -85,6 +87,9 @@ JNICALL Java_sun_security_ec_ECKeyPairGenerator_generateECKeyPair params_item.len = env->GetArrayLength(encodedParams); params_item.data = (unsigned char *) env->GetByteArrayElements(encodedParams, 0); + if (params_item.data == NULL) { + goto cleanup; + } // Fill a new ECParams using the supplied OID if (EC_DecodeParams(¶ms_item, &ecparams, 0) != SECSuccess) { @@ -107,7 +112,14 @@ JNICALL Java_sun_security_ec_ECKeyPairGenerator_generateECKeyPair jboolean isCopy; result = env->NewLongArray(2); + if (result == NULL) { + goto cleanup; + } + resultElements = env->GetLongArrayElements(result, &isCopy); + if (resultElements == NULL) { + goto cleanup; + } resultElements[0] = (jlong) &(privKey->privateValue); // private big integer resultElements[1] = (jlong) &(privKey->publicValue); // encoded ec point @@ -150,6 +162,9 @@ JNICALL Java_sun_security_ec_ECKeyPairGenerator_getEncodedBytes { SECItem *s = (SECItem *)hSECItem; jbyteArray jEncodedBytes = env->NewByteArray(s->len); + if (jEncodedBytes == NULL) { + return NULL; + } // Copy bytes from a native SECItem buffer to Java byte array env->SetByteArrayRegion(jEncodedBytes, 0, s->len, (jbyte *)s->data); @@ -195,6 +210,9 @@ JNICALL Java_sun_security_ec_ECDSASignature_signDigest params_item.len = env->GetArrayLength(encodedParams); params_item.data = (unsigned char *) env->GetByteArrayElements(encodedParams, 0); + if (params_item.data == NULL) { + goto cleanup; + } // Fill a new ECParams using the supplied OID if (EC_DecodeParams(¶ms_item, &ecparams, 0) != SECSuccess) { @@ -208,6 +226,9 @@ JNICALL Java_sun_security_ec_ECDSASignature_signDigest privKey.privateValue.len = env->GetArrayLength(privateKey); privKey.privateValue.data = (unsigned char *) env->GetByteArrayElements(privateKey, 0); + if (privKey.privateValue.data == NULL) { + goto cleanup; + } // Prepare a buffer for the signature (twice the key length) pSignedDigestBuffer = new jbyte[ecparams->order.len * 2]; @@ -227,6 +248,9 @@ JNICALL Java_sun_security_ec_ECDSASignature_signDigest // Create new byte array temp = env->NewByteArray(signature_item.len); + if (temp == NULL) { + goto cleanup; + } // Copy data from native buffer env->SetByteArrayRegion(temp, 0, signature_item.len, pSignedDigestBuffer); @@ -294,6 +318,9 @@ JNICALL Java_sun_security_ec_ECDSASignature_verifySignedDigest params_item.len = env->GetArrayLength(encodedParams); params_item.data = (unsigned char *) env->GetByteArrayElements(encodedParams, 0); + if (params_item.data == NULL) { + goto cleanup; + } // Fill a new ECParams using the supplied OID if (EC_DecodeParams(¶ms_item, &ecparams, 0) != SECSuccess) { @@ -346,25 +373,34 @@ JNICALL Java_sun_security_ec_ECDHKeyAgreement_deriveKey (JNIEnv *env, jclass clazz, jbyteArray privateKey, jbyteArray publicKey, jbyteArray encodedParams) { jbyteArray jSecret = NULL; + ECParams *ecparams = NULL; // Extract private key value SECItem privateValue_item; privateValue_item.len = env->GetArrayLength(privateKey); privateValue_item.data = (unsigned char *) env->GetByteArrayElements(privateKey, 0); + if (privateValue_item.data == NULL) { + goto cleanup; + } // Extract public key value SECItem publicValue_item; publicValue_item.len = env->GetArrayLength(publicKey); publicValue_item.data = (unsigned char *) env->GetByteArrayElements(publicKey, 0); + if (publicValue_item.data == NULL) { + goto cleanup; + } // Initialize the ECParams struct - ECParams *ecparams = NULL; SECKEYECParams params_item; params_item.len = env->GetArrayLength(encodedParams); params_item.data = (unsigned char *) env->GetByteArrayElements(encodedParams, 0); + if (params_item.data == NULL) { + goto cleanup; + } // Fill a new ECParams using the supplied OID if (EC_DecodeParams(¶ms_item, &ecparams, 0) != SECSuccess) { @@ -386,6 +422,9 @@ JNICALL Java_sun_security_ec_ECDHKeyAgreement_deriveKey // Create new byte array jSecret = env->NewByteArray(secret_item.len); + if (jSecret == NULL) { + goto cleanup; + } // Copy bytes from the SECItem buffer to a Java byte array env->SetByteArrayRegion(jSecret, 0, secret_item.len, From 20e35aed8fb6e7ad0a116962765ce1752eee00d4 Mon Sep 17 00:00:00 2001 From: Chris Hegarty Date: Tue, 4 Feb 2014 23:40:23 +0000 Subject: [PATCH 138/158] 8025306: Inet[4|6]Address class and fieldID initialization in networking native code Reviewed-by: alanb, michaelm --- jdk/make/mapfiles/libnet/mapfile-vers | 1 + jdk/src/share/native/java/net/Inet4Address.c | 16 ++-- jdk/src/share/native/java/net/Inet6Address.c | 46 +++++----- jdk/src/share/native/java/net/InetAddress.c | 38 ++++---- jdk/src/share/native/java/net/net_util.c | 89 ++++--------------- jdk/src/share/native/java/net/net_util.h | 2 + .../native/java/net/Inet4AddressImpl.c | 39 ++------ .../native/java/net/Inet6AddressImpl.c | 63 +++---------- .../native/java/net/NetworkInterface.c | 33 ++----- .../native/java/net/PlainDatagramSocketImpl.c | 5 +- .../solaris/native/java/net/PlainSocketImpl.c | 3 + jdk/src/solaris/native/sun/nio/ch/IOUtil.c | 2 + .../solaris/native/sun/nio/ch/sctp/SctpNet.c | 1 + .../native/java/net/Inet4AddressImpl.c | 28 ++---- .../native/java/net/Inet6AddressImpl.c | 49 ++-------- .../native/java/net/NetworkInterface.c | 38 ++------ .../native/java/net/NetworkInterface.h | 10 --- .../native/java/net/NetworkInterface_winXP.c | 8 +- jdk/src/windows/native/sun/nio/ch/IOUtil.c | 2 + 19 files changed, 141 insertions(+), 332 deletions(-) diff --git a/jdk/make/mapfiles/libnet/mapfile-vers b/jdk/make/mapfiles/libnet/mapfile-vers index cdd98f8cce6..e3e7ce91fcf 100644 --- a/jdk/make/mapfiles/libnet/mapfile-vers +++ b/jdk/make/mapfiles/libnet/mapfile-vers @@ -105,6 +105,7 @@ SUNWprivate_1.1 { NET_MapSocketOption; NET_Wait; ipv6_available; + initInetAddressIDs; local: *; diff --git a/jdk/src/share/native/java/net/Inet4Address.c b/jdk/src/share/native/java/net/Inet4Address.c index b2f25416133..9fb0f342c00 100644 --- a/jdk/src/share/native/java/net/Inet4Address.c +++ b/jdk/src/share/native/java/net/Inet4Address.c @@ -34,6 +34,8 @@ jclass ia4_class; jmethodID ia4_ctrID; +static int ia4_initialized = 0; + /* * Class: java_net_Inet4Address * Method: init @@ -41,9 +43,13 @@ jmethodID ia4_ctrID; */ JNIEXPORT void JNICALL Java_java_net_Inet4Address_init(JNIEnv *env, jclass cls) { - jclass c = (*env)->FindClass(env, "java/net/Inet4Address"); - CHECK_NULL(c); - ia4_class = (*env)->NewGlobalRef(env, c); - CHECK_NULL(ia4_class); - ia4_ctrID = (*env)->GetMethodID(env, ia4_class, "", "()V"); + if (!ia4_initialized) { + jclass c = (*env)->FindClass(env, "java/net/Inet4Address"); + CHECK_NULL(c); + ia4_class = (*env)->NewGlobalRef(env, c); + CHECK_NULL(ia4_class); + ia4_ctrID = (*env)->GetMethodID(env, ia4_class, "", "()V"); + CHECK_NULL(ia4_ctrID); + ia4_initialized = 1; + } } diff --git a/jdk/src/share/native/java/net/Inet6Address.c b/jdk/src/share/native/java/net/Inet6Address.c index 729fe78281d..8d34918386d 100644 --- a/jdk/src/share/native/java/net/Inet6Address.c +++ b/jdk/src/share/native/java/net/Inet6Address.c @@ -42,6 +42,8 @@ jfieldID ia6_scopeidsetID; jfieldID ia6_scopeifnameID; jmethodID ia6_ctrID; +static int ia6_initialized = 0; + /* * Class: java_net_Inet6Address * Method: init @@ -49,24 +51,28 @@ jmethodID ia6_ctrID; */ JNIEXPORT void JNICALL Java_java_net_Inet6Address_init(JNIEnv *env, jclass cls) { - jclass ia6h_class; - jclass c = (*env)->FindClass(env, "java/net/Inet6Address"); - CHECK_NULL(c); - ia6_class = (*env)->NewGlobalRef(env, c); - CHECK_NULL(ia6_class); - ia6h_class = (*env)->FindClass(env, "java/net/Inet6Address$Inet6AddressHolder"); - CHECK_NULL(ia6h_class); - ia6_holder6ID = (*env)->GetFieldID(env, ia6_class, "holder6", "Ljava/net/Inet6Address$Inet6AddressHolder;"); - CHECK_NULL(ia6_holder6ID); - ia6_ipaddressID = (*env)->GetFieldID(env, ia6h_class, "ipaddress", "[B"); - CHECK_NULL(ia6_ipaddressID); - ia6_scopeidID = (*env)->GetFieldID(env, ia6h_class, "scope_id", "I"); - CHECK_NULL(ia6_scopeidID); - ia6_cachedscopeidID = (*env)->GetFieldID(env, ia6_class, "cached_scope_id", "I"); - CHECK_NULL(ia6_cachedscopeidID); - ia6_scopeidsetID = (*env)->GetFieldID(env, ia6h_class, "scope_id_set", "Z"); - CHECK_NULL(ia6_scopeidsetID); - ia6_scopeifnameID = (*env)->GetFieldID(env, ia6h_class, "scope_ifname", "Ljava/net/NetworkInterface;"); - CHECK_NULL(ia6_scopeifnameID); - ia6_ctrID = (*env)->GetMethodID(env, ia6_class, "", "()V"); + if (!ia6_initialized) { + jclass ia6h_class; + jclass c = (*env)->FindClass(env, "java/net/Inet6Address"); + CHECK_NULL(c); + ia6_class = (*env)->NewGlobalRef(env, c); + CHECK_NULL(ia6_class); + ia6h_class = (*env)->FindClass(env, "java/net/Inet6Address$Inet6AddressHolder"); + CHECK_NULL(ia6h_class); + ia6_holder6ID = (*env)->GetFieldID(env, ia6_class, "holder6", "Ljava/net/Inet6Address$Inet6AddressHolder;"); + CHECK_NULL(ia6_holder6ID); + ia6_ipaddressID = (*env)->GetFieldID(env, ia6h_class, "ipaddress", "[B"); + CHECK_NULL(ia6_ipaddressID); + ia6_scopeidID = (*env)->GetFieldID(env, ia6h_class, "scope_id", "I"); + CHECK_NULL(ia6_scopeidID); + ia6_cachedscopeidID = (*env)->GetFieldID(env, ia6_class, "cached_scope_id", "I"); + CHECK_NULL(ia6_cachedscopeidID); + ia6_scopeidsetID = (*env)->GetFieldID(env, ia6h_class, "scope_id_set", "Z"); + CHECK_NULL(ia6_scopeidsetID); + ia6_scopeifnameID = (*env)->GetFieldID(env, ia6h_class, "scope_ifname", "Ljava/net/NetworkInterface;"); + CHECK_NULL(ia6_scopeifnameID); + ia6_ctrID = (*env)->GetMethodID(env, ia6_class, "", "()V"); + CHECK_NULL(ia6_ctrID); + ia6_initialized = 1; + } } diff --git a/jdk/src/share/native/java/net/InetAddress.c b/jdk/src/share/native/java/net/InetAddress.c index e9fd0979cb8..a712dd9b1d1 100644 --- a/jdk/src/share/native/java/net/InetAddress.c +++ b/jdk/src/share/native/java/net/InetAddress.c @@ -40,6 +40,8 @@ jfieldID iac_familyID; jfieldID iac_hostNameID; jfieldID ia_preferIPv6AddressID; +static int ia_initialized = 0; + /* * Class: java_net_InetAddress * Method: init @@ -47,21 +49,25 @@ jfieldID ia_preferIPv6AddressID; */ JNIEXPORT void JNICALL Java_java_net_InetAddress_init(JNIEnv *env, jclass cls) { - jclass c = (*env)->FindClass(env,"java/net/InetAddress"); - CHECK_NULL(c); - ia_class = (*env)->NewGlobalRef(env, c); - CHECK_NULL(ia_class); - c = (*env)->FindClass(env,"java/net/InetAddress$InetAddressHolder"); - CHECK_NULL(c); - iac_class = (*env)->NewGlobalRef(env, c); - ia_holderID = (*env)->GetFieldID(env, ia_class, "holder", "Ljava/net/InetAddress$InetAddressHolder;"); - CHECK_NULL(ia_holderID); - ia_preferIPv6AddressID = (*env)->GetStaticFieldID(env, ia_class, "preferIPv6Address", "Z"); - CHECK_NULL(ia_preferIPv6AddressID); + if (!ia_initialized) { + jclass c = (*env)->FindClass(env,"java/net/InetAddress"); + CHECK_NULL(c); + ia_class = (*env)->NewGlobalRef(env, c); + CHECK_NULL(ia_class); + c = (*env)->FindClass(env,"java/net/InetAddress$InetAddressHolder"); + CHECK_NULL(c); + iac_class = (*env)->NewGlobalRef(env, c); + ia_holderID = (*env)->GetFieldID(env, ia_class, "holder", "Ljava/net/InetAddress$InetAddressHolder;"); + CHECK_NULL(ia_holderID); + ia_preferIPv6AddressID = (*env)->GetStaticFieldID(env, ia_class, "preferIPv6Address", "Z"); + CHECK_NULL(ia_preferIPv6AddressID); - iac_addressID = (*env)->GetFieldID(env, iac_class, "address", "I"); - CHECK_NULL(iac_addressID); - iac_familyID = (*env)->GetFieldID(env, iac_class, "family", "I"); - CHECK_NULL(iac_familyID); - iac_hostNameID = (*env)->GetFieldID(env, iac_class, "hostName", "Ljava/lang/String;"); + iac_addressID = (*env)->GetFieldID(env, iac_class, "address", "I"); + CHECK_NULL(iac_addressID); + iac_familyID = (*env)->GetFieldID(env, iac_class, "family", "I"); + CHECK_NULL(iac_familyID); + iac_hostNameID = (*env)->GetFieldID(env, iac_class, "hostName", "Ljava/lang/String;"); + CHECK_NULL(iac_hostNameID); + ia_initialized = 1; + } } diff --git a/jdk/src/share/native/java/net/net_util.c b/jdk/src/share/native/java/net/net_util.c index f8a0e90b532..dd93b1375bc 100644 --- a/jdk/src/share/native/java/net/net_util.c +++ b/jdk/src/share/native/java/net/net_util.c @@ -75,11 +75,14 @@ JNI_OnLoad(JavaVM *vm, void *reserved) static int initialized = 0; -static void initInetAddrs(JNIEnv *env) { +JNIEXPORT void JNICALL initInetAddressIDs(JNIEnv *env) { if (!initialized) { Java_java_net_InetAddress_init(env, 0); + JNU_CHECK_EXCEPTION(env); Java_java_net_Inet4Address_init(env, 0); + JNU_CHECK_EXCEPTION(env); Java_java_net_Inet6Address_init(env, 0); + JNU_CHECK_EXCEPTION(env); initialized = 1; } } @@ -100,47 +103,32 @@ extern jfieldID iac_familyID; * get_ methods that return objects return NULL on error. */ jobject getInet6Address_scopeifname(JNIEnv *env, jobject iaObj) { - jobject holder; - - initInetAddrs(env); - holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID); + jobject holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID); CHECK_NULL_RETURN(holder, NULL); return (*env)->GetObjectField(env, holder, ia6_scopeifnameID); } int setInet6Address_scopeifname(JNIEnv *env, jobject iaObj, jobject scopeifname) { - jobject holder; - - initInetAddrs(env); - holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID); + jobject holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID); CHECK_NULL_RETURN(holder, JNI_FALSE); (*env)->SetObjectField(env, holder, ia6_scopeifnameID, scopeifname); return JNI_TRUE; } int getInet6Address_scopeid_set(JNIEnv *env, jobject iaObj) { - jobject holder; - - initInetAddrs(env); - holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID); + jobject holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID); CHECK_NULL_RETURN(holder, -1); return (*env)->GetBooleanField(env, holder, ia6_scopeidsetID); } int getInet6Address_scopeid(JNIEnv *env, jobject iaObj) { - jobject holder; - - initInetAddrs(env); - holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID); + jobject holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID); CHECK_NULL_RETURN(holder, -1); return (*env)->GetIntField(env, holder, ia6_scopeidID); } int setInet6Address_scopeid(JNIEnv *env, jobject iaObj, int scopeid) { - jobject holder; - - initInetAddrs(env); - holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID); + jobject holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID); CHECK_NULL_RETURN(holder, JNI_FALSE); (*env)->SetIntField(env, holder, ia6_scopeidID, scopeid); if (scopeid > 0) { @@ -154,7 +142,6 @@ int getInet6Address_ipaddress(JNIEnv *env, jobject iaObj, char *dest) { jobject holder, addr; jbyteArray barr; - initInetAddrs(env); holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID); CHECK_NULL_RETURN(holder, JNI_FALSE); addr = (*env)->GetObjectField(env, holder, ia6_ipaddressID); @@ -167,7 +154,6 @@ int setInet6Address_ipaddress(JNIEnv *env, jobject iaObj, char *address) { jobject holder; jbyteArray addr; - initInetAddrs(env); holder = (*env)->GetObjectField(env, iaObj, ia6_holder6ID); CHECK_NULL_RETURN(holder, JNI_FALSE); addr = (jbyteArray)(*env)->GetObjectField(env, holder, ia6_ipaddressID); @@ -181,52 +167,38 @@ int setInet6Address_ipaddress(JNIEnv *env, jobject iaObj, char *address) { } void setInetAddress_addr(JNIEnv *env, jobject iaObj, int address) { - jobject holder; - initInetAddrs(env); - holder = (*env)->GetObjectField(env, iaObj, ia_holderID); + jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID); (*env)->SetIntField(env, holder, iac_addressID, address); } void setInetAddress_family(JNIEnv *env, jobject iaObj, int family) { - jobject holder; - initInetAddrs(env); - holder = (*env)->GetObjectField(env, iaObj, ia_holderID); + jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID); (*env)->SetIntField(env, holder, iac_familyID, family); } void setInetAddress_hostName(JNIEnv *env, jobject iaObj, jobject host) { - jobject holder; - initInetAddrs(env); - holder = (*env)->GetObjectField(env, iaObj, ia_holderID); + jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID); (*env)->SetObjectField(env, holder, iac_hostNameID, host); } int getInetAddress_addr(JNIEnv *env, jobject iaObj) { - jobject holder; - initInetAddrs(env); - holder = (*env)->GetObjectField(env, iaObj, ia_holderID); + jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID); return (*env)->GetIntField(env, holder, iac_addressID); } int getInetAddress_family(JNIEnv *env, jobject iaObj) { - jobject holder; - - initInetAddrs(env); - holder = (*env)->GetObjectField(env, iaObj, ia_holderID); + jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID); return (*env)->GetIntField(env, holder, iac_familyID); } jobject getInetAddress_hostName(JNIEnv *env, jobject iaObj) { - jobject holder; - initInetAddrs(env); - holder = (*env)->GetObjectField(env, iaObj, ia_holderID); + jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID); return (*env)->GetObjectField(env, holder, iac_hostNameID); } JNIEXPORT jobject JNICALL NET_SockaddrToInetAddress(JNIEnv *env, struct sockaddr *him, int *port) { jobject iaObj; - initInetAddrs(env); #ifdef AF_INET6 if (him->sa_family == AF_INET6) { jbyteArray ipaddress; @@ -238,31 +210,15 @@ NET_SockaddrToInetAddress(JNIEnv *env, struct sockaddr *him, int *port) { jbyte *caddr = (jbyte *)&(him6->sin6_addr); if (NET_IsIPv4Mapped(caddr)) { int address; - static jclass inet4Cls = 0; - if (inet4Cls == 0) { - jclass c = (*env)->FindClass(env, "java/net/Inet4Address"); - CHECK_NULL_RETURN(c, NULL); - inet4Cls = (*env)->NewGlobalRef(env, c); - CHECK_NULL_RETURN(inet4Cls, NULL); - (*env)->DeleteLocalRef(env, c); - } - iaObj = (*env)->NewObject(env, inet4Cls, ia4_ctrID); + iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID); CHECK_NULL_RETURN(iaObj, NULL); address = NET_IPv4MappedToIPv4(caddr); setInetAddress_addr(env, iaObj, address); setInetAddress_family(env, iaObj, IPv4); } else { - static jclass inet6Cls = 0; jint scope; int ret; - if (inet6Cls == 0) { - jclass c = (*env)->FindClass(env, "java/net/Inet6Address"); - CHECK_NULL_RETURN(c, NULL); - inet6Cls = (*env)->NewGlobalRef(env, c); - CHECK_NULL_RETURN(inet6Cls, NULL); - (*env)->DeleteLocalRef(env, c); - } - iaObj = (*env)->NewObject(env, inet6Cls, ia6_ctrID); + iaObj = (*env)->NewObject(env, ia6_class, ia6_ctrID); CHECK_NULL_RETURN(iaObj, NULL); ret = setInet6Address_ipaddress(env, iaObj, (char *)&(him6->sin6_addr)); CHECK_NULL_RETURN(ret, NULL); @@ -275,16 +231,7 @@ NET_SockaddrToInetAddress(JNIEnv *env, struct sockaddr *him, int *port) { #endif /* AF_INET6 */ { struct sockaddr_in *him4 = (struct sockaddr_in *)him; - static jclass inet4Cls = 0; - - if (inet4Cls == 0) { - jclass c = (*env)->FindClass(env, "java/net/Inet4Address"); - CHECK_NULL_RETURN(c, NULL); - inet4Cls = (*env)->NewGlobalRef(env, c); - CHECK_NULL_RETURN(inet4Cls, NULL); - (*env)->DeleteLocalRef(env, c); - } - iaObj = (*env)->NewObject(env, inet4Cls, ia4_ctrID); + iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID); CHECK_NULL_RETURN(iaObj, NULL); setInetAddress_family(env, iaObj, IPv4); setInetAddress_addr(env, iaObj, ntohl(him4->sin_addr.s_addr)); diff --git a/jdk/src/share/native/java/net/net_util.h b/jdk/src/share/native/java/net/net_util.h index f0f242eb632..b77d02b2fad 100644 --- a/jdk/src/share/native/java/net/net_util.h +++ b/jdk/src/share/native/java/net/net_util.h @@ -55,6 +55,8 @@ extern jfieldID iac_familyID; extern jfieldID iac_hostNameID; extern jfieldID ia_preferIPv6AddressID; +JNIEXPORT void JNICALL initInetAddressIDs(JNIEnv *env); + /** (Inet6Address accessors) * set_ methods return JNI_TRUE on success JNI_FALSE on error * get_ methods that return int/boolean, return -1 on error diff --git a/jdk/src/solaris/native/java/net/Inet4AddressImpl.c b/jdk/src/solaris/native/java/net/Inet4AddressImpl.c index ea67245f0fe..9d79d3eb80a 100644 --- a/jdk/src/solaris/native/java/net/Inet4AddressImpl.c +++ b/jdk/src/solaris/native/java/net/Inet4AddressImpl.c @@ -51,29 +51,6 @@ #define HAS_GLIBC_GETHOSTBY_R 1 #endif -static jclass ni_iacls; -static jclass ni_ia4cls; -static jmethodID ni_ia4ctrID; - -static jboolean initializeInetClasses(JNIEnv *env) -{ - static int initialized = 0; - if (!initialized) { - ni_iacls = (*env)->FindClass(env, "java/net/InetAddress"); - CHECK_NULL_RETURN(ni_iacls, JNI_FALSE); - ni_iacls = (*env)->NewGlobalRef(env, ni_iacls); - CHECK_NULL_RETURN(ni_iacls, JNI_FALSE); - ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address"); - CHECK_NULL_RETURN(ni_ia4cls, JNI_FALSE); - ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls); - CHECK_NULL_RETURN(ni_ia4cls, JNI_FALSE); - ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "", "()V"); - CHECK_NULL_RETURN(ni_ia4ctrID, JNI_FALSE); - initialized = 1; - } - return JNI_TRUE; -} - #if defined(_ALLBSD_SOURCE) && !defined(HAS_GLIBC_GETHOSTBY_R) extern jobjectArray lookupIfLocalhost(JNIEnv *env, const char *hostname, jboolean includeV6); @@ -147,8 +124,8 @@ Java_java_net_Inet4AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, int error=0; struct addrinfo hints, *res, *resNew = NULL; - if (!initializeInetClasses(env)) - return NULL; + initInetAddressIDs(env); + JNU_CHECK_EXCEPTION_RETURN(env, NULL); if (IS_NULL(host)) { JNU_ThrowNullPointerException(env, "host is null"); @@ -241,7 +218,7 @@ Java_java_net_Inet4AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, goto cleanupAndReturn; } - ret = (*env)->NewObjectArray(env, retLen, ni_iacls, NULL); + ret = (*env)->NewObjectArray(env, retLen, ia_class, NULL); if (IS_NULL(ret)) { /* we may have memory to free at the end of this */ goto cleanupAndReturn; @@ -251,7 +228,7 @@ Java_java_net_Inet4AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, /* We need 4 bytes to store ipv4 address; */ int len = 4; - jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID); + jobject iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID); if (IS_NULL(iaObj)) { /* we may have memory to free at the end of this */ ret = NULL; @@ -407,8 +384,8 @@ Java_java_net_Inet4AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, int error = 0; struct addrinfo hints, *res, *resNew = NULL; - if (!initializeInetClasses(env)) - return NULL; + initInetAddressIDs(env); + JNU_CHECK_EXCEPTION_RETURN(env, NULL); if (IS_NULL(host)) { JNU_ThrowNullPointerException(env, "host is null"); @@ -486,7 +463,7 @@ Java_java_net_Inet4AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, retLen = i; iterator = resNew; - ret = (*env)->NewObjectArray(env, retLen, ni_iacls, NULL); + ret = (*env)->NewObjectArray(env, retLen, ia_class, NULL); if (IS_NULL(ret)) { /* we may have memory to free at the end of this */ @@ -495,7 +472,7 @@ Java_java_net_Inet4AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, i = 0; while (iterator != NULL) { - jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID); + jobject iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID); if (IS_NULL(iaObj)) { ret = NULL; goto cleanupAndReturn; diff --git a/jdk/src/solaris/native/java/net/Inet6AddressImpl.c b/jdk/src/solaris/native/java/net/Inet6AddressImpl.c index 1e4e7d684d1..8de5a9bea1b 100644 --- a/jdk/src/solaris/native/java/net/Inet6AddressImpl.c +++ b/jdk/src/solaris/native/java/net/Inet6AddressImpl.c @@ -117,44 +117,6 @@ Java_java_net_Inet6AddressImpl_getLocalHostName(JNIEnv *env, jobject this) { return (*env)->NewStringUTF(env, hostname); } -static jclass ni_iacls; -static jclass ni_ia4cls; -static jclass ni_ia6cls; -static jmethodID ni_ia4ctrID; -static jmethodID ni_ia6ctrID; -static jboolean preferIPv6Address; - -static jboolean initializeInetClasses(JNIEnv *env) -{ - jfieldID ni_preferIPv6AddressID; - static int initialized = 0; - if (!initialized) { - ni_iacls = (*env)->FindClass(env, "java/net/InetAddress"); - CHECK_NULL_RETURN(ni_iacls, JNI_FALSE); - ni_iacls = (*env)->NewGlobalRef(env, ni_iacls); - CHECK_NULL_RETURN(ni_iacls, JNI_FALSE); - ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address"); - CHECK_NULL_RETURN(ni_ia4cls, JNI_FALSE); - ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls); - CHECK_NULL_RETURN(ni_ia4cls, JNI_FALSE); - ni_ia6cls = (*env)->FindClass(env, "java/net/Inet6Address"); - CHECK_NULL_RETURN(ni_ia6cls, JNI_FALSE); - ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls); - CHECK_NULL_RETURN(ni_ia6cls, JNI_FALSE); - ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "", "()V"); - CHECK_NULL_RETURN(ni_ia4ctrID, JNI_FALSE); - ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "", "()V"); - CHECK_NULL_RETURN(ni_ia6ctrID, JNI_FALSE); - ni_preferIPv6AddressID = - (*env)->GetStaticFieldID(env, ni_iacls, "preferIPv6Address", "Z"); - CHECK_NULL_RETURN(ni_preferIPv6AddressID, JNI_FALSE); - preferIPv6Address = - (*env)->GetStaticBooleanField(env, ia_class, ia_preferIPv6AddressID); - initialized = 1; - } - return JNI_TRUE; -} - #ifdef MACOSX /* also called from Inet4AddressImpl.c */ __private_extern__ jobjectArray @@ -169,9 +131,8 @@ lookupIfLocalhost(JNIEnv *env, const char *hostname, jboolean includeV6) jboolean includeLoopback = JNI_FALSE; jobject name; - // Make sure static variables we need are set. - if (!initializeInetClasses(env)) - return NULL; + initInetAddressIDs(env); + JNU_CHECK_EXCEPTION_RETURN(env, NULL); /* If the requested name matches this host's hostname, return IP addresses * from all attached interfaces. (#2844683 et al) This prevents undesired @@ -196,7 +157,7 @@ lookupIfLocalhost(JNIEnv *env, const char *hostname, jboolean includeV6) } name = (*env)->NewStringUTF(env, hostname); - CHECK_NULL(name); + CHECK_NULL_RETURN(name, NULL); /* Iterate over the interfaces, and total up the number of IPv4 and IPv6 * addresses we have. Also keep a count of loopback addresses. We need to @@ -231,10 +192,10 @@ lookupIfLocalhost(JNIEnv *env, const char *hostname, jboolean includeV6) /* Create and fill the Java array. */ int arraySize = addrs4 + addrs6 - (includeLoopback ? 0 : (numV4Loopbacks + numV6Loopbacks)); - result = (*env)->NewObjectArray(env, arraySize, ni_iacls, NULL); + result = (*env)->NewObjectArray(env, arraySize, ia_class, NULL); if (!result) goto done; - if (preferIPv6Address) { + if ((*env)->GetStaticBooleanField(env, ia_class, ia_preferIPv6AddressID)) { i = includeLoopback ? addrs6 : (addrs6 - numV6Loopbacks); j = 0; } else { @@ -298,8 +259,8 @@ Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, struct addrinfo hints, *res, *resNew = NULL; #endif /* AF_INET6 */ - if (!initializeInetClasses(env)) - return NULL; + initInetAddressIDs(env); + JNU_CHECK_EXCEPTION_RETURN(env, NULL); if (IS_NULL(host)) { JNU_ThrowNullPointerException(env, "host is null"); @@ -423,14 +384,14 @@ Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, retLen = i; iterator = resNew; - ret = (*env)->NewObjectArray(env, retLen, ni_iacls, NULL); + ret = (*env)->NewObjectArray(env, retLen, ia_class, NULL); if (IS_NULL(ret)) { /* we may have memory to free at the end of this */ goto cleanupAndReturn; } - if (preferIPv6Address) { + if ((*env)->GetStaticBooleanField(env, ia_class, ia_preferIPv6AddressID)) { /* AF_INET addresses will be offset by inet6Count */ inetIndex = inet6Count; inet6Index = 0; @@ -443,7 +404,7 @@ Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, while (iterator != NULL) { int ret1; if (iterator->ai_family == AF_INET) { - jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID); + jobject iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID); if (IS_NULL(iaObj)) { ret = NULL; goto cleanupAndReturn; @@ -455,7 +416,7 @@ Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, } else if (iterator->ai_family == AF_INET6) { jint scope = 0; - jobject iaObj = (*env)->NewObject(env, ni_ia6cls, ni_ia6ctrID); + jobject iaObj = (*env)->NewObject(env, ia6_class, ia6_ctrID); if (IS_NULL(iaObj)) { ret = NULL; goto cleanupAndReturn; @@ -549,7 +510,7 @@ Java_java_net_Inet6AddressImpl_getHostByAddr(JNIEnv *env, jobject this, if (!error) { ret = (*env)->NewStringUTF(env, host); - CHECK_NULL(ret); + CHECK_NULL_RETURN(ret, NULL); } #endif /* AF_INET6 */ diff --git a/jdk/src/solaris/native/java/net/NetworkInterface.c b/jdk/src/solaris/native/java/net/NetworkInterface.c index 16acf07a269..380dff19cc8 100644 --- a/jdk/src/solaris/native/java/net/NetworkInterface.c +++ b/jdk/src/solaris/native/java/net/NetworkInterface.c @@ -118,12 +118,7 @@ jfieldID ni_parentID; jfieldID ni_defaultIndexID; jmethodID ni_ctrID; -static jclass ni_iacls; -static jclass ni_ia4cls; -static jclass ni_ia6cls; static jclass ni_ibcls; -static jmethodID ni_ia4ctrID; -static jmethodID ni_ia6ctrID; static jmethodID ni_ibctrID; static jfieldID ni_ibaddressID; static jfieldID ni_ib4broadcastID; @@ -198,27 +193,10 @@ Java_java_net_NetworkInterface_init(JNIEnv *env, jclass cls) { CHECK_NULL(ni_parentID); ni_ctrID = (*env)->GetMethodID(env, ni_class, "", "()V"); CHECK_NULL(ni_ctrID); - - ni_iacls = (*env)->FindClass(env, "java/net/InetAddress"); - CHECK_NULL(ni_iacls); - ni_iacls = (*env)->NewGlobalRef(env, ni_iacls); - CHECK_NULL(ni_iacls); - ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address"); - CHECK_NULL(ni_ia4cls); - ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls); - CHECK_NULL(ni_ia4cls); - ni_ia6cls = (*env)->FindClass(env, "java/net/Inet6Address"); - CHECK_NULL(ni_ia6cls); - ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls); - CHECK_NULL(ni_ia6cls); ni_ibcls = (*env)->FindClass(env, "java/net/InterfaceAddress"); CHECK_NULL(ni_ibcls); ni_ibcls = (*env)->NewGlobalRef(env, ni_ibcls); CHECK_NULL(ni_ibcls); - ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "", "()V"); - CHECK_NULL(ni_ia4ctrID); - ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "", "()V"); - CHECK_NULL(ni_ia6ctrID); ni_ibctrID = (*env)->GetMethodID(env, ni_ibcls, "", "()V"); CHECK_NULL(ni_ibctrID); ni_ibaddressID = (*env)->GetFieldID(env, ni_ibcls, "address", "Ljava/net/InetAddress;"); @@ -228,6 +206,9 @@ Java_java_net_NetworkInterface_init(JNIEnv *env, jclass cls) { ni_ib4maskID = (*env)->GetFieldID(env, ni_ibcls, "maskLength", "S"); CHECK_NULL(ni_ib4maskID); ni_defaultIndexID = (*env)->GetStaticFieldID(env, ni_class, "defaultIndex", "I"); + CHECK_NULL(ni_defaultIndexID); + + initInetAddressIDs(env); } @@ -654,7 +635,7 @@ jobject createNetworkInterface(JNIEnv *env, netif *ifs) { /* * Create the array of InetAddresses */ - addrArr = (*env)->NewObjectArray(env, addr_count, ni_iacls, NULL); + addrArr = (*env)->NewObjectArray(env, addr_count, ia_class, NULL); if (addrArr == NULL) { return NULL; } @@ -671,7 +652,7 @@ jobject createNetworkInterface(JNIEnv *env, netif *ifs) { jobject ibObj = NULL; if (addrP->family == AF_INET) { - iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID); + iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID); if (iaObj) { setInetAddress_addr(env, iaObj, htonl(((struct sockaddr_in*)addrP->addr)->sin_addr.s_addr)); } @@ -680,7 +661,7 @@ jobject createNetworkInterface(JNIEnv *env, netif *ifs) { (*env)->SetObjectField(env, ibObj, ni_ibaddressID, iaObj); if (addrP->brdcast) { jobject ia2Obj = NULL; - ia2Obj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID); + ia2Obj = (*env)->NewObject(env, ia4_class, ia4_ctrID); if (ia2Obj) { setInetAddress_addr(env, ia2Obj, htonl(((struct sockaddr_in*)addrP->brdcast)->sin_addr.s_addr)); (*env)->SetObjectField(env, ibObj, ni_ib4broadcastID, ia2Obj); @@ -694,7 +675,7 @@ jobject createNetworkInterface(JNIEnv *env, netif *ifs) { #ifdef AF_INET6 if (addrP->family == AF_INET6) { int scope=0; - iaObj = (*env)->NewObject(env, ni_ia6cls, ni_ia6ctrID); + iaObj = (*env)->NewObject(env, ia6_class, ia6_ctrID); if (iaObj) { int ret = setInet6Address_ipaddress(env, iaObj, (char *)&(((struct sockaddr_in6*)addrP->addr)->sin6_addr)); if (ret == JNI_FALSE) { diff --git a/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c b/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c index 53d8fae2751..3df46c85171 100644 --- a/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c +++ b/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c @@ -166,9 +166,8 @@ Java_java_net_PlainDatagramSocketImpl_init(JNIEnv *env, jclass cls) { IO_fd_fdID = NET_GetFileDescriptorID(env); CHECK_NULL(IO_fd_fdID); - Java_java_net_InetAddress_init(env, 0); - Java_java_net_Inet4Address_init(env, 0); - Java_java_net_Inet6Address_init(env, 0); + initInetAddressIDs(env); + JNU_CHECK_EXCEPTION(env); Java_java_net_NetworkInterface_init(env, 0); } diff --git a/jdk/src/solaris/native/java/net/PlainSocketImpl.c b/jdk/src/solaris/native/java/net/PlainSocketImpl.c index a4958efc512..ef6421397af 100644 --- a/jdk/src/solaris/native/java/net/PlainSocketImpl.c +++ b/jdk/src/solaris/native/java/net/PlainSocketImpl.c @@ -162,6 +162,9 @@ Java_java_net_PlainSocketImpl_initProto(JNIEnv *env, jclass cls) { IO_fd_fdID = NET_GetFileDescriptorID(env); CHECK_NULL(IO_fd_fdID); + initInetAddressIDs(env); + JNU_CHECK_EXCEPTION(env); + /* Create the marker fd used for dup2 */ marker_fd = getMarkerFD(); } diff --git a/jdk/src/solaris/native/sun/nio/ch/IOUtil.c b/jdk/src/solaris/native/sun/nio/ch/IOUtil.c index 438bf41ddea..d8bbe849252 100644 --- a/jdk/src/solaris/native/sun/nio/ch/IOUtil.c +++ b/jdk/src/solaris/native/sun/nio/ch/IOUtil.c @@ -35,6 +35,7 @@ #include "java_lang_Integer.h" #include "nio.h" #include "nio_util.h" +#include "net_util.h" static jfieldID fd_fdID; /* for jint 'fd' in java.io.FileDescriptor */ @@ -44,6 +45,7 @@ Java_sun_nio_ch_IOUtil_initIDs(JNIEnv *env, jclass clazz) { CHECK_NULL(clazz = (*env)->FindClass(env, "java/io/FileDescriptor")); CHECK_NULL(fd_fdID = (*env)->GetFieldID(env, clazz, "fd", "I")); + initInetAddressIDs(env); } JNIEXPORT jboolean JNICALL diff --git a/jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c b/jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c index f03be57b5d0..db97c948ee6 100644 --- a/jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c +++ b/jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c @@ -157,6 +157,7 @@ Java_sun_nio_ch_sctp_SctpNet_init } preCloseFD = sp[0]; close(sp[1]); + initInetAddressIDs(env); } /* diff --git a/jdk/src/windows/native/java/net/Inet4AddressImpl.c b/jdk/src/windows/native/java/net/Inet4AddressImpl.c index f34b5e12431..f21f2de3245 100644 --- a/jdk/src/windows/native/java/net/Inet4AddressImpl.c +++ b/jdk/src/windows/native/java/net/Inet4AddressImpl.c @@ -111,11 +111,6 @@ Java_java_net_Inet4AddressImpl_getLocalHostName (JNIEnv *env, jobject this) { return JNU_NewStringPlatform(env, hostname); } -static jclass ni_iacls; -static jclass ni_ia4cls; -static jmethodID ni_ia4ctrID; -static int initialized = 0; - /* * Find an internet address for a given hostname. Not this this * code only works for addresses of type INET. The translation @@ -140,19 +135,8 @@ Java_java_net_Inet4AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, jobjectArray ret = NULL; - if (!initialized) { - ni_iacls = (*env)->FindClass(env, "java/net/InetAddress"); - CHECK_NULL_RETURN(ni_iacls, NULL); - ni_iacls = (*env)->NewGlobalRef(env, ni_iacls); - CHECK_NULL_RETURN(ni_iacls, NULL); - ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address"); - CHECK_NULL_RETURN(ni_ia4cls, NULL); - ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls); - CHECK_NULL_RETURN(ni_ia4cls, NULL); - ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "", "()V"); - CHECK_NULL_RETURN(ni_ia4ctrID, NULL); - initialized = 1; - } + initInetAddressIDs(env); + JNU_CHECK_EXCEPTION_RETURN(env, NULL); if (IS_NULL(host)) { JNU_ThrowNullPointerException(env, "host argument"); @@ -196,13 +180,13 @@ Java_java_net_Inet4AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, address |= (addr[1]<<8) & 0xff00; address |= addr[0]; - ret = (*env)->NewObjectArray(env, 1, ni_iacls, NULL); + ret = (*env)->NewObjectArray(env, 1, ia_class, NULL); if (IS_NULL(ret)) { goto cleanupAndReturn; } - iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID); + iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID); if (IS_NULL(iaObj)) { ret = NULL; goto cleanupAndReturn; @@ -226,7 +210,7 @@ Java_java_net_Inet4AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, addrp++; } - ret = (*env)->NewObjectArray(env, i, ni_iacls, NULL); + ret = (*env)->NewObjectArray(env, i, ia_class, NULL); if (IS_NULL(ret)) { goto cleanupAndReturn; @@ -235,7 +219,7 @@ Java_java_net_Inet4AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, addrp = (struct in_addr **) hp->h_addr_list; i = 0; while (*addrp != (struct in_addr *) 0) { - jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID); + jobject iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID); if (IS_NULL(iaObj)) { ret = NULL; goto cleanupAndReturn; diff --git a/jdk/src/windows/native/java/net/Inet6AddressImpl.c b/jdk/src/windows/native/java/net/Inet6AddressImpl.c index 24176b29278..cac70b34dfa 100644 --- a/jdk/src/windows/native/java/net/Inet6AddressImpl.c +++ b/jdk/src/windows/native/java/net/Inet6AddressImpl.c @@ -72,13 +72,6 @@ Java_java_net_Inet6AddressImpl_getLocalHostName (JNIEnv *env, jobject this) { return JNU_NewStringPlatform (env, hostname); } -static jclass ni_iacls; -static jclass ni_ia4cls; -static jclass ni_ia6cls; -static jmethodID ni_ia4ctrID; -static jmethodID ni_ia6ctrID; -static int initialized = 0; - JNIEXPORT jobjectArray JNICALL Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, jstring host) { @@ -86,30 +79,13 @@ Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, jobjectArray ret = 0; int retLen = 0; jboolean preferIPv6Address; - static jfieldID ia_preferIPv6AddressID; int error=0; struct addrinfo hints, *res, *resNew = NULL; - if (!initialized) { - ni_iacls = (*env)->FindClass(env, "java/net/InetAddress"); - CHECK_NULL_RETURN(ni_iacls, NULL); - ni_iacls = (*env)->NewGlobalRef(env, ni_iacls); - CHECK_NULL_RETURN(ni_iacls, NULL); - ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address"); - CHECK_NULL_RETURN(ni_ia4cls, NULL); - ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls); - CHECK_NULL_RETURN(ni_ia4cls, NULL); - ni_ia6cls = (*env)->FindClass(env, "java/net/Inet6Address"); - CHECK_NULL_RETURN(ni_ia6cls, NULL); - ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls); - CHECK_NULL_RETURN(ni_ia6cls, NULL); - ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "", "()V"); - CHECK_NULL_RETURN(ni_ia4ctrID, NULL); - ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "", "()V"); - CHECK_NULL_RETURN(ni_ia6ctrID, NULL); - initialized = 1; - } + initInetAddressIDs(env); + JNU_CHECK_EXCEPTION_RETURN(env, NULL); + if (IS_NULL(host)) { JNU_ThrowNullPointerException(env, "host is null"); return 0; @@ -117,17 +93,6 @@ Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, hostname = JNU_GetStringPlatformChars(env, host, JNI_FALSE); CHECK_NULL_RETURN(hostname, NULL); - if (ia_preferIPv6AddressID == NULL) { - jclass c = (*env)->FindClass(env,"java/net/InetAddress"); - if (c) { - ia_preferIPv6AddressID = - (*env)->GetStaticFieldID(env, c, "preferIPv6Address", "Z"); - } - if (ia_preferIPv6AddressID == NULL) { - JNU_ReleaseStringPlatformChars(env, host, hostname); - return NULL; - } - } /* get the address preference */ preferIPv6Address = (*env)->GetStaticBooleanField(env, ia_class, ia_preferIPv6AddressID); @@ -229,7 +194,7 @@ Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, retLen = i; iterator = resNew; i = 0; - ret = (*env)->NewObjectArray(env, retLen, ni_iacls, NULL); + ret = (*env)->NewObjectArray(env, retLen, ia_class, NULL); if (IS_NULL(ret)) { /* we may have memory to free at the end of this */ @@ -246,7 +211,7 @@ Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, while (iterator != NULL) { if (iterator->ai_family == AF_INET) { - jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID); + jobject iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID); if (IS_NULL(iaObj)) { ret = NULL; goto cleanupAndReturn; @@ -257,7 +222,7 @@ Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this, inetIndex ++; } else if (iterator->ai_family == AF_INET6) { jint scope = 0, ret1; - jobject iaObj = (*env)->NewObject(env, ni_ia6cls, ni_ia6ctrID); + jobject iaObj = (*env)->NewObject(env, ia6_class, ia6_ctrID); if (IS_NULL(iaObj)) { ret = NULL; goto cleanupAndReturn; @@ -347,7 +312,7 @@ Java_java_net_Inet6AddressImpl_getHostByAddr(JNIEnv *env, jobject this, if (!error) { ret = (*env)->NewStringUTF(env, host); - CHECK_NULL(ret); + CHECK_NULL_RETURN(ret, NULL); } if (ret == NULL) { diff --git a/jdk/src/windows/native/java/net/NetworkInterface.c b/jdk/src/windows/native/java/net/NetworkInterface.c index fee86874771..44e9a61636b 100644 --- a/jdk/src/windows/native/java/net/NetworkInterface.c +++ b/jdk/src/windows/native/java/net/NetworkInterface.c @@ -65,13 +65,6 @@ jfieldID ni_bindsID; /* NetworkInterface.bindings */ jfieldID ni_nameID; /* NetworkInterface.name */ jfieldID ni_displayNameID; /* NetworkInterface.displayName */ jfieldID ni_childsID; /* NetworkInterface.childs */ -jclass ni_iacls; /* InetAddress */ - -jclass ni_ia4cls; /* Inet4Address */ -jmethodID ni_ia4Ctor; /* Inet4Address() */ - -jclass ni_ia6cls; /* Inet6Address */ -jmethodID ni_ia6ctrID; /* Inet6Address() */ jclass ni_ibcls; /* InterfaceAddress */ jmethodID ni_ibctrID; /* InterfaceAddress() */ @@ -515,26 +508,6 @@ Java_java_net_NetworkInterface_init(JNIEnv *env, jclass cls) CHECK_NULL(ni_childsID); ni_ctor = (*env)->GetMethodID(env, ni_class, "", "()V"); CHECK_NULL(ni_ctor); - - ni_iacls = (*env)->FindClass(env, "java/net/InetAddress"); - CHECK_NULL(ni_iacls); - ni_iacls = (*env)->NewGlobalRef(env, ni_iacls); - CHECK_NULL(ni_iacls); - - ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address"); - CHECK_NULL(ni_ia4cls); - ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls); - CHECK_NULL(ni_ia4cls); - ni_ia4Ctor = (*env)->GetMethodID(env, ni_ia4cls, "", "()V"); - CHECK_NULL(ni_ia4Ctor); - - ni_ia6cls = (*env)->FindClass(env, "java/net/Inet6Address"); - CHECK_NULL(ni_ia6cls); - ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls); - CHECK_NULL(ni_ia6cls); - ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "", "()V"); - CHECK_NULL(ni_ia6ctrID); - ni_ibcls = (*env)->FindClass(env, "java/net/InterfaceAddress"); CHECK_NULL(ni_ibcls); ni_ibcls = (*env)->NewGlobalRef(env, ni_ibcls); @@ -546,6 +519,9 @@ Java_java_net_NetworkInterface_init(JNIEnv *env, jclass cls) ni_ibbroadcastID = (*env)->GetFieldID(env, ni_ibcls, "broadcast", "Ljava/net/Inet4Address;"); CHECK_NULL(ni_ibbroadcastID); ni_ibmaskID = (*env)->GetFieldID(env, ni_ibcls, "maskLength", "S"); + CHECK_NULL(ni_ibmaskID); + + initInetAddressIDs(env); } /* @@ -591,7 +567,7 @@ jobject createNetworkInterface return NULL; } } - addrArr = (*env)->NewObjectArray(env, netaddrCount, ni_iacls, NULL); + addrArr = (*env)->NewObjectArray(env, netaddrCount, ia_class, NULL); if (addrArr == NULL) { free_netaddr(netaddrP); return NULL; @@ -609,7 +585,7 @@ jobject createNetworkInterface jobject iaObj, ia2Obj; jobject ibObj = NULL; if (addrs->addr.him.sa_family == AF_INET) { - iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4Ctor); + iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID); if (iaObj == NULL) { free_netaddr(netaddrP); return NULL; @@ -624,7 +600,7 @@ jobject createNetworkInterface return NULL; } (*env)->SetObjectField(env, ibObj, ni_ibaddressID, iaObj); - ia2Obj = (*env)->NewObject(env, ni_ia4cls, ni_ia4Ctor); + ia2Obj = (*env)->NewObject(env, ia4_class, ia4_ctrID); if (ia2Obj == NULL) { free_netaddr(netaddrP); return NULL; @@ -636,7 +612,7 @@ jobject createNetworkInterface } } else /* AF_INET6 */ { int scope; - iaObj = (*env)->NewObject(env, ni_ia6cls, ni_ia6ctrID); + iaObj = (*env)->NewObject(env, ia6_class, ia6_ctrID); if (iaObj) { int ret = setInet6Address_ipaddress(env, iaObj, (jbyte *)&(addrs->addr.him6.sin6_addr.s6_addr)); if (ret == JNI_FALSE) { diff --git a/jdk/src/windows/native/java/net/NetworkInterface.h b/jdk/src/windows/native/java/net/NetworkInterface.h index a73c62c66b3..929ac507f89 100644 --- a/jdk/src/windows/native/java/net/NetworkInterface.h +++ b/jdk/src/windows/native/java/net/NetworkInterface.h @@ -70,16 +70,6 @@ extern jfieldID ni_nameID; /* NetworkInterface.name */ extern jfieldID ni_displayNameID; /* NetworkInterface.displayName */ extern jfieldID ni_childsID; /* NetworkInterface.childs */ -extern jclass ni_iacls; /* InetAddress */ - -extern jclass ni_ia4cls; /* Inet4Address */ -extern jmethodID ni_ia4Ctor; /* Inet4Address() */ - -extern jclass ni_ia6cls; /* Inet6Address */ -extern jmethodID ni_ia6ctrID; /* Inet6Address() */ -extern jfieldID ni_ia6ipaddressID; -extern jfieldID ni_ia6ipaddressID; - extern jclass ni_ibcls; /* InterfaceAddress */ extern jmethodID ni_ibctrID; /* InterfaceAddress() */ extern jfieldID ni_ibaddressID; /* InterfaceAddress.address */ diff --git a/jdk/src/windows/native/java/net/NetworkInterface_winXP.c b/jdk/src/windows/native/java/net/NetworkInterface_winXP.c index 7e3e79d1f49..4d29e7f799d 100644 --- a/jdk/src/windows/native/java/net/NetworkInterface_winXP.c +++ b/jdk/src/windows/native/java/net/NetworkInterface_winXP.c @@ -504,7 +504,7 @@ static jobject createNetworkInterfaceXP(JNIEnv *env, netif *ifs) } } - addrArr = (*env)->NewObjectArray(env, netaddrCount, ni_iacls, NULL); + addrArr = (*env)->NewObjectArray(env, netaddrCount, ia_class, NULL); if (addrArr == NULL) { return NULL; } @@ -522,7 +522,7 @@ static jobject createNetworkInterfaceXP(JNIEnv *env, netif *ifs) jobject iaObj, ia2Obj; jobject ibObj = NULL; if (addrs->addr.him.sa_family == AF_INET) { - iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4Ctor); + iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID); if (iaObj == NULL) { return NULL; } @@ -536,7 +536,7 @@ static jobject createNetworkInterfaceXP(JNIEnv *env, netif *ifs) return NULL; } (*env)->SetObjectField(env, ibObj, ni_ibaddressID, iaObj); - ia2Obj = (*env)->NewObject(env, ni_ia4cls, ni_ia4Ctor); + ia2Obj = (*env)->NewObject(env, ia4_class, ia4_ctrID); if (ia2Obj == NULL) { free_netaddr(netaddrP); return NULL; @@ -547,7 +547,7 @@ static jobject createNetworkInterfaceXP(JNIEnv *env, netif *ifs) (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj); } else /* AF_INET6 */ { int scope; - iaObj = (*env)->NewObject(env, ni_ia6cls, ni_ia6ctrID); + iaObj = (*env)->NewObject(env, ia6_class, ia6_ctrID); if (iaObj) { int ret = setInet6Address_ipaddress(env, iaObj, (jbyte *)&(addrs->addr.him6.sin6_addr.s6_addr)); if (ret == JNI_FALSE) { diff --git a/jdk/src/windows/native/sun/nio/ch/IOUtil.c b/jdk/src/windows/native/sun/nio/ch/IOUtil.c index 370dcf5e23f..49de1eb89d7 100644 --- a/jdk/src/windows/native/sun/nio/ch/IOUtil.c +++ b/jdk/src/windows/native/sun/nio/ch/IOUtil.c @@ -33,6 +33,7 @@ #include "nio.h" #include "nio_util.h" +#include "net_util.h" #include "sun_nio_ch_IOUtil.h" /* field id for jlong 'handle' in java.io.FileDescriptor used for file fds */ @@ -55,6 +56,7 @@ Java_sun_nio_ch_IOUtil_initIDs(JNIEnv *env, jclass clazz) CHECK_NULL(clazz = (*env)->FindClass(env, "java/io/FileDescriptor")); CHECK_NULL(fd_fdID = (*env)->GetFieldID(env, clazz, "fd", "I")); CHECK_NULL(handle_fdID = (*env)->GetFieldID(env, clazz, "handle", "J")); + initInetAddressIDs(env); } /************************************************************** From 23cc62f593e5cddd762b222a5fb4ac9d907cea6b Mon Sep 17 00:00:00 2001 From: Erik Joelsson Date: Wed, 5 Feb 2014 11:03:54 +0100 Subject: [PATCH 139/158] 8026773: Failing compilation in Corba does not fail the build Reviewed-by: ihse, tbell --- common/autoconf/spec.gmk.in | 11 +++++++---- make/common/JavaCompilation.gmk | 12 +++++++++++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/common/autoconf/spec.gmk.in b/common/autoconf/spec.gmk.in index b92db9125da..ee18cb1b07a 100644 --- a/common/autoconf/spec.gmk.in +++ b/common/autoconf/spec.gmk.in @@ -456,10 +456,13 @@ NATIVE2ASCII:=@FIXPATH@ @NATIVE2ASCII@ JARSIGNER:=@FIXPATH@ @JARSIGNER@ # You run the new javac using the boot jdk with $(BOOT_JDK)/bin/java $(NEW_JAVAC) ... -BOOTSTRAP_JAVAC_JAR:=$(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar -BOOTSTRAP_JAVAC_ARGS:="-Xbootclasspath/p:$(BOOTSTRAP_JAVAC_JAR)" -cp $(BOOTSTRAP_JAVAC_JAR) -NEW_JAVAC = $(BOOTSTRAP_JAVAC_ARGS) com.sun.tools.javac.Main -NEW_JAVADOC = $(BOOTSTRAP_JAVAC_ARGS) com.sun.tools.javadoc.Main +INTERIM_LANGTOOLS_JAR := $(LANGTOOLS_OUTPUTDIR)/dist/interim_langtools.jar +INTERIM_LANGTOOLS_ARGS := "-Xbootclasspath/p:$(INTERIM_LANGTOOLS_JAR)" -cp $(INTERIM_LANGTOOLS_JAR) +NEW_JAVAC = $(INTERIM_LANGTOOLS_ARGS) com.sun.tools.javac.Main +NEW_JAVADOC = $(INTERIM_LANGTOOLS_ARGS) com.sun.tools.javadoc.Main + +# The interim corba jar is needed for running rmic +INTERIM_CORBA_JAR := $(CORBA_OUTPUTDIR)/dist/interim_corba.jar # Base flags for RC # Guarding this against resetting value. Legacy make files include spec multiple diff --git a/make/common/JavaCompilation.gmk b/make/common/JavaCompilation.gmk index d192c66cdd6..fe4ff3e5eb1 100644 --- a/make/common/JavaCompilation.gmk +++ b/make/common/JavaCompilation.gmk @@ -247,6 +247,8 @@ define SetupArchive $$($1_SUPDATE_CONTENTS) \ $$($1_JARINDEX) && true ) + # Add jar to target list + $1 += $$($1_JAR) endef define SetupZipArchive @@ -307,6 +309,9 @@ define SetupZipArchive $(ECHO) Updating $$($1_NAME) $$(foreach i,$$($1_SRC),(cd $$i && $(ZIP) -qru $$@ . $$($1_ZIP_INCLUDES) $$($1_ZIP_EXCLUDES) -x \*_the.\* $$(addprefix -x$(SPACE),$$(patsubst $$i/%,%,$$($1_EXCLUDE_FILES))) || test "$$$$?" = "12" )$$(NEWLINE)) true $(TOUCH) $$@ + + # Add zip to target list + $1 += $$($1_ZIP) endef define add_file_to_copy @@ -579,6 +584,9 @@ define SetupJavaCompilation JARINDEX:=$$($1_JARINDEX), \ HEADERS:=$$($1_HEADERS), \ SETUP:=$$($1_SETUP))) + + # Add jar to target list + $1 += $$($1_JAR) endif # Check if a srczip was specified, then setup the rules for the srczip. @@ -589,6 +597,8 @@ define SetupJavaCompilation INCLUDES:=$$($1_INCLUDES), \ EXCLUDES:=$$($1_EXCLUDES), \ EXCLUDE_FILES:=$$($1_EXCLUDE_FILES))) - endif + # Add zip to target list + $1 += $$($1_SRCZIP) + endif endef From 08b547c9abdbb8d7740bf049f8fd66a7fbddd7d3 Mon Sep 17 00:00:00 2001 From: Erik Joelsson Date: Wed, 5 Feb 2014 11:04:21 +0100 Subject: [PATCH 140/158] 8026773: Failing compilation in Corba does not fail the build Reviewed-by: ihse, tbell --- corba/make/BuildCorba.gmk | 236 ++---------------------------------- corba/make/CommonCorba.gmk | 53 ++++++++ corba/make/CompileCorba.gmk | 87 +++++++++++++ corba/make/GensrcCorba.gmk | 153 +++++++++++++++++++++++ 4 files changed, 301 insertions(+), 228 deletions(-) create mode 100644 corba/make/CommonCorba.gmk create mode 100644 corba/make/CompileCorba.gmk create mode 100644 corba/make/GensrcCorba.gmk diff --git a/corba/make/BuildCorba.gmk b/corba/make/BuildCorba.gmk index 3190ce899cf..05bcbe31337 100644 --- a/corba/make/BuildCorba.gmk +++ b/corba/make/BuildCorba.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2007, 2014, 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,235 +31,15 @@ default: all include $(SPEC) -include MakeBase.gmk -include JavaCompilation.gmk -include IdlCompilation.gmk -# The Corba sources are old and generates a LOT of warnings. -# Disable these using Xlint, until someone cares to fix them. -DISABLE_CORBA_WARNINGS := -Xlint:all,-deprecation,-unchecked,-serial,-fallthrough,-cast,-rawtypes,-static,-dep-ann +gensrc-corba: + +$(MAKE) -f $(CORBA_TOPDIR)/make/GensrcCorba.gmk -# The "generate old bytecode" javac setup uses the new compiler to compile for the -# boot jdk to generate tools that need to be run with the boot jdk. -# Thus we force the target bytecode to the boot jdk bytecode. -$(eval $(call SetupJavaCompiler,GENERATE_OLDBYTECODE, \ - JVM := $(JAVA), \ - JAVAC := $(NEW_JAVAC), \ - FLAGS := $(BOOT_JDK_SOURCETARGET) \ - -bootclasspath "$(BOOT_RTJAR)$(PATH_SEP)$(BOOT_TOOLSJAR)" \ - $(DISABLE_CORBA_WARNINGS), \ - SERVER_DIR := $(SJAVAC_SERVER_DIR), \ - SERVER_JVM := $(SJAVAC_SERVER_JAVA))) +compile-corba: gensrc-corba + +$(MAKE) -f $(CORBA_TOPDIR)/make/CompileCorba.gmk -# The "generate new bytecode" uses the new compiler to generate bytecode -# for the new jdk that is being built. The code compiled by this setup -# cannot necessarily be run with the boot jdk. -$(eval $(call SetupJavaCompiler,GENERATE_NEWBYTECODE, \ - JVM := $(JAVA), \ - JAVAC := $(NEW_JAVAC), \ - FLAGS := -cp $(BOOT_TOOLSJAR) -XDignore.symbol.file=true $(DISABLE_CORBA_WARNINGS), \ - SERVER_DIR := $(SJAVAC_SERVER_DIR), \ - SERVER_JVM := $(SJAVAC_SERVER_JAVA))) - -$(eval $(call SetupJavaCompilation,BUILD_STRIPPROP, \ - SETUP := GENERATE_OLDBYTECODE, \ - SRC := $(CORBA_TOPDIR)/make/tools/src, \ - BIN := $(CORBA_OUTPUTDIR)/btclasses/stripprop_classes)) - -$(eval $(call SetupArchive,ARCHIVE_STRIPPROP, $(BUILD_STRIPPROP), \ - SRCS := $(CORBA_OUTPUTDIR)/btclasses/stripprop_classes, \ - JAR := $(CORBA_OUTPUTDIR)/btjars/stripproperties.jar, \ - JARMAIN := build.tools.stripproperties.StripPropertiesCorba)) - -$(eval $(call SetupJavaCompilation,BUILD_IDLJ, \ - SETUP := GENERATE_OLDBYTECODE, \ - SRC := $(CORBA_TOPDIR)/src/share/classes, \ - BIN := $(CORBA_OUTPUTDIR)/btclasses/idlj_classes, \ - COPY := .prp, \ - INCLUDES := com/sun/tools/corba/se/idl, \ - EXCLUDE_FILES := ResourceBundleUtil.java)) - -$(eval $(call SetupArchive,ARCHIVE_IDLJ, $(BUILD_IDLJ), \ - SRCS := $(CORBA_OUTPUTDIR)/btclasses/idlj_classes, \ - SUFFIXES := .class .prp, \ - JAR := $(CORBA_OUTPUTDIR)/btjars/idlj.jar, \ - JARMAIN := com.sun.tools.corba.se.idl.toJavaPortable.Compile)) - -$(eval $(call SetupJavaCompilation,BUILD_LOGUTIL, \ - SETUP := GENERATE_OLDBYTECODE, \ - SRC := $(CORBA_TOPDIR)/src/share/classes, \ - BIN := $(CORBA_OUTPUTDIR)/btclasses/logutil_classes, \ - INCLUDES := com/sun/tools/corba/se/logutil)) - -$(eval $(call SetupArchive,ARCHIVE_LOGUTIL, $(BUILD_LOGUTIL), \ - SRCS := $(CORBA_OUTPUTDIR)/btclasses/logutil_classes, \ - JAR := $(CORBA_OUTPUTDIR)/btjars/logutil.jar, \ - JARMAIN := com.sun.tools.corba.se.logutil.MC)) - -# Generate LogWrapper classes -$(CORBA_OUTPUTDIR)/logwrappers/com/sun/corba/se/impl/logging/%SystemException.java: \ - $(CORBA_TOPDIR)/src/share/classes/com/sun/corba/se/spi/logging/data/%.mc \ - $(CORBA_OUTPUTDIR)/btjars/logutil.jar - $(MKDIR) -p $(@D) - $(RM) -f $(@D)/_the_wrappers.d - $(ECHO) $(LOG_INFO) Generating class file from $*.mc - $(JAVA) -jar $(CORBA_OUTPUTDIR)/btjars/logutil.jar make-class $< $(@D) - -# Generate LogWrapper properties file by concatening resource files -$(CORBA_OUTPUTDIR)/logwrappers/com/sun/corba/se/impl/logging/LogStrings.properties: \ - $(CORBA_OUTPUTDIR)/logwrappers/ActivationSystemException.resource \ - $(CORBA_OUTPUTDIR)/logwrappers/IORSystemException.resource \ - $(CORBA_OUTPUTDIR)/logwrappers/InterceptorsSystemException.resource \ - $(CORBA_OUTPUTDIR)/logwrappers/NamingSystemException.resource \ - $(CORBA_OUTPUTDIR)/logwrappers/OMGSystemException.resource \ - $(CORBA_OUTPUTDIR)/logwrappers/ORBUtilSystemException.resource \ - $(CORBA_OUTPUTDIR)/logwrappers/POASystemException.resource \ - $(CORBA_OUTPUTDIR)/logwrappers/UtilSystemException.resource - $(MKDIR) -p $(@D) - $(ECHO) $(LOG_INFO) Concatenating 8 resource files into $(@F) - $(CAT) $^ > $@ - -# The resources files are generated from lisp-like .mc files. -$(CORBA_OUTPUTDIR)/logwrappers/%SystemException.resource: $(CORBA_TOPDIR)/src/share/classes/com/sun/corba/se/spi/logging/data/%.mc $(CORBA_OUTPUTDIR)/btjars/logutil.jar - $(MKDIR) -p $(@D) - $(RM) -f $(@D)/_the_wrappers.d - $(ECHO) $(LOG_INFO) Generating resource file from $*.mc - $(JAVA) -jar $(CORBA_OUTPUTDIR)/btjars/logutil.jar make-resource $< $(@D) +all: compile-corba -$(CORBA_OUTPUTDIR)/logwrappers/_the_wrappers.d: $(CORBA_OUTPUTDIR)/btjars/logutil.jar \ - $(CORBA_OUTPUTDIR)/logwrappers/com/sun/corba/se/impl/logging/ActivationSystemException.java \ - $(CORBA_OUTPUTDIR)/logwrappers/com/sun/corba/se/impl/logging/IORSystemException.java \ - $(CORBA_OUTPUTDIR)/logwrappers/com/sun/corba/se/impl/logging/InterceptorsSystemException.java \ - $(CORBA_OUTPUTDIR)/logwrappers/com/sun/corba/se/impl/logging/NamingSystemException.java \ - $(CORBA_OUTPUTDIR)/logwrappers/com/sun/corba/se/impl/logging/OMGSystemException.java \ - $(CORBA_OUTPUTDIR)/logwrappers/com/sun/corba/se/impl/logging/ORBUtilSystemException.java \ - $(CORBA_OUTPUTDIR)/logwrappers/com/sun/corba/se/impl/logging/POASystemException.java \ - $(CORBA_OUTPUTDIR)/logwrappers/com/sun/corba/se/impl/logging/UtilSystemException.java \ - $(CORBA_OUTPUTDIR)/logwrappers/com/sun/corba/se/impl/logging/LogStrings.properties - $(MKDIR) -p $(@D) - $(ECHO) LOGWRAPPERS_ARE_CREATED = yes > $@ - -# Trigger the generation of the logwrappers. After the logwrapper classes and -# resources have been created, then the makefile will restart and the newly -# created java files will become part of the build further along in the makefile. --include $(CORBA_OUTPUTDIR)/logwrappers/_the_wrappers.d - -ifeq ($(LOGWRAPPERS_ARE_CREATED), yes) - - $(eval $(call SetupIdlCompilation,BUILD_IDLS, \ - IDLJ := $(JAVA) -jar $(CORBA_OUTPUTDIR)/btjars/idlj.jar, \ - SRC := $(CORBA_TOPDIR)/src/share/classes, \ - BIN := $(CORBA_OUTPUTDIR)/gensrc, \ - EXCLUDES := com/sun/tools/corba/se/idl/% \ - org/omg/CORBA/% \ - com/sun/corba/se/GiopIDL/% \ - org/omg/PortableServer/corba.idl, \ - INCLUDES := %, \ - OLDIMPLBASES := com/sun/corba/se/PortableActivationIDL/activation.idl \ - com/sun/corba/se/spi/activation/activation.idl, \ - DELETES := DYNANYDELETEFILES org/omg/DynamicAny/*POA* org/omg/DynamicAny/*Holder* org/omg/DynamicAny/DynValueBoxHelper.java org/omg/DynamicAny/DynValueCommonHelper.java org/omg/DynamicAny/_DynValueCommonStub.java org/omg/DynamicAny/_DynValueBoxStub.java org/omg/DynamicAny/DynAnyPackage/TypeMismatchHolder.java org/omg/DynamicAny/DynAnyPackage/InvalidValueHolder.java org/omg/DynamicAny/DynAnyFactoryPackage/InconsistentTypeCodeHolder.java IOPDELETEFILES org/omg/IOP/BI_DIR_IIOP.java org/omg/IOP/ChainBypassCheck.java org/omg/IOP/ChainBypassInfo.java org/omg/IOP/FORWARDED_IDENTITY.java org/omg/IOP/INVOCATION_POLICIES.java org/omg/IOP/LogicalThreadId.java org/omg/IOP/SendingContextRunTime.java org/omg/IOP/UnknownExceptionInfo.java org/omg/IOP/TaggedComponentSeqHolder.java POAHELHOLFILES org/omg/PortableServer/CurrentPackage/NoContextHolder.java org/omg/PortableServer/ForwardRequestHolder.java org/omg/PortableServer/IdAssignmentPolicyValueHelper.java org/omg/PortableServer/IdAssignmentPolicyValueHolder.java org/omg/PortableServer/IdUniquenessPolicyValueHelper.java org/omg/PortableServer/IdUniquenessPolicyValueHolder.java org/omg/PortableServer/ImplicitActivationPolicyValueHelper.java org/omg/PortableServer/ImplicitActivationPolicyValueHolder.java org/omg/PortableServer/LifespanPolicyValueHelper.java org/omg/PortableServer/LifespanPolicyValueHolder.java org/omg/PortableServer/ServantRetentionPolicyValueHelper.java org/omg/PortableServer/ServantRetentionPolicyValueHolder.java org/omg/PortableServer/ObjectIdHelper.java org/omg/PortableServer/ObjectIdHolder.java org/omg/PortableServer/POAListHelper.java org/omg/PortableServer/POAListHolder.java org/omg/PortableServer/POAManagerPackage/AdapterInactiveHolder.java org/omg/PortableServer/POAManagerPackage/StateHelper.java org/omg/PortableServer/POAManagerPackage/StateHolder.java org/omg/PortableServer/POAPackage/AdapterAlreadyExistsHolder.java org/omg/PortableServer/POAPackage/AdapterNonExistentHolder.java org/omg/PortableServer/POAPackage/InvalidPolicyHolder.java org/omg/PortableServer/POAPackage/NoServantHolder.java org/omg/PortableServer/POAPackage/ObjectAlreadyActiveHolder.java org/omg/PortableServer/POAPackage/ObjectNotActiveHolder.java org/omg/PortableServer/POAPackage/ServantAlreadyActiveHolder.java org/omg/PortableServer/POAPackage/ServantNotActiveHolder.java org/omg/PortableServer/POAPackage/WrongAdapterHolder.java org/omg/PortableServer/POAPackage/WrongPolicyHolder.java org/omg/PortableServer/RequestProcessingPolicyValueHelper.java org/omg/PortableServer/RequestProcessingPolicyValueHolder.java org/omg/PortableServer/ServantActivatorHolder.java org/omg/PortableServer/ServantLocatorHolder.java org/omg/PortableServer/ThreadPolicyValueHelper.java org/omg/PortableServer/ThreadPolicyValueHolder.java PIHELHOLFILES org/omg/PortableInterceptor/ClientRequestInfoHelper.java org/omg/PortableInterceptor/ClientRequestInterceptorHelper.java org/omg/PortableInterceptor/IORInfoHelper.java org/omg/PortableInterceptor/IORInterceptorHelper.java org/omg/PortableInterceptor/InterceptorHelper.java org/omg/PortableInterceptor/ORBInitInfoHelper.java org/omg/PortableInterceptor/ORBInitializerHelper.java org/omg/PortableInterceptor/PolicyFactoryHelper.java org/omg/PortableInterceptor/ReplyStatusHelper.java org/omg/PortableInterceptor/RequestInfoHelper.java org/omg/PortableInterceptor/ServerRequestInfoHelper.java org/omg/PortableInterceptor/ServerRequestInterceptorHelper.java org/omg/PortableInterceptor/SlotIdHelper.java org/omg/PortableInterceptor/ClientRequestInfoHolder.java org/omg/PortableInterceptor/ClientRequestInterceptorHolder.java org/omg/PortableInterceptor/CurrentHolder.java org/omg/PortableInterceptor/ForwardRequestHolder.java org/omg/PortableInterceptor/IORInfoHolder.java org/omg/PortableInterceptor/IORInterceptorHolder.java org/omg/PortableInterceptor/InterceptorHolder.java org/omg/PortableInterceptor/InvalidSlotHolder.java org/omg/PortableInterceptor/ORBInitInfoHolder.java org/omg/PortableInterceptor/ORBInitializerHolder.java org/omg/PortableInterceptor/PolicyFactoryHolder.java org/omg/PortableInterceptor/RequestInfoHolder.java org/omg/PortableInterceptor/ServerRequestInfoHolder.java org/omg/PortableInterceptor/ServerRequestInterceptorHolder.java org/omg/PortableInterceptor/TaggedComponentSeqHolder.java org/omg/PortableInterceptor/ORBInitInfoPackage/DuplicateNameHolder.java org/omg/PortableInterceptor/ORBInitInfoPackage/InvalidNameHolder.java org/omg/IOP/CodecPackage/FormatMismatchHolder.java org/omg/IOP/CodecPackage/InvalidTypeForEncodingHolder.java org/omg/IOP/CodecPackage/TypeMismatchHolder.java org/omg/IOP/CodecHelper.java org/omg/IOP/EncodingFormatHelper.java org/omg/IOP/EncodingHelper.java org/omg/IOP/CodecFactoryPackage/UnknownEncodingHolder.java org/omg/IOP/CodecFactoryHolder.java org/omg/IOP/CodecHolder.java org/omg/IOP/EncodingHolder.java org/omg/IOP/TaggedComponentSeqHelper.java org/omg/Dynamic/ContextListHelper.java org/omg/Dynamic/ExceptionListHelper.java org/omg/Dynamic/ParameterHolder.java org/omg/Dynamic/ParameterListHolder.java org/omg/Dynamic/ExceptionListHolder.java org/omg/Dynamic/ParameterHelper.java org/omg/Dynamic/ParameterListHelper.java org/omg/Dynamic/RequestContextHelper.java CORBAX org/omg/CORBA/OctetSeqHelper.java org/omg/CORBA/OctetSeqHolder.java org/omg/CORBA/PolicyError.java org/omg/CORBA/RepositoryIdHelper.java)) - - $(BUILD_IDLS): $(CORBA_OUTPUTDIR)/btjars/idlj.jar - - $(CORBA_OUTPUTDIR)/gensrc/_the_idls.d: $(BUILD_IDLS) $(CORBA_OUTPUTDIR)/btjars/idlj.jar - $(MKDIR) -p $(@D) - $(ECHO) IDLS_ARE_CREATED = yes > $@ - - -include $(CORBA_OUTPUTDIR)/gensrc/_the_idls.d - - ifeq ($(IDLS_ARE_CREATED), yes) - - $(eval $(call SetupJavaCompilation,BUILD_CORBA, \ - SETUP := GENERATE_NEWBYTECODE, \ - SRC := $(CORBA_TOPDIR)/src/share/classes $(CORBA_OUTPUTDIR)/gensrc $(CORBA_OUTPUTDIR)/logwrappers, \ - EXCLUDES := com/sun/corba/se/PortableActivationIDL \ - com/sun/tools/corba/se/logutil, \ - EXCLUDE_FILES := com/sun/corba/se/impl/presentation/rmi/JNDIStateFactoryImpl.java \ - com/sun/corba/se/spi/presentation/rmi/StubWrapper.java \ - com/sun/org/omg/CORBA/IDLTypeOperations.java \ - com/sun/org/omg/CORBA/IRObjectOperations.java \ - org/omg/PortableInterceptor/UNKNOWN.java \ - com/sun/tools/corba/se/idl/ResourceBundleUtil.java \ - com/sun/corba/se/impl/presentation/rmi/jndi.properties, \ - COPY := .prp LogStrings.properties, \ - BIN := $(CORBA_OUTPUTDIR)/classes)) - - $(eval $(call SetupJavaCompilation,BUILD_BOOTSTRAP_CORBA, \ - SETUP := GENERATE_OLDBYTECODE, \ - SRC := $(BUILD_CORBA_SRC), \ - EXCLUDES := $(BUILD_CORBA_EXCLUDES), \ - EXCLUDE_FILES := $(BUILD_CORBA_EXCLUDE_FILES), \ - COPY := $(BUILD_CORBA_COPY), \ - BIN := $(CORBA_OUTPUTDIR)/btclasses/corba_classes, \ - JAR := $(CORBA_OUTPUTDIR)/btjars/btcorba.jar)) - - # Separate src.zip call to include sources that were excluded in the build to - # mimic behavior in old build system. - $(eval $(call SetupZipArchive,ARCHIVE_BUILD_CORBA, \ - SRC := $(CORBA_TOPDIR)/src/share/classes $(CORBA_OUTPUTDIR)/gensrc $(CORBA_OUTPUTDIR)/logwrappers, \ - ZIP := $(CORBA_OUTPUTDIR)/dist/lib/src.zip)) - - $(BUILD_CORBA): $(BUILD_IDLS) $(LOGWRAPPER_DEPENDENCIES) - - # Run stripproperties on all sunorb resource files. - STRIP_PROP_SRC_FILES := $(shell $(FIND) $(CORBA_TOPDIR)/src/share/classes -name "sunorb*.properties") - STRIP_PROP_FILES := $(patsubst $(CORBA_TOPDIR)/src/share/classes/%, $(CORBA_OUTPUTDIR)/classes/%, \ - $(STRIP_PROP_SRC_FILES)) - # Simple delivery of zh_HK properties files just copies zh_TW properties files - STRIP_PROP_FILES += $(patsubst $(CORBA_TOPDIR)/src/share/classes/%_zh_TW.properties, \ - $(CORBA_OUTPUTDIR)/classes/%_zh_HK.properties, \ - $(shell $(FIND) $(CORBA_TOPDIR)/src/share/classes -name "sunorb_zh_TW.properties")) - STRIP_PROP_SRC_FILES += $(shell $(FIND) $(CORBA_TOPDIR)/src/share/classes -name "sunorb_zh_TW.properties") - STRIP_PROP_CMDLINE := $(subst _SPACE_, $(SPACE), \ - $(join $(addprefix -clean_SPACE_, $(STRIP_PROP_SRC_FILES)), \ - $(addprefix _SPACE_, $(STRIP_PROP_FILES)))) - - $(CORBA_OUTPUTDIR)/_the.stripped_properties: $(STRIP_PROP_SRC_FILES) \ - $(CORBA_OUTPUTDIR)/btjars/stripproperties.jar - $(MKDIR) -p $(sort $(dir $(STRIP_PROP_FILES))) - $(call ListPathsSafely,STRIP_PROP_CMDLINE,\n, >> $(CORBA_OUTPUTDIR)/_the.strip_prop.cmdline) - $(JAVA) -jar $(CORBA_OUTPUTDIR)/btjars/stripproperties.jar \ - @$(CORBA_OUTPUTDIR)/_the.strip_prop.cmdline - $(TOUCH) $@ - - $(eval $(call SetupArchive,ARCHIVE_CORBA, \ - $(BUILD_CORBA) $(CORBA_OUTPUTDIR)/_the.stripped_properties, \ - SRCS := $(CORBA_OUTPUTDIR)/classes, \ - SUFFIXES := .class .prp .properties, \ - JAR := $(CORBA_OUTPUTDIR)/dist/lib/classes.jar)) - - # The created classes.jar now contains Corba compiled to run on the target JDK - # and is ready for inclusion in jdk rt.jar. - - # The created src.zip now contains .java and .properties files used to create the classes in classes.jar - # and is ready for inclusion into the jdk src.zip - - BIN_FILES := $(CORBA_TOPDIR)/src/share/classes/com/sun/tools/corba/se/idl/orb.idl \ - $(CORBA_TOPDIR)/src/share/classes/com/sun/tools/corba/se/idl/ir.idl - - $(CORBA_OUTPUTDIR)/dist/lib/bin.zip: $(BIN_FILES) $(CORBA_OUTPUTDIR)/dist/lib/classes.jar - $(MKDIR) -p $(CORBA_OUTPUTDIR)/dist/lib - $(MKDIR) -p $(CORBA_OUTPUTDIR)/lib - $(RM) -f $@ - $(ECHO) Creating `basename $@` - $(CP) $(BIN_FILES) $(CORBA_OUTPUTDIR)/lib - $(CHMOD) ug+w $(CORBA_OUTPUTDIR)/lib/* - (cd $(CORBA_OUTPUTDIR); $(ZIP) -q $@ lib/orb.idl lib/ir.idl) - - # The created bin.zip now contains the corba specific binaries: orb.idl, ir.idl - - all: $(CORBA_OUTPUTDIR)/btjars/stripproperties.jar \ - $(CORBA_OUTPUTDIR)/btjars/idlj.jar \ - $(CORBA_OUTPUTDIR)/btjars/logutil.jar \ - $(CORBA_OUTPUTDIR)/btjars/btcorba.jar \ - $(CORBA_OUTPUTDIR)/dist/lib/classes.jar \ - $(CORBA_OUTPUTDIR)/dist/lib/src.zip \ - $(CORBA_OUTPUTDIR)/dist/lib/bin.zip - endif -endif - -clean: - $(RM) -rf $(CORBA_OUTPUTDIR) - -.PHONY: default all clean clobber +.PHONY: default all +.PHONY: gensrc-corba compile-corba diff --git a/corba/make/CommonCorba.gmk b/corba/make/CommonCorba.gmk new file mode 100644 index 00000000000..11b69b6f715 --- /dev/null +++ b/corba/make/CommonCorba.gmk @@ -0,0 +1,53 @@ +# +# Copyright (c) 2014, 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. +# + +################################################################################ +# The Corba sources are old and generates a LOT of warnings. +# Disable these using Xlint, until someone cares to fix them. +DISABLE_CORBA_WARNINGS := -Xlint:all,-deprecation,-unchecked,-serial,-fallthrough,-cast,-rawtypes,-static,-dep-ann + +# The "generate old bytecode" javac setup uses the new compiler to compile for the +# boot jdk to generate tools that need to be run with the boot jdk. +# Thus we force the target bytecode to the boot jdk bytecode. +$(eval $(call SetupJavaCompiler,GENERATE_OLDBYTECODE, \ + JVM := $(JAVA), \ + JAVAC := $(NEW_JAVAC), \ + FLAGS := $(BOOT_JDK_SOURCETARGET) \ + -bootclasspath "$(BOOT_RTJAR)$(PATH_SEP)$(BOOT_TOOLSJAR)" \ + $(DISABLE_CORBA_WARNINGS), \ + SERVER_DIR := $(SJAVAC_SERVER_DIR), \ + SERVER_JVM := $(SJAVAC_SERVER_JAVA))) + +# The "generate new bytecode" uses the new compiler to generate bytecode +# for the new jdk that is being built. The code compiled by this setup +# cannot necessarily be run with the boot jdk. +$(eval $(call SetupJavaCompiler,GENERATE_NEWBYTECODE, \ + JVM := $(JAVA), \ + JAVAC := $(NEW_JAVAC), \ + FLAGS := -cp $(BOOT_TOOLSJAR) -XDignore.symbol.file=true $(DISABLE_CORBA_WARNINGS), \ + SERVER_DIR := $(SJAVAC_SERVER_DIR), \ + SERVER_JVM := $(SJAVAC_SERVER_JAVA))) + +################################################################################ diff --git a/corba/make/CompileCorba.gmk b/corba/make/CompileCorba.gmk new file mode 100644 index 00000000000..16e0c4e679d --- /dev/null +++ b/corba/make/CompileCorba.gmk @@ -0,0 +1,87 @@ +# +# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# This must be the first rule +default: all + +include $(SPEC) +include MakeBase.gmk +include JavaCompilation.gmk + +include CommonCorba.gmk + +################################################################################ + +$(eval $(call SetupJavaCompilation,BUILD_CORBA, \ + SETUP := GENERATE_NEWBYTECODE, \ + SRC := $(CORBA_TOPDIR)/src/share/classes $(CORBA_OUTPUTDIR)/gensrc, \ + EXCLUDES := com/sun/corba/se/PortableActivationIDL \ + com/sun/tools/corba/se/logutil, \ + EXCLUDE_FILES := com/sun/corba/se/impl/presentation/rmi/JNDIStateFactoryImpl.java \ + com/sun/corba/se/spi/presentation/rmi/StubWrapper.java \ + com/sun/org/omg/CORBA/IDLTypeOperations.java \ + com/sun/org/omg/CORBA/IRObjectOperations.java \ + org/omg/PortableInterceptor/UNKNOWN.java \ + com/sun/tools/corba/se/idl/ResourceBundleUtil.java \ + com/sun/corba/se/impl/presentation/rmi/jndi.properties, \ + COPY := .prp LogStrings.properties, \ + BIN := $(CORBA_OUTPUTDIR)/classes, \ + JAR := $(CORBA_OUTPUTDIR)/dist/lib/classes.jar)) + +$(eval $(call SetupJavaCompilation,BUILD_INTERIM_CORBA, \ + SETUP := GENERATE_OLDBYTECODE, \ + SRC := $(BUILD_CORBA_SRC), \ + EXCLUDES := $(BUILD_CORBA_EXCLUDES), \ + EXCLUDE_FILES := $(BUILD_CORBA_EXCLUDE_FILES), \ + COPY := $(BUILD_CORBA_COPY), \ + BIN := $(CORBA_OUTPUTDIR)/interim_classes, \ + JAR := $(INTERIM_CORBA_JAR))) + +# Separate src.zip call to include sources that were excluded in the build to +# mimic behavior in old build system. +$(eval $(call SetupZipArchive,ARCHIVE_CORBA_SRC, \ + SRC := $(CORBA_TOPDIR)/src/share/classes $(CORBA_OUTPUTDIR)/gensrc, \ + ZIP := $(CORBA_OUTPUTDIR)/dist/lib/src.zip)) + JAR := $(CORBA_OUTPUTDIR)/dist/lib/classes.jar)) + +################################################################################ +# Create bin.zip containing the corba specific binaries: orb.idl, ir.idl +BIN_FILES := $(CORBA_TOPDIR)/src/share/classes/com/sun/tools/corba/se/idl/orb.idl \ + $(CORBA_TOPDIR)/src/share/classes/com/sun/tools/corba/se/idl/ir.idl + +$(CORBA_OUTPUTDIR)/dist/lib/bin.zip: $(BIN_FILES) + $(MKDIR) -p $(CORBA_OUTPUTDIR)/dist/lib + $(MKDIR) -p $(CORBA_OUTPUTDIR)/lib + $(RM) -f $@ + $(ECHO) Creating `basename $@` + $(CP) $(BIN_FILES) $(CORBA_OUTPUTDIR)/lib + $(CHMOD) ug+w $(CORBA_OUTPUTDIR)/lib/* + (cd $(CORBA_OUTPUTDIR); $(ZIP) -q $@ lib/orb.idl lib/ir.idl) + +################################################################################ + + +all: $(BUILD_CORBA) $(BUILD_INTERIM_CORBA) $(ARCHIVE_CORBA_SRC) \ + $(CORBA_OUTPUTDIR)/dist/lib/bin.zip diff --git a/corba/make/GensrcCorba.gmk b/corba/make/GensrcCorba.gmk new file mode 100644 index 00000000000..61030ed5af7 --- /dev/null +++ b/corba/make/GensrcCorba.gmk @@ -0,0 +1,153 @@ +# +# Copyright (c) 2014, 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. +# + +default: all + +include $(SPEC) +include MakeBase.gmk +include JavaCompilation.gmk +include IdlCompilation.gmk + +include CommonCorba.gmk + +################################################################################ + +$(eval $(call SetupJavaCompilation,BUILD_STRIPPROP, \ + SETUP := GENERATE_OLDBYTECODE, \ + SRC := $(CORBA_TOPDIR)/make/tools/src, \ + BIN := $(CORBA_OUTPUTDIR)/stripprop_classes)) + +TOOL_STRIPPROP_CMD := $(JAVA) -cp $(CORBA_OUTPUTDIR)/stripprop_classes \ + build.tools.stripproperties.StripPropertiesCorba + +$(eval $(call SetupJavaCompilation,BUILD_IDLJ, \ + SETUP := GENERATE_OLDBYTECODE, \ + SRC := $(CORBA_TOPDIR)/src/share/classes, \ + BIN := $(CORBA_OUTPUTDIR)/idlj_classes, \ + COPY := .prp, \ + INCLUDES := com/sun/tools/corba/se/idl, \ + EXCLUDE_FILES := ResourceBundleUtil.java)) + +TOOL_IDLJ_CMD := $(JAVA) -cp $(CORBA_OUTPUTDIR)/idlj_classes \ + com.sun.tools.corba.se.idl.toJavaPortable.Compile + +$(eval $(call SetupJavaCompilation,BUILD_LOGUTIL, \ + SETUP := GENERATE_OLDBYTECODE, \ + SRC := $(CORBA_TOPDIR)/src/share/classes, \ + BIN := $(CORBA_OUTPUTDIR)/logutil_classes, \ + INCLUDES := com/sun/tools/corba/se/logutil)) + +TOOL_LOGUTIL_CMD := $(JAVA) -cp $(CORBA_OUTPUTDIR)/logutil_classes \ + com.sun.tools.corba.se.logutil.MC + +################################################################################ + +# Generate LogWrapper classes +$(CORBA_OUTPUTDIR)/gensrc/com/sun/corba/se/impl/logging/%SystemException.java: \ + $(CORBA_TOPDIR)/src/share/classes/com/sun/corba/se/spi/logging/data/%.mc \ + $(BUILD_LOGUTIL) + $(MKDIR) -p $(@D) + $(RM) -f $(@D)/_the_wrappers.d + $(ECHO) $(LOG_INFO) Generating class file from $*.mc + $(TOOL_LOGUTIL_CMD) make-class $< $(@D) + +# Generate LogWrapper properties file by concatening resource files +$(CORBA_OUTPUTDIR)/gensrc/com/sun/corba/se/impl/logging/LogStrings.properties: \ + $(CORBA_OUTPUTDIR)/logwrappers/ActivationSystemException.resource \ + $(CORBA_OUTPUTDIR)/logwrappers/IORSystemException.resource \ + $(CORBA_OUTPUTDIR)/logwrappers/InterceptorsSystemException.resource \ + $(CORBA_OUTPUTDIR)/logwrappers/NamingSystemException.resource \ + $(CORBA_OUTPUTDIR)/logwrappers/OMGSystemException.resource \ + $(CORBA_OUTPUTDIR)/logwrappers/ORBUtilSystemException.resource \ + $(CORBA_OUTPUTDIR)/logwrappers/POASystemException.resource \ + $(CORBA_OUTPUTDIR)/logwrappers/UtilSystemException.resource + $(MKDIR) -p $(@D) + $(ECHO) $(LOG_INFO) Concatenating 8 resource files into $(@F) + $(CAT) $^ > $@ + +# The resources files are generated from lisp-like .mc files. +$(CORBA_OUTPUTDIR)/logwrappers/%SystemException.resource: \ + $(CORBA_TOPDIR)/src/share/classes/com/sun/corba/se/spi/logging/data/%.mc \ + $(BUILD_LOGUTIL) + $(MKDIR) -p $(@D) + $(RM) -f $(@D)/_the_wrappers.d + $(ECHO) $(LOG_INFO) Generating resource file from $*.mc + $(TOOL_LOGUTIL_CMD) make-resource $< $(@D) + + +LOGWRAPPER_TARGETS := \ + $(CORBA_OUTPUTDIR)/gensrc/com/sun/corba/se/impl/logging/ActivationSystemException.java \ + $(CORBA_OUTPUTDIR)/gensrc/com/sun/corba/se/impl/logging/IORSystemException.java \ + $(CORBA_OUTPUTDIR)/gensrc/com/sun/corba/se/impl/logging/InterceptorsSystemException.java \ + $(CORBA_OUTPUTDIR)/gensrc/com/sun/corba/se/impl/logging/NamingSystemException.java \ + $(CORBA_OUTPUTDIR)/gensrc/com/sun/corba/se/impl/logging/OMGSystemException.java \ + $(CORBA_OUTPUTDIR)/gensrc/com/sun/corba/se/impl/logging/ORBUtilSystemException.java \ + $(CORBA_OUTPUTDIR)/gensrc/com/sun/corba/se/impl/logging/POASystemException.java \ + $(CORBA_OUTPUTDIR)/gensrc/com/sun/corba/se/impl/logging/UtilSystemException.java \ + $(CORBA_OUTPUTDIR)/gensrc/com/sun/corba/se/impl/logging/LogStrings.properties + +################################################################################ +# Build the IDLs. + +$(eval $(call SetupIdlCompilation,BUILD_IDLS, \ + IDLJ := $(TOOL_IDLJ_CMD), \ + SRC := $(CORBA_TOPDIR)/src/share/classes, \ + BIN := $(CORBA_OUTPUTDIR)/gensrc, \ + EXCLUDES := com/sun/tools/corba/se/idl/% \ + org/omg/CORBA/% \ + com/sun/corba/se/GiopIDL/% \ + org/omg/PortableServer/corba.idl, \ + INCLUDES := %, \ + OLDIMPLBASES := com/sun/corba/se/PortableActivationIDL/activation.idl \ + com/sun/corba/se/spi/activation/activation.idl, \ + DELETES := DYNANYDELETEFILES org/omg/DynamicAny/*POA* org/omg/DynamicAny/*Holder* org/omg/DynamicAny/DynValueBoxHelper.java org/omg/DynamicAny/DynValueCommonHelper.java org/omg/DynamicAny/_DynValueCommonStub.java org/omg/DynamicAny/_DynValueBoxStub.java org/omg/DynamicAny/DynAnyPackage/TypeMismatchHolder.java org/omg/DynamicAny/DynAnyPackage/InvalidValueHolder.java org/omg/DynamicAny/DynAnyFactoryPackage/InconsistentTypeCodeHolder.java IOPDELETEFILES org/omg/IOP/BI_DIR_IIOP.java org/omg/IOP/ChainBypassCheck.java org/omg/IOP/ChainBypassInfo.java org/omg/IOP/FORWARDED_IDENTITY.java org/omg/IOP/INVOCATION_POLICIES.java org/omg/IOP/LogicalThreadId.java org/omg/IOP/SendingContextRunTime.java org/omg/IOP/UnknownExceptionInfo.java org/omg/IOP/TaggedComponentSeqHolder.java POAHELHOLFILES org/omg/PortableServer/CurrentPackage/NoContextHolder.java org/omg/PortableServer/ForwardRequestHolder.java org/omg/PortableServer/IdAssignmentPolicyValueHelper.java org/omg/PortableServer/IdAssignmentPolicyValueHolder.java org/omg/PortableServer/IdUniquenessPolicyValueHelper.java org/omg/PortableServer/IdUniquenessPolicyValueHolder.java org/omg/PortableServer/ImplicitActivationPolicyValueHelper.java org/omg/PortableServer/ImplicitActivationPolicyValueHolder.java org/omg/PortableServer/LifespanPolicyValueHelper.java org/omg/PortableServer/LifespanPolicyValueHolder.java org/omg/PortableServer/ServantRetentionPolicyValueHelper.java org/omg/PortableServer/ServantRetentionPolicyValueHolder.java org/omg/PortableServer/ObjectIdHelper.java org/omg/PortableServer/ObjectIdHolder.java org/omg/PortableServer/POAListHelper.java org/omg/PortableServer/POAListHolder.java org/omg/PortableServer/POAManagerPackage/AdapterInactiveHolder.java org/omg/PortableServer/POAManagerPackage/StateHelper.java org/omg/PortableServer/POAManagerPackage/StateHolder.java org/omg/PortableServer/POAPackage/AdapterAlreadyExistsHolder.java org/omg/PortableServer/POAPackage/AdapterNonExistentHolder.java org/omg/PortableServer/POAPackage/InvalidPolicyHolder.java org/omg/PortableServer/POAPackage/NoServantHolder.java org/omg/PortableServer/POAPackage/ObjectAlreadyActiveHolder.java org/omg/PortableServer/POAPackage/ObjectNotActiveHolder.java org/omg/PortableServer/POAPackage/ServantAlreadyActiveHolder.java org/omg/PortableServer/POAPackage/ServantNotActiveHolder.java org/omg/PortableServer/POAPackage/WrongAdapterHolder.java org/omg/PortableServer/POAPackage/WrongPolicyHolder.java org/omg/PortableServer/RequestProcessingPolicyValueHelper.java org/omg/PortableServer/RequestProcessingPolicyValueHolder.java org/omg/PortableServer/ServantActivatorHolder.java org/omg/PortableServer/ServantLocatorHolder.java org/omg/PortableServer/ThreadPolicyValueHelper.java org/omg/PortableServer/ThreadPolicyValueHolder.java PIHELHOLFILES org/omg/PortableInterceptor/ClientRequestInfoHelper.java org/omg/PortableInterceptor/ClientRequestInterceptorHelper.java org/omg/PortableInterceptor/IORInfoHelper.java org/omg/PortableInterceptor/IORInterceptorHelper.java org/omg/PortableInterceptor/InterceptorHelper.java org/omg/PortableInterceptor/ORBInitInfoHelper.java org/omg/PortableInterceptor/ORBInitializerHelper.java org/omg/PortableInterceptor/PolicyFactoryHelper.java org/omg/PortableInterceptor/ReplyStatusHelper.java org/omg/PortableInterceptor/RequestInfoHelper.java org/omg/PortableInterceptor/ServerRequestInfoHelper.java org/omg/PortableInterceptor/ServerRequestInterceptorHelper.java org/omg/PortableInterceptor/SlotIdHelper.java org/omg/PortableInterceptor/ClientRequestInfoHolder.java org/omg/PortableInterceptor/ClientRequestInterceptorHolder.java org/omg/PortableInterceptor/CurrentHolder.java org/omg/PortableInterceptor/ForwardRequestHolder.java org/omg/PortableInterceptor/IORInfoHolder.java org/omg/PortableInterceptor/IORInterceptorHolder.java org/omg/PortableInterceptor/InterceptorHolder.java org/omg/PortableInterceptor/InvalidSlotHolder.java org/omg/PortableInterceptor/ORBInitInfoHolder.java org/omg/PortableInterceptor/ORBInitializerHolder.java org/omg/PortableInterceptor/PolicyFactoryHolder.java org/omg/PortableInterceptor/RequestInfoHolder.java org/omg/PortableInterceptor/ServerRequestInfoHolder.java org/omg/PortableInterceptor/ServerRequestInterceptorHolder.java org/omg/PortableInterceptor/TaggedComponentSeqHolder.java org/omg/PortableInterceptor/ORBInitInfoPackage/DuplicateNameHolder.java org/omg/PortableInterceptor/ORBInitInfoPackage/InvalidNameHolder.java org/omg/IOP/CodecPackage/FormatMismatchHolder.java org/omg/IOP/CodecPackage/InvalidTypeForEncodingHolder.java org/omg/IOP/CodecPackage/TypeMismatchHolder.java org/omg/IOP/CodecHelper.java org/omg/IOP/EncodingFormatHelper.java org/omg/IOP/EncodingHelper.java org/omg/IOP/CodecFactoryPackage/UnknownEncodingHolder.java org/omg/IOP/CodecFactoryHolder.java org/omg/IOP/CodecHolder.java org/omg/IOP/EncodingHolder.java org/omg/IOP/TaggedComponentSeqHelper.java org/omg/Dynamic/ContextListHelper.java org/omg/Dynamic/ExceptionListHelper.java org/omg/Dynamic/ParameterHolder.java org/omg/Dynamic/ParameterListHolder.java org/omg/Dynamic/ExceptionListHolder.java org/omg/Dynamic/ParameterHelper.java org/omg/Dynamic/ParameterListHelper.java org/omg/Dynamic/RequestContextHelper.java CORBAX org/omg/CORBA/OctetSeqHelper.java org/omg/CORBA/OctetSeqHolder.java org/omg/CORBA/PolicyError.java org/omg/CORBA/RepositoryIdHelper.java)) + +$(BUILD_IDLS): $(BUILD_IDLJ) + +################################################################################ +# Run stripproperties on all sunorb resource files. + +STRIP_PROP_SRC_FILES := $(shell $(FIND) $(CORBA_TOPDIR)/src/share/classes -name "sunorb*.properties") +STRIP_PROP_FILES := $(patsubst $(CORBA_TOPDIR)/src/share/classes/%, $(CORBA_OUTPUTDIR)/classes/%, \ + $(STRIP_PROP_SRC_FILES)) +# Simple delivery of zh_HK properties files just copies zh_TW properties files +STRIP_PROP_SRC_FILE_ZH_TW := $(shell $(FIND) $(CORBA_TOPDIR)/src/share/classes -name "sunorb_zh_TW.properties") +STRIP_PROP_SRC_FILES += $(STRIP_PROP_SRC_FILE_ZH_TW) +STRIP_PROP_FILES += $(patsubst $(CORBA_TOPDIR)/src/share/classes/%_zh_TW.properties, \ + $(CORBA_OUTPUTDIR)/classes/%_zh_HK.properties, $(STRIP_PROP_SRC_FILE_ZH_TW)) +STRIP_PROP_CMDLINE := $(subst _SPACE_, $(SPACE), \ + $(join $(addprefix -clean_SPACE_, $(STRIP_PROP_SRC_FILES)), \ + $(addprefix _SPACE_, $(STRIP_PROP_FILES)))) + +$(CORBA_OUTPUTDIR)/_the.stripped_properties: $(STRIP_PROP_SRC_FILES) \ + $(BUILD_STRIPPROP) + $(MKDIR) -p $(sort $(dir $(STRIP_PROP_FILES))) + $(call ListPathsSafely,STRIP_PROP_CMDLINE,\n, >> $(CORBA_OUTPUTDIR)/_the.strip_prop.cmdline) + $(TOOL_STRIPPROP_CMD) @$(CORBA_OUTPUTDIR)/_the.strip_prop.cmdline + $(TOUCH) $@ + +################################################################################ + +all: $(BUILD_IDLS) $(CORBA_OUTPUTDIR)/_the.stripped_properties $(LOGWRAPPER_TARGETS) From 91a6e1b0926cf0c94ad134f3c86b381e9dc7f07a Mon Sep 17 00:00:00 2001 From: Erik Joelsson Date: Wed, 5 Feb 2014 11:05:24 +0100 Subject: [PATCH 141/158] 8026773: Failing compilation in Corba does not fail the build Reviewed-by: ihse, tbell --- jdk/make/GenerateClasses.gmk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdk/make/GenerateClasses.gmk b/jdk/make/GenerateClasses.gmk index f4dafc55087..1503c0b8dd4 100644 --- a/jdk/make/GenerateClasses.gmk +++ b/jdk/make/GenerateClasses.gmk @@ -52,7 +52,7 @@ $(eval $(call SetupJavaCompilation,BUILD_BOOTSTRAP_RMIC, \ ########################################################################################## -BTRMIC_CP := $(CORBA_OUTPUTDIR)/btjars/btcorba.jar$(PATH_SEP)$(JDK_OUTPUTDIR)/btclasses_rmic$(PATH_SEP)$(BOOTSTRAP_JAVAC_JAR) +BTRMIC_CP := $(INTERIM_CORBA_JAR)$(PATH_SEP)$(JDK_OUTPUTDIR)/btclasses_rmic$(PATH_SEP)$(INTERIM_LANGTOOLS_JAR) BTRMIC_ARGS := "-Xbootclasspath/p:$(BTRMIC_CP)" -cp "$(BTRMIC_CP)" RMIC := $(JAVA) $(BTRMIC_ARGS) sun.rmi.rmic.Main From e8f1f33e46647138a5dc8965ce137f2f8cb1163a Mon Sep 17 00:00:00 2001 From: Alan Bateman Date: Wed, 5 Feb 2014 10:20:30 +0000 Subject: [PATCH 142/158] 8031586: Check jdk/src/*/native/com/sun/security/auth/module for pending JNI exceptions Reviewed-by: vinnie, chegar --- .../com/sun/security/auth/module/Solaris.c | 54 ++++----- .../com/sun/security/auth/module/Unix.c | 8 +- .../native/com/sun/security/auth/module/nt.c | 112 ++++++++---------- 3 files changed, 82 insertions(+), 92 deletions(-) diff --git a/jdk/src/solaris/native/com/sun/security/auth/module/Solaris.c b/jdk/src/solaris/native/com/sun/security/auth/module/Solaris.c index 3e31e7ff125..2b8e2d2b11e 100644 --- a/jdk/src/solaris/native/com/sun/security/auth/module/Solaris.c +++ b/jdk/src/solaris/native/com/sun/security/auth/module/Solaris.c @@ -32,6 +32,12 @@ #include #include +static void throwIllegalArgumentException(JNIEnv *env, const char *msg) { + jclass clazz = (*env)->FindClass(env, "java/lang/IllegalArgumentException"); + if (clazz != NULL) + (*env)->ThrowNew(env, clazz, msg); +} + JNIEXPORT void JNICALL Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo (JNIEnv *env, jobject obj) { @@ -51,7 +57,7 @@ Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo if (groups == NULL) { jclass cls = (*env)->FindClass(env,"java/lang/OutOfMemoryError"); - if(cls != 0) + if (cls != NULL) (*env)->ThrowNew(env, cls, NULL); return; } @@ -67,15 +73,13 @@ Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo */ fid = (*env)->GetFieldID(env, cls, "username", "Ljava/lang/String;"); if (fid == 0) { - jclass newExcCls = - (*env)->FindClass(env, "java/lang/IllegalArgumentException"); - if (newExcCls == 0) { - /* Unable to find the new exception class, give up. */ - return; - } - (*env)->ThrowNew(env, newExcCls, "invalid field: username"); + (*env)->ExceptionClear(env); + throwIllegalArgumentException(env, "invalid field: username"); + return; } jstr = (*env)->NewStringUTF(env, pwd.pw_name); + if (jstr == NULL) + return; (*env)->SetObjectField(env, obj, fid, jstr); /* @@ -83,13 +87,9 @@ Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo */ fid = (*env)->GetFieldID(env, cls, "uid", "J"); if (fid == 0) { - jclass newExcCls = - (*env)->FindClass(env, "java/lang/IllegalArgumentException"); - if (newExcCls == 0) { - /* Unable to find the new exception class, give up. */ - return; - } - (*env)->ThrowNew(env, newExcCls, "invalid field: username"); + (*env)->ExceptionClear(env); + throwIllegalArgumentException(env, "invalid field: uid"); + return; } (*env)->SetLongField(env, obj, fid, pwd.pw_uid); @@ -98,13 +98,9 @@ Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo */ fid = (*env)->GetFieldID(env, cls, "gid", "J"); if (fid == 0) { - jclass newExcCls = - (*env)->FindClass(env, "java/lang/IllegalArgumentException"); - if (newExcCls == 0) { - /* Unable to find the new exception class, give up. */ - return; - } - (*env)->ThrowNew(env, newExcCls, "invalid field: username"); + (*env)->ExceptionClear(env); + throwIllegalArgumentException(env, "invalid field: gid"); + return; } (*env)->SetLongField(env, obj, fid, pwd.pw_gid); @@ -113,17 +109,17 @@ Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo */ fid = (*env)->GetFieldID(env, cls, "groups", "[J"); if (fid == 0) { - jclass newExcCls = - (*env)->FindClass(env, "java/lang/IllegalArgumentException"); - if (newExcCls == 0) { - /* Unable to find the new exception class, give up. */ - return; - } - (*env)->ThrowNew(env, newExcCls, "invalid field: username"); + (*env)->ExceptionClear(env); + throwIllegalArgumentException(env, "invalid field: groups"); + return; } jgroups = (*env)->NewLongArray(env, numSuppGroups); + if (jgroups == NULL) + return; jgroupsAsArray = (*env)->GetLongArrayElements(env, jgroups, 0); + if (jgroupsAsArray == NULL) + return; for (i = 0; i < numSuppGroups; i++) jgroupsAsArray[i] = groups[i]; (*env)->ReleaseLongArrayElements(env, jgroups, jgroupsAsArray, 0); diff --git a/jdk/src/solaris/native/com/sun/security/auth/module/Unix.c b/jdk/src/solaris/native/com/sun/security/auth/module/Unix.c index 620e19bb236..188a389d666 100644 --- a/jdk/src/solaris/native/com/sun/security/auth/module/Unix.c +++ b/jdk/src/solaris/native/com/sun/security/auth/module/Unix.c @@ -60,7 +60,7 @@ Java_com_sun_security_auth_module_UnixSystem_getUnixInfo groups = (gid_t *)calloc(numSuppGroups, sizeof(gid_t)); if (groups == NULL) { jclass cls = (*env)->FindClass(env,"java/lang/OutOfMemoryError"); - if(cls != 0) + if (cls != NULL) (*env)->ThrowNew(env, cls, NULL); return; } @@ -90,6 +90,8 @@ Java_com_sun_security_auth_module_UnixSystem_getUnixInfo goto cleanUpAndReturn; jstr = (*env)->NewStringUTF(env, pwd->pw_name); + if (jstr == NULL) + goto cleanUpAndReturn; (*env)->SetObjectField(env, obj, userNameID, jstr); (*env)->SetLongField(env, obj, userID, pwd->pw_uid); @@ -97,7 +99,11 @@ Java_com_sun_security_auth_module_UnixSystem_getUnixInfo (*env)->SetLongField(env, obj, groupID, pwd->pw_gid); jgroups = (*env)->NewLongArray(env, numSuppGroups); + if (jgroups == NULL) + goto cleanUpAndReturn; jgroupsAsArray = (*env)->GetLongArrayElements(env, jgroups, 0); + if (jgroupsAsArray == NULL) + goto cleanUpAndReturn; for (i = 0; i < numSuppGroups; i++) jgroupsAsArray[i] = groups[i]; (*env)->ReleaseLongArrayElements(env, jgroups, jgroupsAsArray, 0); diff --git a/jdk/src/windows/native/com/sun/security/auth/module/nt.c b/jdk/src/windows/native/com/sun/security/auth/module/nt.c index 64ef356e1dc..038ceb14f95 100644 --- a/jdk/src/windows/native/com/sun/security/auth/module/nt.c +++ b/jdk/src/windows/native/com/sun/security/auth/module/nt.c @@ -43,6 +43,12 @@ BOOL getImpersonationToken(PHANDLE impersonationToken); BOOL getTextualSid(PSID pSid, LPTSTR TextualSid, LPDWORD lpdwBufferLen); void DisplayErrorText(DWORD dwLastError); +static void throwIllegalArgumentException(JNIEnv *env, const char *msg) { + jclass clazz = (*env)->FindClass(env, "java/lang/IllegalArgumentException"); + if (clazz != NULL) + (*env)->ThrowNew(env, clazz, msg); +} + JNIEXPORT jlong JNICALL Java_com_sun_security_auth_module_NTSystem_getImpersonationToken0 (JNIEnv *env, jobject obj) { @@ -62,7 +68,6 @@ Java_com_sun_security_auth_module_NTSystem_getCurrent long i, j = 0; HANDLE tokenHandle = INVALID_HANDLE_VALUE; - BOOL systemError = FALSE; LPTSTR userName = NULL; // user name LPTSTR userSid = NULL; // user sid @@ -116,70 +121,59 @@ Java_com_sun_security_auth_module_NTSystem_getCurrent fid = (*env)->GetFieldID(env, cls, "userName", "Ljava/lang/String;"); if (fid == 0) { - jclass newExcCls = - (*env)->FindClass(env, "java/lang/IllegalArgumentException"); - if (newExcCls == 0) { - // Unable to find exception class - systemError = TRUE; - goto out; - } - (*env)->ThrowNew(env, newExcCls, "invalid field: userName"); + (*env)->ExceptionClear(env); + throwIllegalArgumentException(env, "invalid field: userName"); + goto cleanup; } jstr = (*env)->NewStringUTF(env, userName); + if (jstr == NULL) + goto cleanup; (*env)->SetObjectField(env, obj, fid, jstr); fid = (*env)->GetFieldID(env, cls, "userSID", "Ljava/lang/String;"); if (fid == 0) { - jclass newExcCls = - (*env)->FindClass(env, "java/lang/IllegalArgumentException"); - if (newExcCls == 0) { - systemError = TRUE; - goto out; - } - (*env)->ThrowNew(env, newExcCls, "invalid field: userSID"); + (*env)->ExceptionClear(env); + throwIllegalArgumentException(env, "invalid field: userSID"); + goto cleanup; } jstr = (*env)->NewStringUTF(env, userSid); + if (jstr == NULL) + goto cleanup; (*env)->SetObjectField(env, obj, fid, jstr); fid = (*env)->GetFieldID(env, cls, "domain", "Ljava/lang/String;"); if (fid == 0) { - jclass newExcCls = - (*env)->FindClass(env, "java/lang/IllegalArgumentException"); - if (newExcCls == 0) { - systemError = TRUE; - goto out; - } - (*env)->ThrowNew(env, newExcCls, "invalid field: domain"); + (*env)->ExceptionClear(env); + throwIllegalArgumentException(env, "invalid field: domain"); + goto cleanup; } jstr = (*env)->NewStringUTF(env, domainName); + if (jstr == NULL) + goto cleanup; (*env)->SetObjectField(env, obj, fid, jstr); if (domainSid != NULL) { fid = (*env)->GetFieldID(env, cls, "domainSID", "Ljava/lang/String;"); if (fid == 0) { - jclass newExcCls = - (*env)->FindClass(env, "java/lang/IllegalArgumentException"); - if (newExcCls == 0) { - systemError = TRUE; - goto out; - } - (*env)->ThrowNew(env, newExcCls, "invalid field: domainSID"); + (*env)->ExceptionClear(env); + throwIllegalArgumentException(env, "invalid field: domainSID"); + goto cleanup; } jstr = (*env)->NewStringUTF(env, domainSid); + if (jstr == NULL) + goto cleanup; (*env)->SetObjectField(env, obj, fid, jstr); } fid = (*env)->GetFieldID(env, cls, "primaryGroupID", "Ljava/lang/String;"); if (fid == 0) { - jclass newExcCls = - (*env)->FindClass(env, "java/lang/IllegalArgumentException"); - if (newExcCls == 0) { - systemError = TRUE; - goto out; - } - (*env)->ThrowNew(env, newExcCls, "invalid field: PrimaryGroupID"); + (*env)->ExceptionClear(env); + throwIllegalArgumentException(env, "invalid field: PrimaryGroupID"); + goto cleanup; } jstr = (*env)->NewStringUTF(env, primaryGroup); + if (jstr == NULL) + goto cleanup; (*env)->SetObjectField(env, obj, fid, jstr); // primary group may or may not be part of supplementary groups @@ -204,19 +198,14 @@ Java_com_sun_security_auth_module_NTSystem_getCurrent fid = (*env)->GetFieldID(env, cls, "groupIDs", "[Ljava/lang/String;"); if (fid == 0) { - jclass newExcCls = - (*env)->FindClass(env, "java/lang/IllegalArgumentException"); - if (newExcCls == 0) { - systemError = TRUE; - goto out; - } - (*env)->ThrowNew(env, newExcCls, "invalid field: groupIDs"); + (*env)->ExceptionClear(env); + throwIllegalArgumentException(env, "groupIDs"); + goto cleanup; } stringClass = (*env)->FindClass(env, "java/lang/String"); - if (stringClass == 0) { - goto out; - } + if (stringClass == NULL) + goto cleanup; if (pIndex == -1) { // primary group not in groups array @@ -226,6 +215,8 @@ Java_com_sun_security_auth_module_NTSystem_getCurrent // allocate one less array entry and do not add into new array jgroups = (*env)->NewObjectArray(env, numGroups-1, stringClass, 0); } + if (jgroups == NULL) + goto cleanup; for (i = 0, j = 0; i < (long)numGroups; i++) { if (pIndex == i) { @@ -233,12 +224,14 @@ Java_com_sun_security_auth_module_NTSystem_getCurrent continue; } jstr = (*env)->NewStringUTF(env, groups[i]); + if (jstr == NULL) + goto cleanup; (*env)->SetObjectArrayElement(env, jgroups, j++, jstr); } (*env)->SetObjectField(env, obj, fid, jgroups); } -out: +cleanup: if (userName != NULL) { HeapFree(GetProcessHeap(), 0, userName); } @@ -264,11 +257,6 @@ out: } CloseHandle(tokenHandle); - if (systemError && debug) { - printf(" [getCurrent] System Error: "); - printf("unable to find IllegalArgumentException class\n"); - } - return; } @@ -336,7 +324,7 @@ BOOL getUser(HANDLE tokenHandle, LPTSTR *userName, DisplayErrorText(GetLastError()); } error = TRUE; - goto out; + goto cleanup; } if (debug) { @@ -369,7 +357,7 @@ BOOL getUser(HANDLE tokenHandle, LPTSTR *userName, DisplayErrorText(GetLastError()); } error = TRUE; - goto out; + goto cleanup; } if (debug) { @@ -411,7 +399,7 @@ BOOL getUser(HANDLE tokenHandle, LPTSTR *userName, DisplayErrorText(GetLastError()); } // ok not to have a domain SID (no error) - goto out; + goto cleanup; } bufSize = 0; @@ -422,7 +410,7 @@ BOOL getUser(HANDLE tokenHandle, LPTSTR *userName, printf(" [getUser] domainSid: %s\n", *domainSid); } -out: +cleanup: if (tokenUserInfo != NULL) { HeapFree(GetProcessHeap(), 0, tokenUserInfo); } @@ -466,7 +454,7 @@ BOOL getPrimaryGroup(HANDLE tokenHandle, LPTSTR *primaryGroup) { DisplayErrorText(GetLastError()); } error = TRUE; - goto out; + goto cleanup; } if (debug) { @@ -481,7 +469,7 @@ BOOL getPrimaryGroup(HANDLE tokenHandle, LPTSTR *primaryGroup) { printf(" [getPrimaryGroup] primaryGroup: %s\n", *primaryGroup); } -out: +cleanup: if (tokenGroupInfo != NULL) { HeapFree(GetProcessHeap(), 0, tokenGroupInfo); } @@ -519,7 +507,7 @@ BOOL getGroups(HANDLE tokenHandle, PDWORD numGroups, LPTSTR **groups) { DisplayErrorText(GetLastError()); } error = TRUE; - goto out; + goto cleanup; } if (debug) { @@ -528,7 +516,7 @@ BOOL getGroups(HANDLE tokenHandle, PDWORD numGroups, LPTSTR **groups) { if (tokenGroupInfo->GroupCount == 0) { // no groups - goto out; + goto cleanup; } // return group info @@ -545,7 +533,7 @@ BOOL getGroups(HANDLE tokenHandle, PDWORD numGroups, LPTSTR **groups) { } } -out: +cleanup: if (tokenGroupInfo != NULL) { HeapFree(GetProcessHeap(), 0, tokenGroupInfo); } From edcca42faa4f34016cfe1f6864cef5232345cb0f Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Wed, 5 Feb 2014 11:32:27 +0100 Subject: [PATCH 143/158] 8033532: Freetype include statement must come before X11 include Reviewed-by: erikj, drchase --- jdk/make/lib/Awt2dLibraries.gmk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jdk/make/lib/Awt2dLibraries.gmk b/jdk/make/lib/Awt2dLibraries.gmk index f101b87cc79..a1263ba5775 100644 --- a/jdk/make/lib/Awt2dLibraries.gmk +++ b/jdk/make/lib/Awt2dLibraries.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2014, 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 @@ -792,9 +792,9 @@ else endif BUILD_LIBFONTMANAGER_CFLAGS_COMMON := \ + $(FONT_HEADERS) \ $(X_CFLAGS) \ -DLE_STANDALONE -DHEADLESS \ - $(FONT_HEADERS) \ -I$(JDK_TOPDIR)/src/share/native/sun/font \ -I$(JDK_TOPDIR)/src/share/native/sun/font/layout \ -I$(JDK_TOPDIR)/src/share/native/sun/awt/image/cvutils \ From 329369ddf68c7515ff59ae91179dd3b9970b83fa Mon Sep 17 00:00:00 2001 From: Erik Joelsson Date: Wed, 5 Feb 2014 14:21:10 +0100 Subject: [PATCH 144/158] 8033680: Profiles build broken Reviewed-by: alanb --- jdk/make/Tools.gmk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jdk/make/Tools.gmk b/jdk/make/Tools.gmk index 2336ed4ce98..661bf3e3b03 100644 --- a/jdk/make/Tools.gmk +++ b/jdk/make/Tools.gmk @@ -122,12 +122,12 @@ TOOL_OSX_TOBIN = $(JAVA) -Djava.awt.headless=true -cp $(JDK_OUTPUTDIR)/btclasses TOOL_CLDRCONVERTER = $(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \ build.tools.cldrconverter.CLDRConverter -TOOL_CHECKDEPS = $(JAVA) -Xbootclasspath/p:$(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar \ +TOOL_CHECKDEPS = $(JAVA) -Xbootclasspath/p:$(INTERIM_LANGTOOLS_JAR) \ -cp $(JDK_OUTPUTDIR)/btclasses:$(JDK_OUTPUTDIR) \ build.tools.deps.CheckDeps TOOL_ADDTORESTRICTEDPKGS=$(JAVA) -cp $(JDK_OUTPUTDIR)/btclasses \ - build.tools.addtorestrictedpkgs.AddToRestrictedPkgs + build.tools.addtorestrictedpkgs.AddToRestrictedPkgs ########################################################################################## From 319dd343be2cd20269ed9de51d519a974991a1dc Mon Sep 17 00:00:00 2001 From: Chris Hegarty Date: Wed, 5 Feb 2014 14:14:46 +0000 Subject: [PATCH 145/158] 8033689: PlainDatagramSocketImpl missing returns after throwing an exception Reviewed-by: michaelm --- jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c b/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c index 3df46c85171..ac4a8385e9a 100644 --- a/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c +++ b/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c @@ -506,6 +506,7 @@ Java_java_net_PlainDatagramSocketImpl_peek(JNIEnv *env, jobject this, } if (IS_NULL(addressObj)) { JNU_ThrowNullPointerException(env, "Null address in peek()"); + return -1; } if (timeout) { int ret = NET_Timeout(fd, timeout); @@ -1419,7 +1420,7 @@ Java_java_net_PlainDatagramSocketImpl_socketSetOption(JNIEnv *env, default : JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Socket option not supported by PlainDatagramSocketImp"); - break; + return; } @@ -1833,6 +1834,7 @@ Java_java_net_PlainDatagramSocketImpl_setTimeToLive(JNIEnv *env, jobject this, #ifdef AF_INET6 #ifdef __linux__ setTTL(env, fd, ttl); + JNU_CHECK_EXCEPTION(env); if (ipv6_available()) { setHopLimit(env, fd, ttl); } @@ -2120,6 +2122,7 @@ static void mcast_join_leave(JNIEnv *env, jobject this, else NET_ThrowCurrent(env, "setsockopt IP_DROP_MEMBERSHIP failed"); } + return; } } From adeedfee16f5c76a4e68a667d47552de0adede36 Mon Sep 17 00:00:00 2001 From: Vinnie Ryan Date: Wed, 5 Feb 2014 15:58:27 +0000 Subject: [PATCH 146/158] 8011983: [parfait] False positive: unportable format string argument mismatch in jdk/src/windows/native/com/sun/security/auth/module/nt.c Reviewed-by: alanb --- .../native/com/sun/security/auth/module/nt.c | 117 ++++++++++-------- 1 file changed, 65 insertions(+), 52 deletions(-) diff --git a/jdk/src/windows/native/com/sun/security/auth/module/nt.c b/jdk/src/windows/native/com/sun/security/auth/module/nt.c index 038ceb14f95..72c0ef84f33 100644 --- a/jdk/src/windows/native/com/sun/security/auth/module/nt.c +++ b/jdk/src/windows/native/com/sun/security/auth/module/nt.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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,12 +43,6 @@ BOOL getImpersonationToken(PHANDLE impersonationToken); BOOL getTextualSid(PSID pSid, LPTSTR TextualSid, LPDWORD lpdwBufferLen); void DisplayErrorText(DWORD dwLastError); -static void throwIllegalArgumentException(JNIEnv *env, const char *msg) { - jclass clazz = (*env)->FindClass(env, "java/lang/IllegalArgumentException"); - if (clazz != NULL) - (*env)->ThrowNew(env, clazz, msg); -} - JNIEXPORT jlong JNICALL Java_com_sun_security_auth_module_NTSystem_getImpersonationToken0 (JNIEnv *env, jobject obj) { @@ -68,6 +62,7 @@ Java_com_sun_security_auth_module_NTSystem_getCurrent long i, j = 0; HANDLE tokenHandle = INVALID_HANDLE_VALUE; + BOOL systemError = FALSE; LPTSTR userName = NULL; // user name LPTSTR userSid = NULL; // user sid @@ -121,59 +116,70 @@ Java_com_sun_security_auth_module_NTSystem_getCurrent fid = (*env)->GetFieldID(env, cls, "userName", "Ljava/lang/String;"); if (fid == 0) { - (*env)->ExceptionClear(env); - throwIllegalArgumentException(env, "invalid field: userName"); - goto cleanup; + jclass newExcCls = + (*env)->FindClass(env, "java/lang/IllegalArgumentException"); + if (newExcCls == 0) { + // Unable to find exception class + systemError = TRUE; + goto out; + } + (*env)->ThrowNew(env, newExcCls, "invalid field: userName"); } jstr = (*env)->NewStringUTF(env, userName); - if (jstr == NULL) - goto cleanup; (*env)->SetObjectField(env, obj, fid, jstr); fid = (*env)->GetFieldID(env, cls, "userSID", "Ljava/lang/String;"); if (fid == 0) { - (*env)->ExceptionClear(env); - throwIllegalArgumentException(env, "invalid field: userSID"); - goto cleanup; + jclass newExcCls = + (*env)->FindClass(env, "java/lang/IllegalArgumentException"); + if (newExcCls == 0) { + systemError = TRUE; + goto out; + } + (*env)->ThrowNew(env, newExcCls, "invalid field: userSID"); } jstr = (*env)->NewStringUTF(env, userSid); - if (jstr == NULL) - goto cleanup; (*env)->SetObjectField(env, obj, fid, jstr); fid = (*env)->GetFieldID(env, cls, "domain", "Ljava/lang/String;"); if (fid == 0) { - (*env)->ExceptionClear(env); - throwIllegalArgumentException(env, "invalid field: domain"); - goto cleanup; + jclass newExcCls = + (*env)->FindClass(env, "java/lang/IllegalArgumentException"); + if (newExcCls == 0) { + systemError = TRUE; + goto out; + } + (*env)->ThrowNew(env, newExcCls, "invalid field: domain"); } jstr = (*env)->NewStringUTF(env, domainName); - if (jstr == NULL) - goto cleanup; (*env)->SetObjectField(env, obj, fid, jstr); if (domainSid != NULL) { fid = (*env)->GetFieldID(env, cls, "domainSID", "Ljava/lang/String;"); if (fid == 0) { - (*env)->ExceptionClear(env); - throwIllegalArgumentException(env, "invalid field: domainSID"); - goto cleanup; + jclass newExcCls = + (*env)->FindClass(env, "java/lang/IllegalArgumentException"); + if (newExcCls == 0) { + systemError = TRUE; + goto out; + } + (*env)->ThrowNew(env, newExcCls, "invalid field: domainSID"); } jstr = (*env)->NewStringUTF(env, domainSid); - if (jstr == NULL) - goto cleanup; (*env)->SetObjectField(env, obj, fid, jstr); } fid = (*env)->GetFieldID(env, cls, "primaryGroupID", "Ljava/lang/String;"); if (fid == 0) { - (*env)->ExceptionClear(env); - throwIllegalArgumentException(env, "invalid field: PrimaryGroupID"); - goto cleanup; + jclass newExcCls = + (*env)->FindClass(env, "java/lang/IllegalArgumentException"); + if (newExcCls == 0) { + systemError = TRUE; + goto out; + } + (*env)->ThrowNew(env, newExcCls, "invalid field: PrimaryGroupID"); } jstr = (*env)->NewStringUTF(env, primaryGroup); - if (jstr == NULL) - goto cleanup; (*env)->SetObjectField(env, obj, fid, jstr); // primary group may or may not be part of supplementary groups @@ -198,14 +204,19 @@ Java_com_sun_security_auth_module_NTSystem_getCurrent fid = (*env)->GetFieldID(env, cls, "groupIDs", "[Ljava/lang/String;"); if (fid == 0) { - (*env)->ExceptionClear(env); - throwIllegalArgumentException(env, "groupIDs"); - goto cleanup; + jclass newExcCls = + (*env)->FindClass(env, "java/lang/IllegalArgumentException"); + if (newExcCls == 0) { + systemError = TRUE; + goto out; + } + (*env)->ThrowNew(env, newExcCls, "invalid field: groupIDs"); } stringClass = (*env)->FindClass(env, "java/lang/String"); - if (stringClass == NULL) - goto cleanup; + if (stringClass == 0) { + goto out; + } if (pIndex == -1) { // primary group not in groups array @@ -215,8 +226,6 @@ Java_com_sun_security_auth_module_NTSystem_getCurrent // allocate one less array entry and do not add into new array jgroups = (*env)->NewObjectArray(env, numGroups-1, stringClass, 0); } - if (jgroups == NULL) - goto cleanup; for (i = 0, j = 0; i < (long)numGroups; i++) { if (pIndex == i) { @@ -224,14 +233,12 @@ Java_com_sun_security_auth_module_NTSystem_getCurrent continue; } jstr = (*env)->NewStringUTF(env, groups[i]); - if (jstr == NULL) - goto cleanup; (*env)->SetObjectArrayElement(env, jgroups, j++, jstr); } (*env)->SetObjectField(env, obj, fid, jgroups); } -cleanup: +out: if (userName != NULL) { HeapFree(GetProcessHeap(), 0, userName); } @@ -257,6 +264,11 @@ cleanup: } CloseHandle(tokenHandle); + if (systemError && debug) { + printf(" [getCurrent] System Error: "); + printf("unable to find IllegalArgumentException class\n"); + } + return; } @@ -324,7 +336,7 @@ BOOL getUser(HANDLE tokenHandle, LPTSTR *userName, DisplayErrorText(GetLastError()); } error = TRUE; - goto cleanup; + goto out; } if (debug) { @@ -357,7 +369,7 @@ BOOL getUser(HANDLE tokenHandle, LPTSTR *userName, DisplayErrorText(GetLastError()); } error = TRUE; - goto cleanup; + goto out; } if (debug) { @@ -399,7 +411,7 @@ BOOL getUser(HANDLE tokenHandle, LPTSTR *userName, DisplayErrorText(GetLastError()); } // ok not to have a domain SID (no error) - goto cleanup; + goto out; } bufSize = 0; @@ -410,7 +422,7 @@ BOOL getUser(HANDLE tokenHandle, LPTSTR *userName, printf(" [getUser] domainSid: %s\n", *domainSid); } -cleanup: +out: if (tokenUserInfo != NULL) { HeapFree(GetProcessHeap(), 0, tokenUserInfo); } @@ -454,7 +466,7 @@ BOOL getPrimaryGroup(HANDLE tokenHandle, LPTSTR *primaryGroup) { DisplayErrorText(GetLastError()); } error = TRUE; - goto cleanup; + goto out; } if (debug) { @@ -469,7 +481,7 @@ BOOL getPrimaryGroup(HANDLE tokenHandle, LPTSTR *primaryGroup) { printf(" [getPrimaryGroup] primaryGroup: %s\n", *primaryGroup); } -cleanup: +out: if (tokenGroupInfo != NULL) { HeapFree(GetProcessHeap(), 0, tokenGroupInfo); } @@ -507,7 +519,7 @@ BOOL getGroups(HANDLE tokenHandle, PDWORD numGroups, LPTSTR **groups) { DisplayErrorText(GetLastError()); } error = TRUE; - goto cleanup; + goto out; } if (debug) { @@ -516,7 +528,7 @@ BOOL getGroups(HANDLE tokenHandle, PDWORD numGroups, LPTSTR **groups) { if (tokenGroupInfo->GroupCount == 0) { // no groups - goto cleanup; + goto out; } // return group info @@ -533,7 +545,7 @@ BOOL getGroups(HANDLE tokenHandle, PDWORD numGroups, LPTSTR **groups) { } } -cleanup: +out: if (tokenGroupInfo != NULL) { HeapFree(GetProcessHeap(), 0, tokenGroupInfo); } @@ -577,7 +589,8 @@ BOOL getImpersonationToken(PHANDLE impersonationToken) { CloseHandle(dupToken); if (debug) { - printf(" [getImpersonationToken] token = %d\n", *impersonationToken); + printf(" [getImpersonationToken] token = %p\n", + (void *)*impersonationToken); } return TRUE; } From 5804adca86a5038523f22ef2bfbd093d2a4560d9 Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Wed, 5 Feb 2014 10:59:53 -0500 Subject: [PATCH 147/158] 8030993: Check jdk/src/share/native/common/jni_util.c for JNI pending exceptions Check for pending exceptions Reviewed-by: alanb, chegar --- jdk/src/share/native/common/jni_util.c | 51 ++++++++++++++++++++------ 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/jdk/src/share/native/common/jni_util.c b/jdk/src/share/native/common/jni_util.c index 3ef707f6079..de3509b7a59 100644 --- a/jdk/src/share/native/common/jni_util.c +++ b/jdk/src/share/native/common/jni_util.c @@ -626,10 +626,14 @@ initializeEncoding(JNIEnv *env) { jstring propname = 0; jstring enc = 0; + jclass strClazz = NULL; if ((*env)->EnsureLocalCapacity(env, 3) < 0) return; + strClazz = JNU_ClassString(env); + CHECK_NULL(strClazz); + propname = (*env)->NewStringUTF(env, "sun.jnu.encoding"); if (propname) { jboolean exc; @@ -683,9 +687,10 @@ initializeEncoding(JNIEnv *env) (*env)->DeleteLocalRef(env, enc); /* Initialize method-id cache */ - String_getBytes_ID = (*env)->GetMethodID(env, JNU_ClassString(env), + String_getBytes_ID = (*env)->GetMethodID(env, strClazz, "getBytes", "(Ljava/lang/String;)[B"); - String_init_ID = (*env)->GetMethodID(env, JNU_ClassString(env), + CHECK_NULL(String_getBytes_ID); + String_init_ID = (*env)->GetMethodID(env, strClazz, "", "([BLjava/lang/String;)V"); } @@ -720,8 +725,10 @@ JNU_NewStringPlatform(JNIEnv *env, const char *str) jbyteArray hab = 0; int len; - if (fastEncoding == NO_ENCODING_YET) + if (fastEncoding == NO_ENCODING_YET) { initializeEncoding(env); + JNU_CHECK_EXCEPTION_RETURN(env, NULL); + } if ((fastEncoding == FAST_8859_1) || (fastEncoding == NO_ENCODING_YET)) return newString8859_1(env, str); @@ -736,9 +743,11 @@ JNU_NewStringPlatform(JNIEnv *env, const char *str) len = (int)strlen(str); hab = (*env)->NewByteArray(env, len); if (hab != 0) { + jclass strClazz = JNU_ClassString(env); + CHECK_NULL_RETURN(strClazz, 0); (*env)->SetByteArrayRegion(env, hab, 0, len, (jbyte *)str); if (jnuEncodingSupported(env)) { - result = (*env)->NewObject(env, JNU_ClassString(env), + result = (*env)->NewObject(env, strClazz, String_init_ID, hab, jnuEncoding); } else { /*If the encoding specified in sun.jnu.encoding is not endorsed @@ -747,9 +756,11 @@ JNU_NewStringPlatform(JNIEnv *env, const char *str) StringCoding class will pickup the iso-8859-1 as the fallback converter for us. */ - jmethodID mid = (*env)->GetMethodID(env, JNU_ClassString(env), + jmethodID mid = (*env)->GetMethodID(env, strClazz, "", "([B)V"); - result = (*env)->NewObject(env, JNU_ClassString(env), mid, hab); + if (mid != NULL) { + result = (*env)->NewObject(env, strClazz, mid, hab); + } } (*env)->DeleteLocalRef(env, hab); return result; @@ -775,8 +786,10 @@ JNU_GetStringPlatformChars(JNIEnv *env, jstring jstr, jboolean *isCopy) if (isCopy) *isCopy = JNI_TRUE; - if (fastEncoding == NO_ENCODING_YET) + if (fastEncoding == NO_ENCODING_YET) { initializeEncoding(env); + JNU_CHECK_EXCEPTION_RETURN(env, 0); + } if ((fastEncoding == FAST_8859_1) || (fastEncoding == NO_ENCODING_YET)) return getString8859_1Chars(env, jstr); @@ -791,9 +804,14 @@ JNU_GetStringPlatformChars(JNIEnv *env, jstring jstr, jboolean *isCopy) if (jnuEncodingSupported(env)) { hab = (*env)->CallObjectMethod(env, jstr, String_getBytes_ID, jnuEncoding); } else { - jmethodID mid = (*env)->GetMethodID(env, JNU_ClassString(env), - "getBytes", "()[B"); - hab = (*env)->CallObjectMethod(env, jstr, mid); + jmethodID mid; + jclass strClazz = JNU_ClassString(env); + CHECK_NULL_RETURN(strClazz, 0); + mid = (*env)->GetMethodID(env, strClazz, + "getBytes", "()[B"); + if (mid != NULL) { + hab = (*env)->CallObjectMethod(env, jstr, mid); + } } if (!(*env)->ExceptionCheck(env)) { @@ -842,6 +860,7 @@ JNU_ClassString(JNIEnv *env) if ((*env)->EnsureLocalCapacity(env, 1) < 0) return 0; c = (*env)->FindClass(env, "java/lang/String"); + CHECK_NULL_RETURN(c, NULL); cls = (*env)->NewGlobalRef(env, c); (*env)->DeleteLocalRef(env, c); } @@ -857,6 +876,7 @@ JNU_ClassClass(JNIEnv *env) if ((*env)->EnsureLocalCapacity(env, 1) < 0) return 0; c = (*env)->FindClass(env, "java/lang/Class"); + CHECK_NULL_RETURN(c, NULL); cls = (*env)->NewGlobalRef(env, c); (*env)->DeleteLocalRef(env, c); } @@ -872,6 +892,7 @@ JNU_ClassObject(JNIEnv *env) if ((*env)->EnsureLocalCapacity(env, 1) < 0) return 0; c = (*env)->FindClass(env, "java/lang/Object"); + CHECK_NULL_RETURN(c, NULL); cls = (*env)->NewGlobalRef(env, c); (*env)->DeleteLocalRef(env, c); } @@ -887,6 +908,7 @@ JNU_ClassThrowable(JNIEnv *env) if ((*env)->EnsureLocalCapacity(env, 1) < 0) return 0; c = (*env)->FindClass(env, "java/lang/Throwable"); + CHECK_NULL_RETURN(c, NULL); cls = (*env)->NewGlobalRef(env, c); (*env)->DeleteLocalRef(env, c); } @@ -936,8 +958,11 @@ JNU_Equals(JNIEnv *env, jobject object1, jobject object2) { static jmethodID mid = NULL; if (mid == NULL) { - mid = (*env)->GetMethodID(env, JNU_ClassObject(env), "equals", + jclass objClazz = JNU_ClassObject(env); + CHECK_NULL_RETURN(objClazz, JNI_FALSE); + mid = (*env)->GetMethodID(env, objClazz, "equals", "(Ljava/lang/Object;)Z"); + CHECK_NULL_RETURN(mid, JNI_FALSE); } return (*env)->CallBooleanMethod(env, object1, mid, object2); } @@ -1039,7 +1064,9 @@ JNU_PrintClass(JNIEnv *env, char* hdr, jobject object) } else { jclass cls = (*env)->GetObjectClass(env, object); jstring clsName = JNU_ToString(env, cls); - JNU_PrintString(env, hdr, clsName); + if (clsName == NULL) { + JNU_PrintString(env, hdr, clsName); + } (*env)->DeleteLocalRef(env, cls); (*env)->DeleteLocalRef(env, clsName); } From 8ca6ca944ba0851d2ea5d843e312eff2be13af9e Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Wed, 5 Feb 2014 10:59:55 -0500 Subject: [PATCH 148/158] 8032749: Typo in java.time.Clock 8032888: Error message typo in TemporalAccessor 8032558: Instant spec includes incorrect assertion wrt valid range 8032494: DateTimeFormatter spec includes irrelevent detail on parsing pattern Update to fix typos, remove extraneous text Reviewed-by: darcy, lancea, sherman, scolebourne --- jdk/src/share/classes/java/time/Clock.java | 2 +- jdk/src/share/classes/java/time/Instant.java | 5 ----- .../share/classes/java/time/format/DateTimeFormatter.java | 5 +---- .../share/classes/java/time/temporal/TemporalAccessor.java | 2 +- 4 files changed, 3 insertions(+), 11 deletions(-) diff --git a/jdk/src/share/classes/java/time/Clock.java b/jdk/src/share/classes/java/time/Clock.java index cd90822925f..b1127848bed 100644 --- a/jdk/src/share/classes/java/time/Clock.java +++ b/jdk/src/share/classes/java/time/Clock.java @@ -104,7 +104,7 @@ import java.util.TimeZone; * resolution clock if one is available. * * @implSpec - * This abstract class must be implemented with care to ensure other operate correctly. + * This abstract class must be implemented with care to ensure other classes operate correctly. * All implementations that can be instantiated must be final, immutable and thread-safe. *

      * The principal methods are defined to allow the throwing of an exception. diff --git a/jdk/src/share/classes/java/time/Instant.java b/jdk/src/share/classes/java/time/Instant.java index 312e2d4159d..1b944a50c3d 100644 --- a/jdk/src/share/classes/java/time/Instant.java +++ b/jdk/src/share/classes/java/time/Instant.java @@ -100,11 +100,6 @@ import java.util.Objects; * This class models a single instantaneous point on the time-line. * This might be used to record event time-stamps in the application. *

      - * For practicality, the instant is stored with some constraints. - * The measurable time-line is restricted to the number of seconds that can be held - * in a {@code long}. This is greater than the current estimated age of the universe. - * The instant is stored to nanosecond resolution. - *

      * The range of an instant requires the storage of a number larger than a {@code long}. * To achieve this, the class stores a {@code long} representing epoch-seconds and an * {@code int} representing nanosecond-of-second, which will always be between 0 and 999,999,999. diff --git a/jdk/src/share/classes/java/time/format/DateTimeFormatter.java b/jdk/src/share/classes/java/time/format/DateTimeFormatter.java index 4109d20e590..39d91986f86 100644 --- a/jdk/src/share/classes/java/time/format/DateTimeFormatter.java +++ b/jdk/src/share/classes/java/time/format/DateTimeFormatter.java @@ -344,10 +344,7 @@ import java.util.Set; * Fraction: Outputs the nano-of-second field as a fraction-of-second. * The nano-of-second value has nine digits, thus the count of pattern letters * is from 1 to 9. If it is less than 9, then the nano-of-second value is - * truncated, with only the most significant digits being output. When parsing - * in strict mode, the number of parsed digits must match the count of pattern - * letters. When parsing in lenient mode, the number of parsed digits must be at - * least the count of pattern letters, up to 9 digits. + * truncated, with only the most significant digits being output. *

      * Year: The count of letters determines the minimum field width below * which padding is used. If the count of letters is two, then a diff --git a/jdk/src/share/classes/java/time/temporal/TemporalAccessor.java b/jdk/src/share/classes/java/time/temporal/TemporalAccessor.java index 081bbbaec32..a6133e18837 100644 --- a/jdk/src/share/classes/java/time/temporal/TemporalAccessor.java +++ b/jdk/src/share/classes/java/time/temporal/TemporalAccessor.java @@ -217,7 +217,7 @@ public interface TemporalAccessor { default int get(TemporalField field) { ValueRange range = range(field); if (range.isIntValue() == false) { - throw new UnsupportedTemporalTypeException("Invalid field " + field + " + for get() method, use getLong() instead"); + throw new UnsupportedTemporalTypeException("Invalid field " + field + " for get() method, use getLong() instead"); } long value = getLong(field); if (range.isValidValue(value) == false) { From 650470b407f3fdd786597a868beff5bddfbd1fea Mon Sep 17 00:00:00 2001 From: Erik Joelsson Date: Wed, 5 Feb 2014 17:24:03 +0100 Subject: [PATCH 149/158] 8033210: Intermittent build failure: jdk8 fails on win_i586 in jdk/make (p11_convert.c(67) : Cannot open 'sun_security_pkcs11_wrapper_PKCS11.h) Reviewed-by: ihse, tbell --- make/common/JavaCompilation.gmk | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/make/common/JavaCompilation.gmk b/make/common/JavaCompilation.gmk index fe4ff3e5eb1..c2dd54b2be5 100644 --- a/make/common/JavaCompilation.gmk +++ b/make/common/JavaCompilation.gmk @@ -534,16 +534,16 @@ define SetupJavaCompilation # When building in batch, put headers in a temp dir to filter out those that actually # changed before copying them to the real header dir. ifneq (,$$($1_HEADERS)) - $1_HEADERS_ARG := -h $$($1_HEADERS).tmp + $1_HEADERS_ARG := -h $$($1_HEADERS).$1.tmp $$($1_HEADERS)/_the.$1_headers: $$($1_BIN)/_the.$1_batch $(MKDIR) -p $$(@D) - for f in `ls $$($1_HEADERS).tmp`; do \ - if [ ! -f "$$($1_HEADERS)/$$$$f" ] || [ "`$(DIFF) $$($1_HEADERS)/$$$$f $$($1_HEADERS).tmp/$$$$f`" != "" ]; then \ - $(CP) -f $$($1_HEADERS).tmp/$$$$f $$($1_HEADERS)/$$$$f; \ + for f in `ls $$($1_HEADERS).$1.tmp`; do \ + if [ ! -f "$$($1_HEADERS)/$$$$f" ] || [ "`$(DIFF) $$($1_HEADERS)/$$$$f $$($1_HEADERS).$1.tmp/$$$$f`" != "" ]; then \ + $(CP) -f $$($1_HEADERS).$1.tmp/$$$$f $$($1_HEADERS)/$$$$f; \ fi; \ done - $(RM) -r $$($1_HEADERS).tmp + $(RM) -r $$($1_HEADERS).$1.tmp $(TOUCH) $$@ $1 += $$($1_HEADERS)/_the.$1_headers From 11c56780a40438a99ac2f7edf7d4c34e68545823 Mon Sep 17 00:00:00 2001 From: Daniel Fuchs Date: Wed, 5 Feb 2014 17:56:04 +0100 Subject: [PATCH 150/158] 8033542: test/java/util/logging/SimpleLogManager might let Loggers be gc'ed too early Fix another case of potentially premature Logger garbage collection in tests. Reviewed-by: mchung --- jdk/test/java/util/logging/SimpleLogManager.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/jdk/test/java/util/logging/SimpleLogManager.java b/jdk/test/java/util/logging/SimpleLogManager.java index f469727654f..1e1da7919a5 100644 --- a/jdk/test/java/util/logging/SimpleLogManager.java +++ b/jdk/test/java/util/logging/SimpleLogManager.java @@ -98,16 +98,14 @@ public class SimpleLogManager extends CustomLogManager { return false; } CustomLogger newLogger = new CustomLogger(logger); - super.addLogger(newLogger); - return true; + return super.addLogger(newLogger); } public class CustomLogger extends Logger { + final Logger keepRef; // keep a strong reference to avoid GC. CustomLogger(Logger logger) { super(logger.getName(), logger.getResourceBundleName()); - } - CustomLogger(String name) { - super(name, null); + keepRef = logger; } } } From 8a6d9792cee6c89c5fea86a0144b48d5a7d7b0d0 Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Wed, 5 Feb 2014 10:15:45 -0800 Subject: [PATCH 151/158] 8033526: Fix serial lint warnings in java.awt.* Reviewed-by: briangoetz --- jdk/src/share/classes/java/awt/color/CMMException.java | 1 + .../share/classes/java/awt/color/ProfileDataException.java | 3 ++- jdk/src/share/classes/java/awt/datatransfer/FlavorEvent.java | 4 +++- .../classes/java/awt/geom/IllegalPathStateException.java | 4 +++- .../java/awt/geom/NoninvertibleTransformException.java | 4 +++- jdk/src/share/classes/java/awt/image/ImagingOpException.java | 3 ++- .../share/classes/java/awt/image/RasterFormatException.java | 3 ++- .../classes/java/awt/image/renderable/ParameterBlock.java | 4 +++- .../share/classes/java/awt/print/PrinterAbortException.java | 3 ++- jdk/src/share/classes/java/awt/print/PrinterException.java | 3 ++- 10 files changed, 23 insertions(+), 9 deletions(-) diff --git a/jdk/src/share/classes/java/awt/color/CMMException.java b/jdk/src/share/classes/java/awt/color/CMMException.java index 04497f69cc4..c175bc38ebe 100644 --- a/jdk/src/share/classes/java/awt/color/CMMException.java +++ b/jdk/src/share/classes/java/awt/color/CMMException.java @@ -47,6 +47,7 @@ package java.awt.color; */ public class CMMException extends java.lang.RuntimeException { + private static final long serialVersionUID = 5775558044142994965L; /** * Constructs a CMMException with the specified detail message. diff --git a/jdk/src/share/classes/java/awt/color/ProfileDataException.java b/jdk/src/share/classes/java/awt/color/ProfileDataException.java index 829a92862f8..1a37014b89f 100644 --- a/jdk/src/share/classes/java/awt/color/ProfileDataException.java +++ b/jdk/src/share/classes/java/awt/color/ProfileDataException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +31,7 @@ package java.awt.color; */ public class ProfileDataException extends java.lang.RuntimeException { + private static final long serialVersionUID = 7286140888240322498L; /** * Constructs a ProfileDataException with the specified detail message. diff --git a/jdk/src/share/classes/java/awt/datatransfer/FlavorEvent.java b/jdk/src/share/classes/java/awt/datatransfer/FlavorEvent.java index 036ea9aef10..3e627e69603 100644 --- a/jdk/src/share/classes/java/awt/datatransfer/FlavorEvent.java +++ b/jdk/src/share/classes/java/awt/datatransfer/FlavorEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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,6 +38,8 @@ import java.util.EventObject; * @since 1.5 */ public class FlavorEvent extends EventObject { + private static final long serialVersionUID = -5842664112252414548L; + /** * Constructs a FlavorEvent object. * diff --git a/jdk/src/share/classes/java/awt/geom/IllegalPathStateException.java b/jdk/src/share/classes/java/awt/geom/IllegalPathStateException.java index 629a46576ac..b07ea6af2aa 100644 --- a/jdk/src/share/classes/java/awt/geom/IllegalPathStateException.java +++ b/jdk/src/share/classes/java/awt/geom/IllegalPathStateException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,8 @@ package java.awt.geom; */ public class IllegalPathStateException extends RuntimeException { + private static final long serialVersionUID = -5158084205220481094L; + /** * Constructs an IllegalPathStateException with no * detail message. diff --git a/jdk/src/share/classes/java/awt/geom/NoninvertibleTransformException.java b/jdk/src/share/classes/java/awt/geom/NoninvertibleTransformException.java index 72c1417ba77..8184f784b2b 100644 --- a/jdk/src/share/classes/java/awt/geom/NoninvertibleTransformException.java +++ b/jdk/src/share/classes/java/awt/geom/NoninvertibleTransformException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,6 +33,8 @@ package java.awt.geom; */ public class NoninvertibleTransformException extends java.lang.Exception { + private static final long serialVersionUID = 6137225240503990466L; + /** * Constructs an instance of * NoninvertibleTransformException diff --git a/jdk/src/share/classes/java/awt/image/ImagingOpException.java b/jdk/src/share/classes/java/awt/image/ImagingOpException.java index c139e47a521..ca12f18f371 100644 --- a/jdk/src/share/classes/java/awt/image/ImagingOpException.java +++ b/jdk/src/share/classes/java/awt/image/ImagingOpException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,6 +32,7 @@ package java.awt.image; * process the image. */ public class ImagingOpException extends java.lang.RuntimeException { + private static final long serialVersionUID = 8026288481846276658L; /** * Constructs an ImagingOpException object with the diff --git a/jdk/src/share/classes/java/awt/image/RasterFormatException.java b/jdk/src/share/classes/java/awt/image/RasterFormatException.java index 59dd8959936..976eb782201 100644 --- a/jdk/src/share/classes/java/awt/image/RasterFormatException.java +++ b/jdk/src/share/classes/java/awt/image/RasterFormatException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,6 +31,7 @@ package java.awt.image; * invalid layout information in the {@link Raster}. */ public class RasterFormatException extends java.lang.RuntimeException { + private static final long serialVersionUID = 96598996116164315L; /** * Constructs a new RasterFormatException with the diff --git a/jdk/src/share/classes/java/awt/image/renderable/ParameterBlock.java b/jdk/src/share/classes/java/awt/image/renderable/ParameterBlock.java index 9726020dd30..ca12bfc4c4b 100644 --- a/jdk/src/share/classes/java/awt/image/renderable/ParameterBlock.java +++ b/jdk/src/share/classes/java/awt/image/renderable/ParameterBlock.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -93,6 +93,8 @@ import java.util.Vector; * * */ public class ParameterBlock implements Cloneable, Serializable { + private static final long serialVersionUID = -7577115551785240750L; + /** A Vector of sources, stored as arbitrary Objects. */ protected Vector sources = new Vector(); diff --git a/jdk/src/share/classes/java/awt/print/PrinterAbortException.java b/jdk/src/share/classes/java/awt/print/PrinterAbortException.java index d775121dbf1..f421dae9bea 100644 --- a/jdk/src/share/classes/java/awt/print/PrinterAbortException.java +++ b/jdk/src/share/classes/java/awt/print/PrinterAbortException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,6 +33,7 @@ package java.awt.print; */ public class PrinterAbortException extends PrinterException { + private static final long serialVersionUID = 4725169026278854136L; /** * Constructs a new PrinterAbortException with no diff --git a/jdk/src/share/classes/java/awt/print/PrinterException.java b/jdk/src/share/classes/java/awt/print/PrinterException.java index 6304b29c481..5ec275ec5f0 100644 --- a/jdk/src/share/classes/java/awt/print/PrinterException.java +++ b/jdk/src/share/classes/java/awt/print/PrinterException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,6 +32,7 @@ package java.awt.print; */ public class PrinterException extends Exception { + private static final long serialVersionUID = -3757589981158265819L; /** * Constructs a new PrinterException object From 5475110b726b3c11b717dd130a9f16f8ed97c4bb Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Wed, 5 Feb 2014 10:21:18 -0800 Subject: [PATCH 152/158] 8033616: Fix serial lint warnings in javax.imageio.* Reviewed-by: alanb --- jdk/src/share/classes/javax/imageio/IIOException.java | 3 ++- .../javax/imageio/metadata/IIOInvalidTreeException.java | 3 ++- .../share/classes/javax/imageio/metadata/IIOMetadataNode.java | 3 ++- jdk/src/share/classes/javax/imageio/spi/DigraphNode.java | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/jdk/src/share/classes/javax/imageio/IIOException.java b/jdk/src/share/classes/javax/imageio/IIOException.java index 6a1c4d9ac5f..1b3cb8e6a96 100644 --- a/jdk/src/share/classes/javax/imageio/IIOException.java +++ b/jdk/src/share/classes/javax/imageio/IIOException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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,6 +40,7 @@ import java.io.IOException; * */ public class IIOException extends IOException { + private static final long serialVersionUID = -3216210718638985251L; /** * Constructs an IIOException with a given message diff --git a/jdk/src/share/classes/javax/imageio/metadata/IIOInvalidTreeException.java b/jdk/src/share/classes/javax/imageio/metadata/IIOInvalidTreeException.java index 7f50cc80a85..9bec7c90eb4 100644 --- a/jdk/src/share/classes/javax/imageio/metadata/IIOInvalidTreeException.java +++ b/jdk/src/share/classes/javax/imageio/metadata/IIOInvalidTreeException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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,6 +44,7 @@ import org.w3c.dom.Node; * */ public class IIOInvalidTreeException extends IIOException { + private static final long serialVersionUID = -1314083172544132777L; /** * The Node that led to the parsing error, or diff --git a/jdk/src/share/classes/javax/imageio/metadata/IIOMetadataNode.java b/jdk/src/share/classes/javax/imageio/metadata/IIOMetadataNode.java index bb5833a0a2f..1f3fd25f131 100644 --- a/jdk/src/share/classes/javax/imageio/metadata/IIOMetadataNode.java +++ b/jdk/src/share/classes/javax/imageio/metadata/IIOMetadataNode.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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,6 +41,7 @@ import org.w3c.dom.UserDataHandler; class IIODOMException extends DOMException { + private static final long serialVersionUID = -4369510142067447468L; public IIODOMException(short code, String message) { super(code, message); diff --git a/jdk/src/share/classes/javax/imageio/spi/DigraphNode.java b/jdk/src/share/classes/javax/imageio/spi/DigraphNode.java index 9473ced32fc..b133c29db9a 100644 --- a/jdk/src/share/classes/javax/imageio/spi/DigraphNode.java +++ b/jdk/src/share/classes/javax/imageio/spi/DigraphNode.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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,6 +40,7 @@ import java.util.Set; * */ class DigraphNode implements Cloneable, Serializable { + private static final long serialVersionUID = 5308261378582246841L; /** The data associated with this node. */ protected Object data; From aef65cc369d3351b93510383f84010d798372399 Mon Sep 17 00:00:00 2001 From: Vinnie Ryan Date: Wed, 5 Feb 2014 18:37:42 +0000 Subject: [PATCH 153/158] 8025669: [parfait] warning from b62 for jdk.src.solaris.native.com.sun.security.auth.module: memory leak Reviewed-by: alanb, chegar --- .../com/sun/security/auth/module/Solaris.c | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/jdk/src/solaris/native/com/sun/security/auth/module/Solaris.c b/jdk/src/solaris/native/com/sun/security/auth/module/Solaris.c index 2b8e2d2b11e..dd989f735f7 100644 --- a/jdk/src/solaris/native/com/sun/security/auth/module/Solaris.c +++ b/jdk/src/solaris/native/com/sun/security/auth/module/Solaris.c @@ -75,11 +75,12 @@ Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo if (fid == 0) { (*env)->ExceptionClear(env); throwIllegalArgumentException(env, "invalid field: username"); - return; + goto cleanupAndReturn; } jstr = (*env)->NewStringUTF(env, pwd.pw_name); - if (jstr == NULL) - return; + if (jstr == NULL) { + goto cleanupAndReturn; + } (*env)->SetObjectField(env, obj, fid, jstr); /* @@ -89,7 +90,7 @@ Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo if (fid == 0) { (*env)->ExceptionClear(env); throwIllegalArgumentException(env, "invalid field: uid"); - return; + goto cleanupAndReturn; } (*env)->SetLongField(env, obj, fid, pwd.pw_uid); @@ -100,7 +101,7 @@ Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo if (fid == 0) { (*env)->ExceptionClear(env); throwIllegalArgumentException(env, "invalid field: gid"); - return; + goto cleanupAndReturn; } (*env)->SetLongField(env, obj, fid, pwd.pw_gid); @@ -111,19 +112,24 @@ Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo if (fid == 0) { (*env)->ExceptionClear(env); throwIllegalArgumentException(env, "invalid field: groups"); - return; + goto cleanupAndReturn; } jgroups = (*env)->NewLongArray(env, numSuppGroups); - if (jgroups == NULL) - return; + if (jgroups == NULL) { + goto cleanupAndReturn; + } jgroupsAsArray = (*env)->GetLongArrayElements(env, jgroups, 0); - if (jgroupsAsArray == NULL) - return; + if (jgroupsAsArray == NULL) { + goto cleanupAndReturn; + } for (i = 0; i < numSuppGroups; i++) jgroupsAsArray[i] = groups[i]; (*env)->ReleaseLongArrayElements(env, jgroups, jgroupsAsArray, 0); (*env)->SetObjectField(env, obj, fid, jgroups); } +cleanupAndReturn: + free(groups); + return; } From 93c628f1577e4a8f3bf2bbb5c0deeeef13338970 Mon Sep 17 00:00:00 2001 From: David Katleman Date: Thu, 6 Feb 2014 13:08:35 -0800 Subject: [PATCH 154/158] Added tag jdk9-b02 for changeset 325b5971d828 --- .hgtags-top-repo | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags-top-repo b/.hgtags-top-repo index 6a7cb46c540..fe1310f80db 100644 --- a/.hgtags-top-repo +++ b/.hgtags-top-repo @@ -244,3 +244,4 @@ a4afb0a8d55ef75aef5b0d77b434070468fb89f8 jdk8-b117 cd3825b2983045784d6fc6d1729c799b08215752 jdk8-b120 1e1f86d5d4e22c15a9bf9f1581acddb8c59abae2 jdk9-b00 50669e45cec4491de0d921d3118a3fe2e767020a jdk9-b01 +135f0c7af57ebace31383d8877f47e32172759ff jdk9-b02 From aedfbb387a96b64fe176cbfa743337abc13648d2 Mon Sep 17 00:00:00 2001 From: David Katleman Date: Thu, 6 Feb 2014 13:08:37 -0800 Subject: [PATCH 155/158] Added tag jdk9-b02 for changeset 82544a65e6da --- corba/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/corba/.hgtags b/corba/.hgtags index 914430fb54c..03c69ec949f 100644 --- a/corba/.hgtags +++ b/corba/.hgtags @@ -244,3 +244,4 @@ d6820a414f182a011a53a29a52370c696cd58dab jdk8-b118 53fd772d28c8a9f0f43adfc06f75f6b3cfa93cb5 jdk8-b120 a7d3638deb2f4e33217b1ecf889479e90f9e5b50 jdk9-b00 79a8136b18c1c6848f500088f5a4b39f262f082d jdk9-b01 +8394993063135a42b63a94473280399fb2a13aa7 jdk9-b02 From d57ec22d365ec0d1c4063093bc9b08f57a3266e8 Mon Sep 17 00:00:00 2001 From: David Katleman Date: Thu, 6 Feb 2014 13:08:44 -0800 Subject: [PATCH 156/158] Added tag jdk9-b02 for changeset e67a27d0c98a --- hotspot/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/hotspot/.hgtags b/hotspot/.hgtags index 7b9d7597d6e..9b4aa750ec2 100644 --- a/hotspot/.hgtags +++ b/hotspot/.hgtags @@ -404,3 +404,4 @@ ce42d815dd2130250acf6132b51b624001638f0d jdk8-b119 fca262db9c4309f99d2f5542ab0780e45c2f1578 jdk8-b120 ce2d7e46f3c7e41241f3b407705a4071323a11ab jdk9-b00 050a626a88951140df874f7b163e304d07b6c296 jdk9-b01 +b188446de75bda5fc52d102cddf242c3ef5ecbdf jdk9-b02 From 3bc4831434bf1ee8c1277f3a511a9e307b095240 Mon Sep 17 00:00:00 2001 From: David Katleman Date: Thu, 6 Feb 2014 13:09:10 -0800 Subject: [PATCH 157/158] Added tag jdk9-b02 for changeset 22a10c3cb5f3 --- jdk/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/jdk/.hgtags b/jdk/.hgtags index 4cde2b895e7..5a7ffba22b9 100644 --- a/jdk/.hgtags +++ b/jdk/.hgtags @@ -244,3 +244,4 @@ e4499a6529e8c3e762ba86f45cdd774c92a8e7bc jdk8-b119 d31cd980e1da31fa496a359caaf1a165aeb5791a jdk8-b120 27b384262cba51dd0fe3e3534820189b46abc8cb jdk9-b00 3b4ac8d1b76fc6bec9815f0ab714f15b552e4c7b jdk9-b01 +8c8275426a3207d91393354f7a7f9bc362ec25cf jdk9-b02 From b7addf4329493f2b368b4b6a484683776ff5a459 Mon Sep 17 00:00:00 2001 From: David Katleman Date: Thu, 6 Feb 2014 13:09:43 -0800 Subject: [PATCH 158/158] Added tag jdk9-b02 for changeset 81bb5f538220 --- nashorn/.hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/nashorn/.hgtags b/nashorn/.hgtags index 3d90b565999..6236fcba08e 100644 --- a/nashorn/.hgtags +++ b/nashorn/.hgtags @@ -235,3 +235,4 @@ c3343930c73c58a22c1d58719bb988aeb25a871f jdk8-b119 688f4167f92188482b0d80e315c72f726c6d5ff6 jdk8-b123 32631eed0fad2b31346eb41b29a50227bd29e2ec jdk9-b00 65347535840f045f2cd4341d7466c51009b1b06f jdk9-b01 +b3517e51f40477f10db8bc30a557aa0ea712c274 jdk9-b02