Merge
This commit is contained in:
commit
16504b35d7
2
.hgtags
2
.hgtags
@ -204,3 +204,5 @@ a1313a8d90d17d363a3b2a645dc4030ec204b168 jdk8-b79
|
||||
3fa21fbf9be7e6b482af43aacb6a09acfa30bdb6 jdk8-b80
|
||||
e41d716405b209d3eddef8bd4240cec2bd34dcca jdk8-b81
|
||||
5e8c55025644730385a6f8fa029ecdb2d2c98a07 jdk8-b82
|
||||
bcebd3fdefc91abb9d7fa0c5af6211b3f8720da6 jdk8-b83
|
||||
d7ad0dfaa41151bd3a9ae46725b0aec3730a9cd0 jdk8-b84
|
||||
|
@ -204,3 +204,5 @@ fd1a5574cf68af24bfd52decc37ac6361afb278a jdk8-b78
|
||||
907a926d3c96472f357617b48b6b968ea855c23c jdk8-b80
|
||||
145dbc56f931c134e837b675b9e6e7bf08902e93 jdk8-b81
|
||||
29153d0df68f84162ffe8c2cf4f402a3f2245e85 jdk8-b82
|
||||
466685ba01bfb7bc1e1ac61490fd8c0f3cc18763 jdk8-b83
|
||||
01f631f89fa392b4e484d0812c40ea8f9d2353aa jdk8-b84
|
||||
|
@ -43,14 +43,24 @@ fi
|
||||
|
||||
custom_hook=$custom_script_dir/custom-hook.m4
|
||||
|
||||
if test "x`which autoconf 2> /dev/null`" = x; then
|
||||
AUTOCONF="`which autoconf 2> /dev/null | grep -v '^no autoconf in'`"
|
||||
AUTOCONF_267="`which autoconf-2.67 2> /dev/null | grep -v '^no autoconf-2.67 in'`"
|
||||
|
||||
echo "Autoconf found: ${AUTOCONF}"
|
||||
echo "Autoconf-2.67 found: ${AUTOCONF_267}"
|
||||
|
||||
if test "x${AUTOCONF}" = x; then
|
||||
echo You need autoconf installed to be able to regenerate the configure script
|
||||
echo Error: Cannot find autoconf 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo Generating generated-configure.sh
|
||||
cat $script_dir/configure.ac | sed -e "s|@DATE_WHEN_GENERATED@|$TIMESTAMP|" | autoconf -W all -I$script_dir - > $script_dir/generated-configure.sh
|
||||
if test "x${AUTOCONF_267}" != x; then
|
||||
AUTOCONF=${AUTOCONF_267};
|
||||
fi
|
||||
|
||||
echo Generating generated-configure.sh with ${AUTOCONF}
|
||||
cat $script_dir/configure.ac | sed -e "s|@DATE_WHEN_GENERATED@|$TIMESTAMP|" | ${AUTOCONF} -W all -I$script_dir - > $script_dir/generated-configure.sh
|
||||
rm -rf autom4te.cache
|
||||
|
||||
if test -e $custom_hook; then
|
||||
@ -58,7 +68,7 @@ if test -e $custom_hook; then
|
||||
# We have custom sources available; also generate configure script
|
||||
# with custom hooks compiled in.
|
||||
cat $script_dir/configure.ac | sed -e "s|@DATE_WHEN_GENERATED@|$TIMESTAMP|" | \
|
||||
sed -e "s|#CUSTOM_AUTOCONF_INCLUDE|m4_include([$custom_hook])|" | autoconf -W all -I$script_dir - > $custom_script_dir/generated-configure.sh
|
||||
sed -e "s|#CUSTOM_AUTOCONF_INCLUDE|m4_include([$custom_hook])|" | ${AUTOCONF} -W all -I$script_dir - > $custom_script_dir/generated-configure.sh
|
||||
rm -rf autom4te.cache
|
||||
else
|
||||
echo No custom hook found: $custom_hook
|
||||
|
@ -602,6 +602,10 @@ AC_PATH_PROG(TIME, time)
|
||||
if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
|
||||
BASIC_REQUIRE_PROG(COMM, comm)
|
||||
fi
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
|
||||
BASIC_REQUIRE_PROG(XATTR, xattr)
|
||||
fi
|
||||
])
|
||||
|
||||
# Check if build directory is on local disk. If not possible to determine,
|
||||
|
@ -29,9 +29,16 @@
|
||||
include @SPEC@
|
||||
|
||||
# Check that the user did not try to specify a different java to use for compiling.
|
||||
ifneq ($(firstword $(SJAVAC_SERVER_JAVA)),$(firstword $(JAVA)))
|
||||
$(error Bootcycle builds are not possible if --with-sjavac-server-java is specified)
|
||||
# On windows we need to account for fixpath being first word.
|
||||
ifeq ($(firstword $(JAVA)),$(FIXPATH))
|
||||
JAVA_EXEC_POS=2
|
||||
else
|
||||
JAVA_EXEC_POS=1
|
||||
endif
|
||||
ifneq ($(word $(JAVA_EXEC_POS),$(SJAVAC_SERVER_JAVA)),$(word $(JAVA_EXEC_POS),$(JAVA)))
|
||||
$(error Bootcycle builds are not possible if --with-sjavac-server-java is specified)
|
||||
endif
|
||||
|
||||
|
||||
# Override specific values to do a boot cycle build
|
||||
|
||||
@ -39,5 +46,8 @@ endif
|
||||
BUILD_OUTPUT:=@BUILD_OUTPUT@/bootcycle-build
|
||||
|
||||
# Use a different Boot JDK
|
||||
OLD_BOOT_JDK:=$(BOOT_JDK)
|
||||
BOOT_JDK:=@BUILD_OUTPUT@/images/j2sdk-image
|
||||
BOOT_RTJAR:=@BUILD_OUTPUT@/images/j2sdk-image/jre/lib/rt.jar
|
||||
|
||||
SJAVAC_SERVER_JAVA:=$(subst $(OLD_BOOT_JDK),$(BOOT_JDK),$(SJAVAC_SERVER_JAVA))
|
||||
|
@ -49,7 +49,7 @@ JAVAP="@FIXPATH@ @BOOT_JDK@/bin/javap"
|
||||
LDD="@LDD@"
|
||||
MKDIR="@MKDIR@"
|
||||
NAWK="@NAWK@"
|
||||
NM="@NM@"
|
||||
NM="@GNM@"
|
||||
OBJDUMP="@OBJDUMP@"
|
||||
OTOOL="@OTOOL@"
|
||||
PRINTF="@PRINTF@"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -75,6 +75,19 @@ ARCH=$(OPENJDK_TARGET_CPU_LEGACY)
|
||||
# If yes then this expands to _LP64:=1
|
||||
@LP64@
|
||||
|
||||
# Legacy settings for zero
|
||||
ZERO_ENDIANNESS=$(OPENJDK_TARGET_CPU_ENDIAN)
|
||||
ZERO_LIBARCH=$(OPENJDK_TARGET_CPU_LEGACY_LIB)
|
||||
ZERO_ARCHDEF=@ZERO_ARCHDEF@
|
||||
ZERO_ARCHFLAG=@ZERO_ARCHFLAG@
|
||||
LIBFFI_CFLAGS=@LIBFFI_CFLAGS@
|
||||
LIBFFI_LIBS=@LIBFFI_LIBS@
|
||||
|
||||
# Legacy settings for zeroshark
|
||||
LLVM_CFLAGS=@LLVM_CFLAGS@
|
||||
LLVM_LIBS=@LLVM_LIBS@
|
||||
LLVM_LDFLAGS=@LLVM_LDFLAGS@
|
||||
|
||||
ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR)
|
||||
ALT_EXPORT_PATH=$(HOTSPOT_DIST)
|
||||
|
||||
|
@ -121,6 +121,15 @@ AC_SUBST(JVM_VARIANT_KERNEL)
|
||||
AC_SUBST(JVM_VARIANT_ZERO)
|
||||
AC_SUBST(JVM_VARIANT_ZEROSHARK)
|
||||
|
||||
INCLUDE_SA=true
|
||||
if test "x$JVM_VARIANT_ZERO" = xtrue ; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
if test "x$JVM_VARIANT_ZEROSHARK" = xtrue ; then
|
||||
INCLUDE_SA=false
|
||||
fi
|
||||
AC_SUBST(INCLUDE_SA)
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
|
||||
MACOSX_UNIVERSAL="true"
|
||||
fi
|
||||
@ -519,10 +528,10 @@ AC_MSG_RESULT([$ENABLE_DEBUG_SYMBOLS])
|
||||
#
|
||||
# ZIP_DEBUGINFO_FILES
|
||||
#
|
||||
AC_ARG_ENABLE([zip-debug-info],
|
||||
[AS_HELP_STRING([--disable-zip-debug-info],[disable zipping of debug-info files @<:@enabled@:>@])])
|
||||
|
||||
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
|
||||
|
@ -499,11 +499,36 @@ AC_SUBST(USE_EXTERNAL_LIBJPEG)
|
||||
# Check for the gif library
|
||||
#
|
||||
|
||||
USE_EXTERNAL_LIBJPEG=true
|
||||
AC_CHECK_LIB(gif, main, [],
|
||||
[ USE_EXTERNAL_LIBGIF=false
|
||||
AC_MSG_NOTICE([Will use gif decoder bundled with the OpenJDK source])
|
||||
])
|
||||
AC_ARG_WITH(giflib, [AS_HELP_STRING([--with-giflib],
|
||||
[use giflib from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
|
||||
|
||||
|
||||
AC_MSG_CHECKING([for which giflib to use])
|
||||
|
||||
# default is bundled
|
||||
DEFAULT_GIFLIB=bundled
|
||||
|
||||
#
|
||||
# if user didn't specify, use DEFAULT_GIFLIB
|
||||
#
|
||||
if test "x${with_giflib}" = "x"; then
|
||||
with_giflib=${DEFAULT_GIFLIB}
|
||||
fi
|
||||
|
||||
AC_MSG_RESULT(${with_giflib})
|
||||
|
||||
if test "x${with_giflib}" = "xbundled"; then
|
||||
USE_EXTERNAL_LIBGIF=false
|
||||
elif test "x${with_giflib}" = "xsystem"; then
|
||||
AC_CHECK_HEADER(gif_lib.h, [],
|
||||
[ AC_MSG_ERROR([--with-giflib=system specified, but gif_lib.h not found!])])
|
||||
AC_CHECK_LIB(gif, DGifGetCode, [],
|
||||
[ AC_MSG_ERROR([--with-giflib=system specified, but no giflib found!])])
|
||||
|
||||
USE_EXTERNAL_LIBGIF=true
|
||||
else
|
||||
AC_MSG_ERROR([Invalid value of --with-giflib: ${with_giflib}, use 'system' or 'bundled'])
|
||||
fi
|
||||
AC_SUBST(USE_EXTERNAL_LIBGIF)
|
||||
|
||||
###############################################################################
|
||||
@ -662,7 +687,7 @@ if test "x$OPENJDK_TARGET_OS" = xlinux; then
|
||||
AC_MSG_CHECKING([how to link with libstdc++])
|
||||
# If dynamic was requested, it's available since it would fail above otherwise.
|
||||
# If dynamic wasn't requested, go with static unless it isn't available.
|
||||
if test "x$with_stdc__lib" = xdynamic || test "x$has_static_libstdcxx" = xno; then
|
||||
if test "x$with_stdc__lib" = xdynamic || test "x$has_static_libstdcxx" = xno || test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then
|
||||
LIBCXX="$LIBCXX -lstdc++"
|
||||
LDCXX="$CXX"
|
||||
STATIC_CXX_SETTING="STATIC_CXX=false"
|
||||
@ -676,6 +701,59 @@ if test "x$OPENJDK_TARGET_OS" = xlinux; then
|
||||
fi
|
||||
AC_SUBST(STATIC_CXX_SETTING)
|
||||
|
||||
if test "x$JVM_VARIANT_ZERO" = xtrue || test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then
|
||||
# Figure out LIBFFI_CFLAGS and LIBFFI_LIBS
|
||||
PKG_CHECK_MODULES([LIBFFI], [libffi])
|
||||
|
||||
fi
|
||||
|
||||
if test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then
|
||||
AC_CHECK_PROG([LLVM_CONFIG], [llvm-config], [llvm-config])
|
||||
|
||||
if test "x$LLVM_CONFIG" != xllvm-config; then
|
||||
AC_MSG_ERROR([llvm-config not found in $PATH.])
|
||||
fi
|
||||
|
||||
llvm_components="jit mcjit engine nativecodegen native"
|
||||
unset LLVM_CFLAGS
|
||||
for flag in $("$LLVM_CONFIG" --cxxflags); do
|
||||
if echo "${flag}" | grep -q '^-@<:@ID@:>@'; then
|
||||
if test "${flag}" != "-D_DEBUG" ; then
|
||||
if test "${LLVM_CFLAGS}" != "" ; then
|
||||
LLVM_CFLAGS="${LLVM_CFLAGS} "
|
||||
fi
|
||||
LLVM_CFLAGS="${LLVM_CFLAGS}${flag}"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
llvm_version=$("${LLVM_CONFIG}" --version | sed 's/\.//; s/svn.*//')
|
||||
LLVM_CFLAGS="${LLVM_CFLAGS} -DSHARK_LLVM_VERSION=${llvm_version}"
|
||||
|
||||
unset LLVM_LDFLAGS
|
||||
for flag in $("${LLVM_CONFIG}" --ldflags); do
|
||||
if echo "${flag}" | grep -q '^-L'; then
|
||||
if test "${LLVM_LDFLAGS}" != ""; then
|
||||
LLVM_LDFLAGS="${LLVM_LDFLAGS} "
|
||||
fi
|
||||
LLVM_LDFLAGS="${LLVM_LDFLAGS}${flag}"
|
||||
fi
|
||||
done
|
||||
|
||||
unset LLVM_LIBS
|
||||
for flag in $("${LLVM_CONFIG}" --libs ${llvm_components}); do
|
||||
if echo "${flag}" | grep -q '^-l'; then
|
||||
if test "${LLVM_LIBS}" != ""; then
|
||||
LLVM_LIBS="${LLVM_LIBS} "
|
||||
fi
|
||||
LLVM_LIBS="${LLVM_LIBS}${flag}"
|
||||
fi
|
||||
done
|
||||
|
||||
AC_SUBST(LLVM_CFLAGS)
|
||||
AC_SUBST(LLVM_LDFLAGS)
|
||||
AC_SUBST(LLVM_LIBS)
|
||||
fi
|
||||
|
||||
# libCrun is the c++ runtime-library with SunStudio (roughly the equivalent of gcc's libstdc++.so)
|
||||
if test "x$OPENJDK_TARGET_OS" = xsolaris && test "x$LIBCXX" = x; then
|
||||
LIBCXX="/usr/lib${OPENJDK_TARGET_CPU_ISADIR}/libCrun.so.1"
|
||||
|
@ -332,6 +332,29 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS],
|
||||
DEFINE_CROSS_COMPILE_ARCH=""
|
||||
fi
|
||||
AC_SUBST(DEFINE_CROSS_COMPILE_ARCH)
|
||||
|
||||
# Some Zero and Shark settings.
|
||||
# ZERO_ARCHFLAG tells the compiler which mode to build for
|
||||
case "${OPENJDK_TARGET_CPU}" in
|
||||
s390)
|
||||
ZERO_ARCHFLAG="-m31"
|
||||
;;
|
||||
*)
|
||||
ZERO_ARCHFLAG="-m${OPENJDK_TARGET_CPU_BITS}"
|
||||
esac
|
||||
AC_SUBST(ZERO_ARCHFLAG)
|
||||
|
||||
# ZERO_ARCHDEF is used to enable architecture-specific code
|
||||
case "${OPENJDK_TARGET_CPU}" in
|
||||
ppc*) ZERO_ARCHDEF=PPC ;;
|
||||
s390*) ZERO_ARCHDEF=S390 ;;
|
||||
sparc*) ZERO_ARCHDEF=SPARC ;;
|
||||
x86_64*) ZERO_ARCHDEF=AMD64 ;;
|
||||
x86) ZERO_ARCHDEF=IA32 ;;
|
||||
*) ZERO_ARCHDEF=$(echo "${OPENJDK_TARGET_CPU_LEGACY_LIB}" | tr a-z A-Z)
|
||||
esac
|
||||
AC_SUBST(ZERO_ARCHDEF)
|
||||
|
||||
])
|
||||
|
||||
AC_DEFUN([PLATFORM_SET_RELEASE_FILE_OS_VALUES],
|
||||
|
@ -225,6 +225,7 @@ BUILD_VARIANT_RELEASE:=@BUILD_VARIANT_RELEASE@
|
||||
# directory.
|
||||
|
||||
BUILD_OUTPUT:=@BUILD_OUTPUT@
|
||||
# Colon left out to be able to override IMAGES_OUTPUTDIR for bootcycle-images
|
||||
LANGTOOLS_OUTPUTDIR=$(BUILD_OUTPUT)/langtools
|
||||
CORBA_OUTPUTDIR=$(BUILD_OUTPUT)/corba
|
||||
JAXP_OUTPUTDIR=$(BUILD_OUTPUT)/jaxp
|
||||
@ -376,6 +377,7 @@ AR:=@FIXPATH@ @AR@
|
||||
ARFLAGS:=@ARFLAGS@
|
||||
|
||||
NM:=@NM@
|
||||
GNM:=@GNM@
|
||||
STRIP:=@STRIP@
|
||||
MCS:=@MCS@
|
||||
|
||||
@ -522,6 +524,7 @@ FILE:=@FILE@
|
||||
HG:=@HG@
|
||||
OBJCOPY:=@OBJCOPY@
|
||||
SETFILE:=@SETFILE@
|
||||
XATTR:=@XATTR@
|
||||
|
||||
FIXPATH:=@FIXPATH@
|
||||
|
||||
@ -634,6 +637,8 @@ INSTALL_SYSCONFDIR=@sysconfdir@
|
||||
# Name of Service Agent library
|
||||
SALIB_NAME=@SALIB_NAME@
|
||||
|
||||
INCLUDE_SA=@INCLUDE_SA@
|
||||
|
||||
OS_VERSION_MAJOR:=@OS_VERSION_MAJOR@
|
||||
OS_VERSION_MINOR:=@OS_VERSION_MINOR@
|
||||
OS_VERSION_MICRO:=@OS_VERSION_MICRO@
|
||||
@ -643,16 +648,17 @@ JDK_IMAGE_SUBDIR:=j2sdk-image
|
||||
JRE_IMAGE_SUBDIR:=j2re-image
|
||||
JDK_OVERLAY_IMAGE_SUBDIR:=j2sdk-overlay-image
|
||||
JRE_OVERLAY_IMAGE_SUBDIR:=j2re-overlay-image
|
||||
JDK_IMAGE_DIR:=$(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR)
|
||||
JRE_IMAGE_DIR:=$(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR)
|
||||
JDK_OVERLAY_IMAGE_DIR:=$(IMAGES_OUTPUTDIR)/$(JDK_OVERLAY_IMAGE_SUBDIR)
|
||||
JRE_OVERLAY_IMAGE_DIR:=$(IMAGES_OUTPUTDIR)/$(JRE_OVERLAY_IMAGE_SUBDIR)
|
||||
# Colon left out to be able to override output dir for bootcycle-images
|
||||
JDK_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR)
|
||||
JRE_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR)
|
||||
JDK_OVERLAY_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_OVERLAY_IMAGE_SUBDIR)
|
||||
JRE_OVERLAY_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_OVERLAY_IMAGE_SUBDIR)
|
||||
|
||||
# Macosx bundles directory definitions
|
||||
JDK_BUNDLE_SUBDIR:=j2sdk-bundle/jdk$(JDK_VERSION).jdk/Contents
|
||||
JRE_BUNDLE_SUBDIR:=j2re-bundle/jre$(JDK_VERSION).jre/Contents
|
||||
JDK_BUNDLE_DIR:=$(IMAGES_OUTPUTDIR)/$(JDK_BUNDLE_SUBDIR)
|
||||
JRE_BUNDLE_DIR:=$(IMAGES_OUTPUTDIR)/$(JRE_BUNDLE_SUBDIR)
|
||||
JDK_BUNDLE_SUBDIR=j2sdk-bundle/jdk$(JDK_VERSION).jdk/Contents
|
||||
JRE_BUNDLE_SUBDIR=j2re-bundle/jre$(JDK_VERSION).jre/Contents
|
||||
JDK_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_BUNDLE_SUBDIR)
|
||||
JRE_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_BUNDLE_SUBDIR)
|
||||
|
||||
# Include the custom-spec.gmk file if it exists
|
||||
-include $(dir @SPEC@)/custom-spec.gmk
|
||||
|
@ -441,8 +441,10 @@ fi
|
||||
AC_SUBST(AS)
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
|
||||
AC_PATH_PROGS(NM, [gnm nm])
|
||||
AC_PATH_PROG(NM, nm)
|
||||
BASIC_FIXUP_EXECUTABLE(NM)
|
||||
AC_PATH_PROG(GNM, gnm)
|
||||
BASIC_FIXUP_EXECUTABLE(GNM)
|
||||
AC_PATH_PROG(STRIP, strip)
|
||||
BASIC_FIXUP_EXECUTABLE(STRIP)
|
||||
AC_PATH_PROG(MCS, mcs)
|
||||
@ -450,6 +452,8 @@ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
|
||||
elif test "x$OPENJDK_TARGET_OS" != xwindows; then
|
||||
AC_CHECK_TOOL(NM, nm)
|
||||
BASIC_FIXUP_EXECUTABLE(NM)
|
||||
GNM="$NM"
|
||||
AC_SUBST(GNM)
|
||||
AC_CHECK_TOOL(STRIP, strip)
|
||||
BASIC_FIXUP_EXECUTABLE(STRIP)
|
||||
fi
|
||||
|
@ -70,7 +70,7 @@ define add_idl_package
|
||||
$(PREFIXES) \
|
||||
$4
|
||||
$(RM) -f $$(addprefix $3/$$($4_TMPDIR)/,$6)
|
||||
$(CP) -rp $3/$$($4_TMPDIR)/* $3
|
||||
$(CP) -r $3/$$($4_TMPDIR)/* $3
|
||||
($(CD) $3/$$($4_TMPDIR) && $(FIND) . -type f | $(SED) 's!\./!$3/!g' | $(NAWK) '{ print $$$$1 ": $4" }' > $5)
|
||||
$(RM) -rf $3/$$($4_TMPDIR)
|
||||
endef
|
||||
|
@ -86,7 +86,7 @@ define SetupArchive
|
||||
# NOTE: $2 is dependencies, not a named argument!
|
||||
$(foreach i,3 4 5 6 7 8 9 10 11 12 13 14 15, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
|
||||
$(call LogSetupMacroEntry,SetupArchive($1),<dependencies>,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15))
|
||||
$(if $(findstring $(LOG),debug trace), $(info *[2] <dependencies> = $(strip $2)))
|
||||
$(if $(findstring $(LOG_LEVEL),debug trace), $(info *[2] <dependencies> = $(strip $2)))
|
||||
$(if $(16),$(error Internal makefile error: Too many arguments to SetupArchive, please update JavaCompilation.gmk))
|
||||
|
||||
$1_JARMAIN:=$(strip $$($1_JARMAIN))
|
||||
@ -505,7 +505,7 @@ define SetupJavaCompilation
|
||||
--permit-unidentified-artifacts \
|
||||
--permit-sources-without-package \
|
||||
--compare-found-sources $$($1_BIN)/_the.batch.tmp \
|
||||
--log=$(LOG) \
|
||||
--log=$(LOG_LEVEL) \
|
||||
$$($1_SJAVAC_ARGS) \
|
||||
$$($1_FLAGS) \
|
||||
$$($1_HEADERS_ARG) \
|
||||
|
@ -64,6 +64,10 @@ HOTSPOT_AVAILABLE := $(if $(wildcard $(root_dir)/hotspot),true,false)
|
||||
# Build with the configure bridge. After running configure, restart make
|
||||
# to parse the new spec file.
|
||||
BRIDGE_TARGETS := all
|
||||
# Add bootcycle-images target if legacy variable is set.
|
||||
ifeq ($(SKIP_BOOT_CYCLE),false)
|
||||
BRIDGE_TARGETS += bootcycle-images
|
||||
endif
|
||||
bridgeBuild: bridge2configure
|
||||
@cd $(root_dir) && $(MAKE) -f NewMakefile.gmk $(BRIDGE_TARGETS)
|
||||
|
||||
@ -99,6 +103,9 @@ endif
|
||||
ifdef ALT_FREETYPE_HEADERS_PATH
|
||||
@$(ECHO) " --with-freetype=$(call UnixPath,$(ALT_FREETYPE_HEADERS_PATH)/..) " >> $@.tmp
|
||||
endif
|
||||
ifdef ENABLE_SJAVAC
|
||||
@$(ECHO) " --enable-sjavac" >> $@.tmp
|
||||
endif
|
||||
ifeq ($(HOTSPOT_AVAILABLE),false)
|
||||
ifdef ALT_JDK_IMPORT_PATH
|
||||
@$(ECHO) " --with-import-hotspot=$(call UnixPath,$(ALT_JDK_IMPORT_PATH)) " >> $@.tmp
|
||||
|
@ -175,9 +175,8 @@ sign-jars-only: start-make
|
||||
@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildJdk.gmk sign-jars)
|
||||
@$(call TargetExit)
|
||||
|
||||
bootcycle-images:
|
||||
@$(ECHO) Boot cycle build step 1: Building the JDK image normally
|
||||
@($(CD) $(SRC_ROOT)/common/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) SPEC=$(SPEC) images)
|
||||
bootcycle-images: images bootcycle-images-only
|
||||
bootcycle-images-only: start-make
|
||||
@$(ECHO) Boot cycle build step 2: Building a new JDK image using previously built image
|
||||
@($(CD) $(SRC_ROOT)/common/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) SPEC=$(dir $(SPEC))bootcycle-spec.gmk images)
|
||||
|
||||
|
@ -51,9 +51,8 @@ decompress_paths=$(SED) -f $(SRC_ROOT)/common/makefiles/support/ListPathsSafely-
|
||||
-e 's|X98|$(OUTPUT_ROOT)|g' -e 's|X97|$(SRC_ROOT)|g' \
|
||||
-e 's|X00|X|g' | tr '\n' '$2'
|
||||
|
||||
# Subst in an extra $ to prevent it from disappearing.
|
||||
define ListPathsSafely_If
|
||||
$(if $(word $3,$($1)),$(eval $1_LPS$3:=$(call compress_paths,$(subst $$,$$$$,$(wordlist $3,$4,$($1))))))
|
||||
$(if $(word $3,$($1)),$(eval $1_LPS$3:=$(call compress_paths,$(wordlist $3,$4,$($1)))))
|
||||
endef
|
||||
|
||||
define ListPathsSafely_Printf
|
||||
@ -329,7 +328,7 @@ $(ECHO) $1/$(HGTIP_FILENAME)
|
||||
endef
|
||||
|
||||
define SetupLogging
|
||||
ifeq ($$(LOG), trace)
|
||||
ifeq ($$(LOG_LEVEL),trace)
|
||||
# Shell redefinition trick inspired by http://www.cmcrossroads.com/ask-mr-make/6535-tracing-rule-execution-in-gnu-make
|
||||
# For each target executed, will print
|
||||
# Building <TARGET> (from <FIRST PREREQUISITE>) (<ALL NEWER PREREQUISITES> newer)
|
||||
@ -340,17 +339,17 @@ define SetupLogging
|
||||
endif
|
||||
# Never remove warning messages; this is just for completeness
|
||||
LOG_WARN=
|
||||
ifneq ($$(findstring $$(LOG),info debug trace),)
|
||||
ifneq ($$(findstring $$(LOG_LEVEL),info debug trace),)
|
||||
LOG_INFO=
|
||||
else
|
||||
LOG_INFO=> /dev/null
|
||||
endif
|
||||
ifneq ($$(findstring $$(LOG),debug trace),)
|
||||
ifneq ($$(findstring $$(LOG_LEVEL),debug trace),)
|
||||
LOG_DEBUG=
|
||||
else
|
||||
LOG_DEBUG=> /dev/null
|
||||
endif
|
||||
ifneq ($$(findstring $$(LOG),trace),)
|
||||
ifneq ($$(findstring $$(LOG_LEVEL),trace),)
|
||||
LOG_TRACE=
|
||||
else
|
||||
LOG_TRACE=> /dev/null
|
||||
@ -363,7 +362,7 @@ $(eval $(call SetupLogging))
|
||||
# This is to be called by all SetupFoo macros
|
||||
define LogSetupMacroEntry
|
||||
$(if $(26),$(error Internal makefile error: Too many arguments to LogSetupMacroEntry, please update MakeBase.gmk))
|
||||
$(if $(findstring $(LOG),debug trace), $(info $1 $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25,$(if $($i),$(NEWLINE) $(strip [$i] $($i))))))
|
||||
$(if $(findstring $(LOG_LEVEL),debug trace), $(info $1 $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25,$(if $($i),$(NEWLINE) $(strip [$i] $($i))))))
|
||||
endef
|
||||
|
||||
# Make directory without forking mkdir if not needed
|
||||
@ -375,15 +374,24 @@ endef
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS),solaris)
|
||||
# On Solaris, if the target is a symlink and exists, cp won't overwrite.
|
||||
# Cp has to operate in recursive mode to allow for -P flag, to preserve soft links. If the
|
||||
# name of the target file differs from the source file, rename after copy.
|
||||
define install-file
|
||||
$(MKDIR) -p $(@D)
|
||||
$(RM) '$@'
|
||||
$(CP) -f -r -P '$<' '$(@D)'
|
||||
if [ "$(@F)" != "$(<F)" ]; then $(MV) '$(@D)/$(<F)' '$@'; fi
|
||||
endef
|
||||
else ifeq ($(OPENJDK_TARGET_OS),macosx)
|
||||
# On mac, extended attributes sometimes creep into the source files, which may later
|
||||
# cause the creation of ._* files which confuses testing. Clear these with xattr if
|
||||
# set. Some files get their write permissions removed after being copied to the
|
||||
# output dir. When these are copied again to images, xattr would fail. By only clearing
|
||||
# attributes when they are present, failing on this is avoided.
|
||||
define install-file
|
||||
$(MKDIR) -p $(@D)
|
||||
$(CP) -fpRP '$<' '$@'
|
||||
$(CP) -fRP '$<' '$@'
|
||||
if [ -n "`$(XATTR) -l '$@'`" ]; then $(XATTR) -c '$@'; fi
|
||||
endef
|
||||
else
|
||||
define install-file
|
||||
|
@ -184,26 +184,34 @@ define ParseLogLevel
|
||||
LOG_STRIPPED2=$$(subst nofile,,$$(LOG_STRIPPED1))
|
||||
# We might have ended up with a leading comma. Remove it
|
||||
LOG_STRIPPED3=$$(strip $$(patsubst $$(COMMA)%,%,$$(LOG_STRIPPED2)))
|
||||
override LOG:=$$(LOG_STRIPPED3)
|
||||
LOG_LEVEL:=$$(LOG_STRIPPED3)
|
||||
else
|
||||
LOG_LEVEL:=$$(LOG)
|
||||
endif
|
||||
|
||||
ifeq ($$(LOG),)
|
||||
ifeq ($$(LOG_LEVEL),)
|
||||
# Set LOG to "warn" as default if not set (and no VERBOSE given)
|
||||
override LOG=warn
|
||||
override LOG_LEVEL=warn
|
||||
endif
|
||||
ifeq ($$(LOG),warn)
|
||||
ifeq ($$(LOG_LEVEL),warn)
|
||||
VERBOSE=-s
|
||||
else ifeq ($$(LOG),info)
|
||||
else ifeq ($$(LOG_LEVEL),info)
|
||||
VERBOSE=-s
|
||||
else ifeq ($$(LOG),debug)
|
||||
else ifeq ($$(LOG_LEVEL),debug)
|
||||
VERBOSE=
|
||||
else ifeq ($$(LOG),trace)
|
||||
else ifeq ($$(LOG_LEVEL),trace)
|
||||
VERBOSE=
|
||||
else
|
||||
$$(info Error: LOG must be one of: warn, info, debug or trace.)
|
||||
$$(eval $$(call FatalError))
|
||||
endif
|
||||
else
|
||||
# Provide resonable interpretations of LOG_LEVEL if VERBOSE is given.
|
||||
ifeq ($(VERBOSE),)
|
||||
LOG_LEVEL:=debug
|
||||
else
|
||||
LOG_LEVEL:=warn
|
||||
endif
|
||||
ifneq ($$(LOG),)
|
||||
# We have both a VERBOSE and a LOG argument. This is OK only if this is a repeated call by ourselves,
|
||||
# but complain if this is the top-level make call.
|
||||
|
@ -204,3 +204,5 @@ e41fb1aa0329767b2737303c994e38bede1baa07 jdk8-b79
|
||||
5f3d4a6bdd027a1631d97e2dfff63fd5e46987a4 jdk8-b80
|
||||
2a00aeeb466b9dee22508f6261f63b70f9c696fe jdk8-b81
|
||||
48e1bc77004d9af575b733c04637b98fd17603c2 jdk8-b82
|
||||
a45bb25a67c7517b45f00c9682e317f46fecbba9 jdk8-b83
|
||||
928f8b888deb785cbd7bbd5f951cd6880f11f14e jdk8-b84
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -23,9 +23,9 @@
|
||||
# questions.
|
||||
#
|
||||
|
||||
orbd.usage=Utilizzo: {0} <opzioni> \n\ndove <opzioni> include:\n -port Porta di attivazione da cui avviare ORBD, valore predefinito 1049 (opzionale)\n -defaultdb Directory per i file ORBD, valore predefinito "./orb.db" (opzionale)\n -serverid ID server per ORBD, valore predefinito 1 (opzionale)\n -ORBInitialPort Porta iniziale (richiesta)\n -ORBInitialHost HostName iniziale (richiesto)\n
|
||||
orbd.usage=Uso: {0} <opzioni> \n\ndove <opzioni> include:\n -port Porta di attivazione da cui avviare ORBD, valore predefinito 1049 (opzionale)\n -defaultdb Directory per i file ORBD, valore predefinito "./orb.db" (opzionale)\n -serverid ID server per ORBD, valore predefinito 1 (opzionale)\n -ORBInitialPort Porta iniziale (richiesta)\n -ORBInitialHost HostName iniziale (richiesto)\n
|
||||
|
||||
servertool.usage=Utilizzo: {0} <opzioni> \n\ndove <opzioni> include:\n -ORBInitialPort Porta iniziale (richiesta)\n -ORBInitialHost HostName iniziale (richiesto)\n
|
||||
servertool.usage=Uso: {0} <opzioni> \n\ndove <opzioni> include:\n -ORBInitialPort Porta iniziale (richiesta)\n -ORBInitialHost HostName iniziale (richiesto)\n
|
||||
servertool.banner=\n\nBenvenuti in Java IDL Server Tool \nimmettere i comandi quando richiesto \n
|
||||
servertool.shorthelp=\n\n\tComandi disponibili:\n\t-------------------- \n
|
||||
servertool.baddef=Definizione server errata: {0}
|
||||
@ -82,13 +82,13 @@ servertool.quit1=esci dall'applicazione corrente
|
||||
servertool.help=\thelp\n\tOR\n\thelp <nome comando>\n
|
||||
servertool.help1=Guida
|
||||
|
||||
servertool.orbidmap=\tUtilizzo: orblist [ -serverid <id server> | -applicationName <nome> ]\n
|
||||
servertool.orbidmap=\tUso: orblist [ -serverid <id server> | -applicationName <nome> ]\n
|
||||
servertool.orbidmap1=lista nomi orb e relativa mappatura
|
||||
servertool.orbidmap2=\n\tId ORB\t\tNome ORB\n\t------\t\t--------\n
|
||||
pnameserv.success=NameServer persistente avviato correttamente
|
||||
|
||||
|
||||
bootstrap.usage=Utilizzo: {0} <opzioni> \n\ndove <opzioni> include:\n -ORBInitialPort Porta iniziale (richiesta)\n -InitialServicesFile File contenente la lista dei servizi iniziali (richiesto)\n
|
||||
bootstrap.usage=Uso: {0} <opzioni> \n\ndove <opzioni> include:\n -ORBInitialPort Porta iniziale (richiesta)\n -InitialServicesFile File contenente la lista dei servizi iniziali (richiesto)\n
|
||||
bootstrap.success=impostazione porta su {0} e lettura servizi da {1} in corso
|
||||
bootstrap.filenotreadable=il file {0} non \u00E8 leggibile
|
||||
bootstrap.filenotfound=impossibile trovare il file {0}
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -60,12 +60,12 @@ servertool.getserverid=\n\tgetserverid [ -applicationName <name> ]\n
|
||||
servertool.getserverid1=applicationName\u306E\u30B5\u30FC\u30D0\u30FCID\u3092\u8FD4\u3057\u307E\u3059
|
||||
servertool.getserverid2=\tapplicationName {0}\u306E\u30B5\u30FC\u30D0\u30FCID\u306F{1}\u3067\u3059
|
||||
|
||||
servertool.list=\n\t\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\n
|
||||
servertool.list=\n\tlist\n
|
||||
servertool.list1=\u767B\u9332\u3055\u308C\u305F\u3059\u3079\u3066\u306E\u30B5\u30FC\u30D0\u30FC\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059
|
||||
servertool.list2=\n\t\u30B5\u30FC\u30D0\u30FCID\t\u30B5\u30FC\u30D0\u30FC\u306E\u30AF\u30E9\u30B9\u540D\t\t\u30B5\u30FC\u30D0\u30FC\u30FB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\n\t---------\t----------------\t\t----------------------\n
|
||||
servertool.listactive=\n\t\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B5\u30FC\u30D0\u30FC\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059
|
||||
servertool.listactive=\n\tlistactive
|
||||
servertool.listactive1=\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B5\u30FC\u30D0\u30FC\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059
|
||||
servertool.listappnames=\tapplicationNames\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\n
|
||||
servertool.listappnames=\tlistappnames\n
|
||||
servertool.listappnames1=\u73FE\u5728\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308BapplicationNames\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059
|
||||
servertool.listappnames2=\u73FE\u5728\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u30B5\u30FC\u30D0\u30FCapplicationNames:
|
||||
|
||||
@ -76,7 +76,7 @@ servertool.startserver=\n\tstartup [ -serverid <server id> | -applicationName <n
|
||||
servertool.startserver1=\u767B\u9332\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC\u3092\u8D77\u52D5\u3057\u307E\u3059
|
||||
servertool.startserver2=\t\u30B5\u30FC\u30D0\u30FC\u306E\u8D77\u52D5\u306B\u6210\u529F\u3057\u307E\u3057\u305F\u3002
|
||||
|
||||
servertool.quit=\n\t\u7D42\u4E86\u3057\u307E\u3059\n
|
||||
servertool.quit=\n\tquit\n
|
||||
servertool.quit1=\u3053\u306E\u30C4\u30FC\u30EB\u3092\u7D42\u4E86\u3057\u307E\u3059
|
||||
|
||||
servertool.help=\thelp\n\t\u307E\u305F\u306F\n\thelp <command name>\n
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -68,7 +68,7 @@ Compile.parsing=%0\u306E\u89E3\u6790\u4E2D
|
||||
Compile.parseDone=\u5B8C\u4E86 - %0
|
||||
Compile.generating=%0\u306E\u751F\u6210\u4E2D
|
||||
Compile.genDone=\u5B8C\u4E86 - %0
|
||||
Deprecated.keyword=\u8B66\u544A: \u30AD\u30FC\u30EF\u30FC\u30C9`%0'\u306F\u63A8\u5968\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
|
||||
Deprecated.keyword=\u8B66\u544A: \u30AD\u30FC\u30EF\u30FC\u30C9`%0'\u306F\u975E\u63A8\u5968\u3067\u3059\u3002
|
||||
EvaluationException.1=%0\u6F14\u7B97\u5B50\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u306B\u4E00\u8CAB\u6027\u304C\u3042\u308A\u307E\u305B\u3093: %1\u304A\u3088\u3073%2\u3002
|
||||
EvaluationException.2=%0\u6F14\u7B97\u5B50\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u306F\u3001%1\u3067\u306F\u306A\u304F\u6570\u5024\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
|
||||
EvaluationException.or=\u30D3\u30C3\u30C8\u5358\u4F4D\u306EOR\u6F14\u7B97
|
||||
@ -114,7 +114,7 @@ ParseException.badRepIDPrefix=%0 (\u884C%1): \u30A4\u30F3\u30BF\u30D5\u30A7\u30F
|
||||
ParseException.badState=%0 (\u884C%1): %2\u306F\u30B9\u30C6\u30FC\u30C8\u30D5\u30EB\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306B\u3067\u304D\u307E\u305B\u3093\u3002\u8907\u6570\u306E\u30B9\u30C6\u30FC\u30C8\u30D5\u30EB\u89AA\u304C\u3042\u308A\u307E\u3059\u3002\n%3\n%4
|
||||
ParseException.branchLabel=%0 (\u884C%1): case %2\u306F\u3059\u3067\u306B\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u3002\n%3\n%4
|
||||
ParseException.branchName=%0 (\u884C%1): %2\u3068\u3044\u3046\u540D\u524D\u306E\u5206\u5C90\u306F\u3059\u3067\u306B\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u3002\n%3\n%4
|
||||
ParseException.duplicateInit=%0 (\u884C%1): \u521D\u671F\u5316\u5B50\u306B\u306F\u524D\u306E\u521D\u671F\u5316\u5B50\u3068\u540C\u3058\u7F72\u540D\u304C\u3042\u308A\u307E\u3059\u3002\n%2\n%3
|
||||
ParseException.duplicateInit=%0 (\u884C%1): \u521D\u671F\u5316\u5B50\u306B\u306F\u524D\u306E\u521D\u671F\u5316\u5B50\u3068\u540C\u3058\u30B7\u30B0\u30CD\u30C1\u30E3\u304C\u3042\u308A\u307E\u3059\u3002\n%2\n%3
|
||||
ParseException.duplicateState=%0 (\u884C%1): \u30C7\u30FC\u30BF\u30FB\u30E1\u30F3\u30D0\u30FC%2\u306E\u540D\u524D\u304C\u524D\u306E\u30C7\u30FC\u30BF\u30FB\u30E1\u30F3\u30D0\u30FC\u3068\u540C\u3058\u3067\u3059\u3002\n%3\n%4
|
||||
ParseException.elseNoIf=%0 (\u884C%1): \u4E00\u81F4\u3059\u308B#if\u304C\u306A\u3044#else\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002\n%2\n%3
|
||||
ParseException.endNoIf=%0 (\u884C%1): \u4E00\u81F4\u3059\u308B#if\u304C\u306A\u3044#endif\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002\n%2\n%3
|
||||
@ -146,7 +146,7 @@ ParseException.selfInherit=%0 (\u884C%1): %2\u3092\u305D\u308C\u81EA\u4F53\u304B
|
||||
ParseException.stringTooLong=%0 (\u884C%1): "%2"\u306F%3\u6587\u5B57\u4EE5\u5185\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n%4\n%5
|
||||
ParseException.syntax1=%0 (\u884C%1): `%2'\u304C\u5FC5\u8981\u3067\u3059\u304C\u3001`%3'\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002\n%4\n%5
|
||||
ParseException.syntax2=%0 (\u884C%1): %2\u306E1\u3064\u304C\u5FC5\u8981\u3067\u3059\u304C\u3001`%3'\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002\n%4\n%5
|
||||
ParseException.unclosed=%0: \u30B3\u30E1\u30F3\u30C8\u3067\u4E88\u671F\u3057\u306A\u3044EOF\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\u3002
|
||||
ParseException.unclosed=%0: \u30B3\u30E1\u30F3\u30C8\u3067\u4E88\u671F\u3057\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\u3002
|
||||
ParseException.undeclaredType=%0 (\u884C%1): %2\u306F\u5BA3\u8A00\u3055\u308C\u3066\u3044\u306A\u3044\u578B\u3067\u3059\u3002\n%3\n%4
|
||||
ParseException.warning=%0 (\u884C%1): %2\n%3\n%4
|
||||
ParseException.constExprType=%0 (\u884C%1): \u5B9A\u6570\u5F0F\u306E\u578B\u306F%2\u3067\u3059\u304C\u3001%3\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n%4\n%5
|
||||
@ -173,5 +173,5 @@ default=\u30A8\u30E9\u30FC\u3002\u5B58\u5728\u3057\u306A\u3044\u30E1\u30C3\u30BB
|
||||
# -i, -d, -keep, -emitAll, -noWarn, -v, -verbose, -version, #define
|
||||
# Do not translate the string "java com.sun.tools.corba.se.idl.Compile"
|
||||
|
||||
usage=\u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u4F7F\u7528\u65B9\u6CD5:\n\ java com.sun.tools.corba.se.idl.Compile [options] <idl file>\n<idl file>\u306FIDL\u5B9A\u7FA9\u3092\u542B\u3080\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D\u3067\u3001\n[options]\u306F\u6B21\u306B\u30EA\u30B9\u30C8\u3059\u308B\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u7D44\u5408\u305B\u3067\u3059\u3002\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\n\u7701\u7565\u53EF\u80FD\u3067\u3001\u4EFB\u610F\u306E\u9806\u5E8F\u3067\u8868\u793A\u3055\u308C\u307E\u3059\u3002<idl file>\u306F\u5FC5\u9808\u3067\u3001\n\u6700\u5F8C\u306B\u8868\u793A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\ \n\u30AA\u30D7\u30B7\u30E7\u30F3:\n-d <symbol> IDL\u30D5\u30A1\u30A4\u30EB\u306E\u6B21\u306E\u884C\u3068\n\ \u540C\u3058\u3067\u3059: #define <symbol>\n-emitAll #included\u30D5\u30A1\u30A4\u30EB\u3067\u898B\u3064\u304B\u3063\u305F\u30BF\u30A4\u30D7\u3092\u542B\u3080\u3001\u3059\u3079\u3066\u306E\u30BF\u30A4\u30D7\u3092\n\ \u767A\u884C\u3057\u307E\u3059\u3002\n-i <include path> \u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u3001\u73FE\u5728\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30A4\u30F3\u30AF\u30EB\u30FC\u30C9\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u304C\n\ \u30B9\u30AD\u30E3\u30F3\u3055\u308C\u307E\u3059\u3002\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u5225\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002\n-keep \u751F\u6210\u3055\u308C\u308B\u30D5\u30A1\u30A4\u30EB\u304C\u3059\u3067\u306B\u5B58\u5728\u3059\u308B\u5834\u5408\u306F\u3001\u4E0A\u66F8\u304D\n\ \u3057\u307E\u305B\u3093\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u4E0A\u66F8\u304D\u3055\u308C\u307E\u3059\u3002\n-noWarn \u8B66\u544A\u3092\u51FA\u3055\u306A\u3044\u3088\u3046\u306B\u3057\u307E\u3059\u3002\n-v, -verbose \u8A73\u7D30\u30E2\u30FC\u30C9\u3002\n-version \u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n
|
||||
usage=\u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u4F7F\u7528\u65B9\u6CD5:\n java com.sun.tools.corba.se.idl.Compile [options] <idl file>\n<idl file>\u306FIDL\u5B9A\u7FA9\u3092\u542B\u3080\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D\u3067\u3001\n[options]\u306F\u6B21\u306B\u30EA\u30B9\u30C8\u3059\u308B\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u7D44\u5408\u305B\u3067\u3059\u3002\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\n\u7701\u7565\u53EF\u80FD\u3067\u3001\u4EFB\u610F\u306E\u9806\u5E8F\u3067\u8868\u793A\u3055\u308C\u307E\u3059\u3002<idl file>\u306F\u5FC5\u9808\u3067\u3001\n\u6700\u5F8C\u306B\u8868\u793A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n \n\u30AA\u30D7\u30B7\u30E7\u30F3:\n-d <symbol> IDL\u30D5\u30A1\u30A4\u30EB\u306E\u6B21\u306E\u884C\u3068\n \u540C\u3058\u3067\u3059: #define <symbol>\n-emitAll #included\u30D5\u30A1\u30A4\u30EB\u3067\u898B\u3064\u304B\u3063\u305F\u30BF\u30A4\u30D7\u3092\u542B\u3080\u3001\u3059\u3079\u3066\u306E\u30BF\u30A4\u30D7\u3092\n \u767A\u884C\u3057\u307E\u3059\u3002\n-i <include path> \u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u3001\u73FE\u5728\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30A4\u30F3\u30AF\u30EB\u30FC\u30C9\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u304C\n \u30B9\u30AD\u30E3\u30F3\u3055\u308C\u307E\u3059\u3002\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u5225\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002\n-keep \u751F\u6210\u3055\u308C\u308B\u30D5\u30A1\u30A4\u30EB\u304C\u3059\u3067\u306B\u5B58\u5728\u3059\u308B\u5834\u5408\u306F\u3001\u4E0A\u66F8\u304D\n \u3057\u307E\u305B\u3093\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u4E0A\u66F8\u304D\u3055\u308C\u307E\u3059\u3002\n-noWarn \u8B66\u544A\u3092\u51FA\u3055\u306A\u3044\u3088\u3046\u306B\u3057\u307E\u3059\u3002\n-v, -verbose \u8A73\u7D30\u30E2\u30FC\u30C9\u3002\n-version \u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n
|
||||
|
||||
|
@ -173,5 +173,5 @@ default=\u9519\u8BEF! \u8BF7\u6C42\u4E86\u4E0D\u5B58\u5728\u7684\u6D88\u606F\u30
|
||||
# -i, -d, -keep, -emitAll, -noWarn, -v, -verbose, -version, #define
|
||||
# Do not translate the string "java com.sun.tools.corba.se.idl.Compile"
|
||||
|
||||
usage=\u7F16\u8BD1\u5668\u7528\u6CD5:\n\ java com.sun.tools.corba.se.idl.Compile [\u9009\u9879] <idl \u6587\u4EF6>\n\u5176\u4E2D, <idl \u6587\u4EF6> \u662F\u5305\u542B IDL \u5B9A\u4E49\u7684\u6587\u4EF6\u7684\u540D\u79F0, \u800C\n[\u9009\u9879] \u662F\u4E0B\u5217\u9009\u9879\u7684\u4EFB\u610F\u7EC4\u5408\u3002\u8FD9\u4E9B\u9009\u9879\n\u662F\u53EF\u9009\u7684, \u5E76\u4E14\u663E\u793A\u987A\u5E8F\u5E76\u4E0D\u56FA\u5B9A; <idl \u6587\u4EF6> \u662F\u5FC5\u9700\u7684\n\u5E76\u4E14\u5FC5\u987B\u663E\u793A\u5728\u6700\u540E\u3002\n\ \n\u9009\u9879:\n-d <\u7B26\u53F7> \u8FD9\u7B49\u540C\u4E8E IDL \u6587\u4EF6\u4E2D\u7684\n\ \u4E0B\u9762\u4E00\u884C: #define <\u7B26\u53F7>\n-emitAll \u53D1\u51FA\u6240\u6709\u7C7B\u578B, \u5305\u62EC\u5728 #included\n\ \u6587\u4EF6\u4E2D\u627E\u5230\u7684\u7C7B\u578B\u3002\n-i <\u5305\u542B\u8DEF\u5F84> \u9ED8\u8BA4\u60C5\u51B5\u4E0B, \u5C06\u5728\u5F53\u524D\u76EE\u5F55\u4E2D\u626B\u63CF\n\ \u5305\u542B\u7684\u6587\u4EF6\u3002\u6B64\u9009\u9879\u5C06\u6DFB\u52A0\u53E6\u4E00\u4E2A\u76EE\u5F55\u3002\n-keep \u5982\u679C\u8981\u751F\u6210\u7684\u6587\u4EF6\u5DF2\u5B58\u5728, \u8BF7\u4E0D\u8981\n\ \u8986\u76D6\u5B83\u3002\u9ED8\u8BA4\u60C5\u51B5\u4E0B\u4F1A\u8986\u76D6\u5B83\u3002\n-noWarn \u9690\u85CF\u8B66\u544A\u3002\n-v, -verbose \u8BE6\u7EC6\u6A21\u5F0F\u3002\n-version \u663E\u793A\u7248\u672C\u53F7\u3002\n
|
||||
usage=\u7F16\u8BD1\u5668\u7528\u6CD5:\n java com.sun.tools.corba.se.idl.Compile [\u9009\u9879] <idl \u6587\u4EF6>\n\u5176\u4E2D, <idl \u6587\u4EF6> \u662F\u5305\u542B IDL \u5B9A\u4E49\u7684\u6587\u4EF6\u7684\u540D\u79F0, \u800C\n[\u9009\u9879] \u662F\u4E0B\u5217\u9009\u9879\u7684\u4EFB\u610F\u7EC4\u5408\u3002\u8FD9\u4E9B\u9009\u9879\n\u662F\u53EF\u9009\u7684, \u5E76\u4E14\u663E\u793A\u987A\u5E8F\u5E76\u4E0D\u56FA\u5B9A; <idl \u6587\u4EF6> \u662F\u5FC5\u9700\u7684\n\u5E76\u4E14\u5FC5\u987B\u663E\u793A\u5728\u6700\u540E\u3002\n \n\u9009\u9879:\n-d <\u7B26\u53F7> \u8FD9\u7B49\u540C\u4E8E IDL \u6587\u4EF6\u4E2D\u7684\n \u4E0B\u9762\u4E00\u884C: #define <\u7B26\u53F7>\n-emitAll \u53D1\u51FA\u6240\u6709\u7C7B\u578B, \u5305\u62EC\u5728 #included\n \u6587\u4EF6\u4E2D\u627E\u5230\u7684\u7C7B\u578B\u3002\n-i <\u5305\u542B\u8DEF\u5F84> \u9ED8\u8BA4\u60C5\u51B5\u4E0B, \u5C06\u5728\u5F53\u524D\u76EE\u5F55\u4E2D\u626B\u63CF\n \u5305\u542B\u7684\u6587\u4EF6\u3002\u6B64\u9009\u9879\u5C06\u6DFB\u52A0\u53E6\u4E00\u4E2A\u76EE\u5F55\u3002\n-keep \u5982\u679C\u8981\u751F\u6210\u7684\u6587\u4EF6\u5DF2\u5B58\u5728, \u8BF7\u4E0D\u8981\n \u8986\u76D6\u5B83\u3002\u9ED8\u8BA4\u60C5\u51B5\u4E0B\u4F1A\u8986\u76D6\u5B83\u3002\n-noWarn \u9690\u85CF\u8B66\u544A\u3002\n-v, -verbose \u8BE6\u7EC6\u6A21\u5F0F\u3002\n-version \u663E\u793A\u7248\u672C\u53F7\u3002\n
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
@ -65,4 +65,4 @@ NameModifier.InvalidChar=\u6A21\u5F0F\u4E2D\u5305\u542B\u65E0\u6548\u5B57\u7B26
|
||||
# -d, -emitAll, -f, -i, -keep, -m, -sep, -pkgPrefix, -td, -v, -verbose, -version, -implbase
|
||||
# Do not translate the string "java com.sun.tools.corba.se.idl.toJavaPortable.Compile"
|
||||
#
|
||||
usage=\u7F16\u8BD1\u5668\u7528\u6CD5:\n\n\ java com.sun.tools.corba.se.idl.toJavaPortable.Compile [\u9009\u9879] <idl \u6587\u4EF6>\n\n\u5176\u4E2D, <idl \u6587\u4EF6> \u662F\u5305\u542B IDL \u5B9A\u4E49\u7684\u6587\u4EF6\u7684\u540D\u79F0, \u800C\n[\u9009\u9879] \u662F\u4E0B\u5217\u9009\u9879\u7684\u4EFB\u610F\u7EC4\u5408\u3002\u9009\u9879\n\u662F\u53EF\u9009\u7684, \u5E76\u4E14\u663E\u793A\u987A\u5E8F\u5E76\u4E0D\u56FA\u5B9A; <idl \u6587\u4EF6> \u662F\u5FC5\u9700\u7684,\n\u5E76\u4E14\u5FC5\u987B\u663E\u793A\u5728\u6700\u540E\u3002\n\ \n\u9009\u9879:\n-d <\u7B26\u53F7> \u8FD9\u7B49\u540C\u4E8E IDL \u6587\u4EF6\u4E2D\u7684\n\ \u4E0B\u9762\u4E00\u884C: #define <\u7B26\u53F7>\n-emitAll \u53D1\u51FA\u6240\u6709\u7C7B\u578B, \u5305\u62EC\u5728 #included \u6587\u4EF6\u4E2D\u627E\u5230\u7684\u7C7B\u578B\u3002\n-f<side> \u5B9A\u4E49\u8981\u53D1\u51FA\u54EA\u4E9B\u7ED1\u5B9A\u3002<side> \u662F client,\n\ server, all, serverTIE, allTIE \u4E4B\u4E00\u3002serverTIE \u548C allTIE\n\ \u5BFC\u81F4\u53D1\u51FA\u59D4\u6D3E\u6A21\u578B\u9AA8\u67B6\u3002\u5982\u679C\u672A\u4F7F\u7528\n\ \u6B64\u6807\u8BB0, \u5C06\u5047\u5B9A\u4E3A -fclient\u3002\n-i <\u5305\u542B\u8DEF\u5F84> \u9ED8\u8BA4\u60C5\u51B5\u4E0B, \u5C06\u5728\u5F53\u524D\u76EE\u5F55\u4E2D\u626B\u63CF\n\ \u5305\u542B\u7684\u6587\u4EF6\u3002\u6B64\u9009\u9879\u5C06\u6DFB\u52A0\u53E6\u4E00\u4E2A\u76EE\u5F55\u3002\n-keep \u5982\u679C\u8981\u751F\u6210\u7684\u6587\u4EF6\u5DF2\u5B58\u5728, \u8BF7\u4E0D\u8981\n\ \u8986\u76D6\u5B83\u3002\u9ED8\u8BA4\u60C5\u51B5\u4E0B\u4F1A\u8986\u76D6\u5B83\u3002\n-noWarn \u9690\u85CF\u8B66\u544A\u3002\n-oldImplBase \u751F\u6210\u4E0E\u65E7\u7248 (1.4 \u7248\u4E4B\u524D) JDK ORB \u517C\u5BB9\u7684\u9AA8\u67B6\u3002\n-pkgPrefix <t> <\u524D\u7F00> \u5F53\u5728\u6587\u4EF6\u8303\u56F4\u5185\u9047\u5230\u7C7B\u578B\u6216\u6A21\u5757\u540D <t> \u65F6,\n\ \u5728\u4E3A <t> \u751F\u6210\u7684\u6240\u6709\u6587\u4EF6\u7684 Java \u7A0B\u5E8F\u5305\u540D\u524D\n\ \u6DFB\u52A0 <\u524D\u7F00>\u3002\n-pkgTranslate <t> <pkg> \u5F53\u9047\u5230\u7C7B\u578B\u6216\u6A21\u5757\u540D <t> \u65F6, \u5728\n\ \u751F\u6210\u7684 Java \u7A0B\u5E8F\u5305\u4E2D\u5C06\u5176\u66FF\u6362\u4E3A <pkg>\u3002\u8BF7\u6CE8\u610F, \n\ \u5C06\u9996\u5148\u8FDB\u884C pkgPrefix \u66F4\u6539\u3002<t> \u5FC5\u987B\u4E0E\n\ \u5B8C\u6574\u7A0B\u5E8F\u5305\u540D\u5B8C\u5168\u5339\u914D\u3002\u53E6\u5916, <t> \u4E0D\u80FD\u4E3A\n\ org, org.omg \u6216 org.omg \u7684\u4EFB\u4F55\u5B50\u7A0B\u5E8F\u5305\u3002\n-skeletonName <xxx%yyy> \u6839\u636E\u6A21\u5F0F\u547D\u540D\u9AA8\u67B6\u3002\n\ \u9ED8\u8BA4\u503C\u4E3A:\n\ %POA \u8868\u793A POA \u57FA\u7C7B (-fserver \u6216 -fall) \n\ _%ImplBase \u8868\u793A oldImplBase \u57FA\u7C7B\n\ (-oldImplBase \u548C (-fserver \u6216 -fall))\u3002\n-td <dir> \u4F7F\u7528 <dir> \u8868\u793A\u8F93\u51FA\u76EE\u5F55\u4EE5\u4EE3\u66FF\n\ \u5F53\u524D\u76EE\u5F55\u3002\n-tieName <xxx%yyy> \u6839\u636E\u6A21\u5F0F\u547D\u540D tie\u3002\u9ED8\u8BA4\u503C\u4E3A:\n\ %POATie \u8868\u793A POA tie (-fserverTie \u6216 -fallTie) \n\ %_Tie \u8868\u793A oldImplBase tie\n\ (-oldImplBase \u548C (-fserverTie \u6216 -fallTie))\u3002\n-v, -verbose \u8BE6\u7EC6\u6A21\u5F0F\u3002\n-version \u663E\u793A\u7248\u672C\u53F7\u5E76\u9000\u51FA\u3002\n
|
||||
usage=\u7F16\u8BD1\u5668\u7528\u6CD5:\n\n java com.sun.tools.corba.se.idl.toJavaPortable.Compile [\u9009\u9879] <idl \u6587\u4EF6>\n\n\u5176\u4E2D, <idl \u6587\u4EF6> \u662F\u5305\u542B IDL \u5B9A\u4E49\u7684\u6587\u4EF6\u7684\u540D\u79F0, \u800C\n[\u9009\u9879] \u662F\u4E0B\u5217\u9009\u9879\u7684\u4EFB\u610F\u7EC4\u5408\u3002\u9009\u9879\n\u662F\u53EF\u9009\u7684, \u5E76\u4E14\u663E\u793A\u987A\u5E8F\u5E76\u4E0D\u56FA\u5B9A; <idl \u6587\u4EF6> \u662F\u5FC5\u9700\u7684,\n\u5E76\u4E14\u5FC5\u987B\u663E\u793A\u5728\u6700\u540E\u3002\n \n\u9009\u9879:\n-d <\u7B26\u53F7> \u8FD9\u7B49\u540C\u4E8E IDL \u6587\u4EF6\u4E2D\u7684\n \u4E0B\u9762\u4E00\u884C: #define <\u7B26\u53F7>\n-emitAll \u53D1\u51FA\u6240\u6709\u7C7B\u578B, \u5305\u62EC\u5728 #included \u6587\u4EF6\u4E2D\u627E\u5230\u7684\u7C7B\u578B\u3002\n-f<side> \u5B9A\u4E49\u8981\u53D1\u51FA\u54EA\u4E9B\u7ED1\u5B9A\u3002<side> \u662F client,\n server, all, serverTIE, allTIE \u4E4B\u4E00\u3002serverTIE \u548C allTIE\n \u5BFC\u81F4\u53D1\u51FA\u59D4\u6D3E\u6A21\u578B\u9AA8\u67B6\u3002\u5982\u679C\u672A\u4F7F\u7528\n \u6B64\u6807\u8BB0, \u5C06\u5047\u5B9A\u4E3A -fclient\u3002\n-i <\u5305\u542B\u8DEF\u5F84> \u9ED8\u8BA4\u60C5\u51B5\u4E0B, \u5C06\u5728\u5F53\u524D\u76EE\u5F55\u4E2D\u626B\u63CF\n \u5305\u542B\u7684\u6587\u4EF6\u3002\u6B64\u9009\u9879\u5C06\u6DFB\u52A0\u53E6\u4E00\u4E2A\u76EE\u5F55\u3002\n-keep \u5982\u679C\u8981\u751F\u6210\u7684\u6587\u4EF6\u5DF2\u5B58\u5728, \u8BF7\u4E0D\u8981\n \u8986\u76D6\u5B83\u3002\u9ED8\u8BA4\u60C5\u51B5\u4E0B\u4F1A\u8986\u76D6\u5B83\u3002\n-noWarn \u9690\u85CF\u8B66\u544A\u3002\n-oldImplBase \u751F\u6210\u4E0E\u65E7\u7248 (1.4 \u7248\u4E4B\u524D) JDK ORB \u517C\u5BB9\u7684\u9AA8\u67B6\u3002\n-pkgPrefix <t> <\u524D\u7F00> \u5F53\u5728\u6587\u4EF6\u8303\u56F4\u5185\u9047\u5230\u7C7B\u578B\u6216\u6A21\u5757\u540D <t> \u65F6,\n \u5728\u4E3A <t> \u751F\u6210\u7684\u6240\u6709\u6587\u4EF6\u7684 Java \u7A0B\u5E8F\u5305\u540D\u524D\n \u6DFB\u52A0 <\u524D\u7F00>\u3002\n-pkgTranslate <t> <pkg> \u5F53\u9047\u5230\u7C7B\u578B\u6216\u6A21\u5757\u540D <t> \u65F6, \u5728\n \u751F\u6210\u7684 Java \u7A0B\u5E8F\u5305\u4E2D\u5C06\u5176\u66FF\u6362\u4E3A <pkg>\u3002\u8BF7\u6CE8\u610F, \n \u5C06\u9996\u5148\u8FDB\u884C pkgPrefix \u66F4\u6539\u3002<t> \u5FC5\u987B\u4E0E\n \u5B8C\u6574\u7A0B\u5E8F\u5305\u540D\u5B8C\u5168\u5339\u914D\u3002\u53E6\u5916, <t> \u4E0D\u80FD\u4E3A\n org, org.omg \u6216 org.omg \u7684\u4EFB\u4F55\u5B50\u7A0B\u5E8F\u5305\u3002\n-skeletonName <xxx%yyy> \u6839\u636E\u6A21\u5F0F\u547D\u540D\u9AA8\u67B6\u3002\n \u9ED8\u8BA4\u503C\u4E3A:\n %POA \u8868\u793A POA \u57FA\u7C7B (-fserver \u6216 -fall) \n _%ImplBase \u8868\u793A oldImplBase \u57FA\u7C7B\n (-oldImplBase \u548C (-fserver \u6216 -fall))\u3002\n-td <dir> \u4F7F\u7528 <dir> \u8868\u793A\u8F93\u51FA\u76EE\u5F55\u4EE5\u4EE3\u66FF\n \u5F53\u524D\u76EE\u5F55\u3002\n-tieName <xxx%yyy> \u6839\u636E\u6A21\u5F0F\u547D\u540D tie\u3002\u9ED8\u8BA4\u503C\u4E3A:\n %POATie \u8868\u793A POA tie (-fserverTie \u6216 -fallTie) \n %_Tie \u8868\u793A oldImplBase tie\n (-oldImplBase \u548C (-fserverTie \u6216 -fallTie))\u3002\n-v, -verbose \u8BE6\u7EC6\u6A21\u5F0F\u3002\n-version \u663E\u793A\u7248\u672C\u53F7\u5E76\u9000\u51FA\u3002\n
|
||||
|
@ -326,3 +326,7 @@ dd6350b4abc4a6c19c89dd982cc0e4f3d119885c hs25-b22
|
||||
0631ebcc45f05c73b09a56c2586685af1f781c1d hs25-b23
|
||||
3db4ab0e12f437fe374817de346b2b0c6b4a5b31 jdk8-b82
|
||||
e3a41fc0234895eba4f272b984f7dacff495f8eb hs25-b24
|
||||
1c8db54ee9f315e20d6d5d9bf0b5c10349e9d301 jdk8-b83
|
||||
8d0f263a370c5f3e61791bb06054560804117288 hs25-b25
|
||||
af788b85010ebabbc1e8f52c6766e08c7a95cf99 jdk8-b84
|
||||
a947f40fb536e5b9e0aa210cf26abb430f80887a hs25-b26
|
||||
|
@ -572,9 +572,14 @@ public class WindbgDebuggerLocal extends DebuggerBase implements WindbgDebugger
|
||||
DTFWHome = sysRoot + File.separator + ".." + File.separator +
|
||||
"Program Files" + File.separator + "Debugging Tools For Windows";
|
||||
searchList.add(DTFWHome);
|
||||
searchList.add(DTFWHome + " (x86)");
|
||||
searchList.add(DTFWHome + " (x64)");
|
||||
|
||||
// Only add the search path for the current CPU architecture:
|
||||
String cpu = PlatformInfo.getCPU();
|
||||
if (cpu.equals("x86")) {
|
||||
searchList.add(DTFWHome + " (x86)");
|
||||
} else if (cpu.equals("amd64")) {
|
||||
searchList.add(DTFWHome + " (x64)");
|
||||
}
|
||||
// The last place to search is the system directory:
|
||||
searchList.add(sysRoot + File.separator + "system32");
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -190,6 +190,17 @@ $(SIMPLE_DIRS):
|
||||
# literal "$(GAMMADIR)/" suitable for inclusion in a Makefile.
|
||||
gamma-path=$(subst $(GAMMADIR),\$$(GAMMADIR),$(call $(1),$(HS_COMMON_SRC)/$(2)))
|
||||
|
||||
# This bit is needed to enable local rebuilds.
|
||||
# Unless the makefile itself sets LP64, any environmental
|
||||
# setting of LP64 will interfere with the build.
|
||||
LP64_SETTING/32 = LP64 = \#empty
|
||||
LP64_SETTING/64 = LP64 = 1
|
||||
|
||||
DATA_MODE/i486 = 32
|
||||
DATA_MODE/amd64 = 64
|
||||
|
||||
DATA_MODE = $(DATA_MODE/$(BUILDARCH))
|
||||
|
||||
flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
|
||||
@echo Creating $@ ...
|
||||
$(QUIETLY) ( \
|
||||
@ -212,6 +223,7 @@ flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
|
||||
echo "HOTSPOT_BUILD_USER = $(HOTSPOT_BUILD_USER)"; \
|
||||
echo "HOTSPOT_VM_DISTRO = $(HOTSPOT_VM_DISTRO)"; \
|
||||
echo "OPENJDK = $(OPENJDK)"; \
|
||||
echo "$(LP64_SETTING/$(DATA_MODE))"; \
|
||||
echo; \
|
||||
echo "# Used for platform dispatching"; \
|
||||
echo "TARGET_DEFINES = -DTARGET_OS_FAMILY_\$$(Platform_os_family)"; \
|
||||
|
@ -135,6 +135,7 @@ SUNWprivate_1.1 {
|
||||
JVM_GetEnclosingMethodInfo;
|
||||
JVM_GetFieldAnnotations;
|
||||
JVM_GetFieldIxModifiers;
|
||||
JVM_GetFieldTypeAnnotations;
|
||||
JVM_GetHostName;
|
||||
JVM_GetInheritedAccessControlContext;
|
||||
JVM_GetInterfaceVersion;
|
||||
@ -156,6 +157,7 @@ SUNWprivate_1.1 {
|
||||
JVM_GetMethodIxSignatureUTF;
|
||||
JVM_GetMethodParameterAnnotations;
|
||||
JVM_GetMethodParameters;
|
||||
JVM_GetMethodTypeAnnotations;
|
||||
JVM_GetPrimitiveArrayElement;
|
||||
JVM_GetProtectionDomain;
|
||||
JVM_GetSockName;
|
||||
|
@ -135,6 +135,7 @@ SUNWprivate_1.1 {
|
||||
JVM_GetEnclosingMethodInfo;
|
||||
JVM_GetFieldAnnotations;
|
||||
JVM_GetFieldIxModifiers;
|
||||
JVM_GetFieldTypeAnnotations;
|
||||
JVM_GetHostName;
|
||||
JVM_GetInheritedAccessControlContext;
|
||||
JVM_GetInterfaceVersion;
|
||||
@ -156,6 +157,7 @@ SUNWprivate_1.1 {
|
||||
JVM_GetMethodIxSignatureUTF;
|
||||
JVM_GetMethodParameterAnnotations;
|
||||
JVM_GetMethodParameters;
|
||||
JVM_GetMethodTypeAnnotations;
|
||||
JVM_GetPrimitiveArrayElement;
|
||||
JVM_GetProtectionDomain;
|
||||
JVM_GetSockName;
|
||||
|
@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -28,44 +28,38 @@
|
||||
set -u
|
||||
|
||||
|
||||
if [ $# != 2 ]; then
|
||||
echo "Usage : $0 Build_Options Location"
|
||||
echo "Build Options : debug or optimized or basicdebug or basic or clean"
|
||||
echo "Location : specify any workspace which has gamma sources"
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "Usage : $0 BuildTarget [LP64=1] [BuildOptions]"
|
||||
echo " Server VM | Client VM"
|
||||
echo "BuildTarget : debug | debug1"
|
||||
echo " fastdebug | fastdebug1"
|
||||
echo " jvmg | jvmg1"
|
||||
echo " optimized | optimized1"
|
||||
echo " profiled | profiled1"
|
||||
echo " product | product1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${JAVA_HOME-}" = "" -o ! -d "${JAVA_HOME-}" -o ! -d ${JAVA_HOME-}/jre/lib/ ]; then
|
||||
echo "JAVA_HOME needs to be set to a valid JDK path"
|
||||
echo "JAVA_HOME: ${JAVA_HOME-}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Just in case:
|
||||
case ${JAVA_HOME} in
|
||||
/*) true;;
|
||||
?*) JAVA_HOME=`( cd $JAVA_HOME; pwd )`;;
|
||||
esac
|
||||
JAVA_HOME=`( cd $JAVA_HOME; pwd )`
|
||||
|
||||
case `uname -m` in
|
||||
i386|i486|i586|i686)
|
||||
mach=i386
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported machine: " `uname -m`
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "${JAVA_HOME}" = "" -o ! -d "${JAVA_HOME}" -o ! -d ${JAVA_HOME}/jre/lib/${mach} ]; then
|
||||
echo "JAVA_HOME needs to be set to a valid JDK path"
|
||||
echo "ksh : export JAVA_HOME=/net/tetrasparc/export/gobi/JDK1.2_fcs_V/bsd"
|
||||
echo "csh : setenv JAVA_HOME /net/tetrasparc/export/gobi/JDK1.2_fcs_V/bsd"
|
||||
exit 1
|
||||
if [ "${ALT_BOOTDIR-}" = "" -o ! -d "${ALT_BOOTDIR-}" -o ! -d ${ALT_BOOTDIR-}/jre/lib/ ]; then
|
||||
ALT_BOOTDIR=${JAVA_HOME}
|
||||
fi
|
||||
|
||||
# build in current directory by default
|
||||
if [ "${ALT_OUTPUTDIR-}" = "" -o ! -d "${ALT_OUTPUTDIR-}" ]; then
|
||||
ALT_OUTPUTDIR=`(pwd)`
|
||||
fi
|
||||
|
||||
LD_LIBRARY_PATH=${JAVA_HOME}/jre/lib/`uname -p`:\
|
||||
${JAVA_HOME}/jre/lib/`uname -p`/native_threads:${LD_LIBRARY_PATH-.}
|
||||
|
||||
# This is necessary as long as we are using the old launcher
|
||||
# with the new distribution format:
|
||||
CLASSPATH=${JAVA_HOME}/jre/lib/rt.jar:${CLASSPATH-.}
|
||||
|
||||
HOTSPOT_SRC=`(dirname $0)`/..
|
||||
HOTSPOT_SRC=`(cd ${HOTSPOT_SRC}; pwd)`
|
||||
|
||||
for gm in gmake gnumake
|
||||
do
|
||||
@ -74,22 +68,25 @@ do
|
||||
done
|
||||
: ${GNUMAKE:?'Cannot locate the gnumake program. Stop.'}
|
||||
|
||||
# quiet build by default
|
||||
Quiet="MAKE_VERBOSE="
|
||||
|
||||
# no debug info by default
|
||||
NoDebugInfo="ENABLE_FULL_DEBUG_SYMBOLS="
|
||||
|
||||
LANG=C
|
||||
|
||||
echo "### ENVIRONMENT SETTINGS:"
|
||||
export HOTSPOT_SRC ; echo "HOTSPOT_SRC=$HOTSPOT_SRC"
|
||||
export JAVA_HOME ; echo "JAVA_HOME=$JAVA_HOME"
|
||||
export LD_LIBRARY_PATH ; echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
|
||||
export CLASSPATH ; echo "CLASSPATH=$CLASSPATH"
|
||||
export ALT_BOOTDIR ; echo "ALT_BOOTDIR=$ALT_BOOTDIR"
|
||||
export ALT_OUTPUTDIR ; echo "ALT_OUTPUTDIR=$ALT_OUTPUTDIR"
|
||||
export GNUMAKE ; echo "GNUMAKE=$GNUMAKE"
|
||||
export LANG ; echo "LANG=$LANG"
|
||||
echo "###"
|
||||
|
||||
Build_Options=$1
|
||||
Location=$2
|
||||
|
||||
case ${Location} in
|
||||
/*) true;;
|
||||
?*) Location=`(cd ${Location}; pwd)`;;
|
||||
esac
|
||||
BuildOptions="$Quiet $NoDebugInfo $*"
|
||||
|
||||
echo \
|
||||
${GNUMAKE} -f ${Location}/make/bsd/Makefile $Build_Options GAMMADIR=${Location}
|
||||
${GNUMAKE} -f ${Location}/make/bsd/Makefile $Build_Options GAMMADIR=${Location}
|
||||
${GNUMAKE} -f ${HOTSPOT_SRC}/make/Makefile $BuildOptions GAMMADIR=${HOTSPOT_SRC}
|
||||
${GNUMAKE} -f ${HOTSPOT_SRC}/make/Makefile $BuildOptions GAMMADIR=${HOTSPOT_SRC}
|
@ -28,7 +28,8 @@ ifeq ($(INCLUDE_JVMTI), false)
|
||||
Src_Files_EXCLUDE += jvmtiGetLoadedClasses.cpp forte.cpp jvmtiThreadState.cpp jvmtiExtensions.cpp \
|
||||
jvmtiImpl.cpp jvmtiManageCapabilities.cpp jvmtiRawMonitor.cpp jvmtiUtil.cpp jvmtiTrace.cpp \
|
||||
jvmtiCodeBlobEvents.cpp jvmtiEnv.cpp jvmtiRedefineClasses.cpp jvmtiEnvBase.cpp jvmtiEnvThreadState.cpp \
|
||||
jvmtiTagMap.cpp jvmtiEventController.cpp evmCompat.cpp jvmtiEnter.xsl jvmtiExport.cpp
|
||||
jvmtiTagMap.cpp jvmtiEventController.cpp evmCompat.cpp jvmtiEnter.xsl jvmtiExport.cpp \
|
||||
jvmtiClassFileReconstituter.cpp
|
||||
endif
|
||||
|
||||
ifeq ($(INCLUDE_FPROF), false)
|
||||
|
@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2013
|
||||
|
||||
HS_MAJOR_VER=25
|
||||
HS_MINOR_VER=0
|
||||
HS_BUILD_NUMBER=24
|
||||
HS_BUILD_NUMBER=26
|
||||
|
||||
JDK_MAJOR_VER=1
|
||||
JDK_MINOR_VER=8
|
||||
|
@ -1,98 +0,0 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
|
||||
# Make sure the variable JAVA_HOME is set before running this script.
|
||||
|
||||
set -u
|
||||
|
||||
|
||||
if [ $# != 2 ]; then
|
||||
echo "Usage : $0 Build_Options Location"
|
||||
echo "Build Options : debug or optimized or basicdebug or basic or clean"
|
||||
echo "Location : specify any workspace which has gamma sources"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Just in case:
|
||||
case ${JAVA_HOME} in
|
||||
/*) true;;
|
||||
?*) JAVA_HOME=`( cd $JAVA_HOME; pwd )`;;
|
||||
esac
|
||||
|
||||
case `uname -m` in
|
||||
i386|i486|i586|i686)
|
||||
mach=i386
|
||||
;;
|
||||
x86_64)
|
||||
mach=amd64
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported machine: " `uname -m`
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "${JAVA_HOME}" = "" -o ! -d "${JAVA_HOME}" -o ! -d ${JAVA_HOME}/jre/lib/${mach} ]; then
|
||||
echo "JAVA_HOME needs to be set to a valid JDK path"
|
||||
echo "ksh : export JAVA_HOME=/net/tetrasparc/export/gobi/JDK1.2_fcs_V/linux"
|
||||
echo "csh : setenv JAVA_HOME /net/tetrasparc/export/gobi/JDK1.2_fcs_V/linux"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
LD_LIBRARY_PATH=${JAVA_HOME}/jre/lib/`uname -p`:\
|
||||
${JAVA_HOME}/jre/lib/`uname -p`/native_threads:${LD_LIBRARY_PATH-.}
|
||||
|
||||
# This is necessary as long as we are using the old launcher
|
||||
# with the new distribution format:
|
||||
CLASSPATH=${JAVA_HOME}/jre/lib/rt.jar:${CLASSPATH-.}
|
||||
|
||||
|
||||
for gm in gmake gnumake
|
||||
do
|
||||
if [ "${GNUMAKE-}" != "" ]; then break; fi
|
||||
($gm --version >/dev/null) 2>/dev/null && GNUMAKE=$gm
|
||||
done
|
||||
: ${GNUMAKE:?'Cannot locate the gnumake program. Stop.'}
|
||||
|
||||
|
||||
echo "### ENVIRONMENT SETTINGS:"
|
||||
export JAVA_HOME ; echo "JAVA_HOME=$JAVA_HOME"
|
||||
export LD_LIBRARY_PATH ; echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
|
||||
export CLASSPATH ; echo "CLASSPATH=$CLASSPATH"
|
||||
export GNUMAKE ; echo "GNUMAKE=$GNUMAKE"
|
||||
echo "###"
|
||||
|
||||
Build_Options=$1
|
||||
Location=$2
|
||||
|
||||
case ${Location} in
|
||||
/*) true;;
|
||||
?*) Location=`(cd ${Location}; pwd)`;;
|
||||
esac
|
||||
|
||||
echo \
|
||||
${GNUMAKE} -f ${Location}/make/linux/Makefile $Build_Options GAMMADIR=${Location}
|
||||
${GNUMAKE} -f ${Location}/make/linux/Makefile $Build_Options GAMMADIR=${Location}
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -183,6 +183,19 @@ $(SIMPLE_DIRS):
|
||||
# literal "$(GAMMADIR)/" suitable for inclusion in a Makefile.
|
||||
gamma-path=$(subst $(GAMMADIR),\$$(GAMMADIR),$(call $(1),$(HS_COMMON_SRC)/$(2)))
|
||||
|
||||
# This bit is needed to enable local rebuilds.
|
||||
# Unless the makefile itself sets LP64, any environmental
|
||||
# setting of LP64 will interfere with the build.
|
||||
LP64_SETTING/32 = LP64 = \#empty
|
||||
LP64_SETTING/64 = LP64 = 1
|
||||
|
||||
DATA_MODE/i486 = 32
|
||||
DATA_MODE/sparc = 32
|
||||
DATA_MODE/sparcv9 = 64
|
||||
DATA_MODE/amd64 = 64
|
||||
|
||||
DATA_MODE = $(DATA_MODE/$(BUILDARCH))
|
||||
|
||||
flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
|
||||
@echo Creating $@ ...
|
||||
$(QUIETLY) ( \
|
||||
@ -205,6 +218,7 @@ flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
|
||||
echo "HOTSPOT_BUILD_USER = $(HOTSPOT_BUILD_USER)"; \
|
||||
echo "HOTSPOT_VM_DISTRO = $(HOTSPOT_VM_DISTRO)"; \
|
||||
echo "OPENJDK = $(OPENJDK)"; \
|
||||
echo "$(LP64_SETTING/$(DATA_MODE))"; \
|
||||
echo; \
|
||||
echo "# Used for platform dispatching"; \
|
||||
echo "TARGET_DEFINES = -DTARGET_OS_FAMILY_\$$(Platform_os_family)"; \
|
||||
|
@ -131,6 +131,7 @@ SUNWprivate_1.1 {
|
||||
JVM_GetEnclosingMethodInfo;
|
||||
JVM_GetFieldAnnotations;
|
||||
JVM_GetFieldIxModifiers;
|
||||
JVM_GetFieldTypeAnnotations;
|
||||
JVM_GetHostName;
|
||||
JVM_GetInheritedAccessControlContext;
|
||||
JVM_GetInterfaceVersion;
|
||||
@ -152,6 +153,7 @@ SUNWprivate_1.1 {
|
||||
JVM_GetMethodIxSignatureUTF;
|
||||
JVM_GetMethodParameterAnnotations;
|
||||
JVM_GetMethodParameters;
|
||||
JVM_GetMethodTypeAnnotations;
|
||||
JVM_GetPrimitiveArrayElement;
|
||||
JVM_GetProtectionDomain;
|
||||
JVM_GetSockName;
|
||||
|
@ -131,6 +131,7 @@ SUNWprivate_1.1 {
|
||||
JVM_GetEnclosingMethodInfo;
|
||||
JVM_GetFieldAnnotations;
|
||||
JVM_GetFieldIxModifiers;
|
||||
JVM_GetFieldTypeAnnotations;
|
||||
JVM_GetHostName;
|
||||
JVM_GetInheritedAccessControlContext;
|
||||
JVM_GetInterfaceVersion;
|
||||
@ -152,6 +153,7 @@ SUNWprivate_1.1 {
|
||||
JVM_GetMethodIxSignatureUTF;
|
||||
JVM_GetMethodParameterAnnotations;
|
||||
JVM_GetMethodParameters;
|
||||
JVM_GetMethodTypeAnnotations;
|
||||
JVM_GetPrimitiveArrayElement;
|
||||
JVM_GetProtectionDomain;
|
||||
JVM_GetSockName;
|
||||
|
@ -1,127 +0,0 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
|
||||
# Make sure the variable JAVA_HOME is set before running this script.
|
||||
|
||||
set -u
|
||||
|
||||
|
||||
usage() {
|
||||
(
|
||||
echo "Usage : $0 [-sb | -sbfast] config ws_path"
|
||||
echo ""
|
||||
echo "Where:"
|
||||
echo " -sb ::= enable source browser info generation for"
|
||||
echo " all configs during compilation"
|
||||
echo ""
|
||||
echo " -sbfast ::= enable source browser info generation for"
|
||||
echo " all configs without compilation"
|
||||
echo ""
|
||||
echo " config ::= debug | debug1 | debugcore"
|
||||
echo " fastdebug | fastdebug1 | fastdebugcore"
|
||||
echo " jvmg | jvmg1 | jvmgcore"
|
||||
echo " optimized | optimized1 | optimizedcore"
|
||||
echo " profiled | profiled1 | profiledcore"
|
||||
echo " product | product1 | productcore"
|
||||
echo ""
|
||||
echo " ws_path ::= path to HotSpot workspace"
|
||||
) >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# extract possible options
|
||||
options=""
|
||||
if [ $# -gt 2 ]; then
|
||||
case "$1" in
|
||||
-sb)
|
||||
options="CFLAGS_BROWSE=-xsb"
|
||||
shift
|
||||
;;
|
||||
-sbfast)
|
||||
options="CFLAGS_BROWSE=-xsbfast"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: '$1'" >&2
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# should be just two args left at this point
|
||||
if [ $# != 2 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
# Just in case:
|
||||
case ${JAVA_HOME} in
|
||||
/*) true;;
|
||||
?*) JAVA_HOME=`( cd $JAVA_HOME; pwd )`;;
|
||||
esac
|
||||
|
||||
if [ "${JAVA_HOME}" = "" -o ! -d "${JAVA_HOME}" -o ! -d ${JAVA_HOME}/jre/lib/`uname -p` ]; then
|
||||
echo "JAVA_HOME needs to be set to a valid JDK path"
|
||||
echo "ksh : export JAVA_HOME=/net/tetrasparc/export/gobi/JDK1.2_fcs_V/solaris"
|
||||
echo "csh : setenv JAVA_HOME /net/tetrasparc/export/gobi/JDK1.2_fcs_V/solaris"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
LD_LIBRARY_PATH=${JAVA_HOME}/jre/lib/`uname -p`:\
|
||||
${JAVA_HOME}/jre/lib/`uname -p`/native_threads:${LD_LIBRARY_PATH-.}
|
||||
|
||||
# This is necessary as long as we are using the old launcher
|
||||
# with the new distribution format:
|
||||
CLASSPATH=${JAVA_HOME}/jre/lib/rt.jar:${CLASSPATH-.}
|
||||
|
||||
|
||||
for gm in gmake gnumake
|
||||
do
|
||||
if [ "${GNUMAKE-}" != "" ]; then break; fi
|
||||
($gm --version >/dev/null) 2>/dev/null && GNUMAKE=$gm
|
||||
done
|
||||
: ${GNUMAKE:?'Cannot locate the gnumake program. Stop.'}
|
||||
|
||||
|
||||
echo "### ENVIRONMENT SETTINGS:"
|
||||
export JAVA_HOME ; echo "JAVA_HOME=$JAVA_HOME"
|
||||
export LD_LIBRARY_PATH ; echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
|
||||
export CLASSPATH ; echo "CLASSPATH=$CLASSPATH"
|
||||
export GNUMAKE ; echo "GNUMAKE=$GNUMAKE"
|
||||
echo "###"
|
||||
|
||||
config=$1
|
||||
ws_path=$2
|
||||
|
||||
case ${ws_path} in
|
||||
/*) true;;
|
||||
?*) ws_path=`(cd ${ws_path}; pwd)`;;
|
||||
esac
|
||||
|
||||
echo \
|
||||
${GNUMAKE} -f ${ws_path}/make/solaris/Makefile \
|
||||
$config GAMMADIR=${ws_path} $options
|
||||
${GNUMAKE} -f ${ws_path}/make/solaris/Makefile \
|
||||
$config GAMMADIR=${ws_path} $options
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -176,6 +176,19 @@ $(SIMPLE_DIRS):
|
||||
# literal "$(GAMMADIR)/" suitable for inclusion in a Makefile.
|
||||
gamma-path=$(subst $(GAMMADIR),\$$(GAMMADIR),$(call $(1),$(HS_COMMON_SRC)/$(2)))
|
||||
|
||||
# This bit is needed to enable local rebuilds.
|
||||
# Unless the makefile itself sets LP64, any environmental
|
||||
# setting of LP64 will interfere with the build.
|
||||
LP64_SETTING/32 = LP64 = \#empty
|
||||
LP64_SETTING/64 = LP64 = 1
|
||||
|
||||
DATA_MODE/i486 = 32
|
||||
DATA_MODE/sparc = 32
|
||||
DATA_MODE/sparcv9 = 64
|
||||
DATA_MODE/amd64 = 64
|
||||
|
||||
DATA_MODE = $(DATA_MODE/$(BUILDARCH))
|
||||
|
||||
flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
|
||||
@echo Creating $@ ...
|
||||
$(QUIETLY) ( \
|
||||
|
@ -131,6 +131,7 @@ SUNWprivate_1.1 {
|
||||
JVM_GetEnclosingMethodInfo;
|
||||
JVM_GetFieldAnnotations;
|
||||
JVM_GetFieldIxModifiers;
|
||||
JVM_GetFieldTypeAnnotations;
|
||||
JVM_GetHostName;
|
||||
JVM_GetInheritedAccessControlContext;
|
||||
JVM_GetInterfaceVersion;
|
||||
@ -152,6 +153,7 @@ SUNWprivate_1.1 {
|
||||
JVM_GetMethodIxSignatureUTF;
|
||||
JVM_GetMethodParameterAnnotations;
|
||||
JVM_GetMethodParameters;
|
||||
JVM_GetMethodTypeAnnotations;
|
||||
JVM_GetPrimitiveArrayElement;
|
||||
JVM_GetProtectionDomain;
|
||||
JVM_GetSockName;
|
||||
|
@ -110,8 +110,6 @@ VARIANT_TEXT=Server
|
||||
!endif
|
||||
!elseif "$(Variant)" == "tiered"
|
||||
VARIANT_TEXT=Tiered
|
||||
!elseif "$(Variant)" == "kernel"
|
||||
VARIANT_TEXT=Kernel
|
||||
!endif
|
||||
|
||||
#########################################################################
|
||||
@ -305,9 +303,9 @@ $(variantDir)\local.make: checks
|
||||
checks: checkVariant checkWorkSpace checkSA
|
||||
|
||||
checkVariant:
|
||||
@ if "$(Variant)"=="" echo Need to specify "Variant=[tiered|compiler2|compiler1|kernel|core]" && false
|
||||
@ if "$(Variant)" NEQ "tiered" if "$(Variant)" NEQ "compiler2" if "$(Variant)" NEQ "compiler1" if "$(Variant)" NEQ "kernel" if "$(Variant)" NEQ "core" \
|
||||
echo Need to specify "Variant=[tiered|compiler2|compiler1|kernel|core]" && false
|
||||
@ if "$(Variant)"=="" echo Need to specify "Variant=[tiered|compiler2|compiler1|core]" && false
|
||||
@ if "$(Variant)" NEQ "tiered" if "$(Variant)" NEQ "compiler2" if "$(Variant)" NEQ "compiler1" if "$(Variant)" NEQ "core" \
|
||||
echo Need to specify "Variant=[tiered|compiler2|compiler1|core]" && false
|
||||
|
||||
checkWorkSpace:
|
||||
@ if "$(WorkSpace)"=="" echo Need to specify "WorkSpace=..." && false
|
||||
|
@ -148,7 +148,7 @@ echo HotSpotJDKDist=%HotSpotJDKDist%
|
||||
|
||||
REM This is now safe to do.
|
||||
:copyfiles
|
||||
for /D %%i in (compiler1, compiler2, tiered, core, kernel) do (
|
||||
for /D %%i in (compiler1, compiler2, tiered, core) do (
|
||||
if NOT EXIST %HotSpotBuildSpace%\%%i\generated mkdir %HotSpotBuildSpace%\%%i\generated
|
||||
copy %HotSpotWorkSpace%\make\windows\projectfiles\%%i\* %HotSpotBuildSpace%\%%i\generated > NUL
|
||||
)
|
||||
@ -156,7 +156,7 @@ copy %HotSpotWorkSpace%\make\windows\projectfiles\%%i\* %HotSpotBuildSpace%\%%i\
|
||||
REM force regneration of ProjectFile
|
||||
if exist %ProjectFile% del %ProjectFile%
|
||||
|
||||
for /D %%i in (compiler1, compiler2, tiered, core, kernel) do (
|
||||
for /D %%i in (compiler1, compiler2, tiered, core) do (
|
||||
echo -- %%i --
|
||||
echo # Generated file! > %HotSpotBuildSpace%\%%i\local.make
|
||||
echo # Changing a variable below and then deleting %ProjectFile% will cause >> %HotSpotBuildSpace%\%%i\local.make
|
||||
|
@ -221,13 +221,6 @@ LD_FLAGS = /SAFESEH $(LD_FLAGS)
|
||||
!endif
|
||||
!endif
|
||||
|
||||
# Compile for space above time.
|
||||
!if "$(Variant)" == "kernel"
|
||||
PRODUCT_OPT_OPTION = /O1 /Oy-
|
||||
FASTDEBUG_OPT_OPTION = /O1 /Oy-
|
||||
DEBUG_OPT_OPTION = /Od
|
||||
!endif
|
||||
|
||||
# If NO_OPTIMIZATIONS is defined in the environment, turn everything off
|
||||
!ifdef NO_OPTIMIZATIONS
|
||||
PRODUCT_OPT_OPTION = $(DEBUG_OPT_OPTION)
|
||||
|
@ -51,13 +51,6 @@ HS_BUILD_ID=$(HS_BUILD_VER)
|
||||
# Force resources to be rebuilt every time
|
||||
$(Res_Files): FORCE
|
||||
|
||||
# Kernel doesn't need exported vtbl symbols.
|
||||
!if "$(Variant)" == "kernel"
|
||||
$(AOUT): $(Res_Files) $(Obj_Files)
|
||||
$(LD) @<<
|
||||
$(LD_FLAGS) /out:$@ /implib:$*.lib $(Obj_Files) $(Res_Files)
|
||||
<<
|
||||
!else
|
||||
vm.def: $(Obj_Files)
|
||||
sh $(WorkSpace)/make/windows/build_vm_def.sh
|
||||
|
||||
@ -65,7 +58,6 @@ $(AOUT): $(Res_Files) $(Obj_Files) vm.def
|
||||
$(LD) @<<
|
||||
$(LD_FLAGS) /out:$@ /implib:$*.lib /def:vm.def $(Obj_Files) $(Res_Files)
|
||||
<<
|
||||
!endif
|
||||
!if "$(MT)" != ""
|
||||
# The previous link command created a .manifest file that we want to
|
||||
# insert into the linked artifact so we do not need to track it
|
||||
|
@ -89,12 +89,8 @@ STACK_SIZE=
|
||||
# AsyncGetCallTrace is not supported on IA64 yet
|
||||
AGCT_EXPORT=
|
||||
!else
|
||||
!if "$(Variant)" == "kernel"
|
||||
AGCT_EXPORT=
|
||||
!else
|
||||
AGCT_EXPORT=/export:AsyncGetCallTrace
|
||||
!endif
|
||||
!endif
|
||||
|
||||
# If you modify exports below please do the corresponding changes in
|
||||
# src/share/tools/ProjectCreator/WinGammaPlatformVC7.java
|
||||
|
@ -1,27 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# 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 ../local.make
|
||||
|
||||
!include $(HOTSPOTWORKSPACE)/make/windows/projectfiles/common/Makefile
|
@ -1,7 +0,0 @@
|
||||
;
|
||||
; This .DEF file is a placeholder for one which is automatically
|
||||
; generated during the build process. See
|
||||
; make\windows\build_vm_def.sh and
|
||||
; make\windows\makefiles\projectcreator.make (esp. the "-prelink"
|
||||
; options).
|
||||
;
|
@ -1,29 +0,0 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "vm"=.\vm.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
@ -51,6 +51,16 @@ RangeCheckStub::RangeCheckStub(CodeEmitInfo* info, LIR_Opr index,
|
||||
void RangeCheckStub::emit_code(LIR_Assembler* ce) {
|
||||
__ bind(_entry);
|
||||
|
||||
if (_info->deoptimize_on_exception()) {
|
||||
address a = Runtime1::entry_for(Runtime1::predicate_failed_trap_id);
|
||||
__ call(a, relocInfo::runtime_call_type);
|
||||
__ delayed()->nop();
|
||||
ce->add_call_info_here(_info);
|
||||
ce->verify_oop_map(_info);
|
||||
debug_only(__ should_not_reach_here());
|
||||
return;
|
||||
}
|
||||
|
||||
if (_index->is_register()) {
|
||||
__ mov(_index->as_register(), G4);
|
||||
} else {
|
||||
@ -64,11 +74,22 @@ void RangeCheckStub::emit_code(LIR_Assembler* ce) {
|
||||
__ delayed()->nop();
|
||||
ce->add_call_info_here(_info);
|
||||
ce->verify_oop_map(_info);
|
||||
#ifdef ASSERT
|
||||
__ should_not_reach_here();
|
||||
#endif
|
||||
debug_only(__ should_not_reach_here());
|
||||
}
|
||||
|
||||
PredicateFailedStub::PredicateFailedStub(CodeEmitInfo* info) {
|
||||
_info = new CodeEmitInfo(info);
|
||||
}
|
||||
|
||||
void PredicateFailedStub::emit_code(LIR_Assembler* ce) {
|
||||
__ bind(_entry);
|
||||
address a = Runtime1::entry_for(Runtime1::predicate_failed_trap_id);
|
||||
__ call(a, relocInfo::runtime_call_type);
|
||||
__ delayed()->nop();
|
||||
ce->add_call_info_here(_info);
|
||||
ce->verify_oop_map(_info);
|
||||
debug_only(__ should_not_reach_here());
|
||||
}
|
||||
|
||||
void CounterOverflowStub::emit_code(LIR_Assembler* ce) {
|
||||
__ bind(_entry);
|
||||
@ -99,10 +120,17 @@ void DivByZeroStub::emit_code(LIR_Assembler* ce) {
|
||||
|
||||
|
||||
void ImplicitNullCheckStub::emit_code(LIR_Assembler* ce) {
|
||||
address a;
|
||||
if (_info->deoptimize_on_exception()) {
|
||||
// Deoptimize, do not throw the exception, because it is probably wrong to do it here.
|
||||
a = Runtime1::entry_for(Runtime1::predicate_failed_trap_id);
|
||||
} else {
|
||||
a = Runtime1::entry_for(Runtime1::throw_null_pointer_exception_id);
|
||||
}
|
||||
|
||||
ce->compilation()->implicit_exception_table()->append(_offset, __ offset());
|
||||
__ bind(_entry);
|
||||
__ call(Runtime1::entry_for(Runtime1::throw_null_pointer_exception_id),
|
||||
relocInfo::runtime_call_type);
|
||||
__ call(a, relocInfo::runtime_call_type);
|
||||
__ delayed()->nop();
|
||||
ce->add_call_info_here(_info);
|
||||
ce->verify_oop_map(_info);
|
||||
|
@ -3361,6 +3361,45 @@ void LIR_Assembler::get_thread(LIR_Opr result_reg) {
|
||||
__ mov(G2_thread, result_reg->as_register());
|
||||
}
|
||||
|
||||
#ifdef ASSERT
|
||||
// emit run-time assertion
|
||||
void LIR_Assembler::emit_assert(LIR_OpAssert* op) {
|
||||
assert(op->code() == lir_assert, "must be");
|
||||
|
||||
if (op->in_opr1()->is_valid()) {
|
||||
assert(op->in_opr2()->is_valid(), "both operands must be valid");
|
||||
comp_op(op->condition(), op->in_opr1(), op->in_opr2(), op);
|
||||
} else {
|
||||
assert(op->in_opr2()->is_illegal(), "both operands must be illegal");
|
||||
assert(op->condition() == lir_cond_always, "no other conditions allowed");
|
||||
}
|
||||
|
||||
Label ok;
|
||||
if (op->condition() != lir_cond_always) {
|
||||
Assembler::Condition acond;
|
||||
switch (op->condition()) {
|
||||
case lir_cond_equal: acond = Assembler::equal; break;
|
||||
case lir_cond_notEqual: acond = Assembler::notEqual; break;
|
||||
case lir_cond_less: acond = Assembler::less; break;
|
||||
case lir_cond_lessEqual: acond = Assembler::lessEqual; break;
|
||||
case lir_cond_greaterEqual: acond = Assembler::greaterEqual; break;
|
||||
case lir_cond_greater: acond = Assembler::greater; break;
|
||||
case lir_cond_aboveEqual: acond = Assembler::greaterEqualUnsigned; break;
|
||||
case lir_cond_belowEqual: acond = Assembler::lessEqualUnsigned; break;
|
||||
default: ShouldNotReachHere();
|
||||
};
|
||||
__ br(acond, false, Assembler::pt, ok);
|
||||
__ delayed()->nop();
|
||||
}
|
||||
if (op->halt()) {
|
||||
const char* str = __ code_string(op->msg());
|
||||
__ stop(str);
|
||||
} else {
|
||||
breakpoint();
|
||||
}
|
||||
__ bind(ok);
|
||||
}
|
||||
#endif
|
||||
|
||||
void LIR_Assembler::peephole(LIR_List* lir) {
|
||||
LIR_OpList* inst = lir->instructions_list();
|
||||
|
@ -324,7 +324,7 @@ void LIRGenerator::store_stack_parameter (LIR_Opr item, ByteSize offset_from_sp)
|
||||
|
||||
void LIRGenerator::do_StoreIndexed(StoreIndexed* x) {
|
||||
assert(x->is_pinned(),"");
|
||||
bool needs_range_check = true;
|
||||
bool needs_range_check = x->compute_needs_range_check();
|
||||
bool use_length = x->length() != NULL;
|
||||
bool obj_store = x->elt_type() == T_ARRAY || x->elt_type() == T_OBJECT;
|
||||
bool needs_store_check = obj_store && (x->value()->as_Constant() == NULL ||
|
||||
@ -339,12 +339,9 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) {
|
||||
array.load_item();
|
||||
index.load_nonconstant();
|
||||
|
||||
if (use_length) {
|
||||
needs_range_check = x->compute_needs_range_check();
|
||||
if (needs_range_check) {
|
||||
length.set_instruction(x->length());
|
||||
length.load_item();
|
||||
}
|
||||
if (use_length && needs_range_check) {
|
||||
length.set_instruction(x->length());
|
||||
length.load_item();
|
||||
}
|
||||
if (needs_store_check) {
|
||||
value.load_item();
|
||||
|
@ -987,6 +987,25 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
|
||||
break;
|
||||
#endif // INCLUDE_ALL_GCS
|
||||
|
||||
case predicate_failed_trap_id:
|
||||
{
|
||||
__ set_info("predicate_failed_trap", dont_gc_arguments);
|
||||
OopMap* oop_map = save_live_registers(sasm);
|
||||
|
||||
int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, predicate_failed_trap));
|
||||
|
||||
oop_maps = new OopMapSet();
|
||||
oop_maps->add_gc_map(call_offset, oop_map);
|
||||
|
||||
DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob();
|
||||
assert(deopt_blob != NULL, "deoptimization blob must have been created");
|
||||
restore_live_registers(sasm);
|
||||
__ restore();
|
||||
__ br(Assembler::always, false, Assembler::pt, deopt_blob->unpack_with_reexecution(), relocInfo::runtime_call_type);
|
||||
__ delayed()->nop();
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
{ __ set_info("unimplemented entry", dont_gc_arguments);
|
||||
__ save_frame(0);
|
||||
|
@ -101,6 +101,15 @@ RangeCheckStub::RangeCheckStub(CodeEmitInfo* info, LIR_Opr index,
|
||||
|
||||
void RangeCheckStub::emit_code(LIR_Assembler* ce) {
|
||||
__ bind(_entry);
|
||||
if (_info->deoptimize_on_exception()) {
|
||||
address a = Runtime1::entry_for(Runtime1::predicate_failed_trap_id);
|
||||
__ call(RuntimeAddress(a));
|
||||
ce->add_call_info_here(_info);
|
||||
ce->verify_oop_map(_info);
|
||||
debug_only(__ should_not_reach_here());
|
||||
return;
|
||||
}
|
||||
|
||||
// pass the array index on stack because all registers must be preserved
|
||||
if (_index->is_cpu_register()) {
|
||||
ce->store_parameter(_index->as_register(), 0);
|
||||
@ -115,9 +124,22 @@ void RangeCheckStub::emit_code(LIR_Assembler* ce) {
|
||||
}
|
||||
__ call(RuntimeAddress(Runtime1::entry_for(stub_id)));
|
||||
ce->add_call_info_here(_info);
|
||||
ce->verify_oop_map(_info);
|
||||
debug_only(__ should_not_reach_here());
|
||||
}
|
||||
|
||||
PredicateFailedStub::PredicateFailedStub(CodeEmitInfo* info) {
|
||||
_info = new CodeEmitInfo(info);
|
||||
}
|
||||
|
||||
void PredicateFailedStub::emit_code(LIR_Assembler* ce) {
|
||||
__ bind(_entry);
|
||||
address a = Runtime1::entry_for(Runtime1::predicate_failed_trap_id);
|
||||
__ call(RuntimeAddress(a));
|
||||
ce->add_call_info_here(_info);
|
||||
ce->verify_oop_map(_info);
|
||||
debug_only(__ should_not_reach_here());
|
||||
}
|
||||
|
||||
void DivByZeroStub::emit_code(LIR_Assembler* ce) {
|
||||
if (_offset != -1) {
|
||||
@ -414,10 +436,19 @@ void DeoptimizeStub::emit_code(LIR_Assembler* ce) {
|
||||
|
||||
|
||||
void ImplicitNullCheckStub::emit_code(LIR_Assembler* ce) {
|
||||
address a;
|
||||
if (_info->deoptimize_on_exception()) {
|
||||
// Deoptimize, do not throw the exception, because it is probably wrong to do it here.
|
||||
a = Runtime1::entry_for(Runtime1::predicate_failed_trap_id);
|
||||
} else {
|
||||
a = Runtime1::entry_for(Runtime1::throw_null_pointer_exception_id);
|
||||
}
|
||||
|
||||
ce->compilation()->implicit_exception_table()->append(_offset, __ offset());
|
||||
__ bind(_entry);
|
||||
__ call(RuntimeAddress(Runtime1::entry_for(Runtime1::throw_null_pointer_exception_id)));
|
||||
__ call(RuntimeAddress(a));
|
||||
ce->add_call_info_here(_info);
|
||||
ce->verify_oop_map(_info);
|
||||
debug_only(__ should_not_reach_here());
|
||||
}
|
||||
|
||||
|
@ -3755,6 +3755,44 @@ void LIR_Assembler::volatile_move_op(LIR_Opr src, LIR_Opr dest, BasicType type,
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ASSERT
|
||||
// emit run-time assertion
|
||||
void LIR_Assembler::emit_assert(LIR_OpAssert* op) {
|
||||
assert(op->code() == lir_assert, "must be");
|
||||
|
||||
if (op->in_opr1()->is_valid()) {
|
||||
assert(op->in_opr2()->is_valid(), "both operands must be valid");
|
||||
comp_op(op->condition(), op->in_opr1(), op->in_opr2(), op);
|
||||
} else {
|
||||
assert(op->in_opr2()->is_illegal(), "both operands must be illegal");
|
||||
assert(op->condition() == lir_cond_always, "no other conditions allowed");
|
||||
}
|
||||
|
||||
Label ok;
|
||||
if (op->condition() != lir_cond_always) {
|
||||
Assembler::Condition acond = Assembler::zero;
|
||||
switch (op->condition()) {
|
||||
case lir_cond_equal: acond = Assembler::equal; break;
|
||||
case lir_cond_notEqual: acond = Assembler::notEqual; break;
|
||||
case lir_cond_less: acond = Assembler::less; break;
|
||||
case lir_cond_lessEqual: acond = Assembler::lessEqual; break;
|
||||
case lir_cond_greaterEqual: acond = Assembler::greaterEqual;break;
|
||||
case lir_cond_greater: acond = Assembler::greater; break;
|
||||
case lir_cond_belowEqual: acond = Assembler::belowEqual; break;
|
||||
case lir_cond_aboveEqual: acond = Assembler::aboveEqual; break;
|
||||
default: ShouldNotReachHere();
|
||||
}
|
||||
__ jcc(acond, ok);
|
||||
}
|
||||
if (op->halt()) {
|
||||
const char* str = __ code_string(op->msg());
|
||||
__ stop(str);
|
||||
} else {
|
||||
breakpoint();
|
||||
}
|
||||
__ bind(ok);
|
||||
}
|
||||
#endif
|
||||
|
||||
void LIR_Assembler::membar() {
|
||||
// QQQ sparc TSO uses this,
|
||||
|
@ -263,7 +263,7 @@ void LIRGenerator::store_stack_parameter (LIR_Opr item, ByteSize offset_from_sp)
|
||||
|
||||
void LIRGenerator::do_StoreIndexed(StoreIndexed* x) {
|
||||
assert(x->is_pinned(),"");
|
||||
bool needs_range_check = true;
|
||||
bool needs_range_check = x->compute_needs_range_check();
|
||||
bool use_length = x->length() != NULL;
|
||||
bool obj_store = x->elt_type() == T_ARRAY || x->elt_type() == T_OBJECT;
|
||||
bool needs_store_check = obj_store && (x->value()->as_Constant() == NULL ||
|
||||
@ -278,12 +278,10 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) {
|
||||
array.load_item();
|
||||
index.load_nonconstant();
|
||||
|
||||
if (use_length) {
|
||||
needs_range_check = x->compute_needs_range_check();
|
||||
if (needs_range_check) {
|
||||
length.set_instruction(x->length());
|
||||
length.load_item();
|
||||
}
|
||||
if (use_length && needs_range_check) {
|
||||
length.set_instruction(x->length());
|
||||
length.load_item();
|
||||
|
||||
}
|
||||
if (needs_store_check) {
|
||||
value.load_item();
|
||||
|
@ -675,7 +675,8 @@ void FpuStackAllocator::handle_op2(LIR_Op2* op2) {
|
||||
switch (op2->code()) {
|
||||
case lir_cmp:
|
||||
case lir_cmp_fd2i:
|
||||
case lir_ucmp_fd2i: {
|
||||
case lir_ucmp_fd2i:
|
||||
case lir_assert: {
|
||||
assert(left->is_fpu_register(), "invalid LIR");
|
||||
assert(right->is_fpu_register(), "invalid LIR");
|
||||
|
||||
|
@ -1807,6 +1807,24 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
|
||||
break;
|
||||
#endif // INCLUDE_ALL_GCS
|
||||
|
||||
case predicate_failed_trap_id:
|
||||
{
|
||||
StubFrame f(sasm, "predicate_failed_trap", dont_gc_arguments);
|
||||
|
||||
OopMap* map = save_live_registers(sasm, 1);
|
||||
|
||||
int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, predicate_failed_trap));
|
||||
oop_maps = new OopMapSet();
|
||||
oop_maps->add_gc_map(call_offset, map);
|
||||
restore_live_registers(sasm);
|
||||
__ leave();
|
||||
DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob();
|
||||
assert(deopt_blob != NULL, "deoptimization blob must have been created");
|
||||
|
||||
__ jump(RuntimeAddress(deopt_blob->unpack_with_reexecution()));
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
{ StubFrame f(sasm, "unimplemented entry", dont_gc_arguments);
|
||||
__ movptr(rax, (int)id);
|
||||
|
@ -1299,25 +1299,8 @@ address InterpreterGenerator::generate_native_entry(bool synchronized) {
|
||||
__ push(rdx);
|
||||
#endif // _LP64
|
||||
|
||||
// Either restore the MXCSR register after returning from the JNI Call
|
||||
// or verify that it wasn't changed.
|
||||
if (VM_Version::supports_sse()) {
|
||||
if (RestoreMXCSROnJNICalls) {
|
||||
__ ldmxcsr(ExternalAddress(StubRoutines::addr_mxcsr_std()));
|
||||
}
|
||||
else if (CheckJNICalls ) {
|
||||
__ call(RuntimeAddress(StubRoutines::x86::verify_mxcsr_entry()));
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef _LP64
|
||||
// Either restore the x87 floating pointer control word after returning
|
||||
// from the JNI call or verify that it wasn't changed.
|
||||
if (CheckJNICalls) {
|
||||
__ call(RuntimeAddress(StubRoutines::x86::verify_fpu_cntrl_wrd_entry()));
|
||||
}
|
||||
#endif // _LP64
|
||||
|
||||
// Verify or restore cpu control state after JNI call
|
||||
__ restore_cpu_control_state_after_jni();
|
||||
|
||||
// change thread state
|
||||
__ movl(Address(thread, JavaThread::thread_state_offset()), _thread_in_native_trans);
|
||||
|
@ -4765,6 +4765,31 @@ void MacroAssembler::verify_FPU(int stack_depth, const char* s) {
|
||||
pop_CPU_state();
|
||||
}
|
||||
|
||||
void MacroAssembler::restore_cpu_control_state_after_jni() {
|
||||
// Either restore the MXCSR register after returning from the JNI Call
|
||||
// or verify that it wasn't changed (with -Xcheck:jni flag).
|
||||
if (VM_Version::supports_sse()) {
|
||||
if (RestoreMXCSROnJNICalls) {
|
||||
ldmxcsr(ExternalAddress(StubRoutines::addr_mxcsr_std()));
|
||||
} else if (CheckJNICalls) {
|
||||
call(RuntimeAddress(StubRoutines::x86::verify_mxcsr_entry()));
|
||||
}
|
||||
}
|
||||
if (VM_Version::supports_avx()) {
|
||||
// Clear upper bits of YMM registers to avoid SSE <-> AVX transition penalty.
|
||||
vzeroupper();
|
||||
}
|
||||
|
||||
#ifndef _LP64
|
||||
// Either restore the x87 floating pointer control word after returning
|
||||
// from the JNI call or verify that it wasn't changed.
|
||||
if (CheckJNICalls) {
|
||||
call(RuntimeAddress(StubRoutines::x86::verify_fpu_cntrl_wrd_entry()));
|
||||
}
|
||||
#endif // _LP64
|
||||
}
|
||||
|
||||
|
||||
void MacroAssembler::load_klass(Register dst, Register src) {
|
||||
#ifdef _LP64
|
||||
if (UseCompressedKlassPointers) {
|
||||
@ -5759,6 +5784,8 @@ void MacroAssembler::string_compare(Register str1, Register str2,
|
||||
addptr(result, stride2);
|
||||
subl(cnt2, stride2);
|
||||
jccb(Assembler::notZero, COMPARE_WIDE_VECTORS_LOOP);
|
||||
// clean upper bits of YMM registers
|
||||
vzeroupper();
|
||||
|
||||
// compare wide vectors tail
|
||||
bind(COMPARE_WIDE_TAIL);
|
||||
@ -5772,6 +5799,8 @@ void MacroAssembler::string_compare(Register str1, Register str2,
|
||||
|
||||
// Identifies the mismatching (higher or lower)16-bytes in the 32-byte vectors.
|
||||
bind(VECTOR_NOT_EQUAL);
|
||||
// clean upper bits of YMM registers
|
||||
vzeroupper();
|
||||
lea(str1, Address(str1, result, scale));
|
||||
lea(str2, Address(str2, result, scale));
|
||||
jmp(COMPARE_16_CHARS);
|
||||
@ -6028,6 +6057,10 @@ void MacroAssembler::char_arrays_equals(bool is_array_equ, Register ary1, Regist
|
||||
|
||||
// That's it
|
||||
bind(DONE);
|
||||
if (UseAVX >= 2) {
|
||||
// clean upper bits of YMM registers
|
||||
vzeroupper();
|
||||
}
|
||||
}
|
||||
|
||||
void MacroAssembler::generate_fill(BasicType t, bool aligned,
|
||||
@ -6157,6 +6190,10 @@ void MacroAssembler::generate_fill(BasicType t, bool aligned,
|
||||
vmovdqu(Address(to, 0), xtmp);
|
||||
addptr(to, 32);
|
||||
subl(count, 8 << shift);
|
||||
|
||||
BIND(L_check_fill_8_bytes);
|
||||
// clean upper bits of YMM registers
|
||||
vzeroupper();
|
||||
} else {
|
||||
// Fill 32-byte chunks
|
||||
pshufd(xtmp, xtmp, 0);
|
||||
@ -6180,8 +6217,9 @@ void MacroAssembler::generate_fill(BasicType t, bool aligned,
|
||||
addptr(to, 32);
|
||||
subl(count, 8 << shift);
|
||||
jcc(Assembler::greaterEqual, L_fill_32_bytes_loop);
|
||||
|
||||
BIND(L_check_fill_8_bytes);
|
||||
}
|
||||
BIND(L_check_fill_8_bytes);
|
||||
addl(count, 8 << shift);
|
||||
jccb(Assembler::zero, L_exit);
|
||||
jmpb(L_fill_8_bytes);
|
||||
@ -6316,6 +6354,10 @@ void MacroAssembler::encode_iso_array(Register src, Register dst, Register len,
|
||||
jccb(Assembler::lessEqual, L_copy_16_chars);
|
||||
|
||||
bind(L_copy_16_chars_exit);
|
||||
if (UseAVX >= 2) {
|
||||
// clean upper bits of YMM registers
|
||||
vzeroupper();
|
||||
}
|
||||
subptr(len, 8);
|
||||
jccb(Assembler::greater, L_copy_8_chars_exit);
|
||||
|
||||
|
@ -582,6 +582,9 @@ class MacroAssembler: public Assembler {
|
||||
// only if +VerifyFPU
|
||||
void verify_FPU(int stack_depth, const char* s = "illegal FPU state");
|
||||
|
||||
// Verify or restore cpu control state after JNI call
|
||||
void restore_cpu_control_state_after_jni();
|
||||
|
||||
// prints msg, dumps registers and stops execution
|
||||
void stop(const char* msg);
|
||||
|
||||
|
@ -2065,6 +2065,9 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||
|
||||
__ call(RuntimeAddress(native_func));
|
||||
|
||||
// Verify or restore cpu control state after JNI call
|
||||
__ restore_cpu_control_state_after_jni();
|
||||
|
||||
// WARNING - on Windows Java Natives use pascal calling convention and pop the
|
||||
// arguments off of the stack. We could just re-adjust the stack pointer here
|
||||
// and continue to do SP relative addressing but we instead switch to FP
|
||||
|
@ -2315,16 +2315,8 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||
|
||||
__ call(RuntimeAddress(native_func));
|
||||
|
||||
// Either restore the MXCSR register after returning from the JNI Call
|
||||
// or verify that it wasn't changed.
|
||||
if (RestoreMXCSROnJNICalls) {
|
||||
__ ldmxcsr(ExternalAddress(StubRoutines::x86::mxcsr_std()));
|
||||
|
||||
}
|
||||
else if (CheckJNICalls ) {
|
||||
__ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::x86::verify_mxcsr_entry())));
|
||||
}
|
||||
|
||||
// Verify or restore cpu control state after JNI call
|
||||
__ restore_cpu_control_state_after_jni();
|
||||
|
||||
// Unpack native results.
|
||||
switch (ret_type) {
|
||||
|
@ -835,6 +835,11 @@ class StubGenerator: public StubCodeGenerator {
|
||||
__ BIND(L_copy_64_bytes);
|
||||
__ subl(qword_count, 8);
|
||||
__ jcc(Assembler::greaterEqual, L_copy_64_bytes_loop);
|
||||
|
||||
if (UseUnalignedLoadStores && (UseAVX >= 2)) {
|
||||
// clean upper bits of YMM registers
|
||||
__ vzeroupper();
|
||||
}
|
||||
__ addl(qword_count, 8);
|
||||
__ jccb(Assembler::zero, L_exit);
|
||||
//
|
||||
|
@ -1331,6 +1331,10 @@ class StubGenerator: public StubCodeGenerator {
|
||||
}
|
||||
__ addptr(qword_count, 4);
|
||||
__ BIND(L_end);
|
||||
if (UseAVX >= 2) {
|
||||
// clean upper bits of YMM registers
|
||||
__ vzeroupper();
|
||||
}
|
||||
} else {
|
||||
// Copy 32-bytes per iteration
|
||||
__ BIND(L_loop);
|
||||
@ -1404,6 +1408,10 @@ class StubGenerator: public StubCodeGenerator {
|
||||
}
|
||||
__ subptr(qword_count, 4);
|
||||
__ BIND(L_end);
|
||||
if (UseAVX >= 2) {
|
||||
// clean upper bits of YMM registers
|
||||
__ vzeroupper();
|
||||
}
|
||||
} else {
|
||||
// Copy 32-bytes per iteration
|
||||
__ BIND(L_loop);
|
||||
|
@ -1080,22 +1080,8 @@ address InterpreterGenerator::generate_native_entry(bool synchronized) {
|
||||
|
||||
// result potentially in rdx:rax or ST0
|
||||
|
||||
// Either restore the MXCSR register after returning from the JNI Call
|
||||
// or verify that it wasn't changed.
|
||||
if (VM_Version::supports_sse()) {
|
||||
if (RestoreMXCSROnJNICalls) {
|
||||
__ ldmxcsr(ExternalAddress(StubRoutines::addr_mxcsr_std()));
|
||||
}
|
||||
else if (CheckJNICalls ) {
|
||||
__ call(RuntimeAddress(StubRoutines::x86::verify_mxcsr_entry()));
|
||||
}
|
||||
}
|
||||
|
||||
// Either restore the x87 floating pointer control word after returning
|
||||
// from the JNI call or verify that it wasn't changed.
|
||||
if (CheckJNICalls) {
|
||||
__ call(RuntimeAddress(StubRoutines::x86::verify_fpu_cntrl_wrd_entry()));
|
||||
}
|
||||
// Verify or restore cpu control state after JNI call
|
||||
__ restore_cpu_control_state_after_jni();
|
||||
|
||||
// save potential result in ST(0) & rdx:rax
|
||||
// (if result handler is the T_FLOAT or T_DOUBLE handler, result must be in ST0 -
|
||||
|
@ -1079,15 +1079,8 @@ address InterpreterGenerator::generate_native_entry(bool synchronized) {
|
||||
__ call(rax);
|
||||
// result potentially in rax or xmm0
|
||||
|
||||
// Depending on runtime options, either restore the MXCSR
|
||||
// register after returning from the JNI Call or verify that
|
||||
// it wasn't changed during -Xcheck:jni.
|
||||
if (RestoreMXCSROnJNICalls) {
|
||||
__ ldmxcsr(ExternalAddress(StubRoutines::x86::mxcsr_std()));
|
||||
}
|
||||
else if (CheckJNICalls) {
|
||||
__ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::x86::verify_mxcsr_entry())));
|
||||
}
|
||||
// Verify or restore cpu control state after JNI call
|
||||
__ restore_cpu_control_state_after_jni();
|
||||
|
||||
// NOTE: The order of these pushes is known to frame::interpreter_frame_result
|
||||
// in order to extract the result of a method call. If the order of these
|
||||
|
@ -228,10 +228,16 @@ static jlong *float_signflip_pool = double_quadword(&fp_signmask_pool[3*2], CON
|
||||
static jlong *double_signflip_pool = double_quadword(&fp_signmask_pool[4*2], CONST64(0x8000000000000000), CONST64(0x8000000000000000));
|
||||
|
||||
// Offset hacking within calls.
|
||||
static int pre_call_FPU_size() {
|
||||
if (Compile::current()->in_24_bit_fp_mode())
|
||||
return 6; // fldcw
|
||||
return 0;
|
||||
static int pre_call_resets_size() {
|
||||
int size = 0;
|
||||
Compile* C = Compile::current();
|
||||
if (C->in_24_bit_fp_mode()) {
|
||||
size += 6; // fldcw
|
||||
}
|
||||
if (C->max_vector_size() > 16) {
|
||||
size += 3; // vzeroupper
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
static int preserve_SP_size() {
|
||||
@ -242,21 +248,21 @@ static int preserve_SP_size() {
|
||||
// from the start of the call to the point where the return address
|
||||
// will point.
|
||||
int MachCallStaticJavaNode::ret_addr_offset() {
|
||||
int offset = 5 + pre_call_FPU_size(); // 5 bytes from start of call to where return address points
|
||||
int offset = 5 + pre_call_resets_size(); // 5 bytes from start of call to where return address points
|
||||
if (_method_handle_invoke)
|
||||
offset += preserve_SP_size();
|
||||
return offset;
|
||||
}
|
||||
|
||||
int MachCallDynamicJavaNode::ret_addr_offset() {
|
||||
return 10 + pre_call_FPU_size(); // 10 bytes from start of call to where return address points
|
||||
return 10 + pre_call_resets_size(); // 10 bytes from start of call to where return address points
|
||||
}
|
||||
|
||||
static int sizeof_FFree_Float_Stack_All = -1;
|
||||
|
||||
int MachCallRuntimeNode::ret_addr_offset() {
|
||||
assert(sizeof_FFree_Float_Stack_All != -1, "must have been emitted already");
|
||||
return sizeof_FFree_Float_Stack_All + 5 + pre_call_FPU_size();
|
||||
return sizeof_FFree_Float_Stack_All + 5 + pre_call_resets_size();
|
||||
}
|
||||
|
||||
// Indicate if the safepoint node needs the polling page as an input.
|
||||
@ -272,7 +278,7 @@ bool SafePointNode::needs_polling_address_input() {
|
||||
// The address of the call instruction needs to be 4-byte aligned to
|
||||
// ensure that it does not span a cache line so that it can be patched.
|
||||
int CallStaticJavaDirectNode::compute_padding(int current_offset) const {
|
||||
current_offset += pre_call_FPU_size(); // skip fldcw, if any
|
||||
current_offset += pre_call_resets_size(); // skip fldcw, if any
|
||||
current_offset += 1; // skip call opcode byte
|
||||
return round_to(current_offset, alignment_required()) - current_offset;
|
||||
}
|
||||
@ -280,7 +286,7 @@ int CallStaticJavaDirectNode::compute_padding(int current_offset) const {
|
||||
// The address of the call instruction needs to be 4-byte aligned to
|
||||
// ensure that it does not span a cache line so that it can be patched.
|
||||
int CallStaticJavaHandleNode::compute_padding(int current_offset) const {
|
||||
current_offset += pre_call_FPU_size(); // skip fldcw, if any
|
||||
current_offset += pre_call_resets_size(); // skip fldcw, if any
|
||||
current_offset += preserve_SP_size(); // skip mov rbp, rsp
|
||||
current_offset += 1; // skip call opcode byte
|
||||
return round_to(current_offset, alignment_required()) - current_offset;
|
||||
@ -289,7 +295,7 @@ int CallStaticJavaHandleNode::compute_padding(int current_offset) const {
|
||||
// The address of the call instruction needs to be 4-byte aligned to
|
||||
// ensure that it does not span a cache line so that it can be patched.
|
||||
int CallDynamicJavaDirectNode::compute_padding(int current_offset) const {
|
||||
current_offset += pre_call_FPU_size(); // skip fldcw, if any
|
||||
current_offset += pre_call_resets_size(); // skip fldcw, if any
|
||||
current_offset += 5; // skip MOV instruction
|
||||
current_offset += 1; // skip call opcode byte
|
||||
return round_to(current_offset, alignment_required()) - current_offset;
|
||||
@ -583,16 +589,20 @@ void MachEpilogNode::format( PhaseRegAlloc *ra_, outputStream* st ) const {
|
||||
// Remove two words for return addr and rbp,
|
||||
framesize -= 2*wordSize;
|
||||
|
||||
if( C->in_24_bit_fp_mode() ) {
|
||||
if (C->max_vector_size() > 16) {
|
||||
st->print("VZEROUPPER");
|
||||
st->cr(); st->print("\t");
|
||||
}
|
||||
if (C->in_24_bit_fp_mode()) {
|
||||
st->print("FLDCW standard control word");
|
||||
st->cr(); st->print("\t");
|
||||
}
|
||||
if( framesize ) {
|
||||
if (framesize) {
|
||||
st->print("ADD ESP,%d\t# Destroy frame",framesize);
|
||||
st->cr(); st->print("\t");
|
||||
}
|
||||
st->print_cr("POPL EBP"); st->print("\t");
|
||||
if( do_polling() && C->is_method_compilation() ) {
|
||||
if (do_polling() && C->is_method_compilation()) {
|
||||
st->print("TEST PollPage,EAX\t! Poll Safepoint");
|
||||
st->cr(); st->print("\t");
|
||||
}
|
||||
@ -602,8 +612,14 @@ void MachEpilogNode::format( PhaseRegAlloc *ra_, outputStream* st ) const {
|
||||
void MachEpilogNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
|
||||
Compile *C = ra_->C;
|
||||
|
||||
if (C->max_vector_size() > 16) {
|
||||
// Clear upper bits of YMM registers when current compiled code uses
|
||||
// wide vectors to avoid AVX <-> SSE transition penalty during call.
|
||||
MacroAssembler masm(&cbuf);
|
||||
masm.vzeroupper();
|
||||
}
|
||||
// If method set FPU control word, restore to standard control word
|
||||
if( C->in_24_bit_fp_mode() ) {
|
||||
if (C->in_24_bit_fp_mode()) {
|
||||
MacroAssembler masm(&cbuf);
|
||||
masm.fldcw(ExternalAddress(StubRoutines::addr_fpu_cntrl_wrd_std()));
|
||||
}
|
||||
@ -615,12 +631,11 @@ void MachEpilogNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
|
||||
|
||||
// Note that VerifyStackAtCalls' Majik cookie does not change the frame size popped here
|
||||
|
||||
if( framesize >= 128 ) {
|
||||
if (framesize >= 128) {
|
||||
emit_opcode(cbuf, 0x81); // add SP, #framesize
|
||||
emit_rm(cbuf, 0x3, 0x00, ESP_enc);
|
||||
emit_d32(cbuf, framesize);
|
||||
}
|
||||
else if( framesize ) {
|
||||
} else if (framesize) {
|
||||
emit_opcode(cbuf, 0x83); // add SP, #framesize
|
||||
emit_rm(cbuf, 0x3, 0x00, ESP_enc);
|
||||
emit_d8(cbuf, framesize);
|
||||
@ -628,7 +643,7 @@ void MachEpilogNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
|
||||
|
||||
emit_opcode(cbuf, 0x58 | EBP_enc);
|
||||
|
||||
if( do_polling() && C->is_method_compilation() ) {
|
||||
if (do_polling() && C->is_method_compilation()) {
|
||||
cbuf.relocate(cbuf.insts_end(), relocInfo::poll_return_type, 0);
|
||||
emit_opcode(cbuf,0x85);
|
||||
emit_rm(cbuf, 0x0, EAX_enc, 0x5); // EAX
|
||||
@ -640,7 +655,8 @@ uint MachEpilogNode::size(PhaseRegAlloc *ra_) const {
|
||||
Compile *C = ra_->C;
|
||||
// If method set FPU control word, restore to standard control word
|
||||
int size = C->in_24_bit_fp_mode() ? 6 : 0;
|
||||
if( do_polling() && C->is_method_compilation() ) size += 6;
|
||||
if (C->max_vector_size() > 16) size += 3; // vzeroupper
|
||||
if (do_polling() && C->is_method_compilation()) size += 6;
|
||||
|
||||
int framesize = C->frame_slots() << LogBytesPerInt;
|
||||
assert((framesize & (StackAlignmentInBytes-1)) == 0, "frame size not aligned");
|
||||
@ -649,7 +665,7 @@ uint MachEpilogNode::size(PhaseRegAlloc *ra_) const {
|
||||
|
||||
size++; // popl rbp,
|
||||
|
||||
if( framesize >= 128 ) {
|
||||
if (framesize >= 128) {
|
||||
size += 6;
|
||||
} else {
|
||||
size += framesize ? 3 : 0;
|
||||
@ -1853,20 +1869,26 @@ encode %{
|
||||
%}
|
||||
|
||||
|
||||
enc_class pre_call_FPU %{
|
||||
enc_class pre_call_resets %{
|
||||
// If method sets FPU control word restore it here
|
||||
debug_only(int off0 = cbuf.insts_size());
|
||||
if( Compile::current()->in_24_bit_fp_mode() ) {
|
||||
MacroAssembler masm(&cbuf);
|
||||
masm.fldcw(ExternalAddress(StubRoutines::addr_fpu_cntrl_wrd_std()));
|
||||
if (ra_->C->in_24_bit_fp_mode()) {
|
||||
MacroAssembler _masm(&cbuf);
|
||||
__ fldcw(ExternalAddress(StubRoutines::addr_fpu_cntrl_wrd_std()));
|
||||
}
|
||||
if (ra_->C->max_vector_size() > 16) {
|
||||
// Clear upper bits of YMM registers when current compiled code uses
|
||||
// wide vectors to avoid AVX <-> SSE transition penalty during call.
|
||||
MacroAssembler _masm(&cbuf);
|
||||
__ vzeroupper();
|
||||
}
|
||||
debug_only(int off1 = cbuf.insts_size());
|
||||
assert(off1 - off0 == pre_call_FPU_size(), "correct size prediction");
|
||||
assert(off1 - off0 == pre_call_resets_size(), "correct size prediction");
|
||||
%}
|
||||
|
||||
enc_class post_call_FPU %{
|
||||
// If method sets FPU control word do it here also
|
||||
if( Compile::current()->in_24_bit_fp_mode() ) {
|
||||
if (Compile::current()->in_24_bit_fp_mode()) {
|
||||
MacroAssembler masm(&cbuf);
|
||||
masm.fldcw(ExternalAddress(StubRoutines::addr_fpu_cntrl_wrd_24()));
|
||||
}
|
||||
@ -1877,17 +1899,17 @@ encode %{
|
||||
// who we intended to call.
|
||||
cbuf.set_insts_mark();
|
||||
$$$emit8$primary;
|
||||
if ( !_method ) {
|
||||
if (!_method) {
|
||||
emit_d32_reloc(cbuf, ($meth$$method - (int)(cbuf.insts_end()) - 4),
|
||||
runtime_call_Relocation::spec(), RELOC_IMM32 );
|
||||
} else if(_optimized_virtual) {
|
||||
} else if (_optimized_virtual) {
|
||||
emit_d32_reloc(cbuf, ($meth$$method - (int)(cbuf.insts_end()) - 4),
|
||||
opt_virtual_call_Relocation::spec(), RELOC_IMM32 );
|
||||
} else {
|
||||
emit_d32_reloc(cbuf, ($meth$$method - (int)(cbuf.insts_end()) - 4),
|
||||
static_call_Relocation::spec(), RELOC_IMM32 );
|
||||
}
|
||||
if( _method ) { // Emit stub for static call
|
||||
if (_method) { // Emit stub for static call
|
||||
emit_java_to_interp(cbuf);
|
||||
}
|
||||
%}
|
||||
@ -12828,7 +12850,7 @@ instruct CallStaticJavaDirect(method meth) %{
|
||||
ins_cost(300);
|
||||
format %{ "CALL,static " %}
|
||||
opcode(0xE8); /* E8 cd */
|
||||
ins_encode( pre_call_FPU,
|
||||
ins_encode( pre_call_resets,
|
||||
Java_Static_Call( meth ),
|
||||
call_epilog,
|
||||
post_call_FPU );
|
||||
@ -12849,7 +12871,7 @@ instruct CallStaticJavaHandle(method meth, eBPRegP ebp_mh_SP_save) %{
|
||||
ins_cost(300);
|
||||
format %{ "CALL,static/MethodHandle " %}
|
||||
opcode(0xE8); /* E8 cd */
|
||||
ins_encode( pre_call_FPU,
|
||||
ins_encode( pre_call_resets,
|
||||
preserve_SP,
|
||||
Java_Static_Call( meth ),
|
||||
restore_SP,
|
||||
@ -12870,7 +12892,7 @@ instruct CallDynamicJavaDirect(method meth) %{
|
||||
format %{ "MOV EAX,(oop)-1\n\t"
|
||||
"CALL,dynamic" %}
|
||||
opcode(0xE8); /* E8 cd */
|
||||
ins_encode( pre_call_FPU,
|
||||
ins_encode( pre_call_resets,
|
||||
Java_Dynamic_Call( meth ),
|
||||
call_epilog,
|
||||
post_call_FPU );
|
||||
@ -12887,7 +12909,7 @@ instruct CallRuntimeDirect(method meth) %{
|
||||
format %{ "CALL,runtime " %}
|
||||
opcode(0xE8); /* E8 cd */
|
||||
// Use FFREEs to clear entries in float stack
|
||||
ins_encode( pre_call_FPU,
|
||||
ins_encode( pre_call_resets,
|
||||
FFree_Float_Stack_All,
|
||||
Java_To_Runtime( meth ),
|
||||
post_call_FPU );
|
||||
@ -12902,7 +12924,7 @@ instruct CallLeafDirect(method meth) %{
|
||||
ins_cost(300);
|
||||
format %{ "CALL_LEAF,runtime " %}
|
||||
opcode(0xE8); /* E8 cd */
|
||||
ins_encode( pre_call_FPU,
|
||||
ins_encode( pre_call_resets,
|
||||
FFree_Float_Stack_All,
|
||||
Java_To_Runtime( meth ),
|
||||
Verify_FPU_For_Leaf, post_call_FPU );
|
||||
|
@ -399,6 +399,9 @@ source %{
|
||||
static int preserve_SP_size() {
|
||||
return 3; // rex.w, op, rm(reg/reg)
|
||||
}
|
||||
static int clear_avx_size() {
|
||||
return (Compile::current()->max_vector_size() > 16) ? 3 : 0; // vzeroupper
|
||||
}
|
||||
|
||||
// !!!!! Special hack to get all types of calls to specify the byte offset
|
||||
// from the start of the call to the point where the return address
|
||||
@ -406,6 +409,7 @@ static int preserve_SP_size() {
|
||||
int MachCallStaticJavaNode::ret_addr_offset()
|
||||
{
|
||||
int offset = 5; // 5 bytes from start of call to where return address points
|
||||
offset += clear_avx_size();
|
||||
if (_method_handle_invoke)
|
||||
offset += preserve_SP_size();
|
||||
return offset;
|
||||
@ -413,11 +417,16 @@ int MachCallStaticJavaNode::ret_addr_offset()
|
||||
|
||||
int MachCallDynamicJavaNode::ret_addr_offset()
|
||||
{
|
||||
return 15; // 15 bytes from start of call to where return address points
|
||||
int offset = 15; // 15 bytes from start of call to where return address points
|
||||
offset += clear_avx_size();
|
||||
return offset;
|
||||
}
|
||||
|
||||
// In os_cpu .ad file
|
||||
// int MachCallRuntimeNode::ret_addr_offset()
|
||||
int MachCallRuntimeNode::ret_addr_offset() {
|
||||
int offset = 13; // movq r10,#addr; callq (r10)
|
||||
offset += clear_avx_size();
|
||||
return offset;
|
||||
}
|
||||
|
||||
// Indicate if the safepoint node needs the polling page as an input,
|
||||
// it does if the polling page is more than disp32 away.
|
||||
@ -434,6 +443,7 @@ bool SafePointNode::needs_polling_address_input()
|
||||
// ensure that it does not span a cache line so that it can be patched.
|
||||
int CallStaticJavaDirectNode::compute_padding(int current_offset) const
|
||||
{
|
||||
current_offset += clear_avx_size(); // skip vzeroupper
|
||||
current_offset += 1; // skip call opcode byte
|
||||
return round_to(current_offset, alignment_required()) - current_offset;
|
||||
}
|
||||
@ -443,6 +453,7 @@ int CallStaticJavaDirectNode::compute_padding(int current_offset) const
|
||||
int CallStaticJavaHandleNode::compute_padding(int current_offset) const
|
||||
{
|
||||
current_offset += preserve_SP_size(); // skip mov rbp, rsp
|
||||
current_offset += clear_avx_size(); // skip vzeroupper
|
||||
current_offset += 1; // skip call opcode byte
|
||||
return round_to(current_offset, alignment_required()) - current_offset;
|
||||
}
|
||||
@ -451,6 +462,7 @@ int CallStaticJavaHandleNode::compute_padding(int current_offset) const
|
||||
// ensure that it does not span a cache line so that it can be patched.
|
||||
int CallDynamicJavaDirectNode::compute_padding(int current_offset) const
|
||||
{
|
||||
current_offset += clear_avx_size(); // skip vzeroupper
|
||||
current_offset += 11; // skip movq instruction + call opcode byte
|
||||
return round_to(current_offset, alignment_required()) - current_offset;
|
||||
}
|
||||
@ -764,6 +776,11 @@ int MachPrologNode::reloc() const
|
||||
void MachEpilogNode::format(PhaseRegAlloc* ra_, outputStream* st) const
|
||||
{
|
||||
Compile* C = ra_->C;
|
||||
if (C->max_vector_size() > 16) {
|
||||
st->print("vzeroupper");
|
||||
st->cr(); st->print("\t");
|
||||
}
|
||||
|
||||
int framesize = C->frame_slots() << LogBytesPerInt;
|
||||
assert((framesize & (StackAlignmentInBytes-1)) == 0, "frame size not aligned");
|
||||
// Remove word for return adr already pushed
|
||||
@ -793,6 +810,13 @@ void MachEpilogNode::format(PhaseRegAlloc* ra_, outputStream* st) const
|
||||
void MachEpilogNode::emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const
|
||||
{
|
||||
Compile* C = ra_->C;
|
||||
if (C->max_vector_size() > 16) {
|
||||
// Clear upper bits of YMM registers when current compiled code uses
|
||||
// wide vectors to avoid AVX <-> SSE transition penalty during call.
|
||||
MacroAssembler _masm(&cbuf);
|
||||
__ vzeroupper();
|
||||
}
|
||||
|
||||
int framesize = C->frame_slots() << LogBytesPerInt;
|
||||
assert((framesize & (StackAlignmentInBytes-1)) == 0, "frame size not aligned");
|
||||
// Remove word for return adr already pushed
|
||||
@ -2008,6 +2032,25 @@ encode %{
|
||||
__ bind(miss);
|
||||
%}
|
||||
|
||||
enc_class clear_avx %{
|
||||
debug_only(int off0 = cbuf.insts_size());
|
||||
if (ra_->C->max_vector_size() > 16) {
|
||||
// Clear upper bits of YMM registers when current compiled code uses
|
||||
// wide vectors to avoid AVX <-> SSE transition penalty during call.
|
||||
MacroAssembler _masm(&cbuf);
|
||||
__ vzeroupper();
|
||||
}
|
||||
debug_only(int off1 = cbuf.insts_size());
|
||||
assert(off1 - off0 == clear_avx_size(), "correct size prediction");
|
||||
%}
|
||||
|
||||
enc_class Java_To_Runtime(method meth) %{
|
||||
// No relocation needed
|
||||
MacroAssembler _masm(&cbuf);
|
||||
__ mov64(r10, (int64_t) $meth$$method);
|
||||
__ call(r10);
|
||||
%}
|
||||
|
||||
enc_class Java_To_Interpreter(method meth)
|
||||
%{
|
||||
// CALL Java_To_Interpreter
|
||||
@ -11366,7 +11409,7 @@ instruct CallStaticJavaDirect(method meth) %{
|
||||
ins_cost(300);
|
||||
format %{ "call,static " %}
|
||||
opcode(0xE8); /* E8 cd */
|
||||
ins_encode(Java_Static_Call(meth), call_epilog);
|
||||
ins_encode(clear_avx, Java_Static_Call(meth), call_epilog);
|
||||
ins_pipe(pipe_slow);
|
||||
ins_alignment(4);
|
||||
%}
|
||||
@ -11384,7 +11427,7 @@ instruct CallStaticJavaHandle(method meth, rbp_RegP rbp_mh_SP_save) %{
|
||||
ins_cost(300);
|
||||
format %{ "call,static/MethodHandle " %}
|
||||
opcode(0xE8); /* E8 cd */
|
||||
ins_encode(preserve_SP,
|
||||
ins_encode(clear_avx, preserve_SP,
|
||||
Java_Static_Call(meth),
|
||||
restore_SP,
|
||||
call_epilog);
|
||||
@ -11403,7 +11446,7 @@ instruct CallDynamicJavaDirect(method meth)
|
||||
ins_cost(300);
|
||||
format %{ "movq rax, #Universe::non_oop_word()\n\t"
|
||||
"call,dynamic " %}
|
||||
ins_encode(Java_Dynamic_Call(meth), call_epilog);
|
||||
ins_encode(clear_avx, Java_Dynamic_Call(meth), call_epilog);
|
||||
ins_pipe(pipe_slow);
|
||||
ins_alignment(4);
|
||||
%}
|
||||
@ -11416,8 +11459,7 @@ instruct CallRuntimeDirect(method meth)
|
||||
|
||||
ins_cost(300);
|
||||
format %{ "call,runtime " %}
|
||||
opcode(0xE8); /* E8 cd */
|
||||
ins_encode(Java_To_Runtime(meth));
|
||||
ins_encode(clear_avx, Java_To_Runtime(meth));
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
||||
@ -11429,8 +11471,7 @@ instruct CallLeafDirect(method meth)
|
||||
|
||||
ins_cost(300);
|
||||
format %{ "call_leaf,runtime " %}
|
||||
opcode(0xE8); /* E8 cd */
|
||||
ins_encode(Java_To_Runtime(meth));
|
||||
ins_encode(clear_avx, Java_To_Runtime(meth));
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
||||
@ -11442,7 +11483,6 @@ instruct CallLeafNoFPDirect(method meth)
|
||||
|
||||
ins_cost(300);
|
||||
format %{ "call_leaf_nofp,runtime " %}
|
||||
opcode(0xE8); /* E8 cd */
|
||||
ins_encode(Java_To_Runtime(meth));
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
@ -167,20 +167,6 @@ julong os::physical_memory() {
|
||||
return Bsd::physical_memory();
|
||||
}
|
||||
|
||||
julong os::allocatable_physical_memory(julong size) {
|
||||
#ifdef _LP64
|
||||
return size;
|
||||
#else
|
||||
julong result = MIN2(size, (julong)3800*M);
|
||||
if (!is_allocatable(result)) {
|
||||
// See comments under solaris for alignment considerations
|
||||
julong reasonable_size = (julong)2*G - 2 * os::vm_page_size();
|
||||
result = MIN2(size, reasonable_size);
|
||||
}
|
||||
return result;
|
||||
#endif // _LP64
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// environment support
|
||||
|
||||
|
@ -194,20 +194,6 @@ julong os::physical_memory() {
|
||||
return Linux::physical_memory();
|
||||
}
|
||||
|
||||
julong os::allocatable_physical_memory(julong size) {
|
||||
#ifdef _LP64
|
||||
return size;
|
||||
#else
|
||||
julong result = MIN2(size, (julong)3800*M);
|
||||
if (!is_allocatable(result)) {
|
||||
// See comments under solaris for alignment considerations
|
||||
julong reasonable_size = (julong)2*G - 2 * os::vm_page_size();
|
||||
result = MIN2(size, reasonable_size);
|
||||
}
|
||||
return result;
|
||||
#endif // _LP64
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// environment support
|
||||
|
||||
@ -1811,13 +1797,15 @@ bool os::Linux::_stack_is_executable = false;
|
||||
class VM_LinuxDllLoad: public VM_Operation {
|
||||
private:
|
||||
const char *_filename;
|
||||
char *_ebuf;
|
||||
int _ebuflen;
|
||||
void *_lib;
|
||||
public:
|
||||
VM_LinuxDllLoad(const char *fn) :
|
||||
_filename(fn), _lib(NULL) {}
|
||||
VM_LinuxDllLoad(const char *fn, char *ebuf, int ebuflen) :
|
||||
_filename(fn), _ebuf(ebuf), _ebuflen(ebuflen), _lib(NULL) {}
|
||||
VMOp_Type type() const { return VMOp_LinuxDllLoad; }
|
||||
void doit() {
|
||||
_lib = os::Linux::dll_load_inner(_filename);
|
||||
_lib = os::Linux::dll_load_in_vmthread(_filename, _ebuf, _ebuflen);
|
||||
os::Linux::_stack_is_executable = true;
|
||||
}
|
||||
void* loaded_library() { return _lib; }
|
||||
@ -1865,13 +1853,13 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen)
|
||||
// This is for the case where the DLL has an static
|
||||
// constructor function that executes JNI code. We cannot
|
||||
// load such DLLs in the VMThread.
|
||||
result = ::dlopen(filename, RTLD_LAZY);
|
||||
result = os::Linux::dlopen_helper(filename, ebuf, ebuflen);
|
||||
}
|
||||
|
||||
ThreadInVMfromNative tiv(jt);
|
||||
debug_only(VMNativeEntryWrapper vew;)
|
||||
|
||||
VM_LinuxDllLoad op(filename);
|
||||
VM_LinuxDllLoad op(filename, ebuf, ebuflen);
|
||||
VMThread::execute(&op);
|
||||
if (LoadExecStackDllInVMThread) {
|
||||
result = op.loaded_library();
|
||||
@ -1883,7 +1871,7 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen)
|
||||
}
|
||||
|
||||
if (!load_attempted) {
|
||||
result = ::dlopen(filename, RTLD_LAZY);
|
||||
result = os::Linux::dlopen_helper(filename, ebuf, ebuflen);
|
||||
}
|
||||
|
||||
if (result != NULL) {
|
||||
@ -1892,11 +1880,6 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen)
|
||||
}
|
||||
|
||||
Elf32_Ehdr elf_head;
|
||||
|
||||
// Read system error message into ebuf
|
||||
// It may or may not be overwritten below
|
||||
::strncpy(ebuf, ::dlerror(), ebuflen-1);
|
||||
ebuf[ebuflen-1]='\0';
|
||||
int diag_msg_max_length=ebuflen-strlen(ebuf);
|
||||
char* diag_msg_buf=ebuf+strlen(ebuf);
|
||||
|
||||
@ -2039,10 +2022,19 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void * os::Linux::dll_load_inner(const char *filename) {
|
||||
void * os::Linux::dlopen_helper(const char *filename, char *ebuf, int ebuflen) {
|
||||
void * result = ::dlopen(filename, RTLD_LAZY);
|
||||
if (result == NULL) {
|
||||
::strncpy(ebuf, ::dlerror(), ebuflen - 1);
|
||||
ebuf[ebuflen-1] = '\0';
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void * os::Linux::dll_load_in_vmthread(const char *filename, char *ebuf, int ebuflen) {
|
||||
void * result = NULL;
|
||||
if (LoadExecStackDllInVMThread) {
|
||||
result = ::dlopen(filename, RTLD_LAZY);
|
||||
result = dlopen_helper(filename, ebuf, ebuflen);
|
||||
}
|
||||
|
||||
// Since 7019808, libjvm.so is linked with -noexecstack. If the VM loads a
|
||||
|
@ -95,7 +95,8 @@ class Linux {
|
||||
|
||||
public:
|
||||
static bool _stack_is_executable;
|
||||
static void *dll_load_inner(const char *name);
|
||||
static void *dlopen_helper(const char *name, char *ebuf, int ebuflen);
|
||||
static void *dll_load_in_vmthread(const char *name, char *ebuf, int ebuflen);
|
||||
|
||||
static void init_thread_fpu_state();
|
||||
static int get_fpu_control_word();
|
||||
|
@ -199,7 +199,7 @@ case "$MODE" in
|
||||
rm -f $GDBSCR
|
||||
;;
|
||||
dbx)
|
||||
$DBX -s $MYDIR/.dbxrc $LAUNCHER $JPARAMS
|
||||
$DBX -s $HOME/.dbxrc $LAUNCHER $JPARMS
|
||||
;;
|
||||
valgrind)
|
||||
echo Warning: Defaulting to 16Mb heap to make Valgrind run faster, use -Xmx for larger heap
|
||||
|
@ -188,4 +188,66 @@ void os::Posix::print_uname_info(outputStream* st) {
|
||||
st->cr();
|
||||
}
|
||||
|
||||
bool os::has_allocatable_memory_limit(julong* limit) {
|
||||
struct rlimit rlim;
|
||||
int getrlimit_res = getrlimit(RLIMIT_AS, &rlim);
|
||||
// if there was an error when calling getrlimit, assume that there is no limitation
|
||||
// on virtual memory.
|
||||
bool result;
|
||||
if ((getrlimit_res != 0) || (rlim.rlim_cur == RLIM_INFINITY)) {
|
||||
result = false;
|
||||
} else {
|
||||
*limit = (julong)rlim.rlim_cur;
|
||||
result = true;
|
||||
}
|
||||
#ifdef _LP64
|
||||
return result;
|
||||
#else
|
||||
// arbitrary virtual space limit for 32 bit Unices found by testing. If
|
||||
// getrlimit above returned a limit, bound it with this limit. Otherwise
|
||||
// directly use it.
|
||||
const julong max_virtual_limit = (julong)3800*M;
|
||||
if (result) {
|
||||
*limit = MIN2(*limit, max_virtual_limit);
|
||||
} else {
|
||||
*limit = max_virtual_limit;
|
||||
}
|
||||
|
||||
// bound by actually allocatable memory. The algorithm uses two bounds, an
|
||||
// upper and a lower limit. The upper limit is the current highest amount of
|
||||
// memory that could not be allocated, the lower limit is the current highest
|
||||
// amount of memory that could be allocated.
|
||||
// The algorithm iteratively refines the result by halving the difference
|
||||
// between these limits, updating either the upper limit (if that value could
|
||||
// not be allocated) or the lower limit (if the that value could be allocated)
|
||||
// until the difference between these limits is "small".
|
||||
|
||||
// the minimum amount of memory we care about allocating.
|
||||
const julong min_allocation_size = M;
|
||||
|
||||
julong upper_limit = *limit;
|
||||
|
||||
// first check a few trivial cases
|
||||
if (is_allocatable(upper_limit) || (upper_limit <= min_allocation_size)) {
|
||||
*limit = upper_limit;
|
||||
} else if (!is_allocatable(min_allocation_size)) {
|
||||
// we found that not even min_allocation_size is allocatable. Return it
|
||||
// anyway. There is no point to search for a better value any more.
|
||||
*limit = min_allocation_size;
|
||||
} else {
|
||||
// perform the binary search.
|
||||
julong lower_limit = min_allocation_size;
|
||||
while ((upper_limit - lower_limit) > min_allocation_size) {
|
||||
julong temp_limit = ((upper_limit - lower_limit) / 2) + lower_limit;
|
||||
temp_limit = align_size_down_(temp_limit, min_allocation_size);
|
||||
if (is_allocatable(temp_limit)) {
|
||||
lower_limit = temp_limit;
|
||||
} else {
|
||||
upper_limit = temp_limit;
|
||||
}
|
||||
}
|
||||
*limit = lower_limit;
|
||||
}
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
@ -476,24 +476,6 @@ julong os::physical_memory() {
|
||||
return Solaris::physical_memory();
|
||||
}
|
||||
|
||||
julong os::allocatable_physical_memory(julong size) {
|
||||
#ifdef _LP64
|
||||
return size;
|
||||
#else
|
||||
julong result = MIN2(size, (julong)3835*M);
|
||||
if (!is_allocatable(result)) {
|
||||
// Memory allocations will be aligned but the alignment
|
||||
// is not known at this point. Alignments will
|
||||
// be at most to LargePageSizeInBytes. Protect
|
||||
// allocations from alignments up to illegal
|
||||
// values. If at this point 2G is illegal.
|
||||
julong reasonable_size = (julong)2*G - 2 * LargePageSizeInBytes;
|
||||
result = MIN2(size, reasonable_size);
|
||||
}
|
||||
return result;
|
||||
#endif
|
||||
}
|
||||
|
||||
static hrtime_t first_hrtime = 0;
|
||||
static const hrtime_t hrtime_hz = 1000*1000*1000;
|
||||
const int LOCK_BUSY = 1;
|
||||
|
@ -686,12 +686,17 @@ julong os::physical_memory() {
|
||||
return win32::physical_memory();
|
||||
}
|
||||
|
||||
julong os::allocatable_physical_memory(julong size) {
|
||||
bool os::has_allocatable_memory_limit(julong* limit) {
|
||||
MEMORYSTATUSEX ms;
|
||||
ms.dwLength = sizeof(ms);
|
||||
GlobalMemoryStatusEx(&ms);
|
||||
#ifdef _LP64
|
||||
return size;
|
||||
*limit = (julong)ms.ullAvailVirtual;
|
||||
return true;
|
||||
#else
|
||||
// Limit to 1400m because of the 2gb address space wall
|
||||
return MIN2(size, (julong)1400*M);
|
||||
*limit = MIN2((julong)1400*M, (julong)ms.ullAvailVirtual);
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -3768,6 +3773,8 @@ extern "C" {
|
||||
}
|
||||
}
|
||||
|
||||
static jint initSock();
|
||||
|
||||
// this is called _after_ the global arguments have been parsed
|
||||
jint os::init_2(void) {
|
||||
// Allocate a single page and mark it as readable for safepoint polling
|
||||
@ -3898,6 +3905,10 @@ jint os::init_2(void) {
|
||||
if (!success) UseNUMAInterleaving = false;
|
||||
}
|
||||
|
||||
if (initSock() != JNI_OK) {
|
||||
return JNI_ERR;
|
||||
}
|
||||
|
||||
return JNI_OK;
|
||||
}
|
||||
|
||||
@ -4894,42 +4905,24 @@ LONG WINAPI os::win32::serialize_fault_filter(struct _EXCEPTION_POINTERS* e) {
|
||||
// We don't build a headless jre for Windows
|
||||
bool os::is_headless_jre() { return false; }
|
||||
|
||||
|
||||
typedef CRITICAL_SECTION mutex_t;
|
||||
#define mutexInit(m) InitializeCriticalSection(m)
|
||||
#define mutexDestroy(m) DeleteCriticalSection(m)
|
||||
#define mutexLock(m) EnterCriticalSection(m)
|
||||
#define mutexUnlock(m) LeaveCriticalSection(m)
|
||||
|
||||
static bool sock_initialized = FALSE;
|
||||
static mutex_t sockFnTableMutex;
|
||||
|
||||
static void initSock() {
|
||||
static jint initSock() {
|
||||
WSADATA wsadata;
|
||||
|
||||
if (!os::WinSock2Dll::WinSock2Available()) {
|
||||
jio_fprintf(stderr, "Could not load Winsock 2 (error: %d)\n",
|
||||
jio_fprintf(stderr, "Could not load Winsock (error: %d)\n",
|
||||
::GetLastError());
|
||||
return;
|
||||
return JNI_ERR;
|
||||
}
|
||||
if (sock_initialized == TRUE) return;
|
||||
|
||||
::mutexInit(&sockFnTableMutex);
|
||||
::mutexLock(&sockFnTableMutex);
|
||||
if (os::WinSock2Dll::WSAStartup(MAKEWORD(1,1), &wsadata) != 0) {
|
||||
jio_fprintf(stderr, "Could not initialize Winsock\n");
|
||||
if (os::WinSock2Dll::WSAStartup(MAKEWORD(2,2), &wsadata) != 0) {
|
||||
jio_fprintf(stderr, "Could not initialize Winsock (error: %d)\n",
|
||||
::GetLastError());
|
||||
return JNI_ERR;
|
||||
}
|
||||
sock_initialized = TRUE;
|
||||
::mutexUnlock(&sockFnTableMutex);
|
||||
return JNI_OK;
|
||||
}
|
||||
|
||||
struct hostent* os::get_host_by_name(char* name) {
|
||||
if (!sock_initialized) {
|
||||
initSock();
|
||||
}
|
||||
if (!os::WinSock2Dll::WinSock2Available()) {
|
||||
return NULL;
|
||||
}
|
||||
return (struct hostent*)os::WinSock2Dll::gethostbyname(name);
|
||||
}
|
||||
|
||||
|
@ -55,20 +55,6 @@ encode %{
|
||||
// adding a syntax that specifies the sizes of fields in an order,
|
||||
// so that the adlc can build the emit functions automagically
|
||||
|
||||
enc_class Java_To_Runtime(method meth) %{
|
||||
// No relocation needed
|
||||
|
||||
// movq r10, <meth>
|
||||
emit_opcode(cbuf, Assembler::REX_WB);
|
||||
emit_opcode(cbuf, 0xB8 | (R10_enc - 8));
|
||||
emit_d64(cbuf, (int64_t) $meth$$method);
|
||||
|
||||
// call (r10)
|
||||
emit_opcode(cbuf, Assembler::REX_B);
|
||||
emit_opcode(cbuf, 0xFF);
|
||||
emit_opcode(cbuf, 0xD0 | (R10_enc - 8));
|
||||
%}
|
||||
|
||||
%}
|
||||
|
||||
|
||||
@ -76,8 +62,4 @@ encode %{
|
||||
|
||||
source %{
|
||||
|
||||
int MachCallRuntimeNode::ret_addr_offset() {
|
||||
return 13; // movq r10,#addr; callq (r10)
|
||||
}
|
||||
|
||||
%}
|
||||
|
@ -46,7 +46,7 @@ define_pd_global(uintx, SurvivorRatio, 8);
|
||||
|
||||
define_pd_global(uintx, JVMInvokeMethodSlack, 8192);
|
||||
|
||||
// Used on 64 bit platforms for UseCompressedOops base address or CDS
|
||||
// Used on 64 bit platforms for UseCompressedOops base address
|
||||
define_pd_global(uintx, HeapBaseMinAddress, 2*G);
|
||||
|
||||
#endif // OS_CPU_BSD_X86_VM_GLOBALS_BSD_X86_HPP
|
||||
|
@ -41,7 +41,7 @@ define_pd_global(intx, VMThreadStackSize, 512);
|
||||
define_pd_global(intx, CompilerThreadStackSize, 0);
|
||||
define_pd_global(uintx, JVMInvokeMethodSlack, 8192);
|
||||
|
||||
// Used on 64 bit platforms for UseCompressedOops base address or CDS
|
||||
// Used on 64 bit platforms for UseCompressedOops base address
|
||||
define_pd_global(uintx, HeapBaseMinAddress, 2*G);
|
||||
|
||||
#endif // OS_CPU_BSD_ZERO_VM_GLOBALS_BSD_ZERO_HPP
|
||||
|
@ -33,7 +33,7 @@
|
||||
define_pd_global(uintx, JVMInvokeMethodSlack, 12288);
|
||||
define_pd_global(intx, CompilerThreadStackSize, 0);
|
||||
|
||||
// Used on 64 bit platforms for UseCompressedOops base address or CDS
|
||||
// Used on 64 bit platforms for UseCompressedOops base address
|
||||
define_pd_global(uintx, HeapBaseMinAddress, CONST64(4)*G);
|
||||
|
||||
#endif // OS_CPU_LINUX_SPARC_VM_GLOBALS_LINUX_SPARC_HPP
|
||||
|
@ -44,7 +44,7 @@ define_pd_global(intx, CompilerThreadStackSize, 0);
|
||||
|
||||
define_pd_global(uintx,JVMInvokeMethodSlack, 8192);
|
||||
|
||||
// Used on 64 bit platforms for UseCompressedOops base address or CDS
|
||||
// Used on 64 bit platforms for UseCompressedOops base address
|
||||
define_pd_global(uintx,HeapBaseMinAddress, 2*G);
|
||||
|
||||
#endif // OS_CPU_LINUX_X86_VM_GLOBALS_LINUX_X86_HPP
|
||||
|
@ -55,20 +55,6 @@ encode %{
|
||||
// adding a syntax that specifies the sizes of fields in an order,
|
||||
// so that the adlc can build the emit functions automagically
|
||||
|
||||
enc_class Java_To_Runtime(method meth) %{
|
||||
// No relocation needed
|
||||
|
||||
// movq r10, <meth>
|
||||
emit_opcode(cbuf, Assembler::REX_WB);
|
||||
emit_opcode(cbuf, 0xB8 | (R10_enc - 8));
|
||||
emit_d64(cbuf, (int64_t) $meth$$method);
|
||||
|
||||
// call (r10)
|
||||
emit_opcode(cbuf, Assembler::REX_B);
|
||||
emit_opcode(cbuf, 0xFF);
|
||||
emit_opcode(cbuf, 0xD0 | (R10_enc - 8));
|
||||
%}
|
||||
|
||||
%}
|
||||
|
||||
|
||||
@ -76,8 +62,4 @@ encode %{
|
||||
|
||||
source %{
|
||||
|
||||
int MachCallRuntimeNode::ret_addr_offset() {
|
||||
return 13; // movq r10,#addr; callq (r10)
|
||||
}
|
||||
|
||||
%}
|
||||
|
@ -41,7 +41,7 @@ define_pd_global(intx, VMThreadStackSize, 512);
|
||||
define_pd_global(intx, CompilerThreadStackSize, 0);
|
||||
define_pd_global(uintx, JVMInvokeMethodSlack, 8192);
|
||||
|
||||
// Used on 64 bit platforms for UseCompressedOops base address or CDS
|
||||
// Used on 64 bit platforms for UseCompressedOops base address
|
||||
define_pd_global(uintx, HeapBaseMinAddress, 2*G);
|
||||
|
||||
#endif // OS_CPU_LINUX_ZERO_VM_GLOBALS_LINUX_ZERO_HPP
|
||||
|
@ -33,7 +33,7 @@
|
||||
define_pd_global(uintx, JVMInvokeMethodSlack, 12288);
|
||||
define_pd_global(intx, CompilerThreadStackSize, 0);
|
||||
|
||||
// Used on 64 bit platforms for UseCompressedOops base address or CDS
|
||||
// Used on 64 bit platforms for UseCompressedOops base address
|
||||
#ifdef _LP64
|
||||
define_pd_global(uintx, HeapBaseMinAddress, CONST64(4)*G);
|
||||
#else
|
||||
|
@ -43,7 +43,7 @@ define_pd_global(uintx,JVMInvokeMethodSlack, 10*K);
|
||||
|
||||
define_pd_global(intx, CompilerThreadStackSize, 0);
|
||||
|
||||
// Used on 64 bit platforms for UseCompressedOops base address or CDS
|
||||
// Used on 64 bit platforms for UseCompressedOops base address
|
||||
define_pd_global(uintx,HeapBaseMinAddress, 256*M);
|
||||
|
||||
#endif // OS_CPU_SOLARIS_X86_VM_GLOBALS_SOLARIS_X86_HPP
|
||||
|
@ -54,39 +54,10 @@ encode %{
|
||||
// main source block for now. In future, we can generalize this by
|
||||
// adding a syntax that specifies the sizes of fields in an order,
|
||||
// so that the adlc can build the emit functions automagically
|
||||
|
||||
enc_class Java_To_Runtime(method meth) %{
|
||||
// No relocation needed
|
||||
|
||||
// movq r10, <meth>
|
||||
emit_opcode(cbuf, Assembler::REX_WB);
|
||||
emit_opcode(cbuf, 0xB8 | (R10_enc - 8));
|
||||
emit_d64(cbuf, (int64_t) $meth$$method);
|
||||
|
||||
// call (r10)
|
||||
emit_opcode(cbuf, Assembler::REX_B);
|
||||
emit_opcode(cbuf, 0xFF);
|
||||
emit_opcode(cbuf, 0xD0 | (R10_enc - 8));
|
||||
%}
|
||||
|
||||
enc_class post_call_verify_mxcsr %{
|
||||
MacroAssembler _masm(&cbuf);
|
||||
if (RestoreMXCSROnJNICalls) {
|
||||
__ ldmxcsr(ExternalAddress(StubRoutines::amd64::mxcsr_std()));
|
||||
}
|
||||
else if (CheckJNICalls) {
|
||||
__ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::amd64::verify_mxcsr_entry())));
|
||||
}
|
||||
%}
|
||||
%}
|
||||
|
||||
|
||||
// Platform dependent source
|
||||
|
||||
source %{
|
||||
|
||||
int MachCallRuntimeNode::ret_addr_offset() {
|
||||
return 13; // movq r10,#addr; callq (r10)
|
||||
}
|
||||
|
||||
%}
|
||||
|
@ -45,7 +45,7 @@ define_pd_global(intx, CompilerThreadStackSize, 0);
|
||||
|
||||
define_pd_global(uintx, JVMInvokeMethodSlack, 8192);
|
||||
|
||||
// Used on 64 bit platforms for UseCompressedOops base address or CDS
|
||||
// Used on 64 bit platforms for UseCompressedOops base address
|
||||
define_pd_global(uintx, HeapBaseMinAddress, 2*G);
|
||||
|
||||
#endif // OS_CPU_WINDOWS_X86_VM_GLOBALS_WINDOWS_X86_HPP
|
||||
|
@ -53,30 +53,11 @@ encode %{
|
||||
// adding a syntax that specifies the sizes of fields in an order,
|
||||
// so that the adlc can build the emit functions automagically
|
||||
|
||||
enc_class Java_To_Runtime (method meth) %{ // CALL Java_To_Runtime
|
||||
// No relocation needed
|
||||
|
||||
// movq r10, <meth>
|
||||
emit_opcode(cbuf, Assembler::REX_WB);
|
||||
emit_opcode(cbuf, 0xB8 | (R10_enc - 8));
|
||||
emit_d64(cbuf, (int64_t) $meth$$method);
|
||||
|
||||
// call (r10)
|
||||
emit_opcode(cbuf, Assembler::REX_B);
|
||||
emit_opcode(cbuf, 0xFF);
|
||||
emit_opcode(cbuf, 0xD0 | (R10_enc - 8));
|
||||
%}
|
||||
|
||||
%}
|
||||
|
||||
//
|
||||
|
||||
// Platform dependent source
|
||||
//
|
||||
|
||||
source %{
|
||||
|
||||
int MachCallRuntimeNode::ret_addr_offset()
|
||||
{
|
||||
return 13; // movq r10,#addr; callq (r10)
|
||||
}
|
||||
|
||||
%}
|
||||
|
@ -568,36 +568,6 @@ class CoreProductConfig extends ProductConfig {
|
||||
}
|
||||
}
|
||||
|
||||
class KernelDebugConfig extends GenericDebugConfig {
|
||||
String getOptFlag() {
|
||||
return getCI().getNoOptFlag();
|
||||
}
|
||||
|
||||
KernelDebugConfig() {
|
||||
initNames("kernel", "debug", "jvm.dll");
|
||||
init(getIncludes(), getDefines());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class KernelFastDebugConfig extends GenericDebugConfig {
|
||||
String getOptFlag() {
|
||||
return getCI().getOptFlag();
|
||||
}
|
||||
|
||||
KernelFastDebugConfig() {
|
||||
initNames("kernel", "fastdebug", "jvm.dll");
|
||||
init(getIncludes(), getDefines());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class KernelProductConfig extends ProductConfig {
|
||||
KernelProductConfig() {
|
||||
initNames("kernel", "product", "jvm.dll");
|
||||
init(getIncludes(), getDefines());
|
||||
}
|
||||
}
|
||||
|
||||
abstract class CompilerInterface {
|
||||
abstract Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir);
|
||||
|
@ -564,12 +564,6 @@ public abstract class WinGammaPlatform {
|
||||
allConfigs.add(new CoreFastDebugConfig());
|
||||
allConfigs.add(new CoreProductConfig());
|
||||
|
||||
if (platform.equals("Win32")) {
|
||||
allConfigs.add(new KernelDebugConfig());
|
||||
allConfigs.add(new KernelFastDebugConfig());
|
||||
allConfigs.add(new KernelProductConfig());
|
||||
}
|
||||
|
||||
return allConfigs;
|
||||
}
|
||||
|
||||
|
@ -832,6 +832,7 @@ static const char *getRegMask(const char *reg_class_name) {
|
||||
int length = (int)strlen(rc_name) + (int)strlen(mask) + 5;
|
||||
char *regMask = new char[length];
|
||||
sprintf(regMask,"%s%s()", rc_name, mask);
|
||||
delete[] rc_name;
|
||||
return regMask;
|
||||
}
|
||||
}
|
||||
|
@ -191,12 +191,19 @@ static void cost_check(FILE *fp, const char *spaces,
|
||||
// Macro equivalent to: _kids[0]->valid(FOO) && _kids[1]->valid(BAR)
|
||||
//
|
||||
static void child_test(FILE *fp, MatchList &mList) {
|
||||
if( mList._lchild ) // If left child, check it
|
||||
fprintf(fp, "STATE__VALID_CHILD(_kids[0], %s)", ArchDesc::getMachOperEnum(mList._lchild));
|
||||
if( mList._lchild && mList._rchild ) // If both, add the "&&"
|
||||
fprintf(fp, " && " );
|
||||
if( mList._rchild ) // If right child, check it
|
||||
fprintf(fp, "STATE__VALID_CHILD(_kids[1], %s)", ArchDesc::getMachOperEnum(mList._rchild));
|
||||
if (mList._lchild) { // If left child, check it
|
||||
const char* lchild_to_upper = ArchDesc::getMachOperEnum(mList._lchild);
|
||||
fprintf(fp, "STATE__VALID_CHILD(_kids[0], %s)", lchild_to_upper);
|
||||
delete[] lchild_to_upper;
|
||||
}
|
||||
if (mList._lchild && mList._rchild) { // If both, add the "&&"
|
||||
fprintf(fp, " && ");
|
||||
}
|
||||
if (mList._rchild) { // If right child, check it
|
||||
const char* rchild_to_upper = ArchDesc::getMachOperEnum(mList._rchild);
|
||||
fprintf(fp, "STATE__VALID_CHILD(_kids[1], %s)", rchild_to_upper);
|
||||
delete[] rchild_to_upper;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------calc_cost-----------------------------------------
|
||||
@ -206,13 +213,17 @@ static void child_test(FILE *fp, MatchList &mList) {
|
||||
Expr *ArchDesc::calc_cost(FILE *fp, const char *spaces, MatchList &mList, ProductionState &status) {
|
||||
fprintf(fp, "%sunsigned int c = ", spaces);
|
||||
Expr *c = new Expr("0");
|
||||
if (mList._lchild ) { // If left child, add it in
|
||||
sprintf(Expr::buffer(), "_kids[0]->_cost[%s]", ArchDesc::getMachOperEnum(mList._lchild));
|
||||
if (mList._lchild) { // If left child, add it in
|
||||
const char* lchild_to_upper = ArchDesc::getMachOperEnum(mList._lchild);
|
||||
sprintf(Expr::buffer(), "_kids[0]->_cost[%s]", lchild_to_upper);
|
||||
c->add(Expr::buffer());
|
||||
delete[] lchild_to_upper;
|
||||
}
|
||||
if (mList._rchild) { // If right child, add it in
|
||||
sprintf(Expr::buffer(), "_kids[1]->_cost[%s]", ArchDesc::getMachOperEnum(mList._rchild));
|
||||
if (mList._rchild) { // If right child, add it in
|
||||
const char* rchild_to_upper = ArchDesc::getMachOperEnum(mList._rchild);
|
||||
sprintf(Expr::buffer(), "_kids[1]->_cost[%s]", rchild_to_upper);
|
||||
c->add(Expr::buffer());
|
||||
delete[] rchild_to_upper;
|
||||
}
|
||||
// Add in cost of this rule
|
||||
const char *mList_cost = mList.get_cost();
|
||||
@ -232,15 +243,17 @@ void ArchDesc::gen_match(FILE *fp, MatchList &mList, ProductionState &status, Di
|
||||
fprintf(fp, "%s", spaces4);
|
||||
// Only generate child tests if this is not a leaf node
|
||||
bool has_child_constraints = mList._lchild || mList._rchild;
|
||||
const char *predicate_test = mList.get_pred();
|
||||
if( has_child_constraints || predicate_test ) {
|
||||
const char *predicate_test = mList.get_pred();
|
||||
if (has_child_constraints || predicate_test) {
|
||||
// Open the child-and-predicate-test braces
|
||||
fprintf(fp, "if( ");
|
||||
status.set_constraint(hasConstraint);
|
||||
child_test(fp, mList);
|
||||
// Only generate predicate test if one exists for this match
|
||||
if( predicate_test ) {
|
||||
if( has_child_constraints ) { fprintf(fp," &&\n"); }
|
||||
if (predicate_test) {
|
||||
if (has_child_constraints) {
|
||||
fprintf(fp," &&\n");
|
||||
}
|
||||
fprintf(fp, "%s %s", spaces6, predicate_test);
|
||||
}
|
||||
// End of outer tests
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user