This commit is contained in:
Lana Steuck 2015-10-22 11:12:30 -07:00
commit 2cec07979a
24 changed files with 3162 additions and 2519 deletions

View File

@ -5,3 +5,5 @@ nbproject/private/
^.hgtip
^.bridge2
.DS_Store
.metadata/
.recommenders/

File diff suppressed because it is too large Load Diff

1263
README-builds.md Normal file

File diff suppressed because it is too large Load Diff

View File

@ -410,6 +410,7 @@ AC_DEFUN_ONCE([BASIC_SETUP_FUNDAMENTAL_TOOLS],
BASIC_REQUIRE_PROGS(NAWK, [nawk gawk awk])
BASIC_REQUIRE_PROGS(PRINTF, printf)
BASIC_REQUIRE_PROGS(RM, rm)
BASIC_REQUIRE_PROGS(RMDIR, rmdir)
BASIC_REQUIRE_PROGS(SH, sh)
BASIC_REQUIRE_PROGS(SORT, sort)
BASIC_REQUIRE_PROGS(TAIL, tail)

View File

@ -305,6 +305,16 @@ AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK],
BOOT_JDK_SOURCETARGET="-source 8 -target 8"
AC_SUBST(BOOT_JDK_SOURCETARGET)
AC_SUBST(JAVAC_FLAGS)
# Check if the boot jdk is 32 or 64 bit
if "$JAVA" -d64 -version > /dev/null 2>&1; then
BOOT_JDK_BITS="64"
else
BOOT_JDK_BITS="32"
fi
AC_MSG_CHECKING([if Boot JDK is 32 or 64 bits])
AC_MSG_RESULT([$BOOT_JDK_BITS])
AC_SUBST(BOOT_JDK_BITS)
])
AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK_ARGUMENTS],
@ -341,7 +351,7 @@ AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK_ARGUMENTS],
# Maximum amount of heap memory.
# Maximum stack size.
JVM_MAX_HEAP=`expr $MEMORY_SIZE / 2`
if test "x$BUILD_NUM_BITS" = x32; then
if test "x$BOOT_JDK_BITS" = "x32"; then
if test "$JVM_MAX_HEAP" -gt "1100"; then
JVM_MAX_HEAP=1100
elif test "$JVM_MAX_HEAP" -lt "512"; then
@ -349,10 +359,7 @@ AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK_ARGUMENTS],
fi
STACK_SIZE=768
else
# Running Javac on a JVM on a 64-bit machine, takes more space since 64-bit
# pointers are used. Apparently, we need to increase the heap and stack
# space for the jvm. More specifically, when running javac to build huge
# jdk batch
# Running a 64 bit JVM allows for and requires a bigger heap
if test "$JVM_MAX_HEAP" -gt "1600"; then
JVM_MAX_HEAP=1600
elif test "$JVM_MAX_HEAP" -lt "512"; then

View File

@ -66,7 +66,7 @@ export STRIP="@STRIP@ @STRIPFLAGS@"
export TEE="@TEE@"
export UNIQ="@UNIQ@"
export UNPACK200="@FIXPATH@ @BOOT_JDK@/bin/unpack200"
export UNZIP="@UNZIP@"
export UNARCHIVE="@UNZIP@ -q"
export SRC_ROOT="@TOPDIR@"
export OUTPUT_ROOT="@OUTPUT_ROOT@"

View File

