Merge
This commit is contained in:
commit
7e957a2913
1
.hgtags
1
.hgtags
@ -347,3 +347,4 @@ f9bcdce2df26678c3fe468130b535c0342c69b89 jdk-9+99
|
||||
2dc4c11fe48831854916d53c3913bdb7d49023ea jdk-9+102
|
||||
4a652e4ca9523422149958673033e0ac740d5e1e jdk-9+103
|
||||
086c682bd8c5f195c324f61e2c61fbcd0226d63b jdk-9+104
|
||||
db483b34fa7148d257a429acddbde9c13687dcae jdk-9+105
|
||||
|
@ -347,3 +347,4 @@ c4d72a1620835b5d657b7b6792c2879367d0154f jdk-9+101
|
||||
6406ecf5d39482623225bb1b3098c2cac6f7d450 jdk-9+102
|
||||
47d6462e514b2097663305a57d9c844c15d5b609 jdk-9+103
|
||||
9a38f8b4ba220708db198d08d82fd2144a64777d jdk-9+104
|
||||
be58b02c11f90b88c67e4d0e2cb5e4cf2d9b3c57 jdk-9+105
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -36,11 +36,11 @@
|
||||
# "ARG_FOO".
|
||||
#
|
||||
# The generated function can be called like this:
|
||||
# MYFUNC(FOO: [foo-val], BAR:
|
||||
# [
|
||||
# MYFUNC(FOO: [foo-val],
|
||||
# BAR: [
|
||||
# $ECHO hello world
|
||||
# ])
|
||||
#
|
||||
# Note that the argument value must start on the same line as the argument name.
|
||||
#
|
||||
# Argument 1: Name of the function to define
|
||||
# Argument 2: List of legal named arguments, with a * prefix for required arguments
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -72,7 +72,7 @@ AC_DEFUN([BPERF_CHECK_MEMORY_SIZE],
|
||||
FOUND_MEM=yes
|
||||
elif test -x /usr/sbin/prtconf; then
|
||||
# Looks like a Solaris or AIX system
|
||||
MEMORY_SIZE=`/usr/sbin/prtconf | grep "^Memory [[Ss]]ize" | awk '{ print [$]3 }'`
|
||||
MEMORY_SIZE=`/usr/sbin/prtconf 2> /dev/null | grep "^Memory [[Ss]]ize" | awk '{ print [$]3 }'`
|
||||
FOUND_MEM=yes
|
||||
elif test -x /usr/sbin/sysctl; then
|
||||
# Looks like a MacOSX system
|
||||
@ -260,8 +260,8 @@ AC_DEFUN([BPERF_SETUP_CCACHE_USAGE],
|
||||
#
|
||||
AC_DEFUN([BPERF_RUN_ICECC_CREATE_ENV],
|
||||
[
|
||||
cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
|
||||
&& ${ICECC_CREATE_ENV} $1 > $2 2>&1
|
||||
( cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
|
||||
&& ${ICECC_CREATE_ENV} $1 > $2 2>&1 )
|
||||
if test "$?" != "0"; then
|
||||
AC_MSG_NOTICE([icecc-create-env output:])
|
||||
cat $2
|
||||
|
@ -33,6 +33,7 @@ export LEGACY_BUILD_DIR=@OPENJDK_TARGET_OS@-@OPENJDK_TARGET_CPU_LEGACY@
|
||||
|
||||
export OPENJDK_TARGET_OS="@OPENJDK_TARGET_OS@"
|
||||
export OPENJDK_TARGET_CPU="@OPENJDK_TARGET_CPU@"
|
||||
export OPENJDK_TARGET_CPU_LIBDIR="@OPENJDK_TARGET_CPU_LIBDIR@"
|
||||
|
||||
export AWK="@AWK@"
|
||||
export BASH="@BASH@"
|
||||
|
7
common/autoconf/configure
vendored
7
common/autoconf/configure
vendored
@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -283,8 +283,9 @@ Additional (non-autoconf) OpenJDK Options:
|
||||
|
||||
EOT
|
||||
|
||||
# Print list of toolchains. This must be done by the autoconf script.
|
||||
( CONFIGURE_PRINT_TOOLCHAIN_LIST=true . $conf_script_to_run PRINTF=printf )
|
||||
# Print additional help, e.g. a list of toolchains.
|
||||
# This must be done by the autoconf script.
|
||||
( CONFIGURE_PRINT_ADDITIONAL_HELP=true . $conf_script_to_run PRINTF=printf )
|
||||
|
||||
cat <<EOT
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -189,8 +189,6 @@ TOOLCHAIN_SETUP_JTREG
|
||||
|
||||
FLAGS_SETUP_INIT_FLAGS
|
||||
|
||||
# FIXME: Currently we must test this after toolchain but before flags. Fix!
|
||||
|
||||
# Now we can test some aspects on the target using configure macros.
|
||||
PLATFORM_SETUP_OPENJDK_TARGET_BITS
|
||||
PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS
|
||||
|
@ -206,7 +206,7 @@ AC_DEFUN_ONCE([FLAGS_SETUP_INIT_FLAGS],
|
||||
# On Windows, we need to set RC flags.
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
RC_FLAGS="-nologo -l0x409"
|
||||
if test "x$VARIANT" = xOPT; then
|
||||
if test "x$DEBUG_LEVEL" = xrelease; then
|
||||
RC_FLAGS="$RC_FLAGS -DNDEBUG"
|
||||
fi
|
||||
|
||||
@ -254,7 +254,7 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_LIBS],
|
||||
SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path/.'
|
||||
SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
|
||||
SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
|
||||
SET_SHARED_LIBRARY_MAPFILE=''
|
||||
SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,[$]1'
|
||||
else
|
||||
# Default works for linux, might work on other platforms as well.
|
||||
SHARED_LIBRARY_FLAGS='-shared'
|
||||
@ -274,7 +274,7 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_LIBS],
|
||||
SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path/.'
|
||||
SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
|
||||
SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
|
||||
SET_SHARED_LIBRARY_MAPFILE=''
|
||||
SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,[$]1'
|
||||
else
|
||||
# Default works for linux, might work on other platforms as well.
|
||||
PICFLAG='-fPIC'
|
||||
@ -310,7 +310,7 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_LIBS],
|
||||
SET_EXECUTABLE_ORIGIN=''
|
||||
SET_SHARED_LIBRARY_ORIGIN=''
|
||||
SET_SHARED_LIBRARY_NAME=''
|
||||
SET_SHARED_LIBRARY_MAPFILE=''
|
||||
SET_SHARED_LIBRARY_MAPFILE='-def:[$]1'
|
||||
fi
|
||||
|
||||
AC_SUBST(C_FLAG_REORDER)
|
||||
@ -423,6 +423,10 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_OPTIMIZATION],
|
||||
# no adjustment
|
||||
;;
|
||||
slowdebug )
|
||||
# FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS it
|
||||
# get's added conditionally on whether we produce debug symbols or not.
|
||||
# This is most likely not really correct.
|
||||
|
||||
# Add runtime stack smashing and undefined behavior checks.
|
||||
# Not all versions of gcc support -fstack-protector
|
||||
STACK_PROTECTOR_CFLAG="-fstack-protector-all"
|
||||
@ -463,7 +467,7 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_OPTIMIZATION],
|
||||
CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
|
||||
CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
|
||||
CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
|
||||
C_O_FLAG_DEBUG=""
|
||||
CXX_O_FLAG_DEBUG=""
|
||||
CXX_O_FLAG_NONE=""
|
||||
fi
|
||||
else
|
||||
@ -646,8 +650,8 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK],
|
||||
# avoid bundling msvcpNNN.dll. Doesn't work with newer versions of visual
|
||||
# studio.
|
||||
if test "x$TOOLCHAIN_VERSION" = "x2010"; then
|
||||
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
|
||||
-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
|
||||
STATIC_CPPLIB_FLAGS="-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
|
||||
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK $STATIC_CPPLIB_FLAGS"
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -715,9 +719,6 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK],
|
||||
# Set some additional per-OS defines.
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
|
||||
elif test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||
# FIXME: PPC64 should not be here.
|
||||
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DPPC64"
|
||||
elif test "x$OPENJDK_TARGET_OS" = xbsd; then
|
||||
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
|
||||
fi
|
||||
@ -775,36 +776,34 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK],
|
||||
# Setup LDFLAGS et al.
|
||||
#
|
||||
|
||||
# Now this is odd. The JDK native libraries have to link against libjvm.so
|
||||
# On 32-bit machines there is normally two distinct libjvm.so:s, client and server.
|
||||
# Which should we link to? Are we lucky enough that the binary api to the libjvm.so library
|
||||
# is identical for client and server? Yes. Which is picked at runtime (client or server)?
|
||||
# Neither, since the chosen libjvm.so has already been loaded by the launcher, all the following
|
||||
# libraries will link to whatever is in memory. Yuck.
|
||||
#
|
||||
# Thus we offer the compiler to find libjvm.so first in server then in client. It works. Ugh.
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK -nologo -opt:ref -incremental:no"
|
||||
LDFLAGS_MICROSOFT="-nologo -opt:ref"
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no"
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK -safeseh"
|
||||
LDFLAGS_SAFESH="-safeseh"
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_SAFESH"
|
||||
fi
|
||||
# TODO: make -debug optional "--disable-full-debug-symbols"
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK -debug"
|
||||
LDFLAGS_MICROSOFT_DEBUG="-debug"
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_MICROSOFT_DEBUG"
|
||||
elif test "x$TOOLCHAIN_TYPE" = xgcc; then
|
||||
# If this is a --hash-style=gnu system, use --hash-style=both, why?
|
||||
# We have previously set HAS_GNU_HASH if this is the case
|
||||
if test -n "$HAS_GNU_HASH"; then
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} -Wl,--hash-style=both"
|
||||
LDFLAGS_HASH_STYLE="-Wl,--hash-style=both"
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_HASH_STYLE"
|
||||
fi
|
||||
if test "x$OPENJDK_TARGET_OS" = xlinux; then
|
||||
# And since we now know that the linker is gnu, then add -z defs, to forbid
|
||||
# undefined symbols in object files.
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} -Wl,-z,defs"
|
||||
LDFLAGS_NO_UNDEF_SYM="-Wl,-z,defs"
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM"
|
||||
case $DEBUG_LEVEL in
|
||||
release )
|
||||
# tell linker to optimize libraries.
|
||||
# Should this be supplied to the OSS linker as well?
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} -Wl,-O1"
|
||||
LDFLAGS_DEBUGLEVEL_release="-Wl,-O1"
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_DEBUGLEVEL_release"
|
||||
;;
|
||||
slowdebug )
|
||||
if test "x$HAS_LINKER_NOW" = "xtrue"; then
|
||||
@ -831,10 +830,13 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK],
|
||||
esac
|
||||
fi
|
||||
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK -Wl,-z,defs -xildoff -ztext"
|
||||
LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib"
|
||||
LDFLAGS_SOLSTUDIO="-Wl,-z,defs"
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_SOLSTUDIO -xildoff -ztext"
|
||||
LDFLAGS_CXX_SOLSTUDIO="-norunpath"
|
||||
LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LDFLAGS_CXX_SOLSTUDIO -xnolib"
|
||||
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} -brtl -bnolibpath -bexpall -bernotok"
|
||||
LDFLAGS_XLC="-brtl -bnolibpath -bexpall -bernotok"
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_XLC"
|
||||
fi
|
||||
|
||||
# Customize LDFLAGS for executables
|
||||
@ -1048,6 +1050,10 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_MISC],
|
||||
DISABLE_WARNING_PREFIX="-Wno-"
|
||||
CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
|
||||
;;
|
||||
xlc)
|
||||
DISABLE_WARNING_PREFIX="-qsuppress="
|
||||
CFLAGS_WARNINGS_ARE_ERRORS="-qhalt=w"
|
||||
;;
|
||||
esac
|
||||
AC_SUBST(DISABLE_WARNING_PREFIX)
|
||||
AC_SUBST(CFLAGS_WARNINGS_ARE_ERRORS)
|
||||
|
@ -784,6 +784,8 @@ LDCXX
|
||||
LD
|
||||
CXXCPP
|
||||
CPP
|
||||
CXX_VERSION_NUMBER
|
||||
CC_VERSION_NUMBER
|
||||
ac_ct_CXX
|
||||
CXXFLAGS
|
||||
CXX
|
||||
@ -860,6 +862,7 @@ LAUNCHER_NAME
|
||||
TEST_IN_BUILD
|
||||
COPYRIGHT_YEAR
|
||||
COMPRESS_JARS
|
||||
INCLUDE_SA
|
||||
UNLIMITED_CRYPTO
|
||||
CACERTS_FILE
|
||||
BUILD_HEADLESS
|
||||
@ -906,7 +909,6 @@ FASTDEBUG
|
||||
VARIANT
|
||||
DEBUG_LEVEL
|
||||
MACOSX_UNIVERSAL
|
||||
INCLUDE_SA
|
||||
JVM_VARIANT_CORE
|
||||
JVM_VARIANT_ZEROSHARK
|
||||
JVM_VARIANT_ZERO
|
||||
@ -1926,7 +1928,7 @@ Optional Packages:
|
||||
--with-jvm-variants JVM variants (separated by commas) to build (server,
|
||||
client, minimal1, zero, zeroshark, core) [server]
|
||||
--with-debug-level set the debug level (release, fastdebug, slowdebug,
|
||||
optimized (HotSpot build only)) [release]
|
||||
optimized) [release]
|
||||
--with-devkit use this devkit for compilers, tools and resources
|
||||
--with-sys-root alias for --with-sysroot for backwards compatability
|
||||
--with-sysroot use this directory as sysroot
|
||||
@ -2008,7 +2010,7 @@ Optional Packages:
|
||||
--with-jtreg Regression Test Harness [probed]
|
||||
--with-native-debug-symbols
|
||||
set the native debug symbol configuration (none,
|
||||
internal, external, zipped) [zipped]
|
||||
internal, external, zipped) [varying]
|
||||
--with-stdc++lib=<static>,<dynamic>,<default>
|
||||
force linking of the C++ runtime on Linux to either
|
||||
static or dynamic, default is static with dynamic as
|
||||
@ -3424,7 +3426,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
|
||||
|
||||
# Include these first...
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -3461,11 +3463,11 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
|
||||
# "ARG_FOO".
|
||||
#
|
||||
# The generated function can be called like this:
|
||||
# MYFUNC(FOO: [foo-val], BAR:
|
||||
# [
|
||||
# MYFUNC(FOO: [foo-val],
|
||||
# BAR: [
|
||||
# $ECHO hello world
|
||||
# ])
|
||||
#
|
||||
# Note that the argument value must start on the same line as the argument name.
|
||||
#
|
||||
# Argument 1: Name of the function to define
|
||||
# Argument 2: List of legal named arguments, with a * prefix for required arguments
|
||||
@ -3774,7 +3776,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
|
||||
|
||||
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -3927,7 +3929,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
|
||||
|
||||
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -4059,7 +4061,7 @@ pkgadd_help() {
|
||||
|
||||
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -4117,7 +4119,7 @@ pkgadd_help() {
|
||||
|
||||
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -4625,7 +4627,7 @@ pkgadd_help() {
|
||||
|
||||
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -4676,6 +4678,28 @@ TOOLCHAIN_DESCRIPTION_microsoft="Microsoft Visual Studio"
|
||||
TOOLCHAIN_DESCRIPTION_solstudio="Oracle Solaris Studio"
|
||||
TOOLCHAIN_DESCRIPTION_xlc="IBM XL C/C++"
|
||||
|
||||
# Minimum supported versions, empty means unspecified
|
||||
TOOLCHAIN_MINIMUM_VERSION_clang="3.2"
|
||||
TOOLCHAIN_MINIMUM_VERSION_gcc="4.3"
|
||||
TOOLCHAIN_MINIMUM_VERSION_microsoft=""
|
||||
TOOLCHAIN_MINIMUM_VERSION_solstudio="5.12"
|
||||
TOOLCHAIN_MINIMUM_VERSION_xlc=""
|
||||
|
||||
# Prepare the system so that TOOLCHAIN_CHECK_COMPILER_VERSION can be called.
|
||||
# Must have CC_VERSION_NUMBER and CXX_VERSION_NUMBER.
|
||||
|
||||
|
||||
# Check if the configured compiler (C and C++) is of a specific version or
|
||||
# newer. TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS must have been called before.
|
||||
#
|
||||
# Arguments:
|
||||
# VERSION: The version string to check against the found version
|
||||
# IF_AT_LEAST: block to run if the compiler is at least this version (>=)
|
||||
# IF_OLDER_THAN: block to run if the compiler is older than this version (<)
|
||||
|
||||
|
||||
|
||||
|
||||
# Setup a number of variables describing how native output files are
|
||||
# named on this platform/toolchain.
|
||||
|
||||
@ -4836,7 +4860,7 @@ VS_SDK_PLATFORM_NAME_2013=
|
||||
#CUSTOM_AUTOCONF_INCLUDE
|
||||
|
||||
# Do not change or remove the following line, it is needed for consistency checks:
|
||||
DATE_WHEN_GENERATED=1454926898
|
||||
DATE_WHEN_GENERATED=1455271513
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
@ -4850,7 +4874,9 @@ DATE_WHEN_GENERATED=1454926898
|
||||
# If we are requested to print additional help, do that and then exit.
|
||||
# This must be the very first call.
|
||||
|
||||
if test "x$CONFIGURE_PRINT_TOOLCHAIN_LIST" != x; then
|
||||
if test "x$CONFIGURE_PRINT_ADDITIONAL_HELP" != x; then
|
||||
|
||||
# Print available toolchains
|
||||
$PRINTF "The following toolchains are available as arguments to --with-toolchain-type.\n"
|
||||
$PRINTF "Which are valid to use depends on the build platform.\n"
|
||||
for toolchain in $VALID_TOOLCHAINS_all; do
|
||||
@ -15826,21 +15852,6 @@ $as_echo "$with_jvm_variants" >&6; }
|
||||
|
||||
|
||||
|
||||
INCLUDE_SA=true
|
||||
if test "x$JVM_VARIANT_ZERO" = xtrue ; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
if test "x$JVM_VARIANT_ZEROSHARK" = xtrue ; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
if test "x$OPENJDK_TARGET_OS" = xaix ; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
if test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
|
||||
MACOSX_UNIVERSAL="true"
|
||||
fi
|
||||
@ -15880,7 +15891,7 @@ $as_echo "$DEBUG_LEVEL" >&6; }
|
||||
test "x$DEBUG_LEVEL" != xoptimized && \
|
||||
test "x$DEBUG_LEVEL" != xfastdebug && \
|
||||
test "x$DEBUG_LEVEL" != xslowdebug; then
|
||||
as_fn_error $? "Allowed debug levels are: release, fastdebug and slowdebug" "$LINENO" 5
|
||||
as_fn_error $? "Allowed debug levels are: release, fastdebug, slowdebug and optimized" "$LINENO" 5
|
||||
fi
|
||||
|
||||
|
||||
@ -23244,6 +23255,22 @@ fi
|
||||
fi
|
||||
|
||||
|
||||
# Should we build the serviceability agent (SA)?
|
||||
INCLUDE_SA=true
|
||||
if test "x$JVM_VARIANT_ZERO" = xtrue ; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
if test "x$JVM_VARIANT_ZEROSHARK" = xtrue ; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
if test "x$OPENJDK_TARGET_OS" = xaix ; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
if test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
|
||||
|
||||
# Compress jars
|
||||
COMPRESS_JARS=false
|
||||
|
||||
@ -29850,6 +29877,8 @@ $as_echo "$as_me: Valid toolchains: $VALID_TOOLCHAINS." >&6;}
|
||||
# Use indirect variable referencing
|
||||
toolchain_var_name=TOOLCHAIN_DESCRIPTION_$TOOLCHAIN_TYPE
|
||||
TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
|
||||
toolchain_var_name=TOOLCHAIN_MINIMUM_VERSION_$TOOLCHAIN_TYPE
|
||||
TOOLCHAIN_MINIMUM_VERSION=${!toolchain_var_name}
|
||||
toolchain_var_name=TOOLCHAIN_CC_BINARY_$TOOLCHAIN_TYPE
|
||||
TOOLCHAIN_CC_BINARY=${!toolchain_var_name}
|
||||
toolchain_var_name=TOOLCHAIN_CXX_BINARY_$TOOLCHAIN_TYPE
|
||||
@ -31483,8 +31512,14 @@ $as_echo "$as_me: or run \"bash.exe -l\" from a VS command prompt and then run c
|
||||
export INCLUDE="$VS_INCLUDE"
|
||||
export LIB="$VS_LIB"
|
||||
else
|
||||
# Currently we do not define this for other toolchains. This might change as the need arise.
|
||||
TOOLCHAIN_VERSION=
|
||||
if test "x$XCODE_VERSION_OUTPUT" != x; then
|
||||
# For Xcode, we set the Xcode version as TOOLCHAIN_VERSION
|
||||
TOOLCHAIN_VERSION=`$ECHO $XCODE_VERSION_OUTPUT | $CUT -f 2 -d ' '`
|
||||
TOOLCHAIN_DESCRIPTION="$TOOLCHAIN_DESCRIPTION from Xcode"
|
||||
else
|
||||
# Currently we do not define this for other toolchains. This might change as the need arise.
|
||||
TOOLCHAIN_VERSION=
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@ -32191,7 +32226,7 @@ $as_echo "$as_me: The result from running with --version was: \"$COMPILER_VERSIO
|
||||
# Collapse compiler output into a single line
|
||||
COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
|
||||
COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
|
||||
$SED -e 's/^.*clang version \([1-9][0-9.]*\).*$/\1/'`
|
||||
$SED -e 's/^.* version \([1-9][0-9.]*\).*$/\1/'`
|
||||
else
|
||||
as_fn_error $? "Unknown toolchain type $TOOLCHAIN_TYPE." "$LINENO" 5
|
||||
fi
|
||||
@ -33488,7 +33523,7 @@ $as_echo "$as_me: The result from running with --version was: \"$COMPILER_VERSIO
|
||||
# Collapse compiler output into a single line
|
||||
COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
|
||||
COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
|
||||
$SED -e 's/^.*clang version \([1-9][0-9.]*\).*$/\1/'`
|
||||
$SED -e 's/^.* version \([1-9][0-9.]*\).*$/\1/'`
|
||||
else
|
||||
as_fn_error $? "Unknown toolchain type $TOOLCHAIN_TYPE." "$LINENO" 5
|
||||
fi
|
||||
@ -33760,6 +33795,116 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex
|
||||
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||
|
||||
|
||||
# This is the compiler version number on the form X.Y[.Z]
|
||||
|
||||
|
||||
|
||||
|
||||
if test "x$CC_VERSION_NUMBER" != "x$CXX_VERSION_NUMBER"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C and C++ compiler has different version numbers, $CC_VERSION_NUMBER vs $CXX_VERSION_NUMBER." >&5
|
||||
$as_echo "$as_me: WARNING: C and C++ compiler has different version numbers, $CC_VERSION_NUMBER vs $CXX_VERSION_NUMBER." >&2;}
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: This typically indicates a broken setup, and is not supported" >&5
|
||||
$as_echo "$as_me: WARNING: This typically indicates a broken setup, and is not supported" >&2;}
|
||||
fi
|
||||
|
||||
# We only check CC_VERSION_NUMBER since we assume CXX_VERSION_NUMBER is equal.
|
||||
if [[ "$CC_VERSION_NUMBER" =~ (.*\.){3} ]] ; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has more than three parts (X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong." >&5
|
||||
$as_echo "$as_me: WARNING: C compiler version number has more than three parts (X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong." >&2;}
|
||||
fi
|
||||
|
||||
if [[ "$CC_VERSION_NUMBER" =~ [0-9]{6} ]] ; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has a part larger than 99999: $CC_VERSION_NUMBER. Comparisons might be wrong." >&5
|
||||
$as_echo "$as_me: WARNING: C compiler version number has a part larger than 99999: $CC_VERSION_NUMBER. Comparisons might be wrong." >&2;}
|
||||
fi
|
||||
|
||||
COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$CC_VERSION_NUMBER"`
|
||||
|
||||
|
||||
if test "x$TOOLCHAIN_MINIMUM_VERSION" != x; then
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Execute function body
|
||||
|
||||
# Need to assign to a variable since m4 is blocked from modifying parts in [].
|
||||
REFERENCE_VERSION=$TOOLCHAIN_MINIMUM_VERSION
|
||||
|
||||
if [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ; then
|
||||
as_fn_error $? "Internal errror: Cannot compare to $TOOLCHAIN_MINIMUM_VERSION, only three parts (X.Y.Z) is supported" "$LINENO" 5
|
||||
fi
|
||||
|
||||
if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then
|
||||
as_fn_error $? "Internal errror: Cannot compare to $TOOLCHAIN_MINIMUM_VERSION, only parts < 99999 is supported" "$LINENO" 5
|
||||
fi
|
||||
|
||||
# Version comparison method inspired by http://stackoverflow.com/a/24067243
|
||||
COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$REFERENCE_VERSION"`
|
||||
|
||||
if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then
|
||||
:
|
||||
|
||||
else
|
||||
:
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You are using $TOOLCHAIN_TYPE older than $TOOLCHAIN_MINIMUM_VERSION. This is not a supported configuration." >&5
|
||||
$as_echo "$as_me: WARNING: You are using $TOOLCHAIN_TYPE older than $TOOLCHAIN_MINIMUM_VERSION. This is not a supported configuration." >&2;}
|
||||
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
fi
|
||||
|
||||
#
|
||||
# Setup the preprocessor (CPP and CXXCPP)
|
||||
#
|
||||
@ -45332,7 +45477,7 @@ $as_echo "no" >&6; }
|
||||
# On Windows, we need to set RC flags.
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
RC_FLAGS="-nologo -l0x409"
|
||||
if test "x$VARIANT" = xOPT; then
|
||||
if test "x$DEBUG_LEVEL" = xrelease; then
|
||||
RC_FLAGS="$RC_FLAGS -DNDEBUG"
|
||||
fi
|
||||
|
||||
@ -45358,8 +45503,6 @@ $as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
# FIXME: Currently we must test this after toolchain but before flags. Fix!
|
||||
|
||||
# Now we can test some aspects on the target using configure macros.
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
|
||||
@ -46015,7 +46158,7 @@ $as_echo "$ac_cv_c_bigendian" >&6; }
|
||||
SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path/.'
|
||||
SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
|
||||
SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/$1'
|
||||
SET_SHARED_LIBRARY_MAPFILE=''
|
||||
SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,$1'
|
||||
else
|
||||
# Default works for linux, might work on other platforms as well.
|
||||
SHARED_LIBRARY_FLAGS='-shared'
|
||||
@ -46035,7 +46178,7 @@ $as_echo "$ac_cv_c_bigendian" >&6; }
|
||||
SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path/.'
|
||||
SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
|
||||
SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/$1'
|
||||
SET_SHARED_LIBRARY_MAPFILE=''
|
||||
SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,$1'
|
||||
else
|
||||
# Default works for linux, might work on other platforms as well.
|
||||
PICFLAG='-fPIC'
|
||||
@ -46071,7 +46214,7 @@ $as_echo "$ac_cv_c_bigendian" >&6; }
|
||||
SET_EXECUTABLE_ORIGIN=''
|
||||
SET_SHARED_LIBRARY_ORIGIN=''
|
||||
SET_SHARED_LIBRARY_NAME=''
|
||||
SET_SHARED_LIBRARY_MAPFILE=''
|
||||
SET_SHARED_LIBRARY_MAPFILE='-def:$1'
|
||||
fi
|
||||
|
||||
|
||||
@ -46151,6 +46294,10 @@ $as_echo "$ac_cv_c_bigendian" >&6; }
|
||||
# no adjustment
|
||||
;;
|
||||
slowdebug )
|
||||
# FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS it
|
||||
# get's added conditionally on whether we produce debug symbols or not.
|
||||
# This is most likely not really correct.
|
||||
|
||||
# Add runtime stack smashing and undefined behavior checks.
|
||||
# Not all versions of gcc support -fstack-protector
|
||||
STACK_PROTECTOR_CFLAG="-fstack-protector-all"
|
||||
@ -46311,7 +46458,7 @@ $as_echo "$supports" >&6; }
|
||||
CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
|
||||
CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
|
||||
CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
|
||||
C_O_FLAG_DEBUG=""
|
||||
CXX_O_FLAG_DEBUG=""
|
||||
CXX_O_FLAG_NONE=""
|
||||
fi
|
||||
else
|
||||
@ -46492,8 +46639,8 @@ $as_echo "$supports" >&6; }
|
||||
# avoid bundling msvcpNNN.dll. Doesn't work with newer versions of visual
|
||||
# studio.
|
||||
if test "x$TOOLCHAIN_VERSION" = "x2010"; then
|
||||
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
|
||||
-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
|
||||
STATIC_CPPLIB_FLAGS="-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
|
||||
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK $STATIC_CPPLIB_FLAGS"
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -46561,9 +46708,6 @@ $as_echo "$supports" >&6; }
|
||||
# Set some additional per-OS defines.
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
|
||||
elif test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||
# FIXME: PPC64 should not be here.
|
||||
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DPPC64"
|
||||
elif test "x$OPENJDK_TARGET_OS" = xbsd; then
|
||||
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
|
||||
fi
|
||||
@ -46621,36 +46765,34 @@ $as_echo "$supports" >&6; }
|
||||
# Setup LDFLAGS et al.
|
||||
#
|
||||
|
||||
# Now this is odd. The JDK native libraries have to link against libjvm.so
|
||||
# On 32-bit machines there is normally two distinct libjvm.so:s, client and server.
|
||||
# Which should we link to? Are we lucky enough that the binary api to the libjvm.so library
|
||||
# is identical for client and server? Yes. Which is picked at runtime (client or server)?
|
||||
# Neither, since the chosen libjvm.so has already been loaded by the launcher, all the following
|
||||
# libraries will link to whatever is in memory. Yuck.
|
||||
#
|
||||
# Thus we offer the compiler to find libjvm.so first in server then in client. It works. Ugh.
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK -nologo -opt:ref -incremental:no"
|
||||
LDFLAGS_MICROSOFT="-nologo -opt:ref"
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no"
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK -safeseh"
|
||||
LDFLAGS_SAFESH="-safeseh"
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_SAFESH"
|
||||
fi
|
||||
# TODO: make -debug optional "--disable-full-debug-symbols"
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK -debug"
|
||||
LDFLAGS_MICROSOFT_DEBUG="-debug"
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_MICROSOFT_DEBUG"
|
||||
elif test "x$TOOLCHAIN_TYPE" = xgcc; then
|
||||
# If this is a --hash-style=gnu system, use --hash-style=both, why?
|
||||
# We have previously set HAS_GNU_HASH if this is the case
|
||||
if test -n "$HAS_GNU_HASH"; then
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} -Wl,--hash-style=both"
|
||||
LDFLAGS_HASH_STYLE="-Wl,--hash-style=both"
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_HASH_STYLE"
|
||||
fi
|
||||
if test "x$OPENJDK_TARGET_OS" = xlinux; then
|
||||
# And since we now know that the linker is gnu, then add -z defs, to forbid
|
||||
# undefined symbols in object files.
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} -Wl,-z,defs"
|
||||
LDFLAGS_NO_UNDEF_SYM="-Wl,-z,defs"
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM"
|
||||
case $DEBUG_LEVEL in
|
||||
release )
|
||||
# tell linker to optimize libraries.
|
||||
# Should this be supplied to the OSS linker as well?
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} -Wl,-O1"
|
||||
LDFLAGS_DEBUGLEVEL_release="-Wl,-O1"
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_DEBUGLEVEL_release"
|
||||
;;
|
||||
slowdebug )
|
||||
if test "x$HAS_LINKER_NOW" = "xtrue"; then
|
||||
@ -46677,10 +46819,13 @@ $as_echo "$supports" >&6; }
|
||||
esac
|
||||
fi
|
||||
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK -Wl,-z,defs -xildoff -ztext"
|
||||
LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib"
|
||||
LDFLAGS_SOLSTUDIO="-Wl,-z,defs"
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_SOLSTUDIO -xildoff -ztext"
|
||||
LDFLAGS_CXX_SOLSTUDIO="-norunpath"
|
||||
LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LDFLAGS_CXX_SOLSTUDIO -xnolib"
|
||||
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} -brtl -bnolibpath -bexpall -bernotok"
|
||||
LDFLAGS_XLC="-brtl -bnolibpath -bexpall -bernotok"
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_XLC"
|
||||
fi
|
||||
|
||||
# Customize LDFLAGS for executables
|
||||
@ -47324,6 +47469,10 @@ $as_echo "$supports" >&6; }
|
||||
DISABLE_WARNING_PREFIX="-Wno-"
|
||||
CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
|
||||
;;
|
||||
xlc)
|
||||
DISABLE_WARNING_PREFIX="-qsuppress="
|
||||
CFLAGS_WARNINGS_ARE_ERRORS="-qhalt=w"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
@ -47353,7 +47502,11 @@ else
|
||||
# AIX doesn't support 'zipped' so use 'internal' as default
|
||||
with_native_debug_symbols="internal"
|
||||
else
|
||||
with_native_debug_symbols="zipped"
|
||||
if test "x$STATIC_BUILD" = xtrue; then
|
||||
with_native_debug_symbols="none"
|
||||
else
|
||||
with_native_debug_symbols="zipped"
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
@ -55353,6 +55506,349 @@ $as_echo "$FREETYPE_LIB_PATH" >&6; }
|
||||
|
||||
fi
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
if test "x$FOUND_FREETYPE" != xyes; then
|
||||
# Due to changes in OSX 10.11 XQuartz now installs to /opt/X11
|
||||
FREETYPE_BASE_DIR="$SYSROOT/opt/X11"
|
||||
|
||||
POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
|
||||
POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib"
|
||||
METHOD="well-known location"
|
||||
|
||||
# Let's start with an optimistic view of the world :-)
|
||||
FOUND_FREETYPE=yes
|
||||
|
||||
# First look for the canonical freetype main include file ft2build.h.
|
||||
if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
|
||||
# Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
|
||||
POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
|
||||
if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
|
||||
# Fail.
|
||||
FOUND_FREETYPE=no
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$FOUND_FREETYPE" = xyes; then
|
||||
# Include file found, let's continue the sanity check.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
|
||||
$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
|
||||
|
||||
# Reset to default value
|
||||
FREETYPE_BASE_NAME=freetype
|
||||
FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
|
||||
if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx \
|
||||
&& test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
|
||||
# On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
|
||||
# for the .6 version explicitly.
|
||||
FREETYPE_BASE_NAME=freetype.6
|
||||
FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
|
||||
$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
|
||||
$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
|
||||
FOUND_FREETYPE=no
|
||||
fi
|
||||
else
|
||||
if test "x$OPENJDK_TARGET_OS" = xwindows; then
|
||||
# On Windows, we will need both .lib and .dll file.
|
||||
if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
|
||||
$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
|
||||
FOUND_FREETYPE=no
|
||||
fi
|
||||
elif test "x$OPENJDK_TARGET_OS" = xsolaris \
|
||||
&& test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
|
||||
# Found lib in isa dir, use that instead.
|
||||
POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
|
||||
$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$FOUND_FREETYPE" = xyes; then
|
||||
|
||||
# Only process if variable expands to non-empty
|
||||
|
||||
if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
|
||||
|
||||
# Input might be given as Windows format, start by converting to
|
||||
# unix format.
|
||||
path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
|
||||
new_path=`$CYGPATH -u "$path"`
|
||||
|
||||
# Cygwin tries to hide some aspects of the Windows file system, such that binaries are
|
||||
# named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
|
||||
# the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
|
||||
# "foo.exe" is OK but "foo" is an error.
|
||||
#
|
||||
# This test is therefore slightly more accurate than "test -f" to check for file precense.
|
||||
# It is also a way to make sure we got the proper file name for the real test later on.
|
||||
test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
|
||||
if test "x$test_shortpath" = x; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
|
||||
$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
|
||||
as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
|
||||
fi
|
||||
|
||||
# Call helper function which possibly converts this using DOS-style short mode.
|
||||
# If so, the updated path is stored in $new_path.
|
||||
|
||||
input_path="$new_path"
|
||||
# Check if we need to convert this using DOS-style short mode. If the path
|
||||
# contains just simple characters, use it. Otherwise (spaces, weird characters),
|
||||
# take no chances and rewrite it.
|
||||
# Note: m4 eats our [], so we need to use [ and ] instead.
|
||||
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
|
||||
if test "x$has_forbidden_chars" != x; then
|
||||
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
|
||||
shortmode_path=`$CYGPATH -s -m -a "$input_path"`
|
||||
path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
|
||||
if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
|
||||
# Going to short mode and back again did indeed matter. Since short mode is
|
||||
# case insensitive, let's make it lowercase to improve readability.
|
||||
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
|
||||
# Now convert it back to Unix-style (cygpath)
|
||||
input_path=`$CYGPATH -u "$shortmode_path"`
|
||||
new_path="$input_path"
|
||||
fi
|
||||
fi
|
||||
|
||||
test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
|
||||
if test "x$test_cygdrive_prefix" = x; then
|
||||
# As a simple fix, exclude /usr/bin since it's not a real path.
|
||||
if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
|
||||
# The path is in a Cygwin special directory (e.g. /home). We need this converted to
|
||||
# a path prefixed by /cygdrive for fixpath to work.
|
||||
new_path="$CYGWIN_ROOT_PATH$input_path"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if test "x$path" != "x$new_path"; then
|
||||
POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
|
||||
$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
|
||||
fi
|
||||
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
|
||||
path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
|
||||
has_colon=`$ECHO $path | $GREP ^.:`
|
||||
new_path="$path"
|
||||
if test "x$has_colon" = x; then
|
||||
# Not in mixed or Windows style, start by that.
|
||||
new_path=`cmd //c echo $path`
|
||||
fi
|
||||
|
||||
|
||||
input_path="$new_path"
|
||||
# Check if we need to convert this using DOS-style short mode. If the path
|
||||
# contains just simple characters, use it. Otherwise (spaces, weird characters),
|
||||
# take no chances and rewrite it.
|
||||
# Note: m4 eats our [], so we need to use [ and ] instead.
|
||||
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
|
||||
if test "x$has_forbidden_chars" != x; then
|
||||
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
|
||||
new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
|
||||
fi
|
||||
|
||||
|
||||
windows_path="$new_path"
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
|
||||
unix_path=`$CYGPATH -u "$windows_path"`
|
||||
new_path="$unix_path"
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
|
||||
new_path="$unix_path"
|
||||
fi
|
||||
|
||||
if test "x$path" != "x$new_path"; then
|
||||
POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
|
||||
$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
|
||||
fi
|
||||
|
||||
# Save the first 10 bytes of this path to the storage, so fixpath can work.
|
||||
all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
|
||||
|
||||
else
|
||||
# We're on a unix platform. Hooray! :)
|
||||
path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
|
||||
has_space=`$ECHO "$path" | $GREP " "`
|
||||
if test "x$has_space" != x; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
|
||||
$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
|
||||
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
|
||||
fi
|
||||
|
||||
# Use eval to expand a potential ~
|
||||
eval path="$path"
|
||||
if test ! -f "$path" && test ! -d "$path"; then
|
||||
as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
|
||||
fi
|
||||
|
||||
if test -d "$path"; then
|
||||
POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
|
||||
else
|
||||
dir="`$DIRNAME "$path"`"
|
||||
base="`$BASENAME "$path"`"
|
||||
POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# Only process if variable expands to non-empty
|
||||
|
||||
if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
|
||||
|
||||
# Input might be given as Windows format, start by converting to
|
||||
# unix format.
|
||||
path="$POTENTIAL_FREETYPE_LIB_PATH"
|
||||
new_path=`$CYGPATH -u "$path"`
|
||||
|
||||
# Cygwin tries to hide some aspects of the Windows file system, such that binaries are
|
||||
# named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
|
||||
# the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
|
||||
# "foo.exe" is OK but "foo" is an error.
|
||||
#
|
||||
# This test is therefore slightly more accurate than "test -f" to check for file precense.
|
||||
# It is also a way to make sure we got the proper file name for the real test later on.
|
||||
test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
|
||||
if test "x$test_shortpath" = x; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
|
||||
$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
|
||||
as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
|
||||
fi
|
||||
|
||||
# Call helper function which possibly converts this using DOS-style short mode.
|
||||
# If so, the updated path is stored in $new_path.
|
||||
|
||||
input_path="$new_path"
|
||||
# Check if we need to convert this using DOS-style short mode. If the path
|
||||
# contains just simple characters, use it. Otherwise (spaces, weird characters),
|
||||
# take no chances and rewrite it.
|
||||
# Note: m4 eats our [], so we need to use [ and ] instead.
|
||||
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
|
||||
if test "x$has_forbidden_chars" != x; then
|
||||
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
|
||||
shortmode_path=`$CYGPATH -s -m -a "$input_path"`
|
||||
path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
|
||||
if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
|
||||
# Going to short mode and back again did indeed matter. Since short mode is
|
||||
# case insensitive, let's make it lowercase to improve readability.
|
||||
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
|
||||
# Now convert it back to Unix-style (cygpath)
|
||||
input_path=`$CYGPATH -u "$shortmode_path"`
|
||||
new_path="$input_path"
|
||||
fi
|
||||
fi
|
||||
|
||||
test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
|
||||
if test "x$test_cygdrive_prefix" = x; then
|
||||
# As a simple fix, exclude /usr/bin since it's not a real path.
|
||||
if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
|
||||
# The path is in a Cygwin special directory (e.g. /home). We need this converted to
|
||||
# a path prefixed by /cygdrive for fixpath to work.
|
||||
new_path="$CYGWIN_ROOT_PATH$input_path"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if test "x$path" != "x$new_path"; then
|
||||
POTENTIAL_FREETYPE_LIB_PATH="$new_path"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
|
||||
$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
|
||||
fi
|
||||
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
|
||||
path="$POTENTIAL_FREETYPE_LIB_PATH"
|
||||
has_colon=`$ECHO $path | $GREP ^.:`
|
||||
new_path="$path"
|
||||
if test "x$has_colon" = x; then
|
||||
# Not in mixed or Windows style, start by that.
|
||||
new_path=`cmd //c echo $path`
|
||||
fi
|
||||
|
||||
|
||||
input_path="$new_path"
|
||||
# Check if we need to convert this using DOS-style short mode. If the path
|
||||
# contains just simple characters, use it. Otherwise (spaces, weird characters),
|
||||
# take no chances and rewrite it.
|
||||
# Note: m4 eats our [], so we need to use [ and ] instead.
|
||||
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
|
||||
if test "x$has_forbidden_chars" != x; then
|
||||
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
|
||||
new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
|
||||
fi
|
||||
|
||||
|
||||
windows_path="$new_path"
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
|
||||
unix_path=`$CYGPATH -u "$windows_path"`
|
||||
new_path="$unix_path"
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
|
||||
new_path="$unix_path"
|
||||
fi
|
||||
|
||||
if test "x$path" != "x$new_path"; then
|
||||
POTENTIAL_FREETYPE_LIB_PATH="$new_path"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
|
||||
$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
|
||||
fi
|
||||
|
||||
# Save the first 10 bytes of this path to the storage, so fixpath can work.
|
||||
all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
|
||||
|
||||
else
|
||||
# We're on a unix platform. Hooray! :)
|
||||
path="$POTENTIAL_FREETYPE_LIB_PATH"
|
||||
has_space=`$ECHO "$path" | $GREP " "`
|
||||
if test "x$has_space" != x; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
|
||||
$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
|
||||
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
|
||||
fi
|
||||
|
||||
# Use eval to expand a potential ~
|
||||
eval path="$path"
|
||||
if test ! -f "$path" && test ! -d "$path"; then
|
||||
as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
|
||||
fi
|
||||
|
||||
if test -d "$path"; then
|
||||
POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
|
||||
else
|
||||
dir="`$DIRNAME "$path"`"
|
||||
base="`$BASENAME "$path"`"
|
||||
POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
|
||||
$as_echo_n "checking for freetype includes... " >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
|
||||
$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
|
||||
FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
|
||||
$as_echo_n "checking for freetype libraries... " >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
|
||||
$as_echo "$FREETYPE_LIB_PATH" >&6; }
|
||||
fi
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$FOUND_FREETYPE" != xyes; then
|
||||
FREETYPE_BASE_DIR="$SYSROOT/usr/sfw"
|
||||
|
||||
@ -58396,7 +58892,7 @@ $as_echo_n "checking for memory size... " >&6; }
|
||||
FOUND_MEM=yes
|
||||
elif test -x /usr/sbin/prtconf; then
|
||||
# Looks like a Solaris or AIX system
|
||||
MEMORY_SIZE=`/usr/sbin/prtconf | grep "^Memory [Ss]ize" | awk '{ print $3 }'`
|
||||
MEMORY_SIZE=`/usr/sbin/prtconf 2> /dev/null | grep "^Memory [Ss]ize" | awk '{ print $3 }'`
|
||||
FOUND_MEM=yes
|
||||
elif test -x /usr/sbin/sysctl; then
|
||||
# Looks like a MacOSX system
|
||||
@ -59224,9 +59720,9 @@ $as_echo "$tool_specified" >&6; }
|
||||
fi
|
||||
if test "x${TOOLCHAIN_TYPE}" = "xgcc"; then
|
||||
|
||||
cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
|
||||
( cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
|
||||
&& ${ICECC_CREATE_ENV} ${icecc_gcc_arg} ${CC} ${CXX} > \
|
||||
${icecc_create_env_log} 2>&1
|
||||
${icecc_create_env_log} 2>&1 )
|
||||
if test "$?" != "0"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: icecc-create-env output:" >&5
|
||||
$as_echo "$as_me: icecc-create-env output:" >&6;}
|
||||
@ -59443,8 +59939,8 @@ $as_echo "$tool_specified" >&6; }
|
||||
|
||||
|
||||
|
||||
cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
|
||||
&& ${ICECC_CREATE_ENV} --clang ${CC} ${ICECC_WRAPPER} > ${icecc_create_env_log} 2>&1
|
||||
( cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
|
||||
&& ${ICECC_CREATE_ENV} --clang ${CC} ${ICECC_WRAPPER} > ${icecc_create_env_log} 2>&1 )
|
||||
if test "$?" != "0"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: icecc-create-env output:" >&5
|
||||
$as_echo "$as_me: icecc-create-env output:" >&6;}
|
||||
@ -59475,9 +59971,9 @@ $as_echo "${ICECC_ENV_BUNDLE}" >&6; }
|
||||
icecc_create_env_log_build="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/icecc_create_env_build.log"
|
||||
if test "x${BUILD_CC##*/}" = "xgcc" || test "x${BUILD_CC##*/}" = "xcc"; then
|
||||
|
||||
cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
|
||||
( cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
|
||||
&& ${ICECC_CREATE_ENV} ${icecc_gcc_arg} ${BUILD_CC} ${BUILD_CXX} > \
|
||||
${icecc_create_env_log_build} 2>&1
|
||||
${icecc_create_env_log_build} 2>&1 )
|
||||
if test "$?" != "0"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: icecc-create-env output:" >&5
|
||||
$as_echo "$as_me: icecc-create-env output:" >&6;}
|
||||
@ -59488,8 +59984,8 @@ $as_echo "$as_me: icecc-create-env output:" >&6;}
|
||||
|
||||
elif test "x${BUILD_CC##*/}" = "xclang"; then
|
||||
|
||||
cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
|
||||
&& ${ICECC_CREATE_ENV} --clang ${BUILD_CC} ${ICECC_WRAPPER} > ${icecc_create_env_log_build} 2>&1
|
||||
( cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
|
||||
&& ${ICECC_CREATE_ENV} --clang ${BUILD_CC} ${ICECC_WRAPPER} > ${icecc_create_env_log_build} 2>&1 )
|
||||
if test "$?" != "0"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: icecc-create-env output:" >&5
|
||||
$as_echo "$as_me: icecc-create-env output:" >&6;}
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -159,7 +159,9 @@ pkgadd_help() {
|
||||
# called at the very beginning in configure.ac.
|
||||
AC_DEFUN_ONCE([HELP_PRINT_ADDITIONAL_HELP_AND_EXIT],
|
||||
[
|
||||
if test "x$CONFIGURE_PRINT_TOOLCHAIN_LIST" != x; then
|
||||
if test "x$CONFIGURE_PRINT_ADDITIONAL_HELP" != x; then
|
||||
|
||||
# Print available toolchains
|
||||
$PRINTF "The following toolchains are available as arguments to --with-toolchain-type.\n"
|
||||
$PRINTF "Which are valid to use depends on the build platform.\n"
|
||||
for toolchain in $VALID_TOOLCHAINS_all; do
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -114,21 +114,6 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_VARIANTS],
|
||||
AC_SUBST(JVM_VARIANT_ZEROSHARK)
|
||||
AC_SUBST(JVM_VARIANT_CORE)
|
||||
|
||||
INCLUDE_SA=true
|
||||
if test "x$JVM_VARIANT_ZERO" = xtrue ; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
if test "x$JVM_VARIANT_ZEROSHARK" = xtrue ; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
if test "x$OPENJDK_TARGET_OS" = xaix ; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
if test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
AC_SUBST(INCLUDE_SA)
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
|
||||
MACOSX_UNIVERSAL="true"
|
||||
fi
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -66,7 +66,7 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_LEVEL],
|
||||
], [ENABLE_DEBUG="no"])
|
||||
|
||||
AC_ARG_WITH([debug-level], [AS_HELP_STRING([--with-debug-level],
|
||||
[set the debug level (release, fastdebug, slowdebug, optimized (HotSpot build only)) @<:@release@:>@])],
|
||||
[set the debug level (release, fastdebug, slowdebug, optimized) @<:@release@:>@])],
|
||||
[
|
||||
DEBUG_LEVEL="${withval}"
|
||||
if test "x$ENABLE_DEBUG" = xyes; then
|
||||
@ -79,7 +79,7 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_LEVEL],
|
||||
test "x$DEBUG_LEVEL" != xoptimized && \
|
||||
test "x$DEBUG_LEVEL" != xfastdebug && \
|
||||
test "x$DEBUG_LEVEL" != xslowdebug; then
|
||||
AC_MSG_ERROR([Allowed debug levels are: release, fastdebug and slowdebug])
|
||||
AC_MSG_ERROR([Allowed debug levels are: release, fastdebug, slowdebug and optimized])
|
||||
fi
|
||||
])
|
||||
|
||||
@ -176,6 +176,22 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_OPTIONS],
|
||||
fi
|
||||
AC_SUBST(UNLIMITED_CRYPTO)
|
||||
|
||||
# Should we build the serviceability agent (SA)?
|
||||
INCLUDE_SA=true
|
||||
if test "x$JVM_VARIANT_ZERO" = xtrue ; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
if test "x$JVM_VARIANT_ZEROSHARK" = xtrue ; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
if test "x$OPENJDK_TARGET_OS" = xaix ; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
if test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
AC_SUBST(INCLUDE_SA)
|
||||
|
||||
# Compress jars
|
||||
COMPRESS_JARS=false
|
||||
|
||||
@ -222,7 +238,7 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
|
||||
AC_MSG_CHECKING([what type of native debug symbols to use])
|
||||
AC_ARG_WITH([native-debug-symbols],
|
||||
[AS_HELP_STRING([--with-native-debug-symbols],
|
||||
[set the native debug symbol configuration (none, internal, external, zipped) @<:@zipped@:>@])],
|
||||
[set the native debug symbol configuration (none, internal, external, zipped) @<:@varying@:>@])],
|
||||
[
|
||||
if test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||
if test "x$withval" = xexternal || test "x$withval" = xzipped; then
|
||||
@ -235,7 +251,11 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
|
||||
# AIX doesn't support 'zipped' so use 'internal' as default
|
||||
with_native_debug_symbols="internal"
|
||||
else
|
||||
with_native_debug_symbols="zipped"
|
||||
if test "x$STATIC_BUILD" = xtrue; then
|
||||
with_native_debug_symbols="none"
|
||||
else
|
||||
with_native_debug_symbols="zipped"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
NATIVE_DEBUG_SYMBOLS=$with_native_debug_symbols
|
||||
@ -258,7 +278,7 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
|
||||
# Hotspot legacy support, not relevant with COPY_DEBUG_SYMBOLS=true
|
||||
DEBUG_BINARIES=false
|
||||
STRIP_POLICY=min_strip
|
||||
|
||||
|
||||
elif test "x$NATIVE_DEBUG_SYMBOLS" = xnone; then
|
||||
COMPILE_WITH_DEBUG_SYMBOLS=false
|
||||
COPY_DEBUG_SYMBOLS=false
|
||||
@ -275,7 +295,7 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
|
||||
DEBUG_BINARIES=true
|
||||
STRIP_POLICY=no_strip
|
||||
STRIP=""
|
||||
|
||||
|
||||
elif test "x$NATIVE_DEBUG_SYMBOLS" = xexternal; then
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
|
||||
@ -356,7 +376,7 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_CODE_COVERAGE],
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Static build support. When enabled will generate static
|
||||
# Static build support. When enabled will generate static
|
||||
# libraries instead of shared libraries for all JDK libs.
|
||||
#
|
||||
AC_DEFUN_ONCE([JDKOPT_SETUP_STATIC_BUILD],
|
||||
|
@ -349,6 +349,14 @@ AC_DEFUN_ONCE([LIB_SETUP_FREETYPE],
|
||||
LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location])
|
||||
fi
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
if test "x$FOUND_FREETYPE" != xyes; then
|
||||
# Due to changes in OSX 10.11 XQuartz now installs to /opt/X11
|
||||
FREETYPE_BASE_DIR="$SYSROOT/opt/X11"
|
||||
LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location])
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$FOUND_FREETYPE" != xyes; then
|
||||
FREETYPE_BASE_DIR="$SYSROOT/usr/sfw"
|
||||
LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location])
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -36,10 +36,12 @@ CONFIGURE_COMMAND_LINE:=@CONFIGURE_COMMAND_LINE@
|
||||
# A self-referential reference to this file.
|
||||
SPEC:=@SPEC@
|
||||
|
||||
# SPACE is defined in MakeBase.gmk, but it is also used in := rules here for some
|
||||
# toolchains, and is needed if MakeBase.gmk is not included before this file.
|
||||
# SPACE and COMMA are defined in MakeBase.gmk, but they are also used in
|
||||
# some definitions here, and are needed if MakeBase.gmk is not included before
|
||||
# this file.
|
||||
X:=
|
||||
SPACE:=$(X) $(X)
|
||||
COMMA:=,
|
||||
|
||||
# What make to use for main processing, after bootstrapping top-level Makefile.
|
||||
MAKE := @MAKE@
|
||||
@ -350,10 +352,8 @@ CFLAGS_JDKEXE:=@CFLAGS_JDKEXE@
|
||||
CXXFLAGS_JDKEXE:=@CXXFLAGS_JDKEXE@
|
||||
|
||||
CXX:=@FIXPATH@ @CCACHE@ @ICECC@ @CXX@
|
||||
#CXXFLAGS:=@CXXFLAGS@
|
||||
|
||||
CPP:=@FIXPATH@ @CPP@
|
||||
#CPPFLAGS:=@CPPFLAGS@
|
||||
|
||||
# The linker can be gcc or ld on unix systems, or link.exe on windows systems.
|
||||
LD:=@FIXPATH@ @LD@
|
||||
@ -501,7 +501,7 @@ JAVAC_FLAGS?=@JAVAC_FLAGS@
|
||||
INTERIM_LANGTOOLS_JAR = $(BUILDTOOLS_OUTPUTDIR)/interim_langtools.jar
|
||||
INTERIM_LANGTOOLS_ARGS = "-Xbootclasspath/p:$(INTERIM_LANGTOOLS_JAR)" -cp $(INTERIM_LANGTOOLS_JAR)
|
||||
NEW_JAVAC = $(INTERIM_LANGTOOLS_ARGS) com.sun.tools.javac.Main
|
||||
NEW_JAVADOC = $(INTERIM_LANGTOOLS_ARGS) jdk.javadoc.internal.tool.Main
|
||||
NEW_JAVADOC = $(INTERIM_LANGTOOLS_ARGS) jdk.javadoc.internal.tool.Main
|
||||
|
||||
# Base flags for RC
|
||||
# Guarding this against resetting value. Legacy make files include spec multiple
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -50,6 +50,67 @@ TOOLCHAIN_DESCRIPTION_microsoft="Microsoft Visual Studio"
|
||||
TOOLCHAIN_DESCRIPTION_solstudio="Oracle Solaris Studio"
|
||||
TOOLCHAIN_DESCRIPTION_xlc="IBM XL C/C++"
|
||||
|
||||
# Minimum supported versions, empty means unspecified
|
||||
TOOLCHAIN_MINIMUM_VERSION_clang="3.2"
|
||||
TOOLCHAIN_MINIMUM_VERSION_gcc="4.3"
|
||||
TOOLCHAIN_MINIMUM_VERSION_microsoft=""
|
||||
TOOLCHAIN_MINIMUM_VERSION_solstudio="5.12"
|
||||
TOOLCHAIN_MINIMUM_VERSION_xlc=""
|
||||
|
||||
# Prepare the system so that TOOLCHAIN_CHECK_COMPILER_VERSION can be called.
|
||||
# Must have CC_VERSION_NUMBER and CXX_VERSION_NUMBER.
|
||||
AC_DEFUN([TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS],
|
||||
[
|
||||
if test "x$CC_VERSION_NUMBER" != "x$CXX_VERSION_NUMBER"; then
|
||||
AC_MSG_WARN([C and C++ compiler has different version numbers, $CC_VERSION_NUMBER vs $CXX_VERSION_NUMBER.])
|
||||
AC_MSG_WARN([This typically indicates a broken setup, and is not supported])
|
||||
fi
|
||||
|
||||
# We only check CC_VERSION_NUMBER since we assume CXX_VERSION_NUMBER is equal.
|
||||
if [ [[ "$CC_VERSION_NUMBER" =~ (.*\.){3} ]] ]; then
|
||||
AC_MSG_WARN([C compiler version number has more than three parts (X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong.])
|
||||
fi
|
||||
|
||||
if [ [[ "$CC_VERSION_NUMBER" =~ [0-9]{6} ]] ]; then
|
||||
AC_MSG_WARN([C compiler version number has a part larger than 99999: $CC_VERSION_NUMBER. Comparisons might be wrong.])
|
||||
fi
|
||||
|
||||
COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", [$]1, [$]2, [$]3) }' <<< "$CC_VERSION_NUMBER"`
|
||||
])
|
||||
|
||||
# Check if the configured compiler (C and C++) is of a specific version or
|
||||
# newer. TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS must have been called before.
|
||||
#
|
||||
# Arguments:
|
||||
# VERSION: The version string to check against the found version
|
||||
# IF_AT_LEAST: block to run if the compiler is at least this version (>=)
|
||||
# IF_OLDER_THAN: block to run if the compiler is older than this version (<)
|
||||
BASIC_DEFUN_NAMED([TOOLCHAIN_CHECK_COMPILER_VERSION],
|
||||
[*VERSION IF_AT_LEAST IF_OLDER_THAN], [$@],
|
||||
[
|
||||
# Need to assign to a variable since m4 is blocked from modifying parts in [].
|
||||
REFERENCE_VERSION=ARG_VERSION
|
||||
|
||||
if [ [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ]; then
|
||||
AC_MSG_ERROR([Internal errror: Cannot compare to ARG_VERSION, only three parts (X.Y.Z) is supported])
|
||||
fi
|
||||
|
||||
if [ [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ]; then
|
||||
AC_MSG_ERROR([Internal errror: Cannot compare to ARG_VERSION, only parts < 99999 is supported])
|
||||
fi
|
||||
|
||||
# Version comparison method inspired by http://stackoverflow.com/a/24067243
|
||||
COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", [$]1, [$]2, [$]3) }' <<< "$REFERENCE_VERSION"`
|
||||
|
||||
if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then
|
||||
:
|
||||
ARG_IF_AT_LEAST
|
||||
else
|
||||
:
|
||||
ARG_IF_OLDER_THAN
|
||||
fi
|
||||
])
|
||||
|
||||
# Setup a number of variables describing how native output files are
|
||||
# named on this platform/toolchain.
|
||||
AC_DEFUN([TOOLCHAIN_SETUP_FILENAME_PATTERNS],
|
||||
@ -175,6 +236,8 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETERMINE_TOOLCHAIN_TYPE],
|
||||
# Use indirect variable referencing
|
||||
toolchain_var_name=TOOLCHAIN_DESCRIPTION_$TOOLCHAIN_TYPE
|
||||
TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
|
||||
toolchain_var_name=TOOLCHAIN_MINIMUM_VERSION_$TOOLCHAIN_TYPE
|
||||
TOOLCHAIN_MINIMUM_VERSION=${!toolchain_var_name}
|
||||
toolchain_var_name=TOOLCHAIN_CC_BINARY_$TOOLCHAIN_TYPE
|
||||
TOOLCHAIN_CC_BINARY=${!toolchain_var_name}
|
||||
toolchain_var_name=TOOLCHAIN_CXX_BINARY_$TOOLCHAIN_TYPE
|
||||
@ -217,8 +280,14 @@ AC_DEFUN_ONCE([TOOLCHAIN_PRE_DETECTION],
|
||||
export INCLUDE="$VS_INCLUDE"
|
||||
export LIB="$VS_LIB"
|
||||
else
|
||||
# Currently we do not define this for other toolchains. This might change as the need arise.
|
||||
TOOLCHAIN_VERSION=
|
||||
if test "x$XCODE_VERSION_OUTPUT" != x; then
|
||||
# For Xcode, we set the Xcode version as TOOLCHAIN_VERSION
|
||||
TOOLCHAIN_VERSION=`$ECHO $XCODE_VERSION_OUTPUT | $CUT -f 2 -d ' '`
|
||||
TOOLCHAIN_DESCRIPTION="$TOOLCHAIN_DESCRIPTION from Xcode"
|
||||
else
|
||||
# Currently we do not define this for other toolchains. This might change as the need arise.
|
||||
TOOLCHAIN_VERSION=
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(TOOLCHAIN_VERSION)
|
||||
|
||||
@ -257,7 +326,7 @@ AC_DEFUN_ONCE([TOOLCHAIN_POST_DETECTION],
|
||||
#
|
||||
# $1 = compiler to test (CC or CXX)
|
||||
# $2 = human readable name of compiler (C or C++)
|
||||
AC_DEFUN([TOOLCHAIN_CHECK_COMPILER_VERSION],
|
||||
AC_DEFUN([TOOLCHAIN_EXTRACT_COMPILER_VERSION],
|
||||
[
|
||||
COMPILER=[$]$1
|
||||
COMPILER_NAME=$2
|
||||
@ -354,7 +423,7 @@ AC_DEFUN([TOOLCHAIN_CHECK_COMPILER_VERSION],
|
||||
# Collapse compiler output into a single line
|
||||
COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
|
||||
COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
|
||||
$SED -e 's/^.*clang version \(@<:@1-9@:>@@<:@0-9.@:>@*\).*$/\1/'`
|
||||
$SED -e 's/^.* version \(@<:@1-9@:>@@<:@0-9.@:>@*\).*$/\1/'`
|
||||
else
|
||||
AC_MSG_ERROR([Unknown toolchain type $TOOLCHAIN_TYPE.])
|
||||
fi
|
||||
@ -451,7 +520,7 @@ AC_DEFUN([TOOLCHAIN_FIND_COMPILER],
|
||||
fi
|
||||
fi
|
||||
|
||||
TOOLCHAIN_CHECK_COMPILER_VERSION([$1], [$COMPILER_NAME])
|
||||
TOOLCHAIN_EXTRACT_COMPILER_VERSION([$1], [$COMPILER_NAME])
|
||||
])
|
||||
|
||||
# Detect the core components of the toolchain, i.e. the compilers (CC and CXX),
|
||||
@ -471,6 +540,20 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETECT_TOOLCHAIN_CORE],
|
||||
# Now that we have resolved CXX ourself, let autoconf have its go at it
|
||||
AC_PROG_CXX([$CXX])
|
||||
|
||||
# This is the compiler version number on the form X.Y[.Z]
|
||||
AC_SUBST(CC_VERSION_NUMBER)
|
||||
AC_SUBST(CXX_VERSION_NUMBER)
|
||||
|
||||
TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS
|
||||
|
||||
if test "x$TOOLCHAIN_MINIMUM_VERSION" != x; then
|
||||
TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: $TOOLCHAIN_MINIMUM_VERSION,
|
||||
IF_OLDER_THAN: [
|
||||
AC_MSG_WARN([You are using $TOOLCHAIN_TYPE older than $TOOLCHAIN_MINIMUM_VERSION. This is not a supported configuration.])
|
||||
]
|
||||
)
|
||||
fi
|
||||
|
||||
#
|
||||
# Setup the preprocessor (CPP and CXXCPP)
|
||||
#
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -102,32 +102,21 @@ diff_text() {
|
||||
if test "x$SUFFIX" = "xclass"; then
|
||||
# To improve performance when large diffs are found, do a rough filtering of classes
|
||||
# elibeble for these exceptions
|
||||
if $GREP -R -e '[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}' \
|
||||
-e '[0-9]\{2\}/[0-9]\{2\}/[0-9]\{4\}' \
|
||||
if $GREP -R -e '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}' \
|
||||
-e 'lambda\$[a-zA-Z0-9]*\$[0-9]' ${THIS_FILE} > /dev/null; then
|
||||
$JAVAP -c -constants -l -p "${OTHER_FILE}" > ${OTHER_FILE}.javap
|
||||
$JAVAP -c -constants -l -p "${THIS_FILE}" > ${THIS_FILE}.javap
|
||||
TMP=$($DIFF ${OTHER_FILE}.javap ${THIS_FILE}.javap | \
|
||||
$GREP '^[<>]' | \
|
||||
$SED -e '/[<>].*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d' \
|
||||
-e '/[0-9]\{2\}\/[0-9]\{2\}\/[0-9]\{4\}/d' \
|
||||
$SED -e '/[<>].*[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}.*/d' \
|
||||
-e '/[<>].*lambda\$[a-zA-Z0-9]*\$[0-9]*/d')
|
||||
fi
|
||||
fi
|
||||
if test "x$SUFFIX" = "xproperties"; then
|
||||
# Run through nawk to add possibly missing newline at end of file.
|
||||
$CAT $OTHER_FILE | $NAWK '{ print }' | LC_ALL=C $SORT > $OTHER_FILE.cleaned
|
||||
# Disable this exception since we aren't changing the properties cleaning method yet.
|
||||
# $CAT $OTHER_FILE | $SED -e 's/\([^\\]\):/\1\\:/g' -e 's/\([^\\]\)=/\1\\=/g' -e 's/#.*/#/g' \
|
||||
# | $SED -f "$SRC_ROOT/common/makefiles/support/unicode2x.sed" \
|
||||
# | $SED -e '/^#/d' -e '/^$/d' \
|
||||
# -e :a -e '/\\$/N; s/\\\n//; ta' \
|
||||
# -e 's/^[ \t]*//;s/[ \t]*$//' \
|
||||
# -e 's/\\=/=/' | LC_ALL=C $SORT > $OTHER_FILE.cleaned
|
||||
# Filter out date string differences.
|
||||
TMP=$(LC_ALL=C $DIFF $OTHER_FILE.cleaned $THIS_FILE | \
|
||||
TMP=$(LC_ALL=C $DIFF $OTHER_FILE $THIS_FILE | \
|
||||
$GREP '^[<>]' | \
|
||||
$SED -e '/[<>].*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d')
|
||||
$SED -e '/[<>].*[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}.*/d')
|
||||
fi
|
||||
if test "x$SUFFIX" = "xhtml"; then
|
||||
# Some javadoc versions do not put quotes around font size
|
||||
@ -306,7 +295,8 @@ compare_general_files() {
|
||||
! -name "*.lib" ! -name "*.war" ! -name "JavaControlPanel" \
|
||||
! -name "*.obj" ! -name "*.o" ! -name "JavaControlPanelHelper" \
|
||||
! -name "JavaUpdater" ! -name "JavaWSApplicationStub" \
|
||||
! -name "jspawnhelper" ! -name "*.a" \
|
||||
! -name "jspawnhelper" ! -name "JavawsLauncher" ! -name "*.a" \
|
||||
! -name "finish_installation" ! -name "Sparkle" \
|
||||
| $GREP -v "./bin/" | $SORT | $FILTER)
|
||||
|
||||
echo Other files with binary differences...
|
||||
@ -320,29 +310,28 @@ compare_general_files() {
|
||||
THIS_FILE=$WORK_DIR/$f.this
|
||||
$MKDIR -p $(dirname $OTHER_FILE)
|
||||
$MKDIR -p $(dirname $THIS_FILE)
|
||||
$CAT $OTHER_DIR/$f | $SED 's/\:[0-9a-f]\{12,12\}/:CHANGE/g' > $OTHER_FILE
|
||||
$CAT $THIS_DIR/$f | $SED 's/\:[0-9a-f]\{12,12\}/:CHANGE/g' > $THIS_FILE
|
||||
RELEASE_FILTER="$SED \
|
||||
-e 's/\:[0-9a-f]\{12,12\}/:CHANGE/g' \
|
||||
-e 's/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}/<DATE>/g'
|
||||
"
|
||||
$CAT $OTHER_DIR/$f | eval "$RELEASE_FILTER" > $OTHER_FILE
|
||||
$CAT $THIS_DIR/$f | eval "$RELEASE_FILTER" > $THIS_FILE
|
||||
elif [ "x$SUFFIX" = "xhtml" ]; then
|
||||
# Ignore time stamps in docs files
|
||||
OTHER_FILE=$WORK_DIR/$f.other
|
||||
THIS_FILE=$WORK_DIR/$f.this
|
||||
$MKDIR -p $(dirname $OTHER_FILE)
|
||||
$MKDIR -p $(dirname $THIS_FILE)
|
||||
$MKDIR -p $(dirname $OTHER_FILE) $(dirname $THIS_FILE)
|
||||
# Older versions of compare might have left soft links with
|
||||
# these names.
|
||||
$RM $OTHER_FILE $THIS_FILE
|
||||
#Note that | doesn't work on mac sed.
|
||||
$CAT $OTHER_DIR/$f | $SED -e 's/\(-- Generated by javadoc \).*\( --\)/\1(removed)\2/' \
|
||||
-e 's/\(<meta name="date" content="\).*\(">\)/\1(removed)\2/' \
|
||||
-e 's/[A-Z][a-z]*, [A-Z][a-z]* [0-9][0-9]*, [12][0-9]* [0-9][0-9:]* [AMP]\{2,2\} [A-Z][A-Z]*/(removed)/' \
|
||||
-e 's/[A-Z][a-z]* [A-Z][a-z]* [0-9][0-9] [0-9][0-9:]* [A-Z][A-Z]* [12][0-9]*/(removed)/' \
|
||||
-e 's/^\( from \).*\(\.idl\)$/\1(removed)\2/' \
|
||||
-e 's/^\(.*\)\( o'"'"'clock \)\([A-Z][A-Z][A-Z]\)/(removed)\2(removed)/' \
|
||||
> $OTHER_FILE
|
||||
$CAT $THIS_DIR/$f | $SED -e 's/\(-- Generated by javadoc \).*\( --\)/\1(removed)\2/' \
|
||||
-e 's/\(<meta name="date" content="\).*\(">\)/\1(removed)\2/' \
|
||||
-e 's/[A-Z][a-z]*, [A-Z][a-z]* [0-9][0-9]*, [12][0-9]* [0-9][0-9:]* [AMP]\{2,2\} [A-Z][A-Z]*/(removed)/' \
|
||||
-e 's/[A-Z][a-z]* [A-Z][a-z]* [0-9][0-9] [0-9][0-9:]* [A-Z][A-Z]* [12][0-9]*/(removed)/' \
|
||||
-e 's/^\( from \).*\(\.idl\)$/\1(removed)\2/' \
|
||||
-e 's/^\(.*\)\( o'"'"'clock \)\([A-Z][A-Z][A-Z]\)/(removed)\2(removed)/' \
|
||||
> $THIS_FILE
|
||||
HTML_FILTER="$SED \
|
||||
-e 's/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}/<DATE>/g' \
|
||||
-e 's/\(-- Generated by javadoc \).*\( --\)/\1(removed)\2/' \
|
||||
-e 's/[A-Z][a-z]*, [A-Z][a-z]* [0-9][0-9]*, [0-9]\{4\} [0-9][0-9:]* [AMP]\{2,2\} [A-Z][A-Z]*/<DATE>/'
|
||||
"
|
||||
$CAT $OTHER_DIR/$f | eval "$HTML_FILTER" > $OTHER_FILE
|
||||
$CAT $THIS_DIR/$f | eval "$HTML_FILTER" > $THIS_FILE
|
||||
else
|
||||
OTHER_FILE=$OTHER_DIR/$f
|
||||
THIS_FILE=$THIS_DIR/$f
|
||||
@ -605,11 +594,17 @@ compare_bin_file() {
|
||||
OTHER_FILE_BASE=${OTHER_FILE_BASE/.exe/}
|
||||
OTHER_FILE_BASE=${OTHER_FILE_BASE/.cpl/}
|
||||
DIZ_NAME=$(basename $OTHER_FILE_BASE).diz
|
||||
# java.exe and java.dll diz files will have the same name. Have to
|
||||
# make sure java.exe gets the right one. This is only needed for
|
||||
# OTHER since in the new build, all pdb files are left around.
|
||||
if [ "$NAME" = "java.exe" ] && [ -f "$OTHER/tmp/java/java/obj64/java.diz" ]; then
|
||||
OTHER_DIZ_FILE="$OTHER/tmp/java/java/obj64/java.diz"
|
||||
# Some .exe files have the same name as a .dll file. Make sure the exe
|
||||
# files get the right debug symbols.
|
||||
if [ "$NAME" = "java.exe" ] \
|
||||
&& [ -f "$OTHER/support/native/java.base/java_objs/java.diz" ]; then
|
||||
OTHER_DIZ_FILE="$OTHER/support/native/java.base/java_objs/java.diz"
|
||||
elif [ "$NAME" = "jimage.exe" ] \
|
||||
&& [ -f "$OTHER/support/native/jdk.dev/jimage_objs/jimage.diz" ]; then
|
||||
OTHER_DIZ_FILE="$OTHER/support/native/jdk.dev/jimage_objs/jimage.diz"
|
||||
elif [ "$NAME" = "javacpl.exe" ] \
|
||||
&& [ -f "$OTHER/support/native/jdk.plugin/javacpl/javacpl.diz" ]; then
|
||||
OTHER_DIZ_FILE="$OTHER/support/native/jdk.plugin/javacpl/javacpl.diz"
|
||||
elif [ -f "${OTHER_FILE_BASE}.diz" ]; then
|
||||
OTHER_DIZ_FILE=${OTHER_FILE_BASE}.diz
|
||||
else
|
||||
@ -627,9 +622,22 @@ compare_bin_file() {
|
||||
(cd $FILE_WORK_DIR/other ; $UNARCHIVE -o $OTHER_DIZ_FILE)
|
||||
export _NT_SYMBOL_PATH="$FILE_WORK_DIR/other"
|
||||
fi
|
||||
|
||||
THIS_FILE_BASE=${THIS_FILE/.dll/}
|
||||
THIS_FILE_BASE=${THIS_FILE_BASE/.exe/}
|
||||
if [ -f "${THIS_FILE/.dll/}.diz" ]; then
|
||||
THIS_FILE_BASE=${THIS_FILE_BASE/.cpl/}
|
||||
# Some .exe files have the same name as a .dll file. Make sure the exe
|
||||
# files get the right debug symbols.
|
||||
if [ "$NAME" = "java.exe" ] \
|
||||
&& [ -f "$THIS/support/native/java.base/java_objs/java.diz" ]; then
|
||||
THIS_DIZ_FILE="$THIS/support/native/java.base/java_objs/java.diz"
|
||||
elif [ "$NAME" = "jimage.exe" ] \
|
||||
&& [ -f "$THIS/support/native/jdk.dev/jimage_objs/jimage.diz" ]; then
|
||||
THIS_DIZ_FILE="$THIS/support/native/jdk.dev/jimage_objs/jimage.diz"
|
||||
elif [ "$NAME" = "javacpl.exe" ] \
|
||||
&& [ -f "$THIS/support/native/jdk.plugin/javacpl/javacpl.diz" ]; then
|
||||
THIS_DIZ_FILE="$THIS/support/native/jdk.plugin/javacpl/javacpl.diz"
|
||||
elif [ -f "${THIS_FILE_BASE}.diz" ]; then
|
||||
THIS_DIZ_FILE=${THIS_FILE/.dll/}.diz
|
||||
else
|
||||
THIS_DIZ_FILE="$($FIND $THIS_DIR -name $DIZ_NAME | $SED 1q)"
|
||||
@ -738,6 +746,9 @@ compare_bin_file() {
|
||||
elif [ "$OPENJDK_TARGET_OS" = "aix" ]; then
|
||||
$OBJDUMP -T $ORIG_OTHER_FILE 2> /dev/null | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
|
||||
$OBJDUMP -T $ORIG_THIS_FILE 2> /dev/null | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
|
||||
elif [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
|
||||
$NM -j $ORIG_OTHER_FILE 2> /dev/null | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
|
||||
$NM -j $ORIG_THIS_FILE 2> /dev/null | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
|
||||
else
|
||||
$NM -a $ORIG_OTHER_FILE 2> /dev/null | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
|
||||
$NM -a $ORIG_THIS_FILE 2> /dev/null | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
|
||||
@ -856,8 +867,15 @@ compare_bin_file() {
|
||||
if [ -z "$DIS_DIFF_FILTER" ]; then
|
||||
DIS_DIFF_FILTER="$GREP -v ' # .* <.*>$' | $SED -r -e 's/(\b|x)([0-9a-fA-F]+)(\b|:|>)/X/g'"
|
||||
fi
|
||||
$DIS_CMD $OTHER_FILE | $GREP -v $NAME | eval "$DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.other 2>&1
|
||||
$DIS_CMD $THIS_FILE | $GREP -v $NAME | eval "$DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.this 2>&1
|
||||
if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
|
||||
DIS_GREP_ARG=-a
|
||||
else
|
||||
DIS_GREP_ARG=
|
||||
fi
|
||||
$DIS_CMD $OTHER_FILE | $GREP $DIS_GREP_ARG -v $NAME \
|
||||
| eval "$DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.other 2>&1
|
||||
$DIS_CMD $THIS_FILE | $GREP $DIS_GREP_ARG -v $NAME \
|
||||
| eval "$DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.this 2>&1
|
||||
|
||||
LC_ALL=C $DIFF $WORK_FILE_BASE.dis.other $WORK_FILE_BASE.dis.this > $WORK_FILE_BASE.dis.diff
|
||||
|
||||
@ -974,6 +992,15 @@ compare_all_execs() {
|
||||
-o -name '*.jar' -o -name '*.diz' -o -name 'jcontrol' -o -name '*.properties' \
|
||||
-o -name '*.data' -o -name '*.bfc' -o -name '*.src' -o -name '*.txt' \
|
||||
-o -name '*.cfg' -o -name 'meta-index' -o -name '*.properties.ja' \
|
||||
-o -name '*.xml' -o -name '*.html' -o -name '*.png' -o -name 'README' \
|
||||
-o -name '*.zip' -o -name '*.jimage' -o -name '*.java' -o -name '*.mf' \
|
||||
-o -name '*.jpg' -o -name '*.wsdl' -o -name '*.js' -o -name '*.sh' \
|
||||
-o -name '*.bat' -o -name '*LICENSE' -o -name '*.d' -o -name '*store' \
|
||||
-o -name 'blacklist' -o -name '*certs' -o -name '*.ttf' \
|
||||
-o -name '*.jfc' -o -name '*.dat' -o -name 'release' -o -name '*.dir'\
|
||||
-o -name '*.sym' -o -name '*.idl' -o -name '*.h' -o -name '*.access' \
|
||||
-o -name '*.template' -o -name '*.policy' -o -name '*.security' \
|
||||
-o -name 'COPYRIGHT' -o -name '*.1' \
|
||||
-o -name 'classlist' \) | $SORT | $FILTER)
|
||||
fi
|
||||
|
||||
@ -996,14 +1023,6 @@ compare_all_execs() {
|
||||
################################################################################
|
||||
# Initiate configuration
|
||||
|
||||
COMPARE_ROOT=/tmp/cimages.$USER
|
||||
$MKDIR -p $COMPARE_ROOT
|
||||
if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
|
||||
if [ "$(uname -o)" = "Cygwin" ]; then
|
||||
COMPARE_ROOT=$(cygpath -msa $COMPARE_ROOT)
|
||||
fi
|
||||
fi
|
||||
|
||||
THIS="$SCRIPT_DIR"
|
||||
echo "$THIS"
|
||||
THIS_SCRIPT="$0"
|
||||
@ -1026,6 +1045,7 @@ if [ -z "$1" ] || [ "$1" = "-h" ] || [ "$1" = "-?" ] || [ "$1" = "/h" ] || [ "$1
|
||||
echo ""
|
||||
echo "--sort-symbols Sort all symbols before comparing"
|
||||
echo "--strip Strip all binaries before comparing"
|
||||
echo "--clean Clean all previous comparison results first"
|
||||
echo ""
|
||||
echo "[FILTER] List filenames in the image to compare, works for jars, zips, libs and execs"
|
||||
echo "Example:"
|
||||
@ -1125,6 +1145,9 @@ while [ -n "$1" ]; do
|
||||
--strip)
|
||||
STRIP_ALL=true
|
||||
;;
|
||||
--clean)
|
||||
CLEAN_OUTPUT=true
|
||||
;;
|
||||
*)
|
||||
CMP_NAMES=false
|
||||
CMP_PERMS=false
|
||||
@ -1143,6 +1166,23 @@ while [ -n "$1" ]; do
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "$STRIP_ALL" = "true" ] && [ -z "$STRIP" ]; then
|
||||
echo Warning: Not stripping even with --strip, since strip is missing on this platform
|
||||
STRIP_ALL=false
|
||||
fi
|
||||
|
||||
COMPARE_ROOT=/tmp/cimages.$USER
|
||||
if [ "$CLEAN_OUTPUT" = "true" ]; then
|
||||
echo Cleaning old output in $COMPARE_ROOT.
|
||||
$RM -rf $COMPARE_ROOT
|
||||
fi
|
||||
$MKDIR -p $COMPARE_ROOT
|
||||
if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
|
||||
if [ "$(uname -o)" = "Cygwin" ]; then
|
||||
COMPARE_ROOT=$(cygpath -msa $COMPARE_ROOT)
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CMP_2_ZIPS" = "true" ]; then
|
||||
THIS_DIR="$(dirname $THIS_FILE)"
|
||||
THIS_DIR="$(cd "$THIS_DIR" > /dev/null && pwd )"
|
||||
@ -1278,6 +1318,15 @@ if [ "$SKIP_DEFAULT" != "true" ]; then
|
||||
echo " $OTHER_DEPLOY_APPLET_PLUGIN_DIR"
|
||||
fi
|
||||
|
||||
if [ -d "$THIS/install/sparkle/Sparkle.framework" ] \
|
||||
&& [ -d "$OTHER/install/sparkle/Sparkle.framework" ]; then
|
||||
THIS_SPARKLE_DIR="$THIS/install/sparkle/Sparkle.framework"
|
||||
OTHER_SPARKLE_DIR="$OTHER/install/sparkle/Sparkle.framework"
|
||||
echo "Also comparing install sparkle framework"
|
||||
echo " $THIS_SPARKLE_DIR"
|
||||
echo " $OTHER_SPARKLE_DIR"
|
||||
fi
|
||||
|
||||
if [ -d "$OTHER/images" ]; then
|
||||
OTHER_SEC_DIR="$OTHER/images"
|
||||
else
|
||||
@ -1298,9 +1347,9 @@ if [ "$SKIP_DEFAULT" != "true" ]; then
|
||||
THIS_JGSS_WINDOWS_BIN="$THIS_SEC_DIR/$JGSS_WINDOWS_BIN"
|
||||
fi
|
||||
|
||||
if [ -d "$THIS/docs" ] && [ -d "$OTHER/docs" ]; then
|
||||
THIS_DOCS="$THIS/docs"
|
||||
OTHER_DOCS="$OTHER/docs"
|
||||
if [ -d "$THIS/images/docs" ] && [ -d "$OTHER/images/docs" ]; then
|
||||
THIS_DOCS="$THIS/images/docs"
|
||||
OTHER_DOCS="$OTHER/images/docs"
|
||||
echo "Also comparing docs"
|
||||
else
|
||||
echo "WARNING! Docs haven't been built and won't be compared."
|
||||
@ -1314,23 +1363,23 @@ if [ "$CMP_NAMES" = "true" ]; then
|
||||
if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
|
||||
echo -n "JDK "
|
||||
compare_dirs $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
|
||||
echo -n "JRE "
|
||||
echo -n "JRE "
|
||||
compare_dirs $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre
|
||||
|
||||
echo -n "JDK "
|
||||
compare_files $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
|
||||
echo -n "JRE "
|
||||
echo -n "JRE "
|
||||
compare_files $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre
|
||||
fi
|
||||
if [ -n "$THIS_JDK_BUNDLE" ] && [ -n "$OTHER_JDK_BUNDLE" ]; then
|
||||
echo -n "JDK Bundle "
|
||||
compare_dirs $THIS_JDK_BUNDLE $OTHER_JDK_BUNDLE $COMPARE_ROOT/jdk-bundle
|
||||
echo -n "JRE Bundle "
|
||||
echo -n "JRE Bundle "
|
||||
compare_dirs $THIS_JRE_BUNDLE $OTHER_JRE_BUNDLE $COMPARE_ROOT/jre-bundle
|
||||
|
||||
echo -n "JDK Bundle "
|
||||
compare_files $THIS_JDK_BUNDLE $OTHER_JDK_BUNDLE $COMPARE_ROOT/jdk-bundle
|
||||
echo -n "JRE Bundle "
|
||||
echo -n "JRE Bundle "
|
||||
compare_files $THIS_JRE_BUNDLE $OTHER_JRE_BUNDLE $COMPARE_ROOT/jre-bundle
|
||||
fi
|
||||
if [ -n "$THIS_DOCS" ] && [ -n "$OTHER_DOCS" ]; then
|
||||
@ -1349,13 +1398,19 @@ if [ "$CMP_NAMES" = "true" ]; then
|
||||
echo -n "JavaAppletPlugin "
|
||||
compare_files $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
|
||||
fi
|
||||
if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then
|
||||
echo -n "Sparkle.framework "
|
||||
compare_dirs $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle
|
||||
echo -n "Sparkle.framework "
|
||||
compare_files $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CMP_PERMS" = "true" ]; then
|
||||
if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
|
||||
echo -n "JDK "
|
||||
compare_permissions $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
|
||||
echo -n "JRE "
|
||||
echo -n "JRE "
|
||||
compare_permissions $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre
|
||||
fi
|
||||
if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then
|
||||
@ -1365,19 +1420,23 @@ if [ "$CMP_PERMS" = "true" ]; then
|
||||
echo -n "JavaAppletPlugin "
|
||||
compare_permissions $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
|
||||
fi
|
||||
if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then
|
||||
echo -n "Sparkle.framework "
|
||||
compare_permissions $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CMP_TYPES" = "true" ]; then
|
||||
if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
|
||||
echo -n "JDK "
|
||||
compare_file_types $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
|
||||
echo -n "JRE "
|
||||
echo -n "JRE "
|
||||
compare_file_types $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre
|
||||
fi
|
||||
if [ -n "$THIS_JDK_BUNDLE" ] && [ -n "$OTHER_JDK_BUNDLE" ]; then
|
||||
echo -n "JDK Bundle "
|
||||
compare_file_types $THIS_JDK_BUNDLE $OTHER_JDK_BUNDLE $COMPARE_ROOT/jdk-bundle
|
||||
echo -n "JRE Bundle "
|
||||
echo -n "JRE Bundle "
|
||||
compare_file_types $THIS_JRE_BUNDLE $OTHER_JRE_BUNDLE $COMPARE_ROOT/jre-bundle
|
||||
fi
|
||||
if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then
|
||||
@ -1387,19 +1446,23 @@ if [ "$CMP_TYPES" = "true" ]; then
|
||||
echo -n "JavaAppletPlugin "
|
||||
compare_file_types $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
|
||||
fi
|
||||
if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then
|
||||
echo -n "Sparkle.framework "
|
||||
compare_file_types $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CMP_GENERAL" = "true" ]; then
|
||||
if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
|
||||
echo -n "JDK "
|
||||
compare_general_files $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
|
||||
echo -n "JRE "
|
||||
echo -n "JRE "
|
||||
compare_general_files $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre
|
||||
fi
|
||||
if [ -n "$THIS_JDK_BUNDLE" ] && [ -n "$OTHER_JDK_BUNDLE" ]; then
|
||||
echo -n "JDK Bundle "
|
||||
compare_general_files $THIS_JDK_BUNDLE $OTHER_JDK_BUNDLE $COMPARE_ROOT/jdk-bundle
|
||||
echo -n "JRE Bundle "
|
||||
echo -n "JRE Bundle "
|
||||
compare_general_files $THIS_JRE_BUNDLE $OTHER_JRE_BUNDLE $COMPARE_ROOT/jre-bundle
|
||||
fi
|
||||
if [ -n "$THIS_DOCS" ] && [ -n "$OTHER_DOCS" ]; then
|
||||
@ -1413,6 +1476,10 @@ if [ "$CMP_GENERAL" = "true" ]; then
|
||||
echo -n "JavaAppletPlugin "
|
||||
compare_general_files $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
|
||||
fi
|
||||
if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then
|
||||
echo -n "Sparkle.framework "
|
||||
compare_general_files $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CMP_ZIPS" = "true" ]; then
|
||||
@ -1465,7 +1532,7 @@ if [ "$CMP_LIBS" = "true" ]; then
|
||||
echo -n "JDK "
|
||||
compare_all_libs $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
|
||||
if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
|
||||
echo -n "JRE "
|
||||
echo -n "JRE "
|
||||
compare_all_libs $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre
|
||||
fi
|
||||
fi
|
||||
@ -1476,13 +1543,17 @@ if [ "$CMP_LIBS" = "true" ]; then
|
||||
echo -n "JavaAppletPlugin "
|
||||
compare_all_libs $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
|
||||
fi
|
||||
if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then
|
||||
echo -n "Sparkle.framework "
|
||||
compare_all_libs $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CMP_EXECS" = "true" ]; then
|
||||
if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
|
||||
compare_all_execs $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
|
||||
if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
|
||||
echo -n "JRE "
|
||||
echo -n "JRE "
|
||||
compare_all_execs $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre
|
||||
fi
|
||||
fi
|
||||
@ -1493,6 +1564,10 @@ if [ "$CMP_EXECS" = "true" ]; then
|
||||
echo -n "JavaAppletPlugin "
|
||||
compare_all_execs $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
|
||||
fi
|
||||
if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then
|
||||
echo -n "Sparkle.framework "
|
||||
compare_all_execs $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle
|
||||
fi
|
||||
fi
|
||||
|
||||
echo
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -347,3 +347,4 @@ ea285530245cf4e0edf0479121a41347d3030eba jdk-9+98
|
||||
9c4662334d933d299928d1f599d02ff50777cbf8 jdk-9+102
|
||||
0680fb7dae4da1ee6cf783c4b74184e3e08d3179 jdk-9+103
|
||||
e385e95e6101711d5c63e7b1a827e99b6ec7a1cc jdk-9+104
|
||||
64006ae915b3aa85ac7e6fac679024d2da7fe526 jdk-9+105
|
||||
|
@ -507,3 +507,4 @@ bdb0acafc63c42e84d9d8195bf2e2b25ee9c3306 jdk-9+100
|
||||
d5239fc1b69749ae50793c61b899fcdacf3df857 jdk-9+102
|
||||
c5f55130b1b69510d9a6f4a3105b58e21cd7ffe1 jdk-9+103
|
||||
534c50395957c6025fb6627e93b35756f8d48a08 jdk-9+104
|
||||
266fa9bb5297bf02cb2a7b038b10a109817d2b48 jdk-9+105
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -29,6 +29,10 @@ $(eval $(call IncludeCustomExtension, hotspot, lib/Lib-jdk.hotspot.agent.gmk))
|
||||
|
||||
################################################################################
|
||||
|
||||
ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx windows), )
|
||||
DISABLE_MAPFILES := true
|
||||
endif
|
||||
|
||||
SA_TOPDIR := $(HOTSPOT_TOPDIR)/src/jdk.hotspot.agent
|
||||
|
||||
# Defaults for most platforms
|
||||
|
@ -962,7 +962,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
__ lea(d, Address(d, count, Address::lsl(exact_log2(-step))));
|
||||
}
|
||||
|
||||
Label done, tail;
|
||||
Label tail;
|
||||
|
||||
__ cmp(count, 16/granularity);
|
||||
__ br(Assembler::LO, tail);
|
||||
@ -987,7 +987,8 @@ class StubGenerator: public StubCodeGenerator {
|
||||
}
|
||||
// rscratch2 is the byte adjustment needed to align s.
|
||||
__ cbz(rscratch2, aligned);
|
||||
__ lsr(rscratch2, rscratch2, exact_log2(granularity));
|
||||
int shift = exact_log2(granularity);
|
||||
if (shift) __ lsr(rscratch2, rscratch2, shift);
|
||||
__ sub(count, count, rscratch2);
|
||||
|
||||
#if 0
|
||||
|
@ -45,13 +45,6 @@ void VM_Version::initialize() {
|
||||
if( cache_line_size > AllocatePrefetchStepSize )
|
||||
AllocatePrefetchStepSize = cache_line_size;
|
||||
|
||||
assert(AllocatePrefetchLines > 0, "invalid value");
|
||||
if( AllocatePrefetchLines < 1 ) // set valid value in product VM
|
||||
AllocatePrefetchLines = 3;
|
||||
assert(AllocateInstancePrefetchLines > 0, "invalid value");
|
||||
if( AllocateInstancePrefetchLines < 1 ) // set valid value in product VM
|
||||
AllocateInstancePrefetchLines = 1;
|
||||
|
||||
AllocatePrefetchDistance = allocate_prefetch_distance();
|
||||
AllocatePrefetchStyle = allocate_prefetch_style();
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -114,15 +114,20 @@ class RegisterSaver {
|
||||
|
||||
OopMap* RegisterSaver::save_live_registers(MacroAssembler* masm, int additional_frame_words,
|
||||
int* total_frame_words, bool verify_fpu, bool save_vectors) {
|
||||
int vect_words = 0;
|
||||
int num_xmm_regs = XMMRegisterImpl::number_of_registers;
|
||||
int ymm_bytes = num_xmm_regs * 16;
|
||||
int zmm_bytes = num_xmm_regs * 32;
|
||||
#ifdef COMPILER2
|
||||
if (save_vectors) {
|
||||
assert(UseAVX > 0, "512bit vectors are supported only with EVEX");
|
||||
assert(MaxVectorSize == 64, "only 512bit vectors are supported now");
|
||||
// Save upper half of ZMM/YMM registers :
|
||||
vect_words = 8 * 16 / wordSize;
|
||||
additional_frame_words += vect_words;
|
||||
assert(UseAVX > 0, "up to 512bit vectors are supported with EVEX");
|
||||
assert(MaxVectorSize <= 64, "up to 512bit vectors are supported now");
|
||||
// Save upper half of YMM registers
|
||||
int vect_bytes = ymm_bytes;
|
||||
if (UseAVX > 2) {
|
||||
// Save upper half of ZMM registers as well
|
||||
vect_bytes += zmm_bytes;
|
||||
}
|
||||
additional_frame_words += vect_bytes / wordSize;
|
||||
}
|
||||
#else
|
||||
assert(!save_vectors, "vectors are generated only by C2");
|
||||
@ -185,13 +190,14 @@ OopMap* RegisterSaver::save_live_registers(MacroAssembler* masm, int additional_
|
||||
|
||||
off = xmm0_off;
|
||||
delta = xmm1_off - off;
|
||||
if(UseSSE == 1) { // Save the XMM state
|
||||
if(UseSSE == 1) {
|
||||
// Save the XMM state
|
||||
for (int n = 0; n < num_xmm_regs; n++) {
|
||||
__ movflt(Address(rsp, off*wordSize), as_XMMRegister(n));
|
||||
off += delta;
|
||||
}
|
||||
} else if(UseSSE >= 2) {
|
||||
// Save whole 128bit (16 bytes) XMM regiters
|
||||
// Save whole 128bit (16 bytes) XMM registers
|
||||
for (int n = 0; n < num_xmm_regs; n++) {
|
||||
__ movdqu(Address(rsp, off*wordSize), as_XMMRegister(n));
|
||||
off += delta;
|
||||
@ -199,13 +205,14 @@ OopMap* RegisterSaver::save_live_registers(MacroAssembler* masm, int additional_
|
||||
}
|
||||
|
||||
if (save_vectors) {
|
||||
assert(vect_words*wordSize == 128, "");
|
||||
__ subptr(rsp, 128); // Save upper half of YMM registes
|
||||
__ subptr(rsp, ymm_bytes);
|
||||
// Save upper half of YMM registers
|
||||
for (int n = 0; n < num_xmm_regs; n++) {
|
||||
__ vextractf128h(Address(rsp, n*16), as_XMMRegister(n));
|
||||
}
|
||||
if (UseAVX > 2) {
|
||||
__ subptr(rsp, 256); // Save upper half of ZMM registes
|
||||
__ subptr(rsp, zmm_bytes);
|
||||
// Save upper half of ZMM registers
|
||||
for (int n = 0; n < num_xmm_regs; n++) {
|
||||
__ vextractf64x4h(Address(rsp, n*32), as_XMMRegister(n), 1);
|
||||
}
|
||||
@ -255,50 +262,59 @@ OopMap* RegisterSaver::save_live_registers(MacroAssembler* masm, int additional_
|
||||
|
||||
void RegisterSaver::restore_live_registers(MacroAssembler* masm, bool restore_vectors) {
|
||||
int num_xmm_regs = XMMRegisterImpl::number_of_registers;
|
||||
int ymm_bytes = num_xmm_regs * 16;
|
||||
int zmm_bytes = num_xmm_regs * 32;
|
||||
// Recover XMM & FPU state
|
||||
int additional_frame_bytes = 0;
|
||||
#ifdef COMPILER2
|
||||
if (restore_vectors) {
|
||||
assert(UseAVX > 0, "512bit vectors are supported only with EVEX");
|
||||
assert(MaxVectorSize == 64, "only 512bit vectors are supported now");
|
||||
additional_frame_bytes = 128;
|
||||
assert(UseAVX > 0, "up to 512bit vectors are supported with EVEX");
|
||||
assert(MaxVectorSize <= 64, "up to 512bit vectors are supported now");
|
||||
// Save upper half of YMM registers
|
||||
additional_frame_bytes = ymm_bytes;
|
||||
if (UseAVX > 2) {
|
||||
// Save upper half of ZMM registers as well
|
||||
additional_frame_bytes += zmm_bytes;
|
||||
}
|
||||
}
|
||||
#else
|
||||
assert(!restore_vectors, "vectors are generated only by C2");
|
||||
#endif
|
||||
|
||||
if (restore_vectors) {
|
||||
assert(additional_frame_bytes == 128, "");
|
||||
if (UseAVX > 2) {
|
||||
// Restore upper half of ZMM registers.
|
||||
for (int n = 0; n < num_xmm_regs; n++) {
|
||||
__ vinsertf64x4h(as_XMMRegister(n), Address(rsp, n*32), 1);
|
||||
}
|
||||
__ addptr(rsp, additional_frame_bytes*2); // Save upper half of ZMM registes
|
||||
}
|
||||
// Restore upper half of YMM registes.
|
||||
for (int n = 0; n < num_xmm_regs; n++) {
|
||||
__ vinsertf128h(as_XMMRegister(n), Address(rsp, n*16));
|
||||
}
|
||||
__ addptr(rsp, additional_frame_bytes); // Save upper half of YMM registes
|
||||
}
|
||||
|
||||
int off = xmm0_off;
|
||||
int delta = xmm1_off - off;
|
||||
|
||||
if (UseSSE == 1) {
|
||||
// Restore XMM registers
|
||||
assert(additional_frame_bytes == 0, "");
|
||||
for (int n = 0; n < num_xmm_regs; n++) {
|
||||
__ movflt(as_XMMRegister(n), Address(rsp, off*wordSize));
|
||||
off += delta;
|
||||
}
|
||||
} else if (UseSSE >= 2) {
|
||||
// additional_frame_bytes only populated for the restore_vector case, else it is 0
|
||||
// Restore whole 128bit (16 bytes) XMM registers. Do this before restoring YMM and
|
||||
// ZMM because the movdqu instruction zeros the upper part of the XMM register.
|
||||
for (int n = 0; n < num_xmm_regs; n++) {
|
||||
__ movdqu(as_XMMRegister(n), Address(rsp, off*wordSize+additional_frame_bytes));
|
||||
off += delta;
|
||||
}
|
||||
}
|
||||
|
||||
if (restore_vectors) {
|
||||
if (UseAVX > 2) {
|
||||
// Restore upper half of ZMM registers.
|
||||
for (int n = 0; n < num_xmm_regs; n++) {
|
||||
__ vinsertf64x4h(as_XMMRegister(n), Address(rsp, n*32), 1);
|
||||
}
|
||||
__ addptr(rsp, zmm_bytes);
|
||||
}
|
||||
// Restore upper half of YMM registers.
|
||||
for (int n = 0; n < num_xmm_regs; n++) {
|
||||
__ vinsertf128h(as_XMMRegister(n), Address(rsp, n*16));
|
||||
}
|
||||
__ addptr(rsp, ymm_bytes);
|
||||
}
|
||||
|
||||
__ pop_FPU_state();
|
||||
__ addptr(rsp, FPU_regs_live*wordSize); // Pop FPU registers
|
||||
|
||||
@ -306,7 +322,6 @@ void RegisterSaver::restore_live_registers(MacroAssembler* masm, bool restore_ve
|
||||
__ popa();
|
||||
// Get the rbp, described implicitly by the frame sender code (no oopMap)
|
||||
__ pop(rbp);
|
||||
|
||||
}
|
||||
|
||||
void RegisterSaver::restore_result_registers(MacroAssembler* masm) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -150,8 +150,8 @@ OopMap* RegisterSaver::save_live_registers(MacroAssembler* masm, int additional_
|
||||
}
|
||||
#if defined(COMPILER2) || INCLUDE_JVMCI
|
||||
if (save_vectors) {
|
||||
assert(UseAVX > 0, "512bit vectors are supported only with EVEX");
|
||||
assert(MaxVectorSize == 64, "only 512bit vectors are supported now");
|
||||
assert(UseAVX > 0, "up to 512bit vectors are supported with EVEX");
|
||||
assert(MaxVectorSize <= 64, "up to 512bit vectors are supported now");
|
||||
}
|
||||
#else
|
||||
assert(!save_vectors, "vectors are generated only by C2 and JVMCI");
|
||||
@ -176,18 +176,18 @@ OopMap* RegisterSaver::save_live_registers(MacroAssembler* masm, int additional_
|
||||
|
||||
// push cpu state handles this on EVEX enabled targets
|
||||
if (save_vectors) {
|
||||
// Save upper half of YMM registes(0..15)
|
||||
// Save upper half of YMM registers(0..15)
|
||||
int base_addr = XSAVE_AREA_YMM_BEGIN;
|
||||
for (int n = 0; n < 16; n++) {
|
||||
__ vextractf128h(Address(rsp, base_addr+n*16), as_XMMRegister(n));
|
||||
}
|
||||
if (VM_Version::supports_evex()) {
|
||||
// Save upper half of ZMM registes(0..15)
|
||||
// Save upper half of ZMM registers(0..15)
|
||||
base_addr = XSAVE_AREA_ZMM_BEGIN;
|
||||
for (int n = 0; n < 16; n++) {
|
||||
__ vextractf64x4h(Address(rsp, base_addr+n*32), as_XMMRegister(n), 1);
|
||||
}
|
||||
// Save full ZMM registes(16..num_xmm_regs)
|
||||
// Save full ZMM registers(16..num_xmm_regs)
|
||||
base_addr = XSAVE_AREA_UPPERBANK;
|
||||
off = 0;
|
||||
int vector_len = Assembler::AVX_512bit;
|
||||
@ -321,8 +321,8 @@ void RegisterSaver::restore_live_registers(MacroAssembler* masm, bool restore_ve
|
||||
|
||||
#if defined(COMPILER2) || INCLUDE_JVMCI
|
||||
if (restore_vectors) {
|
||||
assert(UseAVX > 0, "512bit vectors are supported only with EVEX");
|
||||
assert(MaxVectorSize == 64, "only 512bit vectors are supported now");
|
||||
assert(UseAVX > 0, "up to 512bit vectors are supported with EVEX");
|
||||
assert(MaxVectorSize <= 64, "up to 512bit vectors are supported now");
|
||||
}
|
||||
#else
|
||||
assert(!restore_vectors, "vectors are generated only by C2");
|
||||
@ -330,18 +330,18 @@ void RegisterSaver::restore_live_registers(MacroAssembler* masm, bool restore_ve
|
||||
|
||||
// On EVEX enabled targets everything is handled in pop fpu state
|
||||
if (restore_vectors) {
|
||||
// Restore upper half of YMM registes (0..15)
|
||||
// Restore upper half of YMM registers (0..15)
|
||||
int base_addr = XSAVE_AREA_YMM_BEGIN;
|
||||
for (int n = 0; n < 16; n++) {
|
||||
__ vinsertf128h(as_XMMRegister(n), Address(rsp, base_addr+n*16));
|
||||
}
|
||||
if (VM_Version::supports_evex()) {
|
||||
// Restore upper half of ZMM registes (0..15)
|
||||
// Restore upper half of ZMM registers (0..15)
|
||||
base_addr = XSAVE_AREA_ZMM_BEGIN;
|
||||
for (int n = 0; n < 16; n++) {
|
||||
__ vinsertf64x4h(as_XMMRegister(n), Address(rsp, base_addr+n*32), 1);
|
||||
}
|
||||
// Restore full ZMM registes(16..num_xmm_regs)
|
||||
// Restore full ZMM registers(16..num_xmm_regs)
|
||||
base_addr = XSAVE_AREA_UPPERBANK;
|
||||
int vector_len = Assembler::AVX_512bit;
|
||||
int off = 0;
|
||||
@ -351,7 +351,7 @@ void RegisterSaver::restore_live_registers(MacroAssembler* masm, bool restore_ve
|
||||
}
|
||||
} else {
|
||||
if (VM_Version::supports_evex()) {
|
||||
// Restore upper bank of ZMM registes(16..31) for double/float usage
|
||||
// Restore upper bank of ZMM registers(16..31) for double/float usage
|
||||
int base_addr = XSAVE_AREA_UPPERBANK;
|
||||
int off = 0;
|
||||
for (int n = 16; n < num_xmm_regs; n++) {
|
||||
|
@ -1163,13 +1163,6 @@ void VM_Version::get_processor_features() {
|
||||
if( cache_line_size > AllocatePrefetchStepSize )
|
||||
AllocatePrefetchStepSize = cache_line_size;
|
||||
|
||||
assert(AllocatePrefetchLines > 0, "invalid value");
|
||||
if( AllocatePrefetchLines < 1 ) // set valid value in product VM
|
||||
AllocatePrefetchLines = 3;
|
||||
assert(AllocateInstancePrefetchLines > 0, "invalid value");
|
||||
if( AllocateInstancePrefetchLines < 1 ) // set valid value in product VM
|
||||
AllocateInstancePrefetchLines = 1;
|
||||
|
||||
AllocatePrefetchDistance = allocate_prefetch_distance();
|
||||
AllocatePrefetchStyle = allocate_prefetch_style();
|
||||
|
||||
@ -1183,7 +1176,9 @@ void VM_Version::get_processor_features() {
|
||||
}
|
||||
if (supports_sse4_2() && supports_ht()) { // Nehalem based cpus
|
||||
AllocatePrefetchDistance = 192;
|
||||
AllocatePrefetchLines = 4;
|
||||
if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) {
|
||||
FLAG_SET_DEFAULT(AllocatePrefetchLines, 4);
|
||||
}
|
||||
}
|
||||
#ifdef COMPILER2
|
||||
if (supports_sse4_2()) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
//
|
||||
// Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
// Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
//
|
||||
// This code is free software; you can redistribute it and/or modify it
|
||||
@ -19,7 +19,7 @@
|
||||
// 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 "winresrc.h"
|
||||
@ -36,7 +36,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION HS_VER
|
||||
FILEVERSION JDK_VER
|
||||
PRODUCTVERSION JDK_VER
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
@ -56,7 +56,7 @@ BEGIN
|
||||
BEGIN
|
||||
VALUE "CompanyName", XSTR(HS_COMPANY) "\0"
|
||||
VALUE "FileDescription", XSTR(HS_FILEDESC) "\0"
|
||||
VALUE "FileVersion", XSTR(HS_DOTVER) "\0"
|
||||
VALUE "FileVersion", XSTR(JDK_DOTVER) "\0"
|
||||
VALUE "Full Version", XSTR(HS_BUILD_ID) "\0"
|
||||
VALUE "InternalName", XSTR(HS_INTERNAL_NAME) "\0"
|
||||
VALUE "LegalCopyright", XSTR(HS_COPYRIGHT) "\0"
|
||||
|
@ -72,7 +72,7 @@ ciField::ciField(ciInstanceKlass* klass, int index): _known_to_link_with_put(NUL
|
||||
|
||||
assert(ciObjectFactory::is_initialized(), "not a shared field");
|
||||
|
||||
assert(klass->get_instanceKlass()->is_linked(), "must be linked before using its constan-pool");
|
||||
assert(klass->get_instanceKlass()->is_linked(), "must be linked before using its constant-pool");
|
||||
|
||||
constantPoolHandle cpool(thread, klass->get_instanceKlass()->constants());
|
||||
|
||||
@ -106,10 +106,31 @@ ciField::ciField(ciInstanceKlass* klass, int index): _known_to_link_with_put(NUL
|
||||
// even though we may not need to.
|
||||
int holder_index = cpool->klass_ref_index_at(index);
|
||||
bool holder_is_accessible;
|
||||
ciInstanceKlass* declared_holder =
|
||||
ciEnv::current(thread)->get_klass_by_index(cpool, holder_index,
|
||||
holder_is_accessible,
|
||||
klass)->as_instance_klass();
|
||||
|
||||
ciKlass* generic_declared_holder = ciEnv::current(thread)->get_klass_by_index(cpool, holder_index,
|
||||
holder_is_accessible,
|
||||
klass);
|
||||
|
||||
if (generic_declared_holder->is_array_klass()) {
|
||||
// If the declared holder of the field is an array class, assume that
|
||||
// the canonical holder of that field is java.lang.Object. Arrays
|
||||
// do not have fields; java.lang.Object is the only supertype of an
|
||||
// array type that can declare fields and is therefore the canonical
|
||||
// holder of the array type.
|
||||
//
|
||||
// Furthermore, the compilers assume that java.lang.Object does not
|
||||
// have any fields. Therefore, the field is not looked up. Instead,
|
||||
// the method returns partial information that will trigger special
|
||||
// handling in ciField::will_link and will result in a
|
||||
// java.lang.NoSuchFieldError exception being thrown by the compiled
|
||||
// code (the expected behavior in this case).
|
||||
_holder = ciEnv::current(thread)->Object_klass();
|
||||
_offset = -1;
|
||||
_is_constant = false;
|
||||
return;
|
||||
}
|
||||
|
||||
ciInstanceKlass* declared_holder = generic_declared_holder->as_instance_klass();
|
||||
|
||||
// The declared holder of this field may not have been loaded.
|
||||
// Bail out with partial field information.
|
||||
|
@ -61,7 +61,7 @@ Node* AddNode::Identity(PhaseGVN* phase) {
|
||||
|
||||
//------------------------------commute----------------------------------------
|
||||
// Commute operands to move loads and constants to the right.
|
||||
static bool commute( Node *add, int con_left, int con_right ) {
|
||||
static bool commute(Node *add, bool con_left, bool con_right) {
|
||||
Node *in1 = add->in(1);
|
||||
Node *in2 = add->in(2);
|
||||
|
||||
@ -110,8 +110,8 @@ static bool commute( Node *add, int con_left, int con_right ) {
|
||||
Node *AddNode::Ideal(PhaseGVN *phase, bool can_reshape) {
|
||||
const Type *t1 = phase->type( in(1) );
|
||||
const Type *t2 = phase->type( in(2) );
|
||||
int con_left = t1->singleton();
|
||||
int con_right = t2->singleton();
|
||||
bool con_left = t1->singleton();
|
||||
bool con_right = t2->singleton();
|
||||
|
||||
// Check for commutative operation desired
|
||||
if( commute(this,con_left,con_right) ) return this;
|
||||
|
@ -3048,7 +3048,7 @@ bool PhaseIdealLoop::intrinsify_fill(IdealLoopTree* lpt) {
|
||||
// state of the loop. It's safe in this case to replace it with the
|
||||
// result_mem.
|
||||
_igvn.replace_node(store->in(MemNode::Memory), result_mem);
|
||||
_igvn.replace_node(exit, result_ctrl);
|
||||
lazy_replace(exit, result_ctrl);
|
||||
_igvn.replace_node(store, result_mem);
|
||||
// Any uses the increment outside of the loop become the loop limit.
|
||||
_igvn.replace_node(head->incr(), head->limit());
|
||||
|
@ -755,8 +755,8 @@ bool PhaseIdealLoop::is_counted_loop( Node *x, IdealLoopTree *loop ) {
|
||||
set_loop(iff2, get_loop(iffalse));
|
||||
|
||||
// Lazy update of 'get_ctrl' mechanism.
|
||||
lazy_replace_proj( iffalse, iff2 );
|
||||
lazy_replace_proj( iftrue, ift2 );
|
||||
lazy_replace(iffalse, iff2);
|
||||
lazy_replace(iftrue, ift2);
|
||||
|
||||
// Swap names
|
||||
iffalse = iff2;
|
||||
|
@ -693,13 +693,18 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
Node *get_ctrl_no_update( Node *i ) const {
|
||||
Node *get_ctrl_no_update_helper(Node *i) const {
|
||||
assert(has_ctrl(i), "should be control, not loop");
|
||||
return (Node*)(((intptr_t)_nodes[i->_idx]) & ~1);
|
||||
}
|
||||
|
||||
Node *get_ctrl_no_update(Node *i) const {
|
||||
assert( has_ctrl(i), "" );
|
||||
Node *n = (Node*)(((intptr_t)_nodes[i->_idx]) & ~1);
|
||||
Node *n = get_ctrl_no_update_helper(i);
|
||||
if (!n->in(0)) {
|
||||
// Skip dead CFG nodes
|
||||
do {
|
||||
n = (Node*)(((intptr_t)_nodes[n->_idx]) & ~1);
|
||||
n = get_ctrl_no_update_helper(n);
|
||||
} while (!n->in(0));
|
||||
n = find_non_split_ctrl(n);
|
||||
}
|
||||
@ -721,22 +726,15 @@ private:
|
||||
// from old_node to new_node to support the lazy update. Reference
|
||||
// replaces loop reference, since that is not needed for dead node.
|
||||
public:
|
||||
void lazy_update( Node *old_node, Node *new_node ) {
|
||||
assert( old_node != new_node, "no cycles please" );
|
||||
//old_node->set_req( 1, new_node /*NO DU INFO*/ );
|
||||
// Nodes always have DU info now, so re-use the side array slot
|
||||
// for this node to provide the forwarding pointer.
|
||||
_nodes.map( old_node->_idx, (Node*)((intptr_t)new_node + 1) );
|
||||
void lazy_update(Node *old_node, Node *new_node) {
|
||||
assert(old_node != new_node, "no cycles please");
|
||||
// Re-use the side array slot for this node to provide the
|
||||
// forwarding pointer.
|
||||
_nodes.map(old_node->_idx, (Node*)((intptr_t)new_node + 1));
|
||||
}
|
||||
void lazy_replace( Node *old_node, Node *new_node ) {
|
||||
_igvn.replace_node( old_node, new_node );
|
||||
lazy_update( old_node, new_node );
|
||||
}
|
||||
void lazy_replace_proj( Node *old_node, Node *new_node ) {
|
||||
assert( old_node->req() == 1, "use this for Projs" );
|
||||
_igvn.hash_delete(old_node); // Must hash-delete before hacking edges
|
||||
old_node->add_req( NULL );
|
||||
lazy_replace( old_node, new_node );
|
||||
void lazy_replace(Node *old_node, Node *new_node) {
|
||||
_igvn.replace_node(old_node, new_node);
|
||||
lazy_update(old_node, new_node);
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -2654,9 +2654,9 @@ bool PhaseMacroExpand::expand_macro_nodes() {
|
||||
eliminate_macro_nodes();
|
||||
|
||||
// Make sure expansion will not cause node limit to be exceeded.
|
||||
// Worst case is a macro node gets expanded into about 50 nodes.
|
||||
// Worst case is a macro node gets expanded into about 200 nodes.
|
||||
// Allow 50% more for optimization.
|
||||
if (C->check_node_count(C->macro_count() * 75, "out of nodes before macro expansion" ) )
|
||||
if (C->check_node_count(C->macro_count() * 300, "out of nodes before macro expansion" ) )
|
||||
return true;
|
||||
|
||||
// Eliminate Opaque and LoopLimit nodes. Do it after all loop optimizations.
|
||||
|
@ -472,7 +472,7 @@ void PhaseIdealLoop::do_split_if( Node *iff ) {
|
||||
|
||||
// Replace in the graph with lazy-update mechanism
|
||||
new_iff->set_req(0, new_iff); // hook self so it does not go dead
|
||||
lazy_replace_proj( ifp, ifpx );
|
||||
lazy_replace(ifp, ifpx);
|
||||
new_iff->set_req(0, region);
|
||||
|
||||
// Record bits for later xforms
|
||||
|
@ -1334,6 +1334,65 @@ Node *BoolNode::Ideal(PhaseGVN *phase, bool can_reshape) {
|
||||
return new BoolNode( ncmp, _test.negate() );
|
||||
}
|
||||
|
||||
// Change ((x & m) u<= m) or ((m & x) u<= m) to always true
|
||||
// Same with ((x & m) u< m+1) and ((m & x) u< m+1)
|
||||
if (cop == Op_CmpU &&
|
||||
cmp1->Opcode() == Op_AndI) {
|
||||
Node* bound = NULL;
|
||||
if (_test._test == BoolTest::le) {
|
||||
bound = cmp2;
|
||||
} else if (_test._test == BoolTest::lt &&
|
||||
cmp2->Opcode() == Op_AddI &&
|
||||
cmp2->in(2)->find_int_con(0) == 1) {
|
||||
bound = cmp2->in(1);
|
||||
}
|
||||
if (cmp1->in(2) == bound || cmp1->in(1) == bound) {
|
||||
return ConINode::make(1);
|
||||
}
|
||||
}
|
||||
|
||||
// Change ((x & (m - 1)) u< m) into (m > 0)
|
||||
// This is the off-by-one variant of the above
|
||||
if (cop == Op_CmpU &&
|
||||
_test._test == BoolTest::lt &&
|
||||
cmp1->Opcode() == Op_AndI) {
|
||||
Node* l = cmp1->in(1);
|
||||
Node* r = cmp1->in(2);
|
||||
for (int repeat = 0; repeat < 2; repeat++) {
|
||||
bool match = r->Opcode() == Op_AddI && r->in(2)->find_int_con(0) == -1 &&
|
||||
r->in(1) == cmp2;
|
||||
if (match) {
|
||||
// arraylength known to be non-negative, so a (arraylength != 0) is sufficient,
|
||||
// but to be compatible with the array range check pattern, use (arraylength u> 0)
|
||||
Node* ncmp = cmp2->Opcode() == Op_LoadRange
|
||||
? phase->transform(new CmpUNode(cmp2, phase->intcon(0)))
|
||||
: phase->transform(new CmpINode(cmp2, phase->intcon(0)));
|
||||
return new BoolNode(ncmp, BoolTest::gt);
|
||||
} else {
|
||||
// commute and try again
|
||||
l = cmp1->in(2);
|
||||
r = cmp1->in(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Change (arraylength <= 0) or (arraylength == 0)
|
||||
// into (arraylength u<= 0)
|
||||
// Also change (arraylength != 0) into (arraylength u> 0)
|
||||
// The latter version matches the code pattern generated for
|
||||
// array range checks, which will more likely be optimized later.
|
||||
if (cop == Op_CmpI &&
|
||||
cmp1->Opcode() == Op_LoadRange &&
|
||||
cmp2->find_int_con(-1) == 0) {
|
||||
if (_test._test == BoolTest::le || _test._test == BoolTest::eq) {
|
||||
Node* ncmp = phase->transform(new CmpUNode(cmp1, cmp2));
|
||||
return new BoolNode(ncmp, BoolTest::le);
|
||||
} else if (_test._test == BoolTest::ne) {
|
||||
Node* ncmp = phase->transform(new CmpUNode(cmp1, cmp2));
|
||||
return new BoolNode(ncmp, BoolTest::gt);
|
||||
}
|
||||
}
|
||||
|
||||
// Change "bool eq/ne (cmp (Conv2B X) 0)" into "bool eq/ne (cmp X 0)".
|
||||
// This is a standard idiom for branching on a boolean value.
|
||||
Node *c2b = cmp1;
|
||||
@ -1496,4 +1555,3 @@ const Type* Log10DNode::Value(PhaseGVN* phase) const {
|
||||
double d = t1->getd();
|
||||
return TypeD::make( StubRoutines::intrinsic_log10( d ) );
|
||||
}
|
||||
|
||||
|
@ -118,27 +118,46 @@ Flag::Error AllocatePrefetchInstrConstraintFunc(intx value, bool verbose) {
|
||||
}
|
||||
|
||||
Flag::Error AllocatePrefetchStepSizeConstraintFunc(intx value, bool verbose) {
|
||||
if (value < 1 || value > max_jint) {
|
||||
intx max_value = 512;
|
||||
if (value < 1 || value > max_value) {
|
||||
CommandLineError::print(verbose,
|
||||
"AllocatePrefetchStepSize (" INTX_FORMAT ") "
|
||||
"must be between 1 and %d\n",
|
||||
AllocatePrefetchStepSize,
|
||||
max_jint);
|
||||
max_value);
|
||||
return Flag::VIOLATES_CONSTRAINT;
|
||||
}
|
||||
|
||||
if (AllocatePrefetchDistance % AllocatePrefetchStepSize != 0) {
|
||||
CommandLineError::print(verbose,
|
||||
"AllocatePrefetchDistance (" INTX_FORMAT ") "
|
||||
"%% AllocatePrefetchStepSize (" INTX_FORMAT ") "
|
||||
"= " INTX_FORMAT " "
|
||||
"must be 0\n",
|
||||
AllocatePrefetchDistance, AllocatePrefetchStepSize,
|
||||
AllocatePrefetchDistance % AllocatePrefetchStepSize);
|
||||
return Flag::VIOLATES_CONSTRAINT;
|
||||
}
|
||||
CommandLineError::print(verbose,
|
||||
"AllocatePrefetchDistance (" INTX_FORMAT ") "
|
||||
"%% AllocatePrefetchStepSize (" INTX_FORMAT ") "
|
||||
"= " INTX_FORMAT " "
|
||||
"must be 0\n",
|
||||
AllocatePrefetchDistance, AllocatePrefetchStepSize,
|
||||
AllocatePrefetchDistance % AllocatePrefetchStepSize);
|
||||
return Flag::VIOLATES_CONSTRAINT;
|
||||
}
|
||||
|
||||
return Flag::SUCCESS;
|
||||
/* The limit of 64 for the quotient of AllocatePrefetchDistance and AllocatePrefetchSize
|
||||
* originates from the limit of 64 for AllocatePrefetchLines/AllocateInstancePrefetchLines.
|
||||
* If AllocatePrefetchStyle == 2, the quotient from above is used in PhaseMacroExpand::prefetch_allocation()
|
||||
* to determine the number of lines to prefetch. For other values of AllocatePrefetchStyle,
|
||||
* AllocatePrefetchDistance and AllocatePrefetchSize is used. For consistency, all these
|
||||
* quantities must have the same limit (64 in this case).
|
||||
*/
|
||||
if (AllocatePrefetchDistance / AllocatePrefetchStepSize > 64) {
|
||||
CommandLineError::print(verbose,
|
||||
"AllocatePrefetchDistance (" INTX_FORMAT ") too large or "
|
||||
"AllocatePrefetchStepSize (" INTX_FORMAT ") too small; "
|
||||
"try decreasing/increasing values so that "
|
||||
"AllocatePrefetchDistance / AllocatePrefetchStepSize <= 64\n",
|
||||
AllocatePrefetchDistance, AllocatePrefetchStepSize,
|
||||
AllocatePrefetchDistance % AllocatePrefetchStepSize);
|
||||
return Flag::VIOLATES_CONSTRAINT;
|
||||
}
|
||||
|
||||
return Flag::SUCCESS;
|
||||
}
|
||||
|
||||
Flag::Error CompileThresholdConstraintFunc(intx value, bool verbose) {
|
||||
|
@ -2966,16 +2966,16 @@ public:
|
||||
\
|
||||
product(intx, AllocatePrefetchLines, 3, \
|
||||
"Number of lines to prefetch ahead of array allocation pointer") \
|
||||
range(1, max_jint / 2) \
|
||||
range(1, 64) \
|
||||
\
|
||||
product(intx, AllocateInstancePrefetchLines, 1, \
|
||||
"Number of lines to prefetch ahead of instance allocation " \
|
||||
"pointer") \
|
||||
range(1, max_jint / 2) \
|
||||
range(1, 64) \
|
||||
\
|
||||
product(intx, AllocatePrefetchStepSize, 16, \
|
||||
"Step size in bytes of sequential prefetch instructions") \
|
||||
range(1, max_jint) \
|
||||
range(1, 512) \
|
||||
constraint(AllocatePrefetchStepSizeConstraintFunc,AfterMemoryInit)\
|
||||
\
|
||||
product(intx, AllocatePrefetchInstr, 0, \
|
||||
|
@ -24,7 +24,7 @@
|
||||
/*
|
||||
* @test TestCompilerDirectivesCompatibilityBase
|
||||
* @bug 8137167
|
||||
* @library /testlibrary /../../test/lib
|
||||
* @library /testlibrary /test/lib
|
||||
* @modules java.base/sun.misc
|
||||
* java.compiler
|
||||
* java.management
|
||||
|
@ -24,7 +24,7 @@
|
||||
/*
|
||||
* @test TestCompilerDirectivesCompatibilityCommandOff
|
||||
* @bug 8137167
|
||||
* @library /testlibrary /../../test/lib
|
||||
* @library /testlibrary /test/lib
|
||||
* @modules java.base/sun.misc
|
||||
* java.compiler
|
||||
* java.management
|
||||
|
@ -24,7 +24,7 @@
|
||||
/*
|
||||
* @test TestCompilerDirectivesCompatibilityCommandOn
|
||||
* @bug 8137167
|
||||
* @library /testlibrary /../../test/lib
|
||||
* @library /testlibrary /test/lib
|
||||
* @modules java.base/sun.misc
|
||||
* java.compiler
|
||||
* java.management
|
||||
|
@ -24,7 +24,7 @@
|
||||
/*
|
||||
* @test TestCompilerDirectivesCompatibilityFlag
|
||||
* @bug 8137167
|
||||
* @library /testlibrary /../../test/lib
|
||||
* @library /testlibrary /test/lib
|
||||
* @modules java.base/sun.misc
|
||||
* java.compiler
|
||||
* java.management
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests CompileCommand=compileonly
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.commandfile.CompileOnlyTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests CompileCommand=exclude
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.commandfile.ExcludeTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests CompileCommand=log
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.commandfile.LogTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests CompileCommand=print
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.commandfile.PrintTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests CompileCommand=compileonly
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.commands.CompileOnlyTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests CompileCommand=exclude
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.commands.ExcludeTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests CompileCommand=log
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.commands.LogTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests CompileCommand=print
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.commands.PrintTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests directives to be able to compile only specified methods
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.directives.CompileOnlyTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests directives to be able to exclude methods from compilation
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.directives.ExcludeTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests directives to be able to turn on LogCompilation
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.directives.LogTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests directives to be able to turn on print_assembly
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.directives.PrintTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests directives to be able to add and remove directives
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.jcmd.AddAndRemoveTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests jcmd to be able to add a directive to compile only specified methods
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.jcmd.AddCompileOnlyTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests jcmd to be able to add a directive to exclude only specified methods
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.jcmd.AddExcludeTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Tests jcmd to be able to add a directive to log only specified methods
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.jcmd.AddLogTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -26,7 +26,7 @@
|
||||
* @bug 8137167
|
||||
* @summary Tests jcmd to be able to add a directive to print assembly
|
||||
* only for specified methods
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.jcmd.AddPrintAssemblyTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Randomly generates commands with random types
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.mixed.RandomCommandsTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8137167
|
||||
* @summary Randomly generates valid commands with random types
|
||||
* @library /testlibrary /../../test/lib /compiler/testlibrary ../share /
|
||||
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
|
||||
* @build compiler.compilercontrol.mixed.RandomValidCommandsTest
|
||||
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
|
||||
* compiler.testlibrary.CompilerUtils compiler.compilercontrol.share.actions.*
|
||||
|
@ -32,8 +32,8 @@ import java.util.Arrays;
|
||||
public enum Command {
|
||||
COMPILEONLY("compileonly", ".*", "-Xbatch"),
|
||||
EXCLUDE("exclude", "", "-Xbatch"),
|
||||
INLINE("inline", ".*"),
|
||||
DONTINLINE("dontinline", ""),
|
||||
INLINE("inline", ".*", "-Xbatch"),
|
||||
DONTINLINE("dontinline", "", "-Xbatch"),
|
||||
LOG("log", "", "-XX:+UnlockDiagnosticVMOptions",
|
||||
"-XX:+LogCompilation", "-XX:LogFile=" + LogProcessor.LOG_FILE),
|
||||
PRINT("print", ""),
|
||||
|
@ -27,7 +27,7 @@ import jdk.test.lib.ProcessTools;
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @library /testlibrary /../../test/lib /compiler/whitebox
|
||||
* @library /testlibrary /test/lib /compiler/whitebox
|
||||
* /compiler/testlibrary /compiler/codegen/7184394
|
||||
* @modules java.base/sun.misc
|
||||
* java.management
|
||||
|
@ -28,7 +28,7 @@ import jdk.test.lib.ProcessTools;
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @library /testlibrary /../../test/lib /compiler/whitebox
|
||||
* @library /testlibrary /test/lib /compiler/whitebox
|
||||
* /compiler/testlibrary /compiler/codegen/7184394
|
||||
* @modules java.base/sun.misc
|
||||
* java.management
|
||||
|
@ -24,7 +24,7 @@
|
||||
/*
|
||||
* @test
|
||||
* @bug 8138651
|
||||
* @library /testlibrary /../../test/lib
|
||||
* @library /testlibrary /test/lib
|
||||
* @build IntrinsicDisabledTest
|
||||
* @run main ClassFileInstaller sun.hotspot.WhiteBox
|
||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||
|
@ -42,7 +42,7 @@ import jdk.test.lib.Platform;
|
||||
* @test
|
||||
* @bug 8130150 8131779 8139907
|
||||
* @summary Verify that the Montgomery multiply and square intrinsic works and correctly checks their arguments.
|
||||
* @library /testlibrary /../../test/lib
|
||||
* @library /testlibrary /test/lib
|
||||
* @library /testlibrary
|
||||
* @build MontgomeryMultiplyTest
|
||||
* @run main ClassFileInstaller sun.hotspot.WhiteBox
|
||||
|
@ -26,7 +26,7 @@
|
||||
* @test
|
||||
* @bug 8145336
|
||||
* @summary PPC64: fix string intrinsics after CompactStrings change
|
||||
* @library /testlibrary /../../test/lib
|
||||
* @library /testlibrary /test/lib
|
||||
* @build sun.hotspot.WhiteBox
|
||||
* @run main ClassFileInstaller sun.hotspot.WhiteBox
|
||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||
|
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* 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 8147645
|
||||
* @summary Array.fill intrinsification code doesn't mark replaced control as dead
|
||||
* @run main/othervm -XX:-TieredCompilation -XX:CompileCommand=dontinline,TestArraysFillDeadControl::dont_inline TestArraysFillDeadControl
|
||||
*
|
||||
*/
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class TestArraysFillDeadControl {
|
||||
|
||||
static void dont_inline() {
|
||||
}
|
||||
|
||||
static int i = 1;
|
||||
|
||||
public static void main(String[] args) {
|
||||
for (int j = 0; j < 200000; j++) {
|
||||
int[] a = new int[2];
|
||||
int b = i;
|
||||
|
||||
Arrays.fill(a, 1);
|
||||
Arrays.fill(a, 1+b);
|
||||
|
||||
dont_inline();
|
||||
}
|
||||
}
|
||||
}
|
161
hotspot/test/compiler/rangechecks/PowerOf2SizedArraysChecks.java
Normal file
161
hotspot/test/compiler/rangechecks/PowerOf2SizedArraysChecks.java
Normal file
@ -0,0 +1,161 @@
|
||||
/*
|
||||
* Copyright (c) 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
|
||||
* 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 8003585
|
||||
* @summary strength reduce or eliminate range checks for power-of-two sized arrays
|
||||
* @run main/othervm -XX:CompileCommand=compileonly,PowerOf2SizedArraysChecks::test* -XX:-BackgroundCompilation PowerOf2SizedArraysChecks
|
||||
*
|
||||
*/
|
||||
|
||||
import java.util.function.*;
|
||||
|
||||
public class PowerOf2SizedArraysChecks {
|
||||
|
||||
static void check_result(String name, int x, int m, boolean expected, boolean res) {
|
||||
if (expected != res) {
|
||||
throw new RuntimeException("Bad result in " + name + " for x = " + x + " m = " + m + " expected " + expected + " got " + res);
|
||||
}
|
||||
}
|
||||
|
||||
static void helper(String name, BiFunction<Integer, int[], Boolean> test, int[] x_values, int[] m_values, boolean[][] expected) {
|
||||
for (int i = 0; i < x_values.length; i++) {
|
||||
int x = x_values[i];
|
||||
for (int j = 0; j < m_values.length; j++) {
|
||||
int m = m_values[j];
|
||||
int[] array = new int[m];
|
||||
boolean res = test.apply(x, array);
|
||||
check_result(name, x, m, expected[i][j], res);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void check_result(String name, int m, boolean expected, boolean res) {
|
||||
if (expected != res) {
|
||||
throw new RuntimeException("Bad result in " + name + " for m = " + m + " expected " + expected + " got " + res);
|
||||
}
|
||||
}
|
||||
|
||||
static void helper2(String name, Function<int[], Boolean> test, int[] m_values, boolean[] expected) {
|
||||
for (int j = 0; j < m_values.length; j++) {
|
||||
int m = m_values[j];
|
||||
int[] array = new int[m];
|
||||
boolean res = test.apply(array);
|
||||
check_result(name, m, expected[j], res);
|
||||
}
|
||||
}
|
||||
|
||||
// ((x & m) u<= m) is always true
|
||||
static boolean test1(int x, int[] array) {
|
||||
int m = array.length;
|
||||
if ((x & m) < 0 || (x & m) > m) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// ((x & (m - 1)) u< m) iff (m > 0)
|
||||
static boolean test2(int x, int[] array) {
|
||||
int m = array.length;
|
||||
if ((x & (m-1)) < 0 || (x & (m-1)) >= m) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static boolean test3(int x, int[] array) {
|
||||
try {
|
||||
int v = array[x & (array.length-1)];
|
||||
} catch(ArrayIndexOutOfBoundsException aioobe) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// arraylength <= 0 to arraylength u<= 0
|
||||
static boolean test4(int[] array) {
|
||||
if (array.length <= 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// arraylength == 0 to arraylength u<= 0
|
||||
static boolean test5(int[] array) {
|
||||
if (array.length == 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// arraylength != 0 to arraylength u> 0
|
||||
static boolean test6(int[] array) {
|
||||
if (array.length != 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static public void main(String[] args) {
|
||||
int[] x_values = {-10, -5, 0, 5, 8, 16, 100};
|
||||
int[] m_values = { 16, 10, 0 };
|
||||
|
||||
boolean[][] test1_expected = new boolean[x_values.length][m_values.length];
|
||||
for (int i = 0; i < x_values.length; i++) {
|
||||
for (int j = 0; j < m_values.length; j++) {
|
||||
test1_expected[i][j] = true;
|
||||
}
|
||||
}
|
||||
|
||||
boolean[][] test2_expected = new boolean[x_values.length][m_values.length];
|
||||
for (int i = 0; i < x_values.length; i++) {
|
||||
for (int j = 0; j < m_values.length; j++) {
|
||||
test2_expected[i][j] = (m_values[j] > 0);
|
||||
}
|
||||
}
|
||||
|
||||
boolean[] test4_expected = new boolean[m_values.length];
|
||||
for (int i = 0; i < m_values.length; i++) {
|
||||
test4_expected[i] = (m_values[i] > 0);
|
||||
}
|
||||
boolean[] test5_expected = new boolean[m_values.length];
|
||||
for (int i = 0; i < m_values.length; i++) {
|
||||
test5_expected[i] = (m_values[i] != 0);
|
||||
}
|
||||
boolean[] test6_expected = new boolean[m_values.length];
|
||||
for (int i = 0; i < m_values.length; i++) {
|
||||
test6_expected[i] = (m_values[i] == 0);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 20000; i++) {
|
||||
helper("test1", PowerOf2SizedArraysChecks::test1, x_values, m_values, test1_expected);
|
||||
helper("test2", PowerOf2SizedArraysChecks::test2, x_values, m_values, test2_expected);
|
||||
helper("test3", PowerOf2SizedArraysChecks::test3, x_values, m_values, test2_expected);
|
||||
helper2("test4", PowerOf2SizedArraysChecks::test4, m_values, test4_expected);
|
||||
helper2("test5", PowerOf2SizedArraysChecks::test5, m_values, test5_expected);
|
||||
helper2("test6", PowerOf2SizedArraysChecks::test6, m_values, test6_expected);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* 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 8148490
|
||||
* @summary Test correct saving and restoring of vector registers at safepoints.
|
||||
* @run main/othervm -Xbatch -XX:-TieredCompilation -XX:CompileCommand=exclude,TestRegisterRestoring::main -XX:+SafepointALot TestRegisterRestoring
|
||||
*/
|
||||
public class TestRegisterRestoring {
|
||||
public static void main(String args[]) throws Exception {
|
||||
// Initialize
|
||||
float[] array = new float[100];
|
||||
for (int i = 0; i < array.length; ++i) {
|
||||
array[i] = 0;
|
||||
}
|
||||
// Test
|
||||
for (int j = 0; j < 20_000; ++j) {
|
||||
increment(array);
|
||||
// Check result
|
||||
for (int i = 0; i < array.length; i++) {
|
||||
if (array[i] != 10_000) {
|
||||
throw new RuntimeException("Test failed: array[" + i + "] = " + array[i] + " but should be 10.000");
|
||||
}
|
||||
array[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void increment(float[] array) {
|
||||
// Loop with safepoint
|
||||
for (long l = 0; l < 10_000; l++) {
|
||||
// Vectorized loop
|
||||
for (int i = 0; i < array.length; ++i) {
|
||||
array[i] += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,7 @@
|
||||
* @test TestStableMemoryBarrier
|
||||
* @bug 8139758
|
||||
* @summary tests memory barrier correctly inserted for stable fields
|
||||
* @library /testlibrary /../../test/lib
|
||||
* @library /testlibrary /test/lib
|
||||
*
|
||||
* @run main/bootclasspath -Xcomp -XX:CompileOnly=::testCompile
|
||||
* java.lang.invoke.TestStableMemoryBarrier
|
||||
|
@ -27,7 +27,7 @@
|
||||
* @summary C2 can not handle returns with inccompatible interface arrays
|
||||
* @modules java.base/jdk.internal.org.objectweb.asm
|
||||
* java.base/sun.misc
|
||||
* @library /testlibrary /../../test/lib
|
||||
* @library /testlibrary /test/lib
|
||||
* @build sun.hotspot.WhiteBox
|
||||
* @run main ClassFileInstaller sun.hotspot.WhiteBox
|
||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||
|
@ -92,33 +92,36 @@ public class AllocationCodeBlobTest {
|
||||
|
||||
private void test() {
|
||||
System.out.printf("type %s%n", type);
|
||||
long start = getUsage();
|
||||
long addr = WHITE_BOX.allocateCodeBlob(SIZE, type.id);
|
||||
Asserts.assertNE(0, addr, "allocation failed");
|
||||
|
||||
// Measure the code cache usage after allocate/free.
|
||||
long start = getUsage();
|
||||
long addr1 = WHITE_BOX.allocateCodeBlob(SIZE, type.id);
|
||||
long firstAllocation = getUsage();
|
||||
WHITE_BOX.freeCodeBlob(addr1);
|
||||
long firstFree = getUsage();
|
||||
long addr2 = WHITE_BOX.allocateCodeBlob(SIZE, type.id);
|
||||
long secondAllocation = getUsage();
|
||||
WHITE_BOX.freeCodeBlob(addr2);
|
||||
|
||||
// The following code may trigger resolving of invokedynamic
|
||||
// instructions and therefore method handle intrinsic creation
|
||||
// in the code cache. Make sure this is executed after measuring
|
||||
// the code cache usage.
|
||||
Asserts.assertNE(0, addr1, "first allocation failed");
|
||||
Asserts.assertNE(0, addr2, "second allocation failed");
|
||||
Asserts.assertLTE(start + SIZE, firstAllocation,
|
||||
"allocation should increase memory usage: "
|
||||
+ start + " + " + SIZE + " <= " + firstAllocation);
|
||||
|
||||
WHITE_BOX.freeCodeBlob(addr);
|
||||
long firstFree = getUsage();
|
||||
Asserts.assertLTE(firstFree, firstAllocation,
|
||||
"free shouldn't increase memory usage: "
|
||||
+ firstFree + " <= " + firstAllocation);
|
||||
|
||||
addr = WHITE_BOX.allocateCodeBlob(SIZE, type.id);
|
||||
Asserts.assertNE(0, addr, "allocation failed");
|
||||
|
||||
long secondAllocation = getUsage();
|
||||
Asserts.assertEQ(firstAllocation, secondAllocation);
|
||||
|
||||
WHITE_BOX.freeCodeBlob(addr);
|
||||
System.out.println("allocating till possible...");
|
||||
ArrayList<Long> blobs = new ArrayList<>();
|
||||
int size = (int) (CODE_CACHE_SIZE >> 7);
|
||||
while ((addr = WHITE_BOX.allocateCodeBlob(size, type.id)) != 0) {
|
||||
blobs.add(addr);
|
||||
while ((addr1 = WHITE_BOX.allocateCodeBlob(size, type.id)) != 0) {
|
||||
blobs.add(addr1);
|
||||
}
|
||||
for (Long blob : blobs) {
|
||||
WHITE_BOX.freeCodeBlob(blob);
|
||||
|
@ -27,7 +27,7 @@
|
||||
* @summary Check that G1 does not report empty PLAB statistics in the first evacuation.
|
||||
* @requires vm.gc=="G1" | vm.gc=="null"
|
||||
* @key gc
|
||||
* @library /testlibrary /../../test/lib
|
||||
* @library /testlibrary /test/lib
|
||||
* @build sun.hotspot.WhiteBox
|
||||
* @run main ClassFileInstaller sun.hotspot.WhiteBox
|
||||
* @run driver TestPLABOutput
|
||||
|
@ -24,6 +24,7 @@
|
||||
/*
|
||||
* @test IntxTest
|
||||
* @bug 8028756
|
||||
* @ignore 8148758
|
||||
* @library /testlibrary /test/lib
|
||||
* @modules java.management/sun.management
|
||||
* @build IntxTest
|
||||
|
@ -347,3 +347,4 @@ d3e834ff74e724a2b92a558e18e8cbf81c6dbc59 jdk-9+101
|
||||
9dcf193c0b6cf22c0e89e2dc705a2c0f520ae064 jdk-9+102
|
||||
bdbf2342b21bd8ecad1b4e6499a0dfb314952bd7 jdk-9+103
|
||||
58448465334e1d8bf1cfc09052783937b1cc21c0 jdk-9+104
|
||||
5acf6071d4d610068a19c79e004ba8e59cf1b087 jdk-9+105
|
||||
|
@ -123,7 +123,7 @@ import org.xml.sax.ext.LexicalHandler;
|
||||
* @see Serializer
|
||||
* @see org.w3c.dom.ls.LSSerializer
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -37,7 +37,7 @@ import org.w3c.dom.DocumentFragment;
|
||||
* @author <a href="mailto:Scott_Boag/CAM/Lotus@lotus.com">Scott Boag</a>
|
||||
* @author <a href="mailto:arkin@intalio.com">Assaf Arkin</a>
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -72,7 +72,7 @@ import org.w3c.dom.ls.LSSerializerFilter;
|
||||
* @author Arun Yadav, Sun Microsystems
|
||||
* @author Sunitha Reddy, Sun Microsystems
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, replaced by
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, replaced by
|
||||
* {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}
|
||||
*/
|
||||
public class DOMSerializerImpl implements LSSerializer, DOMConfiguration {
|
||||
|
@ -31,7 +31,7 @@ import java.util.Map;
|
||||
* @author <a href="mailto:arkin@intalio.com">Assaf Arkin</a>
|
||||
* @see BaseMarkupSerializer
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -32,7 +32,7 @@ import java.nio.charset.CharsetEncoder;
|
||||
/**
|
||||
* This class represents an encoding.
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -37,7 +37,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
*
|
||||
* @author <a href="mailto:arkin@intalio.com">Assaf Arkin</a>
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -46,7 +46,7 @@ import java.util.Map;
|
||||
*
|
||||
* @author <a href="mailto:arkin@intalio.com">Assaf Arkin</a>
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -34,7 +34,7 @@ import java.io.IOException;
|
||||
*
|
||||
* @author <a href="mailto:arkin@intalio.com">Assaf Arkin</a>
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -27,7 +27,7 @@ package com.sun.org.apache.xml.internal.serialize;
|
||||
* @author <a href="mailto:arkin@intalio..com">Assaf Arkin</a>
|
||||
* @see OutputFormat
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -27,7 +27,7 @@ package com.sun.org.apache.xml.internal.serialize;
|
||||
* @author <a href="mailto:arkin@intalio.com">Assaf Arkin</a>
|
||||
* @see OutputFormat
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -60,7 +60,7 @@ import org.w3c.dom.Node;
|
||||
* @see Method
|
||||
* @see LineSeparator
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -42,7 +42,7 @@ import java.io.IOException;
|
||||
*
|
||||
* @author <a href="mailto:arkin@intalio.com">Assaf Arkin</a>
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -62,7 +62,7 @@ import org.xml.sax.DocumentHandler;
|
||||
* @see OutputFormat
|
||||
* @see DOMSerializer
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -37,7 +37,7 @@ import java.util.StringTokenizer;
|
||||
* @author <a href="mailto:Scott_Boag/CAM/Lotus@lotus.com">Scott Boag</a>
|
||||
* @author <a href="mailto:arkin@intalio.com">Assaf Arkin</a>
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -36,7 +36,7 @@ import com.sun.org.apache.xerces.internal.dom.DOMMessageFormatter;
|
||||
* @author <a href="mailto:Scott_Boag/CAM/Lotus@lotus.com">Scott Boag</a>
|
||||
* @author <a href="mailto:arkin@intalio.com">Assaf Arkin</a>
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -60,7 +60,7 @@ import org.xml.sax.SAXException;
|
||||
* @author <a href="mailto:arkin@intalio.com">Assaf Arkin</a>
|
||||
* @see Serializer
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -79,7 +79,7 @@ import org.xml.sax.SAXException;
|
||||
* @author Elena Litani IBM
|
||||
* @see Serializer
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -90,7 +90,7 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||
* @author Elena Litani IBM
|
||||
* @see Serializer
|
||||
*
|
||||
* @deprecated As of JDK 1.9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
|
||||
* is replaced by that of Xalan. Main class
|
||||
* {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
|
||||
* by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
|
||||
|
@ -350,3 +350,4 @@ d0a97e57d2336238edf6a4cd60aafe67deb7258d jdk-9+100
|
||||
0868b93587cc99df3a4f4d3817a1aa756bea60ab jdk-9+102
|
||||
eb5e005a17e50d7d8340daaf21a5c3c5ae358d68 jdk-9+103
|
||||
0f557aa096e2a5c9733d406d8cf0c2e6b1f8ca60 jdk-9+104
|
||||
45a666c58e4c7d07638878684ad09decb3229dc9 jdk-9+105
|
||||
|
@ -28,62 +28,97 @@ package com.sun.xml.internal.ws.api.pipe;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.concurrent.ThreadFactory;
|
||||
|
||||
/**
|
||||
* Simple utility class to instantiate correct Thread instance
|
||||
* depending on runtime context (jdk/non-jdk usage)
|
||||
* depending on runtime context (jdk/non-jdk usage) and Java version.
|
||||
*
|
||||
* @author miroslav.kos@oracle.com
|
||||
*/
|
||||
final class ThreadHelper {
|
||||
|
||||
private static final String SAFE_THREAD_NAME = "sun.misc.ManagedLocalsThread";
|
||||
private static final Constructor THREAD_CONSTRUCTOR;
|
||||
|
||||
private static final ThreadFactory threadFactory;
|
||||
|
||||
// no instantiating wanted
|
||||
private ThreadHelper() {
|
||||
}
|
||||
|
||||
static {
|
||||
THREAD_CONSTRUCTOR = AccessController.doPrivileged(
|
||||
new PrivilegedAction<Constructor> () {
|
||||
threadFactory = AccessController.doPrivileged(
|
||||
new PrivilegedAction<ThreadFactory> () {
|
||||
@Override
|
||||
public Constructor run() {
|
||||
public ThreadFactory run() {
|
||||
// In order of preference
|
||||
try {
|
||||
Class cls = Class.forName(SAFE_THREAD_NAME);
|
||||
if (cls != null) {
|
||||
return cls.getConstructor(Runnable.class);
|
||||
try {
|
||||
Class<Thread> cls = Thread.class;
|
||||
Constructor<Thread> ctr = cls.getConstructor(
|
||||
ThreadGroup.class,
|
||||
Runnable.class,
|
||||
String.class,
|
||||
long.class,
|
||||
boolean.class);
|
||||
return new JDK9ThreadFactory(ctr);
|
||||
} catch (NoSuchMethodException ignored) {
|
||||
// constructor newly added in Java SE 9
|
||||
}
|
||||
Class<?> cls = Class.forName(SAFE_THREAD_NAME);
|
||||
Constructor<?> ctr = cls.getConstructor(Runnable.class);
|
||||
return new SunMiscThreadFactory(ctr);
|
||||
} catch (ClassNotFoundException ignored) {
|
||||
} catch (NoSuchMethodException ignored) {
|
||||
}
|
||||
return null;
|
||||
return new LegacyThreadFactory();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
static Thread createNewThread(final Runnable r) {
|
||||
if (isJDKInternal()) {
|
||||
return AccessController.doPrivileged(
|
||||
new PrivilegedAction<Thread>() {
|
||||
@Override
|
||||
public Thread run() {
|
||||
try {
|
||||
return (Thread) THREAD_CONSTRUCTOR.newInstance(r);
|
||||
} catch (Exception e) {
|
||||
return new Thread(r);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
} else {
|
||||
return new Thread(r);
|
||||
return threadFactory.newThread(r);
|
||||
}
|
||||
|
||||
// A Thread factory backed by the Thread constructor that
|
||||
// suppresses inheriting of inheritable thread-locals.
|
||||
private static class JDK9ThreadFactory implements ThreadFactory {
|
||||
final Constructor<Thread> ctr;
|
||||
JDK9ThreadFactory(Constructor<Thread> ctr) { this.ctr = ctr; }
|
||||
@Override public Thread newThread(Runnable r) {
|
||||
try {
|
||||
return ctr.newInstance(null, r, "toBeReplaced", 0, false);
|
||||
} catch (ReflectiveOperationException x) {
|
||||
throw new InternalError(x);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isJDKInternal() {
|
||||
String className = ThreadHelper.class.getName();
|
||||
return className.contains(".internal.");
|
||||
// A Thread factory backed by sun.misc.ManagedLocalsThread
|
||||
private static class SunMiscThreadFactory implements ThreadFactory {
|
||||
final Constructor<?> ctr;
|
||||
SunMiscThreadFactory(Constructor<?> ctr) { this.ctr = ctr; }
|
||||
@Override public Thread newThread(Runnable r) {
|
||||
return AccessController.doPrivileged(
|
||||
new PrivilegedAction<Thread>() {
|
||||
@Override
|
||||
public Thread run() {
|
||||
try {
|
||||
return (Thread) ctr.newInstance(r);
|
||||
} catch (Exception e) {
|
||||
return new Thread(r);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// A Thread factory backed by new Thread(Runnable)
|
||||
private static class LegacyThreadFactory implements ThreadFactory {
|
||||
@Override public Thread newThread(Runnable r) {
|
||||
return new Thread(r);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -347,3 +347,4 @@ e1a789be1535741274c9779f4d4ca3495196b5c3 jdk-9+99
|
||||
6eb3c8132e489dab81adde4ce29844904ce15482 jdk-9+102
|
||||
eee1ced1d8e78293f2a004af818ca474387dbebf jdk-9+103
|
||||
8faf1aec77a9517c69d2f4d8dd146429852ace7f jdk-9+104
|
||||
55518739e399a1066c8613e19100d51b38d9f223 jdk-9+105
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -78,11 +78,9 @@ $(SUPPORT_OUTPUTDIR)/gensrc/jdk.hotspot.agent/META-INF/services/com.sun.jdi.conn
|
||||
$(install-file)
|
||||
|
||||
# Some platforms don't have the serviceability agent
|
||||
ifeq (, $(filter $(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU), aix-ppc64))
|
||||
ifneq ($(JVM_VARIANT_ZERO), true)
|
||||
GENSRC_JDK_JDI += $(SUPPORT_OUTPUTDIR)/gensrc/jdk.jdi/META-INF/services/com.sun.jdi.connect.Connector \
|
||||
$(SUPPORT_OUTPUTDIR)/gensrc/jdk.hotspot.agent/META-INF/services/com.sun.jdi.connect.Connector
|
||||
endif
|
||||
ifeq ($(INCLUDE_SA), true)
|
||||
GENSRC_JDK_JDI += $(SUPPORT_OUTPUTDIR)/gensrc/jdk.jdi/META-INF/services/com.sun.jdi.connect.Connector \
|
||||
$(SUPPORT_OUTPUTDIR)/gensrc/jdk.hotspot.agent/META-INF/services/com.sun.jdi.connect.Connector
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,8 +26,12 @@
|
||||
include NativeCompilation.gmk
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
DISABLE_MAPFILES := true
|
||||
ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN)
|
||||
else
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
DISABLE_MAPFILES := true
|
||||
endif
|
||||
ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,/../lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli)
|
||||
|
||||
# Applications expect to be able to link against libjawt without invoking
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -36,6 +36,10 @@ GLOBAL_VERSION_INFO_RESOURCE := $(JDK_TOPDIR)/src/java.base/windows/native/commo
|
||||
# elegant solution to this.
|
||||
WIN_JAVA_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib
|
||||
|
||||
ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx windows), )
|
||||
DISABLE_MAPFILES := true
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Find the default set of src dirs for a native library.
|
||||
# Param 1 - module name
|
||||
|
@ -14,13 +14,14 @@ public class CharacterName {
|
||||
System.err.println("Usage: java CharacterName UnicodeData.txt uniName.dat");
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
reader = new FileReader(args[0]);
|
||||
BufferedReader bfr = new BufferedReader(reader);
|
||||
String line = null;
|
||||
|
||||
StringBuilder namePool = new StringBuilder();
|
||||
byte[] cpPoolBytes = new byte[0x100000];
|
||||
boolean[] cpBlocks = new boolean[(Character.MAX_CODE_POINT + 1) >> 8];
|
||||
int bkNum = 0;
|
||||
ByteBuffer cpBB = ByteBuffer.wrap(cpPoolBytes);
|
||||
int lastCp = 0;
|
||||
int cpNum = 0;
|
||||
@ -32,10 +33,26 @@ public class CharacterName {
|
||||
if (spec != null) {
|
||||
int cp = spec.getCodePoint();
|
||||
String name = spec.getName();
|
||||
cpNum++;
|
||||
if (name.equals("<control>") && spec.getOldName() != null) {
|
||||
if (spec.getOldName().length() != 0)
|
||||
if (cp == 0x7) // <control>BELL -> BEL; u+1f514 <-> BELL
|
||||
name = "BEL";
|
||||
else if (spec.getOldName().length() != 0)
|
||||
name = spec.getOldName();
|
||||
/*
|
||||
3 "figment" characters from NameAliases.txt
|
||||
Several documented labels for C1 control code points which
|
||||
were never actually approved in any standard...but were
|
||||
implemented in Perl regex.
|
||||
0080;PADDING CHARACTER;figment
|
||||
0081;HIGH OCTET PRESET;figment
|
||||
0099;SINGLE GRAPHIC CHARACTER INTRODUCER;figment
|
||||
*/
|
||||
else if (cp == 0x80)
|
||||
name = "PADDING CHARACTER";
|
||||
else if (cp == 0x81)
|
||||
name = "HIGH OCTET PRESET";
|
||||
else if (cp == 0x99)
|
||||
name = "SINGLE GRAPHIC CHARACTER INTRODUCER";
|
||||
else
|
||||
continue;
|
||||
} else if (name.startsWith("<")) {
|
||||
@ -61,7 +78,11 @@ public class CharacterName {
|
||||
*/
|
||||
continue;
|
||||
}
|
||||
|
||||
cpNum++;
|
||||
if (!cpBlocks[cp >> 8]) {
|
||||
cpBlocks[cp >> 8] = true;
|
||||
bkNum++;
|
||||
}
|
||||
if (cp == lastCp + 1) {
|
||||
cpBB.put((byte)name.length());
|
||||
} else {
|
||||
@ -76,11 +97,12 @@ public class CharacterName {
|
||||
byte[] namePoolBytes = namePool.toString().getBytes("ASCII");
|
||||
int cpLen = cpBB.position();
|
||||
int total = cpLen + namePoolBytes.length;
|
||||
|
||||
DataOutputStream dos = new DataOutputStream(
|
||||
new DeflaterOutputStream(
|
||||
new FileOutputStream(args[1])));
|
||||
dos.writeInt(total); // total
|
||||
dos.writeInt(bkNum); // bkNum;
|
||||
dos.writeInt(cpNum); // cpNum
|
||||
dos.writeInt(cpLen); // nameOff
|
||||
dos.write(cpPoolBytes, 0, cpLen);
|
||||
dos.write(namePoolBytes);
|
||||
|
@ -3144,7 +3144,15 @@ public class ObjectInputStream
|
||||
* utflen bytes.
|
||||
*/
|
||||
private String readUTFBody(long utflen) throws IOException {
|
||||
StringBuilder sbuf = new StringBuilder();
|
||||
StringBuilder sbuf;
|
||||
if (utflen > 0 && utflen < Integer.MAX_VALUE) {
|
||||
// a reasonable initial capacity based on the UTF length
|
||||
int initialCapacity = Math.min((int)utflen, 0xFFFF);
|
||||
sbuf = new StringBuilder(initialCapacity);
|
||||
} else {
|
||||
sbuf = new StringBuilder();
|
||||
}
|
||||
|
||||
if (!blkmode) {
|
||||
end = pos = 0;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user