diff -Nru openjdk-6-6b31-1.13.3/acinclude.m4 openjdk-6-6b38-1.13.10/acinclude.m4 --- openjdk-6-6b31-1.13.3/acinclude.m4 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/acinclude.m4 2016-01-26 13:35:01.000000000 +0000 @@ -22,6 +22,12 @@ JRE_ARCH_DIR=alpha CROSS_TARGET_ARCH=alpha ;; + arm64|aarch64) + BUILD_ARCH_DIR=aarch64 + INSTALL_ARCH_DIR=aarch64 + JRE_ARCH_DIR=aarch64 + ARCHFLAG="-D_LITTLE_ENDIAN" + ;; arm*) BUILD_ARCH_DIR=arm INSTALL_ARCH_DIR=arm @@ -722,6 +728,7 @@ AC_REQUIRE([IT_ENABLE_CACAO]) AC_REQUIRE([IT_ENABLE_JAMVM]) AC_REQUIRE([IT_SET_SHARK_BUILD]) + AC_REQUIRE([IT_HAS_NATIVE_HOTSPOT_PORT]) AC_MSG_CHECKING([whether to use the zero-assembler port]) use_zero=no AC_ARG_ENABLE([zero], @@ -740,21 +747,14 @@ [ if test "x${use_shark}" = "xyes"; then use_zero=yes; - else - case "${host}" in - i?86-*-*) ;; - sparc*-*-*) ;; - x86_64-*-*) ;; - *) - if test "x${ENABLE_CACAO}" != xno || \ - test "x${ENABLE_JAMVM}" = xyes; then - use_zero=no - else - use_zero=yes - fi - ;; - esac - fi + else if test "x$has_native_hotspot_port" = "xno"; then + if test "x${ENABLE_CACAO}" = xyes || \ + test "x${ENABLE_JAMVM}" = xyes; then + use_zero=no + else + use_zero=yes + fi + fi; fi ]) AC_MSG_RESULT($use_zero) AM_CONDITIONAL(ZERO_BUILD, test "x${use_zero}" = xyes) @@ -827,7 +827,14 @@ AC_ARG_ENABLE([jamvm], [AS_HELP_STRING(--enable-jamvm,use JamVM as VM [[default=no]])], [ - ENABLE_JAMVM="${enableval}" + case "${enableval}" in + yes) + ENABLE_JAMVM=yes + ;; + *) + ENABLE_JAMVM=no + ;; + esac ], [ ENABLE_JAMVM=no @@ -866,7 +873,14 @@ AC_ARG_ENABLE([cacao], [AS_HELP_STRING(--enable-cacao,use CACAO as VM [[default=no]])], [ - ENABLE_CACAO="${enableval}" + case "${enableval}" in + yes) + ENABLE_CACAO=yes + ;; + *) + ENABLE_CACAO=no + ;; + esac ], [ ENABLE_CACAO=no @@ -1089,8 +1103,8 @@ BOOTSTRAP_VMS="/usr/lib/jvm/java-gcj /usr/lib/jvm/gcj-jdk /usr/lib/jvm/cacao"; fi ICEDTEA6_VMS="/usr/lib/jvm/icedtea-6 /usr/lib/jvm/icedtea6 /usr/lib/jvm/java-6-openjdk - /usr/lib/jvm/java-1.6.0-openjdk.x86_64 /usr/lib64/jvm/java-1.6.0-openjdk - /usr/lib/jvm/java-1.6.0" + /usr/lib/jvm/java-1.6.0-openjdk /usr/lib/jvm/java-1.6.0-openjdk.x86_64 + /usr/lib64/jvm/java-1.6.0-openjdk /usr/lib/jvm/java-1.6.0" for dir in ${BOOTSTRAP_VMS} ${ICEDTEA6_VMS} \ /usr/lib/jvm/java-openjdk /usr/lib/jvm/openjdk /usr/lib/jvm/java-icedtea \ /etc/alternatives/java_sdk_openjdk ; do @@ -1344,6 +1358,19 @@ AC_PROVIDE([$0])dnl ]) +AC_DEFUN_ONCE([IT_HAS_NATIVE_HOTSPOT_PORT], +[ + AC_MSG_CHECKING([if a native HotSpot port is available for this architecture]) + has_native_hotspot_port=yes; + case "${host_cpu}" in + i?86) ;; + sparc) ;; + x86_64) ;; + *) has_native_hotspot_port=no; + esac + AC_MSG_RESULT([$has_native_hotspot_port]) +]) + AC_DEFUN_ONCE([IT_GETDTDTYPE_CHECK],[ AC_REQUIRE([IT_CHECK_JAVA_AND_JAVAC_WORK]) AC_CACHE_CHECK([if javax.xml.stream.events.Attribute.getDTDType() wrongly returns a QName], it_cv_dtdtype, [ @@ -1554,10 +1581,10 @@ AC_MSG_RESULT(${ENABLE_SYSTEM_LCMS}) if test x"${ENABLE_SYSTEM_LCMS}" = "xyes"; then dnl Check for LCMS2 headers and libraries. - PKG_CHECK_MODULES(LCMS2, lcms2 >= 2.5,[LCMS2_FOUND=yes],[LCMS2_FOUND=no]) + PKG_CHECK_MODULES(LCMS2, lcms2,[LCMS2_FOUND=yes],[LCMS2_FOUND=no]) if test "x${LCMS2_FOUND}" = xno then - AC_MSG_ERROR([Could not find LCMS >= 2.5; install it or build with --disable-system-lcms to use the in-tree copy.]) + AC_MSG_ERROR([Could not find LCMS 2; install it or build with --disable-system-lcms to use the in-tree copy.]) fi AC_SUBST(LCMS2_CFLAGS) AC_SUBST(LCMS2_LIBS) @@ -2142,7 +2169,7 @@ AC_DEFUN_ONCE([IT_HAS_PAX], [ AC_MSG_CHECKING([if a PaX kernel is in use]) - if cat /proc/self/status | grep '^PaX' >&AS_MESSAGE_LOG_FD 2>&1; then + if grep '^PaX' /proc/self/status >&AS_MESSAGE_LOG_FD 2>&1; then pax_active=yes; else pax_active=no; @@ -2159,41 +2186,44 @@ AC_ARG_WITH([pax], [AS_HELP_STRING(--with-pax=COMMAND,the command used for pax marking)], [ - if test "x${withval}" = "xyes"; then - PAX_COMMAND=no - else - PAX_COMMAND="${withval}" - fi + PAX_COMMAND="${withval}" ], [ - PAX_COMMAND=no + PAX_COMMAND=${pax_active} ]) - AC_MSG_RESULT(${PAX_COMMAND}) - if test "x${PAX_COMMAND}" == "xno"; then + if test "x${PAX_COMMAND}" == "xyes"; then + AC_MSG_RESULT([no]) PAX_COMMAND=${PAX_DEFAULT} + AC_MSG_NOTICE([PaX enabled but no tool specified; using ${PAX_DEFAULT}]) + else + AC_MSG_RESULT(${PAX_COMMAND}) fi - AC_MSG_CHECKING([if $PAX_COMMAND is a valid executable file]) - if test -x "${PAX_COMMAND}" && test -f "${PAX_COMMAND}"; then - AC_MSG_RESULT([yes]) + if test "x${PAX_COMMAND}" != "xno"; then + AC_MSG_CHECKING([if $PAX_COMMAND is a valid executable file]) + if test -x "${PAX_COMMAND}" && test -f "${PAX_COMMAND}"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PAX_COMMAND="" + AC_PATH_PROG(PAX_COMMAND, "paxmark.sh") + if test -z "${PAX_COMMAND}"; then + AC_PATH_PROG(PAX_COMMAND, "paxctl-ng") + fi + if test -z "${PAX_COMMAND}"; then + AC_PATH_PROG(PAX_COMMAND, "chpax") + fi + if test -z "${PAX_COMMAND}"; then + AC_PATH_PROG(PAX_COMMAND, "paxctl") + fi + fi else - AC_MSG_RESULT([no]) PAX_COMMAND="" - AC_PATH_PROG(PAX_COMMAND, "paxmark.sh") - if test -z "${PAX_COMMAND}"; then - AC_PATH_PROG(PAX_COMMAND, "paxctl-ng") - fi - if test -z "${PAX_COMMAND}"; then - AC_PATH_PROG(PAX_COMMAND, "chpax") - fi - if test -z "${PAX_COMMAND}"; then - AC_PATH_PROG(PAX_COMMAND, "paxctl") - fi - if test -z "${PAX_COMMAND}"; then - if test "x${pax_active}" = "xyes"; then - AC_MSG_ERROR("No PaX utility found and running on a PaX kernel.") - else - AC_MSG_WARN("No PaX utility found.") - fi + fi + if test -z "${PAX_COMMAND}"; then + if test "x${pax_active}" = "xyes"; then + AC_MSG_ERROR("No PaX utility found and running on a PaX kernel.") + else + AC_MSG_WARN("No PaX utility found.") fi fi if test -z "${PAX_COMMAND}"; then @@ -2317,3 +2347,99 @@ AC_MSG_RESULT([$enable_werror]) AM_CONDITIONAL([ENABLE_WERROR], test x"${enable_werror}" = "xyes") ]) + +AC_DEFUN_ONCE([IT_PR64174_CHECK],[ +AC_REQUIRE([IT_CHECK_JAVA_AND_JAVAC_WORK]) +AC_CACHE_CHECK([if java.text.SimpleDateFormat exhibits Classpath bug 64174], it_cv_cp64174, [ + CLASS=Test.java + BYTECODE=$(echo $CLASS|sed 's#\.java##') + mkdir tmp.$$ + cd tmp.$$ + cat << \EOF > $CLASS +[/* [#]line __oline__ "configure" */ +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Locale; +import java.util.TimeZone; + +public class Test +{ + public static void main(String[] args) + throws ParseException + { + SimpleDateFormat format; + + format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.US); + format.setTimeZone(TimeZone.getTimeZone("GMT")); + format.setLenient(false); + System.out.println(format.parse("2014-12-31-22-00-00")); + } +}] +EOF + if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then + if $JAVA -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then + it_cv_cp64174=no; + else + it_cv_cp64174=yes; + fi + else + it_cv_cp64174=yes; + fi + rm -f $CLASS *.class + cd .. + rmdir tmp.$$ + ]) +AM_CONDITIONAL([CP64174], test x"${it_cv_cp64174}" = "xyes") +AC_PROVIDE([$0])dnl +]) + +AC_DEFUN_ONCE([IT_ENABLE_NON_NSS_CURVES], +[ + AC_MSG_CHECKING([whether to enable elliptic curves beyond those supported by NSS]) + AC_ARG_ENABLE([non-nss-curves], + [AS_HELP_STRING(--enable-non-nss-curves,register curves beyond the 3 NSS defines [[default=no]])], + [ + case "${enableval}" in + no) + ENABLE_NON_NSS_CURVES=no + ;; + *) + ENABLE_NON_NSS_CURVES=yes + ;; + esac + ], + [ + ENABLE_NON_NSS_CURVES="no" + ]) + AC_MSG_RESULT(${ENABLE_NON_NSS_CURVES}) + AM_CONDITIONAL(USE_NON_NSS_CURVES, test x"${ENABLE_NON_NSS_CURVES}" = "xyes") + AC_SUBST(ENABLE_NON_NSS_CURVES) +]) + +AC_DEFUN_ONCE([IT_WITH_FONTS_DIR], +[ + FONTS_DEFAULT=/usr/share/fonts + AC_MSG_CHECKING([where fonts are stored]) + AC_ARG_WITH([fonts-dir], + [AS_HELP_STRING(--with-fonts-dir=PATH,fonts [[DATAROOTDIR/fonts]])], + [ + fontdir=${withval} + ], + [ + fontdir=${FONTS_DEFAULT} + ]) + AC_MSG_RESULT(${fontdir}) + if test "x${fontdir}" = "xyes" -o "x${fontdir}" = "xno"; then + AC_MSG_NOTICE([No font directory specified; using ${FONTS_DEFAULT}]) + fontdir=${FONTS_DEFAULT} ; + fi + AC_MSG_CHECKING([if $fontdir is a valid directory]) + if test -d "${fontdir}" ; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + AC_MSG_WARN([No valid font directory found]) + fi + AC_SUBST(fontdir) +]) diff -Nru openjdk-6-6b31-1.13.3/aclocal.m4 openjdk-6-6b38-1.13.10/aclocal.m4 --- openjdk-6-6b31-1.13.3/aclocal.m4 2014-04-16 03:18:55.000000000 +0000 +++ openjdk-6-6b38-1.13.10/aclocal.m4 2016-01-26 13:35:01.000000000 +0000 @@ -1,7 +1,8 @@ -# generated automatically by aclocal 1.14.1 -*- Autoconf -*- - -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# generated automatically by aclocal 1.11.6 -*- Autoconf -*- +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, +# Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -11,14 +12,13 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. -m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically 'autoreconf'.])]) +To do so, use the procedure documented by the package, typically `autoreconf'.])]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) @@ -180,22 +180,80 @@ fi[]dnl ])# PKG_CHECK_MODULES -# Copyright (C) 2002-2013 Free Software Foundation, Inc. + +# PKG_INSTALLDIR(DIRECTORY) +# ------------------------- +# Substitutes the variable pkgconfigdir as the location where a module +# should install pkg-config .pc files. By default the directory is +# $libdir/pkgconfig, but the default can be changed by passing +# DIRECTORY. The user can override through the --with-pkgconfigdir +# parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +]) dnl PKG_INSTALLDIR + + +# PKG_NOARCH_INSTALLDIR(DIRECTORY) +# ------------------------- +# Substitutes the variable noarch_pkgconfigdir as the location where a +# module should install arch-independent pkg-config .pc files. By +# default the directory is $datadir/pkgconfig, but the default can be +# changed by passing DIRECTORY. The user can override through the +# --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +]) dnl PKG_NOARCH_INSTALLDIR + + +# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------------------------------------- +# Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])# PKG_CHECK_VAR + +# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software +# Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 1 + # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.14' +[am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.14.1], [], +m4_if([$1], [1.11.6], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -211,22 +269,24 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.14.1])dnl +[AM_AUTOMAKE_VERSION([1.11.6])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 1 + # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to -# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and @@ -245,7 +305,7 @@ # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is '.', but things will broke when you +# harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, @@ -271,19 +331,22 @@ # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 +# Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 9 + # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl @@ -302,14 +365,16 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, +# 2010, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 12 -# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing @@ -319,7 +384,7 @@ # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was @@ -332,13 +397,12 @@ AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], - [$1], [CXX], [depcc="$CXX" am_compiler_list=], - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], - [$1], [UPC], [depcc="$UPC" am_compiler_list=], - [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], @@ -346,8 +410,8 @@ # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -387,16 +451,16 @@ : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with '-c' and '-o' for the sake of the "dashmstdout" + # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -405,8 +469,8 @@ test "$am__universal" = false || continue ;; nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else @@ -414,7 +478,7 @@ fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has + # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -462,7 +526,7 @@ # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl @@ -472,13 +536,9 @@ # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE([dependency-tracking], [dnl -AS_HELP_STRING( - [--enable-dependency-tracking], - [do not reject slow dependency extractors]) -AS_HELP_STRING( - [--disable-dependency-tracking], - [speeds up one-time build])]) +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' @@ -493,18 +553,20 @@ # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +#serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ - # Older Autoconf quotes --file arguments for eval, but not when files + # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in @@ -517,7 +579,7 @@ # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but + # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. @@ -529,19 +591,21 @@ continue fi # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. + # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue + test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` @@ -559,7 +623,7 @@ # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each '.P' file that we will +# is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], @@ -569,21 +633,18 @@ # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 16 + # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. -dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. -m4_define([AC_PROG_CC], -m4_defn([AC_PROG_CC]) -[_AM_PROG_CC_C_O -]) - # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- @@ -596,7 +657,7 @@ # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.65])dnl +[AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl @@ -625,40 +686,31 @@ # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], -[AC_DIAGNOSE([obsolete], - [$0: two- and three-arguments forms are deprecated.]) -m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), - [ok:ok],, +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) - AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) -AM_MISSING_PROG([AUTOCONF], [autoconf]) -AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) -AM_MISSING_PROG([AUTOHEADER], [autoheader]) -AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl @@ -669,79 +721,34 @@ [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES([CC])], - [m4_define([AC_PROG_CC], - m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES([CXX])], - [m4_define([AC_PROG_CXX], - m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES([OBJC])], - [m4_define([AC_PROG_OBJC], - m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], - [_AM_DEPENDENCIES([OBJCXX])], - [m4_define([AC_PROG_OBJCXX], - m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) -AC_REQUIRE([AM_SILENT_RULES])dnl -dnl The testsuite driver may need to know about EXEEXT, so add the -dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This -dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl +dnl The `parallel-tests' driver may need to know about EXEEXT, so add the +dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro +dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) - fi -fi ]) -dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. @@ -763,12 +770,15 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, +# Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 1 + # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. @@ -782,14 +792,16 @@ install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi -AC_SUBST([install_sh])]) +AC_SUBST(install_sh)]) -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 2 + # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], @@ -803,14 +815,56 @@ rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008, +# 2011 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_MAINTAINER_MODE([DEFAULT-MODE]) +# ---------------------------------- +# Control maintainer-specific portions of Makefiles. +# Default is to disable them, unless `enable' is passed literally. +# For symmetry, `disable' may be passed as well. Anyway, the user +# can override the default with the --enable/--disable switch. +AC_DEFUN([AM_MAINTAINER_MODE], +[m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], +[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful + (and sometimes confusing) to the casual installer], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST([MAINT])dnl +] +) + +AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) + # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 4 + # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. @@ -828,7 +882,7 @@ _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. +# Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include @@ -855,12 +909,15 @@ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 6 + # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], @@ -868,10 +925,11 @@ $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) + # AM_MISSING_HAS_RUN # ------------------ -# Define MISSING if not defined so far and test if it is modern enough. -# If it is, set am_missing_run to use it, otherwise, to nothing. +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl @@ -884,22 +942,54 @@ esac fi # Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " else am_missing_run= - AC_MSG_WARN(['missing' script is too old or missing]) + AC_MSG_WARN([`missing' script is too old or missing]) fi ]) +# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, +# Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software +# Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 5 + # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], @@ -909,7 +999,7 @@ # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ @@ -923,58 +1013,13 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# _AM_PROG_CC_C_O -# --------------- -# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC -# to automatically call this. -AC_DEFUN([_AM_PROG_CC_C_O], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -AC_LANG_PUSH([C])dnl -AC_CACHE_CHECK( - [whether $CC understands -c and -o together], - [am_cv_prog_cc_c_o], - [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i]) -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -AC_LANG_POP([C])]) - -# For backward compatibility. -AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +# serial 1 # AM_RUN_LOG(COMMAND) # ------------------- @@ -989,16 +1034,22 @@ # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 +# Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 5 + # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -1009,40 +1060,32 @@ esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; + AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac -# Do 'set' in a subshell so we don't clobber the current shell's +# Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken - alias in your environment]) - fi - if test "$[2]" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + test "$[2]" = conftest.file ) then @@ -1052,118 +1095,46 @@ AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi -AC_MSG_RESULT([yes]) -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi -AC_CONFIG_COMMANDS_PRE( - [AC_MSG_CHECKING([that generated files are newer than configure]) - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - AC_MSG_RESULT([done])]) -rm -f conftest.file -]) +AC_MSG_RESULT(yes)]) -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# AM_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# ("yes" being less verbose, "no" or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], [dnl -AS_HELP_STRING( - [--enable-silent-rules], - [less verbose build output (undo: "make V=1")]) -AS_HELP_STRING( - [--disable-silent-rules], - [verbose build output (undo: "make V=0")])dnl -]) -case $enable_silent_rules in @%:@ ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -dnl -dnl A few 'make' implementations (e.g., NonStop OS and NextStep) -dnl do not support nested variable expansions. -dnl See automake bug#9928 and bug#10237. -am_make=${MAKE-make} -AC_CACHE_CHECK([whether $am_make supports nested variables], - [am_cv_make_support_nested_variables], - [if AS_ECHO([['TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AC_SUBST([AM_V])dnl -AM_SUBST_NOTMAKE([AM_V])dnl -AC_SUBST([AM_DEFAULT_V])dnl -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -]) - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +# serial 1 # AM_PROG_INSTALL_STRIP # --------------------- -# One issue with vendor 'install' (even GNU) is that you can't +# One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in "make install-strip", and initialize +# always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 3 + # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. @@ -1177,16 +1148,18 @@ # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +# serial 2 + # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. -# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory @@ -1196,114 +1169,76 @@ # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar -# AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' - m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac - [m4_case([$1], - [ustar], - [# The POSIX 1988 'ustar' format is defined with fixed-size fields. - # There is notably a 21 bits limit for the UID and the GID. In fact, - # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 - # and bug#13588). - am_max_uid=2097151 # 2^21 - 1 - am_max_gid=$am_max_uid - # The $UID and $GID variables are not portable, so we need to resort - # to the POSIX-mandated id(1) utility. Errors in the 'id' calls - # below are definitely unexpected, so allow the users to see them - # (that is, avoid stderr redirection). - am_uid=`id -u || echo unknown` - am_gid=`id -g || echo unknown` - AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) - if test $am_uid -le $am_max_uid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi - AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) - if test $am_gid -le $am_max_gid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi], - - [pax], - [], - - [m4_fatal([Unknown tar format])]) - - AC_MSG_CHECKING([how to create a $1 tar archive]) - - # Go ahead even if we have the value already cached. We do so because we - # need to set the values for the 'am__tar' and 'am__untar' variables. - _am_tools=${am_cv_prog_tar_$1-$_am_tools} - - for _am_tool in $_am_tools; do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works. - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi - done + # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir - AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) - AC_MSG_RESULT([$am_cv_prog_tar_$1])]) - +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR diff -Nru openjdk-6-6b31-1.13.3/AUTHORS openjdk-6-6b38-1.13.10/AUTHORS --- openjdk-6-6b31-1.13.3/AUTHORS 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/AUTHORS 2016-01-21 02:42:36.000000000 +0000 @@ -9,6 +9,7 @@ Deepak Bhole Tom Callaway Pablo del Campo +James Le Cuirot Danesh Dadachanji Thomas Fitzsimmons Matthew Flaschen diff -Nru openjdk-6-6b31-1.13.3/autogen.sh openjdk-6-6b38-1.13.10/autogen.sh --- openjdk-6-6b31-1.13.3/autogen.sh 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/autogen.sh 2016-01-26 13:35:01.000000000 +0000 @@ -101,7 +101,7 @@ HAVE_ACLOCAL=false -for ACLOCAL in aclocal aclocal-1.10; do +for ACLOCAL in aclocal-1.11 aclocal aclocal-1.10; do if ${ACLOCAL} --version > /dev/null 2>&1; then ACLOCAL_VERSION=`${ACLOCAL} --version | head -1 | sed 's/^[^0-9]*\([0-9.][0-9.]*\).*/\1/'` # echo ${ACLOCAL_VERSION} @@ -118,7 +118,7 @@ HAVE_AUTOMAKE=false -for AUTOMAKE in automake automake-1.10; do +for AUTOMAKE in automake-1.11 automake automake-1.10; do if ${AUTOMAKE} --version > /dev/null 2>&1; then AUTOMAKE_VERSION=`${AUTOMAKE} --version | head -1 | sed 's/^[^0-9]*\([0-9.][0-9.]*\).*/\1/'` # echo ${AUTOMAKE_VERSION} diff -Nru openjdk-6-6b31-1.13.3/ChangeLog openjdk-6-6b38-1.13.10/ChangeLog --- openjdk-6-6b31-1.13.3/ChangeLog 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/ChangeLog 2016-01-21 02:42:36.000000000 +0000 @@ -1,5 +1,1007 @@ +2016-01-20 Andrew John Hughes + + * NEWS: Set release date to this Friday. + * configure.ac: Bump to 1.13.10. + +2016-01-20 Andrew John Hughes + + * Makefile.am: + (OPENJDK_DATE): Bump to b38 creation date; + 20th of January, 2016. + (OPENJDK_SHA256SUM): Update for b38 tarball. + +2016-01-19 Andrew John Hughes + + * patches/openjdk/p11cipher-4898461-support_ecb_and_cbc.patch, + * patches/openjdk/p11cipher-6867345-turkish_regional_options_cause_npe_in_algoid.patch: + Removed; added upstream in OpenJDK 6 b38. + * Makefile.am: + (ICEDTEA_PATCHES): Remove above patches. + * NEWS: Updated. + * patches/openjdk/6799141-split_out_versions.patch: + Fixed to apply against OPENJDK6-70. + +2015-11-26 Andrew John Hughes + + * Makefile.am: + (OPENJDK_VERSION): Bump to next release, b38. + +2016-01-19 Andrew John Hughes + + * Makefile.am: + (ICEDTEA_PATCHES): Add new patches. + * NEWS: Updated. + * patches/openjdk/7169111-pr2757-unreadable_menu_bar_with_ambiance_theme.patch, + * patches/openjdk/8140620-pr2711-find_default.sf2.patch: + New backports for issues to be fixed in 1.13.10. + +2015-11-17 Andrew John Hughes + + * NEWS: Add 1.13.10 section. + * configure.ac: Bump to 1.13.10pre. + +2015-11-11 Andrew John Hughes + + * NEWS: Update with changes added + in 2nd, 3rd and 4th b37 tarball revisions. + Set release date to this coming Friday. + +2015-11-11 Andrew John Hughes + + * Makefile.am: + (OPENJDK_DATE): Bump to new b37 creation date; + 11th of November, 2015. + (OPENJDK_SHA256SUM): Update for new b37 tarball. + +2015-11-10 Andrew John Hughes + + * Makefile.am: + (OPENJDK_DATE): Bump to new b37 creation date; + 10th of November, 2015. + (OPENJDK_SHA256SUM): Update for new b37 tarball. + +2015-11-04 Andrew John Hughes + + * Makefile.am: + (OPENJDK_DATE): Bump to new b37 creation date; + 4th of November, 2015. + (OPENJDK_SHA256SUM): Update for new b37 tarball. + +2015-10-31 Andrew John Hughes + + * Makefile.am: + (ICEDTEA_PATCHES): Add new patch. + * NEWS: Updated. + * patches/openjdk/6763122-no_zipfile_ctor_exception.patch: + Add fix for TCK regression introduced by PR363. + +2015-10-27 Andrew John Hughes + + * NEWS: Set release date to this Thursday. + * configure.ac: Bump to 1.13.9. + +2015-10-27 Andrew John Hughes + + * Makefile.am: + (OPENJDK_DATE): Bump to b37 creation date; + 27th of October, 2015. + (OPENJDK_SHA256SUM): Update for b37 tarball. + +2015-10-26 Andrew John Hughes + + * NEWS: Updated. + * generated/java/nio/BufferOverflowException.java, + * generated/java/nio/BufferUnderflowException.java, + * generated/java/nio/ByteBuffer.java, + * generated/java/nio/ByteBufferAsCharBufferB.java, + * generated/java/nio/ByteBufferAsCharBufferL.java, + * generated/java/nio/ByteBufferAsCharBufferRB.java, + * generated/java/nio/ByteBufferAsCharBufferRL.java, + * generated/java/nio/ByteBufferAsDoubleBufferB.java, + * generated/java/nio/ByteBufferAsDoubleBufferL.java, + * generated/java/nio/ByteBufferAsDoubleBufferRB.java, + * generated/java/nio/ByteBufferAsDoubleBufferRL.java, + * generated/java/nio/ByteBufferAsFloatBufferB.java, + * generated/java/nio/ByteBufferAsFloatBufferL.java, + * generated/java/nio/ByteBufferAsFloatBufferRB.java, + * generated/java/nio/ByteBufferAsFloatBufferRL.java, + * generated/java/nio/ByteBufferAsIntBufferB.java, + * generated/java/nio/ByteBufferAsIntBufferL.java, + * generated/java/nio/ByteBufferAsIntBufferRB.java, + * generated/java/nio/ByteBufferAsIntBufferRL.java, + * generated/java/nio/ByteBufferAsLongBufferB.java, + * generated/java/nio/ByteBufferAsLongBufferL.java, + * generated/java/nio/ByteBufferAsLongBufferRB.java, + * generated/java/nio/ByteBufferAsLongBufferRL.java, + * generated/java/nio/ByteBufferAsShortBufferB.java, + * generated/java/nio/ByteBufferAsShortBufferL.java, + * generated/java/nio/ByteBufferAsShortBufferRB.java, + * generated/java/nio/ByteBufferAsShortBufferRL.java, + * generated/java/nio/CharBuffer.java, + * generated/java/nio/DirectByteBuffer.java, + * generated/java/nio/DirectByteBufferR.java, + * generated/java/nio/DirectCharBufferRS.java, + * generated/java/nio/DirectCharBufferRU.java, + * generated/java/nio/DirectCharBufferS.java, + * generated/java/nio/DirectCharBufferU.java, + * generated/java/nio/DirectDoubleBufferRS.java, + * generated/java/nio/DirectDoubleBufferRU.java, + * generated/java/nio/DirectDoubleBufferS.java, + * generated/java/nio/DirectDoubleBufferU.java, + * generated/java/nio/DirectFloatBufferRS.java, + * generated/java/nio/DirectFloatBufferRU.java, + * generated/java/nio/DirectFloatBufferS.java, + * generated/java/nio/DirectFloatBufferU.java, + * generated/java/nio/DirectIntBufferRS.java, + * generated/java/nio/DirectIntBufferRU.java, + * generated/java/nio/DirectIntBufferS.java, + * generated/java/nio/DirectIntBufferU.java, + * generated/java/nio/DirectLongBufferRS.java, + * generated/java/nio/DirectLongBufferRU.java, + * generated/java/nio/DirectLongBufferS.java, + * generated/java/nio/DirectLongBufferU.java, + * generated/java/nio/DirectShortBufferRS.java, + * generated/java/nio/DirectShortBufferRU.java, + * generated/java/nio/DirectShortBufferS.java, + * generated/java/nio/DirectShortBufferU.java, + * generated/java/nio/DoubleBuffer.java, + * generated/java/nio/FloatBuffer.java, + * generated/java/nio/HeapByteBuffer.java, + * generated/java/nio/HeapByteBufferR.java, + * generated/java/nio/HeapCharBuffer.java, + * generated/java/nio/HeapCharBufferR.java, + * generated/java/nio/HeapDoubleBuffer.java, + * generated/java/nio/HeapDoubleBufferR.java, + * generated/java/nio/HeapFloatBuffer.java, + * generated/java/nio/HeapFloatBufferR.java, + * generated/java/nio/HeapIntBuffer.java, + * generated/java/nio/HeapIntBufferR.java, + * generated/java/nio/HeapLongBuffer.java, + * generated/java/nio/HeapLongBufferR.java, + * generated/java/nio/HeapShortBuffer.java, + * generated/java/nio/HeapShortBufferR.java, + * generated/java/nio/IntBuffer.java, + * generated/java/nio/InvalidMarkException.java, + * generated/java/nio/LongBuffer.java, + * generated/java/nio/ReadOnlyBufferException.java, + * generated/java/nio/ShortBuffer.java, + * generated/java/nio/channels/AlreadyConnectedException.java, + * generated/java/nio/channels/AsynchronousCloseException.java, + * generated/java/nio/channels/CancelledKeyException.java, + * generated/java/nio/channels/ClosedByInterruptException.java, + * generated/java/nio/channels/ClosedChannelException.java, + * generated/java/nio/channels/ClosedSelectorException.java, + * generated/java/nio/channels/ConnectionPendingException.java, + * generated/java/nio/channels/FileLockInterruptionException.java, + * generated/java/nio/channels/IllegalBlockingModeException.java, + * generated/java/nio/channels/IllegalSelectorException.java, + * generated/java/nio/channels/NoConnectionPendingException.java, + * generated/java/nio/channels/NonReadableChannelException.java, + * generated/java/nio/channels/NonWritableChannelException.java, + * generated/java/nio/channels/NotYetBoundException.java, + * generated/java/nio/channels/NotYetConnectedException.java, + * generated/java/nio/channels/OverlappingFileLockException.java, + * generated/java/nio/channels/UnresolvedAddressException.java, + * generated/java/nio/channels/UnsupportedAddressTypeException.java, + * generated/java/nio/charset/CharacterCodingException.java, + * generated/java/nio/charset/CharsetDecoder.java, + * generated/java/nio/charset/CharsetEncoder.java, + * generated/java/nio/charset/IllegalCharsetNameException.java, + * generated/java/nio/charset/UnsupportedCharsetException.java: + Replaced by versions from a build of OpenJDK 6 b37. + * patches/openjdk/p11cipher-6867345-turkish_regional_options_cause_npe_in_algoid.patch: + Regenerated. + * patches/version.patch: + Fix path from Version-template.java to Version.java.template, + following 6888701 upstream. + +2015-08-18 Andrew John Hughes + + * Makefile.am: + (OPENJDK_VERSION): Bump to next release, b37. + +2015-10-12 Andrew John Hughes + + * Makefile.am: + (ICEDTEA_PATCHES): Add new patches. + * NEWS: Updated. + * patches/openjdk/6440786-pr363-zero_entry_zips.patch, + * patches/openjdk/6599383-pr363-large_zip_files.patch, + * patches/openjdk/6929479-pr363-disable_mmap_zip.patch, + * patches/openjdk/7105461-pr2662-xrender_jtables.patch, + * patches/openjdk/7150134-pr2662-xrender_drawline_oom.patch, + * patches/pr2513-layoutengine_reset.patch: + New backports for issues to be fixed in 1.13.9. + +2015-08-15 Andrew John Hughes + + * NEWS: Add 1.13.9 section. Correct + section formatting. + * configure.ac: Bump to 1.13.9pre. + +2015-07-28 Andrew John Hughes + + PR2565: Replace ipv4-mapped-ipv6-addresses.patch + with upstream fix 6882910 + * Makefile.am: + (ICEDTEA_PATCHES): Add new patch. + * NEWS: Updated. Bump release date. + * patches/ipv4-mapped-ipv6-addresses.patch: + Remove code changes, leaving just the test case. + * patches/openjdk/6882910-ipv6only.patch: + New patch, backporting 6882910 as a replacement + for the older ipv4-mapped-ipv6-addresses.patch + +2015-07-23 Andrew John Hughes + + * NEWS: Remove 7/8-only issue from + security fix list. + +2015-07-22 Andrew John Hughes + + PR2559: generated directory gets confused with + generated alias + * Makefile.am: + (EXTRA_DIST): Change 'generated' to + '$(top_srcdir)/generated'. + * NEWS: Updated. + +2015-07-22 Andrew John Hughes + + * NEWS: Set release date to 23rd of July, + 2015 for 1.13.8. + * configure.ac: Bump to 1.13.8. + +2015-07-22 Andrew John Hughes + + * patches/openjdk/8078666-widen_increases.patch: + Removed; upstream in b36. + * Makefile.am: + (OPENJDK_DATE): Bump to b36 creation date; + 22nd of July, 2015. + (OPENJDK_SHA256SUM): Update for b36 tarball. + * NEWS: Updated with b36 changes. Remove duplicate + issue in 1.13.6 release notes. + * patches/openjdk/6956398-ephemeraldhkeysize.patch: + Regenerated against b36. + +2015-07-20 Andrew John Hughes + + * patches/openjdk/8074312-pr2255-support_linux_4.patch: + Removed; upstreamed. + * patches/pax-mark-rmic-java.patch: Likewise. + * Makefile.am: + (ICEDTEA_PATCHES): Drop above patches. Drop + WITH_PAX block as no longer required. + (ICEDTEA_ECJ_PATCHES): Drop !WITH_PAX block, + merging into main unconditional definition. + * patches/openjdk/4963723-implement_sha-224.patch: + Regenerated due to copyright header change. + +2015-07-20 Andrew John Hughes + + * Makefile.am: + (OPENJDK_VERSION): Bump to next release, b36. + +2015-07-13 Andrew John Hughes + + * AUTHORS: Add James. + * NEWS: Updated. + +2015-05-23 James Le Cuirot + + PR829: Raise javadoc and JAVAC_FLAGS memory + limits for CACAO + * patches/cacao/launcher.patch: + Increase memory limits so a build with CACAO + and doc generation succeeds. + +2015-07-22 Andrew John Hughes + + PR2556, G390663: Update Gentoo font configuration + and allow font directory to be specified + * INSTALL: Document --with-fonts-dir. + * Makefile.am: + (fonts): Copy the generated Gentoo + font properties file into the OpenJDK + tree. + * NEWS: Updated. + * acinclude.m4: + (IT_WITH_FONTS_DIR): Allow the user + to specify where the fonts are stored. + * configure.ac: Invoke IT_WITH_FONTS_DIR + and generate linux.fontconfig.Gentoo.properties + * linux.fontconfig.Gentoo.properties.in: + Template fontconfig file for Gentoo copied from + the main Portage tree. + * patches/fonts-gentoo.patch: + Remove outdated copy of + linux.fontconfig.Gentoo.properties from patch. + +2015-07-13 Andrew John Hughes + + PR2500: Add executable stack markings + to callNative.S on JamVM + * Makefile.am: + (ICEDTEA_PATCHES): Add patch. + (jamvm): Drop setting -noexecstack in + LDFLAGS; replaced by code fix in JamVM. + * NEWS: Updated. + * patches/jamvm/noexecstack.patch: + Add notes to assembly files in order to + turn off executable stack. + +2015-07-13 Andrew John Hughes + + PR2507, G541462: Only apply PaX markings by default + on running PaX kernels + * NEWS: Updated. + * acinclude.m4: + (IT_HAS_PAX): Use grep directly rather + than piping from cat. + (IT_WITH_PAX): Use ${pax_active} as the + default value. Handle --with-pax and + --without-pax options (i.e. without arguments) + better. + +2015-07-15 Andrew John Hughes + + PR2391: Make elliptic curve removal + optional + * acinclude.m4: + (IT_ENABLE_NON_NSS_CURVES): Check ${enableval} + to catch values other than yes/no. + +2015-07-13 Andrew John Hughes + + PR2391: Make elliptic curve removal + optional + * INSTALL: + Document --enable-non-nss-curves. + * Makefile.am: + (ICEDTEA_PATCHES): Only apply + the RH1022017 patch when non-NSS + curves are not enabled. + * NEWS: Updated. + * acinclude.m4: + (IT_ENABLE_NON_NSS_CURVES): New + macro to allow non-NSS curves to + be turned on. + * configure.ac: + Invoke IT_ENABLE_NON_NSS_CURVES. + * fsg.sh.in: + Don't alter the curve list when + non-NSS curves are enabled. + +2015-07-22 Andrew John Hughes + + PR2360: Ensure all stamp targets have aliases + * Makefile.am: + Add missing aliases for add-cacao, + add-cacao-debug, add-jamvm, add-jamvm-debug, + add-nss, add-nss-debug, add-nss-ecj, + add-pulseaudio, add-pulseaudio-debug, + add-pulseaudio-ecj, add-systemtap, + add-systemtap-debug, add-systemtap-ecj, + add-tzdata-support, add-tzdata-support-debug, + add-tzdata-support-ecj, add-zero, add-zero-debug, + extract-openjdk, fonts, generated, hgforest, + ports, pulse-java, pulse-java-class, + pulse-java-headers, pulse-java-jar, + remove-intree-libraries, runnable-icedtea, + runnable-icedtea-debug and runnable-icedtea-ecj. + Remove dead nbplatform and rename rt-jar to rt. + * NEWS: Updated. + +2015-07-06 Andrew John Hughes + + PR2342: Update README & INSTALL files + * INSTALL: Remove dead --with-xalan2-jar, + --with-xalan2-serializer-jar, + --with-xerces2-jar options. Document --with-jdk-home. + Move --enable-system-kerberos to be listed with other + system library options. Mention ARM32 JIT. + * NEWS: Updated. + * README: Mention ARM32 JIT and OpenJDK + compatibility testing page. + * acinclude.m4: + (IT_CHECK_FOR_JDK): Add plain java-1.6.0-openjdk to + ICEDTEA6_VMS. + +2014-06-12 Andrew John Hughes + + PR2340: Fail early if there is no native HotSpot JIT + & all other options are disabled + * NEWS: Updated. + * acinclude.m4: + (IT_ENABLE_ZERO_BUILD): Depend on + IT_HAS_NATIVE_HOTSPOT_PORT. Split out arch-dependent + code into that macro. Make ENABLE_CACAO test more + readable. + (IT_ENABLE_CACAO): Handle enableval same as other macros + so possible values are only ever yes or no. + (IT_ENABLE_JAMVM): Likewise. + (IT_HAS_NATIVE_HOTSPOT_PORT): Architecture detection + split out from IT_ENABLE_ZERO_BUILD. Now sets + has_native_hotspot_port for later reference. + * configure.ac: + Error out if there is no native HotSpot port and + Zero (which implies Shark & ARM32 JIT), CACAO and + JamVM are all disabled. + +2015-07-22 Andrew John Hughes + + * patches/hotspot/hs23/systemtap.patch: + Removed; replaced by backport of upstream version. + * Makefile.am: + (ICEDTEA_PATCHES): Add patches below. Swap + old SystemTap patch for a backport of 7170638. + * NEWS: Updated. + * patches/openjdk/4890063-hprof_truncation.patch, + * patches/openjdk/6562615-compiler_warnings.patch, + * patches/openjdk/6956398-ephemeraldhkeysize.patch, + * patches/openjdk/6989466-compiler_warnings.patch, + * patches/openjdk/6991580-ipv6_nameservers.patch, + * patches/openjdk/6997561-better_jndi_error_handling.patch, + * patches/openjdk/7007905-javazic_line_numbers.patch, + * patches/openjdk/7017176-missing_gpl_headers.patch, + * patches/openjdk/7058708-javazic_warnings.patch, + * patches/openjdk/7069870-generic_array_initializers.patch, + * patches/openjdk/7090844-support_multi_offset_change_timezones.patch, + * patches/openjdk/7094377-ldaps_timeout.patch, + * patches/openjdk/7133138-timezone_io_improvement.patch, + * patches/openjdk/7170638-systemtap.patch, + * patches/openjdk/8000487-jndi_connection_not_honouring_timeout.patch, + * patches/openjdk/8011709-canonshaping_memory_leak.patch, + * patches/openjdk/8023052-jvm_crash_in_native_layout.patch, + * patches/openjdk/8039921-sha1_1024plus.patch, + * patches/openjdk/8041451-ldap_read_timeout_abandon.patch, + * patches/openjdk/8042855-indiclayoutengine_null_dereference.patch, + * patches/openjdk/8042857-14_stuck_threads_on_ldaprequest.patch, + * patches/openjdk/8065238-ldap_namingexception_8041451_regression.patch, + * patches/openjdk/8074761-ldap_empty_optional_params.patch, + * patches/openjdk/8078654-closettfontfilefunc.patch, + * patches/openjdk/8078666-widen_increases.patch, + * patches/openjdk/8081315-giflib_interlacing.patch, + * patches/openjdk/8081475-systemtap-gcc5.patch, + * patches/openjdk/8087120-zero_gcc5.patch, + * patches/pr2319-policy_jar_checksum.patch, + * patches/pr2460-policy_jar_timestamp.patch, + * patches/pr2481_sysconfig_clock_spaces.patch, + * patches/pr2486-768_dh.patch, + * patches/pr2488-1024_dh.patch: Added. + +2015-04-15 Andrew John Hughes + + * NEWS: Add 1.13.8 section. + * configure.ac: Bump to 1.13.8pre. + +2015-04-15 Andrew John Hughes + + * NEWS: Correct 1.13.7 release date. + +2015-04-15 Andrew John Hughes + + * NEWS: Add CVE numbers. + +2015-04-10 Andrew John Hughes + + PR2294: Auto-generated jconsole.desktop + and policytool.desktop should not be included + in release tarball + * Makefile.am: + (EXTRA_DIST): Remove jconsole.desktop and + policytool.desktop + * NEWS: Updated. + +2015-04-09 Andrew John Hughes + + * NEWS: Update with changes from b35. + Set release date to 14th of April, + 2015 for 1.13.7. + * configure.ac: Bump to 1.13.7. + +2015-04-09 Andrew John Hughes + + * Makefile.am: + (OPENJDK_DATE): Bump to security update release date; + 14th of April, 2015. + (OPENJDK_SHA256SUM): Update for b35 tarball. + +2015-04-09 Andrew John Hughes + + * patches/g356743-libpng-1.5.patch: + Removed; applied upstream as part of S7088287. + * Makefile.am: Remove above patch. + * patches/openjdk/4963723-implement_sha-224.patch: + Drop copyright header change to RSASignature.java + as S8071726 upstream updates it to 2015. + +2015-04-09 Andrew John Hughes + + * patches/openjdk/8020190-pr2174-jfieldid_must_match_object.patch, + * patches/openjdk/8028623-pr2177-hash_code_mismatch_for_extended_characters.patch, + * patches/openjdk/8061785-pr2177-test_bug-corrupted_utf8_character.patch: + Removed; upstreamed. + * Makefile.am: + (ICEDTEA_PATCHES): Remove above patches. + +2015-03-31 Andrew John Hughes + + * patches/openjdk/6730740-pr2186-64-bit_breakage_in_6729881.patch, + * patches/openjdk/7031830-pr2183-bad_record_mac_failure.patch, + * patches/openjdk/oj51-pr2187-sync_4873188.patch, + * patches/openjdk/oj52-pr2185-no_serbia_montenegro.patch, + * patches/openjdk/oj53-pr2181-strict_aliasing_on_ppc32.patch, + * patches/openjdk/oj54-pr2182-6911104_reintroduces_test_fragment.patch: + Removed; upstreamed. + * Makefile.am: + (ICEDTEA_PATCHES): Remove above patches. + * patches/arch.patch: Regenerated following + upstream application of OPENJDK6-53. + +2015-01-25 Andrew John Hughes + + * Makefile.am: + (OPENJDK_VERSION): Bump to next release, b35. + +2015-04-03 Andrew John Hughes + + * Makefile.am: + (ICEDTEA_PATCHES): Add new patches. + * NEWS: Updated. + * patches/openjdk/6584008-pr2195-jvmtistringprimitivecallback_null_string.patch, + * patches/openjdk/7199862-pr2198-ensure_cache_connection_still_alive.patch, + * patches/openjdk/8074312-pr2255-support_linux_4.patch, + * patches/pr2197-jhat_man_page_url.patch, + * patches/pr2201-support_giflib_5.1.patch, + * patches/pr2211-check_dgifclosefile_return.patch, + * patches/pr2226-support_future_giflib_6_and_up.patch: + Add new backports and bug fixes. + +2015-01-27 Andrew John Hughes + + * NEWS: Add 1.13.7 section. + * configure.ac: Bump to 1.13.7pre. + +2015-01-26 Andrew John Hughes + + * NEWS: Correct NEWS; CACAO & JamVM + were broken by 1.13.5, not 1.13.6. + +2015-01-23 Andrew John Hughes + + * NEWS: Update release date and fix + description of PR2184. + +2015-01-07 Andrew John Hughes + + PR2190: JamVM lacks JVM_FindClassFromCaller introduced + by security patch in 1.13.5 + * Makefile.am: + (ICEDTEA_PATCHES): Add new patch when building + JamVM. + (EXTRA_DIST): Include patches from JamVM directory. + * NEWS: Updated. + * patches/jamvm/pr2190-find_class_from_caller.patch: + Backport JamVM patch to implement FindClassFromCaller. + +2015-01-21 Andrew John Hughes + + * Makefile.am: + (ICEDTEA_PATCHES): Add patches below. + * NEWS: Updated. + * patches/openjdk/6730740-pr2186-64-bit_breakage_in_6729881.patch, + * patches/openjdk/7031830-pr2183-bad_record_mac_failure.patch, + * patches/openjdk/oj51-pr2187-sync_4873188.patch, + * patches/openjdk/oj52-pr2185-no_serbia_montenegro.patch, + * patches/openjdk/oj53-pr2181-strict_aliasing_on_ppc32.patch, + * patches/openjdk/oj54-pr2182-6911104_reintroduces_test_fragment.patch: + New patches to fix issues found in b34. + +2014-10-29 Andrew John Hughes + + * Makefile.am: + (ICEDTEA_PATCHES): Add new patch for CACAO + builds. + * NEWS: Updated. + * patches/cacao/pr2184.patch: + Implement JVM_FindClassFromCaller as same + as JVM_FindClassFromClassLoader for now. + +2015-01-19 Andrew John Hughes + + * Makefile.am: + (extract-openjdk): Use abs_top_builddir + instead of builddir to please older + versions of autotools. No need to set + fsg.sh executable either as we run it + via sh. + * NEWS: Updated. + +2015-01-19 Andrew John Hughes + + * Makefile.am: + (OPENJDK_SHA256SUM): Update for new b34 tarball. + * NEWS: Updated. + +2015-01-19 Andrew John Hughes + + * Makefile.am: + (OPENJDK_SHA256SUM): Update for new b34 tarball. + (ICEDTEA_PATCHES): Add fix for PR2179. + * NEWS: Updated. + * patches/pr2179-avoid_x86_workaround_on_zero.patch: + Don't apply 8023956 when building Zero on x86. + +2015-01-19 Andrew John Hughes + + * NEWS: Set release date to 20th of January, + 2015 for 1.13.6. + * configure.ac: Bump to 1.13.6. + +2015-01-19 Andrew John Hughes + + * Makefile.am: + (OPENJDK_DATE): Bump to security update release date; + 20th of January, 2015. + (OPENJDK_SHA256SUM): Update for b34 tarball. + +2015-01-19 Andrew John Hughes + + * patches/openjdk/8000897-use_corresponding_digest_length.patch: + Moved to... + * Makefile.am: + (ICEDTEA_PATCHES): Add new patches. + * NEWS: Updated. + * patches/openjdk/8000897-pr2173-vm_crash_in_compilebroker.patch: + ...here. + * patches/openjdk/8020190-pr2174-jfieldid_must_match_object.patch, + * patches/openjdk/8028623-pr2177-hash_code_mismatch_for_extended_characters.patch, + * patches/openjdk/8061785-pr2177-test_bug-corrupted_utf8_character.patch, + * patches/pr2070-type_punning_warnings.patch, + * patches/pr2082-s390_type_fixes.patch, + * patches/pr2096-4096-bit_dh.patch: + New backports from IcedTea 2.x. + +2015-01-19 Andrew John Hughes + + * patches/openjdk/6541350-tz_display_names_l10n.patch, + * patches/openjdk/6706974-krb5_test_infrastructure.patch, + * patches/openjdk/6761072-new_krb5_tests_fail_on_multiple_platforms.patch, + * patches/openjdk/6821191-tz_display_names_l10n.patch, + * patches/openjdk/6925851-pt_br.patch, + * patches/openjdk/6977550-tzdata2010l.patch, + * patches/openjdk/6996686-tzdata2010o.patch, + * patches/openjdk/7017800-tzdata2011b.patch, + * patches/openjdk/7027387-tzdata2011d.patch, + * patches/openjdk/7033174-tzdata2011e.patch, + * patches/openjdk/7035073-missing_pt_br_timezones.patch, + * patches/openjdk/7039469-tzdata2011g.patch, + * patches/openjdk/7090843-tzdata2011j.patch, + * patches/openjdk/7103108-tzdata2011l.patch, + * patches/openjdk/7103405-correct_display_names.patch, + * patches/openjdk/7104126-headers_tzdata.patch, + * patches/openjdk/7158483-tzdata2012c.patch, + * patches/openjdk/7198570-tzdata2012f.patch, + * patches/openjdk/8002225-tzdata2012i.patch, + * patches/openjdk/8009987-tzdata2013b.patch, + * patches/openjdk/8014469-tzdata2013c.patch, + * patches/openjdk/8020054-tzdata2013d.patch, + * patches/openjdk/8025255-tzdata2013g.patch: + Remove patches included upstream. + * Makefile.am: + (ICEDTEA_PATCHES): Remove above patches. + * NEWS: Updated. + * patches/hotspot/hs23/remove_jsr292_tests.patch: + Regenerated. + * patches/hotspot/hs23/type_fixes.patch: + Remove threadLocalAllocBuffer.cpp hunk which is + no longer applicable. + +2015-01-19 Andrew John Hughes + + * patches/clean-crypto.patch: Removed; replaced by + inclusion of UNLIMITED_CRYPTO=true solution upstream. + * patches/openjdk/7122142-annotation_race_condition.patch, + * patches/openjdk/7161796-wrong_fetch_in_fetch_static_field.patch: + Remove patches included upstream. + * Makefile.am: + (ICEDTEA_PATCHES): Remove above patches. + (ICEDTEA_ENV): Set UNLIMITED_CRYPTO=true. + * NEWS: Updated. + * patches/openjdk/4963723-implement_sha-224.patch: + Regenerated following backport of 6647452 upstream. + * patches/openjdk/7044060-support_nsa_suite_b.patch: + Likewise. + * patches/openjdk/7106773-512_bits_rsa.patch: Likewise. + * patches/openjdk/8006935-long_keys_in_hmac_prf.patch: Likewise. + * patches/openjdk/p11cipher-4898461-support_ecb_and_cbc.patch: + Likewise. + * patches/openjdk/p11cipher-6604496-support_ckm_aes_ctr.patch: + Likewise. + +2015-01-05 Andrew John Hughes + + * patches/ecj/pr64174.patch: Drop the Lithuanian + changeover date now, as it's in the past. + +2014-12-04 Andrew John Hughes + + * Makefile.am: + (ICEDTEA_ECJ_PATCHES): Add workaround for bug + in parsing end-of-year dates (Classpath PR64174). + * acinclude.m4: + (IT_PR64174_CHECK): Detect if the boot JDK suffers + from PR64174 and apply the patch if so. + * configure.ac: Call IT_PR64174_CHECK. + * patches/ecj/pr64174.patch: Drop the Latvian + Euro changeover date, which is in the past anyway, + and move Lithuania's two hours forward so it enters + 2015 and avoids the bug. + +2014-10-24 Andrew John Hughes + + * Makefile.am: + (OPENJDK_VERSION): Bump to next release, b34. + +2014-12-05 Andrew John Hughes + + PR2125: Synchronise elliptic curves in + sun.security.ec.NamedCurve with those listed by NSS + * fsg.sh: Moved to... + * Makefile.am: + (EXTRA_DIST): Remove fsg.sh, now generated + by configure. + (extract-openjdk): Fix path to new generated + fsg.sh and mark as executable + * NEWS: Updated. + * configure.ac: Add fsg.sh to AC_CONFIG_FILES. + * fsg.sh.in: ... here and added application + of PR2125 patch. + * patches/pr2125.patch: Patch to remove curves + unsupported by NSS. + +2015-01-06 Andrew John Hughes + + PR2062: Unset OS before running OpenJDK build + * Makefile.am: + (ICEDTEA_UNSET): Introduce variable to + store unsetting of environment variables. + (ICEDTEA_ENV): Move JAVAC, JAVA_HOME and + JDK_HOME to ICEDTEA_UNSET. + (icedtea): Unset variables prior to running + $(MAKE). + (icedtea-debug): Likewise. + (icedtea-ecj): Likewise. + * NEWS: Updated. + +2014-06-10 Andrew John Hughes + + PR1832, RH1022017: Report elliptic curves + supported by NSS, not the SunEC library + * Makefile.am: + (ICEDTEA_PATCHES): Add new patch when + PKCS11+NSS is enabled, so + that the NSS set of curves are announced + via SSL. + * NEWS: Updated. + * patches/rh1022017.patch: + Reduce number of curves announced over SSL + to just those supported by NSS. + +2014-06-10 Andrew John Hughes + + PR1831: Drop version requirement for LCMS 2 + * INSTALL: Document lcms2 requirement. + * NEWS: Updated. + * acinclude.m4: + (IT_CHECK_FOR_LCMS): Drop 2.5 requirement. + +2014-10-24 Andrew John Hughes + + * Makefile.am, + (ICEDTEA_PATCHES): Add new patch. + * NEWS: Updated. + * patches/openjdk/8000897-use_corresponding_digest_length.patch: + Fix for SHA-2 bug discovered in RH1155012. + +2014-10-24 Andrew John Hughes + + * Makefile.am: + (ICEDTEA_PATCHES): Add new patches. + * NEWS: Updated. + * patches/openjdk/7122142-annotation_race_condition.patch: + Backport fix for annotation race condition. + * patches/openjdk/7161796-wrong_fetch_in_fetch_static_field.patch: + Fix for HotSpot bug hit by 7122142. + +2014-10-15 Andrew John Hughes + + PR2033: patches/ecj/jaxws-getdtdtype.patch no + longer applies since removal of JAXWS drop + * NEWS: Updated. + * patches/ecj/jaxws-getdtdtype.patch: + Regenerated as a normal patch against the + OpenJDK source tree. + +2014-10-14 Andrew John Hughes + + * NEWS: Add 1.13.6 section. + * configure.ac: Bump to 1.13.6pre. + +2014-10-14 Andrew John Hughes + + * NEWS: Correct formatting in 1.13.5 + release notes. + +2014-10-09 Andrew John Hughes + + * configure.ac: Bump to 1.13.5. + +2014-08-29 Andrew John Hughes + + * NEWS: Update OpenJDK bug URL. + +2014-10-09 Andrew John Hughes + + * Makefile.am: + (ICEDTEA_PATCHES): Add new patch. + * NEWS: Updated. + * patches/openjdk/8017173-xml_cipher_rsa_oaep_cant_be_instantiated.patch: + Backport of regression fix from 7u for PR1688. + +2014-10-09 Andrew John Hughes + + * Makefile.am: + (ICEDTEA_PATCHES): Add new patch. + * NEWS: Updated. + * patches/pr1904-icedtea_and_distro_versioning.patch: + Backport of versioning fix from IcedTea 2.x. + +2014-10-08 Andrew John Hughes + + * Makefile.am: + (ICEDTEA_PATCHES): Add new patches. + * NEWS: Updated. + * patches/openjdk/4963723-implement_sha-224.patch, + * patches/openjdk/6578658-sunmscapi_nonewithrsa.patch, + * patches/openjdk/6753664-sunmscapi_sha-256.patch, + * patches/openjdk/7033170-getmaxallowedkeylength_throws_exception.patch, + * patches/openjdk/7044060-support_nsa_suite_b.patch, + * patches/openjdk/7106773-512_bits_rsa.patch, + * patches/openjdk/7180907-jarsigner_sha-256.patch, + * patches/openjdk/8006935-long_keys_in_hmac_prf.patch, + * patches/openjdk/8049480-jarsigner_openjdk_9.patch: + Backports to improve cryptography support. + +2014-10-08 Andrew John Hughes + + * patches/openjdk/7027300-unsync_hashmap_causes_endless_loop.patch, + * patches/openjdk/7183251-netbeans_renders_text_wrong.patch, + * patches/openjdk/oj639-handle_fonts_with_no_canon_flag_set.patch: + Remove upstreamed patches. + * Makefile.am: + (OPENJDK_DATE): Bump to security update release date, 14th of October. + (OPENJDK_SHA256SUM): Update for b33 tarball. + (ICEDTEA_PATCHES): Drop above patches. + * NEWS: Add fixes from b33. + * patches/openjdk/6816311-compiler_name.patch: + Remove windows.h fragments added in OPENJDK6-41. + * patches/openjdk/p11cipher-6812738-native_cleanup.patch: + Remove fragment added by security update. + +2014-07-30 Andrew John Hughes + + * patches/openjdk/8010213-set_socketoptions_windows.patch: + Remove upstreamed patch. + * Makefile.am: + (ICEDTEA_PATCHES): Drop upstreamed patch. + +2014-07-30 Andrew John Hughes + + * Makefile.am: + (OPENJDK_VERSION): Bump to next release, b33. + +2014-07-28 Andrew John Hughes + + OJ39: Handle fonts with the non-canonical + processing flag set + * Makefile.am: + (ICEDTEA_PATCHES): Add new patch. + * NEWS: Updated. + * patches/openjdk/oj639-handle_fonts_with_no_canon_flag_set.patch: + Sync LETypes.h and LayoutEngine.cpp with 7 versions + in order to support fonts with the no canonical + processing flag. + +2014-07-15 Andrew John Hughes + + * NEWS: Fix formatting issues. + +2014-07-15 Andrew John Hughes + + * configure.ac: Bump to 1.13.5pre. + * NEWS: Add 1.13.5 section. + +2014-07-15 Andrew John Hughes + + * configure.ac: Bump to 1.13.4. + * NEWS: Remove 1.13.5 section. + +2014-07-15 Andrew John Hughes + + * NEWS: + Move D-I-D fixes into security list. + Add CVE numbers. + +2014-07-15 Omair Majid + + * NEWS: Add a section for 1.13.5 + * configure.ac: Bump to 1.13.5pre. + +2014-07-15 Omair Majid + + * NEWS: Set unembargo date. + * configure.ac: Bump to 1.13.4. + +2014-07-14 Omair Majid + + * NEWS: Update with fixes. + * Makefile.am (OPENJDK_SHA256SUM): Update checksum for new tarball. + +2014-07-08 Omair Majid + + 2014-07-15 CPU + * NEWS: Update with fixes. + * Makefile.am + (OPENJDK_DATE, OPENJDK_SHA256SUM, OPENJDK_VERSION): Update for b32. + (ICEDTEA_PATCHES): Drop upstreamed patches. + * patches/openjdk/6636370-appcontext_simplification.patch, + * patches/openjdk/6729772-opt_cleanup.patch, + * patches/openjdk/6799141-split_out_versions.patch, + * patches/openjdk/6816311-compiler_name.patch, + * patches/windows-awt.patch: Update to apply on top of b32. + * patches/jtreg-T6638712-fix.patch, + * patches/openjdk/6638712-wildcard_types.patch, + * patches/openjdk/6650759-missing_inference.patch: Remove upstreamed + patch. + +2014-05-28 Andrew John Hughes + + * Makefile.am: + (ICEDTEA_PATCHES): Add new patches. + * NEWS: Updated. + * patches/openjdk/7183251-netbeans_renders_text_wrong.patch: + Backport text layout fixes. + +2014-05-22 Andrew John Hughes + + * Makefile.am: + (ICEDTEA_PATCHES): Add new patch. + * NEWS: Updated. + * patches/openjdk/7027300-unsync_hashmap_causes_endless_loop.patch: + Backport fix to replace HashMap usage with ConcurrentHashMap, + avoiding deadlock. + +2014-05-09 Jiri Vanek + + * Makefile.am: (add-nss-debug.stamp): fixed ECJ_BUILD_OUTPUT_DIR + to DEBUG_BUILD_OUTPUT_DIR. + +2014-04-16 Andrew John Hughes + + * configure.ac: Bump to 1.13.4pre. + * NEWS: Add 1.13.4 section. + +2014-04-15 Andrew John Hughes + + * NEWS: + Include minor updates from announcement. + 2014-04-11 Andrew John Hughes + * Makefile.am: (OPENJDK_VERSION): Set to b31. 2014-04-10 Andrew John Hughes diff -Nru openjdk-6-6b31-1.13.3/compile openjdk-6-6b38-1.13.10/compile --- openjdk-6-6b31-1.13.3/compile 2014-04-16 03:18:57.000000000 +0000 +++ openjdk-6-6b38-1.13.10/compile 2016-01-25 01:51:15.000000000 +0000 @@ -3,7 +3,7 @@ scriptversion=2012-10-14.11; # UTC -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify diff -Nru openjdk-6-6b31-1.13.3/config.guess openjdk-6-6b38-1.13.10/config.guess --- openjdk-6-6b31-1.13.3/config.guess 2014-04-16 03:18:57.000000000 +0000 +++ openjdk-6-6b38-1.13.10/config.guess 2016-01-25 01:51:15.000000000 +0000 @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2013 Free Software Foundation, Inc. +# Copyright 1992-2014 Free Software Foundation, Inc. -timestamp='2013-06-10' +timestamp='2014-03-23' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -50,7 +50,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -149,7 +149,7 @@ LIBC=gnu #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac @@ -826,7 +826,7 @@ *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; - i*:MSYS*:*) + *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) @@ -969,10 +969,10 @@ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; - or1k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} exit ;; - or32:Linux:*:*) + or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) @@ -1260,16 +1260,26 @@ if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; @@ -1361,154 +1371,6 @@ exit ;; esac -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - cat >&2 <. # @@ -580,8 +580,8 @@ # Identity of this package. PACKAGE_NAME='icedtea6' PACKAGE_TARNAME='icedtea6' -PACKAGE_VERSION='1.13.3' -PACKAGE_STRING='icedtea6 1.13.3' +PACKAGE_VERSION='1.13.10' +PACKAGE_STRING='icedtea6 1.13.10' PACKAGE_BUGREPORT='distro-pkg-dev@openjdk.java.net' PACKAGE_URL='' @@ -704,6 +704,9 @@ HGREV USE_HG_FALSE USE_HG_TRUE +ENABLE_NON_NSS_CURVES +USE_NON_NSS_CURVES_FALSE +USE_NON_NSS_CURVES_TRUE BUILD_JAMVM_FALSE BUILD_JAMVM_TRUE BUILD_CACAO_FALSE @@ -787,6 +790,8 @@ ENABLE_PULSE_JAVA_TRUE SYSTEM_ANT_DIR XVFB_RUN_CMD +CP64174_FALSE +CP64174_TRUE LACKS_JAVA_SQL_EXCEPTION_REASON_STATE_CODE_THROWABLE_FALSE LACKS_JAVA_SQL_EXCEPTION_REASON_STATE_CODE_THROWABLE_TRUE LACKS_JAVA_SQL_EXCEPTION_REASON_STATE_THROWABLE_FALSE @@ -836,6 +841,7 @@ SYSTEM_JDK_DIR BOOTSTRAPPING_FALSE BOOTSTRAPPING_TRUE +fontdir DISABLE_JDK_TESTS_FALSE DISABLE_JDK_TESTS_TRUE DISABLE_LANGTOOLS_TESTS_FALSE @@ -945,10 +951,9 @@ CC abs_top_srcdir abs_top_builddir -AM_BACKSLASH -AM_DEFAULT_VERBOSITY -AM_DEFAULT_V -AM_V +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE am__untar am__tar AMTAR @@ -1025,7 +1030,7 @@ ac_subst_files='' ac_user_opts=' enable_option_checking -enable_silent_rules +enable_maintainer_mode enable_dependency_tracking with_openjdk_src_dir with_gcj @@ -1039,6 +1044,7 @@ enable_hotspot_tests enable_langtools_tests enable_jdk_tests +with_fonts_dir enable_bootstrap with_jdk_home with_java @@ -1071,6 +1077,7 @@ enable_Werror enable_jar_compression with_additional_vms +enable_non_nss_curves enable_hg with_hg_revision with_tzdata_dir @@ -1668,7 +1675,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures icedtea6 1.13.3 to adapt to many kinds of systems. +\`configure' configures icedtea6 1.13.10 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1739,7 +1746,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of icedtea6 1.13.3:";; + short | recursive ) echo "Configuration of icedtea6 1.13.10:";; esac cat <<\_ACEOF @@ -1747,12 +1754,10 @@ --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors --enable-cacao use CACAO as VM [default=no] --enable-jamvm use JamVM as VM [default=no] --enable-shark use Shark JIT @@ -1783,6 +1788,8 @@ --enable-Werror build with -Werror [default=no] --enable-jar-compression compress built jars [default=yes] + --enable-non-nss-curves register curves beyond the 3 NSS defines + [default=no] --enable-hg download source code from Mercurial [default=no] --enable-system-zlib use the system ZLIB [default=yes] --enable-system-jpeg use the system libjpeg [default=yes] @@ -1802,6 +1809,7 @@ --with-hotspot-build the HotSpot build to use (see hotspot.map) --with-parallel-jobs build IcedTea using the specified number of parallel jobs + --with-fonts-dir=PATH fonts [DATAROOTDIR/fonts] --with-jdk-home jdk home directory (default is first predefined JDK found) --with-java specify location of the 1.5 java vm @@ -1958,7 +1966,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -icedtea6 configure 1.13.3 +icedtea6 configure 1.13.10 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2527,7 +2535,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by icedtea6 $as_me 1.13.3, which was +It was created by icedtea6 $as_me 1.13.10, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3014,7 +3022,7 @@ test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- -am__api_version='1.14' +am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -3111,6 +3119,9 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } +# Just in case +sleep 1 +echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -3121,40 +3132,32 @@ esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; + as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac -# Do 'set' in a subshell so we don't clobber the current shell's +# Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken +alias in your environment" "$LINENO" 5 + fi - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken - alias in your environment" "$LINENO" 5 - fi - if test "$2" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done test "$2" = conftest.file ) then @@ -3166,16 +3169,6 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi - -rm -f conftest.file - test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. @@ -3198,12 +3191,12 @@ esac fi # Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " else am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then @@ -3215,10 +3208,10 @@ esac fi -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. +# will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then 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. @@ -3357,6 +3350,12 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + 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. @@ -3439,45 +3438,6 @@ fi rmdir .tst 2>/dev/null -# Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : - enableval=$enable_silent_rules; -fi - -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=1;; -esac -am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AM_BACKSLASH='\' - if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." @@ -3500,7 +3460,7 @@ # Define the identity of the package. PACKAGE='icedtea6' - VERSION='1.13.3' + VERSION='1.13.10' cat >>confdefs.h <<_ACEOF @@ -3528,12 +3488,6 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -mkdir_p='$(MKDIR_P)' - # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used @@ -3541,144 +3495,117 @@ AMTAR='$${TAR-tar}' -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar pax cpio none' - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5 $as_echo_n "checking how to create a pax tar archive... " >&6; } - - # Go ahead even if we have the value already cached. We do so because we - # need to set the values for the 'am__tar' and 'am__untar' variables. - _am_tools=${am_cv_prog_tar_pax-$_am_tools} - - for _am_tool in $_am_tools; do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; do - { echo "$as_me:$LINENO: $_am_tar --version" >&5 +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' +_am_tools=${am_cv_prog_tar_pax-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 ($_am_tar --version) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && break - done - am__tar="$_am_tar --format=posix -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=posix -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x pax -w "$$tardir"' - am__tar_='pax -L -x pax -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H pax -L' - am__tar_='find "$tardir" -print | cpio -o -H pax -L' - am__untar='cpio -i -H pax -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac + done + am__tar="$_am_tar --format=posix -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=posix -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x pax -w "$$tardir"' + am__tar_='pax -L -x pax -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H pax -L' + am__tar_='find "$tardir" -print | cpio -o -H pax -L' + am__untar='cpio -i -H pax -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_pax}" && break - - # tar/untar a dummy directory, and stop if the command works. - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_pax}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } - rm -rf conftest.dir - if test -s conftest.tar; then - { echo "$as_me:$LINENO: $am__untar &5 + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 ($am__untar &5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } - { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 - (cat conftest.dir/file) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - grep GrepMe conftest.dir/file >/dev/null 2>&1 && break - fi - done - rm -rf conftest.dir + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi +done +rm -rf conftest.dir - if ${am_cv_prog_tar_pax+:} false; then : +if ${am_cv_prog_tar_pax+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_prog_tar_pax=$_am_tool fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5 $as_echo "$am_cv_prog_tar_pax" >&6; } +ac_config_files="$ac_config_files Makefile fsg.sh" -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. -END - as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 - fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= fi -ac_config_files="$ac_config_files Makefile" + MAINT=$MAINTAINER_MODE_TRUE + # Older automake doesn't generate these correctly @@ -4480,65 +4407,6 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 - ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" @@ -4558,7 +4426,7 @@ _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. +# Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include @@ -4614,8 +4482,8 @@ # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -4650,16 +4518,16 @@ : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with '-c' and '-o' for the sake of the "dashmstdout" + # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -4668,8 +4536,8 @@ test "$am__universal" = false || continue ;; nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else @@ -4677,7 +4545,7 @@ fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has + # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -5003,8 +4871,8 @@ # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -5039,16 +4907,16 @@ : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with '-c' and '-o' for the sake of the "dashmstdout" + # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -5057,8 +4925,8 @@ test "$am__universal" = false || continue ;; nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else @@ -5066,7 +4934,7 @@ fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has + # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -7223,6 +7091,12 @@ JRE_ARCH_DIR=alpha CROSS_TARGET_ARCH=alpha ;; + arm64|aarch64) + BUILD_ARCH_DIR=aarch64 + INSTALL_ARCH_DIR=aarch64 + JRE_ARCH_DIR=aarch64 + ARCHFLAG="-D_LITTLE_ENDIAN" + ;; arm*) BUILD_ARCH_DIR=arm INSTALL_ARCH_DIR=arm @@ -7312,7 +7186,14 @@ # Check whether --enable-cacao was given. if test "${enable_cacao+set}" = set; then : enableval=$enable_cacao; - ENABLE_CACAO="${enableval}" + case "${enableval}" in + yes) + ENABLE_CACAO=yes + ;; + *) + ENABLE_CACAO=no + ;; + esac else @@ -7341,7 +7222,14 @@ # Check whether --enable-jamvm was given. if test "${enable_jamvm+set}" = set; then : enableval=$enable_jamvm; - ENABLE_JAMVM="${enableval}" + case "${enableval}" in + yes) + ENABLE_JAMVM=yes + ;; + *) + ENABLE_JAMVM=no + ;; + esac else @@ -7399,6 +7287,19 @@ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if a native HotSpot port is available for this architecture" >&5 +$as_echo_n "checking if a native HotSpot port is available for this architecture... " >&6; } + has_native_hotspot_port=yes; + case "${host_cpu}" in + i?86) ;; + sparc) ;; + x86_64) ;; + *) has_native_hotspot_port=no; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $has_native_hotspot_port" >&5 +$as_echo "$has_native_hotspot_port" >&6; } + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -7801,6 +7702,7 @@ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the zero-assembler port" >&5 $as_echo_n "checking whether to use the zero-assembler port... " >&6; } use_zero=no @@ -7820,21 +7722,14 @@ if test "x${use_shark}" = "xyes"; then use_zero=yes; - else - case "${host}" in - i?86-*-*) ;; - sparc*-*-*) ;; - x86_64-*-*) ;; - *) - if test "x${ENABLE_CACAO}" != xno || \ - test "x${ENABLE_JAMVM}" = xyes; then - use_zero=no - else - use_zero=yes - fi - ;; - esac - fi + else if test "x$has_native_hotspot_port" = "xno"; then + if test "x${ENABLE_CACAO}" = xyes || \ + test "x${ENABLE_JAMVM}" = xyes; then + use_zero=no + else + use_zero=yes + fi + fi; fi fi @@ -8863,6 +8758,45 @@ + FONTS_DEFAULT=/usr/share/fonts + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where fonts are stored" >&5 +$as_echo_n "checking where fonts are stored... " >&6; } + +# Check whether --with-fonts-dir was given. +if test "${with_fonts_dir+set}" = set; then : + withval=$with_fonts_dir; + fontdir=${withval} + +else + + fontdir=${FONTS_DEFAULT} + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${fontdir}" >&5 +$as_echo "${fontdir}" >&6; } + if test "x${fontdir}" = "xyes" -o "x${fontdir}" = "xno"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: No font directory specified; using ${FONTS_DEFAULT}" >&5 +$as_echo "$as_me: No font directory specified; using ${FONTS_DEFAULT}" >&6;} + fontdir=${FONTS_DEFAULT} ; + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $fontdir is a valid directory" >&5 +$as_echo_n "checking if $fontdir is a valid directory... " >&6; } + if test -d "${fontdir}" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No valid font directory found" >&5 +$as_echo "$as_me: WARNING: No valid font directory found" >&2;} + fi + + +ac_config_files="$ac_config_files linux.fontconfig.Gentoo.properties" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build a bootstrap version first" >&5 $as_echo_n "checking whether to build a bootstrap version first... " >&6; } # Check whether --enable-bootstrap was given. @@ -8925,8 +8859,8 @@ BOOTSTRAP_VMS="/usr/lib/jvm/java-gcj /usr/lib/jvm/gcj-jdk /usr/lib/jvm/cacao"; fi ICEDTEA6_VMS="/usr/lib/jvm/icedtea-6 /usr/lib/jvm/icedtea6 /usr/lib/jvm/java-6-openjdk - /usr/lib/jvm/java-1.6.0-openjdk.x86_64 /usr/lib64/jvm/java-1.6.0-openjdk - /usr/lib/jvm/java-1.6.0" + /usr/lib/jvm/java-1.6.0-openjdk /usr/lib/jvm/java-1.6.0-openjdk.x86_64 + /usr/lib64/jvm/java-1.6.0-openjdk /usr/lib/jvm/java-1.6.0" for dir in ${BOOTSTRAP_VMS} ${ICEDTEA6_VMS} \ /usr/lib/jvm/java-openjdk /usr/lib/jvm/openjdk /usr/lib/jvm/java-icedtea \ /etc/alternatives/java_sdk_openjdk ; do @@ -9485,7 +9419,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 9488 "configure" */ +/* [#]line 9422 "configure" */ public class Test { @@ -9527,7 +9461,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 9530 "configure" */ +/* [#]line 9464 "configure" */ import java.lang.reflect.Method; public class Test @@ -9594,7 +9528,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 9597 "configure" */ +/* [#]line 9531 "configure" */ public class Test { public static void main(String[] args) @@ -9642,7 +9576,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 9645 "configure" */ +/* [#]line 9579 "configure" */ import java.lang.reflect.Method; public class Test @@ -9709,7 +9643,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 9712 "configure" */ +/* [#]line 9646 "configure" */ import java.lang.reflect.Constructor; public class Test @@ -9778,7 +9712,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 9781 "configure" */ +/* [#]line 9715 "configure" */ import java.lang.reflect.Constructor; public class Test @@ -9848,7 +9782,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 9851 "configure" */ +/* [#]line 9785 "configure" */ import java.lang.reflect.Method; public class Test @@ -9914,7 +9848,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 9917 "configure" */ +/* [#]line 9851 "configure" */ import java.lang.reflect.Method; public class Test @@ -9980,7 +9914,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 9983 "configure" */ +/* [#]line 9917 "configure" */ import java.lang.reflect.Method; public class Test @@ -10046,7 +9980,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 10049 "configure" */ +/* [#]line 9983 "configure" */ import java.lang.reflect.Method; public class Test @@ -10112,7 +10046,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 10115 "configure" */ +/* [#]line 10049 "configure" */ import java.lang.reflect.Method; public class Test @@ -10178,7 +10112,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 10181 "configure" */ +/* [#]line 10115 "configure" */ import java.lang.reflect.Method; public class Test @@ -10245,7 +10179,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 10248 "configure" */ +/* [#]line 10182 "configure" */ import java.lang.reflect.Field; public class Test @@ -10307,7 +10241,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 10310 "configure" */ +/* [#]line 10244 "configure" */ import java.lang.reflect.Method; public class Test @@ -10373,7 +10307,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 10376 "configure" */ +/* [#]line 10310 "configure" */ import java.lang.reflect.Method; public class Test @@ -10441,7 +10375,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 10444 "configure" */ +/* [#]line 10378 "configure" */ import java.lang.reflect.Constructor; public class Test @@ -10511,7 +10445,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 10514 "configure" */ +/* [#]line 10448 "configure" */ import java.lang.reflect.Method; public class Test @@ -10578,7 +10512,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 10581 "configure" */ +/* [#]line 10515 "configure" */ import java.lang.reflect.Method; public class Test @@ -10645,7 +10579,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 10648 "configure" */ +/* [#]line 10582 "configure" */ import java.lang.reflect.Constructor; public class Test @@ -10714,7 +10648,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 10717 "configure" */ +/* [#]line 10651 "configure" */ import java.lang.reflect.Constructor; public class Test @@ -10783,7 +10717,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 10786 "configure" */ +/* [#]line 10720 "configure" */ import java.lang.reflect.Constructor; public class Test @@ -10852,7 +10786,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 10855 "configure" */ +/* [#]line 10789 "configure" */ import java.lang.reflect.Constructor; public class Test @@ -10909,6 +10843,66 @@ + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if java.text.SimpleDateFormat exhibits Classpath bug 64174" >&5 +$as_echo_n "checking if java.text.SimpleDateFormat exhibits Classpath bug 64174... " >&6; } +if ${it_cv_cp64174+:} false; then : + $as_echo_n "(cached) " >&6 +else + + CLASS=Test.java + BYTECODE=$(echo $CLASS|sed 's#\.java##') + mkdir tmp.$$ + cd tmp.$$ + cat << \EOF > $CLASS +/* [#]line 10859 "configure" */ +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Locale; +import java.util.TimeZone; + +public class Test +{ + public static void main(String[] args) + throws ParseException + { + SimpleDateFormat format; + + format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.US); + format.setTimeZone(TimeZone.getTimeZone("GMT")); + format.setLenient(false); + System.out.println(format.parse("2014-12-31-22-00-00")); + } +} +EOF + if $JAVAC -cp . $JAVACFLAGS -source 5 -target 5 $CLASS >&5 2>&1; then + if $JAVA -classpath . $BYTECODE >&5 2>&1; then + it_cv_cp64174=no; + else + it_cv_cp64174=yes; + fi + else + it_cv_cp64174=yes; + fi + rm -f $CLASS *.class + cd .. + rmdir tmp.$$ + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $it_cv_cp64174" >&5 +$as_echo "$it_cv_cp64174" >&6; } + if test x"${it_cv_cp64174}" = "xyes"; then + CP64174_TRUE= + CP64174_FALSE='#' +else + CP64174_TRUE='#' + CP64174_FALSE= +fi + + + # Use xvfb-run if found to run gui tests (check-jdk). # Extract the first word of "xvfb-run", so it can be a program name with args. set dummy xvfb-run; ac_word=$2 @@ -11171,6 +11165,12 @@ JRE_ARCH_DIR=alpha CROSS_TARGET_ARCH=alpha ;; + arm64|aarch64) + BUILD_ARCH_DIR=aarch64 + INSTALL_ARCH_DIR=aarch64 + JRE_ARCH_DIR=aarch64 + ARCHFLAG="-D_LITTLE_ENDIAN" + ;; arm*) BUILD_ARCH_DIR=arm INSTALL_ARCH_DIR=arm @@ -12607,6 +12607,39 @@ fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable elliptic curves beyond those supported by NSS" >&5 +$as_echo_n "checking whether to enable elliptic curves beyond those supported by NSS... " >&6; } + # Check whether --enable-non-nss-curves was given. +if test "${enable_non_nss_curves+set}" = set; then : + enableval=$enable_non_nss_curves; + case "${enableval}" in + no) + ENABLE_NON_NSS_CURVES=no + ;; + *) + ENABLE_NON_NSS_CURVES=yes + ;; + esac + +else + + ENABLE_NON_NSS_CURVES="no" + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ENABLE_NON_NSS_CURVES}" >&5 +$as_echo "${ENABLE_NON_NSS_CURVES}" >&6; } + if test x"${ENABLE_NON_NSS_CURVES}" = "xyes"; then + USE_NON_NSS_CURVES_TRUE= + USE_NON_NSS_CURVES_FALSE='#' +else + USE_NON_NSS_CURVES_TRUE='#' + USE_NON_NSS_CURVES_FALSE= +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to retrieve the source code from Mercurial" >&5 $as_echo_n "checking whether to retrieve the source code from Mercurial... " >&6; } # Check whether --enable-hg was given. @@ -12724,7 +12757,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $CLASS -/* [#]line 12727 "configure" */ +/* [#]line 12760 "configure" */ import javax.xml.namespace.QName; import javax.xml.stream.Location; import javax.xml.stream.events.Attribute; @@ -12814,7 +12847,7 @@ mkdir tmp.$$ cd tmp.$$ cat << \EOF > $SUPERCLASS -/* #line 12817 "configure" */ +/* #line 12850 "configure" */ public class Test { public static final int POTATO = 0; @@ -12822,7 +12855,7 @@ } EOF cat << \EOF > $SUBCLASS -/* #line 12825 "configure" */ +/* #line 12858 "configure" */ public class TestImpl extends Test { @@ -12891,7 +12924,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if a PaX kernel is in use" >&5 $as_echo_n "checking if a PaX kernel is in use... " >&6; } - if cat /proc/self/status | grep '^PaX' >&5 2>&1; then + if grep '^PaX' /proc/self/status >&5 2>&1; then pax_active=yes; else pax_active=no; @@ -12916,33 +12949,35 @@ # Check whether --with-pax was given. if test "${with_pax+set}" = set; then : withval=$with_pax; - if test "x${withval}" = "xyes"; then - PAX_COMMAND=no - else - PAX_COMMAND="${withval}" - fi + PAX_COMMAND="${withval}" else - PAX_COMMAND=no + PAX_COMMAND=${pax_active} fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${PAX_COMMAND}" >&5 -$as_echo "${PAX_COMMAND}" >&6; } - if test "x${PAX_COMMAND}" == "xno"; then + if test "x${PAX_COMMAND}" == "xyes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } PAX_COMMAND=${PAX_DEFAULT} + { $as_echo "$as_me:${as_lineno-$LINENO}: PaX enabled but no tool specified; using ${PAX_DEFAULT}" >&5 +$as_echo "$as_me: PaX enabled but no tool specified; using ${PAX_DEFAULT}" >&6;} + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${PAX_COMMAND}" >&5 +$as_echo "${PAX_COMMAND}" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $PAX_COMMAND is a valid executable file" >&5 + if test "x${PAX_COMMAND}" != "xno"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $PAX_COMMAND is a valid executable file" >&5 $as_echo_n "checking if $PAX_COMMAND is a valid executable file... " >&6; } - if test -x "${PAX_COMMAND}" && test -f "${PAX_COMMAND}"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + if test -x "${PAX_COMMAND}" && test -f "${PAX_COMMAND}"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - PAX_COMMAND="" - # Extract the first word of ""paxmark.sh"", so it can be a program name with args. + PAX_COMMAND="" + # Extract the first word of ""paxmark.sh"", so it can be a program name with args. set dummy "paxmark.sh"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } @@ -12982,8 +13017,8 @@ fi - if test -z "${PAX_COMMAND}"; then - # Extract the first word of ""paxctl-ng"", so it can be a program name with args. + if test -z "${PAX_COMMAND}"; then + # Extract the first word of ""paxctl-ng"", so it can be a program name with args. set dummy "paxctl-ng"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } @@ -13023,9 +13058,9 @@ fi - fi - if test -z "${PAX_COMMAND}"; then - # Extract the first word of ""chpax"", so it can be a program name with args. + fi + if test -z "${PAX_COMMAND}"; then + # Extract the first word of ""chpax"", so it can be a program name with args. set dummy "chpax"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } @@ -13065,9 +13100,9 @@ fi - fi - if test -z "${PAX_COMMAND}"; then - # Extract the first word of ""paxctl"", so it can be a program name with args. + fi + if test -z "${PAX_COMMAND}"; then + # Extract the first word of ""paxctl"", so it can be a program name with args. set dummy "paxctl"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } @@ -13107,14 +13142,17 @@ fi + fi fi - if test -z "${PAX_COMMAND}"; then - if test "x${pax_active}" = "xyes"; then - as_fn_error $? "\"No PaX utility found and running on a PaX kernel.\"" "$LINENO" 5 - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"No PaX utility found.\"" >&5 + else + PAX_COMMAND="" + fi + if test -z "${PAX_COMMAND}"; then + if test "x${pax_active}" = "xyes"; then + as_fn_error $? "\"No PaX utility found and running on a PaX kernel.\"" "$LINENO" 5 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"No PaX utility found.\"" >&5 $as_echo "$as_me: WARNING: \"No PaX utility found.\"" >&2;} - fi fi fi if test -z "${PAX_COMMAND}"; then @@ -13659,12 +13697,12 @@ pkg_cv_LCMS2_CFLAGS="$LCMS2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2 >= 2.5\""; } >&5 - ($PKG_CONFIG --exists --print-errors "lcms2 >= 2.5") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "lcms2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_LCMS2_CFLAGS=`$PKG_CONFIG --cflags "lcms2 >= 2.5" 2>/dev/null` + pkg_cv_LCMS2_CFLAGS=`$PKG_CONFIG --cflags "lcms2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -13676,12 +13714,12 @@ pkg_cv_LCMS2_LIBS="$LCMS2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2 >= 2.5\""; } >&5 - ($PKG_CONFIG --exists --print-errors "lcms2 >= 2.5") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "lcms2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_LCMS2_LIBS=`$PKG_CONFIG --libs "lcms2 >= 2.5" 2>/dev/null` + pkg_cv_LCMS2_LIBS=`$PKG_CONFIG --libs "lcms2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -13702,9 +13740,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - LCMS2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "lcms2 >= 2.5" 2>&1` + LCMS2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "lcms2" 2>&1` else - LCMS2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "lcms2 >= 2.5" 2>&1` + LCMS2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "lcms2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LCMS2_PKG_ERRORS" >&5 @@ -13723,7 +13761,7 @@ fi if test "x${LCMS2_FOUND}" = xno then - as_fn_error $? "Could not find LCMS >= 2.5; install it or build with --disable-system-lcms to use the in-tree copy." "$LINENO" 5 + as_fn_error $? "Could not find LCMS 2; install it or build with --disable-system-lcms to use the in-tree copy." "$LINENO" 5 fi @@ -15024,6 +15062,15 @@ CONFIGURE_ARGS="$ac_configure_args" +# Sanity check; make sure we have a JVM +if test "x$has_native_hotspot_port" = "xno" ; then + if test "x${use_zero}" = "xno" ; then + if test "x${ENABLE_CACAO}" = "xno" -a "x${ENABLE_JAMVM}" = "xno"; then + as_fn_error $? "No native HotSpot port available for ${host_cpu} and all alternatives disabled." "$LINENO" 5 + fi + fi +fi + cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -15169,14 +15216,6 @@ LTLIBOBJS=$ac_ltlibobjs -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' @@ -15185,6 +15224,10 @@ am__EXEEXT_FALSE= fi +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -15354,6 +15397,10 @@ as_fn_error $? "conditional \"LACKS_JAVA_SQL_EXCEPTION_REASON_STATE_CODE_THROWABLE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CP64174_TRUE}" && test -z "${CP64174_FALSE}"; then + as_fn_error $? "conditional \"CP64174\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${ENABLE_PULSE_JAVA_TRUE}" && test -z "${ENABLE_PULSE_JAVA_FALSE}"; then as_fn_error $? "conditional \"ENABLE_PULSE_JAVA\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -15478,6 +15525,10 @@ as_fn_error $? "conditional \"BUILD_JAMVM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${USE_NON_NSS_CURVES_TRUE}" && test -z "${USE_NON_NSS_CURVES_FALSE}"; then + as_fn_error $? "conditional \"USE_NON_NSS_CURVES\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${USE_HG_TRUE}" && test -z "${USE_HG_FALSE}"; then as_fn_error $? "conditional \"USE_HG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -15935,7 +15986,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by icedtea6 $as_me 1.13.3, which was +This file was extended by icedtea6 $as_me 1.13.10, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15992,7 +16043,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -icedtea6 config.status 1.13.3 +icedtea6 config.status 1.13.10 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -16111,12 +16162,14 @@ do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "fsg.sh") CONFIG_FILES="$CONFIG_FILES fsg.sh" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "jvm.cacao.cfg") CONFIG_FILES="$CONFIG_FILES jvm.cacao.cfg" ;; "jvm.jamvm.cfg") CONFIG_FILES="$CONFIG_FILES jvm.jamvm.cfg" ;; "jvm.cfg") CONFIG_FILES="$CONFIG_FILES jvm.cfg" ;; "ergo.c") CONFIG_FILES="$CONFIG_FILES ergo.c" ;; "nss.cfg") CONFIG_FILES="$CONFIG_FILES nss.cfg" ;; + "linux.fontconfig.Gentoo.properties") CONFIG_FILES="$CONFIG_FILES linux.fontconfig.Gentoo.properties" ;; "javac") CONFIG_FILES="$CONFIG_FILES javac" ;; "javap") CONFIG_FILES="$CONFIG_FILES javap" ;; "tz.properties") CONFIG_FILES="$CONFIG_FILES tz.properties" ;; @@ -16558,7 +16611,7 @@ case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Older Autoconf quotes --file arguments for eval, but not when files + # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in @@ -16571,7 +16624,7 @@ # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but + # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. @@ -16605,19 +16658,21 @@ continue fi # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. + # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue + test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || diff -Nru openjdk-6-6b31-1.13.3/configure.ac openjdk-6-6b38-1.13.10/configure.ac --- openjdk-6-6b31-1.13.3/configure.ac 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/configure.ac 2016-01-26 13:35:01.000000000 +0000 @@ -1,8 +1,10 @@ -AC_INIT([icedtea6],[1.13.3],[distro-pkg-dev@openjdk.java.net]) +AC_INIT([icedtea6],[1.13.10],[distro-pkg-dev@openjdk.java.net]) AC_CANONICAL_HOST AC_CANONICAL_TARGET AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) -AC_CONFIG_FILES([Makefile]) +AC_CONFIG_FILES([Makefile fsg.sh]) + +AM_MAINTAINER_MODE # Older automake doesn't generate these correctly abs_top_builddir=`pwd -P` @@ -63,6 +65,9 @@ IT_DISABLE_LANGTOOLS_TESTS IT_DISABLE_JDK_TESTS +IT_WITH_FONTS_DIR +AC_CONFIG_FILES([linux.fontconfig.Gentoo.properties]) + dnl PR42003 - Missing javax.swing.plaf.basic.BasicDirectoryModel methods cause OpenJDK build failure IT_CHECK_FOR_METHOD([JAVAX_SWING_PLAF_BASIC_BASICDIRECTORYMODEL_ADDPROPERTYCHANGELISTENER], [javax.swing.plaf.basic.BasicDirectoryModel.addPropertyChangeListener(PropertyChangeListener)], @@ -167,6 +172,9 @@ IT_CHECK_FOR_CONSTRUCTOR([JAVA_SQL_EXCEPTION_REASON_STATE_THROWABLE],[java.sql.SQLException],[String.class,String.class,Throwable.class],["Something went wrong","",new Throwable()]) IT_CHECK_FOR_CONSTRUCTOR([JAVA_SQL_EXCEPTION_REASON_STATE_CODE_THROWABLE],[java.sql.SQLException],[String.class,String.class,Integer.TYPE,Throwable.class],["Something went wrong","",666,new Throwable()]) +dnl Check whether the JDK can parse the dates used in the currency file +IT_PR64174_CHECK + # Use xvfb-run if found to run gui tests (check-jdk). AC_CHECK_PROG(XVFB_RUN_CMD, xvfb-run, [xvfb-run -a -e xvfb-errors], []) AC_SUBST(XVFB_RUN_CMD) @@ -288,6 +296,7 @@ IT_SET_SHARK_BUILD IT_ENABLE_ZERO_BUILD IT_CHECK_ADDITIONAL_VMS +IT_ENABLE_NON_NSS_CURVES IT_ENABLE_HG IT_WITH_HG_REVISION IT_WITH_TZDATA_DIR @@ -567,4 +576,13 @@ AC_SUBST(CONFIGURE_ARGS) CONFIGURE_ARGS="$ac_configure_args" +# Sanity check; make sure we have a JVM +if test "x$has_native_hotspot_port" = "xno" ; then + if test "x${use_zero}" = "xno" ; then + if test "x${ENABLE_CACAO}" = "xno" -a "x${ENABLE_JAMVM}" = "xno"; then + AC_MSG_ERROR([No native HotSpot port available for ${host_cpu} and all alternatives disabled.]) + fi + fi +fi + AC_OUTPUT diff -Nru openjdk-6-6b31-1.13.3/corba/make/common/shared/Compiler-msvc.gmk openjdk-6-6b38-1.13.10/corba/make/common/shared/Compiler-msvc.gmk --- openjdk-6-6b31-1.13.3/corba/make/common/shared/Compiler-msvc.gmk 2014-04-10 15:06:08.000000000 +0000 +++ openjdk-6-6b38-1.13.10/corba/make/common/shared/Compiler-msvc.gmk 2016-01-20 01:40:56.000000000 +0000 @@ -24,6 +24,12 @@ # # +# This file has been modified by Azul Systems, Inc. in 2014. These +# modifications are Copyright (c) 2014 Azul Systems, Inc., and are made +# available on the same license terms set forth above. +# + +# # MSVC Compiler settings # @@ -41,97 +47,51 @@ # Fill in unknown values COMPILER_NAME=Unknown MSVC Compiler COMPILER_VERSION= - REQUIRED_CC_VER= - REQUIRED_LINK_VER= + REQUIRED_CC_VER=16.10.40219.01 + REQUIRED_LINK_VER=10.00.40219.01 # unset any GNU Make settings of MFLAGS and MAKEFLAGS which may mess up nmake NMAKE = MFLAGS= MAKEFLAGS= $(COMPILER_PATH)nmake -nologo - # SDK-64 and MSVC6 put REBASE.EXE in a different places - go figure... - ifeq ($(ARCH_DATA_MODEL), 32) - CC_VER := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(NAWK) '{print $$8}') - LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}') - CC_TYPE := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(NAWK) '{print $$5}') - CC_MAJORVER :=$(call MajorVersion,$(CC_VER)) - REQUIRED_CCTYPE = Optimizing - REQUIRED_CC_VER = 13.10.3077 - REQUIRED_LINK_VER = 7.10.3077 - ifeq ($(CC_MAJORVER), 12) - # This should be: CC_VER=12.00.8168 LINK_VER=6.00.8447 - COMPILER_NAME=Visual C++ 6.0 Professional + VC6-SP 3 - COMPILER_VERSION=VC6 - REBASE = $(COMPILER_PATH)rebase - MTL = $(COMPILER_PATH)midl - endif - ifeq ($(CC_MAJORVER), 13) - # This should be: CC_VER=13.10.3077 LINK_VER=7.10.3077 - COMPILER_NAME=Visual Studio .NET 2003 Professional C++ - COMPILER_VERSION=VS2003 - REBASE = $(COMPILER_PATH)../../Common7/Tools/Bin/rebase - MTL = $(COMPILER_PATH)../../Common7/Tools/Bin/midl - ifndef COMPILER_PATH - COMPILER_PATH := $(error COMPILER_PATH cannot be empty here) - endif - endif - ifeq ($(CC_MAJORVER), 14) - # This should be: CC_VER=14.00.0000 LINK_VER=8.00.0000 - # NOTE: This compiler has not been tried yet on 32bit systems - COMPILER_NAME=Visual Studio .NET 2005 - COMPILER_VERSION=VS2005 - REBASE = $(COMPILER_PATH)../../Common8/Tools/Bin/rebase - MTL = $(COMPILER_PATH)../../Common8/Tools/Bin/midl - ifndef COMPILER_PATH - COMPILER_PATH := $(error COMPILER_PATH cannot be empty here) - endif - endif - else - CC_VER := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(NAWK) '{print $$7}') - LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}') - CC_TYPE := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(NAWK) '{print $$4}') - CC_MAJORVER :=$(call MajorVersion,$(CC_VER)) - CC_MINORVER :=$(call MinorVersion,$(CC_VER)) - CC_MICROVER :=$(call MicroVersion,$(CC_VER)) - ifeq ($(ARCH), ia64) - REQUIRED_CC_VER = 13.00.9337.7 - REQUIRED_LINK_VER = 7.00.9337.7 - endif - ifeq ($(ARCH), amd64) - REQUIRED_CC_VER = 14.00.40310.41 - REQUIRED_LINK_VER = 8.00.40310.39 - endif - ifeq ($(CC_MAJORVER), 13) + # Compiler version and type (Always get word after "Version") + CC_VER := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(SED) 's/.*\(Version.*\)/\1/' | $(NAWK) '{print $$2}') + + LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}') + CC_MAJORVER :=$(call MajorVersion,$(CC_VER)) + + # The VS2010 compiler is the same one used on both 32bit and 64bit + ifeq ($(CC_MAJORVER), 16) + COMPILER_NAME=Microsoft Visual Studio 10 (16.00.30319.01) + COMPILER_VERSION=VS2010 + ifeq ($(WINDOWSSDKDIR),) + WINDOWSSDKDIR := $(error WINDOWSSDKDIR cannot be empty here) + endif + ifeq ($(ARCH_DATA_MODEL), 32) + _OTHER_TOOLS_BIN = $(WINDOWSSDKDIR)/Bin + else ifeq ($(ARCH), ia64) - # This should be: CC_VER=13.00.9337.7 LINK_VER=7.00.9337.7 - COMPILER_NAME=Microsoft Platform SDK - November 2001 Edition - COMPILER_VERSION=VS2003 + _OTHER_TOOLS_BIN = $(WINDOWSSDKDIR)/Bin/ia64 + else + _OTHER_TOOLS_BIN = $(WINDOWSSDKDIR)/Bin/x64 endif endif - ifeq ($(CC_MAJORVER), 14) - ifeq ($(ARCH), amd64) - ifeq ($(CC_MICROVER), 30701) - # This should be: CC_VER=14.00.30701 LINK_VER=8.00.30701 - # WARNING: it says 14, but it is such an early build it doesn't - # have all the VS2005 compiler option changes, so treat - # this like a VS2003 compiler. - COMPILER_NAME=Microsoft Platform SDK - February 2003 Edition - COMPILER_VERSION=VS2003 - else - # This should be: CC_VER=14.00.40310.41 LINK_VER=8.00.40310.39 - COMPILER_NAME=Microsoft Platform SDK - April 2005 Edition (3790.1830) - COMPILER_VERSION=VS2005 - endif - endif - endif - # This will cause problems if ALT_COMPILER_PATH is defined to "" - # which is a directive to use the PATH. - REBASE = $(COMPILER_PATH)../REBASE - ifndef COMPILER_PATH - COMPILER_PATH := $(error COMPILER_PATH cannot be empty here) - endif + RC = $(_OTHER_TOOLS_BIN)/RC.Exe + REBASE = $(_OTHER_TOOLS_BIN)/ReBase.Exe + MT = $(_OTHER_TOOLS_BIN)/mt.exe + MTL = $(_OTHER_TOOLS_BIN)/midl.exe + endif + + # These variables can never be empty + ifndef COMPILER_PATH + COMPILER_PATH := $(error COMPILER_PATH cannot be empty here) endif ifndef COMPILER_VERSION COMPILER_VERSION := $(error COMPILER_VERSION cannot be empty here) endif + ifneq ($(COMPILER_VERSION),VS2010) + COMPILER_VERSION := $(error COMPILER_VERSION must be VS2010) + endif + # Shared library generation flag SHARED_LIBRARY_FLAG = -LD endif diff -Nru openjdk-6-6b31-1.13.3/corba/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java openjdk-6-6b38-1.13.10/corba/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java --- openjdk-6-6b31-1.13.3/corba/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java 2014-04-10 15:06:08.000000000 +0000 +++ openjdk-6-6b38-1.13.10/corba/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java 2016-01-20 01:40:57.000000000 +0000 @@ -567,6 +567,11 @@ // XXX I18N, logging needed. throw new NotActiveException("defaultReadObjectDelegate"); + if (!currentClassDesc.forClass().isAssignableFrom( + currentObject.getClass())) { + throw new IOException("Object Type mismatch"); + } + // The array will be null unless fields were retrieved // remotely because of a serializable version difference. // Bug fix for 4365188. See the definition of @@ -1059,6 +1064,9 @@ int spBase = spClass; // current top of stack + if (currentClass.getName().equals("java.lang.String")) { + return this.readUTF(); + } /* The object's classes should be processed from supertype to subtype * Push all the clases of the current object onto a stack. * Note that only the serializable classes are represented @@ -2240,6 +2248,27 @@ try { Class fieldCl = fields[i].getClazz(); + if ((objectValue != null) + && (!fieldCl.isAssignableFrom( + objectValue.getClass()))) { + throw new IllegalArgumentException("Field mismatch"); + } + Field classField = null; + try { + classField = cl.getDeclaredField(fields[i].getName()); + } catch (NoSuchFieldException nsfEx) { + throw new IllegalArgumentException(nsfEx); + } catch (SecurityException secEx) { + throw new IllegalArgumentException(secEx.getCause()); + } + Class declaredFieldClass = classField.getType(); + + // check input field type is a declared field type + // input field is a subclass of the declared field + if (!declaredFieldClass.isAssignableFrom(fieldCl)) { + throw new IllegalArgumentException( + "Field Type mismatch"); + } if (objectValue != null && !fieldCl.isInstance(objectValue)) { throw new IllegalArgumentException(); } @@ -2413,8 +2442,8 @@ private void throwAwayData(ValueMember[] fields, com.sun.org.omg.SendingContext.CodeBase sender) throws InvalidClassException, StreamCorruptedException, - ClassNotFoundException, IOException - { + ClassNotFoundException, IOException { + for (int i = 0; i < fields.length; ++i) { try { @@ -2549,8 +2578,7 @@ } - private static void setObjectField(Object o, Class c, String fieldName, Object v) - { + private static void setObjectField(Object o, Class c, String fieldName, Object v) { try { Field fld = c.getDeclaredField( fieldName ) ; Class fieldCl = fld.getType(); @@ -2560,9 +2588,15 @@ long key = bridge.objectFieldOffset( fld ) ; bridge.putObject( o, key, v ) ; } catch (Exception e) { - throw utilWrapper.errorSetObjectField( e, fieldName, - o.toString(), - v.toString() ) ; + if (o != null) { + throw utilWrapper.errorSetObjectField( e, fieldName, + o.toString(), + v.toString() ) ; + } else { + throw utilWrapper.errorSetObjectField( e, fieldName, + "null " + c.getName() + " object", + v.toString() ) ; + } } } @@ -2570,12 +2604,22 @@ { try { Field fld = c.getDeclaredField( fieldName ) ; - long key = bridge.objectFieldOffset( fld ) ; - bridge.putBoolean( o, key, v ) ; + if ((fld != null) && (fld.getType() == Boolean.TYPE)) { + long key = bridge.objectFieldOffset( fld ) ; + bridge.putBoolean( o, key, v ) ; + } else { + throw new InvalidObjectException("Field Type mismatch"); + } } catch (Exception e) { + if (o != null) { throw utilWrapper.errorSetBooleanField( e, fieldName, o.toString(), new Boolean(v) ) ; + } else { + throw utilWrapper.errorSetBooleanField( e, fieldName, + "null " + c.getName() + " object", + new Boolean(v) ) ; + } } } @@ -2583,12 +2627,22 @@ { try { Field fld = c.getDeclaredField( fieldName ) ; - long key = bridge.objectFieldOffset( fld ) ; - bridge.putByte( o, key, v ) ; + if ((fld != null) && (fld.getType() == Byte.TYPE)) { + long key = bridge.objectFieldOffset( fld ) ; + bridge.putByte( o, key, v ) ; + } else { + throw new InvalidObjectException("Field Type mismatch"); + } } catch (Exception e) { - throw utilWrapper.errorSetByteField( e, fieldName, - o.toString(), - new Byte(v) ) ; + if (o != null) { + throw utilWrapper.errorSetByteField( e, fieldName, + o.toString(), + new Byte(v) ) ; + } else { + throw utilWrapper.errorSetByteField( e, fieldName, + "null " + c.getName() + " object", + new Byte(v) ) ; + } } } @@ -2596,12 +2650,22 @@ { try { Field fld = c.getDeclaredField( fieldName ) ; - long key = bridge.objectFieldOffset( fld ) ; - bridge.putChar( o, key, v ) ; + if ((fld != null) && (fld.getType() == Character.TYPE)) { + long key = bridge.objectFieldOffset( fld ) ; + bridge.putChar( o, key, v ) ; + } else { + throw new InvalidObjectException("Field Type mismatch"); + } } catch (Exception e) { - throw utilWrapper.errorSetCharField( e, fieldName, - o.toString(), - new Character(v) ) ; + if (o != null) { + throw utilWrapper.errorSetCharField( e, fieldName, + o.toString(), + new Character(v) ) ; + } else { + throw utilWrapper.errorSetCharField( e, fieldName, + "null " + c.getName() + " object", + new Character(v) ) ; + } } } @@ -2609,12 +2673,22 @@ { try { Field fld = c.getDeclaredField( fieldName ) ; - long key = bridge.objectFieldOffset( fld ) ; - bridge.putShort( o, key, v ) ; + if ((fld != null) && (fld.getType() == Short.TYPE)) { + long key = bridge.objectFieldOffset( fld ) ; + bridge.putShort( o, key, v ) ; + } else { + throw new InvalidObjectException("Field Type mismatch"); + } } catch (Exception e) { + if (o != null) { throw utilWrapper.errorSetShortField( e, fieldName, o.toString(), new Short(v) ) ; + } else { + throw utilWrapper.errorSetShortField( e, fieldName, + "null " + c.getName() + " object", + new Short(v) ) ; + } } } @@ -2622,12 +2696,22 @@ { try { Field fld = c.getDeclaredField( fieldName ) ; - long key = bridge.objectFieldOffset( fld ) ; - bridge.putInt( o, key, v ) ; + if ((fld != null) && (fld.getType() == Integer.TYPE)) { + long key = bridge.objectFieldOffset( fld ) ; + bridge.putInt( o, key, v ) ; + } else { + throw new InvalidObjectException("Field Type mismatch"); + } } catch (Exception e) { - throw utilWrapper.errorSetIntField( e, fieldName, - o.toString(), - new Integer(v) ) ; + if (o != null) { + throw utilWrapper.errorSetIntField( e, fieldName, + o.toString(), + new Integer(v) ) ; + } else { + throw utilWrapper.errorSetIntField( e, fieldName, + "null " + c.getName() + " object", + new Integer(v) ) ; + } } } @@ -2635,12 +2719,22 @@ { try { Field fld = c.getDeclaredField( fieldName ) ; - long key = bridge.objectFieldOffset( fld ) ; - bridge.putLong( o, key, v ) ; + if ((fld != null) && (fld.getType() == Long.TYPE)) { + long key = bridge.objectFieldOffset( fld ) ; + bridge.putLong( o, key, v ) ; + } else { + throw new InvalidObjectException("Field Type mismatch"); + } } catch (Exception e) { - throw utilWrapper.errorSetLongField( e, fieldName, - o.toString(), - new Long(v) ) ; + if (o != null) { + throw utilWrapper.errorSetLongField( e, fieldName, + o.toString(), + new Long(v) ) ; + } else { + throw utilWrapper.errorSetLongField( e, fieldName, + "null " + c.getName() + " object", + new Long(v) ) ; + } } } @@ -2648,12 +2742,22 @@ { try { Field fld = c.getDeclaredField( fieldName ) ; - long key = bridge.objectFieldOffset( fld ) ; - bridge.putFloat( o, key, v ) ; + if ((fld != null) && (fld.getType() == Float.TYPE)) { + long key = bridge.objectFieldOffset( fld ) ; + bridge.putFloat( o, key, v ) ; + } else { + throw new InvalidObjectException("Field Type mismatch"); + } } catch (Exception e) { - throw utilWrapper.errorSetFloatField( e, fieldName, - o.toString(), - new Float(v) ) ; + if (o != null) { + throw utilWrapper.errorSetFloatField( e, fieldName, + o.toString(), + new Float(v) ) ; + } else { + throw utilWrapper.errorSetFloatField( e, fieldName, + "null " + c.getName() + " object", + new Float(v) ) ; + } } } @@ -2661,12 +2765,22 @@ { try { Field fld = c.getDeclaredField( fieldName ) ; - long key = bridge.objectFieldOffset( fld ) ; - bridge.putDouble( o, key, v ) ; + if ((fld != null) && (fld.getType() == Double.TYPE)) { + long key = bridge.objectFieldOffset( fld ) ; + bridge.putDouble( o, key, v ) ; + } else { + throw new InvalidObjectException("Field Type mismatch"); + } } catch (Exception e) { - throw utilWrapper.errorSetDoubleField( e, fieldName, - o.toString(), - new Double(v) ) ; + if (o != null) { + throw utilWrapper.errorSetDoubleField( e, fieldName, + o.toString(), + new Double(v) ) ; + } else { + throw utilWrapper.errorSetDoubleField( e, fieldName, + "null " + c.getName() + " object", + new Double(v) ) ; + } } } diff -Nru openjdk-6-6b31-1.13.3/corba/src/share/classes/com/sun/corba/se/impl/io/IIOPOutputStream.java openjdk-6-6b38-1.13.10/corba/src/share/classes/com/sun/corba/se/impl/io/IIOPOutputStream.java --- openjdk-6-6b31-1.13.3/corba/src/share/classes/com/sun/corba/se/impl/io/IIOPOutputStream.java 2014-04-10 15:06:08.000000000 +0000 +++ openjdk-6-6b38-1.13.10/corba/src/share/classes/com/sun/corba/se/impl/io/IIOPOutputStream.java 2016-01-20 01:40:57.000000000 +0000 @@ -559,6 +559,10 @@ * Push all the clases of the current object onto a stack. * Remember the stack pointer where this set of classes is being pushed. */ + if (currentClassDesc.forClass().getName().equals("java.lang.String")) { + this.writeUTF((String)obj); + return; + } int stackMark = classDescStack.size(); try { ObjectStreamClass next; diff -Nru openjdk-6-6b31-1.13.3/corba/src/share/classes/com/sun/tools/corba/se/logutil/IndentingPrintWriter.java openjdk-6-6b38-1.13.10/corba/src/share/classes/com/sun/tools/corba/se/logutil/IndentingPrintWriter.java --- openjdk-6-6b31-1.13.3/corba/src/share/classes/com/sun/tools/corba/se/logutil/IndentingPrintWriter.java 2014-04-10 15:06:08.000000000 +0000 +++ openjdk-6-6b38-1.13.10/corba/src/share/classes/com/sun/tools/corba/se/logutil/IndentingPrintWriter.java 2016-01-20 01:40:55.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright 2003, 2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. * 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 -Nru openjdk-6-6b31-1.13.3/corba/src/share/classes/org/omg/CORBA/ORB.java openjdk-6-6b38-1.13.10/corba/src/share/classes/org/omg/CORBA/ORB.java --- openjdk-6-6b31-1.13.3/corba/src/share/classes/org/omg/CORBA/ORB.java 2014-04-10 15:06:08.000000000 +0000 +++ openjdk-6-6b38-1.13.10/corba/src/share/classes/org/omg/CORBA/ORB.java 2016-01-20 01:40:57.000000000 +0000 @@ -290,28 +290,12 @@ if (className == null) { singleton = new com.sun.corba.se.impl.orb.ORBSingleton(); } else { - singleton = create_impl_with_systemclassloader(className); + singleton = create_impl(className); } } return singleton; } - private static ORB create_impl_with_systemclassloader(String className) { - - try { - ReflectUtil.checkPackageAccess(className); - ClassLoader cl = ClassLoader.getSystemClassLoader(); - Class orbBaseClass = org.omg.CORBA.ORB.class; - Class singletonOrbClass = Class.forName(className, true, cl).asSubclass(orbBaseClass); - return (ORB)singletonOrbClass.newInstance(); - } catch (Throwable ex) { - SystemException systemException = new INITIALIZE( - "can't instantiate default ORB implementation " + className); - systemException.initCause(ex); - throw systemException; - } - } - private static ORB create_impl(String className) { ClassLoader cl = Thread.currentThread().getContextClassLoader(); if (cl == null) diff -Nru openjdk-6-6b31-1.13.3/corba/src/share/classes/sun/rmi/rmic/iiop/StubGenerator.java openjdk-6-6b38-1.13.10/corba/src/share/classes/sun/rmi/rmic/iiop/StubGenerator.java --- openjdk-6-6b31-1.13.3/corba/src/share/classes/sun/rmi/rmic/iiop/StubGenerator.java 2014-04-10 15:06:08.000000000 +0000 +++ openjdk-6-6b38-1.13.10/corba/src/share/classes/sun/rmi/rmic/iiop/StubGenerator.java 2016-01-20 01:40:57.000000000 +0000 @@ -446,6 +446,9 @@ if (emitPermissionCheck) { // produce the following generated code + // + // private transient boolean _instantiated = false; + // // private static Void checkPermission() { // SecurityManager sm = System.getSecurityManager(); // if (sm != null) { @@ -460,10 +463,21 @@ // // public _XXXXXX_Stub() { // this(checkPermission()); + // _instantiated = true; + // } + // + // private void readObject(java.io.ObjectInputStream s) throws IOException, ClassNotFoundException { + // checkPermission(); + // s.defaultReadObject(); + // _instantiated = true; // } + // // where XXXXXX is the name of the remote interface p.pln(); + p.plnI("private transient boolean _instantiated = false;"); + p.pln(); + p.pO(); p.plnI("private static Void checkPermission() {"); p.plnI("SecurityManager sm = System.getSecurityManager();"); p.pln("if (sm != null) {"); @@ -480,13 +494,23 @@ p.pO(); p.pI(); - p.pln("private " + currentClass + "(Void ignore) { }"); + p.plnI("private " + currentClass + "(Void ignore) { }"); p.pln(); + p.pO(); - p.plnI("public " + currentClass + "() { "); + p.plnI("public " + currentClass + "() {"); p.pln("this(checkPermission());"); + p.pln("_instantiated = true;"); p.pOln("}"); p.pln(); + p.plnI("private void readObject(java.io.ObjectInputStream s) throws IOException, ClassNotFoundException {"); + p.plnI("checkPermission();"); + p.pO(); + p.pln("s.defaultReadObject();"); + p.pln("_instantiated = true;"); + p.pOln("}"); + p.pln(); + //p.pO(); } if (!emitPermissionCheck) { @@ -893,6 +917,7 @@ String paramNames[] = method.getArgumentNames(); Type returnType = method.getReturnType(); ValueType[] exceptions = getStubExceptions(method,false); + boolean hasIOException = false; addNamesInUse(method); addNameInUse("_type_ids"); @@ -920,6 +945,13 @@ p.plnI(" {"); // Now create the method body... + if (emitPermissionCheck) { + p.pln("if ((System.getSecurityManager() != null) && (!_instantiated)) {"); + p.plnI(" throw new java.io.IOError(new java.io.IOException(\"InvalidObject \"));"); + p.pOln("}"); + p.pln(); + } + if (localStubs) { writeLocalStubMethodBody(p,method,theType); diff -Nru openjdk-6-6b31-1.13.3/corba/THIRD_PARTY_README openjdk-6-6b38-1.13.10/corba/THIRD_PARTY_README --- openjdk-6-6b31-1.13.3/corba/THIRD_PARTY_README 2014-04-10 15:06:08.000000000 +0000 +++ openjdk-6-6b38-1.13.10/corba/THIRD_PARTY_README 2016-01-20 01:40:55.000000000 +0000 @@ -695,33 +695,50 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: -If you modify libpng you may insert additional notices immediately followingthis sentence. +If you modify libpng you may insert additional notices immediately following +this sentence. + +This code is released under the libpng license. + +libpng versions 1.2.6, August 15, 2004, through 1.6.16, December 22, 2014, are +Copyright (c) 2004, 2006-2014 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-1.2.5 +with the following individual added to the list of Contributing Authors -libpng version 1.2.6, December 3, 2004, is -Copyright (c) 2004 Glenn Randers-Pehrson, and is -distributed according to the same disclaimer and license as libpng-1.2.5with the following individual added to the list of Contributing Authors Cosmin Truta -libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, areCopyright (c) 2000-2002 Glenn Randers-Pehrson, and are -distributed according to the same disclaimer and license as libpng-1.0.6with the following individuals added to the list of Contributing Authors +libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are +Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-1.0.6 +with the following individuals added to the list of Contributing Authors + Simon-Pierre Cadieux Eric S. Raymond Gilles Vollant and with the following additions to the disclaimer: - There is no warranty against interference with your enjoyment of the library or against infringement. There is no warranty that our - efforts or the library will fulfill any of your particular purposes or needs. This library is provided with all faults, and the entire risk of satisfactory quality, performance, accuracy, and effort is with the user. + There is no warranty against interference with your enjoyment of the + library or against infringement. There is no warranty that our + efforts or the library will fulfill any of your particular purposes + or needs. This library is provided with all faults, and the entire + risk of satisfactory quality, performance, accuracy, and effort is with + the user. + +libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are +Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-0.96, +with the following individuals added to the list of Contributing Authors: -libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, areCopyright (c) 1998, 1999 Glenn Randers-Pehrson, and are -distributed according to the same disclaimer and license as libpng-0.96,with the following individuals added to the list of Contributing Authors: Tom Lane Glenn Randers-Pehrson Willem van Schaik libpng versions 0.89, June 1996, through 0.96, May 1997, are Copyright (c) 1996, 1997 Andreas Dilger -Distributed according to the same disclaimer and license as libpng-0.88,with the following individuals added to the list of Contributing Authors: +Distributed according to the same disclaimer and license as libpng-0.88, +with the following individuals added to the list of Contributing Authors: + John Bowler Kevin Bracey Sam Bushell @@ -732,7 +749,8 @@ libpng versions 0.5, May 1995, through 0.88, January 1996, are Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. -For the purposes of this copyright and license, "Contributing Authors"is defined as the following set of individuals: +For the purposes of this copyright and license, "Contributing Authors" +is defined as the following set of individuals: Andreas Dilger Dave Martindale @@ -740,12 +758,17 @@ Paul Schmidt Tim Wegner -The PNG Reference Library is supplied "AS IS". The Contributing Authorsand Group 42, Inc. disclaim all warranties, expressed or implied, -including, without limitation, the warranties of merchantability and offitness for any purpose. The Contributing Authors and Group 42, Inc. -assume no liability for direct, indirect, incidental, special, exemplary,or consequential damages, which may result from the use of the PNG +The PNG Reference Library is supplied "AS IS". The Contributing Authors +and Group 42, Inc. disclaim all warranties, expressed or implied, +including, without limitation, the warranties of merchantability and of +fitness for any purpose. The Contributing Authors and Group 42, Inc. +assume no liability for direct, indirect, incidental, special, exemplary, +or consequential damages, which may result from the use of the PNG Reference Library, even if advised of the possibility of such damage. -Permission is hereby granted to use, copy, modify, and distribute thissource code, or portions hereof, for any purpose, without fee, subjectto the following restrictions: +Permission is hereby granted to use, copy, modify, and distribute this +source code, or portions hereof, for any purpose, without fee, subject +to the following restrictions: 1. The origin of this source code must not be misrepresented. @@ -755,23 +778,27 @@ 3. This Copyright notice may not be removed or altered from any source or altered source distribution. -The Contributing Authors and Group 42, Inc. specifically permit, withoutfee, and encourage the use of this source code as a component to -supporting the PNG file format in commercial products. If you use thissource code in a product, acknowledgment is not required but would be +The Contributing Authors and Group 42, Inc. specifically permit, without +fee, and encourage the use of this source code as a component to +supporting the PNG file format in commercial products. If you use this +source code in a product, acknowledgment is not required but would be appreciated. -A "png_get_copyright" function is available, for convenient use in "about"boxes and the like: +A "png_get_copyright" function is available, for convenient use in "about" +boxes and the like: printf("%s",png_get_copyright(NULL)); Also, the PNG logo (in PNG format, of course) is supplied in the files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). -Libpng is OSI Certified Open Source Software. OSI Certified Open Source is acertification mark of the Open Source Initiative. +Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a +certification mark of the Open Source Initiative. Glenn Randers-Pehrson glennrp at users.sourceforge.net -December 3, 2004 +December 22, 2014 %% This notice is provided with respect to Libungif - An uncompressed GIF library, which may be included with this software: diff -Nru openjdk-6-6b31-1.13.3/debian/changelog openjdk-6-6b38-1.13.10/debian/changelog --- openjdk-6-6b31-1.13.3/debian/changelog 2016-01-26 13:34:54.000000000 +0000 +++ openjdk-6-6b38-1.13.10/debian/changelog 2016-01-26 13:35:01.000000000 +0000 @@ -1,8 +1,239 @@ -openjdk-6 (6b31-1.13.3-1ubuntu1) trusty; urgency=medium +openjdk-6 (6b38-1.13.10-0ubuntu0.14.04.1) trusty-security; urgency=high - * Regenerate the control file. + * Backport to Ubuntu 14.04. - -- Matthias Klose Wed, 16 Apr 2014 05:37:46 +0200 + -- Tiago Stürmer Daitx Tue, 26 Jan 2016 13:21:11 +0000 + +openjdk-6 (6b38-1.13.10-0ubuntu0.15.10.1) wily-security; urgency=medium + + * IcedTea 1.13.10 release. + * Security fixes: + - S8059054, CVE-2016-0402: Better URL processing + - S8130710, CVE-2016-0448: Better attributes processing + - S8133962, CVE-2016-0466: More general limits + - S8137060: JMX memory management improvements + - S8139012: Better font substitutions + - S8139017, CVE-2016-0483: More stable image decoding + - S8140543, CVE-2016-0494: Arrange font actions + - S8143185: Cleanup for handling proxies + - S8143941, CVE-2015-8126, CVE-2015-8472: Update splashscreen displays + * Other fixes: + - S7169111, PR2757: Unreadable menu bar with Ambiance theme in GTK L&F + (LP: #932274) + * debian/rules: removed old @op@, @pkg_version@, and @pkg_sversion@ + * debian/control.in: replaced @op@ with =, @pkg_version@ with + ${binary:Version}, and @pkg_sversion@ by ${source:Version} + * debian/control.cacao-jre: same + * debian/control.jamvm-jre: same + * debian/control.zero-jre: same + + -- Tiago Stürmer Daitx Mon, 25 Jan 2016 02:40:51 +0000 + +openjdk-6 (6b37-1.13.9-1) experimental; urgency=medium + + [ Tiago Stürmer Daitx ] + * IcedTea 1.13.9 release. + * Security fixes: + - S8048030, CVE-2015-4734: Expectations should be consistent + - S8068842, CVE-2015-4803: Better JAXP data handling + - S8076339, CVE-2015-4903: Better handling of remote object invocation + - S8076383, CVE-2015-4835: Better CORBA exception handling + - S8076387, CVE-2015-4882: Better CORBA value handling + - S8076392, CVE-2015-4881: Improve IIOPInputStream consistency + - S8076413, CVE-2015-4883: Better JRMP message handling + - S8078427, CVE-2015-4842: More supportive home environment + - S8078440: Safer managed types + - S8080541: More direct property handling + - S8080688, CVE-2015-4860: Service for DGC services + - S8081760: Better group dynamics + - S8086733, CVE-2015-4893: Improve namespace handling + - S8087350: Improve array conversions + - S8103671, CVE-2015-4805: More objective stream classes + - S8103675: Better Binary searches + - S8130078, CVE-2015-4911: Document better processing + - S8130193, CVE-2015-4806: Improve HTTP connections + - S8130864: Better server identity handling + - S8130891, CVE-2015-4843: (bf) More direct buffering + - S8131291, CVE-2015-4872: Perfect parameter patterning + - S8132042, CVE-2015-4844: Preserve layout presentation + + -- Matthias Klose Thu, 19 Nov 2015 01:12:55 +0100 + +openjdk-6 (6b36-1.13.8-1) experimental; urgency=medium + + * IcedTea 1.13.8 release. + * Security fixes: + - S8043202, CVE-2015-2808: Prohibit RC4 cipher suites. + - S8067694, CVE-2015-2625: Improved certification checking. + - S8071715, CVE-2015-4760: Tune font layout engine. + - S8071731: Better scaling for C1. + - S8072490: Better font morphing redux. + - S8072887: Better font handling improvements. + - S8073334: Improved font substitutions. + - S8073773: Presume path preparedness. + - S8073894: Getting to the root of certificate chains. + - S8074330: Set font anchors more solidly. + - S8074335: Substitute for substitution formats. + - S8074865, CVE-2015-2601: General crypto resilience changes. + - S8074871: Adjust device table handling. + - S8075374, CVE-2015-4748: Responding to OCSP responses. + - S8075378, CVE-2015-4749: JNDI DnsClient Exception Handling. + - S8075738: Better multi-JVM sharing. + - S8075838: Method for typing MethodTypes. + - S8075853, CVE-2015-2621: Proxy for MBean proxies. + - S8076328, CVE-2015-4000: Enforce key exchange constraints. + - S8076376, CVE-2015-2628: Enhance IIOP operations. + - S8076397, CVE-2015-4731: Better MBean connections. + - S8076401, CVE-2015-2590: Serialize OIS data. + - S8076405, CVE-2015-4732: Improve serial serialization. + - S8076409, CVE-2015-4733: Reinforce RMI framework. + - S8077520, CVE-2015-2632: Morph tables into improved form. + - PR2488, CVE-2015-4000: Make jdk8 mode the default for + jdk.tls.ephemeralDHKeySize. + * Refresh patches. + + -- Matthias Klose Fri, 31 Jul 2015 16:24:22 +0200 + +openjdk-6 (6b35-1.13.7-1) unstable; urgency=medium + + * IcedTea 1.13.7 release. + * Security fixes: + - S8059064: Better G1 log caching. + - S8060461: Fix for JDK-8042609 uncovers additional issue. + - S8064601, CVE-2015-0480: Improve jar file handling. + - S8065286: Fewer subtable substitutions. + - S8065291: Improved font lookups. + - S8066479: Better certificate chain validation. + - S8067050: Better font consistency checking. + - S8067684: Better font substitutions. + - S8067699, CVE-2015-0469: Better glyph storage. + - S8068320, CVE-2015-0477: Limit applet requests. + - S8068720, CVE-2015-0488: Better certificate options checking. + - S8069198: Upgrade image library. + - S8071726, CVE-2015-0478: Better RSA optimizations. + - S8071818: Better vectorization on SPARC. + - S8071931, CVE-2015-0460: Return of the phantom menace. + + -- Matthias Klose Wed, 15 Apr 2015 16:18:56 +0200 + +openjdk-6 (6b34-1.13.6-1) unstable; urgency=high + + * IcedTea 1.13.6 release. + * Security fixes: + - S8046656: Update protocol support. + - S8047125, CVE-2015-0395: (ref) More phantom object references. + - S8047130: Fewer escapes from escape analysis. + - S8048035, CVE-2015-0400: Ensure proper proxy protocols. + - S8049253: Better GC validation. + - S8050807, CVE-2015-0383: Better performing performance data handling. + - S8054367, CVE-2015-0412: More references for endpoints. + - S8055304, CVE-2015-0407: More boxing for DirectoryComboBoxModel. + - S8055309, CVE-2015-0408: RMI needs better transportation considerations. + - S8055479: TLAB stability. + - S8055489, CVE-2014-6585: Better substitution formats. + - S8056264, CVE-2014-6587: Multicast support improvements. + - S8056276, CVE-2014-6591: Fontmanager feature improvements. + - S8057555, CVE-2014-6593: Less cryptic cipher suite management. + - S8058982, CVE-2014-6601: Better verification of an exceptional + invokespecial. + - S8059485, CVE-2015-0410: Resolve parsing ambiguity. + - S8061210, CVE-2014-3566: Issues in TLS. + * Fix applying the fontconfig-dejavu patch for older releases. + * Fix build on mips64 and mips64el. Addresses #776295. + + -- Matthias Klose Mon, 26 Jan 2015 13:48:18 +0100 + +openjdk-6 (6b33-1.13.5-2) unstable; urgency=medium + + * Fix libjpeg runtime dependency. + * Fix regression running JamVM after the 2.5.3 security update. + * Fix regression running CACAO after the 2.5.3 security update. + * Fix typo in package description. Closes: #706341. + + -- Matthias Klose Thu, 13 Nov 2014 12:15:51 +0100 + +openjdk-6 (6b33-1.13.5-1) unstable; urgency=medium + + * IcedTea 1.13.5 release. + * Security fixes: + - S8015256: Better class accessibility. + - S8022783, CVE-2014-6504: Optimize C2 optimizations. + - S8035162: Service printing service. + - S8035781: Improve equality for annotations. + - S8036805: Correct linker method lookup. + - S8036810: Correct linker field lookup. + - S8037066, CVE-2014-6457: Secure transport layer. + - S8037846, CVE-2014-6558: Ensure streaming of input cipher streams. + - S8038899: Safer safepoints. + - S8038903: More native monitor monitoring. + - S8038908: Make Signature more robust. + - S8038913: Bolster XML support. + - S8039509, CVE-2014-6512: Wrap sockets more thoroughly. + - S8039533, CVE-2014-6517: Higher resolution resolvers. + - S8041540, CVE-2014-6511: Better use of pages in font processing. + - S8041545: Better validation of generated rasters. + - S8041564, CVE-2014-6506: Improved management of logger resources. + - S8041717, CVE-2014-6519: Issue with class file parser. + - S8042609, CVE-2014-6513: Limit splashiness of splash images. + - S8042797, CVE-2014-6502: Avoid strawberries in LogRecord. + - S8044274, CVE-2014-6531: Proper property processing. + * Update to JamVM-2.0.0. + * Change B-D to libjpeg-dev to finish the transition to libjpeg-turbo + (OndÅ™ej Surý). Closes: #763488. + * Depend on libnss3 instead of libnss3-1d for recent releases. + Closes: #760122. + + -- Matthias Klose Wed, 15 Oct 2014 09:43:32 +0200 + +openjdk-6 (6b32-1.13.4-4) unstable; urgency=medium + + * Adjust patches for upstream renaming build flags. Adds the jni + paths again to the default search path. Closes: #747506. + + -- Matthias Klose Mon, 04 Aug 2014 14:35:03 +0200 + +openjdk-6 (6b32-1.13.4-3) unstable; urgency=medium + + * Set AM_MAINTAINER_MODE. + + -- Matthias Klose Sun, 03 Aug 2014 15:38:55 +0200 + +openjdk-6 (6b32-1.13.4-2) unstable; urgency=medium + + * Build using GCC 4.9. Closes: #751328. + * Suggest fonts-indic instead of ttf-indic-fonts. Closes: #747693. + * Disable the lcms2 version check and assume that system lcms2 + packages are kept working for existing releases. Closes: #745616. + + -- Matthias Klose Sat, 02 Aug 2014 21:10:20 +0200 + +openjdk-6 (6b32-1.13.4-1) unstable; urgency=high + + * IcedTea 1.13.4 release. + * Security fixes: + - S8029755, CVE-2014-4209: Enhance subject class. + - S8030763: Validate global memory allocation. + - S8031346, CVE-2014-4244: Enhance RSA key handling. + - S8031540: Introduce document horizon. + - S8032536: JVM resolves wrong method in some unusual cases. + - S8033055: Issues in 2d. + - S8033301, CVE-2014-4266: Build more informative InfoBuilder. + - S8034267: Probabilistic native crash. + - S8034272: Do not cram data into CRAM arrays. + - S8035004, CVE-2014-4252: Provider provides less service. + - S8035009, CVE-2014-4218: Make Proxy representations consistent. + - S8035119, CVE-2014-4219: Fix exceptions to bytecode verification. + - S8035699, CVE-2014-4268: File choosers should be choosier. + - S8036571: (process) Process process arguments carefully. + - S8036800: Attribute OOM to correct part of code. + - S8037046: Validate libraries to be loaded. + - S8037157: Verify call. + - S8037076, CVE-2014-2490: Check constant pool constants. + - S8037162, CVE-2014-4263: More robust DH exchanges. + - S8037167, CVE-2014-4216: Better method signature resolution. + - S8039520, CVE-2014-4262: More atomicity of atomic updates. + + -- Matthias Klose Wed, 16 Jul 2014 02:22:50 +0200 openjdk-6 (6b31-1.13.3-1) unstable; urgency=high diff -Nru openjdk-6-6b31-1.13.3/debian/control openjdk-6-6b38-1.13.10/debian/control --- openjdk-6-6b31-1.13.3/debian/control 2016-01-26 13:34:54.000000000 +0000 +++ openjdk-6-6b38-1.13.10/debian/control 2016-01-26 13:35:01.000000000 +0000 @@ -1,10 +1,11 @@ Source: openjdk-6 Section: java Priority: optional -Maintainer: OpenJDK Team +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: OpenJDK Team Uploaders: Torsten Werner , Matthias Klose , Damien Raude-Morvan -Build-Depends: debhelper (>= 5), binutils-dev [armel armhf], m4, lsb-release, wget, zip, unzip, sharutils, gawk, cpio, pkg-config, procps, time, fastjar (>= 2:0.96-0ubuntu2), autoconf, automake1.11, autotools-dev, ant, ant-optional, libtool [alpha amd64 armel armhf i386 lpia m68k mips mipsel powerpc s390], g++-4.8, ecj-gcj [amd64 armel armhf arm64 hppa i386 ia64 lpia powerpc powerpcspe ppc64 ppc64el m68k mips mipsel sh4 sparc sparc64 s390 s390x], gcj-jdk [amd64 armel armhf arm64 hppa i386 ia64 lpia powerpc powerpcspe ppc64 ppc64el m68k mips mipsel sh4 sparc sparc64 s390 s390x], openjdk-6-jdk (>= 6b27) [alpha], libxtst-dev, libxi-dev, libxt-dev, libxaw7-dev, libxrender-dev, libcups2-dev, libasound2-dev, liblcms2-dev, libfreetype6-dev (>= 2.2.1), libgtk2.0-dev, libxinerama-dev, xsltproc, libkrb5-dev, rhino, fonts-ipafont-mincho, libffi-dev, zlib1g-dev, libpng-dev, libjpeg8-dev, libgif-dev, libpulse-dev (>= 0.9.12), libnss3-dev (>= 3.12.9+ckbi-1.82-0ubuntu4), mauve, xvfb, xauth, xfonts-base, libgl1-mesa-dri, twm, dbus-x11, x11-xkb-utils, -Standards-Version: 3.9.5 +Build-Depends: debhelper (>= 5), binutils-dev [armel armhf], m4, lsb-release, wget, zip, unzip, sharutils, gawk, cpio, pkg-config, procps, time, fastjar (>= 2:0.96-0ubuntu2), autoconf, automake1.11, autotools-dev, ant, ant-optional, libtool [alpha amd64 armel armhf i386 lpia m68k mips mipsel powerpc s390], g++-4.8, ecj-gcj [amd64 armel armhf arm64 hppa i386 ia64 lpia powerpc powerpcspe ppc64 ppc64el m68k mips mipsel sh4 sparc sparc64 s390 s390x], gcj-jdk [amd64 armel armhf arm64 hppa i386 ia64 lpia powerpc powerpcspe ppc64 ppc64el m68k mips mipsel sh4 sparc sparc64 s390 s390x], openjdk-6-jdk (>= 6b27) [alpha], libxtst-dev, libxi-dev, libxt-dev, libxaw7-dev, libxrender-dev, libcups2-dev, libasound2-dev, liblcms2-dev, libfreetype6-dev (>= 2.2.1), libgtk2.0-dev, libxinerama-dev, xsltproc, libkrb5-dev, rhino, fonts-ipafont-mincho, libffi-dev, zlib1g-dev, libpng-dev, libjpeg-dev, libgif-dev, libpulse-dev (>= 0.9.12), libnss3-dev (>= 2:3.12.3), mauve, xvfb, xauth, xfonts-base, libgl1-mesa-dri, twm, dbus-x11, x11-xkb-utils, +Standards-Version: 3.9.6 Homepage: http://openjdk.java.net/ Vcs-Bzr: http://bazaar.launchpad.net/~openjdk/openjdk/openjdk6 Vcs-Browser: https://code.launchpad.net/~openjdk/openjdk/openjdk6 @@ -13,7 +14,7 @@ Architecture: any Multi-Arch: same Pre-Depends: ${dpkg:Depends} -Depends: openjdk-6-jre (>= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} +Depends: openjdk-6-jre (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Recommends: libxt-dev Suggests: openjdk-6-demo, openjdk-6-source, visualvm Provides: java-sdk, java2-sdk, java5-sdk, java6-sdk, java-compiler @@ -29,15 +30,15 @@ Architecture: any Multi-Arch: same Pre-Depends: ${dpkg:Depends}, ${multiarch:Depends} -Depends: openjdk-6-jre-lib (>= ${source:Version}), ${jredefault:Depends}, ${cacert:Depends}, ${tzdata:Depends}, ${jcommon:Depends}, ${dlopenhl:Depends}, ${shlibs:Depends}, ${misc:Depends} +Depends: openjdk-6-jre-lib (= ${source:Version}), ${jredefault:Depends}, ${cacert:Depends}, ${tzdata:Depends}, ${jcommon:Depends}, ${dlopenhl:Depends}, ${shlibs:Depends}, ${misc:Depends} Recommends: ${dlopenjl:Recommends}, ${cacao:Recommends}, ${jamvm:Recommends} Suggests: libnss-mdns, sun-java6-fonts, ttf-dejavu-extra, fonts-ipafont-gothic, fonts-ipafont-mincho, ttf-wqy-microhei | ttf-wqy-zenhei, ttf-indic-fonts-core, ttf-telugu-fonts, ttf-oriya-fonts, ttf-kannada-fonts, ttf-bengali-fonts, Provides: java-runtime-headless, java2-runtime-headless, java5-runtime-headless, java6-runtime-headless, ${defaultvm:Provides}, ${jvm:Provides} Replaces: openjdk-6-jre-lib (<< 6b23~pre10), openjdk-6-jre (<< 6b23~pre1), openjdk-6-jdk (<< 6b20-1.9.1-0ubuntu2) Conflicts: ${multiarch:Conflicts}, openjdk-6-jre-lib (<< 6b17~pre3-1), openjdk-6-jre (<< 6b17~pre3-1), openjdk-6-jdk (<< 6b17~pre3-1), openjdk-6-demo (<< 6b17~pre3-1), openjdk-6-source (<< 6b17~pre3-1), openjdk-6-doc (<< 6b17~pre3-1), openjdk-6-dbg (<< 6b17~pre3-1), openjdk-6-jre-zero (<< 6b17~pre3-1) Description: OpenJDK Java runtime, using ${vm:Name} (headless) - Minimal Java runtime - needed for executing non GUI Java programs. - Using ${vm:Name}. + Minimal Java runtime - needed for executing non GUI Java programs, + using ${vm:Name}. . The packages are built using the IcedTea build support and patches from the IcedTea project. @@ -46,7 +47,7 @@ Architecture: any Multi-Arch: same Pre-Depends: ${dpkg:Depends} -Depends: openjdk-6-jre-headless (>= ${binary:Version}), ${xandsound:Depends}, ${shlibs:Depends}, ${dlopenjre:Depends}, ${misc:Depends}, ${dep:bridge} +Depends: openjdk-6-jre-headless (= ${binary:Version}), ${xandsound:Depends}, ${shlibs:Depends}, ${dlopenjre:Depends}, ${misc:Depends}, ${dep:bridge} Recommends: ${dlopenjre:Recommends}, ttf-dejavu-extra, icedtea-netx Suggests: icedtea-plugin, ${pkg:pulseaudio} Conflicts: icedtea-gcjwebplugin (<< 1.0-1ubuntu4), openjdk-6-jre-lib (<< 6b17~pre3-1), openjdk-6-jre-headless (<< 6b17~pre3-1), openjdk-6-jdk (<< 6b17~pre3-1), openjdk-6-demo (<< 6b17~pre3-1), openjdk-6-source (<< 6b17~pre3-1), openjdk-6-doc (<< 6b17~pre3-1), openjdk-6-dbg (<< 6b17~pre3-1), openjdk-6-jre-zero (<< 6b17~pre3-1) @@ -54,7 +55,7 @@ Provides: java-runtime, java2-runtime, java5-runtime, java6-runtime Description: OpenJDK Java runtime, using ${vm:Name} Full Java runtime environment - needed for executing Java GUI and Webstart - programs. Using ${vm:Name}. + programs, using ${vm:Name}. . The packages are built using the IcedTea build support and patches from the IcedTea project. @@ -78,7 +79,7 @@ Architecture: any Priority: extra Pre-Depends: ${dpkg:Depends} -Depends: openjdk-6-jre (>= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} +Depends: openjdk-6-jre (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Conflicts: openjdk-6-jre-headless (<< 6b17~pre3-1), openjdk-6-jre (<< 6b17~pre3-1) Description: Java runtime based on OpenJDK (demos and examples) OpenJDK Java runtime diff -Nru openjdk-6-6b31-1.13.3/debian/control.cacao-jre openjdk-6-6b38-1.13.10/debian/control.cacao-jre --- openjdk-6-6b31-1.13.3/debian/control.cacao-jre 2016-01-26 13:34:54.000000000 +0000 +++ openjdk-6-6b38-1.13.10/debian/control.cacao-jre 2016-01-26 13:35:01.000000000 +0000 @@ -4,7 +4,7 @@ Multi-Arch: same Priority: extra Pre-Depends: ${dpkg:Depends} -Depends: @basename@-jre-headless (= @pkg_version@), ${shlibs:Depends}, ${misc:Depends} +Depends: @basename@-jre-headless (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Provides: icedtea6-jre-cacao Description: Alternative JVM for OpenJDK, using Cacao The package provides an alternative runtime using the Cacao VM and the diff -Nru openjdk-6-6b31-1.13.3/debian/control.in openjdk-6-6b38-1.13.10/debian/control.in --- openjdk-6-6b31-1.13.3/debian/control.in 2016-01-26 13:34:54.000000000 +0000 +++ openjdk-6-6b38-1.13.10/debian/control.in 2016-01-26 13:35:01.000000000 +0000 @@ -1,10 +1,11 @@ Source: @basename@ Section: java Priority: optional -Maintainer: OpenJDK Team +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: OpenJDK Team Uploaders: Torsten Werner , Matthias Klose , Damien Raude-Morvan Build-Depends: debhelper (>= 5), binutils-dev [armel armhf], m4, lsb-release, wget, zip, unzip, sharutils, gawk, cpio, pkg-config, procps, time, @bd_fastjar@ @bd_compress@ @bd_autotools@ @bd_ant@ @bd_cacao@ @bd_gcc@ @bd_bootstrap@ @bd_openjdk@ @bd_zero@ @bd_shark@ @bd_syslibs@ @bd_pulsejava@ @bd_nss@ @bd_systemtap@ @bd_mauve@ @bd_xvfb@ -Standards-Version: 3.9.5 +Standards-Version: 3.9.6 Homepage: http://openjdk.java.net/ Vcs-Bzr: http://bazaar.launchpad.net/~openjdk/openjdk/openjdk6 Vcs-Browser: https://code.launchpad.net/~openjdk/openjdk/openjdk6 @@ -13,7 +14,7 @@ Architecture: any Multi-Arch: same Pre-Depends: ${dpkg:Depends} -Depends: @basename@-jre (@op@ @pkg_version@), ${shlibs:Depends}, ${misc:Depends} +Depends: @basename@-jre (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Recommends: libxt-dev Suggests: @basename@-demo, @basename@-source, visualvm Provides: java-sdk, java2-sdk, java5-sdk, java6-sdk, java-compiler @@ -29,15 +30,15 @@ Architecture: any Multi-Arch: same Pre-Depends: ${dpkg:Depends}, ${multiarch:Depends} -Depends: @basename@-jre-lib (@op@ @pkg_sversion@), ${jredefault:Depends}, ${cacert:Depends}, ${tzdata:Depends}, ${jcommon:Depends}, ${dlopenhl:Depends}, ${shlibs:Depends}, ${misc:Depends} +Depends: @basename@-jre-lib (= ${source:Version}), ${jredefault:Depends}, ${cacert:Depends}, ${tzdata:Depends}, ${jcommon:Depends}, ${dlopenhl:Depends}, ${shlibs:Depends}, ${misc:Depends} Recommends: ${dlopenjl:Recommends}, ${cacao:Recommends}, ${jamvm:Recommends} Suggests: libnss-mdns, sun-java6-fonts, @core_fonts@, @cjk_fonts@ Provides: java-runtime-headless, java2-runtime-headless, java5-runtime-headless, java6-runtime-headless, ${defaultvm:Provides}, ${jvm:Provides} Replaces: @basename@-jre-lib (<< 6b23~pre10), @basename@-jre (<< 6b23~pre1), @basename@-jdk (<< 6b20-1.9.1-0ubuntu2) Conflicts: ${multiarch:Conflicts}, @basename@-jre-lib (<< 6b17~pre3-1), @basename@-jre (<< 6b17~pre3-1), @basename@-jdk (<< 6b17~pre3-1), @basename@-demo (<< 6b17~pre3-1), @basename@-source (<< 6b17~pre3-1), @basename@-doc (<< 6b17~pre3-1), @basename@-dbg (<< 6b17~pre3-1), @basename@-jre-zero (<< 6b17~pre3-1) Description: OpenJDK Java runtime, using ${vm:Name} (headless) - Minimal Java runtime - needed for executing non GUI Java programs. - Using ${vm:Name}. + Minimal Java runtime - needed for executing non GUI Java programs, + using ${vm:Name}. . The packages are built using the IcedTea build support and patches from the IcedTea project. @@ -46,7 +47,7 @@ Architecture: any Multi-Arch: same Pre-Depends: ${dpkg:Depends} -Depends: @basename@-jre-headless (@op@ @pkg_version@), ${xandsound:Depends}, ${shlibs:Depends}, ${dlopenjre:Depends}, ${misc:Depends}, ${dep:bridge} +Depends: @basename@-jre-headless (= ${binary:Version}), ${xandsound:Depends}, ${shlibs:Depends}, ${dlopenjre:Depends}, ${misc:Depends}, ${dep:bridge} Recommends: ${dlopenjre:Recommends}, @core_fonts@, icedtea-netx Suggests: icedtea-plugin, ${pkg:pulseaudio} Conflicts: icedtea-gcjwebplugin (<< 1.0-1ubuntu4), @basename@-jre-lib (<< 6b17~pre3-1), @basename@-jre-headless (<< 6b17~pre3-1), @basename@-jdk (<< 6b17~pre3-1), @basename@-demo (<< 6b17~pre3-1), @basename@-source (<< 6b17~pre3-1), @basename@-doc (<< 6b17~pre3-1), @basename@-dbg (<< 6b17~pre3-1), @basename@-jre-zero (<< 6b17~pre3-1) @@ -54,7 +55,7 @@ Provides: java-runtime, java2-runtime, java5-runtime, java6-runtime Description: OpenJDK Java runtime, using ${vm:Name} Full Java runtime environment - needed for executing Java GUI and Webstart - programs. Using ${vm:Name}. + programs, using ${vm:Name}. . The packages are built using the IcedTea build support and patches from the IcedTea project. @@ -78,7 +79,7 @@ Architecture: any Priority: extra Pre-Depends: ${dpkg:Depends} -Depends: @basename@-jre (@op@ @pkg_version@), ${shlibs:Depends}, ${misc:Depends} +Depends: @basename@-jre (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Conflicts: @basename@-jre-headless (<< 6b17~pre3-1), @basename@-jre (<< 6b17~pre3-1) Description: Java runtime based on OpenJDK (demos and examples) OpenJDK Java runtime @@ -90,7 +91,7 @@ Architecture: all Priority: extra Pre-Depends: ${dpkg:Depends} -Depends: @basename@-jre (>= @pkg_sversion@), @basename@-jdk (>= @pkg_version@), ${misc:Depends} +Depends: @basename@-jre (>= ${source:Version}), @basename@-jdk (>= ${binary:Version}), ${misc:Depends} Conflicts: @basename@-jre-headless (<< 6b17~pre3-1), @basename@-jre (<< 6b17~pre3-1) Description: OpenJDK Development Kit (JDK) source files OpenJDK is a development environment for building applications, @@ -125,9 +126,9 @@ Priority: extra Section: debug Pre-Depends: ${dpkg:Depends} -Depends: @basename@-jre-headless (= @pkg_version@), ${misc:Depends} -Recommends: @basename@-jre (= @pkg_version@) -Suggests: @basename@-jdk (= @pkg_version@) +Depends: @basename@-jre-headless (= ${binary:Version}), ${misc:Depends} +Recommends: @basename@-jre (= ${binary:Version}) +Suggests: @basename@-jdk (= ${binary:Version}) Conflicts: @basename@-jre-headless (<< 6b17~pre3-1), @basename@-jre (<< 6b17~pre3-1) Description: Java runtime based on OpenJDK (debugging symbols) OpenJDK is a development environment for building applications, diff -Nru openjdk-6-6b31-1.13.3/debian/control.jamvm-jre openjdk-6-6b38-1.13.10/debian/control.jamvm-jre --- openjdk-6-6b31-1.13.3/debian/control.jamvm-jre 2016-01-26 13:34:54.000000000 +0000 +++ openjdk-6-6b38-1.13.10/debian/control.jamvm-jre 2016-01-26 13:35:01.000000000 +0000 @@ -4,7 +4,7 @@ Multi-Arch: same Priority: extra Pre-Depends: ${dpkg:Depends} -Depends: @basename@-jre-headless (= @pkg_version@), ${shlibs:Depends}, ${misc:Depends} +Depends: @basename@-jre-headless (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Description: Alternative JVM for OpenJDK, using JamVM The package provides an alternative runtime using the JamVM. This is a somewhat faster alternative than the Zero port on architectures like armel, diff -Nru openjdk-6-6b31-1.13.3/debian/control.zero-jre openjdk-6-6b38-1.13.10/debian/control.zero-jre --- openjdk-6-6b31-1.13.3/debian/control.zero-jre 2016-01-26 13:34:54.000000000 +0000 +++ openjdk-6-6b38-1.13.10/debian/control.zero-jre 2016-01-26 13:35:01.000000000 +0000 @@ -4,7 +4,7 @@ Multi-Arch: same Priority: extra Pre-Depends: ${dpkg:Depends} -Depends: @basename@-jre-headless (= @pkg_version@), ${shlibs:Depends}, ${misc:Depends} +Depends: @basename@-jre-headless (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Provides: ${zerovm:Provides} Conflicts: @basename@-jre-headless (<< 6b17~pre3-1), @basename@-jre (<< 6b17~pre3-1) Description: Alternative JVM for OpenJDK, using Zero/Shark diff -Nru openjdk-6-6b31-1.13.3/debian/generate-debian-orig.sh openjdk-6-6b38-1.13.10/debian/generate-debian-orig.sh --- openjdk-6-6b31-1.13.3/debian/generate-debian-orig.sh 2016-01-26 13:34:54.000000000 +0000 +++ openjdk-6-6b38-1.13.10/debian/generate-debian-orig.sh 2016-01-26 13:35:01.000000000 +0000 @@ -1,17 +1,15 @@ -tarball=openjdk-6-src-b31-15_apr_2014.tar.xz -version=6b31-1.13.3 +tarball=openjdk-6-src-b38-20_jan_2016.tar.xz +version=6b38-1.13.10 hotspot=hotspot-hs20.tar.gz -cacaotb=cacao-0.99.4.tar.bz2 cacaotb=cacao-68fe50ac34ec.tar.gz -jamvmtb=jamvm-ec18fb9e49e62dce16c5094ef1527eed619463aa.tar.gz +jamvmtb=jamvm-2.0.0.tar.gz base=openjdk-6 pkgdir=$base-$version origtar=${base}_${version}.orig.tar.gz -tarballdir=6b31 +tarballdir=6b38 -icedtea_checkout=icedtea6-1.13 -icedtea_checkout=icedtea6-1.13.3 +icedtea_checkout=icedtea6-1.13.10 debian_checkout=openjdk6 if [ -d $pkgdir ]; then @@ -65,7 +63,7 @@ ( cd $pkgdir ls - patch -p1 < debian/patches/icedtea-patch.diff + patch -p1 < debian/icedtea-patch.diff sh autogen.sh rm -rf autom4te.cache ) diff -Nru openjdk-6-6b31-1.13.3/debian/icedtea-patch.diff openjdk-6-6b38-1.13.10/debian/icedtea-patch.diff --- openjdk-6-6b31-1.13.3/debian/icedtea-patch.diff 2016-01-26 13:34:54.000000000 +0000 +++ openjdk-6-6b38-1.13.10/debian/icedtea-patch.diff 2016-01-26 13:35:01.000000000 +0000 @@ -1,6 +1,54 @@ ---- openjdk-6-6b30-1.13.2.orig/Makefile.am -+++ openjdk-6-6b30-1.13.2/Makefile.am -@@ -2545,14 +2545,16 @@ +--- openjdk-6-6b36-1.13.8.orig/Makefile.am ++++ openjdk-6-6b36-1.13.8/Makefile.am +@@ -11,8 +11,8 @@ + CACAO_URL = $(CACAO_BASE_URL)/$(CACAO_VERSION).tar.gz + CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.gz + +-JAMVM_VERSION = ec18fb9e49e62dce16c5094ef1527eed619463aa +-JAMVM_SHA256SUM = 31810266666c23822942aac62a78019c2c4589e1c5ee48329cbf42652d4437bc ++JAMVM_VERSION = 2.0.0 ++JAMVM_SHA256SUM = 76428e96df0ae9dd964c7a7c74c1e9a837e2f312c39e9a357fa8178f7eff80da + JAMVM_BASE_URL = http://icedtea.classpath.org/download/drops/jamvm + JAMVM_URL = $(JAMVM_BASE_URL)/jamvm-$(JAMVM_VERSION).tar.gz + JAMVM_SRC_ZIP = jamvm-$(JAMVM_VERSION).tar.gz +@@ -676,7 +676,6 @@ + + if BUILD_JAMVM + ICEDTEA_PATCHES += \ +- patches/jamvm/pr2190-find_class_from_caller.patch \ + patches/jamvm/noexecstack.patch + endif + +@@ -714,6 +713,11 @@ + ICEDTEA_PATCHES += patches/rh1022017.patch + endif + ++if BUILD_JAMVM ++ICEDTEA_PATCHES += \ ++ patches/jamvm-2.5.3-fix.diff ++endif ++ + ICEDTEA_PATCHES += $(DISTRIBUTION_PATCHES) + + # Bootstrapping patches +@@ -839,6 +843,7 @@ + ALT_OUTPUTDIR="$(BUILD_OUTPUT_DIR)" \ + STATIC_CXX="false" \ + BUILD_GCC=gcc$(GCC_SUFFIX) \ ++ BUILD_CPP=g++$(GCC_SUFFIX) \ + BUILD_CXX=g++$(GCC_SUFFIX) \ + COMPILER_WARNINGS_FATAL="$(WERROR_STATUS)" \ + UNLIMITED_CRYPTO="true" +@@ -2414,7 +2419,7 @@ + stamps/jamvm.stamp: $(OPENJDK_TREE) stamps/rt.stamp + if BUILD_JAMVM + cd jamvm/jamvm && \ +- ./autogen.sh --with-java-runtime-library=openjdk6 \ ++ ./configure --with-java-runtime-library=openjdk6 \ + --prefix=$(abs_top_builddir)/jamvm/install ; \ + $(MAKE) ; \ + $(MAKE) install +@@ -2555,13 +2560,15 @@ ADD_ZERO_CONFIGURE_ARGS += \ --enable-shark endif @@ -13,18 +61,31 @@ - '--with-javac=% '--with-javac=% \ - '--with-rmic=% '--with-additional-vms=% \ - '--with-openjdk '--with-openjdk=% , \ -- $(CONFIGURE_ARGS)) \ -+ $(filter-out --with-jdk-home=% --with-ecj=% \ -+ --with-java=% --with-javah=% \ -+ --with-javac=% --with-javac=% \ -+ --with-rmic=% --with-additional-vms=% \ -+ --with-openjdk --with-openjdk=% , \ -+ $(subst $(quote),,$(CONFIGURE_ARGS))) \ ++ $(filter-out $(_quote)--with-jdk-home=% $(_quote)--with-ecj=% \ ++ $(_quote)--with-java=% $(_quote)--with-javah=% \ ++ $(_quote)--with-javac=% $(_quote)--with-javac=% \ ++ $(_quote)--with-rmic=% $(_quote)--with-additional-vms=% \ ++ $(_quote)--with-openjdk $(_quote)--with-openjdk=% , \ + $(CONFIGURE_ARGS)) \ $(if $(findstring --with-openjdk-src-zip=, $(CONFIGURE_ARGS)),, \ --with-openjdk-src-zip=$(abs_top_builddir)/$(OPENJDK_SRC_ZIP)) - if WITH_ALT_HSBUILD ---- openjdk-6-6b30-1.13.2.orig/autogen.sh -+++ openjdk-6-6b30-1.13.2/autogen.sh +--- openjdk-6-6b36-1.13.8.orig/acinclude.m4 ++++ openjdk-6-6b36-1.13.8/acinclude.m4 +@@ -22,6 +22,12 @@ + JRE_ARCH_DIR=alpha + CROSS_TARGET_ARCH=alpha + ;; ++ arm64|aarch64) ++ BUILD_ARCH_DIR=aarch64 ++ INSTALL_ARCH_DIR=aarch64 ++ JRE_ARCH_DIR=aarch64 ++ ARCHFLAG="-D_LITTLE_ENDIAN" ++ ;; + arm*) + BUILD_ARCH_DIR=arm + INSTALL_ARCH_DIR=arm +--- openjdk-6-6b36-1.13.8.orig/autogen.sh ++++ openjdk-6-6b36-1.13.8/autogen.sh @@ -101,7 +101,7 @@ HAVE_ACLOCAL=false @@ -43,38 +104,93 @@ if ${AUTOMAKE} --version > /dev/null 2>&1; then AUTOMAKE_VERSION=`${AUTOMAKE} --version | head -1 | sed 's/^[^0-9]*\([0-9.][0-9.]*\).*/\1/'` # echo ${AUTOMAKE_VERSION} ---- openjdk-6-6b30-1.13.2.orig/configure.ac -+++ openjdk-6-6b30-1.13.2/configure.ac +--- openjdk-6-6b36-1.13.8.orig/configure.ac ++++ openjdk-6-6b36-1.13.8/configure.ac @@ -4,6 +4,8 @@ AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) - AC_CONFIG_FILES([Makefile]) + AC_CONFIG_FILES([Makefile fsg.sh]) +AM_MAINTAINER_MODE + # Older automake doesn't generate these correctly abs_top_builddir=`pwd -P` AC_SUBST(abs_top_builddir) ---- openjdk-6-6b30-1.13.1.orig/acinclude.m4 -+++ openjdk-6-6b30-1.13.1/acinclude.m4 -@@ -22,6 +22,12 @@ - JRE_ARCH_DIR=alpha - CROSS_TARGET_ARCH=alpha - ;; -+ arm64|aarch64) -+ BUILD_ARCH_DIR=aarch64 -+ INSTALL_ARCH_DIR=aarch64 -+ JRE_ARCH_DIR=aarch64 -+ ARCHFLAG="-D_LITTLE_ENDIAN" -+ ;; - arm*) - BUILD_ARCH_DIR=arm - INSTALL_ARCH_DIR=arm -@@ -1553,7 +1559,7 @@ - AC_MSG_RESULT(${ENABLE_SYSTEM_LCMS}) - if test x"${ENABLE_SYSTEM_LCMS}" = "xyes"; then - dnl Check for LCMS2 headers and libraries. -- PKG_CHECK_MODULES(LCMS2, lcms2 >= 2.5,[LCMS2_FOUND=yes],[LCMS2_FOUND=no]) -+ PKG_CHECK_MODULES(LCMS2, lcms2,[LCMS2_FOUND=yes],[LCMS2_FOUND=no]) - if test "x${LCMS2_FOUND}" = xno - then - AC_MSG_ERROR([Could not find LCMS >= 2.5; install it or build with --disable-system-lcms to use the in-tree copy.]) +--- openjdk-6-6b36-1.13.8.orig/patches/jamvm-2.5.3-fix.diff ++++ openjdk-6-6b36-1.13.8/patches/jamvm-2.5.3-fix.diff +@@ -0,0 +1,76 @@ ++--- jamvm/jamvm/src/classlib/openjdk/jvm.c +++++ jamvm/jamvm/src/classlib/openjdk/jvm.c ++@@ -517,6 +517,48 @@ jclass JVM_FindClassFromBootLoader(JNIEnv *env, const char *name) { ++ } ++ ++ +++/* JVM_FindClassFromCaller +++ * Find a class from a given class loader. Throws ClassNotFoundException. +++ * name: name of class +++ * init: whether initialization is done +++ * loader: class loader to look up the class. +++ * This may not be the same as the caller's class loader. +++ * caller: initiating class. The initiating class may be null when a security +++ * manager is not installed. +++ * +++ * Find a class with this name in this loader, +++ * using the caller's "protection domain". +++ */ +++ +++jclass JVM_FindClassFromCaller(JNIEnv *env, const char *name, +++ jboolean init, jobject loader, +++ jclass caller) { +++ Class *class; +++ +++ TRACE("JVM_FindClassFromCaller(env=%p, name=%s, init=%d, loader=%p," +++ " caller=%p)", env, name, init, loader, caller); +++ +++ /* XXX The caller's protection domain should be used during +++ the findClassFromClassLoader but there is no specification or +++ unit-test in OpenJDK documenting the desired effect */ +++ +++ class = findClassFromClassLoader((char *)name, loader); +++ +++ if(class == NULL) { +++ Object *excep = exceptionOccurred(); +++ char *dot_name = slash2DotsDup((char*)name); +++ +++ clearException(); +++ signalChainedException(java_lang_ClassNotFoundException, +++ dot_name, excep); +++ sysFree(dot_name); +++ } else if(init) +++ initClass(class); +++ +++ return class; +++} +++ +++ ++ /* JVM_FindClassFromClassLoader */ ++ ++ jclass JVM_FindClassFromClassLoader(JNIEnv *env, const char *name, ++@@ -2965,6 +3007,24 @@ void JVM_GetVersionInfo(JNIEnv *env, jvm_version_info *info, size_t info_size) { ++ } ++ ++ +++/* JVM_GetTemporaryDirectory +++ * Return the temporary directory that the VM uses for the attach +++ * and perf data files. +++ * +++ * It is important that this directory is well-known and the +++ * same for all VM instances. It cannot be affected by configuration +++ * variables such as java.io.tmpdir. +++ * +++ * JamVM do not support the jvmstat framework thus this is left unimplemented. +++ */ +++ +++jstring JVM_GetTemporaryDirectory(JNIEnv *env) { +++ UNIMPLEMENTED("JVM_GetTemporaryDirectory"); +++ +++ return 0; +++} +++ +++ ++ /* JVM_RegisterSignal */ ++ ++ extern void signalHandler(int sig); diff -Nru openjdk-6-6b31-1.13.3/debian/patches/8017173.diff openjdk-6-6b38-1.13.10/debian/patches/8017173.diff --- openjdk-6-6b31-1.13.3/debian/patches/8017173.diff 2016-01-26 13:34:54.000000000 +0000 +++ openjdk-6-6b38-1.13.10/debian/patches/8017173.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ - -# HG changeset patch -# User mullan -# Date 1373562821 14400 -# Node ID c5d869453212ac971258f818de8b158dc22b6e8c -# Parent 3119569301137347116bc045e4010f477bbc7a72 -8017173: XMLCipher with RSA_OAEP Key Transport algorithm can't be instantiated -Reviewed-by: xuelei, vinnie - ---- openjdk/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java Thu Jul 11 12:41:19 2013 +0400 -+++ openjdk/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.java Thu Jul 11 13:13:41 2013 -0400 -@@ -160,7 +160,7 @@ public class JCEMapper { - ); - algorithmsMap.put( - XMLCipher.RSA_OAEP, -- new Algorithm("RSA", "RSA/ECB/OAEPPadding", "KeyTransport") -+ new Algorithm("RSA", "RSA/ECB/OAEPWithSHA1AndMGF1Padding", "KeyTransport") - ); - algorithmsMap.put( - XMLCipher.DIFFIE_HELLMAN, ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ openjdk/jdk/test/com/sun/org/apache/xml/internal/security/encryption/XMLCipher/GetInstance.java Thu Jul 11 13:13:41 2013 -0400 -@@ -0,0 +1,44 @@ -+/* -+ * 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 8017173 -+ * @summary Check that an XMLCipher with RSA_OAEP Key Transport algorithm can -+ * be instantiated -+ * @compile -XDignore.symbol.file GetInstance.java -+ * @run main GetInstance -+ */ -+import com.sun.org.apache.xml.internal.security.Init; -+import com.sun.org.apache.xml.internal.security.encryption.XMLCipher; -+ -+public class GetInstance { -+ -+ private static final String RSA_OAEP = -+ "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"; -+ -+ public static void main(String[] args) throws Exception { -+ Init.init(); -+ XMLCipher.getInstance(RSA_OAEP); -+ } -+} - diff -Nru openjdk-6-6b31-1.13.3/debian/patches/deb-multiarch-original.diff openjdk-6-6b38-1.13.10/debian/patches/deb-multiarch-original.diff --- openjdk-6-6b31-1.13.3/debian/patches/deb-multiarch-original.diff 2016-01-26 13:34:54.000000000 +0000 +++ openjdk-6-6b38-1.13.10/debian/patches/deb-multiarch-original.diff 2016-01-26 13:35:01.000000000 +0000 @@ -6,7 +6,7 @@ +DEB_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true) +ifneq (,$(DEB_MULTIARCH)) -+CPPFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\"" ++CXXFLAGS += -DDEB_MULTIARCH="\"$(DEB_MULTIARCH)\"" +endif + # CFLAGS_WARN holds compiler options to suppress/enable warnings. diff -Nru openjdk-6-6b31-1.13.3/debian/patches/enumipv6-fix.patch openjdk-6-6b38-1.13.10/debian/patches/enumipv6-fix.patch --- openjdk-6-6b31-1.13.3/debian/patches/enumipv6-fix.patch 2016-01-26 13:34:54.000000000 +0000 +++ openjdk-6-6b38-1.13.10/debian/patches/enumipv6-fix.patch 2016-01-26 13:35:01.000000000 +0000 @@ -1,12 +1,11 @@ -diff -ru openjdk-orig/jdk/src/solaris/native/java/net/NetworkInterface.c openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c ---- openjdk.orig/jdk/src/solaris/native/java/net/NetworkInterface.c 2011-07-05 14:36:10.000000000 -0400 -+++ openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c 2012-02-01 11:54:32.000000000 -0500 -@@ -811,7 +811,7 @@ +--- openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c ++++ openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c +@@ -1099,7 +1099,7 @@ uint8_t ipv6addr[16]; if ((f = fopen(_PATH_PROCNET_IFINET6, "r")) != NULL) { - while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %02x %02x %02x %20s\n", + while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %x %x %x %x %20s\n", - addr6p[0], addr6p[1], addr6p[2], addr6p[3], - addr6p[4], addr6p[5], addr6p[6], addr6p[7], - &if_idx, &plen, &scope, &dad_status, devname) != EOF) { + addr6p[0], addr6p[1], addr6p[2], addr6p[3], addr6p[4], addr6p[5], addr6p[6], addr6p[7], + &if_idx, &plen, &scope, &dad_status, devname) != EOF) { + diff -Nru openjdk-6-6b31-1.13.3/debian/patches/fontconfig-dejavu.diff openjdk-6-6b38-1.13.10/debian/patches/fontconfig-dejavu.diff --- openjdk-6-6b31-1.13.3/debian/patches/fontconfig-dejavu.diff 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-6-6b38-1.13.10/debian/patches/fontconfig-dejavu.diff 2016-01-26 13:35:01.000000000 +0000 @@ -0,0 +1,46 @@ +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties +@@ -26,7 +26,7 @@ + + # Version + +-# Uses Ubuntu 8.04 (hardy), Debian 6.0 (Squeeze) (and more recent releases) fonts and file paths. ++# Uses Ubuntu 14.04 (trusty), Debian 8.0 (jessie) (and more recent releases) fonts and file paths. + version=1 + + # Component Font Mappings +@@ -219,20 +219,20 @@ + + # Font File Names + +-filename.DejaVu_Sans=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf +-filename.DejaVu_Sans_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf +-filename.DejaVu_Sans_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf +-filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf +- +-filename.DejaVu_Sans_Mono=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf +-filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf +-filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf +-filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf +- +-filename.DejaVu_Serif=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf +-filename.DejaVu_Serif_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Bold.ttf +-filename.DejaVu_Serif_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Oblique.ttf +-filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-BoldOblique.ttf ++filename.DejaVu_Sans=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf ++filename.DejaVu_Sans_Bold=/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf ++filename.DejaVu_Sans_Oblique=/usr/share/fonts/truetype/dejavu/DejaVuSans-Oblique.ttf ++filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/truetype/dejavu/DejaVuSans-BoldOblique.ttf ++ ++filename.DejaVu_Sans_Mono=/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf ++filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf ++filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Oblique.ttf ++filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/truetype/dejavu/DejaVuSansMono-BoldOblique.ttf ++ ++filename.DejaVu_Serif=/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf ++filename.DejaVu_Serif_Bold=/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf ++filename.DejaVu_Serif_Oblique=/usr/share/fonts/truetype/dejavu/DejaVuSerif-Oblique.ttf ++filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/truetype/dejavu/DejaVuSerif-BoldOblique.ttf + + filename.AR_PL_UMing_CN=/usr/share/fonts/truetype/arphic/uming.ttc + filename.AR_PL_UMing_HK=/usr/share/fonts/truetype/arphic/uming.ttc diff -Nru openjdk-6-6b31-1.13.3/debian/patches/jdk-freetypeScaler-crash.diff openjdk-6-6b38-1.13.10/debian/patches/jdk-freetypeScaler-crash.diff --- openjdk-6-6b31-1.13.3/debian/patches/jdk-freetypeScaler-crash.diff 2016-01-26 13:34:54.000000000 +0000 +++ openjdk-6-6b38-1.13.10/debian/patches/jdk-freetypeScaler-crash.diff 2016-01-26 13:35:01.000000000 +0000 @@ -24,23 +24,21 @@ Reviewed-by: Contributed-by: yamauchi@google.com -diff --git a/make/sun/font/mapfile-vers.openjdk b/jdk/make/sun/font/mapfile-vers.openjdk ---- openjdk/jdk/make/sun/font/mapfile-vers.openjdk -+++ openjdk/jdk/make/sun/font/mapfile-vers.openjdk +--- openjdk/jdk/make/sun/font/mapfile-vers.openjdk.orig 2015-07-20 18:21:50.000000000 +0200 ++++ openjdk/jdk/make/sun/font/mapfile-vers.openjdk 2015-08-01 11:29:26.256353069 +0200 @@ -29,6 +29,7 @@ - + SUNWprivate_1.1 { global: + JNI_OnLoad; getSunFontIDs; - newLayoutTableCache; + newLayoutTableCache; freeLayoutTableCache; -diff --git a/src/share/native/sun/font/freetypeScaler.c b/src/share/native/sun/font/freetypeScaler.c ---- openjdk/jdk/src/share/native/sun/font/freetypeScaler.c -+++ openjdk/jdk/src/share/native/sun/font/freetypeScaler.c +--- openjdk/jdk/src/share/native/sun/font/freetypeScaler.c.orig 2015-08-01 11:26:23.861296787 +0200 ++++ openjdk/jdk/src/share/native/sun/font/freetypeScaler.c 2015-08-01 11:29:26.260353136 +0200 @@ -48,16 +48,6 @@ #define ROUND(x) ((int) (x+0.5)) - + typedef struct { - /* Important note: - JNI forbids sharing same env between different threads. @@ -58,7 +56,7 @@ @@ -90,6 +80,13 @@ void z_error(char *s) {} #endif - + +static JavaVM* jvm = NULL; + +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { @@ -67,32 +65,20 @@ +} + /**************** Error handling utilities *****************/ - + static jmethodID invalidateScalerMID; -@@ -107,6 +104,10 @@ - +@@ -120,6 +117,10 @@ FT_Done_Face(scalerInfo->face); FT_Done_FreeType(scalerInfo->library); -+ + + if (scalerInfo->font2D != NULL) { + (*env)->DeleteGlobalRef(env, scalerInfo->font2D); + } - ++ if (scalerInfo->directBuffer != NULL) { (*env)->DeleteGlobalRef(env, scalerInfo->directBuffer); -@@ -131,10 +132,9 @@ - - #define FILEDATACACHESIZE 1024 - --/* NB: is it ever called? */ - static void CloseTTFontFileFunc(FT_Stream stream) { -+ JNIEnv* env = (JNIEnv*) JNU_GetEnv(jvm, JNI_VERSION_1_2); - FTScalerInfo *scalerInfo = (FTScalerInfo *) stream->pathname.pointer; -- JNIEnv* env = scalerInfo->env; - jclass tmpClass = (*env)->FindClass(env, "sun/font/TrueTypeFont"); - jfieldID platNameField = - (*env)->GetFieldID(env, tmpClass, "platName", "Ljava/lang/String;"); -@@ -150,8 +150,8 @@ + } +@@ -152,8 +153,8 @@ unsigned char* destBuffer, unsigned long numBytes) { @@ -101,18 +87,18 @@ - JNIEnv* env = scalerInfo->env; jobject bBuffer; int bread = 0; - -@@ -245,8 +245,7 @@ + +@@ -230,8 +231,7 @@ if (scalerInfo == NULL) return 0; - + - scalerInfo->env = env; - scalerInfo->font2D = font2D; + scalerInfo->font2D = (*env)->NewGlobalRef(env, font2D); scalerInfo->fontDataOffset = 0; scalerInfo->fontDataLength = 0; scalerInfo->fileSize = filesize; -@@ -263,6 +262,7 @@ +@@ -248,6 +248,7 @@ */ error = FT_Init_FreeType(&scalerInfo->library); if (error) { @@ -120,7 +106,7 @@ free(scalerInfo); return 0; } -@@ -331,6 +331,7 @@ +@@ -316,6 +317,7 @@ } if (scalerInfo->fontData != NULL) free(scalerInfo->fontData); @@ -128,15 +114,16 @@ free(scalerInfo); return 0; } -@@ -391,8 +392,10 @@ +@@ -376,8 +378,10 @@ FTScalerContext *context) { int errCode = 0; - + - scalerInfo->env = env; - scalerInfo->font2D = font2D; + if (scalerInfo->font2D != NULL) { + (*env)->DeleteGlobalRef(env, scalerInfo->font2D); + } + scalerInfo->font2D = (*env)->NewGlobalRef(env, font2D); - - FT_Set_Transform(scalerInfo->face, &context->transform, NULL); + + if (context != NULL) { + FT_Set_Transform(scalerInfo->face, &context->transform, NULL); diff -Nru openjdk-6-6b31-1.13.3/debian/rules openjdk-6-6b38-1.13.10/debian/rules --- openjdk-6-6b31-1.13.3/debian/rules 2016-01-26 13:34:54.000000000 +0000 +++ openjdk-6-6b38-1.13.10/debian/rules 2016-01-26 13:35:01.000000000 +0000 @@ -188,8 +188,8 @@ $(error unknown bootstrap method for architecture $(DEB_HOST_ARCH)) endif -OPENJDK_VERSION = b31 -OPENJDK_SRC_ZIP = openjdk-6-src-$(OPENJDK_VERSION)-15_apr_2014.tar.xz +OPENJDK_VERSION = b38 +OPENJDK_SRC_ZIP = openjdk-6-src-$(OPENJDK_VERSION)-20_jan_2016.tar.xz # the version of the build dependency for non-bootstrap builds; only adjust if # the package is installable on all these architectures. req_openjdk_bd_ver = 6b27 @@ -240,9 +240,12 @@ else ifneq (,$(filter $(distrel),precise)) export GCC_SUFFIX = -4.6 export GCJ_SUFFIX = -4.6 -else +else ifneq (,$(filter $(distrel),saucy trusty)) export GCC_SUFFIX = -4.8 export GCJ_SUFFIX = -4.8 +else + export GCC_SUFFIX = -4.9 + export GCJ_SUFFIX = -4.9 endif ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf)) @@ -362,6 +365,11 @@ debian/patches/m68k-text-relocations.diff \ debian/patches/add-zero-ports.diff \ +ifneq (,$(filter $(distrel),squeeze wheezy lucid maverick natty oneiric precise quantal raring)) + DISTRIBUTION_PATCHES += \ + debian/patches/fontconfig-dejavu.diff +endif + ifneq (,$(filter $(DEB_HOST_ARCH), sparc sparc64)) export COMPILER_WARNINGS_FATAL = false endif @@ -437,9 +445,6 @@ debian/patches/alpha-float-const.diff endif -DISTRIBUTION_PATCHES += \ - debian/patches/8017173.diff - export DISTRIBUTION_PATCHES DISTRIBUTION_ECJ_PATCHES ifeq ($(STAGE1_JAVA),gcj) @@ -656,14 +661,18 @@ bd_gcc = g++-4.6, else ifneq (,$(filter $(distrel),wheezy quantal raring)) bd_gcc = g++-4.7, -else +else ifneq (,$(filter $(distrel),saucy trusty)) bd_gcc = g++-4.8, +else + bd_gcc = g++-4.9, endif bd_syslibs = zlib1g-dev, ifneq (,$(filter $(distrel),lenny squeeze oneiric natty maverick lucid karmic jaunty intrepid hardy gutsy feisty edgy dapper)) bd_syslibs += libpng12-dev, libjpeg62-dev, -else +else ifneq (,$(filter $(distrel),wheezy precise quantal raring saucy)) bd_syslibs += libpng-dev, libjpeg8-dev, +else + bd_syslibs += libpng-dev, libjpeg-dev, endif bd_syslibs += \ libgif-dev$(if $(filter $(distrel),etch dapper edgy feisty gutsy), | libungif4-dev), @@ -743,12 +752,12 @@ bd_pulsejava = libpulse-dev (>= 0.9.12), endif ifeq ($(with_nss),yes) - ifneq (,$(filter $(distrel),lenny squeeze natty maverick lucid karmic hardy dapper)) - bd_nss = libnss3-dev (>= 3.12.3), - else ifneq (,$(filter $(distrel),squeeze wheezy sid)) + ifneq (,$(filter $(distrel),lenny squeeze precise oneiric natty maverick lucid karmic hardy dapper)) bd_nss = libnss3-dev (>= 3.12.3), + else ifneq (,$(filter $(distrel),wheezy quantal raring saucy trusty)) + bd_nss = libnss3-dev (>= 2:3.12.3), else - bd_nss = libnss3-dev (>= 3.12.9+ckbi-1.82-0ubuntu4), + bd_nss = libnss3-dev (>= 2:3.17.1), endif endif ifeq ($(with_systemtap),yes) @@ -757,14 +766,22 @@ dlopen_hl_depends = \ $(if $(filter $(distrel), etch dapper edgy gutsy hardy),libcupsys2,libcups2), \ - liblcms$(if $(filter 1,$(lcms_version)),1,2-2), \ - $(if $(findstring jpeg8, $(bd_syslibs)),libjpeg8,libjpeg62) -ifneq (,$(filter $(distrel),lenny squeeze natty maverick lucid karmic hardy dapper)) - dlopen_hl_depends += , libnss3-1d (>= 3.12.3) -else ifneq (,$(filter $(distrel),squeeze wheezy sid)) + liblcms$(if $(filter 1,$(lcms_version)),1,2-2), +ifneq (,$(filter $(distrel),lenny squeeze oneiric natty maverick lucid karmic jaunty intrepid hardy gutsy feisty edgy dapper)) + dlopen_hl_depends += libjpeg62, +else ifneq (,$(filter $(distrel),wheezy precise quantal raring saucy)) + dlopen_hl_depends += libjpeg8, +else ifneq (,$(filter $(distrel), jessie sid)) + dlopen_hl_depends += libjpeg62-turbo, +else + dlopen_hl_depends += libjpeg8, +endif +ifneq (,$(filter $(distrel),lenny squeeze precise oneiric natty maverick lucid karmic hardy dapper)) dlopen_hl_depends += , libnss3-1d (>= 3.12.3) +else ifneq (,$(filter $(distrel),wheezy quantal raring saucy trusty)) + dlopen_hl_depends += , libnss3 (>= 2:3.12.3) else - dlopen_hl_depends += , libnss3-1d (>= 3.12.9+ckbi-1.82-0ubuntu4) + dlopen_hl_depends += , libnss3 (>= 2:3.17.1) endif dlopen_hl_depends += , libpcsclite1 dlopen_hl_recommends = \ @@ -804,11 +821,13 @@ bd_openjdk += fonts-ipafont-mincho, endif cjk_fonts += $(if $(with_wgy_zenhai),ttf-wqy-microhei | ttf-wqy-zenhei,ttf-arphic-uming), -ifneq (,$(filter $(distrel),lenny squeeze wheezy sid experimental)) +ifneq (,$(filter $(distrel),lenny squeeze wheezy)) cjk_fonts += ttf-indic-fonts, -else +else ifneq (,$(filter $(distrel), lucid maverick natty oneiric precise quantal raring saucy trusty)) cjk_fonts += ttf-indic-fonts-core, ttf-telugu-fonts, ttf-oriya-fonts, cjk_fonts += ttf-kannada-fonts, ttf-bengali-fonts, +else + cjk_fonts += fonts-indic, endif p_jre = $(basename)-jre @@ -944,9 +963,6 @@ -e 's/@jamvm_archs@/$(jamvm_archs)/g' \ -e 's/@hotspot_archs@/$(hotspot_archs)/g' \ -e 's/@altzero_archs@/$(altzero_archs)/g' \ - -e 's,@pkg_version@,$(if $(filter $(distrel),etch dapper edgy feisty gutsy),$${Source-Version},$${binary:Version}),g' \ - -e 's,@pkg_sversion@,$(if $(filter $(distrel),etch dapper edgy feisty gutsy),$${Source-Version},$${source:Version}),g' \ - -e 's/@op@/$(if $(filter Debian,$(distribution)),=,>=)/g' \ -e 's/@lib_arch@/$(p_lib_arch)/g' \ debian/control.in \ $(if $(cacao_archs), debian/control.cacao-jre) \ @@ -1007,7 +1023,7 @@ -cat /etc/hosts mkdir -p bin -ifeq (,$(filter $(DEB_HOST_ARCH), alpha amd64 arm64 hppa ppc64 ppc64el s390x sparc64 x32)) +ifeq (,$(filter $(DEB_HOST_ARCH), alpha amd64 arm64 hppa mips64 mips64el ppc64 ppc64el s390x sparc64 x32)) ( \ echo '#! /bin/sh'; \ echo 'if [ -x /usr/bin/linux32 ]; then'; \ @@ -1551,7 +1567,6 @@ : # remove empty directories rmdir $(d)/$(basedir)/jre/lib/management rmdir $(d)/$(basedir)/jre/lib/applet - rmdir $(d)/$(basedir)/jre/lib/security : # TODO: why do we provide a custom font.properties.ja? : # cp -p debian/font.properties.ja $(d_jbin)/$(etcdir)/. @@ -1567,6 +1582,7 @@ echo 'etc'; \ echo '$(basedir)/jre/lib/jexec'; \ echo '$(basedir)/jre/lib/rt.jar'; \ + echo '$(basedir)/jre/lib/security/*_policy.jar'; \ echo '$(basedir)/jre/man/ja'; \ echo '$(basedir)/man/ja'; \ echo '$(basedir)/bin/java-rmi.cgi'; \ diff -Nru openjdk-6-6b31-1.13.3/fsg.sh openjdk-6-6b38-1.13.10/fsg.sh --- openjdk-6-6b31-1.13.3/fsg.sh 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/fsg.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -#!/bin/sh - -echo "Further liberating OpenJDK..." - -# PRx denotes bug x in the IcedTea bug database (http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=x) -# Sx denotes bug x in the Sun bug database (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=x) - -# PR146/S6713083 -# Remove binaries -rm -f \ - openjdk/jdk/test/sun/management/windows/revokeall.exe \ - openjdk/jdk/test/sun/management/jmxremote/bootstrap/linux-i586/launcher \ - openjdk/jdk/test/sun/management/jmxremote/bootstrap/solaris-sparc/launcher \ - openjdk/jdk/test/sun/management/jmxremote/bootstrap/solaris-i586/launcher - -rm -f \ - openjdk/jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/lib/linux-i586/libLauncher.so \ - openjdk/jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/lib/solaris-i586/libLauncher.so \ - openjdk/jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/lib/solaris-sparc/libLauncher.so \ - openjdk/jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/lib/solaris-sparcv9/libLauncher.so \ - openjdk/jdk/test/tools/launcher/lib/i386/lib32/lib32/liblibrary.so \ - openjdk/jdk/test/tools/launcher/lib/i386/lib32/liblibrary.so \ - openjdk/jdk/test/tools/launcher/lib/sparc/lib32/lib32/liblibrary.so \ - openjdk/jdk/test/tools/launcher/lib/sparc/lib32/liblibrary.so \ - openjdk/jdk/test/tools/launcher/lib/sparc/lib64/lib64/liblibrary.so \ - openjdk/jdk/test/tools/launcher/lib/sparc/lib64/liblibrary.so - -rm -f \ - openjdk/jdk/test/java/util/Locale/data/deflocale.exe \ - openjdk/jdk/test/java/util/Locale/data/deflocale.jds3 \ - openjdk/jdk/test/java/util/Locale/data/deflocale.rhel4 \ - openjdk/jdk/test/java/util/Locale/data/deflocale.sh \ - openjdk/jdk/test/java/util/Locale/data/deflocale.sol10 \ - openjdk/jdk/test/java/util/Locale/data/deflocale.winvista \ - openjdk/jdk/test/java/util/Locale/data/deflocale.winxp \ - -# Remove test sources with questionable license headers. -rm -f \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource3.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_IE.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4165815Test.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4177489_Resource_jf.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_CA.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Getter.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4177489Test.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource2.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_US.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4083270Test.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4177489_Resource.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Test.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource2_en_US.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Class.java \ - openjdk/jdk/test/java/util/Locale/Bug4175998Test.java \ - openjdk/jdk/test/java/util/ResourceBundle/RBTestFmwk.java \ - openjdk/jdk/test/java/util/ResourceBundle/TestResource_fr.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4179766Resource.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4179766Getter.java \ - openjdk/jdk/test/java/util/ResourceBundle/Bug4179766Class.java \ - openjdk/jdk/test/java/util/ResourceBundle/TestResource.java \ - openjdk/jdk/test/java/util/ResourceBundle/FakeTestResource.java \ - openjdk/jdk/test/java/util/ResourceBundle/TestResource_de.java \ - openjdk/jdk/test/java/util/ResourceBundle/TestBug4179766.java \ - openjdk/jdk/test/java/util/ResourceBundle/TestResource_fr_CH.java \ - openjdk/jdk/test/java/util/ResourceBundle/ResourceBundleTest.java \ - openjdk/jdk/test/java/util/ResourceBundle/TestResource_it.java \ - openjdk/jdk/test/java/util/Locale/PrintDefaultLocale.java \ - openjdk/jdk/test/java/util/Locale/LocaleTest.java \ - openjdk/jdk/test/java/util/Locale/LocaleTestFmwk.java \ - openjdk/jdk/test/java/util/Locale/Bug4184873Test.java \ - openjdk/jdk/test/sun/text/resources/LocaleDataTest.java - -# Remove J2DBench sources, some of which have questionable license -# headers. -rm -rf \ - openjdk/jdk/src/share/demo/java2d/J2DBench - -# BEGIN Debian/Ubuntu additions - -# binary files -rm -f \ - openjdk/jdk/test/sun/net/idn/*.spp - -# END Debian/Ubuntu additions - -# Remove man page for proprietary javaws -rm -f openjdk/jdk/src/linux/doc/man/javaws.1 \ - openjdk/jdk/src/linux/doc/man/ja/javaws.1 \ - openjdk/jdk/src/solaris/doc/sun/man/man1/javaws.1 \ - openjdk/jdk/src/solaris/doc/sun/man/man1/ja/javaws.1 diff -Nru openjdk-6-6b31-1.13.3/fsg.sh.in openjdk-6-6b38-1.13.10/fsg.sh.in --- openjdk-6-6b31-1.13.3/fsg.sh.in 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-6-6b38-1.13.10/fsg.sh.in 2016-01-21 02:42:37.000000000 +0000 @@ -0,0 +1,96 @@ +#!/bin/sh + +echo "Further liberating OpenJDK..." + +# PRx denotes bug x in the IcedTea bug database (http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=x) +# Sx denotes bug x in the Sun bug database (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=x) + +# PR146/S6713083 +# Remove binaries +rm -f \ + openjdk/jdk/test/sun/management/windows/revokeall.exe \ + openjdk/jdk/test/sun/management/jmxremote/bootstrap/linux-i586/launcher \ + openjdk/jdk/test/sun/management/jmxremote/bootstrap/solaris-sparc/launcher \ + openjdk/jdk/test/sun/management/jmxremote/bootstrap/solaris-i586/launcher + +rm -f \ + openjdk/jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/lib/linux-i586/libLauncher.so \ + openjdk/jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/lib/solaris-i586/libLauncher.so \ + openjdk/jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/lib/solaris-sparc/libLauncher.so \ + openjdk/jdk/test/java/nio/channels/spi/SelectorProvider/inheritedChannel/lib/solaris-sparcv9/libLauncher.so \ + openjdk/jdk/test/tools/launcher/lib/i386/lib32/lib32/liblibrary.so \ + openjdk/jdk/test/tools/launcher/lib/i386/lib32/liblibrary.so \ + openjdk/jdk/test/tools/launcher/lib/sparc/lib32/lib32/liblibrary.so \ + openjdk/jdk/test/tools/launcher/lib/sparc/lib32/liblibrary.so \ + openjdk/jdk/test/tools/launcher/lib/sparc/lib64/lib64/liblibrary.so \ + openjdk/jdk/test/tools/launcher/lib/sparc/lib64/liblibrary.so + +rm -f \ + openjdk/jdk/test/java/util/Locale/data/deflocale.exe \ + openjdk/jdk/test/java/util/Locale/data/deflocale.jds3 \ + openjdk/jdk/test/java/util/Locale/data/deflocale.rhel4 \ + openjdk/jdk/test/java/util/Locale/data/deflocale.sh \ + openjdk/jdk/test/java/util/Locale/data/deflocale.sol10 \ + openjdk/jdk/test/java/util/Locale/data/deflocale.winvista \ + openjdk/jdk/test/java/util/Locale/data/deflocale.winxp \ + +# Remove test sources with questionable license headers. +rm -f \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource3.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_IE.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4165815Test.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4177489_Resource_jf.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_CA.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Getter.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4177489Test.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource2.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en_US.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4083270Test.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource3_en.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4177489_Resource.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Test.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Resource2_en_US.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4168625Class.java \ + openjdk/jdk/test/java/util/Locale/Bug4175998Test.java \ + openjdk/jdk/test/java/util/ResourceBundle/RBTestFmwk.java \ + openjdk/jdk/test/java/util/ResourceBundle/TestResource_fr.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4179766Resource.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4179766Getter.java \ + openjdk/jdk/test/java/util/ResourceBundle/Bug4179766Class.java \ + openjdk/jdk/test/java/util/ResourceBundle/TestResource.java \ + openjdk/jdk/test/java/util/ResourceBundle/FakeTestResource.java \ + openjdk/jdk/test/java/util/ResourceBundle/TestResource_de.java \ + openjdk/jdk/test/java/util/ResourceBundle/TestBug4179766.java \ + openjdk/jdk/test/java/util/ResourceBundle/TestResource_fr_CH.java \ + openjdk/jdk/test/java/util/ResourceBundle/ResourceBundleTest.java \ + openjdk/jdk/test/java/util/ResourceBundle/TestResource_it.java \ + openjdk/jdk/test/java/util/Locale/PrintDefaultLocale.java \ + openjdk/jdk/test/java/util/Locale/LocaleTest.java \ + openjdk/jdk/test/java/util/Locale/LocaleTestFmwk.java \ + openjdk/jdk/test/java/util/Locale/Bug4184873Test.java \ + openjdk/jdk/test/sun/text/resources/LocaleDataTest.java + +# Remove J2DBench sources, some of which have questionable license +# headers. +rm -rf \ + openjdk/jdk/src/share/demo/java2d/J2DBench + +# BEGIN Debian/Ubuntu additions + +# binary files +rm -f \ + openjdk/jdk/test/sun/net/idn/*.spp + +# END Debian/Ubuntu additions + +# Remove man page for proprietary javaws +rm -f openjdk/jdk/src/linux/doc/man/javaws.1 \ + openjdk/jdk/src/linux/doc/man/ja/javaws.1 \ + openjdk/jdk/src/solaris/doc/sun/man/man1/javaws.1 \ + openjdk/jdk/src/solaris/doc/sun/man/man1/ja/javaws.1 + +if test "x@ENABLE_NON_NSS_CURVES@" = "xno"; then + echo "Syncing EC list with NSS" + patch -Np0 < @abs_top_srcdir@/patches/pr2125.patch +fi diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/BufferOverflowException.java openjdk-6-6b38-1.13.10/generated/java/nio/BufferOverflowException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/BufferOverflowException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/BufferOverflowException.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/BufferUnderflowException.java openjdk-6-6b38-1.13.10/generated/java/nio/BufferUnderflowException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/BufferUnderflowException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/BufferUnderflowException.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsCharBufferB.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsCharBufferB.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsCharBufferB.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsCharBufferB.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -150,6 +150,7 @@ sb.compact(); position(rem); limit(capacity()); + discardMark(); return this; diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsCharBufferL.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsCharBufferL.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsCharBufferL.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsCharBufferL.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -150,6 +150,7 @@ sb.compact(); position(rem); limit(capacity()); + discardMark(); return this; diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsCharBufferRB.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsCharBufferRB.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsCharBufferRB.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsCharBufferRB.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -139,6 +139,7 @@ + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsCharBufferRL.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsCharBufferRL.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsCharBufferRL.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsCharBufferRL.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -139,6 +139,7 @@ + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsDoubleBufferB.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsDoubleBufferB.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsDoubleBufferB.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsDoubleBufferB.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -150,6 +150,7 @@ sb.compact(); position(rem); limit(capacity()); + discardMark(); return this; diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsDoubleBufferL.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsDoubleBufferL.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsDoubleBufferL.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsDoubleBufferL.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -150,6 +150,7 @@ sb.compact(); position(rem); limit(capacity()); + discardMark(); return this; diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsDoubleBufferRB.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsDoubleBufferRB.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsDoubleBufferRB.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsDoubleBufferRB.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -139,6 +139,7 @@ + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsDoubleBufferRL.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsDoubleBufferRL.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsDoubleBufferRL.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsDoubleBufferRL.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -139,6 +139,7 @@ + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsFloatBufferB.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsFloatBufferB.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsFloatBufferB.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsFloatBufferB.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -150,6 +150,7 @@ sb.compact(); position(rem); limit(capacity()); + discardMark(); return this; diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsFloatBufferL.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsFloatBufferL.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsFloatBufferL.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsFloatBufferL.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -150,6 +150,7 @@ sb.compact(); position(rem); limit(capacity()); + discardMark(); return this; diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsFloatBufferRB.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsFloatBufferRB.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsFloatBufferRB.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsFloatBufferRB.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -139,6 +139,7 @@ + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsFloatBufferRL.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsFloatBufferRL.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsFloatBufferRL.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsFloatBufferRL.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -139,6 +139,7 @@ + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsIntBufferB.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsIntBufferB.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsIntBufferB.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsIntBufferB.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -150,6 +150,7 @@ sb.compact(); position(rem); limit(capacity()); + discardMark(); return this; diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsIntBufferL.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsIntBufferL.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsIntBufferL.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsIntBufferL.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -150,6 +150,7 @@ sb.compact(); position(rem); limit(capacity()); + discardMark(); return this; diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsIntBufferRB.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsIntBufferRB.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsIntBufferRB.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsIntBufferRB.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -139,6 +139,7 @@ + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsIntBufferRL.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsIntBufferRL.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsIntBufferRL.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsIntBufferRL.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -139,6 +139,7 @@ + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsLongBufferB.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsLongBufferB.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsLongBufferB.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsLongBufferB.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -150,6 +150,7 @@ sb.compact(); position(rem); limit(capacity()); + discardMark(); return this; diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsLongBufferL.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsLongBufferL.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsLongBufferL.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsLongBufferL.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -150,6 +150,7 @@ sb.compact(); position(rem); limit(capacity()); + discardMark(); return this; diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsLongBufferRB.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsLongBufferRB.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsLongBufferRB.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsLongBufferRB.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -139,6 +139,7 @@ + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsLongBufferRL.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsLongBufferRL.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsLongBufferRL.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsLongBufferRL.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -139,6 +139,7 @@ + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsShortBufferB.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsShortBufferB.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsShortBufferB.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsShortBufferB.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -150,6 +150,7 @@ sb.compact(); position(rem); limit(capacity()); + discardMark(); return this; diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsShortBufferL.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsShortBufferL.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsShortBufferL.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsShortBufferL.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -150,6 +150,7 @@ sb.compact(); position(rem); limit(capacity()); + discardMark(); return this; diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsShortBufferRB.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsShortBufferRB.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsShortBufferRB.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsShortBufferRB.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -139,6 +139,7 @@ + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsShortBufferRL.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsShortBufferRL.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBufferAsShortBufferRL.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBufferAsShortBufferRL.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -139,6 +139,7 @@ + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ByteBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/ByteBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ByteBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ByteBuffer.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -1059,7 +1059,7 @@ - + /** * Returns the current hash code of this buffer. diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/AlreadyConnectedException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/AlreadyConnectedException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/AlreadyConnectedException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/AlreadyConnectedException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/AsynchronousCloseException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/AsynchronousCloseException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/AsynchronousCloseException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/AsynchronousCloseException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/CancelledKeyException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/CancelledKeyException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/CancelledKeyException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/CancelledKeyException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/ClosedByInterruptException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/ClosedByInterruptException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/ClosedByInterruptException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/ClosedByInterruptException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/ClosedChannelException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/ClosedChannelException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/ClosedChannelException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/ClosedChannelException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/ClosedSelectorException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/ClosedSelectorException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/ClosedSelectorException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/ClosedSelectorException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/ConnectionPendingException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/ConnectionPendingException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/ConnectionPendingException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/ConnectionPendingException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/FileLockInterruptionException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/FileLockInterruptionException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/FileLockInterruptionException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/FileLockInterruptionException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/IllegalBlockingModeException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/IllegalBlockingModeException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/IllegalBlockingModeException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/IllegalBlockingModeException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/IllegalSelectorException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/IllegalSelectorException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/IllegalSelectorException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/IllegalSelectorException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/NoConnectionPendingException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/NoConnectionPendingException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/NoConnectionPendingException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/NoConnectionPendingException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/NonReadableChannelException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/NonReadableChannelException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/NonReadableChannelException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/NonReadableChannelException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/NonWritableChannelException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/NonWritableChannelException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/NonWritableChannelException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/NonWritableChannelException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/NotYetBoundException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/NotYetBoundException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/NotYetBoundException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/NotYetBoundException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/NotYetConnectedException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/NotYetConnectedException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/NotYetConnectedException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/NotYetConnectedException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/OverlappingFileLockException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/OverlappingFileLockException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/OverlappingFileLockException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/OverlappingFileLockException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/UnresolvedAddressException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/UnresolvedAddressException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/UnresolvedAddressException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/UnresolvedAddressException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/channels/UnsupportedAddressTypeException.java openjdk-6-6b38-1.13.10/generated/java/nio/channels/UnsupportedAddressTypeException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/channels/UnsupportedAddressTypeException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/channels/UnsupportedAddressTypeException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/CharBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/CharBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/CharBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/CharBuffer.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -1059,7 +1059,7 @@ - + /** * Returns the current hash code of this buffer. diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/charset/CharacterCodingException.java openjdk-6-6b38-1.13.10/generated/java/nio/charset/CharacterCodingException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/charset/CharacterCodingException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/charset/CharacterCodingException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/charset/CharsetDecoder.java openjdk-6-6b38-1.13.10/generated/java/nio/charset/CharsetDecoder.java --- openjdk-6-6b31-1.13.3/generated/java/nio/charset/CharsetDecoder.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/charset/CharsetDecoder.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/charset/CharsetEncoder.java openjdk-6-6b38-1.13.10/generated/java/nio/charset/CharsetEncoder.java --- openjdk-6-6b31-1.13.3/generated/java/nio/charset/CharsetEncoder.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/charset/CharsetEncoder.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/charset/IllegalCharsetNameException.java openjdk-6-6b38-1.13.10/generated/java/nio/charset/IllegalCharsetNameException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/charset/IllegalCharsetNameException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/charset/IllegalCharsetNameException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/charset/UnsupportedCharsetException.java openjdk-6-6b38-1.13.10/generated/java/nio/charset/UnsupportedCharsetException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/charset/UnsupportedCharsetException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/charset/UnsupportedCharsetException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectByteBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectByteBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectByteBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectByteBuffer.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -47,6 +47,9 @@ // Cached unsafe-access object protected static final Unsafe unsafe = Bits.unsafe(); + // Cached array base offset + private static final long arrayBaseOffset = (long)unsafe.arrayBaseOffset(byte[].class); + // Cached unaligned-access capability protected static final boolean unaligned = Bits.unaligned(); @@ -216,7 +219,7 @@ } private long ix(int i) { - return address + (i << 0); + return address + ((long)i << 0); } public byte get() { @@ -229,7 +232,7 @@ public ByteBuffer get(byte[] dst, int offset, int length) { - if ((length << 0) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { + if (((long)length << 0) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { checkBounds(offset, length, dst.length); int pos = position(); int lim = limit(); @@ -238,14 +241,16 @@ if (length > rem) throw new BufferUnderflowException(); - if (order() != ByteOrder.nativeOrder()) - Bits.copyToByteArray(ix(pos), dst, - offset << 0, - length << 0); - else - Bits.copyToByteArray(ix(pos), dst, - offset << 0, - length << 0); + + + + + + + + Bits.copyToArray(ix(pos), dst, arrayBaseOffset, + (long)offset << 0, + (long)length << 0); position(pos + length); } else { super.get(dst, offset, length); @@ -295,7 +300,7 @@ if (srem > rem) throw new BufferOverflowException(); - unsafe.copyMemory(sb.ix(spos), ix(pos), srem << 0); + unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << 0); sb.position(spos + srem); position(pos + srem); } else if (src.hb != null) { @@ -319,7 +324,7 @@ public ByteBuffer put(byte[] src, int offset, int length) { - if ((length << 0) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { + if (((long)length << 0) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { checkBounds(offset, length, src.length); int pos = position(); int lim = limit(); @@ -328,12 +333,18 @@ if (length > rem) throw new BufferOverflowException(); - if (order() != ByteOrder.nativeOrder()) - Bits.copyFromByteArray(src, offset << 0, - ix(pos), length << 0); - else - Bits.copyFromByteArray(src, offset << 0, - ix(pos), length << 0); + + + + + + + + + Bits.copyFromArray(src, arrayBaseOffset, + (long)offset << 0, + ix(pos), + (long)length << 0); position(pos + length); } else { super.put(src, offset, length); @@ -351,7 +362,7 @@ assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - unsafe.copyMemory(ix(pos), ix(0), rem << 0); + unsafe.copyMemory(ix(pos), ix(0), (long)rem << 0); position(rem); limit(capacity()); discardMark(); diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectByteBufferR.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectByteBufferR.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectByteBufferR.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectByteBufferR.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -105,6 +105,9 @@ + + + // Primary constructor // DirectByteBufferR(int cap) { // package-private @@ -258,6 +261,8 @@ + + public ByteBuffer put(byte x) { @@ -321,6 +326,12 @@ + + + + + + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectCharBufferRS.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectCharBufferRS.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectCharBufferRS.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectCharBufferRS.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -159,6 +159,9 @@ + + + // For duplicates and slices // DirectCharBufferRS(DirectBuffer db, // package-private @@ -258,6 +261,8 @@ + + public CharBuffer put(char x) { @@ -321,6 +326,12 @@ + + + + + + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectCharBufferRU.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectCharBufferRU.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectCharBufferRU.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectCharBufferRU.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -159,6 +159,9 @@ + + + // For duplicates and slices // DirectCharBufferRU(DirectBuffer db, // package-private @@ -258,6 +261,8 @@ + + public CharBuffer put(char x) { @@ -321,6 +326,12 @@ + + + + + + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectCharBufferS.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectCharBufferS.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectCharBufferS.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectCharBufferS.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -47,6 +47,9 @@ // Cached unsafe-access object protected static final Unsafe unsafe = Bits.unsafe(); + // Cached array base offset + private static final long arrayBaseOffset = (long)unsafe.arrayBaseOffset(char[].class); + // Cached unaligned-access capability protected static final boolean unaligned = Bits.unaligned(); @@ -216,7 +219,7 @@ } private long ix(int i) { - return address + (i << 1); + return address + ((long)i << 1); } public char get() { @@ -229,7 +232,7 @@ public CharBuffer get(char[] dst, int offset, int length) { - if ((length << 1) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { + if (((long)length << 1) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { checkBounds(offset, length, dst.length); int pos = position(); int lim = limit(); @@ -238,14 +241,16 @@ if (length > rem) throw new BufferUnderflowException(); + if (order() != ByteOrder.nativeOrder()) Bits.copyToCharArray(ix(pos), dst, - offset << 1, - length << 1); + (long)offset << 1, + (long)length << 1); else - Bits.copyToByteArray(ix(pos), dst, - offset << 1, - length << 1); + + Bits.copyToArray(ix(pos), dst, arrayBaseOffset, + (long)offset << 1, + (long)length << 1); position(pos + length); } else { super.get(dst, offset, length); @@ -295,7 +300,7 @@ if (srem > rem) throw new BufferOverflowException(); - unsafe.copyMemory(sb.ix(spos), ix(pos), srem << 1); + unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << 1); sb.position(spos + srem); position(pos + srem); } else if (src.hb != null) { @@ -319,7 +324,7 @@ public CharBuffer put(char[] src, int offset, int length) { - if ((length << 1) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { + if (((long)length << 1) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { checkBounds(offset, length, src.length); int pos = position(); int lim = limit(); @@ -328,12 +333,18 @@ if (length > rem) throw new BufferOverflowException(); + if (order() != ByteOrder.nativeOrder()) - Bits.copyFromCharArray(src, offset << 1, - ix(pos), length << 1); + Bits.copyFromCharArray(src, + (long)offset << 1, + ix(pos), + (long)length << 1); else - Bits.copyFromByteArray(src, offset << 1, - ix(pos), length << 1); + + Bits.copyFromArray(src, arrayBaseOffset, + (long)offset << 1, + ix(pos), + (long)length << 1); position(pos + length); } else { super.put(src, offset, length); @@ -351,7 +362,7 @@ assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - unsafe.copyMemory(ix(pos), ix(0), rem << 1); + unsafe.copyMemory(ix(pos), ix(0), (long)rem << 1); position(rem); limit(capacity()); discardMark(); diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectCharBufferU.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectCharBufferU.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectCharBufferU.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectCharBufferU.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -47,6 +47,9 @@ // Cached unsafe-access object protected static final Unsafe unsafe = Bits.unsafe(); + // Cached array base offset + private static final long arrayBaseOffset = (long)unsafe.arrayBaseOffset(char[].class); + // Cached unaligned-access capability protected static final boolean unaligned = Bits.unaligned(); @@ -216,7 +219,7 @@ } private long ix(int i) { - return address + (i << 1); + return address + ((long)i << 1); } public char get() { @@ -229,7 +232,7 @@ public CharBuffer get(char[] dst, int offset, int length) { - if ((length << 1) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { + if (((long)length << 1) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { checkBounds(offset, length, dst.length); int pos = position(); int lim = limit(); @@ -238,14 +241,16 @@ if (length > rem) throw new BufferUnderflowException(); + if (order() != ByteOrder.nativeOrder()) Bits.copyToCharArray(ix(pos), dst, - offset << 1, - length << 1); + (long)offset << 1, + (long)length << 1); else - Bits.copyToByteArray(ix(pos), dst, - offset << 1, - length << 1); + + Bits.copyToArray(ix(pos), dst, arrayBaseOffset, + (long)offset << 1, + (long)length << 1); position(pos + length); } else { super.get(dst, offset, length); @@ -295,7 +300,7 @@ if (srem > rem) throw new BufferOverflowException(); - unsafe.copyMemory(sb.ix(spos), ix(pos), srem << 1); + unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << 1); sb.position(spos + srem); position(pos + srem); } else if (src.hb != null) { @@ -319,7 +324,7 @@ public CharBuffer put(char[] src, int offset, int length) { - if ((length << 1) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { + if (((long)length << 1) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { checkBounds(offset, length, src.length); int pos = position(); int lim = limit(); @@ -328,12 +333,18 @@ if (length > rem) throw new BufferOverflowException(); + if (order() != ByteOrder.nativeOrder()) - Bits.copyFromCharArray(src, offset << 1, - ix(pos), length << 1); + Bits.copyFromCharArray(src, + (long)offset << 1, + ix(pos), + (long)length << 1); else - Bits.copyFromByteArray(src, offset << 1, - ix(pos), length << 1); + + Bits.copyFromArray(src, arrayBaseOffset, + (long)offset << 1, + ix(pos), + (long)length << 1); position(pos + length); } else { super.put(src, offset, length); @@ -351,7 +362,7 @@ assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - unsafe.copyMemory(ix(pos), ix(0), rem << 1); + unsafe.copyMemory(ix(pos), ix(0), (long)rem << 1); position(rem); limit(capacity()); discardMark(); diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectDoubleBufferRS.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectDoubleBufferRS.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectDoubleBufferRS.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectDoubleBufferRS.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -159,6 +159,9 @@ + + + // For duplicates and slices // DirectDoubleBufferRS(DirectBuffer db, // package-private @@ -258,6 +261,8 @@ + + public DoubleBuffer put(double x) { @@ -321,6 +326,12 @@ + + + + + + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectDoubleBufferRU.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectDoubleBufferRU.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectDoubleBufferRU.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectDoubleBufferRU.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -159,6 +159,9 @@ + + + // For duplicates and slices // DirectDoubleBufferRU(DirectBuffer db, // package-private @@ -258,6 +261,8 @@ + + public DoubleBuffer put(double x) { @@ -321,6 +326,12 @@ + + + + + + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectDoubleBufferS.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectDoubleBufferS.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectDoubleBufferS.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectDoubleBufferS.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -47,6 +47,9 @@ // Cached unsafe-access object protected static final Unsafe unsafe = Bits.unsafe(); + // Cached array base offset + private static final long arrayBaseOffset = (long)unsafe.arrayBaseOffset(double[].class); + // Cached unaligned-access capability protected static final boolean unaligned = Bits.unaligned(); @@ -216,7 +219,7 @@ } private long ix(int i) { - return address + (i << 3); + return address + ((long)i << 3); } public double get() { @@ -229,7 +232,7 @@ public DoubleBuffer get(double[] dst, int offset, int length) { - if ((length << 3) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { + if (((long)length << 3) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { checkBounds(offset, length, dst.length); int pos = position(); int lim = limit(); @@ -238,14 +241,16 @@ if (length > rem) throw new BufferUnderflowException(); + if (order() != ByteOrder.nativeOrder()) Bits.copyToLongArray(ix(pos), dst, - offset << 3, - length << 3); + (long)offset << 3, + (long)length << 3); else - Bits.copyToByteArray(ix(pos), dst, - offset << 3, - length << 3); + + Bits.copyToArray(ix(pos), dst, arrayBaseOffset, + (long)offset << 3, + (long)length << 3); position(pos + length); } else { super.get(dst, offset, length); @@ -295,7 +300,7 @@ if (srem > rem) throw new BufferOverflowException(); - unsafe.copyMemory(sb.ix(spos), ix(pos), srem << 3); + unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << 3); sb.position(spos + srem); position(pos + srem); } else if (src.hb != null) { @@ -319,7 +324,7 @@ public DoubleBuffer put(double[] src, int offset, int length) { - if ((length << 3) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { + if (((long)length << 3) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { checkBounds(offset, length, src.length); int pos = position(); int lim = limit(); @@ -328,12 +333,18 @@ if (length > rem) throw new BufferOverflowException(); + if (order() != ByteOrder.nativeOrder()) - Bits.copyFromLongArray(src, offset << 3, - ix(pos), length << 3); + Bits.copyFromLongArray(src, + (long)offset << 3, + ix(pos), + (long)length << 3); else - Bits.copyFromByteArray(src, offset << 3, - ix(pos), length << 3); + + Bits.copyFromArray(src, arrayBaseOffset, + (long)offset << 3, + ix(pos), + (long)length << 3); position(pos + length); } else { super.put(src, offset, length); @@ -351,7 +362,7 @@ assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - unsafe.copyMemory(ix(pos), ix(0), rem << 3); + unsafe.copyMemory(ix(pos), ix(0), (long)rem << 3); position(rem); limit(capacity()); discardMark(); diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectDoubleBufferU.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectDoubleBufferU.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectDoubleBufferU.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectDoubleBufferU.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -47,6 +47,9 @@ // Cached unsafe-access object protected static final Unsafe unsafe = Bits.unsafe(); + // Cached array base offset + private static final long arrayBaseOffset = (long)unsafe.arrayBaseOffset(double[].class); + // Cached unaligned-access capability protected static final boolean unaligned = Bits.unaligned(); @@ -216,7 +219,7 @@ } private long ix(int i) { - return address + (i << 3); + return address + ((long)i << 3); } public double get() { @@ -229,7 +232,7 @@ public DoubleBuffer get(double[] dst, int offset, int length) { - if ((length << 3) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { + if (((long)length << 3) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { checkBounds(offset, length, dst.length); int pos = position(); int lim = limit(); @@ -238,14 +241,16 @@ if (length > rem) throw new BufferUnderflowException(); + if (order() != ByteOrder.nativeOrder()) Bits.copyToLongArray(ix(pos), dst, - offset << 3, - length << 3); + (long)offset << 3, + (long)length << 3); else - Bits.copyToByteArray(ix(pos), dst, - offset << 3, - length << 3); + + Bits.copyToArray(ix(pos), dst, arrayBaseOffset, + (long)offset << 3, + (long)length << 3); position(pos + length); } else { super.get(dst, offset, length); @@ -295,7 +300,7 @@ if (srem > rem) throw new BufferOverflowException(); - unsafe.copyMemory(sb.ix(spos), ix(pos), srem << 3); + unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << 3); sb.position(spos + srem); position(pos + srem); } else if (src.hb != null) { @@ -319,7 +324,7 @@ public DoubleBuffer put(double[] src, int offset, int length) { - if ((length << 3) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { + if (((long)length << 3) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { checkBounds(offset, length, src.length); int pos = position(); int lim = limit(); @@ -328,12 +333,18 @@ if (length > rem) throw new BufferOverflowException(); + if (order() != ByteOrder.nativeOrder()) - Bits.copyFromLongArray(src, offset << 3, - ix(pos), length << 3); + Bits.copyFromLongArray(src, + (long)offset << 3, + ix(pos), + (long)length << 3); else - Bits.copyFromByteArray(src, offset << 3, - ix(pos), length << 3); + + Bits.copyFromArray(src, arrayBaseOffset, + (long)offset << 3, + ix(pos), + (long)length << 3); position(pos + length); } else { super.put(src, offset, length); @@ -351,7 +362,7 @@ assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - unsafe.copyMemory(ix(pos), ix(0), rem << 3); + unsafe.copyMemory(ix(pos), ix(0), (long)rem << 3); position(rem); limit(capacity()); discardMark(); diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectFloatBufferRS.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectFloatBufferRS.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectFloatBufferRS.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectFloatBufferRS.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -159,6 +159,9 @@ + + + // For duplicates and slices // DirectFloatBufferRS(DirectBuffer db, // package-private @@ -258,6 +261,8 @@ + + public FloatBuffer put(float x) { @@ -321,6 +326,12 @@ + + + + + + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectFloatBufferRU.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectFloatBufferRU.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectFloatBufferRU.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectFloatBufferRU.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -159,6 +159,9 @@ + + + // For duplicates and slices // DirectFloatBufferRU(DirectBuffer db, // package-private @@ -258,6 +261,8 @@ + + public FloatBuffer put(float x) { @@ -321,6 +326,12 @@ + + + + + + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectFloatBufferS.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectFloatBufferS.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectFloatBufferS.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectFloatBufferS.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -47,6 +47,9 @@ // Cached unsafe-access object protected static final Unsafe unsafe = Bits.unsafe(); + // Cached array base offset + private static final long arrayBaseOffset = (long)unsafe.arrayBaseOffset(float[].class); + // Cached unaligned-access capability protected static final boolean unaligned = Bits.unaligned(); @@ -216,7 +219,7 @@ } private long ix(int i) { - return address + (i << 2); + return address + ((long)i << 2); } public float get() { @@ -229,7 +232,7 @@ public FloatBuffer get(float[] dst, int offset, int length) { - if ((length << 2) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { + if (((long)length << 2) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { checkBounds(offset, length, dst.length); int pos = position(); int lim = limit(); @@ -238,14 +241,16 @@ if (length > rem) throw new BufferUnderflowException(); + if (order() != ByteOrder.nativeOrder()) Bits.copyToIntArray(ix(pos), dst, - offset << 2, - length << 2); + (long)offset << 2, + (long)length << 2); else - Bits.copyToByteArray(ix(pos), dst, - offset << 2, - length << 2); + + Bits.copyToArray(ix(pos), dst, arrayBaseOffset, + (long)offset << 2, + (long)length << 2); position(pos + length); } else { super.get(dst, offset, length); @@ -295,7 +300,7 @@ if (srem > rem) throw new BufferOverflowException(); - unsafe.copyMemory(sb.ix(spos), ix(pos), srem << 2); + unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << 2); sb.position(spos + srem); position(pos + srem); } else if (src.hb != null) { @@ -319,7 +324,7 @@ public FloatBuffer put(float[] src, int offset, int length) { - if ((length << 2) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { + if (((long)length << 2) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { checkBounds(offset, length, src.length); int pos = position(); int lim = limit(); @@ -328,12 +333,18 @@ if (length > rem) throw new BufferOverflowException(); + if (order() != ByteOrder.nativeOrder()) - Bits.copyFromIntArray(src, offset << 2, - ix(pos), length << 2); + Bits.copyFromIntArray(src, + (long)offset << 2, + ix(pos), + (long)length << 2); else - Bits.copyFromByteArray(src, offset << 2, - ix(pos), length << 2); + + Bits.copyFromArray(src, arrayBaseOffset, + (long)offset << 2, + ix(pos), + (long)length << 2); position(pos + length); } else { super.put(src, offset, length); @@ -351,7 +362,7 @@ assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - unsafe.copyMemory(ix(pos), ix(0), rem << 2); + unsafe.copyMemory(ix(pos), ix(0), (long)rem << 2); position(rem); limit(capacity()); discardMark(); diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectFloatBufferU.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectFloatBufferU.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectFloatBufferU.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectFloatBufferU.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -47,6 +47,9 @@ // Cached unsafe-access object protected static final Unsafe unsafe = Bits.unsafe(); + // Cached array base offset + private static final long arrayBaseOffset = (long)unsafe.arrayBaseOffset(float[].class); + // Cached unaligned-access capability protected static final boolean unaligned = Bits.unaligned(); @@ -216,7 +219,7 @@ } private long ix(int i) { - return address + (i << 2); + return address + ((long)i << 2); } public float get() { @@ -229,7 +232,7 @@ public FloatBuffer get(float[] dst, int offset, int length) { - if ((length << 2) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { + if (((long)length << 2) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { checkBounds(offset, length, dst.length); int pos = position(); int lim = limit(); @@ -238,14 +241,16 @@ if (length > rem) throw new BufferUnderflowException(); + if (order() != ByteOrder.nativeOrder()) Bits.copyToIntArray(ix(pos), dst, - offset << 2, - length << 2); + (long)offset << 2, + (long)length << 2); else - Bits.copyToByteArray(ix(pos), dst, - offset << 2, - length << 2); + + Bits.copyToArray(ix(pos), dst, arrayBaseOffset, + (long)offset << 2, + (long)length << 2); position(pos + length); } else { super.get(dst, offset, length); @@ -295,7 +300,7 @@ if (srem > rem) throw new BufferOverflowException(); - unsafe.copyMemory(sb.ix(spos), ix(pos), srem << 2); + unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << 2); sb.position(spos + srem); position(pos + srem); } else if (src.hb != null) { @@ -319,7 +324,7 @@ public FloatBuffer put(float[] src, int offset, int length) { - if ((length << 2) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { + if (((long)length << 2) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { checkBounds(offset, length, src.length); int pos = position(); int lim = limit(); @@ -328,12 +333,18 @@ if (length > rem) throw new BufferOverflowException(); + if (order() != ByteOrder.nativeOrder()) - Bits.copyFromIntArray(src, offset << 2, - ix(pos), length << 2); + Bits.copyFromIntArray(src, + (long)offset << 2, + ix(pos), + (long)length << 2); else - Bits.copyFromByteArray(src, offset << 2, - ix(pos), length << 2); + + Bits.copyFromArray(src, arrayBaseOffset, + (long)offset << 2, + ix(pos), + (long)length << 2); position(pos + length); } else { super.put(src, offset, length); @@ -351,7 +362,7 @@ assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - unsafe.copyMemory(ix(pos), ix(0), rem << 2); + unsafe.copyMemory(ix(pos), ix(0), (long)rem << 2); position(rem); limit(capacity()); discardMark(); diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectIntBufferRS.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectIntBufferRS.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectIntBufferRS.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectIntBufferRS.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -159,6 +159,9 @@ + + + // For duplicates and slices // DirectIntBufferRS(DirectBuffer db, // package-private @@ -258,6 +261,8 @@ + + public IntBuffer put(int x) { @@ -321,6 +326,12 @@ + + + + + + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectIntBufferRU.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectIntBufferRU.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectIntBufferRU.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectIntBufferRU.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -159,6 +159,9 @@ + + + // For duplicates and slices // DirectIntBufferRU(DirectBuffer db, // package-private @@ -258,6 +261,8 @@ + + public IntBuffer put(int x) { @@ -321,6 +326,12 @@ + + + + + + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectIntBufferS.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectIntBufferS.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectIntBufferS.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectIntBufferS.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -47,6 +47,9 @@ // Cached unsafe-access object protected static final Unsafe unsafe = Bits.unsafe(); + // Cached array base offset + private static final long arrayBaseOffset = (long)unsafe.arrayBaseOffset(int[].class); + // Cached unaligned-access capability protected static final boolean unaligned = Bits.unaligned(); @@ -216,7 +219,7 @@ } private long ix(int i) { - return address + (i << 2); + return address + ((long)i << 2); } public int get() { @@ -229,7 +232,7 @@ public IntBuffer get(int[] dst, int offset, int length) { - if ((length << 2) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { + if (((long)length << 2) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { checkBounds(offset, length, dst.length); int pos = position(); int lim = limit(); @@ -238,14 +241,16 @@ if (length > rem) throw new BufferUnderflowException(); + if (order() != ByteOrder.nativeOrder()) Bits.copyToIntArray(ix(pos), dst, - offset << 2, - length << 2); + (long)offset << 2, + (long)length << 2); else - Bits.copyToByteArray(ix(pos), dst, - offset << 2, - length << 2); + + Bits.copyToArray(ix(pos), dst, arrayBaseOffset, + (long)offset << 2, + (long)length << 2); position(pos + length); } else { super.get(dst, offset, length); @@ -295,7 +300,7 @@ if (srem > rem) throw new BufferOverflowException(); - unsafe.copyMemory(sb.ix(spos), ix(pos), srem << 2); + unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << 2); sb.position(spos + srem); position(pos + srem); } else if (src.hb != null) { @@ -319,7 +324,7 @@ public IntBuffer put(int[] src, int offset, int length) { - if ((length << 2) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { + if (((long)length << 2) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { checkBounds(offset, length, src.length); int pos = position(); int lim = limit(); @@ -328,12 +333,18 @@ if (length > rem) throw new BufferOverflowException(); + if (order() != ByteOrder.nativeOrder()) - Bits.copyFromIntArray(src, offset << 2, - ix(pos), length << 2); + Bits.copyFromIntArray(src, + (long)offset << 2, + ix(pos), + (long)length << 2); else - Bits.copyFromByteArray(src, offset << 2, - ix(pos), length << 2); + + Bits.copyFromArray(src, arrayBaseOffset, + (long)offset << 2, + ix(pos), + (long)length << 2); position(pos + length); } else { super.put(src, offset, length); @@ -351,7 +362,7 @@ assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - unsafe.copyMemory(ix(pos), ix(0), rem << 2); + unsafe.copyMemory(ix(pos), ix(0), (long)rem << 2); position(rem); limit(capacity()); discardMark(); diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectIntBufferU.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectIntBufferU.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectIntBufferU.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectIntBufferU.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -47,6 +47,9 @@ // Cached unsafe-access object protected static final Unsafe unsafe = Bits.unsafe(); + // Cached array base offset + private static final long arrayBaseOffset = (long)unsafe.arrayBaseOffset(int[].class); + // Cached unaligned-access capability protected static final boolean unaligned = Bits.unaligned(); @@ -216,7 +219,7 @@ } private long ix(int i) { - return address + (i << 2); + return address + ((long)i << 2); } public int get() { @@ -229,7 +232,7 @@ public IntBuffer get(int[] dst, int offset, int length) { - if ((length << 2) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { + if (((long)length << 2) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { checkBounds(offset, length, dst.length); int pos = position(); int lim = limit(); @@ -238,14 +241,16 @@ if (length > rem) throw new BufferUnderflowException(); + if (order() != ByteOrder.nativeOrder()) Bits.copyToIntArray(ix(pos), dst, - offset << 2, - length << 2); + (long)offset << 2, + (long)length << 2); else - Bits.copyToByteArray(ix(pos), dst, - offset << 2, - length << 2); + + Bits.copyToArray(ix(pos), dst, arrayBaseOffset, + (long)offset << 2, + (long)length << 2); position(pos + length); } else { super.get(dst, offset, length); @@ -295,7 +300,7 @@ if (srem > rem) throw new BufferOverflowException(); - unsafe.copyMemory(sb.ix(spos), ix(pos), srem << 2); + unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << 2); sb.position(spos + srem); position(pos + srem); } else if (src.hb != null) { @@ -319,7 +324,7 @@ public IntBuffer put(int[] src, int offset, int length) { - if ((length << 2) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { + if (((long)length << 2) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { checkBounds(offset, length, src.length); int pos = position(); int lim = limit(); @@ -328,12 +333,18 @@ if (length > rem) throw new BufferOverflowException(); + if (order() != ByteOrder.nativeOrder()) - Bits.copyFromIntArray(src, offset << 2, - ix(pos), length << 2); + Bits.copyFromIntArray(src, + (long)offset << 2, + ix(pos), + (long)length << 2); else - Bits.copyFromByteArray(src, offset << 2, - ix(pos), length << 2); + + Bits.copyFromArray(src, arrayBaseOffset, + (long)offset << 2, + ix(pos), + (long)length << 2); position(pos + length); } else { super.put(src, offset, length); @@ -351,7 +362,7 @@ assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - unsafe.copyMemory(ix(pos), ix(0), rem << 2); + unsafe.copyMemory(ix(pos), ix(0), (long)rem << 2); position(rem); limit(capacity()); discardMark(); diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectLongBufferRS.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectLongBufferRS.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectLongBufferRS.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectLongBufferRS.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -159,6 +159,9 @@ + + + // For duplicates and slices // DirectLongBufferRS(DirectBuffer db, // package-private @@ -258,6 +261,8 @@ + + public LongBuffer put(long x) { @@ -321,6 +326,12 @@ + + + + + + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectLongBufferRU.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectLongBufferRU.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectLongBufferRU.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectLongBufferRU.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -159,6 +159,9 @@ + + + // For duplicates and slices // DirectLongBufferRU(DirectBuffer db, // package-private @@ -258,6 +261,8 @@ + + public LongBuffer put(long x) { @@ -321,6 +326,12 @@ + + + + + + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectLongBufferS.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectLongBufferS.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectLongBufferS.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectLongBufferS.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -47,6 +47,9 @@ // Cached unsafe-access object protected static final Unsafe unsafe = Bits.unsafe(); + // Cached array base offset + private static final long arrayBaseOffset = (long)unsafe.arrayBaseOffset(long[].class); + // Cached unaligned-access capability protected static final boolean unaligned = Bits.unaligned(); @@ -216,7 +219,7 @@ } private long ix(int i) { - return address + (i << 3); + return address + ((long)i << 3); } public long get() { @@ -229,7 +232,7 @@ public LongBuffer get(long[] dst, int offset, int length) { - if ((length << 3) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { + if (((long)length << 3) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { checkBounds(offset, length, dst.length); int pos = position(); int lim = limit(); @@ -238,14 +241,16 @@ if (length > rem) throw new BufferUnderflowException(); + if (order() != ByteOrder.nativeOrder()) Bits.copyToLongArray(ix(pos), dst, - offset << 3, - length << 3); + (long)offset << 3, + (long)length << 3); else - Bits.copyToByteArray(ix(pos), dst, - offset << 3, - length << 3); + + Bits.copyToArray(ix(pos), dst, arrayBaseOffset, + (long)offset << 3, + (long)length << 3); position(pos + length); } else { super.get(dst, offset, length); @@ -295,7 +300,7 @@ if (srem > rem) throw new BufferOverflowException(); - unsafe.copyMemory(sb.ix(spos), ix(pos), srem << 3); + unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << 3); sb.position(spos + srem); position(pos + srem); } else if (src.hb != null) { @@ -319,7 +324,7 @@ public LongBuffer put(long[] src, int offset, int length) { - if ((length << 3) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { + if (((long)length << 3) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { checkBounds(offset, length, src.length); int pos = position(); int lim = limit(); @@ -328,12 +333,18 @@ if (length > rem) throw new BufferOverflowException(); + if (order() != ByteOrder.nativeOrder()) - Bits.copyFromLongArray(src, offset << 3, - ix(pos), length << 3); + Bits.copyFromLongArray(src, + (long)offset << 3, + ix(pos), + (long)length << 3); else - Bits.copyFromByteArray(src, offset << 3, - ix(pos), length << 3); + + Bits.copyFromArray(src, arrayBaseOffset, + (long)offset << 3, + ix(pos), + (long)length << 3); position(pos + length); } else { super.put(src, offset, length); @@ -351,7 +362,7 @@ assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - unsafe.copyMemory(ix(pos), ix(0), rem << 3); + unsafe.copyMemory(ix(pos), ix(0), (long)rem << 3); position(rem); limit(capacity()); discardMark(); diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectLongBufferU.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectLongBufferU.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectLongBufferU.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectLongBufferU.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -47,6 +47,9 @@ // Cached unsafe-access object protected static final Unsafe unsafe = Bits.unsafe(); + // Cached array base offset + private static final long arrayBaseOffset = (long)unsafe.arrayBaseOffset(long[].class); + // Cached unaligned-access capability protected static final boolean unaligned = Bits.unaligned(); @@ -216,7 +219,7 @@ } private long ix(int i) { - return address + (i << 3); + return address + ((long)i << 3); } public long get() { @@ -229,7 +232,7 @@ public LongBuffer get(long[] dst, int offset, int length) { - if ((length << 3) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { + if (((long)length << 3) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { checkBounds(offset, length, dst.length); int pos = position(); int lim = limit(); @@ -238,14 +241,16 @@ if (length > rem) throw new BufferUnderflowException(); + if (order() != ByteOrder.nativeOrder()) Bits.copyToLongArray(ix(pos), dst, - offset << 3, - length << 3); + (long)offset << 3, + (long)length << 3); else - Bits.copyToByteArray(ix(pos), dst, - offset << 3, - length << 3); + + Bits.copyToArray(ix(pos), dst, arrayBaseOffset, + (long)offset << 3, + (long)length << 3); position(pos + length); } else { super.get(dst, offset, length); @@ -295,7 +300,7 @@ if (srem > rem) throw new BufferOverflowException(); - unsafe.copyMemory(sb.ix(spos), ix(pos), srem << 3); + unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << 3); sb.position(spos + srem); position(pos + srem); } else if (src.hb != null) { @@ -319,7 +324,7 @@ public LongBuffer put(long[] src, int offset, int length) { - if ((length << 3) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { + if (((long)length << 3) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { checkBounds(offset, length, src.length); int pos = position(); int lim = limit(); @@ -328,12 +333,18 @@ if (length > rem) throw new BufferOverflowException(); + if (order() != ByteOrder.nativeOrder()) - Bits.copyFromLongArray(src, offset << 3, - ix(pos), length << 3); + Bits.copyFromLongArray(src, + (long)offset << 3, + ix(pos), + (long)length << 3); else - Bits.copyFromByteArray(src, offset << 3, - ix(pos), length << 3); + + Bits.copyFromArray(src, arrayBaseOffset, + (long)offset << 3, + ix(pos), + (long)length << 3); position(pos + length); } else { super.put(src, offset, length); @@ -351,7 +362,7 @@ assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - unsafe.copyMemory(ix(pos), ix(0), rem << 3); + unsafe.copyMemory(ix(pos), ix(0), (long)rem << 3); position(rem); limit(capacity()); discardMark(); diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectShortBufferRS.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectShortBufferRS.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectShortBufferRS.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectShortBufferRS.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -159,6 +159,9 @@ + + + // For duplicates and slices // DirectShortBufferRS(DirectBuffer db, // package-private @@ -258,6 +261,8 @@ + + public ShortBuffer put(short x) { @@ -321,6 +326,12 @@ + + + + + + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectShortBufferRU.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectShortBufferRU.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectShortBufferRU.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectShortBufferRU.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -159,6 +159,9 @@ + + + // For duplicates and slices // DirectShortBufferRU(DirectBuffer db, // package-private @@ -258,6 +261,8 @@ + + public ShortBuffer put(short x) { @@ -321,6 +326,12 @@ + + + + + + diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectShortBufferS.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectShortBufferS.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectShortBufferS.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectShortBufferS.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -47,6 +47,9 @@ // Cached unsafe-access object protected static final Unsafe unsafe = Bits.unsafe(); + // Cached array base offset + private static final long arrayBaseOffset = (long)unsafe.arrayBaseOffset(short[].class); + // Cached unaligned-access capability protected static final boolean unaligned = Bits.unaligned(); @@ -216,7 +219,7 @@ } private long ix(int i) { - return address + (i << 1); + return address + ((long)i << 1); } public short get() { @@ -229,7 +232,7 @@ public ShortBuffer get(short[] dst, int offset, int length) { - if ((length << 1) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { + if (((long)length << 1) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { checkBounds(offset, length, dst.length); int pos = position(); int lim = limit(); @@ -238,14 +241,16 @@ if (length > rem) throw new BufferUnderflowException(); + if (order() != ByteOrder.nativeOrder()) Bits.copyToShortArray(ix(pos), dst, - offset << 1, - length << 1); + (long)offset << 1, + (long)length << 1); else - Bits.copyToByteArray(ix(pos), dst, - offset << 1, - length << 1); + + Bits.copyToArray(ix(pos), dst, arrayBaseOffset, + (long)offset << 1, + (long)length << 1); position(pos + length); } else { super.get(dst, offset, length); @@ -295,7 +300,7 @@ if (srem > rem) throw new BufferOverflowException(); - unsafe.copyMemory(sb.ix(spos), ix(pos), srem << 1); + unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << 1); sb.position(spos + srem); position(pos + srem); } else if (src.hb != null) { @@ -319,7 +324,7 @@ public ShortBuffer put(short[] src, int offset, int length) { - if ((length << 1) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { + if (((long)length << 1) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { checkBounds(offset, length, src.length); int pos = position(); int lim = limit(); @@ -328,12 +333,18 @@ if (length > rem) throw new BufferOverflowException(); + if (order() != ByteOrder.nativeOrder()) - Bits.copyFromShortArray(src, offset << 1, - ix(pos), length << 1); + Bits.copyFromShortArray(src, + (long)offset << 1, + ix(pos), + (long)length << 1); else - Bits.copyFromByteArray(src, offset << 1, - ix(pos), length << 1); + + Bits.copyFromArray(src, arrayBaseOffset, + (long)offset << 1, + ix(pos), + (long)length << 1); position(pos + length); } else { super.put(src, offset, length); @@ -351,7 +362,7 @@ assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - unsafe.copyMemory(ix(pos), ix(0), rem << 1); + unsafe.copyMemory(ix(pos), ix(0), (long)rem << 1); position(rem); limit(capacity()); discardMark(); diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DirectShortBufferU.java openjdk-6-6b38-1.13.10/generated/java/nio/DirectShortBufferU.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DirectShortBufferU.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DirectShortBufferU.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -47,6 +47,9 @@ // Cached unsafe-access object protected static final Unsafe unsafe = Bits.unsafe(); + // Cached array base offset + private static final long arrayBaseOffset = (long)unsafe.arrayBaseOffset(short[].class); + // Cached unaligned-access capability protected static final boolean unaligned = Bits.unaligned(); @@ -216,7 +219,7 @@ } private long ix(int i) { - return address + (i << 1); + return address + ((long)i << 1); } public short get() { @@ -229,7 +232,7 @@ public ShortBuffer get(short[] dst, int offset, int length) { - if ((length << 1) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { + if (((long)length << 1) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { checkBounds(offset, length, dst.length); int pos = position(); int lim = limit(); @@ -238,14 +241,16 @@ if (length > rem) throw new BufferUnderflowException(); + if (order() != ByteOrder.nativeOrder()) Bits.copyToShortArray(ix(pos), dst, - offset << 1, - length << 1); + (long)offset << 1, + (long)length << 1); else - Bits.copyToByteArray(ix(pos), dst, - offset << 1, - length << 1); + + Bits.copyToArray(ix(pos), dst, arrayBaseOffset, + (long)offset << 1, + (long)length << 1); position(pos + length); } else { super.get(dst, offset, length); @@ -295,7 +300,7 @@ if (srem > rem) throw new BufferOverflowException(); - unsafe.copyMemory(sb.ix(spos), ix(pos), srem << 1); + unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << 1); sb.position(spos + srem); position(pos + srem); } else if (src.hb != null) { @@ -319,7 +324,7 @@ public ShortBuffer put(short[] src, int offset, int length) { - if ((length << 1) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { + if (((long)length << 1) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { checkBounds(offset, length, src.length); int pos = position(); int lim = limit(); @@ -328,12 +333,18 @@ if (length > rem) throw new BufferOverflowException(); + if (order() != ByteOrder.nativeOrder()) - Bits.copyFromShortArray(src, offset << 1, - ix(pos), length << 1); + Bits.copyFromShortArray(src, + (long)offset << 1, + ix(pos), + (long)length << 1); else - Bits.copyFromByteArray(src, offset << 1, - ix(pos), length << 1); + + Bits.copyFromArray(src, arrayBaseOffset, + (long)offset << 1, + ix(pos), + (long)length << 1); position(pos + length); } else { super.put(src, offset, length); @@ -351,7 +362,7 @@ assert (pos <= lim); int rem = (pos <= lim ? lim - pos : 0); - unsafe.copyMemory(ix(pos), ix(0), rem << 1); + unsafe.copyMemory(ix(pos), ix(0), (long)rem << 1); position(rem); limit(capacity()); discardMark(); diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/DoubleBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/DoubleBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/DoubleBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/DoubleBuffer.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -1059,7 +1059,7 @@ - + /** * Returns the current hash code of this buffer. diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/FloatBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/FloatBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/FloatBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/FloatBuffer.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -1059,7 +1059,7 @@ - + /** * Returns the current hash code of this buffer. diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/HeapByteBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/HeapByteBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/HeapByteBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/HeapByteBuffer.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/HeapByteBufferR.java openjdk-6-6b38-1.13.10/generated/java/nio/HeapByteBufferR.java --- openjdk-6-6b31-1.13.3/generated/java/nio/HeapByteBufferR.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/HeapByteBufferR.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/HeapCharBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/HeapCharBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/HeapCharBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/HeapCharBuffer.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/HeapCharBufferR.java openjdk-6-6b38-1.13.10/generated/java/nio/HeapCharBufferR.java --- openjdk-6-6b31-1.13.3/generated/java/nio/HeapCharBufferR.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/HeapCharBufferR.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/HeapDoubleBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/HeapDoubleBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/HeapDoubleBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/HeapDoubleBuffer.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/HeapDoubleBufferR.java openjdk-6-6b38-1.13.10/generated/java/nio/HeapDoubleBufferR.java --- openjdk-6-6b31-1.13.3/generated/java/nio/HeapDoubleBufferR.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/HeapDoubleBufferR.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/HeapFloatBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/HeapFloatBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/HeapFloatBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/HeapFloatBuffer.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/HeapFloatBufferR.java openjdk-6-6b38-1.13.10/generated/java/nio/HeapFloatBufferR.java --- openjdk-6-6b31-1.13.3/generated/java/nio/HeapFloatBufferR.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/HeapFloatBufferR.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/HeapIntBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/HeapIntBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/HeapIntBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/HeapIntBuffer.java 2016-01-21 02:42:36.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/HeapIntBufferR.java openjdk-6-6b38-1.13.10/generated/java/nio/HeapIntBufferR.java --- openjdk-6-6b31-1.13.3/generated/java/nio/HeapIntBufferR.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/HeapIntBufferR.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/HeapLongBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/HeapLongBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/HeapLongBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/HeapLongBuffer.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/HeapLongBufferR.java openjdk-6-6b38-1.13.10/generated/java/nio/HeapLongBufferR.java --- openjdk-6-6b31-1.13.3/generated/java/nio/HeapLongBufferR.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/HeapLongBufferR.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/HeapShortBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/HeapShortBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/HeapShortBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/HeapShortBuffer.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/HeapShortBufferR.java openjdk-6-6b38-1.13.10/generated/java/nio/HeapShortBufferR.java --- openjdk-6-6b31-1.13.3/generated/java/nio/HeapShortBufferR.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/HeapShortBufferR.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/IntBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/IntBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/IntBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/IntBuffer.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -1059,7 +1059,7 @@ - + /** * Returns the current hash code of this buffer. diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/InvalidMarkException.java openjdk-6-6b38-1.13.10/generated/java/nio/InvalidMarkException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/InvalidMarkException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/InvalidMarkException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/LongBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/LongBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/LongBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/LongBuffer.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -1059,7 +1059,7 @@ - + /** * Returns the current hash code of this buffer. diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ReadOnlyBufferException.java openjdk-6-6b38-1.13.10/generated/java/nio/ReadOnlyBufferException.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ReadOnlyBufferException.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ReadOnlyBufferException.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,13 +1,13 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -19,9 +19,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. * */ diff -Nru openjdk-6-6b31-1.13.3/generated/java/nio/ShortBuffer.java openjdk-6-6b38-1.13.10/generated/java/nio/ShortBuffer.java --- openjdk-6-6b31-1.13.3/generated/java/nio/ShortBuffer.java 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/generated/java/nio/ShortBuffer.java 2016-01-21 02:42:37.000000000 +0000 @@ -1,12 +1,12 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. * 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. Sun designates this + * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided - * by Sun in the LICENSE file that accompanied this code. + * 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 @@ -18,9 +18,9 @@ * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. */ // -- This file was mechanically generated: Do not edit! -- // @@ -1059,7 +1059,7 @@ - + /** * Returns the current hash code of this buffer. diff -Nru openjdk-6-6b31-1.13.3/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/Hashtable.java openjdk-6-6b38-1.13.10/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/Hashtable.java --- openjdk-6-6b31-1.13.3/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/Hashtable.java 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/Hashtable.java 2016-01-20 01:41:37.000000000 +0000 @@ -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 @@ -61,8 +61,9 @@ 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 -Nru openjdk-6-6b31-1.13.3/hotspot/make/bsd/makefiles/mapfile-vers-debug openjdk-6-6b38-1.13.10/hotspot/make/bsd/makefiles/mapfile-vers-debug --- openjdk-6-6b31-1.13.3/hotspot/make/bsd/makefiles/mapfile-vers-debug 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/make/bsd/makefiles/mapfile-vers-debug 2016-01-20 01:41:42.000000000 +0000 @@ -3,7 +3,7 @@ # # -# 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 @@ -88,6 +88,7 @@ JVM_EnableCompiler; JVM_Exit; JVM_FillInStackTrace; + JVM_FindClassFromCaller JVM_FindClassFromClass; JVM_FindClassFromClassLoader; JVM_FindClassFromBootLoader; diff -Nru openjdk-6-6b31-1.13.3/hotspot/make/bsd/makefiles/mapfile-vers-product openjdk-6-6b38-1.13.10/hotspot/make/bsd/makefiles/mapfile-vers-product --- openjdk-6-6b31-1.13.3/hotspot/make/bsd/makefiles/mapfile-vers-product 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/make/bsd/makefiles/mapfile-vers-product 2016-01-20 01:41:42.000000000 +0000 @@ -3,7 +3,7 @@ # # -# 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 @@ -88,6 +88,7 @@ JVM_EnableCompiler; JVM_Exit; JVM_FillInStackTrace; + JVM_FindClassFromCaller JVM_FindClassFromClass; JVM_FindClassFromClassLoader; JVM_FindClassFromBootLoader; diff -Nru openjdk-6-6b31-1.13.3/hotspot/make/linux/Makefile openjdk-6-6b38-1.13.10/hotspot/make/linux/Makefile --- openjdk-6-6b31-1.13.3/hotspot/make/linux/Makefile 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/make/linux/Makefile 2016-01-20 01:41:24.000000000 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -231,7 +231,7 @@ # Solaris 2.5.1, 2.6). # Disable this check by setting DISABLE_HOTSPOT_OS_VERSION_CHECK=ok. -SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3% +SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3% 4% OS_VERSION := $(shell uname -r) EMPTY_IF_NOT_SUPPORTED = $(filter $(SUPPORTED_OS_VERSION),$(OS_VERSION)) diff -Nru openjdk-6-6b31-1.13.3/hotspot/make/linux/makefiles/buildtree.make openjdk-6-6b38-1.13.10/hotspot/make/linux/makefiles/buildtree.make --- openjdk-6-6b31-1.13.3/hotspot/make/linux/makefiles/buildtree.make 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/make/linux/makefiles/buildtree.make 2016-01-20 01:41:24.000000000 +0000 @@ -434,6 +434,12 @@ echo " GAMMA_PROG=gamma_g"; \ echo "fi"; \ echo ""; \ + echo "if [ -x \"$(PAX_COMMAND)\" ]; then "; \ + echo " if grep '^PaX' /proc/self/status > /dev/null ; then "; \ + echo " $(PAX_COMMAND) $(PAX_COMMAND_ARGS) ./\$${GAMMA_PROG}"; \ + echo " fi"; \ + echo "fi"; \ + echo ""; \ echo "if [ \"$(OS_VENDOR)\" = \"Darwin\" ]; then "; \ echo " # Ensure architecture for gamma and JAVA_HOME is the same."; \ echo " # NOTE: gamma assumes the OpenJDK directory layout."; \ diff -Nru openjdk-6-6b31-1.13.3/hotspot/make/linux/makefiles/mapfile-vers-debug openjdk-6-6b38-1.13.10/hotspot/make/linux/makefiles/mapfile-vers-debug --- openjdk-6-6b31-1.13.3/hotspot/make/linux/makefiles/mapfile-vers-debug 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/make/linux/makefiles/mapfile-vers-debug 2016-01-20 01:41:26.000000000 +0000 @@ -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 @@ -84,6 +84,7 @@ JVM_EnableCompiler; JVM_Exit; JVM_FillInStackTrace; + JVM_FindClassFromCaller; JVM_FindClassFromClass; JVM_FindClassFromClassLoader; JVM_FindClassFromBootLoader; diff -Nru openjdk-6-6b31-1.13.3/hotspot/make/linux/makefiles/mapfile-vers-product openjdk-6-6b38-1.13.10/hotspot/make/linux/makefiles/mapfile-vers-product --- openjdk-6-6b31-1.13.3/hotspot/make/linux/makefiles/mapfile-vers-product 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/make/linux/makefiles/mapfile-vers-product 2016-01-20 01:41:26.000000000 +0000 @@ -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 @@ -84,6 +84,7 @@ JVM_EnableCompiler; JVM_Exit; JVM_FillInStackTrace; + JVM_FindClassFromCaller; JVM_FindClassFromClass; JVM_FindClassFromClassLoader; JVM_FindClassFromBootLoader; diff -Nru openjdk-6-6b31-1.13.3/hotspot/make/solaris/makefiles/mapfile-vers openjdk-6-6b38-1.13.10/hotspot/make/solaris/makefiles/mapfile-vers --- openjdk-6-6b31-1.13.3/hotspot/make/solaris/makefiles/mapfile-vers 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/make/solaris/makefiles/mapfile-vers 2016-01-20 01:41:28.000000000 +0000 @@ -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 @@ -84,6 +84,7 @@ JVM_EnableCompiler; JVM_Exit; JVM_FillInStackTrace; + JVM_FindClassFromCaller; JVM_FindClassFromClass; JVM_FindClassFromClassLoader; JVM_FindClassFromBootLoader; diff -Nru openjdk-6-6b31-1.13.3/hotspot/make/windows/makefiles/compile.make openjdk-6-6b38-1.13.10/hotspot/make/windows/makefiles/compile.make --- openjdk-6-6b31-1.13.3/hotspot/make/windows/makefiles/compile.make 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/make/windows/makefiles/compile.make 2016-01-20 01:41:31.000000000 +0000 @@ -22,8 +22,16 @@ # # +# +# This file has been modified by Azul Systems, Inc. in 2014. These +# modifications are Copyright (c) 2014 Azul Systems, Inc., and are made +# available on the same license terms set forth above. +# + # Generic compiler settings +!if "x$(CXX)" == "x" CXX=cl.exe +!endif # CXX Flags: (these vary slightly from VC6->VS2003->VS2005 compilers) # /nologo Supress copyright message at every cl.exe startup @@ -50,7 +58,7 @@ # improving the quality of crash log stack traces involving jvm.dll. # These are always used in all compiles -CXX_FLAGS=/nologo /W3 /WX +CXX_FLAGS=$(EXTRA_CFLAGS) /nologo /W3 /WX # Let's add debug information when Full Debug Symbols is enabled !if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1" @@ -186,7 +194,9 @@ LD_FLAGS = /manifest $(LD_FLAGS) $(BUFFEROVERFLOWLIB) # Manifest Tool - used in VS2005 and later to adjust manifests stored # as resources inside build artifacts. +!if "x$(MT)" == "x" MT=mt.exe +!endif SAFESEH_FLAG = /SAFESEH !endif @@ -198,7 +208,9 @@ LD_FLAGS = /manifest $(LD_FLAGS) # Manifest Tool - used in VS2005 and later to adjust manifests stored # as resources inside build artifacts. +!if "x$(MT)" == "x" MT=mt.exe +!endif SAFESEH_FLAG = /SAFESEH !endif @@ -210,15 +222,14 @@ LD_FLAGS = /manifest $(LD_FLAGS) # Manifest Tool - used in VS2005 and later to adjust manifests stored # as resources inside build artifacts. +!if "x$(MT)" == "x" MT=mt.exe +!endif SAFESEH_FLAG = /SAFESEH !endif -# Compile for space above time. -!if "$(Variant)" == "kernel" -PRODUCT_OPT_OPTION = /O1 /Oy- -FASTDEBUG_OPT_OPTION = /O1 /Oy- -DEBUG_OPT_OPTION = /Od +!if "$(BUILDARCH)" == "i486" +LD_FLAGS = $(SAFESEH_FLAG) $(LD_FLAGS) !endif # If NO_OPTIMIZATIONS is defined in the environment, turn everything off @@ -228,7 +239,9 @@ !endif # Generic linker settings +!if "x$(LD)" == "x" LD=link.exe +!endif LD_FLAGS= $(LD_FLAGS) kernel32.lib user32.lib gdi32.lib winspool.lib \ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \ uuid.lib Wsock32.lib winmm.lib /nologo /machine:$(MACHINE) /opt:REF \ @@ -236,9 +249,6 @@ !if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1" LD_FLAGS= $(LD_FLAGS) /map /debug !endif -!if "$(BUILDARCH)" == "i486" -LD_FLAGS = $(SAFESEH_FLAG) $(LD_FLAGS) -!endif !if $(MSC_VER) >= 1600 @@ -246,7 +256,9 @@ !endif # Resource compiler settings +!if "x$(RC)" == "x" RC=rc.exe +!endif RC_FLAGS=/D "HS_VER=$(HS_VER)" \ /D "HS_DOTVER=$(HS_DOTVER)" \ /D "HS_BUILD_ID=$(HS_BUILD_ID)" \ diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp openjdk-6-6b38-1.13.10/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp 2016-01-20 01:41:33.000000000 +0000 @@ -119,7 +119,15 @@ inline void Assembler::ldf(FloatRegisterImpl::Width w, Register s1, Register s2, FloatRegister d) { emit_long( op(ldst_op) | fd(d, w) | alt_op3(ldf_op3, w) | rs1(s1) | rs2(s2) ); } inline void Assembler::ldf(FloatRegisterImpl::Width w, Register s1, int simm13a, FloatRegister d, RelocationHolder const& rspec) { emit_data( op(ldst_op) | fd(d, w) | alt_op3(ldf_op3, w) | rs1(s1) | immed(true) | simm(simm13a, 13), rspec); } -inline void Assembler::ldf(FloatRegisterImpl::Width w, const Address& a, FloatRegister d, int offset) { relocate(a.rspec(offset)); ldf( w, a.base(), a.disp() + offset, d); } +inline void Assembler::ldf(FloatRegisterImpl::Width w, const Address& a, FloatRegister d, int offset) { + relocate(a.rspec(offset)); + if (a.has_index()) { + assert(offset == 0, ""); + ldf(w, a.base(), a.index(), d); + } else { + ldf(w, a.base(), a.disp() + offset, d); + } +} inline void Assembler::ldfsr( Register s1, Register s2) { v9_dep(); emit_long( op(ldst_op) | op3(ldfsr_op3) | rs1(s1) | rs2(s2) ); } inline void Assembler::ldfsr( Register s1, int simm13a) { v9_dep(); emit_data( op(ldst_op) | op3(ldfsr_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); } diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/os/bsd/vm/os_bsd.cpp openjdk-6-6b38-1.13.10/hotspot/src/os/bsd/vm/os_bsd.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/os/bsd/vm/os_bsd.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/os/bsd/vm/os_bsd.cpp 2016-01-20 01:41:43.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2012, 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 @@ -1795,9 +1795,6 @@ ::abort(); } -// unused on bsd for now. -void os::set_error_file(const char *logfile) {} - // This method is a copy of JDK's sysGetLastErrorString // from src/solaris/hpi/src/system_md.c @@ -2530,6 +2527,7 @@ // determine if this is a legacy image or modules image // modules image doesn't have "jre" subdirectory len = strlen(buf); + assert(len < buflen, "Ran out of buffer space"); jrelib_p = buf + len; // Add the appropriate library subdir @@ -2565,7 +2563,7 @@ } } - strcpy(saved_jvm_path, buf); + strncpy(saved_jvm_path, buf, MAXPATHLEN); } void os::print_jni_name_prefix_on(outputStream* st, int args_size) { diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/os/bsd/vm/perfMemory_bsd.cpp openjdk-6-6b38-1.13.10/hotspot/src/os/bsd/vm/perfMemory_bsd.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/os/bsd/vm/perfMemory_bsd.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/os/bsd/vm/perfMemory_bsd.cpp 2016-01-20 01:41:43.000000000 +0000 @@ -196,7 +196,38 @@ } -// check if the given path is considered a secure directory for +// Check if the given statbuf is considered a secure directory for +// the backing store files. Returns true if the directory is considered +// a secure location. Returns false if the statbuf is a symbolic link or +// if an error occurred. +// +static bool is_statbuf_secure(struct stat *statp) { + if (S_ISLNK(statp->st_mode) || !S_ISDIR(statp->st_mode)) { + // The path represents a link or some non-directory file type, + // which is not what we expected. Declare it insecure. + // + return false; + } + // We have an existing directory, check if the permissions are safe. + // + if ((statp->st_mode & (S_IWGRP|S_IWOTH)) != 0) { + // The directory is open for writing and could be subjected + // to a symlink or a hard link attack. Declare it insecure. + // + return false; + } + // See if the uid of the directory matches the effective uid of the process. + // + if (statp->st_uid != geteuid()) { + // The directory was not created by this user, declare it insecure. + // + return false; + } + return true; +} + + +// Check if the given path is considered a secure directory for // the backing store files. Returns true if the directory exists // and is considered a secure location. Returns false if the path // is a symbolic link or if an error occurred. @@ -210,26 +241,184 @@ return false; } - // the path exists, now check it's mode - if (S_ISLNK(statbuf.st_mode) || !S_ISDIR(statbuf.st_mode)) { - // the path represents a link or some non-directory file type, - // which is not what we expected. declare it insecure. - // + // The path exists, see if it is secure. + return is_statbuf_secure(&statbuf); +} + + +// Check if the given directory file descriptor is considered a secure +// directory for the backing store files. Returns true if the directory +// exists and is considered a secure location. Returns false if the path +// is a symbolic link or if an error occurred. +// +static bool is_dirfd_secure(int dir_fd) { + struct stat statbuf; + int result = 0; + + RESTARTABLE(::fstat(dir_fd, &statbuf), result); + if (result == OS_ERR) { return false; } - else { - // we have an existing directory, check if the permissions are safe. - // - if ((statbuf.st_mode & (S_IWGRP|S_IWOTH)) != 0) { - // the directory is open for writing and could be subjected - // to a symlnk attack. declare it insecure. - // - return false; + + // The path exists, now check its mode. + return is_statbuf_secure(&statbuf); +} + + +// Check to make sure fd1 and fd2 are referencing the same file system object. +// +static bool is_same_fsobject(int fd1, int fd2) { + struct stat statbuf1; + struct stat statbuf2; + int result = 0; + + RESTARTABLE(::fstat(fd1, &statbuf1), result); + if (result == OS_ERR) { + return false; + } + RESTARTABLE(::fstat(fd2, &statbuf2), result); + if (result == OS_ERR) { + return false; + } + + if ((statbuf1.st_ino == statbuf2.st_ino) && + (statbuf1.st_dev == statbuf2.st_dev)) { + return true; + } else { + return false; + } +} + + +// Open the directory of the given path and validate it. +// Return a DIR * of the open directory. +// +static DIR *open_directory_secure(const char* dirname) { + // Open the directory using open() so that it can be verified + // to be secure by calling is_dirfd_secure(), opendir() and then check + // to see if they are the same file system object. This method does not + // introduce a window of opportunity for the directory to be attacked that + // calling opendir() and is_directory_secure() does. + int result; + DIR *dirp = NULL; + RESTARTABLE(::open(dirname, O_RDONLY|O_NOFOLLOW), result); + if (result == OS_ERR) { + // Directory doesn't exist or is a symlink, so there is nothing to cleanup. + if (PrintMiscellaneous && Verbose) { + if (errno == ELOOP) { + warning("directory %s is a symlink and is not secure\n", dirname); + } else { + warning("could not open directory %s: %s\n", dirname, strerror(errno)); + } } + return dirp; } - return true; + int fd = result; + + // Determine if the open directory is secure. + if (!is_dirfd_secure(fd)) { + // The directory is not a secure directory. + os::close(fd); + return dirp; + } + + // Open the directory. + dirp = ::opendir(dirname); + if (dirp == NULL) { + // The directory doesn't exist, close fd and return. + os::close(fd); + return dirp; + } + + // Check to make sure fd and dirp are referencing the same file system object. + if (!is_same_fsobject(fd, dirfd(dirp))) { + // The directory is not secure. + os::close(fd); + os::closedir(dirp); + dirp = NULL; + return dirp; + } + + // Close initial open now that we know directory is secure + os::close(fd); + + return dirp; } +// NOTE: The code below uses fchdir(), open() and unlink() because +// fdopendir(), openat() and unlinkat() are not supported on all +// versions. Once the support for fdopendir(), openat() and unlinkat() +// is available on all supported versions the code can be changed +// to use these functions. + +// Open the directory of the given path, validate it and set the +// current working directory to it. +// Return a DIR * of the open directory and the saved cwd fd. +// +static DIR *open_directory_secure_cwd(const char* dirname, int *saved_cwd_fd) { + + // Open the directory. + DIR* dirp = open_directory_secure(dirname); + if (dirp == NULL) { + // Directory doesn't exist or is insecure, so there is nothing to cleanup. + return dirp; + } + int fd = dirfd(dirp); + + // Open a fd to the cwd and save it off. + int result; + RESTARTABLE(::open(".", O_RDONLY), result); + if (result == OS_ERR) { + *saved_cwd_fd = -1; + } else { + *saved_cwd_fd = result; + } + + // Set the current directory to dirname by using the fd of the directory. + result = fchdir(fd); + + return dirp; +} + +// Close the directory and restore the current working directory. +// +static void close_directory_secure_cwd(DIR* dirp, int saved_cwd_fd) { + + int result; + // If we have a saved cwd change back to it and close the fd. + if (saved_cwd_fd != -1) { + result = fchdir(saved_cwd_fd); + ::close(saved_cwd_fd); + } + + // Close the directory. + os::closedir(dirp); +} + +// Check if the given file descriptor is considered a secure. +// +static bool is_file_secure(int fd, const char *filename) { + + int result; + struct stat statbuf; + + // Determine if the file is secure. + RESTARTABLE(::fstat(fd, &statbuf), result); + if (result == OS_ERR) { + if (PrintMiscellaneous && Verbose) { + warning("fstat failed on %s: %s\n", filename, strerror(errno)); + } + return false; + } + if (statbuf.st_nlink > 1) { + // A file with multiple links is not expected. + if (PrintMiscellaneous && Verbose) { + warning("file %s has multiple links\n", filename); + } + return false; + } + return true; +} // return the user name for the given user id // @@ -316,9 +505,11 @@ const char* tmpdirname = os::get_temp_directory(); + // open the temp directory DIR* tmpdirp = os::opendir(tmpdirname); if (tmpdirp == NULL) { + // Cannot open the directory to get the user name, return. return NULL; } @@ -343,25 +534,14 @@ strcat(usrdir_name, "/"); strcat(usrdir_name, dentry->d_name); - DIR* subdirp = os::opendir(usrdir_name); + // open the user directory + DIR* subdirp = open_directory_secure(usrdir_name); if (subdirp == NULL) { FREE_C_HEAP_ARRAY(char, usrdir_name); continue; } - // Since we don't create the backing store files in directories - // pointed to by symbolic links, we also don't follow them when - // looking for the files. We check for a symbolic link after the - // call to opendir in order to eliminate a small window where the - // symlink can be exploited. - // - if (!is_directory_secure(usrdir_name)) { - FREE_C_HEAP_ARRAY(char, usrdir_name); - os::closedir(subdirp); - continue; - } - struct dirent* udentry; char* udbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(usrdir_name)); errno = 0; @@ -463,27 +643,6 @@ } } - -// remove file -// -// this method removes the file with the given file name in the -// named directory. -// -static void remove_file(const char* dirname, const char* filename) { - - size_t nbytes = strlen(dirname) + strlen(filename) + 2; - char* path = NEW_C_HEAP_ARRAY(char, nbytes); - - strcpy(path, dirname); - strcat(path, "/"); - strcat(path, filename); - - remove_file(path); - - FREE_C_HEAP_ARRAY(char, path); -} - - // cleanup stale shared memory resources // // This method attempts to remove all stale shared memory files in @@ -495,16 +654,11 @@ // static void cleanup_sharedmem_resources(const char* dirname) { - // open the user temp directory - DIR* dirp = os::opendir(dirname); - + int saved_cwd_fd; + // open the directory and set the current working directory to it + DIR* dirp = open_directory_secure_cwd(dirname, &saved_cwd_fd); if (dirp == NULL) { - // directory doesn't exist, so there is nothing to cleanup - return; - } - - if (!is_directory_secure(dirname)) { - // the directory is not a secure directory + // directory doesn't exist or is insecure, so there is nothing to cleanup return; } @@ -518,6 +672,7 @@ // struct dirent* entry; char* dbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(dirname)); + errno = 0; while ((entry = os::readdir(dirp, (struct dirent *)dbuf)) != NULL) { @@ -528,7 +683,7 @@ if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) { // attempt to remove all unexpected files, except "." and ".." - remove_file(dirname, entry->d_name); + unlink(entry->d_name); } errno = 0; @@ -551,11 +706,14 @@ if ((pid == os::current_process_id()) || (kill(pid, 0) == OS_ERR && (errno == ESRCH || errno == EPERM))) { - remove_file(dirname, entry->d_name); + unlink(entry->d_name); } errno = 0; } - os::closedir(dirp); + + // close the directory and reset the current working directory + close_directory_secure_cwd(dirp, saved_cwd_fd); + FREE_C_HEAP_ARRAY(char, dbuf); } @@ -612,19 +770,54 @@ return -1; } - int result; + int saved_cwd_fd; + // open the directory and set the current working directory to it + DIR* dirp = open_directory_secure_cwd(dirname, &saved_cwd_fd); + if (dirp == NULL) { + // Directory doesn't exist or is insecure, so cannot create shared + // memory file. + return -1; + } - RESTARTABLE(::open(filename, O_RDWR|O_CREAT|O_TRUNC, S_IREAD|S_IWRITE), result); + // Open the filename in the current directory. + // Cannot use O_TRUNC here; truncation of an existing file has to happen + // after the is_file_secure() check below. + int result; + RESTARTABLE(::open(filename, O_RDWR|O_CREAT|O_NOFOLLOW, S_IREAD|S_IWRITE), result); if (result == OS_ERR) { if (PrintMiscellaneous && Verbose) { - warning("could not create file %s: %s\n", filename, strerror(errno)); + if (errno == ELOOP) { + warning("file %s is a symlink and is not secure\n", filename); + } else { + warning("could not create file %s: %s\n", filename, strerror(errno)); + } } + // close the directory and reset the current working directory + close_directory_secure_cwd(dirp, saved_cwd_fd); + return -1; } + // close the directory and reset the current working directory + close_directory_secure_cwd(dirp, saved_cwd_fd); // save the file descriptor int fd = result; + // check to see if the file is secure + if (!is_file_secure(fd, filename)) { + ::close(fd); + return -1; + } + + // truncate the file to get rid of any existing data + RESTARTABLE(::ftruncate(fd, (off_t)0), result); + if (result == OS_ERR) { + if (PrintMiscellaneous && Verbose) { + warning("could not truncate shared memory file: %s\n", strerror(errno)); + } + ::close(fd); + return -1; + } // set the file size RESTARTABLE(::ftruncate(fd, (off_t)size), result); if (result == OS_ERR) { @@ -682,8 +875,15 @@ THROW_MSG_0(vmSymbols::java_io_IOException(), strerror(errno)); } } + int fd = result; - return result; + // check to see if the file is secure + if (!is_file_secure(fd, filename)) { + ::close(fd); + return -1; + } + + return fd; } // create a named shared memory region. returns the address of the @@ -715,13 +915,21 @@ char* dirname = get_user_tmp_dir(user_name); char* filename = get_sharedmem_filename(dirname, vmid); + // get the short filename + char* short_filename = strrchr(filename, '/'); + if (short_filename == NULL) { + short_filename = filename; + } else { + short_filename++; + } + // cleanup any stale shared memory files cleanup_sharedmem_resources(dirname); assert(((size > 0) && (size % os::vm_page_size() == 0)), "unexpected PerfMemory region size"); - fd = create_sharedmem_resources(dirname, filename, size); + fd = create_sharedmem_resources(dirname, short_filename, size); FREE_C_HEAP_ARRAY(char, user_name); FREE_C_HEAP_ARRAY(char, dirname); @@ -835,12 +1043,12 @@ // constructs for the file and the shared memory mapping. if (mode == PerfMemory::PERF_MODE_RO) { mmap_prot = PROT_READ; - file_flags = O_RDONLY; + file_flags = O_RDONLY | O_NOFOLLOW; } else if (mode == PerfMemory::PERF_MODE_RW) { #ifdef LATER mmap_prot = PROT_READ | PROT_WRITE; - file_flags = O_RDWR; + file_flags = O_RDWR | O_NOFOLLOW; #else THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "Unsupported access mode"); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/os/linux/vm/os_linux.cpp openjdk-6-6b38-1.13.10/hotspot/src/os/linux/vm/os_linux.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/os/linux/vm/os_linux.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/os/linux/vm/os_linux.cpp 2016-01-20 01:41:23.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2012, 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 @@ -1597,9 +1597,6 @@ ::abort(); } -// unused on linux for now. -void os::set_error_file(const char *logfile) {} - // This method is a copy of JDK's sysGetLastErrorString // from src/solaris/hpi/src/system_md.c @@ -2256,6 +2253,7 @@ // determine if this is a legacy image or modules image // modules image doesn't have "jre" subdirectory len = strlen(buf); + assert(len < buflen, "Ran out of buffer room"); jrelib_p = buf + len; snprintf(jrelib_p, buflen-len, "/jre/lib/%s", cpu_arch); if (0 != access(buf, F_OK)) { @@ -2278,7 +2276,7 @@ } } - strcpy(saved_jvm_path, buf); + strncpy(saved_jvm_path, buf, MAXPATHLEN); } void os::print_jni_name_prefix_on(outputStream* st, int args_size) { @@ -4230,6 +4228,10 @@ Linux::capture_initial_stack(JavaThread::stack_size_at_create()); +#if defined(IA32) + workaround_expand_exec_shield_cs_limit(); +#endif + Linux::libpthread_init(); if (PrintMiscellaneous && (Verbose || WizardMode)) { tty->print_cr("[HotSpot is running with %s, %s(%s)]\n", diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/os/linux/vm/perfMemory_linux.cpp openjdk-6-6b38-1.13.10/hotspot/src/os/linux/vm/perfMemory_linux.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/os/linux/vm/perfMemory_linux.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/os/linux/vm/perfMemory_linux.cpp 2016-01-20 01:47:46.000000000 +0000 @@ -196,7 +196,38 @@ } -// check if the given path is considered a secure directory for +// Check if the given statbuf is considered a secure directory for +// the backing store files. Returns true if the directory is considered +// a secure location. Returns false if the statbuf is a symbolic link or +// if an error occurred. +// +static bool is_statbuf_secure(struct stat *statp) { + if (S_ISLNK(statp->st_mode) || !S_ISDIR(statp->st_mode)) { + // The path represents a link or some non-directory file type, + // which is not what we expected. Declare it insecure. + // + return false; + } + // We have an existing directory, check if the permissions are safe. + // + if ((statp->st_mode & (S_IWGRP|S_IWOTH)) != 0) { + // The directory is open for writing and could be subjected + // to a symlink or a hard link attack. Declare it insecure. + // + return false; + } + // If user is not root then see if the uid of the directory matches the effective uid of the process. + uid_t euid = geteuid(); + if ((euid != 0) && (statp->st_uid != euid)) { + // The directory was not created by this user, declare it insecure. + // + return false; + } + return true; +} + + +// Check if the given path is considered a secure directory for // the backing store files. Returns true if the directory exists // and is considered a secure location. Returns false if the path // is a symbolic link or if an error occurred. @@ -210,22 +241,180 @@ return false; } - // the path exists, now check it's mode - if (S_ISLNK(statbuf.st_mode) || !S_ISDIR(statbuf.st_mode)) { - // the path represents a link or some non-directory file type, - // which is not what we expected. declare it insecure. - // + // The path exists, see if it is secure. + return is_statbuf_secure(&statbuf); +} + + +// Check if the given directory file descriptor is considered a secure +// directory for the backing store files. Returns true if the directory +// exists and is considered a secure location. Returns false if the path +// is a symbolic link or if an error occurred. +// +static bool is_dirfd_secure(int dir_fd) { + struct stat statbuf; + int result = 0; + + RESTARTABLE(::fstat(dir_fd, &statbuf), result); + if (result == OS_ERR) { return false; } - else { - // we have an existing directory, check if the permissions are safe. - // - if ((statbuf.st_mode & (S_IWGRP|S_IWOTH)) != 0) { - // the directory is open for writing and could be subjected - // to a symlnk attack. declare it insecure. - // - return false; + + // The path exists, now check its mode. + return is_statbuf_secure(&statbuf); +} + + +// Check to make sure fd1 and fd2 are referencing the same file system object. +// +static bool is_same_fsobject(int fd1, int fd2) { + struct stat statbuf1; + struct stat statbuf2; + int result = 0; + + RESTARTABLE(::fstat(fd1, &statbuf1), result); + if (result == OS_ERR) { + return false; + } + RESTARTABLE(::fstat(fd2, &statbuf2), result); + if (result == OS_ERR) { + return false; + } + + if ((statbuf1.st_ino == statbuf2.st_ino) && + (statbuf1.st_dev == statbuf2.st_dev)) { + return true; + } else { + return false; + } +} + + +// Open the directory of the given path and validate it. +// Return a DIR * of the open directory. +// +static DIR *open_directory_secure(const char* dirname) { + // Open the directory using open() so that it can be verified + // to be secure by calling is_dirfd_secure(), opendir() and then check + // to see if they are the same file system object. This method does not + // introduce a window of opportunity for the directory to be attacked that + // calling opendir() and is_directory_secure() does. + int result; + DIR *dirp = NULL; + RESTARTABLE(::open(dirname, O_RDONLY|O_NOFOLLOW), result); + if (result == OS_ERR) { + if (PrintMiscellaneous && Verbose) { + if (errno == ELOOP) { + warning("directory %s is a symlink and is not secure\n", dirname); + } else { + warning("could not open directory %s: %s\n", dirname, strerror(errno)); + } + } + return dirp; + } + int fd = result; + + // Determine if the open directory is secure. + if (!is_dirfd_secure(fd)) { + // The directory is not a secure directory. + os::close(fd); + return dirp; + } + + // Open the directory. + dirp = ::opendir(dirname); + if (dirp == NULL) { + // The directory doesn't exist, close fd and return. + os::close(fd); + return dirp; + } + + // Check to make sure fd and dirp are referencing the same file system object. + if (!is_same_fsobject(fd, dirfd(dirp))) { + // The directory is not secure. + os::close(fd); + os::closedir(dirp); + dirp = NULL; + return dirp; + } + + // Close initial open now that we know directory is secure + os::close(fd); + + return dirp; +} + +// NOTE: The code below uses fchdir(), open() and unlink() because +// fdopendir(), openat() and unlinkat() are not supported on all +// versions. Once the support for fdopendir(), openat() and unlinkat() +// is available on all supported versions the code can be changed +// to use these functions. + +// Open the directory of the given path, validate it and set the +// current working directory to it. +// Return a DIR * of the open directory and the saved cwd fd. +// +static DIR *open_directory_secure_cwd(const char* dirname, int *saved_cwd_fd) { + + // Open the directory. + DIR* dirp = open_directory_secure(dirname); + if (dirp == NULL) { + // Directory doesn't exist or is insecure, so there is nothing to cleanup. + return dirp; + } + int fd = dirfd(dirp); + + // Open a fd to the cwd and save it off. + int result; + RESTARTABLE(::open(".", O_RDONLY), result); + if (result == OS_ERR) { + *saved_cwd_fd = -1; + } else { + *saved_cwd_fd = result; + } + + // Set the current directory to dirname by using the fd of the directory. + result = fchdir(fd); + + return dirp; +} + +// Close the directory and restore the current working directory. +// +static void close_directory_secure_cwd(DIR* dirp, int saved_cwd_fd) { + + int result; + // If we have a saved cwd change back to it and close the fd. + if (saved_cwd_fd != -1) { + result = fchdir(saved_cwd_fd); + ::close(saved_cwd_fd); + } + + // Close the directory. + os::closedir(dirp); +} + +// Check if the given file descriptor is considered a secure. +// +static bool is_file_secure(int fd, const char *filename) { + + int result; + struct stat statbuf; + + // Determine if the file is secure. + RESTARTABLE(::fstat(fd, &statbuf), result); + if (result == OS_ERR) { + if (PrintMiscellaneous && Verbose) { + warning("fstat failed on %s: %s\n", filename, strerror(errno)); + } + return false; + } + if (statbuf.st_nlink > 1) { + // A file with multiple links is not expected. + if (PrintMiscellaneous && Verbose) { + warning("file %s has multiple links\n", filename); } + return false; } return true; } @@ -316,9 +505,11 @@ const char* tmpdirname = os::get_temp_directory(); + // open the temp directory DIR* tmpdirp = os::opendir(tmpdirname); if (tmpdirp == NULL) { + // Cannot open the directory to get the user name, return. return NULL; } @@ -343,7 +534,8 @@ strcat(usrdir_name, "/"); strcat(usrdir_name, dentry->d_name); - DIR* subdirp = os::opendir(usrdir_name); + // open the user directory + DIR* subdirp = open_directory_secure(usrdir_name); if (subdirp == NULL) { FREE_C_HEAP_ARRAY(char, usrdir_name); @@ -464,26 +656,6 @@ } -// remove file -// -// this method removes the file with the given file name in the -// named directory. -// -static void remove_file(const char* dirname, const char* filename) { - - size_t nbytes = strlen(dirname) + strlen(filename) + 2; - char* path = NEW_C_HEAP_ARRAY(char, nbytes); - - strcpy(path, dirname); - strcat(path, "/"); - strcat(path, filename); - - remove_file(path); - - FREE_C_HEAP_ARRAY(char, path); -} - - // cleanup stale shared memory resources // // This method attempts to remove all stale shared memory files in @@ -495,16 +667,11 @@ // static void cleanup_sharedmem_resources(const char* dirname) { - // open the user temp directory - DIR* dirp = os::opendir(dirname); - + int saved_cwd_fd; + // open the directory + DIR* dirp = open_directory_secure_cwd(dirname, &saved_cwd_fd); if (dirp == NULL) { - // directory doesn't exist, so there is nothing to cleanup - return; - } - - if (!is_directory_secure(dirname)) { - // the directory is not a secure directory + // directory doesn't exist or is insecure, so there is nothing to cleanup return; } @@ -518,6 +685,7 @@ // struct dirent* entry; char* dbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(dirname)); + errno = 0; while ((entry = os::readdir(dirp, (struct dirent *)dbuf)) != NULL) { @@ -526,9 +694,8 @@ if (pid == 0) { if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) { - // attempt to remove all unexpected files, except "." and ".." - remove_file(dirname, entry->d_name); + unlink(entry->d_name); } errno = 0; @@ -550,12 +717,14 @@ // if ((pid == os::current_process_id()) || (kill(pid, 0) == OS_ERR && (errno == ESRCH || errno == EPERM))) { - - remove_file(dirname, entry->d_name); + unlink(entry->d_name); } errno = 0; } - os::closedir(dirp); + + // close the directory and reset the current working directory + close_directory_secure_cwd(dirp, saved_cwd_fd); + FREE_C_HEAP_ARRAY(char, dbuf); } @@ -612,19 +781,54 @@ return -1; } - int result; + int saved_cwd_fd; + // open the directory and set the current working directory to it + DIR* dirp = open_directory_secure_cwd(dirname, &saved_cwd_fd); + if (dirp == NULL) { + // Directory doesn't exist or is insecure, so cannot create shared + // memory file. + return -1; + } - RESTARTABLE(::open(filename, O_RDWR|O_CREAT|O_TRUNC, S_IREAD|S_IWRITE), result); + // Open the filename in the current directory. + // Cannot use O_TRUNC here; truncation of an existing file has to happen + // after the is_file_secure() check below. + int result; + RESTARTABLE(::open(filename, O_RDWR|O_CREAT|O_NOFOLLOW, S_IREAD|S_IWRITE), result); if (result == OS_ERR) { if (PrintMiscellaneous && Verbose) { - warning("could not create file %s: %s\n", filename, strerror(errno)); + if (errno == ELOOP) { + warning("file %s is a symlink and is not secure\n", filename); + } else { + warning("could not create file %s: %s\n", filename, strerror(errno)); + } } + // close the directory and reset the current working directory + close_directory_secure_cwd(dirp, saved_cwd_fd); + return -1; } + // close the directory and reset the current working directory + close_directory_secure_cwd(dirp, saved_cwd_fd); // save the file descriptor int fd = result; + // check to see if the file is secure + if (!is_file_secure(fd, filename)) { + ::close(fd); + return -1; + } + + // truncate the file to get rid of any existing data + RESTARTABLE(::ftruncate(fd, (off_t)0), result); + if (result == OS_ERR) { + if (PrintMiscellaneous && Verbose) { + warning("could not truncate shared memory file: %s\n", strerror(errno)); + } + ::close(fd); + return -1; + } // set the file size RESTARTABLE(::ftruncate(fd, (off_t)size), result); if (result == OS_ERR) { @@ -682,8 +886,15 @@ THROW_MSG_0(vmSymbols::java_io_IOException(), strerror(errno)); } } + int fd = result; + + // check to see if the file is secure + if (!is_file_secure(fd, filename)) { + ::close(fd); + return -1; + } - return result; + return fd; } // create a named shared memory region. returns the address of the @@ -714,6 +925,13 @@ char* dirname = get_user_tmp_dir(user_name); char* filename = get_sharedmem_filename(dirname, vmid); + // get the short filename + char* short_filename = strrchr(filename, '/'); + if (short_filename == NULL) { + short_filename = filename; + } else { + short_filename++; + } // cleanup any stale shared memory files cleanup_sharedmem_resources(dirname); @@ -721,7 +939,7 @@ assert(((size > 0) && (size % os::vm_page_size() == 0)), "unexpected PerfMemory region size"); - fd = create_sharedmem_resources(dirname, filename, size); + fd = create_sharedmem_resources(dirname, short_filename, size); FREE_C_HEAP_ARRAY(char, user_name); FREE_C_HEAP_ARRAY(char, dirname); @@ -835,12 +1053,12 @@ // constructs for the file and the shared memory mapping. if (mode == PerfMemory::PERF_MODE_RO) { mmap_prot = PROT_READ; - file_flags = O_RDONLY; + file_flags = O_RDONLY | O_NOFOLLOW; } else if (mode == PerfMemory::PERF_MODE_RW) { #ifdef LATER mmap_prot = PROT_READ | PROT_WRITE; - file_flags = O_RDWR; + file_flags = O_RDWR | O_NOFOLLOW; #else THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "Unsupported access mode"); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/os/solaris/vm/os_solaris.cpp openjdk-6-6b38-1.13.10/hotspot/src/os/solaris/vm/os_solaris.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/os/solaris/vm/os_solaris.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/os/solaris/vm/os_solaris.cpp 2016-01-20 01:41:26.000000000 +0000 @@ -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 @@ -1889,9 +1889,6 @@ _exit(-1); } -// unused -void os::set_error_file(const char *logfile) {} - // DLL functions const char* os::dll_file_extension() { return ".so"; } @@ -2548,6 +2545,7 @@ // determine if this is a legacy image or modules image // modules image doesn't have "jre" subdirectory len = strlen(buf); + assert(len < buflen, "Ran out of buffer space"); jrelib_p = buf + len; snprintf(jrelib_p, buflen-len, "/jre/lib/%s", cpu_arch); if (0 != access(buf, F_OK)) { @@ -2568,7 +2566,7 @@ } } - strcpy(saved_jvm_path, buf); + strncpy(saved_jvm_path, buf, MAXPATHLEN); } diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/os/solaris/vm/perfMemory_solaris.cpp openjdk-6-6b38-1.13.10/hotspot/src/os/solaris/vm/perfMemory_solaris.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/os/solaris/vm/perfMemory_solaris.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/os/solaris/vm/perfMemory_solaris.cpp 2016-01-20 01:47:46.000000000 +0000 @@ -198,7 +198,38 @@ } -// check if the given path is considered a secure directory for +// Check if the given statbuf is considered a secure directory for +// the backing store files. Returns true if the directory is considered +// a secure location. Returns false if the statbuf is a symbolic link or +// if an error occurred. +// +static bool is_statbuf_secure(struct stat *statp) { + if (S_ISLNK(statp->st_mode) || !S_ISDIR(statp->st_mode)) { + // The path represents a link or some non-directory file type, + // which is not what we expected. Declare it insecure. + // + return false; + } + // We have an existing directory, check if the permissions are safe. + // + if ((statp->st_mode & (S_IWGRP|S_IWOTH)) != 0) { + // The directory is open for writing and could be subjected + // to a symlink or a hard link attack. Declare it insecure. + // + return false; + } + // If user is not root then see if the uid of the directory matches the effective uid of the process. + uid_t euid = geteuid(); + if ((euid != 0) && (statp->st_uid != euid)) { + // The directory was not created by this user, declare it insecure. + // + return false; + } + return true; +} + + +// Check if the given path is considered a secure directory for // the backing store files. Returns true if the directory exists // and is considered a secure location. Returns false if the path // is a symbolic link or if an error occurred. @@ -212,26 +243,184 @@ return false; } - // the path exists, now check it's mode - if (S_ISLNK(statbuf.st_mode) || !S_ISDIR(statbuf.st_mode)) { - // the path represents a link or some non-directory file type, - // which is not what we expected. declare it insecure. - // + // The path exists, see if it is secure. + return is_statbuf_secure(&statbuf); +} + + +// Check if the given directory file descriptor is considered a secure +// directory for the backing store files. Returns true if the directory +// exists and is considered a secure location. Returns false if the path +// is a symbolic link or if an error occurred. +// +static bool is_dirfd_secure(int dir_fd) { + struct stat statbuf; + int result = 0; + + RESTARTABLE(::fstat(dir_fd, &statbuf), result); + if (result == OS_ERR) { return false; } - else { - // we have an existing directory, check if the permissions are safe. - // - if ((statbuf.st_mode & (S_IWGRP|S_IWOTH)) != 0) { - // the directory is open for writing and could be subjected - // to a symlnk attack. declare it insecure. - // - return false; + + // The path exists, now check its mode. + return is_statbuf_secure(&statbuf); +} + + +// Check to make sure fd1 and fd2 are referencing the same file system object. +// +static bool is_same_fsobject(int fd1, int fd2) { + struct stat statbuf1; + struct stat statbuf2; + int result = 0; + + RESTARTABLE(::fstat(fd1, &statbuf1), result); + if (result == OS_ERR) { + return false; + } + RESTARTABLE(::fstat(fd2, &statbuf2), result); + if (result == OS_ERR) { + return false; + } + + if ((statbuf1.st_ino == statbuf2.st_ino) && + (statbuf1.st_dev == statbuf2.st_dev)) { + return true; + } else { + return false; + } +} + + +// Open the directory of the given path and validate it. +// Return a DIR * of the open directory. +// +static DIR *open_directory_secure(const char* dirname) { + // Open the directory using open() so that it can be verified + // to be secure by calling is_dirfd_secure(), opendir() and then check + // to see if they are the same file system object. This method does not + // introduce a window of opportunity for the directory to be attacked that + // calling opendir() and is_directory_secure() does. + int result; + DIR *dirp = NULL; + RESTARTABLE(::open(dirname, O_RDONLY|O_NOFOLLOW), result); + if (result == OS_ERR) { + // Directory doesn't exist or is a symlink, so there is nothing to cleanup. + if (PrintMiscellaneous && Verbose) { + if (errno == ELOOP) { + warning("directory %s is a symlink and is not secure\n", dirname); + } else { + warning("could not open directory %s: %s\n", dirname, strerror(errno)); + } } + return dirp; } - return true; + int fd = result; + + // Determine if the open directory is secure. + if (!is_dirfd_secure(fd)) { + // The directory is not a secure directory. + os::close(fd); + return dirp; + } + + // Open the directory. + dirp = ::opendir(dirname); + if (dirp == NULL) { + // The directory doesn't exist, close fd and return. + os::close(fd); + return dirp; + } + + // Check to make sure fd and dirp are referencing the same file system object. + if (!is_same_fsobject(fd, dirp->dd_fd)) { + // The directory is not secure. + os::close(fd); + os::closedir(dirp); + dirp = NULL; + return dirp; + } + + // Close initial open now that we know directory is secure + os::close(fd); + + return dirp; +} + +// NOTE: The code below uses fchdir(), open() and unlink() because +// fdopendir(), openat() and unlinkat() are not supported on all +// versions. Once the support for fdopendir(), openat() and unlinkat() +// is available on all supported versions the code can be changed +// to use these functions. + +// Open the directory of the given path, validate it and set the +// current working directory to it. +// Return a DIR * of the open directory and the saved cwd fd. +// +static DIR *open_directory_secure_cwd(const char* dirname, int *saved_cwd_fd) { + + // Open the directory. + DIR* dirp = open_directory_secure(dirname); + if (dirp == NULL) { + // Directory doesn't exist or is insecure, so there is nothing to cleanup. + return dirp; + } + int fd = dirp->dd_fd; + + // Open a fd to the cwd and save it off. + int result; + RESTARTABLE(::open(".", O_RDONLY), result); + if (result == OS_ERR) { + *saved_cwd_fd = -1; + } else { + *saved_cwd_fd = result; + } + + // Set the current directory to dirname by using the fd of the directory. + result = fchdir(fd); + + return dirp; +} + +// Close the directory and restore the current working directory. +// +static void close_directory_secure_cwd(DIR* dirp, int saved_cwd_fd) { + + int result; + // If we have a saved cwd change back to it and close the fd. + if (saved_cwd_fd != -1) { + result = fchdir(saved_cwd_fd); + ::close(saved_cwd_fd); + } + + // Close the directory. + os::closedir(dirp); } +// Check if the given file descriptor is considered a secure. +// +static bool is_file_secure(int fd, const char *filename) { + + int result; + struct stat statbuf; + + // Determine if the file is secure. + RESTARTABLE(::fstat(fd, &statbuf), result); + if (result == OS_ERR) { + if (PrintMiscellaneous && Verbose) { + warning("fstat failed on %s: %s\n", filename, strerror(errno)); + } + return false; + } + if (statbuf.st_nlink > 1) { + // A file with multiple links is not expected. + if (PrintMiscellaneous && Verbose) { + warning("file %s has multiple links\n", filename); + } + return false; + } + return true; +} // return the user name for the given user id // @@ -307,9 +496,11 @@ const char* tmpdirname = os::get_temp_directory(); + // open the temp directory DIR* tmpdirp = os::opendir(tmpdirname); if (tmpdirp == NULL) { + // Cannot open the directory to get the user name, return. return NULL; } @@ -334,7 +525,8 @@ strcat(usrdir_name, "/"); strcat(usrdir_name, dentry->d_name); - DIR* subdirp = os::opendir(usrdir_name); + // open the user directory + DIR* subdirp = open_directory_secure(usrdir_name); if (subdirp == NULL) { FREE_C_HEAP_ARRAY(char, usrdir_name); @@ -501,26 +693,6 @@ } -// remove file -// -// this method removes the file with the given file name in the -// named directory. -// -static void remove_file(const char* dirname, const char* filename) { - - size_t nbytes = strlen(dirname) + strlen(filename) + 2; - char* path = NEW_C_HEAP_ARRAY(char, nbytes); - - strcpy(path, dirname); - strcat(path, "/"); - strcat(path, filename); - - remove_file(path); - - FREE_C_HEAP_ARRAY(char, path); -} - - // cleanup stale shared memory resources // // This method attempts to remove all stale shared memory files in @@ -532,16 +704,11 @@ // static void cleanup_sharedmem_resources(const char* dirname) { - // open the user temp directory - DIR* dirp = os::opendir(dirname); - + int saved_cwd_fd; + // open the directory + DIR* dirp = open_directory_secure_cwd(dirname, &saved_cwd_fd); if (dirp == NULL) { - // directory doesn't exist, so there is nothing to cleanup - return; - } - - if (!is_directory_secure(dirname)) { - // the directory is not a secure directory + // directory doesn't exist or is insecure, so there is nothing to cleanup return; } @@ -555,6 +722,7 @@ // struct dirent* entry; char* dbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(dirname)); + errno = 0; while ((entry = os::readdir(dirp, (struct dirent *)dbuf)) != NULL) { @@ -565,7 +733,7 @@ if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) { // attempt to remove all unexpected files, except "." and ".." - remove_file(dirname, entry->d_name); + unlink(entry->d_name); } errno = 0; @@ -588,11 +756,14 @@ if ((pid == os::current_process_id()) || (kill(pid, 0) == OS_ERR && (errno == ESRCH || errno == EPERM))) { - remove_file(dirname, entry->d_name); + unlink(entry->d_name); } errno = 0; } - os::closedir(dirp); + + // close the directory and reset the current working directory + close_directory_secure_cwd(dirp, saved_cwd_fd); + FREE_C_HEAP_ARRAY(char, dbuf); } @@ -649,19 +820,54 @@ return -1; } - int result; + int saved_cwd_fd; + // open the directory and set the current working directory to it + DIR* dirp = open_directory_secure_cwd(dirname, &saved_cwd_fd); + if (dirp == NULL) { + // Directory doesn't exist or is insecure, so cannot create shared + // memory file. + return -1; + } - RESTARTABLE(::open(filename, O_RDWR|O_CREAT|O_TRUNC, S_IREAD|S_IWRITE), result); + // Open the filename in the current directory. + // Cannot use O_TRUNC here; truncation of an existing file has to happen + // after the is_file_secure() check below. + int result; + RESTARTABLE(::open(filename, O_RDWR|O_CREAT|O_NOFOLLOW, S_IREAD|S_IWRITE), result); if (result == OS_ERR) { if (PrintMiscellaneous && Verbose) { - warning("could not create file %s: %s\n", filename, strerror(errno)); + if (errno == ELOOP) { + warning("file %s is a symlink and is not secure\n", filename); + } else { + warning("could not create file %s: %s\n", filename, strerror(errno)); + } } + // close the directory and reset the current working directory + close_directory_secure_cwd(dirp, saved_cwd_fd); + return -1; } + // close the directory and reset the current working directory + close_directory_secure_cwd(dirp, saved_cwd_fd); // save the file descriptor int fd = result; + // check to see if the file is secure + if (!is_file_secure(fd, filename)) { + ::close(fd); + return -1; + } + + // truncate the file to get rid of any existing data + RESTARTABLE(::ftruncate(fd, (off_t)0), result); + if (result == OS_ERR) { + if (PrintMiscellaneous && Verbose) { + warning("could not truncate shared memory file: %s\n", strerror(errno)); + } + ::close(fd); + return -1; + } // set the file size RESTARTABLE(::ftruncate(fd, (off_t)size), result); if (result == OS_ERR) { @@ -697,8 +903,15 @@ THROW_MSG_0(vmSymbols::java_io_IOException(), strerror(errno)); } } + int fd = result; + + // check to see if the file is secure + if (!is_file_secure(fd, filename)) { + ::close(fd); + return -1; + } - return result; + return fd; } // create a named shared memory region. returns the address of the @@ -730,13 +943,21 @@ char* dirname = get_user_tmp_dir(user_name); char* filename = get_sharedmem_filename(dirname, vmid); + // get the short filename + char* short_filename = strrchr(filename, '/'); + if (short_filename == NULL) { + short_filename = filename; + } else { + short_filename++; + } + // cleanup any stale shared memory files cleanup_sharedmem_resources(dirname); assert(((size > 0) && (size % os::vm_page_size() == 0)), "unexpected PerfMemory region size"); - fd = create_sharedmem_resources(dirname, filename, size); + fd = create_sharedmem_resources(dirname, short_filename, size); FREE_C_HEAP_ARRAY(char, user_name); FREE_C_HEAP_ARRAY(char, dirname); @@ -850,12 +1071,12 @@ // constructs for the file and the shared memory mapping. if (mode == PerfMemory::PERF_MODE_RO) { mmap_prot = PROT_READ; - file_flags = O_RDONLY; + file_flags = O_RDONLY | O_NOFOLLOW; } else if (mode == PerfMemory::PERF_MODE_RW) { #ifdef LATER mmap_prot = PROT_READ | PROT_WRITE; - file_flags = O_RDWR; + file_flags = O_RDWR | O_NOFOLLOW; #else THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "Unsupported access mode"); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/os/windows/vm/os_windows.cpp openjdk-6-6b38-1.13.10/hotspot/src/os/windows/vm/os_windows.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/os/windows/vm/os_windows.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/os/windows/vm/os_windows.cpp 2016-01-20 01:41:27.000000000 +0000 @@ -1751,27 +1751,28 @@ // libjvm.so is installed there (append a fake suffix // hotspot/libjvm.so). char* java_home_var = ::getenv("JAVA_HOME"); - if (java_home_var != NULL && java_home_var[0] != 0) { + if (java_home_var != NULL && java_home_var[0] != 0 && + strlen(java_home_var) < (size_t)buflen) { - strncpy(buf, java_home_var, buflen); + strncpy(buf, java_home_var, buflen); - // determine if this is a legacy image or modules image - // modules image doesn't have "jre" subdirectory - size_t len = strlen(buf); - char* jrebin_p = buf + len; - jio_snprintf(jrebin_p, buflen-len, "\\jre\\bin\\"); - if (0 != _access(buf, 0)) { - jio_snprintf(jrebin_p, buflen-len, "\\bin\\"); - } - len = strlen(buf); - jio_snprintf(buf + len, buflen-len, "hotspot\\jvm.dll"); + // determine if this is a legacy image or modules image + // modules image doesn't have "jre" subdirectory + size_t len = strlen(buf); + char* jrebin_p = buf + len; + jio_snprintf(jrebin_p, buflen-len, "\\jre\\bin\\"); + if (0 != _access(buf, 0)) { + jio_snprintf(jrebin_p, buflen-len, "\\bin\\"); + } + len = strlen(buf); + jio_snprintf(buf + len, buflen-len, "hotspot\\jvm.dll"); } } if(buf[0] == '\0') { - GetModuleFileName(vm_lib_handle, buf, buflen); + GetModuleFileName(vm_lib_handle, buf, buflen); } - strcpy(saved_jvm_path, buf); + strncpy(saved_jvm_path, buf, MAX_PATH); } @@ -2181,17 +2182,6 @@ #endif //_WIN64 -// Fatal error reporting is single threaded so we can make this a -// static and preallocated. If it's more than MAX_PATH silently ignore -// it. -static char saved_error_file[MAX_PATH] = {0}; - -void os::set_error_file(const char *logfile) { - if (strlen(logfile) <= MAX_PATH) { - strncpy(saved_error_file, logfile, MAX_PATH); - } -} - static inline void report_error(Thread* t, DWORD exception_code, address addr, void* siginfo, void* context) { VMError err(t, exception_code, addr, siginfo, context); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp openjdk-6-6b38-1.13.10/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp 2016-01-20 01:41:31.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2011, 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 @@ -862,3 +862,46 @@ : "r" (fpu_cntrl) : "memory"); #endif // !AMD64 } + + +/* + * IA32 only: execute code at a high address in case buggy NX emulation is present. I.e. avoid CS limit + * updates (JDK-8023956). + */ +void os::workaround_expand_exec_shield_cs_limit() { +#if defined(IA32) + size_t page_size = os::vm_page_size(); + /* + * Take the highest VA the OS will give us and exec + * + * Although using -(pagesz) as mmap hint works on newer kernel as you would + * think, older variants affected by this work-around don't (search forward only). + * + * On the affected distributions, we understand the memory layout to be: + * + * TASK_LIMIT= 3G, main stack base close to TASK_LIMT. + * + * A few pages south main stack will do it. + * + * If we are embedded in an app other than launcher (initial != main stack), + * we don't have much control or understanding of the address space, just let it slide. + */ + char* hint = (char*) (Linux::initial_thread_stack_bottom() - + ((StackYellowPages + StackRedPages + 1) * page_size)); + char* codebuf = os::attempt_reserve_memory_at(page_size, hint); + if ( (codebuf == NULL) || (!os::commit_memory(codebuf, page_size, true)) ) { + return; // No matter, we tried, best effort. + } + if (PrintMiscellaneous && (Verbose || WizardMode)) { + tty->print_cr("[CS limit NX emulation work-around, exec code at: %p]", codebuf); + } + + // Some code to exec: the 'ret' instruction + codebuf[0] = 0xC3; + + // Call the code in the codebuf + __asm__ volatile("call *%0" : : "r"(codebuf)); + + // keep the page mapped so CS limit isn't reduced. +#endif +} diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.hpp openjdk-6-6b38-1.13.10/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.hpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.hpp 2016-01-20 01:41:31.000000000 +0000 @@ -36,4 +36,17 @@ // Note: Currently only used in 64 bit Windows implementations static bool register_code_area(char *low, char *high) { return true; } + /* + * Work-around for broken NX emulation using CS limit, Red Hat patch "Exec-Shield" + * (IA32 only). + * + * Map and execute at a high VA to prevent CS lazy updates race with SMP MM + * invalidation.Further code generation by the JVM will no longer cause CS limit + * updates. + * + * Affects IA32: RHEL 5 & 6, Ubuntu 10.04 (LTS), 10.10, 11.04, 11.10, 12.04. + * @see JDK-8023956 + */ + static void workaround_expand_exec_shield_cs_limit(); + #endif // OS_CPU_LINUX_X86_VM_OS_LINUX_X86_HPP diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp 2016-01-20 01:41:34.000000000 +0000 @@ -2115,7 +2115,15 @@ #ifdef _LP64 } #endif - __ shift_left(index_op, log2_scale, index_op); + LIR_Opr tmp = new_pointer_register(); + if (TwoOperandLIRForm) { + __ move(index_op, tmp); + index_op = tmp; + } + __ shift_left(index_op, log2_scale, tmp); + if (!TwoOperandLIRForm) { + index_op = tmp; + } } #ifdef _LP64 else if(!index_op->is_illegal() && index_op->type() == T_INT) { diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp 2016-01-20 01:41:35.000000000 +0000 @@ -89,8 +89,8 @@ public: ArgumentMap *_vars; ArgumentMap *_stack; - short _stack_height; - short _max_stack; + int _stack_height; + int _max_stack; bool _initialized; ArgumentMap empty_map; diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/classFileParser.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/classFileParser.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/classFileParser.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/classFileParser.cpp 2016-01-20 01:41:38.000000000 +0000 @@ -955,7 +955,7 @@ "Wrong size %u for field's Signature attribute in class file %s", attribute_length, CHECK); } - generic_signature_index = cfs->get_u2(CHECK); + generic_signature_index = parse_generic_signature_attribute(cp, CHECK); } else if (attribute_name == vmSymbols::tag_runtime_visible_annotations()) { runtime_visible_annotations_length = attribute_length; runtime_visible_annotations = cfs->get_u1_buffer(); @@ -1915,8 +1915,7 @@ "Invalid Signature attribute length %u in class file %s", method_attribute_length, CHECK_(nullHandle)); } - cfs->guarantee_more(2, CHECK_(nullHandle)); // generic_signature_index - generic_signature_index = cfs->get_u2_fast(); + generic_signature_index = parse_generic_signature_attribute(cp, CHECK_(nullHandle)); } else if (method_attribute_name == vmSymbols::tag_runtime_visible_annotations()) { runtime_visible_annotations_length = method_attribute_length; runtime_visible_annotations = cfs->get_u1_buffer(); @@ -2288,6 +2287,17 @@ k->set_source_file_name(cp->symbol_at(sourcefile_index)); } +// Parse generic_signature attribute for methods and fields +u2 ClassFileParser::parse_generic_signature_attribute(constantPoolHandle cp, TRAPS) { + ClassFileStream* cfs = stream(); + cfs->guarantee_more(2, CHECK_0); // generic_signature_index + u2 generic_signature_index = cfs->get_u2_fast(); + check_property( + valid_symbol_at(cp, generic_signature_index), + "Invalid Signature attribute at constant pool index %u in class file %s", + generic_signature_index, CHECK_0); + return generic_signature_index; +} void ClassFileParser::parse_classfile_source_debug_extension_attribute(constantPoolHandle cp, @@ -2409,18 +2419,19 @@ ClassFileStream* cfs = stream(); u1* current_start = cfs->current(); - cfs->guarantee_more(2, CHECK); // length + guarantee_property(attribute_byte_length > sizeof(u2), + "Invalid BootstrapMethods attribute length %u in class file %s", + attribute_byte_length, + CHECK); + + cfs->guarantee_more(attribute_byte_length, CHECK); + int attribute_array_length = cfs->get_u2_fast(); guarantee_property(_max_bootstrap_specifier_index < attribute_array_length, "Short length on BootstrapMethods in class file %s", CHECK); - guarantee_property(attribute_byte_length > sizeof(u2), - "Invalid BootstrapMethods attribute length %u in class file %s", - attribute_byte_length, - CHECK); - // The attribute contains a counted array of counted tuples of shorts, // represending bootstrap specifiers: // length*{bootstrap_method_index, argument_count*{argument_index}} @@ -2453,6 +2464,11 @@ "bootstrap_method_index %u has bad constant type in class file %s", bootstrap_method_index, CHECK); + + guarantee_property((operand_fill_index + 1 + argument_count) < operands->length(), + "Invalid BootstrapMethods num_bootstrap_methods or num_bootstrap_arguments value in class file %s", + CHECK); + operands->short_at_put(operand_fill_index++, bootstrap_method_index); operands->short_at_put(operand_fill_index++, argument_count); @@ -2470,7 +2486,6 @@ } assert(operand_fill_index == operands()->length(), "exact fill"); - assert(constantPoolOopDesc::operand_array_length(operands()) == attribute_array_length, "correct decode"); u1* current_end = cfs->current(); guarantee_property(current_end == current_start + attribute_byte_length, diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/classFileParser.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/classFileParser.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/classFileParser.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/classFileParser.hpp 2016-01-20 01:41:38.000000000 +0000 @@ -127,6 +127,7 @@ typeArrayOop parse_stackmap_table(u4 code_attribute_length, TRAPS); // Classfile attribute parsing + u2 parse_generic_signature_attribute(constantPoolHandle cp, TRAPS); void parse_classfile_sourcefile_attribute(constantPoolHandle cp, instanceKlassHandle k, TRAPS); void parse_classfile_source_debug_extension_attribute(constantPoolHandle cp, instanceKlassHandle k, int length, TRAPS); @@ -249,6 +250,12 @@ : cp->tag_at(index).is_klass_reference()); } + // Checks that the cpool index is in range and is a utf8 + bool valid_symbol_at(constantPoolHandle cp, int cpool_index) { + return (cp->is_within_bounds(cpool_index) && + cp->tag_at(cpool_index).is_utf8()); + } + public: // Constructor ClassFileParser(ClassFileStream* st) { set_stream(st); } diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/stackMapTable.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/stackMapTable.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/stackMapTable.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/stackMapTable.cpp 2016-01-20 01:41:39.000000000 +0000 @@ -68,27 +68,29 @@ bool StackMapTable::match_stackmap( StackMapFrame* frame, int32_t target, - bool match, bool update, TRAPS) const { + bool match, bool update, bool handler, TRAPS) const { int index = get_index_from_offset(target); return match_stackmap( frame, target, index, match, - update, CHECK_VERIFY_(frame->verifier(), false)); + update, handler, CHECK_VERIFY_(frame->verifier(), false)); } // Match and/or update current_frame to the frame in stackmap table with // specified offset and frame index. Return true if the two frames match. +// handler is true if the frame in stackmap_table is for an exception handler. // -// The values of match and update are: _match__update_ +// The values of match and update are: _match__update__handler // -// checking a branch target/exception handler: true false +// checking a branch target: true false false +// checking an exception handler: true false true // linear bytecode verification following an -// unconditional branch: false true +// unconditional branch: false true false // linear bytecode verification not following an -// unconditional branch: true true +// unconditional branch: true true false bool StackMapTable::match_stackmap( StackMapFrame* frame, int32_t target, int32_t frame_index, - bool match, bool update, TRAPS) const { + bool match, bool update, bool handler, TRAPS) const { if (frame_index < 0 || frame_index >= _frame_count) { frame->verifier()->verify_error(frame->offset(), "Expecting a stackmap frame at branch target %d", target); @@ -98,12 +100,10 @@ bool result = true; StackMapFrame *stackmap_frame = _frame_array[frame_index]; if (match) { - // when checking handler target, match == true && update == false - bool is_exception_handler = !update; // Has direct control flow from last instruction, need to match the two // frames. result = frame->is_assignable_to( - stackmap_frame, is_exception_handler, + stackmap_frame, handler, CHECK_VERIFY_(frame->verifier(), false)); } if (update) { @@ -126,7 +126,7 @@ void StackMapTable::check_jump_target( StackMapFrame* frame, int32_t target, TRAPS) const { bool match = match_stackmap( - frame, target, true, false, CHECK_VERIFY(frame->verifier())); + frame, target, true, false, false, CHECK_VERIFY(frame->verifier())); if (!match || (target < 0 || target >= _code_length)) { frame->verifier()->verify_error(frame->offset(), "Inconsistent stackmap frames at branch target %d", target); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/stackMapTable.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/stackMapTable.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/stackMapTable.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/stackMapTable.hpp 2016-01-20 01:41:39.000000000 +0000 @@ -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 @@ -73,12 +73,12 @@ // specified offset. Return true if the two frames match. bool match_stackmap( StackMapFrame* current_frame, int32_t offset, - bool match, bool update, TRAPS) const; + bool match, bool update, bool handler, TRAPS) const; // Match and/or update current_frame to the frame in stackmap table with // specified offset and frame index. Return true if the two frames match. bool match_stackmap( StackMapFrame* current_frame, int32_t offset, int32_t frame_index, - bool match, bool update, TRAPS) const; + bool match, bool update, bool handler, TRAPS) const; // Check jump instructions. Make sure there are no uninitialized // instances on backward branch. diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/systemDictionary.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/systemDictionary.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/systemDictionary.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/systemDictionary.cpp 2016-01-20 01:41:39.000000000 +0000 @@ -1991,11 +1991,12 @@ instanceKlass::cast(WK_KLASS(Reference_klass))->set_reference_type(REF_OTHER); instanceRefKlass::update_nonstatic_oop_maps(WK_KLASS(Reference_klass)); - initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(PhantomReference_klass), scan, CHECK); + initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(Cleaner_klass), scan, CHECK); instanceKlass::cast(WK_KLASS(SoftReference_klass))->set_reference_type(REF_SOFT); instanceKlass::cast(WK_KLASS(WeakReference_klass))->set_reference_type(REF_WEAK); instanceKlass::cast(WK_KLASS(FinalReference_klass))->set_reference_type(REF_FINAL); instanceKlass::cast(WK_KLASS(PhantomReference_klass))->set_reference_type(REF_PHANTOM); + instanceKlass::cast(WK_KLASS(Cleaner_klass))->set_reference_type(REF_CLEANER); // JSR 292 classes WKID jsr292_group_start = WK_KLASS_ENUM_NAME(MethodHandle_klass); @@ -2357,6 +2358,24 @@ return NULL; } +// Decide if we can globally cache a lookup of this class, to be returned to any client that asks. +// We must ensure that all class loaders everywhere will reach this class, for any client. +// This is a safe bet for public classes in java.lang, such as Object and String. +// We also include public classes in java.lang.invoke, because they appear frequently in system-level method types. +// Out of an abundance of caution, we do not include any other classes, not even for packages like java.util. +static bool is_always_visible_class(oop mirror) { + klassOop klass = java_lang_Class::as_klassOop(mirror); + if (Klass::cast(klass)->oop_is_objArray()) { + klass = objArrayKlass::cast(klass)->bottom_klass(); // check element type + } + if (Klass::cast(klass)->oop_is_typeArray()) { + return true; // primitive array + } + assert(Klass::cast(klass)->oop_is_instance(), Klass::cast(klass)->external_name()); + return Klass::cast(klass)->is_public() && + (instanceKlass::cast(klass)->is_same_class_package(SystemDictionary::Object_klass()) || // java.lang + instanceKlass::cast(klass)->is_same_class_package(SystemDictionary::MethodHandle_klass())); // java.lang.invoke +} methodOop SystemDictionary::find_method_handle_invoke(Symbol* name, Symbol* signature, @@ -2422,32 +2441,34 @@ bool& return_bcp_flag, TRAPS) { Handle class_loader, protection_domain; - bool is_on_bcp = true; // keep this true as long as we can materialize from the boot classloader + if (accessing_klass.not_null()) { + class_loader = Handle(THREAD, instanceKlass::cast(accessing_klass())->class_loader()); + protection_domain = Handle(THREAD, instanceKlass::cast(accessing_klass())->protection_domain()); + } + bool can_be_cached = true; Handle empty; int npts = ArgumentCount(signature).size(); objArrayHandle pts = oopFactory::new_objArray(SystemDictionary::Class_klass(), npts, CHECK_(empty)); int arg = 0; - Handle rt; // the return type from the signature + Handle rt; // the return type from the signature ResourceMark rm(THREAD); for (SignatureStream ss(signature); !ss.is_done(); ss.next()) { oop mirror = NULL; - if (is_on_bcp) { - mirror = ss.as_java_mirror(class_loader, protection_domain, + if (can_be_cached) { + // Use neutral class loader to lookup candidate classes to be placed in the cache. + mirror = ss.as_java_mirror(Handle(), Handle(), SignatureStream::ReturnNull, CHECK_(empty)); - if (mirror == NULL) { - // fall back from BCP to accessing_klass - if (accessing_klass.not_null()) { - class_loader = Handle(THREAD, instanceKlass::cast(accessing_klass())->class_loader()); - protection_domain = Handle(THREAD, instanceKlass::cast(accessing_klass())->protection_domain()); - } - is_on_bcp = false; + if (mirror == NULL || (ss.is_object() && !is_always_visible_class(mirror))) { + // Fall back to accessing_klass context. + can_be_cached = false; } } - if (!is_on_bcp) { + if (!can_be_cached) { // Resolve, throwing a real error if it doesn't work. mirror = ss.as_java_mirror(class_loader, protection_domain, SignatureStream::NCDFError, CHECK_(empty)); } + assert(!oopDesc::is_null(mirror), ss.as_symbol(THREAD)->as_C_string()); if (ss.at_return_type()) rt = Handle(THREAD, mirror); else @@ -2493,7 +2514,7 @@ } // report back to the caller with the MethodType and the "on_bcp" flag - return_bcp_flag = is_on_bcp; + return_bcp_flag = can_be_cached; return method_type; } diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/systemDictionary.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/systemDictionary.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/systemDictionary.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/systemDictionary.hpp 2016-01-20 01:41:39.000000000 +0000 @@ -123,6 +123,7 @@ template(WeakReference_klass, java_lang_ref_WeakReference, Pre) \ template(FinalReference_klass, java_lang_ref_FinalReference, Pre) \ template(PhantomReference_klass, java_lang_ref_PhantomReference, Pre) \ + template(Cleaner_klass, sun_misc_Cleaner, Pre) \ template(Finalizer_klass, java_lang_ref_Finalizer, Pre) \ \ template(Thread_klass, java_lang_Thread, Pre) \ diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/verifier.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/verifier.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/verifier.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/verifier.cpp 2016-01-20 01:41:39.000000000 +0000 @@ -378,6 +378,7 @@ bool no_control_flow = false; // Set to true when there is no direct control // flow from current instruction to the next // instruction in sequence + Bytecodes::Code opcode; while (!bcs.is_last_bytecode()) { // Check for recursive re-verification before each bytecode. @@ -1227,14 +1228,14 @@ case Bytecodes::_invokespecial : case Bytecodes::_invokestatic : verify_invoke_instructions( - &bcs, code_length, ¤t_frame, - &this_uninit, return_type, cp, CHECK_VERIFY(this)); + &bcs, code_length, ¤t_frame, (bci >= ex_min && bci < ex_max), + &this_uninit, return_type, cp, &stackmap_table, CHECK_VERIFY(this)); no_control_flow = false; break; case Bytecodes::_invokeinterface : case Bytecodes::_invokedynamic : verify_invoke_instructions( - &bcs, code_length, ¤t_frame, - &this_uninit, return_type, cp, CHECK_VERIFY(this)); + &bcs, code_length, ¤t_frame, (bci >= ex_min && bci < ex_max), + &this_uninit, return_type, cp, &stackmap_table, CHECK_VERIFY(this)); no_control_flow = false; break; case Bytecodes::_new : { @@ -1452,7 +1453,7 @@ // If matched, current_frame will be updated by this method. bool match = stackmap_table->match_stackmap( current_frame, this_offset, stackmap_index, - !no_control_flow, true, CHECK_VERIFY_(this, 0)); + !no_control_flow, true, false, CHECK_VERIFY_(this, 0)); if (!match) { // report type error verify_error(bci, "Instruction type does not match stack map"); @@ -1496,7 +1497,7 @@ new_frame->push_stack(throwable, CHECK_VERIFY(this)); } bool match = stackmap_table->match_stackmap( - new_frame, handler_pc, true, false, CHECK_VERIFY(this)); + new_frame, handler_pc, true, false, true, CHECK_VERIFY(this)); if (!match) { verify_error(bci, "Stack map does not match the one at exception handler %d", @@ -1876,10 +1877,190 @@ } } +// Look at the method's handlers. If the bci is in the handler's try block +// then check if the handler_pc is already on the stack. If not, push it. +void ClassVerifier::push_handlers(typeArrayHandle exhandlers, + GrowableArray* handler_stack, + u4 bci) { + int exlength = exhandlers->length(); + for(int x = 0; x < exlength; x++) { + u2 start_pc = exhandlers->int_at(x++); + u2 end_pc = exhandlers->int_at(x++); + u2 handler_pc = exhandlers->int_at(x++); + + if (bci >= start_pc && bci < end_pc) { + handler_stack->append_if_missing(handler_pc); + } + } +} + +// Return TRUE if all code paths starting with start_bc_offset end in +// bytecode athrow or loop. +bool ClassVerifier::ends_in_athrow(u4 start_bc_offset, TRAPS) { + ResourceMark rm; + // Create bytecode stream. + RawBytecodeStream bcs(method()); + u4 code_length = method()->code_size(); + bcs.set_start(start_bc_offset); + u4 target; + // Create stack for storing bytecode start offsets for if* and *switch. + GrowableArray* bci_stack = new GrowableArray(30); + // Create stack for handlers for try blocks containing this handler. + GrowableArray* handler_stack = new GrowableArray(30); + // Create list of visited branch opcodes (goto* and if*). + GrowableArray* visited_branches = new GrowableArray(30); + typeArrayHandle exhandlers(THREAD, _method->exception_table()); + + while (true) { + if (bcs.is_last_bytecode()) { + // if no more starting offsets to parse or if at the end of the + // method then return false. + if ((bci_stack->is_empty()) || ((u4)bcs.end_bci() == code_length)) + return false; + // Pop a bytecode starting offset and scan from there. + bcs.set_start(bci_stack->pop()); + } + Bytecodes::Code opcode = bcs.raw_next(); + u4 bci = bcs.bci(); + + // If the bytecode is in a TRY block, push its handlers so they + // will get parsed. + push_handlers(exhandlers, handler_stack, bci); + + switch (opcode) { + case Bytecodes::_if_icmpeq: + case Bytecodes::_if_icmpne: + case Bytecodes::_if_icmplt: + case Bytecodes::_if_icmpge: + case Bytecodes::_if_icmpgt: + case Bytecodes::_if_icmple: + case Bytecodes::_ifeq: + case Bytecodes::_ifne: + case Bytecodes::_iflt: + case Bytecodes::_ifge: + case Bytecodes::_ifgt: + case Bytecodes::_ifle: + case Bytecodes::_if_acmpeq: + case Bytecodes::_if_acmpne: + case Bytecodes::_ifnull: + case Bytecodes::_ifnonnull: + target = bcs.dest(); + if (visited_branches->contains(bci)) { + if (bci_stack->is_empty()) return true; + // Pop a bytecode starting offset and scan from there. + bcs.set_start(bci_stack->pop()); + } else { + if (target > bci) { // forward branch + if (target >= code_length) return false; + // Push the branch target onto the stack. + bci_stack->push(target); + // then, scan bytecodes starting with next. + bcs.set_start(bcs.next_bci()); + } else { // backward branch + // Push bytecode offset following backward branch onto the stack. + bci_stack->push(bcs.next_bci()); + // Check bytecodes starting with branch target. + bcs.set_start(target); + } + // Record target so we don't branch here again. + visited_branches->append(bci); + } + break; + + case Bytecodes::_goto: + case Bytecodes::_goto_w: + target = (opcode == Bytecodes::_goto ? bcs.dest() : bcs.dest_w()); + if (visited_branches->contains(bci)) { + if (bci_stack->is_empty()) return true; + // Been here before, pop new starting offset from stack. + bcs.set_start(bci_stack->pop()); + } else { + if (target >= code_length) return false; + // Continue scanning from the target onward. + bcs.set_start(target); + // Record target so we don't branch here again. + visited_branches->append(bci); + } + break; + + // Check that all switch alternatives end in 'athrow' bytecodes. Since it + // is difficult to determine where each switch alternative ends, parse + // each switch alternative until either hit a 'return', 'athrow', or reach + // the end of the method's bytecodes. This is gross but should be okay + // because: + // 1. tableswitch and lookupswitch byte codes in handlers for ctor explicit + // constructor invocations should be rare. + // 2. if each switch alternative ends in an athrow then the parsing should be + // short. If there is no athrow then it is bogus code, anyway. + case Bytecodes::_lookupswitch: + case Bytecodes::_tableswitch: + { + address aligned_bcp = (address) round_to((intptr_t)(bcs.bcp() + 1), jintSize); + u4 default_offset = Bytes::get_Java_u4(aligned_bcp) + bci; + int keys, delta; + if (opcode == Bytecodes::_tableswitch) { + jint low = (jint)Bytes::get_Java_u4(aligned_bcp + jintSize); + jint high = (jint)Bytes::get_Java_u4(aligned_bcp + 2*jintSize); + // This is invalid, but let the regular bytecode verifier + // report this because the user will get a better error message. + if (low > high) return true; + keys = high - low + 1; + delta = 1; + } else { + keys = (int)Bytes::get_Java_u4(aligned_bcp + jintSize); + delta = 2; + } + // Invalid, let the regular bytecode verifier deal with it. + if (keys < 0) return true; + + // Push the offset of the next bytecode onto the stack. + bci_stack->push(bcs.next_bci()); + + // Push the switch alternatives onto the stack. + for (int i = 0; i < keys; i++) { + u4 target = bci + (jint)Bytes::get_Java_u4(aligned_bcp+(3+i*delta)*jintSize); + if (target > code_length) return false; + bci_stack->push(target); + } + + // Start bytecode parsing for the switch at the default alternative. + if (default_offset > code_length) return false; + bcs.set_start(default_offset); + break; + } + + case Bytecodes::_return: + return false; + + case Bytecodes::_athrow: + { + if (bci_stack->is_empty()) { + if (handler_stack->is_empty()) { + return true; + } else { + // Parse the catch handlers for try blocks containing athrow. + bcs.set_start(handler_stack->pop()); + } + } else { + // Pop a bytecode offset and starting scanning from there. + bcs.set_start(bci_stack->pop()); + } + } + break; + + default: + ; + } // end switch + } // end while loop + + return false; +} + void ClassVerifier::verify_invoke_init( RawBytecodeStream* bcs, VerificationType ref_class_type, - StackMapFrame* current_frame, u4 code_length, bool *this_uninit, - constantPoolHandle cp, TRAPS) { + StackMapFrame* current_frame, u4 code_length, bool in_try_block, + bool *this_uninit, constantPoolHandle cp, StackMapTable* stackmap_table, + TRAPS) { u2 bci = bcs->bci(); VerificationType type = current_frame->pop_stack( VerificationType::reference_check(), CHECK_VERIFY(this)); @@ -1891,6 +2072,45 @@ verify_error(bci, "Bad method call"); return; } + + // If this invokespecial call is done from inside of a TRY block then make + // sure that all catch clause paths end in a throw. Otherwise, this can + // result in returning an incomplete object. + if (in_try_block) { + typeArrayHandle exhandlers (THREAD, _method->exception_table()); + int exlength = exhandlers->length(); + for(int i = 0; i < exlength; i++) { + /* + * Skip reading catch_type_index. + * Looks like this if you need all of them: + * u2 start_pc = exhandlers->int_at(i++); + * u2 end_pc = exhandlers->int_at(i++); + * u2 handler_pc = exhandlers->int_at(i++); + * int catch_type_index = exhandlers->int_at(i++); + */ + // Reacquire the table in case a GC happened + typeArrayHandle exhandlers (THREAD, _method->exception_table()); + u2 start_pc = exhandlers->int_at(i++); + u2 end_pc = exhandlers->int_at(i++); + u2 handler_pc = exhandlers->int_at(i++); + + if (bci >= start_pc && bci < end_pc) { + bool athrow_check = ends_in_athrow(handler_pc, CHECK_VERIFY(this)); + if (!athrow_check) { + verify_error( + "Bad method call from after the start of a try block"); + return; + } + } + } + + // Check the exception handler target stackmaps with the locals from the + // incoming stackmap (before initialize_object() changes them to outgoing + // state). + verify_exception_handler_targets(bci, true, current_frame, + stackmap_table, CHECK_VERIFY(this)); + } // in_try_block + current_frame->initialize_object(type, current_type()); *this_uninit = true; } else if (type.is_uninitialized()) { @@ -1921,6 +2141,11 @@ methodOop m = instanceKlass::cast(ref_klass)->uncached_lookup_method( vmSymbols::object_initializer_name(), cp->signature_ref_at(bcs->get_index_u2())); + if (m == NULL) { + verify_error(bci, + "Call to missing method"); + return; + } instanceKlassHandle mh(THREAD, m->method_holder()); if (m->is_protected() && !mh->is_same_class_package(_klass())) { bool assignable = current_type().is_assignable_from( @@ -1931,6 +2156,13 @@ } } } + // Check the exception handler target stackmaps with the locals from the + // incoming stackmap (before initialize_object() changes them to outgoing + // state). + if (in_try_block) { + verify_exception_handler_targets(bci, *this_uninit, current_frame, + stackmap_table, CHECK_VERIFY(this)); + } current_frame->initialize_object(type, new_class_type); } else { verify_error(bci, "Bad operand type when invoking "); @@ -1940,8 +2172,8 @@ void ClassVerifier::verify_invoke_instructions( RawBytecodeStream* bcs, u4 code_length, StackMapFrame* current_frame, - bool *this_uninit, VerificationType return_type, - constantPoolHandle cp, TRAPS) { + bool in_try_block, bool *this_uninit, VerificationType return_type, + constantPoolHandle cp, StackMapTable* stackmap_table, TRAPS) { // Make sure the constant pool item is the right type u2 index = bcs->get_index_u2(); Bytecodes::Code opcode = bcs->raw_code(); @@ -2072,7 +2304,8 @@ opcode != Bytecodes::_invokedynamic) { if (method_name == vmSymbols::object_initializer_name()) { // method verify_invoke_init(bcs, ref_class_type, current_frame, - code_length, this_uninit, cp, CHECK_VERIFY(this)); + code_length, in_try_block, this_uninit, cp, stackmap_table, + CHECK_VERIFY(this)); } else { // other methods // Ensures that target class is assignable to method class. if (opcode == Bytecodes::_invokespecial) { diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/verifier.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/verifier.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/verifier.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/verifier.hpp 2016-01-20 01:41:39.000000000 +0000 @@ -30,6 +30,7 @@ #include "oops/klass.hpp" #include "oops/methodOop.hpp" #include "runtime/handles.hpp" +#include "utilities/growableArray.hpp" #include "utilities/exceptions.hpp" // The verifier class @@ -138,13 +139,24 @@ void verify_invoke_init( RawBytecodeStream* bcs, VerificationType ref_class_type, - StackMapFrame* current_frame, u4 code_length, bool* this_uninit, - constantPoolHandle cp, TRAPS); + StackMapFrame* current_frame, u4 code_length, bool in_try_block, + bool* this_uninit, constantPoolHandle cp, StackMapTable* stackmap_table, + TRAPS); + + // Used by ends_in_athrow() to push all handlers that contain bci onto + // the handler_stack, if the handler is not already on the stack. + void push_handlers(typeArrayHandle exhandlers, + GrowableArray* handler_stack, + u4 bci); + + // Returns true if all paths starting with start_bc_offset end in athrow + // bytecode or loop. + bool ends_in_athrow(u4 start_bc_offset, TRAPS); void verify_invoke_instructions( RawBytecodeStream* bcs, u4 code_length, StackMapFrame* current_frame, - bool* this_uninit, VerificationType return_type, - constantPoolHandle cp, TRAPS); + bool in_try_block, bool* this_uninit, VerificationType return_type, + constantPoolHandle cp, StackMapTable* stackmap_table, TRAPS); VerificationType get_newarray_type(u2 index, u2 bci, TRAPS); void verify_anewarray( @@ -232,6 +244,7 @@ Symbol* create_temporary_symbol(const char *s, int length, TRAPS); static bool _verify_verbose; // for debugging + }; inline int ClassVerifier::change_sig_to_verificationType( diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/vmSymbols.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/vmSymbols.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/classfile/vmSymbols.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/classfile/vmSymbols.hpp 2016-01-20 01:41:39.000000000 +0000 @@ -80,6 +80,7 @@ template(java_lang_ref_WeakReference, "java/lang/ref/WeakReference") \ template(java_lang_ref_FinalReference, "java/lang/ref/FinalReference") \ template(java_lang_ref_PhantomReference, "java/lang/ref/PhantomReference") \ + template(sun_misc_Cleaner, "sun/misc/Cleaner") \ template(java_lang_ref_Finalizer, "java/lang/ref/Finalizer") \ template(java_lang_reflect_AccessibleObject, "java/lang/reflect/AccessibleObject") \ template(java_lang_reflect_Method, "java/lang/reflect/Method") \ diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/compiler/compileBroker.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/compiler/compileBroker.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/compiler/compileBroker.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/compiler/compileBroker.cpp 2016-01-20 01:41:42.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2012, 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 @@ -1885,6 +1885,7 @@ ResourceMark rm; char* method_name = method->name()->as_C_string(); strncpy(_last_method_compiled, method_name, CompileBroker::name_buffer_length); + _last_method_compiled[CompileBroker::name_buffer_length - 1] = '\0'; // ensure null terminated char current_method[CompilerCounters::cmname_buffer_length]; size_t maxLen = CompilerCounters::cmname_buffer_length; diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2016-01-20 01:41:42.000000000 +0000 @@ -748,7 +748,7 @@ // Support for parallelizing survivor space rescan if (CMSParallelRemarkEnabled && CMSParallelSurvivorRemarkEnabled) { const size_t max_plab_samples = - ((DefNewGeneration*)_young_gen)->max_survivor_size()/MinTLABSize; + ((DefNewGeneration*)_young_gen)->max_survivor_size() / plab_sample_minimum_size(); _survivor_plab_array = NEW_C_HEAP_ARRAY(ChunkArray, ParallelGCThreads); _survivor_chunk_array = NEW_C_HEAP_ARRAY(HeapWord*, 2*max_plab_samples); @@ -823,6 +823,12 @@ #endif } +size_t CMSCollector::plab_sample_minimum_size() { + // The default value of MinTLABSize is 2k, but there is + // no way to get the default value if the flag has been overridden. + return MAX2(ThreadLocalAllocBuffer::min_size() * HeapWordSize, 2 * K); +} + const char* ConcurrentMarkSweepGeneration::name() const { return "concurrent mark-sweep generation"; } diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp 2016-01-20 01:41:43.000000000 +0000 @@ -743,6 +743,10 @@ size_t* _cursor; ChunkArray* _survivor_plab_array; + // A bounded minimum size of PLABs, should not return too small values since + // this will affect the size of the data structures used for parallel young gen rescan + size_t plab_sample_minimum_size(); + // Support for marking stack overflow handling bool take_from_overflow_list(size_t num, CMSMarkStack* to_stack); bool par_take_from_overflow_list(size_t num, diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp 2016-01-20 01:41:43.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2011, 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 @@ -26,37 +26,11 @@ #include "gc_implementation/g1/concurrentG1Refine.hpp" #include "gc_implementation/g1/concurrentG1RefineThread.hpp" #include "gc_implementation/g1/g1CollectedHeap.inline.hpp" -#include "gc_implementation/g1/g1CollectorPolicy.hpp" -#include "gc_implementation/g1/g1RemSet.hpp" -#include "gc_implementation/g1/heapRegionSeq.inline.hpp" -#include "memory/space.inline.hpp" -#include "runtime/atomic.hpp" -#include "runtime/java.hpp" -#include "utilities/copy.hpp" - -// Possible sizes for the card counts cache: odd primes that roughly double in size. -// (See jvmtiTagMap.cpp). - -#define MAX_SIZE ((size_t) -1) - -size_t ConcurrentG1Refine::_cc_cache_sizes[] = { - 16381, 32771, 76831, 150001, 307261, - 614563, 1228891, 2457733, 4915219, 9830479, - 19660831, 39321619, 78643219, 157286461, MAX_SIZE - }; - -ConcurrentG1Refine::ConcurrentG1Refine() : - _card_counts(NULL), _card_epochs(NULL), - _n_card_counts(0), _max_cards(0), _max_n_card_counts(0), - _cache_size_index(0), _expand_card_counts(false), - _hot_cache(NULL), - _def_use_cache(false), _use_cache(false), - // We initialize the epochs of the array to 0. By initializing - // _n_periods to 1 and not 0 we automatically invalidate all the - // entries on the array. Otherwise we might accidentally think that - // we claimed a card that was in fact never set (see CR7033292). - _n_periods(1), - _threads(NULL), _n_threads(0) +#include "gc_implementation/g1/g1HotCardCache.hpp" + +ConcurrentG1Refine::ConcurrentG1Refine(G1CollectedHeap* g1h) : + _threads(NULL), _n_threads(0), + _hot_card_cache(g1h) { // Ergomonically select initial concurrent refinement parameters @@ -74,13 +48,17 @@ FLAG_SET_DEFAULT(G1ConcRefinementRedZone, yellow_zone() * 2); } set_red_zone(MAX2(G1ConcRefinementRedZone, yellow_zone())); + _n_worker_threads = thread_num(); // We need one extra thread to do the young gen rset size sampling. _n_threads = _n_worker_threads + 1; + reset_threshold_step(); _threads = NEW_C_HEAP_ARRAY(ConcurrentG1RefineThread*, _n_threads); + int worker_id_offset = (int)DirtyCardQueueSet::num_par_ids(); + ConcurrentG1RefineThread *next = NULL; for (int i = _n_threads - 1; i >= 0; i--) { ConcurrentG1RefineThread* t = new ConcurrentG1RefineThread(this, next, worker_id_offset, i); @@ -99,74 +77,8 @@ } } -int ConcurrentG1Refine::thread_num() { - return MAX2((G1ConcRefinementThreads > 0) ? G1ConcRefinementThreads : ParallelGCThreads, 1); -} - void ConcurrentG1Refine::init() { - if (G1ConcRSLogCacheSize > 0) { - _g1h = G1CollectedHeap::heap(); - - _max_cards = _g1h->max_capacity() >> CardTableModRefBS::card_shift; - _max_n_card_counts = _max_cards * G1MaxHotCardCountSizePercent / 100; - - size_t max_card_num = ((size_t)1 << (sizeof(unsigned)*BitsPerByte-1)) - 1; - guarantee(_max_cards < max_card_num, "card_num representation"); - - // We need _n_card_counts to be less than _max_n_card_counts here - // so that the expansion call (below) actually allocates the - // _counts and _epochs arrays. - assert(_n_card_counts == 0, "pre-condition"); - assert(_max_n_card_counts > 0, "pre-condition"); - - // Find the index into cache size array that is of a size that's - // large enough to hold desired_sz. - size_t desired_sz = _max_cards / InitialCacheFraction; - int desired_sz_index = 0; - while (_cc_cache_sizes[desired_sz_index] < desired_sz) { - desired_sz_index += 1; - assert(desired_sz_index < MAX_CC_CACHE_INDEX, "invariant"); - } - assert(desired_sz_index < MAX_CC_CACHE_INDEX, "invariant"); - - // If the desired_sz value is between two sizes then - // _cc_cache_sizes[desired_sz_index-1] < desired_sz <= _cc_cache_sizes[desired_sz_index] - // we will start with the lower size in the optimistic expectation that - // we will not need to expand up. Note desired_sz_index could also be 0. - if (desired_sz_index > 0 && - _cc_cache_sizes[desired_sz_index] > desired_sz) { - desired_sz_index -= 1; - } - - if (!expand_card_count_cache(desired_sz_index)) { - // Allocation was unsuccessful - exit - vm_exit_during_initialization("Could not reserve enough space for card count cache"); - } - assert(_n_card_counts > 0, "post-condition"); - assert(_cache_size_index == desired_sz_index, "post-condition"); - - Copy::fill_to_bytes(&_card_counts[0], - _n_card_counts * sizeof(CardCountCacheEntry)); - Copy::fill_to_bytes(&_card_epochs[0], _n_card_counts * sizeof(CardEpochCacheEntry)); - - ModRefBarrierSet* bs = _g1h->mr_bs(); - guarantee(bs->is_a(BarrierSet::CardTableModRef), "Precondition"); - _ct_bs = (CardTableModRefBS*)bs; - _ct_bot = _ct_bs->byte_for_const(_g1h->reserved_region().start()); - - _def_use_cache = true; - _use_cache = true; - _hot_cache_size = (1 << G1ConcRSLogCacheSize); - _hot_cache = NEW_C_HEAP_ARRAY(jbyte*, _hot_cache_size); - _n_hot = 0; - _hot_cache_idx = 0; - - // For refining the cards in the hot cache in parallel - int n_workers = (ParallelGCThreads > 0 ? - _g1h->workers()->total_workers() : 1); - _hot_cache_par_chunk_size = MAX2(1, _hot_cache_size / n_workers); - _hot_cache_par_claimed_idx = 0; - } + _hot_card_cache.initialize(); } void ConcurrentG1Refine::stop() { @@ -187,17 +99,6 @@ } ConcurrentG1Refine::~ConcurrentG1Refine() { - if (G1ConcRSLogCacheSize > 0) { - // Please see the comment in allocate_card_count_cache - // for why we call os::malloc() and os::free() directly. - assert(_card_counts != NULL, "Logic"); - os::free(_card_counts); - assert(_card_epochs != NULL, "Logic"); - os::free(_card_epochs); - - assert(_hot_cache != NULL, "Logic"); - FREE_C_HEAP_ARRAY(jbyte*, _hot_cache); - } if (_threads != NULL) { for (int i = 0; i < _n_threads; i++) { delete _threads[i]; @@ -214,320 +115,10 @@ } } -bool ConcurrentG1Refine::is_young_card(jbyte* card_ptr) { - HeapWord* start = _ct_bs->addr_for(card_ptr); - HeapRegion* r = _g1h->heap_region_containing(start); - if (r != NULL && r->is_young()) { - return true; - } - // This card is not associated with a heap region - // so can't be young. - return false; -} - -jbyte* ConcurrentG1Refine::add_card_count(jbyte* card_ptr, int* count, bool* defer) { - unsigned new_card_num = ptr_2_card_num(card_ptr); - unsigned bucket = hash(new_card_num); - assert(0 <= bucket && bucket < _n_card_counts, "Bounds"); - - CardCountCacheEntry* count_ptr = &_card_counts[bucket]; - CardEpochCacheEntry* epoch_ptr = &_card_epochs[bucket]; - - // We have to construct a new entry if we haven't updated the counts - // during the current period, or if the count was updated for a - // different card number. - unsigned int new_epoch = (unsigned int) _n_periods; - julong new_epoch_entry = make_epoch_entry(new_card_num, new_epoch); - - while (true) { - // Fetch the previous epoch value - julong prev_epoch_entry = epoch_ptr->_value; - julong cas_res; - - if (extract_epoch(prev_epoch_entry) != new_epoch) { - // This entry has not yet been updated during this period. - // Note: we update the epoch value atomically to ensure - // that there is only one winner that updates the cached - // card_ptr value even though all the refine threads share - // the same epoch value. - - cas_res = (julong) Atomic::cmpxchg((jlong) new_epoch_entry, - (volatile jlong*)&epoch_ptr->_value, - (jlong) prev_epoch_entry); - - if (cas_res == prev_epoch_entry) { - // We have successfully won the race to update the - // epoch and card_num value. Make it look like the - // count and eviction count were previously cleared. - count_ptr->_count = 1; - count_ptr->_evict_count = 0; - *count = 0; - // We can defer the processing of card_ptr - *defer = true; - return card_ptr; - } - // We did not win the race to update the epoch field, so some other - // thread must have done it. The value that gets returned by CAS - // should be the new epoch value. - assert(extract_epoch(cas_res) == new_epoch, "unexpected epoch"); - // We could 'continue' here or just re-read the previous epoch value - prev_epoch_entry = epoch_ptr->_value; - } - - // The epoch entry for card_ptr has been updated during this period. - unsigned old_card_num = extract_card_num(prev_epoch_entry); - - // The card count that will be returned to caller - *count = count_ptr->_count; - - // Are we updating the count for the same card? - if (new_card_num == old_card_num) { - // Same card - just update the count. We could have more than one - // thread racing to update count for the current card. It should be - // OK not to use a CAS as the only penalty should be some missed - // increments of the count which delays identifying the card as "hot". - - if (*count < max_jubyte) count_ptr->_count++; - // We can defer the processing of card_ptr - *defer = true; - return card_ptr; - } - - // Different card - evict old card info - if (count_ptr->_evict_count < max_jubyte) count_ptr->_evict_count++; - if (count_ptr->_evict_count > G1CardCountCacheExpandThreshold) { - // Trigger a resize the next time we clear - _expand_card_counts = true; - } - - cas_res = (julong) Atomic::cmpxchg((jlong) new_epoch_entry, - (volatile jlong*)&epoch_ptr->_value, - (jlong) prev_epoch_entry); - - if (cas_res == prev_epoch_entry) { - // We successfully updated the card num value in the epoch entry - count_ptr->_count = 0; // initialize counter for new card num - jbyte* old_card_ptr = card_num_2_ptr(old_card_num); - - // Even though the region containg the card at old_card_num was not - // in the young list when old_card_num was recorded in the epoch - // cache it could have been added to the free list and subsequently - // added to the young list in the intervening time. See CR 6817995. - // We do not deal with this case here - it will be handled in - // HeapRegion::oops_on_card_seq_iterate_careful after it has been - // determined that the region containing the card has been allocated - // to, and it's safe to check the young type of the region. - - // We do not want to defer processing of card_ptr in this case - // (we need to refine old_card_ptr and card_ptr) - *defer = false; - return old_card_ptr; - } - // Someone else beat us - try again. - } -} - -jbyte* ConcurrentG1Refine::cache_insert(jbyte* card_ptr, bool* defer) { - int count; - jbyte* cached_ptr = add_card_count(card_ptr, &count, defer); - assert(cached_ptr != NULL, "bad cached card ptr"); - - // We've just inserted a card pointer into the card count cache - // and got back the card that we just inserted or (evicted) the - // previous contents of that count slot. - - // The card we got back could be in a young region. When the - // returned card (if evicted) was originally inserted, we had - // determined that its containing region was not young. However - // it is possible for the region to be freed during a cleanup - // pause, then reallocated and tagged as young which will result - // in the returned card residing in a young region. - // - // We do not deal with this case here - the change from non-young - // to young could be observed at any time - it will be handled in - // HeapRegion::oops_on_card_seq_iterate_careful after it has been - // determined that the region containing the card has been allocated - // to. - - // The card pointer we obtained from card count cache is not hot - // so do not store it in the cache; return it for immediate - // refining. - if (count < G1ConcRSHotCardLimit) { - return cached_ptr; - } - - // Otherwise, the pointer we got from the _card_counts cache is hot. - jbyte* res = NULL; - MutexLockerEx x(HotCardCache_lock, Mutex::_no_safepoint_check_flag); - if (_n_hot == _hot_cache_size) { - res = _hot_cache[_hot_cache_idx]; - _n_hot--; - } - // Now _n_hot < _hot_cache_size, and we can insert at _hot_cache_idx. - _hot_cache[_hot_cache_idx] = cached_ptr; - _hot_cache_idx++; - if (_hot_cache_idx == _hot_cache_size) _hot_cache_idx = 0; - _n_hot++; - - // The card obtained from the hot card cache could be in a young - // region. See above on how this can happen. - - return res; -} - -void ConcurrentG1Refine::clean_up_cache(int worker_i, - G1RemSet* g1rs, - DirtyCardQueue* into_cset_dcq) { - assert(!use_cache(), "cache should be disabled"); - int start_idx; - - while ((start_idx = _hot_cache_par_claimed_idx) < _n_hot) { // read once - int end_idx = start_idx + _hot_cache_par_chunk_size; - - if (start_idx == - Atomic::cmpxchg(end_idx, &_hot_cache_par_claimed_idx, start_idx)) { - // The current worker has successfully claimed the chunk [start_idx..end_idx) - end_idx = MIN2(end_idx, _n_hot); - for (int i = start_idx; i < end_idx; i++) { - jbyte* entry = _hot_cache[i]; - if (entry != NULL) { - if (g1rs->concurrentRefineOneCard(entry, worker_i, true)) { - // 'entry' contains references that point into the current - // collection set. We need to record 'entry' in the DCQS - // that's used for that purpose. - // - // The only time we care about recording cards that contain - // references that point into the collection set is during - // RSet updating while within an evacuation pause. - // In this case worker_i should be the id of a GC worker thread - assert(SafepointSynchronize::is_at_safepoint(), "not during an evacuation pause"); - assert(worker_i < (int) (ParallelGCThreads == 0 ? 1 : ParallelGCThreads), "incorrect worker id"); - into_cset_dcq->enqueue(entry); - } - } - } - } - } -} - -// The arrays used to hold the card counts and the epochs must have -// a 1:1 correspondence. Hence they are allocated and freed together -// Returns true if the allocations of both the counts and epochs -// were successful; false otherwise. -bool ConcurrentG1Refine::allocate_card_count_cache(size_t n, - CardCountCacheEntry** counts, - CardEpochCacheEntry** epochs) { - // We call the allocation/free routines directly for the counts - // and epochs arrays. The NEW_C_HEAP_ARRAY/FREE_C_HEAP_ARRAY - // macros call AllocateHeap and FreeHeap respectively. - // AllocateHeap will call vm_exit_out_of_memory in the event - // of an allocation failure and abort the JVM. With the - // _counts/epochs arrays we only need to abort the JVM if the - // initial allocation of these arrays fails. - // - // Additionally AllocateHeap/FreeHeap do some tracing of - // allocate/free calls so calling one without calling the - // other can cause inconsistencies in the tracing. So we - // call neither. - - assert(*counts == NULL, "out param"); - assert(*epochs == NULL, "out param"); - - size_t counts_size = n * sizeof(CardCountCacheEntry); - size_t epochs_size = n * sizeof(CardEpochCacheEntry); - - *counts = (CardCountCacheEntry*) os::malloc(counts_size); - if (*counts == NULL) { - // allocation was unsuccessful - return false; - } - - *epochs = (CardEpochCacheEntry*) os::malloc(epochs_size); - if (*epochs == NULL) { - // allocation was unsuccessful - free counts array - assert(*counts != NULL, "must be"); - os::free(*counts); - *counts = NULL; - return false; - } - - // We successfully allocated both counts and epochs - return true; -} - -// Returns true if the card counts/epochs cache was -// successfully expanded; false otherwise. -bool ConcurrentG1Refine::expand_card_count_cache(int cache_size_idx) { - // Can we expand the card count and epoch tables? - if (_n_card_counts < _max_n_card_counts) { - assert(cache_size_idx >= 0 && cache_size_idx < MAX_CC_CACHE_INDEX, "oob"); - - size_t cache_size = _cc_cache_sizes[cache_size_idx]; - // Make sure we don't go bigger than we will ever need - cache_size = MIN2(cache_size, _max_n_card_counts); - - // Should we expand the card count and card epoch tables? - if (cache_size > _n_card_counts) { - // We have been asked to allocate new, larger, arrays for - // the card counts and the epochs. Attempt the allocation - // of both before we free the existing arrays in case - // the allocation is unsuccessful... - CardCountCacheEntry* counts = NULL; - CardEpochCacheEntry* epochs = NULL; - - if (allocate_card_count_cache(cache_size, &counts, &epochs)) { - // Allocation was successful. - // We can just free the old arrays; we're - // not interested in preserving the contents - if (_card_counts != NULL) os::free(_card_counts); - if (_card_epochs != NULL) os::free(_card_epochs); - - // Cache the size of the arrays and the index that got us there. - _n_card_counts = cache_size; - _cache_size_index = cache_size_idx; - - _card_counts = counts; - _card_epochs = epochs; - - // We successfully allocated/expanded the caches. - return true; - } - } - } - - // We did not successfully expand the caches. - return false; -} - -void ConcurrentG1Refine::clear_and_record_card_counts() { - if (G1ConcRSLogCacheSize == 0) return; - -#ifndef PRODUCT - double start = os::elapsedTime(); -#endif - - if (_expand_card_counts) { - int new_idx = _cache_size_index + 1; - - if (expand_card_count_cache(new_idx)) { - // Allocation was successful and _n_card_counts has - // been updated to the new size. We only need to clear - // the epochs so we don't read a bogus epoch value - // when inserting a card into the hot card cache. - Copy::fill_to_bytes(&_card_epochs[0], _n_card_counts * sizeof(CardEpochCacheEntry)); - } - _expand_card_counts = false; - } - - int this_epoch = (int) _n_periods; - assert((this_epoch+1) <= max_jint, "to many periods"); - // Update epoch - _n_periods++; - -#ifndef PRODUCT - double elapsed = os::elapsedTime() - start; - _g1h->g1_policy()->record_cc_clear_time(elapsed * 1000.0); -#endif +int ConcurrentG1Refine::thread_num() { + int n_threads = (G1ConcRefinementThreads > 0) ? G1ConcRefinementThreads + : ParallelGCThreads; + return MAX2(n_threads, 1); } void ConcurrentG1Refine::print_worker_threads_on(outputStream* st) const { diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp 2016-01-20 01:41:43.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2011, 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 @@ -25,13 +25,15 @@ #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTG1REFINE_HPP #define SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTG1REFINE_HPP +#include "gc_implementation/g1/g1HotCardCache.hpp" #include "memory/allocation.hpp" -#include "memory/cardTableModRefBS.hpp" #include "runtime/thread.hpp" #include "utilities/globalDefinitions.hpp" // Forward decl class ConcurrentG1RefineThread; +class G1CollectedHeap; +class G1HotCardCache; class G1RemSet; class ConcurrentG1Refine: public CHeapObj { @@ -61,141 +63,14 @@ int _thread_threshold_step; + // We delay the refinement of 'hot' cards using the hot card cache. + G1HotCardCache _hot_card_cache; + // Reset the threshold step value based of the current zone boundaries. void reset_threshold_step(); - // The cache for card refinement. - bool _use_cache; - bool _def_use_cache; - - size_t _n_periods; // Used as clearing epoch - - // An evicting cache of the number of times each card - // is accessed. Reduces, but does not eliminate, the amount - // of duplicated processing of dirty cards. - - enum SomePrivateConstants { - epoch_bits = 32, - card_num_shift = epoch_bits, - epoch_mask = AllBits, - card_num_mask = AllBits, - - // The initial cache size is approximately this fraction - // of a maximal cache (i.e. the size needed for all cards - // in the heap) - InitialCacheFraction = 512 - }; - - const static julong card_num_mask_in_place = - (julong) card_num_mask << card_num_shift; - - typedef struct { - julong _value; // | card_num | epoch | - } CardEpochCacheEntry; - - julong make_epoch_entry(unsigned int card_num, unsigned int epoch) { - assert(0 <= card_num && card_num < _max_cards, "Bounds"); - assert(0 <= epoch && epoch <= _n_periods, "must be"); - - return ((julong) card_num << card_num_shift) | epoch; - } - - unsigned int extract_epoch(julong v) { - return (v & epoch_mask); - } - - unsigned int extract_card_num(julong v) { - return (v & card_num_mask_in_place) >> card_num_shift; - } - - typedef struct { - unsigned char _count; - unsigned char _evict_count; - } CardCountCacheEntry; - - CardCountCacheEntry* _card_counts; - CardEpochCacheEntry* _card_epochs; - - // The current number of buckets in the card count cache - size_t _n_card_counts; - - // The number of cards for the entire reserved heap - size_t _max_cards; - - // The max number of buckets for the card counts and epochs caches. - // This is the maximum that the counts and epochs will grow to. - // It is specified as a fraction or percentage of _max_cards using - // G1MaxHotCardCountSizePercent. - size_t _max_n_card_counts; - - // Possible sizes of the cache: odd primes that roughly double in size. - // (See jvmtiTagMap.cpp). - enum { - MAX_CC_CACHE_INDEX = 15 // maximum index into the cache size array. - }; - - static size_t _cc_cache_sizes[MAX_CC_CACHE_INDEX]; - - // The index in _cc_cache_sizes corresponding to the size of - // _card_counts. - int _cache_size_index; - - bool _expand_card_counts; - - const jbyte* _ct_bot; - - jbyte** _hot_cache; - int _hot_cache_size; - int _n_hot; - int _hot_cache_idx; - - int _hot_cache_par_chunk_size; - volatile int _hot_cache_par_claimed_idx; - - // Needed to workaround 6817995 - CardTableModRefBS* _ct_bs; - G1CollectedHeap* _g1h; - - // Helper routine for expand_card_count_cache(). - // The arrays used to hold the card counts and the epochs must have - // a 1:1 correspondence. Hence they are allocated and freed together. - // Returns true if the allocations of both the counts and epochs - // were successful; false otherwise. - bool allocate_card_count_cache(size_t n, - CardCountCacheEntry** counts, - CardEpochCacheEntry** epochs); - - // Expands the arrays that hold the card counts and epochs - // to the cache size at index. Returns true if the expansion/ - // allocation was successful; false otherwise. - bool expand_card_count_cache(int index); - - // hash a given key (index of card_ptr) with the specified size - static unsigned int hash(size_t key, size_t size) { - return (unsigned int) (key % size); - } - - // hash a given key (index of card_ptr) - unsigned int hash(size_t key) { - return hash(key, _n_card_counts); - } - - unsigned int ptr_2_card_num(jbyte* card_ptr) { - return (unsigned int) (card_ptr - _ct_bot); - } - - jbyte* card_num_2_ptr(unsigned int card_num) { - return (jbyte*) (_ct_bot + card_num); - } - - // Returns the count of this card after incrementing it. - jbyte* add_card_count(jbyte* card_ptr, int* count, bool* defer); - - // Returns true if this card is in a young region - bool is_young_card(jbyte* card_ptr); - public: - ConcurrentG1Refine(); + ConcurrentG1Refine(G1CollectedHeap* g1h); ~ConcurrentG1Refine(); void init(); // Accomplish some initialization that has to wait. @@ -206,34 +81,6 @@ // Iterate over the conc refine threads void threads_do(ThreadClosure *tc); - // If this is the first entry for the slot, writes into the cache and - // returns NULL. If it causes an eviction, returns the evicted pointer. - // Otherwise, its a cache hit, and returns NULL. - jbyte* cache_insert(jbyte* card_ptr, bool* defer); - - // Process the cached entries. - void clean_up_cache(int worker_i, G1RemSet* g1rs, DirtyCardQueue* into_cset_dcq); - - // Set up for parallel processing of the cards in the hot cache - void clear_hot_cache_claimed_index() { - _hot_cache_par_claimed_idx = 0; - } - - // Discard entries in the hot cache. - void clear_hot_cache() { - _hot_cache_idx = 0; _n_hot = 0; - } - - bool hot_cache_is_empty() { return _n_hot == 0; } - - bool use_cache() { return _use_cache; } - void set_use_cache(bool b) { - if (b) _use_cache = _def_use_cache; - else _use_cache = false; - } - - void clear_and_record_card_counts(); - static int thread_num(); void print_worker_threads_on(outputStream* st) const; @@ -250,6 +97,8 @@ int worker_thread_num() const { return _n_worker_threads; } int thread_threshold_step() const { return _thread_threshold_step; } + + G1HotCardCache* hot_card_cache() { return &_hot_card_cache; } }; #endif // SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTG1REFINE_HPP diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1CardCounts.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1CardCounts.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1CardCounts.cpp 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1CardCounts.cpp 2016-01-20 01:41:43.000000000 +0000 @@ -0,0 +1,208 @@ +/* + * 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. + * + */ + +#include "precompiled.hpp" +#include "gc_implementation/g1/g1CardCounts.hpp" +#include "gc_implementation/g1/g1CollectedHeap.inline.hpp" +#include "gc_implementation/g1/g1CollectorPolicy.hpp" +#include "memory/cardTableModRefBS.hpp" +#include "utilities/copy.hpp" + +void G1CardCounts::clear_range(size_t from_card_num, size_t to_card_num) { + if (has_count_table()) { + check_card_num(from_card_num, + err_msg("from card num out of range: "SIZE_FORMAT, from_card_num)); + assert(from_card_num < to_card_num, + err_msg("Wrong order? from: " SIZE_FORMAT ", to: "SIZE_FORMAT, + from_card_num, to_card_num)); + assert(to_card_num <= _committed_max_card_num, + err_msg("to card num out of range: " + "to: "SIZE_FORMAT ", " + "max: "SIZE_FORMAT, + to_card_num, _committed_max_card_num)); + + to_card_num = MIN2(_committed_max_card_num, to_card_num); + + Copy::fill_to_bytes(&_card_counts[from_card_num], (to_card_num - from_card_num)); + } +} + +G1CardCounts::G1CardCounts(G1CollectedHeap *g1h): + _g1h(g1h), _card_counts(NULL), + _reserved_max_card_num(0), _committed_max_card_num(0), + _committed_size(0) {} + +void G1CardCounts::initialize() { + assert(_g1h->max_capacity() > 0, "initialization order"); + assert(_g1h->capacity() == 0, "initialization order"); + + if (G1ConcRSHotCardLimit > 0) { + // The max value we can store in the counts table is + // max_jubyte. Guarantee the value of the hot + // threshold limit is no more than this. + guarantee(G1ConcRSHotCardLimit <= max_jubyte, "sanity"); + + ModRefBarrierSet* bs = _g1h->mr_bs(); + guarantee(bs->is_a(BarrierSet::CardTableModRef), "Precondition"); + _ct_bs = (CardTableModRefBS*)bs; + _ct_bot = _ct_bs->byte_for_const(_g1h->reserved_region().start()); + + // Allocate/Reserve the counts table + size_t reserved_bytes = _g1h->max_capacity(); + _reserved_max_card_num = reserved_bytes >> CardTableModRefBS::card_shift; + + size_t reserved_size = _reserved_max_card_num * sizeof(jbyte); + ReservedSpace rs(ReservedSpace::allocation_align_size_up(reserved_size)); + if (!rs.is_reserved()) { + warning("Could not reserve enough space for the card counts table"); + guarantee(!has_reserved_count_table(), "should be NULL"); + return; + } + + _card_counts_storage.initialize(rs, 0); + _card_counts = (jubyte*) _card_counts_storage.low(); + } +} + +void G1CardCounts::resize(size_t heap_capacity) { + // Expand the card counts table to handle a heap with the given capacity. + + if (!has_reserved_count_table()) { + // Don't expand if we failed to reserve the card counts table. + return; + } + + assert(_committed_size == + ReservedSpace::allocation_align_size_up(_committed_size), + err_msg("Unaligned? committed_size: " SIZE_FORMAT, _committed_size)); + + // Verify that the committed space for the card counts + // matches our committed max card num. + size_t prev_committed_size = _committed_size; + size_t prev_committed_card_num = prev_committed_size / sizeof(jbyte); + assert(prev_committed_card_num == _committed_max_card_num, + err_msg("Card mismatch: " + "prev: " SIZE_FORMAT ", " + "committed: "SIZE_FORMAT, + prev_committed_card_num, _committed_max_card_num)); + + size_t new_size = (heap_capacity >> CardTableModRefBS::card_shift) * sizeof(jbyte); + size_t new_committed_size = ReservedSpace::allocation_align_size_up(new_size); + size_t new_committed_card_num = + MIN2(_reserved_max_card_num, new_committed_size / sizeof(jbyte)); + + if (_committed_max_card_num < new_committed_card_num) { + // we need to expand the backing store for the card counts + size_t expand_size = new_committed_size - prev_committed_size; + + if (!_card_counts_storage.expand_by(expand_size)) { + warning("Card counts table backing store commit failure"); + return; + } + assert(_card_counts_storage.committed_size() == new_committed_size, + "expansion commit failure"); + + _committed_size = new_committed_size; + _committed_max_card_num = new_committed_card_num; + + clear_range(prev_committed_card_num, _committed_max_card_num); + } +} + +uint G1CardCounts::add_card_count(jbyte* card_ptr) { + // Returns the number of times the card has been refined. + // If we failed to reserve/commit the counts table, return 0. + // If card_ptr is beyond the committed end of the counts table, + // return 0. + // Otherwise return the actual count. + // Unless G1ConcRSHotCardLimit has been set appropriately, + // returning 0 will result in the card being considered + // cold and will be refined immediately. + uint count = 0; + if (has_count_table()) { + size_t card_num = ptr_2_card_num(card_ptr); + if (card_num < _committed_max_card_num) { + count = (uint) _card_counts[card_num]; + if (count < G1ConcRSHotCardLimit) { + _card_counts[card_num] += 1; + } + assert(_card_counts[card_num] <= G1ConcRSHotCardLimit, + err_msg("Refinement count overflow? " + "new count: "UINT32_FORMAT, + (uint) _card_counts[card_num])); + } + } + return count; +} + +bool G1CardCounts::is_hot(uint count) { + return (count >= G1ConcRSHotCardLimit); +} + +void G1CardCounts::clear_region(HeapRegion* hr) { + assert(!hr->isHumongous(), "Should have been cleared"); + if (has_count_table()) { + HeapWord* bottom = hr->bottom(); + + // 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 + // card table. + HeapWord* last = hr->end() - 1; + assert(_g1h->g1_committed().contains(last), + err_msg("last not in committed: " + "last: " PTR_FORMAT ", " + "committed: [" PTR_FORMAT ", " PTR_FORMAT ")", + last, + _g1h->g1_committed().start(), + _g1h->g1_committed().end())); + + const jbyte* from_card_ptr = _ct_bs->byte_for_const(bottom); + const jbyte* last_card_ptr = _ct_bs->byte_for_const(last); + +#ifdef ASSERT + HeapWord* start_addr = _ct_bs->addr_for(from_card_ptr); + assert(start_addr == hr->bottom(), "alignment"); + HeapWord* last_addr = _ct_bs->addr_for(last_card_ptr); + assert((last_addr + CardTableModRefBS::card_size_in_words) == hr->end(), "alignment"); +#endif // ASSERT + + // Clear the counts for the (exclusive) card range. + size_t from_card_num = ptr_2_card_num(from_card_ptr); + size_t to_card_num = ptr_2_card_num(last_card_ptr) + 1; + clear_range(from_card_num, to_card_num); + } +} + +void G1CardCounts::clear_all() { + assert(SafepointSynchronize::is_at_safepoint(), "don't call this otherwise"); + clear_range((size_t)0, _committed_max_card_num); +} + +G1CardCounts::~G1CardCounts() { + if (has_reserved_count_table()) { + _card_counts_storage.release(); + } +} + diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1CardCounts.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1CardCounts.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1CardCounts.hpp 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1CardCounts.hpp 2016-01-20 01:41:43.000000000 +0000 @@ -0,0 +1,126 @@ +/* + * 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. + * + */ + +#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1CARDCOUNTS_HPP +#define SHARE_VM_GC_IMPLEMENTATION_G1_G1CARDCOUNTS_HPP + +#include "memory/allocation.hpp" +#include "runtime/virtualspace.hpp" +#include "utilities/globalDefinitions.hpp" + +class CardTableModRefBS; +class G1CollectedHeap; +class HeapRegion; + +// Table to track the number of times a card has been refined. Once +// a card has been refined a certain number of times, it is +// considered 'hot' and its refinement is delayed by inserting the +// card into the hot card cache. The card will then be refined when +// it is evicted from the hot card cache, or when the hot card cache +// is 'drained' during the next evacuation pause. + +class G1CardCounts: public CHeapObj { + G1CollectedHeap* _g1h; + + // The table of counts + jubyte* _card_counts; + + // Max capacity of the reserved space for the counts table + size_t _reserved_max_card_num; + + // Max capacity of the committed space for the counts table + size_t _committed_max_card_num; + + // Size of committed space for the counts table + size_t _committed_size; + + // CardTable bottom. + const jbyte* _ct_bot; + + // Barrier set + CardTableModRefBS* _ct_bs; + + // The virtual memory backing the counts table + VirtualSpace _card_counts_storage; + + // Returns true if the card counts table has been reserved. + bool has_reserved_count_table() { return _card_counts != NULL; } + + // Returns true if the card counts table has been reserved and committed. + bool has_count_table() { + return has_reserved_count_table() && _committed_max_card_num > 0; + } + + void check_card_num(size_t card_num, const char* msg) { + assert(card_num >= 0 && card_num < _committed_max_card_num, msg); + } + + size_t ptr_2_card_num(const jbyte* card_ptr) { + assert(card_ptr >= _ct_bot, + err_msg("Inavalied card pointer: " + "card_ptr: " PTR_FORMAT ", " + "_ct_bot: " PTR_FORMAT, + card_ptr, _ct_bot)); + size_t card_num = pointer_delta(card_ptr, _ct_bot, sizeof(jbyte)); + check_card_num(card_num, + err_msg("card pointer out of range: " PTR_FORMAT, card_ptr)); + return card_num; + } + + jbyte* card_num_2_ptr(size_t card_num) { + check_card_num(card_num, + err_msg("card num out of range: "SIZE_FORMAT, card_num)); + return (jbyte*) (_ct_bot + card_num); + } + + // Clear the counts table for the given (exclusive) index range. + void clear_range(size_t from_card_num, size_t to_card_num); + + public: + G1CardCounts(G1CollectedHeap* g1h); + ~G1CardCounts(); + + void initialize(); + + // Resize the committed space for the card counts table in + // response to a resize of the committed space for the heap. + void resize(size_t heap_capacity); + + // Increments the refinement count for the given card. + // Returns the pre-increment count value. + uint add_card_count(jbyte* card_ptr); + + // Returns true if the given count is high enough to be considered + // 'hot'; false otherwise. + bool is_hot(uint count); + + // Clears the card counts for the cards spanned by the region + void clear_region(HeapRegion* hr); + + // Clear the entire card counts table during GC. + // Updates the policy stats with the duration. + void clear_all(); +}; + +#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1CARDCOUNTS_HPP diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2016-01-20 01:41:43.000000000 +0000 @@ -94,7 +94,7 @@ _sts(sts), _g1rs(g1rs), _cg1r(cg1r), _concurrent(true) {} bool do_card_ptr(jbyte* card_ptr, int worker_i) { - bool oops_into_cset = _g1rs->concurrentRefineOneCard(card_ptr, worker_i, false); + bool oops_into_cset = _g1rs->refine_card(card_ptr, worker_i, false); // This path is executed by the concurrent refine or mutator threads, // concurrently, and so we do not care if card_ptr contains references // that point into the collection set. @@ -1402,9 +1402,10 @@ _hr_printer.end_gc(true /* full */, (size_t) total_collections()); } - if (_cg1r->use_cache()) { - _cg1r->clear_and_record_card_counts(); - _cg1r->clear_hot_cache(); + G1HotCardCache* hot_card_cache = _cg1r->hot_card_cache(); + if (hot_card_cache->use_cache()) { + hot_card_cache->reset_card_counts(); + hot_card_cache->reset_hot_cache(); } // Rebuild remembered sets of all regions. @@ -1706,6 +1707,8 @@ Universe::heap()->barrier_set()->resize_covered_region(_g1_committed); // Tell the BOT about the update. _bot_shared->resize(_g1_committed.word_size()); + // Tell the hot card cache about the update + _cg1r->hot_card_cache()->resize_card_counts(capacity()); } bool G1CollectedHeap::expand(size_t expand_bytes) { @@ -1939,7 +1942,7 @@ Universe::check_alignment(init_byte_size, HeapRegion::GrainBytes, "g1 heap"); Universe::check_alignment(max_byte_size, HeapRegion::GrainBytes, "g1 heap"); - _cg1r = new ConcurrentG1Refine(); + _cg1r = new ConcurrentG1Refine(this); // Reserve the maximum. PermanentGenerationSpec* pgs = collector_policy()->permanent_generation(); @@ -2038,6 +2041,9 @@ (HeapWord*) _g1_reserved.end(), _expansion_regions); + // Do later initialization work for concurrent refinement. + _cg1r->init(); + // 6843694 - ensure that the maximum region index can fit // in the remembered set structures. const size_t max_region_idx = ((size_t)1 << (sizeof(RegionIdx_t)*BitsPerByte-1)) - 1; @@ -2125,9 +2131,6 @@ // counts and that mechanism. SpecializationStats::clear(); - // Do later initialization work for concurrent refinement. - _cg1r->init(); - // Here we allocate the dummy full region that is required by the // G1AllocRegion class. If we don't pass an address in the reserved // space here, lots of asserts fire. @@ -2241,7 +2244,8 @@ bool concurrent, int worker_i) { // Clean cards in the hot card cache - concurrent_g1_refine()->clean_up_cache(worker_i, g1_rem_set(), into_cset_dcq); + G1HotCardCache* hot_card_cache = _cg1r->hot_card_cache(); + hot_card_cache->drain(worker_i, g1_rem_set(), into_cset_dcq); DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set(); int n_completed_buffers = 0; @@ -5351,8 +5355,11 @@ set_evacuation_failed(false); g1_rem_set()->prepare_for_oops_into_collection_set_do(); - concurrent_g1_refine()->set_use_cache(false); - concurrent_g1_refine()->clear_hot_cache_claimed_index(); + + // Disable the hot card cache. + G1HotCardCache* hot_card_cache = _cg1r->hot_card_cache(); + hot_card_cache->reset_hot_cache_claimed_index(); + hot_card_cache->set_use_cache(false); uint n_workers; if (G1CollectedHeap::use_parallel_gc_threads()) { @@ -5420,8 +5427,11 @@ release_gc_alloc_regions(); g1_rem_set()->cleanup_after_oops_into_collection_set_do(); - concurrent_g1_refine()->clear_hot_cache(); - concurrent_g1_refine()->set_use_cache(true); + // Reset and re-enable the hot card cache. + // Note the counts for the cards in the regions in the + // collection set are reset when the collection set is freed. + hot_card_cache->reset_hot_cache(); + hot_card_cache->set_use_cache(true); finalize_for_evac_failure(); @@ -5483,6 +5493,12 @@ assert(!hr->is_empty(), "the region should not be empty"); assert(free_list != NULL, "pre-condition"); + // Clear the card counts for this region. + // Note: we only need to do this if the region is not young + // (since we don't refine cards in young regions). + if (!hr->is_young()) { + _cg1r->hot_card_cache()->reset_card_counts(hr); + } *pre_used += hr->used(); hr->hr_clear(par, true /* clear_space */); free_list->add_as_head(hr); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp 2016-01-20 01:41:43.000000000 +0000 @@ -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 @@ -146,14 +146,6 @@ _cur_ref_proc_time_ms(0.0), _cur_ref_enq_time_ms(0.0), -#ifndef PRODUCT - _min_clear_cc_time_ms(-1.0), - _max_clear_cc_time_ms(-1.0), - _cur_clear_cc_time_ms(0.0), - _cum_clear_cc_time_ms(0.0), - _num_cc_clears(0L), -#endif - _aux_num(10), _all_aux_times_ms(new NumberSeq[_aux_num]), _cur_aux_start_times_ms(new double[_aux_num]), @@ -1431,15 +1423,6 @@ print_stats(1, "Complete CSet Marking", _mark_closure_time_ms); } print_stats(1, "Clear CT", _cur_clear_ct_time_ms); -#ifndef PRODUCT - print_stats(1, "Cur Clear CC", _cur_clear_cc_time_ms); - print_stats(1, "Cum Clear CC", _cum_clear_cc_time_ms); - print_stats(1, "Min Clear CC", _min_clear_cc_time_ms); - print_stats(1, "Max Clear CC", _max_clear_cc_time_ms); - if (_num_cc_clears > 0) { - print_stats(1, "Avg Clear CC", _cum_clear_cc_time_ms / ((double)_num_cc_clears)); - } -#endif print_stats(1, "Other", other_time_ms); print_stats(2, "Choose CSet", (_recorded_young_cset_choice_time_ms + diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp 2016-01-20 01:41:43.000000000 +0000 @@ -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 @@ -184,15 +184,6 @@ double _cur_ref_proc_time_ms; double _cur_ref_enq_time_ms; -#ifndef PRODUCT - // Card Table Count Cache stats - double _min_clear_cc_time_ms; // min - double _max_clear_cc_time_ms; // max - double _cur_clear_cc_time_ms; // clearing time during current pause - double _cum_clear_cc_time_ms; // cummulative clearing time - jlong _num_cc_clears; // number of times the card count cache has been cleared -#endif - // These exclude marking times. TruncatedSeq* _recent_gc_times_ms; @@ -917,18 +908,6 @@ _cur_ref_enq_time_ms = ms; } -#ifndef PRODUCT - void record_cc_clear_time(double ms) { - if (_min_clear_cc_time_ms < 0.0 || ms <= _min_clear_cc_time_ms) - _min_clear_cc_time_ms = ms; - if (_max_clear_cc_time_ms < 0.0 || ms >= _max_clear_cc_time_ms) - _max_clear_cc_time_ms = ms; - _cur_clear_cc_time_ms = ms; - _cum_clear_cc_time_ms += ms; - _num_cc_clears++; - } -#endif - // Record how much space we copied during a GC. This is typically // called when a GC alloc region is being retired. void record_bytes_copied_during_gc(size_t bytes) { diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp 2016-01-20 01:41:44.000000000 +0000 @@ -170,16 +170,12 @@ "Select green, yellow and red zones adaptively to meet the " \ "the pause requirements.") \ \ - develop(intx, G1ConcRSLogCacheSize, 10, \ + product(uintx, G1ConcRSLogCacheSize, 10, \ "Log base 2 of the length of conc RS hot-card cache.") \ \ - develop(intx, G1ConcRSHotCardLimit, 4, \ + product(uintx, G1ConcRSHotCardLimit, 4, \ "The threshold that defines (>=) a hot card.") \ \ - develop(intx, G1MaxHotCardCountSizePercent, 25, \ - "The maximum size of the hot card count cache as a " \ - "percentage of the number of cards for the maximum heap.") \ - \ develop(bool, G1PrintOopAppls, false, \ "When true, print applications of closures to external locs.") \ \ @@ -254,10 +250,6 @@ "If non-0 is the number of parallel rem set update threads, " \ "otherwise the value is determined ergonomically.") \ \ - develop(intx, G1CardCountCacheExpandThreshold, 16, \ - "Expand the card count cache if the number of collisions for " \ - "a particular entry exceeds this value.") \ - \ develop(bool, G1VerifyCTCleanup, false, \ "Verify card table cleanup.") \ \ diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1HotCardCache.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1HotCardCache.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1HotCardCache.cpp 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1HotCardCache.cpp 2016-01-20 01:41:43.000000000 +0000 @@ -0,0 +1,148 @@ +/* + * 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. + * + */ + +#include "precompiled.hpp" +#include "gc_implementation/g1/dirtyCardQueue.hpp" +#include "gc_implementation/g1/g1CollectedHeap.inline.hpp" +#include "gc_implementation/g1/g1HotCardCache.hpp" +#include "gc_implementation/g1/g1RemSet.hpp" +#include "gc_implementation/g1/heapRegion.hpp" +#include "runtime/atomic.hpp" + +G1HotCardCache::G1HotCardCache(G1CollectedHeap *g1h): + _g1h(g1h), _hot_cache(NULL), _use_cache(false), _card_counts(g1h) {} + +void G1HotCardCache::initialize() { + if (default_use_cache()) { + _use_cache = true; + + _hot_cache_size = (1 << G1ConcRSLogCacheSize); + _hot_cache = NEW_C_HEAP_ARRAY(jbyte*, _hot_cache_size); + + _n_hot = 0; + _hot_cache_idx = 0; + + // For refining the cards in the hot cache in parallel + int n_workers = (ParallelGCThreads > 0 ? + _g1h->workers()->total_workers() : 1); + _hot_cache_par_chunk_size = MAX2(1, _hot_cache_size / n_workers); + _hot_cache_par_claimed_idx = 0; + + _card_counts.initialize(); + } +} + +G1HotCardCache::~G1HotCardCache() { + if (default_use_cache()) { + assert(_hot_cache != NULL, "Logic"); + FREE_C_HEAP_ARRAY(jbyte*, _hot_cache); + } +} + +jbyte* G1HotCardCache::insert(jbyte* card_ptr) { + uint count = _card_counts.add_card_count(card_ptr); + if (!_card_counts.is_hot(count)) { + // The card is not hot so do not store it in the cache; + // return it for immediate refining. + return card_ptr; + } + + // Otherwise, the card is hot. + jbyte* res = NULL; + MutexLockerEx x(HotCardCache_lock, Mutex::_no_safepoint_check_flag); + if (_n_hot == _hot_cache_size) { + res = _hot_cache[_hot_cache_idx]; + _n_hot--; + } + + // Now _n_hot < _hot_cache_size, and we can insert at _hot_cache_idx. + _hot_cache[_hot_cache_idx] = card_ptr; + _hot_cache_idx++; + + if (_hot_cache_idx == _hot_cache_size) { + // Wrap around + _hot_cache_idx = 0; + } + _n_hot++; + + return res; +} + +void G1HotCardCache::drain(int worker_i, + G1RemSet* g1rs, + DirtyCardQueue* into_cset_dcq) { + if (!default_use_cache()) { + assert(_hot_cache == NULL, "Logic"); + return; + } + + assert(_hot_cache != NULL, "Logic"); + assert(!use_cache(), "cache should be disabled"); + int start_idx; + + while ((start_idx = _hot_cache_par_claimed_idx) < _n_hot) { // read once + int end_idx = start_idx + _hot_cache_par_chunk_size; + + if (start_idx == + Atomic::cmpxchg(end_idx, &_hot_cache_par_claimed_idx, start_idx)) { + // The current worker has successfully claimed the chunk [start_idx..end_idx) + end_idx = MIN2(end_idx, _n_hot); + for (int i = start_idx; i < end_idx; i++) { + jbyte* card_ptr = _hot_cache[i]; + if (card_ptr != NULL) { + if (g1rs->refine_card(card_ptr, worker_i, true)) { + // The part of the heap spanned by the card contains references + // that point into the current collection set. + // We need to record the card pointer in the DirtyCardQueueSet + // that we use for such cards. + // + // The only time we care about recording cards that contain + // references that point into the collection set is during + // RSet updating while within an evacuation pause. + // In this case worker_i should be the id of a GC worker thread + assert(SafepointSynchronize::is_at_safepoint(), "Should be at a safepoint"); + assert(worker_i < (int) (ParallelGCThreads == 0 ? 1 : ParallelGCThreads), + err_msg("incorrect worker id: "INT32_FORMAT, worker_i)); + + into_cset_dcq->enqueue(card_ptr); + } + } + } + } + } + // The existing entries in the hot card cache, which were just refined + // above, are discarded prior to re-enabling the cache near the end of the GC. +} + +void G1HotCardCache::resize_card_counts(size_t heap_capacity) { + _card_counts.resize(heap_capacity); +} + +void G1HotCardCache::reset_card_counts(HeapRegion* hr) { + _card_counts.clear_region(hr); +} + +void G1HotCardCache::reset_card_counts() { + _card_counts.clear_all(); +} diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1HotCardCache.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1HotCardCache.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1HotCardCache.hpp 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1HotCardCache.hpp 2016-01-20 01:41:43.000000000 +0000 @@ -0,0 +1,128 @@ +/* + * 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. + * + */ + +#ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1HOTCARDCACHE_HPP +#define SHARE_VM_GC_IMPLEMENTATION_G1_G1HOTCARDCACHE_HPP + +#include "gc_implementation/g1/g1_globals.hpp" +#include "gc_implementation/g1/g1CardCounts.hpp" +#include "memory/allocation.hpp" +#include "runtime/safepoint.hpp" +#include "runtime/thread.hpp" +#include "utilities/globalDefinitions.hpp" + +class DirtyCardQueue; +class G1CollectedHeap; +class G1RemSet; +class HeapRegion; + +// An evicting cache of cards that have been logged by the G1 post +// write barrier. Placing a card in the cache delays the refinement +// of the card until the card is evicted, or the cache is drained +// during the next evacuation pause. +// +// The first thing the G1 post write barrier does is to check whether +// the card containing the updated pointer is already dirty and, if +// so, skips the remaining code in the barrier. +// +// Delaying the refinement of a card will make the card fail the +// first is_dirty check in the write barrier, skipping the remainder +// of the write barrier. +// +// This can significantly reduce the overhead of the write barrier +// code, increasing throughput. + +class G1HotCardCache: public CHeapObj { + G1CollectedHeap* _g1h; + + // The card cache table + jbyte** _hot_cache; + + int _hot_cache_size; + int _n_hot; + int _hot_cache_idx; + + int _hot_cache_par_chunk_size; + volatile int _hot_cache_par_claimed_idx; + + bool _use_cache; + + G1CardCounts _card_counts; + + bool default_use_cache() const { + return (G1ConcRSLogCacheSize > 0); + } + + public: + G1HotCardCache(G1CollectedHeap* g1h); + ~G1HotCardCache(); + + void initialize(); + + bool use_cache() { return _use_cache; } + + void set_use_cache(bool b) { + _use_cache = (b ? default_use_cache() : false); + } + + // Returns the card to be refined or NULL. + // + // Increments the count for given the card. if the card is not 'hot', + // it is returned for immediate refining. Otherwise the card is + // added to the hot card cache. + // If there is enough room in the hot card cache for the card we're + // adding, NULL is returned and no further action in needed. + // If we evict a card from the cache to make room for the new card, + // the evicted card is then returned for refinement. + jbyte* insert(jbyte* card_ptr); + + // Refine the cards that have delayed as a result of + // being in the cache. + void drain(int worker_i, G1RemSet* g1rs, DirtyCardQueue* into_cset_dcq); + + // Set up for parallel processing of the cards in the hot cache + void reset_hot_cache_claimed_index() { + _hot_cache_par_claimed_idx = 0; + } + + // Resets the hot card cache and discards the entries. + void reset_hot_cache() { + assert(SafepointSynchronize::is_at_safepoint(), "Should be at a safepoint"); + assert(Thread::current()->is_VM_thread(), "Current thread should be the VMthread"); + _hot_cache_idx = 0; _n_hot = 0; + } + + bool hot_cache_is_empty() { return _n_hot == 0; } + + // Resizes the card counts table to match the given capacity + void resize_card_counts(size_t heap_capacity); + + // Zeros the values in the card counts table for entire committed heap + void reset_card_counts(); + + // Zeros the values in the card counts table for the given region + void reset_card_counts(HeapRegion* hr); +}; + +#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1HOTCARDCACHE_HPP diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp 2016-01-20 01:41:44.000000000 +0000 @@ -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 @@ -29,6 +29,7 @@ #include "gc_implementation/g1/g1BlockOffsetTable.inline.hpp" #include "gc_implementation/g1/g1CollectedHeap.inline.hpp" #include "gc_implementation/g1/g1CollectorPolicy.hpp" +#include "gc_implementation/g1/g1HotCardCache.hpp" #include "gc_implementation/g1/g1OopClosures.inline.hpp" #include "gc_implementation/g1/g1RemSet.inline.hpp" #include "gc_implementation/g1/heapRegionSeq.inline.hpp" @@ -247,7 +248,7 @@ assert(SafepointSynchronize::is_at_safepoint(), "not during an evacuation pause"); assert(worker_i < (int) (ParallelGCThreads == 0 ? 1 : ParallelGCThreads), "should be a GC worker"); - if (_g1rs->concurrentRefineOneCard(card_ptr, worker_i, true)) { + if (_g1rs->refine_card(card_ptr, worker_i, true)) { // 'card_ptr' contains references that point into the collection // set. We need to record the card in the DCQS // (G1CollectedHeap::into_cset_dirty_card_queue_set()) @@ -344,9 +345,6 @@ #if CARD_REPEAT_HISTO ct_freq_update_histo_and_reset(); #endif - if (worker_i == 0) { - _cg1r->clear_and_record_card_counts(); - } // Make this into a command-line flag... if (G1RSCountHisto && (ParallelGCThreads == 0 || worker_i == 0)) { @@ -446,7 +444,10 @@ assert(r != NULL, "unexpected null"); // Scan oops in the card looking for references into the collection set - HeapWord* end = _ct_bs->addr_for(card_ptr + 1); + // Don't use addr_for(card_ptr + 1) which can ask for + // a card beyond the heap. This is not safe without a perm + // gen. + HeapWord* end = start + CardTableModRefBS::card_size_in_words; MemRegion scanRegion(start, end); UpdateRSetImmediate update_rs_cl(_g1->g1_rem_set()); @@ -460,7 +461,7 @@ // RSet updating, // * the post-write barrier shouldn't be logging updates to young // regions (but there is a situation where this can happen - see - // the comment in G1RemSet::concurrentRefineOneCard below - + // the comment in G1RemSet::refine_card() below - // that should not be applicable here), and // * during actual RSet updating, the filtering of cards in young // regions in HeapRegion::oops_on_card_seq_iterate_careful is @@ -569,7 +570,6 @@ static IntHistogram out_of_histo(50, 50); - G1TriggerClosure::G1TriggerClosure() : _triggered(false) { } @@ -590,15 +590,98 @@ _record_refs_into_cset(record_refs_into_cset), _push_ref_cl(push_ref_cl), _worker_i(worker_i) { } -bool G1RemSet::concurrentRefineOneCard_impl(jbyte* card_ptr, int worker_i, - bool check_for_refs_into_cset) { +// Returns true if the given card contains references that point +// into the collection set, if we're checking for such references; +// false otherwise. + +bool G1RemSet::refine_card(jbyte* card_ptr, int worker_i, + bool check_for_refs_into_cset) { + + // If the card is no longer dirty, nothing to do. + if (*card_ptr != CardTableModRefBS::dirty_card_val()) { + // No need to return that this card contains refs that point + // into the collection set. + return false; + } + // Construct the region representing the card. HeapWord* start = _ct_bs->addr_for(card_ptr); // And find the region containing it. HeapRegion* r = _g1->heap_region_containing(start); - assert(r != NULL, "unexpected null"); + if (r == NULL) { + guarantee(_g1->is_in_permanent(start), "Or else where?"); + // Again no need to return that this card contains refs that + // point into the collection set. + return false; // Not in the G1 heap (might be in perm, for example.) + } - HeapWord* end = _ct_bs->addr_for(card_ptr + 1); + // Why do we have to check here whether a card is on a young region, + // given that we dirty young regions and, as a result, the + // post-barrier is supposed to filter them out and never to enqueue + // them? When we allocate a new region as the "allocation region" we + // actually dirty its cards after we release the lock, since card + // dirtying while holding the lock was a performance bottleneck. So, + // as a result, it is possible for other threads to actually + // allocate objects in the region (after the acquire the lock) + // before all the cards on the region are dirtied. This is unlikely, + // and it doesn't happen often, but it can happen. So, the extra + // check below filters out those cards. + if (r->is_young()) { + return false; + } + + // 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 + // 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 + // involves scanning a card in the collection set and coming across + // an array that was being chunked and looking malformed. Note, + // however, that if evacuation fails, we have to scan any objects + // that were not moved and create any missing entries. + if (r->in_collection_set()) { + return false; + } + + // The result from the hot card cache insert call is either: + // * pointer to the current card + // (implying that the current card is not 'hot'), + // * null + // (meaning we had inserted the card ptr into the "hot" card cache, + // which had some headroom), + // * a pointer to a "hot" card that was evicted from the "hot" cache. + // + + G1HotCardCache* hot_card_cache = _cg1r->hot_card_cache(); + if (hot_card_cache->use_cache()) { + assert(!check_for_refs_into_cset, "sanity"); + assert(!SafepointSynchronize::is_at_safepoint(), "sanity"); + + card_ptr = hot_card_cache->insert(card_ptr); + if (card_ptr == NULL) { + // There was no eviction. Nothing to do. + return false; + } + + start = _ct_bs->addr_for(card_ptr); + r = _g1->heap_region_containing(start); + if (r == NULL) { + guarantee(_g1->is_in_permanent(start), "Or else where?"); + // Not in the G1 heap + return false; + } + + // Checking whether the region we got back from the cache + // is young here is inappropriate. The region could have been + // freed, reallocated and tagged as young while in the cache. + // Hence we could see its young type change at any time. + } + + // Don't use addr_for(card_ptr + 1) which can ask for + // a card beyond the heap. This is not safe without a perm + // gen at the upper end of the heap. + HeapWord* end = start + CardTableModRefBS::card_size_in_words; MemRegion dirtyRegion(start, end); #if CARD_REPEAT_HISTO @@ -674,143 +757,17 @@ _conc_refine_cards++; } - return trigger_cl.triggered(); -} - -bool G1RemSet::concurrentRefineOneCard(jbyte* card_ptr, int worker_i, - bool check_for_refs_into_cset) { - // If the card is no longer dirty, nothing to do. - if (*card_ptr != CardTableModRefBS::dirty_card_val()) { - // No need to return that this card contains refs that point - // into the collection set. - return false; - } - - // Construct the region representing the card. - HeapWord* start = _ct_bs->addr_for(card_ptr); - // And find the region containing it. - HeapRegion* r = _g1->heap_region_containing(start); - if (r == NULL) { - guarantee(_g1->is_in_permanent(start), "Or else where?"); - // Again no need to return that this card contains refs that - // point into the collection set. - return false; // Not in the G1 heap (might be in perm, for example.) - } - // Why do we have to check here whether a card is on a young region, - // given that we dirty young regions and, as a result, the - // post-barrier is supposed to filter them out and never to enqueue - // them? When we allocate a new region as the "allocation region" we - // actually dirty its cards after we release the lock, since card - // dirtying while holding the lock was a performance bottleneck. So, - // as a result, it is possible for other threads to actually - // allocate objects in the region (after the acquire the lock) - // before all the cards on the region are dirtied. This is unlikely, - // and it doesn't happen often, but it can happen. So, the extra - // check below filters out those cards. - if (r->is_young()) { - return false; - } - // 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 - // 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 - // involves scanning a card in the collection set and coming across - // an array that was being chunked and looking malformed. Note, - // however, that if evacuation fails, we have to scan any objects - // that were not moved and create any missing entries. - if (r->in_collection_set()) { - return false; - } - - // Should we defer processing the card? - // - // Previously the result from the insert_cache call would be - // either card_ptr (implying that card_ptr was currently "cold"), - // null (meaning we had inserted the card ptr into the "hot" - // cache, which had some headroom), or a "hot" card ptr - // extracted from the "hot" cache. - // - // Now that the _card_counts cache in the ConcurrentG1Refine - // instance is an evicting hash table, the result we get back - // could be from evicting the card ptr in an already occupied - // bucket (in which case we have replaced the card ptr in the - // bucket with card_ptr and "defer" is set to false). To avoid - // having a data structure (updates to which would need a lock) - // to hold these unprocessed dirty cards, we need to immediately - // process card_ptr. The actions needed to be taken on return - // from cache_insert are summarized in the following table: - // - // res defer action - // -------------------------------------------------------------- - // null false card evicted from _card_counts & replaced with - // card_ptr; evicted ptr added to hot cache. - // No need to process res; immediately process card_ptr - // - // null true card not evicted from _card_counts; card_ptr added - // to hot cache. - // Nothing to do. - // - // non-null false card evicted from _card_counts & replaced with - // card_ptr; evicted ptr is currently "cold" or - // caused an eviction from the hot cache. - // Immediately process res; process card_ptr. - // - // non-null true card not evicted from _card_counts; card_ptr is - // currently cold, or caused an eviction from hot - // cache. - // Immediately process res; no need to process card_ptr. - - - jbyte* res = card_ptr; - bool defer = false; - - // This gets set to true if the card being refined has references - // that point into the collection set. - bool oops_into_cset = false; - - if (_cg1r->use_cache()) { - jbyte* res = _cg1r->cache_insert(card_ptr, &defer); - if (res != NULL && (res != card_ptr || defer)) { - start = _ct_bs->addr_for(res); - r = _g1->heap_region_containing(start); - if (r == NULL) { - assert(_g1->is_in_permanent(start), "Or else where?"); - } else { - // Checking whether the region we got back from the cache - // is young here is inappropriate. The region could have been - // freed, reallocated and tagged as young while in the cache. - // Hence we could see its young type change at any time. - // - // Process card pointer we get back from the hot card cache. This - // will check whether the region containing the card is young - // _after_ checking that the region has been allocated from. - oops_into_cset = concurrentRefineOneCard_impl(res, worker_i, - false /* check_for_refs_into_cset */); - // The above call to concurrentRefineOneCard_impl is only - // performed if the hot card cache is enabled. This cache is - // disabled during an evacuation pause - which is the only - // time when we need know if the card contains references - // that point into the collection set. Also when the hot card - // cache is enabled, this code is executed by the concurrent - // refine threads - rather than the GC worker threads - and - // concurrentRefineOneCard_impl will return false. - assert(!oops_into_cset, "should not see true here"); - } - } - } - - if (!defer) { - oops_into_cset = - concurrentRefineOneCard_impl(card_ptr, worker_i, check_for_refs_into_cset); - // We should only be detecting that the card contains references - // that point into the collection set if the current thread is - // a GC worker thread. - assert(!oops_into_cset || SafepointSynchronize::is_at_safepoint(), + // This gets set to true if the card being refined has + // references that point into the collection set. + bool has_refs_into_cset = trigger_cl.triggered(); + + // We should only be detecting that the card contains references + // that point into the collection set if the current thread is + // a GC worker thread. + assert(!has_refs_into_cset || SafepointSynchronize::is_at_safepoint(), "invalid result at non safepoint"); - } - return oops_into_cset; + + return has_refs_into_cset; } class HRRSStatsIter: public HeapRegionClosure { @@ -915,13 +872,16 @@ DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set(); dcqs.concatenate_logs(); } - bool cg1r_use_cache = _cg1r->use_cache(); - _cg1r->set_use_cache(false); + + G1HotCardCache* hot_card_cache = _cg1r->hot_card_cache(); + bool use_hot_card_cache = hot_card_cache->use_cache(); + hot_card_cache->set_use_cache(false); + DirtyCardQueue into_cset_dcq(&_g1->into_cset_dirty_card_queue_set()); updateRS(&into_cset_dcq, 0); _g1->into_cset_dirty_card_queue_set().clear(); - _cg1r->set_use_cache(cg1r_use_cache); + hot_card_cache->set_use_cache(use_hot_card_cache); assert(JavaThread::dirty_card_queue_set().completed_buffers_num() == 0, "All should be consumed"); } } diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.hpp 2016-01-20 01:41:44.000000000 +0000 @@ -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 @@ -66,14 +66,6 @@ // references into the collection set. OopsInHeapRegionClosure** _cset_rs_update_cl; - // The routine that performs the actual work of refining a dirty - // card. - // If check_for_refs_into_refs is true then a true result is returned - // if the card contains oops that have references into the current - // collection set. - bool concurrentRefineOneCard_impl(jbyte* card_ptr, int worker_i, - bool check_for_refs_into_cset); - public: // This is called to reset dual hash tables after the gc pause // is finished and the initial hash table is no longer being @@ -90,8 +82,7 @@ // function can be helpful in partitioning the work to be done. It // should be the same as the "i" passed to the calling thread's // work(i) function. In the sequential case this param will be ingored. - void oops_into_collection_set_do(OopsInHeapRegionClosure* blk, - int worker_i); + void oops_into_collection_set_do(OopsInHeapRegionClosure* blk, int worker_i); // Prepare for and cleanup after an oops_into_collection_set_do // call. Must call each of these once before and after (in sequential @@ -124,14 +115,13 @@ void scrub_par(BitMap* region_bm, BitMap* card_bm, uint worker_num, int claim_val); - // Refine the card corresponding to "card_ptr". If "sts" is non-NULL, - // join and leave around parts that must be atomic wrt GC. (NULL means - // being done at a safepoint.) + // Refine the card corresponding to "card_ptr". // If check_for_refs_into_cset is true, a true result is returned // if the given card contains oops that have references into the // current collection set. - virtual bool concurrentRefineOneCard(jbyte* card_ptr, int worker_i, - bool check_for_refs_into_cset); + virtual bool refine_card(jbyte* card_ptr, + int worker_i, + bool check_for_refs_into_cset); // Print any relevant summary info. virtual void print_summary_info(); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.hpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.hpp 2016-01-20 01:41:24.000000000 +0000 @@ -58,7 +58,8 @@ ParGCAllocBuffer(size_t word_sz); static const size_t min_size() { - return ThreadLocalAllocBuffer::min_size(); + // Make sure that we return something that is larger than AlignmentReserve + return align_object_size(MAX2(MinTLABSize / HeapWordSize, (uintx)oopDesc::header_size())) + AlignmentReserve; } static const size_t max_size() { diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/interpreter/linkResolver.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/interpreter/linkResolver.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/interpreter/linkResolver.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/interpreter/linkResolver.cpp 2016-01-20 01:41:32.000000000 +0000 @@ -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 @@ -179,6 +179,14 @@ void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) { methodOop result_oop = klass->uncached_lookup_method(name, signature); + + //JDK 6 does not support default methods, but this code ported from JDK8 to keep code consistent for all JDK. + if (klass->oop_is_array()) { + // Only consider klass and super klass for arrays + result = methodHandle(THREAD, result_oop); + return; + } + if (EnableInvokeDynamic && result_oop != NULL) { switch (result_oop->intrinsic_id()) { case vmIntrinsics::_invokeExact: @@ -349,7 +357,7 @@ // 2. lookup method in resolved klass and its super klasses lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, CHECK); - if (resolved_method.is_null()) { // not found in the class hierarchy + if (resolved_method.is_null() && !resolved_klass->oop_is_array()) { // not found in the class hierarchy // 3. lookup method in all the interfaces implemented by the resolved klass lookup_method_in_interfaces(resolved_method, resolved_klass, method_name, method_signature, CHECK); @@ -436,17 +444,18 @@ // lookup method in this interface or its super, java.lang.Object lookup_instance_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, CHECK); - if (resolved_method.is_null()) { + if (resolved_method.is_null() && !resolved_klass->oop_is_array()) { // lookup method in all the super-interfaces lookup_method_in_interfaces(resolved_method, resolved_klass, method_name, method_signature, CHECK); - if (resolved_method.is_null()) { - // no method found - ResourceMark rm(THREAD); - THROW_MSG(vmSymbols::java_lang_NoSuchMethodError(), - methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()), - method_name, - method_signature)); - } + } + + if (resolved_method.is_null()) { + // no method found + ResourceMark rm(THREAD); + THROW_MSG(vmSymbols::java_lang_NoSuchMethodError(), + methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()), + method_name, + method_signature)); } if (check_access) { @@ -536,7 +545,7 @@ // Resolve instance field fieldDescriptor fd; // find_field initializes fd if found - KlassHandle sel_klass(THREAD, instanceKlass::cast(resolved_klass())->find_field(field, sig, &fd)); + KlassHandle sel_klass(THREAD, resolved_klass->find_field(field, sig, &fd)); // check if field exists; i.e., if a klass containing the field def has been selected if (sel_klass.is_null()){ ResourceMark rm(THREAD); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/memory/referenceProcessor.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/memory/referenceProcessor.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/memory/referenceProcessor.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/memory/referenceProcessor.cpp 2016-01-20 01:41:35.000000000 +0000 @@ -116,6 +116,7 @@ _discoveredWeakRefs = &_discoveredSoftRefs[_max_num_q]; _discoveredFinalRefs = &_discoveredWeakRefs[_max_num_q]; _discoveredPhantomRefs = &_discoveredFinalRefs[_max_num_q]; + _discoveredCleanerRefs = &_discoveredPhantomRefs[_max_num_q]; // Initialize all entries to NULL for (uint i = 0; i < _max_num_q * number_of_subclasses_of_ref(); i++) { @@ -229,6 +230,11 @@ TraceTime tt("PhantomReference", trace_time, false, gclog_or_tty); process_discovered_reflist(_discoveredPhantomRefs, NULL, false, is_alive, keep_alive, complete_gc, task_executor); + // Process cleaners, but include them in phantom statistics. We expect + // Cleaner references to be temporary, and don't want to deal with + // possible incompatibilities arising from making it more visible. + process_discovered_reflist(_discoveredCleanerRefs, NULL, true, + is_alive, keep_alive, complete_gc, task_executor); } // Weak global JNI references. It would make more sense (semantically) to @@ -876,6 +882,7 @@ balance_queues(_discoveredWeakRefs); balance_queues(_discoveredFinalRefs); balance_queues(_discoveredPhantomRefs); + balance_queues(_discoveredCleanerRefs); } void @@ -1034,6 +1041,9 @@ case REF_PHANTOM: list = &_discoveredPhantomRefs[id]; break; + case REF_CLEANER: + list = &_discoveredCleanerRefs[id]; + break; case REF_NONE: // we should not reach here if we are an instanceRefKlass default: @@ -1328,6 +1338,17 @@ preclean_discovered_reflist(_discoveredPhantomRefs[i], is_alive, keep_alive, complete_gc, yield); } + + // Cleaner references. Included in timing for phantom references. We + // expect Cleaner references to be temporary, and don't want to deal with + // possible incompatibilities arising from making it more visible. + for (uint i = 0; i < _max_num_q; i++) { + if (yield->should_return()) { + return; + } + preclean_discovered_reflist(_discoveredCleanerRefs[i], is_alive, + keep_alive, complete_gc, yield); + } } } @@ -1396,6 +1417,7 @@ case 1: return "WeakRef"; case 2: return "FinalRef"; case 3: return "PhantomRef"; + case 4: return "CleanerRef"; } ShouldNotReachHere(); return NULL; diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/memory/referenceProcessor.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/memory/referenceProcessor.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/memory/referenceProcessor.hpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/memory/referenceProcessor.hpp 2016-01-20 01:41:35.000000000 +0000 @@ -264,9 +264,10 @@ DiscoveredList* _discoveredWeakRefs; DiscoveredList* _discoveredFinalRefs; DiscoveredList* _discoveredPhantomRefs; + DiscoveredList* _discoveredCleanerRefs; public: - static int number_of_subclasses_of_ref() { return (REF_PHANTOM - REF_OTHER); } + static int number_of_subclasses_of_ref() { return (REF_CLEANER - REF_OTHER); } uint num_q() { return _num_q; } uint max_num_q() { return _max_num_q; } diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2016-01-20 01:41:36.000000000 +0000 @@ -240,22 +240,19 @@ } size_t ThreadLocalAllocBuffer::initial_desired_size() { - size_t init_sz; + size_t init_sz = 0; if (TLABSize > 0) { - init_sz = MIN2(TLABSize / HeapWordSize, max_size()); - } else if (global_stats() == NULL) { - // Startup issue - main thread initialized before heap initialized. - init_sz = min_size(); - } else { + init_sz = TLABSize / HeapWordSize; + } else if (global_stats() != NULL) { // Initial size is a function of the average number of allocating threads. unsigned nof_threads = global_stats()->allocating_threads_avg(); init_sz = (Universe::heap()->tlab_capacity(myThread()) / HeapWordSize) / (nof_threads * target_refills()); init_sz = align_object_size(init_sz); - init_sz = MIN2(MAX2(init_sz, min_size()), max_size()); } + init_sz = MIN2(MAX2(init_sz, min_size()), max_size()); return init_sz; } diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp 2016-01-20 01:41:36.000000000 +0000 @@ -103,7 +103,7 @@ // 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 min_size() { return align_object_size(MinTLABSize / HeapWordSize) + alignment_reserve(); } static const size_t max_size(); HeapWord* start() const { return _start; } diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/oops/arrayKlass.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/oops/arrayKlass.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/oops/arrayKlass.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/oops/arrayKlass.cpp 2016-01-20 01:41:36.000000000 +0000 @@ -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 @@ -64,6 +64,13 @@ return NULL; } +// find field according to JVM spec 5.4.3.2, returns the klass in which the field is defined +klassOop arrayKlass::find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const { + // There are no fields in an array klass but look to the super class (Object) + assert(super(), "super klass must be present"); + return Klass::cast(super())->find_field(name, sig, fd); +} + methodOop arrayKlass::uncached_lookup_method(Symbol* name, Symbol* signature) const { // There are no methods in an array klass but the super class (Object) has some assert(super(), "super klass must be present"); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/oops/arrayKlass.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/oops/arrayKlass.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/oops/arrayKlass.hpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/oops/arrayKlass.hpp 2016-01-20 01:41:36.000000000 +0000 @@ -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 @@ -30,6 +30,8 @@ #include "oops/klassOop.hpp" #include "oops/klassVtable.hpp" +class fieldDescriptor; + // arrayKlass is the abstract baseclass for all array classes class arrayKlass: public Klass { @@ -83,6 +85,9 @@ virtual oop multi_allocate(int rank, jint* sizes, TRAPS); objArrayOop allocate_arrayArray(int n, int length, TRAPS); + // find field according to JVM spec 5.4.3.2, returns the klass in which the field is defined + klassOop find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const; + // Lookup operations methodOop uncached_lookup_method(Symbol* name, Symbol* signature) const; diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/oops/klass.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/oops/klass.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/oops/klass.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/oops/klass.cpp 2016-01-20 01:41:37.000000000 +0000 @@ -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 @@ -118,6 +118,15 @@ return is_subclass_of(k); } +klassOop Klass::find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const { +#ifdef ASSERT + tty->print_cr("Error: find_field called on a klass oop." + " Likely error: reflection method does not correctly" + " wrap return value in a mirror object."); +#endif + ShouldNotReachHere(); + return NULL; +} methodOop Klass::uncached_lookup_method(Symbol* name, Symbol* signature) const { #ifdef ASSERT diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/oops/klass.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/oops/klass.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/oops/klass.hpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/oops/klass.hpp 2016-01-20 01:41:37.000000000 +0000 @@ -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 @@ -88,6 +88,7 @@ class klassVtable; class KlassHandle; class OrderAccess; +class fieldDescriptor; // Holder (or cage) for the C++ vtable of each kind of Klass. // We want to tightly constrain the location of the C++ vtable in the overall layout. @@ -514,6 +515,7 @@ virtual void initialize(TRAPS); // lookup operation for MethodLookupCache friend class MethodLookupCache; + virtual klassOop find_field(Symbol* name, Symbol* signature, fieldDescriptor* fd) const; virtual methodOop uncached_lookup_method(Symbol* name, Symbol* signature) const; public: methodOop lookup_method(Symbol* name, Symbol* signature) const { diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/oops/klassVtable.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/oops/klassVtable.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/oops/klassVtable.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/oops/klassVtable.cpp 2016-01-20 01:41:37.000000000 +0000 @@ -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 @@ -209,6 +209,17 @@ // For bytecodes not produced by javac together it is possible that a method does not override // the superclass's method, but might indirectly override a super-super class's vtable entry // If none found, return a null superk, else return the superk of the method this does override +// For public and protected methods: if they override a superclass, they will +// also be overridden themselves appropriately. +// Private methods do not override and are not overridden. +// Package Private methods are trickier: +// e.g. P1.A, pub m +// P2.B extends A, package private m +// P1.C extends B, public m +// P1.C.m needs to override P1.A.m and can not override P2.B.m +// Therefore: all package private methods need their own vtable entries for +// them to be the root of an inheritance overriding decision +// Package private methods may also override other vtable entries instanceKlass* klassVtable::find_transitive_override(instanceKlass* initialsuper, methodHandle target_method, int vtable_index, Handle target_loader, Symbol* target_classname, Thread * THREAD) { instanceKlass* superk = initialsuper; @@ -310,8 +321,12 @@ ((klass->major_version() >= VTABLE_TRANSITIVE_OVERRIDE_VERSION) && ((super_klass = find_transitive_override(super_klass, target_method, i, target_loader, target_classname, THREAD)) != (instanceKlass*)NULL))) { - // overriding, so no new entry - allocate_new = false; + + // Package private methods always need a new entry to root their own + // overriding. They may also override other methods. + if (!target_method()->is_package_private()) { + allocate_new = false; + } if (checkconstraints) { // Override vtable entry if passes loader constraint check @@ -433,6 +448,12 @@ return true; } + // Package private methods always need a new entry to root their own + // overriding. This allows transitive overriding to work. + if (target_method()->is_package_private()) { + return true; + } + // search through the super class hierarchy to see if we need // a new entry ResourceMark rm; diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/opto/graphKit.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/opto/graphKit.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/opto/graphKit.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/opto/graphKit.cpp 2016-01-20 01:41:41.000000000 +0000 @@ -1108,6 +1108,17 @@ } return _gvn.transform( new (C, 2) ConvI2LNode(offset)); } + +Node* GraphKit::ConvI2UL(Node* offset) { + juint offset_con = (juint) find_int_con(offset, Type::OffsetBot); + if (offset_con != (juint) Type::OffsetBot) { + return longcon((julong) offset_con); + } + Node* conv = _gvn.transform( new (C) ConvI2LNode(offset)); + Node* mask = _gvn.transform( ConLNode::make(C, (julong) max_juint) ); + return _gvn.transform( new (C) AndLNode(conv, mask) ); +} + Node* GraphKit::ConvL2I(Node* offset) { // short-circuit a common case jlong offset_con = find_long_con(offset, (jlong)Type::OffsetBot); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/opto/graphKit.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/opto/graphKit.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/opto/graphKit.hpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/opto/graphKit.hpp 2016-01-20 01:41:41.000000000 +0000 @@ -331,6 +331,7 @@ // Convert between int and long, and size_t. // (See macros ConvI2X, etc., in type.hpp for ConvI2X, etc.) Node* ConvI2L(Node* offset); + Node* ConvI2UL(Node* offset); Node* ConvL2I(Node* offset); // Find out the klass of an object. Node* load_object_klass(Node* object); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/opto/library_call.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/opto/library_call.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/opto/library_call.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/opto/library_call.cpp 2016-01-20 01:41:41.000000000 +0000 @@ -2447,7 +2447,7 @@ case T_ADDRESS: // Cast to an int type. p = _gvn.transform( new (C, 2) CastP2XNode(NULL,p) ); - p = ConvX2L(p); + p = ConvX2UL(p); push_pair(p); break; case T_DOUBLE: diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/opto/reg_split.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/opto/reg_split.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/opto/reg_split.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/opto/reg_split.cpp 2016-01-20 01:41:42.000000000 +0000 @@ -316,10 +316,13 @@ if( def->req() > 1 ) { for( uint i = 1; i < def->req(); i++ ) { Node *in = def->in(i); - // Check for single-def (LRG cannot redefined) uint lidx = n2lidx(in); - if( lidx >= _maxlrg ) continue; // Value is a recent spill-copy - if (lrgs(lidx).is_singledef()) continue; + // We do not need this for live ranges that are only defined once. + // However, this is not true for spill copies that are added in this + // Split() pass, since they might get coalesced later on in this pass. + if (lidx < _maxlrg && lrgs(lidx).is_singledef()) { + continue; + } Block *b_def = _cfg._bbs[def->_idx]; int idx_def = b_def->find_node(def); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/opto/stringopts.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/opto/stringopts.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/opto/stringopts.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/opto/stringopts.cpp 2016-01-20 01:41:43.000000000 +0000 @@ -929,8 +929,8 @@ } Node* PhaseStringOpts::fetch_static_field(GraphKit& kit, ciField* field) { - const TypeKlassPtr* klass_type = TypeKlassPtr::make(field->holder()); - Node* klass_node = __ makecon(klass_type); + const TypeInstPtr* mirror_type = TypeInstPtr::make(field->holder()->java_mirror()); + Node* klass_node = __ makecon(mirror_type); BasicType bt = field->layout_type(); ciType* field_klass = field->type(); @@ -945,6 +945,7 @@ // and may yield a vacuous result if the field is of interface type. type = TypeOopPtr::make_from_constant(con, true)->isa_oopptr(); assert(type != NULL, "field singleton type must be consistent"); + return __ makecon(type); } else { type = TypeOopPtr::make_from_klass(field_klass->as_klass()); } @@ -954,7 +955,7 @@ return kit.make_load(NULL, kit.basic_plus_adr(klass_node, field->offset_in_bytes()), type, T_OBJECT, - C->get_alias_index(klass_type->add_offset(field->offset_in_bytes()))); + C->get_alias_index(mirror_type->add_offset(field->offset_in_bytes()))); } Node* PhaseStringOpts::int_stringSize(GraphKit& kit, Node* arg) { diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/opto/type.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/opto/type.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/opto/type.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/opto/type.cpp 2016-01-20 01:41:43.000000000 +0000 @@ -1077,11 +1077,11 @@ // Certain normalizations keep us sane when comparing types. // The 'SMALLINT' covers constants and also CC and its relatives. if (lo <= hi) { - if ((juint)(hi - lo) <= SMALLINT) w = Type::WidenMin; - if ((juint)(hi - lo) >= max_juint) w = Type::WidenMax; // TypeInt::INT + if (((juint)hi - lo) <= SMALLINT) w = Type::WidenMin; + if (((juint)hi - lo) >= max_juint) w = Type::WidenMax; // TypeInt::INT } else { - if ((juint)(lo - hi) <= SMALLINT) w = Type::WidenMin; - if ((juint)(lo - hi) >= max_juint) w = Type::WidenMin; // dual TypeInt::INT + if (((juint)lo - hi) <= SMALLINT) w = Type::WidenMin; + if (((juint)lo - hi) >= max_juint) w = Type::WidenMin; // dual TypeInt::INT } return w; } @@ -1332,11 +1332,11 @@ // Certain normalizations keep us sane when comparing types. // The 'SMALLINT' covers constants. if (lo <= hi) { - if ((julong)(hi - lo) <= SMALLINT) w = Type::WidenMin; - if ((julong)(hi - lo) >= max_julong) w = Type::WidenMax; // TypeLong::LONG + if (((julong)hi - lo) <= SMALLINT) w = Type::WidenMin; + if (((julong)hi - lo) >= max_julong) w = Type::WidenMax; // TypeLong::LONG } else { - if ((julong)(lo - hi) <= SMALLINT) w = Type::WidenMin; - if ((julong)(lo - hi) >= max_julong) w = Type::WidenMin; // dual TypeLong::LONG + if (((julong)lo - hi) <= SMALLINT) w = Type::WidenMin; + if (((julong)lo - hi) >= max_julong) w = Type::WidenMin; // dual TypeLong::LONG } return w; } diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/opto/type.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/opto/type.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/opto/type.hpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/opto/type.hpp 2016-01-20 01:41:43.000000000 +0000 @@ -1251,6 +1251,7 @@ #define ConvL2X(x) (x) #define ConvX2I(x) ConvL2I(x) #define ConvX2L(x) (x) +#define ConvX2UL(x) (x) #else @@ -1295,6 +1296,7 @@ #define ConvL2X(x) ConvL2I(x) #define ConvX2I(x) (x) #define ConvX2L(x) ConvI2L(x) +#define ConvX2UL(x) ConvI2UL(x) #endif diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/prims/jni.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/prims/jni.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/prims/jni.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/prims/jni.cpp 2016-01-20 01:41:43.000000000 +0000 @@ -5043,6 +5043,7 @@ #include "gc_interface/collectedHeap.hpp" #include "utilities/quickSort.hpp" +#include "utilities/ostream.hpp" #define run_unit_test(unit_test_function_call) \ tty->print_cr("Running test: " #unit_test_function_call); \ @@ -5055,6 +5056,7 @@ run_unit_test(CollectedHeap::test_is_in()); run_unit_test(QuickSort::test_quick_sort()); run_unit_test(AltHashing::test_alt_hash()); + run_unit_test(test_loggc_filename()); tty->print_cr("All internal VM tests passed"); } } diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/prims/jvm.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/prims/jvm.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/prims/jvm.cpp 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/prims/jvm.cpp 2016-01-20 01:41:43.000000000 +0000 @@ -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 @@ -740,6 +740,7 @@ return (jclass) JNIHandles::make_local(env, Klass::cast(k)->java_mirror()); JVM_END +// Not used; JVM_FindClassFromCaller replaces this. JVM_ENTRY(jclass, JVM_FindClassFromClassLoader(JNIEnv* env, const char* name, jboolean init, jobject loader, jboolean throwError)) @@ -766,6 +767,42 @@ return result; JVM_END +// Find a class with this name in this loader, using the caller's protection domain. +JVM_ENTRY(jclass, JVM_FindClassFromCaller(JNIEnv* env, const char* name, + jboolean init, jobject loader, + jclass caller)) + JVMWrapper2("JVM_FindClassFromCaller %s throws ClassNotFoundException", name); + // Java libraries should ensure that name is never null... + if (name == NULL || (int)strlen(name) > Symbol::max_length()) { + // It's impossible to create this class; the name cannot fit + // into the constant pool. + THROW_MSG_0(vmSymbols::java_lang_ClassNotFoundException(), name); + } + + TempNewSymbol h_name = SymbolTable::new_symbol(name, CHECK_NULL); + + oop loader_oop = JNIHandles::resolve(loader); + oop from_class = JNIHandles::resolve(caller); + oop protection_domain = NULL; + // If loader is null, shouldn't call ClassLoader.checkPackageAccess; otherwise get + // NPE. Put it in another way, the bootstrap class loader has all permission and + // thus no checkPackageAccess equivalence in the VM class loader. + // The caller is also passed as NULL by the java code if there is no security + // manager to avoid the performance cost of getting the calling class. + if (from_class != NULL && loader_oop != NULL) { + protection_domain = instanceKlass::cast(java_lang_Class::as_klassOop(from_class))->protection_domain(); + } + + Handle h_loader(THREAD, loader_oop); + Handle h_prot(THREAD, protection_domain); + jclass result = find_class_from_class_loader(env, h_name, init, h_loader, + h_prot, false, THREAD); + + if (TraceClassResolution && result != NULL) { + trace_class_resolution(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(result))); + } + return result; +JVM_END JVM_ENTRY(jclass, JVM_FindClassFromClass(JNIEnv *env, const char *name, jboolean init, jclass from)) @@ -4086,10 +4123,15 @@ // Shared JNI/JVM entry points ////////////////////////////////////////////////////////////// -jclass find_class_from_class_loader(JNIEnv* env, Symbol* name, jboolean init, Handle loader, Handle protection_domain, jboolean throwError, TRAPS) { +jclass find_class_from_class_loader(JNIEnv* env, Symbol* name, jboolean init, + Handle loader, Handle protection_domain, + jboolean throwError, TRAPS) { // Security Note: // The Java level wrapper will perform the necessary security check allowing - // us to pass the NULL as the initiating class loader. + // us to pass the NULL as the initiating class loader. The VM is responsible for + // the checkPackageAccess relative to the initiating class loader via the + // protection_domain. The protection_domain is passed as NULL by the java code + // if there is no security manager in 3-arg Class.forName(). klassOop klass = SystemDictionary::resolve_or_fail(name, loader, protection_domain, throwError != 0, CHECK_NULL); KlassHandle klass_handle(THREAD, klass); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/prims/jvm.h openjdk-6-6b38-1.13.10/hotspot/src/share/vm/prims/jvm.h --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/prims/jvm.h 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/prims/jvm.h 2016-01-20 01:41:43.000000000 +0000 @@ -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 @@ -415,6 +415,19 @@ JVM_FindClassFromBootLoader(JNIEnv *env, const char *name); /* + * Find a class from a given class loader. Throws ClassNotFoundException. + * name: name of class + * init: whether initialization is done + * loader: class loader to look up the class. This may not be the same as the caller's + * class loader. + * caller: initiating class. The initiating class may be null when a security + * manager is not installed. + */ +JNIEXPORT jclass JNICALL +JVM_FindClassFromCaller(JNIEnv *env, const char *name, jboolean init, + jobject loader, jclass caller); + +/* * Find a class from a given class. */ JNIEXPORT jclass JNICALL diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/runtime/arguments.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/runtime/arguments.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/runtime/arguments.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/runtime/arguments.cpp 2016-01-20 01:41:24.000000000 +0000 @@ -1747,6 +1747,10 @@ status = false; } +#ifdef COMPILER1 + status &= verify_interval(SafepointPollOffset, 0, os::vm_page_size() - BytesPerWord, "SafepointPollOffset"); +#endif + return status; } @@ -1930,6 +1934,10 @@ "G1RefProcDrainInterval"); status = status && verify_min_value((intx)G1ConcMarkStepDurationMillis, 1, "G1ConcMarkStepDurationMillis"); + status = status && verify_interval(G1ConcRSHotCardLimit, 0, max_jubyte, + "G1ConcRSHotCardLimit"); + status = status && verify_interval(G1ConcRSLogCacheSize, 0, 27, + "G1ConcRSLogCacheSize"); } #endif diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/runtime/globals.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/runtime/globals.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/runtime/globals.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/runtime/globals.hpp 2016-01-20 01:41:26.000000000 +0000 @@ -1133,9 +1133,11 @@ "Prevent spurious or premature wakeups from object.wait " \ "(Solaris only)") \ \ - product(intx, NativeMonitorTimeout, -1, "(Unstable)" ) \ - product(intx, NativeMonitorFlags, 0, "(Unstable)" ) \ - product(intx, NativeMonitorSpinLimit, 20, "(Unstable)" ) \ + experimental(intx, NativeMonitorTimeout, -1, "(Unstable)") \ + \ + experimental(intx, NativeMonitorFlags, 0, "(Unstable)") \ + \ + experimental(intx, NativeMonitorSpinLimit, 20, "(Unstable)") \ \ develop(bool, UsePthreads, false, \ "Use pthread-based instead of libthread-based synchronization " \ diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/runtime/os.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/runtime/os.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/runtime/os.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/runtime/os.hpp 2016-01-20 01:41:27.000000000 +0000 @@ -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 @@ -411,9 +411,6 @@ // run cmd in a separate process and return its exit code; or -1 on failures static int fork_and_exec(char *cmd); - // Set file to send error reports. - static void set_error_file(const char *logfile); - // os::exit() is merged with vm_exit() // static void exit(int num); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/runtime/vmStructs.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/runtime/vmStructs.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/runtime/vmStructs.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/runtime/vmStructs.cpp 2016-01-20 01:41:32.000000000 +0000 @@ -695,6 +695,7 @@ static_field(SystemDictionary, WK_KLASS(WeakReference_klass), klassOop) \ static_field(SystemDictionary, WK_KLASS(FinalReference_klass), klassOop) \ static_field(SystemDictionary, WK_KLASS(PhantomReference_klass), klassOop) \ + static_field(SystemDictionary, WK_KLASS(Cleaner_klass), klassOop) \ static_field(SystemDictionary, WK_KLASS(Finalizer_klass), klassOop) \ static_field(SystemDictionary, WK_KLASS(Thread_klass), klassOop) \ static_field(SystemDictionary, WK_KLASS(ThreadGroup_klass), klassOop) \ diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/utilities/defaultStream.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/utilities/defaultStream.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/utilities/defaultStream.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/utilities/defaultStream.hpp 2016-01-20 01:41:36.000000000 +0000 @@ -41,6 +41,8 @@ void init(); void init_log(); + fileStream* open_file(const char* log_name); + void start_log(); void finish_log(); void finish_log_on_error(char *buf, int buflen); public: diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/utilities/events.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/utilities/events.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/utilities/events.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/utilities/events.cpp 2016-01-20 01:41:36.000000000 +0000 @@ -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 @@ -93,7 +93,7 @@ va_start(ap, format); // Save a copy of begin message and log it. _buffer.printv(format, ap); - Events::log(NULL, _buffer); + Events::log(NULL, "%s", (const char*)_buffer); va_end(ap); } } @@ -102,6 +102,6 @@ if (LogEvents) { // Append " done" to the begin message and log it _buffer.append(" done"); - Events::log(NULL, _buffer); + Events::log(NULL, "%s", (const char*)_buffer); } } diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/utilities/globalDefinitions.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/utilities/globalDefinitions.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/utilities/globalDefinitions.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/utilities/globalDefinitions.hpp 2016-01-20 01:41:36.000000000 +0000 @@ -709,7 +709,8 @@ REF_SOFT, // Subclass of java/lang/ref/SoftReference REF_WEAK, // Subclass of java/lang/ref/WeakReference REF_FINAL, // Subclass of java/lang/ref/FinalReference - REF_PHANTOM // Subclass of java/lang/ref/PhantomReference + REF_PHANTOM, // Subclass of java/lang/ref/PhantomReference + REF_CLEANER // Subclass of sun/misc/Cleaner }; diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/utilities/ostream.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/utilities/ostream.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/utilities/ostream.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/utilities/ostream.cpp 2016-01-20 01:41:37.000000000 +0000 @@ -523,6 +523,11 @@ buffer_length += strlen(pid); } + // File name is too long. + if (buffer_length > JVM_MAXPATHLEN) { + return NULL; + } + // Create big enough buffer. char *buf = NEW_C_HEAP_ARRAY(char, buffer_length); @@ -545,87 +550,54 @@ return buf; } -void defaultStream::init_log() { - // %%% Need a MutexLocker? - const char* log_name = LogFile != NULL ? LogFile : "hotspot.log"; +fileStream* defaultStream::open_file(const char* log_name){ const char* try_name = make_log_name(log_name, NULL); + if (try_name == NULL) { + warning("Cannot open file %s: file name is too long.\n", log_name); + return NULL; + } + fileStream* file = new(ResourceObj::C_HEAP) fileStream(try_name); - if (!file->is_open()) { - // Try again to open the file. - char warnbuf[O_BUFLEN*2]; - jio_snprintf(warnbuf, sizeof(warnbuf), - "Warning: Cannot open log file: %s\n", try_name); - // Note: This feature is for maintainer use only. No need for L10N. - jio_print(warnbuf); - FREE_C_HEAP_ARRAY(char, try_name); - try_name = make_log_name("hs_pid%p.log", os::get_temp_directory()); - jio_snprintf(warnbuf, sizeof(warnbuf), - "Warning: Forcing option -XX:LogFile=%s\n", try_name); - jio_print(warnbuf); - delete file; - file = new(ResourceObj::C_HEAP) fileStream(try_name); - FREE_C_HEAP_ARRAY(char, try_name); + FREE_C_HEAP_ARRAY(char, try_name); + if (file->is_open()) { + return file; + } + + // Try again to open the file. + delete file; + char warnbuf[O_BUFLEN*2]; + jio_snprintf(warnbuf, sizeof(warnbuf), "Warning: Cannot open log file: %s\n", try_name); + // Note: This feature is for maintainer use only. No need for L10N. + jio_print(warnbuf); + try_name = make_log_name("hs_pid%p.log", os::get_temp_directory()); + if (try_name == NULL) { + warning("Cannot open file %s: file name is too long for directory %s.\n", "hs_pid", os::get_temp_directory()); + return NULL; } + + jio_snprintf(warnbuf, sizeof(warnbuf), "Warning: Forcing option -XX:LogFile=%s\n", try_name); + jio_print(warnbuf); + + file = new(ResourceObj::C_HEAP) fileStream(try_name); + FREE_C_HEAP_ARRAY(char, try_name); if (file->is_open()) { + return file; + } + + delete file; + return NULL; +} + +void defaultStream::init_log() { + // %%% Need a MutexLocker? + const char* log_name = LogFile != NULL ? LogFile : "hotspot.log"; + fileStream* file = open_file(log_name); + + if (file != NULL) { _log_file = file; - xmlStream* xs = new(ResourceObj::C_HEAP) xmlStream(file); - _outer_xmlStream = xs; - if (this == tty) xtty = xs; - // Write XML header. - xs->print_cr(""); - // (For now, don't bother to issue a DTD for this private format.) - jlong time_ms = os::javaTimeMillis() - tty->time_stamp().milliseconds(); - // %%% Should be: jlong time_ms = os::start_time_milliseconds(), if - // we ever get round to introduce that method on the os class - xs->head("hotspot_log version='%d %d'" - " process='%d' time_ms='"INT64_FORMAT"'", - LOG_MAJOR_VERSION, LOG_MINOR_VERSION, - os::current_process_id(), time_ms); - // Write VM version header immediately. - xs->head("vm_version"); - xs->head("name"); xs->text("%s", VM_Version::vm_name()); xs->cr(); - xs->tail("name"); - xs->head("release"); xs->text("%s", VM_Version::vm_release()); xs->cr(); - xs->tail("release"); - xs->head("info"); xs->text("%s", VM_Version::internal_vm_info_string()); xs->cr(); - xs->tail("info"); - xs->tail("vm_version"); - // Record information about the command-line invocation. - xs->head("vm_arguments"); // Cf. Arguments::print_on() - if (Arguments::num_jvm_flags() > 0) { - xs->head("flags"); - Arguments::print_jvm_flags_on(xs->text()); - xs->tail("flags"); - } - if (Arguments::num_jvm_args() > 0) { - xs->head("args"); - Arguments::print_jvm_args_on(xs->text()); - xs->tail("args"); - } - if (Arguments::java_command() != NULL) { - xs->head("command"); xs->text()->print_cr("%s", Arguments::java_command()); - xs->tail("command"); - } - if (Arguments::sun_java_launcher() != NULL) { - xs->head("launcher"); xs->text()->print_cr("%s", Arguments::sun_java_launcher()); - xs->tail("launcher"); - } - if (Arguments::system_properties() != NULL) { - xs->head("properties"); - // Print it as a java-style property list. - // System properties don't generally contain newlines, so don't bother with unparsing. - for (SystemProperty* p = Arguments::system_properties(); p != NULL; p = p->next()) { - xs->text()->print_cr("%s=%s", p->key(), p->value()); - } - xs->tail("properties"); - } - xs->tail("vm_arguments"); - // tty output per se is grouped under the ... element. - xs->head("tty"); - // All further non-markup text gets copied to the tty: - xs->_text = this; // requires friend declaration! + _outer_xmlStream = new(ResourceObj::C_HEAP) xmlStream(file); + start_log(); } else { - delete(file); // and leave xtty as NULL LogVMOutput = false; DisplayVMOutput = true; @@ -633,6 +605,64 @@ } } +void defaultStream::start_log() { + xmlStream* xs = _outer_xmlStream; + if (this == tty) xtty = xs; + // Write XML header. + xs->print_cr(""); + // (For now, don't bother to issue a DTD for this private format.) + jlong time_ms = os::javaTimeMillis() - tty->time_stamp().milliseconds(); + // %%% Should be: jlong time_ms = os::start_time_milliseconds(), if + // we ever get round to introduce that method on the os class + xs->head("hotspot_log version='%d %d'" + " process='%d' time_ms='"INT64_FORMAT"'", + LOG_MAJOR_VERSION, LOG_MINOR_VERSION, + os::current_process_id(), time_ms); + // Write VM version header immediately. + xs->head("vm_version"); + xs->head("name"); xs->text("%s", VM_Version::vm_name()); xs->cr(); + xs->tail("name"); + xs->head("release"); xs->text("%s", VM_Version::vm_release()); xs->cr(); + xs->tail("release"); + xs->head("info"); xs->text("%s", VM_Version::internal_vm_info_string()); xs->cr(); + xs->tail("info"); + xs->tail("vm_version"); + // Record information about the command-line invocation. + xs->head("vm_arguments"); // Cf. Arguments::print_on() + if (Arguments::num_jvm_flags() > 0) { + xs->head("flags"); + Arguments::print_jvm_flags_on(xs->text()); + xs->tail("flags"); + } + if (Arguments::num_jvm_args() > 0) { + xs->head("args"); + Arguments::print_jvm_args_on(xs->text()); + xs->tail("args"); + } + if (Arguments::java_command() != NULL) { + xs->head("command"); xs->text()->print_cr("%s", Arguments::java_command()); + xs->tail("command"); + } + if (Arguments::sun_java_launcher() != NULL) { + xs->head("launcher"); xs->text()->print_cr("%s", Arguments::sun_java_launcher()); + xs->tail("launcher"); + } + if (Arguments::system_properties() != NULL) { + xs->head("properties"); + // Print it as a java-style property list. + // System properties don't generally contain newlines, so don't bother with unparsing. + for (SystemProperty* p = Arguments::system_properties(); p != NULL; p = p->next()) { + xs->text()->print_cr("%s=%s", p->key(), p->value()); + } + xs->tail("properties"); + } + xs->tail("vm_arguments"); + // tty output per se is grouped under the ... element. + xs->head("tty"); + // All further non-markup text gets copied to the tty: + xs->_text = this; // requires friend declaration! +} + // finish_log() is called during normal VM shutdown. finish_log_on_error() is // called by ostream_abort() after a fatal error. // @@ -994,6 +1024,50 @@ } #ifndef PRODUCT +void test_loggc_filename() { + const char* o_result; + + { + // longest filename + char longest_name[JVM_MAXPATHLEN]; + memset(longest_name, 'a', sizeof(longest_name)); + longest_name[JVM_MAXPATHLEN - 1] = '\0'; + o_result = make_log_name((const char*)&longest_name, NULL); + assert(strcmp(longest_name, o_result) == 0, err_msg("longest name does not match. expected '%s' but got '%s'", longest_name, o_result)); + FREE_C_HEAP_ARRAY(char, o_result); + } + + { + // too long file name + char too_long_name[JVM_MAXPATHLEN + 100]; + int too_long_length = sizeof(too_long_name); + memset(too_long_name, 'a', too_long_length); + too_long_name[too_long_length - 1] = '\0'; + o_result = make_log_name((const char*)&too_long_name, NULL); + assert(o_result == NULL, err_msg("Too long file name should return NULL, but got '%s'", o_result)); + } + + { + // too long with pid + char longest_name[JVM_MAXPATHLEN]; + memset(longest_name, 'a', JVM_MAXPATHLEN); + longest_name[JVM_MAXPATHLEN - 3] = '%'; + longest_name[JVM_MAXPATHLEN - 2] = 'p'; + longest_name[JVM_MAXPATHLEN - 1] = '\0'; + o_result = make_log_name((const char*)&longest_name, NULL); + assert(o_result == NULL, err_msg("Too long file name after %%p pid expansion should return NULL, but got '%s'", o_result)); + } + + { + // too long with pid (star) + char longest_name[JVM_MAXPATHLEN]; + memset(longest_name, 'a', JVM_MAXPATHLEN); + longest_name[JVM_MAXPATHLEN - 2] = '*'; + longest_name[JVM_MAXPATHLEN - 1] = '\0'; + o_result = make_log_name((const char*)&longest_name, NULL); + assert(o_result == NULL, err_msg("Too long file name after star (pid) expansion should return NULL, but got '%s'", o_result)); + } +} #if defined(SOLARIS) || defined(LINUX) || defined(_ALLBSD_SOURCE) #include diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/utilities/ostream.hpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/utilities/ostream.hpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/utilities/ostream.hpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/utilities/ostream.hpp 2016-01-20 01:41:37.000000000 +0000 @@ -226,6 +226,10 @@ virtual void rotate_log(); }; +#ifndef PRODUCT +void test_loggc_filename(); +#endif + void ostream_init(); void ostream_init_log(); void ostream_exit(); diff -Nru openjdk-6-6b31-1.13.3/hotspot/src/share/vm/utilities/vmError.cpp openjdk-6-6b38-1.13.10/hotspot/src/share/vm/utilities/vmError.cpp --- openjdk-6-6b31-1.13.3/hotspot/src/share/vm/utilities/vmError.cpp 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/src/share/vm/utilities/vmError.cpp 2016-01-20 01:41:38.000000000 +0000 @@ -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 @@ -22,6 +22,7 @@ * */ +#include #include "precompiled.hpp" #include "compiler/compileBroker.hpp" #include "gc_interface/collectedHeap.hpp" @@ -901,7 +902,7 @@ bool copy_ok = Arguments::copy_expand_pid(ErrorFile, strlen(ErrorFile), buffer, sizeof(buffer)); if (copy_ok) { - fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666); + fd = open(buffer, O_RDWR | O_CREAT | O_EXCL, 0666); } } @@ -912,7 +913,7 @@ // so use the default name in the current directory jio_snprintf(&buffer[len], sizeof(buffer)-len, "%shs_err_pid%u.log", os::file_separator(), os::current_process_id()); - fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666); + fd = open(buffer, O_RDWR | O_CREAT | O_EXCL, 0666); } if (fd == -1) { @@ -921,14 +922,13 @@ if (tmpdir != NULL && tmpdir[0] != '\0') { jio_snprintf(buffer, sizeof(buffer), "%s%shs_err_pid%u.log", tmpdir, os::file_separator(), os::current_process_id()); - fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666); + fd = open(buffer, O_RDWR | O_CREAT | O_EXCL, 0666); } } if (fd != -1) { out.print_raw("# An error report file with more information is saved as:\n# "); out.print_raw_cr(buffer); - os::set_error_file(buffer); log.set_fd(fd); } else { diff -Nru openjdk-6-6b31-1.13.3/hotspot/test/compiler/6653795/UnsafeGetAddressTest.java openjdk-6-6b38-1.13.10/hotspot/test/compiler/6653795/UnsafeGetAddressTest.java --- openjdk-6-6b31-1.13.3/hotspot/test/compiler/6653795/UnsafeGetAddressTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/test/compiler/6653795/UnsafeGetAddressTest.java 2016-01-20 01:41:39.000000000 +0000 @@ -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 + * @bug 6653795 + * @summary C2 intrinsic for Unsafe.getAddress performs pointer sign extension on 32-bit systems + * @run main UnsafeGetAddressTest + * + */ + +import sun.misc.Unsafe; +import java.lang.reflect.*; + +public class UnsafeGetAddressTest { + private static Unsafe unsafe; + + public static void main(String[] args) throws Exception { + Class c = UnsafeGetAddressTest.class.getClassLoader().loadClass("sun.misc.Unsafe"); + Field f = c.getDeclaredField("theUnsafe"); + f.setAccessible(true); + unsafe = (Unsafe)f.get(c); + + long address = unsafe.allocateMemory(unsafe.addressSize()); + unsafe.putAddress(address, 0x0000000080000000L); + // from sun.misc.Unsafe.getAddress' documentation: + // "If the native pointer is less than 64 bits wide, it is + // extended as an unsigned number to a Java long." + result = unsafe.getAddress(address); + System.out.printf("1: was 0x%x, expected 0x%x\n", result, + 0x0000000080000000L); + for (int i = 0; i < 1000000; i++) { + result = unsafe.getAddress(address); + } + + // The code has got compiled, check the result now + System.out.printf("2: was 0x%x, expected 0x%x\n", result, + 0x0000000080000000L); + if (result != 0x0000000080000000L) { + System.out.println("Test Failed"); + System.exit(97); + } else { + System.out.println("Test Passed"); + } + } + static volatile long result; +} + diff -Nru openjdk-6-6b31-1.13.3/hotspot/test/compiler/7141637/SpreadNullArg.java openjdk-6-6b38-1.13.10/hotspot/test/compiler/7141637/SpreadNullArg.java --- openjdk-6-6b31-1.13.3/hotspot/test/compiler/7141637/SpreadNullArg.java 2014-04-10 15:09:34.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/test/compiler/7141637/SpreadNullArg.java 2016-01-20 01:41:43.000000000 +0000 @@ -46,13 +46,17 @@ mh_spread_target = MethodHandles.lookup().findStatic(SpreadNullArg.class, "target_spread_arg", mt_ref_arg); result = (int) mh_spreadInvoker.invokeExact(mh_spread_target, (Object[]) null); - } catch(NullPointerException e) { - // Expected exception - do nothing! - } catch(Throwable e) { + throw new Error("Expected IllegalArgumentException was not thrown"); + } catch (IllegalArgumentException e) { + System.out.println("Expected exception : " + e); + } catch (Throwable e) { throw new Error(e); } - if (result != 42) throw new Error("Expected NullPointerException was not thrown"); + if (result != 42) { + throw new Error("result [" + result + + "] != 42 : Expected IllegalArgumentException was not thrown?"); + } } public static int target_spread_arg(Integer i1) { diff -Nru openjdk-6-6b31-1.13.3/hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java openjdk-6-6b38-1.13.10/hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java --- openjdk-6-6b31-1.13.3/hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java 2016-01-20 01:41:43.000000000 +0000 @@ -0,0 +1,74 @@ +/* + * 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 + * @compile -encoding utf8 Test8028623.java + * @run main Test8028623 + */ + +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 \u00CB = 1; + public static String dumpFile = "heap.out"; + + public static void main (String[] args) { + + System.out.println(\u00CB); + + 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); + } + } +} diff -Nru openjdk-6-6b31-1.13.3/hotspot/THIRD_PARTY_README openjdk-6-6b38-1.13.10/hotspot/THIRD_PARTY_README --- openjdk-6-6b31-1.13.3/hotspot/THIRD_PARTY_README 2014-04-10 15:09:33.000000000 +0000 +++ openjdk-6-6b38-1.13.10/hotspot/THIRD_PARTY_README 2016-01-20 01:41:23.000000000 +0000 @@ -1001,7 +1001,7 @@ ------------------------------------------------------------------------------- -%% This notice is provided with respect to libpng 1.5.4, which is +%% This notice is provided with respect to libpng 1.6.16, which is included with JRE 7, JDK 7, and OpenJDK 7. --- begin of LICENSE --- @@ -1017,7 +1017,7 @@ This code is released under the libpng license. -libpng versions 1.2.6, August 15, 2004, through 1.5.4, July 7, 2011, are +libpng versions 1.2.6, August 15, 2004, through 1.6.16, December 22, 2014, are Copyright (c) 2004, 2006-2011 Glenn Randers-Pehrson, and are distributed according to the same disclaimer and license as libpng-1.2.5 with the following individual added to the list of Contributing Authors @@ -1115,7 +1115,7 @@ Glenn Randers-Pehrson glennrp at users.sourceforge.net -July 7, 2011 +December 22, 2014 --- end of LICENSE --- diff -Nru openjdk-6-6b31-1.13.3/INSTALL openjdk-6-6b38-1.13.10/INSTALL --- openjdk-6-6b31-1.13.3/INSTALL 2014-04-11 16:13:14.000000000 +0000 +++ openjdk-6-6b38-1.13.10/INSTALL 2016-01-21 02:42:36.000000000 +0000 @@ -36,6 +36,7 @@ pulseaudio-libs-devel >= 0.9.11 (for --enable-pulse-java) LLVM 2.5 or later (for --enable-shark) systemtap-sdl-devel >= 0.9.5 (for --enable-systemtap, Java method tracing requires systemtap >= 0.9.9) +lcms2-devel (for --enable-lcms2 and --enable-system-lcms) See ./configure --help if you need to override the defaults. @@ -90,6 +91,9 @@ downloading and extracting a tarball. * --enable-system-lcms: Build using the system installation of LCMS2, not the version in-tree. +* --enable-system-kerberos: Link against the system Kerberos library and + query it at runtime to obtain the cache location, rather than using a + hardcoded value. * --with-gcj: Compile ecj to native code with gcj prior to building. * --disable-bootstrap: Perform a quick build using an installed copy of IcedTea6. If a directory is not specified, a check against @@ -127,22 +131,6 @@ - /usr/share/java/eclipse-ecj.jar - /usr/share/java/ecj.jar - /usr/share/eclipse-ecj-3.{2,3,4,5}/lib/ecj.jar -* --with-xalan2-jar: Specify the location of a xalan2 JAR file. By default, the - following paths are checked: - - /usr/share/java/xalan-j2.jar - - /usr/share/java/xalan2.jar - - /usr/share/xalan/lib/xalan.jar -* --with-xalan2-serializer-jar: Specify the location of a xalan2 serializer JAR file. - By default, the following paths are checked: - - /usr/share/java/xalan-j2-serializer.jar - - /usr/share/xalan-serializer/lib/serializer.jar - - /usr/share/java/serializer.jar -* --with-xerces2-jar: Specify the location of a xerces2 JAR file. By default, the - following paths are checked: - - /usr/share/java/xerces-j2.jar - - /usr/share/java/xerces2.jar - - /usr/share/xerces-2/lib/xercesImpl.jar - - /usr/share/java/xercesImpl.jar * --with-openjdk-src-zip: Specify the location of the OpenJDK tarball to avoid downloading. * --with-hotspot-src-zip: Specify the location of the HotSpot tarball to avoid downloading. * --with-alt-jar: Use the specified jar binary in the second stage rather than the one just built. @@ -156,6 +144,7 @@ * --with-abs-install-dir: The final install location of the j2sdk-image, for use in the SystemTap tapset. * --with-llvm-config: Specify the location of the llvm-config binary. * --disable-bootstrap-tools: Use javac and javah from langtools, not the bootstrap JDK. +* --with-fonts-dir: Specify the location of system fonts. This is currently only used on Gentoo systems. Other options may be supplied which enable or disable new features. These are documented fully in the relevant section below. @@ -173,9 +162,7 @@ * --with-additional-vms=vm-list: Additional VMs to build using the system described below. * --enable-lcms2: Use LCMS 2 backport from OpenJDK 7 rather than LCMS 1. -* --enable-system-kerberos: Link against the system Kerberos library and - query it at runtime to obtain the cache location, rather than using a - hardcoded value. +* --enable-non-nss-curves: Define curves beyond the three specified by NSS (NIST P-{256,384,521}) Testing ======= @@ -288,6 +275,9 @@ --enable-shark to configure. Please note that Shark is still in development and builds are still likely to fail at present. +On ARM32, there is also a native JIT port built on top of Zero, which +is built on this platform by default. + Support for Different Versions of HotSpot ========================================= diff -Nru openjdk-6-6b31-1.13.3/install-sh openjdk-6-6b38-1.13.10/install-sh --- openjdk-6-6b31-1.13.3/install-sh 2014-04-16 03:18:57.000000000 +0000 +++ openjdk-6-6b38-1.13.10/install-sh 2016-01-26 13:35:01.000000000 +0000 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2011-11-20.07; # UTC +scriptversion=2011-01-19.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -35,7 +35,7 @@ # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent -# 'make' implicit rules from creating a file called install from it +# `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written @@ -156,7 +156,7 @@ -s) stripcmd=$stripprog;; -t) dst_arg=$2 - # Protect names problematic for 'test' and other utilities. + # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac @@ -190,7 +190,7 @@ fi shift # arg dst_arg=$arg - # Protect names problematic for 'test' and other utilities. + # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac @@ -202,7 +202,7 @@ echo "$0: no input file specified." >&2 exit 1 fi - # It's OK to call 'install-sh -d' without argument. + # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi @@ -240,7 +240,7 @@ for src do - # Protect names problematic for 'test' and other utilities. + # Protect names problematic for `test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac @@ -354,7 +354,7 @@ if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. + # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in Binary files /tmp/tmpJKh7zB/vCpy1vXRqc/openjdk-6-6b31-1.13.3/jamvm-2.0.0.tar.gz and /tmp/tmpJKh7zB/15VXldfwwg/openjdk-6-6b38-1.13.10/jamvm-2.0.0.tar.gz differ Binary files /tmp/tmpJKh7zB/vCpy1vXRqc/openjdk-6-6b31-1.13.3/jamvm-ec18fb9e49e62dce16c5094ef1527eed619463aa.tar.gz and /tmp/tmpJKh7zB/15VXldfwwg/openjdk-6-6b38-1.13.10/jamvm-ec18fb9e49e62dce16c5094ef1527eed619463aa.tar.gz differ diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/lib/ExsltSets.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/lib/ExsltSets.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/lib/ExsltSets.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/lib/ExsltSets.java 2016-01-20 01:41:01.000000000 +0000 @@ -1,13 +1,13 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 1999-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * @@ -22,10 +22,10 @@ */ package com.sun.org.apache.xalan.internal.lib; -import java.util.Hashtable; - import com.sun.org.apache.xml.internal.utils.DOMHelper; import com.sun.org.apache.xpath.internal.NodeSet; +import java.util.HashMap; +import java.util.Map; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -192,7 +192,7 @@ NodeSet dist = new NodeSet(); dist.setShouldCacheNodes(true); - Hashtable stringTable = new Hashtable(); + Map stringTable = new HashMap(); for (int i = 0; i < nl.getLength(); i++) { diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/lib/Extensions.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/lib/Extensions.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/lib/Extensions.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/lib/Extensions.java 2016-01-20 01:41:01.000000000 +0000 @@ -1,13 +1,13 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 1999-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * @@ -22,27 +22,23 @@ */ package com.sun.org.apache.xalan.internal.lib; -import java.util.Hashtable; -import java.util.StringTokenizer; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - import com.sun.org.apache.xalan.internal.extensions.ExpressionContext; import com.sun.org.apache.xalan.internal.xslt.EnvironmentCheck; import com.sun.org.apache.xpath.internal.NodeSet; import com.sun.org.apache.xpath.internal.objects.XBoolean; import com.sun.org.apache.xpath.internal.objects.XNumber; import com.sun.org.apache.xpath.internal.objects.XObject; - +import java.util.Hashtable; +import java.util.Map; +import java.util.StringTokenizer; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.DocumentFragment; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.Text; import org.w3c.dom.traversal.NodeIterator; - import org.xml.sax.SAXNotSupportedException; /** @@ -312,7 +308,7 @@ // If reflection failed, fallback to our internal EnvironmentCheck EnvironmentCheck envChecker = new EnvironmentCheck(); - Hashtable h = envChecker.getEnvironmentHash(); + Map h = envChecker.getEnvironmentHash(); resultNode = factoryDocument.createElement("checkEnvironmentExtension"); envChecker.appendEnvironmentReport(resultNode, factoryDocument, h); envChecker = null; diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java 2016-01-20 01:41:01.000000000 +0000 @@ -2329,7 +2329,7 @@ { WG_NO_LOCALE_IN_FORMATNUMBER, - "Xalan hanterar \u00e4nnu inte locale-namnet i funktionen format-number."}, + "Xalan hanterar \u00E4nnu inte spr\u00E5kkonventionen i funktionen format-number."}, /** WG_LOCALE_NOT_FOUND */ @@ -2338,7 +2338,7 @@ { WG_LOCALE_NOT_FOUND, - "Varning: Hittade inte locale f\u00f6r xml:lang{0}"}, + "Varning: Hittade inte spr\u00E5kkonvention f\u00F6r xml:lang={0}"}, /** WG_CANNOT_MAKE_URL_FROM */ @@ -2583,8 +2583,8 @@ { "version", ">>>>>>> Xalan Version"}, { "version2", "<<<<<<<"}, { "yes", "ja"}, - { "line", "Rad #"}, - { "column", "Kolumn #"}, + { "line", "Rad nr"}, + { "column","Kolumn nr"}, { "xsldone", "XSLProcessor: f\u00e4rdig"}, { "xslProc_option", "Xalan-J kommando linje Process klass alternativ:"}, { "optionIN", " -IN inputXMLURL"}, diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java 2016-01-20 01:41:01.000000000 +0000 @@ -79,25 +79,31 @@ */ public static enum Limit { - ENTITY_EXPANSION_LIMIT(XalanConstants.JDK_ENTITY_EXPANSION_LIMIT, + ENTITY_EXPANSION_LIMIT("EntityExpansionLimit", XalanConstants.JDK_ENTITY_EXPANSION_LIMIT, XalanConstants.SP_ENTITY_EXPANSION_LIMIT, 0, 64000), - MAX_OCCUR_NODE_LIMIT(XalanConstants.JDK_MAX_OCCUR_LIMIT, + MAX_OCCUR_NODE_LIMIT("MaxOccurLimit", XalanConstants.JDK_MAX_OCCUR_LIMIT, XalanConstants.SP_MAX_OCCUR_LIMIT, 0, 5000), - ELEMENT_ATTRIBUTE_LIMIT(XalanConstants.JDK_ELEMENT_ATTRIBUTE_LIMIT, + ELEMENT_ATTRIBUTE_LIMIT("ElementAttributeLimit", XalanConstants.JDK_ELEMENT_ATTRIBUTE_LIMIT, XalanConstants.SP_ELEMENT_ATTRIBUTE_LIMIT, 0, 10000), - TOTAL_ENTITY_SIZE_LIMIT(XalanConstants.JDK_TOTAL_ENTITY_SIZE_LIMIT, + TOTAL_ENTITY_SIZE_LIMIT("TotalEntitySizeLimit", XalanConstants.JDK_TOTAL_ENTITY_SIZE_LIMIT, XalanConstants.SP_TOTAL_ENTITY_SIZE_LIMIT, 0, 50000000), - GENEAL_ENTITY_SIZE_LIMIT(XalanConstants.JDK_GENEAL_ENTITY_SIZE_LIMIT, + GENEAL_ENTITY_SIZE_LIMIT("MaxEntitySizeLimit", XalanConstants.JDK_GENEAL_ENTITY_SIZE_LIMIT, XalanConstants.SP_GENEAL_ENTITY_SIZE_LIMIT, 0, 0), - PARAMETER_ENTITY_SIZE_LIMIT(XalanConstants.JDK_PARAMETER_ENTITY_SIZE_LIMIT, - XalanConstants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000); + PARAMETER_ENTITY_SIZE_LIMIT("MaxEntitySizeLimit", XalanConstants.JDK_PARAMETER_ENTITY_SIZE_LIMIT, + XalanConstants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000), + MAX_ELEMENT_DEPTH_LIMIT("MaxElementDepthLimit", XalanConstants.JDK_MAX_ELEMENT_DEPTH, + XalanConstants.SP_MAX_ELEMENT_DEPTH, 0, 0), + MAX_NAME_LIMIT("MaxXMLNameLimit", XalanConstants.JDK_XML_NAME_LIMIT, + XalanConstants.SP_XML_NAME_LIMIT, 1000, 1000); + final String key; final String apiProperty; final String systemProperty; final int defaultValue; final int secureValue; - Limit(String apiProperty, String systemProperty, int value, int secureValue) { + Limit(String key, String apiProperty, String systemProperty, int value, int secureValue) { + this.key = key; this.apiProperty = apiProperty; this.systemProperty = systemProperty; this.defaultValue = value; @@ -112,6 +118,10 @@ return (propertyName == null) ? false : systemProperty.equals(propertyName); } + public String key() { + return key; + } + public String apiProperty() { return apiProperty; } @@ -120,7 +130,7 @@ return systemProperty; } - int defaultValue() { + public int defaultValue() { return defaultValue; } @@ -172,7 +182,7 @@ /** * Index of the special entityCountInfo property */ - private int indexEntityCountInfo = 10000; + private final int indexEntityCountInfo = 10000; private String printEntityCountInfo = ""; /** diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/XalanConstants.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/XalanConstants.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/XalanConstants.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/XalanConstants.java 2016-01-20 01:41:00.000000000 +0000 @@ -90,6 +90,13 @@ */ public static final String JDK_XML_NAME_LIMIT = ORACLE_JAXP_PROPERTY_PREFIX + "maxXMLNameLimit"; + + /** + * JDK maxElementDepth limit + */ + public static final String JDK_MAX_ELEMENT_DEPTH = + ORACLE_JAXP_PROPERTY_PREFIX + "maxElementDepth"; + /** * JDK property indicating whether the parser shall print out entity * count information @@ -138,6 +145,11 @@ */ public static final String SP_XML_NAME_LIMIT = "jdk.xml.maxXMLNameLimit"; + /** + * JDK maxElementDepth limit + */ + public static final String SP_MAX_ELEMENT_DEPTH = "jdk.xml.maxElementDepth"; + //legacy System Properties public final static String ENTITY_EXPANSION_LIMIT = "entityExpansionLimit"; public static final String ELEMENT_ATTRIBUTE_LIMIT = "elementAttributeLimit" ; diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xslt/EnvironmentCheck.java 2016-01-20 01:41:01.000000000 +0000 @@ -1,13 +1,13 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * @@ -23,17 +23,17 @@ package com.sun.org.apache.xalan.internal.xslt; import com.sun.org.apache.xalan.internal.utils.SecuritySupport; - import java.io.File; import java.io.FileWriter; import java.io.PrintWriter; import java.lang.reflect.Field; import java.lang.reflect.Method; -import java.util.Enumeration; -import java.util.Hashtable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.StringTokenizer; -import java.util.Vector; - import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -169,7 +169,7 @@ outWriter = pw; // Setup a hash to store various environment information in - Hashtable hash = getEnvironmentHash(); + Map hash = getEnvironmentHash(); // Check for ERROR keys in the hashtable, and print report boolean environmentHasErrors = writeEnvironmentReport(hash); @@ -212,13 +212,13 @@ * point out the most common classpath and system property * problems that we've seen.

* - * @return Hashtable full of useful environment info about Xalan - * and related system properties, etc. + * @return Map full of useful environment info about Xalan and related + * system properties, etc. */ - public Hashtable getEnvironmentHash() + public Map getEnvironmentHash() { // Setup a hash to store various environment information in - Hashtable hash = new Hashtable(); + Map hash = new HashMap(); // Call various worker methods to fill in the hash // These are explicitly separate for maintenance and so @@ -238,22 +238,22 @@ * Dump a basic Xalan environment report to outWriter. * *

This dumps a simple header and then each of the entries in - * the Hashtable to our PrintWriter; it does special processing + * the Map to our PrintWriter; it does special processing * for entries that are .jars found in the classpath.

* - * @param h Hashtable of items to report on; presumably + * @param h Map of items to report on; presumably * filled in by our various check*() methods * @return true if your environment appears to have no major * problems; false if potential environment problems found - * @see #appendEnvironmentReport(Node, Document, Hashtable) + * @see #appendEnvironmentReport(Node, Document, Map) * for an equivalent that appends to a Node instead */ - protected boolean writeEnvironmentReport(Hashtable h) + protected boolean writeEnvironmentReport(Map h) { if (null == h) { - logMsg("# ERROR: writeEnvironmentReport called with null Hashtable"); + logMsg("# ERROR: writeEnvironmentReport called with null Map"); return false; } @@ -263,39 +263,28 @@ "#---- BEGIN writeEnvironmentReport($Revision: 1.7 $): Useful stuff found: ----"); // Fake the Properties-like output - for (Enumeration keys = h.keys(); - keys.hasMoreElements(); - /* no increment portion */ - ) - { - Object key = keys.nextElement(); - String keyStr = (String) key; - try - { - // Special processing for classes found.. - if (keyStr.startsWith(FOUNDCLASSES)) - { - Vector v = (Vector) h.get(keyStr); - errors |= logFoundJars(v, keyStr); - } - // ..normal processing for all other entries - else - { - // Note: we could just check for the ERROR key by itself, - // since we now set that, but since we have to go - // through the whole hash anyway, do it this way, - // which is safer for maintenance - if (keyStr.startsWith(ERROR)) - { - errors = true; - } - logMsg(keyStr + "=" + h.get(keyStr)); + for (Map.Entry entry : h.entrySet()) { + String keyStr = entry.getKey(); + try { + // Special processing for classes found.. + if (keyStr.startsWith(FOUNDCLASSES)) { + List v = (ArrayList)entry.getValue(); + errors |= logFoundJars(v, keyStr); + } + // ..normal processing for all other entries + else { + // Note: we could just check for the ERROR key by itself, + // since we now set that, but since we have to go + // through the whole hash anyway, do it this way, + // which is safer for maintenance + if (keyStr.startsWith(ERROR)) { + errors = true; + } + logMsg(keyStr + "=" + h.get(keyStr)); + } + } catch (Exception e) { + logMsg("Reading-" + keyStr + "= threw: " + e.toString()); } - } - catch (Exception e) - { - logMsg("Reading-" + key + "= threw: " + e.toString()); - } } logMsg( @@ -346,14 +335,14 @@ * Takes the information encoded from a checkPathForJars() * call and dumps it out to our PrintWriter. * - * @param v Vector of Hashtables of .jar file info + * @param v List of Maps of .jar file info * @param desc description to print out in header * * @return false if OK, true if any .jars were reported * as having errors * @see #checkPathForJars(String, String[]) */ - protected boolean logFoundJars(Vector v, String desc) + protected boolean logFoundJars(List v, String desc) { if ((null == v) || (v.size() < 1)) @@ -363,32 +352,20 @@ logMsg("#---- BEGIN Listing XML-related jars in: " + desc + " ----"); - for (int i = 0; i < v.size(); i++) - { - Hashtable subhash = (Hashtable) v.elementAt(i); - - for (Enumeration keys = subhash.keys(); - keys.hasMoreElements(); - /* no increment portion */ - ) - { - Object key = keys.nextElement(); - String keyStr = (String) key; - try - { - if (keyStr.startsWith(ERROR)) - { - errors = true; - } - logMsg(keyStr + "=" + subhash.get(keyStr)); - - } - catch (Exception e) - { - errors = true; - logMsg("Reading-" + key + "= threw: " + e.toString()); + for (Map v1 : v) { + for (Map.Entry entry : v1.entrySet()) { + String keyStr = entry.getKey(); + try { + if (keyStr.startsWith(ERROR)) { + errors = true; + } + logMsg(keyStr + "=" + entry.getValue()); + + } catch (Exception e) { + errors = true; + logMsg("Reading-" + keyStr + "= threw: " + e.toString()); + } } - } } logMsg("#----- END Listing XML-related jars in: " + desc + " -----"); @@ -406,10 +383,10 @@ * @param container Node to append our report to * @param factory Document providing createElement, etc. services * @param h Hash presumably from {@link #getEnvironmentHash()} - * @see #writeEnvironmentReport(Hashtable) + * @see #writeEnvironmentReport(Map) * for an equivalent that writes to a PrintWriter instead */ - public void appendEnvironmentReport(Node container, Document factory, Hashtable h) + public void appendEnvironmentReport(Node container, Document factory, Map h) { if ((null == container) || (null == factory)) { @@ -426,7 +403,7 @@ { Element statusNode = factory.createElement("status"); statusNode.setAttribute("result", "ERROR"); - statusNode.appendChild(factory.createTextNode("appendEnvironmentReport called with null Hashtable!")); + statusNode.appendChild(factory.createTextNode("appendEnvironmentReport called with null Map!")); envCheckNode.appendChild(statusNode); return; } @@ -436,47 +413,35 @@ Element hashNode = factory.createElement("environment"); envCheckNode.appendChild(hashNode); - for (Enumeration keys = h.keys(); - keys.hasMoreElements(); - /* no increment portion */ - ) - { - Object key = keys.nextElement(); - String keyStr = (String) key; - try - { - // Special processing for classes found.. - if (keyStr.startsWith(FOUNDCLASSES)) - { - Vector v = (Vector) h.get(keyStr); - // errors |= logFoundJars(v, keyStr); - errors |= appendFoundJars(hashNode, factory, v, keyStr); - } - // ..normal processing for all other entries - else - { - // Note: we could just check for the ERROR key by itself, - // since we now set that, but since we have to go - // through the whole hash anyway, do it this way, - // which is safer for maintenance - if (keyStr.startsWith(ERROR)) - { + for (Map.Entry entry : h.entrySet()) { + String keyStr = entry.getKey(); + try { + // Special processing for classes found.. + if (keyStr.startsWith(FOUNDCLASSES)) { + List v = (List)entry.getValue(); + // errors |= logFoundJars(v, keyStr); + errors |= appendFoundJars(hashNode, factory, v, keyStr); + } // ..normal processing for all other entries + else { + // Note: we could just check for the ERROR key by itself, + // since we now set that, but since we have to go + // through the whole hash anyway, do it this way, + // which is safer for maintenance + if (keyStr.startsWith(ERROR)) { + errors = true; + } + Element node = factory.createElement("item"); + node.setAttribute("key", keyStr); + node.appendChild(factory.createTextNode((String) h.get(keyStr))); + hashNode.appendChild(node); + } + } catch (Exception e) { errors = true; - } - Element node = factory.createElement("item"); - node.setAttribute("key", keyStr); - node.appendChild(factory.createTextNode((String)h.get(keyStr))); - hashNode.appendChild(node); + Element node = factory.createElement("item"); + node.setAttribute("key", keyStr); + node.appendChild(factory.createTextNode(ERROR + " Reading " + keyStr + " threw: " + e.toString())); + hashNode.appendChild(node); } - } - catch (Exception e) - { - errors = true; - Element node = factory.createElement("item"); - node.setAttribute("key", keyStr); - node.appendChild(factory.createTextNode(ERROR + " Reading " + key + " threw: " + e.toString())); - hashNode.appendChild(node); - } } // end of for... Element statusNode = factory.createElement("status"); @@ -498,7 +463,7 @@ * * @param container Node to append our report to * @param factory Document providing createElement, etc. services - * @param v Vector of Hashtables of .jar file info + * @param v Map of Maps of .jar file info * @param desc description to print out in header * * @return false if OK, true if any .jars were reported @@ -506,7 +471,7 @@ * @see #checkPathForJars(String, String[]) */ protected boolean appendFoundJars(Node container, Document factory, - Vector v, String desc) + List v, String desc) { if ((null == v) || (v.size() < 1)) @@ -514,37 +479,25 @@ boolean errors = false; - for (int i = 0; i < v.size(); i++) - { - Hashtable subhash = (Hashtable) v.elementAt(i); - - for (Enumeration keys = subhash.keys(); - keys.hasMoreElements(); - /* no increment portion */ - ) - { - Object key = keys.nextElement(); - try - { - String keyStr = (String) key; - if (keyStr.startsWith(ERROR)) - { - errors = true; - } - Element node = factory.createElement("foundJar"); - node.setAttribute("name", keyStr.substring(0, keyStr.indexOf("-"))); - node.setAttribute("desc", keyStr.substring(keyStr.indexOf("-") + 1)); - node.appendChild(factory.createTextNode((String)subhash.get(keyStr))); - container.appendChild(node); - } - catch (Exception e) - { - errors = true; - Element node = factory.createElement("foundJar"); - node.appendChild(factory.createTextNode(ERROR + " Reading " + key + " threw: " + e.toString())); - container.appendChild(node); + for (Map v1 : v) { + for (Map.Entry entry : v1.entrySet()) { + String keyStr = entry.getKey(); + try { + if (keyStr.startsWith(ERROR)) { + errors = true; + } + Element node = factory.createElement("foundJar"); + node.setAttribute("name", keyStr.substring(0, keyStr.indexOf("-"))); + node.setAttribute("desc", keyStr.substring(keyStr.indexOf("-") + 1)); + node.appendChild(factory.createTextNode(entry.getValue())); + container.appendChild(node); + } catch (Exception e) { + errors = true; + Element node = factory.createElement("foundJar"); + node.appendChild(factory.createTextNode(ERROR + " Reading " + keyStr + " threw: " + e.toString())); + container.appendChild(node); + } } - } } return errors; } @@ -558,15 +511,15 @@ * //@todo NOTE: We don't actually search java.ext.dirs for * // *.jar files therein! This should be updated * - * @param h Hashtable to put information in + * @param h Map to put information in * @see #jarNames * @see #checkPathForJars(String, String[]) */ - protected void checkSystemProperties(Hashtable h) + protected void checkSystemProperties(Map h) { if (null == h) - h = new Hashtable(); + h = new HashMap(); // Grab java version for later use try @@ -594,22 +547,22 @@ h.put("java.class.path", cp); - Vector classpathJars = checkPathForJars(cp, jarNames); + List classpathJars = checkPathForJars(cp, jarNames); - if (null != classpathJars) - h.put(FOUNDCLASSES + "java.class.path", classpathJars); + if (null != classpathJars) { + h.put(FOUNDCLASSES + "java.class.path", classpathJars); + } // Also check for JDK 1.2+ type classpaths String othercp = SecuritySupport.getSystemProperty("sun.boot.class.path"); - if (null != othercp) - { - h.put("sun.boot.class.path", othercp); - - classpathJars = checkPathForJars(othercp, jarNames); + if (null != othercp) { + h.put("sun.boot.class.path", othercp); + classpathJars = checkPathForJars(othercp, jarNames); - if (null != classpathJars) - h.put(FOUNDCLASSES + "sun.boot.class.path", classpathJars); + if (null != classpathJars) { + h.put(FOUNDCLASSES + "sun.boot.class.path", classpathJars); + } } //@todo NOTE: We don't actually search java.ext.dirs for @@ -650,20 +603,20 @@ * @param cp classpath to search * @param jars array of .jar base filenames to look for * - * @return Vector of Hashtables filled with info about found .jars + * @return List of Maps filled with info about found .jars * @see #jarNames - * @see #logFoundJars(Vector, String) - * @see #appendFoundJars(Node, Document, Vector, String ) + * @see #logFoundJars(Map, String) + * @see #appendFoundJars(Node, Document, Map, String ) * @see #getApparentVersion(String, long) */ - protected Vector checkPathForJars(String cp, String[] jars) + protected List checkPathForJars(String cp, String[] jars) { if ((null == cp) || (null == jars) || (0 == cp.length()) || (0 == jars.length)) return null; - Vector v = new Vector(); + List v = new ArrayList(); StringTokenizer st = new StringTokenizer(cp, File.pathSeparator); while (st.hasMoreTokens()) @@ -683,37 +636,32 @@ // If any requested jarName exists, report on // the details of that .jar file - try - { - Hashtable h = new Hashtable(2); - // Note "-" char is looked for in appendFoundJars - h.put(jars[i] + "-path", f.getAbsolutePath()); - - // We won't bother reporting on the xalan.jar apparent version - // since this requires knowing the jar size of the xalan.jar - // before we build it. - // For other jars, eg. xml-apis.jar and xercesImpl.jar, we - // report the apparent version of the file we've found - if (!("xalan.jar".equalsIgnoreCase(jars[i]))) { - h.put(jars[i] + "-apparent.version", - getApparentVersion(jars[i], f.length())); - } - v.addElement(h); - } - catch (Exception e) - { + try { + Map h = new HashMap(2); + // Note "-" char is looked for in appendFoundJars + h.put(jars[i] + "-path", f.getAbsolutePath()); + + // We won't bother reporting on the xalan.jar apparent version + // since this requires knowing the jar size of the xalan.jar + // before we build it. + // For other jars, eg. xml-apis.jar and xercesImpl.jar, we + // report the apparent version of the file we've found + if (!("xalan.jar".equalsIgnoreCase(jars[i]))) { + h.put(jars[i] + "-apparent.version", + getApparentVersion(jars[i], f.length())); + } + v.add(h); + } catch (Exception e) { - /* no-op, don't add it */ + /* no-op, don't add it */ } - } - else - { - Hashtable h = new Hashtable(2); + } else { + Map h = new HashMap(2); // Note "-" char is looked for in appendFoundJars h.put(jars[i] + "-path", WARNING + " Classpath entry: " - + filename + " does not exist"); + + filename + " does not exist"); h.put(jars[i] + "-apparent.version", CLASS_NOTPRESENT); - v.addElement(h); + v.add(h); } } } @@ -744,8 +692,8 @@ { // If we found a matching size and it's for our // jar, then return it's description - // Lookup in static jarVersions Hashtable - String foundSize = (String) jarVersions.get(new Long(jarSize)); + // Lookup in static JARVERSIONS Map + String foundSize = JARVERSIONS.get(new Long(jarSize)); if ((null != foundSize) && (foundSize.startsWith(jarName))) { @@ -779,13 +727,13 @@ * and not found; only tests the interfaces, and does not * check for reference implementation versions. * - * @param h Hashtable to put information in + * @param h Map to put information in */ - protected void checkJAXPVersion(Hashtable h) + protected void checkJAXPVersion(Map h) { if (null == h) - h = new Hashtable(); + h = new HashMap(); final Class noArgs[] = new Class[0]; Class clazz = null; @@ -829,13 +777,13 @@ * * Looks for version info in xalan.jar from Xalan-J products. * - * @param h Hashtable to put information in + * @param h Map to put information in */ - protected void checkProcessorVersion(Hashtable h) + protected void checkProcessorVersion(Map h) { if (null == h) - h = new Hashtable(); + h = new HashMap(); try { @@ -918,13 +866,13 @@ * * //@todo actually look up version info in crimson manifest * - * @param h Hashtable to put information in + * @param h Map to put information in */ - protected void checkParserVersion(Hashtable h) + protected void checkParserVersion(Map h) { if (null == h) - h = new Hashtable(); + h = new HashMap(); try { @@ -982,13 +930,13 @@ /** * Report product version information from Ant. * - * @param h Hashtable to put information in + * @param h Map to put information in */ - protected void checkAntVersion(Hashtable h) + protected void checkAntVersion(Map h) { if (null == h) - h = new Hashtable(); + h = new HashMap(); try { @@ -1017,13 +965,13 @@ * level 2 working draft, the DOM level 2 final draft, * and not found. * - * @param h Hashtable to put information in + * @param h Map to put information in */ - protected void checkDOMVersion(Hashtable h) + protected void checkDOMVersion(Map h) { if (null == h) - h = new Hashtable(); + h = new HashMap(); final String DOM_LEVEL2_CLASS = "org.w3c.dom.Document"; final String DOM_LEVEL2_METHOD = "createElementNS"; // String, String @@ -1095,13 +1043,13 @@ * Currently distinguishes between SAX 2, SAX 2.0beta2, * SAX1, and not found. * - * @param h Hashtable to put information in + * @param h Map to put information in */ - protected void checkSAXVersion(Hashtable h) + protected void checkSAXVersion(Map h) { if (null == h) - h = new Hashtable(); + h = new HashMap(); final String SAX_VERSION1_CLASS = "org.xml.sax.Parser"; final String SAX_VERSION1_METHOD = "parse"; // String @@ -1184,17 +1132,17 @@ * * @see #getApparentVersion(String, long) */ - private static Hashtable jarVersions = new Hashtable(); + private static final Map JARVERSIONS; /** - * Static initializer for jarVersions table. + * Static initializer for JARVERSIONS table. * Doing this just once saves time and space. * * @see #getApparentVersion(String, long) */ static { - // Note: hackish Hashtable, this could use improvement + Map jarVersions = new HashMap(); jarVersions.put(new Long(857192), "xalan.jar from xalan-j_1_1"); jarVersions.put(new Long(440237), "xalan.jar from xalan-j_1_2"); jarVersions.put(new Long(436094), "xalan.jar from xalan-j_1_2_1"); @@ -1283,6 +1231,8 @@ // jakarta-ant: since many people use ant these days jarVersions.put(new Long(136198), "parser.jar from jakarta-ant-1.3 or 1.2"); jarVersions.put(new Long(5537), "jaxp.jar from jakarta-ant-1.3 or 1.2"); + + JARVERSIONS = Collections.unmodifiableMap(jarVersions); } /** Simple PrintWriter we send output to; defaults to System.out. */ diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/ApplyTemplates.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/ApplyTemplates.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/ApplyTemplates.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/ApplyTemplates.java 2016-01-20 01:41:02.000000000 +0000 @@ -1,13 +1,13 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * @@ -23,9 +23,6 @@ package com.sun.org.apache.xalan.internal.xsltc.compiler; -import java.util.Enumeration; -import java.util.Vector; - import com.sun.org.apache.bcel.internal.generic.ConstantPoolGen; import com.sun.org.apache.bcel.internal.generic.INVOKEINTERFACE; import com.sun.org.apache.bcel.internal.generic.INVOKEVIRTUAL; @@ -41,6 +38,8 @@ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.TypeCheckError; import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Util; import com.sun.org.apache.xml.internal.utils.XML11Char; +import java.util.Iterator; +import java.util.Vector; /** * @author Jacek Ambroziak @@ -122,9 +121,9 @@ // check if sorting nodes is required final Vector sortObjects = new Vector(); - final Enumeration children = elements(); - while (children.hasMoreElements()) { - final Object child = children.nextElement(); + final Iterator children = elements(); + while (children.hasNext()) { + final SyntaxTreeNode child = children.next(); if (child instanceof Sort) { sortObjects.addElement(child); } diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/AttributeSet.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/AttributeSet.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/AttributeSet.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/AttributeSet.java 2016-01-20 01:41:02.000000000 +0000 @@ -1,13 +1,13 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * @@ -23,9 +23,6 @@ package com.sun.org.apache.xalan.internal.xsltc.compiler; -import java.util.Enumeration; -import java.util.Vector; - import com.sun.org.apache.bcel.internal.generic.ConstantPoolGen; import com.sun.org.apache.bcel.internal.generic.INVOKESPECIAL; import com.sun.org.apache.bcel.internal.generic.InstructionList; @@ -37,6 +34,8 @@ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.TypeCheckError; import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Util; import com.sun.org.apache.xml.internal.utils.XML11Char; +import java.util.Iterator; +import java.util.List; /** * @author Jacek Ambroziak @@ -111,10 +110,10 @@ // Parse the contents of this node. All child elements must be // elements. Other elements cause an error. - final Vector contents = getContents(); + final List contents = getContents(); final int count = contents.size(); for (int i=0; i attributes = elements(); + while (attributes.hasNext()) { + SyntaxTreeNode element = attributes.next(); if (element instanceof XslAttribute) { final XslAttribute attribute = (XslAttribute)element; attribute.translate(classGen, methodGen); @@ -202,10 +201,10 @@ public String toString() { StringBuffer buf = new StringBuffer("attribute-set: "); // Translate all local attributes - final Enumeration attributes = elements(); - while (attributes.hasMoreElements()) { + final Iterator attributes = elements(); + while (attributes.hasNext()) { final XslAttribute attribute = - (XslAttribute)attributes.nextElement(); + (XslAttribute)attributes.next(); buf.append(attribute); } return(buf.toString()); diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/AttributeValueTemplate.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/AttributeValueTemplate.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/AttributeValueTemplate.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/AttributeValueTemplate.java 2016-01-20 01:41:02.000000000 +0000 @@ -1,13 +1,13 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * @@ -23,11 +23,6 @@ package com.sun.org.apache.xalan.internal.xsltc.compiler; -import java.util.Enumeration; -import java.util.Vector; -import java.util.StringTokenizer; -import java.util.NoSuchElementException; - import com.sun.org.apache.bcel.internal.generic.ConstantPoolGen; import com.sun.org.apache.bcel.internal.generic.INVOKESPECIAL; import com.sun.org.apache.bcel.internal.generic.INVOKEVIRTUAL; @@ -39,6 +34,10 @@ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.MethodGenerator; import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type; import com.sun.org.apache.xalan.internal.xsltc.compiler.util.TypeCheckError; +import java.util.Iterator; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.StringTokenizer; /** * @author Jacek Ambroziak @@ -206,12 +205,12 @@ } public Type typeCheck(SymbolTable stable) throws TypeCheckError { - final Vector contents = getContents(); + final List contents = getContents(); final int n = contents.size(); for (int i = 0; i < n; i++) { - final Expression exp = (Expression)contents.elementAt(i); + final Expression exp = (Expression)contents.get(i); if (!exp.typeCheck(stable).identicalTo(Type.String)) { - contents.setElementAt(new CastExpr(exp, Type.String), i); + contents.set(i, new CastExpr(exp, Type.String)); } } return _type = Type.String; @@ -251,9 +250,9 @@ il.append(DUP); il.append(new INVOKESPECIAL(initBuffer)); // StringBuffer is on the stack - final Enumeration elements = elements(); - while (elements.hasMoreElements()) { - final Expression exp = (Expression)elements.nextElement(); + final Iterator elements = elements(); + while (elements.hasNext()) { + final Expression exp = (Expression)elements.next(); exp.translate(classGen, methodGen); il.append(append); } diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/CastExpr.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/CastExpr.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/CastExpr.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/CastExpr.java 2016-01-20 01:41:02.000000000 +0000 @@ -1,15 +1,15 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 2001-2004 The Apache Software Foundation. + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -51,7 +51,7 @@ /** * Legal conversions between internal types. */ - static private MultiHashtable InternalTypeMap = new MultiHashtable(); + private static final MultiHashtable InternalTypeMap = new MultiHashtable(); static { // Possible type conversions between internal types @@ -118,6 +118,8 @@ InternalTypeMap.put(Type.Object, Type.String); InternalTypeMap.put(Type.Void, Type.String); + + InternalTypeMap.makeUnmodifiable(); } private boolean _typeTest = false; diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Choose.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Choose.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Choose.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Choose.java 2016-01-20 01:41:02.000000000 +0000 @@ -1,13 +1,13 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * @@ -23,9 +23,6 @@ package com.sun.org.apache.xalan.internal.xsltc.compiler; -import java.util.Enumeration; -import java.util.Vector; - import com.sun.org.apache.bcel.internal.generic.BranchHandle; import com.sun.org.apache.bcel.internal.generic.GOTO; import com.sun.org.apache.bcel.internal.generic.IFEQ; @@ -37,6 +34,9 @@ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type; import com.sun.org.apache.xalan.internal.xsltc.compiler.util.TypeCheckError; import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Util; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.Vector; /** * @author Jacek Ambroziak @@ -62,15 +62,15 @@ public void translate(ClassGenerator classGen, MethodGenerator methodGen) { final Vector whenElements = new Vector(); Otherwise otherwise = null; - Enumeration elements = elements(); + Iterator elements = elements(); // These two are for reporting errors only ErrorMsg error = null; final int line = getLineNumber(); // Traverse all child nodes - must be either When or Otherwise - while (elements.hasMoreElements()) { - Object element = elements.nextElement(); + while (elements.hasNext()) { + SyntaxTreeNode element = elements.next(); // Add a When child element if (element instanceof When) { whenElements.addElement(element); diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/ForEach.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/ForEach.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/ForEach.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/ForEach.java 2016-01-20 01:41:02.000000000 +0000 @@ -1,13 +1,13 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * @@ -23,9 +23,6 @@ package com.sun.org.apache.xalan.internal.xsltc.compiler; -import java.util.Enumeration; -import java.util.Vector; - import com.sun.org.apache.bcel.internal.generic.BranchHandle; import com.sun.org.apache.bcel.internal.generic.ConstantPoolGen; import com.sun.org.apache.bcel.internal.generic.GOTO; @@ -42,6 +39,8 @@ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type; import com.sun.org.apache.xalan.internal.xsltc.compiler.util.TypeCheckError; import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Util; +import java.util.Iterator; +import java.util.Vector; /** * @author Jacek Ambroziak @@ -97,9 +96,9 @@ // Collect sort objects associated with this instruction final Vector sortObjects = new Vector(); - Enumeration children = elements(); - while (children.hasMoreElements()) { - final Object child = children.nextElement(); + Iterator children = elements(); + while (children.hasNext()) { + final SyntaxTreeNode child = children.next(); if (child instanceof Sort) { sortObjects.addElement(child); } @@ -187,7 +186,7 @@ MethodGenerator methodGen) { final int n = elementCount(); for (int i = 0; i < n; i++) { - final Object child = getContents().elementAt(i); + final SyntaxTreeNode child = getContents().get(i); if (child instanceof Variable) { Variable var = (Variable)child; var.initialize(classGen, methodGen); diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/FunctionCall.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/FunctionCall.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/FunctionCall.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/FunctionCall.java 2016-01-20 01:41:02.000000000 +0000 @@ -1,15 +1,15 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 2001-2004 The Apache Software Foundation. + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -23,13 +23,6 @@ package com.sun.org.apache.xalan.internal.xsltc.compiler; -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Vector; - import com.sun.org.apache.bcel.internal.generic.ConstantPoolGen; import com.sun.org.apache.bcel.internal.generic.IFEQ; import com.sun.org.apache.bcel.internal.generic.INVOKEINTERFACE; @@ -53,6 +46,14 @@ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ReferenceType; import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type; import com.sun.org.apache.xalan.internal.xsltc.compiler.util.TypeCheckError; +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; +import java.util.Vector; /** * @author Jacek Ambroziak @@ -132,31 +133,38 @@ private boolean _isStatic = false; // Legal conversions between internal and Java types. - private static final MultiHashtable _internal2Java = new MultiHashtable(); + private static final MultiHashtable _internal2Java = new MultiHashtable(); // Legal conversions between Java and internal types. - private static final Hashtable _java2Internal = new Hashtable(); + private static final Map, Type> JAVA2INTERNAL; // The mappings between EXSLT extension namespaces and implementation classes - private static final Hashtable _extensionNamespaceTable = new Hashtable(); + private static final Map EXTENSIONNAMESPACE; // Extension functions that are implemented in BasisLibrary - private static final Hashtable _extensionFunctionTable = new Hashtable(); + private static final Map EXTENSIONFUNCTION; /** * inner class to used in internal2Java mappings, contains * the Java type and the distance between the internal type and * the Java type. */ static class JavaType { - public Class type; + public Class type; public int distance; public JavaType(Class type, int distance){ this.type = type; this.distance = distance; } - public boolean equals(Object query){ - return query.equals(type); + public boolean equals(Object query) { + if (query == null) { + return false; + } + if (query.getClass().isAssignableFrom(JavaType.class)) { + return ((JavaType)query).type.equals(type); + } else { + return query.equals(type); + } } } @@ -167,99 +175,112 @@ * These two tables are used when calling external (Java) functions. */ static { + final Class nodeClass, nodeListClass; try { - final Class nodeClass = Class.forName("org.w3c.dom.Node"); - final Class nodeListClass = Class.forName("org.w3c.dom.NodeList"); - - // -- Internal to Java -------------------------------------------- - - // Type.Boolean -> { boolean(0), Boolean(1), Object(2) } - _internal2Java.put(Type.Boolean, new JavaType(Boolean.TYPE, 0)); - _internal2Java.put(Type.Boolean, new JavaType(Boolean.class, 1)); - _internal2Java.put(Type.Boolean, new JavaType(Object.class, 2)); - - // Type.Real -> { double(0), Double(1), float(2), long(3), int(4), - // short(5), byte(6), char(7), Object(8) } - _internal2Java.put(Type.Real, new JavaType(Double.TYPE, 0)); - _internal2Java.put(Type.Real, new JavaType(Double.class, 1)); - _internal2Java.put(Type.Real, new JavaType(Float.TYPE, 2)); - _internal2Java.put(Type.Real, new JavaType(Long.TYPE, 3)); - _internal2Java.put(Type.Real, new JavaType(Integer.TYPE, 4)); - _internal2Java.put(Type.Real, new JavaType(Short.TYPE, 5)); - _internal2Java.put(Type.Real, new JavaType(Byte.TYPE, 6)); - _internal2Java.put(Type.Real, new JavaType(Character.TYPE, 7)); - _internal2Java.put(Type.Real, new JavaType(Object.class, 8)); - - // Type.Int must be the same as Type.Real - _internal2Java.put(Type.Int, new JavaType(Double.TYPE, 0)); - _internal2Java.put(Type.Int, new JavaType(Double.class, 1)); - _internal2Java.put(Type.Int, new JavaType(Float.TYPE, 2)); - _internal2Java.put(Type.Int, new JavaType(Long.TYPE, 3)); - _internal2Java.put(Type.Int, new JavaType(Integer.TYPE, 4)); - _internal2Java.put(Type.Int, new JavaType(Short.TYPE, 5)); - _internal2Java.put(Type.Int, new JavaType(Byte.TYPE, 6)); - _internal2Java.put(Type.Int, new JavaType(Character.TYPE, 7)); - _internal2Java.put(Type.Int, new JavaType(Object.class, 8)); - - // Type.String -> { String(0), Object(1) } - _internal2Java.put(Type.String, new JavaType(String.class, 0)); - _internal2Java.put(Type.String, new JavaType(Object.class, 1)); - - // Type.NodeSet -> { NodeList(0), Node(1), Object(2), String(3) } - _internal2Java.put(Type.NodeSet, new JavaType(nodeListClass, 0)); - _internal2Java.put(Type.NodeSet, new JavaType(nodeClass, 1)); - _internal2Java.put(Type.NodeSet, new JavaType(Object.class, 2)); - _internal2Java.put(Type.NodeSet, new JavaType(String.class, 3)); - - // Type.Node -> { Node(0), NodeList(1), Object(2), String(3) } - _internal2Java.put(Type.Node, new JavaType(nodeListClass, 0)); - _internal2Java.put(Type.Node, new JavaType(nodeClass, 1)); - _internal2Java.put(Type.Node, new JavaType(Object.class, 2)); - _internal2Java.put(Type.Node, new JavaType(String.class, 3)); - - // Type.ResultTree -> { NodeList(0), Node(1), Object(2), String(3) } - _internal2Java.put(Type.ResultTree, new JavaType(nodeListClass, 0)); - _internal2Java.put(Type.ResultTree, new JavaType(nodeClass, 1)); - _internal2Java.put(Type.ResultTree, new JavaType(Object.class, 2)); - _internal2Java.put(Type.ResultTree, new JavaType(String.class, 3)); - - _internal2Java.put(Type.Reference, new JavaType(Object.class, 0)); - - // Possible conversions between Java and internal types - _java2Internal.put(Boolean.TYPE, Type.Boolean); - _java2Internal.put(Void.TYPE, Type.Void); - _java2Internal.put(Character.TYPE, Type.Real); - _java2Internal.put(Byte.TYPE, Type.Real); - _java2Internal.put(Short.TYPE, Type.Real); - _java2Internal.put(Integer.TYPE, Type.Real); - _java2Internal.put(Long.TYPE, Type.Real); - _java2Internal.put(Float.TYPE, Type.Real); - _java2Internal.put(Double.TYPE, Type.Real); - - _java2Internal.put(String.class, Type.String); - - _java2Internal.put(Object.class, Type.Reference); - - // Conversions from org.w3c.dom.Node/NodeList to internal NodeSet - _java2Internal.put(nodeListClass, Type.NodeSet); - _java2Internal.put(nodeClass, Type.NodeSet); - - // Initialize the extension namespace table - _extensionNamespaceTable.put(EXT_XALAN, "com.sun.org.apache.xalan.internal.lib.Extensions"); - _extensionNamespaceTable.put(EXSLT_COMMON, "com.sun.org.apache.xalan.internal.lib.ExsltCommon"); - _extensionNamespaceTable.put(EXSLT_MATH, "com.sun.org.apache.xalan.internal.lib.ExsltMath"); - _extensionNamespaceTable.put(EXSLT_SETS, "com.sun.org.apache.xalan.internal.lib.ExsltSets"); - _extensionNamespaceTable.put(EXSLT_DATETIME, "com.sun.org.apache.xalan.internal.lib.ExsltDatetime"); - _extensionNamespaceTable.put(EXSLT_STRINGS, "com.sun.org.apache.xalan.internal.lib.ExsltStrings"); - - // Initialize the extension function table - _extensionFunctionTable.put(EXSLT_COMMON + ":nodeSet", "nodeset"); - _extensionFunctionTable.put(EXSLT_COMMON + ":objectType", "objectType"); - _extensionFunctionTable.put(EXT_XALAN + ":nodeset", "nodeset"); + nodeClass = Class.forName("org.w3c.dom.Node"); + nodeListClass = Class.forName("org.w3c.dom.NodeList"); } catch (ClassNotFoundException e) { - System.err.println(e); + ErrorMsg err = new ErrorMsg(ErrorMsg.CLASS_NOT_FOUND_ERR,"org.w3c.dom.Node or NodeList"); + throw new ExceptionInInitializerError(err.toString()); } + + // -- Internal to Java -------------------------------------------- + + // Type.Boolean -> { boolean(0), Boolean(1), Object(2) } + _internal2Java.put(Type.Boolean, new JavaType(Boolean.TYPE, 0)); + _internal2Java.put(Type.Boolean, new JavaType(Boolean.class, 1)); + _internal2Java.put(Type.Boolean, new JavaType(Object.class, 2)); + + // Type.Real -> { double(0), Double(1), float(2), long(3), int(4), + // short(5), byte(6), char(7), Object(8) } + _internal2Java.put(Type.Real, new JavaType(Double.TYPE, 0)); + _internal2Java.put(Type.Real, new JavaType(Double.class, 1)); + _internal2Java.put(Type.Real, new JavaType(Float.TYPE, 2)); + _internal2Java.put(Type.Real, new JavaType(Long.TYPE, 3)); + _internal2Java.put(Type.Real, new JavaType(Integer.TYPE, 4)); + _internal2Java.put(Type.Real, new JavaType(Short.TYPE, 5)); + _internal2Java.put(Type.Real, new JavaType(Byte.TYPE, 6)); + _internal2Java.put(Type.Real, new JavaType(Character.TYPE, 7)); + _internal2Java.put(Type.Real, new JavaType(Object.class, 8)); + + // Type.Int must be the same as Type.Real + _internal2Java.put(Type.Int, new JavaType(Double.TYPE, 0)); + _internal2Java.put(Type.Int, new JavaType(Double.class, 1)); + _internal2Java.put(Type.Int, new JavaType(Float.TYPE, 2)); + _internal2Java.put(Type.Int, new JavaType(Long.TYPE, 3)); + _internal2Java.put(Type.Int, new JavaType(Integer.TYPE, 4)); + _internal2Java.put(Type.Int, new JavaType(Short.TYPE, 5)); + _internal2Java.put(Type.Int, new JavaType(Byte.TYPE, 6)); + _internal2Java.put(Type.Int, new JavaType(Character.TYPE, 7)); + _internal2Java.put(Type.Int, new JavaType(Object.class, 8)); + + // Type.String -> { String(0), Object(1) } + _internal2Java.put(Type.String, new JavaType(String.class, 0)); + _internal2Java.put(Type.String, new JavaType(Object.class, 1)); + + // Type.NodeSet -> { NodeList(0), Node(1), Object(2), String(3) } + _internal2Java.put(Type.NodeSet, new JavaType(nodeListClass, 0)); + _internal2Java.put(Type.NodeSet, new JavaType(nodeClass, 1)); + _internal2Java.put(Type.NodeSet, new JavaType(Object.class, 2)); + _internal2Java.put(Type.NodeSet, new JavaType(String.class, 3)); + + // Type.Node -> { Node(0), NodeList(1), Object(2), String(3) } + _internal2Java.put(Type.Node, new JavaType(nodeListClass, 0)); + _internal2Java.put(Type.Node, new JavaType(nodeClass, 1)); + _internal2Java.put(Type.Node, new JavaType(Object.class, 2)); + _internal2Java.put(Type.Node, new JavaType(String.class, 3)); + + // Type.ResultTree -> { NodeList(0), Node(1), Object(2), String(3) } + _internal2Java.put(Type.ResultTree, new JavaType(nodeListClass, 0)); + _internal2Java.put(Type.ResultTree, new JavaType(nodeClass, 1)); + _internal2Java.put(Type.ResultTree, new JavaType(Object.class, 2)); + _internal2Java.put(Type.ResultTree, new JavaType(String.class, 3)); + + _internal2Java.put(Type.Reference, new JavaType(Object.class, 0)); + + _internal2Java.makeUnmodifiable(); + + Map, Type> java2Internal = new HashMap, Type>(); + Map extensionNamespaceTable = new HashMap(); + Map extensionFunctionTable = new HashMap(); + + // Possible conversions between Java and internal types + java2Internal.put(Boolean.TYPE, Type.Boolean); + java2Internal.put(Void.TYPE, Type.Void); + java2Internal.put(Character.TYPE, Type.Real); + java2Internal.put(Byte.TYPE, Type.Real); + java2Internal.put(Short.TYPE, Type.Real); + java2Internal.put(Integer.TYPE, Type.Real); + java2Internal.put(Long.TYPE, Type.Real); + java2Internal.put(Float.TYPE, Type.Real); + java2Internal.put(Double.TYPE, Type.Real); + + java2Internal.put(String.class, Type.String); + + java2Internal.put(Object.class, Type.Reference); + + // Conversions from org.w3c.dom.Node/NodeList to internal NodeSet + java2Internal.put(nodeListClass, Type.NodeSet); + java2Internal.put(nodeClass, Type.NodeSet); + + // Initialize the extension namespace table + extensionNamespaceTable.put(EXT_XALAN, "com.sun.org.apache.xalan.internal.lib.Extensions"); + extensionNamespaceTable.put(EXSLT_COMMON, "com.sun.org.apache.xalan.internal.lib.ExsltCommon"); + extensionNamespaceTable.put(EXSLT_MATH, "com.sun.org.apache.xalan.internal.lib.ExsltMath"); + extensionNamespaceTable.put(EXSLT_SETS, "com.sun.org.apache.xalan.internal.lib.ExsltSets"); + extensionNamespaceTable.put(EXSLT_DATETIME, "com.sun.org.apache.xalan.internal.lib.ExsltDatetime"); + extensionNamespaceTable.put(EXSLT_STRINGS, "com.sun.org.apache.xalan.internal.lib.ExsltStrings"); + + // Initialize the extension function table + extensionFunctionTable.put(EXSLT_COMMON + ":nodeSet", "nodeset"); + extensionFunctionTable.put(EXSLT_COMMON + ":objectType", "objectType"); + extensionFunctionTable.put(EXT_XALAN + ":nodeset", "nodeset"); + + JAVA2INTERNAL = Collections.unmodifiableMap(java2Internal); + EXTENSIONNAMESPACE = Collections.unmodifiableMap(extensionNamespaceTable); + EXTENSIONFUNCTION = Collections.unmodifiableMap(extensionFunctionTable); + } public FunctionCall(QName fname, Vector arguments) { @@ -290,7 +311,7 @@ public String getClassNameFromUri(String uri) { - String className = (String)_extensionNamespaceTable.get(uri); + String className = EXTENSIONNAMESPACE.get(uri); if (className != null) return className; @@ -370,7 +391,7 @@ local = replaceDash(local); } - String extFunction = (String)_extensionFunctionTable.get(namespace + ":" + local); + String extFunction = EXTENSIONFUNCTION.get(namespace + ":" + local); if (extFunction != null) { _fname = new QName(null, null, extFunction); return typeCheckStandard(stable); @@ -450,15 +471,15 @@ (Constructor)constructors.elementAt(i); final Class[] paramTypes = constructor.getParameterTypes(); - Class extType = null; + Class extType; int currConstrDistance = 0; for (j = 0; j < nArgs; j++) { // Convert from internal (translet) type to external (Java) type extType = paramTypes[j]; final Type intType = (Type)argsType.elementAt(j); - Object match = _internal2Java.maps(intType, extType); + JavaType match = _internal2Java.maps(intType, new JavaType(extType, 0)); if (match != null) { - currConstrDistance += ((JavaType)match).distance; + currConstrDistance += match.distance; } else if (intType instanceof ObjectType) { ObjectType objectType = (ObjectType)intType; @@ -583,9 +604,9 @@ // Convert from internal (translet) type to external (Java) type extType = paramTypes[j]; final Type intType = (Type)argsType.elementAt(j); - Object match = _internal2Java.maps(intType, extType); + JavaType match = _internal2Java.maps(intType, new JavaType(extType, 0)); if (match != null) { - currMethodDistance += ((JavaType)match).distance; + currMethodDistance += match.distance; } else { // no mapping available @@ -617,7 +638,7 @@ // Check if the return type can be converted extType = method.getReturnType(); - _type = (Type) _java2Internal.get(extType); + _type = JAVA2INTERNAL.get(extType); if (_type == null) { _type = Type.newObjectType(extType); } diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Import.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Import.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Import.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Import.java 2016-01-20 01:41:02.000000000 +0000 @@ -1,13 +1,13 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * @@ -23,10 +23,7 @@ package com.sun.org.apache.xalan.internal.xsltc.compiler; -import java.io.File; -import java.net.URL; -import java.net.MalformedURLException; -import java.util.Enumeration; +import java.util.Iterator; import com.sun.org.apache.xml.internal.utils.SystemIDResolver; import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ClassGenerator; @@ -121,10 +118,10 @@ parser.setCurrentStylesheet(_imported); _imported.parseContents(parser); - final Enumeration elements = _imported.elements(); + final Iterator elements = _imported.elements(); final Stylesheet topStylesheet = parser.getTopLevelStylesheet(); - while (elements.hasMoreElements()) { - final Object element = elements.nextElement(); + while (elements.hasNext()) { + final SyntaxTreeNode element = elements.next(); if (element instanceof TopLevelElement) { if (element instanceof Variable) { topStylesheet.addVariable((Variable) element); diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Include.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Include.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Include.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Include.java 2016-01-20 01:41:02.000000000 +0000 @@ -1,13 +1,13 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * @@ -23,11 +23,7 @@ package com.sun.org.apache.xalan.internal.xsltc.compiler; -import java.io.File; -import java.io.FileNotFoundException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Enumeration; +import java.util.Iterator; import com.sun.org.apache.xml.internal.utils.SystemIDResolver; import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ClassGenerator; @@ -121,10 +117,10 @@ parser.setCurrentStylesheet(_included); _included.parseContents(parser); - final Enumeration elements = _included.elements(); + final Iterator elements = _included.elements(); final Stylesheet topStylesheet = parser.getTopLevelStylesheet(); - while (elements.hasMoreElements()) { - final Object element = elements.nextElement(); + while (elements.hasNext()) { + final SyntaxTreeNode element = elements.next(); if (element instanceof TopLevelElement) { if (element instanceof Variable) { topStylesheet.addVariable((Variable) element); diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Key.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Key.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Key.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Key.java 2016-01-20 01:41:03.000000000 +0000 @@ -1,15 +1,15 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 2001-2004 The Apache Software Foundation. + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -23,8 +23,6 @@ package com.sun.org.apache.xalan.internal.xsltc.compiler; -import java.util.Vector; - import com.sun.org.apache.bcel.internal.generic.BranchHandle; import com.sun.org.apache.bcel.internal.generic.ConstantPoolGen; import com.sun.org.apache.bcel.internal.generic.GOTO; @@ -226,7 +224,7 @@ // AbstractTranslet.buildKeyIndex(name,node_id,value) => void final int key = cpg.addMethodref(TRANSLET_CLASS, "buildKeyIndex", - "("+STRING_SIG+"I"+OBJECT_SIG+")V"); + "("+STRING_SIG+"I"+STRING_SIG+")V"); // AbstractTranslet.SetKeyIndexDom(name, Dom) => void final int keyDom = cpg.addMethodref(TRANSLET_CLASS, diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/LiteralElement.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/LiteralElement.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/LiteralElement.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/LiteralElement.java 2016-01-20 01:41:03.000000000 +0000 @@ -1,15 +1,15 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 2001-2004 The Apache Software Foundation. + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -23,10 +23,6 @@ package com.sun.org.apache.xalan.internal.xsltc.compiler; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Vector; - import com.sun.org.apache.bcel.internal.generic.ConstantPoolGen; import com.sun.org.apache.bcel.internal.generic.InstructionList; import com.sun.org.apache.bcel.internal.generic.PUSH; @@ -36,9 +32,13 @@ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type; import com.sun.org.apache.xalan.internal.xsltc.compiler.util.TypeCheckError; import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Util; - import com.sun.org.apache.xml.internal.serializer.ElemDesc; import com.sun.org.apache.xml.internal.serializer.ToHTMLStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; /** * @author Jacek Ambroziak @@ -49,8 +49,8 @@ private String _name; private LiteralElement _literalElemParent = null; - private Vector _attributeElements = null; - private Hashtable _accessedPrefixes = null; + private List _attributeElements = null; + private Map _accessedPrefixes = null; // True if all attributes of this LRE are unique, i.e. they all have // different names. This flag is set to false if some attribute @@ -85,14 +85,13 @@ return result; } } - return _accessedPrefixes != null ? - (String) _accessedPrefixes.get(prefix) : null; + return _accessedPrefixes != null ? _accessedPrefixes.get(prefix) : null; } /** * Method used to keep track of what namespaces that are references by * this literal element and its attributes. The output must contain a - * definition for each namespace, so we stuff them in a hashtable. + * definition for each namespace, so we stuff them in a map. */ public void registerNamespace(String prefix, String uri, SymbolTable stable, boolean declared) { @@ -107,12 +106,12 @@ // Check if we have any declared namesaces if (_accessedPrefixes == null) { - _accessedPrefixes = new Hashtable(); + _accessedPrefixes = new HashMap(); } else { if (!declared) { // Check if this node has a declaration for this namespace - final String old = (String)_accessedPrefixes.get(prefix); + final String old = _accessedPrefixes.get(prefix); if (old != null) { if (old.equals(uri)) return; @@ -169,7 +168,7 @@ */ public void addAttribute(SyntaxTreeNode attribute) { if (_attributeElements == null) { - _attributeElements = new Vector(2); + _attributeElements = new ArrayList(2); } _attributeElements.add(attribute); } @@ -179,9 +178,9 @@ */ public void setFirstAttribute(SyntaxTreeNode attribute) { if (_attributeElements == null) { - _attributeElements = new Vector(2); + _attributeElements = new ArrayList(2); } - _attributeElements.insertElementAt(attribute,0); + _attributeElements.add(0, attribute); } /** @@ -191,10 +190,7 @@ public Type typeCheck(SymbolTable stable) throws TypeCheckError { // Type-check all attributes if (_attributeElements != null) { - final int count = _attributeElements.size(); - for (int i = 0; i < count; i++) { - SyntaxTreeNode node = - (SyntaxTreeNode)_attributeElements.elementAt(i); + for (SyntaxTreeNode node : _attributeElements) { node.typeCheck(stable); } } @@ -207,15 +203,13 @@ * and assembles a list of all prefixes that (for the given node) maps * to _ANY_ namespace URI. Used by literal result elements to determine */ - public Enumeration getNamespaceScope(SyntaxTreeNode node) { - Hashtable all = new Hashtable(); + public Set> getNamespaceScope(SyntaxTreeNode node) { + Map all = new HashMap(); - while (node != null) { - Hashtable mapping = node.getPrefixMapping(); - if (mapping != null) { - Enumeration prefixes = mapping.keys(); - while (prefixes.hasMoreElements()) { - String prefix = (String)prefixes.nextElement(); + while (node != null) { + Map mapping = node.getPrefixMapping(); + if (mapping != null) { + for( String prefix : mapping.keySet()) { if (!all.containsKey(prefix)) { all.put(prefix, mapping.get(prefix)); } @@ -223,7 +217,7 @@ } node = node.getParent(); } - return(all.keys()); + return all.entrySet(); } /** @@ -288,9 +282,9 @@ // Register all namespaces that are in scope, except for those that // are listed in the xsl:stylesheet element's *-prefixes attributes - final Enumeration include = getNamespaceScope(this); - while (include.hasMoreElements()) { - final String prefix = (String)include.nextElement(); + Set> include = getNamespaceScope(this); + for (Map.Entry entry : include) { + final String prefix = entry.getKey(); if (!prefix.equals("xml")) { final String uri = lookupNamespace(prefix); if (uri != null && !stable.isExcludedNamespace(uri)) { @@ -356,11 +350,10 @@ // Compile code to emit namespace attributes if (_accessedPrefixes != null) { boolean declaresDefaultNS = false; - Enumeration e = _accessedPrefixes.keys(); - while (e.hasMoreElements()) { - final String prefix = (String)e.nextElement(); - final String uri = (String)_accessedPrefixes.get(prefix); + for (Map.Entry entry : _accessedPrefixes.entrySet()) { + final String prefix = entry.getKey(); + final String uri = entry.getValue(); if (uri != Constants.EMPTYSTRING || prefix != Constants.EMPTYSTRING) @@ -391,10 +384,7 @@ // Output all attributes if (_attributeElements != null) { - final int count = _attributeElements.size(); - for (int i = 0; i < count; i++) { - SyntaxTreeNode node = - (SyntaxTreeNode)_attributeElements.elementAt(i); + for (SyntaxTreeNode node : _attributeElements) { if (!(node instanceof XslAttribute)) { node.translate(classGen, methodGen); } @@ -445,18 +435,18 @@ if (_attributeElements != null) { int numAttrs = _attributeElements.size(); - Hashtable attrsTable = null; + Map attrsTable = null; for (int i = 0; i < numAttrs; i++) { - SyntaxTreeNode node = (SyntaxTreeNode)_attributeElements.elementAt(i); + SyntaxTreeNode node = _attributeElements.get(i); if (node instanceof UseAttributeSets) { return false; } else if (node instanceof XslAttribute) { if (attrsTable == null) { - attrsTable = new Hashtable(); + attrsTable = new HashMap(); for (int k = 0; k < i; k++) { - SyntaxTreeNode n = (SyntaxTreeNode)_attributeElements.elementAt(k); + SyntaxTreeNode n = _attributeElements.get(k); if (n instanceof LiteralAttribute) { LiteralAttribute literalAttr = (LiteralAttribute)n; attrsTable.put(literalAttr.getName(), literalAttr); @@ -491,10 +481,8 @@ * children of the current node are not included in the check. */ private boolean canProduceAttributeNodes(SyntaxTreeNode node, boolean ignoreXslAttribute) { - Vector contents = node.getContents(); - int size = contents.size(); - for (int i = 0; i < size; i++) { - SyntaxTreeNode child = (SyntaxTreeNode)contents.elementAt(i); + List contents = node.getContents(); + for (SyntaxTreeNode child : contents) { if (child instanceof Text) { Text text = (Text)child; if (text.isIgnore()) @@ -532,10 +520,8 @@ return true; } else if (child instanceof Choose) { - Vector chooseContents = child.getContents(); - int num = chooseContents.size(); - for (int k = 0; k < num; k++) { - SyntaxTreeNode chooseChild = (SyntaxTreeNode)chooseContents.elementAt(k); + List chooseContents = child.getContents(); + for (SyntaxTreeNode chooseChild : chooseContents) { if (chooseChild instanceof When || chooseChild instanceof Otherwise) { if (canProduceAttributeNodes(chooseChild, false)) return true; diff -Nru openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Mode.java openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Mode.java --- openjdk-6-6b31-1.13.3/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Mode.java 2014-04-10 15:11:56.000000000 +0000 +++ openjdk-6-6b38-1.13.10/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Mode.java 2016-01-20 01:41:03.000000000 +0000 @@ -1,13 +1,13 @@ /* - * reserved comment block - * DO NOT REMOVE OR ALTER! + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. */ /* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * @@ -23,12 +23,6 @@ package com.sun.org.apache.xalan.internal.xsltc.compiler; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.Vector; - -import com.sun.org.apache.bcel.internal.generic.Instruction; import com.sun.org.apache.bcel.internal.generic.BranchHandle; import com.sun.org.apache.bcel.internal.generic.ConstantPoolGen; import com.sun.org.apache.bcel.internal.generic.DUP; @@ -38,6 +32,7 @@ import com.sun.org.apache.bcel.internal.generic.INVOKEINTERFACE; import com.sun.org.apache.bcel.internal.generic.INVOKEVIRTUAL; import com.sun.org.apache.bcel.internal.generic.ISTORE; +import com.sun.org.apache.bcel.internal.generic.Instruction; import com.sun.org.apache.bcel.internal.generic.InstructionHandle; import com.sun.org.apache.bcel.internal.generic.InstructionList; import com.sun.org.apache.bcel.internal.generic.LocalVariableGen; @@ -51,6 +46,12 @@ import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Util; import com.sun.org.apache.xml.internal.dtm.Axis; import com.sun.org.apache.xml.internal.dtm.DTM; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.Vector; /** * Mode gathers all the templates belonging to a given mode; @@ -128,22 +129,22 @@ /** * A mapping between templates and test sequences. */ - private Hashtable _neededTemplates = new Hashtable(); + private Map _neededTemplates = new HashMap(); /** * A mapping between named templates and Mode objects. */ - private Hashtable _namedTemplates = new Hashtable(); + private Map _namedTemplates = new HashMap(); /** * A mapping between templates and instruction handles. */ - private Hashtable _templateIHs = new Hashtable(); + private Map _templateIHs = new HashMap(); /** * A mapping between templates and instruction lists. */ - private Hashtable _templateILs = new Hashtable(); + private Map _templateILs = new HashMap(); /** * A reference to the pattern matching the root node. @@ -152,14 +153,14 @@ /** * Stores ranges of template precendences for the compilation - * of apply-imports (a Hashtable for historical reasons). + * of apply-imports. */ - private Hashtable _importLevels = null; + private Map _importLevels = null; /** * A mapping between key names and keys. */ - private Hashtable _keys = null; + private Map _keys = null; /** * Variable index for the current node used in code generation. @@ -195,9 +196,9 @@ public String functionName(int min, int max) { if (_importLevels == null) { - _importLevels = new Hashtable(); + _importLevels = new HashMap(); } - _importLevels.put(new Integer(max), new Integer(min)); + _importLevels.put(max, min); return _methodName + '_' + max; } @@ -244,7 +245,7 @@ /** * Process all the test patterns in this mode */ - public void processPatterns(Hashtable keys) { + public void processPatterns(Map keys) { _keys = keys; /* @@ -300,7 +301,7 @@ */ private void flattenAlternative(Pattern pattern, Template template, - Hashtable keys) { + Map keys) { // Patterns on type id() and key() are special since they do not have // any kernel node type (it can be anything as long as the node is in // the id's or key's index). @@ -564,15 +565,13 @@ MethodGenerator methodGen, InstructionHandle next) { - Enumeration templates = _namedTemplates.keys(); - while (templates.hasMoreElements()) { - final Template template = (Template)templates.nextElement(); + Set