@ -815,6 +815,7 @@ JAXWS_TOPDIR
JAXP_TOPDIR
CORBA_TOPDIR
LANGTOOLS_TOPDIR
BOOT_JDK_BITS
JAVAC_FLAGS
BOOT_JDK_SOURCETARGET
JARSIGNER
@ -968,6 +969,7 @@ TAR
TAIL
SORT
SH
RMDIR
RM
PRINTF
NAWK
@ -1146,6 +1148,7 @@ MV
NAWK
PRINTF
RM
RMDIR
SH
SORT
TAIL
@ -2025,6 +2028,7 @@ Some influential environment variables:
NAWK Override default value for NAWK
PRINTF Override default value for PRINTF
RM Override default value for RM
RMDIR Override default value for RMDIR
SH Override default value for SH
SORT Override default value for SORT
TAIL Override default value for TAIL
@ -4587,7 +4591,7 @@ VS_SDK_PLATFORM_NAME_2013=
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
DATE_WHEN_GENERATED=1444643341
DATE_WHEN_GENERATED=1445524829
###############################################################################
#
@ -9511,6 +9515,209 @@ $as_echo "$tool_specified" >&6; }
# Publish this variable in the help.
if [ -z "${RMDIR+x}" ]; then
# The variable is not set by user, try to locate tool using the code snippet
for ac_prog in rmdir
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_RMDIR+:} false; then :
$as_echo_n "(cached) " >&6
else
case $RMDIR in
[\\/]* | ?:[\\/]*)
ac_cv_path_RMDIR="$RMDIR" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_RMDIR="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
RMDIR=$ac_cv_path_RMDIR
if test -n "$RMDIR"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $RMDIR" >&5
$as_echo "$RMDIR" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
test -n "$RMDIR" && break
done
else
# The variable is set, but is it from the command line or the environment?
# Try to remove the string !RMDIR! from our list.
try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!RMDIR!/}
if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
# If it failed, the variable was not from the command line. Ignore it,
# but warn the user (except for BASH, which is always set by the calling BASH).
if test "xRMDIR" != xBASH; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of RMDIR from the environment. Use command line variables instead." >&5
$as_echo "$as_me: WARNING: Ignoring value of RMDIR from the environment. Use command line variables instead." >&2;}
fi
# Try to locate tool using the code snippet
for ac_prog in rmdir
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_RMDIR+:} false; then :
$as_echo_n "(cached) " >&6
else
case $RMDIR in
[\\/]* | ?:[\\/]*)
ac_cv_path_RMDIR="$RMDIR" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_RMDIR="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
RMDIR=$ac_cv_path_RMDIR
if test -n "$RMDIR"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $RMDIR" >&5
$as_echo "$RMDIR" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
test -n "$RMDIR" && break
done
else
# If it succeeded, then it was overridden by the user. We will use it
# for the tool.
# First remove it from the list of overridden variables, so we can test
# for unknown variables in the end.
CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
# Check if we try to supply an empty value
if test "x$RMDIR" = x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool RMDIR= (no value)" >&5
$as_echo "$as_me: Setting user supplied tool RMDIR= (no value)" >&6;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RMDIR" >&5
$as_echo_n "checking for RMDIR... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
$as_echo "disabled" >&6; }
else
# Check if the provided tool contains a complete path.
tool_specified="$RMDIR"
tool_basename="${tool_specified##*/}"
if test "x$tool_basename" = "x$tool_specified"; then
# A command without a complete path is provided, search $PATH.
{ $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool RMDIR=$tool_basename" >&5
$as_echo "$as_me: Will search for user supplied tool RMDIR=$tool_basename" >&6;}
# Extract the first word of "$tool_basename", so it can be a program name with args.
set dummy $tool_basename; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_RMDIR+:} false; then :
$as_echo_n "(cached) " >&6
else
case $RMDIR in
[\\/]* | ?:[\\/]*)
ac_cv_path_RMDIR="$RMDIR" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_RMDIR="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
RMDIR=$ac_cv_path_RMDIR
if test -n "$RMDIR"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $RMDIR" >&5
$as_echo "$RMDIR" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
if test "x$RMDIR" = x; then
as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
fi
else
# Otherwise we believe it is a complete path. Use it as it is.
{ $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool RMDIR=$tool_specified" >&5
$as_echo "$as_me: Will use user supplied tool RMDIR=$tool_specified" >&6;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RMDIR" >&5
$as_echo_n "checking for RMDIR... " >&6; }
if test ! -x "$tool_specified"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
$as_echo "not found" >&6; }
as_fn_error $? "User supplied tool RMDIR=$tool_specified does not exist or is not executable" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
$as_echo "$tool_specified" >&6; }
fi
fi
fi
fi
if test "x$RMDIR" = x; then
as_fn_error $? "Could not find required tool for RMDIR" "$LINENO" 5
fi
# Publish this variable in the help.
@ -26920,6 +27127,18 @@ $as_echo "$tool_specified" >&6; }
# Check if the boot jdk is 32 or 64 bit
if "$JAVA" -d64 -version > /dev/null 2>&1; then
BOOT_JDK_BITS="64"
else
BOOT_JDK_BITS="32"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Boot JDK is 32 or 64 bits" >&5
$as_echo_n "checking if Boot JDK is 32 or 64 bits... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_BITS" >&5
$as_echo "$BOOT_JDK_BITS" >&6; }
###############################################################################
#
@ -53099,7 +53318,7 @@ $as_echo_n "checking flags for boot jdk java command for big workloads... " >&6;
# Maximum amount of heap memory.
# Maximum stack size.
JVM_MAX_HEAP=`expr $MEMORY_SIZE / 2`
if test "x$BUILD_NUM_BITS" = x32; then
if test "x$BOOT_JDK_BITS" = "x32"; then
if test "$JVM_MAX_HEAP" -gt "1100"; then
JVM_MAX_HEAP=1100
elif test "$JVM_MAX_HEAP" -lt "512"; then
@ -53107,10 +53326,7 @@ $as_echo_n "checking flags for boot jdk java command for big workloads... " >&6;
fi
STACK_SIZE=768
else
# Running Javac on a JVM on a 64-bit machine, takes more space since 64-bit
# pointers are used. Apparently, we need to increase the heap and stack
# space for the jvm. More specifically, when running javac to build huge
# jdk batch
# Running a 64 bit JVM allows for and requires a bigger heap
if test "$JVM_MAX_HEAP" -gt "1600"; then
JVM_MAX_HEAP=1600
elif test "$JVM_MAX_HEAP" -lt "512"; then

