Merge
This commit is contained in:
commit
c325694db0
@ -4,6 +4,7 @@ nbproject/private/
|
||||
^webrev
|
||||
^.hgtip
|
||||
^.bridge2
|
||||
^.jib/
|
||||
.DS_Store
|
||||
.metadata/
|
||||
.recommenders/
|
||||
|
2
.hgtags
2
.hgtags
@ -337,3 +337,5 @@ d131f4b8433a79408f935eff9bf92a0664229b60 jdk9-b90
|
||||
f242d4332f563648426a1b0fa02d8741beba19ef jdk9-b92
|
||||
09206c6513b300e1ac8541f3be012e1a49312104 jdk9-b93
|
||||
25a2cab05cfbe6034b71d9e72d64c65b0572ce63 jdk9-b94
|
||||
5ac6287ec71aafe021cc839d8bc828108d23aaba jdk-9+95
|
||||
139f19d70350238e15e107945cea75082b6380b3 jdk-9+96
|
||||
|
@ -337,3 +337,5 @@ cf1dc4c035fb84693d4ae5ad818785cb4d1465d1 jdk9-b90
|
||||
106c06398f7ab330eef9e335fbd3a5a8ead23b77 jdk9-b92
|
||||
331fda57dfd323c61804ba0472776790de572937 jdk9-b93
|
||||
349488425abcaf3ff62f580007860b4b56875d10 jdk9-b94
|
||||
12a6fb4f070f8ca8fbca219ab9abf5da8908b317 jdk-9+95
|
||||
5582a79892596169ebddb3e2c2aa44939e4e3f40 jdk-9+96
|
||||
|
@ -99,7 +99,13 @@ AC_DEFUN([BASIC_FIXUP_PATH],
|
||||
AC_MSG_ERROR([The path of $1, which resolves as "$path", is not found.])
|
||||
fi
|
||||
|
||||
$1="`cd "$path"; $THEPWDCMD -L`"
|
||||
if test -d "$path"; then
|
||||
$1="`cd "$path"; $THEPWDCMD -L`"
|
||||
else
|
||||
dir="`$DIRNAME "$path"`"
|
||||
base="`$BASENAME "$path"`"
|
||||
$1="`cd "$dir"; $THEPWDCMD -L`/$base"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
])
|
||||
@ -237,12 +243,18 @@ AC_DEFUN([BASIC_DEPRECATED_ARG_WITH],
|
||||
# Register a --enable argument but mark it as deprecated
|
||||
# $1: The name of the with argument to deprecate, not including --enable-
|
||||
# $2: The name of the argument to deprecate, in shell variable style (i.e. with _ instead of -)
|
||||
# $3: Messages to user.
|
||||
AC_DEFUN([BASIC_DEPRECATED_ARG_ENABLE],
|
||||
[
|
||||
AC_ARG_ENABLE($1, [AS_HELP_STRING([--enable-$1],
|
||||
[Deprecated. Option is kept for backwards compatibility and is ignored])])
|
||||
if test "x$enable_$2" != x; then
|
||||
AC_MSG_WARN([Option --enable-$1 is deprecated and will be ignored.])
|
||||
|
||||
if test "x$3" != x; then
|
||||
AC_MSG_WARN([$3])
|
||||
fi
|
||||
|
||||
fi
|
||||
])
|
||||
|
||||
@ -1072,6 +1084,26 @@ AC_DEFUN_ONCE([BASIC_CHECK_BASH_OPTIONS],
|
||||
AC_SUBST(BASH_ARGS)
|
||||
])
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Default make target
|
||||
#
|
||||
AC_DEFUN_ONCE([BASIC_SETUP_DEFAULT_MAKE_TARGET],
|
||||
[
|
||||
AC_ARG_WITH(default-make-target, [AS_HELP_STRING([--with-default-make-target],
|
||||
[set the default make target @<:@exploded-image@:>@])])
|
||||
if test "x$with_default_make_target" = "x" \
|
||||
|| test "x$with_default_make_target" = "xyes"; then
|
||||
DEFAULT_MAKE_TARGET="exploded-image"
|
||||
elif test "x$with_default_make_target" = "xno"; then
|
||||
AC_MSG_ERROR([--without-default-make-target is not a valid option])
|
||||
else
|
||||
DEFAULT_MAKE_TARGET="$with_default_make_target"
|
||||
fi
|
||||
|
||||
AC_SUBST(DEFAULT_MAKE_TARGET)
|
||||
])
|
||||
|
||||
# Code to run after AC_OUTPUT
|
||||
AC_DEFUN_ONCE([BASIC_POST_CONFIG_OUTPUT],
|
||||
[
|
||||
|
8
common/autoconf/configure
vendored
8
common/autoconf/configure
vendored
@ -257,10 +257,14 @@ fi
|
||||
|
||||
# Now transfer control to the script generated by autoconf. This is where the
|
||||
# main work is done.
|
||||
RCDIR=`mktemp -dt jdk-build-configure.tmp.XXXXXX` || exit $?
|
||||
trap "rm -rf \"$RCDIR\"" EXIT
|
||||
conf_logfile=./configure.log
|
||||
(exec 3>&1 ; (. $conf_script_to_run "${conf_processed_arguments[@]}" 2>&1 1>&3 ) | tee -a $conf_logfile 1>&2 ; exec 3>&-) | tee -a $conf_logfile
|
||||
(exec 3>&1 ; ((. $conf_script_to_run "${conf_processed_arguments[@]}" 2>&1 1>&3 ) \
|
||||
; echo $? > "$RCDIR/rc" ) \
|
||||
| tee -a $conf_logfile 1>&2 ; exec 3>&-) | tee -a $conf_logfile
|
||||
|
||||
conf_result_code=$?
|
||||
conf_result_code=`cat "$RCDIR/rc"`
|
||||
###
|
||||
### Post-processing
|
||||
###
|
||||
|
@ -121,6 +121,9 @@ PKG_PROG_PKG_CONFIG
|
||||
# After basic tools have been setup, we can check build os specific details.
|
||||
PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION
|
||||
|
||||
# Misc basic settings
|
||||
BASIC_SETUP_DEFAULT_MAKE_TARGET
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# Determine OpenJDK variants, options and version numbers.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -491,53 +491,82 @@ AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC],
|
||||
AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
|
||||
[
|
||||
#
|
||||
# ENABLE_DEBUG_SYMBOLS
|
||||
# NATIVE_DEBUG_SYMBOLS
|
||||
# This must be done after the toolchain is setup, since we're looking at objcopy.
|
||||
#
|
||||
AC_ARG_ENABLE([debug-symbols],
|
||||
[AS_HELP_STRING([--disable-debug-symbols],[disable generation of debug symbols @<:@enabled@:>@])])
|
||||
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@:>@])],
|
||||
[],
|
||||
[with_native_debug_symbols="zipped"])
|
||||
NATIVE_DEBUG_SYMBOLS=$with_native_debug_symbols
|
||||
AC_MSG_RESULT([$NATIVE_DEBUG_SYMBOLS])
|
||||
|
||||
AC_MSG_CHECKING([if we should generate debug symbols])
|
||||
if test "x$NATIVE_DEBUG_SYMBOLS" = xzipped; then
|
||||
|
||||
if test "x$enable_debug_symbols" = "xyes" && test "x$OBJCOPY" = x; then
|
||||
# explicit enabling of enable-debug-symbols and can't find objcopy
|
||||
# this is an error
|
||||
AC_MSG_ERROR([Unable to find objcopy, cannot enable debug-symbols])
|
||||
fi
|
||||
|
||||
if test "x$enable_debug_symbols" = "xyes"; then
|
||||
ENABLE_DEBUG_SYMBOLS=true
|
||||
elif test "x$enable_debug_symbols" = "xno"; then
|
||||
ENABLE_DEBUG_SYMBOLS=false
|
||||
else
|
||||
# Default is on if objcopy is found
|
||||
if test "x$OBJCOPY" != x; then
|
||||
ENABLE_DEBUG_SYMBOLS=true
|
||||
# MacOS X and Windows don't use objcopy but default is on for those OSes
|
||||
elif test "x$OPENJDK_TARGET_OS" = xmacosx || test "x$OPENJDK_TARGET_OS" = xwindows; then
|
||||
ENABLE_DEBUG_SYMBOLS=true
|
||||
else
|
||||
ENABLE_DEBUG_SYMBOLS=false
|
||||
if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
|
||||
if test "x$OBJCOPY" = x; then
|
||||
# enabling of enable-debug-symbols and can't find objcopy
|
||||
# this is an error
|
||||
AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_MSG_RESULT([$ENABLE_DEBUG_SYMBOLS])
|
||||
|
||||
#
|
||||
# ZIP_DEBUGINFO_FILES
|
||||
#
|
||||
AC_MSG_CHECKING([if we should zip debug-info files])
|
||||
AC_ARG_ENABLE([zip-debug-info],
|
||||
[AS_HELP_STRING([--disable-zip-debug-info],[disable zipping of debug-info files @<:@enabled@:>@])],
|
||||
[enable_zip_debug_info="${enableval}"], [enable_zip_debug_info="yes"])
|
||||
AC_MSG_RESULT([${enable_zip_debug_info}])
|
||||
|
||||
if test "x${enable_zip_debug_info}" = "xno"; then
|
||||
ZIP_DEBUGINFO_FILES=false
|
||||
else
|
||||
ENABLE_DEBUG_SYMBOLS=true
|
||||
ZIP_DEBUGINFO_FILES=true
|
||||
# -g is already added by ENABLE_DEBUG_SYMBOLS and the hotspot makefiles
|
||||
# will basically do slowdebug builds when DEBUG_BINARIES is set for
|
||||
# fastdebug builds
|
||||
DEBUG_BINARIES=false
|
||||
STRIP_POLICY=min_strip
|
||||
elif test "x$NATIVE_DEBUG_SYMBOLS" = xnone; then
|
||||
ENABLE_DEBUG_SYMBOLS=false
|
||||
ZIP_DEBUGINFO_FILES=false
|
||||
DEBUG_BINARIES=false
|
||||
STRIP_POLICY=no_strip
|
||||
elif test "x$NATIVE_DEBUG_SYMBOLS" = xinternal; then
|
||||
ENABLE_DEBUG_SYMBOLS=false # -g option only
|
||||
ZIP_DEBUGINFO_FILES=false
|
||||
# Fastdebug builds with this setting will essentially be slowdebug
|
||||
# in hotspot.
|
||||
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
|
||||
if test "x$OBJCOPY" = x; then
|
||||
# enabling of enable-debug-symbols and can't find objcopy
|
||||
# this is an error
|
||||
AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols])
|
||||
fi
|
||||
fi
|
||||
|
||||
ENABLE_DEBUG_SYMBOLS=true
|
||||
ZIP_DEBUGINFO_FILES=false
|
||||
# -g is already added by ENABLE_DEBUG_SYMBOLS and the hotspot makefiles
|
||||
# will basically do slowdebug builds when DEBUG_BINARIES is set for
|
||||
# fastdebug builds
|
||||
DEBUG_BINARIES=false
|
||||
STRIP_POLICY=min_strip
|
||||
else
|
||||
AC_MSG_ERROR([Allowed native debug symbols are: none, internal, external, zipped])
|
||||
fi
|
||||
|
||||
# --enable-debug-symbols is deprecated.
|
||||
# Please use --with-native-debug-symbols=[internal,external,zipped] .
|
||||
BASIC_DEPRECATED_ARG_ENABLE(debug-symbols, debug_symbols,
|
||||
[Please use --with-native-debug-symbols=[[internal,external,zipped]] .])
|
||||
|
||||
# --enable-zip-debug-info is deprecated.
|
||||
# Please use --with-native-debug-symbols=zipped .
|
||||
BASIC_DEPRECATED_ARG_ENABLE(zip-debug-info, zip_debug_info,
|
||||
[Please use --with-native-debug-symbols=zipped .])
|
||||
|
||||
AC_SUBST(NATIVE_DEBUG_SYMBOLS)
|
||||
AC_SUBST(DEBUG_BINARIES)
|
||||
AC_SUBST(STRIP_POLICY)
|
||||
AC_SUBST(ENABLE_DEBUG_SYMBOLS)
|
||||
AC_SUBST(ZIP_DEBUGINFO_FILES)
|
||||
])
|
||||
|
@ -67,7 +67,7 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU],
|
||||
VAR_CPU_ENDIAN=big
|
||||
;;
|
||||
powerpc64le)
|
||||
VAR_CPU=ppc64
|
||||
VAR_CPU=ppc64le
|
||||
VAR_CPU_ARCH=ppc
|
||||
VAR_CPU_BITS=64
|
||||
VAR_CPU_ENDIAN=little
|
||||
|
@ -271,6 +271,9 @@ SJAVAC_SERVER_DIR=$(MAKESUPPORT_OUTPUTDIR)/javacservers
|
||||
# Number of parallel jobs to use for compilation
|
||||
JOBS?=@JOBS@
|
||||
|
||||
# Default make target
|
||||
DEFAULT_MAKE_TARGET:=@DEFAULT_MAKE_TARGET@
|
||||
|
||||
FREETYPE_LIBS:=@FREETYPE_LIBS@
|
||||
FREETYPE_CFLAGS:=@FREETYPE_CFLAGS@
|
||||
FREETYPE_BUNDLE_LIB_PATH=@FREETYPE_BUNDLE_LIB_PATH@
|
||||
@ -418,6 +421,9 @@ ENABLE_DEBUG_SYMBOLS:=@ENABLE_DEBUG_SYMBOLS@
|
||||
CFLAGS_DEBUG_SYMBOLS:=@CFLAGS_DEBUG_SYMBOLS@
|
||||
CXXFLAGS_DEBUG_SYMBOLS:=@CXXFLAGS_DEBUG_SYMBOLS@
|
||||
ZIP_DEBUGINFO_FILES:=@ZIP_DEBUGINFO_FILES@
|
||||
NATIVE_DEBUG_SYMBOLS:=@NATIVE_DEBUG_SYMBOLS@
|
||||
DEBUG_BINARIES:=@DEBUG_BINARIES@
|
||||
STRIP_POLICY:=@STRIP_POLICY@
|
||||
|
||||
#
|
||||
# Compress (or not) jars
|
||||
|
127
common/bin/jib.sh
Normal file
127
common/bin/jib.sh
Normal file
@ -0,0 +1,127 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
# This script installs the JIB tool into it's own local repository and
|
||||
# puts a wrapper scripts into <source-root>/.jib
|
||||
|
||||
mydir="$(dirname "${BASH_SOURCE[0]}")"
|
||||
myname="$(basename "${BASH_SOURCE[0]}")"
|
||||
|
||||
installed_jib_script=${mydir}/../../.jib/jib
|
||||
install_data=${mydir}/../../.jib/.data
|
||||
|
||||
setup_url() {
|
||||
if [ -f "~/.config/jib/jib.conf" ]; then
|
||||
source ~/.config/jib/jib.conf
|
||||
fi
|
||||
|
||||
jib_repository="jdk-virtual"
|
||||
jib_organization="jpg/infra/builddeps"
|
||||
jib_module="jib"
|
||||
jib_revision="2.0-SNAPSHOT"
|
||||
jib_ext="jib.sh.gz"
|
||||
|
||||
closed_script="${mydir}/../../closed/conf/jib-install.conf"
|
||||
if [ -f "${closed_script}" ]; then
|
||||
source "${closed_script}"
|
||||
fi
|
||||
|
||||
if [ -n "${JIB_SERVER}" ]; then
|
||||
jib_server="${JIB_SERVER}"
|
||||
fi
|
||||
if [ -n "${JIB_REPOSITORY}" ]; then
|
||||
jib_repository="${JIB_REPOSITORY}"
|
||||
fi
|
||||
if [ -n "${JIB_ORGANIZATION}" ]; then
|
||||
jib_organization="${JIB_ORGANIZATION}"
|
||||
fi
|
||||
if [ -n "${JIB_MODULE}" ]; then
|
||||
jib_module="${JIB_MODULE}"
|
||||
fi
|
||||
if [ -n "${JIB_REVISION}" ]; then
|
||||
jib_revision="${JIB_REVISION}"
|
||||
fi
|
||||
if [ -n "${JIB_EXTENSION}" ]; then
|
||||
jib_extension="${JIB_EXTENSION}"
|
||||
fi
|
||||
|
||||
if [ -n "${JIB_URL}" ]; then
|
||||
jib_url="${JIB_URL}"
|
||||
data_string="${jib_url}"
|
||||
else
|
||||
data_string="${jib_repository}/${jib_organization}/${jib_module}/${jib_revision}/${jib_module}-${jib_revision}.${jib_ext}"
|
||||
jib_url="${jib_server}/${data_string}"
|
||||
fi
|
||||
}
|
||||
|
||||
install_jib() {
|
||||
if [ -z "${jib_server}" -a -z "${JIB_URL}" ]; then
|
||||
echo "No jib server or URL provided, set either"
|
||||
echo "JIB_SERVER=<base server address>"
|
||||
echo "or"
|
||||
echo "JIB_URL=<full path to install script>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if command -v curl > /dev/null; then
|
||||
getcmd="curl -s"
|
||||
elif command -v wget > /dev/null; then
|
||||
getcmd="wget --quiet -O -"
|
||||
else
|
||||
echo "Could not find either curl or wget"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v gunzip > /dev/null; then
|
||||
echo "Could not find gunzip"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Downloading JIB bootstrap script"
|
||||
mkdir -p "${installed_jib_script%/*}"
|
||||
rm -f "${installed_jib_script}.gz"
|
||||
${getcmd} ${jib_url} > "${installed_jib_script}.gz"
|
||||
if [ ! -s "${installed_jib_script}.gz" ]; then
|
||||
echo "Failed to download ${jib_url}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Extracting JIB bootstrap script"
|
||||
rm -f "${installed_jib_script}"
|
||||
gunzip "${installed_jib_script}.gz"
|
||||
chmod +x "${installed_jib_script}"
|
||||
echo "${data_string}" > "${install_data}"
|
||||
}
|
||||
|
||||
# Main body starts here
|
||||
|
||||
setup_url
|
||||
|
||||
if [ ! -x "${installed_jib_script}" ]; then
|
||||
install_jib
|
||||
elif [ ! -e "${install_data}" ] || [ "${data_string}" != "$(cat "${install_data}")" ]; then
|
||||
echo "Install url changed since last time, reinstalling"
|
||||
install_jib
|
||||
fi
|
||||
|
||||
${installed_jib_script} "$@"
|
@ -378,6 +378,7 @@ jdk/src/java.base/unix/conf/arm/jvm.cfg : jdk/src/solaris/bin/arm/jvm.cfg
|
||||
jdk/src/java.base/unix/conf/i586/jvm.cfg : jdk/src/solaris/bin/i586/jvm.cfg
|
||||
jdk/src/java.base/unix/conf/ia64/jvm.cfg : jdk/src/solaris/bin/ia64/jvm.cfg
|
||||
jdk/src/java.base/unix/conf/ppc64/jvm.cfg : jdk/src/solaris/bin/ppc64/jvm.cfg
|
||||
jdk/src/java.base/unix/conf/ppc64le/jvm.cfg : jdk/src/solaris/bin/ppc64le/jvm.cfg
|
||||
jdk/src/java.base/unix/conf/ppc/jvm.cfg : jdk/src/solaris/bin/ppc/jvm.cfg
|
||||
jdk/src/java.base/unix/conf/sdp/sdp.conf.template : jdk/src/solaris/lib/sdp/sdp.conf.template
|
||||
jdk/src/java.base/unix/conf/sparc/jvm.cfg : jdk/src/solaris/bin/sparc/jvm.cfg
|
||||
@ -1293,10 +1294,7 @@ jdk/src/jdk.crypto.pkcs11/windows/native/libj2pkcs11/j2secmod_md.h : jdk/src/win
|
||||
jdk/src/jdk.crypto.pkcs11/windows/native/libj2pkcs11/p11_md.c : jdk/src/windows/native/sun/security/pkcs11/wrapper/p11_md.c
|
||||
jdk/src/jdk.crypto.pkcs11/windows/native/libj2pkcs11/p11_md.h : jdk/src/windows/native/sun/security/pkcs11/wrapper/p11_md.h
|
||||
jdk/src/jdk.deploy.osx/macosx/classes/com/apple/concurrent/package.html : jdk/src/macosx/classes/com/apple/concurrent/package.html
|
||||
jdk/src/jdk.deploy.osx/macosx/classes/apple/applescript : jdk/src/macosx/classes/apple/applescript
|
||||
jdk/src/jdk.deploy.osx/macosx/classes/apple/security : jdk/src/macosx/classes/apple/security
|
||||
jdk/src/jdk.deploy.osx/macosx/classes/com/apple/concurrent : jdk/src/macosx/classes/com/apple/concurrent
|
||||
jdk/src/jdk.deploy.osx/macosx/native/libapplescriptengine : jdk/src/macosx/native/apple/applescript
|
||||
jdk/src/jdk.deploy.osx/macosx/native/libosx/CFileManager.m : jdk/src/macosx/native/com/apple/eio/CFileManager.m
|
||||
jdk/src/jdk.deploy.osx/macosx/native/libosx/Dispatch.m : jdk/src/macosx/native/com/apple/concurrent/Dispatch.m
|
||||
jdk/src/jdk.deploy.osx/macosx/native/libosx/JavaAppLauncher.m : jdk/src/macosx/native/apple/launcher/JavaAppLauncher.m
|
||||
|
555
common/conf/jib-profiles.js
Normal file
555
common/conf/jib-profiles.js
Normal file
@ -0,0 +1,555 @@
|
||||
/*
|
||||
* 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. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file defines build profiles for the JIB tool and others.
|
||||
*
|
||||
* A build profile defines a set of configuration options and external
|
||||
* dependencies that we for some reason or other care about specifically.
|
||||
* Typically, build profiles are defined for the build configurations we
|
||||
* build regularly.
|
||||
*
|
||||
* Contract against this file from the tools that use it, is to provide
|
||||
* a function on the form:
|
||||
*
|
||||
* getJibProfiles(input)
|
||||
*
|
||||
* which returns an object graph describing the profiles and their
|
||||
* dependencies. The name of the function is based on the name of this
|
||||
* file, minus the extension and the '-', camel cased and prefixed with
|
||||
* 'get'.
|
||||
*
|
||||
*
|
||||
* The parameter 'input' is an object that optionally contains some data.
|
||||
* Optionally because a tool may read the configuration for different purposes.
|
||||
* To initially get a list of available profiles, the active profile may not
|
||||
* yet be known for instance.
|
||||
*
|
||||
* Data that may be set on the input object:
|
||||
*
|
||||
* input.profile = <name of active profile>
|
||||
*
|
||||
* If the active profile is set, the following data from it must also
|
||||
* be provided:
|
||||
*
|
||||
* input.profile
|
||||
* input.target_os
|
||||
* input.target_cpu
|
||||
* input.build_os
|
||||
* input.build_cpu
|
||||
* input.target_platform
|
||||
* input.build_platform
|
||||
* // The build_osenv_* variables describe the unix layer on Windows systems,
|
||||
* // i.e. Cygwin, which may also be 32 or 64 bit.
|
||||
* input.build_osenv
|
||||
* input.build_osenv_cpu
|
||||
* input.build_osenv_platform
|
||||
*
|
||||
* For more complex nested attributes, there is a method "get":
|
||||
*
|
||||
* input.get("<dependency>", "<attribute>")
|
||||
*
|
||||
* Valid attributes are:
|
||||
* install_path
|
||||
* download_path
|
||||
* download_dir
|
||||
*
|
||||
*
|
||||
* The output data generated by this configuration file has the following
|
||||
* format:
|
||||
*
|
||||
* data: {
|
||||
* // Identifies the version of this format to the tool reading it
|
||||
* format_version: "1.0",
|
||||
*
|
||||
* // Name of base outputdir. JIB assumes the actual output dir is formed
|
||||
* // by adding the configuration name: <output_basedir>/<config-name>
|
||||
* output_basedir: "build",
|
||||
* // Configure argument to use to specify configuration name
|
||||
* configuration_configure_arg:
|
||||
* // Make argument to use to specify configuration name
|
||||
* configuration_make_arg:
|
||||
*
|
||||
* profiles: {
|
||||
* <profile-name>: {
|
||||
* // Name of os the profile is built to run on
|
||||
* target_os; <string>
|
||||
* // Name of cpu the profile is built to run on
|
||||
* target_cpu; <string>
|
||||
* // Combination of target_os and target_cpu for convenience
|
||||
* target_platform; <string>
|
||||
* // Name of os the profile is built on
|
||||
* build_os; <string>
|
||||
* // Name of cpu the profile is built on
|
||||
* build_cpu; <string>
|
||||
* // Combination of build_os and build_cpu for convenience
|
||||
* build_platform; <string>
|
||||
*
|
||||
* // List of dependencies needed to build this profile
|
||||
* dependencies: <Array of strings>
|
||||
*
|
||||
* // List of configure args to use for this profile
|
||||
* configure_args: <Array of strings>
|
||||
*
|
||||
* // List of free form labels describing aspects of this profile
|
||||
* labels: <Array of strings>
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* // Dependencies use a Maven like deployment structure
|
||||
* dependencies: {
|
||||
* <dependency-name>: {
|
||||
* // Organization part of path defining this dependency
|
||||
* organization: <string>
|
||||
* // File extension for this dependency
|
||||
* ext: <string>
|
||||
* // Module part of path for defining this dependency,
|
||||
* // defaults to <dependency-name>
|
||||
* module: <string>
|
||||
* // Revision part of path for defining this dependency
|
||||
* revision: <string>
|
||||
*
|
||||
* // List of configure args to add when using this dependency,
|
||||
* // defaults to
|
||||
* // "--with-<dependency-name>=input.get("<dependency-name", "install_path")"
|
||||
* configure_args: <array of strings>
|
||||
*
|
||||
* // Name of environment variable to set when using this dependency
|
||||
* // when running make
|
||||
* environment_name: <string>
|
||||
* // Value of environment variable to set when using this dependency
|
||||
* // when running make
|
||||
* environment_value: <string>
|
||||
*
|
||||
* // Value to add to the PATH variable when using this dependency,
|
||||
* // applies to both make and configure
|
||||
* environment_path: <string>
|
||||
* }
|
||||
*
|
||||
* <dependency-name>: {
|
||||
* // For certain dependencies where a legacy distribution mechanism is
|
||||
* // already in place, the "javare" server layout is also supported
|
||||
* // Indicate that an alternate server source and layout should be used
|
||||
* server: "javare"
|
||||
*
|
||||
* // For "javare", a combination of module, revision,
|
||||
* // build number (optional), files and checksum file is possible for
|
||||
* // artifacts following the standard layout.
|
||||
* module: <string>
|
||||
* revision: <string>
|
||||
* build_number: <string>
|
||||
* checksum_file: <string>
|
||||
* file: <string>
|
||||
*
|
||||
* // For other files, use checksum path and path instead
|
||||
* checksum_path: <string>
|
||||
* path: <string>
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
|
||||
/**
|
||||
* Main entry to generate the profile configuration
|
||||
*
|
||||
* @param input External data to use for generating the configuration
|
||||
* @returns {{}} Profile configuration
|
||||
*/
|
||||
var getJibProfiles = function (input) {
|
||||
|
||||
var data = {};
|
||||
|
||||
// Identifies the version of this format to the tool reading it
|
||||
data.format_version = "1.0";
|
||||
|
||||
// Organization is used when uploading/publishing build results
|
||||
data.organization = "com.oracle.jpg.jdk";
|
||||
|
||||
// The base directory for the build output. JIB will assume that the
|
||||
// actual build directory will be <output_basedir>/<configuration>
|
||||
data.output_basedir = "build";
|
||||
// The configure argument to use to specify the name of the configuration
|
||||
data.configuration_configure_arg = "--with-conf-name=";
|
||||
// The make argument to use to specify the name of the configuration
|
||||
data.configuration_make_arg = "CONF_NAME=";
|
||||
|
||||
// Define some common values
|
||||
var common = getJibProfilesCommon(input);
|
||||
// Generate the profiles part of the configuration
|
||||
data.profiles = getJibProfilesProfiles(input, common);
|
||||
// Generate the dependencies part of the configuration
|
||||
data.dependencies = getJibProfilesDependencies(input, common);
|
||||
|
||||
return data;
|
||||
};
|
||||
|
||||
/**
|
||||
* Generates some common values
|
||||
*
|
||||
* @param input External data to use for generating the configuration
|
||||
* @returns Common values
|
||||
*/
|
||||
var getJibProfilesCommon = function (input) {
|
||||
var common = {
|
||||
dependencies: ["boot_jdk", "gnumake", "jtreg"],
|
||||
configure_args: ["--with-default-make-target=all"],
|
||||
configure_args_32bit: ["--with-target-bits=32", "--with-jvm-variants=client,server"],
|
||||
configure_args_debug: ["--enable-debug"],
|
||||
organization: "jpg.infra.builddeps"
|
||||
};
|
||||
|
||||
return common;
|
||||
};
|
||||
|
||||
/**
|
||||
* Generates the profiles part of the configuration.
|
||||
*
|
||||
* @param input External data to use for generating the configuration
|
||||
* @param common The common values
|
||||
* @returns {{}} Profiles part of the configuration
|
||||
*/
|
||||
var getJibProfilesProfiles = function (input, common) {
|
||||
var profiles = {};
|
||||
|
||||
// Main SE profiles
|
||||
var mainProfiles = {
|
||||
|
||||
"linux-x64": {
|
||||
target_os: "linux",
|
||||
target_cpu: "x64",
|
||||
dependencies: concat(common.dependencies, "devkit"),
|
||||
configure_args: common.configure_args,
|
||||
make_args: common.make_args
|
||||
},
|
||||
|
||||
"linux-x86": {
|
||||
target_os: "linux",
|
||||
target_cpu: "x86",
|
||||
build_cpu: "x64",
|
||||
dependencies: concat(common.dependencies, "devkit"),
|
||||
configure_args: concat(common.configure_args, common.configure_args_32bit),
|
||||
make_args: common.make_args
|
||||
},
|
||||
|
||||
"macosx-x64": {
|
||||
target_os: "macosx",
|
||||
target_cpu: "x64",
|
||||
dependencies: concat(common.dependencies, "devkit"),
|
||||
configure_args: concat(common.configure_args, "--with-sdk-name=macosx10.9"),
|
||||
make_args: common.make_args
|
||||
},
|
||||
|
||||
"solaris-x64": {
|
||||
target_os: "solaris",
|
||||
target_cpu: "x64",
|
||||
dependencies: concat(common.dependencies, "devkit", "cups"),
|
||||
configure_args: common.configure_args,
|
||||
make_args: common.make_args
|
||||
},
|
||||
|
||||
"solaris-sparcv9": {
|
||||
target_os: "solaris",
|
||||
target_cpu: "sparcv9",
|
||||
dependencies: concat(common.dependencies, "devkit", "cups"),
|
||||
configure_args: common.configure_args,
|
||||
make_args: common.make_args
|
||||
},
|
||||
|
||||
"windows-x64": {
|
||||
target_os: "windows",
|
||||
target_cpu: "x64",
|
||||
dependencies: concat(common.dependencies, "devkit", "freetype"),
|
||||
configure_args: common.configure_args,
|
||||
make_args: common.make_args
|
||||
},
|
||||
|
||||
"windows-x86": {
|
||||
target_os: "windows",
|
||||
target_cpu: "x86",
|
||||
build_cpu: "x64",
|
||||
dependencies: concat(common.dependencies, "devkit", "freetype"),
|
||||
configure_args: concat(common.configure_args, common.configure_args_32bit),
|
||||
make_args: common.make_args
|
||||
}
|
||||
};
|
||||
profiles = concatObjects(profiles, mainProfiles);
|
||||
// Generate debug versions of all the main profiles
|
||||
profiles = concatObjects(profiles, generateDebugProfiles(common, mainProfiles));
|
||||
|
||||
// Specific open profiles needed for JPRT testing
|
||||
var jprtOpenProfiles = {
|
||||
|
||||
"linux-x64-open": {
|
||||
target_os: mainProfiles["linux-x64"].target_os,
|
||||
target_cpu: mainProfiles["linux-x64"].target_cpu,
|
||||
dependencies: mainProfiles["linux-x64"].dependencies,
|
||||
configure_args: concat(mainProfiles["linux-x64"].configure_args,
|
||||
"--enable-openjdk-only"),
|
||||
make_args: mainProfiles["linux-x64"].make_args,
|
||||
labels: [ "open" ]
|
||||
},
|
||||
|
||||
"solaris-x64-open": {
|
||||
target_os: mainProfiles["solaris-x64"].target_os,
|
||||
target_cpu: mainProfiles["solaris-x64"].target_cpu,
|
||||
dependencies: mainProfiles["solaris-x64"].dependencies,
|
||||
configure_args: concat(mainProfiles["solaris-x64"].configure_args,
|
||||
"--enable-openjdk-only"),
|
||||
make_args: mainProfiles["solaris-x64"].make_args,
|
||||
labels: [ "open" ]
|
||||
}
|
||||
};
|
||||
profiles = concatObjects(profiles, jprtOpenProfiles);
|
||||
// Generate debug profiles for the open jprt profiles
|
||||
profiles = concatObjects(profiles, generateDebugProfiles(common, jprtOpenProfiles));
|
||||
|
||||
// Profiles used to run tests. Used in JPRT.
|
||||
var testOnlyProfiles = {
|
||||
|
||||
"run-test": {
|
||||
target_os: input.build_os,
|
||||
target_cpu: input.build_cpu,
|
||||
dependencies: [ "jtreg", "gnumake" ],
|
||||
labels: "test"
|
||||
}
|
||||
};
|
||||
profiles = concatObjects(profiles, testOnlyProfiles);
|
||||
|
||||
// Generate the missing platform attributes
|
||||
profiles = generatePlatformAttributes(profiles);
|
||||
return profiles;
|
||||
};
|
||||
|
||||
/**
|
||||
* Generate the dependencies part of the configuration
|
||||
*
|
||||
* @param input External data to use for generating the configuration
|
||||
* @param common The common values
|
||||
* @returns {{}} Dependencies part of configuration
|
||||
*/
|
||||
var getJibProfilesDependencies = function (input, common) {
|
||||
|
||||
var boot_jdk_platform = input.build_os + "-"
|
||||
+ (input.build_cpu == "x86" ? "i586" : input.build_cpu);
|
||||
|
||||
var devkit_platform_revisions = {
|
||||
linux_x64: "gcc4.9.2-OEL6.4+1.0",
|
||||
macosx_x64: "Xcode6.3-MacOSX10.9+1.0",
|
||||
solaris_x64: "SS12u3-Solaris10u10+1.0",
|
||||
solaris_sparcv9: "SS12u3-Solaris10u10+1.0",
|
||||
windows_x64: "VS2013SP4+1.0"
|
||||
};
|
||||
|
||||
var devkit_platform = (input.target_cpu == "x86"
|
||||
? input.target_os + "_x64"
|
||||
: input.target_platform);
|
||||
|
||||
var dependencies = {
|
||||
|
||||
boot_jdk: {
|
||||
server: "javare",
|
||||
module: "jdk",
|
||||
revision: "8",
|
||||
checksum_file: boot_jdk_platform + "/MD5_VALUES",
|
||||
file: boot_jdk_platform + "/jdk-8-" + boot_jdk_platform + ".tar.gz",
|
||||
configure_args: (input.build_os == "macosx"
|
||||
? "--with-boot-jdk=" + input.get("boot_jdk", "install_path") + "/jdk1.8.0.jdk/Contents/Home"
|
||||
: "--with-boot-jdk=" + input.get("boot_jdk", "install_path") + "/jdk1.8.0")
|
||||
},
|
||||
|
||||
devkit: {
|
||||
organization: common.organization,
|
||||
ext: "tar.gz",
|
||||
module: "devkit-" + devkit_platform,
|
||||
revision: devkit_platform_revisions[devkit_platform]
|
||||
},
|
||||
|
||||
build_devkit: {
|
||||
organization: common.organization,
|
||||
ext: "tar.gz",
|
||||
module: "devkit-" + input.build_platform,
|
||||
revision: devkit_platform_revisions[input.build_platform]
|
||||
},
|
||||
|
||||
cups: {
|
||||
organization: common.organization,
|
||||
ext: "tar.gz",
|
||||
revision: "1.0118+1.0"
|
||||
},
|
||||
|
||||
jtreg: {
|
||||
server: "javare",
|
||||
revision: "4.1",
|
||||
build_number: "b12",
|
||||
checksum_file: "MD5_VALUES",
|
||||
file: "jtreg_bin-4.1.zip",
|
||||
environment_name: "JT_HOME"
|
||||
},
|
||||
|
||||
gnumake: {
|
||||
organization: common.organization,
|
||||
ext: "tar.gz",
|
||||
revision: "4.0+1.0",
|
||||
|
||||
module: (input.build_os == "windows"
|
||||
? "gnumake-" + input.build_osenv_platform
|
||||
: "gnumake-" + input.build_platform),
|
||||
|
||||
configure_args: (input.build_os == "windows"
|
||||
? "MAKE=" + input.get("gnumake", "install_path") + "/cygwin/bin/make"
|
||||
: "MAKE=" + input.get("gnumake", "install_path") + "/bin/make"),
|
||||
|
||||
environment_path: (input.build_os == "windows"
|
||||
? input.get("gnumake", "install_path") + "/cygwin/bin"
|
||||
: input.get("gnumake", "install_path") + "/bin")
|
||||
},
|
||||
|
||||
freetype: {
|
||||
organization: common.organization,
|
||||
ext: "tar.gz",
|
||||
revision: "2.3.4+1.0",
|
||||
module: "freetype-" + input.target_platform
|
||||
}
|
||||
};
|
||||
|
||||
return dependencies;
|
||||
};
|
||||
|
||||
/**
|
||||
* Generate the missing platform attributes for profiles
|
||||
*
|
||||
* @param profiles Profiles map to generate attributes on
|
||||
* @returns {{}} New profiles map with platform attributes fully filled in
|
||||
*/
|
||||
var generatePlatformAttributes = function (profiles) {
|
||||
var ret = concatObjects(profiles, {});
|
||||
for (var profile in profiles) {
|
||||
if (ret[profile].build_os == null) {
|
||||
ret[profile].build_os = ret[profile].target_os;
|
||||
}
|
||||
if (ret[profile].build_cpu == null) {
|
||||
ret[profile].build_cpu = ret[profile].target_cpu;
|
||||
}
|
||||
ret[profile].target_platform = ret[profile].target_os + "_" + ret[profile].target_cpu;
|
||||
ret[profile].build_platform = ret[profile].build_os + "_" + ret[profile].build_cpu;
|
||||
}
|
||||
return ret;
|
||||
};
|
||||
|
||||
/**
|
||||
* Generates debug versions of profiles. Clones the given profiles and adds
|
||||
* debug metadata.
|
||||
*
|
||||
* @param common Common values
|
||||
* @param profiles Profiles map to generate debug profiles for
|
||||
* @returns {{}} New map of profiles containing debug profiles
|
||||
*/
|
||||
var generateDebugProfiles = function (common, profiles) {
|
||||
var newProfiles = {};
|
||||
for (var profile in profiles) {
|
||||
var debugProfile = profile + "-debug";
|
||||
newProfiles[debugProfile] = clone(profiles[profile]);
|
||||
newProfiles[debugProfile].debug_level = "fastdebug";
|
||||
newProfiles[debugProfile].labels
|
||||
= concat(newProfiles[debugProfile].labels || [], "debug"),
|
||||
newProfiles[debugProfile].configure_args
|
||||
= concat(newProfiles[debugProfile].configure_args,
|
||||
common.configure_args_debug);
|
||||
}
|
||||
return newProfiles;
|
||||
};
|
||||
|
||||
/**
|
||||
* Deep clones an object tree.
|
||||
*
|
||||
* @param o Object to clone
|
||||
* @returns {{}} Clone of o
|
||||
*/
|
||||
var clone = function (o) {
|
||||
return JSON.parse(JSON.stringify(o));
|
||||
};
|
||||
|
||||
/**
|
||||
* Concatenates all arguments into a new array
|
||||
*
|
||||
* @returns {Array.<T>} New array containing all arguments
|
||||
*/
|
||||
var concat = function () {
|
||||
return Array.prototype.concat.apply([], arguments);
|
||||
};
|
||||
|
||||
/**
|
||||
* Copies all elements in an array into a new array but replacing all
|
||||
* occurrences of original with replacement.
|
||||
*
|
||||
* @param original Element to look for
|
||||
* @param replacement Element to replace with
|
||||
* @param a Array to copy
|
||||
* @returns {Array} New array with all occurrences of original replaced
|
||||
* with replacement
|
||||
*/
|
||||
var replace = function (original, replacement, a) {
|
||||
var newA = [];
|
||||
for (var i in a) {
|
||||
if (original == a[i]) {
|
||||
newA.push(replacement);
|
||||
} else {
|
||||
newA.push(a[i]);
|
||||
}
|
||||
}
|
||||
return newA;
|
||||
};
|
||||
|
||||
/**
|
||||
* Deep concatenation of two objects. For each node encountered, merge
|
||||
* the contents with the corresponding node in the other object tree,
|
||||
* treating all strings as array elements.
|
||||
*
|
||||
* @param o1 Object to concatenate
|
||||
* @param o2 Object to concatenate
|
||||
* @returns {{}} New object tree containing the concatenation of o1 and o2
|
||||
*/
|
||||
var concatObjects = function (o1, o2) {
|
||||
var ret = {};
|
||||
for (var a in o1) {
|
||||
if (o2[a] == null) {
|
||||
ret[a] = o1[a];
|
||||
}
|
||||
}
|
||||
for (var a in o2) {
|
||||
if (o1[a] == null) {
|
||||
ret[a] = o2[a];
|
||||
} else {
|
||||
if (typeof o1[a] == 'string') {
|
||||
ret[a] = [o1[a]].concat(o2[a]);
|
||||
} else if (Array.isArray(o1[a])) {
|
||||
ret[a] = o1[a].concat(o2[a]);
|
||||
} else if (typeof o1[a] == 'object') {
|
||||
ret[a] = concatObjects(o1[a], o2[a]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
};
|
@ -337,3 +337,5 @@ c847a53b38d2fffb87afc483c74db05eced9b4f4 jdk9-b89
|
||||
f7d70caad89ad0c43bb057bca0aad6f17ce05a6a jdk9-b92
|
||||
27e9c8d8091e2447ea7ef3e3103e9b7dd286e03a jdk9-b93
|
||||
61e9f509be0f78f0961477960f372b0533214bb8 jdk9-b94
|
||||
fd038e8a16eec80d0d6b337d74a582790ed4b3ee jdk-9+95
|
||||
feb1bd85d7990dcf5584ca9e53104269c01db006 jdk-9+96
|
||||
|
@ -11,7 +11,12 @@
|
||||
^.hgtip
|
||||
.DS_Store
|
||||
\.class$
|
||||
^\.?mx.jvmci/
|
||||
^\.mx.jvmci/env
|
||||
^\.mx.jvmci/.*\.pyc
|
||||
^\.mx.jvmci/eclipse-launches/.*
|
||||
^\.mx.jvmci/hotspot/eclipse/.*
|
||||
^\.idea/
|
||||
^workingsets.xml
|
||||
^src/jdk.vm.ci/share/classes/\w[\w\.]*/.*\.xml
|
||||
^src/jdk.vm.ci/share/classes/\w[\w\.]*/.*\.iml
|
||||
^src/jdk.vm.ci/share/classes/\w[\w\.]*/nbproject
|
||||
|
@ -497,3 +497,5 @@ bc48b669bc6610fac97e16593050c0f559cf6945 jdk9-b88
|
||||
53cb98d68a1aeb08d29c89d6da748de60c448e37 jdk9-b92
|
||||
d8b24776484cc4dfd19f50b23eaa18a80a161371 jdk9-b93
|
||||
a22b7c80529f5f05c847e932e017456e83c46233 jdk9-b94
|
||||
0c79cf3cdf0904fc4a630b91b32904491e1ae430 jdk-9+95
|
||||
a94bb7203596dd632486f1e3655fa5f70541dc08 jdk-9+96
|
||||
|
18
hotspot/.mx.jvmci/.project
Normal file
18
hotspot/.mx.jvmci/.project
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>mx.jvmci</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
<project>mx</project>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.python.pydev.PyDevBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.python.pydev.pythonNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
14
hotspot/.mx.jvmci/.pydevproject
Normal file
14
hotspot/.mx.jvmci/.pydevproject
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?eclipse-pydev version="1.0"?>
|
||||
|
||||
<pydev_project>
|
||||
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
|
||||
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
|
||||
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
|
||||
<path>/mx.jvmci</path>
|
||||
</pydev_pathproperty>
|
||||
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
|
||||
<path>/mx</path>
|
||||
</pydev_pathproperty>
|
||||
|
||||
</pydev_project>
|
@ -0,0 +1 @@
|
||||
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
|
145
hotspot/.mx.jvmci/hotspot/templates/eclipse/cproject
Normal file
145
hotspot/.mx.jvmci/hotspot/templates/eclipse/cproject
Normal file
@ -0,0 +1,145 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||
<cconfiguration id="cdt.managedbuild.toolchain.gnu.solaris.base.945602881">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.solaris.base.945602881" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactName="hotspot" buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.solaris.base.945602881" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||
<folderInfo id="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.305678577" name="/" resourcePath="">
|
||||
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1866612258" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
|
||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.base.2075405295" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
|
||||
<builder autoBuildTarget="" buildPath="${workspace_loc:/hotspot}/.." cleanBuildTarget="clean" enableAutoBuild="true" enableCleanBuild="false" enabledIncrementalBuild="false" id="cdt.managedbuild.target.gnu.builder.base.81453037" incrementalBuildTarget="jvmg1" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.base">
|
||||
<outputEntries>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name=""/>
|
||||
</outputEntries>
|
||||
</builder>
|
||||
<tool id="cdt.managedbuild.tool.gnu.archiver.base.1094883386" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1342888057" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
|
||||
<option id="gnu.cpp.compiler.option.preprocessor.def.634868600" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
|
||||
<listOptionValue builtIn="false" value="_LP64=1"/>
|
||||
<listOptionValue builtIn="false" value="COMPILER1=1"/>
|
||||
<listOptionValue builtIn="false" value="VM_LITTLE_ENDIAN=1"/>
|
||||
<listOptionValue builtIn="false" value="ASSERT=1"/>
|
||||
<listOptionValue builtIn="false" value="_REENTRANT=1"/>
|
||||
<listOptionValue builtIn="false" value="DEBUG=1"/>
|
||||
<listOptionValue builtIn="false" value="AMD64=1"/>
|
||||
<listOptionValue builtIn="false" value="LINUX=1"/>
|
||||
<listOptionValue builtIn="false" value="TARGET_ARCH_x86=1"/>
|
||||
<listOptionValue builtIn="false" value="TARGET_COMPILER_gcc=1"/>
|
||||
<listOptionValue builtIn="false" value="TARGET_OS_FAMILY_linux=1"/>
|
||||
<listOptionValue builtIn="false" value="TARGET_OS_ARCH_linux_x86=1"/>
|
||||
<listOptionValue builtIn="false" value="TARGET_ARCH_MODEL_x86_64=1"/>
|
||||
<listOptionValue builtIn="false" value="INCLUDE_JVMCI=1"/>
|
||||
<listOptionValue builtIn="false" value="COMPILER2=1"/>
|
||||
</option>
|
||||
<option id="gnu.cpp.compiler.option.preprocessor.undef.2137486146" name="Undefined symbols (-U)" superClass="gnu.cpp.compiler.option.preprocessor.undef"/>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.866181452" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1535888880" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
|
||||
<option id="gnu.c.compiler.option.preprocessor.def.symbols.825962493" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
|
||||
<listOptionValue builtIn="false" value="_LP64=1"/>
|
||||
<listOptionValue builtIn="false" value="COMPILER1=1"/>
|
||||
<listOptionValue builtIn="false" value="VM_LITTLE_ENDIAN=1"/>
|
||||
<listOptionValue builtIn="false" value="ASSERT=1"/>
|
||||
<listOptionValue builtIn="false" value="_REENTRANT=1"/>
|
||||
<listOptionValue builtIn="false" value="DEBUG=1"/>
|
||||
<listOptionValue builtIn="false" value="AMD64=1"/>
|
||||
</option>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.906671119" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.linker.base.1271041307" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.550499946" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
|
||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.274517766" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
</inputType>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.assembler.base.554053529" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
|
||||
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1055083385" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="cpu/vm/templateTable_x86_32.cpp|cpu/vm/templateInterpreter_x86_32.cpp|cpu/vm/stubRoutines_x86_32.cpp|cpu/vm/stubGenerator_x86_32.cpp|cpu/vm/sharedRuntime_x86_32.cpp|cpu/vm/jniFastGetField_x86_32.cpp|cpu/vm/interpreterRT_x86_32.cpp|cpu/vm/interpreter_x86_32.cpp|cpu/vm/interp_masm_x86_32.cpp|cpu/vm/vtableStubs_x86_32.cpp" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name=""/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="hotspot.null.1712822257" name="hotspot"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="refreshScope" versionNumber="2">
|
||||
<configuration configurationName="Default">
|
||||
<resource resourceType="PROJECT" workspacePath="/hotspot"/>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
<storageModule moduleId="scannerConfiguration">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162.;cdt.managedbuild.tool.gnu.c.compiler.base.1862778408;cdt.managedbuild.tool.gnu.c.compiler.input.29080811">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004.;cdt.managedbuild.tool.gnu.cpp.compiler.base.501581878;cdt.managedbuild.tool.gnu.cpp.compiler.input.1552002453">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.388217325;cdt.managedbuild.tool.gnu.solaris.cpp.compiler.base.377383651;cdt.managedbuild.tool.gnu.cpp.compiler.input.103897085">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.305678577;cdt.managedbuild.tool.gnu.solaris.c.compiler.base.351149667;cdt.managedbuild.tool.gnu.c.compiler.input.820447325">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.388217325;cdt.managedbuild.tool.gnu.solaris.c.compiler.base.212558466;cdt.managedbuild.tool.gnu.c.compiler.input.1115218695">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.305678577;cdt.managedbuild.tool.gnu.c.compiler.base.1535888880;cdt.managedbuild.tool.gnu.c.compiler.input.906671119">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051.;cdt.managedbuild.tool.gnu.c.compiler.base.592469102;cdt.managedbuild.tool.gnu.c.compiler.input.1891927256">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.305678577;cdt.managedbuild.tool.gnu.solaris.cpp.compiler.base.429326045;cdt.managedbuild.tool.gnu.cpp.compiler.input.1860785837">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004.;cdt.managedbuild.tool.gnu.c.compiler.base.647707969;cdt.managedbuild.tool.gnu.c.compiler.input.1613323394">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162.;cdt.managedbuild.tool.gnu.c.compiler.base.1536145259;cdt.managedbuild.tool.gnu.c.compiler.input.1935913022">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.305678577;cdt.managedbuild.tool.gnu.cpp.compiler.base.1342888057;cdt.managedbuild.tool.gnu.cpp.compiler.input.866181452">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225.;cdt.managedbuild.tool.gnu.cpp.compiler.base.1404788740;cdt.managedbuild.tool.gnu.cpp.compiler.input.1175382997">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162.;cdt.managedbuild.tool.gnu.cpp.compiler.base.677873708;cdt.managedbuild.tool.gnu.cpp.compiler.input.429177901">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051.;cdt.managedbuild.tool.gnu.cpp.compiler.base.1920567990;cdt.managedbuild.tool.gnu.cpp.compiler.input.1463421641">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225.;cdt.managedbuild.tool.gnu.c.compiler.base.961579870;cdt.managedbuild.tool.gnu.c.compiler.input.1710196852">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162.;cdt.managedbuild.tool.gnu.cpp.compiler.base.1673917487;cdt.managedbuild.tool.gnu.cpp.compiler.input.931461388">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.pathentry"/>
|
||||
</cproject>
|
@ -0,0 +1,198 @@
|
||||
eclipse.preferences.version=1
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162/BUILDING_FROM_IDE/delimiter=\:
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162/BUILDING_FROM_IDE/operation=append
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162/BUILDING_FROM_IDE/value=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162/append=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162/appendContributed=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004.562670952/BUILDING_FROM_IDE/delimiter=\:
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004.562670952/BUILDING_FROM_IDE/operation=append
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004.562670952/BUILDING_FROM_IDE/value=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004.562670952/append=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004.562670952/appendContributed=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004/BUILDING_FROM_IDE/delimiter=\:
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004/BUILDING_FROM_IDE/operation=append
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004/BUILDING_FROM_IDE/value=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004/append=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004/appendContributed=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051/BUILDING_FROM_IDE/delimiter=\:
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051/BUILDING_FROM_IDE/operation=append
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051/BUILDING_FROM_IDE/value=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051/append=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051/appendContributed=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225/BUILDING_FROM_IDE/delimiter=\:
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225/BUILDING_FROM_IDE/operation=append
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225/BUILDING_FROM_IDE/value=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225/append=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225/appendContributed=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162/BUILDING_FROM_IDE/delimiter=\:
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162/BUILDING_FROM_IDE/operation=append
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162/BUILDING_FROM_IDE/value=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162/append=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162/appendContributed=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881/BUILDING_FROM_IDE/delimiter=\:
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881/BUILDING_FROM_IDE/operation=append
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881/BUILDING_FROM_IDE/value=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881/append=true
|
||||
environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881/appendContributed=true
|
||||
org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_assignment=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=80
|
||||
org.eclipse.cdt.core.formatter.alignment_for_binary_expression=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_compact_if=0
|
||||
org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=80
|
||||
org.eclipse.cdt.core.formatter.alignment_for_conditional_expression_chain=18
|
||||
org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list=0
|
||||
org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=48
|
||||
org.eclipse.cdt.core.formatter.alignment_for_expression_list=0
|
||||
org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_member_access=0
|
||||
org.eclipse.cdt.core.formatter.alignment_for_overloaded_left_shift_chain=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
|
||||
org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=end_of_line
|
||||
org.eclipse.cdt.core.formatter.brace_position_for_block=end_of_line
|
||||
org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=end_of_line
|
||||
org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=end_of_line
|
||||
org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=end_of_line
|
||||
org.eclipse.cdt.core.formatter.brace_position_for_switch=end_of_line
|
||||
org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=end_of_line
|
||||
org.eclipse.cdt.core.formatter.comment.min_distance_between_code_and_line_comment=1
|
||||
org.eclipse.cdt.core.formatter.comment.never_indent_line_comments_on_first_column=true
|
||||
org.eclipse.cdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
|
||||
org.eclipse.cdt.core.formatter.compact_else_if=true
|
||||
org.eclipse.cdt.core.formatter.continuation_indentation=2
|
||||
org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2
|
||||
org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false
|
||||
org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=false
|
||||
org.eclipse.cdt.core.formatter.indent_access_specifier_extra_spaces=0
|
||||
org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true
|
||||
org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=false
|
||||
org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true
|
||||
org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false
|
||||
org.eclipse.cdt.core.formatter.indent_empty_lines=false
|
||||
org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true
|
||||
org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true
|
||||
org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true
|
||||
org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=true
|
||||
org.eclipse.cdt.core.formatter.indentation.size=2
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_before_colon_in_constructor_initializer_list=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
|
||||
org.eclipse.cdt.core.formatter.join_wrapped_lines=true
|
||||
org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false
|
||||
org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false
|
||||
org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=true
|
||||
org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false
|
||||
org.eclipse.cdt.core.formatter.lineSplit=160
|
||||
org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1
|
||||
org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true
|
||||
org.eclipse.cdt.core.formatter.tabulation.char=space
|
||||
org.eclipse.cdt.core.formatter.tabulation.size=2
|
||||
org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false
|
@ -0,0 +1,5 @@
|
||||
#Wed Sep 01 16:21:02 PDT 2010
|
||||
eclipse.preferences.version=1
|
||||
formatter_profile=_hotspotStyle
|
||||
formatter_settings_version=1
|
||||
|
@ -0,0 +1,6 @@
|
||||
#Wed Sep 01 16:13:40 PDT 2010
|
||||
content-types/enabled=true
|
||||
content-types/org.eclipse.cdt.core.cxxHeader/file-extensions=hpp,incl
|
||||
content-types/org.eclipse.cdt.core.cxxSource/file-extensions=cpp
|
||||
eclipse.preferences.version=1
|
||||
|
890
hotspot/.mx.jvmci/mx_jvmci.py
Normal file
890
hotspot/.mx.jvmci/mx_jvmci.py
Normal file
@ -0,0 +1,890 @@
|
||||
#
|
||||
# ----------------------------------------------------------------------------------------------------
|
||||
#
|
||||
# Copyright (c) 2007, 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.
|
||||
#
|
||||
# ----------------------------------------------------------------------------------------------------
|
||||
|
||||
import os, shutil, zipfile, re, time, sys, datetime, platform
|
||||
from os.path import join, exists, dirname, isdir
|
||||
from argparse import ArgumentParser, REMAINDER
|
||||
import StringIO
|
||||
import xml.dom.minidom
|
||||
import subprocess
|
||||
|
||||
import mx
|
||||
import mx_gate
|
||||
import mx_unittest
|
||||
|
||||
from mx_gate import Task
|
||||
from mx_unittest import unittest
|
||||
|
||||
_suite = mx.suite('jvmci')
|
||||
|
||||
"""
|
||||
Top level directory of the JDK source workspace.
|
||||
"""
|
||||
_jdkSourceRoot = dirname(_suite.dir)
|
||||
|
||||
_JVMCI_JDK_TAG = 'jvmci'
|
||||
|
||||
_minVersion = mx.VersionSpec('1.9')
|
||||
|
||||
# max version (first _unsupported_ version)
|
||||
_untilVersion = None
|
||||
|
||||
_jvmciModes = {
|
||||
'hosted' : ['-XX:+UnlockExperimentalVMOptions', '-XX:+EnableJVMCI'],
|
||||
'jit' : ['-XX:+UnlockExperimentalVMOptions', '-XX:+EnableJVMCI', '-XX:+UseJVMCICompiler'],
|
||||
'disabled' : []
|
||||
}
|
||||
|
||||
# TODO: can optimized be built without overriding release build?
|
||||
_jdkDebugLevels = ['release', 'fastdebug', 'slowdebug']
|
||||
|
||||
# TODO: add client once/if it can be built on 64-bit platforms
|
||||
_jdkJvmVariants = ['server']
|
||||
|
||||
"""
|
||||
Translation table from mx_jvmci:8 --vmbuild values to mx_jvmci:9 --jdk-debug-level values.
|
||||
"""
|
||||
_legacyVmbuilds = {
|
||||
'product' : 'release',
|
||||
'debug' : 'slowdebug'
|
||||
}
|
||||
|
||||
"""
|
||||
Translates a mx_jvmci:8 --vmbuild value to a mx_jvmci:9 --jdk-debug-level value.
|
||||
"""
|
||||
def _translateLegacyDebugLevel(debugLevel):
|
||||
return _legacyVmbuilds.get(debugLevel, debugLevel)
|
||||
|
||||
"""
|
||||
Translation table from mx_jvmci:8 --vm values to mx_jvmci:9 (--jdk-jvm-variant, --jvmci-mode) tuples.
|
||||
"""
|
||||
_legacyVms = {
|
||||
'jvmci' : ('server', 'jit')
|
||||
}
|
||||
|
||||
"""
|
||||
A VM configuration composed of a JDK debug level, JVM variant and a JVMCI mode.
|
||||
This is also a context manager that can be used with the 'with' statement to set/change
|
||||
a VM configuration within a dynamic scope. For example:
|
||||
|
||||
with ConfiguredJDK(debugLevel='fastdebug'):
|
||||
dacapo(['pmd'])
|
||||
"""
|
||||
class VM:
|
||||
def __init__(self, jvmVariant=None, debugLevel=None, jvmciMode=None):
|
||||
self.update(jvmVariant, debugLevel, jvmciMode)
|
||||
|
||||
def update(self, jvmVariant=None, debugLevel=None, jvmciMode=None):
|
||||
if jvmVariant in _legacyVms:
|
||||
# Backwards compatibility for mx_jvmci:8 API
|
||||
jvmVariant, newJvmciMode = _legacyVms[jvmVariant]
|
||||
if jvmciMode is not None and jvmciMode != newJvmciMode:
|
||||
mx.abort('JVM variant "' + jvmVariant + '" implies JVMCI mode "' + newJvmciMode +
|
||||
'" which conflicts with explicitly specified JVMCI mode of "' + jvmciMode + '"')
|
||||
jvmciMode = newJvmciMode
|
||||
debugLevel = _translateLegacyDebugLevel(debugLevel)
|
||||
assert jvmVariant is None or jvmVariant in _jdkJvmVariants, jvmVariant
|
||||
assert debugLevel is None or debugLevel in _jdkDebugLevels, debugLevel
|
||||
assert jvmciMode is None or jvmciMode in _jvmciModes, jvmciMode
|
||||
self.jvmVariant = jvmVariant or _vm.jvmVariant
|
||||
self.debugLevel = debugLevel or _vm.debugLevel
|
||||
self.jvmciMode = jvmciMode or _vm.jvmciMode
|
||||
|
||||
def __enter__(self):
|
||||
global _vm
|
||||
self.previousVm = _vm
|
||||
_vm = self
|
||||
|
||||
def __exit__(self, exc_type, exc_value, traceback):
|
||||
global _vm
|
||||
_vm = self.previousVm
|
||||
|
||||
_vm = VM(jvmVariant=_jdkJvmVariants[0], debugLevel=_jdkDebugLevels[0], jvmciMode='hosted')
|
||||
|
||||
def get_vm():
|
||||
"""
|
||||
Gets the configured VM.
|
||||
"""
|
||||
return _vm
|
||||
|
||||
def relativeVmLibDirInJdk():
|
||||
mxos = mx.get_os()
|
||||
if mxos == 'darwin':
|
||||
return join('lib')
|
||||
if mxos == 'windows' or mxos == 'cygwin':
|
||||
return join('bin')
|
||||
return join('lib', mx.get_arch())
|
||||
|
||||
def isJVMCIEnabled(vm):
|
||||
assert vm in _jdkJvmVariants
|
||||
return True
|
||||
|
||||
class JvmciJDKDeployedDist(object):
|
||||
def __init__(self, name, compilers=False):
|
||||
self._name = name
|
||||
self._compilers = compilers
|
||||
|
||||
def dist(self):
|
||||
return mx.distribution(self._name)
|
||||
|
||||
def deploy(self, jdkDir):
|
||||
mx.nyi('deploy', self)
|
||||
|
||||
class ExtJDKDeployedDist(JvmciJDKDeployedDist):
|
||||
def __init__(self, name):
|
||||
JvmciJDKDeployedDist.__init__(self, name)
|
||||
|
||||
|
||||
"""
|
||||
The monolithic JVMCI distribution is deployed through use of -Xbootclasspath/p
|
||||
so that it's not necessary to run JDK make after editing JVMCI sources.
|
||||
The latter causes all JDK Java sources to be rebuilt since JVMCI is
|
||||
(currently) in java.base.
|
||||
"""
|
||||
_monolithicJvmci = JvmciJDKDeployedDist('JVMCI')
|
||||
|
||||
"""
|
||||
List of distributions that are deployed on the boot class path.
|
||||
Note: In jvmci-8, they were deployed directly into the JDK directory.
|
||||
"""
|
||||
jdkDeployedDists = [_monolithicJvmci]
|
||||
|
||||
def _makehelp():
|
||||
return subprocess.check_output([mx.gmake_cmd(), 'help'], cwd=_jdkSourceRoot)
|
||||
|
||||
def _runmake(args):
|
||||
"""run the JDK make process
|
||||
|
||||
To build hotspot and import it into the JDK: "mx make hotspot import-hotspot"
|
||||
{0}"""
|
||||
|
||||
jdkBuildDir = _get_jdk_build_dir()
|
||||
if not exists(jdkBuildDir):
|
||||
# JDK9 must be bootstrapped with a JDK8
|
||||
compliance = mx.JavaCompliance('8')
|
||||
jdk8 = mx.get_jdk(compliance.exactMatch, versionDescription=compliance.value)
|
||||
cmd = ['sh', 'configure', '--with-debug-level=' + _vm.debugLevel, '--disable-debug-symbols', '--disable-precompiled-headers',
|
||||
'--with-jvm-variants=' + _vm.jvmVariant, '--disable-warnings-as-errors', '--with-boot-jdk=' + jdk8.home]
|
||||
mx.run(cmd, cwd=_jdkSourceRoot)
|
||||
cmd = [mx.gmake_cmd(), 'CONF=' + _vm.debugLevel]
|
||||
if mx.get_opts().verbose:
|
||||
cmd.append('LOG=debug')
|
||||
cmd.extend(args)
|
||||
if mx.get_opts().use_jdk_image and 'images' not in args:
|
||||
cmd.append('images')
|
||||
|
||||
if not mx.get_opts().verbose:
|
||||
mx.log('--------------- make execution ----------------------')
|
||||
mx.log('Working directory: ' + _jdkSourceRoot)
|
||||
mx.log('Command line: ' + ' '.join(cmd))
|
||||
mx.log('-----------------------------------------------------')
|
||||
|
||||
mx.run(cmd, cwd=_jdkSourceRoot)
|
||||
|
||||
if 'images' in cmd:
|
||||
_create_jdk_bundle(jdkBuildDir)
|
||||
|
||||
def _get_jdk_bundle_arches():
|
||||
"""
|
||||
Gets a list of names that will be the part of a JDK bundle's file name denoting the architecture.
|
||||
The first element in the list is the canonical name. Symlinks should be created for the
|
||||
remaining names.
|
||||
"""
|
||||
cpu = mx.get_arch()
|
||||
if cpu == 'amd64':
|
||||
return ['x64', 'x86_64', 'amd64']
|
||||
elif cpu == 'sparcv9':
|
||||
return ['sparcv9']
|
||||
mx.abort('Unsupported JDK bundle arch: ' + cpu)
|
||||
|
||||
def _create_jdk_bundle(jdkBuildDir):
|
||||
"""
|
||||
Creates a tar.gz JDK archive, an accompanying tar.gz.sha1 file with its
|
||||
SHA1 signature plus symlinks to the archive for non-canonical architecture names.
|
||||
"""
|
||||
jdkImageDir = join(jdkBuildDir, 'images', 'jdk')
|
||||
|
||||
arches = _get_jdk_bundle_arches()
|
||||
jdkTgzPath = join(_suite.get_output_root(), 'jdk-bundles', 'jdk9-{}-{}.tar.gz'.format(_get_openjdk_os(), arches[0]))
|
||||
with mx.Archiver(jdkTgzPath, kind='tgz') as arc:
|
||||
mx.log('Creating ' + jdkTgzPath)
|
||||
for root, _, filenames in os.walk(jdkImageDir):
|
||||
for name in filenames:
|
||||
f = join(root, name)
|
||||
arcname = 'jdk1.9.0/' + os.path.relpath(f, jdkImageDir)
|
||||
arc.zf.add(name=f, arcname=arcname, recursive=False)
|
||||
# The OpenJDK build creates an empty cacerts file so grab one from
|
||||
# the default JDK which is assumed to be an OracleJDK
|
||||
cacerts = join(mx.get_jdk(tag='default').home, 'jre', 'lib', 'security', 'cacerts')
|
||||
arc.zf.add(name=cacerts, arcname='jdk1.9.0/lib/security/cacerts')
|
||||
|
||||
with open(jdkTgzPath + '.sha1', 'w') as fp:
|
||||
mx.log('Creating ' + jdkTgzPath + '.sha1')
|
||||
fp.write(mx.sha1OfFile(jdkTgzPath))
|
||||
|
||||
def _create_link(source, link_name):
|
||||
if exists(link_name):
|
||||
os.remove(link_name)
|
||||
mx.log('Creating ' + link_name + ' -> ' + source)
|
||||
os.symlink(source, link_name)
|
||||
|
||||
for arch in arches[1:]:
|
||||
link_name = join(_suite.get_output_root(), 'jdk-bundles', 'jdk9-{}-{}.tar.gz'.format(_get_openjdk_os(), arch))
|
||||
jdkTgzName = os.path.basename(jdkTgzPath)
|
||||
_create_link(jdkTgzName, link_name)
|
||||
_create_link(jdkTgzName + '.sha1', link_name + '.sha1')
|
||||
|
||||
def _runmultimake(args):
|
||||
"""run the JDK make process for one or more configurations"""
|
||||
|
||||
jvmVariantsDefault = ','.join(_jdkJvmVariants)
|
||||
debugLevelsDefault = ','.join(_jdkDebugLevels)
|
||||
|
||||
parser = ArgumentParser(prog='mx multimake')
|
||||
parser.add_argument('--jdk-jvm-variants', '--vms', help='a comma separated list of VMs to build (default: ' + jvmVariantsDefault + ')', metavar='<args>', default=jvmVariantsDefault)
|
||||
parser.add_argument('--jdk-debug-levels', '--builds', help='a comma separated list of JDK debug levels (default: ' + debugLevelsDefault + ')', metavar='<args>', default=debugLevelsDefault)
|
||||
parser.add_argument('-n', '--no-check', action='store_true', help='omit running "java -version" after each build')
|
||||
select = parser.add_mutually_exclusive_group()
|
||||
select.add_argument('-c', '--console', action='store_true', help='send build output to console instead of log files')
|
||||
select.add_argument('-d', '--output-dir', help='directory for log files instead of current working directory', default=os.getcwd(), metavar='<dir>')
|
||||
|
||||
args = parser.parse_args(args)
|
||||
jvmVariants = args.jdk_jvm_variants.split(',')
|
||||
debugLevels = [_translateLegacyDebugLevel(dl) for dl in args.jdk_debug_levels.split(',')]
|
||||
|
||||
allStart = time.time()
|
||||
for jvmVariant in jvmVariants:
|
||||
for debugLevel in debugLevels:
|
||||
if not args.console:
|
||||
logFile = join(mx.ensure_dir_exists(args.output_dir), jvmVariant + '-' + debugLevel + '.log')
|
||||
log = open(logFile, 'wb')
|
||||
start = time.time()
|
||||
mx.log('BEGIN: ' + jvmVariant + '-' + debugLevel + '\t(see: ' + logFile + ')')
|
||||
verbose = ['-v'] if mx.get_opts().verbose else []
|
||||
# Run as subprocess so that output can be directed to a file
|
||||
cmd = [sys.executable, '-u', mx.__file__] + verbose + ['--jdk-jvm-variant=' + jvmVariant, '--jdk-debug-level=' + debugLevel, 'make']
|
||||
mx.logv("executing command: " + str(cmd))
|
||||
subprocess.check_call(cmd, cwd=_suite.dir, stdout=log, stderr=subprocess.STDOUT)
|
||||
duration = datetime.timedelta(seconds=time.time() - start)
|
||||
mx.log('END: ' + jvmVariant + '-' + debugLevel + '\t[' + str(duration) + ']')
|
||||
else:
|
||||
with VM(jvmVariant=jvmVariant, debugLevel=debugLevel):
|
||||
_runmake([])
|
||||
if not args.no_check:
|
||||
with VM(jvmciMode='jit'):
|
||||
run_vm(['-XX:-BootstrapJVMCI', '-version'])
|
||||
allDuration = datetime.timedelta(seconds=time.time() - allStart)
|
||||
mx.log('TOTAL TIME: ' + '[' + str(allDuration) + ']')
|
||||
|
||||
class HotSpotProject(mx.NativeProject):
|
||||
"""
|
||||
Defines a NativeProject representing the HotSpot binaries built via make.
|
||||
"""
|
||||
def __init__(self, suite, name, deps, workingSets, **args):
|
||||
assert name == 'hotspot'
|
||||
mx.NativeProject.__init__(self, suite, name, "", [], deps, workingSets, None, None, join(suite.mxDir, name))
|
||||
|
||||
def eclipse_config_up_to_date(self, configZip):
|
||||
# Assume that any change to this module might imply changes to the generated IDE files
|
||||
if configZip.isOlderThan(__file__):
|
||||
return False
|
||||
for _, source in self._get_eclipse_settings_sources().iteritems():
|
||||
if configZip.isOlderThan(source):
|
||||
return False
|
||||
return True
|
||||
|
||||
def _get_eclipse_settings_sources(self):
|
||||
"""
|
||||
Gets a dictionary from the name of an Eclipse settings file to
|
||||
the file providing its generated content.
|
||||
"""
|
||||
if not hasattr(self, '_eclipse_settings'):
|
||||
esdict = {}
|
||||
templateSettingsDir = join(self.dir, 'templates', 'eclipse', 'settings')
|
||||
if exists(templateSettingsDir):
|
||||
for name in os.listdir(templateSettingsDir):
|
||||
source = join(templateSettingsDir, name)
|
||||
esdict[name] = source
|
||||
self._eclipse_settings = esdict
|
||||
return self._eclipse_settings
|
||||
|
||||
def _eclipseinit(self, files=None, libFiles=None):
|
||||
"""
|
||||
Generates an Eclipse project for each HotSpot build configuration.
|
||||
"""
|
||||
|
||||
roots = [
|
||||
'ASSEMBLY_EXCEPTION',
|
||||
'LICENSE',
|
||||
'README',
|
||||
'THIRD_PARTY_README',
|
||||
'agent',
|
||||
'make',
|
||||
'src',
|
||||
'test'
|
||||
]
|
||||
|
||||
for jvmVariant in _jdkJvmVariants:
|
||||
for debugLevel in _jdkDebugLevels:
|
||||
name = jvmVariant + '-' + debugLevel
|
||||
eclProjectDir = join(self.dir, 'eclipse', name)
|
||||
mx.ensure_dir_exists(eclProjectDir)
|
||||
|
||||
out = mx.XMLDoc()
|
||||
out.open('projectDescription')
|
||||
out.element('name', data='hotspot:' + name)
|
||||
out.element('comment', data='')
|
||||
out.element('projects', data='')
|
||||
out.open('buildSpec')
|
||||
out.open('buildCommand')
|
||||
out.element('name', data='org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder')
|
||||
out.element('triggers', data='full,incremental')
|
||||
out.element('arguments', data='')
|
||||
out.close('buildCommand')
|
||||
|
||||
out.close('buildSpec')
|
||||
out.open('natures')
|
||||
out.element('nature', data='org.eclipse.cdt.core.cnature')
|
||||
out.element('nature', data='org.eclipse.cdt.core.ccnature')
|
||||
out.element('nature', data='org.eclipse.cdt.managedbuilder.core.managedBuildNature')
|
||||
out.element('nature', data='org.eclipse.cdt.managedbuilder.core.ScannerConfigNature')
|
||||
out.close('natures')
|
||||
|
||||
if roots:
|
||||
out.open('linkedResources')
|
||||
for r in roots:
|
||||
f = join(_suite.dir, r)
|
||||
out.open('link')
|
||||
out.element('name', data=r)
|
||||
out.element('type', data='2' if isdir(f) else '1')
|
||||
out.element('locationURI', data=mx.get_eclipse_project_rel_locationURI(f, eclProjectDir))
|
||||
out.close('link')
|
||||
|
||||
out.open('link')
|
||||
out.element('name', data='generated')
|
||||
out.element('type', data='2')
|
||||
generated = join(_get_hotspot_build_dir(jvmVariant, debugLevel), 'generated')
|
||||
out.element('locationURI', data=mx.get_eclipse_project_rel_locationURI(generated, eclProjectDir))
|
||||
out.close('link')
|
||||
|
||||
out.close('linkedResources')
|
||||
out.close('projectDescription')
|
||||
projectFile = join(eclProjectDir, '.project')
|
||||
mx.update_file(projectFile, out.xml(indent='\t', newl='\n'))
|
||||
if files:
|
||||
files.append(projectFile)
|
||||
|
||||
cprojectTemplate = join(self.dir, 'templates', 'eclipse', 'cproject')
|
||||
cprojectFile = join(eclProjectDir, '.cproject')
|
||||
with open(cprojectTemplate) as f:
|
||||
content = f.read()
|
||||
mx.update_file(cprojectFile, content)
|
||||
if files:
|
||||
files.append(cprojectFile)
|
||||
|
||||
settingsDir = join(eclProjectDir, ".settings")
|
||||
mx.ensure_dir_exists(settingsDir)
|
||||
for name, source in self._get_eclipse_settings_sources().iteritems():
|
||||
out = StringIO.StringIO()
|
||||
print >> out, '# GENERATED -- DO NOT EDIT'
|
||||
print >> out, '# Source:', source
|
||||
with open(source) as f:
|
||||
print >> out, f.read()
|
||||
content = out.getvalue()
|
||||
mx.update_file(join(settingsDir, name), content)
|
||||
if files:
|
||||
files.append(join(settingsDir, name))
|
||||
|
||||
def getBuildTask(self, args):
|
||||
return JDKBuildTask(self, args, _vm.debugLevel, _vm.jvmVariant)
|
||||
|
||||
|
||||
class JDKBuildTask(mx.NativeBuildTask):
|
||||
def __init__(self, project, args, debugLevel, jvmVariant):
|
||||
mx.NativeBuildTask.__init__(self, args, project)
|
||||
self.jvmVariant = jvmVariant
|
||||
self.debugLevel = debugLevel
|
||||
|
||||
def __str__(self):
|
||||
return 'Building JDK[{}, {}]'.format(self.debugLevel, self.jvmVariant)
|
||||
|
||||
def build(self):
|
||||
if mx.get_opts().use_jdk_image:
|
||||
_runmake(['images'])
|
||||
else:
|
||||
_runmake([])
|
||||
self._newestOutput = None
|
||||
|
||||
def clean(self, forBuild=False):
|
||||
if forBuild: # Let make handle incremental builds
|
||||
return
|
||||
if exists(_get_jdk_build_dir(self.debugLevel)):
|
||||
_runmake(['clean'])
|
||||
self._newestOutput = None
|
||||
|
||||
# Backwards compatibility for mx_jvmci:8 API
|
||||
def buildvms(args):
|
||||
_runmultimake(args)
|
||||
|
||||
def run_vm(args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, debugLevel=None, vmbuild=None):
|
||||
"""run a Java program by executing the java executable in a JVMCI JDK"""
|
||||
jdkTag = mx.get_jdk_option().tag
|
||||
if jdkTag and jdkTag != _JVMCI_JDK_TAG:
|
||||
mx.abort('The "--jdk" option must have the tag "' + _JVMCI_JDK_TAG + '" when running a command requiring a JVMCI VM')
|
||||
jdk = get_jvmci_jdk(debugLevel=debugLevel or _translateLegacyDebugLevel(vmbuild))
|
||||
return jdk.run_java(args, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd, timeout=timeout)
|
||||
|
||||
def _unittest_vm_launcher(vmArgs, mainClass, mainClassArgs):
|
||||
run_vm(vmArgs + [mainClass] + mainClassArgs)
|
||||
|
||||
mx_unittest.set_vm_launcher('JVMCI VM launcher', _unittest_vm_launcher)
|
||||
|
||||
def _jvmci_gate_runner(args, tasks):
|
||||
# Build release server VM now so we can run the unit tests
|
||||
with Task('BuildHotSpotJVMCIHosted: release', tasks) as t:
|
||||
if t: _runmultimake(['--jdk-jvm-variants', 'server', '--jdk-debug-levels', 'release'])
|
||||
|
||||
# Run unit tests in hosted mode
|
||||
with VM(jvmVariant='server', debugLevel='release', jvmciMode='hosted'):
|
||||
with Task('JVMCI UnitTests: hosted-release', tasks) as t:
|
||||
if t: unittest(['--suite', 'jvmci', '--enable-timing', '--verbose', '--fail-fast'])
|
||||
|
||||
# Build the other VM flavors
|
||||
with Task('BuildHotSpotJVMCIOthers: fastdebug', tasks) as t:
|
||||
if t: _runmultimake(['--jdk-jvm-variants', 'server', '--jdk-debug-levels', 'fastdebug'])
|
||||
|
||||
with Task('CleanAndBuildIdealGraphVisualizer', tasks, disableJacoco=True) as t:
|
||||
if t and platform.processor() != 'sparc':
|
||||
buildxml = mx._cygpathU2W(join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml'))
|
||||
mx.run(['ant', '-f', buildxml, '-q', 'clean', 'build'], env=_igvBuildEnv())
|
||||
|
||||
mx_gate.add_gate_runner(_suite, _jvmci_gate_runner)
|
||||
mx_gate.add_gate_argument('-g', '--only-build-jvmci', action='store_false', dest='buildNonJVMCI', help='only build the JVMCI VM')
|
||||
|
||||
def _igvJdk():
|
||||
v8u20 = mx.VersionSpec("1.8.0_20")
|
||||
v8u40 = mx.VersionSpec("1.8.0_40")
|
||||
v8 = mx.VersionSpec("1.8")
|
||||
def _igvJdkVersionCheck(version):
|
||||
return version >= v8 and (version < v8u20 or version >= v8u40)
|
||||
return mx.get_jdk(_igvJdkVersionCheck, versionDescription='>= 1.8 and < 1.8.0u20 or >= 1.8.0u40', purpose="building & running IGV").home
|
||||
|
||||
def _igvBuildEnv():
|
||||
# When the http_proxy environment variable is set, convert it to the proxy settings that ant needs
|
||||
env = dict(os.environ)
|
||||
proxy = os.environ.get('http_proxy')
|
||||
if not (proxy is None) and len(proxy) > 0:
|
||||
if '://' in proxy:
|
||||
# Remove the http:// prefix (or any other protocol prefix)
|
||||
proxy = proxy.split('://', 1)[1]
|
||||
# Separate proxy server name and port number
|
||||
proxyName, proxyPort = proxy.split(':', 1)
|
||||
proxyEnv = '-DproxyHost="' + proxyName + '" -DproxyPort=' + proxyPort
|
||||
env['ANT_OPTS'] = proxyEnv
|
||||
|
||||
env['JAVA_HOME'] = _igvJdk()
|
||||
return env
|
||||
|
||||
def igv(args):
|
||||
"""run the Ideal Graph Visualizer"""
|
||||
logFile = '.ideal_graph_visualizer.log'
|
||||
with open(join(_suite.dir, logFile), 'w') as fp:
|
||||
mx.logv('[Ideal Graph Visualizer log is in ' + fp.name + ']')
|
||||
nbplatform = join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'nbplatform')
|
||||
|
||||
# Remove NetBeans platform if it is earlier than the current supported version
|
||||
if exists(nbplatform):
|
||||
updateTrackingFile = join(nbplatform, 'platform', 'update_tracking', 'org-netbeans-core.xml')
|
||||
if not exists(updateTrackingFile):
|
||||
mx.log('Could not find \'' + updateTrackingFile + '\', removing NetBeans platform')
|
||||
shutil.rmtree(nbplatform)
|
||||
else:
|
||||
dom = xml.dom.minidom.parse(updateTrackingFile)
|
||||
currentVersion = mx.VersionSpec(dom.getElementsByTagName('module_version')[0].getAttribute('specification_version'))
|
||||
supportedVersion = mx.VersionSpec('3.43.1')
|
||||
if currentVersion < supportedVersion:
|
||||
mx.log('Replacing NetBeans platform version ' + str(currentVersion) + ' with version ' + str(supportedVersion))
|
||||
shutil.rmtree(nbplatform)
|
||||
elif supportedVersion < currentVersion:
|
||||
mx.log('Supported NetBeans version in igv command should be updated to ' + str(currentVersion))
|
||||
|
||||
if not exists(nbplatform):
|
||||
mx.logv('[This execution may take a while as the NetBeans platform needs to be downloaded]')
|
||||
|
||||
env = _igvBuildEnv()
|
||||
# make the jar for Batik 1.7 available.
|
||||
env['IGV_BATIK_JAR'] = mx.library('BATIK').get_path(True)
|
||||
if mx.run(['ant', '-f', mx._cygpathU2W(join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml')), '-l', mx._cygpathU2W(fp.name), 'run'], env=env, nonZeroIsFatal=False):
|
||||
mx.abort("IGV ant build & launch failed. Check '" + logFile + "'. You can also try to delete 'src/share/tools/IdealGraphVisualizer/nbplatform'.")
|
||||
|
||||
def c1visualizer(args):
|
||||
"""run the Cl Compiler Visualizer"""
|
||||
libpath = join(_suite.dir, 'lib')
|
||||
if mx.get_os() == 'windows':
|
||||
executable = join(libpath, 'c1visualizer', 'bin', 'c1visualizer.exe')
|
||||
else:
|
||||
executable = join(libpath, 'c1visualizer', 'bin', 'c1visualizer')
|
||||
|
||||
# Check whether the current C1Visualizer installation is the up-to-date
|
||||
if exists(executable) and not exists(mx.library('C1VISUALIZER_DIST').get_path(resolve=False)):
|
||||
mx.log('Updating C1Visualizer')
|
||||
shutil.rmtree(join(libpath, 'c1visualizer'))
|
||||
|
||||
archive = mx.library('C1VISUALIZER_DIST').get_path(resolve=True)
|
||||
|
||||
if not exists(executable):
|
||||
zf = zipfile.ZipFile(archive, 'r')
|
||||
zf.extractall(libpath)
|
||||
|
||||
if not exists(executable):
|
||||
mx.abort('C1Visualizer binary does not exist: ' + executable)
|
||||
|
||||
if mx.get_os() != 'windows':
|
||||
# Make sure that execution is allowed. The zip file does not always specfiy that correctly
|
||||
os.chmod(executable, 0777)
|
||||
|
||||
mx.run([executable])
|
||||
|
||||
def hsdis(args, copyToDir=None):
|
||||
"""download the hsdis library
|
||||
|
||||
This is needed to support HotSpot's assembly dumping features.
|
||||
By default it downloads the Intel syntax version, use the 'att' argument to install AT&T syntax."""
|
||||
flavor = 'intel'
|
||||
if 'att' in args:
|
||||
flavor = 'att'
|
||||
if mx.get_arch() == "sparcv9":
|
||||
flavor = "sparcv9"
|
||||
lib = mx.add_lib_suffix('hsdis-' + mx.get_arch())
|
||||
path = join(_suite.dir, 'lib', lib)
|
||||
|
||||
sha1s = {
|
||||
'att/hsdis-amd64.dll' : 'bcbd535a9568b5075ab41e96205e26a2bac64f72',
|
||||
'att/hsdis-amd64.so' : '58919ba085d4ef7a513f25bae75e7e54ee73c049',
|
||||
'intel/hsdis-amd64.dll' : '6a388372cdd5fe905c1a26ced614334e405d1f30',
|
||||
'intel/hsdis-amd64.so' : '844ed9ffed64fe9599638f29a8450c50140e3192',
|
||||
'intel/hsdis-amd64.dylib' : 'fdb13ef0d7d23d93dacaae9c98837bea0d4fc5a2',
|
||||
'sparcv9/hsdis-sparcv9.so': '970640a9af0bd63641f9063c11275b371a59ee60',
|
||||
}
|
||||
|
||||
flavoredLib = flavor + "/" + lib
|
||||
if flavoredLib not in sha1s:
|
||||
mx.logv("hsdis not supported on this plattform or architecture")
|
||||
return
|
||||
|
||||
if not exists(path):
|
||||
sha1 = sha1s[flavoredLib]
|
||||
sha1path = path + '.sha1'
|
||||
mx.download_file_with_sha1('hsdis', path, ['https://lafo.ssw.uni-linz.ac.at/pub/hsdis/' + flavoredLib], sha1, sha1path, True, True, sources=False)
|
||||
if copyToDir is not None and exists(copyToDir):
|
||||
shutil.copy(path, copyToDir)
|
||||
|
||||
def hcfdis(args):
|
||||
"""disassemble HexCodeFiles embedded in text files
|
||||
|
||||
Run a tool over the input files to convert all embedded HexCodeFiles
|
||||
to a disassembled format."""
|
||||
|
||||
parser = ArgumentParser(prog='mx hcfdis')
|
||||
parser.add_argument('-m', '--map', help='address to symbol map applied to disassembler output')
|
||||
parser.add_argument('files', nargs=REMAINDER, metavar='files...')
|
||||
|
||||
args = parser.parse_args(args)
|
||||
|
||||
path = mx.library('HCFDIS').get_path(resolve=True)
|
||||
mx.run_java(['-cp', path, 'com.oracle.max.hcfdis.HexCodeFileDis'] + args.files)
|
||||
|
||||
if args.map is not None:
|
||||
addressRE = re.compile(r'0[xX]([A-Fa-f0-9]+)')
|
||||
with open(args.map) as fp:
|
||||
lines = fp.read().splitlines()
|
||||
symbols = dict()
|
||||
for l in lines:
|
||||
addressAndSymbol = l.split(' ', 1)
|
||||
if len(addressAndSymbol) == 2:
|
||||
address, symbol = addressAndSymbol
|
||||
if address.startswith('0x'):
|
||||
address = long(address, 16)
|
||||
symbols[address] = symbol
|
||||
for f in args.files:
|
||||
with open(f) as fp:
|
||||
lines = fp.read().splitlines()
|
||||
updated = False
|
||||
for i in range(0, len(lines)):
|
||||
l = lines[i]
|
||||
for m in addressRE.finditer(l):
|
||||
sval = m.group(0)
|
||||
val = long(sval, 16)
|
||||
sym = symbols.get(val)
|
||||
if sym:
|
||||
l = l.replace(sval, sym)
|
||||
updated = True
|
||||
lines[i] = l
|
||||
if updated:
|
||||
mx.log('updating ' + f)
|
||||
with open('new_' + f, "w") as fp:
|
||||
for l in lines:
|
||||
print >> fp, l
|
||||
|
||||
def jol(args):
|
||||
"""Java Object Layout"""
|
||||
joljar = mx.library('JOL_INTERNALS').get_path(resolve=True)
|
||||
candidates = mx.findclass(args, logToConsole=False, matcher=lambda s, classname: s == classname or classname.endswith('.' + s) or classname.endswith('$' + s))
|
||||
|
||||
if len(candidates) > 0:
|
||||
candidates = mx.select_items(sorted(candidates))
|
||||
else:
|
||||
# mx.findclass can be mistaken, don't give up yet
|
||||
candidates = args
|
||||
|
||||
run_vm(['-javaagent:' + joljar, '-cp', os.pathsep.join([mx.classpath(), joljar]), "org.openjdk.jol.MainObjectInternals"] + candidates)
|
||||
|
||||
class JVMCIArchiveParticipant:
|
||||
def __init__(self, dist):
|
||||
self.dist = dist
|
||||
|
||||
def __opened__(self, arc, srcArc, services):
|
||||
self.services = services
|
||||
self.arc = arc
|
||||
|
||||
def __add__(self, arcname, contents):
|
||||
if arcname.startswith('META-INF/jvmci.providers/'):
|
||||
provider = arcname[len('META-INF/jvmci.providers/'):]
|
||||
for service in contents.strip().split(os.linesep):
|
||||
assert service
|
||||
self.services.setdefault(service, []).append(provider)
|
||||
return True
|
||||
elif arcname.endswith('_OptionDescriptors.class'):
|
||||
# Need to create service files for the providers of the
|
||||
# jdk.vm.ci.options.Options service created by
|
||||
# jdk.vm.ci.options.processor.OptionProcessor.
|
||||
provider = arcname[:-len('.class'):].replace('/', '.')
|
||||
self.services.setdefault('jdk.vm.ci.options.OptionDescriptors', []).append(provider)
|
||||
return False
|
||||
|
||||
def __addsrc__(self, arcname, contents):
|
||||
return False
|
||||
|
||||
def __closing__(self):
|
||||
pass
|
||||
|
||||
def _get_openjdk_os():
|
||||
# See: common/autoconf/platform.m4
|
||||
os = mx.get_os()
|
||||
if 'darwin' in os:
|
||||
os = 'macosx'
|
||||
elif 'linux' in os:
|
||||
os = 'linux'
|
||||
elif 'solaris' in os:
|
||||
os = 'solaris'
|
||||
elif 'cygwin' in os or 'mingw' in os:
|
||||
os = 'windows'
|
||||
return os
|
||||
|
||||
def _get_openjdk_cpu():
|
||||
cpu = mx.get_arch()
|
||||
if cpu == 'amd64':
|
||||
cpu = 'x86_64'
|
||||
elif cpu == 'sparcv9':
|
||||
cpu = 'sparcv9'
|
||||
return cpu
|
||||
|
||||
def _get_openjdk_os_cpu():
|
||||
return _get_openjdk_os() + '-' + _get_openjdk_cpu()
|
||||
|
||||
def _get_jdk_build_dir(debugLevel=None):
|
||||
"""
|
||||
Gets the directory into which the JDK is built. This directory contains
|
||||
the exploded JDK under jdk/ and the JDK image under images/jdk/.
|
||||
"""
|
||||
if debugLevel is None:
|
||||
debugLevel = _vm.debugLevel
|
||||
name = '{}-{}-{}-{}'.format(_get_openjdk_os_cpu(), 'normal', _vm.jvmVariant, debugLevel)
|
||||
return join(dirname(_suite.dir), 'build', name)
|
||||
|
||||
_jvmci_bootclasspath_prepends = []
|
||||
|
||||
def _get_hotspot_build_dir(jvmVariant=None, debugLevel=None):
|
||||
"""
|
||||
Gets the directory in which a particular HotSpot configuration is built
|
||||
(e.g., <JDK_REPO_ROOT>/build/macosx-x86_64-normal-server-release/hotspot/bsd_amd64_compiler2)
|
||||
"""
|
||||
if jvmVariant is None:
|
||||
jvmVariant = _vm.jvmVariant
|
||||
|
||||
os = mx.get_os()
|
||||
if os == 'darwin':
|
||||
os = 'bsd'
|
||||
arch = mx.get_arch()
|
||||
buildname = {'client': 'compiler1', 'server': 'compiler2'}.get(jvmVariant, jvmVariant)
|
||||
|
||||
name = '{}_{}_{}'.format(os, arch, buildname)
|
||||
return join(_get_jdk_build_dir(debugLevel=debugLevel), 'hotspot', name)
|
||||
|
||||
def add_bootclasspath_prepend(dep):
|
||||
assert isinstance(dep, mx.ClasspathDependency)
|
||||
_jvmci_bootclasspath_prepends.append(dep)
|
||||
|
||||
class JVMCI9JDKConfig(mx.JDKConfig):
|
||||
def __init__(self, debugLevel):
|
||||
self.debugLevel = debugLevel
|
||||
jdkBuildDir = _get_jdk_build_dir(debugLevel)
|
||||
jdkDir = join(jdkBuildDir, 'images', 'jdk') if mx.get_opts().use_jdk_image else join(jdkBuildDir, 'jdk')
|
||||
mx.JDKConfig.__init__(self, jdkDir, tag=_JVMCI_JDK_TAG)
|
||||
|
||||
def parseVmArgs(self, args, addDefaultArgs=True):
|
||||
args = mx.expand_project_in_args(args, insitu=False)
|
||||
jacocoArgs = mx_gate.get_jacoco_agent_args()
|
||||
if jacocoArgs:
|
||||
args = jacocoArgs + args
|
||||
|
||||
# Support for -G: options
|
||||
def translateGOption(arg):
|
||||
if arg.startswith('-G:+'):
|
||||
if '=' in arg:
|
||||
mx.abort('Mixing + and = in -G: option specification: ' + arg)
|
||||
arg = '-Djvmci.option.' + arg[len('-G:+'):] + '=true'
|
||||
elif arg.startswith('-G:-'):
|
||||
if '=' in arg:
|
||||
mx.abort('Mixing - and = in -G: option specification: ' + arg)
|
||||
arg = '-Djvmci.option.' + arg[len('-G:+'):] + '=false'
|
||||
elif arg.startswith('-G:'):
|
||||
arg = '-Djvmci.option.' + arg[len('-G:'):]
|
||||
return arg
|
||||
args = map(translateGOption, args)
|
||||
|
||||
args = ['-Xbootclasspath/p:' + dep.classpath_repr() for dep in _jvmci_bootclasspath_prepends] + args
|
||||
|
||||
jvmciModeArgs = _jvmciModes[_vm.jvmciMode]
|
||||
if jvmciModeArgs:
|
||||
bcpDeps = [jdkDist.dist() for jdkDist in jdkDeployedDists]
|
||||
if bcpDeps:
|
||||
args = ['-Xbootclasspath/p:' + os.pathsep.join([d.classpath_repr() for d in bcpDeps])] + args
|
||||
|
||||
# Set the default JVMCI compiler
|
||||
for jdkDist in reversed(jdkDeployedDists):
|
||||
assert isinstance(jdkDist, JvmciJDKDeployedDist), jdkDist
|
||||
if jdkDist._compilers:
|
||||
jvmciCompiler = jdkDist._compilers[-1]
|
||||
args = ['-Djvmci.compiler=' + jvmciCompiler] + args
|
||||
break
|
||||
|
||||
if '-version' in args:
|
||||
ignoredArgs = args[args.index('-version') + 1:]
|
||||
if len(ignoredArgs) > 0:
|
||||
mx.log("Warning: The following options will be ignored by the vm because they come after the '-version' argument: " + ' '.join(ignoredArgs))
|
||||
return self.processArgs(args, addDefaultArgs=addDefaultArgs)
|
||||
|
||||
# Overrides JDKConfig
|
||||
def run_java(self, args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, env=None, addDefaultArgs=True):
|
||||
if vm is None:
|
||||
vm = 'server'
|
||||
|
||||
args = self.parseVmArgs(args, addDefaultArgs=addDefaultArgs)
|
||||
|
||||
jvmciModeArgs = _jvmciModes[_vm.jvmciMode]
|
||||
cmd = [self.java] + ['-' + vm] + jvmciModeArgs + args
|
||||
return mx.run(cmd, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd)
|
||||
|
||||
"""
|
||||
The dict of JVMCI JDKs indexed by debug-level names.
|
||||
"""
|
||||
_jvmci_jdks = {}
|
||||
|
||||
def get_jvmci_jdk(debugLevel=None):
|
||||
"""
|
||||
Gets the JVMCI JDK corresponding to 'debugLevel'.
|
||||
"""
|
||||
if not debugLevel:
|
||||
debugLevel = _vm.debugLevel
|
||||
jdk = _jvmci_jdks.get(debugLevel)
|
||||
if jdk is None:
|
||||
try:
|
||||
jdk = JVMCI9JDKConfig(debugLevel)
|
||||
except mx.JDKConfigException as e:
|
||||
jdkBuildDir = _get_jdk_build_dir(debugLevel)
|
||||
msg = 'Error with the JDK built into {}:\n{}\nTry (re)building it with: mx --jdk-debug-level={} make'
|
||||
if mx.get_opts().use_jdk_image:
|
||||
msg += ' images'
|
||||
mx.abort(msg.format(jdkBuildDir, e.message, debugLevel))
|
||||
_jvmci_jdks[debugLevel] = jdk
|
||||
return jdk
|
||||
|
||||
class JVMCIJDKFactory(mx.JDKFactory):
|
||||
def getJDKConfig(self):
|
||||
jdk = get_jvmci_jdk(_vm.debugLevel)
|
||||
return jdk
|
||||
|
||||
def description(self):
|
||||
return "JVMCI JDK"
|
||||
|
||||
mx.update_commands(_suite, {
|
||||
'make': [_runmake, '[args...]', _makehelp],
|
||||
'multimake': [_runmultimake, '[options]'],
|
||||
'c1visualizer' : [c1visualizer, ''],
|
||||
'hsdis': [hsdis, '[att]'],
|
||||
'hcfdis': [hcfdis, ''],
|
||||
'igv' : [igv, ''],
|
||||
'jol' : [jol, ''],
|
||||
'vm': [run_vm, '[-options] class [args...]'],
|
||||
})
|
||||
|
||||
mx.add_argument('-M', '--jvmci-mode', action='store', choices=sorted(_jvmciModes.viewkeys()), help='the JVM variant type to build/run (default: ' + _vm.jvmciMode + ')')
|
||||
mx.add_argument('--jdk-jvm-variant', '--vm', action='store', choices=_jdkJvmVariants + sorted(_legacyVms.viewkeys()), help='the JVM variant type to build/run (default: ' + _vm.jvmVariant + ')')
|
||||
mx.add_argument('--jdk-debug-level', '--vmbuild', action='store', choices=_jdkDebugLevels + sorted(_legacyVmbuilds.viewkeys()), help='the JDK debug level to build/run (default: ' + _vm.debugLevel + ')')
|
||||
mx.add_argument('-I', '--use-jdk-image', action='store_true', help='build/run JDK image instead of exploded JDK')
|
||||
|
||||
def mx_post_parse_cmd_line(opts):
|
||||
mx.addJDKFactory(_JVMCI_JDK_TAG, mx.JavaCompliance('9'), JVMCIJDKFactory())
|
||||
mx.set_java_command_default_jdk_tag(_JVMCI_JDK_TAG)
|
||||
|
||||
jdkTag = mx.get_jdk_option().tag
|
||||
|
||||
jvmVariant = None
|
||||
debugLevel = None
|
||||
jvmciMode = None
|
||||
|
||||
if opts.jdk_jvm_variant is not None:
|
||||
jvmVariant = opts.jdk_jvm_variant
|
||||
if jdkTag and jdkTag != _JVMCI_JDK_TAG:
|
||||
mx.warn('Ignoring "--jdk-jvm-variant" option as "--jdk" tag is not "' + _JVMCI_JDK_TAG + '"')
|
||||
|
||||
if opts.jdk_debug_level is not None:
|
||||
debugLevel = _translateLegacyDebugLevel(opts.jdk_debug_level)
|
||||
if jdkTag and jdkTag != _JVMCI_JDK_TAG:
|
||||
mx.warn('Ignoring "--jdk-debug-level" option as "--jdk" tag is not "' + _JVMCI_JDK_TAG + '"')
|
||||
|
||||
if opts.jvmci_mode is not None:
|
||||
jvmciMode = opts.jvmci_mode
|
||||
if jdkTag and jdkTag != _JVMCI_JDK_TAG:
|
||||
mx.warn('Ignoring "--jvmci-mode" option as "--jdk" tag is not "' + _JVMCI_JDK_TAG + '"')
|
||||
|
||||
_vm.update(jvmVariant, debugLevel, jvmciMode)
|
||||
|
||||
for jdkDist in jdkDeployedDists:
|
||||
dist = jdkDist.dist()
|
||||
if isinstance(jdkDist, JvmciJDKDeployedDist):
|
||||
dist.set_archiveparticipant(JVMCIArchiveParticipant(dist))
|
358
hotspot/.mx.jvmci/suite.py
Normal file
358
hotspot/.mx.jvmci/suite.py
Normal file
@ -0,0 +1,358 @@
|
||||
suite = {
|
||||
"mxversion" : "5.5.12",
|
||||
"name" : "jvmci",
|
||||
"url" : "http://openjdk.java.net/projects/graal",
|
||||
"developer" : {
|
||||
"name" : "Truffle and Graal developers",
|
||||
"email" : "graal-dev@openjdk.java.net",
|
||||
"organization" : "Graal",
|
||||
"organizationUrl" : "http://openjdk.java.net/projects/graal",
|
||||
},
|
||||
"repositories" : {
|
||||
"lafo-snapshots" : {
|
||||
"url" : "https://curio.ssw.jku.at/nexus/content/repositories/snapshots",
|
||||
"licenses" : ["GPLv2-CPE", "UPL"]
|
||||
},
|
||||
},
|
||||
|
||||
"licenses" : {
|
||||
"UPL" : {
|
||||
"name" : "Universal Permissive License, Version 1.0",
|
||||
"url" : "http://opensource.org/licenses/UPL",
|
||||
}
|
||||
},
|
||||
|
||||
"defaultLicense" : "GPLv2-CPE",
|
||||
|
||||
# This puts mx/ as a sibiling of the JDK build configuration directories
|
||||
# (e.g., macosx-x86_64-normal-server-release).
|
||||
"outputRoot" : "../build/mx/hotspot",
|
||||
|
||||
# ------------- Libraries -------------
|
||||
|
||||
"libraries" : {
|
||||
|
||||
# ------------- Libraries -------------
|
||||
|
||||
"HCFDIS" : {
|
||||
"urls" : ["https://lafo.ssw.uni-linz.ac.at/pub/hcfdis-3.jar"],
|
||||
"sha1" : "a71247c6ddb90aad4abf7c77e501acc60674ef57",
|
||||
},
|
||||
|
||||
"C1VISUALIZER_DIST" : {
|
||||
"urls" : ["https://java.net/downloads/c1visualizer/c1visualizer_2015-07-22.zip"],
|
||||
"sha1" : "7ead6b2f7ed4643ef4d3343a5562e3d3f39564ac",
|
||||
},
|
||||
|
||||
"JOL_INTERNALS" : {
|
||||
"urls" : ["https://lafo.ssw.uni-linz.ac.at/pub/truffle/jol/jol-internals.jar"],
|
||||
"sha1" : "508bcd26a4d7c4c44048990c6ea789a3b11a62dc",
|
||||
},
|
||||
|
||||
"BATIK" : {
|
||||
"sha1" : "122b87ca88e41a415cf8b523fd3d03b4325134a3",
|
||||
"urls" : ["https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/batik-all-1.7.jar"],
|
||||
},
|
||||
},
|
||||
|
||||
"projects" : {
|
||||
|
||||
# ------------- JVMCI:Service -------------
|
||||
|
||||
"jdk.vm.ci.service" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "API,JVMCI",
|
||||
},
|
||||
|
||||
"jdk.vm.ci.service.processor" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"dependencies" : ["jdk.vm.ci.service"],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "JVMCI,Codegen,HotSpot",
|
||||
},
|
||||
|
||||
# ------------- JVMCI:API -------------
|
||||
|
||||
"jdk.vm.ci.common" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "API,JVMCI",
|
||||
},
|
||||
|
||||
"jdk.vm.ci.meta" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "API,JVMCI",
|
||||
},
|
||||
|
||||
"jdk.vm.ci.code" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"dependencies" : ["jdk.vm.ci.meta"],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "API,JVMCI",
|
||||
},
|
||||
|
||||
"jdk.vm.ci.runtime" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"dependencies" : [
|
||||
"jdk.vm.ci.code",
|
||||
],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"annotationProcessors" : ["JVMCI_OPTIONS_PROCESSOR"],
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "API,JVMCI",
|
||||
},
|
||||
|
||||
"jdk.vm.ci.runtime.test" : {
|
||||
"subDir" : "test/compiler/jvmci",
|
||||
"sourceDirs" : ["src"],
|
||||
"dependencies" : [
|
||||
"mx:JUNIT",
|
||||
"jdk.vm.ci.common",
|
||||
"jdk.vm.ci.runtime",
|
||||
],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "API,JVMCI",
|
||||
},
|
||||
|
||||
"jdk.vm.ci.inittimer" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "JVMCI",
|
||||
},
|
||||
|
||||
"jdk.vm.ci.options" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"dependencies" : ["jdk.vm.ci.inittimer"],
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "JVMCI",
|
||||
},
|
||||
|
||||
"jdk.vm.ci.options.processor" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"dependencies" : [
|
||||
"jdk.vm.ci.options",
|
||||
],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "JVMCI,Codegen",
|
||||
},
|
||||
|
||||
"jdk.vm.ci.options.test" : {
|
||||
"subDir" : "test/compiler/jvmci",
|
||||
"sourceDirs" : ["src"],
|
||||
"dependencies" : [
|
||||
"jdk.vm.ci.options",
|
||||
"mx:JUNIT",
|
||||
],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "JVMCI",
|
||||
},
|
||||
|
||||
# ------------- JVMCI:HotSpot -------------
|
||||
|
||||
"jdk.vm.ci.amd64" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"dependencies" : ["jdk.vm.ci.code"],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "JVMCI,AMD64",
|
||||
},
|
||||
|
||||
"jdk.vm.ci.sparc" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"dependencies" : ["jdk.vm.ci.code"],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "JVMCI,SPARC",
|
||||
},
|
||||
|
||||
"jdk.vm.ci.hotspot" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"dependencies" : [
|
||||
"jdk.vm.ci.options",
|
||||
"jdk.vm.ci.hotspotvmconfig",
|
||||
"jdk.vm.ci.common",
|
||||
"jdk.vm.ci.runtime",
|
||||
"jdk.vm.ci.service",
|
||||
],
|
||||
"annotationProcessors" : [
|
||||
"JVMCI_OPTIONS_PROCESSOR",
|
||||
],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "JVMCI",
|
||||
},
|
||||
|
||||
"jdk.vm.ci.hotspotvmconfig" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "JVMCI,HotSpot",
|
||||
},
|
||||
|
||||
"jdk.vm.ci.hotspot.amd64" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"dependencies" : [
|
||||
"jdk.vm.ci.amd64",
|
||||
"jdk.vm.ci.hotspot",
|
||||
],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"annotationProcessors" : [
|
||||
"JVMCI_SERVICE_PROCESSOR",
|
||||
],
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "JVMCI,HotSpot,AMD64",
|
||||
},
|
||||
|
||||
"jdk.vm.ci.hotspot.sparc" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"sourceDirs" : ["src"],
|
||||
"dependencies" : [
|
||||
"jdk.vm.ci.sparc",
|
||||
"jdk.vm.ci.hotspot",
|
||||
],
|
||||
"checkstyle" : "jdk.vm.ci.service",
|
||||
"annotationProcessors" : [
|
||||
"JVMCI_SERVICE_PROCESSOR",
|
||||
],
|
||||
"javaCompliance" : "1.8",
|
||||
"workingSets" : "JVMCI,HotSpot,SPARC",
|
||||
},
|
||||
|
||||
"hotspot" : {
|
||||
"native" : True,
|
||||
"class" : "HotSpotProject",
|
||||
}
|
||||
},
|
||||
|
||||
"distributions" : {
|
||||
|
||||
# ------------- Distributions -------------
|
||||
|
||||
"JVMCI_SERVICE" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"dependencies" : ["jdk.vm.ci.service"],
|
||||
},
|
||||
|
||||
"JVMCI_OPTIONS" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"dependencies" : ["jdk.vm.ci.options"],
|
||||
},
|
||||
|
||||
"JVMCI_API" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"dependencies" : [
|
||||
"jdk.vm.ci.inittimer",
|
||||
"jdk.vm.ci.runtime",
|
||||
"jdk.vm.ci.common",
|
||||
"jdk.vm.ci.amd64",
|
||||
"jdk.vm.ci.sparc",
|
||||
],
|
||||
"distDependencies" : [
|
||||
"JVMCI_OPTIONS",
|
||||
"JVMCI_SERVICE",
|
||||
],
|
||||
},
|
||||
|
||||
"JVMCI_HOTSPOTVMCONFIG" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"dependencies" : [
|
||||
"jdk.vm.ci.hotspotvmconfig",
|
||||
],
|
||||
},
|
||||
|
||||
"JVMCI_HOTSPOT" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"dependencies" : [
|
||||
"jdk.vm.ci.hotspot.amd64",
|
||||
"jdk.vm.ci.hotspot.sparc",
|
||||
],
|
||||
"distDependencies" : [
|
||||
"JVMCI_HOTSPOTVMCONFIG",
|
||||
"JVMCI_SERVICE",
|
||||
"JVMCI_API",
|
||||
],
|
||||
},
|
||||
|
||||
"JVMCI_TEST" : {
|
||||
"subDir" : "test/compiler/jvmci",
|
||||
"dependencies" : [
|
||||
"jdk.vm.ci.options.test",
|
||||
"jdk.vm.ci.runtime.test",
|
||||
],
|
||||
"distDependencies" : [
|
||||
"JVMCI_API",
|
||||
],
|
||||
"exclude" : ["mx:JUNIT"],
|
||||
},
|
||||
|
||||
"JVMCI_OPTIONS_PROCESSOR" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"dependencies" : ["jdk.vm.ci.options.processor"],
|
||||
"distDependencies" : [
|
||||
"JVMCI_OPTIONS",
|
||||
],
|
||||
},
|
||||
|
||||
"JVMCI_SERVICE_PROCESSOR" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"dependencies" : ["jdk.vm.ci.service.processor"],
|
||||
"distDependencies" : [
|
||||
"JVMCI_SERVICE",
|
||||
],
|
||||
},
|
||||
|
||||
# This exists to have a monolithic jvmci.jar file which simplifies
|
||||
# using the -Xoverride option in JDK9.
|
||||
"JVMCI" : {
|
||||
"subDir" : "src/jdk.vm.ci/share/classes",
|
||||
"overlaps" : [
|
||||
"JVMCI_API",
|
||||
"JVMCI_OPTIONS",
|
||||
"JVMCI_SERVICE",
|
||||
"JVMCI_HOTSPOT",
|
||||
"JVMCI_HOTSPOTVMCONFIG",
|
||||
"JVMCI_SERVICE_PROCESSOR",
|
||||
"JVMCI_OPTIONS_PROCESSOR"
|
||||
],
|
||||
"dependencies" : [
|
||||
"jdk.vm.ci.options",
|
||||
"jdk.vm.ci.service",
|
||||
"jdk.vm.ci.inittimer",
|
||||
"jdk.vm.ci.runtime",
|
||||
"jdk.vm.ci.common",
|
||||
"jdk.vm.ci.amd64",
|
||||
"jdk.vm.ci.sparc",
|
||||
"jdk.vm.ci.hotspotvmconfig",
|
||||
"jdk.vm.ci.hotspot.amd64",
|
||||
"jdk.vm.ci.hotspot.sparc",
|
||||
"jdk.vm.ci.options.processor",
|
||||
"jdk.vm.ci.service.processor"
|
||||
],
|
||||
},
|
||||
},
|
||||
}
|
@ -44,9 +44,7 @@
|
||||
# ALT_EXPORT_PATH Directory to export hotspot build to
|
||||
# ALT_JDK_IMPORT_PATH Current JDK build (only for create_jdk rules)
|
||||
# ALT_JDK_TARGET_IMPORT_PATH Current JDK build when cross-compiling
|
||||
# ALT_BUILD_WIN_SA Building SA on Windows is disabled by default.
|
||||
# Set ALT_BUILD_WIN_SA=1 to enable building SA on
|
||||
# Windows.
|
||||
#
|
||||
# Version strings and numbers:
|
||||
# VERSION_SHORT Current JDK version (e.g. 9.0.0)
|
||||
# JDK_PREVIOUS_VERSION Previous (bootdir) JDK version (e.g. 1.5.0) (Only needed
|
||||
|
@ -46,15 +46,6 @@
|
||||
#
|
||||
# make REMOTE="rsh -l me myotherlinuxbox"
|
||||
|
||||
# Along with VM, Serviceability Agent (SA) is built for SA/JDI binding.
|
||||
# JDI binding on SA produces two binaries:
|
||||
# 1. sa-jdi.jar - This is built before building libjvm.so
|
||||
# Please refer to ./makefiles/sa.make
|
||||
# 2. libsa.so - Native library for SA - This is built after
|
||||
# libjsig.so (signal interposition library)
|
||||
# Please refer to ./makefiles/vm.make
|
||||
# If $(GAMMADIR)/agent dir is not present, SA components are not built.
|
||||
|
||||
# No tests on Aix.
|
||||
TEST_IN_BUILD=false
|
||||
|
||||
|
@ -49,7 +49,6 @@
|
||||
# adlc.make -
|
||||
# trace.make - generate tracing event and type definitions
|
||||
# jvmti.make - generate JVMTI bindings from the spec (JSR-163)
|
||||
# sa.make - generate SA jar file and natives
|
||||
#
|
||||
# The makefiles are split this way so that "make foo" will run faster by not
|
||||
# having to read the dependency files for the vm.
|
||||
@ -124,7 +123,7 @@ SUBMAKE_DIRS = $(addprefix $(PLATFORM_DIR)/,$(TARGETS))
|
||||
# For dependencies and recursive makes.
|
||||
BUILDTREE_MAKE = $(GAMMADIR)/make/$(OS_FAMILY)/makefiles/buildtree.make
|
||||
|
||||
BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make sa.make
|
||||
BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make
|
||||
|
||||
BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OS_FAMILY) \
|
||||
SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT)
|
||||
@ -207,7 +206,6 @@ flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
|
||||
echo "TARGET = $(TARGET)"; \
|
||||
echo "HOTSPOT_VERSION_STRING = $(HOTSPOT_VERSION_STRING)"; \
|
||||
echo "VERSION_STRING = $(VERSION_STRING)"; \
|
||||
echo "SA_BUILD_VERSION = $(HOTSPOT_VERSION_STRING)"; \
|
||||
echo "HOTSPOT_BUILD_USER = $(HOTSPOT_BUILD_USER)"; \
|
||||
echo "HOTSPOT_VM_DISTRO = $(HOTSPOT_VM_DISTRO)"; \
|
||||
echo "OPENJDK = $(OPENJDK)"; \
|
||||
@ -346,16 +344,6 @@ trace.make: $(BUILDTREE_MAKE)
|
||||
echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
|
||||
) > $@
|
||||
|
||||
sa.make: $(BUILDTREE_MAKE)
|
||||
@echo $(LOG_INFO) Creating $@ ...
|
||||
$(QUIETLY) ( \
|
||||
$(BUILDTREE_COMMENT); \
|
||||
echo; \
|
||||
echo include flags.make; \
|
||||
echo; \
|
||||
echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
|
||||
) > $@
|
||||
|
||||
FORCE:
|
||||
|
||||
.PHONY: all FORCE
|
||||
|
@ -202,11 +202,3 @@ ifeq ($(JVM_VARIANT_CLIENT),true)
|
||||
# endif
|
||||
# endif
|
||||
endif
|
||||
|
||||
# Serviceability Binaries
|
||||
# No SA Support for PPC or zero
|
||||
ADD_SA_BINARIES/ppc =
|
||||
ADD_SA_BINARIES/ppc64 =
|
||||
ADD_SA_BINARIES/zero =
|
||||
|
||||
EXPORT_LIST += $(ADD_SA_BINARIES/$(HS_ARCH))
|
||||
|
@ -103,8 +103,6 @@ BOOT_JAVA_HOME = $(JAVA_HOME)
|
||||
else
|
||||
|
||||
# take from the PATH, if ALT_BOOTDIR, BOOTDIR and JAVA_HOME are not defined
|
||||
# note that this is to support hotspot build without SA. To build
|
||||
# SA along with hotspot, you need to define ALT_BOOTDIR, BOOTDIR or JAVA_HOME
|
||||
|
||||
RUN.JAVA = java
|
||||
RUN.JAVAP = javap
|
||||
|
@ -1,112 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright 2012, 2013 SAP AG. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
#
|
||||
|
||||
# This makefile (sa.make) is included from the sa.make in the
|
||||
# build directories.
|
||||
|
||||
# This makefile is used to build Serviceability Agent java code
|
||||
# and generate JNI header file for native methods.
|
||||
|
||||
include $(GAMMADIR)/make/aix/makefiles/rules.make
|
||||
|
||||
include $(GAMMADIR)/make/defs.make
|
||||
|
||||
AGENT_DIR = $(GAMMADIR)/agent
|
||||
|
||||
include $(GAMMADIR)/make/sa.files
|
||||
|
||||
TOPDIR = $(shell echo `pwd`)
|
||||
GENERATED = $(TOPDIR)/../generated
|
||||
|
||||
# tools.jar is needed by the JDI - SA binding
|
||||
SA_CLASSPATH = $(BOOT_JAVA_HOME)/lib/tools.jar
|
||||
|
||||
# TODO: if it's a modules image, check if SA module is installed.
|
||||
MODULELIB_PATH= $(BOOT_JAVA_HOME)/lib/modules
|
||||
|
||||
AGENT_FILES_LIST := $(GENERATED)/agent.classes.list
|
||||
|
||||
SA_CLASSDIR = $(GENERATED)/saclasses
|
||||
|
||||
SA_BUILD_VERSION_PROP = "sun.jvm.hotspot.runtime.VM.saBuildVersion=$(SA_BUILD_VERSION)"
|
||||
|
||||
SA_PROPERTIES = $(SA_CLASSDIR)/sa.properties
|
||||
|
||||
# if $(AGENT_DIR) does not exist, we don't build SA
|
||||
# also, we don't build SA on Itanium, PowerPC, ARM or zero.
|
||||
|
||||
all:
|
||||
if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" \
|
||||
-a "$(SRCARCH)" != "arm" \
|
||||
-a "$(SRCARCH)" != "ppc" \
|
||||
-a "$(SRCARCH)" != "zero" ] ; then \
|
||||
$(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \
|
||||
fi
|
||||
|
||||
$(GENERATED)/sa-jdi.jar: $(AGENT_FILES)
|
||||
$(QUIETLY) echo $(LOG_INFO) "Making $@"
|
||||
$(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
|
||||
echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \
|
||||
exit 1; \
|
||||
fi
|
||||
$(QUIETLY) if [ ! -f $(SA_CLASSPATH) -a ! -d $(MODULELIB_PATH) ] ; then \
|
||||
echo "Missing $(SA_CLASSPATH) file. Use 1.6.0 or later version of JDK";\
|
||||
echo ""; \
|
||||
exit 1; \
|
||||
fi
|
||||
$(QUIETLY) if [ ! -d $(SA_CLASSDIR) ] ; then \
|
||||
mkdir -p $(SA_CLASSDIR); \
|
||||
fi
|
||||
# Note: When indented, make tries to execute the '$(shell' comment.
|
||||
# In some environments, cmd processors have limited line length.
|
||||
# To prevent the javac invocation in the next block from using
|
||||
# a very long cmd line, we use javac's @file-list option. We
|
||||
# generate the file lists using make's built-in 'foreach' control
|
||||
# flow which also avoids cmd processor line length issues. Since
|
||||
# the 'foreach' is done as part of make's macro expansion phase,
|
||||
# the initialization of the lists is also done in the same phase
|
||||
# using '$(shell rm ...' instead of using the more traditional
|
||||
# 'rm ...' rule.
|
||||
$(shell rm -rf $(AGENT_FILES_LIST))
|
||||
# gnumake 3.78.1 does not accept the *'s that
|
||||
# are in AGENT_FILES, so use the shell to expand them.
|
||||
# Be extra carefull to not produce too long command lines in the shell!
|
||||
$(foreach file,$(AGENT_FILES),$(shell ls -1 $(file) >> $(AGENT_FILES_LIST)))
|
||||
$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -h $(GENERATED) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES_LIST)
|
||||
$(QUIETLY) $(REMOTE) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
|
||||
$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
|
||||
$(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql/sa.js
|
||||
$(QUIETLY) $(CP) $(AGENT_SRC_DIR)/sun/jvm/hotspot/utilities/soql/sa.js $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql
|
||||
$(QUIETLY) mkdir -p $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources
|
||||
$(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources/*
|
||||
$(QUIETLY) $(CP) $(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources/
|
||||
$(QUIETLY) $(CP) -r $(AGENT_SRC_DIR)/images/* $(SA_CLASSDIR)/
|
||||
$(QUIETLY) $(REMOTE) $(RUN.JAR) cf $@ -C $(SA_CLASSDIR)/ .
|
||||
$(QUIETLY) $(REMOTE) $(RUN.JAR) uf $@ -C $(AGENT_SRC_DIR) META-INF/services/com.sun.jdi.connect.Connector
|
||||
|
||||
clean:
|
||||
rm -rf $(SA_CLASSDIR)
|
||||
rm -rf $(GENERATED)/sa-jdi.jar
|
||||
rm -rf $(AGENT_FILES_LIST)
|
@ -1,117 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright 2012, 2013 SAP AG. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
#
|
||||
include $(GAMMADIR)/make/defs.make
|
||||
|
||||
# Rules to build serviceability agent library, used by vm.make
|
||||
|
||||
# libsaproc.so: serviceability agent
|
||||
|
||||
SAPROC = saproc
|
||||
LIBSAPROC = lib$(SAPROC).so
|
||||
|
||||
LIBSAPROC_DEBUGINFO = lib$(SAPROC).debuginfo
|
||||
LIBSAPROC_DIZ = lib$(SAPROC).diz
|
||||
|
||||
AGENT_DIR = $(GAMMADIR)/agent
|
||||
|
||||
SASRCDIR = $(AGENT_DIR)/src/os/$(Platform_os_family)
|
||||
|
||||
SASRCFILES = $(SASRCDIR)/salibelf.c \
|
||||
$(SASRCDIR)/symtab.c \
|
||||
$(SASRCDIR)/libproc_impl.c \
|
||||
$(SASRCDIR)/ps_proc.c \
|
||||
$(SASRCDIR)/ps_core.c \
|
||||
$(SASRCDIR)/LinuxDebuggerLocal.c \
|
||||
|
||||
SAMAPFILE = $(SASRCDIR)/mapfile
|
||||
|
||||
DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC)
|
||||
DEST_SAPROC_DEBUGINFO = $(JDK_LIBDIR)/$(LIBSAPROC_DEBUGINFO)
|
||||
DEST_SAPROC_DIZ = $(JDK_LIBDIR)/$(LIBSAPROC_DIZ)
|
||||
|
||||
# DEBUG_BINARIES overrides everything, use full -g debug information
|
||||
ifeq ($(DEBUG_BINARIES), true)
|
||||
SA_DEBUG_CFLAGS = -g
|
||||
endif
|
||||
|
||||
# if $(AGENT_DIR) does not exist, we don't build SA
|
||||
# also, we don't build SA on Itanium, PPC, ARM or zero.
|
||||
|
||||
ifneq ($(wildcard $(AGENT_DIR)),)
|
||||
ifneq ($(filter-out ia64 arm ppc zero,$(SRCARCH)),)
|
||||
BUILDLIBSAPROC = $(LIBSAPROC)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
|
||||
|
||||
$(LIBSAPROC): $(SASRCFILES) $(SAMAPFILE)
|
||||
$(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
|
||||
echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@echo $(LOG_INFO) Making SA debugger back-end...
|
||||
$(QUIETLY) $(CC) -D$(BUILDARCH) -D_GNU_SOURCE \
|
||||
-D_FILE_OFFSET_BITS=64 \
|
||||
$(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
|
||||
$(BIN_UTILS) \
|
||||
-I$(SASRCDIR) \
|
||||
-I$(GENERATED) \
|
||||
-I$(BOOT_JAVA_HOME)/include \
|
||||
-I$(BOOT_JAVA_HOME)/include/$(Platform_os_family) \
|
||||
$(SASRCFILES) \
|
||||
$(SA_LFLAGS) \
|
||||
$(SA_DEBUG_CFLAGS) \
|
||||
-o $@ \
|
||||
-lthread_db
|
||||
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
||||
$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO)
|
||||
$(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
|
||||
ifeq ($(STRIP_POLICY),all_strip)
|
||||
$(QUIETLY) $(STRIP) $@
|
||||
else
|
||||
ifeq ($(STRIP_POLICY),min_strip)
|
||||
$(QUIETLY) $(STRIP) -g $@
|
||||
# implied else here is no stripping at all
|
||||
endif
|
||||
endif
|
||||
ifeq ($(ZIP_DEBUGINFO_FILES),1)
|
||||
$(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO)
|
||||
$(RM) $(LIBSAPROC_DEBUGINFO)
|
||||
endif
|
||||
endif
|
||||
|
||||
install_saproc: $(BUILDLIBSAPROC)
|
||||
$(QUIETLY) if [ -e $(LIBSAPROC) ] ; then \
|
||||
echo "Copying $(LIBSAPROC) to $(DEST_SAPROC)"; \
|
||||
test -f $(LIBSAPROC_DEBUGINFO) && \
|
||||
$(CP) -f $(LIBSAPROC_DEBUGINFO) $(DEST_SAPROC_DEBUGINFO); \
|
||||
test -f $(LIBSAPROC_DIZ) && \
|
||||
$(CP) -f $(LIBSAPROC_DIZ) $(DEST_SAPROC_DIZ); \
|
||||
$(CP) -f $(LIBSAPROC) $(DEST_SAPROC) && echo "Done"; \
|
||||
fi
|
||||
|
||||
.PHONY: install_saproc
|
@ -28,7 +28,6 @@
|
||||
# It also:
|
||||
# -builds and runs adlc via adlc.make
|
||||
# -generates JVMTI source and docs via jvmti.make (JSR-163)
|
||||
# -generate sa-jdi.jar (JDI binding to core files)
|
||||
|
||||
# It assumes the following flags are set:
|
||||
# CFLAGS Platform_file, Src_Dirs_I, Src_Dirs_V, SYSDEFS, AOUT, Obj_Files
|
||||
@ -86,7 +85,7 @@ default: vm_build_preliminaries the_vm
|
||||
@echo All done.
|
||||
|
||||
# This is an explicit dependency for the sake of parallel makes.
|
||||
vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) trace_stuff jvmti_stuff sa_stuff
|
||||
vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) trace_stuff jvmti_stuff
|
||||
@# We need a null action here, so implicit rules don't get consulted.
|
||||
|
||||
$(Cached_plat): $(Plat_File)
|
||||
@ -104,10 +103,6 @@ jvmti_stuff: $(Cached_plat) $(adjust-mflags)
|
||||
trace_stuff: jvmti_stuff $(Cached_plat) $(adjust-mflags)
|
||||
@$(MAKE) -f trace.make $(MFLAGS-adjusted)
|
||||
|
||||
# generate SA jar files and native header
|
||||
sa_stuff:
|
||||
@$(MAKE) -f sa.make $(MFLAGS-adjusted)
|
||||
|
||||
# and the VM: must use other makefile with dependencies included
|
||||
|
||||
# We have to go to great lengths to get control over the -jN argument
|
||||
@ -146,7 +141,7 @@ realclean:
|
||||
rm -fr $(GENERATED)
|
||||
|
||||
.PHONY: default vm_build_preliminaries
|
||||
.PHONY: lists ad_stuff jvmti_stuff sa_stuff the_vm clean realclean
|
||||
.PHONY: lists ad_stuff jvmti_stuff the_vm clean realclean
|
||||
.PHONY: checks check_os_version install
|
||||
|
||||
.NOTPARALLEL:
|
||||
|
@ -61,7 +61,7 @@ Src_Dirs_I += $(GENERATED)
|
||||
# The order is important for the precompiled headers to work.
|
||||
INCLUDES += $(PRECOMPILED_HEADER_DIR:%=-I%) $(Src_Dirs_I:%=-I%)
|
||||
|
||||
# SYMFLAG is used by {jsig,saproc}.make
|
||||
# SYMFLAG is used by jsig.make
|
||||
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
||||
# always build with debug info when we can create .debuginfo files
|
||||
SYMFLAG = -g
|
||||
@ -361,13 +361,10 @@ install_jvm: $(LIBJVM)
|
||||
# Signal interposition library
|
||||
include $(MAKEFILES_DIR)/jsig.make
|
||||
|
||||
# Serviceability agent
|
||||
include $(MAKEFILES_DIR)/saproc.make
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(BUILDLIBSAPROC)
|
||||
build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB)
|
||||
|
||||
install: install_jvm install_jsig install_saproc
|
||||
install: install_jvm install_jsig
|
||||
|
||||
.PHONY: default build install install_jvm
|
||||
|
@ -45,15 +45,6 @@
|
||||
#
|
||||
# make REMOTE="rsh -l me myotherlinuxbox"
|
||||
|
||||
# Along with VM, Serviceability Agent (SA) is built for SA/JDI binding.
|
||||
# JDI binding on SA produces two binaries:
|
||||
# 1. sa-jdi.jar - This is built before building libjvm.so
|
||||
# Please refer to ./makefiles/sa.make
|
||||
# 2. libsa.so - Native library for SA - This is built after
|
||||
# libjsig.so (signal interposition library)
|
||||
# Please refer to ./makefiles/vm.make
|
||||
# If $(GAMMADIR)/agent dir is not present, SA components are not built.
|
||||
|
||||
ifeq ($(GAMMADIR),)
|
||||
include ../../make/defs.make
|
||||
else
|
||||
|
@ -48,7 +48,6 @@
|
||||
# adlc.make -
|
||||
# trace.make - generate tracing event and type definitions
|
||||
# jvmti.make - generate JVMTI bindings from the spec (JSR-163)
|
||||
# sa.make - generate SA jar file and natives
|
||||
#
|
||||
# The makefiles are split this way so that "make foo" will run faster by not
|
||||
# having to read the dependency files for the vm.
|
||||
@ -129,7 +128,7 @@ SUBMAKE_DIRS = $(addprefix $(PLATFORM_DIR)/,$(TARGETS))
|
||||
BUILDTREE_MAKE = $(GAMMADIR)/make/$(OS_FAMILY)/makefiles/buildtree.make
|
||||
|
||||
# dtrace.make is used on BSD versions that implement Dtrace (like MacOS X)
|
||||
BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make sa.make dtrace.make
|
||||
BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make dtrace.make
|
||||
|
||||
BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OS_FAMILY) \
|
||||
SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT)
|
||||
@ -213,7 +212,6 @@ flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
|
||||
echo "TARGET = $(TARGET)"; \
|
||||
echo "HOTSPOT_VERSION_STRING = $(HOTSPOT_VERSION_STRING)"; \
|
||||
echo "VERSION_STRING = $(VERSION_STRING)"; \
|
||||
echo "SA_BUILD_VERSION = $(HOTSPOT_VERSION_STRING)"; \
|
||||
echo "HOTSPOT_BUILD_USER = $(HOTSPOT_BUILD_USER)"; \
|
||||
echo "HOTSPOT_VM_DISTRO = $(HOTSPOT_VM_DISTRO)"; \
|
||||
echo "OPENJDK = $(OPENJDK)"; \
|
||||
@ -355,16 +353,6 @@ trace.make: $(BUILDTREE_MAKE)
|
||||
echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
|
||||
) > $@
|
||||
|
||||
sa.make: $(BUILDTREE_MAKE)
|
||||
@echo $(LOG_INFO) Creating $@ ...
|
||||
$(QUIETLY) ( \
|
||||
$(BUILDTREE_COMMENT); \
|
||||
echo; \
|
||||
echo include flags.make; \
|
||||
echo; \
|
||||
echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
|
||||
) > $@
|
||||
|
||||
dtrace.make: $(BUILDTREE_MAKE)
|
||||
@echo $(LOG_INFO) Creating $@ ...
|
||||
$(QUIETLY) ( \
|
||||
|
@ -243,11 +243,11 @@ JDK_INCLUDE_SUBDIR=bsd
|
||||
|
||||
# Library suffix
|
||||
ifneq ($(STATIC_BUILD),true)
|
||||
ifeq ($(OS_VENDOR),Darwin)
|
||||
LIBRARY_SUFFIX=dylib
|
||||
else
|
||||
LIBRARY_SUFFIX=so
|
||||
endif
|
||||
ifeq ($(OS_VENDOR),Darwin)
|
||||
LIBRARY_SUFFIX=dylib
|
||||
else
|
||||
LIBRARY_SUFFIX=so
|
||||
endif
|
||||
else
|
||||
LIBRARY_SUFFIX=a
|
||||
endif
|
||||
@ -325,47 +325,6 @@ ifeq ($(JVM_VARIANT_MINIMAL1),true)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Serviceability Binaries
|
||||
# No SA Support for PPC, IA64, ARM or zero
|
||||
ADD_SA_BINARIES/x86 = $(EXPORT_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
|
||||
$(EXPORT_LIB_DIR)/sa-jdi.jar
|
||||
|
||||
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
||||
ifeq ($(ZIP_DEBUGINFO_FILES),1)
|
||||
ADD_SA_BINARIES/x86 += $(EXPORT_LIB_ARCH_DIR)/libsaproc.diz
|
||||
else
|
||||
ifeq ($(OS_VENDOR), Darwin)
|
||||
ADD_SA_BINARIES/x86 += $(EXPORT_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX).dSYM
|
||||
else
|
||||
ADD_SA_BINARIES/x86 += $(EXPORT_LIB_ARCH_DIR)/libsaproc.debuginfo
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ADD_SA_BINARIES/sparc = $(EXPORT_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
|
||||
$(EXPORT_LIB_DIR)/sa-jdi.jar
|
||||
ADD_SA_BINARIES/universal = $(EXPORT_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
|
||||
$(EXPORT_LIB_DIR)/sa-jdi.jar
|
||||
|
||||
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
||||
ifeq ($(ZIP_DEBUGINFO_FILES),1)
|
||||
ADD_SA_BINARIES/universal += $(EXPORT_LIB_ARCH_DIR)/libsaproc.diz
|
||||
else
|
||||
ifeq ($(OS_VENDOR), Darwin)
|
||||
ADD_SA_BINARIES/universal += $(EXPORT_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX).dSYM
|
||||
else
|
||||
ADD_SA_BINARIES/universal += $(EXPORT_LIB_ARCH_DIR)/libsaproc.debuginfo
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ADD_SA_BINARIES/ppc =
|
||||
ADD_SA_BINARIES/ia64 =
|
||||
ADD_SA_BINARIES/arm =
|
||||
ADD_SA_BINARIES/zero =
|
||||
|
||||
EXPORT_LIST += $(ADD_SA_BINARIES/$(HS_ARCH))
|
||||
|
||||
# Universal build settings
|
||||
ifeq ($(OS_VENDOR), Darwin)
|
||||
# Build universal binaries by default on Mac OS X
|
||||
@ -392,9 +351,8 @@ ifeq ($(OS_VENDOR), Darwin)
|
||||
|
||||
# Binaries to 'universalize' if built
|
||||
ifneq ($(STATIC_BUILD),true)
|
||||
UNIVERSAL_LIPO_LIST += $(EXPORT_LIB_DIR)/libjsig.$(LIBRARY_SUFFIX)
|
||||
UNIVERSAL_LIPO_LIST += $(EXPORT_LIB_DIR)/libjsig.$(LIBRARY_SUFFIX)
|
||||
endif
|
||||
UNIVERSAL_LIPO_LIST += $(EXPORT_LIB_DIR)/libsaproc.$(LIBRARY_SUFFIX)
|
||||
UNIVERSAL_LIPO_LIST += $(EXPORT_LIB_DIR)/server/libjvm.$(LIBRARY_SUFFIX)
|
||||
UNIVERSAL_LIPO_LIST += $(EXPORT_LIB_DIR)/client/libjvm.$(LIBRARY_SUFFIX)
|
||||
|
||||
@ -413,12 +371,10 @@ ifeq ($(OS_VENDOR), Darwin)
|
||||
UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/server/libjvm.diz
|
||||
UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/client/libjvm.diz
|
||||
UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/libjsig.diz
|
||||
UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/libsaproc.diz
|
||||
else
|
||||
UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/server/libjvm.$(LIBRARY_SUFFIX).dSYM
|
||||
UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/client/libjvm.$(LIBRARY_SUFFIX).dSYM
|
||||
UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/libjsig.$(LIBRARY_SUFFIX).dSYM
|
||||
UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/libsaproc.$(LIBRARY_SUFFIX).dSYM
|
||||
endif
|
||||
endif
|
||||
|
||||
|
@ -107,8 +107,6 @@ BOOT_JAVA_HOME = $(JAVA_HOME)
|
||||
else
|
||||
|
||||
# take from the PATH, if ALT_BOOTDIR, BOOTDIR and JAVA_HOME are not defined
|
||||
# note that this is to support hotspot build without SA. To build
|
||||
# SA along with hotspot, you need to define ALT_BOOTDIR, BOOTDIR or JAVA_HOME
|
||||
|
||||
RUN.JAVA = java
|
||||
RUN.JAVAP = javap
|
||||
|
@ -1,138 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2003, 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.
|
||||
#
|
||||
#
|
||||
|
||||
# This makefile (sa.make) is included from the sa.make in the
|
||||
# build directories.
|
||||
|
||||
define print_info
|
||||
ifneq ($$(LOG_LEVEL), warn)
|
||||
$$(shell echo >&2 "INFO: $1")
|
||||
endif
|
||||
endef
|
||||
|
||||
# This makefile is used to build Serviceability Agent java code
|
||||
# and generate JNI header file for native methods.
|
||||
|
||||
include $(GAMMADIR)/make/bsd/makefiles/rules.make
|
||||
|
||||
AGENT_DIR = $(GAMMADIR)/agent
|
||||
|
||||
include $(GAMMADIR)/make/sa.files
|
||||
|
||||
-include $(HS_ALT_MAKE)/bsd/makefiles/sa.make
|
||||
|
||||
TOPDIR = $(shell echo `pwd`)
|
||||
GENERATED = $(TOPDIR)/../generated
|
||||
|
||||
# SA-JDI depends on the standard JDI classes.
|
||||
# Default SA_CLASSPATH location:
|
||||
DEF_SA_CLASSPATH=$(BOOT_JAVA_HOME)/lib/tools.jar
|
||||
ifeq ($(ALT_SA_CLASSPATH),)
|
||||
# no alternate specified; see if default exists
|
||||
SA_CLASSPATH=$(shell test -f $(DEF_SA_CLASSPATH) && echo $(DEF_SA_CLASSPATH))
|
||||
ifeq ($(SA_CLASSPATH),)
|
||||
# the default doesn't exist
|
||||
ifeq ($(OS_VENDOR), Darwin)
|
||||
# A JDK from Apple doesn't have tools.jar; the JDI classes are
|
||||
# are in the regular classes.jar file.
|
||||
APPLE_JAR=$(BOOT_JAVA_HOME)/bundle/Classes/classes.jar
|
||||
SA_CLASSPATH=$(shell test -f $(APPLE_JAR) && echo $(APPLE_JAR))
|
||||
endif
|
||||
endif
|
||||
else
|
||||
$(eval $(call print_info, "ALT_SA_CLASSPATH=$(ALT_SA_CLASSPATH)"))
|
||||
SA_CLASSPATH=$(shell test -f $(ALT_SA_CLASSPATH) && echo $(ALT_SA_CLASSPATH))
|
||||
endif
|
||||
|
||||
ifneq ($(SA_CLASSPATH),)
|
||||
SA_CLASSPATH_ARG := -classpath $(SA_CLASSPATH)
|
||||
endif
|
||||
|
||||
# TODO: if it's a modules image, check if SA module is installed.
|
||||
MODULELIB_PATH= $(BOOT_JAVA_HOME)/lib/modules
|
||||
|
||||
AGENT_FILES_LIST := $(GENERATED)/agent.classes.list
|
||||
|
||||
SA_CLASSDIR = $(GENERATED)/saclasses
|
||||
|
||||
SA_BUILD_VERSION_PROP = "sun.jvm.hotspot.runtime.VM.saBuildVersion=$(SA_BUILD_VERSION)"
|
||||
|
||||
SA_PROPERTIES = $(SA_CLASSDIR)/sa.properties
|
||||
|
||||
# if $(AGENT_DIR) does not exist, we don't build SA
|
||||
# also, we don't build SA on Itanium, PowerPC, ARM or zero.
|
||||
|
||||
all:
|
||||
if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" \
|
||||
-a "$(SRCARCH)" != "arm" \
|
||||
-a "$(SRCARCH)" != "ppc" \
|
||||
-a "$(SRCARCH)" != "zero" ] ; then \
|
||||
$(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \
|
||||
fi
|
||||
|
||||
$(GENERATED)/sa-jdi.jar: $(AGENT_FILES)
|
||||
$(QUIETLY) echo $(LOG_INFO) "Making $@"
|
||||
$(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
|
||||
echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \
|
||||
exit 1; \
|
||||
fi
|
||||
$(QUIETLY) if [ ! -f "$(SA_CLASSPATH)" -a ! -d $(MODULELIB_PATH) ] ; then \
|
||||
echo "Cannot find JDI classes. Use 1.6.0 or later version of JDK."; \
|
||||
echo ""; \
|
||||
exit 1; \
|
||||
fi
|
||||
$(QUIETLY) if [ ! -d $(SA_CLASSDIR) ] ; then \
|
||||
mkdir -p $(SA_CLASSDIR); \
|
||||
fi
|
||||
# Note: When indented, make tries to execute the '$(shell' comment.
|
||||
# In some environments, cmd processors have limited line length.
|
||||
# To prevent the javac invocation in the next block from using
|
||||
# a very long cmd line, we use javac's @file-list option. We
|
||||
# generate the file lists using make's built-in 'foreach' control
|
||||
# flow which also avoids cmd processor line length issues. Since
|
||||
# the 'foreach' is done as part of make's macro expansion phase,
|
||||
# the initialization of the lists is also done in the same phase
|
||||
# using '$(shell rm ...' instead of using the more traditional
|
||||
# 'rm ...' rule.
|
||||
$(shell rm -rf $(AGENT_FILES_LIST))
|
||||
# gnumake 3.78.1 does not accept the *'s that
|
||||
# are in AGENT_FILES, so use the shell to expand them.
|
||||
# Be extra carefull to not produce too long command lines in the shell!
|
||||
$(foreach file,$(AGENT_FILES),$(shell ls -1 $(file) >> $(AGENT_FILES_LIST)))
|
||||
$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -h $(GENERATED) $(SA_CLASSPATH_ARG) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES_LIST)
|
||||
$(QUIETLY) $(REMOTE) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
|
||||
$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
|
||||
$(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql/sa.js
|
||||
$(QUIETLY) $(CP) $(AGENT_SRC_DIR)/sun/jvm/hotspot/utilities/soql/sa.js $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql
|
||||
$(QUIETLY) mkdir -p $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources
|
||||
$(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources/*
|
||||
$(QUIETLY) $(CP) $(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources/
|
||||
$(QUIETLY) $(CP) -r $(AGENT_SRC_DIR)/images/* $(SA_CLASSDIR)/
|
||||
$(QUIETLY) $(REMOTE) $(RUN.JAR) cf $@ -C $(SA_CLASSDIR)/ .
|
||||
$(QUIETLY) $(REMOTE) $(RUN.JAR) uf $@ -C $(AGENT_SRC_DIR) META-INF/services/com.sun.jdi.connect.Connector
|
||||
|
||||
clean:
|
||||
rm -rf $(SA_CLASSDIR)
|
||||
rm -rf $(GENERATED)/sa-jdi.jar
|
||||
rm -rf $(AGENT_FILES_LIST)
|
@ -28,7 +28,6 @@
|
||||
# It also:
|
||||
# -builds and runs adlc via adlc.make
|
||||
# -generates JVMTI source and docs via jvmti.make (JSR-163)
|
||||
# -generate sa-jdi.jar (JDI binding to core files)
|
||||
|
||||
# It assumes the following flags are set:
|
||||
# CFLAGS Platform_file, Src_Dirs_I, Src_Dirs_V, SYSDEFS, AOUT, Obj_Files
|
||||
@ -86,7 +85,7 @@ default: vm_build_preliminaries the_vm
|
||||
@echo All done.
|
||||
|
||||
# This is an explicit dependency for the sake of parallel makes.
|
||||
vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) jvmti_stuff trace_stuff sa_stuff dtrace_stuff
|
||||
vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) jvmti_stuff trace_stuff dtrace_stuff
|
||||
@# We need a null action here, so implicit rules don't get consulted.
|
||||
|
||||
$(Cached_plat): $(Plat_File)
|
||||
@ -113,10 +112,6 @@ dtrace_stuff:
|
||||
@# We need a null action here, so implicit rules don't get consulted.
|
||||
endif
|
||||
|
||||
# generate SA jar files and native header
|
||||
sa_stuff:
|
||||
@$(MAKE) -f sa.make $(MFLAGS-adjusted)
|
||||
|
||||
# and the VM: must use other makefile with dependencies included
|
||||
|
||||
# We have to go to great lengths to get control over the -jN argument
|
||||
@ -155,7 +150,7 @@ realclean:
|
||||
rm -fr $(GENERATED)
|
||||
|
||||
.PHONY: default vm_build_preliminaries
|
||||
.PHONY: lists ad_stuff jvmti_stuff sa_stuff the_vm clean realclean
|
||||
.PHONY: lists ad_stuff jvmti_stuff the_vm clean realclean
|
||||
.PHONY: checks check_os_version install
|
||||
|
||||
.NOTPARALLEL:
|
||||
|
@ -60,7 +60,7 @@ Src_Dirs_I += $(GENERATED)
|
||||
# The order is important for the precompiled headers to work.
|
||||
INCLUDES += $(PRECOMPILED_HEADER_DIR:%=-I%) $(Src_Dirs_I:%=-I%)
|
||||
|
||||
# SYMFLAG is used by {jsig,saproc}.make
|
||||
# SYMFLAG is used by jsig.make
|
||||
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
||||
# always build with debug info when we can create .dSYM/.debuginfo files
|
||||
SYMFLAG = -g
|
||||
@ -301,9 +301,9 @@ else
|
||||
|
||||
ifeq ($(OS_VENDOR), Darwin)
|
||||
ifneq ($(STATIC_BUILD),true)
|
||||
LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/.
|
||||
LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/..
|
||||
LFLAGS_VM += -Xlinker -install_name -Xlinker @rpath/$(@F)
|
||||
LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/.
|
||||
LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/..
|
||||
LFLAGS_VM += -Xlinker -install_name -Xlinker @rpath/$(@F)
|
||||
endif
|
||||
else
|
||||
LFLAGS_VM += -Wl,-z,defs
|
||||
@ -423,19 +423,16 @@ endif
|
||||
# Signal interposition library
|
||||
include $(MAKEFILES_DIR)/jsig.make
|
||||
|
||||
# Serviceability agent
|
||||
include $(MAKEFILES_DIR)/saproc.make
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
ifeq ($(OS_VENDOR), Darwin)
|
||||
# no libjvm_db for macosx
|
||||
build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(BUILDLIBSAPROC) dtraceCheck $(EXPORTED_SYMBOLS)
|
||||
build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) dtraceCheck $(EXPORTED_SYMBOLS)
|
||||
echo "Doing vm.make build:"
|
||||
else
|
||||
build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(BUILDLIBSAPROC) $(EXPORTED_SYMBOLS)
|
||||
build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(EXPORTED_SYMBOLS)
|
||||
endif
|
||||
|
||||
install: install_jvm install_jsig install_saproc
|
||||
install: install_jvm install_jsigs
|
||||
|
||||
.PHONY: default build install install_jvm
|
||||
|
@ -73,8 +73,9 @@ ifeq ($(INCLUDE_CDS), false)
|
||||
CXXFLAGS += -DINCLUDE_CDS=0
|
||||
CFLAGS += -DINCLUDE_CDS=0
|
||||
|
||||
Src_Files_EXCLUDE += filemap.cpp metaspaceShared*.cpp sharedPathsMiscInfo.cpp \
|
||||
systemDictionaryShared.cpp classLoaderExt.cpp sharedClassUtil.cpp
|
||||
Src_Files_EXCLUDE += classListParser.cpp classLoaderExt.cpp \
|
||||
filemap.cpp metaspaceShared*.cpp sharedClassUtil.cpp sharedPathsMiscInfo.cpp \
|
||||
systemDictionaryShared.cpp
|
||||
endif
|
||||
|
||||
ifeq ($(INCLUDE_ALL_GCS), false)
|
||||
|
47
hotspot/make/gensrc/Gensrc-jdk.hotspot.agent.gmk
Normal file
47
hotspot/make/gensrc/Gensrc-jdk.hotspot.agent.gmk
Normal file
@ -0,0 +1,47 @@
|
||||
#
|
||||
# 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. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
default: all
|
||||
|
||||
include $(SPEC)
|
||||
include MakeBase.gmk
|
||||
|
||||
################################################################################
|
||||
|
||||
SA_PROPERTIES := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.hotspot.agent/sa.properties
|
||||
|
||||
SA_BUILD_VERSION_PROP_NAME := "sun.jvm.hotspot.runtime.VM.saBuildVersion"
|
||||
|
||||
$(SA_PROPERTIES): $(call DependOnVariable, VERSION_STRING)
|
||||
$(MKDIR) -p $(@D)
|
||||
$(ECHO) "$(SA_BUILD_VERSION_PROP_NAME)=$(VERSION_STRING)" > $@
|
||||
|
||||
TARGETS += $(SA_PROPERTIES)
|
||||
|
||||
################################################################################
|
||||
|
||||
all: $(TARGETS)
|
||||
|
||||
.PHONY: all default
|
130
hotspot/make/lib/Lib-jdk.hotspot.agent.gmk
Normal file
130
hotspot/make/lib/Lib-jdk.hotspot.agent.gmk
Normal file
@ -0,0 +1,130 @@
|
||||
#
|
||||
# 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. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
include NativeCompilation.gmk
|
||||
|
||||
$(eval $(call IncludeCustomExtension, hotspot, lib/Lib-jdk.hotspot.agent.gmk))
|
||||
|
||||
################################################################################
|
||||
|
||||
SA_TOPDIR := $(HOTSPOT_TOPDIR)/agent
|
||||
|
||||
# SA has a slightly different OS naming scheme
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
SA_TARGET_OS := win32
|
||||
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
SA_TARGET_OS := bsd
|
||||
else
|
||||
SA_TARGET_OS := $(OPENJDK_TARGET_OS)
|
||||
endif
|
||||
|
||||
# Defaults for most platforms
|
||||
SA_TOOLCHAIN := TOOLCHAIN_DEFAULT
|
||||
SA_NAME := saproc
|
||||
SA_SRC += $(SA_TOPDIR)/src/share/native $(SA_TOPDIR)/src/os/$(SA_TARGET_OS)
|
||||
SA_MAPFILE := $(SA_TOPDIR)/src/os/$(OPENJDK_TARGET_OS)/mapfile
|
||||
SA_INCLUDES := \
|
||||
$(addprefix -I, $(SA_SRC)) \
|
||||
-I$(SUPPORT_OUTPUTDIR)/headers/jdk.hotspot.agent \
|
||||
-I$(HOTSPOT_TOPDIR)/src/os/$(OPENJDK_TARGET_OS) \
|
||||
#
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_CPU), x86_64)
|
||||
SA_MACHINE_FLAG_windows := -machine:AMD64
|
||||
else ifeq ($(OPENJDK_TARGET_CPU), x86)
|
||||
SA_MACHINE_FLAG_linux := -march=i586
|
||||
SA_MACHINE_FLAG_windows := -machine:I386
|
||||
endif
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), linux)
|
||||
SA_CFLAGS := $(CFLAGS_JDKLIB) -D_FILE_OFFSET_BITS=64 \
|
||||
$(SA_MACHINE_FLAG_linux)
|
||||
SA_LDFLAGS := $(LDFLAGS_JDKLIB) $(SA_MACHINE_FLAG_linux)
|
||||
SA_LIBS := -lthread_db $(LIBDL)
|
||||
|
||||
else ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||
SA_TOOLCHAIN := TOOLCHAIN_LINK_CXX
|
||||
SA_MAPFILE := $(SA_TOPDIR)/src/os/solaris/proc/mapfile
|
||||
COMMON_CFLAGS := -I$(SA_TOPDIR)/src/os/$(OPENJDK_TARGET_OS)/proc \
|
||||
-DSOLARIS_11_B159_OR_LATER
|
||||
SA_CFLAGS := $(CFLAGS_JDKLIB) $(COMMON_CFLAGS)
|
||||
SA_CXXFLAGS := $(CXXFLAGS_JDKLIB) $(COMMON_CFLAGS)
|
||||
SA_LDFLAGS := $(subst -z defs,, $(LDFLAGS_JDKLIB)) \
|
||||
-mt $(LDFLAGS_CXX_JDK)
|
||||
SA_LIBS := -ldl -ldemangle -lthread -lc
|
||||
|
||||
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
SA_EXCLUDE_FILES := BsdDebuggerLocal.c ps_proc.c salibelf.c StubDebuggerLocal.c
|
||||
SA_CFLAGS := $(CFLAGS_JDKLIB) \
|
||||
-Damd64 -D_GNU_SOURCE -mno-omit-leaf-frame-pointer \
|
||||
-mstack-alignment=16 -fPIC
|
||||
SA_LDFLAGS := $(LDFLAGS_JDKLIB)
|
||||
SA_LIBS := -framework Foundation -framework JavaNativeFoundation \
|
||||
-framework Security -framework CoreFoundation
|
||||
|
||||
else ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
SA_NAME := sawindbg
|
||||
COMMON_CFLAGS := -D_WINDOWS -D_DEBUG -D_CONSOLE -D_MBCS -EHsc -FD
|
||||
SA_CFLAGS := $(subst -DWIN32_LEAN_AND_MEAN,, $(CFLAGS_JDKLIB)) \
|
||||
$(COMMON_CFLAGS)
|
||||
SA_CXXFLAGS := $(subst -DWIN32_LEAN_AND_MEAN,, $(CXXFLAGS_JDKLIB)) \
|
||||
$(COMMON_CFLAGS)
|
||||
SA_LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(SA_MACHINE_FLAG_windows) -manifest \
|
||||
-subsystem:console -map
|
||||
SA_LIBS := dbgeng.lib
|
||||
ifeq ($(OPENJDK_TARGET_CPU), x86_64)
|
||||
SA_CXXFLAGS += -DWIN64
|
||||
else
|
||||
SA_CXXFLAGS += -RTC1 -ZI
|
||||
SA_LDFLAGS += -SAFESEH
|
||||
endif
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
|
||||
$(eval $(call SetupNativeCompilation, BUILD_LIBSA, \
|
||||
TOOLCHAIN := $(SA_TOOLCHAIN), \
|
||||
OPTIMIZATION := NONE, \
|
||||
DISABLED_WARNINGS_microsoft := 4267, \
|
||||
DISABLED_WARNINGS_gcc := sign-compare, \
|
||||
DISABLED_WARNINGS_CXX_solstudio := truncwarn unknownpragma, \
|
||||
LIBRARY := $(SA_NAME), \
|
||||
OUTPUT_DIR := $(call FindLibDirForModule, $(MODULE)), \
|
||||
SRC := $(SA_SRC), \
|
||||
EXCLUDE_FILES := test.c saproc_audit.cpp $(SA_EXCLUDE_FILES), \
|
||||
CFLAGS := $(SA_INCLUDES) $(SA_CFLAGS) $(SA_CUSTOM_CFLAGS), \
|
||||
CXXFLAGS := $(SA_INCLUDES) $(SA_CXXFLAGS) $(SA_CUSTOM_CXXFLAGS), \
|
||||
LDFLAGS := $(SA_LDFLAGS) $(SA_CUSTOM_LDFLAGS), \
|
||||
LIBS := $(SA_LIBS), \
|
||||
MAPFILE := $(SA_MAPFILE), \
|
||||
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libsa, \
|
||||
DEBUG_SYMBOLS := true, \
|
||||
STRIP_SYMBOLS := true, \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_LIBSA)
|
||||
|
||||
################################################################################
|
@ -45,15 +45,6 @@
|
||||
#
|
||||
# make REMOTE="rsh -l me myotherlinuxbox"
|
||||
|
||||
# Along with VM, Serviceability Agent (SA) is built for SA/JDI binding.
|
||||
# JDI binding on SA produces two binaries:
|
||||
# 1. sa-jdi.jar - This is built before building libjvm.so
|
||||
# Please refer to ./makefiles/sa.make
|
||||
# 2. libsa.so - Native library for SA - This is built after
|
||||
# libjsig.so (signal interposition library)
|
||||
# Please refer to ./makefiles/vm.make
|
||||
# If $(GAMMADIR)/agent dir is not present, SA components are not built.
|
||||
|
||||
ifeq ($(GAMMADIR),)
|
||||
include ../../make/defs.make
|
||||
else
|
||||
|
@ -48,7 +48,6 @@
|
||||
# adlc.make -
|
||||
# trace.make - generate tracing event and type definitions
|
||||
# jvmti.make - generate JVMTI bindings from the spec (JSR-163)
|
||||
# sa.make - generate SA jar file and natives
|
||||
#
|
||||
# The makefiles are split this way so that "make foo" will run faster by not
|
||||
# having to read the dependency files for the vm.
|
||||
@ -126,7 +125,7 @@ SUBMAKE_DIRS = $(addprefix $(PLATFORM_DIR)/,$(TARGETS))
|
||||
# For dependencies and recursive makes.
|
||||
BUILDTREE_MAKE = $(GAMMADIR)/make/$(OS_FAMILY)/makefiles/buildtree.make
|
||||
|
||||
BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make sa.make dtrace.make
|
||||
BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make dtrace.make
|
||||
|
||||
BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OS_FAMILY) \
|
||||
SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT)
|
||||
@ -214,7 +213,6 @@ flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
|
||||
echo "TARGET = $(TARGET)"; \
|
||||
echo "HOTSPOT_VERSION_STRING = $(HOTSPOT_VERSION_STRING)"; \
|
||||
echo "VERSION_STRING = $(VERSION_STRING)"; \
|
||||
echo "SA_BUILD_VERSION = $(HOTSPOT_VERSION_STRING)"; \
|
||||
echo "HOTSPOT_BUILD_USER = $(HOTSPOT_BUILD_USER)"; \
|
||||
echo "HOTSPOT_VM_DISTRO = $(HOTSPOT_VM_DISTRO)"; \
|
||||
echo "OPENJDK = $(OPENJDK)"; \
|
||||
@ -353,16 +351,6 @@ trace.make: $(BUILDTREE_MAKE)
|
||||
echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
|
||||
) > $@
|
||||
|
||||
sa.make: $(BUILDTREE_MAKE)
|
||||
@echo $(LOG_INFO) Creating $@ ...
|
||||
$(QUIETLY) ( \
|
||||
$(BUILDTREE_COMMENT); \
|
||||
echo; \
|
||||
echo include flags.make; \
|
||||
echo; \
|
||||
echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
|
||||
) > $@
|
||||
|
||||
dtrace.make: $(BUILDTREE_MAKE)
|
||||
@echo $(LOG_INFO) Creating $@ ...
|
||||
$(QUIETLY) ( \
|
||||
|
@ -276,24 +276,4 @@ ifeq ($(JVM_VARIANT_MINIMAL1),true)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Serviceability Binaries
|
||||
|
||||
ADD_SA_BINARIES/DEFAULT = $(EXPORT_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
|
||||
$(EXPORT_LIB_DIR)/sa-jdi.jar
|
||||
|
||||
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
||||
ifeq ($(ZIP_DEBUGINFO_FILES),1)
|
||||
ADD_SA_BINARIES/DEFAULT += $(EXPORT_LIB_ARCH_DIR)/libsaproc.diz
|
||||
else
|
||||
ADD_SA_BINARIES/DEFAULT += $(EXPORT_LIB_ARCH_DIR)/libsaproc.debuginfo
|
||||
endif
|
||||
endif
|
||||
|
||||
ADD_SA_BINARIES/$(HS_ARCH) = $(ADD_SA_BINARIES/DEFAULT)
|
||||
|
||||
# No SA Support for zero
|
||||
ADD_SA_BINARIES/zero =
|
||||
|
||||
-include $(HS_ALT_MAKE)/linux/makefiles/defs.make
|
||||
|
||||
EXPORT_LIST += $(ADD_SA_BINARIES/$(HS_ARCH))
|
||||
|
@ -103,8 +103,6 @@ BOOT_JAVA_HOME = $(JAVA_HOME)
|
||||
else
|
||||
|
||||
# take from the PATH, if ALT_BOOTDIR, BOOTDIR and JAVA_HOME are not defined
|
||||
# note that this is to support hotspot build without SA. To build
|
||||
# SA along with hotspot, you need to define ALT_BOOTDIR, BOOTDIR or JAVA_HOME
|
||||
|
||||
RUN.JAVA = java
|
||||
RUN.JAVAP = javap
|
||||
|
@ -1,115 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2003, 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.
|
||||
#
|
||||
#
|
||||
|
||||
# This makefile (sa.make) is included from the sa.make in the
|
||||
# build directories.
|
||||
|
||||
# This makefile is used to build Serviceability Agent java code
|
||||
# and generate JNI header file for native methods.
|
||||
|
||||
include $(GAMMADIR)/make/linux/makefiles/rules.make
|
||||
|
||||
include $(GAMMADIR)/make/defs.make
|
||||
include $(GAMMADIR)/make/altsrc.make
|
||||
|
||||
AGENT_DIR = $(GAMMADIR)/agent
|
||||
|
||||
include $(GAMMADIR)/make/sa.files
|
||||
|
||||
-include $(HS_ALT_MAKE)/linux/makefiles/sa.make
|
||||
|
||||
|
||||
TOPDIR = $(shell echo `pwd`)
|
||||
GENERATED = $(TOPDIR)/../generated
|
||||
|
||||
# tools.jar is needed by the JDI - SA binding
|
||||
SA_CLASSPATH = $(BOOT_JAVA_HOME)/lib/tools.jar
|
||||
|
||||
# TODO: if it's a modules image, check if SA module is installed.
|
||||
MODULELIB_PATH= $(BOOT_JAVA_HOME)/lib/modules
|
||||
|
||||
AGENT_FILES_LIST := $(GENERATED)/agent.classes.list
|
||||
|
||||
SA_CLASSDIR = $(GENERATED)/saclasses
|
||||
|
||||
SA_BUILD_VERSION_PROP = "sun.jvm.hotspot.runtime.VM.saBuildVersion=$(SA_BUILD_VERSION)"
|
||||
|
||||
SA_PROPERTIES = $(SA_CLASSDIR)/sa.properties
|
||||
|
||||
# if $(AGENT_DIR) does not exist, we don't build SA
|
||||
# also, we don't build SA on Itanium or zero.
|
||||
|
||||
all:
|
||||
if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" \
|
||||
-a "$(SRCARCH)" != "zero" ] ; then \
|
||||
$(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \
|
||||
fi
|
||||
|
||||
$(GENERATED)/sa-jdi.jar:: $(AGENT_FILES)
|
||||
$(QUIETLY) echo $(LOG_INFO) "Making $@"
|
||||
$(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
|
||||
echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \
|
||||
exit 1; \
|
||||
fi
|
||||
$(QUIETLY) if [ ! -f $(SA_CLASSPATH) -a ! -d $(MODULELIB_PATH) ] ; then \
|
||||
echo "Missing $(SA_CLASSPATH) file. Use 1.6.0 or later version of JDK";\
|
||||
echo ""; \
|
||||
exit 1; \
|
||||
fi
|
||||
$(QUIETLY) if [ ! -d $(SA_CLASSDIR) ] ; then \
|
||||
mkdir -p $(SA_CLASSDIR); \
|
||||
fi
|
||||
# Note: When indented, make tries to execute the '$(shell' comment.
|
||||
# In some environments, cmd processors have limited line length.
|
||||
# To prevent the javac invocation in the next block from using
|
||||
# a very long cmd line, we use javac's @file-list option. We
|
||||
# generate the file lists using make's built-in 'foreach' control
|
||||
# flow which also avoids cmd processor line length issues. Since
|
||||
# the 'foreach' is done as part of make's macro expansion phase,
|
||||
# the initialization of the lists is also done in the same phase
|
||||
# using '$(shell rm ...' instead of using the more traditional
|
||||
# 'rm ...' rule.
|
||||
$(shell rm -rf $(AGENT_FILES_LIST))
|
||||
# gnumake 3.78.1 does not accept the *'s that
|
||||
# are in AGENT_FILES, so use the shell to expand them.
|
||||
# Be extra carefull to not produce too long command lines in the shell!
|
||||
$(foreach file,$(AGENT_FILES),$(shell ls -1 $(file) >> $(AGENT_FILES_LIST)))
|
||||
$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -h $(GENERATED) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES_LIST)
|
||||
$(QUIETLY) $(REMOTE) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
|
||||
$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
|
||||
$(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql/sa.js
|
||||
$(QUIETLY) $(CP) $(AGENT_SRC_DIR)/sun/jvm/hotspot/utilities/soql/sa.js $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql
|
||||
$(QUIETLY) mkdir -p $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources
|
||||
$(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources/*
|
||||
$(QUIETLY) $(CP) $(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources/
|
||||
$(QUIETLY) $(CP) -r $(AGENT_SRC_DIR)/images/* $(SA_CLASSDIR)/
|
||||
$(QUIETLY) $(REMOTE) $(RUN.JAR) cf $@ -C $(SA_CLASSDIR)/ .
|
||||
$(QUIETLY) $(REMOTE) $(RUN.JAR) uf $@ -C $(AGENT_SRC_DIR) META-INF/services/com.sun.jdi.connect.Connector
|
||||
|
||||
clean:
|
||||
rm -rf $(SA_CLASSDIR)
|
||||
rm -rf $(GENERATED)/sa-jdi.jar
|
||||
rm -rf $(AGENT_FILES_LIST)
|
||||
|
||||
-include $(HS_ALT_MAKE)/linux/makefiles/sa-rules.make
|
@ -1,127 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2005, 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.
|
||||
#
|
||||
#
|
||||
include $(GAMMADIR)/make/defs.make
|
||||
include $(GAMMADIR)/make/altsrc.make
|
||||
|
||||
# Rules to build serviceability agent library, used by vm.make
|
||||
|
||||
# libsaproc.so: serviceability agent
|
||||
|
||||
SAPROC = saproc
|
||||
LIBSAPROC = lib$(SAPROC).so
|
||||
|
||||
LIBSAPROC_DEBUGINFO = lib$(SAPROC).debuginfo
|
||||
LIBSAPROC_DIZ = lib$(SAPROC).diz
|
||||
|
||||
AGENT_DIR = $(GAMMADIR)/agent
|
||||
|
||||
SASRCDIR = $(AGENT_DIR)/src/os/$(Platform_os_family)
|
||||
|
||||
SASRCFILES = $(SASRCDIR)/salibelf.c \
|
||||
$(SASRCDIR)/symtab.c \
|
||||
$(SASRCDIR)/libproc_impl.c \
|
||||
$(SASRCDIR)/ps_proc.c \
|
||||
$(SASRCDIR)/ps_core.c \
|
||||
$(SASRCDIR)/LinuxDebuggerLocal.c \
|
||||
$(AGENT_DIR)/src/share/native/sadis.c
|
||||
|
||||
-include $(HS_ALT_MAKE)/linux/makefiles/saproc.make
|
||||
|
||||
SAMAPFILE = $(SASRCDIR)/mapfile
|
||||
|
||||
DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC)
|
||||
DEST_SAPROC_DEBUGINFO = $(JDK_LIBDIR)/$(LIBSAPROC_DEBUGINFO)
|
||||
DEST_SAPROC_DIZ = $(JDK_LIBDIR)/$(LIBSAPROC_DIZ)
|
||||
|
||||
# DEBUG_BINARIES overrides everything, use full -g debug information
|
||||
ifeq ($(DEBUG_BINARIES), true)
|
||||
SA_DEBUG_CFLAGS = -g
|
||||
endif
|
||||
|
||||
# if $(AGENT_DIR) does not exist, we don't build SA
|
||||
# also, we don't build SA on Itanium or zero.
|
||||
|
||||
ifneq ($(wildcard $(AGENT_DIR)),)
|
||||
ifneq ($(filter-out ia64 zero,$(SRCARCH)),)
|
||||
BUILDLIBSAPROC = $(LIBSAPROC)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(ALT_SASRCDIR),)
|
||||
ALT_SAINCDIR=-I$(ALT_SASRCDIR) -DALT_SASRCDIR
|
||||
else
|
||||
ALT_SAINCDIR=
|
||||
endif
|
||||
SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
|
||||
|
||||
SAARCH ?= $(BUILDARCH)
|
||||
|
||||
$(LIBSAPROC): $(SASRCFILES) $(SAMAPFILE)
|
||||
$(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
|
||||
echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@echo $(LOG_INFO) Making SA debugger back-end...
|
||||
$(QUIETLY) $(CC) -D$(SAARCH) -D_GNU_SOURCE \
|
||||
-D_FILE_OFFSET_BITS=64 \
|
||||
$(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
|
||||
-I$(SASRCDIR) \
|
||||
-I$(GENERATED) \
|
||||
-I$(BOOT_JAVA_HOME)/include \
|
||||
-I$(BOOT_JAVA_HOME)/include/$(Platform_os_family) \
|
||||
$(ALT_SAINCDIR) \
|
||||
$(SASRCFILES) \
|
||||
$(SA_LFLAGS) \
|
||||
$(SA_DEBUG_CFLAGS) \
|
||||
$(EXTRA_CFLAGS) \
|
||||
-o $@ \
|
||||
-lthread_db
|
||||
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
||||
$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO)
|
||||
$(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
|
||||
ifeq ($(STRIP_POLICY),all_strip)
|
||||
$(QUIETLY) $(STRIP) $@
|
||||
else
|
||||
ifeq ($(STRIP_POLICY),min_strip)
|
||||
$(QUIETLY) $(STRIP) -g $@
|
||||
# implied else here is no stripping at all
|
||||
endif
|
||||
endif
|
||||
ifeq ($(ZIP_DEBUGINFO_FILES),1)
|
||||
$(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO)
|
||||
$(RM) $(LIBSAPROC_DEBUGINFO)
|
||||
endif
|
||||
endif
|
||||
|
||||
install_saproc: $(BUILDLIBSAPROC)
|
||||
$(QUIETLY) if [ -e $(LIBSAPROC) ] ; then \
|
||||
echo "Copying $(LIBSAPROC) to $(DEST_SAPROC)"; \
|
||||
test ! -f $(LIBSAPROC_DEBUGINFO) || \
|
||||
$(CP) -f $(LIBSAPROC_DEBUGINFO) $(DEST_SAPROC_DEBUGINFO); \
|
||||
test ! -f $(LIBSAPROC_DIZ) || \
|
||||
$(CP) -f $(LIBSAPROC_DIZ) $(DEST_SAPROC_DIZ); \
|
||||
$(CP) -f $(LIBSAPROC) $(DEST_SAPROC) && echo "Done"; \
|
||||
fi
|
||||
|
||||
.PHONY: install_saproc
|
@ -28,7 +28,6 @@
|
||||
# It also:
|
||||
# -builds and runs adlc via adlc.make
|
||||
# -generates JVMTI source and docs via jvmti.make (JSR-163)
|
||||
# -generate sa-jdi.jar (JDI binding to core files)
|
||||
|
||||
# It assumes the following flags are set:
|
||||
# CFLAGS Platform_file, Src_Dirs_I, Src_Dirs_V, SYSDEFS, AOUT, Obj_Files
|
||||
@ -86,7 +85,7 @@ default: vm_build_preliminaries the_vm
|
||||
@echo All done.
|
||||
|
||||
# This is an explicit dependency for the sake of parallel makes.
|
||||
vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) trace_stuff jvmti_stuff sa_stuff dtrace_stuff
|
||||
vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) trace_stuff jvmti_stuff dtrace_stuff
|
||||
@# We need a null action here, so implicit rules don't get consulted.
|
||||
|
||||
$(Cached_plat): $(Plat_File)
|
||||
@ -104,10 +103,6 @@ jvmti_stuff: $(Cached_plat) $(adjust-mflags)
|
||||
trace_stuff: jvmti_stuff $(Cached_plat) $(adjust-mflags)
|
||||
@$(MAKE) -f trace.make $(MFLAGS-adjusted)
|
||||
|
||||
# generate SA jar files and native header
|
||||
sa_stuff:
|
||||
@$(MAKE) -f sa.make $(MFLAGS-adjusted)
|
||||
|
||||
dtrace_stuff: $(Cached_plat) $(adjust-mflags)
|
||||
@$(MAKE) -f dtrace.make dtrace_gen_headers $(MFLAGS-adjusted) GENERATED=$(GENERATED)
|
||||
|
||||
@ -149,7 +144,7 @@ realclean:
|
||||
rm -fr $(GENERATED)
|
||||
|
||||
.PHONY: default vm_build_preliminaries
|
||||
.PHONY: lists ad_stuff jvmti_stuff sa_stuff the_vm clean realclean
|
||||
.PHONY: lists ad_stuff jvmti_stuff the_vm clean realclean
|
||||
.PHONY: checks check_os_version install
|
||||
|
||||
.NOTPARALLEL:
|
||||
|
@ -62,7 +62,7 @@ Src_Dirs_I += $(GENERATED)
|
||||
# The order is important for the precompiled headers to work.
|
||||
INCLUDES += $(PRECOMPILED_HEADER_DIR:%=-I%) $(Src_Dirs_I:%=-I%)
|
||||
|
||||
# SYMFLAG is used by {jsig,saproc}.make
|
||||
# SYMFLAG is used by jsig.make
|
||||
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
||||
# always build with debug info when we can create .debuginfo files
|
||||
SYMFLAG = -g
|
||||
@ -398,13 +398,10 @@ install_jvm: $(LIBJVM)
|
||||
# Signal interposition library
|
||||
include $(MAKEFILES_DIR)/jsig.make
|
||||
|
||||
# Serviceability agent
|
||||
include $(MAKEFILES_DIR)/saproc.make
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(BUILDLIBSAPROC) dtraceCheck
|
||||
build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) dtraceCheck
|
||||
|
||||
install: install_jvm install_jsig install_saproc
|
||||
install: install_jvm install_jsig
|
||||
|
||||
.PHONY: default build install install_jvm $(HS_ALT_MAKE)/$(Platform_os_family)/makefiles/$(BUILDARCH).make $(HS_ALT_MAKE)/$(Platform_os_family)/makefiles/vm.make
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright 2007, 2008 Red Hat, Inc.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
@ -25,8 +25,16 @@
|
||||
|
||||
# Setup common to Zero (non-Shark) and Shark versions of VM
|
||||
|
||||
# override this from the main file because some version of llvm do not like -Wundef
|
||||
WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wunused-function -Wunused-value
|
||||
# Some versions of llvm do not like -Wundef
|
||||
ifeq ($(USE_CLANG), true)
|
||||
WARNING_FLAGS += -Wno-undef
|
||||
endif
|
||||
# Suppress some warning flags that are normally turned on for hotspot,
|
||||
# because some of the zero code has not been updated accordingly.
|
||||
WARNING_FLAGS += -Wno-return-type \
|
||||
-Wno-format-nonliteral -Wno-format-security \
|
||||
-Wno-maybe-uninitialized
|
||||
|
||||
|
||||
# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
|
||||
OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
|
||||
@ -42,5 +50,3 @@ endif
|
||||
ifeq ($(ARCH_DATA_MODEL), 64)
|
||||
CFLAGS += -D_LP64=1
|
||||
endif
|
||||
|
||||
OPT_CFLAGS/compactingPermGenGen.o = -O1
|
||||
|
@ -1,133 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2003, 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.
|
||||
#
|
||||
#
|
||||
|
||||
# This filelist macro is included in platform specific sa.make
|
||||
# included all packages/*.java. package list can be generated by
|
||||
# $(GAMMADIR)/agent/make/build-pkglist.
|
||||
|
||||
# define AGENT_DIR before including this file in sa.make
|
||||
|
||||
AGENT_SRC_DIR = $(AGENT_DIR)/src/share/classes
|
||||
|
||||
# Splitted the set of files into two sets because on linux plaform
|
||||
# listing or compiling all the files results in 'Argument list too long' error.
|
||||
|
||||
AGENT_FILES = \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/asm/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/asm/sparc/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/c1/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/ci/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/classfile/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/code/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/compiler/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/amd64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/aarch64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/bsd/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/bsd/amd64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/bsd/x86/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/cdbg/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/cdbg/basic/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/dummy/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/ia64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/linux/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/linux/amd64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/linux/ia64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/linux/ppc64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/linux/aarch64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/linux/x86/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/linux/sparc/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/posix/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/posix/elf/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/ppc64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/proc/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/proc/amd64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/proc/ppc64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/proc/aarch64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/proc/sparc/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/proc/x86/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/remote/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/remote/amd64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/remote/ppc64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/remote/sparc/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/remote/x86/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/remote/aarch64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/sparc/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/win32/coff/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/windbg/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/windbg/amd64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/windbg/ia64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/windbg/x86/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/windows/x86/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/windows/amd64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/debugger/x86/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/gc/cms/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/gc/g1/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/gc/parallel/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/gc/serial/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/gc/shared/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/interpreter/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/jdi/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/memory/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/oops/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/opto/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/prims/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/amd64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/aarch64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/bsd/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/bsd_amd64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/bsd_x86/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/linux/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/linux_amd64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/linux_aarch64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/linux_x86/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/linux_sparc/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/linux_ppc64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/posix/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/solaris_amd64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/solaris_sparc/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/solaris_x86/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/sparc/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/x86/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/win32_amd64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/win32_x86/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/runtime/ppc64/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/tools/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/tools/jcore/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/tools/soql/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/types/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/types/basic/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/utilities/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/utilities/memo/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/utilities/soql/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/action/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/classbrowser/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/table/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/tree/*.java \
|
||||
$(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/treetable/*.java \
|
||||
$(AGENT_SRC_DIR)/com/sun/java/swing/action/*.java \
|
||||
$(AGENT_SRC_DIR)/com/sun/java/swing/ui/*.java
|
@ -7,6 +7,7 @@
|
||||
JVM_ActiveProcessorCount;
|
||||
JVM_ArrayCopy;
|
||||
JVM_AssertionStatusDirectives;
|
||||
JVM_CallStackWalk;
|
||||
JVM_ClassDepth;
|
||||
JVM_ClassLoaderDepth;
|
||||
JVM_Clone;
|
||||
@ -31,12 +32,12 @@
|
||||
JVM_CurrentTimeMillis;
|
||||
JVM_DefineClass;
|
||||
JVM_DefineClassWithSource;
|
||||
JVM_DefineClassWithSourceCond;
|
||||
JVM_DesiredAssertionStatus;
|
||||
JVM_DoPrivileged;
|
||||
JVM_DumpAllStacks;
|
||||
JVM_DumpThreads;
|
||||
JVM_FillInStackTrace;
|
||||
JVM_FillStackFrames;
|
||||
JVM_FindClassFromCaller;
|
||||
JVM_FindClassFromClass;
|
||||
JVM_FindClassFromBootLoader;
|
||||
@ -134,6 +135,7 @@
|
||||
JVM_MonitorNotify;
|
||||
JVM_MonitorNotifyAll;
|
||||
JVM_MonitorWait;
|
||||
JVM_MoreStackWalk;
|
||||
JVM_NanoTime;
|
||||
JVM_NativePath;
|
||||
JVM_NewArray;
|
||||
@ -151,6 +153,7 @@
|
||||
JVM_SetClassSigners;
|
||||
JVM_SetNativeThreadName;
|
||||
JVM_SetPrimitiveArrayElement;
|
||||
JVM_SetMethodInfo;
|
||||
JVM_SetThreadPriority;
|
||||
JVM_Sleep;
|
||||
JVM_StartThread;
|
||||
|
@ -36,15 +36,6 @@
|
||||
# or BOOTDIR has to be set. We do *not* search javac, javah, rmic etc.
|
||||
# from the PATH.
|
||||
|
||||
# Along with VM, Serviceability Agent (SA) is built for SA/JDI binding.
|
||||
# JDI binding on SA produces two binaries:
|
||||
# 1. sa-jdi.jar - This is built before building libjvm.so
|
||||
# Please refer to ./makefiles/sa.make
|
||||
# 2. libsaproc.so - Native library for SA - This is built after
|
||||
# libjsig.so (signal interposition library)
|
||||
# Please refer to ./makefiles/vm.make
|
||||
# If $(GAMMADIR)/agent dir is not present, SA components are not built.
|
||||
|
||||
ifeq ($(GAMMADIR),)
|
||||
include ../../make/defs.make
|
||||
else
|
||||
|
@ -48,7 +48,6 @@
|
||||
# adlc.make -
|
||||
# trace.make - generate tracing event and type definitions
|
||||
# jvmti.make - generate JVMTI bindings from the spec (JSR-163)
|
||||
# sa.make - generate SA jar file and natives
|
||||
#
|
||||
# The makefiles are split this way so that "make foo" will run faster by not
|
||||
# having to read the dependency files for the vm.
|
||||
@ -116,7 +115,7 @@ SUBMAKE_DIRS = $(addprefix $(PLATFORM_DIR)/,$(TARGETS))
|
||||
# For dependencies and recursive makes.
|
||||
BUILDTREE_MAKE = $(GAMMADIR)/make/$(OS_FAMILY)/makefiles/buildtree.make
|
||||
|
||||
BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make sa.make dtrace.make
|
||||
BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make dtrace.make
|
||||
|
||||
BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OS_FAMILY) \
|
||||
ARCH=$(ARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT)
|
||||
@ -200,7 +199,6 @@ flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
|
||||
echo "TARGET = $(TARGET)"; \
|
||||
echo "HOTSPOT_VERSION_STRING = $(HOTSPOT_VERSION_STRING)"; \
|
||||
echo "VERSION_STRING = $(VERSION_STRING)"; \
|
||||
echo "SA_BUILD_VERSION = $(HOTSPOT_VERSION_STRING)"; \
|
||||
echo "HOTSPOT_BUILD_USER = $(HOTSPOT_BUILD_USER)"; \
|
||||
echo "HOTSPOT_VM_DISTRO = $(HOTSPOT_VM_DISTRO)"; \
|
||||
echo "OPENJDK = $(OPENJDK)"; \
|
||||
@ -339,16 +337,6 @@ trace.make: $(BUILDTREE_MAKE)
|
||||
echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
|
||||
) > $@
|
||||
|
||||
sa.make: $(BUILDTREE_MAKE)
|
||||
@echo $(LOG_INFO) Creating $@ ...
|
||||
$(QUIETLY) ( \
|
||||
$(BUILDTREE_COMMENT); \
|
||||
echo; \
|
||||
echo include flags.make; \
|
||||
echo; \
|
||||
echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
|
||||
) > $@
|
||||
|
||||
dtrace.make: $(BUILDTREE_MAKE)
|
||||
@echo $(LOG_INFO) Creating $@ ...
|
||||
$(QUIETLY) ( \
|
||||
|
@ -277,13 +277,3 @@ ifeq ($(JVM_VARIANT_CLIENT),true)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX)
|
||||
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
||||
ifeq ($(ZIP_DEBUGINFO_FILES),1)
|
||||
EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libsaproc.diz
|
||||
else
|
||||
EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libsaproc.debuginfo
|
||||
endif
|
||||
endif
|
||||
EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar
|
||||
|
@ -95,8 +95,6 @@ BOOT_JAVA_HOME = $(JAVA_HOME)
|
||||
else
|
||||
|
||||
# take from the PATH, if ALT_BOOTDIR, BOOTDIR and JAVA_HOME are not defined
|
||||
# note that this is to support hotspot build without SA. To build
|
||||
# SA along with hotspot, you need to define ALT_BOOTDIR, BOOTDIR or JAVA_HOME
|
||||
|
||||
RUN.JAVA = java
|
||||
RUN.JAVAP = javap
|
||||
|
@ -1,104 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2003, 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.
|
||||
#
|
||||
#
|
||||
|
||||
# This makefile (sa.make) is included from the sa.make in the
|
||||
# build directories.
|
||||
|
||||
# This makefile is used to build Serviceability Agent java code
|
||||
# and generate JNI header file for native methods.
|
||||
|
||||
include $(GAMMADIR)/make/solaris/makefiles/rules.make
|
||||
include $(GAMMADIR)/make/defs.make
|
||||
AGENT_DIR = $(GAMMADIR)/agent
|
||||
include $(GAMMADIR)/make/sa.files
|
||||
|
||||
-include $(HS_ALT_MAKE)/solaris/makefiles/sa.make
|
||||
|
||||
GENERATED = ../generated
|
||||
|
||||
# tools.jar is needed by the JDI - SA binding
|
||||
SA_CLASSPATH = $(BOOT_JAVA_HOME)/lib/tools.jar
|
||||
|
||||
# TODO: if it's a modules image, check if SA module is installed.
|
||||
MODULELIB_PATH= $(BOOT_JAVA_HOME)/lib/modules
|
||||
|
||||
AGENT_FILES_LIST := $(GENERATED)/agent.classes.list
|
||||
|
||||
SA_CLASSDIR = $(GENERATED)/saclasses
|
||||
|
||||
SA_BUILD_VERSION_PROP = "sun.jvm.hotspot.runtime.VM.saBuildVersion=$(SA_BUILD_VERSION)"
|
||||
|
||||
SA_PROPERTIES = $(SA_CLASSDIR)/sa.properties
|
||||
|
||||
# if $(AGENT_DIR) does not exist, we don't build SA.
|
||||
all:
|
||||
$(QUIETLY) if [ -d $(AGENT_DIR) ] ; then \
|
||||
$(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \
|
||||
fi
|
||||
|
||||
$(GENERATED)/sa-jdi.jar: $(AGENT_FILES)
|
||||
$(QUIETLY) echo $(LOG_INFO) "Making $@";
|
||||
$(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
|
||||
echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \
|
||||
exit 1; \
|
||||
fi
|
||||
$(QUIETLY) if [ ! -f $(SA_CLASSPATH) -a ! -d $(MODULELIB_PATH) ] ; then \
|
||||
echo "Missing $(SA_CLASSPATH) file. Use 1.6.0 or later version of JDK";\
|
||||
echo ""; \
|
||||
exit 1; \
|
||||
fi
|
||||
$(QUIETLY) if [ ! -d $(SA_CLASSDIR) ] ; then \
|
||||
mkdir -p $(SA_CLASSDIR); \
|
||||
fi
|
||||
# Note: When indented, make tries to execute the '$(shell' comment.
|
||||
# In some environments, cmd processors have limited line length.
|
||||
# To prevent the javac invocation in the next block from using
|
||||
# a very long cmd line, we use javac's @file-list option. We
|
||||
# generate the file lists using make's built-in 'foreach' control
|
||||
# flow which also avoids cmd processor line length issues. Since
|
||||
# the 'foreach' is done as part of make's macro expansion phase,
|
||||
# the initialization of the lists is also done in the same phase
|
||||
# using '$(shell rm ...' instead of using the more traditional
|
||||
# 'rm ...' rule.
|
||||
$(shell rm -rf $(AGENT_FILES_LIST))
|
||||
# gnumake 3.78.1 does not accept the *'s that
|
||||
# are in AGENT_FILES, so use the shell to expand them.
|
||||
# Be extra carefull to not produce too long command lines in the shell!
|
||||
$(foreach file,$(AGENT_FILES),$(shell ls -1 $(file) >> $(AGENT_FILES_LIST)))
|
||||
$(QUIETLY) $(COMPILE.JAVAC) -h $(GENERATED) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES_LIST)
|
||||
$(QUIETLY) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
|
||||
$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
|
||||
$(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql/sa.js
|
||||
$(QUIETLY) $(CP) $(AGENT_SRC_DIR)/sun/jvm/hotspot/utilities/soql/sa.js $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql
|
||||
$(QUIETLY) mkdir -p $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources
|
||||
$(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources/*
|
||||
$(QUIETLY) $(CP) $(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources/
|
||||
$(QUIETLY) $(CP) -r $(AGENT_SRC_DIR)/images/* $(SA_CLASSDIR)/
|
||||
$(QUIETLY) $(RUN.JAR) cf $@ -C $(SA_CLASSDIR)/ .
|
||||
$(QUIETLY) $(RUN.JAR) uf $@ -C $(AGENT_SRC_DIR) META-INF/services/com.sun.jdi.connect.Connector
|
||||
|
||||
clean:
|
||||
rm -rf $(SA_CLASSDIR)
|
||||
rm -rf $(GENERATED)/sa-jdi.jar
|
||||
rm -rf $(AGENT_FILES_LIST)
|
@ -1,151 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
|
||||
# Rules to build serviceability agent library, used by vm.make
|
||||
|
||||
# libsaproc.so: serviceability agent
|
||||
|
||||
SAPROC = saproc
|
||||
SADIS = sadis
|
||||
LIBSAPROC = lib$(SAPROC).so
|
||||
SADISOBJ = $(SADIS).o
|
||||
|
||||
LIBSAPROC_DEBUGINFO = lib$(SAPROC).debuginfo
|
||||
LIBSAPROC_DIZ = lib$(SAPROC).diz
|
||||
|
||||
AGENT_DIR = $(GAMMADIR)/agent
|
||||
|
||||
SASRCDIR = $(AGENT_DIR)/src/os/$(Platform_os_family)/proc
|
||||
|
||||
SASRCFILES = $(SASRCDIR)/saproc.cpp
|
||||
|
||||
SADISSRCFILES = $(AGENT_DIR)/src/share/native/sadis.c
|
||||
|
||||
SAMAPFILE = $(SASRCDIR)/mapfile
|
||||
|
||||
DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC)
|
||||
DEST_SAPROC_DEBUGINFO = $(JDK_LIBDIR)/$(LIBSAPROC_DEBUGINFO)
|
||||
DEST_SAPROC_DIZ = $(JDK_LIBDIR)/$(LIBSAPROC_DIZ)
|
||||
|
||||
# if $(AGENT_DIR) does not exist, we don't build SA
|
||||
|
||||
ifneq ($(wildcard $(AGENT_DIR)),)
|
||||
BUILDLIBSAPROC = $(LIBSAPROC)
|
||||
endif
|
||||
|
||||
SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE))
|
||||
|
||||
ifdef USE_GCC
|
||||
SA_LFLAGS += -D_REENTRANT
|
||||
else
|
||||
SA_LFLAGS += -mt -xnolib -norunpath
|
||||
endif
|
||||
|
||||
# The libproc Pstack_iter() interface changed in Nevada-B159.
|
||||
# Use 'uname -r -v' to determine the Solaris version as per
|
||||
# Solaris Nevada team request. This logic needs to match:
|
||||
# agent/src/os/solaris/proc/saproc.cpp: set_has_newer_Pstack_iter():
|
||||
# - skip SunOS 4 or older
|
||||
# - skip Solaris 10 or older
|
||||
# - skip two digit internal Nevada builds
|
||||
# - skip three digit internal Nevada builds thru 149
|
||||
# - skip internal Nevada builds 150-158
|
||||
# - if not skipped, print define for Nevada-B159 or later
|
||||
SOLARIS_11_B159_OR_LATER := \
|
||||
$(shell uname -r -v \
|
||||
| sed -n \
|
||||
-e '/^[0-4]\. /b' \
|
||||
-e '/^5\.[0-9] /b' \
|
||||
-e '/^5\.10 /b' \
|
||||
-e '/ snv_[0-9][0-9]$$/b' \
|
||||
-e '/ snv_[01][0-4][0-9]$$/b' \
|
||||
-e '/ snv_15[0-8]$$/b' \
|
||||
-e 's/.*/-DSOLARIS_11_B159_OR_LATER/' \
|
||||
-e 'p' \
|
||||
)
|
||||
|
||||
# Uncomment the following to simulate building on Nevada-B159 or later
|
||||
# when actually building on Nevada-B158 or earlier:
|
||||
#SOLARIS_11_B159_OR_LATER=-DSOLARIS_11_B159_OR_LATER
|
||||
|
||||
$(SADISOBJ): $(SADISSRCFILES)
|
||||
$(QUIETLY) $(CC) \
|
||||
$(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
|
||||
-I$(SASRCDIR) \
|
||||
-I$(GENERATED) \
|
||||
-I$(BOOT_JAVA_HOME)/include \
|
||||
-I$(BOOT_JAVA_HOME)/include/$(Platform_os_family) \
|
||||
$(SOLARIS_11_B159_OR_LATER) \
|
||||
$(EXTRA_CFLAGS) \
|
||||
$(SADISSRCFILES) \
|
||||
-c -o $(SADISOBJ)
|
||||
|
||||
$(LIBSAPROC): $(SASRCFILES) $(SADISOBJ) $(SAMAPFILE)
|
||||
$(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
|
||||
echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@echo $(LOG_INFO) Making SA debugger back-end...
|
||||
$(QUIETLY) $(CXX) \
|
||||
$(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
|
||||
-I$(SASRCDIR) \
|
||||
-I$(GENERATED) \
|
||||
-I$(BOOT_JAVA_HOME)/include \
|
||||
-I$(BOOT_JAVA_HOME)/include/$(Platform_os_family) \
|
||||
$(SOLARIS_11_B159_OR_LATER) \
|
||||
$(EXTRA_CXXFLAGS) $(EXTRA_LDFLAGS) \
|
||||
$(SADISOBJ) \
|
||||
$(SASRCFILES) \
|
||||
$(SA_LFLAGS) \
|
||||
-o $@ \
|
||||
-ldl -ldemangle -lthread -lc
|
||||
|
||||
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
||||
$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBSAPROC_DEBUGINFO)
|
||||
$(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBSAPROC_DEBUGINFO) $@
|
||||
ifeq ($(STRIP_POLICY),all_strip)
|
||||
$(QUIETLY) $(STRIP) $@
|
||||
else
|
||||
ifeq ($(STRIP_POLICY),min_strip)
|
||||
$(QUIETLY) $(STRIP) -x $@
|
||||
# implied else here is no stripping at all
|
||||
endif
|
||||
endif
|
||||
ifeq ($(ZIP_DEBUGINFO_FILES),1)
|
||||
$(ZIPEXE) -q -y $(LIBSAPROC_DIZ) $(LIBSAPROC_DEBUGINFO)
|
||||
$(RM) $(LIBSAPROC_DEBUGINFO)
|
||||
endif
|
||||
endif
|
||||
|
||||
install_saproc: $(BULDLIBSAPROC)
|
||||
$(QUIETLY) if [ -f $(LIBSAPROC) ] ; then \
|
||||
echo "Copying $(LIBSAPROC) to $(DEST_SAPROC)"; \
|
||||
test ! -f $(LIBSAPROC_DEBUGINFO) || \
|
||||
$(CP) -f $(LIBSAPROC_DEBUGINFO) $(DEST_SAPROC_DEBUGINFO); \
|
||||
test ! -f $(LIBSAPROC_DIZ) || \
|
||||
$(CP) -f $(LIBSAPROC_DIZ) $(DEST_SAPROC_DIZ); \
|
||||
$(CP) -f $(LIBSAPROC) $(DEST_SAPROC) && echo "Done"; \
|
||||
fi
|
||||
|
||||
.PHONY: install_saproc
|
@ -28,7 +28,6 @@
|
||||
# It also:
|
||||
# -builds and runs adlc via adlc.make
|
||||
# -generates JVMTI source and docs via jvmti.make (JSR-163)
|
||||
# -generate sa-jdi.jar (JDI binding to core files)
|
||||
|
||||
# It assumes the following flags are set:
|
||||
# CFLAGS Platform_file, Src_Dirs_I, Src_Dirs_V, SYSDEFS, AOUT, Jvm_Obj_Files
|
||||
@ -79,7 +78,7 @@ default: vm_build_preliminaries the_vm
|
||||
@echo All done.
|
||||
|
||||
# This is an explicit dependency for the sake of parallel makes.
|
||||
vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) jvmti_stuff trace_stuff sa_stuff dtrace_stuff
|
||||
vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) jvmti_stuff trace_stuff dtrace_stuff
|
||||
@# We need a null action here, so implicit rules don't get consulted.
|
||||
|
||||
$(Cached_plat): $(Plat_File)
|
||||
@ -97,10 +96,6 @@ jvmti_stuff: $(Cached_plat) $(adjust-mflags)
|
||||
trace_stuff: jvmti_stuff $(Cached_plat) $(adjust-mflags)
|
||||
@$(MAKE) -f trace.make $(MFLAGS-adjusted)
|
||||
|
||||
# generate SA jar files and native header
|
||||
sa_stuff:
|
||||
@$(MAKE) -f sa.make $(MFLAGS-adjusted)
|
||||
|
||||
dtrace_stuff: $(Cached_plat) $(adjust-mflags)
|
||||
@$(MAKE) -f dtrace.make dtrace_gen_headers $(MFLAGS-adjusted) GENERATED=$(GENERATED)
|
||||
|
||||
@ -140,7 +135,7 @@ realclean:
|
||||
rm -fr $(GENERATED)
|
||||
|
||||
.PHONY: default vm_build_preliminaries
|
||||
.PHONY: lists ad_stuff jvmti_stuff trace_stuff sa_stuff the_vm clean realclean
|
||||
.PHONY: lists ad_stuff jvmti_stuff trace_stuff the_vm clean realclean
|
||||
.PHONY: checks check_os_version install
|
||||
|
||||
.NOTPARALLEL:
|
||||
|
@ -55,7 +55,7 @@ VPATH += $(Src_Dirs_V:%=%:)
|
||||
Src_Dirs_I += $(GENERATED)
|
||||
INCLUDES += $(Src_Dirs_I:%=-I%)
|
||||
|
||||
# SYMFLAG is used by {dtrace,jsig,saproc}.make.
|
||||
# SYMFLAG is used by {dtrace,jsig}.make.
|
||||
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
||||
# always build with debug info when we can create .debuginfo files
|
||||
# and disable 'lazy debug info' so the .so has everything.
|
||||
@ -343,13 +343,10 @@ install_jvm: $(LIBJVM)
|
||||
# Signal interposition library
|
||||
include $(MAKEFILES_DIR)/jsig.make
|
||||
|
||||
# Serviceability agent
|
||||
include $(MAKEFILES_DIR)/saproc.make
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(LIBJVM_DTRACE) $(BUILDLIBSAPROC) dtraceCheck
|
||||
build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(LIBJVM_DTRACE) dtraceCheck
|
||||
|
||||
install: install_jvm install_jsig install_saproc
|
||||
install: install_jvm install_jsig
|
||||
|
||||
.PHONY: default build install install_jvm
|
||||
|
@ -48,6 +48,17 @@ BUILD_HOTSPOT_JTREG_NATIVE_SRC := \
|
||||
$(HOTSPOT_TOPDIR)/test/runtime/SameObject \
|
||||
#
|
||||
|
||||
# Add conditional directories here when needed.
|
||||
ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc)
|
||||
BUILD_HOTSPOT_JTREG_NATIVE_SRC += \
|
||||
$(HOTSPOT_TOPDIR)/test/runtime/libadimalloc.solaris.sparc \
|
||||
$(HOTSPOT_TOPDIR)/test/runtime/ThreadSignalMask
|
||||
endif
|
||||
|
||||
ifeq ($(TOOLCHAIN_TYPE), solstudio)
|
||||
BUILD_HOTSPOT_JTREG_LIBRARIES_LDFLAGS_liboverflow := -lc
|
||||
endif
|
||||
|
||||
BUILD_HOTSPOT_JTREG_OUTPUT_DIR := $(BUILD_OUTPUT)/support/test/hotspot/jtreg/native
|
||||
|
||||
BUILD_HOTSPOT_JTREG_IMAGE_DIR := $(TEST_IMAGE_DIR)/hotspot/jtreg
|
||||
|
@ -30,14 +30,6 @@
|
||||
# Note: Running nmake or build.bat from the Windows command shell requires
|
||||
# that "sh" be accessible on the PATH. An MKS install does this.
|
||||
|
||||
# SA components are built if BUILD_WIN_SA=1 is specified.
|
||||
# See notes in README. This produces files:
|
||||
# 1. sa-jdi.jar - This is built before building jvm.dll
|
||||
# 2. sawindbg.dll - Native library for SA - This is built after jvm.dll
|
||||
# - Also, .lib, .map, .pdb.
|
||||
#
|
||||
# Please refer to ./makefiles/sa.make
|
||||
|
||||
# If we haven't set an ARCH yet use x86
|
||||
# create.bat and build.bat will set it, if used.
|
||||
!ifndef ARCH
|
||||
@ -169,30 +161,6 @@ OPENJDK=true
|
||||
!endif
|
||||
!endif
|
||||
|
||||
# We don't support SA on ia64, and we can't
|
||||
# build it if we are using a version of Vis Studio
|
||||
# older than .Net 2003.
|
||||
# SA_INCLUDE and SA_LIB are hold-overs from a previous
|
||||
# implementation in which we could build SA using
|
||||
# Debugging Tools For Windows, in which the .h/.lib files
|
||||
# and the .dlls are in different places than
|
||||
# they are for Vis Studio .Net 2003.
|
||||
# If that code ever needs to be resurrected, these vars
|
||||
# can be set here. They are used in makefiles/sa.make.
|
||||
|
||||
checkSA::
|
||||
|
||||
!if "$(BUILD_WIN_SA)" != "1"
|
||||
checkSA::
|
||||
@echo Not building SA: BUILD_WIN_SA != 1
|
||||
|
||||
!elseif "$(ARCH)" == "ia64"
|
||||
BUILD_WIN_SA = 0
|
||||
checkSA::
|
||||
@echo Not building SA: ARCH = ia64
|
||||
|
||||
!endif # ! "$(BUILD_WIN_SA)" != "1"
|
||||
|
||||
#########################################################################
|
||||
|
||||
defaultTarget: product
|
||||
@ -249,10 +217,6 @@ $(variantDir)\local.make: checks
|
||||
@ echo HS_COPYRIGHT=$(HOTSPOT_VM_COPYRIGHT) >> $@
|
||||
@ echo HS_NAME=$(PRODUCT_NAME) $(VERSION_SHORT) >> $@
|
||||
@ echo HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) >> $@
|
||||
@ echo BUILD_WIN_SA=$(BUILD_WIN_SA) >> $@
|
||||
@ echo SA_BUILD_VERSION=$(HOTSPOT_VERSION_STRING) >> $@
|
||||
@ echo SA_INCLUDE=$(SA_INCLUDE) >> $@
|
||||
@ echo SA_LIB=$(SA_LIB) >> $@
|
||||
@ echo JDK_VER=$(JDK_VER) >> $@
|
||||
@ echo JDK_DOTVER=$(JDK_DOTVER) >> $@
|
||||
@ echo VERSION_STRING=$(VERSION_STRING) >> $@
|
||||
@ -271,7 +235,7 @@ $(variantDir)\local.make: checks
|
||||
@ if "$(MV)" NEQ "" echo MV=$(MV) >> $@
|
||||
@ if "$(ZIPEXE)" NEQ "" echo ZIPEXE=$(ZIPEXE) >> $@
|
||||
|
||||
checks: checkVariant checkWorkSpace checkSA
|
||||
checks: checkVariant checkWorkSpace
|
||||
|
||||
checkVariant:
|
||||
@ if "$(Variant)"=="" echo Need to specify "Variant=[tiered|compiler2|compiler1|core]" && false
|
||||
|
@ -54,20 +54,6 @@ RM="$MKS_HOME/rm.exe"
|
||||
DUMPBIN="link.exe /dump"
|
||||
export VS_UNICODE_OUTPUT=
|
||||
|
||||
if [ "$1" = "-nosa" ]; then
|
||||
echo EXPORTS > vm.def
|
||||
echo ""
|
||||
echo "***"
|
||||
echo "*** Not building SA: BUILD_WIN_SA != 1"
|
||||
echo "*** C++ Vtables NOT included in vm.def"
|
||||
echo "*** This jvm.dll will NOT work properly with SA."
|
||||
echo "***"
|
||||
echo "*** When in doubt, set BUILD_WIN_SA=1, clean and rebuild."
|
||||
echo "***"
|
||||
echo ""
|
||||
exit
|
||||
fi
|
||||
|
||||
echo "EXPORTS" > vm1.def
|
||||
|
||||
# When called from IDE the first param should contain the link version, otherwise may be nill
|
||||
|
@ -129,7 +129,7 @@ esac
|
||||
|
||||
# Special handling of arch model.
|
||||
case "${Platform_arch_model}" in
|
||||
"x86_32") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} *x86_64*" ;;
|
||||
"x86_32") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} *x86_64* ${JVMCI_SPECIFIC_FILES}" ;;
|
||||
"x86_64") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} *x86_32*" ;;
|
||||
esac
|
||||
|
||||
|
@ -25,7 +25,6 @@
|
||||
HS_INTERNAL_NAME=jvm
|
||||
HS_FNAME=$(HS_INTERNAL_NAME).dll
|
||||
AOUT=$(HS_FNAME)
|
||||
SAWINDBG=sawindbg.dll
|
||||
GENERATED=../generated
|
||||
|
||||
# Allow the user to turn off precompiled headers from the command line.
|
||||
@ -33,7 +32,7 @@ GENERATED=../generated
|
||||
BUILD_PCH_FILE=_build_pch_file.obj
|
||||
!endif
|
||||
|
||||
default:: $(BUILD_PCH_FILE) $(AOUT) checkAndBuildSA
|
||||
default:: $(BUILD_PCH_FILE) $(AOUT)
|
||||
|
||||
!include ../local.make
|
||||
!include compile.make
|
||||
@ -67,4 +66,3 @@ $(AOUT): $(Res_Files) $(Obj_Files) vm.def
|
||||
!endif
|
||||
|
||||
!include $(WorkSpace)/make/windows/makefiles/shared.make
|
||||
!include $(WorkSpace)/make/windows/makefiles/sa.make
|
||||
|
@ -231,21 +231,6 @@ else ifeq ($(USING_MINGW), true)
|
||||
ABS_OS_MAKEFILE := $(subst /,\\,$(shell $(CD) $(HS_MAKE_DIR)/$(OSNAME);$(PWD))/build.make)
|
||||
endif
|
||||
|
||||
# Disable building SA on windows until we are sure
|
||||
# we want to release it. If we build it here,
|
||||
# the SDK makefiles will copy it over and put it into
|
||||
# the created image.
|
||||
BUILD_WIN_SA = 1
|
||||
ifneq ($(ALT_BUILD_WIN_SA),)
|
||||
BUILD_WIN_SA = $(ALT_BUILD_WIN_SA)
|
||||
endif
|
||||
|
||||
ifeq ($(BUILD_WIN_SA), 1)
|
||||
ifeq ($(ARCH),ia64)
|
||||
BUILD_WIN_SA = 0
|
||||
endif
|
||||
endif
|
||||
|
||||
EXPORT_SERVER_DIR = $(EXPORT_BIN_DIR)/server
|
||||
EXPORT_CLIENT_DIR = $(EXPORT_BIN_DIR)/client
|
||||
|
||||
@ -276,21 +261,6 @@ endif
|
||||
|
||||
EXPORT_LIST += $(EXPORT_LIB_DIR)/jvm.lib
|
||||
|
||||
ifeq ($(BUILD_WIN_SA), 1)
|
||||
EXPORT_LIST += $(EXPORT_BIN_DIR)/sawindbg.$(LIBRARY_SUFFIX)
|
||||
ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
||||
ifeq ($(ZIP_DEBUGINFO_FILES),1)
|
||||
EXPORT_LIST += $(EXPORT_BIN_DIR)/sawindbg.diz
|
||||
else
|
||||
EXPORT_LIST += $(EXPORT_BIN_DIR)/sawindbg.pdb
|
||||
EXPORT_LIST += $(EXPORT_BIN_DIR)/sawindbg.map
|
||||
endif
|
||||
endif
|
||||
EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar
|
||||
# Must pass this down to nmake.
|
||||
MAKE_ARGS += BUILD_WIN_SA=1
|
||||
endif
|
||||
|
||||
# Propagate compiler and tools paths from configure to nmake.
|
||||
# Need to make sure they contain \\ and not /.
|
||||
ifneq ($(SPEC),)
|
||||
|
@ -25,7 +25,6 @@
|
||||
HS_INTERNAL_NAME=jvm
|
||||
HS_FNAME=$(HS_INTERNAL_NAME).dll
|
||||
AOUT=$(HS_FNAME)
|
||||
SAWINDBG=sawindbg.dll
|
||||
GENERATED=../generated
|
||||
|
||||
# Allow the user to turn off precompiled headers from the command line.
|
||||
@ -33,7 +32,7 @@ GENERATED=../generated
|
||||
BUILD_PCH_FILE=_build_pch_file.obj
|
||||
!endif
|
||||
|
||||
default:: $(BUILD_PCH_FILE) $(AOUT) checkAndBuildSA
|
||||
default:: $(BUILD_PCH_FILE) $(AOUT)
|
||||
|
||||
!include ../local.make
|
||||
!include compile.make
|
||||
@ -66,4 +65,3 @@ $(AOUT): $(Res_Files) $(Obj_Files) vm.def
|
||||
!endif
|
||||
|
||||
!include $(WorkSpace)/make/windows/makefiles/shared.make
|
||||
!include $(WorkSpace)/make/windows/makefiles/sa.make
|
||||
|
@ -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 ../local.make
|
||||
@ -34,9 +34,6 @@ JvmtiOutDir=jvmtifiles
|
||||
TraceOutDir=tracefiles
|
||||
!include $(WorkSpace)/make/windows/makefiles/trace.make
|
||||
|
||||
# Pick up rules for building SA
|
||||
!include $(WorkSpace)/make/windows/makefiles/sa.make
|
||||
|
||||
AdlcOutDir=adfiles
|
||||
|
||||
!if ("$(Variant)" == "compiler2") || ("$(Variant)" == "tiered")
|
||||
|
@ -32,7 +32,7 @@ GENERATED=../generated
|
||||
BUILD_PCH_FILE=_build_pch_file.obj
|
||||
!endif
|
||||
|
||||
default:: $(BUILD_PCH_FILE) $(AOUT) checkAndBuildSA
|
||||
default:: $(BUILD_PCH_FILE) $(AOUT)
|
||||
|
||||
!include ../local.make
|
||||
!include compile.make
|
||||
@ -69,4 +69,3 @@ $(AOUT): $(Res_Files) $(Obj_Files) vm.def
|
||||
!endif
|
||||
|
||||
!include $(WorkSpace)/make/windows/makefiles/shared.make
|
||||
!include $(WorkSpace)/make/windows/makefiles/sa.make
|
||||
|
@ -90,10 +90,6 @@ ProjectCreatorIDEOptions = \
|
||||
-disablePch getThread_windows_$(Platform_arch).cpp \
|
||||
-disablePch_compiler2 opcodes.cpp
|
||||
|
||||
!if "$(BUILD_WIN_SA)" != "1"
|
||||
BUILD_VM_DEF_FLAG=-nosa
|
||||
!endif
|
||||
|
||||
# Common options for the IDE builds for c1, and c2
|
||||
ProjectCreatorIDEOptions=\
|
||||
$(ProjectCreatorIDEOptions) \
|
||||
@ -106,7 +102,7 @@ ProjectCreatorIDEOptions=\
|
||||
-jdkTargetRoot $(HOTSPOTJDKDIST) \
|
||||
-define ALIGN_STACK_FRAMES \
|
||||
-define VM_LITTLE_ENDIAN \
|
||||
-prelink "" "Generating vm.def..." "cd $(HOTSPOTBUILDSPACE)\%f\%b set HOTSPOTMKSHOME=$(HOTSPOTMKSHOME) set JAVA_HOME=$(HOTSPOTJDKDIST) $(HOTSPOTMKSHOME)\sh $(HOTSPOTWORKSPACE)\make\windows\build_vm_def.sh $(BUILD_VM_DEF_FLAG) $(LD_VER)" \
|
||||
-prelink "" "Generating vm.def..." "cd $(HOTSPOTBUILDSPACE)\%f\%b set HOTSPOTMKSHOME=$(HOTSPOTMKSHOME) set JAVA_HOME=$(HOTSPOTJDKDIST) $(HOTSPOTMKSHOME)\sh $(HOTSPOTWORKSPACE)\make\windows\build_vm_def.sh $(LD_VER)" \
|
||||
-ignoreFile jsig.c \
|
||||
-ignoreFile jvmtiEnvRecommended.cpp \
|
||||
-ignoreFile jvmtiEnvStub.cpp \
|
||||
|
@ -1,165 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2003, 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.
|
||||
#
|
||||
#
|
||||
|
||||
# This makefile is used to build Serviceability Agent code
|
||||
# and generate JNI header file for native methods.
|
||||
|
||||
AGENT_DIR = $(WorkSpace)/agent
|
||||
checkAndBuildSA::
|
||||
|
||||
!if "$(BUILD_WIN_SA)" != "1"
|
||||
# Already warned about this in build.make
|
||||
!else
|
||||
|
||||
# This first part is used to build sa-jdi.jar
|
||||
!include $(WorkSpace)/make/windows/makefiles/rules.make
|
||||
!include $(WorkSpace)/make/sa.files
|
||||
|
||||
GENERATED = ../generated
|
||||
|
||||
HS_COMMON_SRC_REL = src
|
||||
|
||||
!if "$(OPENJDK)" != "true"
|
||||
HS_ALT_SRC_REL=src/closed
|
||||
HS_ALT_SRC = $(WorkSpace)/$(HS_ALT_SRC_REL)
|
||||
!ifndef HS_ALT_MAKE
|
||||
HS_ALT_MAKE=$(WorkSpace)/make/closed
|
||||
!endif
|
||||
!endif
|
||||
|
||||
HS_COMMON_SRC = $(WorkSpace)/$(HS_COMMON_SRC_REL)
|
||||
|
||||
!ifdef HS_ALT_MAKE
|
||||
!include $(HS_ALT_MAKE)/windows/makefiles/sa.make
|
||||
!endif
|
||||
|
||||
# tools.jar is needed by the JDI - SA binding
|
||||
SA_CLASSPATH = $(BOOT_JAVA_HOME)/lib/tools.jar
|
||||
|
||||
SA_CLASSDIR = $(GENERATED)/saclasses
|
||||
|
||||
SA_BUILD_VERSION_PROP = sun.jvm.hotspot.runtime.VM.saBuildVersion=$(SA_BUILD_VERSION)
|
||||
|
||||
SA_PROPERTIES = $(SA_CLASSDIR)/sa.properties
|
||||
|
||||
default:: $(GENERATED)/sa-jdi.jar
|
||||
|
||||
# Remove the space between $(SA_BUILD_VERSION_PROP) and > below as it adds a white space
|
||||
# at the end of SA version string and causes a version mismatch with the target VM version.
|
||||
|
||||
$(GENERATED)/sa-jdi.jar: $(AGENT_FILES)
|
||||
$(QUIETLY) mkdir -p $(SA_CLASSDIR)
|
||||
@echo ...Building sa-jdi.jar into $(SA_CLASSDIR)
|
||||
@echo ...$(COMPILE_JAVAC) -classpath $(SA_CLASSPATH) -d $(SA_CLASSDIR) ....
|
||||
@$(COMPILE_JAVAC) -h $(GENERATED) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES)
|
||||
$(COMPILE_RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
|
||||
$(QUIETLY) echo $(SA_BUILD_VERSION_PROP)> $(SA_PROPERTIES)
|
||||
$(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql/sa.js
|
||||
$(QUIETLY) $(CP) $(AGENT_SRC_DIR)/sun/jvm/hotspot/utilities/soql/sa.js $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql
|
||||
$(QUIETLY) rm -rf $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources
|
||||
$(QUIETLY) mkdir $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources
|
||||
$(QUIETLY) $(CP) $(AGENT_SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(SA_CLASSDIR)/sun/jvm/hotspot/ui/resources
|
||||
$(QUIETLY) $(CP) -r $(AGENT_SRC_DIR)/images/* $(SA_CLASSDIR)
|
||||
$(RUN_JAR) cf $@ -C $(SA_CLASSDIR) .
|
||||
$(RUN_JAR) uf $@ -C $(AGENT_SRC_DIR) META-INF/services/com.sun.jdi.connect.Connector
|
||||
|
||||
|
||||
|
||||
# This second part is used to build sawindbg.dll
|
||||
# We currently build it the same way for product, debug, and fastdebug.
|
||||
|
||||
SAWINDBG=sawindbg.dll
|
||||
|
||||
# Resource file containing VERSIONINFO
|
||||
SA_Res_Files=.\version.sares
|
||||
|
||||
checkAndBuildSA:: $(SAWINDBG)
|
||||
|
||||
# These do not need to be optimized (don't run a lot of code) and it
|
||||
# will be useful to have the assertion checks in place
|
||||
|
||||
!if "$(BUILDARCH)" == "ia64"
|
||||
SA_CFLAGS = -nologo $(MS_RUNTIME_OPTION) -W3 $(GX_OPTION) -Od -D "WIN32" -D "WIN64" -D "_WINDOWS" -D "_DEBUG" -D "_CONSOLE" -D "_MBCS" -FD -c
|
||||
!elseif "$(BUILDARCH)" == "amd64"
|
||||
SA_CFLAGS = -nologo $(MS_RUNTIME_OPTION) -W3 $(GX_OPTION) -Od -D "WIN32" -D "WIN64" -D "_WINDOWS" -D "_DEBUG" -D "_CONSOLE" -D "_MBCS" -FD -c
|
||||
!else
|
||||
SA_CFLAGS = -nologo $(MS_RUNTIME_OPTION) -W3 $(GX_OPTION) -Od -D "WIN32" -D "_WINDOWS" -D "_DEBUG" -D "_CONSOLE" -D "_MBCS" -FD -RTC1 -c
|
||||
!if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
|
||||
SA_CFLAGS = $(SA_CFLAGS) -ZI
|
||||
!endif
|
||||
!endif
|
||||
!if "$(MT)" != ""
|
||||
SA_LD_FLAGS = -manifest $(SA_LD_FLAGS)
|
||||
!endif
|
||||
|
||||
SASRCFILES = $(AGENT_DIR)/src/os/win32/windbg/sawindbg.cpp \
|
||||
$(AGENT_DIR)/src/share/native/sadis.c
|
||||
|
||||
SA_LFLAGS = $(SA_LD_FLAGS) -nologo -subsystem:console -machine:$(MACHINE)
|
||||
!if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
|
||||
SA_LFLAGS = $(SA_LFLAGS) -map -debug
|
||||
!endif
|
||||
!if "$(BUILDARCH)" == "i486"
|
||||
SA_LFLAGS = /SAFESEH $(SA_LFLAGS)
|
||||
!endif
|
||||
|
||||
SA_CFLAGS = $(SA_CFLAGS) $(MP_FLAG)
|
||||
|
||||
# Note that we do not keep sawindbj.obj around as it would then
|
||||
# get included in the dumpbin command in build_vm_def.sh
|
||||
|
||||
# Force resources to be rebuilt every time
|
||||
$(SA_Res_Files): FORCE
|
||||
|
||||
# In VS2005 or VS2008 the link command creates a .manifest file that we want
|
||||
# to insert into the linked artifact so we do not need to track it separately.
|
||||
# Use ";#2" for .dll and ";#1" for .exe in the MT command below:
|
||||
$(SAWINDBG): $(SASRCFILES) $(SA_Res_Files)
|
||||
set INCLUDE=$(SA_INCLUDE)$(INCLUDE)
|
||||
$(CXX) @<<
|
||||
-I"$(BootStrapDir)/include" -I"$(BootStrapDir)/include/win32"
|
||||
-I"$(GENERATED)" $(SA_CFLAGS)
|
||||
$(SASRCFILES)
|
||||
-out:$*.obj
|
||||
<<
|
||||
set LIB=$(SA_LIB)$(LIB)
|
||||
$(LD) -out:$@ -DLL sawindbg.obj sadis.obj dbgeng.lib $(SA_LFLAGS) $(SA_Res_Files)
|
||||
!if "$(MT)" != ""
|
||||
$(MT) -manifest $(@F).manifest -outputresource:$(@F);#2
|
||||
!endif
|
||||
!if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
|
||||
!if "$(ZIP_DEBUGINFO_FILES)" == "1"
|
||||
$(ZIPEXE) -q $*.diz $*.map $*.pdb
|
||||
$(RM) $*.map $*.pdb
|
||||
!endif
|
||||
!endif
|
||||
-@rm -f $*.obj
|
||||
|
||||
{$(COMMONSRC)\os\windows\vm}.rc.sares:
|
||||
@$(RC) $(RC_FLAGS) /D "HS_FNAME=$(SAWINDBG)" /fo"$@" $<
|
||||
|
||||
cleanall :
|
||||
rm -rf $(GENERATED)/saclasses
|
||||
rm -rf $(GENERATED)/sa-jdi.jar
|
||||
!endif
|
@ -45,10 +45,16 @@ CXX_FLAGS=$(CXX_FLAGS) /D "COMPILER1" /D INCLUDE_JVMCI=0
|
||||
|
||||
!if "$(Variant)" == "compiler2"
|
||||
CXX_FLAGS=$(CXX_FLAGS) /D "COMPILER2"
|
||||
!if "$(BUILDARCH)" == "i486"
|
||||
CXX_FLAGS=$(CXX_FLAGS) /D INCLUDE_JVMCI=0
|
||||
!endif
|
||||
!endif
|
||||
|
||||
!if "$(Variant)" == "tiered"
|
||||
CXX_FLAGS=$(CXX_FLAGS) /D "COMPILER1" /D "COMPILER2"
|
||||
!if "$(BUILDARCH)" == "i486"
|
||||
CXX_FLAGS=$(CXX_FLAGS) /D INCLUDE_JVMCI=0
|
||||
!endif
|
||||
!endif
|
||||
|
||||
!if "$(BUILDARCH)" == "i486"
|
||||
@ -410,9 +416,5 @@ _build_pch_file.obj:
|
||||
@echo #include "precompiled.hpp" > ../generated/_build_pch_file.cpp
|
||||
$(CXX) $(CXX_FLAGS) /Fp"vm.pch" /Yc"precompiled.hpp" /c ../generated/_build_pch_file.cpp
|
||||
|
||||
!if "$(BUILD_WIN_SA)" != "1"
|
||||
BUILD_VM_DEF_FLAG=-nosa
|
||||
!endif
|
||||
|
||||
vm.def: $(Obj_Files)
|
||||
sh $(WorkSpace)/make/windows/build_vm_def.sh $(BUILD_VM_DEF_FLAG)
|
||||
sh $(WorkSpace)/make/windows/build_vm_def.sh
|
||||
|
@ -1079,10 +1079,10 @@ source %{
|
||||
// and for a volatile write we need
|
||||
//
|
||||
// stlr<x>
|
||||
//
|
||||
//
|
||||
// Alternatively, we can implement them by pairing a normal
|
||||
// load/store with a memory barrier. For a volatile read we need
|
||||
//
|
||||
//
|
||||
// ldr<x>
|
||||
// dmb ishld
|
||||
//
|
||||
@ -1240,7 +1240,7 @@ source %{
|
||||
// Alternatively, we can elide generation of the dmb instructions
|
||||
// and plant the alternative CompareAndSwap macro-instruction
|
||||
// sequence (which uses ldaxr<x>).
|
||||
//
|
||||
//
|
||||
// Of course, the above only applies when we see these signature
|
||||
// configurations. We still want to plant dmb instructions in any
|
||||
// other cases where we may see a MemBarAcquire, MemBarRelease or
|
||||
@ -1367,7 +1367,7 @@ source %{
|
||||
opcode = parent->Opcode();
|
||||
return opcode == Op_MemBarRelease;
|
||||
}
|
||||
|
||||
|
||||
// 2) card mark detection helper
|
||||
|
||||
// helper predicate which can be used to detect a volatile membar
|
||||
@ -1383,7 +1383,7 @@ source %{
|
||||
// true
|
||||
//
|
||||
// iii) the node's Mem projection feeds a StoreCM node.
|
||||
|
||||
|
||||
bool is_card_mark_membar(const MemBarNode *barrier)
|
||||
{
|
||||
if (!UseG1GC && !(UseConcMarkSweepGC && UseCondCardMark)) {
|
||||
@ -1402,7 +1402,7 @@ source %{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1430,7 +1430,7 @@ source %{
|
||||
// where
|
||||
// || and \\ represent Ctl and Mem feeds via Proj nodes
|
||||
// | \ and / indicate further routing of the Ctl and Mem feeds
|
||||
//
|
||||
//
|
||||
// this is the graph we see for non-object stores. however, for a
|
||||
// volatile Object store (StoreN/P) we may see other nodes below the
|
||||
// leading membar because of the need for a GC pre- or post-write
|
||||
@ -1592,7 +1592,7 @@ source %{
|
||||
// ordering but neither will a releasing store (stlr). The latter
|
||||
// guarantees that the object put is visible but does not guarantee
|
||||
// that writes by other threads have also been observed.
|
||||
//
|
||||
//
|
||||
// So, returning to the task of translating the object put and the
|
||||
// leading/trailing membar nodes: what do the non-normal node graph
|
||||
// look like for these 2 special cases? and how can we determine the
|
||||
@ -1731,7 +1731,7 @@ source %{
|
||||
// | | | |
|
||||
// C | M | M | M |
|
||||
// \ | | /
|
||||
// . . .
|
||||
// . . .
|
||||
// (post write subtree elided)
|
||||
// . . .
|
||||
// C \ M /
|
||||
@ -1812,12 +1812,12 @@ source %{
|
||||
// | | | / /
|
||||
// | Region . . . Phi[M] _____/
|
||||
// | / | /
|
||||
// | | /
|
||||
// | | /
|
||||
// | . . . . . . | /
|
||||
// | / | /
|
||||
// Region | | Phi[M]
|
||||
// | | | / Bot
|
||||
// \ MergeMem
|
||||
// \ MergeMem
|
||||
// \ /
|
||||
// MemBarVolatile
|
||||
//
|
||||
@ -1858,7 +1858,7 @@ source %{
|
||||
// to a trailing barrier via a MergeMem. That feed is either direct
|
||||
// (for CMS) or via 2 or 3 Phi nodes merging the leading barrier
|
||||
// memory flow (for G1).
|
||||
//
|
||||
//
|
||||
// The predicates controlling generation of instructions for store
|
||||
// and barrier nodes employ a few simple helper functions (described
|
||||
// below) which identify the presence or absence of all these
|
||||
@ -2112,8 +2112,8 @@ source %{
|
||||
x = x->in(MemNode::Memory);
|
||||
} else {
|
||||
// the merge should get its Bottom mem feed from the leading membar
|
||||
x = mm->in(Compile::AliasIdxBot);
|
||||
}
|
||||
x = mm->in(Compile::AliasIdxBot);
|
||||
}
|
||||
|
||||
// ensure this is a non control projection
|
||||
if (!x->is_Proj() || x->is_CFG()) {
|
||||
@ -2190,12 +2190,12 @@ source %{
|
||||
// . . .
|
||||
// |
|
||||
// MemBarVolatile (card mark)
|
||||
// | |
|
||||
// | |
|
||||
// | StoreCM
|
||||
// | |
|
||||
// | . . .
|
||||
// Bot | /
|
||||
// MergeMem
|
||||
// Bot | /
|
||||
// MergeMem
|
||||
// |
|
||||
// |
|
||||
// MemBarVolatile {trailing}
|
||||
@ -2203,10 +2203,10 @@ source %{
|
||||
// 2)
|
||||
// MemBarRelease/CPUOrder (leading)
|
||||
// |
|
||||
// |
|
||||
// |
|
||||
// |\ . . .
|
||||
// | \ |
|
||||
// | \ MemBarVolatile (card mark)
|
||||
// | \ |
|
||||
// | \ MemBarVolatile (card mark)
|
||||
// | \ | |
|
||||
// \ \ | StoreCM . . .
|
||||
// \ \ |
|
||||
@ -2231,7 +2231,7 @@ source %{
|
||||
// | \ \ | StoreCM . . .
|
||||
// | \ \ |
|
||||
// \ \ Phi
|
||||
// \ \ /
|
||||
// \ \ /
|
||||
// \ Phi
|
||||
// \ /
|
||||
// Phi . . .
|
||||
@ -2506,7 +2506,7 @@ bool unnecessary_acquire(const Node *barrier)
|
||||
|
||||
return (x->is_Load() && x->as_Load()->is_acquire());
|
||||
}
|
||||
|
||||
|
||||
// now check for an unsafe volatile get
|
||||
|
||||
// need to check for
|
||||
@ -2644,7 +2644,7 @@ bool needs_acquiring_load(const Node *n)
|
||||
}
|
||||
|
||||
membar = child_membar(membar);
|
||||
|
||||
|
||||
if (!membar || !membar->Opcode() == Op_MemBarCPUOrder) {
|
||||
return false;
|
||||
}
|
||||
@ -2703,7 +2703,7 @@ bool unnecessary_volatile(const Node *n)
|
||||
|
||||
// first we check if this is part of a card mark. if so then we have
|
||||
// to generate a StoreLoad barrier
|
||||
|
||||
|
||||
if (is_card_mark_membar(mbvol)) {
|
||||
return false;
|
||||
}
|
||||
@ -2769,7 +2769,7 @@ bool needs_releasing_store(const Node *n)
|
||||
if (!is_card_mark_membar(mbvol)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// we found a card mark -- just make sure we have a trailing barrier
|
||||
|
||||
return (card_mark_to_trailing(mbvol) != NULL);
|
||||
@ -2808,7 +2808,7 @@ bool needs_acquiring_load_exclusive(const Node *n)
|
||||
|
||||
assert(barrier->Opcode() == Op_MemBarCPUOrder,
|
||||
"CAS not fed by cpuorder membar!");
|
||||
|
||||
|
||||
MemBarNode *b = parent_membar(barrier);
|
||||
assert ((b != NULL && b->Opcode() == Op_MemBarRelease),
|
||||
"CAS not fed by cpuorder+release membar pair!");
|
||||
@ -3463,6 +3463,17 @@ const bool Matcher::match_rule_supported(int opcode) {
|
||||
return true; // Per default match rules are supported.
|
||||
}
|
||||
|
||||
const bool Matcher::match_rule_supported_vector(int opcode, int vlen) {
|
||||
|
||||
// TODO
|
||||
// identify extra cases that we might want to provide match rules for
|
||||
// e.g. Op_ vector nodes and other intrinsics while guarding with vlen
|
||||
bool ret_value = match_rule_supported(opcode);
|
||||
// Add rules here.
|
||||
|
||||
return ret_value; // Per default match rules are supported.
|
||||
}
|
||||
|
||||
const int Matcher::float_pressure(int default_pressure_threshold) {
|
||||
return default_pressure_threshold;
|
||||
}
|
||||
@ -4295,7 +4306,6 @@ encode %{
|
||||
int disp = $mem$$disp;
|
||||
if (index == -1) {
|
||||
__ prfm(Address(base, disp), PSTL1KEEP);
|
||||
__ nop();
|
||||
} else {
|
||||
Register index_reg = as_Register(index);
|
||||
if (disp == 0) {
|
||||
@ -4663,7 +4673,7 @@ encode %{
|
||||
call = __ trampoline_call(Address(addr, relocInfo::static_call_type), &cbuf);
|
||||
}
|
||||
if (call == NULL) {
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -4671,7 +4681,7 @@ encode %{
|
||||
// Emit stub for static call
|
||||
address stub = CompiledStaticCall::emit_to_interp_stub(cbuf);
|
||||
if (stub == NULL) {
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -4681,7 +4691,7 @@ encode %{
|
||||
MacroAssembler _masm(&cbuf);
|
||||
address call = __ ic_call((address)$meth$$method);
|
||||
if (call == NULL) {
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
return;
|
||||
}
|
||||
%}
|
||||
@ -4706,7 +4716,7 @@ encode %{
|
||||
if (cb) {
|
||||
address call = __ trampoline_call(Address(entry, relocInfo::runtime_call_type));
|
||||
if (call == NULL) {
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
@ -13833,6 +13843,139 @@ instruct cmpP_narrowOop_imm0_branch(cmpOp cmp, iRegN oop, immP0 zero, label labl
|
||||
ins_pipe(pipe_cmp_branch);
|
||||
%}
|
||||
|
||||
// Test bit and Branch
|
||||
|
||||
instruct cmpL_branch_sign(cmpOp cmp, iRegL op1, immL0 op2, label labl, rFlagsReg cr) %{
|
||||
match(If cmp (CmpL op1 op2));
|
||||
predicate(n->in(1)->as_Bool()->_test._test == BoolTest::lt
|
||||
|| n->in(1)->as_Bool()->_test._test == BoolTest::ge);
|
||||
effect(USE labl);
|
||||
|
||||
ins_cost(BRANCH_COST);
|
||||
format %{ "cb$cmp $op1, $labl # long" %}
|
||||
ins_encode %{
|
||||
Label* L = $labl$$label;
|
||||
Assembler::Condition cond = (Assembler::Condition)$cmp$$cmpcode;
|
||||
if (cond == Assembler::LT)
|
||||
__ tbnz($op1$$Register, 63, *L);
|
||||
else
|
||||
__ tbz($op1$$Register, 63, *L);
|
||||
%}
|
||||
ins_pipe(pipe_cmp_branch);
|
||||
%}
|
||||
|
||||
instruct cmpI_branch_sign(cmpOp cmp, iRegIorL2I op1, immI0 op2, label labl, rFlagsReg cr) %{
|
||||
match(If cmp (CmpI op1 op2));
|
||||
predicate(n->in(1)->as_Bool()->_test._test == BoolTest::lt
|
||||
|| n->in(1)->as_Bool()->_test._test == BoolTest::ge);
|
||||
effect(USE labl);
|
||||
|
||||
ins_cost(BRANCH_COST);
|
||||
format %{ "cb$cmp $op1, $labl # int" %}
|
||||
ins_encode %{
|
||||
Label* L = $labl$$label;
|
||||
Assembler::Condition cond = (Assembler::Condition)$cmp$$cmpcode;
|
||||
if (cond == Assembler::LT)
|
||||
__ tbnz($op1$$Register, 31, *L);
|
||||
else
|
||||
__ tbz($op1$$Register, 31, *L);
|
||||
%}
|
||||
ins_pipe(pipe_cmp_branch);
|
||||
%}
|
||||
|
||||
instruct cmpL_branch_bit(cmpOp cmp, iRegL op1, immL op2, immL0 op3, label labl, rFlagsReg cr) %{
|
||||
match(If cmp (CmpL (AndL op1 op2) op3));
|
||||
predicate((n->in(1)->as_Bool()->_test._test == BoolTest::ne
|
||||
|| n->in(1)->as_Bool()->_test._test == BoolTest::eq)
|
||||
&& is_power_of_2(n->in(2)->in(1)->in(2)->get_long()));
|
||||
effect(USE labl);
|
||||
|
||||
ins_cost(BRANCH_COST);
|
||||
format %{ "tb$cmp $op1, $op2, $labl" %}
|
||||
ins_encode %{
|
||||
Label* L = $labl$$label;
|
||||
Assembler::Condition cond = (Assembler::Condition)$cmp$$cmpcode;
|
||||
int bit = exact_log2($op2$$constant);
|
||||
if (cond == Assembler::EQ)
|
||||
__ tbz($op1$$Register, bit, *L);
|
||||
else
|
||||
__ tbnz($op1$$Register, bit, *L);
|
||||
%}
|
||||
ins_pipe(pipe_cmp_branch);
|
||||
%}
|
||||
|
||||
instruct cmpI_branch_bit(cmpOp cmp, iRegIorL2I op1, immI op2, immI0 op3, label labl, rFlagsReg cr) %{
|
||||
match(If cmp (CmpI (AndI op1 op2) op3));
|
||||
predicate((n->in(1)->as_Bool()->_test._test == BoolTest::ne
|
||||
|| n->in(1)->as_Bool()->_test._test == BoolTest::eq)
|
||||
&& is_power_of_2(n->in(2)->in(1)->in(2)->get_int()));
|
||||
effect(USE labl);
|
||||
|
||||
ins_cost(BRANCH_COST);
|
||||
format %{ "tb$cmp $op1, $op2, $labl" %}
|
||||
ins_encode %{
|
||||
Label* L = $labl$$label;
|
||||
Assembler::Condition cond = (Assembler::Condition)$cmp$$cmpcode;
|
||||
int bit = exact_log2($op2$$constant);
|
||||
if (cond == Assembler::EQ)
|
||||
__ tbz($op1$$Register, bit, *L);
|
||||
else
|
||||
__ tbnz($op1$$Register, bit, *L);
|
||||
%}
|
||||
ins_pipe(pipe_cmp_branch);
|
||||
%}
|
||||
|
||||
// Test bits
|
||||
|
||||
instruct cmpL_and(cmpOp cmp, iRegL op1, immL op2, immL0 op3, rFlagsReg cr) %{
|
||||
match(Set cr (CmpL (AndL op1 op2) op3));
|
||||
predicate(Assembler::operand_valid_for_logical_immediate
|
||||
(/*is_32*/false, n->in(1)->in(2)->get_long()));
|
||||
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "tst $op1, $op2 # long" %}
|
||||
ins_encode %{
|
||||
__ tst($op1$$Register, $op2$$constant);
|
||||
%}
|
||||
ins_pipe(ialu_reg_reg);
|
||||
%}
|
||||
|
||||
instruct cmpI_and(cmpOp cmp, iRegIorL2I op1, immI op2, immI0 op3, rFlagsReg cr) %{
|
||||
match(Set cr (CmpI (AndI op1 op2) op3));
|
||||
predicate(Assembler::operand_valid_for_logical_immediate
|
||||
(/*is_32*/true, n->in(1)->in(2)->get_int()));
|
||||
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "tst $op1, $op2 # int" %}
|
||||
ins_encode %{
|
||||
__ tstw($op1$$Register, $op2$$constant);
|
||||
%}
|
||||
ins_pipe(ialu_reg_reg);
|
||||
%}
|
||||
|
||||
instruct cmpL_and_reg(cmpOp cmp, iRegL op1, iRegL op2, immL0 op3, rFlagsReg cr) %{
|
||||
match(Set cr (CmpL (AndL op1 op2) op3));
|
||||
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "tst $op1, $op2 # long" %}
|
||||
ins_encode %{
|
||||
__ tst($op1$$Register, $op2$$Register);
|
||||
%}
|
||||
ins_pipe(ialu_reg_reg);
|
||||
%}
|
||||
|
||||
instruct cmpI_and_reg(cmpOp cmp, iRegIorL2I op1, iRegIorL2I op2, immI0 op3, rFlagsReg cr) %{
|
||||
match(Set cr (CmpI (AndI op1 op2) op3));
|
||||
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "tstw $op1, $op2 # int" %}
|
||||
ins_encode %{
|
||||
__ tstw($op1$$Register, $op2$$Register);
|
||||
%}
|
||||
ins_pipe(ialu_reg_reg);
|
||||
%}
|
||||
|
||||
|
||||
// Conditional Far Branch
|
||||
// Conditional Far Branch Unsigned
|
||||
// TODO: fixme
|
||||
@ -14156,6 +14299,9 @@ instruct string_compare(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 cn
|
||||
|
||||
format %{ "String Compare $str1,$cnt1,$str2,$cnt2 -> $result # KILL $tmp1" %}
|
||||
ins_encode %{
|
||||
// Count is in 8-bit bytes; non-Compact chars are 16 bits.
|
||||
__ asrw($cnt1$$Register, $cnt1$$Register, 1);
|
||||
__ asrw($cnt2$$Register, $cnt2$$Register, 1);
|
||||
__ string_compare($str1$$Register, $str2$$Register,
|
||||
$cnt1$$Register, $cnt2$$Register, $result$$Register,
|
||||
$tmp1$$Register);
|
||||
@ -14212,6 +14358,8 @@ instruct string_equals(iRegP_R1 str1, iRegP_R3 str2, iRegI_R4 cnt,
|
||||
|
||||
format %{ "String Equals $str1,$str2,$cnt -> $result // KILL $tmp" %}
|
||||
ins_encode %{
|
||||
// Count is in 8-bit bytes; non-Compact chars are 16 bits.
|
||||
__ asrw($cnt$$Register, $cnt$$Register, 1);
|
||||
__ string_equals($str1$$Register, $str2$$Register,
|
||||
$cnt$$Register, $result$$Register,
|
||||
$tmp$$Register);
|
||||
|
@ -41,7 +41,9 @@
|
||||
|
||||
void CounterOverflowStub::emit_code(LIR_Assembler* ce) {
|
||||
__ bind(_entry);
|
||||
ce->store_parameter(_method->as_register(), 1);
|
||||
Metadata *m = _method->as_constant_ptr()->as_metadata();
|
||||
__ mov_metadata(rscratch1, m);
|
||||
ce->store_parameter(rscratch1, 1);
|
||||
ce->store_parameter(_bci, 0);
|
||||
__ far_call(RuntimeAddress(Runtime1::entry_for(Runtime1::counter_overflow_id)));
|
||||
ce->add_call_info_here(_info);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@ -70,6 +70,7 @@ LIR_Opr LIRGenerator::divInOpr() { Unimplemented(); return LIR_OprFact::i
|
||||
LIR_Opr LIRGenerator::divOutOpr() { Unimplemented(); return LIR_OprFact::illegalOpr; }
|
||||
LIR_Opr LIRGenerator::remOutOpr() { Unimplemented(); return LIR_OprFact::illegalOpr; }
|
||||
LIR_Opr LIRGenerator::shiftCountOpr() { Unimplemented(); return LIR_OprFact::illegalOpr; }
|
||||
LIR_Opr LIRGenerator::syncLockOpr() { return new_register(T_INT); }
|
||||
LIR_Opr LIRGenerator::syncTempOpr() { return FrameMap::r0_opr; }
|
||||
LIR_Opr LIRGenerator::getThreadTemp() { return LIR_OprFact::illegalOpr; }
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2015, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -105,4 +105,7 @@ void zero_memory(Register addr, Register len, Register t1);
|
||||
|
||||
void invalidate_registers(bool inv_r0, bool inv_r19, bool inv_r2, bool inv_r3, bool inv_r4, bool inv_r5) PRODUCT_RETURN;
|
||||
|
||||
// This platform only uses signal-based null checks. The Label is not needed.
|
||||
void null_check(Register r, Label *Lnull = NULL) { MacroAssembler::null_check(r); }
|
||||
|
||||
#endif // CPU_AARCH64_VM_C1_MACROASSEMBLER_AARCH64_HPP
|
||||
|
@ -1169,12 +1169,12 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
|
||||
const Register tmp = rscratch1;
|
||||
|
||||
Address in_progress(thread, in_bytes(JavaThread::satb_mark_queue_offset() +
|
||||
PtrQueue::byte_offset_of_active()));
|
||||
SATBMarkQueue::byte_offset_of_active()));
|
||||
|
||||
Address queue_index(thread, in_bytes(JavaThread::satb_mark_queue_offset() +
|
||||
PtrQueue::byte_offset_of_index()));
|
||||
SATBMarkQueue::byte_offset_of_index()));
|
||||
Address buffer(thread, in_bytes(JavaThread::satb_mark_queue_offset() +
|
||||
PtrQueue::byte_offset_of_buf()));
|
||||
SATBMarkQueue::byte_offset_of_buf()));
|
||||
|
||||
Label done;
|
||||
Label runtime;
|
||||
@ -1219,9 +1219,9 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
|
||||
const Register thread = rthread;
|
||||
|
||||
Address queue_index(thread, in_bytes(JavaThread::dirty_card_queue_offset() +
|
||||
PtrQueue::byte_offset_of_index()));
|
||||
DirtyCardQueue::byte_offset_of_index()));
|
||||
Address buffer(thread, in_bytes(JavaThread::dirty_card_queue_offset() +
|
||||
PtrQueue::byte_offset_of_buf()));
|
||||
DirtyCardQueue::byte_offset_of_buf()));
|
||||
|
||||
const Register card_addr = rscratch2;
|
||||
ExternalAddress cardtable((address) ct->byte_map_base);
|
||||
|
@ -73,6 +73,7 @@ define_pd_global(bool, UseCISCSpill, true);
|
||||
define_pd_global(bool, OptoScheduling, false);
|
||||
define_pd_global(bool, OptoBundling, false);
|
||||
define_pd_global(bool, OptoRegScheduling, false);
|
||||
define_pd_global(bool, SuperWordLoopUnrollAnalysis, false);
|
||||
|
||||
define_pd_global(intx, ReservedCodeCacheSize, 48*M);
|
||||
define_pd_global(intx, NonProfiledCodeHeapSize, 21*M);
|
||||
|
@ -189,10 +189,11 @@ void InterpreterMacroAssembler::get_cache_and_index_and_bytecode_at_bcp(Register
|
||||
get_cache_and_index_at_bcp(cache, index, bcp_offset, index_size);
|
||||
// We use a 32-bit load here since the layout of 64-bit words on
|
||||
// little-endian machines allow us that.
|
||||
// n.b. unlike x86 cache alreeady includes the index offset
|
||||
ldrw(bytecode, Address(cache,
|
||||
// n.b. unlike x86 cache already includes the index offset
|
||||
lea(bytecode, Address(cache,
|
||||
ConstantPoolCache::base_offset()
|
||||
+ ConstantPoolCacheEntry::indices_offset()));
|
||||
ldarw(bytecode, bytecode);
|
||||
const int shift_count = (1 + byte_no) * BitsPerByte;
|
||||
ubfx(bytecode, bytecode, shift_count, BitsPerByte);
|
||||
}
|
||||
|
@ -29,16 +29,16 @@
|
||||
#include "runtime/sharedRuntime.hpp"
|
||||
#include "vmreg_aarch64.inline.hpp"
|
||||
|
||||
jint CodeInstaller::pd_next_offset(NativeInstruction* inst, jint pc_offset, oop method) {
|
||||
jint CodeInstaller::pd_next_offset(NativeInstruction* inst, jint pc_offset, Handle method, TRAPS) {
|
||||
Unimplemented();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CodeInstaller::pd_patch_OopConstant(int pc_offset, Handle& constant) {
|
||||
void CodeInstaller::pd_patch_OopConstant(int pc_offset, Handle constant, TRAPS) {
|
||||
Unimplemented();
|
||||
}
|
||||
|
||||
void CodeInstaller::pd_patch_MetaspaceConstant(int pc_offset, Handle& constant) {
|
||||
void CodeInstaller::pd_patch_MetaspaceConstant(int pc_offset, Handle constant, TRAPS) {
|
||||
Unimplemented();
|
||||
}
|
||||
|
||||
@ -46,20 +46,20 @@ void CodeInstaller::pd_patch_DataSectionReference(int pc_offset, int data_offset
|
||||
Unimplemented();
|
||||
}
|
||||
|
||||
void CodeInstaller::pd_relocate_ForeignCall(NativeInstruction* inst, jlong foreign_call_destination) {
|
||||
void CodeInstaller::pd_relocate_ForeignCall(NativeInstruction* inst, jlong foreign_call_destination, TRAPS) {
|
||||
Unimplemented();
|
||||
}
|
||||
|
||||
void CodeInstaller::pd_relocate_JavaMethod(oop hotspot_method, jint pc_offset) {
|
||||
void CodeInstaller::pd_relocate_JavaMethod(Handle hotspot_method, jint pc_offset, TRAPS) {
|
||||
Unimplemented();
|
||||
}
|
||||
|
||||
void CodeInstaller::pd_relocate_poll(address pc, jint mark) {
|
||||
void CodeInstaller::pd_relocate_poll(address pc, jint mark, TRAPS) {
|
||||
Unimplemented();
|
||||
}
|
||||
|
||||
// convert JVMCI register indices (as used in oop maps) to HotSpot registers
|
||||
VMReg CodeInstaller::get_hotspot_reg(jint jvmci_reg) {
|
||||
VMReg CodeInstaller::get_hotspot_reg(jint jvmci_reg, TRAPS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -91,20 +91,18 @@ int MacroAssembler::pd_patch_instruction_size(address branch, address target) {
|
||||
unsigned offset_lo = dest & 0xfff;
|
||||
offset = adr_page - pc_page;
|
||||
|
||||
// We handle 3 types of PC relative addressing
|
||||
// We handle 4 types of PC relative addressing
|
||||
// 1 - adrp Rx, target_page
|
||||
// ldr/str Ry, [Rx, #offset_in_page]
|
||||
// 2 - adrp Rx, target_page
|
||||
// add Ry, Rx, #offset_in_page
|
||||
// 3 - adrp Rx, target_page (page aligned reloc, offset == 0)
|
||||
// In the first 2 cases we must check that Rx is the same in the adrp and the
|
||||
// subsequent ldr/str or add instruction. Otherwise we could accidentally end
|
||||
// up treating a type 3 relocation as a type 1 or 2 just because it happened
|
||||
// to be followed by a random unrelated ldr/str or add instruction.
|
||||
//
|
||||
// In the case of a type 3 relocation, we know that these are only generated
|
||||
// for the safepoint polling page, or for the card type byte map base so we
|
||||
// assert as much and of course that the offset is 0.
|
||||
// movk Rx, #imm16<<32
|
||||
// 4 - adrp Rx, target_page (page aligned reloc, offset == 0)
|
||||
// In the first 3 cases we must check that Rx is the same in the adrp and the
|
||||
// subsequent ldr/str, add or movk instruction. Otherwise we could accidentally end
|
||||
// up treating a type 4 relocation as a type 1, 2 or 3 just because it happened
|
||||
// to be followed by a random unrelated ldr/str, add or movk instruction.
|
||||
//
|
||||
unsigned insn2 = ((unsigned*)branch)[1];
|
||||
if (Instruction_aarch64::extract(insn2, 29, 24) == 0b111001 &&
|
||||
@ -123,13 +121,13 @@ int MacroAssembler::pd_patch_instruction_size(address branch, address target) {
|
||||
Instruction_aarch64::patch(branch + sizeof (unsigned),
|
||||
21, 10, offset_lo);
|
||||
instructions = 2;
|
||||
} else {
|
||||
assert((jbyte *)target ==
|
||||
((CardTableModRefBS*)(Universe::heap()->barrier_set()))->byte_map_base ||
|
||||
target == StubRoutines::crc_table_addr() ||
|
||||
(address)target == os::get_polling_page(),
|
||||
"adrp must be polling page or byte map base");
|
||||
assert(offset_lo == 0, "offset must be 0 for polling page or byte map base");
|
||||
} else if (Instruction_aarch64::extract(insn2, 31, 21) == 0b11110010110 &&
|
||||
Instruction_aarch64::extract(insn, 4, 0) ==
|
||||
Instruction_aarch64::extract(insn2, 4, 0)) {
|
||||
// movk #imm16<<32
|
||||
Instruction_aarch64::patch(branch + 4, 20, 5, (uint64_t)target >> 32);
|
||||
offset &= (1<<20)-1;
|
||||
instructions = 2;
|
||||
}
|
||||
}
|
||||
int offset_lo = offset & 3;
|
||||
@ -212,16 +210,16 @@ address MacroAssembler::target_addr_for_insn(address insn_addr, unsigned insn) {
|
||||
// Return the target address for the following sequences
|
||||
// 1 - adrp Rx, target_page
|
||||
// ldr/str Ry, [Rx, #offset_in_page]
|
||||
// 2 - adrp Rx, target_page ]
|
||||
// 2 - adrp Rx, target_page
|
||||
// add Ry, Rx, #offset_in_page
|
||||
// 3 - adrp Rx, target_page (page aligned reloc, offset == 0)
|
||||
// movk Rx, #imm12<<32
|
||||
// 4 - adrp Rx, target_page (page aligned reloc, offset == 0)
|
||||
//
|
||||
// In the first two cases we check that the register is the same and
|
||||
// return the target_page + the offset within the page.
|
||||
// Otherwise we assume it is a page aligned relocation and return
|
||||
// the target page only. The only cases this is generated is for
|
||||
// the safepoint polling page or for the card table byte map base so
|
||||
// we assert as much.
|
||||
// the target page only.
|
||||
//
|
||||
unsigned insn2 = ((unsigned*)insn_addr)[1];
|
||||
if (Instruction_aarch64::extract(insn2, 29, 24) == 0b111001 &&
|
||||
@ -238,10 +236,12 @@ address MacroAssembler::target_addr_for_insn(address insn_addr, unsigned insn) {
|
||||
unsigned int byte_offset = Instruction_aarch64::extract(insn2, 21, 10);
|
||||
return address(target_page + byte_offset);
|
||||
} else {
|
||||
assert((jbyte *)target_page ==
|
||||
((CardTableModRefBS*)(Universe::heap()->barrier_set()))->byte_map_base ||
|
||||
(address)target_page == os::get_polling_page(),
|
||||
"adrp must be polling page or byte map base");
|
||||
if (Instruction_aarch64::extract(insn2, 31, 21) == 0b11110010110 &&
|
||||
Instruction_aarch64::extract(insn, 4, 0) ==
|
||||
Instruction_aarch64::extract(insn2, 4, 0)) {
|
||||
target_page = (target_page & 0xffffffff) |
|
||||
((uint64_t)Instruction_aarch64::extract(insn2, 20, 5) << 32);
|
||||
}
|
||||
return (address)target_page;
|
||||
}
|
||||
} else {
|
||||
@ -3487,18 +3487,18 @@ void MacroAssembler::g1_write_barrier_pre(Register obj,
|
||||
assert_different_registers(obj, pre_val, tmp);
|
||||
|
||||
Address in_progress(thread, in_bytes(JavaThread::satb_mark_queue_offset() +
|
||||
PtrQueue::byte_offset_of_active()));
|
||||
SATBMarkQueue::byte_offset_of_active()));
|
||||
Address index(thread, in_bytes(JavaThread::satb_mark_queue_offset() +
|
||||
PtrQueue::byte_offset_of_index()));
|
||||
SATBMarkQueue::byte_offset_of_index()));
|
||||
Address buffer(thread, in_bytes(JavaThread::satb_mark_queue_offset() +
|
||||
PtrQueue::byte_offset_of_buf()));
|
||||
SATBMarkQueue::byte_offset_of_buf()));
|
||||
|
||||
|
||||
// Is marking active?
|
||||
if (in_bytes(PtrQueue::byte_width_of_active()) == 4) {
|
||||
if (in_bytes(SATBMarkQueue::byte_width_of_active()) == 4) {
|
||||
ldrw(tmp, in_progress);
|
||||
} else {
|
||||
assert(in_bytes(PtrQueue::byte_width_of_active()) == 1, "Assumption");
|
||||
assert(in_bytes(SATBMarkQueue::byte_width_of_active()) == 1, "Assumption");
|
||||
ldrb(tmp, in_progress);
|
||||
}
|
||||
cbzw(tmp, done);
|
||||
@ -3566,9 +3566,9 @@ void MacroAssembler::g1_write_barrier_post(Register store_addr,
|
||||
assert(thread == rthread, "must be");
|
||||
|
||||
Address queue_index(thread, in_bytes(JavaThread::dirty_card_queue_offset() +
|
||||
PtrQueue::byte_offset_of_index()));
|
||||
DirtyCardQueue::byte_offset_of_index()));
|
||||
Address buffer(thread, in_bytes(JavaThread::dirty_card_queue_offset() +
|
||||
PtrQueue::byte_offset_of_buf()));
|
||||
DirtyCardQueue::byte_offset_of_buf()));
|
||||
|
||||
BarrierSet* bs = Universe::heap()->barrier_set();
|
||||
CardTableModRefBS* ct = (CardTableModRefBS*)bs;
|
||||
@ -3964,22 +3964,26 @@ address MacroAssembler::read_polling_page(Register r, relocInfo::relocType rtype
|
||||
|
||||
void MacroAssembler::adrp(Register reg1, const Address &dest, unsigned long &byte_offset) {
|
||||
relocInfo::relocType rtype = dest.rspec().reloc()->type();
|
||||
if (uabs(pc() - dest.target()) >= (1LL << 32)) {
|
||||
guarantee(rtype == relocInfo::none
|
||||
|| rtype == relocInfo::external_word_type
|
||||
|| rtype == relocInfo::poll_type
|
||||
|| rtype == relocInfo::poll_return_type,
|
||||
"can only use a fixed address with an ADRP");
|
||||
// Out of range. This doesn't happen very often, but we have to
|
||||
// handle it
|
||||
mov(reg1, dest);
|
||||
byte_offset = 0;
|
||||
} else {
|
||||
InstructionMark im(this);
|
||||
code_section()->relocate(inst_mark(), dest.rspec());
|
||||
byte_offset = (uint64_t)dest.target() & 0xfff;
|
||||
unsigned long low_page = (unsigned long)CodeCache::low_bound() >> 12;
|
||||
unsigned long high_page = (unsigned long)(CodeCache::high_bound()-1) >> 12;
|
||||
unsigned long dest_page = (unsigned long)dest.target() >> 12;
|
||||
long offset_low = dest_page - low_page;
|
||||
long offset_high = dest_page - high_page;
|
||||
|
||||
InstructionMark im(this);
|
||||
code_section()->relocate(inst_mark(), dest.rspec());
|
||||
// 8143067: Ensure that the adrp can reach the dest from anywhere within
|
||||
// the code cache so that if it is relocated we know it will still reach
|
||||
if (offset_high >= -(1<<20) && offset_low < (1<<20)) {
|
||||
_adrp(reg1, dest.target());
|
||||
} else {
|
||||
unsigned long pc_page = (unsigned long)pc() >> 12;
|
||||
long offset = dest_page - pc_page;
|
||||
offset = (offset & ((1<<20)-1)) << 12;
|
||||
_adrp(reg1, pc()+offset);
|
||||
movk(reg1, ((unsigned long)dest.target() >> 32) & 0xffff, 32);
|
||||
}
|
||||
byte_offset = (unsigned long)dest.target() & 0xfff;
|
||||
}
|
||||
|
||||
void MacroAssembler::build_frame(int framesize) {
|
||||
|
@ -215,8 +215,11 @@ class MacroAssembler: public Assembler {
|
||||
inline void moviw(Register Rd, unsigned imm) { orrw(Rd, zr, imm); }
|
||||
inline void movi(Register Rd, unsigned imm) { orr(Rd, zr, imm); }
|
||||
|
||||
inline void tstw(Register Rd, unsigned imm) { andsw(zr, Rd, imm); }
|
||||
inline void tst(Register Rd, unsigned imm) { ands(zr, Rd, imm); }
|
||||
inline void tstw(Register Rd, Register Rn) { andsw(zr, Rd, Rn); }
|
||||
inline void tst(Register Rd, Register Rn) { ands(zr, Rd, Rn); }
|
||||
|
||||
inline void tstw(Register Rd, uint64_t imm) { andsw(zr, Rd, imm); }
|
||||
inline void tst(Register Rd, uint64_t imm) { ands(zr, Rd, imm); }
|
||||
|
||||
inline void bfiw(Register Rd, Register Rn, unsigned lsb, unsigned width) {
|
||||
bfmw(Rd, Rn, ((32 - lsb) & 31), (width - 1));
|
||||
|
@ -2384,6 +2384,7 @@ void SharedRuntime::generate_deopt_blob() {
|
||||
}
|
||||
#endif // ASSERT
|
||||
__ mov(c_rarg0, rthread);
|
||||
__ mov(c_rarg1, rcpool);
|
||||
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::fetch_unroll_info)));
|
||||
__ blrt(rscratch1, 1, 0, 1);
|
||||
__ bind(retaddr);
|
||||
@ -2397,6 +2398,7 @@ void SharedRuntime::generate_deopt_blob() {
|
||||
// Load UnrollBlock* into rdi
|
||||
__ mov(r5, r0);
|
||||
|
||||
__ ldrw(rcpool, Address(r5, Deoptimization::UnrollBlock::unpack_kind_offset_in_bytes()));
|
||||
Label noException;
|
||||
__ cmpw(rcpool, Deoptimization::Unpack_exception); // Was exception pending?
|
||||
__ br(Assembler::NE, noException);
|
||||
@ -2609,6 +2611,7 @@ void SharedRuntime::generate_uncommon_trap_blob() {
|
||||
// n.b. 2 gp args, 0 fp args, integral return type
|
||||
|
||||
__ mov(c_rarg0, rthread);
|
||||
__ movw(c_rarg2, (unsigned)Deoptimization::Unpack_uncommon_trap);
|
||||
__ lea(rscratch1,
|
||||
RuntimeAddress(CAST_FROM_FN_PTR(address,
|
||||
Deoptimization::uncommon_trap)));
|
||||
@ -2628,6 +2631,16 @@ void SharedRuntime::generate_uncommon_trap_blob() {
|
||||
// move UnrollBlock* into r4
|
||||
__ mov(r4, r0);
|
||||
|
||||
#ifdef ASSERT
|
||||
{ Label L;
|
||||
__ ldrw(rscratch1, Address(r4, Deoptimization::UnrollBlock::unpack_kind_offset_in_bytes()));
|
||||
__ cmpw(rscratch1, (unsigned)Deoptimization::Unpack_uncommon_trap);
|
||||
__ br(Assembler::EQ, L);
|
||||
__ stop("SharedRuntime::generate_deopt_blob: last_Java_fp not cleared");
|
||||
__ bind(L);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Pop all the frames we must move/replace.
|
||||
//
|
||||
// Frame picture (youngest to oldest)
|
||||
|
@ -386,7 +386,8 @@ void TemplateTable::ldc(bool wide)
|
||||
|
||||
// get type
|
||||
__ add(r3, r1, tags_offset);
|
||||
__ ldrb(r3, Address(r0, r3));
|
||||
__ lea(r3, Address(r0, r3));
|
||||
__ ldarb(r3, r3);
|
||||
|
||||
// unresolved class - get the resolved class
|
||||
__ cmp(r3, JVM_CONSTANT_UnresolvedClass);
|
||||
@ -3316,7 +3317,8 @@ void TemplateTable::_new() {
|
||||
// how Constant Pool is updated (see ConstantPool::klass_at_put)
|
||||
const int tags_offset = Array<u1>::base_offset_in_bytes();
|
||||
__ lea(rscratch1, Address(r0, r3, Address::lsl(0)));
|
||||
__ ldrb(rscratch1, Address(rscratch1, tags_offset));
|
||||
__ lea(rscratch1, Address(rscratch1, tags_offset));
|
||||
__ ldarb(rscratch1, rscratch1);
|
||||
__ cmp(rscratch1, JVM_CONSTANT_Class);
|
||||
__ br(Assembler::NE, slow_case);
|
||||
|
||||
@ -3460,7 +3462,8 @@ void TemplateTable::checkcast()
|
||||
__ get_unsigned_2_byte_index_at_bcp(r19, 1); // r19=index
|
||||
// See if bytecode has already been quicked
|
||||
__ add(rscratch1, r3, Array<u1>::base_offset_in_bytes());
|
||||
__ ldrb(r1, Address(rscratch1, r19));
|
||||
__ lea(r1, Address(rscratch1, r19));
|
||||
__ ldarb(r1, r1);
|
||||
__ cmp(r1, JVM_CONSTANT_Class);
|
||||
__ br(Assembler::EQ, quicked);
|
||||
|
||||
@ -3514,7 +3517,8 @@ void TemplateTable::instanceof() {
|
||||
__ get_unsigned_2_byte_index_at_bcp(r19, 1); // r19=index
|
||||
// See if bytecode has already been quicked
|
||||
__ add(rscratch1, r3, Array<u1>::base_offset_in_bytes());
|
||||
__ ldrb(r1, Address(rscratch1, r19));
|
||||
__ lea(r1, Address(rscratch1, r19));
|
||||
__ ldarb(r1, r1);
|
||||
__ cmp(r1, JVM_CONSTANT_Class);
|
||||
__ br(Assembler::EQ, quicked);
|
||||
|
||||
|
@ -61,6 +61,7 @@ define_pd_global(bool, OptoPeephole, false);
|
||||
define_pd_global(bool, UseCISCSpill, false);
|
||||
define_pd_global(bool, OptoBundling, false);
|
||||
define_pd_global(bool, OptoRegScheduling, false);
|
||||
define_pd_global(bool, SuperWordLoopUnrollAnalysis, false);
|
||||
// GL:
|
||||
// Detected a problem with unscaled compressed oops and
|
||||
// narrow_oop_use_complex_address() == false.
|
||||
|
@ -2697,7 +2697,7 @@ address CppInterpreterGenerator::generate_normal_entry(bool synchronized) {
|
||||
// Provide a debugger breakpoint in the frame manager if breakpoints
|
||||
// in osr'd methods are requested.
|
||||
#ifdef COMPILER2
|
||||
NOT_PRODUCT( if (OptoBreakpointOSR) { __ illtrap(); } )
|
||||
if (OptoBreakpointOSR) { __ illtrap(); }
|
||||
#endif
|
||||
|
||||
// Load callee's pointer to locals array from callee's state.
|
||||
|
@ -297,8 +297,16 @@ address AbstractInterpreterGenerator::generate_slow_signature_handler() {
|
||||
__ bind(do_float);
|
||||
__ lfs(floatSlot, 0, arg_java);
|
||||
#if defined(LINUX)
|
||||
// Linux uses ELF ABI. Both original ELF and ELFv2 ABIs have float
|
||||
// in the least significant word of an argument slot.
|
||||
#if defined(VM_LITTLE_ENDIAN)
|
||||
__ stfs(floatSlot, 0, arg_c);
|
||||
#else
|
||||
__ stfs(floatSlot, 4, arg_c);
|
||||
#endif
|
||||
#elif defined(AIX)
|
||||
// Although AIX runs on big endian CPU, float is in most significant
|
||||
// word of an argument slot.
|
||||
__ stfs(floatSlot, 0, arg_c);
|
||||
#else
|
||||
#error "unknown OS"
|
||||
|
@ -29,16 +29,16 @@
|
||||
#include "runtime/sharedRuntime.hpp"
|
||||
#include "vmreg_ppc.inline.hpp"
|
||||
|
||||
jint CodeInstaller::pd_next_offset(NativeInstruction* inst, jint pc_offset, oop method) {
|
||||
jint CodeInstaller::pd_next_offset(NativeInstruction* inst, jint pc_offset, Handle method, TRAPS) {
|
||||
Unimplemented();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CodeInstaller::pd_patch_OopConstant(int pc_offset, Handle& constant) {
|
||||
void CodeInstaller::pd_patch_OopConstant(int pc_offset, Handle constant, TRAPS) {
|
||||
Unimplemented();
|
||||
}
|
||||
|
||||
void CodeInstaller::pd_patch_MetaspaceConstant(int pc_offset, Handle& constant) {
|
||||
void CodeInstaller::pd_patch_MetaspaceConstant(int pc_offset, Handle constant, TRAPS) {
|
||||
Unimplemented();
|
||||
}
|
||||
|
||||
@ -46,20 +46,20 @@ void CodeInstaller::pd_patch_DataSectionReference(int pc_offset, int data_offset
|
||||
Unimplemented();
|
||||
}
|
||||
|
||||
void CodeInstaller::pd_relocate_ForeignCall(NativeInstruction* inst, jlong foreign_call_destination) {
|
||||
void CodeInstaller::pd_relocate_ForeignCall(NativeInstruction* inst, jlong foreign_call_destination, TRAPS) {
|
||||
Unimplemented();
|
||||
}
|
||||
|
||||
void CodeInstaller::pd_relocate_JavaMethod(oop hotspot_method, jint pc_offset) {
|
||||
void CodeInstaller::pd_relocate_JavaMethod(Handle hotspot_method, jint pc_offset, TRAPS) {
|
||||
Unimplemented();
|
||||
}
|
||||
|
||||
void CodeInstaller::pd_relocate_poll(address pc, jint mark) {
|
||||
void CodeInstaller::pd_relocate_poll(address pc, jint mark, TRAPS) {
|
||||
Unimplemented();
|
||||
}
|
||||
|
||||
// convert JVMCI register indices (as used in oop maps) to HotSpot registers
|
||||
VMReg CodeInstaller::get_hotspot_reg(jint jvmci_reg) {
|
||||
VMReg CodeInstaller::get_hotspot_reg(jint jvmci_reg, TRAPS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -2633,11 +2633,11 @@ void MacroAssembler::g1_write_barrier_pre(Register Robj, RegisterOrConstant offs
|
||||
Label runtime, filtered;
|
||||
|
||||
// Is marking active?
|
||||
if (in_bytes(PtrQueue::byte_width_of_active()) == 4) {
|
||||
lwz(Rtmp1, in_bytes(JavaThread::satb_mark_queue_offset() + PtrQueue::byte_offset_of_active()), R16_thread);
|
||||
if (in_bytes(SATBMarkQueue::byte_width_of_active()) == 4) {
|
||||
lwz(Rtmp1, in_bytes(JavaThread::satb_mark_queue_offset() + SATBMarkQueue::byte_offset_of_active()), R16_thread);
|
||||
} else {
|
||||
guarantee(in_bytes(PtrQueue::byte_width_of_active()) == 1, "Assumption");
|
||||
lbz(Rtmp1, in_bytes(JavaThread::satb_mark_queue_offset() + PtrQueue::byte_offset_of_active()), R16_thread);
|
||||
guarantee(in_bytes(SATBMarkQueue::byte_width_of_active()) == 1, "Assumption");
|
||||
lbz(Rtmp1, in_bytes(JavaThread::satb_mark_queue_offset() + SATBMarkQueue::byte_offset_of_active()), R16_thread);
|
||||
}
|
||||
cmpdi(CCR0, Rtmp1, 0);
|
||||
beq(CCR0, filtered);
|
||||
@ -2672,13 +2672,13 @@ void MacroAssembler::g1_write_barrier_pre(Register Robj, RegisterOrConstant offs
|
||||
// (The index field is typed as size_t.)
|
||||
const Register Rbuffer = Rtmp1, Rindex = Rtmp2;
|
||||
|
||||
ld(Rindex, in_bytes(JavaThread::satb_mark_queue_offset() + PtrQueue::byte_offset_of_index()), R16_thread);
|
||||
ld(Rindex, in_bytes(JavaThread::satb_mark_queue_offset() + SATBMarkQueue::byte_offset_of_index()), R16_thread);
|
||||
cmpdi(CCR0, Rindex, 0);
|
||||
beq(CCR0, runtime); // If index == 0, goto runtime.
|
||||
ld(Rbuffer, in_bytes(JavaThread::satb_mark_queue_offset() + PtrQueue::byte_offset_of_buf()), R16_thread);
|
||||
ld(Rbuffer, in_bytes(JavaThread::satb_mark_queue_offset() + SATBMarkQueue::byte_offset_of_buf()), R16_thread);
|
||||
|
||||
addi(Rindex, Rindex, -wordSize); // Decrement index.
|
||||
std(Rindex, in_bytes(JavaThread::satb_mark_queue_offset() + PtrQueue::byte_offset_of_index()), R16_thread);
|
||||
std(Rindex, in_bytes(JavaThread::satb_mark_queue_offset() + SATBMarkQueue::byte_offset_of_index()), R16_thread);
|
||||
|
||||
// Record the previous value.
|
||||
stdx(Rpre_val, Rbuffer, Rindex);
|
||||
@ -2757,13 +2757,13 @@ void MacroAssembler::g1_write_barrier_post(Register Rstore_addr, Register Rnew_v
|
||||
|
||||
const Register Rqueue_index = Rtmp2,
|
||||
Rqueue_buf = Rtmp3;
|
||||
ld(Rqueue_index, in_bytes(JavaThread::dirty_card_queue_offset() + PtrQueue::byte_offset_of_index()), R16_thread);
|
||||
ld(Rqueue_index, in_bytes(JavaThread::dirty_card_queue_offset() + DirtyCardQueue::byte_offset_of_index()), R16_thread);
|
||||
cmpdi(CCR0, Rqueue_index, 0);
|
||||
beq(CCR0, runtime); // index == 0 then jump to runtime
|
||||
ld(Rqueue_buf, in_bytes(JavaThread::dirty_card_queue_offset() + PtrQueue::byte_offset_of_buf()), R16_thread);
|
||||
ld(Rqueue_buf, in_bytes(JavaThread::dirty_card_queue_offset() + DirtyCardQueue::byte_offset_of_buf()), R16_thread);
|
||||
|
||||
addi(Rqueue_index, Rqueue_index, -wordSize); // decrement index
|
||||
std(Rqueue_index, in_bytes(JavaThread::dirty_card_queue_offset() + PtrQueue::byte_offset_of_index()), R16_thread);
|
||||
std(Rqueue_index, in_bytes(JavaThread::dirty_card_queue_offset() + DirtyCardQueue::byte_offset_of_index()), R16_thread);
|
||||
|
||||
stdx(Rcard_addr, Rqueue_buf, Rqueue_index); // store card
|
||||
b(filtered);
|
||||
|
@ -2064,6 +2064,17 @@ const bool Matcher::match_rule_supported(int opcode) {
|
||||
return true; // Per default match rules are supported.
|
||||
}
|
||||
|
||||
const bool Matcher::match_rule_supported_vector(int opcode, int vlen) {
|
||||
|
||||
// TODO
|
||||
// identify extra cases that we might want to provide match rules for
|
||||
// e.g. Op_ vector nodes and other intrinsics while guarding with vlen
|
||||
bool ret_value = match_rule_supported(opcode);
|
||||
// Add rules here.
|
||||
|
||||
return ret_value; // Per default match rules are supported.
|
||||
}
|
||||
|
||||
const int Matcher::float_pressure(int default_pressure_threshold) {
|
||||
return default_pressure_threshold;
|
||||
}
|
||||
@ -3416,7 +3427,7 @@ encode %{
|
||||
// The stub for call to interpreter.
|
||||
address stub = CompiledStaticCall::emit_to_interp_stub(cbuf);
|
||||
if (stub == NULL) {
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -3465,7 +3476,7 @@ encode %{
|
||||
// The stub for call to interpreter.
|
||||
address stub = CompiledStaticCall::emit_to_interp_stub(cbuf);
|
||||
if (stub == NULL) {
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -6911,7 +6922,7 @@ instruct decodeN_Disjoint_isel_Ex(iRegPdst dst, iRegNsrc src, flagsReg crx) %{
|
||||
n_compare->_opnds[0] = op_crx;
|
||||
n_compare->_opnds[1] = op_src;
|
||||
n_compare->_opnds[2] = new immN_0Oper(TypeNarrowOop::NULL_PTR);
|
||||
|
||||
|
||||
decodeN_mergeDisjointNode *n2 = new decodeN_mergeDisjointNode();
|
||||
n2->add_req(n_region, n_src, n1);
|
||||
n2->_opnds[0] = op_dst;
|
||||
@ -10588,7 +10599,7 @@ instruct cmpP_reg_imm16(flagsReg crx, iRegPsrc src1, immL16 src2) %{
|
||||
|
||||
instruct cmpFUnordered_reg_reg(flagsReg crx, regF src1, regF src2) %{
|
||||
// Needs matchrule, see cmpDUnordered.
|
||||
match(Set crx (CmpF src1 src2));
|
||||
match(Set crx (CmpF src1 src2));
|
||||
// no match-rule, false predicate
|
||||
predicate(false);
|
||||
|
||||
@ -10697,13 +10708,13 @@ instruct cmpF3_reg_reg_ExEx(iRegIdst dst, regF src1, regF src2) %{
|
||||
%}
|
||||
|
||||
instruct cmpDUnordered_reg_reg(flagsReg crx, regD src1, regD src2) %{
|
||||
// Needs matchrule so that ideal opcode is Cmp. This causes that gcm places the
|
||||
// node right before the conditional move using it.
|
||||
// Needs matchrule so that ideal opcode is Cmp. This causes that gcm places the
|
||||
// node right before the conditional move using it.
|
||||
// In jck test api/java_awt/geom/QuadCurve2DFloat/index.html#SetCurveTesttestCase7,
|
||||
// compilation of java.awt.geom.RectangularShape::getBounds()Ljava/awt/Rectangle
|
||||
// crashed in register allocation where the flags Reg between cmpDUnoredered and a
|
||||
// conditional move was supposed to be spilled.
|
||||
match(Set crx (CmpD src1 src2));
|
||||
match(Set crx (CmpD src1 src2));
|
||||
// False predicate, shall not be matched.
|
||||
predicate(false);
|
||||
|
||||
|
@ -753,6 +753,21 @@ int SharedRuntime::c_calling_convention(const BasicType *sig_bt,
|
||||
// in farg_reg[j] if argument i is the j-th float argument of this call.
|
||||
//
|
||||
case T_FLOAT:
|
||||
#if defined(LINUX)
|
||||
// Linux uses ELF ABI. Both original ELF and ELFv2 ABIs have float
|
||||
// in the least significant word of an argument slot.
|
||||
#if defined(VM_LITTLE_ENDIAN)
|
||||
#define FLOAT_WORD_OFFSET_IN_SLOT 0
|
||||
#else
|
||||
#define FLOAT_WORD_OFFSET_IN_SLOT 1
|
||||
#endif
|
||||
#elif defined(AIX)
|
||||
// Although AIX runs on big endian CPU, float is in the most
|
||||
// significant word of an argument slot.
|
||||
#define FLOAT_WORD_OFFSET_IN_SLOT 0
|
||||
#else
|
||||
#error "unknown OS"
|
||||
#endif
|
||||
if (freg < Argument::n_float_register_parameters_c) {
|
||||
// Put float in register ...
|
||||
reg = farg_reg[freg];
|
||||
@ -766,14 +781,14 @@ int SharedRuntime::c_calling_convention(const BasicType *sig_bt,
|
||||
if (arg >= Argument::n_regs_not_on_stack_c) {
|
||||
// ... and on the stack.
|
||||
guarantee(regs2 != NULL, "must pass float in register and stack slot");
|
||||
VMReg reg2 = VMRegImpl::stack2reg(stk LINUX_ONLY(+1));
|
||||
VMReg reg2 = VMRegImpl::stack2reg(stk + FLOAT_WORD_OFFSET_IN_SLOT);
|
||||
regs2[i].set1(reg2);
|
||||
stk += inc_stk_for_intfloat;
|
||||
}
|
||||
|
||||
} else {
|
||||
// Put float on stack.
|
||||
reg = VMRegImpl::stack2reg(stk LINUX_ONLY(+1));
|
||||
reg = VMRegImpl::stack2reg(stk + FLOAT_WORD_OFFSET_IN_SLOT);
|
||||
stk += inc_stk_for_intfloat;
|
||||
}
|
||||
regs[i].set1(reg);
|
||||
@ -2802,7 +2817,7 @@ void SharedRuntime::generate_deopt_blob() {
|
||||
__ set_last_Java_frame(R1_SP, noreg);
|
||||
|
||||
// With EscapeAnalysis turned on, this call may safepoint!
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, Deoptimization::fetch_unroll_info), R16_thread);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, Deoptimization::fetch_unroll_info), R16_thread, exec_mode_reg);
|
||||
address calls_return_pc = __ last_calls_return_pc();
|
||||
// Set an oopmap for the call site that describes all our saved registers.
|
||||
oop_maps->add_gc_map(calls_return_pc - start, map);
|
||||
@ -2815,6 +2830,8 @@ void SharedRuntime::generate_deopt_blob() {
|
||||
// by save_volatile_registers(...).
|
||||
RegisterSaver::restore_result_registers(masm, first_frame_size_in_bytes);
|
||||
|
||||
// reload the exec mode from the UnrollBlock (it might have changed)
|
||||
__ lwz(exec_mode_reg, Deoptimization::UnrollBlock::unpack_kind_offset_in_bytes(), unroll_block_reg);
|
||||
// In excp_deopt_mode, restore and clear exception oop which we
|
||||
// stored in the thread during exception entry above. The exception
|
||||
// oop will be the return value of this stub.
|
||||
@ -2945,8 +2962,9 @@ void SharedRuntime::generate_uncommon_trap_blob() {
|
||||
__ set_last_Java_frame(/*sp*/R1_SP, /*pc*/R11_scratch1);
|
||||
|
||||
__ mr(klass_index_reg, R3);
|
||||
__ li(R5_ARG3, Deoptimization::Unpack_uncommon_trap);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, Deoptimization::uncommon_trap),
|
||||
R16_thread, klass_index_reg);
|
||||
R16_thread, klass_index_reg, R5_ARG3);
|
||||
|
||||
// Set an oopmap for the call site.
|
||||
oop_maps->add_gc_map(gc_map_pc - start, map);
|
||||
@ -2966,6 +2984,12 @@ void SharedRuntime::generate_uncommon_trap_blob() {
|
||||
|
||||
// stack: (caller_of_deoptee, ...).
|
||||
|
||||
#ifdef ASSERT
|
||||
__ lwz(R22_tmp2, Deoptimization::UnrollBlock::unpack_kind_offset_in_bytes(), unroll_block_reg);
|
||||
__ cmpdi(CCR0, R22_tmp2, (unsigned)Deoptimization::Unpack_uncommon_trap);
|
||||
__ asm_assert_eq("SharedRuntime::generate_deopt_blob: expected Unpack_uncommon_trap", 0);
|
||||
#endif
|
||||
|
||||
// Allocate new interpreter frame(s) and possibly a c2i adapter
|
||||
// frame.
|
||||
push_skeleton_frames(masm, false/*deopt*/,
|
||||
|
@ -630,11 +630,11 @@ class StubGenerator: public StubCodeGenerator {
|
||||
Label filtered;
|
||||
|
||||
// Is marking active?
|
||||
if (in_bytes(PtrQueue::byte_width_of_active()) == 4) {
|
||||
__ lwz(Rtmp1, in_bytes(JavaThread::satb_mark_queue_offset() + PtrQueue::byte_offset_of_active()), R16_thread);
|
||||
if (in_bytes(SATBMarkQueue::byte_width_of_active()) == 4) {
|
||||
__ lwz(Rtmp1, in_bytes(JavaThread::satb_mark_queue_offset() + SATBMarkQueue::byte_offset_of_active()), R16_thread);
|
||||
} else {
|
||||
guarantee(in_bytes(PtrQueue::byte_width_of_active()) == 1, "Assumption");
|
||||
__ lbz(Rtmp1, in_bytes(JavaThread::satb_mark_queue_offset() + PtrQueue::byte_offset_of_active()), R16_thread);
|
||||
guarantee(in_bytes(SATBMarkQueue::byte_width_of_active()) == 1, "Assumption");
|
||||
__ lbz(Rtmp1, in_bytes(JavaThread::satb_mark_queue_offset() + SATBMarkQueue::byte_offset_of_active()), R16_thread);
|
||||
}
|
||||
__ cmpdi(CCR0, Rtmp1, 0);
|
||||
__ beq(CCR0, filtered);
|
||||
|
@ -94,8 +94,10 @@ void PredicateFailedStub::emit_code(LIR_Assembler* ce) {
|
||||
void CounterOverflowStub::emit_code(LIR_Assembler* ce) {
|
||||
__ bind(_entry);
|
||||
__ set(_bci, G4);
|
||||
Metadata *m = _method->as_constant_ptr()->as_metadata();
|
||||
__ set_metadata_constant(m, G5);
|
||||
__ call(Runtime1::entry_for(Runtime1::counter_overflow_id), relocInfo::runtime_call_type);
|
||||
__ delayed()->mov_or_nop(_method->as_register(), G5);
|
||||
__ delayed()->nop();
|
||||
ce->add_call_info_here(_info);
|
||||
ce->verify_oop_map(_info);
|
||||
|
||||
|
@ -2812,7 +2812,23 @@ void LIR_Assembler::monitor_address(int monitor_no, LIR_Opr dst_opr) {
|
||||
}
|
||||
|
||||
void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
|
||||
fatal("CRC32 intrinsic is not implemented on this platform");
|
||||
assert(op->crc()->is_single_cpu(), "crc must be register");
|
||||
assert(op->val()->is_single_cpu(), "byte value must be register");
|
||||
assert(op->result_opr()->is_single_cpu(), "result must be register");
|
||||
Register crc = op->crc()->as_register();
|
||||
Register val = op->val()->as_register();
|
||||
Register table = op->result_opr()->as_register();
|
||||
Register res = op->result_opr()->as_register();
|
||||
|
||||
assert_different_registers(val, crc, table);
|
||||
|
||||
__ set(ExternalAddress(StubRoutines::crc_table_addr()), table);
|
||||
__ not1(crc);
|
||||
__ clruwu(crc);
|
||||
__ update_byte_crc32(crc, val, table);
|
||||
__ not1(crc);
|
||||
|
||||
__ mov(crc, res);
|
||||
}
|
||||
|
||||
void LIR_Assembler::emit_lock(LIR_OpLock* op) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 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
|
||||
@ -68,6 +68,7 @@ void LIRItem::load_nonconstant() {
|
||||
|
||||
LIR_Opr LIRGenerator::exceptionOopOpr() { return FrameMap::Oexception_opr; }
|
||||
LIR_Opr LIRGenerator::exceptionPcOpr() { return FrameMap::Oissuing_pc_opr; }
|
||||
LIR_Opr LIRGenerator::syncLockOpr() { return new_register(T_INT); }
|
||||
LIR_Opr LIRGenerator::syncTempOpr() { return new_register(T_OBJECT); }
|
||||
LIR_Opr LIRGenerator::getThreadTemp() { return rlock_callee_saved(NOT_LP64(T_INT) LP64_ONLY(T_LONG)); }
|
||||
|
||||
@ -785,7 +786,86 @@ void LIRGenerator::do_ArrayCopy(Intrinsic* x) {
|
||||
}
|
||||
|
||||
void LIRGenerator::do_update_CRC32(Intrinsic* x) {
|
||||
fatal("CRC32 intrinsic is not implemented on this platform");
|
||||
// Make all state_for calls early since they can emit code
|
||||
LIR_Opr result = rlock_result(x);
|
||||
int flags = 0;
|
||||
switch (x->id()) {
|
||||
case vmIntrinsics::_updateCRC32: {
|
||||
LIRItem crc(x->argument_at(0), this);
|
||||
LIRItem val(x->argument_at(1), this);
|
||||
// val is destroyed by update_crc32
|
||||
val.set_destroys_register();
|
||||
crc.load_item();
|
||||
val.load_item();
|
||||
__ update_crc32(crc.result(), val.result(), result);
|
||||
break;
|
||||
}
|
||||
case vmIntrinsics::_updateBytesCRC32:
|
||||
case vmIntrinsics::_updateByteBufferCRC32: {
|
||||
|
||||
bool is_updateBytes = (x->id() == vmIntrinsics::_updateBytesCRC32);
|
||||
|
||||
LIRItem crc(x->argument_at(0), this);
|
||||
LIRItem buf(x->argument_at(1), this);
|
||||
LIRItem off(x->argument_at(2), this);
|
||||
LIRItem len(x->argument_at(3), this);
|
||||
|
||||
buf.load_item();
|
||||
off.load_nonconstant();
|
||||
|
||||
LIR_Opr index = off.result();
|
||||
int offset = is_updateBytes ? arrayOopDesc::base_offset_in_bytes(T_BYTE) : 0;
|
||||
if(off.result()->is_constant()) {
|
||||
index = LIR_OprFact::illegalOpr;
|
||||
offset += off.result()->as_jint();
|
||||
}
|
||||
|
||||
LIR_Opr base_op = buf.result();
|
||||
|
||||
if (index->is_valid()) {
|
||||
LIR_Opr tmp = new_register(T_LONG);
|
||||
__ convert(Bytecodes::_i2l, index, tmp);
|
||||
index = tmp;
|
||||
if (index->is_constant()) {
|
||||
offset += index->as_constant_ptr()->as_jint();
|
||||
index = LIR_OprFact::illegalOpr;
|
||||
} else if (index->is_register()) {
|
||||
LIR_Opr tmp2 = new_register(T_LONG);
|
||||
LIR_Opr tmp3 = new_register(T_LONG);
|
||||
__ move(base_op, tmp2);
|
||||
__ move(index, tmp3);
|
||||
__ add(tmp2, tmp3, tmp2);
|
||||
base_op = tmp2;
|
||||
} else {
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
}
|
||||
|
||||
LIR_Address* a = new LIR_Address(base_op, offset, T_BYTE);
|
||||
|
||||
BasicTypeList signature(3);
|
||||
signature.append(T_INT);
|
||||
signature.append(T_ADDRESS);
|
||||
signature.append(T_INT);
|
||||
CallingConvention* cc = frame_map()->c_calling_convention(&signature);
|
||||
const LIR_Opr result_reg = result_register_for(x->type());
|
||||
|
||||
LIR_Opr addr = new_pointer_register();
|
||||
__ leal(LIR_OprFact::address(a), addr);
|
||||
|
||||
crc.load_item_force(cc->at(0));
|
||||
__ move(addr, cc->at(1));
|
||||
len.load_item_force(cc->at(2));
|
||||
|
||||
__ call_runtime_leaf(StubRoutines::updateBytesCRC32(), getThreadTemp(), result_reg, cc->args());
|
||||
__ move(result_reg, result);
|
||||
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// _i2l, _i2f, _i2d, _l2i, _l2f, _l2d, _f2i, _f2l, _f2d, _d2i, _d2l, _d2f
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -88,4 +88,7 @@
|
||||
void invalidate_registers(bool iregisters, bool lregisters, bool oregisters,
|
||||
Register preserve1 = noreg, Register preserve2 = noreg);
|
||||
|
||||
// This platform only uses signal-based null checks. The Label is not needed.
|
||||
void null_check(Register r, Label *Lnull = NULL) { MacroAssembler::null_check(r); }
|
||||
|
||||
#endif // CPU_SPARC_VM_C1_MACROASSEMBLER_SPARC_HPP
|
||||
|
@ -857,13 +857,13 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
|
||||
bool with_frame = false; // I don't know if we can do with-frame.
|
||||
int satb_q_index_byte_offset =
|
||||
in_bytes(JavaThread::satb_mark_queue_offset() +
|
||||
PtrQueue::byte_offset_of_index());
|
||||
SATBMarkQueue::byte_offset_of_index());
|
||||
int satb_q_buf_byte_offset =
|
||||
in_bytes(JavaThread::satb_mark_queue_offset() +
|
||||
PtrQueue::byte_offset_of_buf());
|
||||
SATBMarkQueue::byte_offset_of_buf());
|
||||
|
||||
__ bind(restart);
|
||||
// Load the index into the SATB buffer. PtrQueue::_index is a
|
||||
// Load the index into the SATB buffer. SATBMarkQueue::_index is a
|
||||
// size_t so ld_ptr is appropriate
|
||||
__ ld_ptr(G2_thread, satb_q_index_byte_offset, tmp);
|
||||
|
||||
@ -961,14 +961,14 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
|
||||
|
||||
int dirty_card_q_index_byte_offset =
|
||||
in_bytes(JavaThread::dirty_card_queue_offset() +
|
||||
PtrQueue::byte_offset_of_index());
|
||||
DirtyCardQueue::byte_offset_of_index());
|
||||
int dirty_card_q_buf_byte_offset =
|
||||
in_bytes(JavaThread::dirty_card_queue_offset() +
|
||||
PtrQueue::byte_offset_of_buf());
|
||||
DirtyCardQueue::byte_offset_of_buf());
|
||||
|
||||
__ bind(restart);
|
||||
|
||||
// Get the index into the update buffer. PtrQueue::_index is
|
||||
// Get the index into the update buffer. DirtyCardQueue::_index is
|
||||
// a size_t so ld_ptr is appropriate here.
|
||||
__ ld_ptr(G2_thread, dirty_card_q_index_byte_offset, tmp3);
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user