View File

@ -504,6 +504,7 @@ PATCH:=@PATCH@
PRINTF:=@PRINTF@
PWD:=@THEPWDCMD@
RM:=@RM@
RMDIR:=@RMDIR@
SED:=@SED@
SH:=@SH@
SORT:=@SORT@

View File

@ -51,8 +51,6 @@ else
STAT_PRINT_SIZE="-c %s"
fi
UNARCHIVE="$UNZIP -q"
COMPARE_EXCEPTIONS_INCLUDE="$SRC_ROOT/common/bin/compare_exceptions.sh.incl"
if [ ! -e "$COMPARE_EXCEPTIONS_INCLUDE" ]; then
echo "Error: Cannot locate the exceptions file, it should have been here: $COMPARE_EXCEPTIONS_INCLUDE"

View File

@ -0,0 +1,62 @@
#!/bin/bash
# Get an absolute path to this script, since that determines the top-level
# directory.
this_script_dir=`dirname $0`
TOPDIR=`cd $this_script_dir/../.. > /dev/null && pwd`
GREP=grep
MD_FILE=$TOPDIR/README-builds.md
HTML_FILE=$TOPDIR/README-builds.html
# Locate the markdown processor tool and check that it is the correct version.
locate_markdown_processor() {
if [ -z "$MARKDOWN" ]; then
MARKDOWN=`which markdown 2> /dev/null`
if [ -z "$MARKDOWN" ]; then
echo "Error: Cannot locate markdown processor" 1>&2
exit 1
fi
fi
# Test version
MARKDOWN_VERSION=`$MARKDOWN -version | $GREP version`
if [ "x$MARKDOWN_VERSION" != "xThis is Markdown, version 1.0.1." ]; then
echo "Error: Expected markdown version 1.0.1." 1>&2
echo "Actual version found: $MARKDOWN_VERSION" 1>&2
echo "Download markdown here: https://daringfireball.net/projects/markdown/" 1>&2
exit 1
fi
}
# Verify that the source markdown file looks sound.
verify_source_code() {
TOO_LONG_LINES=`$GREP -E -e '^.{80}.+$' $MD_FILE`
if [ "x$TOO_LONG_LINES" != x ]; then
echo "Warning: The following lines are longer than 80 characters:"
$GREP -E -e '^.{80}.+$' $MD_FILE
fi
}
# Convert the markdown file to html format.
process_source() {
echo "Generating html file from markdown"
cat > $HTML_FILE << END
<html>
<head>
<title>OpenJDK Build README</title>
</head>
<body>
END
markdown $MD_FILE >> $HTML_FILE
cat >> $HTML_FILE <<END
</body>
</html>
END
echo "Done"
}
locate_markdown_processor
verify_source_code
process_source

View File

@ -438,6 +438,18 @@ jdk.jvmstat_COPY := aliasmap
################################################################################
jdk.vm.ci_EXCLUDE_FILES += \
jdk/vm/ci/options/processor/OptionProcessor.java \
jdk/vm/ci/service/processor/ServiceProviderProcessor.java \
#
jdk.vm.ci_EXCLUDES += \
META-INF/jvmci.options \
META-INF/jvmci.providers \
#
################################################################################
jdk.xml.bind_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
jdk.xml.bind_CLEAN := .properties
jdk.xml.bind_COPY := .xsd JAXBContextFactory.java ZeroOneBooleanAdapter.java
@ -479,6 +491,7 @@ ifneq ($(OPENJDK_TARGET_OS), $(OPENJDK_TARGET_OS_TYPE))
endif
SHARE_SRC_DIRS += \
$(HOTSPOT_TOPDIR)/src/$1/share/classes \
$(JDK_TOPDIR)/src/$1/share/classes \
$(LANGTOOLS_TOPDIR)/src/$1/share/classes \
$(CORBA_TOPDIR)/src/$1/share/classes \
@ -531,7 +544,7 @@ define SetupModuleCompilation
$$(eval $$(call SetupJavaCompilation,$1, \
SETUP := $$(if $$($1_SETUP), $$($1_SETUP), GENERATE_JDKBYTECODE), \
SRC := $$(wildcard $$(call ALL_SRC_DIRS,$1)), \
SRC := $$(if $$($1_SRC), $$($1_SRC), $$(wildcard $$(call ALL_SRC_DIRS,$1))), \
INCLUDES := $(JDK_USER_DEFINED_FILTER),\
BIN := $$(if $$($1_BIN), $$($1_BIN), $(JDK_OUTPUTDIR)/modules/$1), \
HEADERS := $(SUPPORT_OUTPUTDIR)/headers/$1, \

View File

@ -39,7 +39,8 @@ $(eval $(call IncludeCustomExtension, , Images-pre.gmk))
MAIN_MODULES += java.se java.smartcardio jdk.httpserver jdk.sctp \
jdk.security.auth jdk.security.jgss jdk.pack200 jdk.xml.dom \
jdk.accessibility jdk.internal.le jdk.scripting.nashorn.shell
jdk.accessibility jdk.internal.le jdk.scripting.nashorn.shell \
jdk.vm.ci
# providers
PROVIDER_MODULES += jdk.charsets jdk.crypto.ec jdk.crypto.pkcs11 jdk.jvmstat jdk.localedata \
@ -48,7 +49,8 @@ PROVIDER_MODULES += jdk.charsets jdk.crypto.ec jdk.crypto.pkcs11 jdk.jvmstat jdk
# tools
TOOLS_MODULES += jdk.attach jdk.compiler jdk.dev \
jdk.javadoc jdk.jcmd jdk.jconsole jdk.hotspot.agent jdk.jartool \
jdk.jdeps jdk.jdi jdk.jdwp.agent jdk.policytool jdk.rmic jdk.xml.bind jdk.xml.ws
jdk.jdeps jdk.jdi jdk.jdwp.agent jdk.jshell jdk.policytool jdk.rmic \
jdk.xml.bind jdk.xml.ws
ifeq ($(OPENJDK_TARGET_OS), windows)
PROVIDER_MODULES += jdk.crypto.mscapi

View File

@ -137,7 +137,9 @@ ifeq ($(HAS_SPEC),)
# The spec files depend on the autoconf source code. This check makes sure
# the configuration is up to date after changes to configure.
$(SPECS): $(wildcard $(topdir)/common/autoconf/*)
CUSTOM_CONFIG_DIR ?= $(topdir)/closed/autoconf
$(SPECS): $(wildcard $(topdir)/common/autoconf/*) $(wildcard $(CUSTOM_CONFIG_DIR)/*)
ifeq ($(CONF_CHECK), fail)
@echo "Error: The configuration is not up to date for '$(lastword $(subst /, , $(dir $@)))'."
$(call PrintConfCheckFailed)

View File

@ -107,6 +107,7 @@ $(eval $(call DeclareRecipesForPhase, GENSRC, \
JDK_GENSRC_TARGETS := $(filter %-gensrc-jdk, $(GENSRC_TARGETS))
LANGTOOLS_GENSRC_TARGETS := $(filter %-gensrc-langtools, $(GENSRC_TARGETS))
CORBA_GENSRC_TARGETS := $(filter %-gensrc-corba, $(GENSRC_TARGETS))
HOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-hotspot, $(GENSRC_TARGETS))
ALL_TARGETS += $(GENSRC_TARGETS)
@ -128,7 +129,8 @@ $(eval $(call DeclareRecipesForPhase, COPY, \
FILE_PREFIX := Copy, \
MAKE_SUBDIR := copy, \
CHECK_MODULES := $(ALL_MODULES), \
USE_WRAPPER := true))
USE_WRAPPER := true, \
MULTIPLE_MAKEFILES := true))
ALL_TARGETS += $(COPY_TARGETS)
@ -352,6 +354,8 @@ else
$(CORBA_GENSRC_TARGETS): interim-langtools
$(HOTSPOT_GENSRC_TARGETS): interim-langtools
$(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk
$(GENDATA_TARGETS): interim-langtools buildtools-jdk
@ -415,6 +419,9 @@ else
# Explicitly add dependencies for special targets
java.base-java: unpack-sec
# The copy target copies files generated by gensrc
java.base-copy-hotspot: java.base-gensrc-hotspot
jdk.jdeps-gendata: java rmic
zip-security: java.base-java java.security.jgss-java java.security.jgss-libs \

View File

@ -50,6 +50,8 @@ define CleanTest
@$(PRINTF) "Cleaning test $(strip $1) ..."
@$(PRINTF) "\n" $(LOG_DEBUG)
$(RM) -r $(SUPPORT_OUTPUTDIR)/test/$(strip $(subst -,/,$1))
# Remove as much of the test directory structure as is empty
$(RMDIR) -p $(dir $(SUPPORT_OUTPUTDIR)/test/$(strip $(subst -,/,$1))) 2> /dev/null || true
@$(PRINTF) " done\n"
endef
@ -108,7 +110,8 @@ endef
################################################################################
MAKE_TOPDIR_LIST := $(JDK_TOPDIR) $(CORBA_TOPDIR) $(LANGTOOLS_TOPDIR)
MAKE_TOPDIR_LIST := $(JDK_TOPDIR) $(CORBA_TOPDIR) $(LANGTOOLS_TOPDIR) \
$(HOTSPOT_TOPDIR)
MAKE_MAKEDIR_LIST := make
# Helper macro for DeclareRecipesForPhase
@ -179,7 +182,7 @@ endef
# FILE_PREFIX : File prefix for this build phase
# USE_WRAPPER : Set to true to use ModuleWrapper.gmk
# CHECK_MODULES : List of modules to try
# MULTIPLE_MAKEFILES : Set to true to handle makefils for the same module in
# MULTIPLE_MAKEFILES : Set to true to handle makefiles for the same module and
# phase in multiple repos
# Exported variables:
# $1_MODULES : All modules that had rules generated

View File

@ -33,6 +33,7 @@ include SetupJavaCompilers.gmk
# Module list macros
ALL_TOP_SRC_DIRS := \
$(HOTSPOT_TOPDIR)/src \
$(JDK_TOPDIR)/src \
$(LANGTOOLS_TOPDIR)/src \
$(CORBA_TOPDIR)/src \

View File

@ -49,9 +49,9 @@ ARCH := $(word 1,$(subst -, ,$(TARGET)))
# Define external dependencies
# Latest that could be made to work.
gcc_ver := gcc-4.8.2
binutils_ver := binutils-2.24
ccache_ver := ccache-3.1.9
gcc_ver := gcc-4.9.2
binutils_ver := binutils-2.25
ccache_ver := ccache-3.2.1
mpfr_ver := mpfr-3.0.1
gmp_ver := gmp-4.3.2
mpc_ver := mpc-1.0.1

View File

@ -32,10 +32,11 @@ VS_VERSION="2013"
VS_VERSION_NUM="12.0"
VS_VERSION_NUM_NODOT="120"
SDK_VERSION="8.1"
VS_VERSION_SP="SP4"
SCRIPT_DIR="$(cd "$(dirname $0)" > /dev/null && pwd)"
BUILD_DIR="${SCRIPT_DIR}/../../build/devkit"
DEVKIT_ROOT="${BUILD_DIR}/VS${VS_VERSION}-devkit"
DEVKIT_ROOT="${BUILD_DIR}/VS${VS_VERSION}${VS_VERSION_SP}-devkit"
DEVKIT_BUNDLE="${DEVKIT_ROOT}.tar.gz"
echo "Creating devkit in $DEVKIT_ROOT"
@ -103,7 +104,7 @@ echo-info() {
echo "Generating devkit.info..."
rm -f $DEVKIT_ROOT/devkit.info
echo-info "# This file describes to configure how to interpret the contents of this devkit"
echo-info "DEVKIT_NAME=\"Microsoft Visual Studio $VS_VERSION (devkit)\""
echo-info "DEVKIT_NAME=\"Microsoft Visual Studio $VS_VERSION $VS_VERSION_SP (devkit)\""
echo-info "DEVKIT_VS_VERSION=\"$VS_VERSION\""
echo-info ""
echo-info "DEVKIT_TOOLCHAIN_PATH_x86=\"\$DEVKIT_ROOT/VC/bin:\$DEVKIT_ROOT/$SDK_VERSION/bin/x86\""

View File

@ -122,11 +122,18 @@ jprt.i586.fastdebugOpen.build.configure.args= \
jprt.i586.productOpen.build.configure.args= \
${my.i586.default.build.configure.args} \
${jprt.productOpen.build.configure.args}
jprt.linux_i586.build.configure.args= \
--with-devkit=$GCC492_OEL64_HOME \
${jprt.i586.build.configure.args}
jprt.linux_x64.build.configure.args= \
--with-devkit=$GCC492_OEL64_HOME
jprt.windows_i586.build.configure.args= \
--with-devkit=$VS2013_HOME \
--with-devkit=$VS2013SP4_HOME \
${jprt.i586.build.configure.args}
jprt.windows_x64.build.configure.args= \
--with-devkit=$VS2013_HOME
--with-devkit=$VS2013SP4_HOME
jprt.macosx_x64.build.configure.args= \
--with-devkit=$XCODE_511_HOME
########
#

View File

@ -237,6 +237,7 @@
<to>java.instrument</to>
<to>jdk.jfr</to>
<to>jdk.scripting.nashorn</to>
<to>jdk.vm.ci</to>
</export>
<export>
<name>jdk.internal.org.objectweb.asm.commons</name>
@ -290,6 +291,7 @@
<to>jdk.security.auth</to>
<to>jdk.security.jgss</to>
<to>jdk.snmp</to>
<to>jdk.vm.ci</to>
<to>java.instrument</to>
</export>
<export>
@ -787,6 +789,19 @@
<to>jdk.accessibility</to>
</export>
</module>
<module>
<name>jdk.jshell</name>
<depend>java.base</depend>
<depend re-exports="true">java.compiler</depend>
<depend>jdk.compiler</depend>
<depend>java.desktop</depend>
<depend>java.prefs</depend>
<depend>jdk.jdi</depend>
<depend>jdk.internal.le</depend>
<export>
<name>jdk.jshell</name>
</export>
</module>
<module>
<name>java.instrument</name>
<depend>java.base</depend>
@ -1547,14 +1562,17 @@
</export>
<export>
<name>com.sun.tools.javac.api</name>
<to>jdk.jshell</to>
<to>jdk.javadoc</to>
</export>
<export>
<name>com.sun.tools.javac.code</name>
<to>jdk.jshell</to>
<to>jdk.javadoc</to>
</export>
<export>
<name>com.sun.tools.javac.comp</name>
<to>jdk.jshell</to>
<to>jdk.javadoc</to>
</export>
<export>
@ -1564,16 +1582,22 @@
</export>
<export>
<name>com.sun.tools.javac.jvm</name>
<to>jdk.jshell</to>
<to>jdk.javadoc</to>
</export>
<export>
<name>com.sun.tools.javac.main</name>
<to>jdk.jshell</to>
<to>jdk.javadoc</to>
</export>
<export>
<name>com.sun.tools.javac.nio</name>
<to>jdk.javadoc</to>
</export>
<export>
<name>com.sun.tools.javac.parser</name>
<to>jdk.jshell</to>
</export>
<export>
<name>com.sun.tools.javac.platform</name>
<to>jdk.javadoc</to>
@ -1584,10 +1608,12 @@
</export>
<export>
<name>com.sun.tools.javac.tree</name>
<to>jdk.jshell</to>
<to>jdk.javadoc</to>
</export>
<export>
<name>com.sun.tools.javac.util</name>
<to>jdk.jshell</to>
<to>jdk.javadoc</to>
<to>jdk.jdeps</to>
</export>
@ -1648,22 +1674,27 @@
<depend>java.base</depend>
<export>
<name>jdk.internal.jline</name>
<to>jdk.jshell</to>
<to>jdk.scripting.nashorn.shell</to>
</export>
<export>
<name>jdk.internal.jline.console</name>
<to>jdk.jshell</to>
<to>jdk.scripting.nashorn.shell</to>
</export>
<export>
<name>jdk.internal.jline.console.completer</name>
<to>jdk.jshell</to>
<to>jdk.scripting.nashorn.shell</to>
</export>
<export>
<name>jdk.internal.jline.console.history</name>
<to>jdk.jshell</to>
<to>jdk.scripting.nashorn.shell</to>
</export>
<export>
<name>jdk.internal.jline.internal</name>
<to>jdk.jshell</to>
<to>jdk.scripting.nashorn.shell</to>
</export>
</module>
@ -1871,6 +1902,18 @@
<name>com.sun.security.jgss</name>
</export>
</module>
<module>
<name>jdk.vm.ci</name>
<depend>java.base</depend>
<export>
<name>jdk.vm.ci.hotspot</name>
<to>jdk.jfr</to>
</export>
<export>
<name>jdk.vm.ci.hotspot.events</name>
<to>jdk.jfr</to>
</export>
</module>
<module>
<name>jdk.xml.bind</name>
<depend>java.activation</depend>

View File

@ -67,6 +67,7 @@ import java.util.UUID;
public class LingeredApp {
private static final long spinDelay = 1000;
private static final int appWaitTime = 100;
private final String lockFileName;
private long lockCreationTime;
@ -111,6 +112,12 @@ public class LingeredApp {
this.storedAppOutput = new ArrayList<String>();
}
public LingeredApp() {
final String lockName = UUID.randomUUID().toString() + ".lck";
this.lockFileName = lockName;
this.storedAppOutput = new ArrayList<String>();
}
/**
*
* @return name of lock file
@ -338,21 +345,18 @@ public class LingeredApp {
* High level interface for test writers
*/
/**
* Factory method that creates SmartAppTest object with ready to use application
* lock name is autogenerated, wait timeout is hardcoded
* Factory method that creates LingeredApp object with ready to use application
* lock name is autogenerated
* @param cmd - vm options, could be null to auto add testvm.options
* @return LingeredApp object
* @throws IOException
*/
public static LingeredApp startApp(List<String> cmd) throws IOException {
final String lockName = UUID.randomUUID().toString() + ".lck";
final int waitTime = 10;
LingeredApp a = new LingeredApp(lockName);
LingeredApp a = new LingeredApp();
a.createLock();
try {
a.runApp(cmd);
a.waitAppReady(waitTime);
a.waitAppReady(appWaitTime);
} catch (Exception ex) {
a.deleteLock();
throw ex;
@ -361,6 +365,26 @@ public class LingeredApp {
return a;
}
/**
* Factory method that starts pre-created LingeredApp
* lock name is autogenerated
* @param cmd - vm options, could be null to auto add testvm.options
* @param theApp - app to start
* @return LingeredApp object
* @throws IOException
*/
public static void startApp(List<String> cmd, LingeredApp theApp) throws IOException {
theApp.createLock();
try {
theApp.runApp(cmd);
theApp.waitAppReady(appWaitTime);
} catch (Exception ex) {
theApp.deleteLock();
throw ex;
}
}
public static LingeredApp startApp() throws IOException {
return startApp(null);
}

View File

@ -0,0 +1,81 @@
/*
* 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.
*/
package jdk.test.lib.apps;
import java.util.concurrent.Phaser;
public class LingeredAppWithDeadlock extends LingeredApp {
private static final Object Lock1 = new Object();
private static final Object Lock2 = new Object();
private static volatile int reachCount = 0;
private static final Phaser p = new Phaser(2);
private static class ThreadOne extends Thread {
public void run() {
// wait Lock2 is locked
p.arriveAndAwaitAdvance();
synchronized (Lock1) {
// signal Lock1 is locked
p.arriveAndAwaitAdvance();
synchronized (Lock2) {
reachCount += 1;
}
}
}
}
private static class ThreadTwo extends Thread {
public void run() {
synchronized (Lock2) {
// signal Lock2 is locked
p.arriveAndAwaitAdvance();
// wait Lock1 is locked
p.arriveAndAwaitAdvance();
synchronized (Lock1) {
reachCount += 1;
}
}
}
}
public static void main(String args[]) {
if (args.length != 1) {
System.err.println("Lock file name is not specified");
System.exit(7);
}
// Run two theads that should come to deadlock
new ThreadOne().start();
new ThreadTwo().start();
if (reachCount > 0) {
// Not able to deadlock, exiting
System.exit(3);
}
LingeredApp.main(args);
}
}

View File

@ -112,6 +112,12 @@ public class WhiteBox {
public native void forceSafepoint();
private native long getConstantPool0(Class<?> aClass);
public long getConstantPool(Class<?> aClass) {
Objects.requireNonNull(aClass);
return getConstantPool0(aClass);
}
// JVMTI
private native void addToBootstrapClassLoaderSearch0(String segment);
public void addToBootstrapClassLoaderSearch(String segment){
@ -159,6 +165,7 @@ public class WhiteBox {
public native int NMTGetHashSize();
// Compiler
public native int matchesMethod(Executable method, String pattern);
public native int deoptimizeFrames(boolean makeNotEntrant);
public native void deoptimizeAll();
public boolean isMethodCompiled(Executable method) {
@ -288,6 +295,11 @@ public class WhiteBox {
public native void forceNMethodSweep();
public native Object[] getCodeHeapEntries(int type);
public native int getCompilationActivityMode();
private native long getMethodData0(Executable method);
public long getMethodData(Executable method) {
Objects.requireNonNull(method);
return getMethodData0(method);
}
public native Object[] getCodeBlob(long addr);
// Intered strings

View File

@ -35,14 +35,16 @@ public class NMethod extends CodeBlob {
}
private NMethod(Object[] obj) {
super((Object[])obj[0]);
assert obj.length == 4;
assert obj.length == 5;
comp_level = (Integer) obj[1];
insts = (byte[]) obj[2];
compile_id = (Integer) obj[3];
address = (Long) obj[4];
}
public final byte[] insts;
public final int comp_level;
public final int compile_id;
public final long address;
@Override
public String toString() {
@ -51,6 +53,7 @@ public class NMethod extends CodeBlob {
+ ", insts=" + insts
+ ", comp_level=" + comp_level
+ ", compile_id=" + compile_id
+ ", address=" + address
+ '}';
}
}